makefx 1.6.5 → 1.6.7
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/README.md +1 -1
- package/makefx.mjs +86 -26
- package/package.json +1 -1
package/README.md
CHANGED
package/makefx.mjs
CHANGED
|
@@ -4442,7 +4442,7 @@ require_websocket_server();
|
|
|
4442
4442
|
var wrapper_default = import_websocket.default;
|
|
4443
4443
|
//#endregion
|
|
4444
4444
|
//#region src/cli/version.ts
|
|
4445
|
-
var CLI_VERSION = "1.6.
|
|
4445
|
+
var CLI_VERSION = "1.6.7+0439271d1461";
|
|
4446
4446
|
var CLI_VERSION_HEADER = "X-MakeFX-CLI-Version";
|
|
4447
4447
|
function cliVersionHeaders() {
|
|
4448
4448
|
return {
|
|
@@ -4461,6 +4461,7 @@ function cliVersionHeaders() {
|
|
|
4461
4461
|
var GENERATION_REQUEST_TIMEOUT_MS = 3e5;
|
|
4462
4462
|
var VIDEO_GENERATION_REQUEST_TIMEOUT_MS = 72e4;
|
|
4463
4463
|
var VARIANT_SYNC_POLL_INTERVAL_MS = 15e3;
|
|
4464
|
+
var GENERATION_RECONNECT_RETRY_MS = 1e3;
|
|
4464
4465
|
function getGenerationRequestTimeoutMs(mediaKind) {
|
|
4465
4466
|
return mediaKind === "video" ? VIDEO_GENERATION_REQUEST_TIMEOUT_MS : GENERATION_REQUEST_TIMEOUT_MS;
|
|
4466
4467
|
}
|
|
@@ -4493,6 +4494,8 @@ var WebSocketClient = class WebSocketClient {
|
|
|
4493
4494
|
env;
|
|
4494
4495
|
spaceId;
|
|
4495
4496
|
connectionLoggingEnabled = false;
|
|
4497
|
+
disconnectRequested = false;
|
|
4498
|
+
generationReconnect = null;
|
|
4496
4499
|
chatHandlers = /* @__PURE__ */ new Map();
|
|
4497
4500
|
generateHandlers = /* @__PURE__ */ new Map();
|
|
4498
4501
|
earlyTerminalVariants = /* @__PURE__ */ new Map();
|
|
@@ -4535,6 +4538,7 @@ var WebSocketClient = class WebSocketClient {
|
|
|
4535
4538
|
* Connect to the WebSocket endpoint
|
|
4536
4539
|
*/
|
|
4537
4540
|
async connect() {
|
|
4541
|
+
this.disconnectRequested = false;
|
|
4538
4542
|
return new Promise((resolve, reject) => {
|
|
4539
4543
|
const protocol = this.baseUrl.startsWith("https") ? "wss" : "ws";
|
|
4540
4544
|
const url = `${protocol}://${this.baseUrl.replace(/^https?:\/\//, "")}/api/spaces/${this.spaceId}/ws`;
|
|
@@ -4563,7 +4567,7 @@ var WebSocketClient = class WebSocketClient {
|
|
|
4563
4567
|
});
|
|
4564
4568
|
this.ws.on("close", (code, reason) => {
|
|
4565
4569
|
if (this.connectionLoggingEnabled) console.log(`[WebSocketClient] Disconnected: ${code} - ${reason}`);
|
|
4566
|
-
this.
|
|
4570
|
+
this.handleSocketClose();
|
|
4567
4571
|
});
|
|
4568
4572
|
});
|
|
4569
4573
|
}
|
|
@@ -4571,11 +4575,35 @@ var WebSocketClient = class WebSocketClient {
|
|
|
4571
4575
|
* Disconnect from the WebSocket
|
|
4572
4576
|
*/
|
|
4573
4577
|
disconnect() {
|
|
4578
|
+
this.disconnectRequested = true;
|
|
4574
4579
|
if (this.ws) {
|
|
4575
4580
|
this.ws.close();
|
|
4576
4581
|
this.ws = null;
|
|
4577
4582
|
}
|
|
4578
4583
|
}
|
|
4584
|
+
handleSocketClose() {
|
|
4585
|
+
this.ws = null;
|
|
4586
|
+
if (!this.disconnectRequested && this.hasPendingGenerationWaits()) this.reconnectPendingGeneration();
|
|
4587
|
+
}
|
|
4588
|
+
hasPendingGenerationWaits() {
|
|
4589
|
+
return this.generateHandlers.size > 0 || this.variantCompletionHandlers.size > 0;
|
|
4590
|
+
}
|
|
4591
|
+
reconnectPendingGeneration() {
|
|
4592
|
+
if (this.generationReconnect || this.disconnectRequested || !this.hasPendingGenerationWaits()) return;
|
|
4593
|
+
this.generationReconnect = this.runGenerationReconnect().finally(() => {
|
|
4594
|
+
this.generationReconnect = null;
|
|
4595
|
+
});
|
|
4596
|
+
}
|
|
4597
|
+
async runGenerationReconnect() {
|
|
4598
|
+
while (!this.disconnectRequested && this.hasPendingGenerationWaits()) try {
|
|
4599
|
+
await this.connect();
|
|
4600
|
+
if (this.hasPendingGenerationWaits()) this.requestSync();
|
|
4601
|
+
return;
|
|
4602
|
+
} catch {
|
|
4603
|
+
if (this.disconnectRequested || !this.hasPendingGenerationWaits()) return;
|
|
4604
|
+
await new Promise((resolve) => setTimeout(resolve, GENERATION_RECONNECT_RETRY_MS));
|
|
4605
|
+
}
|
|
4606
|
+
}
|
|
4579
4607
|
/**
|
|
4580
4608
|
* Set error handler
|
|
4581
4609
|
*/
|
|
@@ -4644,36 +4672,16 @@ var WebSocketClient = class WebSocketClient {
|
|
|
4644
4672
|
this.onChatProgress?.(progressMsg);
|
|
4645
4673
|
break;
|
|
4646
4674
|
}
|
|
4647
|
-
case "generate:started":
|
|
4648
|
-
|
|
4649
|
-
const handler = this.generateHandlers.get(startedMsg.requestId);
|
|
4650
|
-
if (handler) {
|
|
4651
|
-
if (handler.onStarted) handler.onStarted(startedMsg);
|
|
4652
|
-
this.variantCompletionHandlers.set(startedMsg.variantId, {
|
|
4653
|
-
requestId: startedMsg.requestId,
|
|
4654
|
-
assetId: startedMsg.assetId,
|
|
4655
|
-
assetName: startedMsg.assetName,
|
|
4656
|
-
onResult: handler.onResult,
|
|
4657
|
-
reject: handler.reject,
|
|
4658
|
-
timeout: handler.timeout
|
|
4659
|
-
});
|
|
4660
|
-
this.startVariantSyncPolling(startedMsg.variantId, startedMsg.requestId);
|
|
4661
|
-
this.generateHandlers.delete(startedMsg.requestId);
|
|
4662
|
-
const earlyTerminal = this.earlyTerminalVariants.get(startedMsg.variantId);
|
|
4663
|
-
if (earlyTerminal) {
|
|
4664
|
-
this.earlyTerminalVariants.delete(startedMsg.variantId);
|
|
4665
|
-
this.handleTerminalVariant(earlyTerminal);
|
|
4666
|
-
}
|
|
4667
|
-
this.clearOrphanedEarlyTerminalVariants();
|
|
4668
|
-
}
|
|
4675
|
+
case "generate:started":
|
|
4676
|
+
this.handleGenerateStarted(message);
|
|
4669
4677
|
break;
|
|
4670
|
-
}
|
|
4671
4678
|
case "generate:error": {
|
|
4672
4679
|
const errorMsg = message;
|
|
4673
4680
|
const handler = this.generateHandlers.get(errorMsg.requestId);
|
|
4674
4681
|
if (handler) {
|
|
4675
4682
|
this.generateHandlers.delete(errorMsg.requestId);
|
|
4676
4683
|
clearTimeout(handler.timeout);
|
|
4684
|
+
if (handler.syncPoll) clearInterval(handler.syncPoll);
|
|
4677
4685
|
handler.reject(new Error(formatServerErrorMessage(errorMsg.code, errorMsg.error)));
|
|
4678
4686
|
this.clearOrphanedEarlyTerminalVariants();
|
|
4679
4687
|
}
|
|
@@ -4690,6 +4698,19 @@ var WebSocketClient = class WebSocketClient {
|
|
|
4690
4698
|
}
|
|
4691
4699
|
case "sync:state": {
|
|
4692
4700
|
const syncMsg = message;
|
|
4701
|
+
for (const variant of syncMsg.variants) {
|
|
4702
|
+
if (!variant.request_id || !this.generateHandlers.has(variant.request_id)) continue;
|
|
4703
|
+
const asset = syncMsg.assets.find((candidate) => candidate.id === variant.asset_id);
|
|
4704
|
+
this.handleGenerateStarted({
|
|
4705
|
+
type: "generate:started",
|
|
4706
|
+
requestId: variant.request_id,
|
|
4707
|
+
variantId: variant.id,
|
|
4708
|
+
runId: variant.run_id ?? "",
|
|
4709
|
+
status: variant.status === "uploading" ? "running" : variant.status,
|
|
4710
|
+
assetId: variant.asset_id,
|
|
4711
|
+
assetName: asset?.name ?? "asset"
|
|
4712
|
+
});
|
|
4713
|
+
}
|
|
4693
4714
|
for (const variant of syncMsg.variants) {
|
|
4694
4715
|
const handler = this.variantCompletionHandlers.get(variant.id);
|
|
4695
4716
|
if (!handler) continue;
|
|
@@ -4801,6 +4822,7 @@ var WebSocketClient = class WebSocketClient {
|
|
|
4801
4822
|
if (generateHandler) {
|
|
4802
4823
|
this.generateHandlers.delete(requestId);
|
|
4803
4824
|
clearTimeout(generateHandler.timeout);
|
|
4825
|
+
if (generateHandler.syncPoll) clearInterval(generateHandler.syncPoll);
|
|
4804
4826
|
generateHandler.reject(error);
|
|
4805
4827
|
this.clearOrphanedEarlyTerminalVariants();
|
|
4806
4828
|
return true;
|
|
@@ -4814,6 +4836,28 @@ var WebSocketClient = class WebSocketClient {
|
|
|
4814
4836
|
}
|
|
4815
4837
|
return false;
|
|
4816
4838
|
}
|
|
4839
|
+
handleGenerateStarted(started) {
|
|
4840
|
+
const handler = this.generateHandlers.get(started.requestId);
|
|
4841
|
+
if (!handler) return;
|
|
4842
|
+
handler.onStarted?.(started);
|
|
4843
|
+
if (handler.syncPoll) clearInterval(handler.syncPoll);
|
|
4844
|
+
this.variantCompletionHandlers.set(started.variantId, {
|
|
4845
|
+
requestId: started.requestId,
|
|
4846
|
+
assetId: started.assetId,
|
|
4847
|
+
assetName: started.assetName,
|
|
4848
|
+
onResult: handler.onResult,
|
|
4849
|
+
reject: handler.reject,
|
|
4850
|
+
timeout: handler.timeout
|
|
4851
|
+
});
|
|
4852
|
+
this.generateHandlers.delete(started.requestId);
|
|
4853
|
+
this.startVariantSyncPolling(started.variantId, started.requestId);
|
|
4854
|
+
const earlyTerminal = this.earlyTerminalVariants.get(started.variantId);
|
|
4855
|
+
if (earlyTerminal) {
|
|
4856
|
+
this.earlyTerminalVariants.delete(started.variantId);
|
|
4857
|
+
this.handleTerminalVariant(earlyTerminal);
|
|
4858
|
+
}
|
|
4859
|
+
this.clearOrphanedEarlyTerminalVariants();
|
|
4860
|
+
}
|
|
4817
4861
|
handleTerminalVariant(variant) {
|
|
4818
4862
|
let handled = false;
|
|
4819
4863
|
const handler = this.variantCompletionHandlers.get(variant.id);
|
|
@@ -4847,6 +4891,19 @@ var WebSocketClient = class WebSocketClient {
|
|
|
4847
4891
|
if (handler?.requestId === requestId) handler.syncPoll = syncPoll;
|
|
4848
4892
|
else clearInterval(syncPoll);
|
|
4849
4893
|
}
|
|
4894
|
+
startGenerateSyncPolling(requestId) {
|
|
4895
|
+
const requestCurrentState = () => {
|
|
4896
|
+
if (!this.generateHandlers.has(requestId)) return;
|
|
4897
|
+
try {
|
|
4898
|
+
this.requestSync();
|
|
4899
|
+
} catch {}
|
|
4900
|
+
};
|
|
4901
|
+
requestCurrentState();
|
|
4902
|
+
const syncPoll = setInterval(requestCurrentState, VARIANT_SYNC_POLL_INTERVAL_MS);
|
|
4903
|
+
const handler = this.generateHandlers.get(requestId);
|
|
4904
|
+
if (handler) handler.syncPoll = syncPoll;
|
|
4905
|
+
else clearInterval(syncPoll);
|
|
4906
|
+
}
|
|
4850
4907
|
hasRequestsAwaitingStarted() {
|
|
4851
4908
|
return this.generateHandlers.size > 0 || this.draftRunStartsAwaitingVariant.size > 0;
|
|
4852
4909
|
}
|
|
@@ -5098,8 +5155,10 @@ var WebSocketClient = class WebSocketClient {
|
|
|
5098
5155
|
const timeoutMs = getGenerationRequestTimeoutMs(params.mediaKind);
|
|
5099
5156
|
return new Promise((resolve, reject) => {
|
|
5100
5157
|
const timeout = setTimeout(() => {
|
|
5101
|
-
|
|
5158
|
+
const requestHandler = this.generateHandlers.get(requestId);
|
|
5159
|
+
if (requestHandler) {
|
|
5102
5160
|
this.generateHandlers.delete(requestId);
|
|
5161
|
+
if (requestHandler.syncPoll) clearInterval(requestHandler.syncPoll);
|
|
5103
5162
|
this.clearOrphanedEarlyTerminalVariants();
|
|
5104
5163
|
reject(/* @__PURE__ */ new Error("Generate request timed out"));
|
|
5105
5164
|
return;
|
|
@@ -5149,6 +5208,7 @@ var WebSocketClient = class WebSocketClient {
|
|
|
5149
5208
|
};
|
|
5150
5209
|
try {
|
|
5151
5210
|
this.send(message);
|
|
5211
|
+
this.startGenerateSyncPolling(requestId);
|
|
5152
5212
|
} catch (err) {
|
|
5153
5213
|
this.generateHandlers.delete(requestId);
|
|
5154
5214
|
clearTimeout(timeout);
|