@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
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from "node:module";
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
|
-
decodeZeroTokenPayload
|
|
6
|
-
|
|
5
|
+
decodeZeroTokenPayload,
|
|
6
|
+
isFeatureEnabled
|
|
7
|
+
} from "./chunk-A2NKQGRI.js";
|
|
7
8
|
import {
|
|
8
9
|
__export,
|
|
9
10
|
init_esm_shims
|
|
10
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-3VVCUQPB.js";
|
|
11
12
|
|
|
12
13
|
// ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js
|
|
13
14
|
init_esm_shims();
|
|
@@ -15384,7 +15385,7 @@ function createCliClientHeaderInjector(options) {
|
|
|
15384
15385
|
};
|
|
15385
15386
|
}
|
|
15386
15387
|
var addDefaultCliClientHeaders = createCliClientHeaderInjector({
|
|
15387
|
-
clientVersion: "9.249.
|
|
15388
|
+
clientVersion: "9.249.2"
|
|
15388
15389
|
});
|
|
15389
15390
|
function addCliClientHeaders(headers) {
|
|
15390
15391
|
addDefaultCliClientHeaders(headers);
|
|
@@ -16496,6 +16497,8 @@ var apiErrorSchema = external_exports.object({
|
|
|
16496
16497
|
code: external_exports.string()
|
|
16497
16498
|
})
|
|
16498
16499
|
});
|
|
16500
|
+
var PLAN_UPGRADE_RUN_GUIDANCE = "Return the plan upgrade link to the user.";
|
|
16501
|
+
var PLAN_UPGRADE_CLI_HINT = "zero upgrade pro";
|
|
16499
16502
|
var RUN_ERROR_GUIDANCE = {
|
|
16500
16503
|
COMPUTER_USE_AUTHORIZATION_REQUIRED: {
|
|
16501
16504
|
title: "Computer Use authorization required",
|
|
@@ -16509,7 +16512,12 @@ var RUN_ERROR_GUIDANCE = {
|
|
|
16509
16512
|
},
|
|
16510
16513
|
INSUFFICIENT_CREDITS: {
|
|
16511
16514
|
title: "Credits depleted",
|
|
16512
|
-
guidance: "
|
|
16515
|
+
guidance: "Run credit diagnostics first. Buy credits only when the current plan allows it; otherwise return the plan upgrade link.",
|
|
16516
|
+
cliHint: "zero doctor credit"
|
|
16517
|
+
},
|
|
16518
|
+
PRO_REQUIRED: {
|
|
16519
|
+
title: "Paid plan required",
|
|
16520
|
+
guidance: "Built-in video generation is unavailable on the current plan."
|
|
16513
16521
|
},
|
|
16514
16522
|
PROVIDER_INCOMPATIBLE: {
|
|
16515
16523
|
title: "Provider not compatible",
|
|
@@ -16572,6 +16580,13 @@ var ACTIONABLE_RUN_ERROR_SNIPPETS = [
|
|
|
16572
16580
|
];
|
|
16573
16581
|
|
|
16574
16582
|
// src/lib/command/with-error-handler.ts
|
|
16583
|
+
function isPlanUpgradeGuidanceEnabled() {
|
|
16584
|
+
const payload = decodeZeroTokenPayload();
|
|
16585
|
+
return isFeatureEnabled("planUpgradeGuidance" /* PlanUpgradeGuidance */, {
|
|
16586
|
+
userId: payload?.userId,
|
|
16587
|
+
orgId: payload?.orgId
|
|
16588
|
+
});
|
|
16589
|
+
}
|
|
16575
16590
|
function withErrorHandler(fn) {
|
|
16576
16591
|
return async (...args) => {
|
|
16577
16592
|
try {
|
|
@@ -16589,10 +16604,13 @@ function withErrorHandler(fn) {
|
|
|
16589
16604
|
} else {
|
|
16590
16605
|
const guidance = RUN_ERROR_GUIDANCE[error48.code];
|
|
16591
16606
|
if (guidance) {
|
|
16607
|
+
const showPlanUpgradeGuidance = error48.code === "PRO_REQUIRED" && isPlanUpgradeGuidanceEnabled();
|
|
16608
|
+
const guidanceText = showPlanUpgradeGuidance ? `${guidance.guidance} ${PLAN_UPGRADE_RUN_GUIDANCE}` : guidance.guidance;
|
|
16609
|
+
const cliHint = showPlanUpgradeGuidance ? PLAN_UPGRADE_CLI_HINT : guidance.cliHint;
|
|
16592
16610
|
console.error(source_default.red(`\u2717 ${guidance.title}`));
|
|
16593
|
-
console.error(source_default.dim(` ${
|
|
16594
|
-
if (
|
|
16595
|
-
console.error(source_default.dim(` Run: ${
|
|
16611
|
+
console.error(source_default.dim(` ${guidanceText}`));
|
|
16612
|
+
if (cliHint) {
|
|
16613
|
+
console.error(source_default.dim(` Run: ${cliHint}`));
|
|
16596
16614
|
}
|
|
16597
16615
|
} else {
|
|
16598
16616
|
console.error(source_default.red(`\u2717 ${error48.status}: ${error48.message}`));
|
|
@@ -16611,662 +16629,6 @@ function withErrorHandler(fn) {
|
|
|
16611
16629
|
};
|
|
16612
16630
|
}
|
|
16613
16631
|
|
|
16614
|
-
// src/lib/api/domains/web.ts
|
|
16615
|
-
init_esm_shims();
|
|
16616
|
-
import { createWriteStream, readFileSync, statSync } from "fs";
|
|
16617
|
-
import { basename, extname } from "path";
|
|
16618
|
-
import { Readable } from "stream";
|
|
16619
|
-
import { pipeline } from "stream/promises";
|
|
16620
|
-
import { setTimeout as delay } from "timers/promises";
|
|
16621
|
-
import { Realtime } from "ably";
|
|
16622
|
-
var BUILT_IN_GENERATION_POLL_INTERVAL_MS = 2e3;
|
|
16623
|
-
var BUILT_IN_GENERATION_WAIT_TIMEOUT_MS_BY_TYPE = {
|
|
16624
|
-
image: 15 * 60 * 1e3,
|
|
16625
|
-
video: 30 * 60 * 1e3,
|
|
16626
|
-
presentation: 60 * 60 * 1e3,
|
|
16627
|
-
website: 60 * 60 * 1e3
|
|
16628
|
-
};
|
|
16629
|
-
var ABLY_CONNECT_TIMEOUT_MS = 1e4;
|
|
16630
|
-
var MIME_BY_EXTENSION = {
|
|
16631
|
-
".png": "image/png",
|
|
16632
|
-
".jpg": "image/jpeg",
|
|
16633
|
-
".jpeg": "image/jpeg",
|
|
16634
|
-
".gif": "image/gif",
|
|
16635
|
-
".webp": "image/webp",
|
|
16636
|
-
".avif": "image/avif",
|
|
16637
|
-
".svg": "image/svg+xml",
|
|
16638
|
-
".bmp": "image/bmp",
|
|
16639
|
-
".heic": "image/heic",
|
|
16640
|
-
".heif": "image/heif",
|
|
16641
|
-
".tif": "image/tiff",
|
|
16642
|
-
".tiff": "image/tiff",
|
|
16643
|
-
".psd": "image/vnd.adobe.photoshop",
|
|
16644
|
-
".mp4": "video/mp4",
|
|
16645
|
-
".webm": "video/webm",
|
|
16646
|
-
".mov": "video/quicktime",
|
|
16647
|
-
".aac": "audio/aac",
|
|
16648
|
-
".flac": "audio/flac",
|
|
16649
|
-
".m4a": "audio/mp4",
|
|
16650
|
-
".mp3": "audio/mpeg",
|
|
16651
|
-
".mpga": "audio/mpga",
|
|
16652
|
-
".oga": "audio/ogg",
|
|
16653
|
-
".ogg": "audio/ogg",
|
|
16654
|
-
".opus": "audio/opus",
|
|
16655
|
-
".wav": "audio/wav",
|
|
16656
|
-
".wave": "audio/wave",
|
|
16657
|
-
".pdf": "application/pdf",
|
|
16658
|
-
".txt": "text/plain",
|
|
16659
|
-
".csv": "text/csv",
|
|
16660
|
-
".md": "text/markdown",
|
|
16661
|
-
".html": "text/html",
|
|
16662
|
-
".htm": "text/html",
|
|
16663
|
-
".json": "application/json",
|
|
16664
|
-
".xml": "application/xml",
|
|
16665
|
-
".yaml": "application/yaml",
|
|
16666
|
-
".yml": "application/yaml",
|
|
16667
|
-
".tsv": "text/tab-separated-values",
|
|
16668
|
-
".doc": "application/msword",
|
|
16669
|
-
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
16670
|
-
".docm": "application/vnd.ms-word.document.macroenabled.12",
|
|
16671
|
-
".dotm": "application/vnd.ms-word.template.macroenabled.12",
|
|
16672
|
-
".dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
|
|
16673
|
-
".odt": "application/vnd.oasis.opendocument.text",
|
|
16674
|
-
".rtf": "application/rtf",
|
|
16675
|
-
".xls": "application/vnd.ms-excel",
|
|
16676
|
-
".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
16677
|
-
".xlsb": "application/vnd.ms-excel.sheet.binary.macroenabled.12",
|
|
16678
|
-
".xlsm": "application/vnd.ms-excel.sheet.macroenabled.12",
|
|
16679
|
-
".xltm": "application/vnd.ms-excel.template.macroenabled.12",
|
|
16680
|
-
".xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
|
|
16681
|
-
".ods": "application/vnd.oasis.opendocument.spreadsheet",
|
|
16682
|
-
".ppt": "application/vnd.ms-powerpoint",
|
|
16683
|
-
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
16684
|
-
".potm": "application/vnd.ms-powerpoint.template.macroenabled.12",
|
|
16685
|
-
".potx": "application/vnd.openxmlformats-officedocument.presentationml.template",
|
|
16686
|
-
".odp": "application/vnd.oasis.opendocument.presentation",
|
|
16687
|
-
".ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
|
|
16688
|
-
".ppsm": "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
|
|
16689
|
-
".pptm": "application/vnd.ms-powerpoint.presentation.macroenabled.12",
|
|
16690
|
-
".zip": "application/zip",
|
|
16691
|
-
".rar": "application/vnd.rar",
|
|
16692
|
-
".7z": "application/x-7z-compressed",
|
|
16693
|
-
".tar": "application/x-tar",
|
|
16694
|
-
".gz": "application/gzip",
|
|
16695
|
-
".tgz": "application/gzip",
|
|
16696
|
-
".bz2": "application/x-bzip2",
|
|
16697
|
-
".xz": "application/x-xz",
|
|
16698
|
-
".pages": "application/vnd.apple.pages",
|
|
16699
|
-
".numbers": "application/vnd.apple.numbers",
|
|
16700
|
-
".key": "application/vnd.apple.keynote",
|
|
16701
|
-
".parquet": "application/vnd.apache.parquet",
|
|
16702
|
-
".sqlite": "application/vnd.sqlite3",
|
|
16703
|
-
".sqlite3": "application/vnd.sqlite3",
|
|
16704
|
-
".db": "application/vnd.sqlite3",
|
|
16705
|
-
".epub": "application/epub+zip",
|
|
16706
|
-
".ai": "application/postscript"
|
|
16707
|
-
};
|
|
16708
|
-
function inferWebUploadContentType(localPath) {
|
|
16709
|
-
const ext = extname(localPath).toLowerCase();
|
|
16710
|
-
return MIME_BY_EXTENSION[ext] ?? "application/octet-stream";
|
|
16711
|
-
}
|
|
16712
|
-
async function downloadWebFile(fileId, outPath) {
|
|
16713
|
-
const baseUrl = await getBaseUrl();
|
|
16714
|
-
const token = await getActiveToken();
|
|
16715
|
-
if (!token) {
|
|
16716
|
-
throw new ApiRequestError("Not authenticated", "UNAUTHORIZED", 401);
|
|
16717
|
-
}
|
|
16718
|
-
const url2 = new URL("/api/zero/web/download-file", baseUrl);
|
|
16719
|
-
url2.searchParams.set("file_id", fileId);
|
|
16720
|
-
const headers = {
|
|
16721
|
-
Authorization: `Bearer ${token}`
|
|
16722
|
-
};
|
|
16723
|
-
const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;
|
|
16724
|
-
if (bypassSecret) {
|
|
16725
|
-
headers["x-vercel-protection-bypass"] = bypassSecret;
|
|
16726
|
-
}
|
|
16727
|
-
const response = await fetch(url2, {
|
|
16728
|
-
headers: headersWithCliClientHeaders(headers)
|
|
16729
|
-
});
|
|
16730
|
-
if (!response.ok) {
|
|
16731
|
-
let message = `Failed to download web file (HTTP ${response.status})`;
|
|
16732
|
-
let code = "UNKNOWN";
|
|
16733
|
-
try {
|
|
16734
|
-
const body = await response.json();
|
|
16735
|
-
if (body.error?.message) message = body.error.message;
|
|
16736
|
-
if (body.error?.code) code = body.error.code;
|
|
16737
|
-
} catch {
|
|
16738
|
-
}
|
|
16739
|
-
throw new ApiRequestError(message, code, response.status);
|
|
16740
|
-
}
|
|
16741
|
-
if (!response.body) {
|
|
16742
|
-
throw new ApiRequestError(
|
|
16743
|
-
"Web download response has no body",
|
|
16744
|
-
"EMPTY_BODY",
|
|
16745
|
-
502
|
|
16746
|
-
);
|
|
16747
|
-
}
|
|
16748
|
-
const mimetype = response.headers.get("x-file-mimetype") ?? response.headers.get("content-type") ?? "application/octet-stream";
|
|
16749
|
-
await pipeline(
|
|
16750
|
-
Readable.fromWeb(response.body),
|
|
16751
|
-
createWriteStream(outPath)
|
|
16752
|
-
);
|
|
16753
|
-
const contentLengthHeader = response.headers.get("content-length");
|
|
16754
|
-
const size = contentLengthHeader ? Number(contentLengthHeader) : 0;
|
|
16755
|
-
return { path: outPath, mimetype, size };
|
|
16756
|
-
}
|
|
16757
|
-
function shouldIncludePayloadValue(value) {
|
|
16758
|
-
if (value === void 0) {
|
|
16759
|
-
return false;
|
|
16760
|
-
}
|
|
16761
|
-
return !Array.isArray(value) || value.length > 0;
|
|
16762
|
-
}
|
|
16763
|
-
function compactPayload(entries) {
|
|
16764
|
-
return Object.fromEntries(
|
|
16765
|
-
entries.filter(([, value]) => {
|
|
16766
|
-
return shouldIncludePayloadValue(value);
|
|
16767
|
-
})
|
|
16768
|
-
);
|
|
16769
|
-
}
|
|
16770
|
-
function generateWebVideoPayload(options) {
|
|
16771
|
-
return compactPayload([
|
|
16772
|
-
["prompt", options.prompt],
|
|
16773
|
-
["model", options.model],
|
|
16774
|
-
["aspectRatio", options.aspectRatio],
|
|
16775
|
-
["duration", options.duration],
|
|
16776
|
-
["resolution", options.resolution],
|
|
16777
|
-
["generateAudio", options.generateAudio],
|
|
16778
|
-
["negativePrompt", options.negativePrompt],
|
|
16779
|
-
["seed", options.seed],
|
|
16780
|
-
["autoFix", options.autoFix],
|
|
16781
|
-
["safetyTolerance", options.safetyTolerance],
|
|
16782
|
-
["imageUrls", options.imageUrls],
|
|
16783
|
-
["videoUrls", options.videoUrls],
|
|
16784
|
-
["audioUrls", options.audioUrls],
|
|
16785
|
-
["firstFrameImageUrl", options.firstFrameImageUrl],
|
|
16786
|
-
["lastFrameImageUrl", options.lastFrameImageUrl]
|
|
16787
|
-
]);
|
|
16788
|
-
}
|
|
16789
|
-
async function parseErrorBody(response, fallback) {
|
|
16790
|
-
let message = `${fallback} (HTTP ${response.status})`;
|
|
16791
|
-
let code = "UNKNOWN";
|
|
16792
|
-
try {
|
|
16793
|
-
const body = await response.json();
|
|
16794
|
-
if (body.error?.message) message = body.error.message;
|
|
16795
|
-
if (body.error?.code) code = body.error.code;
|
|
16796
|
-
} catch {
|
|
16797
|
-
}
|
|
16798
|
-
return { message, code };
|
|
16799
|
-
}
|
|
16800
|
-
function authenticatedJsonHeaders(token) {
|
|
16801
|
-
const headers = {
|
|
16802
|
-
Authorization: `Bearer ${token}`,
|
|
16803
|
-
"Content-Type": "application/json"
|
|
16804
|
-
};
|
|
16805
|
-
const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;
|
|
16806
|
-
if (bypassSecret) {
|
|
16807
|
-
headers["x-vercel-protection-bypass"] = bypassSecret;
|
|
16808
|
-
}
|
|
16809
|
-
return headersWithCliClientHeaders(headers);
|
|
16810
|
-
}
|
|
16811
|
-
function isRecord(value) {
|
|
16812
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
16813
|
-
}
|
|
16814
|
-
function isBuiltInGenerationAcceptedResponse(value) {
|
|
16815
|
-
if (!isRecord(value)) {
|
|
16816
|
-
return false;
|
|
16817
|
-
}
|
|
16818
|
-
return typeof value.generationId === "string" && value.status === "queued" && (value.type === "image" || value.type === "video" || value.type === "presentation" || value.type === "website") && isRecord(value.realtime);
|
|
16819
|
-
}
|
|
16820
|
-
function createBuiltInGenerationRealtime(accepted) {
|
|
16821
|
-
let nextAuthRequest = accepted.realtime.tokenRequest;
|
|
16822
|
-
const authCallback = (_params, callback) => {
|
|
16823
|
-
const current = nextAuthRequest;
|
|
16824
|
-
nextAuthRequest = accepted.realtime.tokenRequest;
|
|
16825
|
-
callback(null, current);
|
|
16826
|
-
};
|
|
16827
|
-
return new Realtime({
|
|
16828
|
-
authCallback,
|
|
16829
|
-
autoConnect: true,
|
|
16830
|
-
disconnectedRetryTimeout: 5e3,
|
|
16831
|
-
suspendedRetryTimeout: 15e3
|
|
16832
|
-
});
|
|
16833
|
-
}
|
|
16834
|
-
function waitForRealtimeConnected(ably, timeoutMs = ABLY_CONNECT_TIMEOUT_MS) {
|
|
16835
|
-
if (ably.connection.state === "connected") {
|
|
16836
|
-
return Promise.resolve();
|
|
16837
|
-
}
|
|
16838
|
-
if (ably.connection.state === "failed") {
|
|
16839
|
-
return Promise.reject(new Error("Ably connection failed"));
|
|
16840
|
-
}
|
|
16841
|
-
return new Promise((resolve, reject) => {
|
|
16842
|
-
const timer = setTimeout(() => {
|
|
16843
|
-
reject(new Error("Timed out connecting to Ably"));
|
|
16844
|
-
}, timeoutMs);
|
|
16845
|
-
ably.connection.once("connected", () => {
|
|
16846
|
-
clearTimeout(timer);
|
|
16847
|
-
resolve();
|
|
16848
|
-
});
|
|
16849
|
-
ably.connection.once("failed", (stateChange) => {
|
|
16850
|
-
clearTimeout(timer);
|
|
16851
|
-
reject(
|
|
16852
|
-
new Error(
|
|
16853
|
-
`Ably connection failed: ${stateChange?.reason?.message ?? "unknown"}`
|
|
16854
|
-
)
|
|
16855
|
-
);
|
|
16856
|
-
});
|
|
16857
|
-
});
|
|
16858
|
-
}
|
|
16859
|
-
async function createBuiltInGenerationNotifier(accepted) {
|
|
16860
|
-
const ably = createBuiltInGenerationRealtime(accepted);
|
|
16861
|
-
try {
|
|
16862
|
-
await waitForRealtimeConnected(ably);
|
|
16863
|
-
const channel = ably.channels.get(accepted.realtime.channelName);
|
|
16864
|
-
let pendingEvent = false;
|
|
16865
|
-
let closed = false;
|
|
16866
|
-
let wake = null;
|
|
16867
|
-
const wakeWaiter = () => {
|
|
16868
|
-
const current = wake;
|
|
16869
|
-
wake = null;
|
|
16870
|
-
current?.();
|
|
16871
|
-
};
|
|
16872
|
-
const onMessage = (_message) => {
|
|
16873
|
-
if (wake) {
|
|
16874
|
-
wakeWaiter();
|
|
16875
|
-
return;
|
|
16876
|
-
}
|
|
16877
|
-
pendingEvent = true;
|
|
16878
|
-
};
|
|
16879
|
-
await channel.subscribe(accepted.realtime.eventName, onMessage);
|
|
16880
|
-
return {
|
|
16881
|
-
wait(timeoutMs) {
|
|
16882
|
-
if (pendingEvent || closed || timeoutMs <= 0) {
|
|
16883
|
-
pendingEvent = false;
|
|
16884
|
-
return Promise.resolve();
|
|
16885
|
-
}
|
|
16886
|
-
return new Promise((resolve) => {
|
|
16887
|
-
function done() {
|
|
16888
|
-
clearTimeout(timer);
|
|
16889
|
-
if (wake === done) {
|
|
16890
|
-
wake = null;
|
|
16891
|
-
}
|
|
16892
|
-
resolve();
|
|
16893
|
-
}
|
|
16894
|
-
const timer = setTimeout(done, timeoutMs);
|
|
16895
|
-
wake = done;
|
|
16896
|
-
});
|
|
16897
|
-
},
|
|
16898
|
-
close() {
|
|
16899
|
-
if (closed) {
|
|
16900
|
-
return;
|
|
16901
|
-
}
|
|
16902
|
-
closed = true;
|
|
16903
|
-
channel.unsubscribe(accepted.realtime.eventName, onMessage);
|
|
16904
|
-
wakeWaiter();
|
|
16905
|
-
ably.close();
|
|
16906
|
-
}
|
|
16907
|
-
};
|
|
16908
|
-
} catch {
|
|
16909
|
-
ably.close();
|
|
16910
|
-
return null;
|
|
16911
|
-
}
|
|
16912
|
-
}
|
|
16913
|
-
async function getBuiltInGenerationStatus(baseUrl, token, generationId) {
|
|
16914
|
-
const response = await fetch(
|
|
16915
|
-
new URL(`/api/zero/built-in-generations/${generationId}`, baseUrl),
|
|
16916
|
-
{ headers: authenticatedJsonHeaders(token) }
|
|
16917
|
-
);
|
|
16918
|
-
if (!response.ok) {
|
|
16919
|
-
const { message, code } = await parseErrorBody(
|
|
16920
|
-
response,
|
|
16921
|
-
"Failed to get generation status"
|
|
16922
|
-
);
|
|
16923
|
-
throw new ApiRequestError(message, code, response.status);
|
|
16924
|
-
}
|
|
16925
|
-
return await response.json();
|
|
16926
|
-
}
|
|
16927
|
-
function readBuiltInGenerationResult(status, fallback) {
|
|
16928
|
-
if (status.status === "completed") {
|
|
16929
|
-
if (!status.result) {
|
|
16930
|
-
throw new ApiRequestError(
|
|
16931
|
-
`${fallback} returned no result`,
|
|
16932
|
-
"EMPTY_RESULT",
|
|
16933
|
-
502
|
|
16934
|
-
);
|
|
16935
|
-
}
|
|
16936
|
-
return status.result;
|
|
16937
|
-
}
|
|
16938
|
-
if (status.status === "failed") {
|
|
16939
|
-
const code = status.error?.code ?? "GENERATION_FAILED";
|
|
16940
|
-
throw new ApiRequestError(
|
|
16941
|
-
status.error?.message ?? `${fallback} failed`,
|
|
16942
|
-
code,
|
|
16943
|
-
statusForBuiltInGenerationError(code)
|
|
16944
|
-
);
|
|
16945
|
-
}
|
|
16946
|
-
return void 0;
|
|
16947
|
-
}
|
|
16948
|
-
function statusForBuiltInGenerationError(code) {
|
|
16949
|
-
if (code === "BAD_REQUEST") {
|
|
16950
|
-
return 400;
|
|
16951
|
-
}
|
|
16952
|
-
if (code === "INSUFFICIENT_CREDITS") {
|
|
16953
|
-
return 402;
|
|
16954
|
-
}
|
|
16955
|
-
if (code === "NOT_CONFIGURED") {
|
|
16956
|
-
return 503;
|
|
16957
|
-
}
|
|
16958
|
-
if (code === "GENERATION_TIMEOUT") {
|
|
16959
|
-
return 504;
|
|
16960
|
-
}
|
|
16961
|
-
if (code.startsWith("BYTEPLUS_INVALID_PARAMETER") || code.startsWith("BYTEPLUS_INPUT_")) {
|
|
16962
|
-
return 400;
|
|
16963
|
-
}
|
|
16964
|
-
if (code.startsWith("BYTEPLUS_")) {
|
|
16965
|
-
return 502;
|
|
16966
|
-
}
|
|
16967
|
-
if (code.startsWith("NO_") || code.endsWith("_FAILED")) {
|
|
16968
|
-
return 502;
|
|
16969
|
-
}
|
|
16970
|
-
return 500;
|
|
16971
|
-
}
|
|
16972
|
-
async function waitForBuiltInGenerationResult(args) {
|
|
16973
|
-
let notifier = null;
|
|
16974
|
-
let notifierCreated = false;
|
|
16975
|
-
const startedAt = Date.now();
|
|
16976
|
-
const timeoutMs = BUILT_IN_GENERATION_WAIT_TIMEOUT_MS_BY_TYPE[args.accepted.type];
|
|
16977
|
-
try {
|
|
16978
|
-
while (Date.now() - startedAt < timeoutMs) {
|
|
16979
|
-
const status = await getBuiltInGenerationStatus(
|
|
16980
|
-
args.baseUrl,
|
|
16981
|
-
args.token,
|
|
16982
|
-
args.accepted.generationId
|
|
16983
|
-
);
|
|
16984
|
-
const result = readBuiltInGenerationResult(status, args.fallback);
|
|
16985
|
-
if (result) {
|
|
16986
|
-
return result;
|
|
16987
|
-
}
|
|
16988
|
-
const elapsed = Date.now() - startedAt;
|
|
16989
|
-
const remaining = timeoutMs - elapsed;
|
|
16990
|
-
const waitMs = Math.min(BUILT_IN_GENERATION_POLL_INTERVAL_MS, remaining);
|
|
16991
|
-
if (!notifierCreated) {
|
|
16992
|
-
notifier = await createBuiltInGenerationNotifier(args.accepted);
|
|
16993
|
-
notifierCreated = true;
|
|
16994
|
-
}
|
|
16995
|
-
if (notifier) {
|
|
16996
|
-
await notifier.wait(waitMs);
|
|
16997
|
-
} else {
|
|
16998
|
-
await delay(waitMs);
|
|
16999
|
-
}
|
|
17000
|
-
}
|
|
17001
|
-
} finally {
|
|
17002
|
-
notifier?.close();
|
|
17003
|
-
}
|
|
17004
|
-
throw new ApiRequestError(
|
|
17005
|
-
`${args.fallback} timed out (generationId: ${args.accepted.generationId})`,
|
|
17006
|
-
"GENERATION_TIMEOUT",
|
|
17007
|
-
504
|
|
17008
|
-
);
|
|
17009
|
-
}
|
|
17010
|
-
async function readBuiltInGenerationResponse(args) {
|
|
17011
|
-
const body = await args.response.json();
|
|
17012
|
-
if (isBuiltInGenerationAcceptedResponse(body)) {
|
|
17013
|
-
return waitForBuiltInGenerationResult({
|
|
17014
|
-
accepted: body,
|
|
17015
|
-
baseUrl: args.baseUrl,
|
|
17016
|
-
token: args.token,
|
|
17017
|
-
fallback: args.fallback
|
|
17018
|
-
});
|
|
17019
|
-
}
|
|
17020
|
-
if (args.response.status === 202) {
|
|
17021
|
-
throw new ApiRequestError(
|
|
17022
|
-
`${args.fallback} returned an invalid generation response`,
|
|
17023
|
-
"INVALID_GENERATION_RESPONSE",
|
|
17024
|
-
502
|
|
17025
|
-
);
|
|
17026
|
-
}
|
|
17027
|
-
return body;
|
|
17028
|
-
}
|
|
17029
|
-
async function uploadWebFile(localPath, options) {
|
|
17030
|
-
const stats = statSync(localPath);
|
|
17031
|
-
if (!stats.isFile()) {
|
|
17032
|
-
throw new ApiRequestError(
|
|
17033
|
-
`Not a regular file: ${localPath}`,
|
|
17034
|
-
"BAD_REQUEST",
|
|
17035
|
-
400
|
|
17036
|
-
);
|
|
17037
|
-
}
|
|
17038
|
-
const baseUrl = await getBaseUrl();
|
|
17039
|
-
const token = await getActiveToken();
|
|
17040
|
-
if (!token) {
|
|
17041
|
-
throw new ApiRequestError("Not authenticated", "UNAUTHORIZED", 401);
|
|
17042
|
-
}
|
|
17043
|
-
const filename = basename(localPath);
|
|
17044
|
-
const contentType = options?.contentType ?? inferWebUploadContentType(localPath);
|
|
17045
|
-
const prepareHeaders = {
|
|
17046
|
-
Authorization: `Bearer ${token}`,
|
|
17047
|
-
"Content-Type": "application/json"
|
|
17048
|
-
};
|
|
17049
|
-
const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;
|
|
17050
|
-
if (bypassSecret) {
|
|
17051
|
-
prepareHeaders["x-vercel-protection-bypass"] = bypassSecret;
|
|
17052
|
-
}
|
|
17053
|
-
const prepareUrl = new URL("/api/zero/uploads/prepare", baseUrl);
|
|
17054
|
-
const prepareRes = await fetch(prepareUrl, {
|
|
17055
|
-
method: "POST",
|
|
17056
|
-
headers: headersWithCliClientHeaders(prepareHeaders),
|
|
17057
|
-
body: JSON.stringify({ filename, contentType, size: stats.size })
|
|
17058
|
-
});
|
|
17059
|
-
if (!prepareRes.ok) {
|
|
17060
|
-
const { message, code } = await parseErrorBody(
|
|
17061
|
-
prepareRes,
|
|
17062
|
-
"Failed to prepare upload"
|
|
17063
|
-
);
|
|
17064
|
-
throw new ApiRequestError(message, code, prepareRes.status);
|
|
17065
|
-
}
|
|
17066
|
-
const prepared = await prepareRes.json();
|
|
17067
|
-
const bytes = readFileSync(localPath);
|
|
17068
|
-
const putRes = await fetch(prepared.uploadUrl, {
|
|
17069
|
-
method: "PUT",
|
|
17070
|
-
headers: { "Content-Type": prepared.contentType },
|
|
17071
|
-
body: new Uint8Array(bytes)
|
|
17072
|
-
});
|
|
17073
|
-
if (!putRes.ok) {
|
|
17074
|
-
throw new ApiRequestError(
|
|
17075
|
-
`Failed to upload file to storage (HTTP ${putRes.status})`,
|
|
17076
|
-
"UPLOAD_FAILED",
|
|
17077
|
-
putRes.status
|
|
17078
|
-
);
|
|
17079
|
-
}
|
|
17080
|
-
const completeUrl = new URL("/api/zero/uploads/complete", baseUrl);
|
|
17081
|
-
const completeRes = await fetch(completeUrl, {
|
|
17082
|
-
method: "POST",
|
|
17083
|
-
headers: headersWithCliClientHeaders(prepareHeaders),
|
|
17084
|
-
body: JSON.stringify({
|
|
17085
|
-
id: prepared.id,
|
|
17086
|
-
contentType: prepared.contentType
|
|
17087
|
-
})
|
|
17088
|
-
});
|
|
17089
|
-
if (!completeRes.ok) {
|
|
17090
|
-
const { message, code } = await parseErrorBody(
|
|
17091
|
-
completeRes,
|
|
17092
|
-
"Failed to complete upload"
|
|
17093
|
-
);
|
|
17094
|
-
throw new ApiRequestError(message, code, completeRes.status);
|
|
17095
|
-
}
|
|
17096
|
-
const completed = await completeRes.json();
|
|
17097
|
-
return {
|
|
17098
|
-
id: completed.id,
|
|
17099
|
-
filename: completed.filename,
|
|
17100
|
-
contentType: completed.contentType,
|
|
17101
|
-
size: completed.size,
|
|
17102
|
-
url: completed.url
|
|
17103
|
-
};
|
|
17104
|
-
}
|
|
17105
|
-
async function generateWebVoice(options) {
|
|
17106
|
-
const baseUrl = await getBaseUrl();
|
|
17107
|
-
const token = await getActiveToken();
|
|
17108
|
-
if (!token) {
|
|
17109
|
-
throw new ApiRequestError("Not authenticated", "UNAUTHORIZED", 401);
|
|
17110
|
-
}
|
|
17111
|
-
const headers = {
|
|
17112
|
-
Authorization: `Bearer ${token}`,
|
|
17113
|
-
"Content-Type": "application/json"
|
|
17114
|
-
};
|
|
17115
|
-
const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;
|
|
17116
|
-
if (bypassSecret) {
|
|
17117
|
-
headers["x-vercel-protection-bypass"] = bypassSecret;
|
|
17118
|
-
}
|
|
17119
|
-
const response = await fetch(new URL("/api/zero/voice-io/speech", baseUrl), {
|
|
17120
|
-
method: "POST",
|
|
17121
|
-
headers: headersWithCliClientHeaders(headers),
|
|
17122
|
-
body: JSON.stringify({
|
|
17123
|
-
text: options.text,
|
|
17124
|
-
...options.voice ? { voice: options.voice } : {},
|
|
17125
|
-
...options.instructions ? { instructions: options.instructions } : {}
|
|
17126
|
-
})
|
|
17127
|
-
});
|
|
17128
|
-
if (!response.ok) {
|
|
17129
|
-
const { message, code } = await parseErrorBody(
|
|
17130
|
-
response,
|
|
17131
|
-
"Failed to generate voice"
|
|
17132
|
-
);
|
|
17133
|
-
throw new ApiRequestError(message, code, response.status);
|
|
17134
|
-
}
|
|
17135
|
-
return await response.json();
|
|
17136
|
-
}
|
|
17137
|
-
async function generateWebImage(options) {
|
|
17138
|
-
const baseUrl = await getBaseUrl();
|
|
17139
|
-
const token = await getActiveToken();
|
|
17140
|
-
if (!token) {
|
|
17141
|
-
throw new ApiRequestError("Not authenticated", "UNAUTHORIZED", 401);
|
|
17142
|
-
}
|
|
17143
|
-
const headers = {
|
|
17144
|
-
Authorization: `Bearer ${token}`,
|
|
17145
|
-
"Content-Type": "application/json"
|
|
17146
|
-
};
|
|
17147
|
-
const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;
|
|
17148
|
-
if (bypassSecret) {
|
|
17149
|
-
headers["x-vercel-protection-bypass"] = bypassSecret;
|
|
17150
|
-
}
|
|
17151
|
-
const response = await fetch(
|
|
17152
|
-
new URL("/api/zero/image-io/generate", baseUrl),
|
|
17153
|
-
{
|
|
17154
|
-
method: "POST",
|
|
17155
|
-
headers: headersWithCliClientHeaders(headers),
|
|
17156
|
-
body: JSON.stringify({
|
|
17157
|
-
prompt: options.prompt,
|
|
17158
|
-
...options.model ? { model: options.model } : {},
|
|
17159
|
-
...options.size ? { size: options.size } : {},
|
|
17160
|
-
...options.quality ? { quality: options.quality } : {},
|
|
17161
|
-
...options.background ? { background: options.background } : {},
|
|
17162
|
-
...options.outputFormat ? { outputFormat: options.outputFormat } : {},
|
|
17163
|
-
...options.outputCompression !== void 0 ? { outputCompression: options.outputCompression } : {},
|
|
17164
|
-
...options.moderation ? { moderation: options.moderation } : {},
|
|
17165
|
-
...options.seed !== void 0 ? { seed: options.seed } : {},
|
|
17166
|
-
...options.safetyTolerance ? { safetyTolerance: options.safetyTolerance } : {},
|
|
17167
|
-
...options.enhancePrompt !== void 0 ? { enhancePrompt: options.enhancePrompt } : {},
|
|
17168
|
-
...options.imageUrls && options.imageUrls.length > 0 ? { imageUrls: options.imageUrls } : {},
|
|
17169
|
-
...options.maskImageUrl ? { maskImageUrl: options.maskImageUrl } : {},
|
|
17170
|
-
...options.inputFidelity ? { inputFidelity: options.inputFidelity } : {},
|
|
17171
|
-
...options.imagePromptStrength !== void 0 ? { imagePromptStrength: options.imagePromptStrength } : {}
|
|
17172
|
-
})
|
|
17173
|
-
}
|
|
17174
|
-
);
|
|
17175
|
-
if (!response.ok) {
|
|
17176
|
-
const { message, code } = await parseErrorBody(
|
|
17177
|
-
response,
|
|
17178
|
-
"Failed to generate image"
|
|
17179
|
-
);
|
|
17180
|
-
throw new ApiRequestError(message, code, response.status);
|
|
17181
|
-
}
|
|
17182
|
-
return readBuiltInGenerationResponse({
|
|
17183
|
-
response,
|
|
17184
|
-
baseUrl,
|
|
17185
|
-
token,
|
|
17186
|
-
fallback: "Failed to generate image"
|
|
17187
|
-
});
|
|
17188
|
-
}
|
|
17189
|
-
async function generateWebVideo(options) {
|
|
17190
|
-
const baseUrl = await getBaseUrl();
|
|
17191
|
-
const token = await getActiveToken();
|
|
17192
|
-
if (!token) {
|
|
17193
|
-
throw new ApiRequestError("Not authenticated", "UNAUTHORIZED", 401);
|
|
17194
|
-
}
|
|
17195
|
-
const headers = {
|
|
17196
|
-
Authorization: `Bearer ${token}`,
|
|
17197
|
-
"Content-Type": "application/json"
|
|
17198
|
-
};
|
|
17199
|
-
const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;
|
|
17200
|
-
if (bypassSecret) {
|
|
17201
|
-
headers["x-vercel-protection-bypass"] = bypassSecret;
|
|
17202
|
-
}
|
|
17203
|
-
const response = await fetch(
|
|
17204
|
-
new URL("/api/zero/video-io/generate", baseUrl),
|
|
17205
|
-
{
|
|
17206
|
-
method: "POST",
|
|
17207
|
-
headers: headersWithCliClientHeaders(headers),
|
|
17208
|
-
body: JSON.stringify(generateWebVideoPayload(options))
|
|
17209
|
-
}
|
|
17210
|
-
);
|
|
17211
|
-
if (!response.ok) {
|
|
17212
|
-
const { message, code } = await parseErrorBody(
|
|
17213
|
-
response,
|
|
17214
|
-
"Failed to generate video"
|
|
17215
|
-
);
|
|
17216
|
-
throw new ApiRequestError(message, code, response.status);
|
|
17217
|
-
}
|
|
17218
|
-
return readBuiltInGenerationResponse({
|
|
17219
|
-
response,
|
|
17220
|
-
baseUrl,
|
|
17221
|
-
token,
|
|
17222
|
-
fallback: "Failed to generate video"
|
|
17223
|
-
});
|
|
17224
|
-
}
|
|
17225
|
-
async function transcribeAudio(audioPath, options = {}) {
|
|
17226
|
-
const baseUrl = await getBaseUrl();
|
|
17227
|
-
const token = await getActiveToken();
|
|
17228
|
-
if (!token) {
|
|
17229
|
-
throw new ApiRequestError("Not authenticated", "UNAUTHORIZED", 401);
|
|
17230
|
-
}
|
|
17231
|
-
const headers = {
|
|
17232
|
-
Authorization: `Bearer ${token}`
|
|
17233
|
-
};
|
|
17234
|
-
const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;
|
|
17235
|
-
if (bypassSecret) {
|
|
17236
|
-
headers["x-vercel-protection-bypass"] = bypassSecret;
|
|
17237
|
-
}
|
|
17238
|
-
const url2 = new URL("/api/zero/voice-io/stt", baseUrl);
|
|
17239
|
-
if (options.verbose) {
|
|
17240
|
-
url2.searchParams.set("verbose", "true");
|
|
17241
|
-
}
|
|
17242
|
-
const audioData = readFileSync(audioPath);
|
|
17243
|
-
const filename = basename(audioPath);
|
|
17244
|
-
const ext = extname(filename).toLowerCase();
|
|
17245
|
-
const mimeMap = {
|
|
17246
|
-
".mp3": "audio/mpeg",
|
|
17247
|
-
".mp4": "audio/mp4",
|
|
17248
|
-
".m4a": "audio/m4a",
|
|
17249
|
-
".wav": "audio/wav",
|
|
17250
|
-
".webm": "audio/webm"
|
|
17251
|
-
};
|
|
17252
|
-
const mimeType = mimeMap[ext] ?? "audio/mpeg";
|
|
17253
|
-
const formData = new FormData();
|
|
17254
|
-
formData.append("file", new Blob([audioData], { type: mimeType }), filename);
|
|
17255
|
-
const response = await fetch(url2, {
|
|
17256
|
-
method: "POST",
|
|
17257
|
-
headers: headersWithCliClientHeaders(headers),
|
|
17258
|
-
body: formData
|
|
17259
|
-
});
|
|
17260
|
-
if (!response.ok) {
|
|
17261
|
-
const { message, code } = await parseErrorBody(
|
|
17262
|
-
response,
|
|
17263
|
-
"Transcription failed"
|
|
17264
|
-
);
|
|
17265
|
-
throw new ApiRequestError(message, code, response.status);
|
|
17266
|
-
}
|
|
17267
|
-
return await response.json();
|
|
17268
|
-
}
|
|
17269
|
-
|
|
17270
16632
|
export {
|
|
17271
16633
|
source_default,
|
|
17272
16634
|
getToken,
|
|
@@ -17300,13 +16662,6 @@ export {
|
|
|
17300
16662
|
orgModelPoliciesResponseSchema,
|
|
17301
16663
|
updateOrgModelPoliciesRequestSchema,
|
|
17302
16664
|
apiErrorSchema,
|
|
17303
|
-
inferWebUploadContentType,
|
|
17304
|
-
downloadWebFile,
|
|
17305
|
-
uploadWebFile,
|
|
17306
|
-
generateWebVoice,
|
|
17307
|
-
generateWebImage,
|
|
17308
|
-
generateWebVideo,
|
|
17309
|
-
transcribeAudio,
|
|
17310
16665
|
withErrorHandler
|
|
17311
16666
|
};
|
|
17312
|
-
//# sourceMappingURL=chunk-
|
|
16667
|
+
//# sourceMappingURL=chunk-BQOOTJNB.js.map
|