makefx 1.6.5 → 1.6.6

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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/makefx.mjs +57 -25
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -61,4 +61,4 @@ IDs, or runs. Retired commands and aliases are not redirected.
61
61
 
62
62
  Run `makefx --help` or `makefx <noun> --help` for current options.
63
63
 
64
- Version: 1.6.5
64
+ Version: 1.6.6
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.5+9c81b1e6ede4";
4445
+ var CLI_VERSION = "1.6.6+b1c0c6d222d7";
4446
4446
  var CLI_VERSION_HEADER = "X-MakeFX-CLI-Version";
4447
4447
  function cliVersionHeaders() {
4448
4448
  return {
@@ -4644,36 +4644,16 @@ var WebSocketClient = class WebSocketClient {
4644
4644
  this.onChatProgress?.(progressMsg);
4645
4645
  break;
4646
4646
  }
4647
- case "generate:started": {
4648
- const startedMsg = message;
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
- }
4647
+ case "generate:started":
4648
+ this.handleGenerateStarted(message);
4669
4649
  break;
4670
- }
4671
4650
  case "generate:error": {
4672
4651
  const errorMsg = message;
4673
4652
  const handler = this.generateHandlers.get(errorMsg.requestId);
4674
4653
  if (handler) {
4675
4654
  this.generateHandlers.delete(errorMsg.requestId);
4676
4655
  clearTimeout(handler.timeout);
4656
+ if (handler.syncPoll) clearInterval(handler.syncPoll);
4677
4657
  handler.reject(new Error(formatServerErrorMessage(errorMsg.code, errorMsg.error)));
4678
4658
  this.clearOrphanedEarlyTerminalVariants();
4679
4659
  }
@@ -4690,6 +4670,19 @@ var WebSocketClient = class WebSocketClient {
4690
4670
  }
4691
4671
  case "sync:state": {
4692
4672
  const syncMsg = message;
4673
+ for (const variant of syncMsg.variants) {
4674
+ if (!variant.request_id || !this.generateHandlers.has(variant.request_id)) continue;
4675
+ const asset = syncMsg.assets.find((candidate) => candidate.id === variant.asset_id);
4676
+ this.handleGenerateStarted({
4677
+ type: "generate:started",
4678
+ requestId: variant.request_id,
4679
+ variantId: variant.id,
4680
+ runId: variant.run_id ?? "",
4681
+ status: variant.status === "uploading" ? "running" : variant.status,
4682
+ assetId: variant.asset_id,
4683
+ assetName: asset?.name ?? "asset"
4684
+ });
4685
+ }
4693
4686
  for (const variant of syncMsg.variants) {
4694
4687
  const handler = this.variantCompletionHandlers.get(variant.id);
4695
4688
  if (!handler) continue;
@@ -4801,6 +4794,7 @@ var WebSocketClient = class WebSocketClient {
4801
4794
  if (generateHandler) {
4802
4795
  this.generateHandlers.delete(requestId);
4803
4796
  clearTimeout(generateHandler.timeout);
4797
+ if (generateHandler.syncPoll) clearInterval(generateHandler.syncPoll);
4804
4798
  generateHandler.reject(error);
4805
4799
  this.clearOrphanedEarlyTerminalVariants();
4806
4800
  return true;
@@ -4814,6 +4808,28 @@ var WebSocketClient = class WebSocketClient {
4814
4808
  }
4815
4809
  return false;
4816
4810
  }
4811
+ handleGenerateStarted(started) {
4812
+ const handler = this.generateHandlers.get(started.requestId);
4813
+ if (!handler) return;
4814
+ handler.onStarted?.(started);
4815
+ if (handler.syncPoll) clearInterval(handler.syncPoll);
4816
+ this.variantCompletionHandlers.set(started.variantId, {
4817
+ requestId: started.requestId,
4818
+ assetId: started.assetId,
4819
+ assetName: started.assetName,
4820
+ onResult: handler.onResult,
4821
+ reject: handler.reject,
4822
+ timeout: handler.timeout
4823
+ });
4824
+ this.generateHandlers.delete(started.requestId);
4825
+ this.startVariantSyncPolling(started.variantId, started.requestId);
4826
+ const earlyTerminal = this.earlyTerminalVariants.get(started.variantId);
4827
+ if (earlyTerminal) {
4828
+ this.earlyTerminalVariants.delete(started.variantId);
4829
+ this.handleTerminalVariant(earlyTerminal);
4830
+ }
4831
+ this.clearOrphanedEarlyTerminalVariants();
4832
+ }
4817
4833
  handleTerminalVariant(variant) {
4818
4834
  let handled = false;
4819
4835
  const handler = this.variantCompletionHandlers.get(variant.id);
@@ -4847,6 +4863,19 @@ var WebSocketClient = class WebSocketClient {
4847
4863
  if (handler?.requestId === requestId) handler.syncPoll = syncPoll;
4848
4864
  else clearInterval(syncPoll);
4849
4865
  }
4866
+ startGenerateSyncPolling(requestId) {
4867
+ const requestCurrentState = () => {
4868
+ if (!this.generateHandlers.has(requestId)) return;
4869
+ try {
4870
+ this.requestSync();
4871
+ } catch {}
4872
+ };
4873
+ requestCurrentState();
4874
+ const syncPoll = setInterval(requestCurrentState, VARIANT_SYNC_POLL_INTERVAL_MS);
4875
+ const handler = this.generateHandlers.get(requestId);
4876
+ if (handler) handler.syncPoll = syncPoll;
4877
+ else clearInterval(syncPoll);
4878
+ }
4850
4879
  hasRequestsAwaitingStarted() {
4851
4880
  return this.generateHandlers.size > 0 || this.draftRunStartsAwaitingVariant.size > 0;
4852
4881
  }
@@ -5098,8 +5127,10 @@ var WebSocketClient = class WebSocketClient {
5098
5127
  const timeoutMs = getGenerationRequestTimeoutMs(params.mediaKind);
5099
5128
  return new Promise((resolve, reject) => {
5100
5129
  const timeout = setTimeout(() => {
5101
- if (this.generateHandlers.get(requestId)) {
5130
+ const requestHandler = this.generateHandlers.get(requestId);
5131
+ if (requestHandler) {
5102
5132
  this.generateHandlers.delete(requestId);
5133
+ if (requestHandler.syncPoll) clearInterval(requestHandler.syncPoll);
5103
5134
  this.clearOrphanedEarlyTerminalVariants();
5104
5135
  reject(/* @__PURE__ */ new Error("Generate request timed out"));
5105
5136
  return;
@@ -5149,6 +5180,7 @@ var WebSocketClient = class WebSocketClient {
5149
5180
  };
5150
5181
  try {
5151
5182
  this.send(message);
5183
+ this.startGenerateSyncPolling(requestId);
5152
5184
  } catch (err) {
5153
5185
  this.generateHandlers.delete(requestId);
5154
5186
  clearTimeout(timeout);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "makefx",
3
- "version": "1.6.5",
3
+ "version": "1.6.6",
4
4
  "description": "Command-line interface for AI-assisted game asset production with Make Effects.",
5
5
  "license": "MIT",
6
6
  "type": "module",