@vm0/cli 9.249.1 → 9.249.2
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/{agent-PMWDKCSZ.js → agent-TOFXTWYP.js} +11 -10
- package/{agent-PMWDKCSZ.js.map → agent-TOFXTWYP.js.map} +1 -1
- package/{banking-S5RH46G5.js → banking-U7I6EJUO.js} +8 -7
- package/{banking-S5RH46G5.js.map → banking-U7I6EJUO.js.map} +1 -1
- package/{chat-2ZTZUIWC.js → chat-77EDGFMS.js} +9 -8
- package/{chat-2ZTZUIWC.js.map → chat-77EDGFMS.js.map} +1 -1
- package/{chunk-DIRAZ3YX.js → chunk-3VVCUQPB.js} +3 -3
- package/{chunk-DIRAZ3YX.js.map → chunk-3VVCUQPB.js.map} +1 -1
- package/{chunk-PLOJYRFL.js → chunk-4HN7U3JF.js} +40 -564
- package/chunk-4HN7U3JF.js.map +1 -0
- package/{chunk-FF5L22OE.js → chunk-5CZNUTFF.js} +3 -3
- package/chunk-A2NKQGRI.js +491 -0
- package/chunk-A2NKQGRI.js.map +1 -0
- package/{chunk-J2I5GYLR.js → chunk-AFNSFKAH.js} +5 -5
- package/{chunk-L63QVTYZ.js → chunk-BQOOTJNB.js} +27 -672
- package/chunk-BQOOTJNB.js.map +1 -0
- package/{chunk-KLIW3XK7.js → chunk-GPF7NSX7.js} +2 -2
- package/{chunk-HUMR2SA3.js → chunk-HSGQT7LT.js} +3 -3
- package/{chunk-SAW74AR6.js → chunk-JCLLQRCI.js} +3 -3
- package/{chunk-B3W2RUBP.js → chunk-LD4ZVU4O.js} +2 -2
- package/chunk-N6TDQYGF.js +678 -0
- package/chunk-N6TDQYGF.js.map +1 -0
- package/{chunk-KQN5YZZP.js → chunk-ROB3OE37.js} +10 -113
- package/chunk-ROB3OE37.js.map +1 -0
- package/{chunk-LTDQISD7.js → chunk-SB7EZ2ZO.js} +2 -2
- package/{chunk-RTYT3CSZ.js → chunk-UG5XA6KU.js} +2 -2
- package/{chunk-LKDE4AUC.js → chunk-UNQJRTJQ.js} +3 -3
- package/chunk-W75R7EZF.js +17 -0
- package/chunk-W75R7EZF.js.map +1 -0
- package/chunk-WDDZJGWL.js +32 -0
- package/chunk-WDDZJGWL.js.map +1 -0
- package/{chunk-JFY6GK7Y.js → chunk-X2545RBX.js} +2 -2
- package/{chunk-ZE2VIESK.js → chunk-X4DBCBU4.js} +2 -2
- package/{computer-use-GRK4TZYN.js → computer-use-BCGPVGWS.js} +7 -6
- package/{computer-use-GRK4TZYN.js.map → computer-use-BCGPVGWS.js.map} +1 -1
- package/{connector-2SVH4F2N.js → connector-CHZSI2LW.js} +14 -13
- package/{connector-2SVH4F2N.js.map → connector-CHZSI2LW.js.map} +1 -1
- package/credit-RWFBPKOS.js +166 -0
- package/credit-RWFBPKOS.js.map +1 -0
- package/{developer-support-RYTLIFUN.js → developer-support-IVR3HIP7.js} +8 -7
- package/{developer-support-RYTLIFUN.js.map → developer-support-IVR3HIP7.js.map} +1 -1
- package/{doctor-CS5TFE6A.js → doctor-KGWTXW2Q.js} +39 -13
- package/doctor-KGWTXW2Q.js.map +1 -0
- package/{esm-PZKPCIYJ.js → esm-GOCEMHJO.js} +3 -3
- package/{feishu-HFQIJDBU.js → feishu-PLF4P5OG.js} +8 -7
- package/{feishu-HFQIJDBU.js.map → feishu-PLF4P5OG.js.map} +1 -1
- package/{finance-56HIRALT.js → finance-LVFG3WWP.js} +8 -7
- package/{finance-56HIRALT.js.map → finance-LVFG3WWP.js.map} +1 -1
- package/{generate-4FEC4YVM.js → generate-4FIBMMJO.js} +77 -22
- package/generate-4FIBMMJO.js.map +1 -0
- package/{getMachineId-bsd-L73QENVB.js → getMachineId-bsd-SB7C44VX.js} +4 -4
- package/{getMachineId-darwin-TCCWKQ2S.js → getMachineId-darwin-R4BWY3CQ.js} +4 -4
- package/{getMachineId-linux-TJYYUZVM.js → getMachineId-linux-BR4HVNPW.js} +3 -3
- package/{getMachineId-unsupported-DPRVLH4Y.js → getMachineId-unsupported-FPGM635L.js} +3 -3
- package/{getMachineId-win-7EE436CJ.js → getMachineId-win-RB4JMF33.js} +4 -4
- package/{github-AALJ7IEM.js → github-WHNAVVG3.js} +8 -7
- package/{github-AALJ7IEM.js.map → github-WHNAVVG3.js.map} +1 -1
- package/{goal-CFSXEKHU.js → goal-G4J2BQ5Z.js} +8 -7
- package/{goal-CFSXEKHU.js.map → goal-G4J2BQ5Z.js.map} +1 -1
- package/{host-6NKXFQCO.js → host-3W6U2ZUP.js} +8 -7
- package/{host-6NKXFQCO.js.map → host-3W6U2ZUP.js.map} +1 -1
- package/{intro-MIVVJG7M.js → intro-PMHOBGDL.js} +3 -3
- package/{logs-F4KPELTF.js → logs-P7JLTGXY.js} +10 -9
- package/{logs-F4KPELTF.js.map → logs-P7JLTGXY.js.map} +1 -1
- package/{mail-RZTLZU3I.js → mail-LIAOXDD4.js} +12 -11
- package/{mail-RZTLZU3I.js.map → mail-LIAOXDD4.js.map} +1 -1
- package/{maps-QRHGR33R.js → maps-C4NOXSE7.js} +8 -7
- package/{maps-QRHGR33R.js.map → maps-C4NOXSE7.js.map} +1 -1
- package/{model-6N5VPIS5.js → model-I2MNQ5KC.js} +9 -8
- package/{model-6N5VPIS5.js.map → model-I2MNQ5KC.js.map} +1 -1
- package/{model-provider-UZO32ZTC.js → model-provider-AOCCHEMP.js} +9 -8
- package/{model-provider-UZO32ZTC.js.map → model-provider-AOCCHEMP.js.map} +1 -1
- package/{org-26ZL2W2U.js → org-MVBG3WXZ.js} +9 -8
- package/{org-26ZL2W2U.js.map → org-MVBG3WXZ.js.map} +1 -1
- package/package.json +1 -1
- package/{phone-QTRZLYIG.js → phone-4OZQFYHU.js} +8 -7
- package/{phone-QTRZLYIG.js.map → phone-4OZQFYHU.js.map} +1 -1
- package/{preference-JCFTTUBN.js → preference-H2A3WBGQ.js} +9 -8
- package/{preference-JCFTTUBN.js.map → preference-H2A3WBGQ.js.map} +1 -1
- package/{resource-64R7T4FF.js → resource-CPCQ6V6M.js} +9 -8
- package/{resource-64R7T4FF.js.map → resource-CPCQ6V6M.js.map} +1 -1
- package/{scrape-LVGJ56IS.js → scrape-6RMFDYAT.js} +8 -7
- package/{scrape-LVGJ56IS.js.map → scrape-6RMFDYAT.js.map} +1 -1
- package/{search-TRISF64L.js → search-HSQVSQZY.js} +10 -9
- package/{search-TRISF64L.js.map → search-HSQVSQZY.js.map} +1 -1
- package/{secret-UAJDU3SX.js → secret-S4D6CNOX.js} +9 -8
- package/{secret-UAJDU3SX.js.map → secret-S4D6CNOX.js.map} +1 -1
- package/{slack-PDOPNS5Z.js → slack-E3E2NIDZ.js} +50 -175
- package/slack-E3E2NIDZ.js.map +1 -0
- package/{teams-BL36IS5U.js → teams-CLEWT2LQ.js} +8 -7
- package/{teams-BL36IS5U.js.map → teams-CLEWT2LQ.js.map} +1 -1
- package/{telegram-X7YTUVNV.js → telegram-35FKKA4K.js} +8 -7
- package/{telegram-X7YTUVNV.js.map → telegram-35FKKA4K.js.map} +1 -1
- package/{undici-ZMFN7TNU.js → undici-YXSVPIYI.js} +2 -2
- package/upgrade-DNGUR42E.js +50 -0
- package/upgrade-DNGUR42E.js.map +1 -0
- package/{variable-EBCBNZSU.js → variable-C7RWUPV6.js} +9 -8
- package/{variable-EBCBNZSU.js.map → variable-C7RWUPV6.js.map} +1 -1
- package/{video-3HFJJJEE.js → video-JS5VOA2S.js} +9 -7
- package/{video-3HFJJJEE.js.map → video-JS5VOA2S.js.map} +1 -1
- package/{weather-Y37FKFKU.js → weather-5R2N5OX4.js} +8 -7
- package/{weather-Y37FKFKU.js.map → weather-5R2N5OX4.js.map} +1 -1
- package/{web-ZEWEVAI3.js → web-FXIIYCZ7.js} +10 -8
- package/{web-ZEWEVAI3.js.map → web-FXIIYCZ7.js.map} +1 -1
- package/{web-search-37SGCKB7.js → web-search-SZP7J4UM.js} +8 -7
- package/{web-search-37SGCKB7.js.map → web-search-SZP7J4UM.js.map} +1 -1
- package/{whoami-VZI6VS4C.js → whoami-J4FRN67A.js} +10 -9
- package/{whoami-VZI6VS4C.js.map → whoami-J4FRN67A.js.map} +1 -1
- package/{workflow-3WGBRMM5.js → workflow-HQHZKXB2.js} +9 -8
- package/{workflow-3WGBRMM5.js.map → workflow-HQHZKXB2.js.map} +1 -1
- package/zero.js +88 -61
- package/zero.js.map +1 -1
- package/chunk-KQN5YZZP.js.map +0 -1
- package/chunk-L63QVTYZ.js.map +0 -1
- package/chunk-LRHXR7JT.js +0 -33
- package/chunk-LRHXR7JT.js.map +0 -1
- package/chunk-PLOJYRFL.js.map +0 -1
- package/credit-LGMFDRFK.js +0 -128
- package/credit-LGMFDRFK.js.map +0 -1
- package/doctor-CS5TFE6A.js.map +0 -1
- package/generate-4FEC4YVM.js.map +0 -1
- package/slack-PDOPNS5Z.js.map +0 -1
- /package/{chunk-FF5L22OE.js.map → chunk-5CZNUTFF.js.map} +0 -0
- /package/{chunk-J2I5GYLR.js.map → chunk-AFNSFKAH.js.map} +0 -0
- /package/{chunk-KLIW3XK7.js.map → chunk-GPF7NSX7.js.map} +0 -0
- /package/{chunk-HUMR2SA3.js.map → chunk-HSGQT7LT.js.map} +0 -0
- /package/{chunk-SAW74AR6.js.map → chunk-JCLLQRCI.js.map} +0 -0
- /package/{chunk-B3W2RUBP.js.map → chunk-LD4ZVU4O.js.map} +0 -0
- /package/{chunk-LTDQISD7.js.map → chunk-SB7EZ2ZO.js.map} +0 -0
- /package/{chunk-RTYT3CSZ.js.map → chunk-UG5XA6KU.js.map} +0 -0
- /package/{chunk-LKDE4AUC.js.map → chunk-UNQJRTJQ.js.map} +0 -0
- /package/{chunk-JFY6GK7Y.js.map → chunk-X2545RBX.js.map} +0 -0
- /package/{chunk-ZE2VIESK.js.map → chunk-X4DBCBU4.js.map} +0 -0
- /package/{esm-PZKPCIYJ.js.map → esm-GOCEMHJO.js.map} +0 -0
- /package/{getMachineId-bsd-L73QENVB.js.map → getMachineId-bsd-SB7C44VX.js.map} +0 -0
- /package/{getMachineId-darwin-TCCWKQ2S.js.map → getMachineId-darwin-R4BWY3CQ.js.map} +0 -0
- /package/{getMachineId-linux-TJYYUZVM.js.map → getMachineId-linux-BR4HVNPW.js.map} +0 -0
- /package/{getMachineId-unsupported-DPRVLH4Y.js.map → getMachineId-unsupported-FPGM635L.js.map} +0 -0
- /package/{getMachineId-win-7EE436CJ.js.map → getMachineId-win-RB4JMF33.js.map} +0 -0
- /package/{intro-MIVVJG7M.js.map → intro-PMHOBGDL.js.map} +0 -0
- /package/{undici-ZMFN7TNU.js.map → undici-YXSVPIYI.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/api/domains/web.ts"],"sourcesContent":["import { createWriteStream, readFileSync, statSync } from \"node:fs\";\nimport { basename, extname } from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport { setTimeout as delay } from \"node:timers/promises\";\nimport { Realtime, type AuthOptions, type InboundMessage } from \"ably\";\nimport type {\n ZeroBuiltInGenerationAcceptedResponse,\n ZeroBuiltInGenerationResponse,\n} from \"@vm0/api-contracts/contracts/zero-built-in-generation\";\nimport { ApiRequestError, getBaseUrl } from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\nconst BUILT_IN_GENERATION_POLL_INTERVAL_MS = 2_000;\nconst BUILT_IN_GENERATION_WAIT_TIMEOUT_MS_BY_TYPE = {\n image: 15 * 60 * 1000,\n video: 30 * 60 * 1000,\n presentation: 60 * 60 * 1000,\n website: 60 * 60 * 1000,\n} as const satisfies Record<\n ZeroBuiltInGenerationAcceptedResponse[\"type\"],\n number\n>;\nconst ABLY_CONNECT_TIMEOUT_MS = 10_000;\n\n/**\n * Minimal extension → MIME map covering the server allowlist for\n * `/api/zero/uploads/prepare`. Kept in this file rather than a shared module\n * to match the YAGNI pattern used elsewhere in the CLI.\n */\nconst MIME_BY_EXTENSION: Record<string, string> = {\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".webp\": \"image/webp\",\n \".avif\": \"image/avif\",\n \".svg\": \"image/svg+xml\",\n \".bmp\": \"image/bmp\",\n \".heic\": \"image/heic\",\n \".heif\": \"image/heif\",\n \".tif\": \"image/tiff\",\n \".tiff\": \"image/tiff\",\n \".psd\": \"image/vnd.adobe.photoshop\",\n \".mp4\": \"video/mp4\",\n \".webm\": \"video/webm\",\n \".mov\": \"video/quicktime\",\n \".aac\": \"audio/aac\",\n \".flac\": \"audio/flac\",\n \".m4a\": \"audio/mp4\",\n \".mp3\": \"audio/mpeg\",\n \".mpga\": \"audio/mpga\",\n \".oga\": \"audio/ogg\",\n \".ogg\": \"audio/ogg\",\n \".opus\": \"audio/opus\",\n \".wav\": \"audio/wav\",\n \".wave\": \"audio/wave\",\n \".pdf\": \"application/pdf\",\n \".txt\": \"text/plain\",\n \".csv\": \"text/csv\",\n \".md\": \"text/markdown\",\n \".html\": \"text/html\",\n \".htm\": \"text/html\",\n \".json\": \"application/json\",\n \".xml\": \"application/xml\",\n \".yaml\": \"application/yaml\",\n \".yml\": \"application/yaml\",\n \".tsv\": \"text/tab-separated-values\",\n \".doc\": \"application/msword\",\n \".docx\":\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \".docm\": \"application/vnd.ms-word.document.macroenabled.12\",\n \".dotm\": \"application/vnd.ms-word.template.macroenabled.12\",\n \".dotx\":\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\",\n \".odt\": \"application/vnd.oasis.opendocument.text\",\n \".rtf\": \"application/rtf\",\n \".xls\": \"application/vnd.ms-excel\",\n \".xlsx\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \".xlsb\": \"application/vnd.ms-excel.sheet.binary.macroenabled.12\",\n \".xlsm\": \"application/vnd.ms-excel.sheet.macroenabled.12\",\n \".xltm\": \"application/vnd.ms-excel.template.macroenabled.12\",\n \".xltx\":\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\",\n \".ods\": \"application/vnd.oasis.opendocument.spreadsheet\",\n \".ppt\": \"application/vnd.ms-powerpoint\",\n \".pptx\":\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \".potm\": \"application/vnd.ms-powerpoint.template.macroenabled.12\",\n \".potx\":\n \"application/vnd.openxmlformats-officedocument.presentationml.template\",\n \".odp\": \"application/vnd.oasis.opendocument.presentation\",\n \".ppsx\":\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\",\n \".ppsm\": \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\",\n \".pptm\": \"application/vnd.ms-powerpoint.presentation.macroenabled.12\",\n \".zip\": \"application/zip\",\n \".rar\": \"application/vnd.rar\",\n \".7z\": \"application/x-7z-compressed\",\n \".tar\": \"application/x-tar\",\n \".gz\": \"application/gzip\",\n \".tgz\": \"application/gzip\",\n \".bz2\": \"application/x-bzip2\",\n \".xz\": \"application/x-xz\",\n \".pages\": \"application/vnd.apple.pages\",\n \".numbers\": \"application/vnd.apple.numbers\",\n \".key\": \"application/vnd.apple.keynote\",\n \".parquet\": \"application/vnd.apache.parquet\",\n \".sqlite\": \"application/vnd.sqlite3\",\n \".sqlite3\": \"application/vnd.sqlite3\",\n \".db\": \"application/vnd.sqlite3\",\n \".epub\": \"application/epub+zip\",\n \".ai\": \"application/postscript\",\n};\n\nfunction inferContentType(localPath: string): string {\n const ext = extname(localPath).toLowerCase();\n return MIME_BY_EXTENSION[ext] ?? \"application/octet-stream\";\n}\n\ninterface DownloadWebFileResult {\n path: string;\n mimetype: string;\n size: number;\n}\n\n/**\n * Download a web-uploaded file to a local path, streaming the response body\n * to disk. Authenticates via ZERO_TOKEN. Response is binary, so this bypasses\n * the typed contract client.\n */\nexport async function downloadWebFile(\n fileId: string,\n outPath: string,\n): Promise<DownloadWebFileResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const url = new URL(\"/api/zero/web/download-file\", baseUrl);\n url.searchParams.set(\"file_id\", fileId);\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const response = await fetch(url, {\n headers: headersWithCliClientHeaders(headers),\n });\n\n if (!response.ok) {\n let message = `Failed to download web file (HTTP ${response.status})`;\n let code = \"UNKNOWN\";\n try {\n const body = (await response.json()) as {\n error?: { message?: string; code?: string };\n };\n if (body.error?.message) message = body.error.message;\n if (body.error?.code) code = body.error.code;\n } catch {\n // ignore parse errors — keep generic message\n }\n throw new ApiRequestError(message, code, response.status);\n }\n\n if (!response.body) {\n throw new ApiRequestError(\n \"Web download response has no body\",\n \"EMPTY_BODY\",\n 502,\n );\n }\n\n const mimetype =\n response.headers.get(\"x-file-mimetype\") ??\n response.headers.get(\"content-type\") ??\n \"application/octet-stream\";\n\n // Cast required: Web API ReadableStream and Node.js ReadableStream are\n // structurally compatible but have incompatible type declarations.\n await pipeline(\n Readable.fromWeb(response.body as never),\n createWriteStream(outPath),\n );\n\n const contentLengthHeader = response.headers.get(\"content-length\");\n const size = contentLengthHeader ? Number(contentLengthHeader) : 0;\n\n return { path: outPath, mimetype, size };\n}\n\ninterface UploadWebFileResult {\n id: string;\n filename: string;\n contentType: string;\n size: number;\n url: string;\n}\n\ninterface GenerateWebVoiceOptions {\n text: string;\n voice?: string;\n instructions?: string;\n}\n\ninterface GenerateWebVoiceResult {\n id: string;\n filename: string;\n contentType: string;\n size: number;\n url: string;\n durationSeconds: number;\n creditsCharged: number;\n model: string;\n voice: string;\n}\n\ninterface GenerateWebImageOptions {\n prompt: string;\n model?: string;\n size?: string;\n quality?: string;\n background?: string;\n outputFormat?: string;\n outputCompression?: number;\n moderation?: string;\n seed?: number;\n safetyTolerance?: string;\n enhancePrompt?: boolean;\n imageUrls?: readonly string[];\n maskImageUrl?: string;\n inputFidelity?: string;\n imagePromptStrength?: number;\n}\n\ninterface GenerateWebImageResult {\n id: string;\n filename: string;\n contentType: string;\n size: number;\n url: string;\n creditsCharged: number;\n model: string;\n provider: string;\n imageSize: string;\n quality: string;\n background: string;\n outputFormat: string;\n outputCompression?: number;\n moderation?: string;\n safetyTolerance?: string;\n revisedPrompt?: string;\n usage?: {\n textInputTokens: number;\n imageInputTokens: number;\n imageOutputTokens: number;\n totalTokens: number;\n };\n billingCategory?: string;\n billingQuantity?: number;\n sourceUrl?: string;\n seed?: number;\n sourceImageUrls?: string[];\n maskImageUrl?: string;\n inputFidelity?: string;\n imagePromptStrength?: number;\n}\n\ninterface GenerateWebVideoOptions {\n prompt: string;\n model?: string;\n aspectRatio?: string;\n duration?: string;\n resolution?: string;\n generateAudio?: boolean;\n negativePrompt?: string;\n seed?: number;\n autoFix?: boolean;\n safetyTolerance?: string;\n imageUrls?: string[];\n videoUrls?: string[];\n audioUrls?: string[];\n firstFrameImageUrl?: string;\n lastFrameImageUrl?: string;\n}\n\ninterface GenerateWebVideoResult {\n id: string;\n filename: string;\n contentType: string;\n size: number;\n url: string;\n durationSeconds: number;\n creditsCharged: number;\n model: string;\n aspectRatio: string;\n duration: string;\n resolution: string;\n generateAudio: boolean;\n sourceUrl: string;\n requestId?: string;\n}\n\nfunction shouldIncludePayloadValue(value: unknown): boolean {\n if (value === undefined) {\n return false;\n }\n return !Array.isArray(value) || value.length > 0;\n}\n\nfunction compactPayload(\n entries: readonly (readonly [string, unknown])[],\n): Record<string, unknown> {\n return Object.fromEntries(\n entries.filter(([, value]) => {\n return shouldIncludePayloadValue(value);\n }),\n );\n}\n\nfunction generateWebVideoPayload(\n options: GenerateWebVideoOptions,\n): Record<string, unknown> {\n return compactPayload([\n [\"prompt\", options.prompt],\n [\"model\", options.model],\n [\"aspectRatio\", options.aspectRatio],\n [\"duration\", options.duration],\n [\"resolution\", options.resolution],\n [\"generateAudio\", options.generateAudio],\n [\"negativePrompt\", options.negativePrompt],\n [\"seed\", options.seed],\n [\"autoFix\", options.autoFix],\n [\"safetyTolerance\", options.safetyTolerance],\n [\"imageUrls\", options.imageUrls],\n [\"videoUrls\", options.videoUrls],\n [\"audioUrls\", options.audioUrls],\n [\"firstFrameImageUrl\", options.firstFrameImageUrl],\n [\"lastFrameImageUrl\", options.lastFrameImageUrl],\n ]);\n}\n\ninterface PrepareUploadResponse {\n id: string;\n filename: string;\n contentType: string;\n size: number;\n uploadUrl: string;\n url: string;\n}\n\ninterface CompleteUploadResponse {\n id: string;\n filename: string;\n contentType: string;\n size: number;\n url: string;\n}\n\nasync function parseErrorBody(\n response: Response,\n fallback: string,\n): Promise<{ message: string; code: string }> {\n let message = `${fallback} (HTTP ${response.status})`;\n let code = \"UNKNOWN\";\n try {\n const body = (await response.json()) as {\n error?: { message?: string; code?: string };\n };\n if (body.error?.message) message = body.error.message;\n if (body.error?.code) code = body.error.code;\n } catch {\n // ignore parse errors — keep generic message\n }\n return { message, code };\n}\n\nfunction authenticatedJsonHeaders(token: string): Headers {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n return headersWithCliClientHeaders(headers);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isBuiltInGenerationAcceptedResponse(\n value: unknown,\n): value is ZeroBuiltInGenerationAcceptedResponse {\n if (!isRecord(value)) {\n return false;\n }\n return (\n typeof value.generationId === \"string\" &&\n value.status === \"queued\" &&\n (value.type === \"image\" ||\n value.type === \"video\" ||\n value.type === \"presentation\" ||\n value.type === \"website\") &&\n isRecord(value.realtime)\n );\n}\n\ninterface BuiltInGenerationNotifier {\n wait(timeoutMs: number): Promise<void>;\n close(): void;\n}\n\nfunction createBuiltInGenerationRealtime(\n accepted: ZeroBuiltInGenerationAcceptedResponse,\n): Realtime {\n let nextAuthRequest = accepted.realtime.tokenRequest;\n const authCallback: NonNullable<AuthOptions[\"authCallback\"]> = (\n _params,\n callback,\n ) => {\n const current = nextAuthRequest;\n nextAuthRequest = accepted.realtime.tokenRequest;\n callback(null, current);\n };\n\n return new Realtime({\n authCallback,\n autoConnect: true,\n disconnectedRetryTimeout: 5000,\n suspendedRetryTimeout: 15_000,\n });\n}\n\nfunction waitForRealtimeConnected(\n ably: Realtime,\n timeoutMs = ABLY_CONNECT_TIMEOUT_MS,\n): Promise<void> {\n if (ably.connection.state === \"connected\") {\n return Promise.resolve();\n }\n if (ably.connection.state === \"failed\") {\n return Promise.reject(new Error(\"Ably connection failed\"));\n }\n\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(\"Timed out connecting to Ably\"));\n }, timeoutMs);\n\n ably.connection.once(\"connected\", () => {\n clearTimeout(timer);\n resolve();\n });\n ably.connection.once(\"failed\", (stateChange) => {\n clearTimeout(timer);\n reject(\n new Error(\n `Ably connection failed: ${stateChange?.reason?.message ?? \"unknown\"}`,\n ),\n );\n });\n });\n}\n\nasync function createBuiltInGenerationNotifier(\n accepted: ZeroBuiltInGenerationAcceptedResponse,\n): Promise<BuiltInGenerationNotifier | null> {\n const ably = createBuiltInGenerationRealtime(accepted);\n\n try {\n await waitForRealtimeConnected(ably);\n const channel = ably.channels.get(accepted.realtime.channelName);\n\n let pendingEvent = false;\n let closed = false;\n let wake: (() => void) | null = null;\n\n const wakeWaiter = () => {\n const current = wake;\n wake = null;\n current?.();\n };\n\n const onMessage = (_message: InboundMessage) => {\n if (wake) {\n wakeWaiter();\n return;\n }\n pendingEvent = true;\n };\n\n await channel.subscribe(accepted.realtime.eventName, onMessage);\n\n return {\n wait(timeoutMs: number): Promise<void> {\n if (pendingEvent || closed || timeoutMs <= 0) {\n pendingEvent = false;\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n function done() {\n clearTimeout(timer);\n if (wake === done) {\n wake = null;\n }\n resolve();\n }\n const timer = setTimeout(done, timeoutMs);\n wake = done;\n });\n },\n close(): void {\n if (closed) {\n return;\n }\n closed = true;\n channel.unsubscribe(accepted.realtime.eventName, onMessage);\n wakeWaiter();\n ably.close();\n },\n };\n } catch {\n ably.close();\n return null;\n }\n}\n\nasync function getBuiltInGenerationStatus(\n baseUrl: string,\n token: string,\n generationId: string,\n): Promise<ZeroBuiltInGenerationResponse> {\n const response = await fetch(\n new URL(`/api/zero/built-in-generations/${generationId}`, baseUrl),\n { headers: authenticatedJsonHeaders(token) },\n );\n\n if (!response.ok) {\n const { message, code } = await parseErrorBody(\n response,\n \"Failed to get generation status\",\n );\n throw new ApiRequestError(message, code, response.status);\n }\n\n return (await response.json()) as ZeroBuiltInGenerationResponse;\n}\n\nfunction readBuiltInGenerationResult<T>(\n status: ZeroBuiltInGenerationResponse,\n fallback: string,\n): T | undefined {\n if (status.status === \"completed\") {\n if (!status.result) {\n throw new ApiRequestError(\n `${fallback} returned no result`,\n \"EMPTY_RESULT\",\n 502,\n );\n }\n return status.result as T;\n }\n\n if (status.status === \"failed\") {\n const code = status.error?.code ?? \"GENERATION_FAILED\";\n throw new ApiRequestError(\n status.error?.message ?? `${fallback} failed`,\n code,\n statusForBuiltInGenerationError(code),\n );\n }\n\n return undefined;\n}\n\nfunction statusForBuiltInGenerationError(code: string): number {\n if (code === \"BAD_REQUEST\") {\n return 400;\n }\n if (code === \"INSUFFICIENT_CREDITS\") {\n return 402;\n }\n if (code === \"NOT_CONFIGURED\") {\n return 503;\n }\n if (code === \"GENERATION_TIMEOUT\") {\n return 504;\n }\n if (\n code.startsWith(\"BYTEPLUS_INVALID_PARAMETER\") ||\n code.startsWith(\"BYTEPLUS_INPUT_\")\n ) {\n return 400;\n }\n if (code.startsWith(\"BYTEPLUS_\")) {\n return 502;\n }\n if (code.startsWith(\"NO_\") || code.endsWith(\"_FAILED\")) {\n return 502;\n }\n return 500;\n}\n\nasync function waitForBuiltInGenerationResult<T>(args: {\n readonly accepted: ZeroBuiltInGenerationAcceptedResponse;\n readonly baseUrl: string;\n readonly token: string;\n readonly fallback: string;\n}): Promise<T> {\n let notifier: BuiltInGenerationNotifier | null = null;\n let notifierCreated = false;\n const startedAt = Date.now();\n const timeoutMs =\n BUILT_IN_GENERATION_WAIT_TIMEOUT_MS_BY_TYPE[args.accepted.type];\n\n try {\n while (Date.now() - startedAt < timeoutMs) {\n const status = await getBuiltInGenerationStatus(\n args.baseUrl,\n args.token,\n args.accepted.generationId,\n );\n const result = readBuiltInGenerationResult<T>(status, args.fallback);\n if (result) {\n return result;\n }\n\n const elapsed = Date.now() - startedAt;\n const remaining = timeoutMs - elapsed;\n const waitMs = Math.min(BUILT_IN_GENERATION_POLL_INTERVAL_MS, remaining);\n if (!notifierCreated) {\n notifier = await createBuiltInGenerationNotifier(args.accepted);\n notifierCreated = true;\n }\n if (notifier) {\n await notifier.wait(waitMs);\n } else {\n await delay(waitMs);\n }\n }\n } finally {\n notifier?.close();\n }\n\n throw new ApiRequestError(\n `${args.fallback} timed out (generationId: ${args.accepted.generationId})`,\n \"GENERATION_TIMEOUT\",\n 504,\n );\n}\n\nasync function readBuiltInGenerationResponse<T>(args: {\n readonly response: Response;\n readonly baseUrl: string;\n readonly token: string;\n readonly fallback: string;\n}): Promise<T> {\n const body: unknown = await args.response.json();\n if (isBuiltInGenerationAcceptedResponse(body)) {\n return waitForBuiltInGenerationResult<T>({\n accepted: body,\n baseUrl: args.baseUrl,\n token: args.token,\n fallback: args.fallback,\n });\n }\n if (args.response.status === 202) {\n throw new ApiRequestError(\n `${args.fallback} returned an invalid generation response`,\n \"INVALID_GENERATION_RESPONSE\",\n 502,\n );\n }\n return body as T;\n}\n\n/**\n * Upload a local file and receive back metadata including a public CDN URL.\n * Authenticates via ZERO_TOKEN (`file:write` capability) or a CLI\n * PAT / Clerk session.\n *\n * Three-step flow:\n * 1. POST /api/zero/uploads/prepare — server signs a PUT URL for R2\n * 2. PUT the file bytes directly to R2\n * 3. POST /api/zero/uploads/complete — server verifies the object and\n * records any run-scoped upload association\n *\n * Step 2 never touches the Next.js runtime, which lifts the cap from\n * Vercel's ~4.5 MB body limit up to R2's 5 GB single-PUT limit.\n */\nexport async function uploadWebFile(\n localPath: string,\n options?: { contentType?: string },\n): Promise<UploadWebFileResult> {\n const stats = statSync(localPath);\n if (!stats.isFile()) {\n throw new ApiRequestError(\n `Not a regular file: ${localPath}`,\n \"BAD_REQUEST\",\n 400,\n );\n }\n\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const filename = basename(localPath);\n const contentType = options?.contentType ?? inferContentType(localPath);\n\n const prepareHeaders: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n prepareHeaders[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const prepareUrl = new URL(\"/api/zero/uploads/prepare\", baseUrl);\n const prepareRes = await fetch(prepareUrl, {\n method: \"POST\",\n headers: headersWithCliClientHeaders(prepareHeaders),\n body: JSON.stringify({ filename, contentType, size: stats.size }),\n });\n\n if (!prepareRes.ok) {\n const { message, code } = await parseErrorBody(\n prepareRes,\n \"Failed to prepare upload\",\n );\n throw new ApiRequestError(message, code, prepareRes.status);\n }\n\n const prepared = (await prepareRes.json()) as PrepareUploadResponse;\n\n const bytes = readFileSync(localPath);\n const putRes = await fetch(prepared.uploadUrl, {\n method: \"PUT\",\n headers: { \"Content-Type\": prepared.contentType },\n body: new Uint8Array(bytes),\n });\n\n if (!putRes.ok) {\n throw new ApiRequestError(\n `Failed to upload file to storage (HTTP ${putRes.status})`,\n \"UPLOAD_FAILED\",\n putRes.status,\n );\n }\n\n const completeUrl = new URL(\"/api/zero/uploads/complete\", baseUrl);\n const completeRes = await fetch(completeUrl, {\n method: \"POST\",\n headers: headersWithCliClientHeaders(prepareHeaders),\n body: JSON.stringify({\n id: prepared.id,\n contentType: prepared.contentType,\n }),\n });\n\n if (!completeRes.ok) {\n const { message, code } = await parseErrorBody(\n completeRes,\n \"Failed to complete upload\",\n );\n throw new ApiRequestError(message, code, completeRes.status);\n }\n\n const completed = (await completeRes.json()) as CompleteUploadResponse;\n\n return {\n id: completed.id,\n filename: completed.filename,\n contentType: completed.contentType,\n size: completed.size,\n url: completed.url,\n };\n}\n\n/**\n * Generate billed speech audio from text and receive the public CDN URL.\n * Authenticates via ZERO_TOKEN (`file:write` capability) or a CLI PAT /\n * Clerk session.\n */\nexport async function generateWebVoice(\n options: GenerateWebVoiceOptions,\n): Promise<GenerateWebVoiceResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const response = await fetch(new URL(\"/api/zero/voice-io/speech\", baseUrl), {\n method: \"POST\",\n headers: headersWithCliClientHeaders(headers),\n body: JSON.stringify({\n text: options.text,\n ...(options.voice ? { voice: options.voice } : {}),\n ...(options.instructions ? { instructions: options.instructions } : {}),\n }),\n });\n\n if (!response.ok) {\n const { message, code } = await parseErrorBody(\n response,\n \"Failed to generate voice\",\n );\n throw new ApiRequestError(message, code, response.status);\n }\n\n return (await response.json()) as GenerateWebVoiceResult;\n}\n\n/**\n * Generate a billed image from a prompt and receive the public CDN URL.\n * Authenticates via ZERO_TOKEN (`file:write` capability) or a CLI PAT /\n * Clerk session.\n */\nexport async function generateWebImage(\n options: GenerateWebImageOptions,\n): Promise<GenerateWebImageResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const response = await fetch(\n new URL(\"/api/zero/image-io/generate\", baseUrl),\n {\n method: \"POST\",\n headers: headersWithCliClientHeaders(headers),\n body: JSON.stringify({\n prompt: options.prompt,\n ...(options.model ? { model: options.model } : {}),\n ...(options.size ? { size: options.size } : {}),\n ...(options.quality ? { quality: options.quality } : {}),\n ...(options.background ? { background: options.background } : {}),\n ...(options.outputFormat ? { outputFormat: options.outputFormat } : {}),\n ...(options.outputCompression !== undefined\n ? { outputCompression: options.outputCompression }\n : {}),\n ...(options.moderation ? { moderation: options.moderation } : {}),\n ...(options.seed !== undefined ? { seed: options.seed } : {}),\n ...(options.safetyTolerance\n ? { safetyTolerance: options.safetyTolerance }\n : {}),\n ...(options.enhancePrompt !== undefined\n ? { enhancePrompt: options.enhancePrompt }\n : {}),\n ...(options.imageUrls && options.imageUrls.length > 0\n ? { imageUrls: options.imageUrls }\n : {}),\n ...(options.maskImageUrl ? { maskImageUrl: options.maskImageUrl } : {}),\n ...(options.inputFidelity\n ? { inputFidelity: options.inputFidelity }\n : {}),\n ...(options.imagePromptStrength !== undefined\n ? { imagePromptStrength: options.imagePromptStrength }\n : {}),\n }),\n },\n );\n\n if (!response.ok) {\n const { message, code } = await parseErrorBody(\n response,\n \"Failed to generate image\",\n );\n throw new ApiRequestError(message, code, response.status);\n }\n\n return readBuiltInGenerationResponse<GenerateWebImageResult>({\n response,\n baseUrl,\n token,\n fallback: \"Failed to generate image\",\n });\n}\n\n/**\n * Generate a billed video from a prompt and receive the public CDN URL.\n * Authenticates via ZERO_TOKEN (`file:write` capability) or a CLI PAT /\n * Clerk session.\n */\nexport async function generateWebVideo(\n options: GenerateWebVideoOptions,\n): Promise<GenerateWebVideoResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const response = await fetch(\n new URL(\"/api/zero/video-io/generate\", baseUrl),\n {\n method: \"POST\",\n headers: headersWithCliClientHeaders(headers),\n body: JSON.stringify(generateWebVideoPayload(options)),\n },\n );\n\n if (!response.ok) {\n const { message, code } = await parseErrorBody(\n response,\n \"Failed to generate video\",\n );\n throw new ApiRequestError(message, code, response.status);\n }\n\n return readBuiltInGenerationResponse<GenerateWebVideoResult>({\n response,\n baseUrl,\n token,\n fallback: \"Failed to generate video\",\n });\n}\n\nexport interface TranscribeAudioSegment {\n readonly start: number;\n readonly end: number;\n readonly text: string;\n}\n\ninterface TranscribeAudioResult {\n readonly text: string;\n readonly segments?: readonly TranscribeAudioSegment[];\n}\n\nexport async function transcribeAudio(\n audioPath: string,\n options: { readonly verbose?: boolean } = {},\n): Promise<TranscribeAudioResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const url = new URL(\"/api/zero/voice-io/stt\", baseUrl);\n if (options.verbose) {\n url.searchParams.set(\"verbose\", \"true\");\n }\n\n const audioData = readFileSync(audioPath);\n const filename = basename(audioPath);\n const ext = extname(filename).toLowerCase();\n const mimeMap: Record<string, string> = {\n \".mp3\": \"audio/mpeg\",\n \".mp4\": \"audio/mp4\",\n \".m4a\": \"audio/m4a\",\n \".wav\": \"audio/wav\",\n \".webm\": \"audio/webm\",\n };\n const mimeType = mimeMap[ext] ?? \"audio/mpeg\";\n\n const formData = new FormData();\n formData.append(\"file\", new Blob([audioData], { type: mimeType }), filename);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: headersWithCliClientHeaders(headers),\n body: formData,\n });\n\n if (!response.ok) {\n const { message, code } = await parseErrorBody(\n response,\n \"Transcription failed\",\n );\n throw new ApiRequestError(message, code, response.status);\n }\n\n return (await response.json()) as TranscribeAudioResult;\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA,SAAS,mBAAmB,cAAc,gBAAgB;AAC1D,SAAS,UAAU,eAAe;AAClC,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,cAAc,aAAa;AACpC,SAAS,gBAAuD;AAShE,IAAM,uCAAuC;AAC7C,IAAM,8CAA8C;AAAA,EAClD,OAAO,KAAK,KAAK;AAAA,EACjB,OAAO,KAAK,KAAK;AAAA,EACjB,cAAc,KAAK,KAAK;AAAA,EACxB,SAAS,KAAK,KAAK;AACrB;AAIA,IAAM,0BAA0B;AAOhC,IAAM,oBAA4C;AAAA,EAChD,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SACE;AAAA,EACF,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SACE;AAAA,EACF,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SACE;AAAA,EACF,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SACE;AAAA,EACF,SAAS;AAAA,EACT,SACE;AAAA,EACF,QAAQ;AAAA,EACR,SACE;AAAA,EACF,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AACT;AAEA,SAAS,iBAAiB,WAA2B;AACnD,QAAM,MAAM,QAAQ,SAAS,EAAE,YAAY;AAC3C,SAAO,kBAAkB,GAAG,KAAK;AACnC;AAaA,eAAsB,gBACpB,QACA,SACgC;AAChC,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,QAAQ,MAAM,eAAe;AACnC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,gBAAgB,qBAAqB,gBAAgB,GAAG;AAAA,EACpE;AAEA,QAAM,MAAM,IAAI,IAAI,+BAA+B,OAAO;AAC1D,MAAI,aAAa,IAAI,WAAW,MAAM;AAEtC,QAAM,UAAkC;AAAA,IACtC,eAAe,UAAU,KAAK;AAAA,EAChC;AACA,QAAM,eAAe,QAAQ,IAAI;AACjC,MAAI,cAAc;AAChB,YAAQ,4BAA4B,IAAI;AAAA,EAC1C;AAEA,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,SAAS,4BAA4B,OAAO;AAAA,EAC9C,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,QAAI,UAAU,qCAAqC,SAAS,MAAM;AAClE,QAAI,OAAO;AACX,QAAI;AACF,YAAM,OAAQ,MAAM,SAAS,KAAK;AAGlC,UAAI,KAAK,OAAO,QAAS,WAAU,KAAK,MAAM;AAC9C,UAAI,KAAK,OAAO,KAAM,QAAO,KAAK,MAAM;AAAA,IAC1C,QAAQ;AAAA,IAER;AACA,UAAM,IAAI,gBAAgB,SAAS,MAAM,SAAS,MAAM;AAAA,EAC1D;AAEA,MAAI,CAAC,SAAS,MAAM;AAClB,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WACJ,SAAS,QAAQ,IAAI,iBAAiB,KACtC,SAAS,QAAQ,IAAI,cAAc,KACnC;AAIF,QAAM;AAAA,IACJ,SAAS,QAAQ,SAAS,IAAa;AAAA,IACvC,kBAAkB,OAAO;AAAA,EAC3B;AAEA,QAAM,sBAAsB,SAAS,QAAQ,IAAI,gBAAgB;AACjE,QAAM,OAAO,sBAAsB,OAAO,mBAAmB,IAAI;AAEjE,SAAO,EAAE,MAAM,SAAS,UAAU,KAAK;AACzC;AAkHA,SAAS,0BAA0B,OAAyB;AAC1D,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,SAAO,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS;AACjD;AAEA,SAAS,eACP,SACyB;AACzB,SAAO,OAAO;AAAA,IACZ,QAAQ,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM;AAC5B,aAAO,0BAA0B,KAAK;AAAA,IACxC,CAAC;AAAA,EACH;AACF;AAEA,SAAS,wBACP,SACyB;AACzB,SAAO,eAAe;AAAA,IACpB,CAAC,UAAU,QAAQ,MAAM;AAAA,IACzB,CAAC,SAAS,QAAQ,KAAK;AAAA,IACvB,CAAC,eAAe,QAAQ,WAAW;AAAA,IACnC,CAAC,YAAY,QAAQ,QAAQ;AAAA,IAC7B,CAAC,cAAc,QAAQ,UAAU;AAAA,IACjC,CAAC,iBAAiB,QAAQ,aAAa;AAAA,IACvC,CAAC,kBAAkB,QAAQ,cAAc;AAAA,IACzC,CAAC,QAAQ,QAAQ,IAAI;AAAA,IACrB,CAAC,WAAW,QAAQ,OAAO;AAAA,IAC3B,CAAC,mBAAmB,QAAQ,eAAe;AAAA,IAC3C,CAAC,aAAa,QAAQ,SAAS;AAAA,IAC/B,CAAC,aAAa,QAAQ,SAAS;AAAA,IAC/B,CAAC,aAAa,QAAQ,SAAS;AAAA,IAC/B,CAAC,sBAAsB,QAAQ,kBAAkB;AAAA,IACjD,CAAC,qBAAqB,QAAQ,iBAAiB;AAAA,EACjD,CAAC;AACH;AAmBA,eAAe,eACb,UACA,UAC4C;AAC5C,MAAI,UAAU,GAAG,QAAQ,UAAU,SAAS,MAAM;AAClD,MAAI,OAAO;AACX,MAAI;AACF,UAAM,OAAQ,MAAM,SAAS,KAAK;AAGlC,QAAI,KAAK,OAAO,QAAS,WAAU,KAAK,MAAM;AAC9C,QAAI,KAAK,OAAO,KAAM,QAAO,KAAK,MAAM;AAAA,EAC1C,QAAQ;AAAA,EAER;AACA,SAAO,EAAE,SAAS,KAAK;AACzB;AAEA,SAAS,yBAAyB,OAAwB;AACxD,QAAM,UAAkC;AAAA,IACtC,eAAe,UAAU,KAAK;AAAA,IAC9B,gBAAgB;AAAA,EAClB;AACA,QAAM,eAAe,QAAQ,IAAI;AACjC,MAAI,cAAc;AAChB,YAAQ,4BAA4B,IAAI;AAAA,EAC1C;AACA,SAAO,4BAA4B,OAAO;AAC5C;AAEA,SAAS,SAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,oCACP,OACgD;AAChD,MAAI,CAAC,SAAS,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AACA,SACE,OAAO,MAAM,iBAAiB,YAC9B,MAAM,WAAW,aAChB,MAAM,SAAS,WACd,MAAM,SAAS,WACf,MAAM,SAAS,kBACf,MAAM,SAAS,cACjB,SAAS,MAAM,QAAQ;AAE3B;AAOA,SAAS,gCACP,UACU;AACV,MAAI,kBAAkB,SAAS,SAAS;AACxC,QAAM,eAAyD,CAC7D,SACA,aACG;AACH,UAAM,UAAU;AAChB,sBAAkB,SAAS,SAAS;AACpC,aAAS,MAAM,OAAO;AAAA,EACxB;AAEA,SAAO,IAAI,SAAS;AAAA,IAClB;AAAA,IACA,aAAa;AAAA,IACb,0BAA0B;AAAA,IAC1B,uBAAuB;AAAA,EACzB,CAAC;AACH;AAEA,SAAS,yBACP,MACA,YAAY,yBACG;AACf,MAAI,KAAK,WAAW,UAAU,aAAa;AACzC,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACA,MAAI,KAAK,WAAW,UAAU,UAAU;AACtC,WAAO,QAAQ,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAAA,EAC3D;AAEA,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,QAAQ,WAAW,MAAM;AAC7B,aAAO,IAAI,MAAM,8BAA8B,CAAC;AAAA,IAClD,GAAG,SAAS;AAEZ,SAAK,WAAW,KAAK,aAAa,MAAM;AACtC,mBAAa,KAAK;AAClB,cAAQ;AAAA,IACV,CAAC;AACD,SAAK,WAAW,KAAK,UAAU,CAAC,gBAAgB;AAC9C,mBAAa,KAAK;AAClB;AAAA,QACE,IAAI;AAAA,UACF,2BAA2B,aAAa,QAAQ,WAAW,SAAS;AAAA,QACtE;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAEA,eAAe,gCACb,UAC2C;AAC3C,QAAM,OAAO,gCAAgC,QAAQ;AAErD,MAAI;AACF,UAAM,yBAAyB,IAAI;AACnC,UAAM,UAAU,KAAK,SAAS,IAAI,SAAS,SAAS,WAAW;AAE/D,QAAI,eAAe;AACnB,QAAI,SAAS;AACb,QAAI,OAA4B;AAEhC,UAAM,aAAa,MAAM;AACvB,YAAM,UAAU;AAChB,aAAO;AACP,gBAAU;AAAA,IACZ;AAEA,UAAM,YAAY,CAAC,aAA6B;AAC9C,UAAI,MAAM;AACR,mBAAW;AACX;AAAA,MACF;AACA,qBAAe;AAAA,IACjB;AAEA,UAAM,QAAQ,UAAU,SAAS,SAAS,WAAW,SAAS;AAE9D,WAAO;AAAA,MACL,KAAK,WAAkC;AACrC,YAAI,gBAAgB,UAAU,aAAa,GAAG;AAC5C,yBAAe;AACf,iBAAO,QAAQ,QAAQ;AAAA,QACzB;AAEA,eAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,mBAAS,OAAO;AACd,yBAAa,KAAK;AAClB,gBAAI,SAAS,MAAM;AACjB,qBAAO;AAAA,YACT;AACA,oBAAQ;AAAA,UACV;AACA,gBAAM,QAAQ,WAAW,MAAM,SAAS;AACxC,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MACA,QAAc;AACZ,YAAI,QAAQ;AACV;AAAA,QACF;AACA,iBAAS;AACT,gBAAQ,YAAY,SAAS,SAAS,WAAW,SAAS;AAC1D,mBAAW;AACX,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAAA,EACF,QAAQ;AACN,SAAK,MAAM;AACX,WAAO;AAAA,EACT;AACF;AAEA,eAAe,2BACb,SACA,OACA,cACwC;AACxC,QAAM,WAAW,MAAM;AAAA,IACrB,IAAI,IAAI,kCAAkC,YAAY,IAAI,OAAO;AAAA,IACjE,EAAE,SAAS,yBAAyB,KAAK,EAAE;AAAA,EAC7C;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,EAAE,SAAS,KAAK,IAAI,MAAM;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,UAAM,IAAI,gBAAgB,SAAS,MAAM,SAAS,MAAM;AAAA,EAC1D;AAEA,SAAQ,MAAM,SAAS,KAAK;AAC9B;AAEA,SAAS,4BACP,QACA,UACe;AACf,MAAI,OAAO,WAAW,aAAa;AACjC,QAAI,CAAC,OAAO,QAAQ;AAClB,YAAM,IAAI;AAAA,QACR,GAAG,QAAQ;AAAA,QACX;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,WAAO,OAAO;AAAA,EAChB;AAEA,MAAI,OAAO,WAAW,UAAU;AAC9B,UAAM,OAAO,OAAO,OAAO,QAAQ;AACnC,UAAM,IAAI;AAAA,MACR,OAAO,OAAO,WAAW,GAAG,QAAQ;AAAA,MACpC;AAAA,MACA,gCAAgC,IAAI;AAAA,IACtC;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,gCAAgC,MAAsB;AAC7D,MAAI,SAAS,eAAe;AAC1B,WAAO;AAAA,EACT;AACA,MAAI,SAAS,wBAAwB;AACnC,WAAO;AAAA,EACT;AACA,MAAI,SAAS,kBAAkB;AAC7B,WAAO;AAAA,EACT;AACA,MAAI,SAAS,sBAAsB;AACjC,WAAO;AAAA,EACT;AACA,MACE,KAAK,WAAW,4BAA4B,KAC5C,KAAK,WAAW,iBAAiB,GACjC;AACA,WAAO;AAAA,EACT;AACA,MAAI,KAAK,WAAW,WAAW,GAAG;AAChC,WAAO;AAAA,EACT;AACA,MAAI,KAAK,WAAW,KAAK,KAAK,KAAK,SAAS,SAAS,GAAG;AACtD,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,eAAe,+BAAkC,MAKlC;AACb,MAAI,WAA6C;AACjD,MAAI,kBAAkB;AACtB,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,YACJ,4CAA4C,KAAK,SAAS,IAAI;AAEhE,MAAI;AACF,WAAO,KAAK,IAAI,IAAI,YAAY,WAAW;AACzC,YAAM,SAAS,MAAM;AAAA,QACnB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,SAAS;AAAA,MAChB;AACA,YAAM,SAAS,4BAA+B,QAAQ,KAAK,QAAQ;AACnE,UAAI,QAAQ;AACV,eAAO;AAAA,MACT;AAEA,YAAM,UAAU,KAAK,IAAI,IAAI;AAC7B,YAAM,YAAY,YAAY;AAC9B,YAAM,SAAS,KAAK,IAAI,sCAAsC,SAAS;AACvE,UAAI,CAAC,iBAAiB;AACpB,mBAAW,MAAM,gCAAgC,KAAK,QAAQ;AAC9D,0BAAkB;AAAA,MACpB;AACA,UAAI,UAAU;AACZ,cAAM,SAAS,KAAK,MAAM;AAAA,MAC5B,OAAO;AACL,cAAM,MAAM,MAAM;AAAA,MACpB;AAAA,IACF;AAAA,EACF,UAAE;AACA,cAAU,MAAM;AAAA,EAClB;AAEA,QAAM,IAAI;AAAA,IACR,GAAG,KAAK,QAAQ,6BAA6B,KAAK,SAAS,YAAY;AAAA,IACvE;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAe,8BAAiC,MAKjC;AACb,QAAM,OAAgB,MAAM,KAAK,SAAS,KAAK;AAC/C,MAAI,oCAAoC,IAAI,GAAG;AAC7C,WAAO,+BAAkC;AAAA,MACvC,UAAU;AAAA,MACV,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,IACjB,CAAC;AAAA,EACH;AACA,MAAI,KAAK,SAAS,WAAW,KAAK;AAChC,UAAM,IAAI;AAAA,MACR,GAAG,KAAK,QAAQ;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAgBA,eAAsB,cACpB,WACA,SAC8B;AAC9B,QAAM,QAAQ,SAAS,SAAS;AAChC,MAAI,CAAC,MAAM,OAAO,GAAG;AACnB,UAAM,IAAI;AAAA,MACR,uBAAuB,SAAS;AAAA,MAChC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,QAAQ,MAAM,eAAe;AACnC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,gBAAgB,qBAAqB,gBAAgB,GAAG;AAAA,EACpE;AAEA,QAAM,WAAW,SAAS,SAAS;AACnC,QAAM,cAAc,SAAS,eAAe,iBAAiB,SAAS;AAEtE,QAAM,iBAAyC;AAAA,IAC7C,eAAe,UAAU,KAAK;AAAA,IAC9B,gBAAgB;AAAA,EAClB;AACA,QAAM,eAAe,QAAQ,IAAI;AACjC,MAAI,cAAc;AAChB,mBAAe,4BAA4B,IAAI;AAAA,EACjD;AAEA,QAAM,aAAa,IAAI,IAAI,6BAA6B,OAAO;AAC/D,QAAM,aAAa,MAAM,MAAM,YAAY;AAAA,IACzC,QAAQ;AAAA,IACR,SAAS,4BAA4B,cAAc;AAAA,IACnD,MAAM,KAAK,UAAU,EAAE,UAAU,aAAa,MAAM,MAAM,KAAK,CAAC;AAAA,EAClE,CAAC;AAED,MAAI,CAAC,WAAW,IAAI;AAClB,UAAM,EAAE,SAAS,KAAK,IAAI,MAAM;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,UAAM,IAAI,gBAAgB,SAAS,MAAM,WAAW,MAAM;AAAA,EAC5D;AAEA,QAAM,WAAY,MAAM,WAAW,KAAK;AAExC,QAAM,QAAQ,aAAa,SAAS;AACpC,QAAM,SAAS,MAAM,MAAM,SAAS,WAAW;AAAA,IAC7C,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,SAAS,YAAY;AAAA,IAChD,MAAM,IAAI,WAAW,KAAK;AAAA,EAC5B,CAAC;AAED,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR,0CAA0C,OAAO,MAAM;AAAA,MACvD;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,cAAc,IAAI,IAAI,8BAA8B,OAAO;AACjE,QAAM,cAAc,MAAM,MAAM,aAAa;AAAA,IAC3C,QAAQ;AAAA,IACR,SAAS,4BAA4B,cAAc;AAAA,IACnD,MAAM,KAAK,UAAU;AAAA,MACnB,IAAI,SAAS;AAAA,MACb,aAAa,SAAS;AAAA,IACxB,CAAC;AAAA,EACH,CAAC;AAED,MAAI,CAAC,YAAY,IAAI;AACnB,UAAM,EAAE,SAAS,KAAK,IAAI,MAAM;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,UAAM,IAAI,gBAAgB,SAAS,MAAM,YAAY,MAAM;AAAA,EAC7D;AAEA,QAAM,YAAa,MAAM,YAAY,KAAK;AAE1C,SAAO;AAAA,IACL,IAAI,UAAU;AAAA,IACd,UAAU,UAAU;AAAA,IACpB,aAAa,UAAU;AAAA,IACvB,MAAM,UAAU;AAAA,IAChB,KAAK,UAAU;AAAA,EACjB;AACF;AAOA,eAAsB,iBACpB,SACiC;AACjC,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,QAAQ,MAAM,eAAe;AACnC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,gBAAgB,qBAAqB,gBAAgB,GAAG;AAAA,EACpE;AAEA,QAAM,UAAkC;AAAA,IACtC,eAAe,UAAU,KAAK;AAAA,IAC9B,gBAAgB;AAAA,EAClB;AACA,QAAM,eAAe,QAAQ,IAAI;AACjC,MAAI,cAAc;AAChB,YAAQ,4BAA4B,IAAI;AAAA,EAC1C;AAEA,QAAM,WAAW,MAAM,MAAM,IAAI,IAAI,6BAA6B,OAAO,GAAG;AAAA,IAC1E,QAAQ;AAAA,IACR,SAAS,4BAA4B,OAAO;AAAA,IAC5C,MAAM,KAAK,UAAU;AAAA,MACnB,MAAM,QAAQ;AAAA,MACd,GAAI,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,MAChD,GAAI,QAAQ,eAAe,EAAE,cAAc,QAAQ,aAAa,IAAI,CAAC;AAAA,IACvE,CAAC;AAAA,EACH,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,EAAE,SAAS,KAAK,IAAI,MAAM;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,UAAM,IAAI,gBAAgB,SAAS,MAAM,SAAS,MAAM;AAAA,EAC1D;AAEA,SAAQ,MAAM,SAAS,KAAK;AAC9B;AAOA,eAAsB,iBACpB,SACiC;AACjC,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,QAAQ,MAAM,eAAe;AACnC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,gBAAgB,qBAAqB,gBAAgB,GAAG;AAAA,EACpE;AAEA,QAAM,UAAkC;AAAA,IACtC,eAAe,UAAU,KAAK;AAAA,IAC9B,gBAAgB;AAAA,EAClB;AACA,QAAM,eAAe,QAAQ,IAAI;AACjC,MAAI,cAAc;AAChB,YAAQ,4BAA4B,IAAI;AAAA,EAC1C;AAEA,QAAM,WAAW,MAAM;AAAA,IACrB,IAAI,IAAI,+BAA+B,OAAO;AAAA,IAC9C;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,4BAA4B,OAAO;AAAA,MAC5C,MAAM,KAAK,UAAU;AAAA,QACnB,QAAQ,QAAQ;AAAA,QAChB,GAAI,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,QAChD,GAAI,QAAQ,OAAO,EAAE,MAAM,QAAQ,KAAK,IAAI,CAAC;AAAA,QAC7C,GAAI,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI,CAAC;AAAA,QACtD,GAAI,QAAQ,aAAa,EAAE,YAAY,QAAQ,WAAW,IAAI,CAAC;AAAA,QAC/D,GAAI,QAAQ,eAAe,EAAE,cAAc,QAAQ,aAAa,IAAI,CAAC;AAAA,QACrE,GAAI,QAAQ,sBAAsB,SAC9B,EAAE,mBAAmB,QAAQ,kBAAkB,IAC/C,CAAC;AAAA,QACL,GAAI,QAAQ,aAAa,EAAE,YAAY,QAAQ,WAAW,IAAI,CAAC;AAAA,QAC/D,GAAI,QAAQ,SAAS,SAAY,EAAE,MAAM,QAAQ,KAAK,IAAI,CAAC;AAAA,QAC3D,GAAI,QAAQ,kBACR,EAAE,iBAAiB,QAAQ,gBAAgB,IAC3C,CAAC;AAAA,QACL,GAAI,QAAQ,kBAAkB,SAC1B,EAAE,eAAe,QAAQ,cAAc,IACvC,CAAC;AAAA,QACL,GAAI,QAAQ,aAAa,QAAQ,UAAU,SAAS,IAChD,EAAE,WAAW,QAAQ,UAAU,IAC/B,CAAC;AAAA,QACL,GAAI,QAAQ,eAAe,EAAE,cAAc,QAAQ,aAAa,IAAI,CAAC;AAAA,QACrE,GAAI,QAAQ,gBACR,EAAE,eAAe,QAAQ,cAAc,IACvC,CAAC;AAAA,QACL,GAAI,QAAQ,wBAAwB,SAChC,EAAE,qBAAqB,QAAQ,oBAAoB,IACnD,CAAC;AAAA,MACP,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,EAAE,SAAS,KAAK,IAAI,MAAM;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,UAAM,IAAI,gBAAgB,SAAS,MAAM,SAAS,MAAM;AAAA,EAC1D;AAEA,SAAO,8BAAsD;AAAA,IAC3D;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AACH;AAOA,eAAsB,iBACpB,SACiC;AACjC,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,QAAQ,MAAM,eAAe;AACnC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,gBAAgB,qBAAqB,gBAAgB,GAAG;AAAA,EACpE;AAEA,QAAM,UAAkC;AAAA,IACtC,eAAe,UAAU,KAAK;AAAA,IAC9B,gBAAgB;AAAA,EAClB;AACA,QAAM,eAAe,QAAQ,IAAI;AACjC,MAAI,cAAc;AAChB,YAAQ,4BAA4B,IAAI;AAAA,EAC1C;AAEA,QAAM,WAAW,MAAM;AAAA,IACrB,IAAI,IAAI,+BAA+B,OAAO;AAAA,IAC9C;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,4BAA4B,OAAO;AAAA,MAC5C,MAAM,KAAK,UAAU,wBAAwB,OAAO,CAAC;AAAA,IACvD;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,EAAE,SAAS,KAAK,IAAI,MAAM;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,UAAM,IAAI,gBAAgB,SAAS,MAAM,SAAS,MAAM;AAAA,EAC1D;AAEA,SAAO,8BAAsD;AAAA,IAC3D;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AACH;AAaA,eAAsB,gBACpB,WACA,UAA0C,CAAC,GACX;AAChC,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,QAAQ,MAAM,eAAe;AACnC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,gBAAgB,qBAAqB,gBAAgB,GAAG;AAAA,EACpE;AAEA,QAAM,UAAkC;AAAA,IACtC,eAAe,UAAU,KAAK;AAAA,EAChC;AACA,QAAM,eAAe,QAAQ,IAAI;AACjC,MAAI,cAAc;AAChB,YAAQ,4BAA4B,IAAI;AAAA,EAC1C;AAEA,QAAM,MAAM,IAAI,IAAI,0BAA0B,OAAO;AACrD,MAAI,QAAQ,SAAS;AACnB,QAAI,aAAa,IAAI,WAAW,MAAM;AAAA,EACxC;AAEA,QAAM,YAAY,aAAa,SAAS;AACxC,QAAM,WAAW,SAAS,SAAS;AACnC,QAAM,MAAM,QAAQ,QAAQ,EAAE,YAAY;AAC1C,QAAM,UAAkC;AAAA,IACtC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AACA,QAAM,WAAW,QAAQ,GAAG,KAAK;AAEjC,QAAM,WAAW,IAAI,SAAS;AAC9B,WAAS,OAAO,QAAQ,IAAI,KAAK,CAAC,SAAS,GAAG,EAAE,MAAM,SAAS,CAAC,GAAG,QAAQ;AAE3E,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS,4BAA4B,OAAO;AAAA,IAC5C,MAAM;AAAA,EACR,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,EAAE,SAAS,KAAK,IAAI,MAAM;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,UAAM,IAAI,gBAAgB,SAAS,MAAM,SAAS,MAAM;AAAA,EAC1D;AAEA,SAAQ,MAAM,SAAS,KAAK;AAC9B;","names":[]}
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
updateOrgModelPoliciesRequestSchema,
|
|
22
22
|
upsertModelProviderRequestSchema,
|
|
23
23
|
upsertModelProviderResponseSchema
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-BQOOTJNB.js";
|
|
25
25
|
import {
|
|
26
26
|
__commonJS,
|
|
27
27
|
__esm,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
__toCommonJS,
|
|
30
30
|
__toESM,
|
|
31
31
|
init_esm_shims
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-3VVCUQPB.js";
|
|
33
33
|
|
|
34
34
|
// ../../node_modules/.pnpm/punycode@2.3.1/node_modules/punycode/punycode.es6.js
|
|
35
35
|
var punycode_es6_exports = {};
|
|
@@ -1304,6 +1304,7 @@ var billingStatusResponseSchema = external_exports.object({
|
|
|
1304
1304
|
autoRechargeAllowed: external_exports.boolean().optional(),
|
|
1305
1305
|
supportByok: external_exports.boolean().optional(),
|
|
1306
1306
|
restrictedVm0Models: external_exports.boolean().optional(),
|
|
1307
|
+
videoGenerationAllowed: external_exports.boolean().optional(),
|
|
1307
1308
|
workflowWebhookAutomationAllowed: external_exports.boolean().optional(),
|
|
1308
1309
|
credits: external_exports.number(),
|
|
1309
1310
|
onboardingPaymentPending: external_exports.boolean(),
|
|
@@ -2559,8 +2560,7 @@ var ALL_RUN_STATUSES = [
|
|
|
2559
2560
|
];
|
|
2560
2561
|
var runStatusSchema = external_exports.enum(ALL_RUN_STATUSES);
|
|
2561
2562
|
var unifiedRunRequestSchema = external_exports.object({
|
|
2562
|
-
// High-level
|
|
2563
|
-
checkpointId: external_exports.string().optional(),
|
|
2563
|
+
// High-level shortcut for continuing an existing session.
|
|
2564
2564
|
sessionId: external_exports.string().optional(),
|
|
2565
2565
|
// Base parameters (can be used directly or overridden after shortcut expansion)
|
|
2566
2566
|
agentComposeId: external_exports.string().optional(),
|
|
@@ -3367,30 +3367,8 @@ var attachFileSchema = external_exports.object({
|
|
|
3367
3367
|
contentType: external_exports.string(),
|
|
3368
3368
|
size: external_exports.number()
|
|
3369
3369
|
});
|
|
3370
|
-
var assetMaterializationSchema = external_exports.discriminatedUnion("status", [
|
|
3371
|
-
external_exports.object({ status: external_exports.literal("ready") }),
|
|
3372
|
-
external_exports.object({ status: external_exports.literal("pending") }),
|
|
3373
|
-
external_exports.object({
|
|
3374
|
-
status: external_exports.literal("failed"),
|
|
3375
|
-
error: external_exports.object({
|
|
3376
|
-
code: external_exports.string(),
|
|
3377
|
-
message: external_exports.string(),
|
|
3378
|
-
retryable: external_exports.boolean()
|
|
3379
|
-
})
|
|
3380
|
-
})
|
|
3381
|
-
]);
|
|
3382
|
-
var assetRefSchema = external_exports.object({
|
|
3383
|
-
id: external_exports.string().uuid(),
|
|
3384
|
-
classification: external_exports.enum(["input", "published-output"]),
|
|
3385
|
-
access: external_exports.enum(["private", "published"]),
|
|
3386
|
-
materialization: assetMaterializationSchema,
|
|
3387
|
-
provenance: external_exports.object({
|
|
3388
|
-
provider: external_exports.string()
|
|
3389
|
-
}).optional()
|
|
3390
|
-
});
|
|
3391
3370
|
var resolvedAttachFileSchema = attachFileSchema.extend({
|
|
3392
|
-
url: external_exports.string()
|
|
3393
|
-
assetRef: assetRefSchema.optional()
|
|
3371
|
+
url: external_exports.string()
|
|
3394
3372
|
});
|
|
3395
3373
|
var chatThreadArtifactGoogleDriveSyncSchema = external_exports.discriminatedUnion("status", [
|
|
3396
3374
|
external_exports.object({
|
|
@@ -3425,7 +3403,6 @@ var artifactItemSchema = external_exports.object({
|
|
|
3425
3403
|
contentType: external_exports.string(),
|
|
3426
3404
|
size: external_exports.number().default(0),
|
|
3427
3405
|
url: external_exports.string(),
|
|
3428
|
-
assetRef: assetRefSchema.optional(),
|
|
3429
3406
|
previewImageUrl: external_exports.string().optional(),
|
|
3430
3407
|
createdAt: external_exports.string(),
|
|
3431
3408
|
updatedAt: external_exports.string(),
|
|
@@ -6191,7 +6168,6 @@ var jobSchema = external_exports.object({
|
|
|
6191
6168
|
appendSystemPrompt: external_exports.string().nullable(),
|
|
6192
6169
|
agentComposeVersionId: external_exports.string().nullable(),
|
|
6193
6170
|
vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
|
|
6194
|
-
checkpointId: external_exports.uuid().nullable(),
|
|
6195
6171
|
experimentalProfile: external_exports.string().optional(),
|
|
6196
6172
|
cliAgentSessionId: external_exports.string().nullable().optional(),
|
|
6197
6173
|
historyGenerationRunId: external_exports.uuid().optional(),
|
|
@@ -6483,7 +6459,6 @@ var executionContextSchema = external_exports.object({
|
|
|
6483
6459
|
appendSystemPrompt: external_exports.string().nullable(),
|
|
6484
6460
|
agentComposeVersionId: external_exports.string().nullable(),
|
|
6485
6461
|
vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
|
|
6486
|
-
checkpointId: external_exports.uuid().nullable(),
|
|
6487
6462
|
sandboxToken: external_exports.string(),
|
|
6488
6463
|
storageManifest: storageManifestSchema.nullable(),
|
|
6489
6464
|
environment: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
|
|
@@ -11287,32 +11262,12 @@ var integrationsTelegramBotListContract = c36.router({
|
|
|
11287
11262
|
});
|
|
11288
11263
|
var slackUploadInitBodySchema = external_exports.object({
|
|
11289
11264
|
filename: external_exports.string().min(1, "Filename is required"),
|
|
11290
|
-
length: external_exports.number().int().positive("File length must be a positive integer")
|
|
11291
|
-
canonical: external_exports.object({
|
|
11292
|
-
operationId: external_exports.string().uuid(),
|
|
11293
|
-
contentType: external_exports.string().min(1).max(200),
|
|
11294
|
-
checksumSha256: external_exports.string().regex(/^[a-f0-9]{64}$/),
|
|
11295
|
-
channel: external_exports.string().min(1, "Channel ID is required"),
|
|
11296
|
-
threadTs: external_exports.string().optional(),
|
|
11297
|
-
title: external_exports.string().optional(),
|
|
11298
|
-
initialComment: external_exports.string().optional()
|
|
11299
|
-
}).optional()
|
|
11265
|
+
length: external_exports.number().int().positive("File length must be a positive integer")
|
|
11300
11266
|
});
|
|
11301
|
-
var
|
|
11267
|
+
var slackUploadInitResponseSchema = external_exports.object({
|
|
11302
11268
|
uploadUrl: external_exports.string(),
|
|
11303
11269
|
fileId: external_exports.string()
|
|
11304
11270
|
});
|
|
11305
|
-
var canonicalSlackUploadInitResponseSchema = external_exports.object({
|
|
11306
|
-
kind: external_exports.literal("canonical"),
|
|
11307
|
-
assetId: external_exports.string().uuid(),
|
|
11308
|
-
operationId: external_exports.string().uuid(),
|
|
11309
|
-
uploadUrl: external_exports.string().url().optional(),
|
|
11310
|
-
url: external_exports.string().url()
|
|
11311
|
-
});
|
|
11312
|
-
var slackUploadInitResponseSchema = external_exports.union([
|
|
11313
|
-
directSlackUploadInitResponseSchema,
|
|
11314
|
-
canonicalSlackUploadInitResponseSchema
|
|
11315
|
-
]);
|
|
11316
11271
|
var integrationsSlackUploadInitContract = c36.router({
|
|
11317
11272
|
init: {
|
|
11318
11273
|
method: "POST",
|
|
@@ -11329,47 +11284,6 @@ var integrationsSlackUploadInitContract = c36.router({
|
|
|
11329
11284
|
summary: "Get a pre-signed Slack upload URL via org bot token"
|
|
11330
11285
|
}
|
|
11331
11286
|
});
|
|
11332
|
-
var slackUploadMaterializeBodySchema = external_exports.object({
|
|
11333
|
-
assetId: external_exports.string().uuid(),
|
|
11334
|
-
operationId: external_exports.string().uuid()
|
|
11335
|
-
});
|
|
11336
|
-
var slackUploadMaterializeResponseSchema = external_exports.object({
|
|
11337
|
-
assetId: external_exports.string().uuid(),
|
|
11338
|
-
url: external_exports.string().url(),
|
|
11339
|
-
delivery: external_exports.discriminatedUnion("status", [
|
|
11340
|
-
external_exports.object({
|
|
11341
|
-
status: external_exports.literal("pending"),
|
|
11342
|
-
uploadUrl: external_exports.string(),
|
|
11343
|
-
fileId: external_exports.string()
|
|
11344
|
-
}),
|
|
11345
|
-
external_exports.object({
|
|
11346
|
-
status: external_exports.literal("delivered"),
|
|
11347
|
-
fileId: external_exports.string(),
|
|
11348
|
-
permalink: external_exports.string()
|
|
11349
|
-
}),
|
|
11350
|
-
external_exports.object({
|
|
11351
|
-
status: external_exports.literal("failed"),
|
|
11352
|
-
message: external_exports.string(),
|
|
11353
|
-
retryable: external_exports.boolean()
|
|
11354
|
-
})
|
|
11355
|
-
])
|
|
11356
|
-
});
|
|
11357
|
-
var integrationsSlackUploadMaterializeContract = c36.router({
|
|
11358
|
-
materialize: {
|
|
11359
|
-
method: "POST",
|
|
11360
|
-
path: "/api/zero/integrations/slack/upload-file/materialize",
|
|
11361
|
-
headers: authHeadersSchema,
|
|
11362
|
-
body: slackUploadMaterializeBodySchema,
|
|
11363
|
-
responses: {
|
|
11364
|
-
200: slackUploadMaterializeResponseSchema,
|
|
11365
|
-
400: apiErrorSchema,
|
|
11366
|
-
401: apiErrorSchema,
|
|
11367
|
-
403: apiErrorSchema,
|
|
11368
|
-
404: apiErrorSchema
|
|
11369
|
-
},
|
|
11370
|
-
summary: "Materialize a canonical Slack publication before delivery"
|
|
11371
|
-
}
|
|
11372
|
-
});
|
|
11373
11287
|
var telegramUploadInitBodySchema = external_exports.object({
|
|
11374
11288
|
filename: external_exports.string().min(1, "Filename is required").max(255),
|
|
11375
11289
|
contentType: external_exports.string().min(1, "Content type is required").max(200),
|
|
@@ -11623,18 +11537,11 @@ var slackUploadCompleteBodySchema = external_exports.object({
|
|
|
11623
11537
|
channel: external_exports.string().min(1, "Channel ID is required"),
|
|
11624
11538
|
threadTs: external_exports.string().optional(),
|
|
11625
11539
|
title: external_exports.string().optional(),
|
|
11626
|
-
initialComment: external_exports.string().optional()
|
|
11627
|
-
canonicalAssetId: external_exports.string().uuid().optional(),
|
|
11628
|
-
operationId: external_exports.string().uuid().optional(),
|
|
11629
|
-
uploadError: external_exports.string().max(2e3).optional()
|
|
11540
|
+
initialComment: external_exports.string().optional()
|
|
11630
11541
|
});
|
|
11631
11542
|
var slackUploadCompleteResponseSchema = external_exports.object({
|
|
11632
11543
|
fileId: external_exports.string(),
|
|
11633
|
-
permalink: external_exports.string()
|
|
11634
|
-
assetId: external_exports.string().uuid().optional(),
|
|
11635
|
-
assetUrl: external_exports.string().url().optional(),
|
|
11636
|
-
deliveryStatus: external_exports.enum(["delivered", "failed"]).optional(),
|
|
11637
|
-
deliveryError: external_exports.string().optional()
|
|
11544
|
+
permalink: external_exports.string()
|
|
11638
11545
|
});
|
|
11639
11546
|
var integrationsSlackUploadCompleteContract = c36.router({
|
|
11640
11547
|
complete: {
|
|
@@ -11681,15 +11588,6 @@ async function completeSlackFileUpload(body) {
|
|
|
11681
11588
|
}
|
|
11682
11589
|
handleError(result, "Failed to complete Slack file upload");
|
|
11683
11590
|
}
|
|
11684
|
-
async function materializeSlackFileUpload(body) {
|
|
11685
|
-
const config = await getClientConfig();
|
|
11686
|
-
const client = initClient(integrationsSlackUploadMaterializeContract, config);
|
|
11687
|
-
const result = await client.materialize({ body, headers: {} });
|
|
11688
|
-
if (result.status === 200) {
|
|
11689
|
-
return result.body;
|
|
11690
|
-
}
|
|
11691
|
-
handleError(result, "Failed to materialize Slack file upload");
|
|
11692
|
-
}
|
|
11693
11591
|
async function downloadSlackFile(fileId, outPath) {
|
|
11694
11592
|
const baseUrl = await getBaseUrl();
|
|
11695
11593
|
const token = await getActiveToken();
|
|
@@ -12300,7 +12198,6 @@ export {
|
|
|
12300
12198
|
sendSlackMessage,
|
|
12301
12199
|
initSlackFileUpload,
|
|
12302
12200
|
completeSlackFileUpload,
|
|
12303
|
-
materializeSlackFileUpload,
|
|
12304
12201
|
downloadSlackFile,
|
|
12305
12202
|
listTelegramBots,
|
|
12306
12203
|
sendTelegramMessage,
|
|
@@ -12370,4 +12267,4 @@ export {
|
|
|
12370
12267
|
getHostedSiteFiles,
|
|
12371
12268
|
getHostedSiteDeployments
|
|
12372
12269
|
};
|
|
12373
|
-
//# sourceMappingURL=chunk-
|
|
12270
|
+
//# sourceMappingURL=chunk-ROB3OE37.js.map
|