@sogni-ai/sogni-client 5.54.2 → 5.55.0

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 (60) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +17 -0
  3. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +10 -1
  4. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -1
  5. package/dist/ApiClient/WebSocketClient/eventSubscriptions.d.ts +2 -0
  6. package/dist/ApiClient/WebSocketClient/eventSubscriptions.js +18 -0
  7. package/dist/ApiClient/WebSocketClient/eventSubscriptions.js.map +1 -1
  8. package/dist/ApiClient/WebSocketClient/events.d.ts +8 -0
  9. package/dist/ApiClient/WebSocketClient/index.d.ts +5 -0
  10. package/dist/ApiClient/WebSocketClient/index.js +18 -2
  11. package/dist/ApiClient/WebSocketClient/index.js.map +1 -1
  12. package/dist/Projects/Job.d.ts +4 -0
  13. package/dist/Projects/Job.js +9 -0
  14. package/dist/Projects/Job.js.map +1 -1
  15. package/dist/Projects/Project.d.ts +17 -4
  16. package/dist/Projects/Project.js +66 -3
  17. package/dist/Projects/Project.js.map +1 -1
  18. package/dist/Projects/index.d.ts +5 -0
  19. package/dist/Projects/index.js +90 -17
  20. package/dist/Projects/index.js.map +1 -1
  21. package/dist/Projects/types/RawProject.d.ts +5 -0
  22. package/dist/Projects/types/WaitingReason.d.ts +20 -0
  23. package/dist/Projects/types/WaitingReason.js +62 -0
  24. package/dist/Projects/types/WaitingReason.js.map +1 -0
  25. package/dist/Projects/types/events.d.ts +10 -2
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/version.d.ts +1 -1
  29. package/dist/version.js +1 -1
  30. package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +10 -1
  31. package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -1
  32. package/dist-esm/ApiClient/WebSocketClient/eventSubscriptions.js +17 -0
  33. package/dist-esm/ApiClient/WebSocketClient/eventSubscriptions.js.map +1 -1
  34. package/dist-esm/ApiClient/WebSocketClient/index.js +19 -3
  35. package/dist-esm/ApiClient/WebSocketClient/index.js.map +1 -1
  36. package/dist-esm/Projects/Job.js +9 -0
  37. package/dist-esm/Projects/Job.js.map +1 -1
  38. package/dist-esm/Projects/Project.js +66 -3
  39. package/dist-esm/Projects/Project.js.map +1 -1
  40. package/dist-esm/Projects/index.js +90 -17
  41. package/dist-esm/Projects/index.js.map +1 -1
  42. package/dist-esm/Projects/types/WaitingReason.js +58 -0
  43. package/dist-esm/Projects/types/WaitingReason.js.map +1 -0
  44. package/dist-esm/index.js.map +1 -1
  45. package/dist-esm/version.js +1 -1
  46. package/llms-full.txt +12 -0
  47. package/llms.txt +2 -0
  48. package/package.json +2 -1
  49. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts +9 -1
  50. package/src/ApiClient/WebSocketClient/eventSubscriptions.ts +18 -0
  51. package/src/ApiClient/WebSocketClient/events.ts +8 -0
  52. package/src/ApiClient/WebSocketClient/index.ts +34 -3
  53. package/src/Projects/Job.ts +10 -0
  54. package/src/Projects/Project.ts +85 -4
  55. package/src/Projects/index.ts +106 -16
  56. package/src/Projects/types/RawProject.ts +5 -0
  57. package/src/Projects/types/WaitingReason.ts +91 -0
  58. package/src/Projects/types/events.ts +11 -2
  59. package/src/index.ts +4 -0
  60. package/src/version.ts +1 -1
@@ -17,6 +17,7 @@ const DataEntity_js_1 = __importDefault(require("../lib/DataEntity.js"));
17
17
  const index_js_1 = require("./types/index.js");
18
18
  const cloneDeep_js_1 = __importDefault(require("lodash/cloneDeep.js"));
19
19
  const getUUID_js_1 = __importDefault(require("../lib/getUUID.js"));
20
+ const WaitingReason_js_1 = require("./types/WaitingReason.js");
20
21
  // If project is not finished and had no updates for 2 minutes, force refresh
21
22
  const PROJECT_TIMEOUT = 2 * 60 * 1000;
22
23
  const MAX_FAILED_SYNC_ATTEMPTS = 3;
@@ -47,8 +48,12 @@ class Project extends DataEntity_js_1.default {
47
48
  startedAt: new Date(),
48
49
  params: data,
49
50
  queuePosition: -1,
51
+ waitingReason: null,
52
+ jobWaitingReasons: [],
50
53
  status: 'pending'
51
54
  });
55
+ /** Increments when live activity supersedes an in-flight queue snapshot. @internal */
56
+ this._queueRevision = 0;
52
57
  this._jobs = [];
53
58
  this._lastEmitedProgress = -1;
54
59
  this._timeout = null;
@@ -131,13 +136,69 @@ class Project extends DataEntity_js_1.default {
131
136
  return this.data.estimatedStartAt;
132
137
  }
133
138
  /**
134
- * `'no-workers'` when nothing currently connected can run this project's model, in which
135
- * case {@link Project.estimatedStartAt} is undefined and the project is waiting for a
136
- * worker to come online rather than for the queue to drain.
139
+ * Worker availability estimate, excluding account limits. Prefer
140
+ * {@link Project.waitingReason} when explaining why results are queued.
137
141
  */
138
142
  get queueStatus() {
139
143
  return this.data.queueStatus;
140
144
  }
145
+ /** Current explanation for remaining queued results, including a partially running batch. */
146
+ get waitingReason() {
147
+ return this.data.waitingReason;
148
+ }
149
+ /** Complete current queue details by zero-based result index; does not create Jobs. */
150
+ get jobWaitingReasons() {
151
+ return this.data.jobWaitingReasons || [];
152
+ }
153
+ /** @internal */
154
+ _setQueueState(rawReason, rawJobs, expectedRevision) {
155
+ var _a, _b, _c, _d;
156
+ if (expectedRevision !== undefined && expectedRevision !== this._queueRevision)
157
+ return false;
158
+ let waitingReason = this.finished ? null : (0, WaitingReason_js_1.normalizeWaitingReason)(rawReason);
159
+ const jobWaitingReasons = this.finished
160
+ ? []
161
+ : (0, WaitingReason_js_1.normalizeJobWaitingReasons)(rawJobs, this.params.numberOfMedia).filter((row) => {
162
+ const known = this.jobs.find((job) => (row.imgID && row.imgID.toUpperCase() === job.id.toUpperCase()) ||
163
+ job.jobIndex === row.jobIndex);
164
+ return !known || known.status === 'pending';
165
+ });
166
+ if (Array.isArray(rawJobs) && rawJobs.length > 0)
167
+ waitingReason = ((_a = jobWaitingReasons[0]) === null || _a === void 0 ? void 0 : _a.waitingReason) || null;
168
+ const changed = JSON.stringify([(_b = this.waitingReason) !== null && _b !== void 0 ? _b : null, this.jobWaitingReasons]) !==
169
+ JSON.stringify([waitingReason, jobWaitingReasons]);
170
+ for (const job of this.jobs) {
171
+ const next = job.status !== 'pending'
172
+ ? null
173
+ : ((_c = jobWaitingReasons.find((row) => (row.imgID && row.imgID.toUpperCase() === job.id.toUpperCase()) ||
174
+ job.jobIndex === row.jobIndex)) === null || _c === void 0 ? void 0 : _c.waitingReason) || null;
175
+ if (JSON.stringify((_d = job.waitingReason) !== null && _d !== void 0 ? _d : null) !== JSON.stringify(next))
176
+ job._update({ waitingReason: next });
177
+ }
178
+ if (changed) {
179
+ this._queueRevision += 1;
180
+ this._update({ waitingReason, jobWaitingReasons });
181
+ this._api._emitQueueChanged(this);
182
+ }
183
+ return changed;
184
+ }
185
+ /** @internal */
186
+ _update(delta) {
187
+ const clearingQueue = Boolean(delta.status &&
188
+ ['completed', 'failed', 'canceled'].includes(delta.status) &&
189
+ (this.waitingReason || this.jobWaitingReasons.length));
190
+ if (delta.status && ['completed', 'failed', 'canceled'].includes(delta.status)) {
191
+ this._queueRevision += 1;
192
+ delta = Object.assign(Object.assign({}, delta), { waitingReason: null, jobWaitingReasons: [] });
193
+ this.jobs.forEach((job) => {
194
+ if (job.waitingReason)
195
+ job._update({ waitingReason: null });
196
+ });
197
+ }
198
+ super._update(delta);
199
+ if (clearingQueue)
200
+ this._api._emitQueueChanged(this);
201
+ }
141
202
  /**
142
203
  * List of jobs in the project. Note that jobs will be added to this list as
143
204
  * workers start processing them. So initially this list will be empty.
@@ -394,7 +455,9 @@ class Project extends DataEntity_js_1.default {
394
455
  */
395
456
  _syncToServer() {
396
457
  return __awaiter(this, void 0, void 0, function* () {
458
+ const queueRevision = this._queueRevision;
397
459
  const data = yield this._api.get(this.id);
460
+ this._setQueueState(data.waitingReason, data.jobWaitingReasons, queueRevision);
398
461
  const jobData = data.completedWorkerJobs.reduce((acc, job) => {
399
462
  const jobId = job.imgID || (0, getUUID_js_1.default)();
400
463
  acc[jobId] = job;
@@ -1 +1 @@
1
- {"version":3,"file":"Project.js","sourceRoot":"","sources":["../../src/Projects/Project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Project.js","sourceRoot":"","sources":["../../src/Projects/Project.ts"],"names":[],"mappings":"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"}
@@ -221,6 +221,10 @@ declare class ProjectsApi extends ApiGroup<ProjectApiEvents> {
221
221
  * included. The next processing transition arms a fresh deadline.
222
222
  */
223
223
  private static resetJobForNewAttempt;
224
+ private handleProjectQueue;
225
+ /** @internal */
226
+ _emitQueueChanged(project: Project): void;
227
+ private clearJobQueueState;
224
228
  private handleProjectEvent;
225
229
  private handleJobEvent;
226
230
  private handleTransportLost;
@@ -305,6 +309,7 @@ declare class ProjectsApi extends ApiGroup<ProjectApiEvents> {
305
309
  */
306
310
  private _lookupUnlistedProject;
307
311
  /** Serialize syncs so two snapshots never interleave their replays. */
312
+ private captureQueueRevisions;
308
313
  private _queueSync;
309
314
  private _reconcile;
310
315
  private _rehydrateProject;
@@ -417,6 +417,7 @@ class ProjectsApi extends ApiGroup_js_1.default {
417
417
  this.client.socket.on('changeNetwork', this.handleChangeNetwork.bind(this));
418
418
  this.client.socket.on('swarmModels', this.handleSwarmModels.bind(this));
419
419
  this.client.socket.on('jobState', this.handleJobState.bind(this));
420
+ this.client.socket.on('projectQueue', this.handleProjectQueue.bind(this));
420
421
  this.client.socket.on('jobProgress', this.handleJobProgress.bind(this));
421
422
  this.client.socket.on('jobETA', this.handleJobETA.bind(this));
422
423
  this.client.socket.on('jobError', this.handleJobError.bind(this));
@@ -614,6 +615,8 @@ class ProjectsApi extends ApiGroup_js_1.default {
614
615
  return __awaiter(this, void 0, void 0, function* () {
615
616
  const assertSession = (0, requestSession_js_1.captureRequestSession)(this.client.auth);
616
617
  const project = this.projects.find((p) => p.id === data.jobID);
618
+ if (project)
619
+ this.clearJobQueueState(project, data.imgID);
617
620
  // `triggeredNSFWFilter` means the server withheld the media, so there is
618
621
  // nothing to mint a URL for. `nsfwDetected` is the opposite case: a signal
619
622
  // fired on a render the artist asked for with the filter off, the media
@@ -741,6 +744,7 @@ class ProjectsApi extends ApiGroup_js_1.default {
741
744
  const job = (_a = (data.imgID ? project.job(data.imgID) : undefined)) !== null && _a !== void 0 ? _a : (jobIndex !== undefined ? project.jobs.find((j) => j.jobIndex === jobIndex) : undefined);
742
745
  if (!job || job.finished)
743
746
  return;
747
+ this.clearJobQueueState(project, job.id, jobIndex !== null && jobIndex !== void 0 ? jobIndex : job.jobIndex);
744
748
  this._awaitingReassignment.add(job);
745
749
  ProjectsApi.resetJobForNewAttempt(job, { status: 'pending', jobIndex });
746
750
  }
@@ -793,6 +797,35 @@ class ProjectsApi extends ApiGroup_js_1.default {
793
797
  job._stopRuntimeTimeout();
794
798
  job._update(Object.assign(Object.assign(Object.assign({}, (status ? { status } : {})), (jobIndex !== undefined ? { jobIndex } : {})), { step: 0, workerName: undefined, previewUrl: undefined, externalProgress: undefined, eta: undefined, etaStartedAt: undefined, etaSeconds: undefined, etaRange: undefined }));
795
799
  }
800
+ handleProjectQueue(data) {
801
+ const project = this.projects.find((item) => item.id === (data === null || data === void 0 ? void 0 : data.jobID));
802
+ if (!project || project.finished)
803
+ return;
804
+ project._queueRevision += 1;
805
+ project._setQueueState(data.waitingReason, data.jobWaitingReasons);
806
+ }
807
+ /** @internal */
808
+ _emitQueueChanged(project) {
809
+ var _a;
810
+ this.emit('queueChanged', {
811
+ projectId: project.id,
812
+ waitingReason: (_a = project.waitingReason) !== null && _a !== void 0 ? _a : null,
813
+ jobWaitingReasons: project.jobWaitingReasons
814
+ });
815
+ }
816
+ clearJobQueueState(project, jobId, jobIndex) {
817
+ var _a, _b, _c, _d;
818
+ if (jobIndex === void 0) { jobIndex = (_a = project.job(jobId)) === null || _a === void 0 ? void 0 : _a.jobIndex; }
819
+ project._queueRevision += 1;
820
+ const remaining = project.jobWaitingReasons.filter((row) => {
821
+ var _a;
822
+ return ((_a = row.imgID) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== jobId.toUpperCase() &&
823
+ (jobIndex === undefined || row.jobIndex !== jobIndex);
824
+ });
825
+ if (remaining.length !== project.jobWaitingReasons.length ||
826
+ ((_b = project.waitingReason) === null || _b === void 0 ? void 0 : _b.reason) === 'payment_pending')
827
+ project._setQueueState((_d = (_c = remaining[0]) === null || _c === void 0 ? void 0 : _c.waitingReason) !== null && _d !== void 0 ? _d : null, remaining);
828
+ }
796
829
  handleProjectEvent(event) {
797
830
  let project = this.projects.find((p) => p.id === event.projectId);
798
831
  if (!project) {
@@ -878,6 +911,8 @@ class ProjectsApi extends ApiGroup_js_1.default {
878
911
  });
879
912
  }
880
913
  // Any job-level event means a worker has taken this project, so the queue wait is over.
914
+ const jobIndex = 'jobIndex' in event ? event.jobIndex : job.jobIndex;
915
+ this.clearJobQueueState(project, event.jobId, jobIndex);
881
916
  // Leaving a stale estimate on the project would keep a "starts in ~2 min" label on
882
917
  // screen next to a job that is already rendering.
883
918
  if (project.estimatedStartAt !== undefined || project.queueStatus !== undefined) {
@@ -993,8 +1028,11 @@ class ProjectsApi extends ApiGroup_js_1.default {
993
1028
  // hands the project back on reconnect (same app-id), so keep the tracked
994
1029
  // projects alive and quiet until then.
995
1030
  this.projects.forEach((p) => {
996
- if (!p.finished)
1031
+ if (!p.finished) {
1032
+ p._queueRevision += 1;
1033
+ p._setQueueState(null, []);
997
1034
  p._keepAlive();
1035
+ }
998
1036
  });
999
1037
  }
1000
1038
  handleServerDisconnected() {
@@ -1169,12 +1207,13 @@ class ProjectsApi extends ApiGroup_js_1.default {
1169
1207
  return __awaiter(this, arguments, void 0, function* (reason = 'manual') {
1170
1208
  const assertSession = (0, requestSession_js_1.captureRequestSession)(this.client.auth);
1171
1209
  const requestedAt = Date.now();
1210
+ const queueRevisions = this.captureQueueRevisions();
1172
1211
  const body = yield this.client.socket.get('/api/v1/artist/projects/sync', { appId: this.client.appId });
1173
1212
  assertSession();
1174
1213
  const snapshot = Object.assign({ activeProjects: Array.isArray(body === null || body === void 0 ? void 0 : body.activeProjects) ? body.activeProjects : [], unclaimedCompletedProjects: Array.isArray(body === null || body === void 0 ? void 0 : body.unclaimedCompletedProjects)
1175
1214
  ? body.unclaimedCompletedProjects
1176
1215
  : [] }, (typeof (body === null || body === void 0 ? void 0 : body.serverTime) === 'number' ? { serverTime: body.serverTime } : {}));
1177
- return this._queueSync(snapshot, reason, requestedAt);
1216
+ return this._queueSync(snapshot, reason, requestedAt, queueRevisions);
1178
1217
  });
1179
1218
  }
1180
1219
  /**
@@ -1366,18 +1405,22 @@ class ProjectsApi extends ApiGroup_js_1.default {
1366
1405
  });
1367
1406
  }
1368
1407
  /** Serialize syncs so two snapshots never interleave their replays. */
1369
- _queueSync(snapshot, reason, requestedAt) {
1408
+ captureQueueRevisions() {
1409
+ return new Map(this.projects.map((project) => [project.id, project._queueRevision]));
1410
+ }
1411
+ _queueSync(snapshot, reason, requestedAt, queueRevisions = this.captureQueueRevisions()) {
1370
1412
  const assertSession = (0, requestSession_js_1.captureRequestSession)(this.client.auth);
1371
1413
  const run = () => {
1372
1414
  assertSession();
1373
- return this._reconcile(snapshot, reason, requestedAt, assertSession);
1415
+ return this._reconcile(snapshot, reason, requestedAt, assertSession, queueRevisions);
1374
1416
  };
1375
1417
  const next = this._syncChain.then(run, run);
1376
1418
  this._syncChain = next.catch(() => undefined);
1377
1419
  return next;
1378
1420
  }
1379
1421
  _reconcile(snapshot_1, reason_1, requestedAt_1) {
1380
- return __awaiter(this, arguments, void 0, function* (snapshot, reason, requestedAt, assertSession = (0, requestSession_js_1.captureRequestSession)(this.client.auth)) {
1422
+ return __awaiter(this, arguments, void 0, function* (snapshot, reason, requestedAt, assertSession = (0, requestSession_js_1.captureRequestSession)(this.client.auth), queueRevisions = this.captureQueueRevisions()) {
1423
+ var _a, _b;
1381
1424
  const result = {
1382
1425
  reason,
1383
1426
  snapshot,
@@ -1398,7 +1441,7 @@ class ProjectsApi extends ApiGroup_js_1.default {
1398
1441
  if (tracked) {
1399
1442
  if (tracked.finished)
1400
1443
  continue;
1401
- yield this._replayRecoveredProject(tracked, recovered);
1444
+ yield this._replayRecoveredProject(tracked, recovered, (_a = queueRevisions.get(tracked.id)) !== null && _a !== void 0 ? _a : 0);
1402
1445
  assertSession();
1403
1446
  result.active.push(recovered.id);
1404
1447
  }
@@ -1418,7 +1461,7 @@ class ProjectsApi extends ApiGroup_js_1.default {
1418
1461
  if (tracked) {
1419
1462
  if (tracked.finished)
1420
1463
  continue;
1421
- yield this._replayRecoveredProject(tracked, recovered);
1464
+ yield this._replayRecoveredProject(tracked, recovered, (_b = queueRevisions.get(tracked.id)) !== null && _b !== void 0 ? _b : 0);
1422
1465
  assertSession();
1423
1466
  result.completed.push(recovered.id);
1424
1467
  }
@@ -1494,8 +1537,8 @@ class ProjectsApi extends ApiGroup_js_1.default {
1494
1537
  recovered: true
1495
1538
  });
1496
1539
  }
1497
- _replayRecoveredProject(project, recovered) {
1498
- return this._replayRawProject(project, recovered, true);
1540
+ _replayRecoveredProject(project, recovered, queueRevision = project._queueRevision) {
1541
+ return this._replayRawProject(project, recovered, true, queueRevision);
1499
1542
  }
1500
1543
  /**
1501
1544
  * Bring a tracked project up to date by replaying the socket frames it
@@ -1505,11 +1548,14 @@ class ProjectsApi extends ApiGroup_js_1.default {
1505
1548
  * connection would have delivered. Nothing is ever downgraded: a job or
1506
1549
  * project already finished locally ignores an older in-flight state.
1507
1550
  */
1508
- _replayRawProject(project, raw, includeInFlightJobs) {
1509
- return __awaiter(this, void 0, void 0, function* () {
1510
- var _a, _b;
1551
+ _replayRawProject(project_1, raw_1, includeInFlightJobs_1) {
1552
+ return __awaiter(this, arguments, void 0, function* (project, raw, includeInFlightJobs, queueRevision = project._queueRevision) {
1553
+ var _a, _b, _c, _d;
1511
1554
  const assertSession = (0, requestSession_js_1.captureRequestSession)(this.client.auth);
1512
1555
  const projectId = project.id;
1556
+ let replayInFlight = project._queueRevision === queueRevision;
1557
+ project._setQueueState(raw.waitingReason, raw.jobWaitingReasons, queueRevision);
1558
+ let replayRevision = project._queueRevision;
1513
1559
  const stepCount = typeof raw.stepCount === 'number' ? raw.stepCount : project.params.steps;
1514
1560
  const jobs = [
1515
1561
  ...(includeInFlightJobs ? raw.workerJobs || [] : []),
@@ -1517,6 +1563,10 @@ class ProjectsApi extends ApiGroup_js_1.default {
1517
1563
  ];
1518
1564
  const replayedJobIds = new Set();
1519
1565
  for (const job of jobs) {
1566
+ // A live assignment, retry or queue update wins over an older snapshot,
1567
+ // including one received while an earlier recovered result was downloading.
1568
+ if (project._queueRevision !== replayRevision)
1569
+ replayInFlight = false;
1520
1570
  const imgID = job.imgID || job.id;
1521
1571
  if (!imgID || replayedJobIds.has(imgID))
1522
1572
  continue;
@@ -1525,10 +1575,12 @@ class ProjectsApi extends ApiGroup_js_1.default {
1525
1575
  const status = job.status;
1526
1576
  const worker = job.worker;
1527
1577
  const workerName = (worker === null || worker === void 0 ? void 0 : worker.username) || (worker === null || worker === void 0 ? void 0 : worker.name) || '';
1578
+ const jobIndex = typeof job.jobIndex === 'number' ? job.jobIndex : undefined;
1528
1579
  if (status === 'jobCompleted') {
1529
1580
  if (local === null || local === void 0 ? void 0 : local.finished)
1530
1581
  continue;
1531
- yield this.handleJobResult(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ jobID: projectId, imgID }, (typeof job.performedSteps === 'number'
1582
+ this.clearJobQueueState(project, imgID, jobIndex);
1583
+ const result = this.handleJobResult(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ jobID: projectId, imgID }, (typeof job.performedSteps === 'number'
1532
1584
  ? { performedStepCount: job.performedSteps }
1533
1585
  : {})), (typeof job.seedUsed === 'number' ? { lastSeed: String(job.seedUsed) } : {})), { triggeredNSFWFilter: Boolean(job.triggeredNSFWFilter), userCanceled: job.reason === 'artistCanceled', lastFrameUrl: (typeof job.lastFrameUrl === 'string'
1534
1586
  ? job.lastFrameUrl
@@ -1539,12 +1591,17 @@ class ProjectsApi extends ApiGroup_js_1.default {
1539
1591
  : {})), (job.result && typeof job.result === 'object'
1540
1592
  ? jobProvenanceFromResult(job.result)
1541
1593
  : {})));
1594
+ replayRevision = project._queueRevision;
1595
+ yield result;
1542
1596
  assertSession();
1597
+ if (jobIndex !== undefined)
1598
+ (_c = project.job(imgID)) === null || _c === void 0 ? void 0 : _c._update({ jobIndex });
1543
1599
  continue;
1544
1600
  }
1545
1601
  if (status === 'jobError') {
1546
1602
  if (local === null || local === void 0 ? void 0 : local.finished)
1547
1603
  continue;
1604
+ this.clearJobQueueState(project, imgID, jobIndex);
1548
1605
  const reason = typeof job.reason === 'string' && job.reason ? job.reason : 'genfailure';
1549
1606
  this.handleJobError({
1550
1607
  jobID: projectId,
@@ -1553,18 +1610,34 @@ class ProjectsApi extends ApiGroup_js_1.default {
1553
1610
  error: reason,
1554
1611
  error_message: reason === 'sensitiveContent' ? 'Sensitive content detected.' : reason
1555
1612
  });
1613
+ if (jobIndex !== undefined)
1614
+ (_d = project.job(imgID)) === null || _d === void 0 ? void 0 : _d._update({ jobIndex });
1615
+ replayRevision = project._queueRevision;
1556
1616
  continue;
1557
1617
  }
1558
- if (!includeInFlightJobs || (0, recovery_js_1.isRecoveredJobFinished)(status) || (local === null || local === void 0 ? void 0 : local.finished))
1618
+ if (!includeInFlightJobs ||
1619
+ !replayInFlight ||
1620
+ (0, recovery_js_1.isRecoveredJobFinished)(status) ||
1621
+ (local === null || local === void 0 ? void 0 : local.finished))
1559
1622
  continue;
1560
1623
  if (status === 'assigned' || status === 'initiatingModel') {
1561
- this.handleJobState({ type: 'initiatingModel', jobID: projectId, imgID, workerName });
1624
+ this.handleJobState({
1625
+ type: 'initiatingModel',
1626
+ jobID: projectId,
1627
+ imgID,
1628
+ workerName,
1629
+ jobIndex
1630
+ });
1631
+ replayRevision = project._queueRevision;
1562
1632
  }
1563
1633
  else if (status === 'jobStarted' || status === 'jobProgress') {
1564
- this.handleJobState({ type: 'jobStarted', jobID: projectId, imgID, workerName });
1634
+ this.handleJobState({ type: 'jobStarted', jobID: projectId, imgID, workerName, jobIndex });
1635
+ replayRevision = project._queueRevision;
1565
1636
  const performedSteps = typeof job.performedSteps === 'number' ? job.performedSteps : 0;
1566
1637
  if (performedSteps > 0 || typeof stepCount === 'number') {
1567
- yield this.handleJobProgress(Object.assign({ jobID: projectId, imgID, step: performedSteps }, (typeof stepCount === 'number' ? { stepCount } : {})));
1638
+ const progress = this.handleJobProgress(Object.assign({ jobID: projectId, imgID, step: performedSteps }, (typeof stepCount === 'number' ? { stepCount } : {})));
1639
+ replayRevision = project._queueRevision;
1640
+ yield progress;
1568
1641
  assertSession();
1569
1642
  }
1570
1643
  }