@sogni-ai/sogni-client 5.56.0 → 5.56.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/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## [5.56.2](https://github.com/Sogni-AI/sogni-client/compare/v5.56.1...v5.56.2) (2026-09-26)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **projects:** pick the result download endpoint from evidence, not an image default ([3f3dd42](https://github.com/Sogni-AI/sogni-client/commit/3f3dd42ead83f7f11772b27b1967dbd765db9860))
7
+ * **projects:** switch to the media endpoint once when the API says a result is media ([c80446f](https://github.com/Sogni-AI/sogni-client/commit/c80446f259c9dd13a1f0301f126f1f9009bd5876))
8
+
9
+ ## [5.56.1](https://github.com/Sogni-AI/sogni-client/compare/v5.56.0...v5.56.1) (2026-09-25)
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **enhance:** enhance with Krea 2 Turbo instead of FLUX.1 schnell ([1b3ffa9](https://github.com/Sogni-AI/sogni-client/commit/1b3ffa95a7a34c85137afec9c67a820d4c5e30f2))
15
+
1
16
  # [5.56.0](https://github.com/Sogni-AI/sogni-client/compare/v5.55.0...v5.56.0) (2026-09-23)
2
17
 
3
18
 
@@ -270,6 +270,15 @@ export type JobResultData = {
270
270
  lastFrameUrl?: string;
271
271
  lastFrameKey?: string;
272
272
  outputFormat?: string;
273
+ /**
274
+ * Files the worker uploaded for this result, as the worker reported them.
275
+ * The SDK reads `contentType` to pick the download endpoint for a result
276
+ * whose project it does not track.
277
+ */
278
+ artifacts?: Array<{
279
+ contentType?: string;
280
+ success?: boolean;
281
+ }>;
273
282
  /** Allowlisted worker result receipt persisted by the socket. */
274
283
  result?: Record<string, unknown>;
275
284
  /**
@@ -9,6 +9,12 @@ import { SupernetType } from '../ApiClient/WebSocketClient/types.js';
9
9
  import { TokenType } from '../types/token.js';
10
10
  import type { JobProvenance } from './types/JobProvenance.js';
11
11
  import type { WaitingReason } from './types/WaitingReason.js';
12
+ /**
13
+ * Enhancement re-renders a finished image with Krea 2 Turbo image-to-image at
14
+ * its tier's default 8 steps. FLUX.1 [schnell] was the enhancer until
15
+ * 2026-09: its Comfy workflow had no image input, so every enhancement ignored
16
+ * the source image, and the Supernet now refuses Schnell guide images.
17
+ */
12
18
  export declare const enhancementDefaults: {
13
19
  network: SupernetType;
14
20
  modelId: string;
@@ -157,7 +163,8 @@ declare class Job extends DataEntity<JobData, JobEventMap> {
157
163
  */
158
164
  get isWithheld(): boolean;
159
165
  /**
160
- * Media type produced by this job's model
166
+ * Media type produced by this job's model. When neither the model catalog
167
+ * nor the SDK knows the model, this is the type the project was created with.
161
168
  */
162
169
  get type(): 'image' | 'video' | 'audio' | 'model';
163
170
  get enhancedImage(): {
@@ -175,6 +182,8 @@ declare class Job extends DataEntity<JobData, JobEventMap> {
175
182
  * Get the MIME content type for image downloads based on the project's output format.
176
183
  */
177
184
  private get _imageContentType();
185
+ /** Ask the API for this job's result URL on the endpoint its media type needs. */
186
+ private _mintResultUrl;
178
187
  /**
179
188
  * Get the result URL of the job. This method will make a request to the API to get signed URL.
180
189
  * IMPORTANT: URL expires after 30 minutes, so make sure to download the result as soon as possible.
@@ -267,9 +276,16 @@ declare class Job extends DataEntity<JobData, JobEventMap> {
267
276
  private handleEnhancementUpdate;
268
277
  getResultData(): Promise<Blob>;
269
278
  /**
270
- * Enhance the image using the Flux model. This method will create a new project with the
271
- * enhancement parameters and use the result image of the current job as the starting image.
272
- * @param strength - how much freedom the model has to change the image.
279
+ * The parent render's canvas as explicit dimensions. The enhancer is a different model
280
+ * from the parent, and models do not share size-preset ids, so a preset is resolved
281
+ * against the parent's own model. Undefined when the parent used its model's default size.
282
+ */
283
+ private enhancementSize;
284
+ /**
285
+ * Enhance the image with Krea 2 Turbo (`enhancementDefaults`). This creates a new
286
+ * project at the same size, using the result image of the current job as the starting image.
287
+ * @param strength - how much freedom the model has to change the image: `light` repaints
288
+ * the least (denoise 0.15), `heavy` the most (0.49).
273
289
  * @param overrides - optional parameters to override original prompt, style or token type.
274
290
  */
275
291
  enhance(strength: EnhancementStrength, overrides?: {
@@ -51,14 +51,20 @@ const RUNTIME_LIMIT_FLOOR_MS = {
51
51
  const RUNTIME_LIMIT_ETA_MULTIPLIER = 6;
52
52
  /** Absolute ceiling, so "never occupy a worker indefinitely" still holds. */
53
53
  const RUNTIME_LIMIT_MAX_MS = 12 * HOUR_MS;
54
+ /**
55
+ * Enhancement re-renders a finished image with Krea 2 Turbo image-to-image at
56
+ * its tier's default 8 steps. FLUX.1 [schnell] was the enhancer until
57
+ * 2026-09: its Comfy workflow had no image input, so every enhancement ignored
58
+ * the source image, and the Supernet now refuses Schnell guide images.
59
+ */
54
60
  exports.enhancementDefaults = {
55
61
  network: 'fast',
56
- modelId: 'flux1-schnell-fp8',
62
+ modelId: 'krea2_turbo_fp8_scaled',
57
63
  positivePrompt: '',
58
64
  negativePrompt: '',
59
65
  stylePrompt: '',
60
66
  startingImageStrength: 0.5,
61
- steps: 5,
67
+ steps: 8,
62
68
  guidance: 1,
63
69
  numberOfMedia: 1,
64
70
  numberOfPreviews: 0
@@ -247,16 +253,13 @@ class Job extends DataEntity_js_1.default {
247
253
  return this.isNSFW && !this.nsfwDetected;
248
254
  }
249
255
  /**
250
- * Media type produced by this job's model
256
+ * Media type produced by this job's model. When neither the model catalog
257
+ * nor the SDK knows the model, this is the type the project was created with.
251
258
  */
252
259
  get type() {
253
- if (this._api.isVideoModelId(this._project.params.modelId))
254
- return 'video';
255
- if (this._api.isAudioModelId(this._project.params.modelId))
256
- return 'audio';
257
- if (this._api.isModelArtifactModelId(this._project.params.modelId))
258
- return 'model';
259
- return 'image';
260
+ var _a;
261
+ const params = this._project.params;
262
+ return ((_a = this._api._resultMediaKind({ modelId: params.modelId, projectType: params.type })) !== null && _a !== void 0 ? _a : params.type);
260
263
  }
261
264
  get enhancedImage() {
262
265
  if (!this._enhancementProject) {
@@ -303,6 +306,16 @@ class Job extends DataEntity_js_1.default {
303
306
  return undefined;
304
307
  }
305
308
  }
309
+ /** Ask the API for this job's result URL on the endpoint its media type needs. */
310
+ _mintResultUrl() {
311
+ return this._api._mintResultUrl({
312
+ projectId: this.projectId,
313
+ jobId: this.id,
314
+ kind: this.type,
315
+ audioContentType: this._audioContentType,
316
+ imageContentType: this._imageContentType
317
+ });
318
+ }
306
319
  /**
307
320
  * Get the result URL of the job. This method will make a request to the API to get signed URL.
308
321
  * IMPORTANT: URL expires after 30 minutes, so make sure to download the result as soon as possible.
@@ -316,13 +329,7 @@ class Job extends DataEntity_js_1.default {
316
329
  if (this.data.status !== 'completed') {
317
330
  throw new Error('Job is not completed yet');
318
331
  }
319
- let url;
320
- if (this.type === 'video' || this.type === 'audio' || this.type === 'model') {
321
- url = yield this._api.mediaDownloadUrl(Object.assign(Object.assign({ jobId: this.projectId, id: this.id, type: 'complete' }, (this.type === 'audio' ? { contentType: this._audioContentType } : {})), (this.type === 'model' ? { contentType: 'model/gltf-binary' } : {})));
322
- }
323
- else {
324
- url = yield this._api.downloadUrl(Object.assign({ jobId: this.projectId, imageId: this.id, type: 'complete' }, (this._imageContentType ? { contentType: this._imageContentType } : {})));
325
- }
332
+ const url = yield this._mintResultUrl();
326
333
  this._update({ resultUrl: url });
327
334
  return url;
328
335
  });
@@ -418,12 +425,7 @@ class Job extends DataEntity_js_1.default {
418
425
  // A record claiming both resolves to withheld, the safe reading.
419
426
  !(data.triggeredNSFWFilter === true && data.nsfwDetected !== true)) {
420
427
  try {
421
- if (this.type === 'video' || this.type === 'audio' || this.type === 'model') {
422
- delta.resultUrl = yield this._api.mediaDownloadUrl(Object.assign(Object.assign({ jobId: this.projectId, id: this.id, type: 'complete' }, (this.type === 'audio' ? { contentType: this._audioContentType } : {})), (this.type === 'model' ? { contentType: 'model/gltf-binary' } : {})));
423
- }
424
- else {
425
- delta.resultUrl = yield this._api.downloadUrl(Object.assign({ jobId: this.projectId, imageId: this.id, type: 'complete' }, (this._imageContentType ? { contentType: this._imageContentType } : {})));
426
- }
428
+ delta.resultUrl = yield this._mintResultUrl();
427
429
  }
428
430
  catch (error) {
429
431
  this._logger.error(error);
@@ -548,9 +550,35 @@ class Job extends DataEntity_js_1.default {
548
550
  });
549
551
  }
550
552
  /**
551
- * Enhance the image using the Flux model. This method will create a new project with the
552
- * enhancement parameters and use the result image of the current job as the starting image.
553
- * @param strength - how much freedom the model has to change the image.
553
+ * The parent render's canvas as explicit dimensions. The enhancer is a different model
554
+ * from the parent, and models do not share size-preset ids, so a preset is resolved
555
+ * against the parent's own model. Undefined when the parent used its model's default size.
556
+ */
557
+ enhancementSize() {
558
+ return __awaiter(this, void 0, void 0, function* () {
559
+ const params = this._project.params;
560
+ if (params.type !== 'image')
561
+ return undefined;
562
+ const preset = params.sizePreset;
563
+ if (!preset || preset === 'custom') {
564
+ return params.width && params.height
565
+ ? { width: params.width, height: params.height }
566
+ : undefined;
567
+ }
568
+ const network = params.network || exports.enhancementDefaults.network;
569
+ const presets = yield this._api.getSizePresets(network, params.modelId);
570
+ const match = presets.find((p) => p.id === preset);
571
+ if (!match) {
572
+ throw new Error(`Size preset "${preset}" is not available for ${params.modelId}`);
573
+ }
574
+ return { width: match.width, height: match.height };
575
+ });
576
+ }
577
+ /**
578
+ * Enhance the image with Krea 2 Turbo (`enhancementDefaults`). This creates a new
579
+ * project at the same size, using the result image of the current job as the starting image.
580
+ * @param strength - how much freedom the model has to change the image: `light` repaints
581
+ * the least (denoise 0.15), `heavy` the most (0.49).
554
582
  * @param overrides - optional parameters to override original prompt, style or token type.
555
583
  */
556
584
  enhance(strength_1) {
@@ -562,7 +590,7 @@ class Job extends DataEntity_js_1.default {
562
590
  }
563
591
  // A segmentation result reports `type === 'image'` and would otherwise sail
564
592
  // through the guard above, then be submitted as the starting image of a
565
- // paid Flux render. A mask PNG (or its cut-out) has no prompt-to-pixels
593
+ // paid enhancement render. A mask PNG (or its cut-out) has no prompt-to-pixels
566
594
  // relationship to enhance, so this spends real Spark on a nonsense render.
567
595
  if ((0, index_js_1.isSegmentationModel)(parentProjectParams.modelId)) {
568
596
  throw new Error('Enhancement is not available for segmentation masks');
@@ -579,8 +607,9 @@ class Job extends DataEntity_js_1.default {
579
607
  this._enhancementProject.off('updated', this.handleEnhancementUpdate);
580
608
  this._enhancementProject = null;
581
609
  }
610
+ const size = yield this.enhancementSize();
582
611
  const imageData = yield this.getResultData();
583
- const project = yield this._api.create(Object.assign(Object.assign({ type: 'image' }, exports.enhancementDefaults), { positivePrompt: overrides.positivePrompt || this._project.params.positivePrompt, stylePrompt: overrides.stylePrompt || this._project.params.stylePrompt, tokenType: overrides.tokenType || this._project.params.tokenType, seed: (_a = this.seed) !== null && _a !== void 0 ? _a : this._project.params.seed, startingImage: imageData, startingImageStrength: 1 - (0, index_js_1.getEnhacementStrength)(strength), sizePreset: parentProjectParams.sizePreset }));
612
+ const project = yield this._api.create(Object.assign(Object.assign(Object.assign({ type: 'image' }, exports.enhancementDefaults), { positivePrompt: overrides.positivePrompt || this._project.params.positivePrompt, stylePrompt: overrides.stylePrompt || this._project.params.stylePrompt, tokenType: overrides.tokenType || this._project.params.tokenType, seed: (_a = this.seed) !== null && _a !== void 0 ? _a : this._project.params.seed, startingImage: imageData, startingImageStrength: 1 - (0, index_js_1.getEnhacementStrength)(strength) }), (size ? { sizePreset: 'custom', width: size.width, height: size.height } : {})));
584
613
  this._enhancementProject = project;
585
614
  this._enhancementProject.on('updated', this.handleEnhancementUpdate);
586
615
  const images = yield project.waitForCompletion();
@@ -1 +1 @@
1
- {"version":3,"file":"Job.js","sourceRoot":"","sources":["../../src/Projects/Job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Job.js","sourceRoot":"","sources":["../../src/Projects/Job.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import PersonalLoras from './PersonalLoras.js';
8
8
  import { ProjectApiEvents, type ProjectSyncReason, type ProjectSyncResult } from './types/events.js';
9
9
  import { RawProject } from './types/RawProject.js';
10
10
  import { SupernetType } from '../ApiClient/WebSocketClient/types.js';
11
+ import { type ResultMediaEvidence, type ResultMediaKind } from './utils/index.js';
11
12
  import { TokenType } from '../types/token.js';
12
13
  import { ModelOptions } from './types/ModelOptions.js';
13
14
  /**
@@ -104,6 +105,12 @@ declare class ProjectsApi extends ApiGroup<ProjectApiEvents> {
104
105
  * with no `jobIndex` to match on; see {@link ProjectsApi.findReassignedJob}.
105
106
  */
106
107
  private _awaitingReassignment;
108
+ /**
109
+ * Results (`<projectId>/<jobId>`) the image endpoint reported as media. Their
110
+ * URLs come from the media endpoint only; the image endpoint is not asked
111
+ * for them again.
112
+ */
113
+ private _mediaResultIds;
107
114
  /**
108
115
  * Recovery timings. Overridable so regression scripts can run the flow in
109
116
  * milliseconds instead of seconds.
@@ -144,6 +151,47 @@ declare class ProjectsApi extends ApiGroup<ProjectApiEvents> {
144
151
  * knowledge of, so a future `media: 'model'` family needs no SDK release.
145
152
  */
146
153
  isModelArtifactModelId(modelId: string): boolean;
154
+ /**
155
+ * The media kind the loaded catalog declares for a model, or `undefined`
156
+ * when the catalog is not loaded, does not list the model, or lists it with
157
+ * no kind this SDK knows. A missing kind is no evidence; it never reads as
158
+ * `image`.
159
+ */
160
+ private _catalogMediaKind;
161
+ /**
162
+ * What a finished job's result is, from the evidence this client holds,
163
+ * strongest first: the Pixal3D artifact rule, the catalog's media kind, the
164
+ * SDK's own model-id knowledge, what the result frame says it uploaded, and
165
+ * finally the type the project was created with. Returns `undefined` when
166
+ * none of these says anything, which is the case for a result that arrives
167
+ * for a project this client does not track and whose frame names no kind.
168
+ *
169
+ * @internal
170
+ */
171
+ _resultMediaKind(evidence: {
172
+ modelId?: string;
173
+ projectType?: string;
174
+ result?: ResultMediaEvidence;
175
+ }): ResultMediaKind | undefined;
176
+ /**
177
+ * Mint a signed download URL for a finished job's result from the endpoint
178
+ * its kind needs: images from `/v1/image/downloadUrl`, video, audio and 3D
179
+ * artifacts from `/v1/media/downloadUrl`.
180
+ *
181
+ * When the image endpoint answers that the result is media, this asks the
182
+ * media endpoint once and remembers the result, so the image endpoint is
183
+ * never asked for it again. Any other failure is thrown unchanged.
184
+ *
185
+ * @internal
186
+ */
187
+ _mintResultUrl(target: {
188
+ projectId: string;
189
+ jobId: string;
190
+ kind: ResultMediaKind;
191
+ audioContentType?: string;
192
+ imageContentType?: string;
193
+ }): Promise<string>;
194
+ private _rememberMediaResult;
147
195
  constructor(config: ApiConfig);
148
196
  /**
149
197
  * Internal timeout guard for `Project` instances. A transport gap is not a
@@ -437,11 +485,15 @@ declare class ProjectsApi extends ApiGroup<ProjectApiEvents> {
437
485
  */
438
486
  estimateCost({ network, tokenType, model, imageCount, stepCount, previewCount, cnEnabled, startingImageStrength, width, height, sizePreset, guidance, sampler, contextImages, gptImageQuality, outputFormat, billingMode }: EstimateRequest): Promise<CostEstimation>;
439
487
  /**
440
- * Estimate image enhancement cost
441
- * @param strength
488
+ * Estimate the cost of `job.enhance(strength)`.
489
+ * @param strength - enhancement strength, as passed to `job.enhance()`
442
490
  * @param tokenType
491
+ * @param size - the image's width and height; omitted, the enhancer's default size is quoted
443
492
  */
444
- estimateEnhancementCost(strength: EnhancementStrength, tokenType?: TokenType): Promise<CostEstimation>;
493
+ estimateEnhancementCost(strength: EnhancementStrength, tokenType?: TokenType, size?: {
494
+ width: number;
495
+ height: number;
496
+ }): Promise<CostEstimation>;
445
497
  /**
446
498
  * Estimates the cost of generating a video based on the provided parameters.
447
499
  *
@@ -78,6 +78,26 @@ const DEFAULT_LORA_CONSTRAINTS = {
78
78
  maxStrength: 100
79
79
  };
80
80
  const GARBAGE_COLLECT_TIMEOUT = 30000;
81
+ /**
82
+ * How many results the image endpoint reported as media are remembered, so a
83
+ * later URL request for one goes straight to the media endpoint. Bounded so a
84
+ * long-lived client cannot grow it without limit.
85
+ */
86
+ const MEDIA_RESULT_MEMORY = 1000;
87
+ /**
88
+ * The image download endpoint's answer for a result that is provably video or
89
+ * audio: 404 "This result is media, not an image; request it from
90
+ * /v1/media/downloadUrl". Any other image failure is not this and must not be
91
+ * retried on the media endpoint.
92
+ */
93
+ function isMediaResultRefusal(error) {
94
+ var _a, _b;
95
+ const candidate = error;
96
+ if (!candidate || candidate.status !== 404)
97
+ return false;
98
+ const message = (_b = (_a = candidate.payload) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : candidate.message;
99
+ return typeof message === 'string' && message.includes('/v1/media/downloadUrl');
100
+ }
81
101
  const JOB_PROVENANCE_HASH_FIELDS = [
82
102
  'sha256',
83
103
  'sourceImageSha256',
@@ -314,12 +334,10 @@ class ProjectsApi extends ApiGroup_js_1.default {
314
334
  * falls back to model ID prefix check if models aren't loaded yet.
315
335
  */
316
336
  isVideoModelId(modelId) {
317
- var _a;
318
- const model = (_a = this._supportedModels.data) === null || _a === void 0 ? void 0 : _a.find((m) => m.id === modelId);
319
- if (model) {
320
- return model.media === 'video';
321
- }
322
- // Fallback to prefix check if models not loaded
337
+ const media = this._catalogMediaKind(modelId);
338
+ if (media)
339
+ return media === 'video';
340
+ // The catalog is not loaded, does not list the model, or gives it no kind.
323
341
  return (0, index_js_2.isVideoModel)(modelId);
324
342
  }
325
343
  /**
@@ -328,11 +346,9 @@ class ProjectsApi extends ApiGroup_js_1.default {
328
346
  * falls back to model ID prefix check if models aren't loaded yet.
329
347
  */
330
348
  isAudioModelId(modelId) {
331
- var _a;
332
- const model = (_a = this._supportedModels.data) === null || _a === void 0 ? void 0 : _a.find((m) => m.id === modelId);
333
- if (model) {
334
- return model.media === 'audio';
335
- }
349
+ const media = this._catalogMediaKind(modelId);
350
+ if (media)
351
+ return media === 'audio';
336
352
  return (0, index_js_2.isAudioModel)(modelId);
337
353
  }
338
354
  /**
@@ -349,11 +365,87 @@ class ProjectsApi extends ApiGroup_js_1.default {
349
365
  * knowledge of, so a future `media: 'model'` family needs no SDK release.
350
366
  */
351
367
  isModelArtifactModelId(modelId) {
352
- var _a;
353
368
  if ((0, index_js_2.isModelArtifactModel)(modelId))
354
369
  return true;
370
+ return this._catalogMediaKind(modelId) === 'model';
371
+ }
372
+ /**
373
+ * The media kind the loaded catalog declares for a model, or `undefined`
374
+ * when the catalog is not loaded, does not list the model, or lists it with
375
+ * no kind this SDK knows. A missing kind is no evidence; it never reads as
376
+ * `image`.
377
+ */
378
+ _catalogMediaKind(modelId) {
379
+ var _a;
355
380
  const model = (_a = this._supportedModels.data) === null || _a === void 0 ? void 0 : _a.find((m) => m.id === modelId);
356
- return model ? model.media === 'model' : false;
381
+ return (0, index_js_2.asResultMediaKind)(model === null || model === void 0 ? void 0 : model.media);
382
+ }
383
+ /**
384
+ * What a finished job's result is, from the evidence this client holds,
385
+ * strongest first: the Pixal3D artifact rule, the catalog's media kind, the
386
+ * SDK's own model-id knowledge, what the result frame says it uploaded, and
387
+ * finally the type the project was created with. Returns `undefined` when
388
+ * none of these says anything, which is the case for a result that arrives
389
+ * for a project this client does not track and whose frame names no kind.
390
+ *
391
+ * @internal
392
+ */
393
+ _resultMediaKind(evidence) {
394
+ const { modelId } = evidence;
395
+ if (modelId) {
396
+ if ((0, index_js_2.isModelArtifactModel)(modelId))
397
+ return 'model';
398
+ const catalog = this._catalogMediaKind(modelId);
399
+ if (catalog)
400
+ return catalog;
401
+ if ((0, index_js_2.isVideoModel)(modelId))
402
+ return 'video';
403
+ if ((0, index_js_2.isAudioModel)(modelId))
404
+ return 'audio';
405
+ }
406
+ if (evidence.result)
407
+ return evidence.result.kind;
408
+ return (0, index_js_2.asResultMediaKind)(evidence.projectType);
409
+ }
410
+ /**
411
+ * Mint a signed download URL for a finished job's result from the endpoint
412
+ * its kind needs: images from `/v1/image/downloadUrl`, video, audio and 3D
413
+ * artifacts from `/v1/media/downloadUrl`.
414
+ *
415
+ * When the image endpoint answers that the result is media, this asks the
416
+ * media endpoint once and remembers the result, so the image endpoint is
417
+ * never asked for it again. Any other failure is thrown unchanged.
418
+ *
419
+ * @internal
420
+ */
421
+ _mintResultUrl(target) {
422
+ return __awaiter(this, void 0, void 0, function* () {
423
+ const { projectId, jobId, kind } = target;
424
+ const key = `${projectId}/${jobId}`;
425
+ if (kind === 'image' && !this._mediaResultIds.has(key)) {
426
+ try {
427
+ return yield this.downloadUrl(Object.assign({ jobId: projectId, imageId: jobId, type: 'complete' }, (target.imageContentType ? { contentType: target.imageContentType } : {})));
428
+ }
429
+ catch (error) {
430
+ if (!isMediaResultRefusal(error))
431
+ throw error;
432
+ this._rememberMediaResult(key);
433
+ this.client.logger.debug(`Image endpoint reported result ${key} as media; requesting it from the media endpoint`);
434
+ }
435
+ }
436
+ return this.mediaDownloadUrl(Object.assign(Object.assign({ jobId: projectId, id: jobId, type: 'complete' }, (kind === 'audio' && target.audioContentType
437
+ ? { contentType: target.audioContentType }
438
+ : {})), (kind === 'model' ? { contentType: 'model/gltf-binary' } : {})));
439
+ });
440
+ }
441
+ _rememberMediaResult(key) {
442
+ this._mediaResultIds.delete(key);
443
+ this._mediaResultIds.add(key);
444
+ if (this._mediaResultIds.size > MEDIA_RESULT_MEMORY) {
445
+ const oldest = this._mediaResultIds.values().next().value;
446
+ if (oldest !== undefined)
447
+ this._mediaResultIds.delete(oldest);
448
+ }
357
449
  }
358
450
  constructor(config) {
359
451
  var _a, _b, _c;
@@ -394,6 +486,12 @@ class ProjectsApi extends ApiGroup_js_1.default {
394
486
  * with no `jobIndex` to match on; see {@link ProjectsApi.findReassignedJob}.
395
487
  */
396
488
  this._awaitingReassignment = new WeakSet();
489
+ /**
490
+ * Results (`<projectId>/<jobId>`) the image endpoint reported as media. Their
491
+ * URLs come from the media endpoint only; the image endpoint is not asked
492
+ * for them again.
493
+ */
494
+ this._mediaResultIds = new Set();
397
495
  /**
398
496
  * Recovery timings. Overridable so regression scripts can run the flow in
399
497
  * milliseconds instead of seconds.
@@ -630,24 +728,34 @@ class ProjectsApi extends ApiGroup_js_1.default {
630
728
  let downloadUrl = data.resultUrl || data.videoUrl || data.videoFile || null; // Use result URL from event if provided
631
729
  // If no resultUrl provided and NSFW check passes, generate download URL
632
730
  if (!downloadUrl && passNSFWCheck && !data.userCanceled) {
633
- // Use media endpoint for video/audio models, image endpoint for image models
634
- const isVideo = project && this.isVideoModelId(project.params.modelId);
635
- const isAudio = project && this.isAudioModelId(project.params.modelId);
636
- const isModelArtifact = project && this.isModelArtifactModelId(project.params.modelId);
637
- const isMedia = isVideo || isAudio || isModelArtifact;
638
- try {
639
- if (isMedia) {
640
- downloadUrl = yield this.mediaDownloadUrl(Object.assign(Object.assign({ jobId: data.jobID, id: data.imgID, type: 'complete' }, (isAudio && project ? { contentType: getAudioContentType(project) } : {})), (isModelArtifact ? { contentType: 'model/gltf-binary' } : {})));
731
+ const result = (0, index_js_2.resultMediaEvidence)(data);
732
+ const kind = this._resultMediaKind({
733
+ modelId: project === null || project === void 0 ? void 0 : project.params.modelId,
734
+ projectType: project === null || project === void 0 ? void 0 : project.params.type,
735
+ result
736
+ });
737
+ if (!kind) {
738
+ // A result for a project this client does not track (another tab's, or
739
+ // one recovery has not rebuilt yet) whose frame names no kind. Reading
740
+ // it as an image sent every such video and audio result to the image
741
+ // endpoint; the client that tracks the project mints its own URL.
742
+ this.client.logger.debug(`No media kind for result ${data.jobID}/${data.imgID}; not requesting a download URL`);
743
+ }
744
+ else {
745
+ try {
746
+ downloadUrl = yield this._mintResultUrl({
747
+ projectId: data.jobID,
748
+ jobId: data.imgID,
749
+ kind,
750
+ audioContentType: project ? getAudioContentType(project) : result === null || result === void 0 ? void 0 : result.contentType,
751
+ imageContentType: project ? getImageContentType(project) : undefined
752
+ });
641
753
  }
642
- else {
643
- const imageContentType = project ? getImageContentType(project) : undefined;
644
- downloadUrl = yield this.downloadUrl(Object.assign({ jobId: data.jobID, imageId: data.imgID, type: 'complete' }, (imageContentType ? { contentType: imageContentType } : {})));
754
+ catch (error) {
755
+ this.client.logger.error('Failed to generate download URL for job result');
756
+ this.client.logger.error(error);
645
757
  }
646
758
  }
647
- catch (error) {
648
- this.client.logger.error('Failed to generate download URL for job result');
649
- this.client.logger.error(error);
650
- }
651
759
  }
652
760
  assertSession();
653
761
  // Update the job directly with the result URL to prevent duplicate API calls
@@ -2530,22 +2638,16 @@ class ProjectsApi extends ApiGroup_js_1.default {
2530
2638
  });
2531
2639
  }
2532
2640
  /**
2533
- * Estimate image enhancement cost
2534
- * @param strength
2641
+ * Estimate the cost of `job.enhance(strength)`.
2642
+ * @param strength - enhancement strength, as passed to `job.enhance()`
2535
2643
  * @param tokenType
2644
+ * @param size - the image's width and height; omitted, the enhancer's default size is quoted
2536
2645
  */
2537
2646
  estimateEnhancementCost(strength_1) {
2538
- return __awaiter(this, arguments, void 0, function* (strength, tokenType = 'spark') {
2539
- return this.estimateCost({
2540
- network: Job_js_1.enhancementDefaults.network,
2541
- tokenType,
2542
- model: Job_js_1.enhancementDefaults.modelId,
2543
- imageCount: 1,
2544
- stepCount: Job_js_1.enhancementDefaults.steps,
2545
- previewCount: 0,
2546
- cnEnabled: false,
2547
- startingImageStrength: (0, index_js_2.getEnhacementStrength)(strength)
2548
- });
2647
+ return __awaiter(this, arguments, void 0, function* (strength, tokenType = 'spark', size) {
2648
+ return this.estimateCost(Object.assign({ network: Job_js_1.enhancementDefaults.network, tokenType, model: Job_js_1.enhancementDefaults.modelId, imageCount: 1, stepCount: Job_js_1.enhancementDefaults.steps, previewCount: 0, cnEnabled: false,
2649
+ // Guide influence, exactly as job.enhance() submits it: light keeps the most.
2650
+ startingImageStrength: 1 - (0, index_js_2.getEnhacementStrength)(strength) }, (size ? { width: size.width, height: size.height } : {})));
2549
2651
  });
2550
2652
  }
2551
2653
  /**