bit-office 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js.map +1 -1
- package/dist/web/out/404.html +2 -2
- package/dist/web/out/_next/static/chunks/29.2a4210219e06b537.js +1 -0
- package/dist/web/out/_next/static/chunks/{176.7af67c16b9732441.js → 880.614e72604eb723a3.js} +1 -1
- package/dist/web/out/_next/static/chunks/904.70db0cb7d0ebff73.js +1 -0
- package/dist/web/out/_next/static/chunks/app/office/page-308e5b26d0614d2e.js +1 -0
- package/dist/web/out/_next/static/chunks/app/{page-94da9de9b62f4f4d.js → page-0df5702ab3268617.js} +1 -1
- package/dist/web/out/_next/static/chunks/app/pair/{page-667d7c599a584eb6.js → page-184bbadaef147894.js} +1 -1
- package/dist/web/out/_next/static/chunks/{webpack-6eaa423ee729538f.js → webpack-2f6b11d148fba4ca.js} +1 -1
- package/dist/web/out/index.html +2 -2
- package/dist/web/out/index.txt +2 -2
- package/dist/web/out/manifest.json +1 -1
- package/dist/web/out/office.html +2 -2
- package/dist/web/out/office.txt +2 -2
- package/dist/web/out/pair.html +2 -2
- package/dist/web/out/pair.txt +2 -2
- package/dist/web/out/sw.js +1 -1
- package/package.json +3 -3
- package/dist/web/out/_next/static/chunks/29.3e7650727aadf8c2.js +0 -1
- package/dist/web/out/_next/static/chunks/904.36d527a30eef4423.js +0 -1
- package/dist/web/out/_next/static/chunks/app/office/page-e71fd886e7258e88.js +0 -1
- /package/dist/web/out/_next/static/{e3jju679hIWY5j_P8PYTf → gZO52TyDkntI9O-CASzGz}/_buildManifest.js +0 -0
- /package/dist/web/out/_next/static/{e3jju679hIWY5j_P8PYTf → gZO52TyDkntI9O-CASzGz}/_ssgManifest.js +0 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/transport.ts","../src/ws-server.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js","../../../packages/shared/src/types.ts","../../../packages/shared/src/commands.ts","../../../packages/shared/src/events.ts","../../../packages/shared/src/presets.ts","../src/config.ts","../src/ably-client.ts","../src/telegram-channel.ts","../src/setup.ts","../src/backends.ts","../../../packages/orchestrator/src/orchestrator.ts","../../../packages/orchestrator/src/agent-session.ts","../../../packages/orchestrator/src/preview-server.ts","../../../packages/orchestrator/src/agent-manager.ts","../../../packages/orchestrator/src/delegation.ts","../../../packages/orchestrator/src/prompt-templates.ts","../../../packages/orchestrator/src/retry.ts","../../../packages/orchestrator/src/worktree.ts","../../../packages/orchestrator/src/index.ts","../src/index.ts"],"sourcesContent":["import type { GatewayEvent, Command } from \"@arcade/shared\";\n\n/**\n * Channel interface — every message channel implements this.\n * \"activate if configured, skip if not\"\n */\nexport interface Channel {\n /** Channel name for logging */\n readonly name: string;\n /** Initialize and connect. Return false to skip (e.g. missing config). */\n init(commandHandler: (cmd: Command) => void): Promise<boolean>;\n /** Broadcast an event to this channel's clients */\n broadcast(event: GatewayEvent): void;\n /** Cleanup on shutdown */\n destroy?(): void;\n}\n\nconst channels: Channel[] = [];\n\n/** Register a channel. Call before initTransports(). */\nexport function registerChannel(channel: Channel) {\n channels.push(channel);\n}\n\n/** Initialize all registered channels. Skips those that return false from init(). */\nexport async function initTransports(commandHandler: (cmd: Command) => void) {\n const active: string[] = [];\n const skipped: string[] = [];\n\n for (const ch of channels) {\n const ok = await ch.init(commandHandler);\n if (ok) {\n active.push(ch.name);\n } else {\n skipped.push(ch.name);\n }\n }\n\n // Remove channels that didn't activate\n for (let i = channels.length - 1; i >= 0; i--) {\n if (skipped.includes(channels[i].name)) {\n channels.splice(i, 1);\n }\n }\n\n console.log(`[Transport] Active channels: ${active.join(\", \") || \"none\"}`);\n if (skipped.length) {\n console.log(`[Transport] Skipped channels: ${skipped.join(\", \")}`);\n }\n}\n\n/** Broadcast event to all active channels */\nexport function publishEvent(event: GatewayEvent) {\n for (const ch of channels) {\n ch.broadcast(event);\n }\n}\n\n/** Destroy all channels on shutdown */\nexport function destroyTransports() {\n for (const ch of channels) {\n ch.destroy?.();\n }\n}\n","import { createServer, type IncomingMessage, type ServerResponse } from \"http\";\nimport { WebSocketServer, WebSocket } from \"ws\";\nimport { CommandSchema } from \"@arcade/shared\";\nimport type { GatewayEvent, Command } from \"@arcade/shared\";\nimport { config } from \"./config.js\";\nimport { networkInterfaces } from \"os\";\nimport { readFile, stat } from \"fs/promises\";\nimport { join, extname } from \"path\";\nimport * as Ably from \"ably\";\nimport type { Channel } from \"./transport.js\";\n\nlet wss: WebSocketServer | null = null;\nconst clients = new Set<WebSocket>();\nlet pairCode: string | null = null;\nlet onCommand: ((cmd: Command) => void) | null = null;\n\nconst MIME_TYPES: Record<string, string> = {\n \".html\": \"text/html\",\n \".js\": \"application/javascript\",\n \".css\": \"text/css\",\n \".json\": \"application/json\",\n \".png\": \"image/png\",\n \".svg\": \"image/svg+xml\",\n \".ico\": \"image/x-icon\",\n \".woff2\": \"font/woff2\",\n \".woff\": \"font/woff\",\n \".ttf\": \"font/ttf\",\n \".webp\": \"image/webp\",\n \".jpeg\": \"image/jpeg\",\n \".jpg\": \"image/jpeg\",\n \".txt\": \"text/plain\",\n \".map\": \"application/json\",\n \".webmanifest\": \"application/manifest+json\",\n};\n\nexport function setPairCode(code: string) {\n pairCode = code;\n}\n\nexport const wsChannel: Channel = {\n name: \"WebSocket\",\n\n async init(commandHandler: (cmd: Command) => void): Promise<boolean> {\n onCommand = commandHandler;\n\n return new Promise((resolve) => {\n const requestHandler = async (req: IncomingMessage, res: ServerResponse) => {\n // CORS headers\n res.setHeader(\"Access-Control-Allow-Origin\", \"*\");\n res.setHeader(\"Access-Control-Allow-Methods\", \"GET, POST, OPTIONS\");\n res.setHeader(\"Access-Control-Allow-Headers\", \"Content-Type\");\n\n if (req.method === \"OPTIONS\") {\n res.writeHead(204);\n res.end();\n return;\n }\n\n // Quick connect — skip pair code for local dev\n if (req.method === \"GET\" && req.url === \"/connect\") {\n if (config.ablyApiKey) {\n res.writeHead(403, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Quick connect disabled\" }));\n return;\n }\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({\n machineId: config.machineId,\n wsUrl: `ws://localhost:${config.wsPort}`,\n }));\n return;\n }\n\n if (req.method === \"POST\" && req.url === \"/pair/validate\") {\n let body = \"\";\n req.on(\"data\", (chunk) => (body += chunk));\n req.on(\"end\", () => {\n try {\n const { code } = JSON.parse(body);\n if (!pairCode || code !== pairCode) {\n res.writeHead(401, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Invalid pair code\" }));\n return;\n }\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({\n machineId: config.machineId,\n wsUrl: `ws://localhost:${config.wsPort}`,\n hasAbly: !!config.ablyApiKey,\n }));\n } catch {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Bad request\" }));\n }\n });\n return;\n }\n\n // Ably token endpoint\n if (req.method === \"POST\" && req.url === \"/ably/token\") {\n if (!config.ablyApiKey) {\n res.writeHead(503, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Ably not configured\" }));\n return;\n }\n\n let body = \"\";\n req.on(\"data\", (chunk) => (body += chunk));\n req.on(\"end\", async () => {\n try {\n let targetMachineId = config.machineId;\n try {\n const parsed = JSON.parse(body);\n if (parsed.machineId) targetMachineId = parsed.machineId;\n } catch {\n // no body, use config default\n }\n\n if (!targetMachineId) {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"No machine ID\" }));\n return;\n }\n\n const rest = new Ably.Rest({ key: config.ablyApiKey });\n const tokenRequest = await rest.auth.createTokenRequest({\n clientId: `device:${Date.now()}`,\n ttl: 5 * 60 * 1000,\n capability: {\n [`machine:${targetMachineId}:commands`]: [\"publish\"],\n [`machine:${targetMachineId}:events`]: [\"subscribe\"],\n },\n });\n\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(tokenRequest));\n } catch (err) {\n console.error(\"[WS] Ably token error:\", err);\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Token creation failed\" }));\n }\n });\n return;\n }\n\n // --- Static file serving (fallback, production only) ---\n if (process.env.NODE_ENV === \"development\") {\n res.writeHead(404);\n res.end(\"Not Found (dev mode — use Next.js dev server)\");\n return;\n }\n await serveStatic(req, res);\n };\n\n const maxRetries = 10;\n let port = config.wsPort;\n\n const tryListen = () => {\n const httpServer = createServer(requestHandler);\n httpServer.listen(port, () => {\n config.wsPort = port;\n\n // Attach WebSocket server only after successful listen\n wss = new WebSocketServer({ server: httpServer });\n wss.on(\"connection\", (ws) => {\n clients.add(ws);\n console.log(`[WS] Client connected (total: ${clients.size})`);\n\n ws.on(\"message\", (data) => {\n try {\n const parsed = CommandSchema.parse(JSON.parse(data.toString()));\n onCommand?.(parsed);\n } catch (err) {\n console.error(\"[WS] Invalid command:\", err);\n }\n });\n\n ws.on(\"close\", () => {\n clients.delete(ws);\n console.log(`[WS] Client disconnected (total: ${clients.size})`);\n });\n });\n\n console.log(`[WS] Server listening on port ${port}`);\n printLanAddresses();\n resolve(true);\n });\n\n httpServer.once(\"error\", (err: NodeJS.ErrnoException) => {\n if (err.code === \"EADDRINUSE\" && port - config.wsPort < maxRetries) {\n const oldPort = port;\n port++;\n console.log(`[WS] Port ${oldPort} in use, trying ${port}...`);\n tryListen();\n } else {\n console.error(`[WS] Failed to start server:`, err.message);\n resolve(false);\n }\n });\n };\n\n tryListen();\n });\n },\n\n broadcast(event: GatewayEvent) {\n const data = JSON.stringify(event);\n for (const ws of clients) {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(data);\n }\n }\n },\n\n destroy() {\n for (const ws of clients) {\n ws.close();\n }\n clients.clear();\n wss?.close();\n wss = null;\n },\n};\n\nasync function serveStatic(req: IncomingMessage, res: ServerResponse) {\n const url = decodeURIComponent(req.url?.split(\"?\")[0] ?? \"/\");\n\n const routeMap: Record<string, string> = {\n \"/\": \"/index.html\",\n \"/pair\": \"/pair.html\",\n \"/office\": \"/office.html\",\n };\n\n let filePath: string;\n if (routeMap[url]) {\n filePath = join(config.webDir, routeMap[url]);\n } else {\n filePath = join(config.webDir, url);\n }\n\n try {\n const stats = await stat(filePath);\n if (stats.isDirectory()) {\n filePath = join(filePath, \"index.html\");\n }\n const content = await readFile(filePath);\n const ext = extname(filePath);\n const mime = MIME_TYPES[ext] || \"application/octet-stream\";\n res.writeHead(200, { \"Content-Type\": mime });\n res.end(content);\n } catch {\n try {\n const htmlPath = filePath + \".html\";\n const content = await readFile(htmlPath);\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(content);\n } catch {\n res.writeHead(404, { \"Content-Type\": \"text/plain\" });\n res.end(\"Not Found\");\n }\n }\n}\n\nfunction printLanAddresses() {\n const nets = networkInterfaces();\n for (const name of Object.keys(nets)) {\n for (const net of nets[name] ?? []) {\n if (net.family === \"IPv4\" && !net.internal) {\n console.log(`[WS] LAN: http://${net.address}:${config.wsPort}`);\n }\n }\n }\n}\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import { z } from \"zod\";\n\nexport const AgentStatusEnum = z.enum([\n \"idle\", \"working\", \"waiting_approval\", \"done\", \"error\",\n]);\nexport type AgentStatus = z.infer<typeof AgentStatusEnum>;\n\nexport const RiskLevelEnum = z.enum([\"low\", \"med\", \"high\"]);\nexport type RiskLevel = z.infer<typeof RiskLevelEnum>;\n\nexport const DecisionEnum = z.enum([\"yes\", \"no\"]);\nexport type Decision = z.infer<typeof DecisionEnum>;\n","import { z } from \"zod\";\nimport { DecisionEnum } from \"./types\";\n\nexport const RunTaskCommand = z.object({\n type: z.literal(\"RUN_TASK\"),\n agentId: z.string(),\n taskId: z.string(),\n prompt: z.string(),\n repoPath: z.string().optional(),\n name: z.string().optional(),\n role: z.string().optional(),\n personality: z.string().optional(),\n backend: z.string().optional(),\n});\n\nexport const ApprovalDecisionCommand = z.object({\n type: z.literal(\"APPROVAL_DECISION\"),\n approvalId: z.string(),\n decision: DecisionEnum,\n});\n\nexport const CancelTaskCommand = z.object({\n type: z.literal(\"CANCEL_TASK\"),\n agentId: z.string(),\n taskId: z.string(),\n});\n\nexport const PingCommand = z.object({\n type: z.literal(\"PING\"),\n});\n\nexport const CreateAgentCommand = z.object({\n type: z.literal(\"CREATE_AGENT\"),\n agentId: z.string(),\n name: z.string(),\n role: z.string(),\n palette: z.number().optional(),\n personality: z.string().optional(),\n backend: z.string().optional(),\n});\n\nexport const FireAgentCommand = z.object({\n type: z.literal(\"FIRE_AGENT\"),\n agentId: z.string(),\n});\n\nexport const OpenFileCommand = z.object({\n type: z.literal(\"OPEN_FILE\"),\n path: z.string(),\n});\n\nexport const CreateTeamCommand = z.object({\n type: z.literal(\"CREATE_TEAM\"),\n leadPresetIndex: z.number(),\n memberPresetIndices: z.array(z.number()),\n backends: z.record(z.string(), z.string()).optional(),\n});\n\nexport const ServePreviewCommand = z.object({\n type: z.literal(\"SERVE_PREVIEW\"),\n filePath: z.string(),\n});\n\nexport const StopTeamCommand = z.object({\n type: z.literal(\"STOP_TEAM\"),\n});\n\nexport const FireTeamCommand = z.object({\n type: z.literal(\"FIRE_TEAM\"),\n});\n\nexport const CommandSchema = z.discriminatedUnion(\"type\", [\n RunTaskCommand,\n ApprovalDecisionCommand,\n CancelTaskCommand,\n PingCommand,\n CreateAgentCommand,\n FireAgentCommand,\n OpenFileCommand,\n CreateTeamCommand,\n ServePreviewCommand,\n StopTeamCommand,\n FireTeamCommand,\n]);\n\nexport type RunTaskCommand = z.infer<typeof RunTaskCommand>;\nexport type ApprovalDecisionCommand = z.infer<typeof ApprovalDecisionCommand>;\nexport type CancelTaskCommand = z.infer<typeof CancelTaskCommand>;\nexport type PingCommand = z.infer<typeof PingCommand>;\nexport type CreateAgentCommand = z.infer<typeof CreateAgentCommand>;\nexport type FireAgentCommand = z.infer<typeof FireAgentCommand>;\nexport type OpenFileCommand = z.infer<typeof OpenFileCommand>;\nexport type CreateTeamCommand = z.infer<typeof CreateTeamCommand>;\nexport type ServePreviewCommand = z.infer<typeof ServePreviewCommand>;\nexport type StopTeamCommand = z.infer<typeof StopTeamCommand>;\nexport type FireTeamCommand = z.infer<typeof FireTeamCommand>;\nexport type Command = z.infer<typeof CommandSchema>;\n","import { z } from \"zod\";\nimport { AgentStatusEnum, RiskLevelEnum } from \"./types\";\n\nexport const AgentStatusEvent = z.object({\n type: z.literal(\"AGENT_STATUS\"),\n agentId: z.string(),\n status: AgentStatusEnum,\n details: z.string().optional(),\n});\n\nexport const TaskStartedEvent = z.object({\n type: z.literal(\"TASK_STARTED\"),\n agentId: z.string(),\n taskId: z.string(),\n prompt: z.string(),\n});\n\nexport const LogAppendEvent = z.object({\n type: z.literal(\"LOG_APPEND\"),\n agentId: z.string(),\n taskId: z.string(),\n stream: z.enum([\"stdout\", \"stderr\"]),\n chunk: z.string(),\n});\n\nexport const ApprovalNeededEvent = z.object({\n type: z.literal(\"APPROVAL_NEEDED\"),\n approvalId: z.string(),\n agentId: z.string(),\n taskId: z.string(),\n title: z.string(),\n summary: z.string(),\n riskLevel: RiskLevelEnum,\n});\n\nexport const TaskResultPayload = z.object({\n summary: z.string(),\n fullOutput: z.string().optional(),\n changedFiles: z.array(z.string()),\n diffStat: z.string(),\n testResult: z.enum([\"passed\", \"failed\", \"unknown\"]),\n nextSuggestion: z.string().optional(),\n previewUrl: z.string().optional(),\n previewPath: z.string().optional(),\n});\n\nexport const TaskDoneEvent = z.object({\n type: z.literal(\"TASK_DONE\"),\n agentId: z.string(),\n taskId: z.string(),\n result: TaskResultPayload,\n isFinalResult: z.boolean().optional(),\n});\n\nexport const TaskFailedEvent = z.object({\n type: z.literal(\"TASK_FAILED\"),\n agentId: z.string(),\n taskId: z.string(),\n error: z.string(),\n});\n\nexport const TaskDelegatedEvent = z.object({\n type: z.literal(\"TASK_DELEGATED\"),\n fromAgentId: z.string(),\n toAgentId: z.string(),\n taskId: z.string(),\n prompt: z.string(),\n});\n\nexport const AgentCreatedEvent = z.object({\n type: z.literal(\"AGENT_CREATED\"),\n agentId: z.string(),\n name: z.string(),\n role: z.string(),\n palette: z.number().optional(),\n personality: z.string().optional(),\n backend: z.string().optional(),\n isTeamLead: z.boolean().optional(),\n teamId: z.string().optional(),\n});\n\nexport const AgentFiredEvent = z.object({\n type: z.literal(\"AGENT_FIRED\"),\n agentId: z.string(),\n});\n\nexport const TaskResultReturnedEvent = z.object({\n type: z.literal(\"TASK_RESULT_RETURNED\"),\n fromAgentId: z.string(),\n toAgentId: z.string(),\n taskId: z.string(),\n summary: z.string(),\n success: z.boolean(),\n});\n\nexport const TeamChatEvent = z.object({\n type: z.literal(\"TEAM_CHAT\"),\n fromAgentId: z.string(),\n toAgentId: z.string().optional(),\n message: z.string(),\n messageType: z.enum([\"delegation\", \"result\", \"status\"]),\n taskId: z.string().optional(),\n timestamp: z.number(),\n});\n\nexport const TaskQueuedEvent = z.object({\n type: z.literal(\"TASK_QUEUED\"),\n agentId: z.string(),\n taskId: z.string(),\n prompt: z.string(),\n position: z.number(),\n});\n\nexport const GatewayEventSchema = z.discriminatedUnion(\"type\", [\n AgentStatusEvent,\n TaskStartedEvent,\n LogAppendEvent,\n ApprovalNeededEvent,\n TaskDoneEvent,\n TaskFailedEvent,\n TaskDelegatedEvent,\n AgentCreatedEvent,\n AgentFiredEvent,\n TaskResultReturnedEvent,\n TeamChatEvent,\n TaskQueuedEvent,\n]);\n\nexport type AgentStatusEvent = z.infer<typeof AgentStatusEvent>;\nexport type TaskStartedEvent = z.infer<typeof TaskStartedEvent>;\nexport type LogAppendEvent = z.infer<typeof LogAppendEvent>;\nexport type ApprovalNeededEvent = z.infer<typeof ApprovalNeededEvent>;\nexport type TaskResultPayload = z.infer<typeof TaskResultPayload>;\nexport type TaskDoneEvent = z.infer<typeof TaskDoneEvent>;\nexport type TaskFailedEvent = z.infer<typeof TaskFailedEvent>;\nexport type TaskDelegatedEvent = z.infer<typeof TaskDelegatedEvent>;\nexport type AgentCreatedEvent = z.infer<typeof AgentCreatedEvent>;\nexport type AgentFiredEvent = z.infer<typeof AgentFiredEvent>;\nexport type TaskResultReturnedEvent = z.infer<typeof TaskResultReturnedEvent>;\nexport type TeamChatEvent = z.infer<typeof TeamChatEvent>;\nexport type TaskQueuedEvent = z.infer<typeof TaskQueuedEvent>;\nexport type GatewayEvent = z.infer<typeof GatewayEventSchema>;\n","export interface AgentPreset {\n palette: number;\n name: string;\n role: string;\n description: string;\n personality: string;\n}\n\n/** 6 predefined agents: 1/3/6 male, 2/4/5 female */\nexport const AGENT_PRESETS: AgentPreset[] = [\n { palette: 0, name: \"Alex\", role: \"Frontend Dev\", description: \"UI components, React/Next.js/CSS\", personality: \"You speak in a friendly, casual, encouraging, and natural tone.\" },\n { palette: 1, name: \"Mia\", role: \"Backend Dev\", description: \"APIs, database, server logic\", personality: \"You speak formally, professionally, in an organized and concise manner.\" },\n { palette: 2, name: \"Leo\", role: \"Fullstack Dev\", description: \"End-to-end, frontend + backend\", personality: \"You are aggressive, action-first, always pursuing speed and efficiency.\" },\n { palette: 3, name: \"Sophie\", role: \"Code Reviewer\", description: \"Review PRs, find bugs, quality\", personality: \"You teach patiently, explain the reasoning, and guide like a mentor.\" },\n { palette: 4, name: \"Yuki\", role: \"QA / Tester\", description: \"Quick smoke test, verify core works\", personality: \"You are extremely concise, no fluff, straight to the result. RULES: Only verify core functionality works (max 3-5 checks). Report PASS/FAIL per check with one line of evidence. Do NOT write unit tests or test files unless explicitly asked. Do NOT list improvements, suggestions, or nice-to-haves. Do NOT test edge cases. FORBIDDEN: Do NOT start any HTTP server. Do NOT use agent-browser or any browser automation tool. Do NOT install or run npx packages for testing. Only use file reading, static analysis, and simple CLI commands (like node --check) to verify code. End your report with exactly one line: VERDICT: PASS or VERDICT: FAIL. A FAIL means the feature doesn't start or crashes, not that something could be better.\" },\n { palette: 5, name: \"Marcus\", role: \"Architect\", description: \"System design, refactoring\", personality: \"You speak formally, professionally, in an organized and concise manner.\" },\n];\n","import \"dotenv/config\";\nimport { resolve, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { randomBytes } from \"crypto\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst CONFIG_DIR = resolve(homedir(), \".bit-office\");\nconst CONFIG_FILE = resolve(CONFIG_DIR, \"config.json\");\n\ninterface SavedConfig {\n ablyApiKey?: string;\n telegramBotTokens?: (string | null)[];\n detectedBackends?: string[];\n defaultBackend?: string;\n sandboxMode?: \"full\" | \"safe\";\n}\n\nfunction ensureConfigDir() {\n if (!existsSync(CONFIG_DIR)) {\n mkdirSync(CONFIG_DIR, { recursive: true });\n }\n}\n\nfunction loadSavedConfig(): SavedConfig {\n if (!existsSync(CONFIG_FILE)) return {};\n try {\n return JSON.parse(readFileSync(CONFIG_FILE, \"utf-8\"));\n } catch {\n return {};\n }\n}\n\nexport function saveConfig(cfg: SavedConfig) {\n ensureConfigDir();\n writeFileSync(CONFIG_FILE, JSON.stringify(cfg, null, 2), \"utf-8\");\n}\n\nexport function hasSetupRun(): boolean {\n return existsSync(CONFIG_FILE);\n}\n\nfunction getOrCreateMachineId(): string {\n ensureConfigDir();\n const idFile = resolve(CONFIG_DIR, \"machine-id\");\n\n if (existsSync(idFile)) {\n return readFileSync(idFile, \"utf-8\").trim();\n }\n\n const id = `mac-${randomBytes(4).toString(\"hex\")}`;\n writeFileSync(idFile, id, \"utf-8\");\n console.log(`[Config] Generated machine ID: ${id}`);\n return id;\n}\n\nfunction resolveWebDir(): string {\n if (process.env.WEB_DIR) return process.env.WEB_DIR;\n // Bundled mode: dist/web/out (next to dist/index.js)\n const bundled = resolve(__dirname, \"web/out\");\n if (existsSync(bundled)) return bundled;\n // Dev mode: apps/web/out (relative to apps/gateway/src/)\n return resolve(__dirname, \"../../web/out\");\n}\n\nfunction buildConfig() {\n const saved = loadSavedConfig();\n return {\n machineId: getOrCreateMachineId(),\n defaultWorkspace: process.env.WORKSPACE || process.cwd(),\n wsPort: 9090,\n ablyApiKey: process.env.ABLY_API_KEY || saved.ablyApiKey || undefined,\n webDir: resolveWebDir(),\n telegramBotTokens: (\n process.env.TELEGRAM_BOT_TOKENS\n ? process.env.TELEGRAM_BOT_TOKENS.split(\",\").map((t) => t.trim() || undefined)\n : (saved.telegramBotTokens ?? []).map((t) => t || undefined)\n ) as (string | undefined)[],\n detectedBackends: saved.detectedBackends ?? [],\n defaultBackend: saved.defaultBackend ?? \"claude\",\n sandboxMode: (saved.sandboxMode ?? \"full\") as \"full\" | \"safe\",\n };\n}\n\nexport const config = buildConfig();\n\n/** Reload config from saved file (after setup wizard) */\nexport function reloadConfig() {\n const fresh = buildConfig();\n Object.assign(config, fresh);\n}\n","import * as Ably from \"ably\";\nimport { config } from \"./config.js\";\nimport { CommandSchema } from \"@arcade/shared\";\nimport type { GatewayEvent, Command } from \"@arcade/shared\";\nimport type { Channel } from \"./transport.js\";\n\nlet client: Ably.Realtime | null = null;\nlet eventsChannel: Ably.RealtimeChannel | null = null;\n\nexport const ablyChannel: Channel = {\n name: \"Ably\",\n\n async init(commandHandler: (cmd: Command) => void): Promise<boolean> {\n if (!config.ablyApiKey) return false;\n\n client = new Ably.Realtime({ key: config.ablyApiKey });\n await client.connection.once(\"connected\");\n console.log(\"[Ably] Connected\");\n\n eventsChannel = client.channels.get(`machine:${config.machineId}:events`);\n const commandsChannel = client.channels.get(`machine:${config.machineId}:commands`);\n\n await commandsChannel.subscribe((msg: Ably.Message) => {\n try {\n const parsed = CommandSchema.parse(msg.data);\n commandHandler(parsed);\n } catch (err) {\n console.error(\"[Ably] Invalid command:\", err);\n }\n });\n\n return true;\n },\n\n broadcast(event: GatewayEvent) {\n if (!eventsChannel) return;\n eventsChannel.publish(event.type, event);\n },\n\n destroy() {\n client?.close();\n client = null;\n eventsChannel = null;\n },\n};\n","import TelegramBot from \"node-telegram-bot-api\";\nimport { config } from \"./config.js\";\nimport { nanoid } from \"nanoid\";\nimport type { GatewayEvent, Command } from \"@arcade/shared\";\nimport type { Channel } from \"./transport.js\";\n\n/** Same order as AGENT_PRESETS in apps/web/src/lib/presets.ts */\nconst PRESETS = [\n { name: \"Alex\", role: \"Frontend Dev\", palette: 0, personality: \"You speak in a friendly, casual, encouraging, and natural tone.\" },\n { name: \"Mia\", role: \"Backend Dev\", palette: 1, personality: \"You speak formally, professionally, in an organized and concise manner.\" },\n { name: \"Leo\", role: \"Fullstack Dev\", palette: 2, personality: \"You are aggressive, action-first, always pursuing speed and efficiency.\" },\n { name: \"Sophie\", role: \"Code Reviewer\", palette: 3, personality: \"You teach patiently, explain the reasoning, and guide like a mentor.\" },\n { name: \"Yuki\", role: \"QA / Tester\", palette: 4, personality: \"You are extremely concise, no fluff, straight to the result.\" },\n { name: \"Marcus\", role: \"Architect\", palette: 5, personality: \"You speak formally, professionally, in an organized and concise manner.\" },\n];\n\ninterface BotAgent {\n bot: TelegramBot;\n preset: typeof PRESETS[number];\n agentId: string;\n chatIds: Set<number>;\n}\n\nconst botAgents: BotAgent[] = [];\n\n/** Format event as readable Telegram message */\nfunction formatEvent(event: GatewayEvent, agentId: string): string | null {\n if (event.type === \"TASK_STARTED\" && event.agentId === agentId) {\n return `🔧 Working on it...`;\n }\n if (event.type === \"TASK_DONE\" && event.agentId === agentId) {\n const r = event.result;\n let msg = `✅ Task completed\\n\\n${r.summary}`;\n if (r.changedFiles.length > 0) {\n msg += `\\n\\n📁 Changed files:\\n${r.changedFiles.map((f: string) => `• ${f}`).join(\"\\n\")}`;\n }\n return msg;\n }\n if (event.type === \"TASK_FAILED\" && event.agentId === agentId) {\n return `❌ Task failed\\n\\n${event.error}`;\n }\n if (event.type === \"APPROVAL_NEEDED\" && event.agentId === agentId) {\n return `⚠️ Approval needed\\n\\n${event.title}\\n${event.summary}\\n\\nReply /yes or /no`;\n }\n return null;\n}\n\nexport const telegramChannel: Channel = {\n name: \"Telegram\",\n\n async init(commandHandler: (cmd: Command) => void): Promise<boolean> {\n const tokens = config.telegramBotTokens;\n if (!tokens.length || tokens.every((t) => !t)) return false;\n\n for (let i = 0; i < tokens.length && i < PRESETS.length; i++) {\n const token = tokens[i];\n if (!token) continue;\n\n const preset = PRESETS[i];\n const agentId = `tg-${preset.name.toLowerCase()}`;\n\n const bot = new TelegramBot(token, { polling: true });\n const ba: BotAgent = { bot, preset, agentId, chatIds: new Set() };\n botAgents.push(ba);\n\n // Guard against 409 Conflict (another instance polling the same token)\n bot.on(\"polling_error\", (err: any) => {\n const code = err?.response?.statusCode ?? err?.code;\n if (code === 409) {\n console.warn(\n `[Telegram] 409 Conflict for @${preset.name}: token is already used by another bot instance. Polling skipped for this token.`\n );\n bot.stopPolling();\n return;\n }\n console.error(`[Telegram] Polling error for @${preset.name}:`, err.message ?? err);\n });\n\n // Auto-create agent via command handler (ensures palette/backend are stored)\n commandHandler({\n type: \"CREATE_AGENT\",\n agentId,\n name: preset.name,\n role: preset.role,\n palette: preset.palette,\n personality: preset.personality,\n });\n\n const botInfo = await bot.getMe();\n console.log(`[Telegram] @${botInfo.username} → ${preset.name} (${preset.role})`);\n\n // Track chat IDs + handle commands and messages\n bot.on(\"message\", (msg) => {\n if (!msg.text) return;\n ba.chatIds.add(msg.chat.id);\n\n const text = msg.text.trim();\n\n // Commands\n if (text === \"/yes\") {\n commandHandler({ type: \"APPROVAL_DECISION\", approvalId: \"__all__\", decision: \"yes\" });\n return;\n }\n if (text === \"/no\") {\n commandHandler({ type: \"APPROVAL_DECISION\", approvalId: \"__all__\", decision: \"no\" });\n return;\n }\n if (text === \"/cancel\") {\n commandHandler({ type: \"CANCEL_TASK\", agentId, taskId: \"\" });\n bot.sendMessage(msg.chat.id, `🛑 Cancelled ${preset.name}'s current task`);\n return;\n }\n if (text === \"/status\") {\n // Trigger a PING to re-broadcast all statuses\n commandHandler({ type: \"PING\" });\n return;\n }\n if (text.startsWith(\"/\")) return; // ignore other commands\n\n const taskId = nanoid();\n commandHandler({\n type: \"RUN_TASK\",\n agentId,\n taskId,\n prompt: text,\n name: preset.name,\n role: preset.role,\n personality: preset.personality,\n });\n });\n }\n\n console.log(`[Telegram] ${botAgents.length} bot(s) active`);\n return botAgents.length > 0;\n },\n\n broadcast(event: GatewayEvent) {\n for (const ba of botAgents) {\n const text = formatEvent(event, ba.agentId);\n if (!text) continue;\n\n for (const chatId of ba.chatIds) {\n ba.bot.sendMessage(chatId, text).catch((err: Error) => {\n console.error(`[Telegram] Send failed:`, err.message);\n });\n }\n }\n },\n\n destroy() {\n for (const ba of botAgents) {\n ba.bot.stopPolling();\n }\n botAgents.length = 0;\n },\n};\n","import { createInterface } from \"readline\";\nimport { saveConfig } from \"./config.js\";\nimport { detectBackends, getBackend } from \"./backends.js\";\n\nfunction ask(rl: ReturnType<typeof createInterface>, question: string): Promise<string> {\n return new Promise((resolve) => {\n // Handle case where stdin closes unexpectedly\n const onClose = () => resolve(\"\");\n rl.once(\"close\", onClose);\n rl.question(question, (answer) => {\n rl.removeListener(\"close\", onClose);\n resolve(answer.trim());\n });\n });\n}\n\nexport async function runSetup(): Promise<void> {\n // Detect AI backends regardless of TTY\n console.log(\"[Setup] Detecting AI backends...\");\n const detected = detectBackends();\n const detectedNames = detected.map((id) => getBackend(id)?.name ?? id).join(\", \");\n console.log(`[Setup] Found: ${detectedNames || \"none\"}`);\n\n // Non-interactive: save detected backends and move on\n if (!process.stdin.isTTY) {\n saveConfig({ detectedBackends: detected, defaultBackend: detected[0] ?? \"claude\", sandboxMode: \"full\" });\n console.log(\"✓ Default config saved to ~/.bit-office/config.json\");\n console.log(\" Run with --setup in a terminal to configure.\\n\");\n return;\n }\n\n const rl = createInterface({\n input: process.stdin,\n output: process.stdout,\n terminal: true,\n });\n\n console.log(\"\");\n console.log(\"╔══════════════════════════════════════╗\");\n console.log(\"║ Bit Office — First Setup ║\");\n console.log(\"╚══════════════════════════════════════╝\");\n console.log(\"\");\n console.log(\"Press Enter to skip any step.\\n\");\n\n // Ably\n console.log(\"── Remote Access (Ably) ──────────────\");\n console.log(\"Enables access from outside your LAN.\");\n const ablyApiKey = await ask(rl, \"Ably API Key (optional): \");\n\n // AI Backends\n let defaultBackend = detected[0] ?? \"claude\";\n if (detected.length > 1) {\n console.log(\"\\n── AI Backends ───────────────────────\");\n console.log(`Detected: ${detectedNames}`);\n const choices = detected.map((id, i) => `${i + 1}=${getBackend(id)?.name ?? id}`).join(\", \");\n const pick = await ask(rl, `Default backend (${choices}): `);\n const idx = parseInt(pick, 10) - 1;\n if (idx >= 0 && idx < detected.length) {\n defaultBackend = detected[idx];\n }\n }\n\n // Sandbox mode\n console.log(\"\\n── Agent Permissions ─────────────────\");\n console.log(\"1 = Full access (agents can access entire machine)\");\n console.log(\"2 = Sandbox (agents restricted to working directory)\");\n const sandboxPick = await ask(rl, \"Permission mode (1/2, default=1): \");\n const sandboxMode: \"full\" | \"safe\" = sandboxPick === \"2\" ? \"safe\" : \"full\";\n\n rl.close();\n\n saveConfig({\n ablyApiKey: ablyApiKey || undefined,\n detectedBackends: detected,\n defaultBackend,\n sandboxMode,\n });\n\n console.log(\"\\n✓ Config saved to ~/.bit-office/config.json\");\n if (ablyApiKey) console.log(\" • Ably: enabled\");\n console.log(` • Default AI: ${getBackend(defaultBackend)?.name ?? defaultBackend}`);\n console.log(` • Permissions: ${sandboxMode === \"full\" ? \"Full access\" : \"Sandbox\"}`);\n console.log(\" • Run with --setup to reconfigure\\n\");\n}\n","import { execSync } from \"child_process\";\nimport type { AIBackend } from \"@bit-office/orchestrator\";\n\nconst backends: AIBackend[] = [\n {\n id: \"claude\",\n name: \"Claude Code\",\n command: \"claude\",\n supportsStdin: true,\n buildArgs(prompt, opts) {\n const args = [\"-p\", prompt, \"--output-format\", \"stream-json\", \"--verbose\", \"--dangerously-skip-permissions\"];\n if (!opts.skipResume) {\n if (opts.resumeSessionId) {\n args.push(\"--resume\", opts.resumeSessionId);\n } else if (opts.continue) {\n args.push(\"--continue\");\n }\n }\n if (opts.noTools) args.push(\"--tools\", \"\");\n if (opts.model) args.push(\"--model\", opts.model);\n return args;\n },\n deleteEnv: [\"CLAUDECODE\", \"CLAUDE_CODE_ENTRYPOINT\"],\n },\n {\n id: \"codex\",\n name: \"Codex CLI\",\n command: \"codex\",\n buildArgs(prompt, opts) {\n if (opts.fullAccess) {\n return [\"exec\", prompt, \"--dangerously-bypass-approvals-and-sandbox\", \"--skip-git-repo-check\"];\n }\n return [\"exec\", prompt, \"--full-auto\", \"--skip-git-repo-check\"];\n },\n },\n {\n id: \"gemini\",\n name: \"Gemini CLI\",\n command: \"gemini\",\n buildArgs(prompt) {\n return [\"-p\", prompt, \"--yolo\"];\n },\n },\n {\n id: \"aider\",\n name: \"Aider\",\n command: \"aider\",\n buildArgs(prompt) {\n return [\"--message\", prompt, \"--yes\", \"--no-pretty\", \"--no-git\"];\n },\n },\n {\n id: \"opencode\",\n name: \"OpenCode\",\n command: \"opencode\",\n buildArgs(prompt) {\n return [\"run\", prompt, \"--quiet\"];\n },\n },\n];\n\nconst backendMap = new Map<string, AIBackend>(backends.map((b) => [b.id, b]));\n\nexport function getBackend(id: string): AIBackend | undefined {\n return backendMap.get(id);\n}\n\nexport function getAllBackends(): AIBackend[] {\n return backends;\n}\n\n/** Check which AI CLI tools are installed on this machine */\nexport function detectBackends(): string[] {\n const detected: string[] = [];\n for (const backend of backends) {\n try {\n execSync(`which ${backend.command}`, { stdio: \"ignore\", timeout: 3000 });\n detected.push(backend.id);\n } catch {\n // not installed\n }\n }\n return detected;\n}\n","import { EventEmitter } from \"events\";\nimport { nanoid } from \"nanoid\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AgentManager } from \"./agent-manager.js\";\nimport { DelegationRouter } from \"./delegation.js\";\nimport { PromptEngine } from \"./prompt-templates.js\";\nimport { RetryTracker } from \"./retry.js\";\nimport { createWorktree, mergeWorktree, removeWorktree } from \"./worktree.js\";\nimport type { AIBackend } from \"./ai-backend.js\";\nimport type {\n OrchestratorOptions,\n CreateAgentOpts,\n CreateTeamOpts,\n RunTaskOpts,\n OrchestratorEvent,\n OrchestratorEventMap,\n Decision,\n} from \"./types.js\";\n\nexport class Orchestrator extends EventEmitter<OrchestratorEventMap> {\n private agentManager = new AgentManager();\n private delegationRouter: DelegationRouter;\n private promptEngine: PromptEngine;\n private retryTracker: RetryTracker | null;\n private backends = new Map<string, AIBackend>();\n private defaultBackendId: string;\n private workspace: string;\n private sandboxMode: \"full\" | \"safe\";\n private worktreeEnabled: boolean;\n private worktreeMerge: boolean;\n /** Preview captured from the first dev worker that produces one — not from QA/reviewer */\n private teamPreview: { previewUrl: string; previewPath?: string } | null = null;\n\n constructor(opts: OrchestratorOptions) {\n super();\n this.workspace = opts.workspace;\n this.sandboxMode = opts.sandboxMode ?? \"full\";\n\n // Register backends\n for (const b of opts.backends) {\n this.backends.set(b.id, b);\n }\n this.defaultBackendId = opts.defaultBackend ?? opts.backends[0]?.id ?? \"claude\";\n\n // Prompt engine\n this.promptEngine = new PromptEngine(opts.promptsDir);\n this.promptEngine.init();\n\n // Delegation\n this.delegationRouter = new DelegationRouter(\n this.agentManager,\n this.promptEngine,\n (e) => this.emitEvent(e),\n );\n\n // Retry\n if (opts.retry === false) {\n this.retryTracker = null;\n } else {\n const r = opts.retry ?? {};\n this.retryTracker = new RetryTracker(r.maxRetries, r.escalateToLeader);\n }\n\n // Worktree\n if (opts.worktree === false) {\n this.worktreeEnabled = false;\n this.worktreeMerge = false;\n } else {\n this.worktreeEnabled = true;\n this.worktreeMerge = opts.worktree?.mergeOnComplete ?? true;\n }\n }\n\n // ---------------------------------------------------------------------------\n // Agent lifecycle\n // ---------------------------------------------------------------------------\n\n createAgent(opts: CreateAgentOpts): void {\n const backend = this.backends.get(opts.backend ?? this.defaultBackendId)\n ?? this.backends.get(this.defaultBackendId)!;\n\n const session = new AgentSession({\n agentId: opts.agentId,\n name: opts.name,\n role: opts.role,\n personality: opts.personality,\n workspace: this.workspace,\n resumeHistory: opts.resumeHistory,\n backend,\n sandboxMode: this.sandboxMode,\n isTeamLead: this.agentManager.isTeamLead(opts.agentId),\n teamId: opts.teamId,\n onEvent: (e) => this.handleSessionEvent(e, opts.agentId),\n renderPrompt: (name, vars) => this.promptEngine.render(name, vars),\n });\n session.palette = opts.palette;\n\n this.agentManager.add(session);\n this.delegationRouter.wireAgent(session);\n\n this.emitEvent({\n type: \"agent:created\",\n agentId: opts.agentId,\n name: opts.name,\n role: opts.role,\n palette: opts.palette,\n personality: opts.personality,\n backend: backend.id,\n isTeamLead: this.agentManager.isTeamLead(opts.agentId),\n teamId: opts.teamId,\n });\n this.emitEvent({\n type: \"agent:status\",\n agentId: opts.agentId,\n status: \"idle\",\n });\n }\n\n removeAgent(agentId: string): void {\n this.cancelTask(agentId);\n this.delegationRouter.clearAgent(agentId);\n this.agentManager.delete(agentId);\n this.emitEvent({ type: \"agent:fired\", agentId });\n }\n\n setTeamLead(agentId: string): void {\n this.agentManager.setTeamLead(agentId);\n // Update the session's isTeamLead flag\n const session = this.agentManager.get(agentId);\n if (session) session.isTeamLead = true;\n }\n\n createTeam(opts: CreateTeamOpts): void {\n const presets = [\n { ...opts.memberPresets[opts.leadPresetIndex] ?? opts.memberPresets[0], isLead: true },\n ...opts.memberPresets.filter((_, i) => i !== opts.leadPresetIndex).map(p => ({ ...p, isLead: false })),\n ];\n\n let leadAgentId: string | null = null;\n\n for (const preset of presets) {\n const agentId = `agent-${nanoid(6)}`;\n const backendId = opts.backends?.[String(opts.memberPresets.indexOf(preset))] ?? this.defaultBackendId;\n\n this.createAgent({\n agentId,\n name: preset.name,\n role: preset.role,\n personality: preset.personality,\n palette: preset.palette,\n backend: backendId,\n });\n\n if ((preset as { isLead: boolean }).isLead) {\n leadAgentId = agentId;\n this.agentManager.setTeamLead(agentId);\n }\n }\n\n if (leadAgentId) {\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: leadAgentId,\n message: `Team created! ${presets.length} members ready.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n }\n }\n\n // ---------------------------------------------------------------------------\n // Task execution\n // ---------------------------------------------------------------------------\n\n runTask(agentId: string, taskId: string, prompt: string, opts?: RunTaskOpts): void {\n const session = this.agentManager.get(agentId);\n if (!session) {\n this.emitEvent({\n type: \"task:failed\",\n agentId,\n taskId,\n error: \"Agent not found. Create it first.\",\n });\n return;\n }\n\n // User-initiated task on team lead: store original task + reset delegation counters\n if (this.agentManager.isTeamLead(agentId) && !this.delegationRouter.isDelegated(taskId)) {\n session.originalTask = prompt;\n this.delegationRouter.clearAll();\n this.teamPreview = null;\n }\n\n // Track for retry\n this.retryTracker?.track(taskId, prompt);\n\n // Worktree setup\n if (this.worktreeEnabled && !session.worktreePath) {\n const wt = createWorktree(this.workspace, agentId, taskId, session.name);\n if (wt) {\n const branch = `agent/${session.name.toLowerCase().replace(/\\s+/g, \"-\")}/${taskId}`;\n session.worktreePath = wt;\n session.worktreeBranch = branch;\n this.emitEvent({\n type: \"worktree:created\",\n agentId,\n taskId,\n worktreePath: wt,\n branch,\n });\n }\n }\n\n const repoPath = session.worktreePath ?? opts?.repoPath;\n // Only the team lead gets the full roster (to decide delegation).\n // Workers don't need it — they just do their assigned task.\n const teamContext = this.agentManager.isTeamLead(agentId)\n ? this.agentManager.getTeamRoster()\n : undefined;\n\n session.runTask(taskId, prompt, repoPath, teamContext, true /* isUserInitiated */);\n }\n\n cancelTask(agentId: string): void {\n const session = this.agentManager.get(agentId);\n if (!session) return;\n\n // Clean up worktree on cancel\n if (session.worktreePath && session.worktreeBranch) {\n removeWorktree(session.worktreePath, session.worktreeBranch, this.workspace);\n session.worktreePath = null;\n session.worktreeBranch = null;\n }\n\n session.cancelTask();\n }\n\n /**\n * Stop all team agents — cancel their tasks but keep them alive.\n * Safe to call before fireTeam, or to just pause work.\n */\n stopTeam(): void {\n this.delegationRouter.stop();\n const teamAgents = this.agentManager.getAll().filter(a => !!a.teamId);\n for (const agent of teamAgents) {\n this.cancelTask(agent.agentId);\n }\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: teamAgents.find(a => this.agentManager.isTeamLead(a.agentId))?.agentId ?? \"system\",\n message: \"Team work stopped. All tasks cancelled.\",\n messageType: \"status\",\n timestamp: Date.now(),\n });\n }\n\n /**\n * Fire the entire team — stop all work silently, then remove all agents.\n */\n fireTeam(): void {\n this.delegationRouter.stop();\n const teamAgents = this.agentManager.getAll().filter(a => !!a.teamId);\n for (const agent of teamAgents) {\n this.cancelTask(agent.agentId);\n }\n for (const agent of teamAgents) {\n this.agentManager.delete(agent.agentId);\n this.emitEvent({ type: \"agent:fired\", agentId: agent.agentId });\n }\n }\n\n sendMessage(agentId: string, message: string): boolean {\n const session = this.agentManager.get(agentId);\n if (!session) return false;\n return session.sendMessage(message);\n }\n\n resolveApproval(approvalId: string, decision: Decision): void {\n for (const agent of this.agentManager.getAll()) {\n agent.resolveApproval(approvalId, decision);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Query\n // ---------------------------------------------------------------------------\n\n getAgent(agentId: string) {\n const s = this.agentManager.get(agentId);\n if (!s) return undefined;\n return { agentId: s.agentId, name: s.name, role: s.role, status: s.status, palette: s.palette, backend: s.backend.id };\n }\n\n getAllAgents() {\n return this.agentManager.getAll().map(s => ({\n agentId: s.agentId, name: s.name, role: s.role, status: s.status,\n palette: s.palette, backend: s.backend.id,\n isTeamLead: this.agentManager.isTeamLead(s.agentId),\n teamId: s.teamId,\n }));\n }\n\n getTeamRoster(): string {\n return this.agentManager.getTeamRoster();\n }\n\n isTeamLead(agentId: string): boolean {\n return this.agentManager.isTeamLead(agentId);\n }\n\n // ---------------------------------------------------------------------------\n // Cleanup\n // ---------------------------------------------------------------------------\n\n destroy(): void {\n for (const agent of this.agentManager.getAll()) {\n if (agent.worktreePath && agent.worktreeBranch) {\n removeWorktree(agent.worktreePath, agent.worktreeBranch, this.workspace);\n }\n agent.destroy();\n }\n }\n\n // ---------------------------------------------------------------------------\n // Internal\n // ---------------------------------------------------------------------------\n\n private handleSessionEvent(event: OrchestratorEvent, agentId: string): void {\n // Handle retry logic on task failure (skip if timeout — retrying won't help)\n if (event.type === \"task:failed\" && this.retryTracker) {\n const taskId = event.taskId;\n const session = this.agentManager.get(agentId);\n const wasCancelled = event.error === \"Task cancelled by user\";\n const wasTimeout = session?.wasTimeout ?? false;\n if (!wasCancelled && !wasTimeout && this.retryTracker.shouldRetry(taskId) && !this.delegationRouter.isDelegated(taskId)) {\n const state = this.retryTracker.recordAttempt(taskId, event.error);\n if (state) {\n this.emitEvent({\n type: \"task:retrying\",\n agentId,\n taskId,\n attempt: state.attempt,\n maxRetries: state.maxRetries,\n error: event.error,\n });\n const retryPrompt = this.retryTracker.getRetryPrompt(taskId);\n if (retryPrompt) {\n const session = this.agentManager.get(agentId);\n if (session) {\n setTimeout(() => session.runTask(taskId, retryPrompt), 500);\n return; // Don't emit the task:failed — we're retrying\n }\n }\n }\n }\n\n // Retries exhausted — check for escalation (skip on cancel)\n const escalation = wasCancelled ? null : this.retryTracker.getEscalation(taskId);\n if (escalation) {\n const leadId = this.agentManager.getTeamLead();\n if (leadId && leadId !== agentId) {\n const leadSession = this.agentManager.get(leadId);\n if (leadSession) {\n const escalationTaskId = nanoid();\n const teamContext = this.agentManager.getTeamRoster();\n leadSession.runTask(escalationTaskId, escalation.prompt, undefined, teamContext);\n }\n }\n }\n this.retryTracker.clear(taskId);\n }\n\n // Handle worktree merge on task completion\n if (event.type === \"task:done\") {\n const session = this.agentManager.get(agentId);\n if (session?.worktreePath && session.worktreeBranch) {\n if (this.worktreeMerge) {\n const result = mergeWorktree(this.workspace, session.worktreePath, session.worktreeBranch);\n this.emitEvent({\n type: \"worktree:merged\",\n agentId,\n taskId: event.taskId,\n branch: session.worktreeBranch,\n success: result.success,\n conflictFiles: result.conflictFiles,\n });\n } else {\n removeWorktree(session.worktreePath, session.worktreeBranch, this.workspace);\n }\n session.worktreePath = null;\n session.worktreeBranch = null;\n }\n\n this.retryTracker?.clear(event.taskId);\n\n // Capture preview from dev workers as soon as they complete.\n // Only dev workers (not QA, not reviewer, not leader) should set preview.\n // First valid preview wins — don't overwrite with later workers.\n if (!this.agentManager.isTeamLead(agentId) && !this.teamPreview) {\n const role = session?.role?.toLowerCase() ?? \"\";\n const isDevWorker = !role.includes(\"qa\") && !role.includes(\"tester\") && !role.includes(\"review\");\n if (isDevWorker && event.result?.previewUrl) {\n this.teamPreview = {\n previewUrl: event.result.previewUrl,\n previewPath: event.result.previewPath,\n };\n console.log(`[Orchestrator] Preview captured from ${session?.name}: ${this.teamPreview.previewUrl}`);\n }\n }\n\n // For team leaders: determine if this is the final result.\n if (this.agentManager.isTeamLead(agentId)) {\n const isResultTask = this.delegationRouter.isResultTask(event.taskId);\n\n // Did the leader process results WITHOUT creating new delegations?\n // This uses a delegation counter snapshot, not hasPendingFrom (which is\n // polluted by old/straggler workers still running from previous rounds).\n const leaderDidNotDelegateNewWork = isResultTask\n && this.delegationRouter.resultTaskDidNotDelegate(event.taskId);\n\n // Safety net: budget exhausted and no new delegations pending\n const budgetForced = this.delegationRouter.isBudgetExhausted()\n && !this.delegationRouter.hasPendingFrom(agentId);\n\n const shouldFinalize = leaderDidNotDelegateNewWork || budgetForced;\n\n if (shouldFinalize) {\n event.isFinalResult = true;\n\n // Clear any straggler delegations so they don't restart the leader later\n this.delegationRouter.clearAgent(agentId);\n\n // Use preview captured earlier from dev workers\n if (!event.result?.previewUrl && this.teamPreview && event.result) {\n event.result.previewUrl = this.teamPreview.previewUrl;\n event.result.previewPath = this.teamPreview.previewPath;\n }\n\n // Fallback: no dev worker had a preview — scan all workers' changedFiles for .html\n if (!event.result?.previewUrl && event.result) {\n for (const worker of this.agentManager.getAll()) {\n if (worker.agentId === agentId) continue;\n const { previewUrl, previewPath } = worker.detectPreview();\n if (previewUrl) {\n event.result.previewUrl = previewUrl;\n event.result.previewPath = previewPath;\n break;\n }\n }\n }\n\n const summary = event.result?.summary?.slice(0, 200) ?? \"All tasks completed.\";\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: agentId,\n message: `Project complete: ${summary}`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n } else if (!isResultTask && !this.delegationRouter.hasPendingFrom(agentId)) {\n console.warn(`[Orchestrator] Leader ${agentId} completed initial task with no delegations. Output may have failed to parse.`);\n }\n }\n }\n\n // Handle worktree cleanup on task failure (after retry logic)\n if (event.type === \"task:failed\") {\n const session = this.agentManager.get(agentId);\n if (session?.worktreePath && session.worktreeBranch) {\n removeWorktree(session.worktreePath, session.worktreeBranch, this.workspace);\n session.worktreePath = null;\n session.worktreeBranch = null;\n }\n }\n\n this.emitEvent(event);\n }\n\n private emitEvent(event: OrchestratorEvent): void {\n this.emit(event.type, event as never);\n }\n}\n","import { spawn, execSync, type ChildProcess } from \"child_process\";\nimport path from \"path\";\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { previewServer } from \"./preview-server.js\";\nimport { nanoid } from \"nanoid\";\nimport type { AIBackend } from \"./ai-backend.js\";\nimport type { AgentStatus, TaskResultPayload, OrchestratorEvent } from \"./types.js\";\n\n/* ── Persist session IDs across restarts ────────────────────────── */\nconst SESSION_FILE = path.join(homedir(), \".bit-office\", \"agent-sessions.json\");\n\nfunction loadSessionMap(): Record<string, string> {\n try {\n if (existsSync(SESSION_FILE)) return JSON.parse(readFileSync(SESSION_FILE, \"utf-8\"));\n } catch { /* corrupt file, start fresh */ }\n return {};\n}\n\nfunction saveSessionId(agentId: string, sessionId: string | null) {\n const dir = path.dirname(SESSION_FILE);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n const map = loadSessionMap();\n if (sessionId) {\n map[agentId] = sessionId;\n } else {\n delete map[agentId];\n }\n writeFileSync(SESSION_FILE, JSON.stringify(map), \"utf-8\");\n}\n\ninterface PendingApproval {\n approvalId: string;\n resolve: (decision: \"yes\" | \"no\") => void;\n}\n\n/** Callback for delegation: (fromAgentId, targetName, prompt) => void */\nexport type DelegationHandler = (fromAgentId: string, targetName: string, prompt: string) => void;\n\n/** Callback when a task completes: (agentId, taskId, summary, success) => void */\nexport type TaskCompleteHandler = (agentId: string, taskId: string, summary: string, success: boolean) => void;\n\ninterface QueuedTask {\n taskId: string;\n prompt: string;\n repoPath?: string;\n teamContext?: string;\n}\n\nexport interface AgentSessionOpts {\n agentId: string;\n name: string;\n role: string;\n personality?: string;\n workspace: string;\n resumeHistory?: boolean;\n backend: AIBackend;\n sandboxMode?: \"full\" | \"safe\";\n onEvent: (event: OrchestratorEvent) => void;\n renderPrompt: (templateName: string, vars: Record<string, string | undefined>) => string;\n /** Whether this agent is the team lead (uses leader template, no tools) */\n isTeamLead?: boolean;\n teamId?: string;\n}\n\nexport class AgentSession {\n readonly agentId: string;\n readonly name: string;\n readonly role: string;\n readonly personality: string;\n readonly backend: AIBackend;\n palette?: number;\n private process: ChildProcess | null = null;\n private currentTaskId: string | null = null;\n private taskTimeout: ReturnType<typeof setTimeout> | null = null;\n private idleTimer: ReturnType<typeof setTimeout> | null = null;\n private currentCwd: string | null = null;\n private _status: AgentStatus = \"idle\";\n get status(): AgentStatus { return this._status; }\n private pendingApprovals = new Map<string, PendingApproval>();\n private workspace: string;\n private sandboxMode: \"full\" | \"safe\";\n private stdoutBuffer = \"\";\n private stderrBuffer = \"\";\n private hasHistory: boolean;\n private sessionId: string | null;\n private taskQueue: QueuedTask[] = [];\n private onEvent: (event: OrchestratorEvent) => void;\n private _renderPrompt: (templateName: string, vars: Record<string, string | undefined>) => string;\n private timedOut = false;\n private _isTeamLead: boolean;\n private _lastResult: string | null = null;\n /** Original user-facing task prompt (for leader state-summary mode) */\n originalTask: string | null = null;\n onDelegation: DelegationHandler | null = null;\n onTaskComplete: TaskCompleteHandler | null = null;\n /** Whether the last failure was a timeout (not retryable) */\n get wasTimeout(): boolean { return this.timedOut; }\n get isTeamLead(): boolean { return this._isTeamLead; }\n /** Short summary of last completed/failed task (for roster context) */\n get lastResult(): string | null { return this._lastResult; }\n private _lastResultText: string | null = null;\n set isTeamLead(v: boolean) { this._isTeamLead = v; }\n\n /** Current working directory of the running task (used by worktree logic) */\n get currentWorkingDir(): string | null { return this.currentCwd; }\n\n /** Worktree path if task is running in one (set externally by orchestrator) */\n worktreePath: string | null = null;\n worktreeBranch: string | null = null;\n teamId?: string;\n\n constructor(opts: AgentSessionOpts) {\n this.agentId = opts.agentId;\n this.name = opts.name;\n this.role = opts.role;\n this.personality = opts.personality ?? \"\";\n this.workspace = opts.workspace;\n this.sessionId = loadSessionMap()[opts.agentId] ?? null;\n this.hasHistory = opts.resumeHistory ?? !!this.sessionId;\n this.backend = opts.backend;\n this.sandboxMode = opts.sandboxMode ?? \"full\";\n this._isTeamLead = opts.isTeamLead ?? false;\n this.teamId = opts.teamId;\n this.onEvent = opts.onEvent;\n this._renderPrompt = opts.renderPrompt;\n }\n\n async runTask(taskId: string, prompt: string, repoPath?: string, teamContext?: string, isUserInitiated = false) {\n // If the user explicitly cancelled this agent, block any automatic restarts\n // (from flushResults, delegation, retry). Only a direct user action clears this.\n if (this._userCancelled && !isUserInitiated) {\n console.log(`[Agent ${this.name}] Ignoring internal task restart — agent was cancelled by user`);\n return;\n }\n if (isUserInitiated) {\n this._userCancelled = false;\n }\n\n if (this.process) {\n const position = this.taskQueue.length + 1;\n this.taskQueue.push({ taskId, prompt, repoPath, teamContext });\n this.onEvent({\n type: \"task:queued\",\n agentId: this.agentId,\n taskId,\n prompt,\n position,\n });\n return;\n }\n\n // Cancel any pending idle timer from a previous task\n if (this.idleTimer) { clearTimeout(this.idleTimer); this.idleTimer = null; }\n\n this.currentTaskId = taskId;\n const cwd = repoPath ?? this.workspace;\n this.currentCwd = cwd;\n this.stdoutBuffer = \"\";\n this.stderrBuffer = \"\";\n\n this.onEvent({\n type: \"task:started\",\n agentId: this.agentId,\n taskId,\n prompt,\n });\n\n this.setStatus(\"working\");\n\n try {\n const cleanEnv = { ...process.env };\n for (const key of this.backend.deleteEnv ?? []) {\n delete cleanEnv[key];\n }\n // isTeamLead: uses leader template + no tools (only delegates)\n // teamContext: just the roster string (any agent in a team may see it)\n const templateVars = {\n name: this.name,\n role: this._isTeamLead ? \"Team Lead\" : this.role,\n personality: this.personality ? `${this.personality}` : \"\",\n teamRoster: teamContext ?? \"\",\n originalTask: this._isTeamLead ? (this.originalTask ?? prompt) : \"\",\n prompt,\n };\n let fullPrompt: string;\n if (this._isTeamLead) {\n fullPrompt = this._renderPrompt(this.hasHistory ? \"leader-continue\" : \"leader-initial\", templateVars);\n } else {\n fullPrompt = this._renderPrompt(this.hasHistory ? \"worker-continue\" : \"worker-initial\", templateVars);\n }\n const fullAccess = this.sandboxMode === \"full\";\n const verbose = !!process.env.DEBUG;\n const args = this.backend.buildArgs(fullPrompt, {\n continue: this.hasHistory,\n resumeSessionId: this.sessionId ?? undefined,\n fullAccess,\n noTools: this._isTeamLead,\n model: this._isTeamLead ? \"sonnet\" : undefined,\n verbose,\n skipResume: this._isTeamLead && this.hasHistory,\n });\n\n // Log which binary + env state\n try {\n const whichPath = execSync(`which ${this.backend.command}`, { env: cleanEnv, encoding: \"utf-8\", timeout: 3000 }).trim();\n console.log(`[Agent ${this.name}] Binary: ${whichPath}, CLAUDECODE=${cleanEnv.CLAUDECODE ?? \"unset\"}, ENTRYPOINT=${cleanEnv.CLAUDE_CODE_ENTRYPOINT ?? \"unset\"}`);\n } catch { /* ignore */ }\n console.log(`[Agent ${this.name}] Spawning: ${this.backend.command} ${args.map(a => a.length > 80 ? a.slice(0, 80) + '...' : a).join(' ')}`);\n\n // stdin MUST be \"ignore\" — \"pipe\" causes Claude Code to hang waiting for input\n // detached: true creates a new process group so we can kill the entire tree on cancel\n this.process = spawn(this.backend.command, args, {\n cwd,\n env: cleanEnv,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n detached: true,\n });\n\n // Task timeout: leader 3 min (delegation planning), worker 8 min (real coding)\n // Use SIGKILL (not SIGTERM) — Claude CLI ignores SIGTERM while waiting on API calls\n this.timedOut = false;\n const TASK_TIMEOUT_MS = this._isTeamLead ? 3 * 60 * 1000 : 8 * 60 * 1000;\n this.taskTimeout = setTimeout(() => {\n if (this.process?.pid) {\n console.log(`[Agent ${this.agentId}] Task timed out after ${TASK_TIMEOUT_MS / 1000}s, killing`);\n this.timedOut = true;\n try { process.kill(-this.process.pid, \"SIGKILL\"); } catch { this.process.kill(\"SIGKILL\"); }\n }\n }, TASK_TIMEOUT_MS);\n\n // Delegation detection regex\n const DELEGATION_RE = /^\\s*(?:[-*>]\\s*)?(?:\\*\\*)?@(\\w+)(?:\\*\\*)?:\\s*(.+)$/;\n\n // Filter out system/diagnostic noise that should not appear in the UI\n const isSystemNoise = (line: string): boolean => {\n const t = line.trim().toLowerCase();\n if (!t) return true;\n // MCP-related\n if (t.includes(\"mcp\") && (t.startsWith(\"[\") || t.includes(\"server\") || t.includes(\"connect\") || t.includes(\"tool\"))) return true;\n // Claude Code internal diagnostics\n if (/^\\s*>?\\s*(fetching|loaded|reading|writing|searching|running|executing|checking)\\s/i.test(line)) return true;\n // Progress indicators / spinners\n if (/^[\\s⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏✓✗•·…\\-]+$/.test(line.trim())) return true;\n // Bare file path lines (no sentence content)\n if (/^\\s*[\\w./\\\\-]+\\.(ts|tsx|js|jsx|json|md|css|py)\\s*$/.test(line)) return true;\n return false;\n };\n\n // Handle a line of plain text output (delegation detection + logging)\n const handleTextLine = (text: string) => {\n const lines = text.split(\"\\n\").filter((l) => l.trim());\n const visibleLines: string[] = [];\n for (const line of lines) {\n const trimmed = line.trim();\n console.log(`[Agent ${this.name}] ${trimmed.slice(0, 200)}`);\n const match = trimmed.match(DELEGATION_RE);\n if (match && this.onDelegation) {\n const [, targetName, delegatedPrompt] = match;\n console.log(`[Delegation detected] ${this.name} -> @${targetName}: ${delegatedPrompt.slice(0, 60)}`);\n this.onDelegation(this.agentId, targetName, delegatedPrompt.replace(/\\*\\*$/, \"\").trim());\n }\n if (!isSystemNoise(line)) {\n visibleLines.push(trimmed);\n }\n }\n if (visibleLines.length > 0) {\n this.onEvent({\n type: \"log:append\",\n agentId: this.agentId,\n taskId,\n stream: \"stdout\",\n chunk: visibleLines.slice(-3).join(\"\\n\"),\n });\n }\n };\n\n // Parse stream-json or plain text stdout\n let jsonLineBuf = \"\";\n let stdoutChunkCount = 0;\n let seenFirstJson = false;\n this.process.stdout?.on(\"data\", (data: Buffer) => {\n const raw = data.toString();\n stdoutChunkCount++;\n if (stdoutChunkCount <= 3) {\n console.log(`[Agent ${this.name} raw-stdout #${stdoutChunkCount}] ${raw.slice(0, 150)}`);\n }\n jsonLineBuf += raw;\n\n // Process complete lines\n let nlIdx: number;\n while ((nlIdx = jsonLineBuf.indexOf(\"\\n\")) !== -1) {\n const line = jsonLineBuf.slice(0, nlIdx).trim();\n jsonLineBuf = jsonLineBuf.slice(nlIdx + 1);\n if (!line) continue;\n\n // Try to parse as stream-json\n if (line.startsWith(\"{\")) {\n try {\n const msg = JSON.parse(line);\n seenFirstJson = true;\n // Capture session ID for --resume on next run\n if (msg.type === \"system\" && msg.session_id) {\n this.sessionId = msg.session_id;\n console.log(`[Agent ${this.name}] Session ID: ${msg.session_id}`);\n }\n if (msg.type === \"assistant\" && msg.message?.content) {\n for (const block of msg.message.content) {\n if (block.type === \"text\" && block.text) {\n this.stdoutBuffer += block.text + \"\\n\";\n handleTextLine(block.text);\n }\n if (block.type === \"thinking\" && block.thinking) {\n console.log(`[Agent ${this.name} thinking] ${block.thinking.slice(0, 120)}...`);\n }\n }\n } else if (msg.type === \"result\" && msg.result) {\n if (!this.stdoutBuffer) {\n this.stdoutBuffer = msg.result;\n handleTextLine(msg.result);\n }\n this._lastResultText = msg.result;\n }\n continue;\n } catch {\n // Not valid JSON, treat as plain text\n }\n }\n\n // First non-JSON line: this backend outputs plain text, not stream-json.\n // Switch to plain-text mode so all subsequent lines are processed.\n if (!seenFirstJson) {\n seenFirstJson = true;\n }\n\n // Plain text fallback (non-Claude backends)\n this.stdoutBuffer += line + \"\\n\";\n handleTextLine(line);\n }\n });\n\n this.process.stderr?.on(\"data\", (data: Buffer) => {\n const chunk = data.toString();\n this.stderrBuffer += chunk;\n // Log to console for debugging, but do NOT forward stderr to the UI.\n // Stderr is MCP internals, system diagnostics, and Claude Code infrastructure —\n // none of it is meaningful agent output for the user.\n for (const line of chunk.split(\"\\n\")) {\n if (line.trim()) console.log(`[Agent ${this.name} stderr] ${line.slice(0, 200)}`);\n }\n });\n\n this.process.on(\"close\", (code) => {\n this.process = null;\n if (this.taskTimeout) { clearTimeout(this.taskTimeout); this.taskTimeout = null; }\n\n // Flush any remaining data in the JSON line buffer (last line without trailing newline)\n const remaining = jsonLineBuf.trim();\n if (remaining) {\n jsonLineBuf = \"\";\n for (const chunk of remaining.split(\"\\n\")) {\n const line = chunk.trim();\n if (!line) continue;\n if (line.startsWith(\"{\")) {\n try {\n const msg = JSON.parse(line);\n if (msg.type === \"assistant\" && msg.message?.content) {\n for (const block of msg.message.content) {\n if (block.type === \"text\" && block.text) {\n this.stdoutBuffer += block.text + \"\\n\";\n handleTextLine(block.text);\n }\n }\n } else if (msg.type === \"result\" && msg.result) {\n this._lastResultText = msg.result;\n if (!this.stdoutBuffer) {\n this.stdoutBuffer = msg.result;\n handleTextLine(msg.result);\n }\n }\n } catch { /* not valid JSON */ }\n } else {\n seenFirstJson = true;\n this.stdoutBuffer += line + \"\\n\";\n handleTextLine(line);\n }\n }\n }\n\n const completedTaskId = this.currentTaskId ?? taskId;\n this.currentTaskId = null;\n const wasCancelled = this.cancelled;\n this.cancelled = false;\n\n console.log(`[Agent ${this.agentId}] ${this.backend.name} exited: code=${code}, cancelled=${wasCancelled}, stdout=${this.stdoutBuffer.length}ch`);\n\n try {\n if (wasCancelled) {\n // Already handled in cancelTask() — just clean up and dequeue\n this.dequeueNext();\n return;\n } else if (code === 0) {\n this.hasHistory = true;\n saveSessionId(this.agentId, this.sessionId);\n\n const { summary, fullOutput, changedFiles } = this.extractResult();\n\n // Preview detection: skip for team leads (they don't create files).\n // Leader preview is handled by the orchestrator when isFinalResult is set.\n const { previewUrl, previewPath } = this._isTeamLead\n ? { previewUrl: undefined, previewPath: undefined }\n : this.detectPreview();\n\n this._lastResult = `done: ${summary.slice(0, 120)}`;\n this.setStatus(\"done\");\n this.onEvent({\n type: \"task:done\",\n agentId: this.agentId,\n taskId: completedTaskId,\n result: { summary, fullOutput, changedFiles, diffStat: \"\", testResult: \"unknown\", previewUrl, previewPath },\n });\n this.onTaskComplete?.(this.agentId, completedTaskId, summary, true);\n this.idleTimer = setTimeout(() => { this.idleTimer = null; this.setStatus(\"idle\"); }, 5000);\n } else {\n const errorMsg = this.stdoutBuffer.slice(0, 300) || this.stderrBuffer.slice(-300) || `Process exited with code ${code}`;\n this._lastResult = `failed: ${errorMsg.slice(0, 120)}`;\n this.setStatus(\"error\");\n this.onEvent({\n type: \"task:failed\",\n agentId: this.agentId,\n taskId: completedTaskId,\n error: errorMsg,\n });\n this.onTaskComplete?.(this.agentId, completedTaskId, errorMsg, false);\n this.idleTimer = setTimeout(() => { this.idleTimer = null; this.setStatus(\"idle\"); }, 3000);\n }\n this.dequeueNext();\n } catch (err) {\n console.error(`[Agent ${this.agentId}] Error in close handler:`, err);\n this.setStatus(\"idle\");\n this.dequeueNext();\n }\n });\n\n this.process.on(\"error\", (err) => {\n this.process = null;\n this.currentTaskId = null;\n this.setStatus(\"error\");\n this.onEvent({\n type: \"task:failed\",\n agentId: this.agentId,\n taskId,\n error: err.message,\n });\n this.idleTimer = setTimeout(() => { this.idleTimer = null; this.setStatus(\"idle\"); }, 3000);\n });\n } catch (err) {\n this.setStatus(\"error\");\n this.onEvent({\n type: \"task:failed\",\n agentId: this.agentId,\n taskId,\n error: (err as Error).message,\n });\n }\n }\n\n /**\n * Send a message to the agent's stdin.\n * NOTE: Currently a no-op because stdin is set to \"ignore\" (pipe causes Claude Code to hang).\n * Future: use --input-format stream-json for bidirectional communication.\n */\n sendMessage(_message: string): boolean {\n // stdin is \"ignore\" — cannot write. See TODO above.\n return false;\n }\n\n /**\n * Detect preview URL/path from agent output.\n * Called directly for workers; called by orchestrator for leader's final result.\n */\n detectPreview(): { previewUrl: string | undefined; previewPath: string | undefined } {\n // 1) Explicit PREVIEW: http://... line\n const previewMatch = this.stdoutBuffer.match(/PREVIEW:\\s*(https?:\\/\\/[^\\s*)\\]>]+)/i);\n let previewUrl = previewMatch?.[1]?.replace(/[*)\\]>]+$/, \"\");\n let previewPath: string | undefined;\n\n // 2) Any http://localhost mention in output\n if (!previewUrl) {\n const localhostMatch = this.stdoutBuffer.match(/https?:\\/\\/localhost[:\\d]*/);\n previewUrl = localhostMatch?.[0];\n }\n\n // 3) .html file path mentioned in output (SUMMARY, FILES_CHANGED, or prose)\n if (!previewUrl) {\n const fileMatch = this.stdoutBuffer.match(/(?:open\\s+)?((?:\\/[\\w./_-]+|[\\w./_-]+)\\.html?)\\b/i);\n if (fileMatch) {\n previewPath = path.isAbsolute(fileMatch[1])\n ? fileMatch[1]\n : path.join(this.currentCwd ?? this.workspace, fileMatch[1]);\n previewUrl = previewServer.serve(previewPath);\n }\n }\n\n // 4) Fallback: look for .html in changedFiles (worker may have modified but not mentioned it)\n if (!previewUrl) {\n const { changedFiles } = this.extractResult();\n const htmlFile = changedFiles.find(f => /\\.html?$/i.test(f));\n if (htmlFile) {\n previewPath = path.isAbsolute(htmlFile)\n ? htmlFile\n : path.join(this.currentCwd ?? this.workspace, htmlFile);\n previewUrl = previewServer.serve(previewPath);\n }\n }\n\n return { previewUrl, previewPath };\n }\n\n /**\n * Parse stdoutBuffer for structured result (SUMMARY/STATUS/FILES_CHANGED).\n * Falls back to a cleaned-up excerpt of the raw output.\n */\n private extractResult(): { summary: string; fullOutput: string; changedFiles: string[] } {\n const raw = this.stdoutBuffer || this._lastResultText || \"\";\n const fullOutput = raw.slice(0, 3000);\n\n // Try to extract structured fields from worker output format\n const summaryMatch = raw.match(/SUMMARY:\\s*(.+)/i);\n const filesMatch = raw.match(/FILES_CHANGED:\\s*(.+)/i);\n\n const changedFiles: string[] = [];\n if (filesMatch) {\n const fileList = filesMatch[1].trim();\n for (const f of fileList.split(/[,\\n]+/)) {\n const cleaned = f.trim().replace(/^[-*]\\s*/, \"\");\n if (cleaned) changedFiles.push(cleaned);\n }\n }\n\n if (summaryMatch) {\n return { summary: summaryMatch[1].trim(), fullOutput, changedFiles };\n }\n\n // No structured SUMMARY — extract the most meaningful part\n const lines = raw.split(\"\\n\").filter(l => l.trim());\n const delegationRe = /^@(\\w+):/;\n const noisePatterns = [\n /^STATUS:\\s/i,\n /^FILES_CHANGED:\\s/i,\n /^SUMMARY:\\s/i,\n /^\\[Assigned by /,\n /^mcp\\s/i,\n /^╔|^║|^╚/,\n /^\\s*[-*]{3,}\\s*$/,\n ];\n\n const delegationTargets: string[] = [];\n const meaningful: string[] = [];\n for (const l of lines) {\n const trimmed = l.trim();\n const dm = trimmed.match(delegationRe);\n if (dm) {\n delegationTargets.push(dm[1]);\n } else if (!noisePatterns.some(p => p.test(trimmed))) {\n meaningful.push(l);\n }\n }\n\n // If output is primarily delegations (leader), summarize the delegation targets\n if (meaningful.length === 0 && delegationTargets.length > 0) {\n return { summary: `Delegated tasks to ${delegationTargets.join(\", \")}`, fullOutput, changedFiles };\n }\n\n const lastChunk = meaningful.slice(-5).join(\"\\n\").trim();\n const summary = lastChunk.slice(0, 500) || \"Task completed\";\n\n return { summary, fullOutput, changedFiles };\n }\n\n private dequeueNext() {\n if (this.taskQueue.length === 0) return;\n const next = this.taskQueue.shift()!;\n setTimeout(() => {\n this.runTask(next.taskId, next.prompt, next.repoPath, next.teamContext);\n }, 100);\n }\n\n private cancelled = false;\n /** Set by cancelTask(); prevents flushResults / delegation from auto-restarting this agent. */\n private _userCancelled = false;\n\n cancelTask() {\n this.taskQueue = [];\n this._userCancelled = true;\n\n if (this.taskTimeout) { clearTimeout(this.taskTimeout); this.taskTimeout = null; }\n if (this.idleTimer) { clearTimeout(this.idleTimer); this.idleTimer = null; }\n\n const cancelledTaskId = this.currentTaskId ?? \"\";\n\n // Kill the running process if there is one\n if (this.process && this.process.pid) {\n this.cancelled = true;\n this.hasHistory = true;\n saveSessionId(this.agentId, this.sessionId);\n this.onTaskComplete?.(this.agentId, cancelledTaskId, \"Task cancelled by user\", false);\n\n const pgid = this.process.pid;\n try { process.kill(-pgid, \"SIGKILL\"); } catch {\n try { this.process.kill(\"SIGKILL\"); } catch { /* already dead */ }\n }\n }\n\n // Always force UI reset — even if process was already gone.\n // This prevents the UI from getting stuck in \"working\" state.\n this._lastResult = \"cancelled: Task cancelled by user\";\n this.setStatus(\"error\");\n this.onEvent({\n type: \"task:failed\",\n agentId: this.agentId,\n taskId: cancelledTaskId,\n error: \"Task cancelled by user\",\n });\n this.idleTimer = setTimeout(() => { this.idleTimer = null; this.setStatus(\"idle\"); }, 3000);\n }\n\n destroy() {\n if (this.taskTimeout) { clearTimeout(this.taskTimeout); this.taskTimeout = null; }\n if (this.idleTimer) { clearTimeout(this.idleTimer); this.idleTimer = null; }\n if (this.process?.pid) {\n try { process.kill(-this.process.pid, \"SIGTERM\"); } catch { this.process.kill(\"SIGTERM\"); }\n this.process = null;\n }\n this.pendingApprovals.clear();\n saveSessionId(this.agentId, null);\n }\n\n resolveApproval(approvalId: string, decision: \"yes\" | \"no\") {\n if (approvalId === \"__all__\") {\n for (const [, pending] of this.pendingApprovals) {\n pending.resolve(decision);\n }\n this.pendingApprovals.clear();\n return;\n }\n const pending = this.pendingApprovals.get(approvalId);\n if (pending) {\n pending.resolve(decision);\n this.pendingApprovals.delete(approvalId);\n }\n }\n\n async requestApproval(title: string, summary: string, riskLevel: \"low\" | \"med\" | \"high\"): Promise<\"yes\" | \"no\"> {\n const approvalId = nanoid();\n const taskId = this.currentTaskId ?? \"unknown\";\n\n this.setStatus(\"waiting_approval\");\n\n this.onEvent({\n type: \"approval:needed\",\n approvalId,\n agentId: this.agentId,\n taskId,\n title,\n summary,\n riskLevel,\n });\n\n return new Promise((resolve) => {\n this.pendingApprovals.set(approvalId, { approvalId, resolve });\n });\n }\n\n private setStatus(status: AgentStatus) {\n // Guard: don't downgrade to \"idle\" if a new task is already running\n if (status === \"idle\" && this.process) return;\n this._status = status;\n this.onEvent({\n type: \"agent:status\",\n agentId: this.agentId,\n status,\n });\n }\n}\n","import { spawn, type ChildProcess } from \"child_process\";\nimport path from \"path\";\n\nconst PREVIEW_PORT = 9100;\n\n/**\n * Global preview server — one at a time.\n * Kills the previous serve process before starting a new one.\n */\nclass PreviewServer {\n private process: ChildProcess | null = null;\n private currentDir: string | null = null;\n\n /**\n * Serve a directory on a fixed port. Kills any existing serve process first.\n * Returns the preview URL for the given file.\n */\n serve(filePath: string): string | undefined {\n const dir = path.dirname(filePath);\n const fileName = path.basename(filePath);\n\n this.stop();\n\n try {\n this.process = spawn(\"npx\", [\"serve\", dir, \"-l\", String(PREVIEW_PORT), \"--no-clipboard\"], {\n stdio: \"ignore\",\n detached: true,\n });\n this.process.unref();\n this.currentDir = dir;\n const url = `http://localhost:${PREVIEW_PORT}/${fileName}`;\n console.log(`[PreviewServer] Serving ${dir} on port ${PREVIEW_PORT}`);\n return url;\n } catch (e) {\n console.log(`[PreviewServer] Failed to start: ${e}`);\n return undefined;\n }\n }\n\n /** Kill the current serve process */\n stop() {\n if (this.process) {\n try { this.process.kill(\"SIGTERM\"); } catch { /* already dead */ }\n this.process = null;\n this.currentDir = null;\n console.log(`[PreviewServer] Stopped`);\n }\n }\n}\n\n/** Singleton instance */\nexport const previewServer = new PreviewServer();\n","import type { AgentSession } from \"./agent-session.js\";\n\nexport class AgentManager {\n private agents = new Map<string, AgentSession>();\n private _teamLeadId: string | null = null;\n\n setTeamLead(id: string | null) {\n this._teamLeadId = id;\n }\n\n getTeamLead(): string | null {\n return this._teamLeadId;\n }\n\n isTeamLead(id: string): boolean {\n return this._teamLeadId === id;\n }\n\n getTeamRoster(): string {\n const lines: string[] = [];\n for (const session of this.agents.values()) {\n const lead = this.isTeamLead(session.agentId) ? \" (Team Lead)\" : \"\";\n const result = session.lastResult ? ` — ${session.lastResult}` : \"\";\n lines.push(`- ${session.name} (${session.role}) [${session.status}]${lead}${result}`);\n }\n return lines.join(\"\\n\");\n }\n\n getTeamMembers(): Array<{ name: string; role: string; status: string; isLead: boolean; lastResult: string | null }> {\n return Array.from(this.agents.values()).map(s => ({\n name: s.name,\n role: s.role,\n status: s.status,\n isLead: this.isTeamLead(s.agentId),\n lastResult: s.lastResult,\n }));\n }\n\n add(session: AgentSession): void {\n const existing = this.agents.get(session.agentId);\n if (existing) {\n existing.destroy();\n }\n this.agents.set(session.agentId, session);\n }\n\n delete(agentId: string): boolean {\n const session = this.agents.get(agentId);\n if (!session) return false;\n session.destroy();\n this.agents.delete(agentId);\n return true;\n }\n\n get(agentId: string): AgentSession | undefined {\n return this.agents.get(agentId);\n }\n\n getAll(): AgentSession[] {\n return Array.from(this.agents.values());\n }\n\n findByName(name: string): AgentSession | undefined {\n for (const session of this.agents.values()) {\n if (session.name.toLowerCase() === name.toLowerCase()) {\n return session;\n }\n }\n return undefined;\n }\n}\n","import { nanoid } from \"nanoid\";\nimport type { AgentManager } from \"./agent-manager.js\";\nimport type { AgentSession } from \"./agent-session.js\";\nimport type { PromptEngine } from \"./prompt-templates.js\";\nimport type { OrchestratorEvent } from \"./types.js\";\n\nconst MAX_DELEGATION_DEPTH = 5;\nconst MAX_TOTAL_DELEGATIONS = 20;\nconst DELEGATION_BUDGET_ROUNDS = 5;\nconst HARD_CEILING_ROUNDS = 10;\n// Longer batch window so parallel QA + CodeReview results arrive together in one leader round.\n// If QA finishes but CodeReview is still running, wait up to 20s before flushing partial results.\nconst RESULT_BATCH_WINDOW_MS = 20_000;\n\ninterface PendingResult {\n fromName: string;\n statusWord: string;\n summary: string;\n}\n\nexport class DelegationRouter {\n /** taskId → fromAgentId */\n private delegationOrigin = new Map<string, string>();\n /** taskId → delegation depth (how many hops from original user task) */\n private delegationDepth = new Map<string, number>();\n /** agentId → taskId of the delegated task currently assigned TO this agent */\n private assignedTask = new Map<string, string>();\n /** Total delegations in current team session (reset on clearAll) */\n private totalDelegations = 0;\n /** How many times the leader has been invoked to process results */\n private leaderRounds = 0;\n /** When true, all new delegations and result forwarding are blocked */\n private stopped = false;\n /** TaskIds created by flushResults — only these can produce a final result */\n private resultTaskIds = new Set<string>();\n /** Tracks the totalDelegations count when a resultTask started, so we can detect if new delegations were created */\n private delegationsAtResultStart = new Map<string, number>();\n /** Batch result forwarding: originAgentId → pending results + timer */\n private pendingResults = new Map<string, { results: PendingResult[]; timer: ReturnType<typeof setTimeout> }>();\n private agentManager: AgentManager;\n private promptEngine: PromptEngine;\n private emitEvent: (event: OrchestratorEvent) => void;\n\n constructor(\n agentManager: AgentManager,\n promptEngine: PromptEngine,\n emitEvent: (event: OrchestratorEvent) => void,\n ) {\n this.agentManager = agentManager;\n this.promptEngine = promptEngine;\n this.emitEvent = emitEvent;\n }\n\n /**\n * Wire delegation and result forwarding callbacks onto a session.\n */\n wireAgent(session: AgentSession): void {\n this.wireDelegation(session);\n this.wireResultForwarding(session);\n }\n\n /**\n * Check if a taskId was delegated (has an origin).\n */\n isDelegated(taskId: string): boolean {\n return this.delegationOrigin.has(taskId);\n }\n\n /**\n * True if this taskId was created by flushResults (leader processing worker results).\n * Only result-processing tasks are eligible to be marked as isFinalResult.\n */\n isResultTask(taskId: string): boolean {\n return this.resultTaskIds.has(taskId);\n }\n\n /**\n * True when the delegation budget is exhausted — leader should finalize even\n * if the current task is not a \"resultTask\" (safety net for convergence).\n */\n isBudgetExhausted(): boolean {\n return this.leaderRounds >= DELEGATION_BUDGET_ROUNDS;\n }\n\n /**\n * True if the given resultTask completed WITHOUT creating any new delegations.\n * This means the leader decided to summarize/finish rather than delegate more work.\n */\n resultTaskDidNotDelegate(taskId: string): boolean {\n const startCount = this.delegationsAtResultStart.get(taskId);\n if (startCount === undefined) return false;\n return this.totalDelegations === startCount;\n }\n\n /**\n * Check if there are any pending delegated tasks originating from a given agent.\n */\n hasPendingFrom(agentId: string): boolean {\n for (const origin of this.delegationOrigin.values()) {\n if (origin === agentId) return true;\n }\n return false;\n }\n\n /**\n * Remove all delegation tracking for a specific agent (on fire/cancel).\n */\n clearAgent(agentId: string): void {\n for (const [taskId, origin] of this.delegationOrigin) {\n if (origin === agentId) {\n this.delegationOrigin.delete(taskId);\n this.delegationDepth.delete(taskId);\n }\n }\n }\n\n /**\n * Block all future delegations and result forwarding. Call before cancelling tasks.\n */\n stop(): void {\n this.stopped = true;\n for (const pending of this.pendingResults.values()) {\n clearTimeout(pending.timer);\n }\n this.pendingResults.clear();\n }\n\n /**\n * Reset all delegation state (on new team task).\n */\n clearAll(): void {\n this.delegationOrigin.clear();\n this.delegationDepth.clear();\n this.assignedTask.clear();\n this.resultTaskIds.clear();\n this.delegationsAtResultStart.clear();\n this.totalDelegations = 0;\n this.leaderRounds = 0;\n this.stopped = false;\n for (const pending of this.pendingResults.values()) {\n clearTimeout(pending.timer);\n }\n this.pendingResults.clear();\n }\n\n private wireDelegation(session: AgentSession): void {\n session.onDelegation = (fromAgentId, targetName, prompt) => {\n if (this.stopped) return;\n\n if (this.leaderRounds >= DELEGATION_BUDGET_ROUNDS) {\n console.log(`[Delegation] BLOCKED: delegation budget exhausted (round ${this.leaderRounds}/${DELEGATION_BUDGET_ROUNDS})`);\n return;\n }\n\n const target = this.agentManager.findByName(targetName);\n if (!target) {\n console.log(`[Delegation] Target agent \"${targetName}\" not found, ignoring`);\n return;\n }\n\n if (this.totalDelegations >= MAX_TOTAL_DELEGATIONS) {\n console.log(`[Delegation] BLOCKED: total delegation limit (${MAX_TOTAL_DELEGATIONS}) reached`);\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId,\n message: `Delegation blocked: total limit of ${MAX_TOTAL_DELEGATIONS} delegations reached. Summarize current results for the user.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n return;\n }\n\n const myTaskId = this.assignedTask.get(fromAgentId);\n const parentDepth = myTaskId ? (this.delegationDepth.get(myTaskId) ?? 0) : 0;\n const newDepth = parentDepth + 1;\n\n if (newDepth > MAX_DELEGATION_DEPTH) {\n console.log(`[Delegation] BLOCKED: depth ${newDepth} exceeds max ${MAX_DELEGATION_DEPTH}`);\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId,\n message: `Delegation blocked: chain depth (${newDepth}) exceeds limit. Complete current work directly.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n return;\n }\n\n const taskId = nanoid();\n this.delegationOrigin.set(taskId, fromAgentId);\n this.delegationDepth.set(taskId, newDepth);\n this.totalDelegations++;\n const fromSession = this.agentManager.get(fromAgentId);\n const fromName = fromSession?.name ?? fromAgentId;\n const fromRole = fromSession?.role ?? \"Team Lead\";\n\n const fullPrompt = this.promptEngine.render(\"delegation-prefix\", { fromName, fromRole, prompt });\n\n console.log(`[Delegation] ${fromAgentId} -> ${target.agentId} (${targetName}) depth=${newDepth} total=${this.totalDelegations}: ${prompt.slice(0, 80)}`);\n this.emitEvent({\n type: \"task:delegated\",\n fromAgentId,\n toAgentId: target.agentId,\n taskId,\n prompt,\n });\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId,\n toAgentId: target.agentId,\n message: prompt,\n messageType: \"delegation\",\n taskId,\n timestamp: Date.now(),\n });\n this.assignedTask.set(target.agentId, taskId);\n target.runTask(taskId, fullPrompt);\n };\n }\n\n private wireResultForwarding(session: AgentSession): void {\n session.onTaskComplete = (agentId, taskId, summary, success) => {\n if (this.stopped) return;\n\n const originAgentId = this.delegationOrigin.get(taskId);\n if (!originAgentId) return;\n this.delegationOrigin.delete(taskId);\n this.delegationDepth.delete(taskId);\n if (this.assignedTask.get(agentId) === taskId) {\n this.assignedTask.delete(agentId);\n }\n\n const originSession = this.agentManager.get(originAgentId);\n if (!originSession) return;\n\n const fromSession = this.agentManager.get(agentId);\n const fromName = fromSession?.name ?? agentId;\n const statusWord = success ? \"completed successfully\" : \"failed\";\n\n console.log(`[ResultForward] ${agentId} -> ${originAgentId}: ${summary.slice(0, 80)} (success=${success})`);\n\n this.emitEvent({\n type: \"task:result-returned\",\n fromAgentId: agentId,\n toAgentId: originAgentId,\n taskId,\n summary,\n success,\n });\n\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: agentId,\n toAgentId: originAgentId,\n message: summary.slice(0, 400),\n messageType: \"result\",\n taskId,\n timestamp: Date.now(),\n });\n\n // Batch results: accumulate and flush to leader after a short window\n this.enqueueResult(originAgentId, { fromName, statusWord, summary: summary.slice(0, 400) });\n };\n }\n\n /**\n * Queue a result for batched forwarding to the origin agent.\n * Flush only when ALL delegated tasks from this origin have returned.\n * The timer is a safety net — if a worker somehow disappears without returning,\n * we don't want the leader to wait forever.\n */\n private enqueueResult(originAgentId: string, result: PendingResult): void {\n let pending = this.pendingResults.get(originAgentId);\n if (pending) {\n clearTimeout(pending.timer);\n pending.results.push(result);\n } else {\n pending = { results: [result], timer: null as unknown as ReturnType<typeof setTimeout> };\n this.pendingResults.set(originAgentId, pending);\n }\n\n // Flush when ALL delegated tasks have returned — no more guessing with timers\n if (!this.hasPendingFrom(originAgentId)) {\n console.log(`[ResultBatch] All delegated tasks returned for ${originAgentId}, flushing ${pending.results.length} result(s)`);\n this.flushResults(originAgentId);\n return;\n }\n\n // Safety net: if a worker is still running after the timeout, flush what we have\n // so the leader isn't blocked forever by a hung worker\n console.log(`[ResultBatch] ${originAgentId} still has pending delegations, waiting (safety timeout: ${RESULT_BATCH_WINDOW_MS / 1000}s)`);\n pending.timer = setTimeout(() => {\n console.log(`[ResultBatch] Safety timeout reached for ${originAgentId}, flushing ${pending.results.length} partial result(s)`);\n this.flushResults(originAgentId);\n }, RESULT_BATCH_WINDOW_MS);\n }\n\n /** Flush all pending results for an origin agent as a single leader prompt. */\n private flushResults(originAgentId: string): void {\n if (this.stopped) return;\n\n const pending = this.pendingResults.get(originAgentId);\n if (!pending || pending.results.length === 0) return;\n this.pendingResults.delete(originAgentId);\n clearTimeout(pending.timer);\n\n const originSession = this.agentManager.get(originAgentId);\n if (!originSession) return;\n\n this.leaderRounds++;\n\n // Hard ceiling: force-complete instead of silently returning\n if (this.leaderRounds > HARD_CEILING_ROUNDS) {\n console.log(`[ResultBatch] Hard ceiling reached (${HARD_CEILING_ROUNDS} rounds). Force-completing.`);\n\n const resultLines = pending.results.map(r =>\n `- ${r.fromName} (${r.statusWord}): ${r.summary}`\n ).join(\"\\n\");\n\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: originAgentId,\n message: `Team work auto-completed after ${HARD_CEILING_ROUNDS} rounds.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n\n // Emit a synthetic task:done so the UI gets a proper final result\n this.emitEvent({\n type: \"task:done\",\n agentId: originAgentId,\n taskId: `auto-complete-${Date.now()}`,\n result: {\n summary: `Auto-completed after ${HARD_CEILING_ROUNDS} rounds.\\n${resultLines}`,\n changedFiles: [],\n diffStat: \"\",\n testResult: \"unknown\" as const,\n },\n isFinalResult: true,\n });\n return;\n }\n\n // Build round guidance for the leader prompt\n let roundInfo: string;\n const budgetExhausted = this.leaderRounds >= DELEGATION_BUDGET_ROUNDS;\n if (budgetExhausted) {\n roundInfo = `DELEGATION BUDGET REACHED (round ${this.leaderRounds}). No more delegations will be accepted. You MUST summarize the current results and report to the user NOW. Accept the work as-is — the user can request improvements later.`;\n } else if (this.leaderRounds >= DELEGATION_BUDGET_ROUNDS - 1) {\n roundInfo = `Round ${this.leaderRounds}/${DELEGATION_BUDGET_ROUNDS} — LAST delegation round. Only delegate if something is critically broken. Prefer to accept and summarize.`;\n } else {\n roundInfo = `Round ${this.leaderRounds}/${DELEGATION_BUDGET_ROUNDS}`;\n }\n\n const resultLines = pending.results.map(r =>\n `- ${r.fromName} (${r.statusWord}): ${r.summary}`\n ).join(\"\\n\\n\");\n\n const followUpTaskId = nanoid();\n this.resultTaskIds.add(followUpTaskId);\n this.delegationsAtResultStart.set(followUpTaskId, this.totalDelegations);\n const teamContext = this.agentManager.isTeamLead(originAgentId)\n ? this.agentManager.getTeamRoster()\n : undefined;\n\n const batchPrompt = this.promptEngine.render(\"leader-result\", {\n fromName: pending.results.length === 1\n ? pending.results[0].fromName\n : `${pending.results.length} team members`,\n resultStatus: pending.results.every(r => r.statusWord.includes(\"success\"))\n ? \"completed successfully\"\n : \"mixed results\",\n resultSummary: resultLines,\n originalTask: originSession.originalTask ?? \"\",\n roundInfo,\n });\n\n console.log(`[ResultBatch] Flushing ${pending.results.length} result(s) to ${originAgentId} (round ${this.leaderRounds}, budget=${DELEGATION_BUDGET_ROUNDS}, ceiling=${HARD_CEILING_ROUNDS})`);\n originSession.runTask(followUpTaskId, batchPrompt, undefined, teamContext);\n }\n}\n","import { readFileSync, writeFileSync, mkdirSync, existsSync } from \"fs\";\nimport path from \"path\";\n\n// ---------------------------------------------------------------------------\n// Default templates (embedded fallbacks)\n// ---------------------------------------------------------------------------\n\nconst PROMPT_DEFAULTS: Record<string, string> = {\n \"leader-initial\": `You are {{name}}, the Team Lead. {{personality}}\nYou CANNOT write code, run commands, or use any tools. You can ONLY delegate.\n\nTeam:\n{{teamRoster}}\n\nDelegate using this exact format (one per line):\n@AgentName: [project-dir] task description\n\nIMPORTANT: Every delegation MUST start with [project-dir] — the subdirectory path relative to the workspace root where this agent should focus. Example: @Alex: [game/] Fix the CSS overlay in game/styles.css. ALL team members MUST work in the same project directory. Identify the target project first, then use it consistently.\n\nExecution phases:\n1. BUILD: Assign coding tasks to developers now. Include file paths and specific instructions.\n2. VALIDATE (one round, parallel): When dev results come back, assign Code Reviewer AND QA Tester at the same time in a single response. Both run in parallel — do NOT wait for one before assigning the other.\n3. REPORT: After both review and QA report back, summarize and finish. Done.\n\nRules:\n- Never write code yourself. Only delegate.\n- Each delegation must be specific and bounded: include exact file paths, function names, and expected output. Vague delegations (\"improve the UI\") cause scope creep.\n- Phase 1 (this round): Assign developers ONLY. Do NOT assign QA or code review yet — there is no code to test.\n- Phase 2 (one round only): Assign Code Reviewer AND QA Tester simultaneously in one response. This saves a full round.\n- Skip QA entirely for trivial changes (config tweaks, typo fixes, renaming, comment-only changes).\n- Keep the total number of rounds to 2-3. Ship working code now — the user can request improvements later.\n\nTask: {{prompt}}`,\n\n \"leader-continue\": `You are {{name}}, the Team Lead. {{personality}}\nYou CANNOT write code, run commands, or use any tools. You can ONLY delegate.\n\nTeam status:\n{{teamRoster}}\n\n{{originalTask}}\n\nDelegate using: @AgentName: task description\n\n{{prompt}}`,\n\n \"leader-result\": `You are the Team Lead. You CANNOT write or fix code. You can ONLY delegate using @Name: [project-dir] <task>.\n\nOriginal user task: {{originalTask}}\n\n{{roundInfo}}\n\nTeam status:\n{{teamRoster}}\n\nNew result from {{fromName}} ({{resultStatus}}):\n{{resultSummary}}\n\nDecision priority (choose the FIRST that applies):\n1. ALL SUCCEEDED → Summarize the outcome for the user. You are DONE.\n2. Dev succeeded + this is a substantial change (new feature, significant logic change) + neither QA nor Code Reviewer has run yet → Assign BOTH @CodeReviewer AND @QATester simultaneously in ONE response (parallel). Skip this step for trivial changes.\n3. Dev succeeded + trivial change (config, rename, typo, style-only) → Summarize and you are DONE. No QA needed.\n4. QA or Code Review results received → Accept ALL findings as informational. Summarize and you are DONE. NEVER delegate fixes based on QA or review results.\n5. FAILED + critically broken (won't run, crash on start) → delegate ONE targeted fix to the original developer.\n6. FAILED + permanent blocker (auth error, service down, missing dependency) → report the blocker to the user.\n7. Same error repeated → STOP and report to the user.\n\nCRITICAL RULES:\n- QA/testing findings are ALWAYS informational. NEVER delegate fixes based on QA results. Note them and finish.\n- Code review comments are ALWAYS informational. Only delegate a fix if the code literally doesn't compile or run.\n- When assigning parallel QA + Review (rule 2): write BOTH @Name: lines in one response. Do not wait for one to finish.\n- Maximum ONE fix round after a failure. After that, accept and summarize.\n- Prefer DONE over more delegation. The user can request improvements later.`,\n\n \"worker-initial\": `Your name is {{name}}, your role is {{role}}. {{personality}}\n\nCONVERGENCE RULES (follow strictly):\n- Do the MINIMUM needed to satisfy the task. Simple and working beats perfect and slow.\n- Only touch files directly required by this task. Do NOT refactor, clean up, or \"improve\" unrelated code.\n- If you are uncertain between two approaches, choose the simpler one and note it in SUMMARY.\n- Do NOT add features, error handling, or improvements that were not explicitly asked for.\n- Sub-delegate (@AgentName:) when you need a teammate's specialized expertise (e.g. frontend dev asking backend dev for an API contract, or asking QA to verify a specific behavior). Natural peer collaboration is encouraged — just keep it focused.\n\nHARD LIMITS:\n- Do NOT start any dev server, HTTP server, or file server (no npx serve, no python -m http.server, no live-server, etc.). The system handles preview automatically.\n- Do NOT install new dependencies unless the task explicitly requires it. Note any missing deps in SUMMARY instead.\n\nStart with one sentence describing your approach (e.g. \"I'll add the API route in routes.ts and wire it to the existing handler.\"). Then do the work.\n\nWhen you finish, report your result in this exact format:\nSTATUS: done | failed\nFILES_CHANGED: (list of files you created or modified, one per line)\nSUMMARY: (one sentence — what you did and why it satisfies the task)\n\n{{prompt}}`,\n\n \"worker-continue\": `{{prompt}}`,\n\n \"delegation-prefix\": `[Assigned by {{fromName}} ({{fromRole}})]\n{{prompt}}`,\n\n \"delegation-hint\": `To delegate a task to another agent, output on its own line: @AgentName: <task description>`,\n};\n\n// ---------------------------------------------------------------------------\n// PromptEngine class\n// ---------------------------------------------------------------------------\n\nexport class PromptEngine {\n private templates: Record<string, string> = { ...PROMPT_DEFAULTS };\n private promptsDir: string | undefined;\n\n constructor(promptsDir?: string) {\n this.promptsDir = promptsDir;\n }\n\n /**\n * Initialize prompt templates on startup.\n * Creates promptsDir with defaults if it doesn't exist,\n * then loads all .md files (falling back to defaults for missing ones).\n */\n init(): void {\n if (!this.promptsDir) {\n console.log(`[Prompts] No promptsDir configured, using ${Object.keys(PROMPT_DEFAULTS).length} default templates`);\n return;\n }\n\n if (!existsSync(this.promptsDir)) {\n mkdirSync(this.promptsDir, { recursive: true });\n for (const [name, content] of Object.entries(PROMPT_DEFAULTS)) {\n writeFileSync(path.join(this.promptsDir, `${name}.md`), content, \"utf-8\");\n }\n console.log(`[Prompts] Created ${this.promptsDir} with ${Object.keys(PROMPT_DEFAULTS).length} default templates`);\n }\n this.reload();\n }\n\n /**\n * Re-read all templates from disk. Missing files fall back to built-in defaults.\n */\n reload(): void {\n const merged: Record<string, string> = { ...PROMPT_DEFAULTS };\n let loaded = 0;\n let defaulted = 0;\n\n if (this.promptsDir) {\n for (const name of Object.keys(PROMPT_DEFAULTS)) {\n const filePath = path.join(this.promptsDir, `${name}.md`);\n if (existsSync(filePath)) {\n try {\n merged[name] = readFileSync(filePath, \"utf-8\");\n loaded++;\n } catch {\n defaulted++;\n }\n } else {\n defaulted++;\n }\n }\n } else {\n defaulted = Object.keys(PROMPT_DEFAULTS).length;\n }\n\n this.templates = merged;\n console.log(`[Prompts] Loaded ${loaded} templates (${defaulted} using defaults)`);\n }\n\n /**\n * Render a named template with variable substitution.\n * {{variable}} placeholders are replaced with the provided values.\n */\n render(templateName: string, vars: Record<string, string | undefined>): string {\n const template = this.templates[templateName] ?? PROMPT_DEFAULTS[templateName];\n if (!template) {\n console.warn(`[Prompts] Unknown template: ${templateName}`);\n return vars[\"prompt\"] ?? \"\";\n }\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => vars[key] ?? \"\");\n }\n}\n","export interface RetryState {\n taskId: string;\n originalPrompt: string;\n attempt: number;\n maxRetries: number;\n errors: string[];\n}\n\nexport class RetryTracker {\n private state = new Map<string, RetryState>();\n private maxRetries: number;\n private escalateToLeader: boolean;\n\n constructor(maxRetries = 2, escalateToLeader = true) {\n this.maxRetries = maxRetries;\n this.escalateToLeader = escalateToLeader;\n }\n\n /**\n * Initialize tracking for a task. Call before first attempt.\n */\n track(taskId: string, originalPrompt: string): void {\n this.state.set(taskId, {\n taskId,\n originalPrompt,\n attempt: 0,\n maxRetries: this.maxRetries,\n errors: [],\n });\n }\n\n /**\n * Check if the task has retries remaining.\n */\n shouldRetry(taskId: string): boolean {\n const s = this.state.get(taskId);\n if (!s) return false;\n return s.attempt < s.maxRetries;\n }\n\n /**\n * Record a failed attempt. Returns the updated state.\n */\n recordAttempt(taskId: string, error: string): RetryState | undefined {\n const s = this.state.get(taskId);\n if (!s) return undefined;\n s.attempt++;\n s.errors.push(error);\n return { ...s };\n }\n\n /**\n * Get the original prompt for retrying (with error context appended).\n */\n getRetryPrompt(taskId: string): string | null {\n const s = this.state.get(taskId);\n if (!s) return null;\n const lastError = s.errors[s.errors.length - 1] ?? \"unknown error\";\n return `${s.originalPrompt}\n\n[RETRY — Attempt ${s.attempt + 1}/${s.maxRetries}]\nPrevious attempt failed with:\n${lastError.slice(0, 500)}\n\nBefore retrying, follow this protocol:\n1. DIAGNOSE: Read the error carefully. Identify the root cause, not just the symptom.\n2. FIX: Address the root cause first (missing dependency, wrong path, syntax error, etc.)\n3. VERIFY: After fixing, confirm the fix works before moving on.\nDo NOT repeat the same approach that failed.`;\n }\n\n /**\n * Get escalation prompt for the team lead (when all retries exhausted).\n * Returns null if escalation is disabled or task not tracked.\n */\n getEscalation(taskId: string): { prompt: string } | null {\n if (!this.escalateToLeader) return null;\n const s = this.state.get(taskId);\n if (!s) return null;\n if (s.attempt < s.maxRetries) return null;\n\n const errorList = s.errors.map((e, i) => ` Attempt ${i + 1}: ${e.slice(0, 200)}`).join(\"\\n\");\n const sameError = s.errors.length >= 2 && s.errors.every(e => {\n const key = e.slice(0, 80).toLowerCase();\n return key === s.errors[0].slice(0, 80).toLowerCase();\n });\n\n return {\n prompt: `[ESCALATION] A task has failed after ${s.attempt} attempts and needs your decision.\n\nOriginal task: \"${s.originalPrompt.slice(0, 300)}\"\n\nFailure history:\n${errorList}\n${sameError ? \"\\n⚠️ All attempts failed with the SAME error. This is likely a PERMANENT blocker (missing credentials, API limits, service unavailable). Do NOT reassign — report to user.\\n\" : \"\"}\nOptions (choose ONE):\n1. If the error is FIXABLE (code bug, wrong path): Reassign to a DIFFERENT team member with revised instructions\n2. If the task is too large: Break into smaller pieces and delegate each part\n3. If the error is PERMANENT (auth failure, service down, insufficient balance, missing API key): Report the blocker to the user. Do NOT reassign.\n\nIMPORTANT: If the same error keeps repeating, choose option 3. Do not waste resources retrying.`,\n };\n }\n\n /**\n * Remove tracking for a completed/cancelled task.\n */\n clear(taskId: string): void {\n this.state.delete(taskId);\n }\n}\n","import { execSync } from \"child_process\";\nimport path from \"path\";\n\nconst TIMEOUT = 5000;\n\n/**\n * Check if a directory is inside a git repository.\n */\nfunction isGitRepo(cwd: string): boolean {\n try {\n execSync(\"git rev-parse --is-inside-work-tree\", { cwd, stdio: \"ignore\", timeout: TIMEOUT });\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Create a git worktree for an agent's task.\n * Returns the worktree path, or null if workspace is not a git repo.\n */\nexport function createWorktree(\n workspace: string,\n agentId: string,\n taskId: string,\n agentName: string,\n): string | null {\n if (!isGitRepo(workspace)) return null;\n\n const worktreeDir = path.join(workspace, \".worktrees\");\n const worktreeName = `${agentId}-${taskId}`;\n const worktreePath = path.join(worktreeDir, worktreeName);\n const branch = `agent/${agentName.toLowerCase().replace(/\\s+/g, \"-\")}/${taskId}`;\n\n try {\n execSync(`git worktree add \"${worktreePath}\" -b \"${branch}\"`, {\n cwd: workspace,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n return worktreePath;\n } catch (err) {\n console.error(`[Worktree] Failed to create worktree: ${(err as Error).message}`);\n return null;\n }\n}\n\nexport interface MergeResult {\n success: boolean;\n conflictFiles?: string[];\n}\n\n/**\n * Merge a worktree branch back to the current branch and clean up.\n */\nexport function mergeWorktree(\n workspace: string,\n worktreePath: string,\n branch: string,\n): MergeResult {\n try {\n execSync(`git merge --no-ff \"${branch}\"`, {\n cwd: workspace,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n // Clean up worktree and branch\n try {\n execSync(`git worktree remove \"${worktreePath}\"`, { cwd: workspace, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* already removed */ }\n try {\n execSync(`git branch -d \"${branch}\"`, { cwd: workspace, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* branch not found or not fully merged */ }\n\n return { success: true };\n } catch (err) {\n // Merge conflict — extract conflicting files\n let conflictFiles: string[] = [];\n try {\n const output = execSync(\"git diff --name-only --diff-filter=U\", {\n cwd: workspace,\n encoding: \"utf-8\",\n timeout: TIMEOUT,\n }).trim();\n conflictFiles = output ? output.split(\"\\n\") : [];\n // Abort the failed merge\n execSync(\"git merge --abort\", { cwd: workspace, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* ignore */ }\n\n return { success: false, conflictFiles };\n }\n}\n\n/**\n * Force-remove a worktree and its branch (used on task failure/cancel).\n */\nexport function removeWorktree(worktreePath: string, branch: string, workspace?: string): void {\n const cwd = workspace ?? path.dirname(path.dirname(worktreePath));\n try {\n execSync(`git worktree remove --force \"${worktreePath}\"`, { cwd, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* already removed */ }\n try {\n execSync(`git branch -D \"${branch}\"`, { cwd, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* branch not found */ }\n}\n","export { Orchestrator } from \"./orchestrator.js\";\nexport { AgentSession } from \"./agent-session.js\";\nexport { previewServer } from \"./preview-server.js\";\nexport { AgentManager } from \"./agent-manager.js\";\nexport { DelegationRouter } from \"./delegation.js\";\nexport { PromptEngine } from \"./prompt-templates.js\";\nexport { RetryTracker } from \"./retry.js\";\nexport { createWorktree, mergeWorktree, removeWorktree } from \"./worktree.js\";\n\nexport type { AIBackend, BuildArgsOpts } from \"./ai-backend.js\";\nexport type {\n AgentStatus,\n RiskLevel,\n Decision,\n TaskResultPayload,\n OrchestratorEvent,\n OrchestratorEventMap,\n OrchestratorOptions,\n CreateAgentOpts,\n CreateTeamOpts,\n RunTaskOpts,\n WorktreeOptions,\n RetryOptions,\n TaskStartedEvent,\n TaskDoneEvent,\n TaskFailedEvent,\n TaskDelegatedEvent,\n TaskRetryingEvent,\n AgentStatusEvent,\n ApprovalNeededEvent,\n LogAppendEvent,\n TeamChatEvent,\n TaskQueuedEvent,\n WorktreeCreatedEvent,\n WorktreeMergedEvent,\n AgentCreatedEvent,\n AgentFiredEvent,\n TaskResultReturnedEvent,\n} from \"./types.js\";\n\nimport { Orchestrator } from \"./orchestrator.js\";\nimport type { OrchestratorOptions } from \"./types.js\";\n\n/**\n * Factory function to create an Orchestrator instance.\n */\nexport function createOrchestrator(options: OrchestratorOptions): Orchestrator {\n return new Orchestrator(options);\n}\n","import { registerChannel, initTransports, publishEvent, destroyTransports } from \"./transport.js\";\nimport { wsChannel, setPairCode } from \"./ws-server.js\";\nimport { ablyChannel } from \"./ably-client.js\";\nimport { telegramChannel } from \"./telegram-channel.js\";\nimport { config, hasSetupRun, reloadConfig, saveConfig } from \"./config.js\";\nimport { runSetup } from \"./setup.js\";\nimport { detectBackends, getBackend, getAllBackends } from \"./backends.js\";\nimport { createOrchestrator, previewServer, type Orchestrator, type OrchestratorEvent } from \"@bit-office/orchestrator\";\nimport type { Command, GatewayEvent } from \"@arcade/shared\";\nimport { AGENT_PRESETS } from \"@arcade/shared\";\nimport { nanoid } from \"nanoid\";\nimport { execFile } from \"child_process\";\nimport { existsSync } from \"fs\";\nimport path from \"path\";\nimport os from \"os\";\n\n// Register all channels — each one self-activates if configured\nregisterChannel(wsChannel);\nregisterChannel(ablyChannel);\nregisterChannel(telegramChannel);\n\nlet orc: Orchestrator;\n\nfunction generatePairCode(): string {\n return nanoid(6).toUpperCase();\n}\n\nfunction showPairCode() {\n const code = generatePairCode();\n setPairCode(code);\n console.log(\"\");\n console.log(\"╔══════════════════════════════════╗\");\n console.log(\"║ PAIR CODE: \" + code + \" ║\");\n console.log(\"╚══════════════════════════════════╝\");\n console.log(\"\");\n console.log(`Open your phone → enter gateway address + code`);\n console.log(\"\");\n}\n\n// ---------------------------------------------------------------------------\n// Map orchestrator events → GatewayEvent (wire protocol)\n// ---------------------------------------------------------------------------\n\nfunction mapOrchestratorEvent(e: OrchestratorEvent): GatewayEvent | null {\n switch (e.type) {\n case \"task:started\":\n return { type: \"TASK_STARTED\", agentId: e.agentId, taskId: e.taskId, prompt: e.prompt };\n case \"task:done\":\n return { type: \"TASK_DONE\", agentId: e.agentId, taskId: e.taskId, result: e.result, isFinalResult: e.isFinalResult };\n case \"task:failed\":\n return { type: \"TASK_FAILED\", agentId: e.agentId, taskId: e.taskId, error: e.error };\n case \"task:delegated\":\n return { type: \"TASK_DELEGATED\", fromAgentId: e.fromAgentId, toAgentId: e.toAgentId, taskId: e.taskId, prompt: e.prompt };\n case \"agent:status\":\n return { type: \"AGENT_STATUS\", agentId: e.agentId, status: e.status };\n case \"approval:needed\":\n return { type: \"APPROVAL_NEEDED\", approvalId: e.approvalId, agentId: e.agentId, taskId: e.taskId, title: e.title, summary: e.summary, riskLevel: e.riskLevel };\n case \"log:append\":\n return { type: \"LOG_APPEND\", agentId: e.agentId, taskId: e.taskId, stream: e.stream, chunk: e.chunk };\n case \"team:chat\":\n return { type: \"TEAM_CHAT\", fromAgentId: e.fromAgentId, toAgentId: e.toAgentId, message: e.message, messageType: e.messageType, taskId: e.taskId, timestamp: e.timestamp };\n case \"task:queued\":\n return { type: \"TASK_QUEUED\", agentId: e.agentId, taskId: e.taskId, prompt: e.prompt, position: e.position };\n case \"agent:created\":\n return { type: \"AGENT_CREATED\", agentId: e.agentId, name: e.name, role: e.role, palette: e.palette, personality: e.personality, backend: e.backend, isTeamLead: e.isTeamLead, teamId: e.teamId };\n case \"agent:fired\":\n return { type: \"AGENT_FIRED\", agentId: e.agentId };\n case \"task:result-returned\":\n return { type: \"TASK_RESULT_RETURNED\", fromAgentId: e.fromAgentId, toAgentId: e.toAgentId, taskId: e.taskId, summary: e.summary, success: e.success };\n // New events (worktree, retry) — log only, no wire protocol equivalent yet\n case \"task:retrying\":\n console.log(`[Retry] Agent ${e.agentId} retrying task ${e.taskId} (attempt ${e.attempt}/${e.maxRetries})`);\n return null;\n case \"worktree:created\":\n console.log(`[Worktree] Created ${e.worktreePath} for agent ${e.agentId}`);\n return null;\n case \"worktree:merged\":\n console.log(`[Worktree] Merged branch ${e.branch} for agent ${e.agentId} (success=${e.success})`);\n return null;\n default:\n return null;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Command handler — maps incoming commands → orchestrator method calls\n// ---------------------------------------------------------------------------\n\nfunction handleCommand(parsed: Command) {\n console.log(\"[Gateway] Received command:\", parsed.type, JSON.stringify(parsed));\n\n switch (parsed.type) {\n case \"CREATE_AGENT\": {\n const backendId = parsed.backend ?? config.defaultBackend;\n console.log(`[Gateway] Creating agent: ${parsed.agentId} (${parsed.name} - ${parsed.role}) backend=${backendId}`);\n orc.createAgent({\n agentId: parsed.agentId,\n name: parsed.name,\n role: parsed.role,\n personality: parsed.personality,\n backend: backendId,\n palette: parsed.palette,\n });\n break;\n }\n case \"FIRE_AGENT\": {\n console.log(`[Gateway] Firing agent: ${parsed.agentId}`);\n orc.removeAgent(parsed.agentId);\n break;\n }\n case \"RUN_TASK\": {\n let agent = orc.getAgent(parsed.agentId);\n if (!agent && parsed.name) {\n const backendId = parsed.backend ?? config.defaultBackend;\n console.log(`[Gateway] Auto-creating agent for RUN_TASK: ${parsed.agentId} backend=${backendId}`);\n orc.createAgent({\n agentId: parsed.agentId,\n name: parsed.name,\n role: parsed.role ?? \"\",\n personality: parsed.personality,\n backend: backendId,\n resumeHistory: true,\n });\n agent = orc.getAgent(parsed.agentId);\n }\n if (agent) {\n console.log(`[Gateway] RUN_TASK: agent=${parsed.agentId}, isLead=${orc.isTeamLead(parsed.agentId)}, hasTeam=${orc.getAllAgents().length > 1}`);\n orc.runTask(parsed.agentId, parsed.taskId, parsed.prompt, { repoPath: parsed.repoPath });\n } else {\n publishEvent({\n type: \"TASK_FAILED\",\n agentId: parsed.agentId,\n taskId: parsed.taskId,\n error: \"Agent not found. Create it first.\",\n });\n }\n break;\n }\n case \"APPROVAL_DECISION\": {\n orc.resolveApproval(parsed.approvalId, parsed.decision);\n break;\n }\n case \"CANCEL_TASK\": {\n orc.cancelTask(parsed.agentId);\n break;\n }\n case \"SERVE_PREVIEW\": {\n const filePath = parsed.filePath;\n console.log(`[Gateway] SERVE_PREVIEW: ${filePath}`);\n previewServer.serve(filePath);\n break;\n }\n case \"OPEN_FILE\": {\n const raw = parsed.path;\n const resolved = path.resolve(config.defaultWorkspace, raw);\n const normalized = path.normalize(resolved);\n\n if (!normalized.startsWith(config.defaultWorkspace + path.sep) && normalized !== config.defaultWorkspace) {\n console.error(`[Gateway] Blocked OPEN_FILE: path \"${raw}\" resolves outside workspace`);\n break;\n }\n if (!existsSync(normalized)) {\n console.error(`[Gateway] OPEN_FILE: path does not exist: ${normalized}`);\n break;\n }\n\n console.log(`[Gateway] Opening file: ${normalized}`);\n execFile(\"open\", [normalized], (err) => {\n if (err) console.error(`[Gateway] Failed to open file: ${err.message}`);\n });\n break;\n }\n case \"CREATE_TEAM\": {\n const { leadPresetIndex, memberPresetIndices, backends } = parsed;\n const allIndices = [leadPresetIndex, ...memberPresetIndices.filter(i => i !== leadPresetIndex)];\n console.log(`[Gateway] Creating team: lead=${leadPresetIndex}, members=${memberPresetIndices.join(\",\")}`);\n let leadAgentId: string | null = null;\n const teamId = `team-${nanoid(6)}`;\n\n for (const idx of allIndices) {\n const preset = AGENT_PRESETS[idx];\n if (!preset) continue;\n const agentId = `agent-${nanoid(6)}`;\n const backendId = backends?.[String(idx)] ?? config.defaultBackend;\n\n if (idx === leadPresetIndex) {\n leadAgentId = agentId;\n orc.setTeamLead(agentId);\n }\n\n orc.createAgent({\n agentId,\n name: preset.name,\n role: preset.role,\n personality: preset.personality,\n backend: backendId,\n palette: preset.palette,\n teamId,\n });\n }\n\n if (leadAgentId) {\n const leadPreset = AGENT_PRESETS[leadPresetIndex];\n publishEvent({\n type: \"TEAM_CHAT\",\n fromAgentId: leadAgentId,\n message: `Team created! ${leadPreset?.name ?? \"Lead\"} is the Team Lead with ${memberPresetIndices.length} team members.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n }\n break;\n }\n case \"STOP_TEAM\": {\n console.log(\"[Gateway] Stopping team work\");\n orc.stopTeam();\n break;\n }\n case \"FIRE_TEAM\": {\n console.log(\"[Gateway] Firing entire team\");\n orc.fireTeam();\n break;\n }\n case \"PING\": {\n console.log(\"[Gateway] Received PING, broadcasting agent statuses\");\n for (const agent of orc.getAllAgents()) {\n publishEvent({\n type: \"AGENT_CREATED\",\n agentId: agent.agentId,\n name: agent.name,\n role: agent.role,\n palette: agent.palette,\n personality: undefined,\n backend: agent.backend,\n isTeamLead: agent.isTeamLead,\n teamId: agent.teamId,\n });\n publishEvent({\n type: \"AGENT_STATUS\",\n agentId: agent.agentId,\n status: agent.status,\n });\n }\n break;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Main\n// ---------------------------------------------------------------------------\n\nasync function main() {\n // First run or --setup flag: interactive setup wizard\n if (!hasSetupRun() || process.argv.includes(\"--setup\")) {\n await runSetup();\n reloadConfig();\n }\n\n // Auto-detect AI backends if not already detected\n if (config.detectedBackends.length === 0) {\n const detected = detectBackends();\n if (detected.length > 0) {\n config.detectedBackends = detected;\n if (!config.defaultBackend || !detected.includes(config.defaultBackend)) {\n config.defaultBackend = detected[0];\n }\n saveConfig({ detectedBackends: detected, defaultBackend: config.defaultBackend });\n }\n }\n\n // Register all known backends so any can be selected from the UI.\n // Detection only determines the default; uninstalled ones will fail at spawn time with a clear error.\n const backendsToUse = getAllBackends();\n\n orc = createOrchestrator({\n workspace: config.defaultWorkspace,\n backends: backendsToUse,\n defaultBackend: config.defaultBackend,\n worktree: false, // disabled by default for now\n retry: { maxRetries: 2, escalateToLeader: true },\n promptsDir: path.join(os.homedir(), \".bit-office\", \"prompts\"),\n sandboxMode: config.sandboxMode,\n });\n\n // Forward orchestrator events to transport channels\n const forwardEvent = (event: OrchestratorEvent) => {\n const mapped = mapOrchestratorEvent(event);\n if (mapped) publishEvent(mapped);\n };\n\n orc.on(\"task:started\", forwardEvent);\n orc.on(\"task:done\", forwardEvent);\n orc.on(\"task:failed\", forwardEvent);\n orc.on(\"task:delegated\", forwardEvent);\n orc.on(\"task:retrying\", forwardEvent);\n orc.on(\"agent:status\", forwardEvent);\n orc.on(\"approval:needed\", forwardEvent);\n orc.on(\"log:append\", forwardEvent);\n orc.on(\"team:chat\", forwardEvent);\n orc.on(\"task:queued\", forwardEvent);\n orc.on(\"worktree:created\", forwardEvent);\n orc.on(\"worktree:merged\", forwardEvent);\n orc.on(\"agent:created\", forwardEvent);\n orc.on(\"agent:fired\", forwardEvent);\n orc.on(\"task:result-returned\", forwardEvent);\n\n const backendNames = config.detectedBackends.map((id) => getBackend(id)?.name ?? id).join(\", \");\n console.log(`[Gateway] AI backends: ${backendNames || \"none detected\"} (default: ${getBackend(config.defaultBackend)?.name ?? config.defaultBackend})`);\n console.log(`[Gateway] Permissions: ${config.sandboxMode === \"full\" ? \"Full access\" : \"Sandbox\"}`);\n console.log(`[Gateway] Starting for machine: ${config.machineId}`);\n\n // Generate and display pair code\n showPairCode();\n\n // Start transports (WS + optional Ably)\n await initTransports(handleCommand);\n\n console.log(\"[Gateway] Listening for commands...\");\n console.log(\"[Gateway] Press 'p' + Enter to generate a new pair code\");\n\n // Auto-open browser only in production mode (pnpm start, not dev)\n if (process.env.NODE_ENV !== \"development\" && existsSync(config.webDir)) {\n const url = `http://localhost:${config.wsPort}`;\n console.log(`[Gateway] Opening ${url}`);\n execFile(\"open\", [url]);\n }\n\n // Listen for stdin commands\n if (process.stdin.isTTY) {\n process.stdin.setEncoding(\"utf-8\");\n process.stdin.on(\"data\", (data: string) => {\n const cmd = data.trim().toLowerCase();\n if (cmd === \"p\") {\n showPairCode();\n }\n });\n }\n}\n\nfunction cleanup() {\n console.log(\"[Gateway] Shutting down...\");\n previewServer.stop();\n orc?.destroy();\n destroyTransports();\n process.exit(0);\n}\nprocess.on(\"SIGINT\", cleanup);\nprocess.on(\"SIGTERM\", cleanup);\nprocess.on(\"SIGHUP\", cleanup);\n\nmain().catch(console.error);\n"],"mappings":"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","names":["util","objectUtil","path","errorUtil","path","errorMap","ctx","result","issues","elements","processed","result","r","ZodFirstPartyTypeKind","resolve","Ably","resolve","nanoid","spawn","execSync","path","existsSync","readFileSync","writeFileSync","mkdirSync","homedir","nanoid","path","homedir","existsSync","readFileSync","mkdirSync","writeFileSync","execSync","spawn","pending","resolve","nanoid","resultLines","readFileSync","writeFileSync","mkdirSync","existsSync","path","execSync","path","nanoid","session","nanoid","existsSync","path","backends"]}
|
|
1
|
+
{"version":3,"sources":["../src/transport.ts","../src/ws-server.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js","../../../packages/shared/src/types.ts","../../../packages/shared/src/commands.ts","../../../packages/shared/src/events.ts","../../../packages/shared/src/presets.ts","../src/config.ts","../src/ably-client.ts","../src/telegram-channel.ts","../src/setup.ts","../src/backends.ts","../../../packages/orchestrator/src/orchestrator.ts","../../../packages/orchestrator/src/agent-session.ts","../../../packages/orchestrator/src/preview-server.ts","../../../packages/orchestrator/src/agent-manager.ts","../../../packages/orchestrator/src/delegation.ts","../../../packages/orchestrator/src/prompt-templates.ts","../../../packages/orchestrator/src/retry.ts","../../../packages/orchestrator/src/worktree.ts","../../../packages/orchestrator/src/index.ts","../src/index.ts"],"sourcesContent":["import type { GatewayEvent, Command } from \"@office/shared\";\n\n/**\n * Channel interface — every message channel implements this.\n * \"activate if configured, skip if not\"\n */\nexport interface Channel {\n /** Channel name for logging */\n readonly name: string;\n /** Initialize and connect. Return false to skip (e.g. missing config). */\n init(commandHandler: (cmd: Command) => void): Promise<boolean>;\n /** Broadcast an event to this channel's clients */\n broadcast(event: GatewayEvent): void;\n /** Cleanup on shutdown */\n destroy?(): void;\n}\n\nconst channels: Channel[] = [];\n\n/** Register a channel. Call before initTransports(). */\nexport function registerChannel(channel: Channel) {\n channels.push(channel);\n}\n\n/** Initialize all registered channels. Skips those that return false from init(). */\nexport async function initTransports(commandHandler: (cmd: Command) => void) {\n const active: string[] = [];\n const skipped: string[] = [];\n\n for (const ch of channels) {\n const ok = await ch.init(commandHandler);\n if (ok) {\n active.push(ch.name);\n } else {\n skipped.push(ch.name);\n }\n }\n\n // Remove channels that didn't activate\n for (let i = channels.length - 1; i >= 0; i--) {\n if (skipped.includes(channels[i].name)) {\n channels.splice(i, 1);\n }\n }\n\n console.log(`[Transport] Active channels: ${active.join(\", \") || \"none\"}`);\n if (skipped.length) {\n console.log(`[Transport] Skipped channels: ${skipped.join(\", \")}`);\n }\n}\n\n/** Broadcast event to all active channels */\nexport function publishEvent(event: GatewayEvent) {\n for (const ch of channels) {\n ch.broadcast(event);\n }\n}\n\n/** Destroy all channels on shutdown */\nexport function destroyTransports() {\n for (const ch of channels) {\n ch.destroy?.();\n }\n}\n","import { createServer, type IncomingMessage, type ServerResponse } from \"http\";\nimport { WebSocketServer, WebSocket } from \"ws\";\nimport { CommandSchema } from \"@office/shared\";\nimport type { GatewayEvent, Command } from \"@office/shared\";\nimport { config } from \"./config.js\";\nimport { networkInterfaces } from \"os\";\nimport { readFile, stat } from \"fs/promises\";\nimport { join, extname } from \"path\";\nimport * as Ably from \"ably\";\nimport type { Channel } from \"./transport.js\";\n\nlet wss: WebSocketServer | null = null;\nconst clients = new Set<WebSocket>();\nlet pairCode: string | null = null;\nlet onCommand: ((cmd: Command) => void) | null = null;\n\nconst MIME_TYPES: Record<string, string> = {\n \".html\": \"text/html\",\n \".js\": \"application/javascript\",\n \".css\": \"text/css\",\n \".json\": \"application/json\",\n \".png\": \"image/png\",\n \".svg\": \"image/svg+xml\",\n \".ico\": \"image/x-icon\",\n \".woff2\": \"font/woff2\",\n \".woff\": \"font/woff\",\n \".ttf\": \"font/ttf\",\n \".webp\": \"image/webp\",\n \".jpeg\": \"image/jpeg\",\n \".jpg\": \"image/jpeg\",\n \".txt\": \"text/plain\",\n \".map\": \"application/json\",\n \".webmanifest\": \"application/manifest+json\",\n};\n\nexport function setPairCode(code: string) {\n pairCode = code;\n}\n\nexport const wsChannel: Channel = {\n name: \"WebSocket\",\n\n async init(commandHandler: (cmd: Command) => void): Promise<boolean> {\n onCommand = commandHandler;\n\n return new Promise((resolve) => {\n const requestHandler = async (req: IncomingMessage, res: ServerResponse) => {\n // CORS headers\n res.setHeader(\"Access-Control-Allow-Origin\", \"*\");\n res.setHeader(\"Access-Control-Allow-Methods\", \"GET, POST, OPTIONS\");\n res.setHeader(\"Access-Control-Allow-Headers\", \"Content-Type\");\n\n if (req.method === \"OPTIONS\") {\n res.writeHead(204);\n res.end();\n return;\n }\n\n // Quick connect — skip pair code for local dev\n if (req.method === \"GET\" && req.url === \"/connect\") {\n if (config.ablyApiKey) {\n res.writeHead(403, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Quick connect disabled\" }));\n return;\n }\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({\n machineId: config.machineId,\n wsUrl: `ws://localhost:${config.wsPort}`,\n }));\n return;\n }\n\n if (req.method === \"POST\" && req.url === \"/pair/validate\") {\n let body = \"\";\n req.on(\"data\", (chunk) => (body += chunk));\n req.on(\"end\", () => {\n try {\n const { code } = JSON.parse(body);\n if (!pairCode || code !== pairCode) {\n res.writeHead(401, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Invalid pair code\" }));\n return;\n }\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({\n machineId: config.machineId,\n wsUrl: `ws://localhost:${config.wsPort}`,\n hasAbly: !!config.ablyApiKey,\n }));\n } catch {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Bad request\" }));\n }\n });\n return;\n }\n\n // Ably token endpoint\n if (req.method === \"POST\" && req.url === \"/ably/token\") {\n if (!config.ablyApiKey) {\n res.writeHead(503, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Ably not configured\" }));\n return;\n }\n\n let body = \"\";\n req.on(\"data\", (chunk) => (body += chunk));\n req.on(\"end\", async () => {\n try {\n let targetMachineId = config.machineId;\n try {\n const parsed = JSON.parse(body);\n if (parsed.machineId) targetMachineId = parsed.machineId;\n } catch {\n // no body, use config default\n }\n\n if (!targetMachineId) {\n res.writeHead(400, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"No machine ID\" }));\n return;\n }\n\n const rest = new Ably.Rest({ key: config.ablyApiKey });\n const tokenRequest = await rest.auth.createTokenRequest({\n clientId: `device:${Date.now()}`,\n ttl: 5 * 60 * 1000,\n capability: {\n [`machine:${targetMachineId}:commands`]: [\"publish\"],\n [`machine:${targetMachineId}:events`]: [\"subscribe\"],\n },\n });\n\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(tokenRequest));\n } catch (err) {\n console.error(\"[WS] Ably token error:\", err);\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"Token creation failed\" }));\n }\n });\n return;\n }\n\n // --- Static file serving (fallback, production only) ---\n if (process.env.NODE_ENV === \"development\") {\n res.writeHead(404);\n res.end(\"Not Found (dev mode — use Next.js dev server)\");\n return;\n }\n await serveStatic(req, res);\n };\n\n const maxRetries = 10;\n let port = config.wsPort;\n\n const tryListen = () => {\n const httpServer = createServer(requestHandler);\n httpServer.listen(port, () => {\n config.wsPort = port;\n\n // Attach WebSocket server only after successful listen\n wss = new WebSocketServer({ server: httpServer });\n wss.on(\"connection\", (ws) => {\n clients.add(ws);\n console.log(`[WS] Client connected (total: ${clients.size})`);\n\n ws.on(\"message\", (data) => {\n try {\n const parsed = CommandSchema.parse(JSON.parse(data.toString()));\n onCommand?.(parsed);\n } catch (err) {\n console.error(\"[WS] Invalid command:\", err);\n }\n });\n\n ws.on(\"close\", () => {\n clients.delete(ws);\n console.log(`[WS] Client disconnected (total: ${clients.size})`);\n });\n });\n\n console.log(`[WS] Server listening on port ${port}`);\n printLanAddresses();\n resolve(true);\n });\n\n httpServer.once(\"error\", (err: NodeJS.ErrnoException) => {\n if (err.code === \"EADDRINUSE\" && port - config.wsPort < maxRetries) {\n const oldPort = port;\n port++;\n console.log(`[WS] Port ${oldPort} in use, trying ${port}...`);\n tryListen();\n } else {\n console.error(`[WS] Failed to start server:`, err.message);\n resolve(false);\n }\n });\n };\n\n tryListen();\n });\n },\n\n broadcast(event: GatewayEvent) {\n const data = JSON.stringify(event);\n for (const ws of clients) {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(data);\n }\n }\n },\n\n destroy() {\n for (const ws of clients) {\n ws.close();\n }\n clients.clear();\n wss?.close();\n wss = null;\n },\n};\n\nasync function serveStatic(req: IncomingMessage, res: ServerResponse) {\n const url = decodeURIComponent(req.url?.split(\"?\")[0] ?? \"/\");\n\n const routeMap: Record<string, string> = {\n \"/\": \"/index.html\",\n \"/pair\": \"/pair.html\",\n \"/office\": \"/office.html\",\n };\n\n let filePath: string;\n if (routeMap[url]) {\n filePath = join(config.webDir, routeMap[url]);\n } else {\n filePath = join(config.webDir, url);\n }\n\n try {\n const stats = await stat(filePath);\n if (stats.isDirectory()) {\n filePath = join(filePath, \"index.html\");\n }\n const content = await readFile(filePath);\n const ext = extname(filePath);\n const mime = MIME_TYPES[ext] || \"application/octet-stream\";\n res.writeHead(200, { \"Content-Type\": mime });\n res.end(content);\n } catch {\n try {\n const htmlPath = filePath + \".html\";\n const content = await readFile(htmlPath);\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(content);\n } catch {\n res.writeHead(404, { \"Content-Type\": \"text/plain\" });\n res.end(\"Not Found\");\n }\n }\n}\n\nfunction printLanAddresses() {\n const nets = networkInterfaces();\n for (const name of Object.keys(nets)) {\n for (const net of nets[name] ?? []) {\n if (net.family === \"IPv4\" && !net.internal) {\n console.log(`[WS] LAN: http://${net.address}:${config.wsPort}`);\n }\n }\n }\n}\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import { z } from \"zod\";\n\nexport const AgentStatusEnum = z.enum([\n \"idle\", \"working\", \"waiting_approval\", \"done\", \"error\",\n]);\nexport type AgentStatus = z.infer<typeof AgentStatusEnum>;\n\nexport const RiskLevelEnum = z.enum([\"low\", \"med\", \"high\"]);\nexport type RiskLevel = z.infer<typeof RiskLevelEnum>;\n\nexport const DecisionEnum = z.enum([\"yes\", \"no\"]);\nexport type Decision = z.infer<typeof DecisionEnum>;\n","import { z } from \"zod\";\nimport { DecisionEnum } from \"./types\";\n\nexport const RunTaskCommand = z.object({\n type: z.literal(\"RUN_TASK\"),\n agentId: z.string(),\n taskId: z.string(),\n prompt: z.string(),\n repoPath: z.string().optional(),\n name: z.string().optional(),\n role: z.string().optional(),\n personality: z.string().optional(),\n backend: z.string().optional(),\n});\n\nexport const ApprovalDecisionCommand = z.object({\n type: z.literal(\"APPROVAL_DECISION\"),\n approvalId: z.string(),\n decision: DecisionEnum,\n});\n\nexport const CancelTaskCommand = z.object({\n type: z.literal(\"CANCEL_TASK\"),\n agentId: z.string(),\n taskId: z.string(),\n});\n\nexport const PingCommand = z.object({\n type: z.literal(\"PING\"),\n});\n\nexport const CreateAgentCommand = z.object({\n type: z.literal(\"CREATE_AGENT\"),\n agentId: z.string(),\n name: z.string(),\n role: z.string(),\n palette: z.number().optional(),\n personality: z.string().optional(),\n backend: z.string().optional(),\n});\n\nexport const FireAgentCommand = z.object({\n type: z.literal(\"FIRE_AGENT\"),\n agentId: z.string(),\n});\n\nexport const OpenFileCommand = z.object({\n type: z.literal(\"OPEN_FILE\"),\n path: z.string(),\n});\n\nexport const CreateTeamCommand = z.object({\n type: z.literal(\"CREATE_TEAM\"),\n leadPresetIndex: z.number(),\n memberPresetIndices: z.array(z.number()),\n backends: z.record(z.string(), z.string()).optional(),\n});\n\nexport const ServePreviewCommand = z.object({\n type: z.literal(\"SERVE_PREVIEW\"),\n filePath: z.string(),\n});\n\nexport const StopTeamCommand = z.object({\n type: z.literal(\"STOP_TEAM\"),\n});\n\nexport const FireTeamCommand = z.object({\n type: z.literal(\"FIRE_TEAM\"),\n});\n\nexport const CommandSchema = z.discriminatedUnion(\"type\", [\n RunTaskCommand,\n ApprovalDecisionCommand,\n CancelTaskCommand,\n PingCommand,\n CreateAgentCommand,\n FireAgentCommand,\n OpenFileCommand,\n CreateTeamCommand,\n ServePreviewCommand,\n StopTeamCommand,\n FireTeamCommand,\n]);\n\nexport type RunTaskCommand = z.infer<typeof RunTaskCommand>;\nexport type ApprovalDecisionCommand = z.infer<typeof ApprovalDecisionCommand>;\nexport type CancelTaskCommand = z.infer<typeof CancelTaskCommand>;\nexport type PingCommand = z.infer<typeof PingCommand>;\nexport type CreateAgentCommand = z.infer<typeof CreateAgentCommand>;\nexport type FireAgentCommand = z.infer<typeof FireAgentCommand>;\nexport type OpenFileCommand = z.infer<typeof OpenFileCommand>;\nexport type CreateTeamCommand = z.infer<typeof CreateTeamCommand>;\nexport type ServePreviewCommand = z.infer<typeof ServePreviewCommand>;\nexport type StopTeamCommand = z.infer<typeof StopTeamCommand>;\nexport type FireTeamCommand = z.infer<typeof FireTeamCommand>;\nexport type Command = z.infer<typeof CommandSchema>;\n","import { z } from \"zod\";\nimport { AgentStatusEnum, RiskLevelEnum } from \"./types\";\n\nexport const AgentStatusEvent = z.object({\n type: z.literal(\"AGENT_STATUS\"),\n agentId: z.string(),\n status: AgentStatusEnum,\n details: z.string().optional(),\n});\n\nexport const TaskStartedEvent = z.object({\n type: z.literal(\"TASK_STARTED\"),\n agentId: z.string(),\n taskId: z.string(),\n prompt: z.string(),\n});\n\nexport const LogAppendEvent = z.object({\n type: z.literal(\"LOG_APPEND\"),\n agentId: z.string(),\n taskId: z.string(),\n stream: z.enum([\"stdout\", \"stderr\"]),\n chunk: z.string(),\n});\n\nexport const ApprovalNeededEvent = z.object({\n type: z.literal(\"APPROVAL_NEEDED\"),\n approvalId: z.string(),\n agentId: z.string(),\n taskId: z.string(),\n title: z.string(),\n summary: z.string(),\n riskLevel: RiskLevelEnum,\n});\n\nexport const TaskResultPayload = z.object({\n summary: z.string(),\n fullOutput: z.string().optional(),\n changedFiles: z.array(z.string()),\n diffStat: z.string(),\n testResult: z.enum([\"passed\", \"failed\", \"unknown\"]),\n nextSuggestion: z.string().optional(),\n previewUrl: z.string().optional(),\n previewPath: z.string().optional(),\n});\n\nexport const TaskDoneEvent = z.object({\n type: z.literal(\"TASK_DONE\"),\n agentId: z.string(),\n taskId: z.string(),\n result: TaskResultPayload,\n isFinalResult: z.boolean().optional(),\n});\n\nexport const TaskFailedEvent = z.object({\n type: z.literal(\"TASK_FAILED\"),\n agentId: z.string(),\n taskId: z.string(),\n error: z.string(),\n});\n\nexport const TaskDelegatedEvent = z.object({\n type: z.literal(\"TASK_DELEGATED\"),\n fromAgentId: z.string(),\n toAgentId: z.string(),\n taskId: z.string(),\n prompt: z.string(),\n});\n\nexport const AgentCreatedEvent = z.object({\n type: z.literal(\"AGENT_CREATED\"),\n agentId: z.string(),\n name: z.string(),\n role: z.string(),\n palette: z.number().optional(),\n personality: z.string().optional(),\n backend: z.string().optional(),\n isTeamLead: z.boolean().optional(),\n teamId: z.string().optional(),\n});\n\nexport const AgentFiredEvent = z.object({\n type: z.literal(\"AGENT_FIRED\"),\n agentId: z.string(),\n});\n\nexport const TaskResultReturnedEvent = z.object({\n type: z.literal(\"TASK_RESULT_RETURNED\"),\n fromAgentId: z.string(),\n toAgentId: z.string(),\n taskId: z.string(),\n summary: z.string(),\n success: z.boolean(),\n});\n\nexport const TeamChatEvent = z.object({\n type: z.literal(\"TEAM_CHAT\"),\n fromAgentId: z.string(),\n toAgentId: z.string().optional(),\n message: z.string(),\n messageType: z.enum([\"delegation\", \"result\", \"status\"]),\n taskId: z.string().optional(),\n timestamp: z.number(),\n});\n\nexport const TaskQueuedEvent = z.object({\n type: z.literal(\"TASK_QUEUED\"),\n agentId: z.string(),\n taskId: z.string(),\n prompt: z.string(),\n position: z.number(),\n});\n\nexport const GatewayEventSchema = z.discriminatedUnion(\"type\", [\n AgentStatusEvent,\n TaskStartedEvent,\n LogAppendEvent,\n ApprovalNeededEvent,\n TaskDoneEvent,\n TaskFailedEvent,\n TaskDelegatedEvent,\n AgentCreatedEvent,\n AgentFiredEvent,\n TaskResultReturnedEvent,\n TeamChatEvent,\n TaskQueuedEvent,\n]);\n\nexport type AgentStatusEvent = z.infer<typeof AgentStatusEvent>;\nexport type TaskStartedEvent = z.infer<typeof TaskStartedEvent>;\nexport type LogAppendEvent = z.infer<typeof LogAppendEvent>;\nexport type ApprovalNeededEvent = z.infer<typeof ApprovalNeededEvent>;\nexport type TaskResultPayload = z.infer<typeof TaskResultPayload>;\nexport type TaskDoneEvent = z.infer<typeof TaskDoneEvent>;\nexport type TaskFailedEvent = z.infer<typeof TaskFailedEvent>;\nexport type TaskDelegatedEvent = z.infer<typeof TaskDelegatedEvent>;\nexport type AgentCreatedEvent = z.infer<typeof AgentCreatedEvent>;\nexport type AgentFiredEvent = z.infer<typeof AgentFiredEvent>;\nexport type TaskResultReturnedEvent = z.infer<typeof TaskResultReturnedEvent>;\nexport type TeamChatEvent = z.infer<typeof TeamChatEvent>;\nexport type TaskQueuedEvent = z.infer<typeof TaskQueuedEvent>;\nexport type GatewayEvent = z.infer<typeof GatewayEventSchema>;\n","export interface AgentPreset {\n palette: number;\n name: string;\n role: string;\n description: string;\n personality: string;\n}\n\n/** 6 predefined agents: 1/3/6 male, 2/4/5 female */\nexport const AGENT_PRESETS: AgentPreset[] = [\n { palette: 0, name: \"Alex\", role: \"Frontend Dev\", description: \"UI components, React/Next.js/CSS\", personality: \"You speak in a friendly, casual, encouraging, and natural tone.\" },\n { palette: 1, name: \"Mia\", role: \"Backend Dev\", description: \"APIs, database, server logic\", personality: \"You speak formally, professionally, in an organized and concise manner.\" },\n { palette: 2, name: \"Leo\", role: \"Fullstack Dev\", description: \"End-to-end, frontend + backend\", personality: \"You are aggressive, action-first, always pursuing speed and efficiency.\" },\n { palette: 3, name: \"Sophie\", role: \"Code Reviewer\", description: \"Review PRs, find bugs, quality\", personality: \"You teach patiently, explain the reasoning, and guide like a mentor.\" },\n { palette: 4, name: \"Yuki\", role: \"QA / Tester\", description: \"Quick smoke test, verify core works\", personality: \"You are extremely concise, no fluff, straight to the result. RULES: Only verify core functionality works (max 3-5 checks). Report PASS/FAIL per check with one line of evidence. Do NOT write unit tests or test files unless explicitly asked. Do NOT list improvements, suggestions, or nice-to-haves. Do NOT test edge cases. FORBIDDEN: Do NOT start any HTTP server. Do NOT use agent-browser or any browser automation tool. Do NOT install or run npx packages for testing. Only use file reading, static analysis, and simple CLI commands (like node --check) to verify code. End your report with exactly one line: VERDICT: PASS or VERDICT: FAIL. A FAIL means the feature doesn't start or crashes, not that something could be better.\" },\n { palette: 5, name: \"Marcus\", role: \"Architect\", description: \"System design, refactoring\", personality: \"You speak formally, professionally, in an organized and concise manner.\" },\n];\n","import \"dotenv/config\";\nimport { resolve, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { randomBytes } from \"crypto\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst CONFIG_DIR = resolve(homedir(), \".bit-office\");\nconst CONFIG_FILE = resolve(CONFIG_DIR, \"config.json\");\n\ninterface SavedConfig {\n ablyApiKey?: string;\n telegramBotTokens?: (string | null)[];\n detectedBackends?: string[];\n defaultBackend?: string;\n sandboxMode?: \"full\" | \"safe\";\n}\n\nfunction ensureConfigDir() {\n if (!existsSync(CONFIG_DIR)) {\n mkdirSync(CONFIG_DIR, { recursive: true });\n }\n}\n\nfunction loadSavedConfig(): SavedConfig {\n if (!existsSync(CONFIG_FILE)) return {};\n try {\n return JSON.parse(readFileSync(CONFIG_FILE, \"utf-8\"));\n } catch {\n return {};\n }\n}\n\nexport function saveConfig(cfg: SavedConfig) {\n ensureConfigDir();\n writeFileSync(CONFIG_FILE, JSON.stringify(cfg, null, 2), \"utf-8\");\n}\n\nexport function hasSetupRun(): boolean {\n return existsSync(CONFIG_FILE);\n}\n\nfunction getOrCreateMachineId(): string {\n ensureConfigDir();\n const idFile = resolve(CONFIG_DIR, \"machine-id\");\n\n if (existsSync(idFile)) {\n return readFileSync(idFile, \"utf-8\").trim();\n }\n\n const id = `mac-${randomBytes(4).toString(\"hex\")}`;\n writeFileSync(idFile, id, \"utf-8\");\n console.log(`[Config] Generated machine ID: ${id}`);\n return id;\n}\n\nfunction resolveWebDir(): string {\n if (process.env.WEB_DIR) return process.env.WEB_DIR;\n // Bundled mode: dist/web/out (next to dist/index.js)\n const bundled = resolve(__dirname, \"web/out\");\n if (existsSync(bundled)) return bundled;\n // Dev mode: apps/web/out (relative to apps/gateway/src/)\n return resolve(__dirname, \"../../web/out\");\n}\n\nfunction buildConfig() {\n const saved = loadSavedConfig();\n return {\n machineId: getOrCreateMachineId(),\n defaultWorkspace: process.env.WORKSPACE || process.cwd(),\n wsPort: 9090,\n ablyApiKey: process.env.ABLY_API_KEY || saved.ablyApiKey || undefined,\n webDir: resolveWebDir(),\n telegramBotTokens: (\n process.env.TELEGRAM_BOT_TOKENS\n ? process.env.TELEGRAM_BOT_TOKENS.split(\",\").map((t) => t.trim() || undefined)\n : (saved.telegramBotTokens ?? []).map((t) => t || undefined)\n ) as (string | undefined)[],\n detectedBackends: saved.detectedBackends ?? [],\n defaultBackend: saved.defaultBackend ?? \"claude\",\n sandboxMode: (saved.sandboxMode ?? \"full\") as \"full\" | \"safe\",\n };\n}\n\nexport const config = buildConfig();\n\n/** Reload config from saved file (after setup wizard) */\nexport function reloadConfig() {\n const fresh = buildConfig();\n Object.assign(config, fresh);\n}\n","import * as Ably from \"ably\";\nimport { config } from \"./config.js\";\nimport { CommandSchema } from \"@office/shared\";\nimport type { GatewayEvent, Command } from \"@office/shared\";\nimport type { Channel } from \"./transport.js\";\n\nlet client: Ably.Realtime | null = null;\nlet eventsChannel: Ably.RealtimeChannel | null = null;\n\nexport const ablyChannel: Channel = {\n name: \"Ably\",\n\n async init(commandHandler: (cmd: Command) => void): Promise<boolean> {\n if (!config.ablyApiKey) return false;\n\n client = new Ably.Realtime({ key: config.ablyApiKey });\n await client.connection.once(\"connected\");\n console.log(\"[Ably] Connected\");\n\n eventsChannel = client.channels.get(`machine:${config.machineId}:events`);\n const commandsChannel = client.channels.get(`machine:${config.machineId}:commands`);\n\n await commandsChannel.subscribe((msg: Ably.Message) => {\n try {\n const parsed = CommandSchema.parse(msg.data);\n commandHandler(parsed);\n } catch (err) {\n console.error(\"[Ably] Invalid command:\", err);\n }\n });\n\n return true;\n },\n\n broadcast(event: GatewayEvent) {\n if (!eventsChannel) return;\n eventsChannel.publish(event.type, event);\n },\n\n destroy() {\n client?.close();\n client = null;\n eventsChannel = null;\n },\n};\n","import TelegramBot from \"node-telegram-bot-api\";\nimport { config } from \"./config.js\";\nimport { nanoid } from \"nanoid\";\nimport type { GatewayEvent, Command } from \"@office/shared\";\nimport type { Channel } from \"./transport.js\";\n\n/** Same order as AGENT_PRESETS in apps/web/src/lib/presets.ts */\nconst PRESETS = [\n { name: \"Alex\", role: \"Frontend Dev\", palette: 0, personality: \"You speak in a friendly, casual, encouraging, and natural tone.\" },\n { name: \"Mia\", role: \"Backend Dev\", palette: 1, personality: \"You speak formally, professionally, in an organized and concise manner.\" },\n { name: \"Leo\", role: \"Fullstack Dev\", palette: 2, personality: \"You are aggressive, action-first, always pursuing speed and efficiency.\" },\n { name: \"Sophie\", role: \"Code Reviewer\", palette: 3, personality: \"You teach patiently, explain the reasoning, and guide like a mentor.\" },\n { name: \"Yuki\", role: \"QA / Tester\", palette: 4, personality: \"You are extremely concise, no fluff, straight to the result.\" },\n { name: \"Marcus\", role: \"Architect\", palette: 5, personality: \"You speak formally, professionally, in an organized and concise manner.\" },\n];\n\ninterface BotAgent {\n bot: TelegramBot;\n preset: typeof PRESETS[number];\n agentId: string;\n chatIds: Set<number>;\n}\n\nconst botAgents: BotAgent[] = [];\n\n/** Format event as readable Telegram message */\nfunction formatEvent(event: GatewayEvent, agentId: string): string | null {\n if (event.type === \"TASK_STARTED\" && event.agentId === agentId) {\n return `🔧 Working on it...`;\n }\n if (event.type === \"TASK_DONE\" && event.agentId === agentId) {\n const r = event.result;\n let msg = `✅ Task completed\\n\\n${r.summary}`;\n if (r.changedFiles.length > 0) {\n msg += `\\n\\n📁 Changed files:\\n${r.changedFiles.map((f: string) => `• ${f}`).join(\"\\n\")}`;\n }\n return msg;\n }\n if (event.type === \"TASK_FAILED\" && event.agentId === agentId) {\n return `❌ Task failed\\n\\n${event.error}`;\n }\n if (event.type === \"APPROVAL_NEEDED\" && event.agentId === agentId) {\n return `⚠️ Approval needed\\n\\n${event.title}\\n${event.summary}\\n\\nReply /yes or /no`;\n }\n return null;\n}\n\nexport const telegramChannel: Channel = {\n name: \"Telegram\",\n\n async init(commandHandler: (cmd: Command) => void): Promise<boolean> {\n const tokens = config.telegramBotTokens;\n if (!tokens.length || tokens.every((t) => !t)) return false;\n\n for (let i = 0; i < tokens.length && i < PRESETS.length; i++) {\n const token = tokens[i];\n if (!token) continue;\n\n const preset = PRESETS[i];\n const agentId = `tg-${preset.name.toLowerCase()}`;\n\n const bot = new TelegramBot(token, { polling: true });\n const ba: BotAgent = { bot, preset, agentId, chatIds: new Set() };\n botAgents.push(ba);\n\n // Guard against 409 Conflict (another instance polling the same token)\n bot.on(\"polling_error\", (err: any) => {\n const code = err?.response?.statusCode ?? err?.code;\n if (code === 409) {\n console.warn(\n `[Telegram] 409 Conflict for @${preset.name}: token is already used by another bot instance. Polling skipped for this token.`\n );\n bot.stopPolling();\n return;\n }\n console.error(`[Telegram] Polling error for @${preset.name}:`, err.message ?? err);\n });\n\n // Auto-create agent via command handler (ensures palette/backend are stored)\n commandHandler({\n type: \"CREATE_AGENT\",\n agentId,\n name: preset.name,\n role: preset.role,\n palette: preset.palette,\n personality: preset.personality,\n });\n\n const botInfo = await bot.getMe();\n console.log(`[Telegram] @${botInfo.username} → ${preset.name} (${preset.role})`);\n\n // Track chat IDs + handle commands and messages\n bot.on(\"message\", (msg) => {\n if (!msg.text) return;\n ba.chatIds.add(msg.chat.id);\n\n const text = msg.text.trim();\n\n // Commands\n if (text === \"/yes\") {\n commandHandler({ type: \"APPROVAL_DECISION\", approvalId: \"__all__\", decision: \"yes\" });\n return;\n }\n if (text === \"/no\") {\n commandHandler({ type: \"APPROVAL_DECISION\", approvalId: \"__all__\", decision: \"no\" });\n return;\n }\n if (text === \"/cancel\") {\n commandHandler({ type: \"CANCEL_TASK\", agentId, taskId: \"\" });\n bot.sendMessage(msg.chat.id, `🛑 Cancelled ${preset.name}'s current task`);\n return;\n }\n if (text === \"/status\") {\n // Trigger a PING to re-broadcast all statuses\n commandHandler({ type: \"PING\" });\n return;\n }\n if (text.startsWith(\"/\")) return; // ignore other commands\n\n const taskId = nanoid();\n commandHandler({\n type: \"RUN_TASK\",\n agentId,\n taskId,\n prompt: text,\n name: preset.name,\n role: preset.role,\n personality: preset.personality,\n });\n });\n }\n\n console.log(`[Telegram] ${botAgents.length} bot(s) active`);\n return botAgents.length > 0;\n },\n\n broadcast(event: GatewayEvent) {\n for (const ba of botAgents) {\n const text = formatEvent(event, ba.agentId);\n if (!text) continue;\n\n for (const chatId of ba.chatIds) {\n ba.bot.sendMessage(chatId, text).catch((err: Error) => {\n console.error(`[Telegram] Send failed:`, err.message);\n });\n }\n }\n },\n\n destroy() {\n for (const ba of botAgents) {\n ba.bot.stopPolling();\n }\n botAgents.length = 0;\n },\n};\n","import { createInterface } from \"readline\";\nimport { saveConfig } from \"./config.js\";\nimport { detectBackends, getBackend } from \"./backends.js\";\n\nfunction ask(rl: ReturnType<typeof createInterface>, question: string): Promise<string> {\n return new Promise((resolve) => {\n // Handle case where stdin closes unexpectedly\n const onClose = () => resolve(\"\");\n rl.once(\"close\", onClose);\n rl.question(question, (answer) => {\n rl.removeListener(\"close\", onClose);\n resolve(answer.trim());\n });\n });\n}\n\nexport async function runSetup(): Promise<void> {\n // Detect AI backends regardless of TTY\n console.log(\"[Setup] Detecting AI backends...\");\n const detected = detectBackends();\n const detectedNames = detected.map((id) => getBackend(id)?.name ?? id).join(\", \");\n console.log(`[Setup] Found: ${detectedNames || \"none\"}`);\n\n // Non-interactive: save detected backends and move on\n if (!process.stdin.isTTY) {\n saveConfig({ detectedBackends: detected, defaultBackend: detected[0] ?? \"claude\", sandboxMode: \"full\" });\n console.log(\"✓ Default config saved to ~/.bit-office/config.json\");\n console.log(\" Run with --setup in a terminal to configure.\\n\");\n return;\n }\n\n const rl = createInterface({\n input: process.stdin,\n output: process.stdout,\n terminal: true,\n });\n\n console.log(\"\");\n console.log(\"╔══════════════════════════════════════╗\");\n console.log(\"║ Bit Office — First Setup ║\");\n console.log(\"╚══════════════════════════════════════╝\");\n console.log(\"\");\n console.log(\"Press Enter to skip any step.\\n\");\n\n // Ably\n console.log(\"── Remote Access (Ably) ──────────────\");\n console.log(\"Enables access from outside your LAN.\");\n const ablyApiKey = await ask(rl, \"Ably API Key (optional): \");\n\n // AI Backends\n let defaultBackend = detected[0] ?? \"claude\";\n if (detected.length > 1) {\n console.log(\"\\n── AI Backends ───────────────────────\");\n console.log(`Detected: ${detectedNames}`);\n const choices = detected.map((id, i) => `${i + 1}=${getBackend(id)?.name ?? id}`).join(\", \");\n const pick = await ask(rl, `Default backend (${choices}): `);\n const idx = parseInt(pick, 10) - 1;\n if (idx >= 0 && idx < detected.length) {\n defaultBackend = detected[idx];\n }\n }\n\n // Sandbox mode\n console.log(\"\\n── Agent Permissions ─────────────────\");\n console.log(\"1 = Full access (agents can access entire machine)\");\n console.log(\"2 = Sandbox (agents restricted to working directory)\");\n const sandboxPick = await ask(rl, \"Permission mode (1/2, default=1): \");\n const sandboxMode: \"full\" | \"safe\" = sandboxPick === \"2\" ? \"safe\" : \"full\";\n\n rl.close();\n\n saveConfig({\n ablyApiKey: ablyApiKey || undefined,\n detectedBackends: detected,\n defaultBackend,\n sandboxMode,\n });\n\n console.log(\"\\n✓ Config saved to ~/.bit-office/config.json\");\n if (ablyApiKey) console.log(\" • Ably: enabled\");\n console.log(` • Default AI: ${getBackend(defaultBackend)?.name ?? defaultBackend}`);\n console.log(` • Permissions: ${sandboxMode === \"full\" ? \"Full access\" : \"Sandbox\"}`);\n console.log(\" • Run with --setup to reconfigure\\n\");\n}\n","import { execSync } from \"child_process\";\nimport type { AIBackend } from \"@bit-office/orchestrator\";\n\nconst backends: AIBackend[] = [\n {\n id: \"claude\",\n name: \"Claude Code\",\n command: \"claude\",\n supportsStdin: true,\n buildArgs(prompt, opts) {\n const args = [\"-p\", prompt, \"--output-format\", \"stream-json\", \"--verbose\", \"--dangerously-skip-permissions\"];\n if (!opts.skipResume) {\n if (opts.resumeSessionId) {\n args.push(\"--resume\", opts.resumeSessionId);\n } else if (opts.continue) {\n args.push(\"--continue\");\n }\n }\n if (opts.noTools) args.push(\"--tools\", \"\");\n if (opts.model) args.push(\"--model\", opts.model);\n return args;\n },\n deleteEnv: [\"CLAUDECODE\", \"CLAUDE_CODE_ENTRYPOINT\"],\n },\n {\n id: \"codex\",\n name: \"Codex CLI\",\n command: \"codex\",\n buildArgs(prompt, opts) {\n if (opts.fullAccess) {\n return [\"exec\", prompt, \"--dangerously-bypass-approvals-and-sandbox\", \"--skip-git-repo-check\"];\n }\n return [\"exec\", prompt, \"--full-auto\", \"--skip-git-repo-check\"];\n },\n },\n {\n id: \"gemini\",\n name: \"Gemini CLI\",\n command: \"gemini\",\n buildArgs(prompt) {\n return [\"-p\", prompt, \"--yolo\"];\n },\n },\n {\n id: \"aider\",\n name: \"Aider\",\n command: \"aider\",\n buildArgs(prompt) {\n return [\"--message\", prompt, \"--yes\", \"--no-pretty\", \"--no-git\"];\n },\n },\n {\n id: \"opencode\",\n name: \"OpenCode\",\n command: \"opencode\",\n buildArgs(prompt) {\n return [\"run\", prompt, \"--quiet\"];\n },\n },\n];\n\nconst backendMap = new Map<string, AIBackend>(backends.map((b) => [b.id, b]));\n\nexport function getBackend(id: string): AIBackend | undefined {\n return backendMap.get(id);\n}\n\nexport function getAllBackends(): AIBackend[] {\n return backends;\n}\n\n/** Check which AI CLI tools are installed on this machine */\nexport function detectBackends(): string[] {\n const detected: string[] = [];\n for (const backend of backends) {\n try {\n execSync(`which ${backend.command}`, { stdio: \"ignore\", timeout: 3000 });\n detected.push(backend.id);\n } catch {\n // not installed\n }\n }\n return detected;\n}\n","import { EventEmitter } from \"events\";\nimport { nanoid } from \"nanoid\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { AgentManager } from \"./agent-manager.js\";\nimport { DelegationRouter } from \"./delegation.js\";\nimport { PromptEngine } from \"./prompt-templates.js\";\nimport { RetryTracker } from \"./retry.js\";\nimport { createWorktree, mergeWorktree, removeWorktree } from \"./worktree.js\";\nimport type { AIBackend } from \"./ai-backend.js\";\nimport type {\n OrchestratorOptions,\n CreateAgentOpts,\n CreateTeamOpts,\n RunTaskOpts,\n OrchestratorEvent,\n OrchestratorEventMap,\n Decision,\n} from \"./types.js\";\n\nexport class Orchestrator extends EventEmitter<OrchestratorEventMap> {\n private agentManager = new AgentManager();\n private delegationRouter: DelegationRouter;\n private promptEngine: PromptEngine;\n private retryTracker: RetryTracker | null;\n private backends = new Map<string, AIBackend>();\n private defaultBackendId: string;\n private workspace: string;\n private sandboxMode: \"full\" | \"safe\";\n private worktreeEnabled: boolean;\n private worktreeMerge: boolean;\n /** Preview captured from the first dev worker that produces one — not from QA/reviewer */\n private teamPreview: { previewUrl: string; previewPath?: string } | null = null;\n\n constructor(opts: OrchestratorOptions) {\n super();\n this.workspace = opts.workspace;\n this.sandboxMode = opts.sandboxMode ?? \"full\";\n\n // Register backends\n for (const b of opts.backends) {\n this.backends.set(b.id, b);\n }\n this.defaultBackendId = opts.defaultBackend ?? opts.backends[0]?.id ?? \"claude\";\n\n // Prompt engine\n this.promptEngine = new PromptEngine(opts.promptsDir);\n this.promptEngine.init();\n\n // Delegation\n this.delegationRouter = new DelegationRouter(\n this.agentManager,\n this.promptEngine,\n (e) => this.emitEvent(e),\n );\n\n // Retry\n if (opts.retry === false) {\n this.retryTracker = null;\n } else {\n const r = opts.retry ?? {};\n this.retryTracker = new RetryTracker(r.maxRetries, r.escalateToLeader);\n }\n\n // Worktree\n if (opts.worktree === false) {\n this.worktreeEnabled = false;\n this.worktreeMerge = false;\n } else {\n this.worktreeEnabled = true;\n this.worktreeMerge = opts.worktree?.mergeOnComplete ?? true;\n }\n }\n\n // ---------------------------------------------------------------------------\n // Agent lifecycle\n // ---------------------------------------------------------------------------\n\n createAgent(opts: CreateAgentOpts): void {\n const backend = this.backends.get(opts.backend ?? this.defaultBackendId)\n ?? this.backends.get(this.defaultBackendId)!;\n\n const session = new AgentSession({\n agentId: opts.agentId,\n name: opts.name,\n role: opts.role,\n personality: opts.personality,\n workspace: this.workspace,\n resumeHistory: opts.resumeHistory,\n backend,\n sandboxMode: this.sandboxMode,\n isTeamLead: this.agentManager.isTeamLead(opts.agentId),\n teamId: opts.teamId,\n onEvent: (e) => this.handleSessionEvent(e, opts.agentId),\n renderPrompt: (name, vars) => this.promptEngine.render(name, vars),\n });\n session.palette = opts.palette;\n\n this.agentManager.add(session);\n this.delegationRouter.wireAgent(session);\n\n this.emitEvent({\n type: \"agent:created\",\n agentId: opts.agentId,\n name: opts.name,\n role: opts.role,\n palette: opts.palette,\n personality: opts.personality,\n backend: backend.id,\n isTeamLead: this.agentManager.isTeamLead(opts.agentId),\n teamId: opts.teamId,\n });\n this.emitEvent({\n type: \"agent:status\",\n agentId: opts.agentId,\n status: \"idle\",\n });\n }\n\n removeAgent(agentId: string): void {\n this.cancelTask(agentId);\n this.delegationRouter.clearAgent(agentId);\n this.agentManager.delete(agentId);\n this.emitEvent({ type: \"agent:fired\", agentId });\n }\n\n setTeamLead(agentId: string): void {\n this.agentManager.setTeamLead(agentId);\n // Update the session's isTeamLead flag\n const session = this.agentManager.get(agentId);\n if (session) session.isTeamLead = true;\n }\n\n createTeam(opts: CreateTeamOpts): void {\n const presets = [\n { ...opts.memberPresets[opts.leadPresetIndex] ?? opts.memberPresets[0], isLead: true },\n ...opts.memberPresets.filter((_, i) => i !== opts.leadPresetIndex).map(p => ({ ...p, isLead: false })),\n ];\n\n let leadAgentId: string | null = null;\n\n for (const preset of presets) {\n const agentId = `agent-${nanoid(6)}`;\n const backendId = opts.backends?.[String(opts.memberPresets.indexOf(preset))] ?? this.defaultBackendId;\n\n this.createAgent({\n agentId,\n name: preset.name,\n role: preset.role,\n personality: preset.personality,\n palette: preset.palette,\n backend: backendId,\n });\n\n if ((preset as { isLead: boolean }).isLead) {\n leadAgentId = agentId;\n this.agentManager.setTeamLead(agentId);\n }\n }\n\n if (leadAgentId) {\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: leadAgentId,\n message: `Team created! ${presets.length} members ready.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n }\n }\n\n // ---------------------------------------------------------------------------\n // Task execution\n // ---------------------------------------------------------------------------\n\n runTask(agentId: string, taskId: string, prompt: string, opts?: RunTaskOpts): void {\n const session = this.agentManager.get(agentId);\n if (!session) {\n this.emitEvent({\n type: \"task:failed\",\n agentId,\n taskId,\n error: \"Agent not found. Create it first.\",\n });\n return;\n }\n\n // User-initiated task on team lead: store original task + reset delegation counters\n if (this.agentManager.isTeamLead(agentId) && !this.delegationRouter.isDelegated(taskId)) {\n session.originalTask = prompt;\n this.delegationRouter.clearAll();\n this.teamPreview = null;\n }\n\n // Track for retry\n this.retryTracker?.track(taskId, prompt);\n\n // Worktree setup\n if (this.worktreeEnabled && !session.worktreePath) {\n const wt = createWorktree(this.workspace, agentId, taskId, session.name);\n if (wt) {\n const branch = `agent/${session.name.toLowerCase().replace(/\\s+/g, \"-\")}/${taskId}`;\n session.worktreePath = wt;\n session.worktreeBranch = branch;\n this.emitEvent({\n type: \"worktree:created\",\n agentId,\n taskId,\n worktreePath: wt,\n branch,\n });\n }\n }\n\n const repoPath = session.worktreePath ?? opts?.repoPath;\n // Only the team lead gets the full roster (to decide delegation).\n // Workers don't need it — they just do their assigned task.\n const teamContext = this.agentManager.isTeamLead(agentId)\n ? this.agentManager.getTeamRoster()\n : undefined;\n\n session.runTask(taskId, prompt, repoPath, teamContext, true /* isUserInitiated */);\n }\n\n cancelTask(agentId: string): void {\n const session = this.agentManager.get(agentId);\n if (!session) return;\n\n // Clean up worktree on cancel\n if (session.worktreePath && session.worktreeBranch) {\n removeWorktree(session.worktreePath, session.worktreeBranch, this.workspace);\n session.worktreePath = null;\n session.worktreeBranch = null;\n }\n\n session.cancelTask();\n }\n\n /**\n * Stop all team agents — cancel their tasks but keep them alive.\n * Safe to call before fireTeam, or to just pause work.\n */\n stopTeam(): void {\n this.delegationRouter.stop();\n const teamAgents = this.agentManager.getAll().filter(a => !!a.teamId);\n for (const agent of teamAgents) {\n this.cancelTask(agent.agentId);\n }\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: teamAgents.find(a => this.agentManager.isTeamLead(a.agentId))?.agentId ?? \"system\",\n message: \"Team work stopped. All tasks cancelled.\",\n messageType: \"status\",\n timestamp: Date.now(),\n });\n }\n\n /**\n * Fire the entire team — stop all work silently, then remove all agents.\n */\n fireTeam(): void {\n this.delegationRouter.stop();\n const teamAgents = this.agentManager.getAll().filter(a => !!a.teamId);\n for (const agent of teamAgents) {\n this.cancelTask(agent.agentId);\n }\n for (const agent of teamAgents) {\n this.agentManager.delete(agent.agentId);\n this.emitEvent({ type: \"agent:fired\", agentId: agent.agentId });\n }\n }\n\n sendMessage(agentId: string, message: string): boolean {\n const session = this.agentManager.get(agentId);\n if (!session) return false;\n return session.sendMessage(message);\n }\n\n resolveApproval(approvalId: string, decision: Decision): void {\n for (const agent of this.agentManager.getAll()) {\n agent.resolveApproval(approvalId, decision);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Query\n // ---------------------------------------------------------------------------\n\n getAgent(agentId: string) {\n const s = this.agentManager.get(agentId);\n if (!s) return undefined;\n return { agentId: s.agentId, name: s.name, role: s.role, status: s.status, palette: s.palette, backend: s.backend.id };\n }\n\n getAllAgents() {\n return this.agentManager.getAll().map(s => ({\n agentId: s.agentId, name: s.name, role: s.role, status: s.status,\n palette: s.palette, backend: s.backend.id,\n isTeamLead: this.agentManager.isTeamLead(s.agentId),\n teamId: s.teamId,\n }));\n }\n\n getTeamRoster(): string {\n return this.agentManager.getTeamRoster();\n }\n\n isTeamLead(agentId: string): boolean {\n return this.agentManager.isTeamLead(agentId);\n }\n\n // ---------------------------------------------------------------------------\n // Cleanup\n // ---------------------------------------------------------------------------\n\n destroy(): void {\n for (const agent of this.agentManager.getAll()) {\n if (agent.worktreePath && agent.worktreeBranch) {\n removeWorktree(agent.worktreePath, agent.worktreeBranch, this.workspace);\n }\n agent.destroy();\n }\n }\n\n // ---------------------------------------------------------------------------\n // Internal\n // ---------------------------------------------------------------------------\n\n private handleSessionEvent(event: OrchestratorEvent, agentId: string): void {\n // Handle retry logic on task failure (skip if timeout — retrying won't help)\n if (event.type === \"task:failed\" && this.retryTracker) {\n const taskId = event.taskId;\n const session = this.agentManager.get(agentId);\n const wasCancelled = event.error === \"Task cancelled by user\";\n const wasTimeout = session?.wasTimeout ?? false;\n if (!wasCancelled && !wasTimeout && this.retryTracker.shouldRetry(taskId) && !this.delegationRouter.isDelegated(taskId)) {\n const state = this.retryTracker.recordAttempt(taskId, event.error);\n if (state) {\n this.emitEvent({\n type: \"task:retrying\",\n agentId,\n taskId,\n attempt: state.attempt,\n maxRetries: state.maxRetries,\n error: event.error,\n });\n const retryPrompt = this.retryTracker.getRetryPrompt(taskId);\n if (retryPrompt) {\n const session = this.agentManager.get(agentId);\n if (session) {\n setTimeout(() => session.runTask(taskId, retryPrompt), 500);\n return; // Don't emit the task:failed — we're retrying\n }\n }\n }\n }\n\n // Retries exhausted — check for escalation (skip on cancel)\n const escalation = wasCancelled ? null : this.retryTracker.getEscalation(taskId);\n if (escalation) {\n const leadId = this.agentManager.getTeamLead();\n if (leadId && leadId !== agentId) {\n const leadSession = this.agentManager.get(leadId);\n if (leadSession) {\n const escalationTaskId = nanoid();\n const teamContext = this.agentManager.getTeamRoster();\n leadSession.runTask(escalationTaskId, escalation.prompt, undefined, teamContext);\n }\n }\n }\n this.retryTracker.clear(taskId);\n }\n\n // Handle worktree merge on task completion\n if (event.type === \"task:done\") {\n const session = this.agentManager.get(agentId);\n if (session?.worktreePath && session.worktreeBranch) {\n if (this.worktreeMerge) {\n const result = mergeWorktree(this.workspace, session.worktreePath, session.worktreeBranch);\n this.emitEvent({\n type: \"worktree:merged\",\n agentId,\n taskId: event.taskId,\n branch: session.worktreeBranch,\n success: result.success,\n conflictFiles: result.conflictFiles,\n });\n } else {\n removeWorktree(session.worktreePath, session.worktreeBranch, this.workspace);\n }\n session.worktreePath = null;\n session.worktreeBranch = null;\n }\n\n this.retryTracker?.clear(event.taskId);\n\n // Capture preview from dev workers as soon as they complete.\n // Only dev workers (not QA, not reviewer, not leader) should set preview.\n // First valid preview wins — don't overwrite with later workers.\n if (!this.agentManager.isTeamLead(agentId) && !this.teamPreview) {\n const role = session?.role?.toLowerCase() ?? \"\";\n const isDevWorker = !role.includes(\"qa\") && !role.includes(\"tester\") && !role.includes(\"review\");\n if (isDevWorker && event.result?.previewUrl) {\n this.teamPreview = {\n previewUrl: event.result.previewUrl,\n previewPath: event.result.previewPath,\n };\n console.log(`[Orchestrator] Preview captured from ${session?.name}: ${this.teamPreview.previewUrl}`);\n }\n }\n\n // For team leaders: determine if this is the final result.\n if (this.agentManager.isTeamLead(agentId)) {\n const isResultTask = this.delegationRouter.isResultTask(event.taskId);\n\n // Did the leader process results WITHOUT creating new delegations?\n // This uses a delegation counter snapshot, not hasPendingFrom (which is\n // polluted by old/straggler workers still running from previous rounds).\n const leaderDidNotDelegateNewWork = isResultTask\n && this.delegationRouter.resultTaskDidNotDelegate(event.taskId);\n\n // Safety net: budget exhausted and no new delegations pending\n const budgetForced = this.delegationRouter.isBudgetExhausted()\n && !this.delegationRouter.hasPendingFrom(agentId);\n\n const shouldFinalize = leaderDidNotDelegateNewWork || budgetForced;\n\n if (shouldFinalize) {\n event.isFinalResult = true;\n\n // Clear any straggler delegations so they don't restart the leader later\n this.delegationRouter.clearAgent(agentId);\n\n // Use preview captured earlier from dev workers\n if (!event.result?.previewUrl && this.teamPreview && event.result) {\n event.result.previewUrl = this.teamPreview.previewUrl;\n event.result.previewPath = this.teamPreview.previewPath;\n }\n\n // Fallback: no dev worker had a preview — scan all workers' changedFiles for .html\n if (!event.result?.previewUrl && event.result) {\n for (const worker of this.agentManager.getAll()) {\n if (worker.agentId === agentId) continue;\n const { previewUrl, previewPath } = worker.detectPreview();\n if (previewUrl) {\n event.result.previewUrl = previewUrl;\n event.result.previewPath = previewPath;\n break;\n }\n }\n }\n\n const summary = event.result?.summary?.slice(0, 200) ?? \"All tasks completed.\";\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: agentId,\n message: `Project complete: ${summary}`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n } else if (!isResultTask && !this.delegationRouter.hasPendingFrom(agentId)) {\n console.warn(`[Orchestrator] Leader ${agentId} completed initial task with no delegations. Output may have failed to parse.`);\n }\n }\n }\n\n // Handle worktree cleanup on task failure (after retry logic)\n if (event.type === \"task:failed\") {\n const session = this.agentManager.get(agentId);\n if (session?.worktreePath && session.worktreeBranch) {\n removeWorktree(session.worktreePath, session.worktreeBranch, this.workspace);\n session.worktreePath = null;\n session.worktreeBranch = null;\n }\n }\n\n this.emitEvent(event);\n }\n\n private emitEvent(event: OrchestratorEvent): void {\n this.emit(event.type, event as never);\n }\n}\n","import { spawn, execSync, type ChildProcess } from \"child_process\";\nimport path from \"path\";\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { previewServer } from \"./preview-server.js\";\nimport { nanoid } from \"nanoid\";\nimport type { AIBackend } from \"./ai-backend.js\";\nimport type { AgentStatus, TaskResultPayload, OrchestratorEvent } from \"./types.js\";\n\n/* ── Persist session IDs across restarts ────────────────────────── */\nconst SESSION_FILE = path.join(homedir(), \".bit-office\", \"agent-sessions.json\");\n\nfunction loadSessionMap(): Record<string, string> {\n try {\n if (existsSync(SESSION_FILE)) return JSON.parse(readFileSync(SESSION_FILE, \"utf-8\"));\n } catch { /* corrupt file, start fresh */ }\n return {};\n}\n\nfunction saveSessionId(agentId: string, sessionId: string | null) {\n const dir = path.dirname(SESSION_FILE);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n const map = loadSessionMap();\n if (sessionId) {\n map[agentId] = sessionId;\n } else {\n delete map[agentId];\n }\n writeFileSync(SESSION_FILE, JSON.stringify(map), \"utf-8\");\n}\n\ninterface PendingApproval {\n approvalId: string;\n resolve: (decision: \"yes\" | \"no\") => void;\n}\n\n/** Callback for delegation: (fromAgentId, targetName, prompt) => void */\nexport type DelegationHandler = (fromAgentId: string, targetName: string, prompt: string) => void;\n\n/** Callback when a task completes: (agentId, taskId, summary, success) => void */\nexport type TaskCompleteHandler = (agentId: string, taskId: string, summary: string, success: boolean) => void;\n\ninterface QueuedTask {\n taskId: string;\n prompt: string;\n repoPath?: string;\n teamContext?: string;\n}\n\nexport interface AgentSessionOpts {\n agentId: string;\n name: string;\n role: string;\n personality?: string;\n workspace: string;\n resumeHistory?: boolean;\n backend: AIBackend;\n sandboxMode?: \"full\" | \"safe\";\n onEvent: (event: OrchestratorEvent) => void;\n renderPrompt: (templateName: string, vars: Record<string, string | undefined>) => string;\n /** Whether this agent is the team lead (uses leader template, no tools) */\n isTeamLead?: boolean;\n teamId?: string;\n}\n\nexport class AgentSession {\n readonly agentId: string;\n readonly name: string;\n readonly role: string;\n readonly personality: string;\n readonly backend: AIBackend;\n palette?: number;\n private process: ChildProcess | null = null;\n private currentTaskId: string | null = null;\n private taskTimeout: ReturnType<typeof setTimeout> | null = null;\n private idleTimer: ReturnType<typeof setTimeout> | null = null;\n private currentCwd: string | null = null;\n private _status: AgentStatus = \"idle\";\n get status(): AgentStatus { return this._status; }\n private pendingApprovals = new Map<string, PendingApproval>();\n private workspace: string;\n private sandboxMode: \"full\" | \"safe\";\n private stdoutBuffer = \"\";\n private stderrBuffer = \"\";\n private hasHistory: boolean;\n private sessionId: string | null;\n private taskQueue: QueuedTask[] = [];\n private onEvent: (event: OrchestratorEvent) => void;\n private _renderPrompt: (templateName: string, vars: Record<string, string | undefined>) => string;\n private timedOut = false;\n private _isTeamLead: boolean;\n private _lastResult: string | null = null;\n /** Original user-facing task prompt (for leader state-summary mode) */\n originalTask: string | null = null;\n onDelegation: DelegationHandler | null = null;\n onTaskComplete: TaskCompleteHandler | null = null;\n /** Whether the last failure was a timeout (not retryable) */\n get wasTimeout(): boolean { return this.timedOut; }\n get isTeamLead(): boolean { return this._isTeamLead; }\n /** Short summary of last completed/failed task (for roster context) */\n get lastResult(): string | null { return this._lastResult; }\n private _lastResultText: string | null = null;\n set isTeamLead(v: boolean) { this._isTeamLead = v; }\n\n /** Current working directory of the running task (used by worktree logic) */\n get currentWorkingDir(): string | null { return this.currentCwd; }\n\n /** Worktree path if task is running in one (set externally by orchestrator) */\n worktreePath: string | null = null;\n worktreeBranch: string | null = null;\n teamId?: string;\n\n constructor(opts: AgentSessionOpts) {\n this.agentId = opts.agentId;\n this.name = opts.name;\n this.role = opts.role;\n this.personality = opts.personality ?? \"\";\n this.workspace = opts.workspace;\n this.sessionId = loadSessionMap()[opts.agentId] ?? null;\n this.hasHistory = opts.resumeHistory ?? !!this.sessionId;\n this.backend = opts.backend;\n this.sandboxMode = opts.sandboxMode ?? \"full\";\n this._isTeamLead = opts.isTeamLead ?? false;\n this.teamId = opts.teamId;\n this.onEvent = opts.onEvent;\n this._renderPrompt = opts.renderPrompt;\n }\n\n async runTask(taskId: string, prompt: string, repoPath?: string, teamContext?: string, isUserInitiated = false) {\n // If the user explicitly cancelled this agent, block any automatic restarts\n // (from flushResults, delegation, retry). Only a direct user action clears this.\n if (this._userCancelled && !isUserInitiated) {\n console.log(`[Agent ${this.name}] Ignoring internal task restart — agent was cancelled by user`);\n return;\n }\n if (isUserInitiated) {\n this._userCancelled = false;\n }\n\n if (this.process) {\n const position = this.taskQueue.length + 1;\n this.taskQueue.push({ taskId, prompt, repoPath, teamContext });\n this.onEvent({\n type: \"task:queued\",\n agentId: this.agentId,\n taskId,\n prompt,\n position,\n });\n return;\n }\n\n // Cancel any pending idle timer from a previous task\n if (this.idleTimer) { clearTimeout(this.idleTimer); this.idleTimer = null; }\n\n this.currentTaskId = taskId;\n const cwd = repoPath ?? this.workspace;\n this.currentCwd = cwd;\n this.stdoutBuffer = \"\";\n this.stderrBuffer = \"\";\n\n this.onEvent({\n type: \"task:started\",\n agentId: this.agentId,\n taskId,\n prompt,\n });\n\n this.setStatus(\"working\");\n\n try {\n const cleanEnv = { ...process.env };\n for (const key of this.backend.deleteEnv ?? []) {\n delete cleanEnv[key];\n }\n // isTeamLead: uses leader template + no tools (only delegates)\n // teamContext: just the roster string (any agent in a team may see it)\n const templateVars = {\n name: this.name,\n role: this._isTeamLead ? \"Team Lead\" : this.role,\n personality: this.personality ? `${this.personality}` : \"\",\n teamRoster: teamContext ?? \"\",\n originalTask: this._isTeamLead ? (this.originalTask ?? prompt) : \"\",\n prompt,\n };\n let fullPrompt: string;\n if (this._isTeamLead) {\n fullPrompt = this._renderPrompt(this.hasHistory ? \"leader-continue\" : \"leader-initial\", templateVars);\n } else {\n fullPrompt = this._renderPrompt(this.hasHistory ? \"worker-continue\" : \"worker-initial\", templateVars);\n }\n const fullAccess = this.sandboxMode === \"full\";\n const verbose = !!process.env.DEBUG;\n const args = this.backend.buildArgs(fullPrompt, {\n continue: this.hasHistory,\n resumeSessionId: this.sessionId ?? undefined,\n fullAccess,\n noTools: this._isTeamLead,\n model: this._isTeamLead ? \"sonnet\" : undefined,\n verbose,\n skipResume: this._isTeamLead && this.hasHistory,\n });\n\n // Log which binary + env state\n try {\n const whichPath = execSync(`which ${this.backend.command}`, { env: cleanEnv, encoding: \"utf-8\", timeout: 3000 }).trim();\n console.log(`[Agent ${this.name}] Binary: ${whichPath}, CLAUDECODE=${cleanEnv.CLAUDECODE ?? \"unset\"}, ENTRYPOINT=${cleanEnv.CLAUDE_CODE_ENTRYPOINT ?? \"unset\"}`);\n } catch { /* ignore */ }\n console.log(`[Agent ${this.name}] Spawning: ${this.backend.command} ${args.map(a => a.length > 80 ? a.slice(0, 80) + '...' : a).join(' ')}`);\n\n // stdin MUST be \"ignore\" — \"pipe\" causes Claude Code to hang waiting for input\n // detached: true creates a new process group so we can kill the entire tree on cancel\n this.process = spawn(this.backend.command, args, {\n cwd,\n env: cleanEnv,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n detached: true,\n });\n\n // Task timeout: leader 3 min (delegation planning), worker 8 min (real coding)\n // Use SIGKILL (not SIGTERM) — Claude CLI ignores SIGTERM while waiting on API calls\n this.timedOut = false;\n const TASK_TIMEOUT_MS = this._isTeamLead ? 3 * 60 * 1000 : 8 * 60 * 1000;\n this.taskTimeout = setTimeout(() => {\n if (this.process?.pid) {\n console.log(`[Agent ${this.agentId}] Task timed out after ${TASK_TIMEOUT_MS / 1000}s, killing`);\n this.timedOut = true;\n try { process.kill(-this.process.pid, \"SIGKILL\"); } catch { this.process.kill(\"SIGKILL\"); }\n }\n }, TASK_TIMEOUT_MS);\n\n // Delegation detection regex\n const DELEGATION_RE = /^\\s*(?:[-*>]\\s*)?(?:\\*\\*)?@(\\w+)(?:\\*\\*)?:\\s*(.+)$/;\n\n // Filter out system/diagnostic noise that should not appear in the UI\n const isSystemNoise = (line: string): boolean => {\n const t = line.trim().toLowerCase();\n if (!t) return true;\n // MCP-related\n if (t.includes(\"mcp\") && (t.startsWith(\"[\") || t.includes(\"server\") || t.includes(\"connect\") || t.includes(\"tool\"))) return true;\n // Claude Code internal diagnostics\n if (/^\\s*>?\\s*(fetching|loaded|reading|writing|searching|running|executing|checking)\\s/i.test(line)) return true;\n // Progress indicators / spinners\n if (/^[\\s⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏✓✗•·…\\-]+$/.test(line.trim())) return true;\n // Bare file path lines (no sentence content)\n if (/^\\s*[\\w./\\\\-]+\\.(ts|tsx|js|jsx|json|md|css|py)\\s*$/.test(line)) return true;\n return false;\n };\n\n // Handle a line of plain text output (delegation detection + logging)\n const handleTextLine = (text: string) => {\n const lines = text.split(\"\\n\").filter((l) => l.trim());\n const visibleLines: string[] = [];\n for (const line of lines) {\n const trimmed = line.trim();\n console.log(`[Agent ${this.name}] ${trimmed.slice(0, 200)}`);\n const match = trimmed.match(DELEGATION_RE);\n if (match && this.onDelegation) {\n const [, targetName, delegatedPrompt] = match;\n console.log(`[Delegation detected] ${this.name} -> @${targetName}: ${delegatedPrompt.slice(0, 60)}`);\n this.onDelegation(this.agentId, targetName, delegatedPrompt.replace(/\\*\\*$/, \"\").trim());\n }\n if (!isSystemNoise(line)) {\n visibleLines.push(trimmed);\n }\n }\n if (visibleLines.length > 0) {\n this.onEvent({\n type: \"log:append\",\n agentId: this.agentId,\n taskId,\n stream: \"stdout\",\n chunk: visibleLines.slice(-3).join(\"\\n\"),\n });\n }\n };\n\n // Parse stream-json or plain text stdout\n let jsonLineBuf = \"\";\n let stdoutChunkCount = 0;\n let seenFirstJson = false;\n this.process.stdout?.on(\"data\", (data: Buffer) => {\n const raw = data.toString();\n stdoutChunkCount++;\n if (stdoutChunkCount <= 3) {\n console.log(`[Agent ${this.name} raw-stdout #${stdoutChunkCount}] ${raw.slice(0, 150)}`);\n }\n jsonLineBuf += raw;\n\n // Process complete lines\n let nlIdx: number;\n while ((nlIdx = jsonLineBuf.indexOf(\"\\n\")) !== -1) {\n const line = jsonLineBuf.slice(0, nlIdx).trim();\n jsonLineBuf = jsonLineBuf.slice(nlIdx + 1);\n if (!line) continue;\n\n // Try to parse as stream-json\n if (line.startsWith(\"{\")) {\n try {\n const msg = JSON.parse(line);\n seenFirstJson = true;\n // Capture session ID for --resume on next run\n if (msg.type === \"system\" && msg.session_id) {\n this.sessionId = msg.session_id;\n console.log(`[Agent ${this.name}] Session ID: ${msg.session_id}`);\n }\n if (msg.type === \"assistant\" && msg.message?.content) {\n for (const block of msg.message.content) {\n if (block.type === \"text\" && block.text) {\n this.stdoutBuffer += block.text + \"\\n\";\n handleTextLine(block.text);\n }\n if (block.type === \"thinking\" && block.thinking) {\n console.log(`[Agent ${this.name} thinking] ${block.thinking.slice(0, 120)}...`);\n }\n }\n } else if (msg.type === \"result\" && msg.result) {\n if (!this.stdoutBuffer) {\n this.stdoutBuffer = msg.result;\n handleTextLine(msg.result);\n }\n this._lastResultText = msg.result;\n }\n continue;\n } catch {\n // Not valid JSON, treat as plain text\n }\n }\n\n // First non-JSON line: this backend outputs plain text, not stream-json.\n // Switch to plain-text mode so all subsequent lines are processed.\n if (!seenFirstJson) {\n seenFirstJson = true;\n }\n\n // Plain text fallback (non-Claude backends)\n this.stdoutBuffer += line + \"\\n\";\n handleTextLine(line);\n }\n });\n\n this.process.stderr?.on(\"data\", (data: Buffer) => {\n const chunk = data.toString();\n this.stderrBuffer += chunk;\n // Log to console for debugging, but do NOT forward stderr to the UI.\n // Stderr is MCP internals, system diagnostics, and Claude Code infrastructure —\n // none of it is meaningful agent output for the user.\n for (const line of chunk.split(\"\\n\")) {\n if (line.trim()) console.log(`[Agent ${this.name} stderr] ${line.slice(0, 200)}`);\n }\n });\n\n this.process.on(\"close\", (code) => {\n this.process = null;\n if (this.taskTimeout) { clearTimeout(this.taskTimeout); this.taskTimeout = null; }\n\n // Flush any remaining data in the JSON line buffer (last line without trailing newline)\n const remaining = jsonLineBuf.trim();\n if (remaining) {\n jsonLineBuf = \"\";\n for (const chunk of remaining.split(\"\\n\")) {\n const line = chunk.trim();\n if (!line) continue;\n if (line.startsWith(\"{\")) {\n try {\n const msg = JSON.parse(line);\n if (msg.type === \"assistant\" && msg.message?.content) {\n for (const block of msg.message.content) {\n if (block.type === \"text\" && block.text) {\n this.stdoutBuffer += block.text + \"\\n\";\n handleTextLine(block.text);\n }\n }\n } else if (msg.type === \"result\" && msg.result) {\n this._lastResultText = msg.result;\n if (!this.stdoutBuffer) {\n this.stdoutBuffer = msg.result;\n handleTextLine(msg.result);\n }\n }\n } catch { /* not valid JSON */ }\n } else {\n seenFirstJson = true;\n this.stdoutBuffer += line + \"\\n\";\n handleTextLine(line);\n }\n }\n }\n\n const completedTaskId = this.currentTaskId ?? taskId;\n this.currentTaskId = null;\n const wasCancelled = this.cancelled;\n this.cancelled = false;\n\n console.log(`[Agent ${this.agentId}] ${this.backend.name} exited: code=${code}, cancelled=${wasCancelled}, stdout=${this.stdoutBuffer.length}ch`);\n\n try {\n if (wasCancelled) {\n // Already handled in cancelTask() — just clean up and dequeue\n this.dequeueNext();\n return;\n } else if (code === 0) {\n this.hasHistory = true;\n saveSessionId(this.agentId, this.sessionId);\n\n const { summary, fullOutput, changedFiles } = this.extractResult();\n\n // Preview detection: skip for team leads (they don't create files).\n // Leader preview is handled by the orchestrator when isFinalResult is set.\n const { previewUrl, previewPath } = this._isTeamLead\n ? { previewUrl: undefined, previewPath: undefined }\n : this.detectPreview();\n\n this._lastResult = `done: ${summary.slice(0, 120)}`;\n this.setStatus(\"done\");\n this.onEvent({\n type: \"task:done\",\n agentId: this.agentId,\n taskId: completedTaskId,\n result: { summary, fullOutput, changedFiles, diffStat: \"\", testResult: \"unknown\", previewUrl, previewPath },\n });\n this.onTaskComplete?.(this.agentId, completedTaskId, summary, true);\n this.idleTimer = setTimeout(() => { this.idleTimer = null; this.setStatus(\"idle\"); }, 5000);\n } else {\n const errorMsg = this.stdoutBuffer.slice(0, 300) || this.stderrBuffer.slice(-300) || `Process exited with code ${code}`;\n this._lastResult = `failed: ${errorMsg.slice(0, 120)}`;\n this.setStatus(\"error\");\n this.onEvent({\n type: \"task:failed\",\n agentId: this.agentId,\n taskId: completedTaskId,\n error: errorMsg,\n });\n this.onTaskComplete?.(this.agentId, completedTaskId, errorMsg, false);\n this.idleTimer = setTimeout(() => { this.idleTimer = null; this.setStatus(\"idle\"); }, 3000);\n }\n this.dequeueNext();\n } catch (err) {\n console.error(`[Agent ${this.agentId}] Error in close handler:`, err);\n this.setStatus(\"idle\");\n this.dequeueNext();\n }\n });\n\n this.process.on(\"error\", (err) => {\n this.process = null;\n this.currentTaskId = null;\n this.setStatus(\"error\");\n this.onEvent({\n type: \"task:failed\",\n agentId: this.agentId,\n taskId,\n error: err.message,\n });\n this.idleTimer = setTimeout(() => { this.idleTimer = null; this.setStatus(\"idle\"); }, 3000);\n });\n } catch (err) {\n this.setStatus(\"error\");\n this.onEvent({\n type: \"task:failed\",\n agentId: this.agentId,\n taskId,\n error: (err as Error).message,\n });\n }\n }\n\n /**\n * Send a message to the agent's stdin.\n * NOTE: Currently a no-op because stdin is set to \"ignore\" (pipe causes Claude Code to hang).\n * Future: use --input-format stream-json for bidirectional communication.\n */\n sendMessage(_message: string): boolean {\n // stdin is \"ignore\" — cannot write. See TODO above.\n return false;\n }\n\n /**\n * Detect preview URL/path from agent output.\n * Called directly for workers; called by orchestrator for leader's final result.\n */\n detectPreview(): { previewUrl: string | undefined; previewPath: string | undefined } {\n // 1) Explicit PREVIEW: http://... line\n const previewMatch = this.stdoutBuffer.match(/PREVIEW:\\s*(https?:\\/\\/[^\\s*)\\]>]+)/i);\n let previewUrl = previewMatch?.[1]?.replace(/[*)\\]>]+$/, \"\");\n let previewPath: string | undefined;\n\n // 2) Any http://localhost mention in output\n if (!previewUrl) {\n const localhostMatch = this.stdoutBuffer.match(/https?:\\/\\/localhost[:\\d]*/);\n previewUrl = localhostMatch?.[0];\n }\n\n // 3) .html file path mentioned in output (SUMMARY, FILES_CHANGED, or prose)\n if (!previewUrl) {\n const fileMatch = this.stdoutBuffer.match(/(?:open\\s+)?((?:\\/[\\w./_-]+|[\\w./_-]+)\\.html?)\\b/i);\n if (fileMatch) {\n previewPath = path.isAbsolute(fileMatch[1])\n ? fileMatch[1]\n : path.join(this.currentCwd ?? this.workspace, fileMatch[1]);\n previewUrl = previewServer.serve(previewPath);\n }\n }\n\n // 4) Fallback: look for .html in changedFiles (worker may have modified but not mentioned it)\n if (!previewUrl) {\n const { changedFiles } = this.extractResult();\n const htmlFile = changedFiles.find(f => /\\.html?$/i.test(f));\n if (htmlFile) {\n previewPath = path.isAbsolute(htmlFile)\n ? htmlFile\n : path.join(this.currentCwd ?? this.workspace, htmlFile);\n previewUrl = previewServer.serve(previewPath);\n }\n }\n\n return { previewUrl, previewPath };\n }\n\n /**\n * Parse stdoutBuffer for structured result (SUMMARY/STATUS/FILES_CHANGED).\n * Falls back to a cleaned-up excerpt of the raw output.\n */\n private extractResult(): { summary: string; fullOutput: string; changedFiles: string[] } {\n const raw = this.stdoutBuffer || this._lastResultText || \"\";\n const fullOutput = raw.slice(0, 3000);\n\n // Try to extract structured fields from worker output format\n const summaryMatch = raw.match(/SUMMARY:\\s*(.+)/i);\n const filesMatch = raw.match(/FILES_CHANGED:\\s*(.+)/i);\n\n const changedFiles: string[] = [];\n if (filesMatch) {\n const fileList = filesMatch[1].trim();\n for (const f of fileList.split(/[,\\n]+/)) {\n const cleaned = f.trim().replace(/^[-*]\\s*/, \"\");\n if (cleaned) changedFiles.push(cleaned);\n }\n }\n\n if (summaryMatch) {\n return { summary: summaryMatch[1].trim(), fullOutput, changedFiles };\n }\n\n // No structured SUMMARY — extract the most meaningful part\n const lines = raw.split(\"\\n\").filter(l => l.trim());\n const delegationRe = /^@(\\w+):/;\n const noisePatterns = [\n /^STATUS:\\s/i,\n /^FILES_CHANGED:\\s/i,\n /^SUMMARY:\\s/i,\n /^\\[Assigned by /,\n /^mcp\\s/i,\n /^╔|^║|^╚/,\n /^\\s*[-*]{3,}\\s*$/,\n ];\n\n const delegationTargets: string[] = [];\n const meaningful: string[] = [];\n for (const l of lines) {\n const trimmed = l.trim();\n const dm = trimmed.match(delegationRe);\n if (dm) {\n delegationTargets.push(dm[1]);\n } else if (!noisePatterns.some(p => p.test(trimmed))) {\n meaningful.push(l);\n }\n }\n\n // If output is primarily delegations (leader), summarize the delegation targets\n if (meaningful.length === 0 && delegationTargets.length > 0) {\n return { summary: `Delegated tasks to ${delegationTargets.join(\", \")}`, fullOutput, changedFiles };\n }\n\n const lastChunk = meaningful.slice(-5).join(\"\\n\").trim();\n const summary = lastChunk.slice(0, 500) || \"Task completed\";\n\n return { summary, fullOutput, changedFiles };\n }\n\n private dequeueNext() {\n if (this.taskQueue.length === 0) return;\n const next = this.taskQueue.shift()!;\n setTimeout(() => {\n this.runTask(next.taskId, next.prompt, next.repoPath, next.teamContext);\n }, 100);\n }\n\n private cancelled = false;\n /** Set by cancelTask(); prevents flushResults / delegation from auto-restarting this agent. */\n private _userCancelled = false;\n\n cancelTask() {\n this.taskQueue = [];\n this._userCancelled = true;\n\n if (this.taskTimeout) { clearTimeout(this.taskTimeout); this.taskTimeout = null; }\n if (this.idleTimer) { clearTimeout(this.idleTimer); this.idleTimer = null; }\n\n const cancelledTaskId = this.currentTaskId ?? \"\";\n\n // Kill the running process if there is one\n if (this.process && this.process.pid) {\n this.cancelled = true;\n this.hasHistory = true;\n saveSessionId(this.agentId, this.sessionId);\n this.onTaskComplete?.(this.agentId, cancelledTaskId, \"Task cancelled by user\", false);\n\n const pgid = this.process.pid;\n try { process.kill(-pgid, \"SIGKILL\"); } catch {\n try { this.process.kill(\"SIGKILL\"); } catch { /* already dead */ }\n }\n }\n\n // Always force UI reset — even if process was already gone.\n // This prevents the UI from getting stuck in \"working\" state.\n this._lastResult = \"cancelled: Task cancelled by user\";\n this.setStatus(\"error\");\n this.onEvent({\n type: \"task:failed\",\n agentId: this.agentId,\n taskId: cancelledTaskId,\n error: \"Task cancelled by user\",\n });\n this.idleTimer = setTimeout(() => { this.idleTimer = null; this.setStatus(\"idle\"); }, 3000);\n }\n\n destroy() {\n if (this.taskTimeout) { clearTimeout(this.taskTimeout); this.taskTimeout = null; }\n if (this.idleTimer) { clearTimeout(this.idleTimer); this.idleTimer = null; }\n if (this.process?.pid) {\n try { process.kill(-this.process.pid, \"SIGTERM\"); } catch { this.process.kill(\"SIGTERM\"); }\n this.process = null;\n }\n this.pendingApprovals.clear();\n saveSessionId(this.agentId, null);\n }\n\n resolveApproval(approvalId: string, decision: \"yes\" | \"no\") {\n if (approvalId === \"__all__\") {\n for (const [, pending] of this.pendingApprovals) {\n pending.resolve(decision);\n }\n this.pendingApprovals.clear();\n return;\n }\n const pending = this.pendingApprovals.get(approvalId);\n if (pending) {\n pending.resolve(decision);\n this.pendingApprovals.delete(approvalId);\n }\n }\n\n async requestApproval(title: string, summary: string, riskLevel: \"low\" | \"med\" | \"high\"): Promise<\"yes\" | \"no\"> {\n const approvalId = nanoid();\n const taskId = this.currentTaskId ?? \"unknown\";\n\n this.setStatus(\"waiting_approval\");\n\n this.onEvent({\n type: \"approval:needed\",\n approvalId,\n agentId: this.agentId,\n taskId,\n title,\n summary,\n riskLevel,\n });\n\n return new Promise((resolve) => {\n this.pendingApprovals.set(approvalId, { approvalId, resolve });\n });\n }\n\n private setStatus(status: AgentStatus) {\n // Guard: don't downgrade to \"idle\" if a new task is already running\n if (status === \"idle\" && this.process) return;\n this._status = status;\n this.onEvent({\n type: \"agent:status\",\n agentId: this.agentId,\n status,\n });\n }\n}\n","import { spawn, type ChildProcess } from \"child_process\";\nimport path from \"path\";\n\nconst PREVIEW_PORT = 9100;\n\n/**\n * Global preview server — one at a time.\n * Kills the previous serve process before starting a new one.\n */\nclass PreviewServer {\n private process: ChildProcess | null = null;\n private currentDir: string | null = null;\n\n /**\n * Serve a directory on a fixed port. Kills any existing serve process first.\n * Returns the preview URL for the given file.\n */\n serve(filePath: string): string | undefined {\n const dir = path.dirname(filePath);\n const fileName = path.basename(filePath);\n\n this.stop();\n\n try {\n this.process = spawn(\"npx\", [\"serve\", dir, \"-l\", String(PREVIEW_PORT), \"--no-clipboard\"], {\n stdio: \"ignore\",\n detached: true,\n });\n this.process.unref();\n this.currentDir = dir;\n const url = `http://localhost:${PREVIEW_PORT}/${fileName}`;\n console.log(`[PreviewServer] Serving ${dir} on port ${PREVIEW_PORT}`);\n return url;\n } catch (e) {\n console.log(`[PreviewServer] Failed to start: ${e}`);\n return undefined;\n }\n }\n\n /** Kill the current serve process */\n stop() {\n if (this.process) {\n try { this.process.kill(\"SIGTERM\"); } catch { /* already dead */ }\n this.process = null;\n this.currentDir = null;\n console.log(`[PreviewServer] Stopped`);\n }\n }\n}\n\n/** Singleton instance */\nexport const previewServer = new PreviewServer();\n","import type { AgentSession } from \"./agent-session.js\";\n\nexport class AgentManager {\n private agents = new Map<string, AgentSession>();\n private _teamLeadId: string | null = null;\n\n setTeamLead(id: string | null) {\n this._teamLeadId = id;\n }\n\n getTeamLead(): string | null {\n return this._teamLeadId;\n }\n\n isTeamLead(id: string): boolean {\n return this._teamLeadId === id;\n }\n\n getTeamRoster(): string {\n const lines: string[] = [];\n for (const session of this.agents.values()) {\n const lead = this.isTeamLead(session.agentId) ? \" (Team Lead)\" : \"\";\n const result = session.lastResult ? ` — ${session.lastResult}` : \"\";\n lines.push(`- ${session.name} (${session.role}) [${session.status}]${lead}${result}`);\n }\n return lines.join(\"\\n\");\n }\n\n getTeamMembers(): Array<{ name: string; role: string; status: string; isLead: boolean; lastResult: string | null }> {\n return Array.from(this.agents.values()).map(s => ({\n name: s.name,\n role: s.role,\n status: s.status,\n isLead: this.isTeamLead(s.agentId),\n lastResult: s.lastResult,\n }));\n }\n\n add(session: AgentSession): void {\n const existing = this.agents.get(session.agentId);\n if (existing) {\n existing.destroy();\n }\n this.agents.set(session.agentId, session);\n }\n\n delete(agentId: string): boolean {\n const session = this.agents.get(agentId);\n if (!session) return false;\n session.destroy();\n this.agents.delete(agentId);\n return true;\n }\n\n get(agentId: string): AgentSession | undefined {\n return this.agents.get(agentId);\n }\n\n getAll(): AgentSession[] {\n return Array.from(this.agents.values());\n }\n\n findByName(name: string): AgentSession | undefined {\n for (const session of this.agents.values()) {\n if (session.name.toLowerCase() === name.toLowerCase()) {\n return session;\n }\n }\n return undefined;\n }\n}\n","import { nanoid } from \"nanoid\";\nimport type { AgentManager } from \"./agent-manager.js\";\nimport type { AgentSession } from \"./agent-session.js\";\nimport type { PromptEngine } from \"./prompt-templates.js\";\nimport type { OrchestratorEvent } from \"./types.js\";\n\nconst MAX_DELEGATION_DEPTH = 5;\nconst MAX_TOTAL_DELEGATIONS = 20;\nconst DELEGATION_BUDGET_ROUNDS = 5;\nconst HARD_CEILING_ROUNDS = 10;\n// Longer batch window so parallel QA + CodeReview results arrive together in one leader round.\n// If QA finishes but CodeReview is still running, wait up to 20s before flushing partial results.\nconst RESULT_BATCH_WINDOW_MS = 20_000;\n\ninterface PendingResult {\n fromName: string;\n statusWord: string;\n summary: string;\n}\n\nexport class DelegationRouter {\n /** taskId → fromAgentId */\n private delegationOrigin = new Map<string, string>();\n /** taskId → delegation depth (how many hops from original user task) */\n private delegationDepth = new Map<string, number>();\n /** agentId → taskId of the delegated task currently assigned TO this agent */\n private assignedTask = new Map<string, string>();\n /** Total delegations in current team session (reset on clearAll) */\n private totalDelegations = 0;\n /** How many times the leader has been invoked to process results */\n private leaderRounds = 0;\n /** When true, all new delegations and result forwarding are blocked */\n private stopped = false;\n /** TaskIds created by flushResults — only these can produce a final result */\n private resultTaskIds = new Set<string>();\n /** Tracks the totalDelegations count when a resultTask started, so we can detect if new delegations were created */\n private delegationsAtResultStart = new Map<string, number>();\n /** Batch result forwarding: originAgentId → pending results + timer */\n private pendingResults = new Map<string, { results: PendingResult[]; timer: ReturnType<typeof setTimeout> }>();\n private agentManager: AgentManager;\n private promptEngine: PromptEngine;\n private emitEvent: (event: OrchestratorEvent) => void;\n\n constructor(\n agentManager: AgentManager,\n promptEngine: PromptEngine,\n emitEvent: (event: OrchestratorEvent) => void,\n ) {\n this.agentManager = agentManager;\n this.promptEngine = promptEngine;\n this.emitEvent = emitEvent;\n }\n\n /**\n * Wire delegation and result forwarding callbacks onto a session.\n */\n wireAgent(session: AgentSession): void {\n this.wireDelegation(session);\n this.wireResultForwarding(session);\n }\n\n /**\n * Check if a taskId was delegated (has an origin).\n */\n isDelegated(taskId: string): boolean {\n return this.delegationOrigin.has(taskId);\n }\n\n /**\n * True if this taskId was created by flushResults (leader processing worker results).\n * Only result-processing tasks are eligible to be marked as isFinalResult.\n */\n isResultTask(taskId: string): boolean {\n return this.resultTaskIds.has(taskId);\n }\n\n /**\n * True when the delegation budget is exhausted — leader should finalize even\n * if the current task is not a \"resultTask\" (safety net for convergence).\n */\n isBudgetExhausted(): boolean {\n return this.leaderRounds >= DELEGATION_BUDGET_ROUNDS;\n }\n\n /**\n * True if the given resultTask completed WITHOUT creating any new delegations.\n * This means the leader decided to summarize/finish rather than delegate more work.\n */\n resultTaskDidNotDelegate(taskId: string): boolean {\n const startCount = this.delegationsAtResultStart.get(taskId);\n if (startCount === undefined) return false;\n return this.totalDelegations === startCount;\n }\n\n /**\n * Check if there are any pending delegated tasks originating from a given agent.\n */\n hasPendingFrom(agentId: string): boolean {\n for (const origin of this.delegationOrigin.values()) {\n if (origin === agentId) return true;\n }\n return false;\n }\n\n /**\n * Remove all delegation tracking for a specific agent (on fire/cancel).\n */\n clearAgent(agentId: string): void {\n for (const [taskId, origin] of this.delegationOrigin) {\n if (origin === agentId) {\n this.delegationOrigin.delete(taskId);\n this.delegationDepth.delete(taskId);\n }\n }\n }\n\n /**\n * Block all future delegations and result forwarding. Call before cancelling tasks.\n */\n stop(): void {\n this.stopped = true;\n for (const pending of this.pendingResults.values()) {\n clearTimeout(pending.timer);\n }\n this.pendingResults.clear();\n }\n\n /**\n * Reset all delegation state (on new team task).\n */\n clearAll(): void {\n this.delegationOrigin.clear();\n this.delegationDepth.clear();\n this.assignedTask.clear();\n this.resultTaskIds.clear();\n this.delegationsAtResultStart.clear();\n this.totalDelegations = 0;\n this.leaderRounds = 0;\n this.stopped = false;\n for (const pending of this.pendingResults.values()) {\n clearTimeout(pending.timer);\n }\n this.pendingResults.clear();\n }\n\n private wireDelegation(session: AgentSession): void {\n session.onDelegation = (fromAgentId, targetName, prompt) => {\n if (this.stopped) return;\n\n if (this.leaderRounds >= DELEGATION_BUDGET_ROUNDS) {\n console.log(`[Delegation] BLOCKED: delegation budget exhausted (round ${this.leaderRounds}/${DELEGATION_BUDGET_ROUNDS})`);\n return;\n }\n\n const target = this.agentManager.findByName(targetName);\n if (!target) {\n console.log(`[Delegation] Target agent \"${targetName}\" not found, ignoring`);\n return;\n }\n\n if (this.totalDelegations >= MAX_TOTAL_DELEGATIONS) {\n console.log(`[Delegation] BLOCKED: total delegation limit (${MAX_TOTAL_DELEGATIONS}) reached`);\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId,\n message: `Delegation blocked: total limit of ${MAX_TOTAL_DELEGATIONS} delegations reached. Summarize current results for the user.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n return;\n }\n\n const myTaskId = this.assignedTask.get(fromAgentId);\n const parentDepth = myTaskId ? (this.delegationDepth.get(myTaskId) ?? 0) : 0;\n const newDepth = parentDepth + 1;\n\n if (newDepth > MAX_DELEGATION_DEPTH) {\n console.log(`[Delegation] BLOCKED: depth ${newDepth} exceeds max ${MAX_DELEGATION_DEPTH}`);\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId,\n message: `Delegation blocked: chain depth (${newDepth}) exceeds limit. Complete current work directly.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n return;\n }\n\n const taskId = nanoid();\n this.delegationOrigin.set(taskId, fromAgentId);\n this.delegationDepth.set(taskId, newDepth);\n this.totalDelegations++;\n const fromSession = this.agentManager.get(fromAgentId);\n const fromName = fromSession?.name ?? fromAgentId;\n const fromRole = fromSession?.role ?? \"Team Lead\";\n\n const fullPrompt = this.promptEngine.render(\"delegation-prefix\", { fromName, fromRole, prompt });\n\n console.log(`[Delegation] ${fromAgentId} -> ${target.agentId} (${targetName}) depth=${newDepth} total=${this.totalDelegations}: ${prompt.slice(0, 80)}`);\n this.emitEvent({\n type: \"task:delegated\",\n fromAgentId,\n toAgentId: target.agentId,\n taskId,\n prompt,\n });\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId,\n toAgentId: target.agentId,\n message: prompt,\n messageType: \"delegation\",\n taskId,\n timestamp: Date.now(),\n });\n this.assignedTask.set(target.agentId, taskId);\n target.runTask(taskId, fullPrompt);\n };\n }\n\n private wireResultForwarding(session: AgentSession): void {\n session.onTaskComplete = (agentId, taskId, summary, success) => {\n if (this.stopped) return;\n\n const originAgentId = this.delegationOrigin.get(taskId);\n if (!originAgentId) return;\n this.delegationOrigin.delete(taskId);\n this.delegationDepth.delete(taskId);\n if (this.assignedTask.get(agentId) === taskId) {\n this.assignedTask.delete(agentId);\n }\n\n const originSession = this.agentManager.get(originAgentId);\n if (!originSession) return;\n\n const fromSession = this.agentManager.get(agentId);\n const fromName = fromSession?.name ?? agentId;\n const statusWord = success ? \"completed successfully\" : \"failed\";\n\n console.log(`[ResultForward] ${agentId} -> ${originAgentId}: ${summary.slice(0, 80)} (success=${success})`);\n\n this.emitEvent({\n type: \"task:result-returned\",\n fromAgentId: agentId,\n toAgentId: originAgentId,\n taskId,\n summary,\n success,\n });\n\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: agentId,\n toAgentId: originAgentId,\n message: summary.slice(0, 400),\n messageType: \"result\",\n taskId,\n timestamp: Date.now(),\n });\n\n // Batch results: accumulate and flush to leader after a short window\n this.enqueueResult(originAgentId, { fromName, statusWord, summary: summary.slice(0, 400) });\n };\n }\n\n /**\n * Queue a result for batched forwarding to the origin agent.\n * Flush only when ALL delegated tasks from this origin have returned.\n * The timer is a safety net — if a worker somehow disappears without returning,\n * we don't want the leader to wait forever.\n */\n private enqueueResult(originAgentId: string, result: PendingResult): void {\n let pending = this.pendingResults.get(originAgentId);\n if (pending) {\n clearTimeout(pending.timer);\n pending.results.push(result);\n } else {\n pending = { results: [result], timer: null as unknown as ReturnType<typeof setTimeout> };\n this.pendingResults.set(originAgentId, pending);\n }\n\n // Flush when ALL delegated tasks have returned — no more guessing with timers\n if (!this.hasPendingFrom(originAgentId)) {\n console.log(`[ResultBatch] All delegated tasks returned for ${originAgentId}, flushing ${pending.results.length} result(s)`);\n this.flushResults(originAgentId);\n return;\n }\n\n // Safety net: if a worker is still running after the timeout, flush what we have\n // so the leader isn't blocked forever by a hung worker\n console.log(`[ResultBatch] ${originAgentId} still has pending delegations, waiting (safety timeout: ${RESULT_BATCH_WINDOW_MS / 1000}s)`);\n pending.timer = setTimeout(() => {\n console.log(`[ResultBatch] Safety timeout reached for ${originAgentId}, flushing ${pending.results.length} partial result(s)`);\n this.flushResults(originAgentId);\n }, RESULT_BATCH_WINDOW_MS);\n }\n\n /** Flush all pending results for an origin agent as a single leader prompt. */\n private flushResults(originAgentId: string): void {\n if (this.stopped) return;\n\n const pending = this.pendingResults.get(originAgentId);\n if (!pending || pending.results.length === 0) return;\n this.pendingResults.delete(originAgentId);\n clearTimeout(pending.timer);\n\n const originSession = this.agentManager.get(originAgentId);\n if (!originSession) return;\n\n this.leaderRounds++;\n\n // Hard ceiling: force-complete instead of silently returning\n if (this.leaderRounds > HARD_CEILING_ROUNDS) {\n console.log(`[ResultBatch] Hard ceiling reached (${HARD_CEILING_ROUNDS} rounds). Force-completing.`);\n\n const resultLines = pending.results.map(r =>\n `- ${r.fromName} (${r.statusWord}): ${r.summary}`\n ).join(\"\\n\");\n\n this.emitEvent({\n type: \"team:chat\",\n fromAgentId: originAgentId,\n message: `Team work auto-completed after ${HARD_CEILING_ROUNDS} rounds.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n\n // Emit a synthetic task:done so the UI gets a proper final result\n this.emitEvent({\n type: \"task:done\",\n agentId: originAgentId,\n taskId: `auto-complete-${Date.now()}`,\n result: {\n summary: `Auto-completed after ${HARD_CEILING_ROUNDS} rounds.\\n${resultLines}`,\n changedFiles: [],\n diffStat: \"\",\n testResult: \"unknown\" as const,\n },\n isFinalResult: true,\n });\n return;\n }\n\n // Build round guidance for the leader prompt\n let roundInfo: string;\n const budgetExhausted = this.leaderRounds >= DELEGATION_BUDGET_ROUNDS;\n if (budgetExhausted) {\n roundInfo = `DELEGATION BUDGET REACHED (round ${this.leaderRounds}). No more delegations will be accepted. You MUST summarize the current results and report to the user NOW. Accept the work as-is — the user can request improvements later.`;\n } else if (this.leaderRounds >= DELEGATION_BUDGET_ROUNDS - 1) {\n roundInfo = `Round ${this.leaderRounds}/${DELEGATION_BUDGET_ROUNDS} — LAST delegation round. Only delegate if something is critically broken. Prefer to accept and summarize.`;\n } else {\n roundInfo = `Round ${this.leaderRounds}/${DELEGATION_BUDGET_ROUNDS}`;\n }\n\n const resultLines = pending.results.map(r =>\n `- ${r.fromName} (${r.statusWord}): ${r.summary}`\n ).join(\"\\n\\n\");\n\n const followUpTaskId = nanoid();\n this.resultTaskIds.add(followUpTaskId);\n this.delegationsAtResultStart.set(followUpTaskId, this.totalDelegations);\n const teamContext = this.agentManager.isTeamLead(originAgentId)\n ? this.agentManager.getTeamRoster()\n : undefined;\n\n const batchPrompt = this.promptEngine.render(\"leader-result\", {\n fromName: pending.results.length === 1\n ? pending.results[0].fromName\n : `${pending.results.length} team members`,\n resultStatus: pending.results.every(r => r.statusWord.includes(\"success\"))\n ? \"completed successfully\"\n : \"mixed results\",\n resultSummary: resultLines,\n originalTask: originSession.originalTask ?? \"\",\n roundInfo,\n });\n\n console.log(`[ResultBatch] Flushing ${pending.results.length} result(s) to ${originAgentId} (round ${this.leaderRounds}, budget=${DELEGATION_BUDGET_ROUNDS}, ceiling=${HARD_CEILING_ROUNDS})`);\n originSession.runTask(followUpTaskId, batchPrompt, undefined, teamContext);\n }\n}\n","import { readFileSync, writeFileSync, mkdirSync, existsSync } from \"fs\";\nimport path from \"path\";\n\n// ---------------------------------------------------------------------------\n// Default templates (embedded fallbacks)\n// ---------------------------------------------------------------------------\n\nconst PROMPT_DEFAULTS: Record<string, string> = {\n \"leader-initial\": `You are {{name}}, the Team Lead. {{personality}}\nYou CANNOT write code, run commands, or use any tools. You can ONLY delegate.\n\nTeam:\n{{teamRoster}}\n\nDelegate using this exact format (one per line):\n@AgentName: [project-dir] task description\n\nIMPORTANT: Every delegation MUST start with [project-dir] — the subdirectory path relative to the workspace root where this agent should focus. Example: @Alex: [game/] Fix the CSS overlay in game/styles.css. ALL team members MUST work in the same project directory. Identify the target project first, then use it consistently.\n\nExecution phases:\n1. BUILD: Assign coding tasks to developers now. Include file paths and specific instructions.\n2. VALIDATE (one round, parallel): When dev results come back, assign Code Reviewer AND QA Tester at the same time in a single response. Both run in parallel — do NOT wait for one before assigning the other.\n3. REPORT: After both review and QA report back, summarize and finish. Done.\n\nRules:\n- Never write code yourself. Only delegate.\n- Each delegation must be specific and bounded: include exact file paths, function names, and expected output. Vague delegations (\"improve the UI\") cause scope creep.\n- Phase 1 (this round): Assign developers ONLY. Do NOT assign QA or code review yet — there is no code to test.\n- Phase 2 (one round only): Assign Code Reviewer AND QA Tester simultaneously in one response. This saves a full round.\n- Skip QA entirely for trivial changes (config tweaks, typo fixes, renaming, comment-only changes).\n- Keep the total number of rounds to 2-3. Ship working code now — the user can request improvements later.\n\nTask: {{prompt}}`,\n\n \"leader-continue\": `You are {{name}}, the Team Lead. {{personality}}\nYou CANNOT write code, run commands, or use any tools. You can ONLY delegate.\n\nTeam status:\n{{teamRoster}}\n\n{{originalTask}}\n\nDelegate using: @AgentName: task description\n\n{{prompt}}`,\n\n \"leader-result\": `You are the Team Lead. You CANNOT write or fix code. You can ONLY delegate using @Name: [project-dir] <task>.\n\nOriginal user task: {{originalTask}}\n\n{{roundInfo}}\n\nTeam status:\n{{teamRoster}}\n\nNew result from {{fromName}} ({{resultStatus}}):\n{{resultSummary}}\n\nDecision priority (choose the FIRST that applies):\n1. ALL SUCCEEDED → Summarize the outcome for the user. You are DONE.\n2. Dev succeeded + this is a substantial change (new feature, significant logic change) + neither QA nor Code Reviewer has run yet → Assign BOTH @CodeReviewer AND @QATester simultaneously in ONE response (parallel). Skip this step for trivial changes.\n3. Dev succeeded + trivial change (config, rename, typo, style-only) → Summarize and you are DONE. No QA needed.\n4. QA or Code Review results received → Accept ALL findings as informational. Summarize and you are DONE. NEVER delegate fixes based on QA or review results.\n5. FAILED + critically broken (won't run, crash on start) → delegate ONE targeted fix to the original developer.\n6. FAILED + permanent blocker (auth error, service down, missing dependency) → report the blocker to the user.\n7. Same error repeated → STOP and report to the user.\n\nCRITICAL RULES:\n- QA/testing findings are ALWAYS informational. NEVER delegate fixes based on QA results. Note them and finish.\n- Code review comments are ALWAYS informational. Only delegate a fix if the code literally doesn't compile or run.\n- When assigning parallel QA + Review (rule 2): write BOTH @Name: lines in one response. Do not wait for one to finish.\n- Maximum ONE fix round after a failure. After that, accept and summarize.\n- Prefer DONE over more delegation. The user can request improvements later.`,\n\n \"worker-initial\": `Your name is {{name}}, your role is {{role}}. {{personality}}\n\nCONVERGENCE RULES (follow strictly):\n- Do the MINIMUM needed to satisfy the task. Simple and working beats perfect and slow.\n- Only touch files directly required by this task. Do NOT refactor, clean up, or \"improve\" unrelated code.\n- If you are uncertain between two approaches, choose the simpler one and note it in SUMMARY.\n- Do NOT add features, error handling, or improvements that were not explicitly asked for.\n- Sub-delegate (@AgentName:) when you need a teammate's specialized expertise (e.g. frontend dev asking backend dev for an API contract, or asking QA to verify a specific behavior). Natural peer collaboration is encouraged — just keep it focused.\n\nHARD LIMITS:\n- Do NOT start any dev server, HTTP server, or file server (no npx serve, no python -m http.server, no live-server, etc.). The system handles preview automatically.\n- Do NOT install new dependencies unless the task explicitly requires it. Note any missing deps in SUMMARY instead.\n\nStart with one sentence describing your approach (e.g. \"I'll add the API route in routes.ts and wire it to the existing handler.\"). Then do the work.\n\nWhen you finish, report your result in this exact format:\nSTATUS: done | failed\nFILES_CHANGED: (list of files you created or modified, one per line)\nSUMMARY: (one sentence — what you did and why it satisfies the task)\n\n{{prompt}}`,\n\n \"worker-continue\": `{{prompt}}`,\n\n \"delegation-prefix\": `[Assigned by {{fromName}} ({{fromRole}})]\n{{prompt}}`,\n\n \"delegation-hint\": `To delegate a task to another agent, output on its own line: @AgentName: <task description>`,\n};\n\n// ---------------------------------------------------------------------------\n// PromptEngine class\n// ---------------------------------------------------------------------------\n\nexport class PromptEngine {\n private templates: Record<string, string> = { ...PROMPT_DEFAULTS };\n private promptsDir: string | undefined;\n\n constructor(promptsDir?: string) {\n this.promptsDir = promptsDir;\n }\n\n /**\n * Initialize prompt templates on startup.\n * Creates promptsDir with defaults if it doesn't exist,\n * then loads all .md files (falling back to defaults for missing ones).\n */\n init(): void {\n if (!this.promptsDir) {\n console.log(`[Prompts] No promptsDir configured, using ${Object.keys(PROMPT_DEFAULTS).length} default templates`);\n return;\n }\n\n if (!existsSync(this.promptsDir)) {\n mkdirSync(this.promptsDir, { recursive: true });\n for (const [name, content] of Object.entries(PROMPT_DEFAULTS)) {\n writeFileSync(path.join(this.promptsDir, `${name}.md`), content, \"utf-8\");\n }\n console.log(`[Prompts] Created ${this.promptsDir} with ${Object.keys(PROMPT_DEFAULTS).length} default templates`);\n }\n this.reload();\n }\n\n /**\n * Re-read all templates from disk. Missing files fall back to built-in defaults.\n */\n reload(): void {\n const merged: Record<string, string> = { ...PROMPT_DEFAULTS };\n let loaded = 0;\n let defaulted = 0;\n\n if (this.promptsDir) {\n for (const name of Object.keys(PROMPT_DEFAULTS)) {\n const filePath = path.join(this.promptsDir, `${name}.md`);\n if (existsSync(filePath)) {\n try {\n merged[name] = readFileSync(filePath, \"utf-8\");\n loaded++;\n } catch {\n defaulted++;\n }\n } else {\n defaulted++;\n }\n }\n } else {\n defaulted = Object.keys(PROMPT_DEFAULTS).length;\n }\n\n this.templates = merged;\n console.log(`[Prompts] Loaded ${loaded} templates (${defaulted} using defaults)`);\n }\n\n /**\n * Render a named template with variable substitution.\n * {{variable}} placeholders are replaced with the provided values.\n */\n render(templateName: string, vars: Record<string, string | undefined>): string {\n const template = this.templates[templateName] ?? PROMPT_DEFAULTS[templateName];\n if (!template) {\n console.warn(`[Prompts] Unknown template: ${templateName}`);\n return vars[\"prompt\"] ?? \"\";\n }\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => vars[key] ?? \"\");\n }\n}\n","export interface RetryState {\n taskId: string;\n originalPrompt: string;\n attempt: number;\n maxRetries: number;\n errors: string[];\n}\n\nexport class RetryTracker {\n private state = new Map<string, RetryState>();\n private maxRetries: number;\n private escalateToLeader: boolean;\n\n constructor(maxRetries = 2, escalateToLeader = true) {\n this.maxRetries = maxRetries;\n this.escalateToLeader = escalateToLeader;\n }\n\n /**\n * Initialize tracking for a task. Call before first attempt.\n */\n track(taskId: string, originalPrompt: string): void {\n this.state.set(taskId, {\n taskId,\n originalPrompt,\n attempt: 0,\n maxRetries: this.maxRetries,\n errors: [],\n });\n }\n\n /**\n * Check if the task has retries remaining.\n */\n shouldRetry(taskId: string): boolean {\n const s = this.state.get(taskId);\n if (!s) return false;\n return s.attempt < s.maxRetries;\n }\n\n /**\n * Record a failed attempt. Returns the updated state.\n */\n recordAttempt(taskId: string, error: string): RetryState | undefined {\n const s = this.state.get(taskId);\n if (!s) return undefined;\n s.attempt++;\n s.errors.push(error);\n return { ...s };\n }\n\n /**\n * Get the original prompt for retrying (with error context appended).\n */\n getRetryPrompt(taskId: string): string | null {\n const s = this.state.get(taskId);\n if (!s) return null;\n const lastError = s.errors[s.errors.length - 1] ?? \"unknown error\";\n return `${s.originalPrompt}\n\n[RETRY — Attempt ${s.attempt + 1}/${s.maxRetries}]\nPrevious attempt failed with:\n${lastError.slice(0, 500)}\n\nBefore retrying, follow this protocol:\n1. DIAGNOSE: Read the error carefully. Identify the root cause, not just the symptom.\n2. FIX: Address the root cause first (missing dependency, wrong path, syntax error, etc.)\n3. VERIFY: After fixing, confirm the fix works before moving on.\nDo NOT repeat the same approach that failed.`;\n }\n\n /**\n * Get escalation prompt for the team lead (when all retries exhausted).\n * Returns null if escalation is disabled or task not tracked.\n */\n getEscalation(taskId: string): { prompt: string } | null {\n if (!this.escalateToLeader) return null;\n const s = this.state.get(taskId);\n if (!s) return null;\n if (s.attempt < s.maxRetries) return null;\n\n const errorList = s.errors.map((e, i) => ` Attempt ${i + 1}: ${e.slice(0, 200)}`).join(\"\\n\");\n const sameError = s.errors.length >= 2 && s.errors.every(e => {\n const key = e.slice(0, 80).toLowerCase();\n return key === s.errors[0].slice(0, 80).toLowerCase();\n });\n\n return {\n prompt: `[ESCALATION] A task has failed after ${s.attempt} attempts and needs your decision.\n\nOriginal task: \"${s.originalPrompt.slice(0, 300)}\"\n\nFailure history:\n${errorList}\n${sameError ? \"\\n⚠️ All attempts failed with the SAME error. This is likely a PERMANENT blocker (missing credentials, API limits, service unavailable). Do NOT reassign — report to user.\\n\" : \"\"}\nOptions (choose ONE):\n1. If the error is FIXABLE (code bug, wrong path): Reassign to a DIFFERENT team member with revised instructions\n2. If the task is too large: Break into smaller pieces and delegate each part\n3. If the error is PERMANENT (auth failure, service down, insufficient balance, missing API key): Report the blocker to the user. Do NOT reassign.\n\nIMPORTANT: If the same error keeps repeating, choose option 3. Do not waste resources retrying.`,\n };\n }\n\n /**\n * Remove tracking for a completed/cancelled task.\n */\n clear(taskId: string): void {\n this.state.delete(taskId);\n }\n}\n","import { execSync } from \"child_process\";\nimport path from \"path\";\n\nconst TIMEOUT = 5000;\n\n/**\n * Check if a directory is inside a git repository.\n */\nfunction isGitRepo(cwd: string): boolean {\n try {\n execSync(\"git rev-parse --is-inside-work-tree\", { cwd, stdio: \"ignore\", timeout: TIMEOUT });\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Create a git worktree for an agent's task.\n * Returns the worktree path, or null if workspace is not a git repo.\n */\nexport function createWorktree(\n workspace: string,\n agentId: string,\n taskId: string,\n agentName: string,\n): string | null {\n if (!isGitRepo(workspace)) return null;\n\n const worktreeDir = path.join(workspace, \".worktrees\");\n const worktreeName = `${agentId}-${taskId}`;\n const worktreePath = path.join(worktreeDir, worktreeName);\n const branch = `agent/${agentName.toLowerCase().replace(/\\s+/g, \"-\")}/${taskId}`;\n\n try {\n execSync(`git worktree add \"${worktreePath}\" -b \"${branch}\"`, {\n cwd: workspace,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n return worktreePath;\n } catch (err) {\n console.error(`[Worktree] Failed to create worktree: ${(err as Error).message}`);\n return null;\n }\n}\n\nexport interface MergeResult {\n success: boolean;\n conflictFiles?: string[];\n}\n\n/**\n * Merge a worktree branch back to the current branch and clean up.\n */\nexport function mergeWorktree(\n workspace: string,\n worktreePath: string,\n branch: string,\n): MergeResult {\n try {\n execSync(`git merge --no-ff \"${branch}\"`, {\n cwd: workspace,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n // Clean up worktree and branch\n try {\n execSync(`git worktree remove \"${worktreePath}\"`, { cwd: workspace, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* already removed */ }\n try {\n execSync(`git branch -d \"${branch}\"`, { cwd: workspace, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* branch not found or not fully merged */ }\n\n return { success: true };\n } catch (err) {\n // Merge conflict — extract conflicting files\n let conflictFiles: string[] = [];\n try {\n const output = execSync(\"git diff --name-only --diff-filter=U\", {\n cwd: workspace,\n encoding: \"utf-8\",\n timeout: TIMEOUT,\n }).trim();\n conflictFiles = output ? output.split(\"\\n\") : [];\n // Abort the failed merge\n execSync(\"git merge --abort\", { cwd: workspace, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* ignore */ }\n\n return { success: false, conflictFiles };\n }\n}\n\n/**\n * Force-remove a worktree and its branch (used on task failure/cancel).\n */\nexport function removeWorktree(worktreePath: string, branch: string, workspace?: string): void {\n const cwd = workspace ?? path.dirname(path.dirname(worktreePath));\n try {\n execSync(`git worktree remove --force \"${worktreePath}\"`, { cwd, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* already removed */ }\n try {\n execSync(`git branch -D \"${branch}\"`, { cwd, stdio: \"pipe\", timeout: TIMEOUT });\n } catch { /* branch not found */ }\n}\n","export { Orchestrator } from \"./orchestrator.js\";\nexport { AgentSession } from \"./agent-session.js\";\nexport { previewServer } from \"./preview-server.js\";\nexport { AgentManager } from \"./agent-manager.js\";\nexport { DelegationRouter } from \"./delegation.js\";\nexport { PromptEngine } from \"./prompt-templates.js\";\nexport { RetryTracker } from \"./retry.js\";\nexport { createWorktree, mergeWorktree, removeWorktree } from \"./worktree.js\";\n\nexport type { AIBackend, BuildArgsOpts } from \"./ai-backend.js\";\nexport type {\n AgentStatus,\n RiskLevel,\n Decision,\n TaskResultPayload,\n OrchestratorEvent,\n OrchestratorEventMap,\n OrchestratorOptions,\n CreateAgentOpts,\n CreateTeamOpts,\n RunTaskOpts,\n WorktreeOptions,\n RetryOptions,\n TaskStartedEvent,\n TaskDoneEvent,\n TaskFailedEvent,\n TaskDelegatedEvent,\n TaskRetryingEvent,\n AgentStatusEvent,\n ApprovalNeededEvent,\n LogAppendEvent,\n TeamChatEvent,\n TaskQueuedEvent,\n WorktreeCreatedEvent,\n WorktreeMergedEvent,\n AgentCreatedEvent,\n AgentFiredEvent,\n TaskResultReturnedEvent,\n} from \"./types.js\";\n\nimport { Orchestrator } from \"./orchestrator.js\";\nimport type { OrchestratorOptions } from \"./types.js\";\n\n/**\n * Factory function to create an Orchestrator instance.\n */\nexport function createOrchestrator(options: OrchestratorOptions): Orchestrator {\n return new Orchestrator(options);\n}\n","import { registerChannel, initTransports, publishEvent, destroyTransports } from \"./transport.js\";\nimport { wsChannel, setPairCode } from \"./ws-server.js\";\nimport { ablyChannel } from \"./ably-client.js\";\nimport { telegramChannel } from \"./telegram-channel.js\";\nimport { config, hasSetupRun, reloadConfig, saveConfig } from \"./config.js\";\nimport { runSetup } from \"./setup.js\";\nimport { detectBackends, getBackend, getAllBackends } from \"./backends.js\";\nimport { createOrchestrator, previewServer, type Orchestrator, type OrchestratorEvent } from \"@bit-office/orchestrator\";\nimport type { Command, GatewayEvent } from \"@office/shared\";\nimport { AGENT_PRESETS } from \"@office/shared\";\nimport { nanoid } from \"nanoid\";\nimport { execFile } from \"child_process\";\nimport { existsSync } from \"fs\";\nimport path from \"path\";\nimport os from \"os\";\n\n// Register all channels — each one self-activates if configured\nregisterChannel(wsChannel);\nregisterChannel(ablyChannel);\nregisterChannel(telegramChannel);\n\nlet orc: Orchestrator;\n\nfunction generatePairCode(): string {\n return nanoid(6).toUpperCase();\n}\n\nfunction showPairCode() {\n const code = generatePairCode();\n setPairCode(code);\n console.log(\"\");\n console.log(\"╔══════════════════════════════════╗\");\n console.log(\"║ PAIR CODE: \" + code + \" ║\");\n console.log(\"╚══════════════════════════════════╝\");\n console.log(\"\");\n console.log(`Open your phone → enter gateway address + code`);\n console.log(\"\");\n}\n\n// ---------------------------------------------------------------------------\n// Map orchestrator events → GatewayEvent (wire protocol)\n// ---------------------------------------------------------------------------\n\nfunction mapOrchestratorEvent(e: OrchestratorEvent): GatewayEvent | null {\n switch (e.type) {\n case \"task:started\":\n return { type: \"TASK_STARTED\", agentId: e.agentId, taskId: e.taskId, prompt: e.prompt };\n case \"task:done\":\n return { type: \"TASK_DONE\", agentId: e.agentId, taskId: e.taskId, result: e.result, isFinalResult: e.isFinalResult };\n case \"task:failed\":\n return { type: \"TASK_FAILED\", agentId: e.agentId, taskId: e.taskId, error: e.error };\n case \"task:delegated\":\n return { type: \"TASK_DELEGATED\", fromAgentId: e.fromAgentId, toAgentId: e.toAgentId, taskId: e.taskId, prompt: e.prompt };\n case \"agent:status\":\n return { type: \"AGENT_STATUS\", agentId: e.agentId, status: e.status };\n case \"approval:needed\":\n return { type: \"APPROVAL_NEEDED\", approvalId: e.approvalId, agentId: e.agentId, taskId: e.taskId, title: e.title, summary: e.summary, riskLevel: e.riskLevel };\n case \"log:append\":\n return { type: \"LOG_APPEND\", agentId: e.agentId, taskId: e.taskId, stream: e.stream, chunk: e.chunk };\n case \"team:chat\":\n return { type: \"TEAM_CHAT\", fromAgentId: e.fromAgentId, toAgentId: e.toAgentId, message: e.message, messageType: e.messageType, taskId: e.taskId, timestamp: e.timestamp };\n case \"task:queued\":\n return { type: \"TASK_QUEUED\", agentId: e.agentId, taskId: e.taskId, prompt: e.prompt, position: e.position };\n case \"agent:created\":\n return { type: \"AGENT_CREATED\", agentId: e.agentId, name: e.name, role: e.role, palette: e.palette, personality: e.personality, backend: e.backend, isTeamLead: e.isTeamLead, teamId: e.teamId };\n case \"agent:fired\":\n return { type: \"AGENT_FIRED\", agentId: e.agentId };\n case \"task:result-returned\":\n return { type: \"TASK_RESULT_RETURNED\", fromAgentId: e.fromAgentId, toAgentId: e.toAgentId, taskId: e.taskId, summary: e.summary, success: e.success };\n // New events (worktree, retry) — log only, no wire protocol equivalent yet\n case \"task:retrying\":\n console.log(`[Retry] Agent ${e.agentId} retrying task ${e.taskId} (attempt ${e.attempt}/${e.maxRetries})`);\n return null;\n case \"worktree:created\":\n console.log(`[Worktree] Created ${e.worktreePath} for agent ${e.agentId}`);\n return null;\n case \"worktree:merged\":\n console.log(`[Worktree] Merged branch ${e.branch} for agent ${e.agentId} (success=${e.success})`);\n return null;\n default:\n return null;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Command handler — maps incoming commands → orchestrator method calls\n// ---------------------------------------------------------------------------\n\nfunction handleCommand(parsed: Command) {\n console.log(\"[Gateway] Received command:\", parsed.type, JSON.stringify(parsed));\n\n switch (parsed.type) {\n case \"CREATE_AGENT\": {\n const backendId = parsed.backend ?? config.defaultBackend;\n console.log(`[Gateway] Creating agent: ${parsed.agentId} (${parsed.name} - ${parsed.role}) backend=${backendId}`);\n orc.createAgent({\n agentId: parsed.agentId,\n name: parsed.name,\n role: parsed.role,\n personality: parsed.personality,\n backend: backendId,\n palette: parsed.palette,\n });\n break;\n }\n case \"FIRE_AGENT\": {\n console.log(`[Gateway] Firing agent: ${parsed.agentId}`);\n orc.removeAgent(parsed.agentId);\n break;\n }\n case \"RUN_TASK\": {\n let agent = orc.getAgent(parsed.agentId);\n if (!agent && parsed.name) {\n const backendId = parsed.backend ?? config.defaultBackend;\n console.log(`[Gateway] Auto-creating agent for RUN_TASK: ${parsed.agentId} backend=${backendId}`);\n orc.createAgent({\n agentId: parsed.agentId,\n name: parsed.name,\n role: parsed.role ?? \"\",\n personality: parsed.personality,\n backend: backendId,\n resumeHistory: true,\n });\n agent = orc.getAgent(parsed.agentId);\n }\n if (agent) {\n console.log(`[Gateway] RUN_TASK: agent=${parsed.agentId}, isLead=${orc.isTeamLead(parsed.agentId)}, hasTeam=${orc.getAllAgents().length > 1}`);\n orc.runTask(parsed.agentId, parsed.taskId, parsed.prompt, { repoPath: parsed.repoPath });\n } else {\n publishEvent({\n type: \"TASK_FAILED\",\n agentId: parsed.agentId,\n taskId: parsed.taskId,\n error: \"Agent not found. Create it first.\",\n });\n }\n break;\n }\n case \"APPROVAL_DECISION\": {\n orc.resolveApproval(parsed.approvalId, parsed.decision);\n break;\n }\n case \"CANCEL_TASK\": {\n orc.cancelTask(parsed.agentId);\n break;\n }\n case \"SERVE_PREVIEW\": {\n const filePath = parsed.filePath;\n console.log(`[Gateway] SERVE_PREVIEW: ${filePath}`);\n previewServer.serve(filePath);\n break;\n }\n case \"OPEN_FILE\": {\n const raw = parsed.path;\n const resolved = path.resolve(config.defaultWorkspace, raw);\n const normalized = path.normalize(resolved);\n\n if (!normalized.startsWith(config.defaultWorkspace + path.sep) && normalized !== config.defaultWorkspace) {\n console.error(`[Gateway] Blocked OPEN_FILE: path \"${raw}\" resolves outside workspace`);\n break;\n }\n if (!existsSync(normalized)) {\n console.error(`[Gateway] OPEN_FILE: path does not exist: ${normalized}`);\n break;\n }\n\n console.log(`[Gateway] Opening file: ${normalized}`);\n execFile(\"open\", [normalized], (err) => {\n if (err) console.error(`[Gateway] Failed to open file: ${err.message}`);\n });\n break;\n }\n case \"CREATE_TEAM\": {\n const { leadPresetIndex, memberPresetIndices, backends } = parsed;\n const allIndices = [leadPresetIndex, ...memberPresetIndices.filter(i => i !== leadPresetIndex)];\n console.log(`[Gateway] Creating team: lead=${leadPresetIndex}, members=${memberPresetIndices.join(\",\")}`);\n let leadAgentId: string | null = null;\n const teamId = `team-${nanoid(6)}`;\n\n for (const idx of allIndices) {\n const preset = AGENT_PRESETS[idx];\n if (!preset) continue;\n const agentId = `agent-${nanoid(6)}`;\n const backendId = backends?.[String(idx)] ?? config.defaultBackend;\n\n if (idx === leadPresetIndex) {\n leadAgentId = agentId;\n orc.setTeamLead(agentId);\n }\n\n orc.createAgent({\n agentId,\n name: preset.name,\n role: preset.role,\n personality: preset.personality,\n backend: backendId,\n palette: preset.palette,\n teamId,\n });\n }\n\n if (leadAgentId) {\n const leadPreset = AGENT_PRESETS[leadPresetIndex];\n publishEvent({\n type: \"TEAM_CHAT\",\n fromAgentId: leadAgentId,\n message: `Team created! ${leadPreset?.name ?? \"Lead\"} is the Team Lead with ${memberPresetIndices.length} team members.`,\n messageType: \"status\",\n timestamp: Date.now(),\n });\n }\n break;\n }\n case \"STOP_TEAM\": {\n console.log(\"[Gateway] Stopping team work\");\n orc.stopTeam();\n break;\n }\n case \"FIRE_TEAM\": {\n console.log(\"[Gateway] Firing entire team\");\n orc.fireTeam();\n break;\n }\n case \"PING\": {\n console.log(\"[Gateway] Received PING, broadcasting agent statuses\");\n for (const agent of orc.getAllAgents()) {\n publishEvent({\n type: \"AGENT_CREATED\",\n agentId: agent.agentId,\n name: agent.name,\n role: agent.role,\n palette: agent.palette,\n personality: undefined,\n backend: agent.backend,\n isTeamLead: agent.isTeamLead,\n teamId: agent.teamId,\n });\n publishEvent({\n type: \"AGENT_STATUS\",\n agentId: agent.agentId,\n status: agent.status,\n });\n }\n break;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Main\n// ---------------------------------------------------------------------------\n\nasync function main() {\n // First run or --setup flag: interactive setup wizard\n if (!hasSetupRun() || process.argv.includes(\"--setup\")) {\n await runSetup();\n reloadConfig();\n }\n\n // Auto-detect AI backends if not already detected\n if (config.detectedBackends.length === 0) {\n const detected = detectBackends();\n if (detected.length > 0) {\n config.detectedBackends = detected;\n if (!config.defaultBackend || !detected.includes(config.defaultBackend)) {\n config.defaultBackend = detected[0];\n }\n saveConfig({ detectedBackends: detected, defaultBackend: config.defaultBackend });\n }\n }\n\n // Register all known backends so any can be selected from the UI.\n // Detection only determines the default; uninstalled ones will fail at spawn time with a clear error.\n const backendsToUse = getAllBackends();\n\n orc = createOrchestrator({\n workspace: config.defaultWorkspace,\n backends: backendsToUse,\n defaultBackend: config.defaultBackend,\n worktree: false, // disabled by default for now\n retry: { maxRetries: 2, escalateToLeader: true },\n promptsDir: path.join(os.homedir(), \".bit-office\", \"prompts\"),\n sandboxMode: config.sandboxMode,\n });\n\n // Forward orchestrator events to transport channels\n const forwardEvent = (event: OrchestratorEvent) => {\n const mapped = mapOrchestratorEvent(event);\n if (mapped) publishEvent(mapped);\n };\n\n orc.on(\"task:started\", forwardEvent);\n orc.on(\"task:done\", forwardEvent);\n orc.on(\"task:failed\", forwardEvent);\n orc.on(\"task:delegated\", forwardEvent);\n orc.on(\"task:retrying\", forwardEvent);\n orc.on(\"agent:status\", forwardEvent);\n orc.on(\"approval:needed\", forwardEvent);\n orc.on(\"log:append\", forwardEvent);\n orc.on(\"team:chat\", forwardEvent);\n orc.on(\"task:queued\", forwardEvent);\n orc.on(\"worktree:created\", forwardEvent);\n orc.on(\"worktree:merged\", forwardEvent);\n orc.on(\"agent:created\", forwardEvent);\n orc.on(\"agent:fired\", forwardEvent);\n orc.on(\"task:result-returned\", forwardEvent);\n\n const backendNames = config.detectedBackends.map((id) => getBackend(id)?.name ?? id).join(\", \");\n console.log(`[Gateway] AI backends: ${backendNames || \"none detected\"} (default: ${getBackend(config.defaultBackend)?.name ?? config.defaultBackend})`);\n console.log(`[Gateway] Permissions: ${config.sandboxMode === \"full\" ? \"Full access\" : \"Sandbox\"}`);\n console.log(`[Gateway] Starting for machine: ${config.machineId}`);\n\n // Generate and display pair code\n showPairCode();\n\n // Start transports (WS + optional Ably)\n await initTransports(handleCommand);\n\n console.log(\"[Gateway] Listening for commands...\");\n console.log(\"[Gateway] Press 'p' + Enter to generate a new pair code\");\n\n // Auto-open browser only in production mode (pnpm start, not dev)\n if (process.env.NODE_ENV !== \"development\" && existsSync(config.webDir)) {\n const url = `http://localhost:${config.wsPort}`;\n console.log(`[Gateway] Opening ${url}`);\n execFile(\"open\", [url]);\n }\n\n // Listen for stdin commands\n if (process.stdin.isTTY) {\n process.stdin.setEncoding(\"utf-8\");\n process.stdin.on(\"data\", (data: string) => {\n const cmd = data.trim().toLowerCase();\n if (cmd === \"p\") {\n showPairCode();\n }\n });\n }\n}\n\nfunction cleanup() {\n console.log(\"[Gateway] Shutting down...\");\n previewServer.stop();\n orc?.destroy();\n destroyTransports();\n process.exit(0);\n}\nprocess.on(\"SIGINT\", cleanup);\nprocess.on(\"SIGTERM\", cleanup);\nprocess.on(\"SIGHUP\", cleanup);\n\nmain().catch(console.error);\n"],"mappings":"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","names":["util","objectUtil","path","errorUtil","path","errorMap","ctx","result","issues","elements","processed","result","r","ZodFirstPartyTypeKind","resolve","Ably","resolve","nanoid","spawn","execSync","path","existsSync","readFileSync","writeFileSync","mkdirSync","homedir","nanoid","path","homedir","existsSync","readFileSync","mkdirSync","writeFileSync","execSync","spawn","pending","resolve","nanoid","resultLines","readFileSync","writeFileSync","mkdirSync","existsSync","path","execSync","path","nanoid","session","nanoid","existsSync","path","backends"]}
|