@nodaro/sdk 2.26.0 → 2.27.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.
package/dist/index.cjs CHANGED
@@ -1,7 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var shared = require('@nodaro/shared');
4
- var prompts = require('@nodaro/prompts');
3
+ var workflow = require('@nodaro/shared/workflow');
4
+ var nodes = require('@nodaro/shared/nodes');
5
+ var social = require('@nodaro/shared/social');
6
+ var scene3d = require('@nodaro/shared/scene3d');
7
+ var person = require('@nodaro/prompts/person');
8
+ var entities = require('@nodaro/shared/entities');
9
+ var edl = require('@nodaro/shared/edl');
10
+ var organizations = require('@nodaro/shared/organizations');
11
+ var apps = require('@nodaro/shared/apps');
5
12
 
6
13
  // src/binary-response.ts
7
14
  async function readBinaryResponse(response, maxBytes) {
@@ -112,6 +119,19 @@ var StudioOpError = class extends NodaroError {
112
119
  }
113
120
  opIndex;
114
121
  };
122
+ var CONTINUATION_REFUSAL_CODES = /* @__PURE__ */ new Set([
123
+ "already_running",
124
+ "continuation_superseded",
125
+ "render_final_already_rendered"
126
+ ]);
127
+ var ContinuationRefusedError = class extends NodaroError {
128
+ constructor(message, code, jobId) {
129
+ super(message, code, 409);
130
+ this.jobId = jobId;
131
+ this.name = "ContinuationRefusedError";
132
+ }
133
+ jobId;
134
+ };
115
135
  var JobBlockedError = class extends NodaroError {
116
136
  constructor(message = "Blocked by this deployment's content policy") {
117
137
  super(message, "job_blocked", 422);
@@ -184,6 +204,9 @@ function throwFromResponse(status, body) {
184
204
  if (status >= 400 && status < 500 && typeof body.error?.opIndex === "number") {
185
205
  throw new StudioOpError(message, code, status, body.error.opIndex);
186
206
  }
207
+ if (status === 409 && CONTINUATION_REFUSAL_CODES.has(code) && typeof body.jobId === "string") {
208
+ throw new ContinuationRefusedError(message, code, body.jobId);
209
+ }
187
210
  if (status === 422 && code === "job_blocked") throw new JobBlockedError(message);
188
211
  if (status === 403 && code === "insufficient_scope") {
189
212
  throw new ForbiddenError(message, body.error?.missingScope);
@@ -581,11 +604,11 @@ var NodesResource = class {
581
604
  return this.client.request("GET", `/v1/nodes/${encodeURIComponent(type)}`);
582
605
  }
583
606
  run(type, params = {}, options = {}) {
584
- const route = type === "render-video" && typeof params.planType === "string" ? "/v1/render-video/plan" : shared.nodeRunRoute(type);
585
- if (!route) return Promise.reject(notRunnable(type, shared.NODE_TYPES_WITHOUT_RUN_ROUTE[type]));
586
- const platform = shared.SOCIAL_POST_NODE_PLATFORM[type];
607
+ const route = type === "render-video" && typeof params.planType === "string" ? "/v1/render-video/plan" : nodes.nodeRunRoute(type);
608
+ if (!route) return Promise.reject(notRunnable(type, nodes.NODE_TYPES_WITHOUT_RUN_ROUTE[type]));
609
+ const platform = social.SOCIAL_POST_NODE_PLATFORM[type];
587
610
  const body = platform && params.platform === void 0 ? { ...params, platform } : params;
588
- const conventional = !Object.prototype.hasOwnProperty.call(shared.NODE_RUN_ROUTES, type);
611
+ const conventional = !Object.prototype.hasOwnProperty.call(nodes.NODE_RUN_ROUTES, type);
589
612
  return this.client.request("POST", route, {
590
613
  body,
591
614
  // Transport-level retry safety, opt-in per call. The platform reads the
@@ -711,7 +734,7 @@ var Scene3DResource = class {
711
734
  if (SCENE3D_DELIVERY_ASSET_USAGE[asset.kind] !== asset.usage) {
712
735
  throw new Error("This asset is not available through the delivery endpoint");
713
736
  }
714
- if (!Number.isSafeInteger(asset.byteLength) || asset.byteLength < 1 || asset.byteLength > shared.SCENE3D_V2_LIMITS.maxRendererAssetBytes) {
737
+ if (!Number.isSafeInteger(asset.byteLength) || asset.byteLength < 1 || asset.byteLength > scene3d.SCENE3D_V2_LIMITS.maxRendererAssetBytes) {
715
738
  throw new Error("Invalid scene delivery asset byte length");
716
739
  }
717
740
  return this.client.requestBytes("GET", `/v1/3d-scene/deliveries/${encodeURIComponent(jobId)}/assets/${encodeURIComponent(asset.assetId)}`, {
@@ -751,7 +774,7 @@ var Scene3DResource = class {
751
774
  if (!["glb", "camera-track-json", "poster", "validation-report"].includes(asset.kind)) {
752
775
  throw new Error("This asset is not available through the playback endpoint");
753
776
  }
754
- if (!Number.isSafeInteger(asset.byteLength) || asset.byteLength < 1 || asset.byteLength > shared.SCENE3D_V2_LIMITS.maxRendererAssetBytes) {
777
+ if (!Number.isSafeInteger(asset.byteLength) || asset.byteLength < 1 || asset.byteLength > scene3d.SCENE3D_V2_LIMITS.maxRendererAssetBytes) {
755
778
  throw new Error("Invalid scene asset byte length");
756
779
  }
757
780
  return this.client.requestBytes("GET", `/v1/3d-scene/revisions/${encodeURIComponent(revisionId)}/assets/${encodeURIComponent(asset.assetId)}`, {
@@ -763,7 +786,7 @@ var Scene3DResource = class {
763
786
  sourceBytes(revisionId, options) {
764
787
  return this.client.requestBytes("GET", `/v1/3d-scene/revisions/${encodeURIComponent(revisionId)}/source`, {
765
788
  signal: options?.signal,
766
- maxBytes: shared.SCENE3D_V2_LIMITS.maxBlendSourceBytes
789
+ maxBytes: scene3d.SCENE3D_V2_LIMITS.maxBlendSourceBytes
767
790
  });
768
791
  }
769
792
  generate(params) {
@@ -1163,7 +1186,7 @@ var CharactersResource = class {
1163
1186
  }
1164
1187
  };
1165
1188
  function buildPersonSeedPrompt(value) {
1166
- return prompts.buildPersonHints(value).join(", ");
1189
+ return person.buildPersonHints(value).join(", ");
1167
1190
  }
1168
1191
  var LocationsResource = class {
1169
1192
  constructor(client) {
@@ -2536,7 +2559,10 @@ var AudioResource = class {
2536
2559
  * `ratio` (1–20, overrides `amount`), `attackMs` (1–2000, default 20) and
2537
2560
  * `releaseMs` (10–9000, default 500) are optional fine controls. A ducked mix
2538
2561
  * sums its tracks rather than averaging them, so the voice keeps its level;
2539
- * the price is the same with or without a duck.
2562
+ * the price is the same with or without a duck. `endAt` (`"longest"`, the
2563
+ * default, or `"voice"`) says where the mix ends: `"voice"` ends it when the
2564
+ * voice (the `duck.under` track) ends (needs `duck`). A video URL is a track
2565
+ * too: its audio is mixed, and a video with no sound is a silent track.
2540
2566
  */
2541
2567
  mix(input) {
2542
2568
  return this.client.request("POST", "/v1/mix-audio", { body: input });
@@ -2613,6 +2639,18 @@ var CreditsResource = class {
2613
2639
  );
2614
2640
  return res.data;
2615
2641
  }
2642
+ /**
2643
+ * `GET /v1/credits/transactions` → one page of the caller's credit
2644
+ * transactions, newest first, with `nextCursor` for the next page (`null`
2645
+ * at the end). Read `credits_charged` for what each run cost — it can be
2646
+ * below the hold (`credits_reserved`) and is `null` while the hold is open.
2647
+ * Cloud-only route: a self-hosted instance answers 404.
2648
+ */
2649
+ transactions(options = {}) {
2650
+ return this.client.request("GET", "/v1/credits/transactions", {
2651
+ query: { limit: options.limit, cursor: options.cursor }
2652
+ });
2653
+ }
2616
2654
  /**
2617
2655
  * `POST /v1/credits/model-costs` → per-identifier credit cost, for editor
2618
2656
  * cost previews. Capped at the first {@link MODEL_COSTS_LIMIT} identifiers
@@ -3955,6 +3993,13 @@ var WorkspacesResource = class {
3955
3993
  return this.client.requestText("GET", `/v1/workspaces/${encodeURIComponent(id)}/usage`, { query: { ...opts, format: "csv" } });
3956
3994
  }
3957
3995
  };
3996
+ function tightenBody(input) {
3997
+ const { mediaUrl, ...rest } = input;
3998
+ return { mediaUrls: [mediaUrl], ...Object.fromEntries(Object.entries(rest).filter(([, v]) => v !== void 0)) };
3999
+ }
4000
+ function idempotencyHeaders(options) {
4001
+ return options?.idempotencyKey ? { headers: { "Idempotency-Key": options.idempotencyKey } } : {};
4002
+ }
3958
4003
  var EditResource = class {
3959
4004
  constructor(client) {
3960
4005
  this.client = client;
@@ -4014,6 +4059,42 @@ var EditResource = class {
4014
4059
  }
4015
4060
  });
4016
4061
  }
4062
+ /**
4063
+ * Tighten Episode (`POST /v1/tighten-episode`): tighten a podcast recording
4064
+ * in one call — transcribe, cut the silences and filler, render, with
4065
+ * optional captions, music and framing. Answers the run's job to poll; its
4066
+ * `output_data` holds the episode. The run is priced as its steps at their own
4067
+ * rates plus the listed per-run fee. Quote it first with
4068
+ * {@link estimateTightenEpisode}.
4069
+ */
4070
+ tightenEpisode(input, options) {
4071
+ return this.client.request("POST", "/v1/tighten-episode", { body: tightenBody(input), ...idempotencyHeaders(options) });
4072
+ }
4073
+ /**
4074
+ * What a Tighten Episode run is estimated at (`POST /v1/tighten-episode/estimate`):
4075
+ * its steps at their own rates plus its per-run fee. Nothing is created or
4076
+ * charged. The estimate leans high: the render is priced at the recording's
4077
+ * full length, while the charge follows the minutes actually rendered.
4078
+ */
4079
+ estimateTightenEpisode(input) {
4080
+ return this.client.request("POST", "/v1/tighten-episode/estimate", { body: tightenBody(input) });
4081
+ }
4082
+ /**
4083
+ * Continue a Tighten Episode run as a new job (`POST /v1/tighten-episode/continue`):
4084
+ * `"from-failed"` keeps the steps that finished and runs the rest (the fee is
4085
+ * held again; the failed run's was refunded); `"render-final"` renders the
4086
+ * full-quality episode after a review-on preview, with the preview's
4087
+ * settings and no fee. A refusal that names another job
4088
+ * (`already_running`, `continuation_superseded`,
4089
+ * `render_final_already_rendered`) throws a `ContinuationRefusedError`
4090
+ * carrying that `jobId`.
4091
+ */
4092
+ continueUseCase(input, options) {
4093
+ return this.client.request("POST", "/v1/tighten-episode/continue", {
4094
+ body: { jobId: input.jobId, mode: input.mode, ...input.editedEdl !== void 0 ? { editedEdl: input.editedEdl } : {} },
4095
+ ...idempotencyHeaders(options)
4096
+ });
4097
+ }
4017
4098
  /**
4018
4099
  * Plan a transcript-driven cut (`POST /v1/edit-plan`). Reads a timed
4019
4100
  * transcript (plus optional silence ranges) and the media sources, and plans
@@ -4026,12 +4107,12 @@ var EditResource = class {
4026
4107
  * on nodaro.ai it runs directly.
4027
4108
  */
4028
4109
  editPlan(input) {
4029
- const planned = shared.resolveEditPlanSources(input.sources, {
4110
+ const planned = edl.resolveEditPlanSources(input.sources, {
4030
4111
  offsets: input.offsets,
4031
4112
  transcriptSourceId: input.transcriptSourceId
4032
4113
  });
4033
4114
  if (!planned.ok) {
4034
- const message = planned.issues.map((issue) => shared.describeAudioSyncOffsetIssue(issue)).join("; ");
4115
+ const message = planned.issues.map((issue) => edl.describeAudioSyncOffsetIssue(issue)).join("; ");
4035
4116
  return Promise.reject(new NodaroError(`editPlan: ${message}`, "edit_plan_sources", 400));
4036
4117
  }
4037
4118
  const transcript = planned.transcriptSourceId ? { ...input.transcript, sourceId: planned.transcriptSourceId } : input.transcript;
@@ -4061,7 +4142,7 @@ var EditResource = class {
4061
4142
  * a {@link NodaroError} (`code: "no_speakers"`) before any request or charge.
4062
4143
  */
4063
4144
  cameraSwitch(input) {
4064
- if (shared.transcriptSpeakerLabels(input.transcript).length === 0) {
4145
+ if (edl.transcriptSpeakerLabels(input.transcript).length === 0) {
4065
4146
  return Promise.reject(new NodaroError(
4066
4147
  "cameraSwitch: the transcript has no speaker labels \u2014 transcribe with speaker detection on",
4067
4148
  "no_speakers",
@@ -4090,11 +4171,11 @@ var EditResource = class {
4090
4171
  * clipping straddlers. Runs `@nodaro/shared`'s canonical
4091
4172
  * `remapTranscriptThroughEdl`, the same remap `applyEdl` performs server-side.
4092
4173
  */
4093
- remapTranscript(edl, transcript) {
4094
- return shared.remapTranscriptThroughEdl(edl, transcript);
4174
+ remapTranscript(edl$1, transcript) {
4175
+ return edl.remapTranscriptThroughEdl(edl$1, transcript);
4095
4176
  }
4096
4177
  };
4097
- var SDK_VERSION = "2.26.0" ;
4178
+ var SDK_VERSION = "2.27.0" ;
4098
4179
  var CLIENT_HEADER = "X-Nodaro-Client";
4099
4180
  var isBrowser = () => typeof window !== "undefined" && typeof window.document !== "undefined";
4100
4181
  var NodaroClient = class _NodaroClient {
@@ -4245,7 +4326,7 @@ var NodaroClient = class _NodaroClient {
4245
4326
  ...this.sendClientHeader ? { [CLIENT_HEADER]: this.clientLabel } : {},
4246
4327
  // Before per-request headers: a resource that needs to reach outside
4247
4328
  // this client's workspace says so explicitly and wins.
4248
- ...this.workspaceId ? { [shared.WORKSPACE_HEADER]: this.workspaceId } : {},
4329
+ ...this.workspaceId ? { [organizations.WORKSPACE_HEADER]: this.workspaceId } : {},
4249
4330
  ...options.headers ?? {}
4250
4331
  };
4251
4332
  if (token) headers["Authorization"] = `Bearer ${token}`;
@@ -4363,105 +4444,105 @@ function supabaseAuth(supabase) {
4363
4444
  };
4364
4445
  }
4365
4446
 
4366
- Object.defineProperty(exports, "CHARACTER_ASPECT_DEFAULTS", {
4447
+ Object.defineProperty(exports, "OUTPUT_BEARING_NODE_STATUSES", {
4367
4448
  enumerable: true,
4368
- get: function () { return shared.CHARACTER_ASPECT_DEFAULTS; }
4449
+ get: function () { return workflow.OUTPUT_BEARING_NODE_STATUSES; }
4369
4450
  });
4370
- Object.defineProperty(exports, "CHARACTER_ASPECT_OPTIONS", {
4451
+ Object.defineProperty(exports, "nodeStateMayCarryOutput", {
4371
4452
  enumerable: true,
4372
- get: function () { return shared.CHARACTER_ASPECT_OPTIONS; }
4453
+ get: function () { return workflow.nodeStateMayCarryOutput; }
4373
4454
  });
4374
- Object.defineProperty(exports, "CHARACTER_STYLES", {
4455
+ Object.defineProperty(exports, "PROMPT_PREFIX_KEY", {
4375
4456
  enumerable: true,
4376
- get: function () { return shared.CHARACTER_STYLES; }
4457
+ get: function () { return nodes.PROMPT_PREFIX_KEY; }
4377
4458
  });
4378
- Object.defineProperty(exports, "CREATURE_ASPECT_DEFAULTS", {
4459
+ Object.defineProperty(exports, "PROMPT_SUFFIX_KEY", {
4379
4460
  enumerable: true,
4380
- get: function () { return shared.OBJECT_ASPECT_DEFAULTS; }
4461
+ get: function () { return nodes.PROMPT_SUFFIX_KEY; }
4381
4462
  });
4382
- Object.defineProperty(exports, "CREATURE_ASPECT_OPTIONS", {
4463
+ Object.defineProperty(exports, "PEOPLE", {
4383
4464
  enumerable: true,
4384
- get: function () { return shared.OBJECT_ASPECT_OPTIONS; }
4465
+ get: function () { return person.PEOPLE; }
4385
4466
  });
4386
- Object.defineProperty(exports, "CREATURE_ATTACH_COLUMNS", {
4467
+ Object.defineProperty(exports, "PERSON_DIMENSION_LABELS", {
4387
4468
  enumerable: true,
4388
- get: function () { return shared.CREATURE_ATTACH_COLUMNS; }
4469
+ get: function () { return person.PERSON_DIMENSION_LABELS; }
4389
4470
  });
4390
- Object.defineProperty(exports, "LOCATION_ASSET_TYPES", {
4471
+ Object.defineProperty(exports, "PERSON_DIMENSION_ORDER", {
4391
4472
  enumerable: true,
4392
- get: function () { return shared.LOCATION_ASSET_TYPES; }
4473
+ get: function () { return person.PERSON_DIMENSION_ORDER; }
4393
4474
  });
4394
- Object.defineProperty(exports, "LOCATION_ATTACH_COLUMNS", {
4475
+ Object.defineProperty(exports, "buildPersonHints", {
4395
4476
  enumerable: true,
4396
- get: function () { return shared.LOCATION_ATTACH_COLUMNS; }
4477
+ get: function () { return person.buildPersonHints; }
4397
4478
  });
4398
- Object.defineProperty(exports, "OBJECT_ASPECT_DEFAULTS", {
4479
+ Object.defineProperty(exports, "CHARACTER_ASPECT_DEFAULTS", {
4399
4480
  enumerable: true,
4400
- get: function () { return shared.OBJECT_ASPECT_DEFAULTS; }
4481
+ get: function () { return entities.CHARACTER_ASPECT_DEFAULTS; }
4401
4482
  });
4402
- Object.defineProperty(exports, "OBJECT_ASPECT_OPTIONS", {
4483
+ Object.defineProperty(exports, "CHARACTER_ASPECT_OPTIONS", {
4403
4484
  enumerable: true,
4404
- get: function () { return shared.OBJECT_ASPECT_OPTIONS; }
4485
+ get: function () { return entities.CHARACTER_ASPECT_OPTIONS; }
4405
4486
  });
4406
- Object.defineProperty(exports, "OBJECT_ASSET_TYPES", {
4487
+ Object.defineProperty(exports, "CHARACTER_STYLES", {
4407
4488
  enumerable: true,
4408
- get: function () { return shared.OBJECT_ASSET_TYPES; }
4489
+ get: function () { return entities.CHARACTER_STYLES; }
4409
4490
  });
4410
- Object.defineProperty(exports, "OBJECT_ATTACH_COLUMNS", {
4491
+ Object.defineProperty(exports, "CREATURE_ASPECT_DEFAULTS", {
4411
4492
  enumerable: true,
4412
- get: function () { return shared.OBJECT_ATTACH_COLUMNS; }
4493
+ get: function () { return entities.OBJECT_ASPECT_DEFAULTS; }
4413
4494
  });
4414
- Object.defineProperty(exports, "OUTPUT_BEARING_NODE_STATUSES", {
4495
+ Object.defineProperty(exports, "CREATURE_ASPECT_OPTIONS", {
4415
4496
  enumerable: true,
4416
- get: function () { return shared.OUTPUT_BEARING_NODE_STATUSES; }
4497
+ get: function () { return entities.OBJECT_ASPECT_OPTIONS; }
4417
4498
  });
4418
- Object.defineProperty(exports, "PROMPT_PREFIX_KEY", {
4499
+ Object.defineProperty(exports, "CREATURE_ATTACH_COLUMNS", {
4419
4500
  enumerable: true,
4420
- get: function () { return shared.PROMPT_PREFIX_KEY; }
4501
+ get: function () { return entities.CREATURE_ATTACH_COLUMNS; }
4421
4502
  });
4422
- Object.defineProperty(exports, "PROMPT_SUFFIX_KEY", {
4503
+ Object.defineProperty(exports, "LOCATION_ASSET_TYPES", {
4423
4504
  enumerable: true,
4424
- get: function () { return shared.PROMPT_SUFFIX_KEY; }
4505
+ get: function () { return entities.LOCATION_ASSET_TYPES; }
4425
4506
  });
4426
- Object.defineProperty(exports, "RECAST_SEGMENT_PACKS", {
4507
+ Object.defineProperty(exports, "LOCATION_ATTACH_COLUMNS", {
4427
4508
  enumerable: true,
4428
- get: function () { return shared.RECAST_SEGMENT_PACKS; }
4509
+ get: function () { return entities.LOCATION_ATTACH_COLUMNS; }
4429
4510
  });
4430
- Object.defineProperty(exports, "SURROUND_DIRECTIONS", {
4511
+ Object.defineProperty(exports, "OBJECT_ASPECT_DEFAULTS", {
4431
4512
  enumerable: true,
4432
- get: function () { return shared.SURROUND_DIRECTIONS; }
4513
+ get: function () { return entities.OBJECT_ASPECT_DEFAULTS; }
4433
4514
  });
4434
- Object.defineProperty(exports, "USAGE_GROUP_BYS", {
4515
+ Object.defineProperty(exports, "OBJECT_ASPECT_OPTIONS", {
4435
4516
  enumerable: true,
4436
- get: function () { return shared.USAGE_GROUP_BYS; }
4517
+ get: function () { return entities.OBJECT_ASPECT_OPTIONS; }
4437
4518
  });
4438
- Object.defineProperty(exports, "WORKSPACE_HEADER", {
4519
+ Object.defineProperty(exports, "OBJECT_ASSET_TYPES", {
4439
4520
  enumerable: true,
4440
- get: function () { return shared.WORKSPACE_HEADER; }
4521
+ get: function () { return entities.OBJECT_ASSET_TYPES; }
4441
4522
  });
4442
- Object.defineProperty(exports, "nodeStateMayCarryOutput", {
4523
+ Object.defineProperty(exports, "OBJECT_ATTACH_COLUMNS", {
4443
4524
  enumerable: true,
4444
- get: function () { return shared.nodeStateMayCarryOutput; }
4525
+ get: function () { return entities.OBJECT_ATTACH_COLUMNS; }
4445
4526
  });
4446
- Object.defineProperty(exports, "unwrapEditPlanOutput", {
4527
+ Object.defineProperty(exports, "SURROUND_DIRECTIONS", {
4447
4528
  enumerable: true,
4448
- get: function () { return shared.unwrapEditPlanOutput; }
4529
+ get: function () { return entities.SURROUND_DIRECTIONS; }
4449
4530
  });
4450
- Object.defineProperty(exports, "PEOPLE", {
4531
+ Object.defineProperty(exports, "unwrapEditPlanOutput", {
4451
4532
  enumerable: true,
4452
- get: function () { return prompts.PEOPLE; }
4533
+ get: function () { return edl.unwrapEditPlanOutput; }
4453
4534
  });
4454
- Object.defineProperty(exports, "PERSON_DIMENSION_LABELS", {
4535
+ Object.defineProperty(exports, "USAGE_GROUP_BYS", {
4455
4536
  enumerable: true,
4456
- get: function () { return prompts.PERSON_DIMENSION_LABELS; }
4537
+ get: function () { return organizations.USAGE_GROUP_BYS; }
4457
4538
  });
4458
- Object.defineProperty(exports, "PERSON_DIMENSION_ORDER", {
4539
+ Object.defineProperty(exports, "WORKSPACE_HEADER", {
4459
4540
  enumerable: true,
4460
- get: function () { return prompts.PERSON_DIMENSION_ORDER; }
4541
+ get: function () { return organizations.WORKSPACE_HEADER; }
4461
4542
  });
4462
- Object.defineProperty(exports, "buildPersonHints", {
4543
+ Object.defineProperty(exports, "RECAST_SEGMENT_PACKS", {
4463
4544
  enumerable: true,
4464
- get: function () { return prompts.buildPersonHints; }
4545
+ get: function () { return apps.RECAST_SEGMENT_PACKS; }
4465
4546
  });
4466
4547
  exports.AppsResource = AppsResource;
4467
4548
  exports.AudioResource = AudioResource;
@@ -4472,6 +4553,7 @@ exports.CharactersResource = CharactersResource;
4472
4553
  exports.CollectionsResource = CollectionsResource;
4473
4554
  exports.CommunityResource = CommunityResource;
4474
4555
  exports.CompetitorsResource = CompetitorsResource;
4556
+ exports.ContinuationRefusedError = ContinuationRefusedError;
4475
4557
  exports.CopilotResource = CopilotResource;
4476
4558
  exports.CreaturesResource = CreaturesResource;
4477
4559
  exports.CreditsResource = CreditsResource;