@nodaro/sdk 2.26.0 → 2.28.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);
@@ -424,6 +447,65 @@ var ProjectsResource = class {
424
447
  }
425
448
  };
426
449
 
450
+ // src/resources/sessions.ts
451
+ var SessionsResource = class {
452
+ constructor(client) {
453
+ this.client = client;
454
+ }
455
+ client;
456
+ /**
457
+ * Create a session. Send its `id` as `sessionId` on a generation request
458
+ * (`nodes.run("generate-image", { sessionId, … })`, video, speech, music) and
459
+ * the job is born in it.
460
+ */
461
+ create(input) {
462
+ return this.client.request("POST", "/v1/sessions", { body: input });
463
+ }
464
+ /** Your sessions, newest first. */
465
+ list(params = {}) {
466
+ const query = {};
467
+ if (params.projectId) query.projectId = params.projectId;
468
+ if (params.tool) query.tool = params.tool;
469
+ if (params.includeArchived) query.includeArchived = "true";
470
+ if (params.limit !== void 0) query.limit = String(params.limit);
471
+ if (params.cursor) query.cursor = params.cursor;
472
+ return this.client.request("GET", "/v1/sessions", { query });
473
+ }
474
+ get(id) {
475
+ return this.client.request("GET", `/v1/sessions/${encodeURIComponent(id)}`);
476
+ }
477
+ /** Rename or archive a session. Its project cannot change. */
478
+ update(id, input) {
479
+ return this.client.request("PATCH", `/v1/sessions/${encodeURIComponent(id)}`, { body: input });
480
+ }
481
+ /** Delete a session and its links. Its jobs are kept, and stay in every other session holding them. */
482
+ delete(id) {
483
+ return this.client.request("DELETE", `/v1/sessions/${encodeURIComponent(id)}`);
484
+ }
485
+ /** The session's items, born-in and imported, newest first. */
486
+ items(id, params = {}) {
487
+ const query = {};
488
+ if (params.limit !== void 0) query.limit = String(params.limit);
489
+ if (params.cursor) query.cursor = params.cursor;
490
+ return this.client.request("GET", `/v1/sessions/${encodeURIComponent(id)}/items`, { query });
491
+ }
492
+ /**
493
+ * Import some of your own jobs into a session — a link, not a copy (up to 100
494
+ * a call). All-or-nothing: if any id is not one of your jobs, nothing is
495
+ * imported and the call fails with 404. Items already there are left as they are.
496
+ */
497
+ importItems(id, input) {
498
+ return this.client.request("POST", `/v1/sessions/${encodeURIComponent(id)}/items`, { body: input });
499
+ }
500
+ /** Remove one item from a session. Only the link goes: the job, and every other session holding it, stay. */
501
+ removeItem(id, jobId) {
502
+ return this.client.request(
503
+ "DELETE",
504
+ `/v1/sessions/${encodeURIComponent(id)}/items/${encodeURIComponent(jobId)}`
505
+ );
506
+ }
507
+ };
508
+
427
509
  // src/resources/jobs.ts
428
510
  var JobsResource = class {
429
511
  constructor(client) {
@@ -581,11 +663,11 @@ var NodesResource = class {
581
663
  return this.client.request("GET", `/v1/nodes/${encodeURIComponent(type)}`);
582
664
  }
583
665
  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];
666
+ const route = type === "render-video" && typeof params.planType === "string" ? "/v1/render-video/plan" : nodes.nodeRunRoute(type);
667
+ if (!route) return Promise.reject(notRunnable(type, nodes.NODE_TYPES_WITHOUT_RUN_ROUTE[type]));
668
+ const platform = social.SOCIAL_POST_NODE_PLATFORM[type];
587
669
  const body = platform && params.platform === void 0 ? { ...params, platform } : params;
588
- const conventional = !Object.prototype.hasOwnProperty.call(shared.NODE_RUN_ROUTES, type);
670
+ const conventional = !Object.prototype.hasOwnProperty.call(nodes.NODE_RUN_ROUTES, type);
589
671
  return this.client.request("POST", route, {
590
672
  body,
591
673
  // Transport-level retry safety, opt-in per call. The platform reads the
@@ -711,7 +793,7 @@ var Scene3DResource = class {
711
793
  if (SCENE3D_DELIVERY_ASSET_USAGE[asset.kind] !== asset.usage) {
712
794
  throw new Error("This asset is not available through the delivery endpoint");
713
795
  }
714
- if (!Number.isSafeInteger(asset.byteLength) || asset.byteLength < 1 || asset.byteLength > shared.SCENE3D_V2_LIMITS.maxRendererAssetBytes) {
796
+ if (!Number.isSafeInteger(asset.byteLength) || asset.byteLength < 1 || asset.byteLength > scene3d.SCENE3D_V2_LIMITS.maxRendererAssetBytes) {
715
797
  throw new Error("Invalid scene delivery asset byte length");
716
798
  }
717
799
  return this.client.requestBytes("GET", `/v1/3d-scene/deliveries/${encodeURIComponent(jobId)}/assets/${encodeURIComponent(asset.assetId)}`, {
@@ -751,7 +833,7 @@ var Scene3DResource = class {
751
833
  if (!["glb", "camera-track-json", "poster", "validation-report"].includes(asset.kind)) {
752
834
  throw new Error("This asset is not available through the playback endpoint");
753
835
  }
754
- if (!Number.isSafeInteger(asset.byteLength) || asset.byteLength < 1 || asset.byteLength > shared.SCENE3D_V2_LIMITS.maxRendererAssetBytes) {
836
+ if (!Number.isSafeInteger(asset.byteLength) || asset.byteLength < 1 || asset.byteLength > scene3d.SCENE3D_V2_LIMITS.maxRendererAssetBytes) {
755
837
  throw new Error("Invalid scene asset byte length");
756
838
  }
757
839
  return this.client.requestBytes("GET", `/v1/3d-scene/revisions/${encodeURIComponent(revisionId)}/assets/${encodeURIComponent(asset.assetId)}`, {
@@ -763,7 +845,7 @@ var Scene3DResource = class {
763
845
  sourceBytes(revisionId, options) {
764
846
  return this.client.requestBytes("GET", `/v1/3d-scene/revisions/${encodeURIComponent(revisionId)}/source`, {
765
847
  signal: options?.signal,
766
- maxBytes: shared.SCENE3D_V2_LIMITS.maxBlendSourceBytes
848
+ maxBytes: scene3d.SCENE3D_V2_LIMITS.maxBlendSourceBytes
767
849
  });
768
850
  }
769
851
  generate(params) {
@@ -1163,7 +1245,7 @@ var CharactersResource = class {
1163
1245
  }
1164
1246
  };
1165
1247
  function buildPersonSeedPrompt(value) {
1166
- return prompts.buildPersonHints(value).join(", ");
1248
+ return person.buildPersonHints(value).join(", ");
1167
1249
  }
1168
1250
  var LocationsResource = class {
1169
1251
  constructor(client) {
@@ -2536,7 +2618,10 @@ var AudioResource = class {
2536
2618
  * `ratio` (1–20, overrides `amount`), `attackMs` (1–2000, default 20) and
2537
2619
  * `releaseMs` (10–9000, default 500) are optional fine controls. A ducked mix
2538
2620
  * sums its tracks rather than averaging them, so the voice keeps its level;
2539
- * the price is the same with or without a duck.
2621
+ * the price is the same with or without a duck. `endAt` (`"longest"`, the
2622
+ * default, or `"voice"`) says where the mix ends: `"voice"` ends it when the
2623
+ * voice (the `duck.under` track) ends (needs `duck`). A video URL is a track
2624
+ * too: its audio is mixed, and a video with no sound is a silent track.
2540
2625
  */
2541
2626
  mix(input) {
2542
2627
  return this.client.request("POST", "/v1/mix-audio", { body: input });
@@ -2613,6 +2698,18 @@ var CreditsResource = class {
2613
2698
  );
2614
2699
  return res.data;
2615
2700
  }
2701
+ /**
2702
+ * `GET /v1/credits/transactions` → one page of the caller's credit
2703
+ * transactions, newest first, with `nextCursor` for the next page (`null`
2704
+ * at the end). Read `credits_charged` for what each run cost — it can be
2705
+ * below the hold (`credits_reserved`) and is `null` while the hold is open.
2706
+ * Cloud-only route: a self-hosted instance answers 404.
2707
+ */
2708
+ transactions(options = {}) {
2709
+ return this.client.request("GET", "/v1/credits/transactions", {
2710
+ query: { limit: options.limit, cursor: options.cursor }
2711
+ });
2712
+ }
2616
2713
  /**
2617
2714
  * `POST /v1/credits/model-costs` → per-identifier credit cost, for editor
2618
2715
  * cost previews. Capped at the first {@link MODEL_COSTS_LIMIT} identifiers
@@ -3955,6 +4052,13 @@ var WorkspacesResource = class {
3955
4052
  return this.client.requestText("GET", `/v1/workspaces/${encodeURIComponent(id)}/usage`, { query: { ...opts, format: "csv" } });
3956
4053
  }
3957
4054
  };
4055
+ function tightenBody(input) {
4056
+ const { mediaUrl, ...rest } = input;
4057
+ return { mediaUrls: [mediaUrl], ...Object.fromEntries(Object.entries(rest).filter(([, v]) => v !== void 0)) };
4058
+ }
4059
+ function idempotencyHeaders(options) {
4060
+ return options?.idempotencyKey ? { headers: { "Idempotency-Key": options.idempotencyKey } } : {};
4061
+ }
3958
4062
  var EditResource = class {
3959
4063
  constructor(client) {
3960
4064
  this.client = client;
@@ -4014,6 +4118,42 @@ var EditResource = class {
4014
4118
  }
4015
4119
  });
4016
4120
  }
4121
+ /**
4122
+ * Tighten Episode (`POST /v1/tighten-episode`): tighten a podcast recording
4123
+ * in one call — transcribe, cut the silences and filler, render, with
4124
+ * optional captions, music and framing. Answers the run's job to poll; its
4125
+ * `output_data` holds the episode. The run is priced as its steps at their own
4126
+ * rates plus the listed per-run fee. Quote it first with
4127
+ * {@link estimateTightenEpisode}.
4128
+ */
4129
+ tightenEpisode(input, options) {
4130
+ return this.client.request("POST", "/v1/tighten-episode", { body: tightenBody(input), ...idempotencyHeaders(options) });
4131
+ }
4132
+ /**
4133
+ * What a Tighten Episode run is estimated at (`POST /v1/tighten-episode/estimate`):
4134
+ * its steps at their own rates plus its per-run fee. Nothing is created or
4135
+ * charged. The estimate leans high: the render is priced at the recording's
4136
+ * full length, while the charge follows the minutes actually rendered.
4137
+ */
4138
+ estimateTightenEpisode(input) {
4139
+ return this.client.request("POST", "/v1/tighten-episode/estimate", { body: tightenBody(input) });
4140
+ }
4141
+ /**
4142
+ * Continue a Tighten Episode run as a new job (`POST /v1/tighten-episode/continue`):
4143
+ * `"from-failed"` keeps the steps that finished and runs the rest (the fee is
4144
+ * held again; the failed run's was refunded); `"render-final"` renders the
4145
+ * full-quality episode after a review-on preview, with the preview's
4146
+ * settings and no fee. A refusal that names another job
4147
+ * (`already_running`, `continuation_superseded`,
4148
+ * `render_final_already_rendered`) throws a `ContinuationRefusedError`
4149
+ * carrying that `jobId`.
4150
+ */
4151
+ continueUseCase(input, options) {
4152
+ return this.client.request("POST", "/v1/tighten-episode/continue", {
4153
+ body: { jobId: input.jobId, mode: input.mode, ...input.editedEdl !== void 0 ? { editedEdl: input.editedEdl } : {} },
4154
+ ...idempotencyHeaders(options)
4155
+ });
4156
+ }
4017
4157
  /**
4018
4158
  * Plan a transcript-driven cut (`POST /v1/edit-plan`). Reads a timed
4019
4159
  * transcript (plus optional silence ranges) and the media sources, and plans
@@ -4026,12 +4166,12 @@ var EditResource = class {
4026
4166
  * on nodaro.ai it runs directly.
4027
4167
  */
4028
4168
  editPlan(input) {
4029
- const planned = shared.resolveEditPlanSources(input.sources, {
4169
+ const planned = edl.resolveEditPlanSources(input.sources, {
4030
4170
  offsets: input.offsets,
4031
4171
  transcriptSourceId: input.transcriptSourceId
4032
4172
  });
4033
4173
  if (!planned.ok) {
4034
- const message = planned.issues.map((issue) => shared.describeAudioSyncOffsetIssue(issue)).join("; ");
4174
+ const message = planned.issues.map((issue) => edl.describeAudioSyncOffsetIssue(issue)).join("; ");
4035
4175
  return Promise.reject(new NodaroError(`editPlan: ${message}`, "edit_plan_sources", 400));
4036
4176
  }
4037
4177
  const transcript = planned.transcriptSourceId ? { ...input.transcript, sourceId: planned.transcriptSourceId } : input.transcript;
@@ -4061,7 +4201,7 @@ var EditResource = class {
4061
4201
  * a {@link NodaroError} (`code: "no_speakers"`) before any request or charge.
4062
4202
  */
4063
4203
  cameraSwitch(input) {
4064
- if (shared.transcriptSpeakerLabels(input.transcript).length === 0) {
4204
+ if (edl.transcriptSpeakerLabels(input.transcript).length === 0) {
4065
4205
  return Promise.reject(new NodaroError(
4066
4206
  "cameraSwitch: the transcript has no speaker labels \u2014 transcribe with speaker detection on",
4067
4207
  "no_speakers",
@@ -4090,11 +4230,11 @@ var EditResource = class {
4090
4230
  * clipping straddlers. Runs `@nodaro/shared`'s canonical
4091
4231
  * `remapTranscriptThroughEdl`, the same remap `applyEdl` performs server-side.
4092
4232
  */
4093
- remapTranscript(edl, transcript) {
4094
- return shared.remapTranscriptThroughEdl(edl, transcript);
4233
+ remapTranscript(edl$1, transcript) {
4234
+ return edl.remapTranscriptThroughEdl(edl$1, transcript);
4095
4235
  }
4096
4236
  };
4097
- var SDK_VERSION = "2.26.0" ;
4237
+ var SDK_VERSION = "2.28.0" ;
4098
4238
  var CLIENT_HEADER = "X-Nodaro-Client";
4099
4239
  var isBrowser = () => typeof window !== "undefined" && typeof window.document !== "undefined";
4100
4240
  var NodaroClient = class _NodaroClient {
@@ -4117,6 +4257,8 @@ var NodaroClient = class _NodaroClient {
4117
4257
  }
4118
4258
  workflows;
4119
4259
  projects;
4260
+ /** Generation sessions inside projects (Create Image / Video / Music). */
4261
+ sessions;
4120
4262
  jobs;
4121
4263
  videoPro;
4122
4264
  executions;
@@ -4168,6 +4310,7 @@ var NodaroClient = class _NodaroClient {
4168
4310
  this.sendClientHeader = opts.clientLabel !== void 0 || !isBrowser();
4169
4311
  this.workflows = new WorkflowsResource(this);
4170
4312
  this.projects = new ProjectsResource(this);
4313
+ this.sessions = new SessionsResource(this);
4171
4314
  this.jobs = new JobsResource(this);
4172
4315
  this.videoPro = new VideoProResource(this);
4173
4316
  this.executions = new ExecutionsResource(this);
@@ -4245,7 +4388,7 @@ var NodaroClient = class _NodaroClient {
4245
4388
  ...this.sendClientHeader ? { [CLIENT_HEADER]: this.clientLabel } : {},
4246
4389
  // Before per-request headers: a resource that needs to reach outside
4247
4390
  // this client's workspace says so explicitly and wins.
4248
- ...this.workspaceId ? { [shared.WORKSPACE_HEADER]: this.workspaceId } : {},
4391
+ ...this.workspaceId ? { [organizations.WORKSPACE_HEADER]: this.workspaceId } : {},
4249
4392
  ...options.headers ?? {}
4250
4393
  };
4251
4394
  if (token) headers["Authorization"] = `Bearer ${token}`;
@@ -4363,105 +4506,105 @@ function supabaseAuth(supabase) {
4363
4506
  };
4364
4507
  }
4365
4508
 
4366
- Object.defineProperty(exports, "CHARACTER_ASPECT_DEFAULTS", {
4509
+ Object.defineProperty(exports, "OUTPUT_BEARING_NODE_STATUSES", {
4367
4510
  enumerable: true,
4368
- get: function () { return shared.CHARACTER_ASPECT_DEFAULTS; }
4511
+ get: function () { return workflow.OUTPUT_BEARING_NODE_STATUSES; }
4369
4512
  });
4370
- Object.defineProperty(exports, "CHARACTER_ASPECT_OPTIONS", {
4513
+ Object.defineProperty(exports, "nodeStateMayCarryOutput", {
4371
4514
  enumerable: true,
4372
- get: function () { return shared.CHARACTER_ASPECT_OPTIONS; }
4515
+ get: function () { return workflow.nodeStateMayCarryOutput; }
4373
4516
  });
4374
- Object.defineProperty(exports, "CHARACTER_STYLES", {
4517
+ Object.defineProperty(exports, "PROMPT_PREFIX_KEY", {
4375
4518
  enumerable: true,
4376
- get: function () { return shared.CHARACTER_STYLES; }
4519
+ get: function () { return nodes.PROMPT_PREFIX_KEY; }
4377
4520
  });
4378
- Object.defineProperty(exports, "CREATURE_ASPECT_DEFAULTS", {
4521
+ Object.defineProperty(exports, "PROMPT_SUFFIX_KEY", {
4379
4522
  enumerable: true,
4380
- get: function () { return shared.OBJECT_ASPECT_DEFAULTS; }
4523
+ get: function () { return nodes.PROMPT_SUFFIX_KEY; }
4381
4524
  });
4382
- Object.defineProperty(exports, "CREATURE_ASPECT_OPTIONS", {
4525
+ Object.defineProperty(exports, "PEOPLE", {
4383
4526
  enumerable: true,
4384
- get: function () { return shared.OBJECT_ASPECT_OPTIONS; }
4527
+ get: function () { return person.PEOPLE; }
4385
4528
  });
4386
- Object.defineProperty(exports, "CREATURE_ATTACH_COLUMNS", {
4529
+ Object.defineProperty(exports, "PERSON_DIMENSION_LABELS", {
4387
4530
  enumerable: true,
4388
- get: function () { return shared.CREATURE_ATTACH_COLUMNS; }
4531
+ get: function () { return person.PERSON_DIMENSION_LABELS; }
4389
4532
  });
4390
- Object.defineProperty(exports, "LOCATION_ASSET_TYPES", {
4533
+ Object.defineProperty(exports, "PERSON_DIMENSION_ORDER", {
4391
4534
  enumerable: true,
4392
- get: function () { return shared.LOCATION_ASSET_TYPES; }
4535
+ get: function () { return person.PERSON_DIMENSION_ORDER; }
4393
4536
  });
4394
- Object.defineProperty(exports, "LOCATION_ATTACH_COLUMNS", {
4537
+ Object.defineProperty(exports, "buildPersonHints", {
4395
4538
  enumerable: true,
4396
- get: function () { return shared.LOCATION_ATTACH_COLUMNS; }
4539
+ get: function () { return person.buildPersonHints; }
4397
4540
  });
4398
- Object.defineProperty(exports, "OBJECT_ASPECT_DEFAULTS", {
4541
+ Object.defineProperty(exports, "CHARACTER_ASPECT_DEFAULTS", {
4399
4542
  enumerable: true,
4400
- get: function () { return shared.OBJECT_ASPECT_DEFAULTS; }
4543
+ get: function () { return entities.CHARACTER_ASPECT_DEFAULTS; }
4401
4544
  });
4402
- Object.defineProperty(exports, "OBJECT_ASPECT_OPTIONS", {
4545
+ Object.defineProperty(exports, "CHARACTER_ASPECT_OPTIONS", {
4403
4546
  enumerable: true,
4404
- get: function () { return shared.OBJECT_ASPECT_OPTIONS; }
4547
+ get: function () { return entities.CHARACTER_ASPECT_OPTIONS; }
4405
4548
  });
4406
- Object.defineProperty(exports, "OBJECT_ASSET_TYPES", {
4549
+ Object.defineProperty(exports, "CHARACTER_STYLES", {
4407
4550
  enumerable: true,
4408
- get: function () { return shared.OBJECT_ASSET_TYPES; }
4551
+ get: function () { return entities.CHARACTER_STYLES; }
4409
4552
  });
4410
- Object.defineProperty(exports, "OBJECT_ATTACH_COLUMNS", {
4553
+ Object.defineProperty(exports, "CREATURE_ASPECT_DEFAULTS", {
4411
4554
  enumerable: true,
4412
- get: function () { return shared.OBJECT_ATTACH_COLUMNS; }
4555
+ get: function () { return entities.OBJECT_ASPECT_DEFAULTS; }
4413
4556
  });
4414
- Object.defineProperty(exports, "OUTPUT_BEARING_NODE_STATUSES", {
4557
+ Object.defineProperty(exports, "CREATURE_ASPECT_OPTIONS", {
4415
4558
  enumerable: true,
4416
- get: function () { return shared.OUTPUT_BEARING_NODE_STATUSES; }
4559
+ get: function () { return entities.OBJECT_ASPECT_OPTIONS; }
4417
4560
  });
4418
- Object.defineProperty(exports, "PROMPT_PREFIX_KEY", {
4561
+ Object.defineProperty(exports, "CREATURE_ATTACH_COLUMNS", {
4419
4562
  enumerable: true,
4420
- get: function () { return shared.PROMPT_PREFIX_KEY; }
4563
+ get: function () { return entities.CREATURE_ATTACH_COLUMNS; }
4421
4564
  });
4422
- Object.defineProperty(exports, "PROMPT_SUFFIX_KEY", {
4565
+ Object.defineProperty(exports, "LOCATION_ASSET_TYPES", {
4423
4566
  enumerable: true,
4424
- get: function () { return shared.PROMPT_SUFFIX_KEY; }
4567
+ get: function () { return entities.LOCATION_ASSET_TYPES; }
4425
4568
  });
4426
- Object.defineProperty(exports, "RECAST_SEGMENT_PACKS", {
4569
+ Object.defineProperty(exports, "LOCATION_ATTACH_COLUMNS", {
4427
4570
  enumerable: true,
4428
- get: function () { return shared.RECAST_SEGMENT_PACKS; }
4571
+ get: function () { return entities.LOCATION_ATTACH_COLUMNS; }
4429
4572
  });
4430
- Object.defineProperty(exports, "SURROUND_DIRECTIONS", {
4573
+ Object.defineProperty(exports, "OBJECT_ASPECT_DEFAULTS", {
4431
4574
  enumerable: true,
4432
- get: function () { return shared.SURROUND_DIRECTIONS; }
4575
+ get: function () { return entities.OBJECT_ASPECT_DEFAULTS; }
4433
4576
  });
4434
- Object.defineProperty(exports, "USAGE_GROUP_BYS", {
4577
+ Object.defineProperty(exports, "OBJECT_ASPECT_OPTIONS", {
4435
4578
  enumerable: true,
4436
- get: function () { return shared.USAGE_GROUP_BYS; }
4579
+ get: function () { return entities.OBJECT_ASPECT_OPTIONS; }
4437
4580
  });
4438
- Object.defineProperty(exports, "WORKSPACE_HEADER", {
4581
+ Object.defineProperty(exports, "OBJECT_ASSET_TYPES", {
4439
4582
  enumerable: true,
4440
- get: function () { return shared.WORKSPACE_HEADER; }
4583
+ get: function () { return entities.OBJECT_ASSET_TYPES; }
4441
4584
  });
4442
- Object.defineProperty(exports, "nodeStateMayCarryOutput", {
4585
+ Object.defineProperty(exports, "OBJECT_ATTACH_COLUMNS", {
4443
4586
  enumerable: true,
4444
- get: function () { return shared.nodeStateMayCarryOutput; }
4587
+ get: function () { return entities.OBJECT_ATTACH_COLUMNS; }
4445
4588
  });
4446
- Object.defineProperty(exports, "unwrapEditPlanOutput", {
4589
+ Object.defineProperty(exports, "SURROUND_DIRECTIONS", {
4447
4590
  enumerable: true,
4448
- get: function () { return shared.unwrapEditPlanOutput; }
4591
+ get: function () { return entities.SURROUND_DIRECTIONS; }
4449
4592
  });
4450
- Object.defineProperty(exports, "PEOPLE", {
4593
+ Object.defineProperty(exports, "unwrapEditPlanOutput", {
4451
4594
  enumerable: true,
4452
- get: function () { return prompts.PEOPLE; }
4595
+ get: function () { return edl.unwrapEditPlanOutput; }
4453
4596
  });
4454
- Object.defineProperty(exports, "PERSON_DIMENSION_LABELS", {
4597
+ Object.defineProperty(exports, "USAGE_GROUP_BYS", {
4455
4598
  enumerable: true,
4456
- get: function () { return prompts.PERSON_DIMENSION_LABELS; }
4599
+ get: function () { return organizations.USAGE_GROUP_BYS; }
4457
4600
  });
4458
- Object.defineProperty(exports, "PERSON_DIMENSION_ORDER", {
4601
+ Object.defineProperty(exports, "WORKSPACE_HEADER", {
4459
4602
  enumerable: true,
4460
- get: function () { return prompts.PERSON_DIMENSION_ORDER; }
4603
+ get: function () { return organizations.WORKSPACE_HEADER; }
4461
4604
  });
4462
- Object.defineProperty(exports, "buildPersonHints", {
4605
+ Object.defineProperty(exports, "RECAST_SEGMENT_PACKS", {
4463
4606
  enumerable: true,
4464
- get: function () { return prompts.buildPersonHints; }
4607
+ get: function () { return apps.RECAST_SEGMENT_PACKS; }
4465
4608
  });
4466
4609
  exports.AppsResource = AppsResource;
4467
4610
  exports.AudioResource = AudioResource;
@@ -4472,6 +4615,7 @@ exports.CharactersResource = CharactersResource;
4472
4615
  exports.CollectionsResource = CollectionsResource;
4473
4616
  exports.CommunityResource = CommunityResource;
4474
4617
  exports.CompetitorsResource = CompetitorsResource;
4618
+ exports.ContinuationRefusedError = ContinuationRefusedError;
4475
4619
  exports.CopilotResource = CopilotResource;
4476
4620
  exports.CreaturesResource = CreaturesResource;
4477
4621
  exports.CreditsResource = CreditsResource;
@@ -4509,6 +4653,7 @@ exports.ReduceResource = ReduceResource;
4509
4653
  exports.SCENE3D_DELIVERY_ASSET_USAGE = SCENE3D_DELIVERY_ASSET_USAGE;
4510
4654
  exports.SavedPostsResource = SavedPostsResource;
4511
4655
  exports.Scene3DResource = Scene3DResource;
4656
+ exports.SessionsResource = SessionsResource;
4512
4657
  exports.ShotsResource = ShotsResource;
4513
4658
  exports.StaticTokenAuth = StaticTokenAuth;
4514
4659
  exports.StorageExceededError = StorageExceededError;