@nodaro/sdk 2.45.1 → 2.47.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 (95) hide show
  1. package/dist/chunk-6NTKEXT5.js +3 -0
  2. package/dist/chunk-6NTKEXT5.js.map +1 -0
  3. package/dist/{chunk-34JMD6ZO.cjs → chunk-7LTVS75S.cjs} +36 -12
  4. package/dist/chunk-7LTVS75S.cjs.map +1 -0
  5. package/dist/{chunk-J6FHBQ4Z.cjs → chunk-DIF7A5OH.cjs} +2 -2
  6. package/dist/chunk-DIF7A5OH.cjs.map +1 -0
  7. package/dist/{chunk-3Y5TV37H.js → chunk-FCYN4N3M.js} +3 -3
  8. package/dist/{chunk-3Y5TV37H.js.map → chunk-FCYN4N3M.js.map} +1 -1
  9. package/dist/{chunk-55ZX6TE3.cjs → chunk-GDDV5U32.cjs} +6 -6
  10. package/dist/chunk-GDDV5U32.cjs.map +1 -0
  11. package/dist/{chunk-JB4GVP4Q.js → chunk-GW76IRQD.js} +2 -2
  12. package/dist/{chunk-JB4GVP4Q.js.map → chunk-GW76IRQD.js.map} +1 -1
  13. package/dist/{chunk-RQY2WJD3.js → chunk-I7AHLDXV.js} +13 -9
  14. package/dist/chunk-I7AHLDXV.js.map +1 -0
  15. package/dist/chunk-KBHDUHKM.js +21 -0
  16. package/dist/chunk-KBHDUHKM.js.map +1 -0
  17. package/dist/{chunk-WFWZBYBS.cjs → chunk-MYTMNPCP.cjs} +3 -3
  18. package/dist/{chunk-WFWZBYBS.cjs.map → chunk-MYTMNPCP.cjs.map} +1 -1
  19. package/dist/{chunk-A7HOOWKS.cjs → chunk-NP6KDFIJ.cjs} +19 -15
  20. package/dist/chunk-NP6KDFIJ.cjs.map +1 -0
  21. package/dist/{chunk-HKDIIFG2.js → chunk-OWG3XAHQ.js} +6 -6
  22. package/dist/chunk-OWG3XAHQ.js.map +1 -0
  23. package/dist/{chunk-6MQ2LTJZ.js → chunk-PQHZUWSL.js} +36 -12
  24. package/dist/chunk-PQHZUWSL.js.map +1 -0
  25. package/dist/{chunk-5IXZLQNT.cjs → chunk-TK2CEVSK.cjs} +2 -2
  26. package/dist/{chunk-5IXZLQNT.cjs.map → chunk-TK2CEVSK.cjs.map} +1 -1
  27. package/dist/chunk-UANHMQ3A.cjs +4 -0
  28. package/dist/chunk-UANHMQ3A.cjs.map +1 -0
  29. package/dist/{chunk-PEMLIAPZ.cjs → chunk-WMT7HEBZ.cjs} +40 -7
  30. package/dist/chunk-WMT7HEBZ.cjs.map +1 -0
  31. package/dist/{chunk-Y6VDCZPB.js → chunk-WS4ZQ4AA.js} +40 -7
  32. package/dist/chunk-WS4ZQ4AA.js.map +1 -0
  33. package/dist/{chunk-CKHCSZCV.js → chunk-XILR6TFO.js} +2 -2
  34. package/dist/chunk-XILR6TFO.js.map +1 -0
  35. package/dist/chunk-XKDVEQVD.cjs +23 -0
  36. package/dist/chunk-XKDVEQVD.cjs.map +1 -0
  37. package/dist/entries/cast-swap.cjs +2 -2
  38. package/dist/entries/cast-swap.d.cts +126 -146
  39. package/dist/entries/cast-swap.d.ts +126 -146
  40. package/dist/entries/cast-swap.js +1 -1
  41. package/dist/entries/characters.d.cts +1 -1
  42. package/dist/entries/characters.d.ts +1 -1
  43. package/dist/entries/client.cjs +14 -13
  44. package/dist/entries/client.d.cts +4 -1
  45. package/dist/entries/client.d.ts +4 -1
  46. package/dist/entries/client.js +9 -8
  47. package/dist/entries/core.cjs +5 -5
  48. package/dist/entries/core.js +1 -1
  49. package/dist/entries/creatures.d.cts +1 -1
  50. package/dist/entries/creatures.d.ts +1 -1
  51. package/dist/entries/jobs.cjs +2 -2
  52. package/dist/entries/jobs.d.cts +57 -8
  53. package/dist/entries/jobs.d.ts +57 -8
  54. package/dist/entries/jobs.js +1 -1
  55. package/dist/entries/locations.d.cts +1 -1
  56. package/dist/entries/locations.d.ts +1 -1
  57. package/dist/entries/nodes.cjs +2 -2
  58. package/dist/entries/nodes.d.cts +1 -1
  59. package/dist/entries/nodes.d.ts +1 -1
  60. package/dist/entries/nodes.js +1 -1
  61. package/dist/entries/objects.d.cts +1 -1
  62. package/dist/entries/objects.d.ts +1 -1
  63. package/dist/entries/scene3d.d.cts +2 -2
  64. package/dist/entries/scene3d.d.ts +2 -2
  65. package/dist/entries/sessions.cjs +2 -2
  66. package/dist/entries/sessions.d.cts +58 -8
  67. package/dist/entries/sessions.d.ts +58 -8
  68. package/dist/entries/sessions.js +1 -1
  69. package/dist/entries/trash.cjs +13 -0
  70. package/dist/entries/trash.cjs.map +1 -0
  71. package/dist/entries/trash.d.cts +71 -0
  72. package/dist/entries/trash.d.ts +71 -0
  73. package/dist/entries/trash.js +4 -0
  74. package/dist/entries/trash.js.map +1 -0
  75. package/dist/entries/trends.cjs +2 -2
  76. package/dist/entries/trends.d.cts +30 -21
  77. package/dist/entries/trends.d.ts +30 -21
  78. package/dist/entries/trends.js +1 -1
  79. package/dist/index.cjs +30 -24
  80. package/dist/index.d.cts +5 -4
  81. package/dist/index.d.ts +5 -4
  82. package/dist/index.js +11 -9
  83. package/dist/{nodes-MThDit8l.d.ts → nodes-C9j0PFto.d.ts} +11 -1
  84. package/dist/{nodes-Szl6HrZ_.d.cts → nodes-DGIefTze.d.cts} +11 -1
  85. package/package.json +7 -2
  86. package/dist/chunk-34JMD6ZO.cjs.map +0 -1
  87. package/dist/chunk-55ZX6TE3.cjs.map +0 -1
  88. package/dist/chunk-6MQ2LTJZ.js.map +0 -1
  89. package/dist/chunk-A7HOOWKS.cjs.map +0 -1
  90. package/dist/chunk-CKHCSZCV.js.map +0 -1
  91. package/dist/chunk-HKDIIFG2.js.map +0 -1
  92. package/dist/chunk-J6FHBQ4Z.cjs.map +0 -1
  93. package/dist/chunk-PEMLIAPZ.cjs.map +0 -1
  94. package/dist/chunk-RQY2WJD3.js.map +0 -1
  95. package/dist/chunk-Y6VDCZPB.js.map +0 -1
@@ -1,17 +1,18 @@
1
- export { NodaroClient, createClient } from '../chunk-RQY2WJD3.js';
1
+ export { NodaroClient, createClient } from '../chunk-I7AHLDXV.js';
2
+ import '../chunk-WY4QRJZW.js';
2
3
  import '../chunk-ERLXU47J.js';
3
4
  import '../chunk-T7N7DFQJ.js';
4
5
  import '../chunk-YN6CBIIB.js';
5
6
  import '../chunk-33HT46A3.js';
6
7
  import '../chunk-Z5GLY4R3.js';
7
8
  import '../chunk-NNHWH7ER.js';
8
- import '../chunk-Y6VDCZPB.js';
9
+ import '../chunk-WS4ZQ4AA.js';
9
10
  import '../chunk-WVFAQBS7.js';
10
11
  import '../chunk-AUKHMT53.js';
11
12
  import '../chunk-M7VSFZMV.js';
12
- import '../chunk-CKHCSZCV.js';
13
+ import '../chunk-KBHDUHKM.js';
14
+ import '../chunk-XILR6TFO.js';
13
15
  import '../chunk-HPXE3NZW.js';
14
- import '../chunk-WY4QRJZW.js';
15
16
  import '../chunk-WEQWU2IC.js';
16
17
  import '../chunk-KFZOJBI5.js';
17
18
  import '../chunk-K4RQOSJH.js';
@@ -24,14 +25,14 @@ import '../chunk-BQAW4RX2.js';
24
25
  import '../chunk-Y6V6CBY5.js';
25
26
  import '../chunk-YVU2M7MI.js';
26
27
  import '../chunk-JTAW54UM.js';
27
- import '../chunk-JB4GVP4Q.js';
28
+ import '../chunk-GW76IRQD.js';
28
29
  import '../chunk-Z7LGWNI7.js';
29
30
  import '../chunk-7LSFG2AF.js';
30
31
  import '../chunk-ALSLZG3U.js';
31
32
  import '../chunk-RBX3QTKB.js';
32
33
  import '../chunk-Z3ZKFI2M.js';
33
34
  import '../chunk-JDEZHITT.js';
34
- import '../chunk-6MQ2LTJZ.js';
35
+ import '../chunk-PQHZUWSL.js';
35
36
  import '../chunk-P6E4QDJN.js';
36
37
  import '../chunk-E37CVHWW.js';
37
38
  import '../chunk-TVENC6PH.js';
@@ -40,7 +41,7 @@ import '../chunk-SFB4YLCS.js';
40
41
  import '../chunk-BU5A6K4C.js';
41
42
  import '../chunk-D2ILCSOQ.js';
42
43
  import '../chunk-7CUWAVWB.js';
43
- export { CallbackAuth, StaticTokenAuth, supabaseAuth } from '../chunk-3Y5TV37H.js';
44
+ export { CallbackAuth, StaticTokenAuth, supabaseAuth } from '../chunk-FCYN4N3M.js';
44
45
  import '../chunk-L6T44A3G.js';
45
46
  import '../chunk-CK3AMMSC.js';
46
47
  import '../chunk-5MOJSYHI.js';
@@ -48,7 +49,7 @@ import '../chunk-65E3JBFZ.js';
48
49
  import '../chunk-7LODCIQK.js';
49
50
  import '../chunk-3QFTP5P5.js';
50
51
  import '../chunk-J4WFSKY6.js';
51
- import '../chunk-HKDIIFG2.js';
52
+ import '../chunk-OWG3XAHQ.js';
52
53
  import '../chunk-KG4R454Z.js';
53
54
  import '../chunk-EJSGJDZY.js';
54
55
  //# sourceMappingURL=client.js.map
@@ -1,26 +1,26 @@
1
1
  'use strict';
2
2
 
3
3
  require('../chunk-X7XP5WBP.cjs');
4
- var chunkWFWZBYBS_cjs = require('../chunk-WFWZBYBS.cjs');
4
+ var chunkMYTMNPCP_cjs = require('../chunk-MYTMNPCP.cjs');
5
5
  require('../chunk-FM2KM5TY.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "CallbackAuth", {
10
10
  enumerable: true,
11
- get: function () { return chunkWFWZBYBS_cjs.CallbackAuth; }
11
+ get: function () { return chunkMYTMNPCP_cjs.CallbackAuth; }
12
12
  });
13
13
  Object.defineProperty(exports, "NodaroClientCore", {
14
14
  enumerable: true,
15
- get: function () { return chunkWFWZBYBS_cjs.NodaroClientCore; }
15
+ get: function () { return chunkMYTMNPCP_cjs.NodaroClientCore; }
16
16
  });
17
17
  Object.defineProperty(exports, "StaticTokenAuth", {
18
18
  enumerable: true,
19
- get: function () { return chunkWFWZBYBS_cjs.StaticTokenAuth; }
19
+ get: function () { return chunkMYTMNPCP_cjs.StaticTokenAuth; }
20
20
  });
21
21
  Object.defineProperty(exports, "supabaseAuth", {
22
22
  enumerable: true,
23
- get: function () { return chunkWFWZBYBS_cjs.supabaseAuth; }
23
+ get: function () { return chunkMYTMNPCP_cjs.supabaseAuth; }
24
24
  });
25
25
  //# sourceMappingURL=core.cjs.map
26
26
  //# sourceMappingURL=core.cjs.map
@@ -1,5 +1,5 @@
1
1
  import '../chunk-AUDHV3OE.js';
2
- export { CallbackAuth, NodaroClientCore, StaticTokenAuth, supabaseAuth } from '../chunk-3Y5TV37H.js';
2
+ export { CallbackAuth, NodaroClientCore, StaticTokenAuth, supabaseAuth } from '../chunk-FCYN4N3M.js';
3
3
  import '../chunk-L6T44A3G.js';
4
4
  //# sourceMappingURL=core.js.map
5
5
  //# sourceMappingURL=core.js.map
@@ -2,7 +2,7 @@ import { CreatureAttachColumn, ObjectAspectRatio } from '@nodaro/shared/entities
2
2
  export { OBJECT_ASPECT_DEFAULTS as CREATURE_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS as CREATURE_ASPECT_OPTIONS, CREATURE_ATTACH_COLUMNS, ObjectAspectRatio as CreatureAspectRatio, CreatureAttachColumn } from '@nodaro/shared/entities';
3
3
  import { TtsProvider } from '@nodaro/shared/models';
4
4
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.cjs';
5
- import { l as GenerationSessionParams } from '../nodes-Szl6HrZ_.cjs';
5
+ import { l as GenerationSessionParams } from '../nodes-DGIefTze.cjs';
6
6
  import '@nodaro/shared/apps';
7
7
  import '@nodaro/shared/organizations';
8
8
  import '@nodaro/shared/types';
@@ -2,7 +2,7 @@ import { CreatureAttachColumn, ObjectAspectRatio } from '@nodaro/shared/entities
2
2
  export { OBJECT_ASPECT_DEFAULTS as CREATURE_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS as CREATURE_ASPECT_OPTIONS, CREATURE_ATTACH_COLUMNS, ObjectAspectRatio as CreatureAspectRatio, CreatureAttachColumn } from '@nodaro/shared/entities';
3
3
  import { TtsProvider } from '@nodaro/shared/models';
4
4
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.js';
5
- import { l as GenerationSessionParams } from '../nodes-MThDit8l.js';
5
+ import { l as GenerationSessionParams } from '../nodes-C9j0PFto.js';
6
6
  import '@nodaro/shared/apps';
7
7
  import '@nodaro/shared/organizations';
8
8
  import '@nodaro/shared/types';
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  require('../chunk-EHRWTYGR.cjs');
4
- var chunk34JMD6ZO_cjs = require('../chunk-34JMD6ZO.cjs');
4
+ var chunk7LTVS75S_cjs = require('../chunk-7LTVS75S.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "JobsResource", {
9
9
  enumerable: true,
10
- get: function () { return chunk34JMD6ZO_cjs.JobsResource; }
10
+ get: function () { return chunk7LTVS75S_cjs.JobsResource; }
11
11
  });
12
12
  //# sourceMappingURL=jobs.cjs.map
13
13
  //# sourceMappingURL=jobs.cjs.map
@@ -160,6 +160,17 @@ interface Job {
160
160
  /** The generation session this job was born in (the `sessionId` sent with
161
161
  * the generation request), or null. See `client.sessions`. */
162
162
  session_id?: string | null;
163
+ /**
164
+ * With `list({ withSessions: true })`: every session that holds the job now,
165
+ * each linkable — empty when it is in no session (General). Absent otherwise.
166
+ */
167
+ sessions?: JobSessionRef[];
168
+ /**
169
+ * When the job was deleted, on a job read from the Trash
170
+ * (`client.trash.list()`). A deleted job is left out of every other read, so
171
+ * this is otherwise absent or `null`.
172
+ */
173
+ deleted_at?: string | null;
163
174
  /**
164
175
  * Whether the job's owner favorited it (`client.gallery.toggleFavorite`).
165
176
  * Returned by `get()` and `list()`. Absent from an older server, and when
@@ -191,6 +202,13 @@ type JobSource = "internal" | "mcp" | "app" | "cli" | "sdk" | "extension" | "web
191
202
  interface DeleteJobResult {
192
203
  success: true;
193
204
  }
205
+ /** A session that holds a job now (`Job.sessions`). */
206
+ interface JobSessionRef {
207
+ id: string;
208
+ title: string | null;
209
+ /** The session's project, or `null` when it has none. */
210
+ projectId: string | null;
211
+ }
194
212
  interface ListJobsParams {
195
213
  /** One status or several (a job matching any of them). An unknown status is a 400. */
196
214
  status?: JobStatus | readonly JobStatus[];
@@ -208,6 +226,19 @@ interface ListJobsParams {
208
226
  rating?: JobRatingFilter;
209
227
  /** The jobs of one generate-image batch (`count` / `models`) — its `batchId`. */
210
228
  batchId?: string;
229
+ /**
230
+ * The jobs a session of this project holds now — or, `"none"`, a session
231
+ * with no project. Each job once, however many sessions hold it. Not with
232
+ * `inSession: false`.
233
+ */
234
+ projectId?: string | "none";
235
+ /**
236
+ * `false`: the jobs no session holds now (General), whatever session they
237
+ * were born in. `true`: the jobs at least one session holds.
238
+ */
239
+ inSession?: boolean;
240
+ /** `true`: each job carries `sessions`, the sessions that hold it now. */
241
+ withSessions?: boolean;
211
242
  /** Page size, 1–100 (server default 50). */
212
243
  limit?: number;
213
244
  /** The previous page's `next`. */
@@ -279,8 +310,11 @@ declare class JobsResource {
279
310
  * a client app lists its runs with `{ type: "llm-structured", origin: "studio" }`.
280
311
  * `status` and `type` take one value or a list; `favorited` and `rating`
281
312
  * filter on your own marks, `source` on the surface that created the job.
282
- * Every filter combines with AND, and each job
283
- * carries `favorited` and `rating`.
313
+ * `projectId` / `inSession` filter on where the job is now (a project's
314
+ * sessions, or General), and `withSessions` says which sessions each job is
315
+ * in — for "everything in this project". Every filter combines with AND,
316
+ * and each job carries `favorited` and `rating`. A deleted job is never
317
+ * listed: read the Trash with `client.trash.list()`.
284
318
  */
285
319
  list(params?: ListJobsParams): Promise<ListJobsPage>;
286
320
  /**
@@ -322,12 +356,27 @@ declare class JobsResource {
322
356
  */
323
357
  cancel(id: string): Promise<CancelJobResult>;
324
358
  /**
325
- * Delete a job and the private media it produced. Server route is
326
- * `DELETE /v1/jobs/:jobId`. Only the job's owner (or an admin) may delete it;
327
- * a job that is still running is deleted as-is — cancel it first when its
328
- * worker should stop ({@link cancel}).
359
+ * Delete a job: it goes to the Trash (`client.trash.list()`). It is left out
360
+ * of every read from then on, stays restorable for 30 days ({@link restore},
361
+ * back into the sessions it was in), and is then deleted for good, as a
362
+ * delete always was (a copy saved to the Library stays). `{ forever: true }` deletes a job already in the Trash for good now;
363
+ * on a live job it fails with a 409 `NodaroError` whose `code` is
364
+ * `"not_in_trash"`. Only the job's owner (or an admin) may delete it; a job
365
+ * that is still running keeps running — cancel it first when its worker
366
+ * should stop ({@link cancel}). Nothing is refunded. OAuth apps need the
367
+ * `assets:write` scope.
329
368
  */
330
- delete(id: string): Promise<DeleteJobResult>;
369
+ delete(id: string, options?: {
370
+ forever?: boolean;
371
+ }): Promise<DeleteJobResult>;
372
+ /**
373
+ * Bring a deleted job back from the Trash: it reappears in every read and in
374
+ * every session it was in. A job that is not in the Trash succeeds too.
375
+ * OAuth apps need the `assets:write` scope.
376
+ */
377
+ restore(id: string): Promise<{
378
+ success: true;
379
+ }>;
331
380
  }
332
381
 
333
- export { type CancelJobResult, type CreditStatus, type CreditsHint, type DeleteJobResult, type InputRefusedHint, type Job, type JobErrorHint, type JobFromUploadParams, type JobRating, type JobRatingFilter, type JobSource, type JobStatus, type JobStatusResult, JobsResource, type ListJobsPage, type ListJobsParams, type PolicyBlockHint, type RateJobResult, type SafetyBlockHint };
382
+ export { type CancelJobResult, type CreditStatus, type CreditsHint, type DeleteJobResult, type InputRefusedHint, type Job, type JobErrorHint, type JobFromUploadParams, type JobRating, type JobRatingFilter, type JobSessionRef, type JobSource, type JobStatus, type JobStatusResult, JobsResource, type ListJobsPage, type ListJobsParams, type PolicyBlockHint, type RateJobResult, type SafetyBlockHint };
@@ -160,6 +160,17 @@ interface Job {
160
160
  /** The generation session this job was born in (the `sessionId` sent with
161
161
  * the generation request), or null. See `client.sessions`. */
162
162
  session_id?: string | null;
163
+ /**
164
+ * With `list({ withSessions: true })`: every session that holds the job now,
165
+ * each linkable — empty when it is in no session (General). Absent otherwise.
166
+ */
167
+ sessions?: JobSessionRef[];
168
+ /**
169
+ * When the job was deleted, on a job read from the Trash
170
+ * (`client.trash.list()`). A deleted job is left out of every other read, so
171
+ * this is otherwise absent or `null`.
172
+ */
173
+ deleted_at?: string | null;
163
174
  /**
164
175
  * Whether the job's owner favorited it (`client.gallery.toggleFavorite`).
165
176
  * Returned by `get()` and `list()`. Absent from an older server, and when
@@ -191,6 +202,13 @@ type JobSource = "internal" | "mcp" | "app" | "cli" | "sdk" | "extension" | "web
191
202
  interface DeleteJobResult {
192
203
  success: true;
193
204
  }
205
+ /** A session that holds a job now (`Job.sessions`). */
206
+ interface JobSessionRef {
207
+ id: string;
208
+ title: string | null;
209
+ /** The session's project, or `null` when it has none. */
210
+ projectId: string | null;
211
+ }
194
212
  interface ListJobsParams {
195
213
  /** One status or several (a job matching any of them). An unknown status is a 400. */
196
214
  status?: JobStatus | readonly JobStatus[];
@@ -208,6 +226,19 @@ interface ListJobsParams {
208
226
  rating?: JobRatingFilter;
209
227
  /** The jobs of one generate-image batch (`count` / `models`) — its `batchId`. */
210
228
  batchId?: string;
229
+ /**
230
+ * The jobs a session of this project holds now — or, `"none"`, a session
231
+ * with no project. Each job once, however many sessions hold it. Not with
232
+ * `inSession: false`.
233
+ */
234
+ projectId?: string | "none";
235
+ /**
236
+ * `false`: the jobs no session holds now (General), whatever session they
237
+ * were born in. `true`: the jobs at least one session holds.
238
+ */
239
+ inSession?: boolean;
240
+ /** `true`: each job carries `sessions`, the sessions that hold it now. */
241
+ withSessions?: boolean;
211
242
  /** Page size, 1–100 (server default 50). */
212
243
  limit?: number;
213
244
  /** The previous page's `next`. */
@@ -279,8 +310,11 @@ declare class JobsResource {
279
310
  * a client app lists its runs with `{ type: "llm-structured", origin: "studio" }`.
280
311
  * `status` and `type` take one value or a list; `favorited` and `rating`
281
312
  * filter on your own marks, `source` on the surface that created the job.
282
- * Every filter combines with AND, and each job
283
- * carries `favorited` and `rating`.
313
+ * `projectId` / `inSession` filter on where the job is now (a project's
314
+ * sessions, or General), and `withSessions` says which sessions each job is
315
+ * in — for "everything in this project". Every filter combines with AND,
316
+ * and each job carries `favorited` and `rating`. A deleted job is never
317
+ * listed: read the Trash with `client.trash.list()`.
284
318
  */
285
319
  list(params?: ListJobsParams): Promise<ListJobsPage>;
286
320
  /**
@@ -322,12 +356,27 @@ declare class JobsResource {
322
356
  */
323
357
  cancel(id: string): Promise<CancelJobResult>;
324
358
  /**
325
- * Delete a job and the private media it produced. Server route is
326
- * `DELETE /v1/jobs/:jobId`. Only the job's owner (or an admin) may delete it;
327
- * a job that is still running is deleted as-is — cancel it first when its
328
- * worker should stop ({@link cancel}).
359
+ * Delete a job: it goes to the Trash (`client.trash.list()`). It is left out
360
+ * of every read from then on, stays restorable for 30 days ({@link restore},
361
+ * back into the sessions it was in), and is then deleted for good, as a
362
+ * delete always was (a copy saved to the Library stays). `{ forever: true }` deletes a job already in the Trash for good now;
363
+ * on a live job it fails with a 409 `NodaroError` whose `code` is
364
+ * `"not_in_trash"`. Only the job's owner (or an admin) may delete it; a job
365
+ * that is still running keeps running — cancel it first when its worker
366
+ * should stop ({@link cancel}). Nothing is refunded. OAuth apps need the
367
+ * `assets:write` scope.
329
368
  */
330
- delete(id: string): Promise<DeleteJobResult>;
369
+ delete(id: string, options?: {
370
+ forever?: boolean;
371
+ }): Promise<DeleteJobResult>;
372
+ /**
373
+ * Bring a deleted job back from the Trash: it reappears in every read and in
374
+ * every session it was in. A job that is not in the Trash succeeds too.
375
+ * OAuth apps need the `assets:write` scope.
376
+ */
377
+ restore(id: string): Promise<{
378
+ success: true;
379
+ }>;
331
380
  }
332
381
 
333
- export { type CancelJobResult, type CreditStatus, type CreditsHint, type DeleteJobResult, type InputRefusedHint, type Job, type JobErrorHint, type JobFromUploadParams, type JobRating, type JobRatingFilter, type JobSource, type JobStatus, type JobStatusResult, JobsResource, type ListJobsPage, type ListJobsParams, type PolicyBlockHint, type RateJobResult, type SafetyBlockHint };
382
+ export { type CancelJobResult, type CreditStatus, type CreditsHint, type DeleteJobResult, type InputRefusedHint, type Job, type JobErrorHint, type JobFromUploadParams, type JobRating, type JobRatingFilter, type JobSessionRef, type JobSource, type JobStatus, type JobStatusResult, JobsResource, type ListJobsPage, type ListJobsParams, type PolicyBlockHint, type RateJobResult, type SafetyBlockHint };
@@ -1,4 +1,4 @@
1
1
  import '../chunk-I3TYBAOX.js';
2
- export { JobsResource } from '../chunk-6MQ2LTJZ.js';
2
+ export { JobsResource } from '../chunk-PQHZUWSL.js';
3
3
  //# sourceMappingURL=jobs.js.map
4
4
  //# sourceMappingURL=jobs.js.map
@@ -1,7 +1,7 @@
1
1
  import { LocationAssetType, CharacterAspectRatio, LocationAttachColumn, SurroundDirection } from '@nodaro/shared/entities';
2
2
  export { LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, LocationAssetType, LocationAttachColumn, SURROUND_DIRECTIONS, SurroundDirection } from '@nodaro/shared/entities';
3
3
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.cjs';
4
- import { l as GenerationSessionParams } from '../nodes-Szl6HrZ_.cjs';
4
+ import { l as GenerationSessionParams } from '../nodes-DGIefTze.cjs';
5
5
  import '@nodaro/shared/apps';
6
6
  import '@nodaro/shared/organizations';
7
7
  import '@nodaro/shared/types';
@@ -1,7 +1,7 @@
1
1
  import { LocationAssetType, CharacterAspectRatio, LocationAttachColumn, SurroundDirection } from '@nodaro/shared/entities';
2
2
  export { LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, LocationAssetType, LocationAttachColumn, SURROUND_DIRECTIONS, SurroundDirection } from '@nodaro/shared/entities';
3
3
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.js';
4
- import { l as GenerationSessionParams } from '../nodes-MThDit8l.js';
4
+ import { l as GenerationSessionParams } from '../nodes-C9j0PFto.js';
5
5
  import '@nodaro/shared/apps';
6
6
  import '@nodaro/shared/organizations';
7
7
  import '@nodaro/shared/types';
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk7CK6I4CT_cjs = require('../chunk-7CK6I4CT.cjs');
4
- var chunk5IXZLQNT_cjs = require('../chunk-5IXZLQNT.cjs');
4
+ var chunkTK2CEVSK_cjs = require('../chunk-TK2CEVSK.cjs');
5
5
  require('../chunk-FM2KM5TY.cjs');
6
6
 
7
7
 
@@ -16,7 +16,7 @@ Object.defineProperty(exports, "PROMPT_SUFFIX_KEY", {
16
16
  });
17
17
  Object.defineProperty(exports, "NodesResource", {
18
18
  enumerable: true,
19
- get: function () { return chunk5IXZLQNT_cjs.NodesResource; }
19
+ get: function () { return chunkTK2CEVSK_cjs.NodesResource; }
20
20
  });
21
21
  //# sourceMappingURL=nodes.cjs.map
22
22
  //# sourceMappingURL=nodes.cjs.map
@@ -4,7 +4,7 @@ export { GeminiOmniVoicePresetId, ImageAspectRatio, ImageEditProvider, ImageEdit
4
4
  export { PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PromptAffixFields } from '@nodaro/shared/nodes';
5
5
  export { SocialPlatform, SocialPost, SocialPostAuthor, SocialPostMedia, SocialPostMetrics, SocialSearchCount, SocialSearchMode, SocialSearchParams, SocialSearchPeriod, SocialSearchSort, SocialSearchVideoKind } from '@nodaro/shared/social';
6
6
  export { GenerateMaskOutput, GenerateMaskRequest, VideoDepthColormap, VideoDepthModelSize, VideoDepthProvider, VideoDepthResolution } from '@nodaro/shared/media';
7
- export { A as AssembleNarratedVideoParams, B as BatchJobOutcome, E as EditImageCommonParams, a as EditImageFromTaskParams, b as EditImageFromUrlParams, c as EditImageParams, G as GenerateImageBatchGroup, e as GenerateImageBatchOutput, f as GenerateImageBatchResult, g as GenerateImageParams, h as GenerateMaskJobOutput, i as GenerateMaskParams, k as GenerateVideoParams, l as GenerationSessionParams, I as ImageJobStarted, m as ImageToImageParams, J as JobOutputImage, N as NodeCategory, n as NodeCreditRate, o as NodeDescriptor, p as NodeInputField, q as NodeInputSchema, r as NodeJobOutput, s as NodeQuote, t as NodesResource, O as OutputType, Q as QuoteAdjustment, y as QuoteWarning, R as ReferenceCaptionParams, F as RunAndWaitOptions, H as RunManyResult, K as RunNodeAdjustment, L as RunNodeOptions, M as RunNodeResult, S as RunNodeWarning, _ as SocialSearchJobOutput, $ as SplitImageParams, a0 as SplitImageResult, a1 as SplitImageTile, a2 as StructuredReferenceParams, a3 as Subject, a4 as TextToSpeechParams, a5 as TextToVideoParams, a6 as VideoDepthParams, a7 as VideoToVideoParams, a8 as VideoUpscaleParams } from '../nodes-Szl6HrZ_.cjs';
7
+ export { A as AssembleNarratedVideoParams, B as BatchJobOutcome, E as EditImageCommonParams, a as EditImageFromTaskParams, b as EditImageFromUrlParams, c as EditImageParams, G as GenerateImageBatchGroup, e as GenerateImageBatchOutput, f as GenerateImageBatchResult, g as GenerateImageParams, h as GenerateMaskJobOutput, i as GenerateMaskParams, k as GenerateVideoParams, l as GenerationSessionParams, I as ImageJobStarted, m as ImageToImageParams, J as JobOutputImage, N as NodeCategory, n as NodeCreditRate, o as NodeDescriptor, p as NodeInputField, q as NodeInputSchema, r as NodeJobOutput, s as NodeQuote, t as NodesResource, O as OutputType, Q as QuoteAdjustment, y as QuoteWarning, R as ReferenceCaptionParams, F as RunAndWaitOptions, H as RunManyResult, K as RunNodeAdjustment, L as RunNodeOptions, M as RunNodeResult, S as RunNodeWarning, _ as SocialSearchJobOutput, $ as SplitImageParams, a0 as SplitImageResult, a1 as SplitImageTile, a2 as StructuredReferenceParams, a3 as Subject, a4 as TextToSpeechParams, a5 as TextToVideoParams, a6 as VideoDepthParams, a7 as VideoToVideoParams, a8 as VideoUpscaleParams } from '../nodes-DGIefTze.cjs';
8
8
  export { TopazUpscaleFactor } from '@nodaro/shared/credits';
9
9
  export { ImageToImageAttachColumn } from '@nodaro/shared/entities';
10
10
  import '@nodaro/shared/scene3d';
@@ -4,7 +4,7 @@ export { GeminiOmniVoicePresetId, ImageAspectRatio, ImageEditProvider, ImageEdit
4
4
  export { PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PromptAffixFields } from '@nodaro/shared/nodes';
5
5
  export { SocialPlatform, SocialPost, SocialPostAuthor, SocialPostMedia, SocialPostMetrics, SocialSearchCount, SocialSearchMode, SocialSearchParams, SocialSearchPeriod, SocialSearchSort, SocialSearchVideoKind } from '@nodaro/shared/social';
6
6
  export { GenerateMaskOutput, GenerateMaskRequest, VideoDepthColormap, VideoDepthModelSize, VideoDepthProvider, VideoDepthResolution } from '@nodaro/shared/media';
7
- export { A as AssembleNarratedVideoParams, B as BatchJobOutcome, E as EditImageCommonParams, a as EditImageFromTaskParams, b as EditImageFromUrlParams, c as EditImageParams, G as GenerateImageBatchGroup, e as GenerateImageBatchOutput, f as GenerateImageBatchResult, g as GenerateImageParams, h as GenerateMaskJobOutput, i as GenerateMaskParams, k as GenerateVideoParams, l as GenerationSessionParams, I as ImageJobStarted, m as ImageToImageParams, J as JobOutputImage, N as NodeCategory, n as NodeCreditRate, o as NodeDescriptor, p as NodeInputField, q as NodeInputSchema, r as NodeJobOutput, s as NodeQuote, t as NodesResource, O as OutputType, Q as QuoteAdjustment, y as QuoteWarning, R as ReferenceCaptionParams, F as RunAndWaitOptions, H as RunManyResult, K as RunNodeAdjustment, L as RunNodeOptions, M as RunNodeResult, S as RunNodeWarning, _ as SocialSearchJobOutput, $ as SplitImageParams, a0 as SplitImageResult, a1 as SplitImageTile, a2 as StructuredReferenceParams, a3 as Subject, a4 as TextToSpeechParams, a5 as TextToVideoParams, a6 as VideoDepthParams, a7 as VideoToVideoParams, a8 as VideoUpscaleParams } from '../nodes-MThDit8l.js';
7
+ export { A as AssembleNarratedVideoParams, B as BatchJobOutcome, E as EditImageCommonParams, a as EditImageFromTaskParams, b as EditImageFromUrlParams, c as EditImageParams, G as GenerateImageBatchGroup, e as GenerateImageBatchOutput, f as GenerateImageBatchResult, g as GenerateImageParams, h as GenerateMaskJobOutput, i as GenerateMaskParams, k as GenerateVideoParams, l as GenerationSessionParams, I as ImageJobStarted, m as ImageToImageParams, J as JobOutputImage, N as NodeCategory, n as NodeCreditRate, o as NodeDescriptor, p as NodeInputField, q as NodeInputSchema, r as NodeJobOutput, s as NodeQuote, t as NodesResource, O as OutputType, Q as QuoteAdjustment, y as QuoteWarning, R as ReferenceCaptionParams, F as RunAndWaitOptions, H as RunManyResult, K as RunNodeAdjustment, L as RunNodeOptions, M as RunNodeResult, S as RunNodeWarning, _ as SocialSearchJobOutput, $ as SplitImageParams, a0 as SplitImageResult, a1 as SplitImageTile, a2 as StructuredReferenceParams, a3 as Subject, a4 as TextToSpeechParams, a5 as TextToVideoParams, a6 as VideoDepthParams, a7 as VideoToVideoParams, a8 as VideoUpscaleParams } from '../nodes-C9j0PFto.js';
8
8
  export { TopazUpscaleFactor } from '@nodaro/shared/credits';
9
9
  export { ImageToImageAttachColumn } from '@nodaro/shared/entities';
10
10
  import '@nodaro/shared/scene3d';
@@ -1,5 +1,5 @@
1
1
  export { PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY } from '../chunk-ZYPH2FPT.js';
2
- export { NodesResource } from '../chunk-JB4GVP4Q.js';
2
+ export { NodesResource } from '../chunk-GW76IRQD.js';
3
3
  import '../chunk-L6T44A3G.js';
4
4
  //# sourceMappingURL=nodes.js.map
5
5
  //# sourceMappingURL=nodes.js.map
@@ -1,7 +1,7 @@
1
1
  import { ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio } from '@nodaro/shared/entities';
2
2
  export { OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn } from '@nodaro/shared/entities';
3
3
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.cjs';
4
- import { l as GenerationSessionParams } from '../nodes-Szl6HrZ_.cjs';
4
+ import { l as GenerationSessionParams } from '../nodes-DGIefTze.cjs';
5
5
  import '@nodaro/shared/apps';
6
6
  import '@nodaro/shared/organizations';
7
7
  import '@nodaro/shared/types';
@@ -1,7 +1,7 @@
1
1
  import { ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio } from '@nodaro/shared/entities';
2
2
  export { OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn } from '@nodaro/shared/entities';
3
3
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.js';
4
- import { l as GenerationSessionParams } from '../nodes-MThDit8l.js';
4
+ import { l as GenerationSessionParams } from '../nodes-C9j0PFto.js';
5
5
  import '@nodaro/shared/apps';
6
6
  import '@nodaro/shared/organizations';
7
7
  import '@nodaro/shared/types';
@@ -1,5 +1,5 @@
1
- import { t as NodesResource, V as Scene3DCapabilities, W as Scene3DDelivery, X as Scene3DDeliveryAsset, C as RetainedScene3DEditParams, D as RetainedScene3DEditResult, j as GenerateScene3DParams, M as RunNodeResult, F as RunAndWaitOptions, Z as Scene3DJobOutput, d as EditScene3DParams, u as Pro3DRenderParams, v as Pro3DRenderQuote, x as Pro3DRenderRunParams, w as Pro3DRenderRunOptions, P as Pro3DRenderJobOutput, z as RenderScene3DParams, r as NodeJobOutput } from '../nodes-Szl6HrZ_.cjs';
2
- export { T as SCENE3D_DELIVERY_ASSET_USAGE, U as Scene3DAuthoringEngine, Y as Scene3DDeliveryAssetKind } from '../nodes-Szl6HrZ_.cjs';
1
+ import { t as NodesResource, V as Scene3DCapabilities, W as Scene3DDelivery, X as Scene3DDeliveryAsset, C as RetainedScene3DEditParams, D as RetainedScene3DEditResult, j as GenerateScene3DParams, M as RunNodeResult, F as RunAndWaitOptions, Z as Scene3DJobOutput, d as EditScene3DParams, u as Pro3DRenderParams, v as Pro3DRenderQuote, x as Pro3DRenderRunParams, w as Pro3DRenderRunOptions, P as Pro3DRenderJobOutput, z as RenderScene3DParams, r as NodeJobOutput } from '../nodes-DGIefTze.cjs';
2
+ export { T as SCENE3D_DELIVERY_ASSET_USAGE, U as Scene3DAuthoringEngine, Y as Scene3DDeliveryAssetKind } from '../nodes-DGIefTze.cjs';
3
3
  import { Scene3DAssetRef } from '@nodaro/shared/scene3d';
4
4
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.cjs';
5
5
  import '@nodaro/shared/types';
@@ -1,5 +1,5 @@
1
- import { t as NodesResource, V as Scene3DCapabilities, W as Scene3DDelivery, X as Scene3DDeliveryAsset, C as RetainedScene3DEditParams, D as RetainedScene3DEditResult, j as GenerateScene3DParams, M as RunNodeResult, F as RunAndWaitOptions, Z as Scene3DJobOutput, d as EditScene3DParams, u as Pro3DRenderParams, v as Pro3DRenderQuote, x as Pro3DRenderRunParams, w as Pro3DRenderRunOptions, P as Pro3DRenderJobOutput, z as RenderScene3DParams, r as NodeJobOutput } from '../nodes-MThDit8l.js';
2
- export { T as SCENE3D_DELIVERY_ASSET_USAGE, U as Scene3DAuthoringEngine, Y as Scene3DDeliveryAssetKind } from '../nodes-MThDit8l.js';
1
+ import { t as NodesResource, V as Scene3DCapabilities, W as Scene3DDelivery, X as Scene3DDeliveryAsset, C as RetainedScene3DEditParams, D as RetainedScene3DEditResult, j as GenerateScene3DParams, M as RunNodeResult, F as RunAndWaitOptions, Z as Scene3DJobOutput, d as EditScene3DParams, u as Pro3DRenderParams, v as Pro3DRenderQuote, x as Pro3DRenderRunParams, w as Pro3DRenderRunOptions, P as Pro3DRenderJobOutput, z as RenderScene3DParams, r as NodeJobOutput } from '../nodes-C9j0PFto.js';
2
+ export { T as SCENE3D_DELIVERY_ASSET_USAGE, U as Scene3DAuthoringEngine, Y as Scene3DDeliveryAssetKind } from '../nodes-C9j0PFto.js';
3
3
  import { Scene3DAssetRef } from '@nodaro/shared/scene3d';
4
4
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.js';
5
5
  import '@nodaro/shared/types';
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  require('../chunk-VYK6MBL4.cjs');
4
- var chunkPEMLIAPZ_cjs = require('../chunk-PEMLIAPZ.cjs');
4
+ var chunkWMT7HEBZ_cjs = require('../chunk-WMT7HEBZ.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "SessionsResource", {
9
9
  enumerable: true,
10
- get: function () { return chunkPEMLIAPZ_cjs.SessionsResource; }
10
+ get: function () { return chunkWMT7HEBZ_cjs.SessionsResource; }
11
11
  });
12
12
  //# sourceMappingURL=sessions.cjs.map
13
13
  //# sourceMappingURL=sessions.cjs.map
@@ -6,8 +6,8 @@ import '@nodaro/shared/organizations';
6
6
  /**
7
7
  * A generation session: one run of work in a creation tool (Create Image,
8
8
  * Video, Music), optionally inside a project. Its project is fixed at
9
- * creation — to get an item into another project, import it into a session
10
- * there.
9
+ * creation — to get an item into another project, move it into a session
10
+ * there ({@link SessionsResource.moveItems}) or import a copy of the link.
11
11
  */
12
12
  interface GenerationSession {
13
13
  id: string;
@@ -23,7 +23,12 @@ interface GenerationSession {
23
23
  archivedAt: string | null;
24
24
  /** The item picked as the session's cover (`update(id, { coverJobId })`); `null` = automatic. */
25
25
  coverJobId: string | null;
26
+ /** Live items: not removed, and their job not deleted. */
26
27
  itemCount: number;
28
+ /** Items removed from the session — its part of the Trash
29
+ * (`items(id, { removed: true })`, `client.trash.list()`). Absent from an
30
+ * older server. */
31
+ removedCount?: number;
27
32
  /** Up to four image links: the cover's image first when one is set, then the
28
33
  * newest completed items. */
29
34
  previewUrls: string[];
@@ -44,7 +49,8 @@ interface UpdateSessionInput {
44
49
  coverJobId?: string | null;
45
50
  }
46
51
  interface ListSessionsParams {
47
- projectId?: string;
52
+ /** A project's id, or `"none"` for the sessions with no project. */
53
+ projectId?: string | "none";
48
54
  tool?: string;
49
55
  /** Archived sessions are left out unless this is true. */
50
56
  includeArchived?: boolean;
@@ -57,6 +63,9 @@ interface ListSessionsParams {
57
63
  interface SessionItem {
58
64
  jobId: string;
59
65
  addedAt: string;
66
+ /** When the item was removed from the session (it is in the Trash); `null`
67
+ * for a live item. Absent from an older server. */
68
+ removedAt?: string | null;
60
69
  /** True when imported from elsewhere rather than born in this session. */
61
70
  imported: boolean;
62
71
  importedFrom: {
@@ -66,9 +75,18 @@ interface SessionItem {
66
75
  job: Job;
67
76
  }
68
77
  interface ListSessionItemsParams {
78
+ /** `true`: the items removed from the session (its Trash), newest removal first. */
79
+ removed?: boolean;
69
80
  limit?: number;
70
81
  cursor?: string;
71
82
  }
83
+ /** {@link SessionsResource.moveItems}' body. */
84
+ interface MoveSessionItemsInput {
85
+ /** Items of `fromSessionId` to move, up to 100. */
86
+ jobIds: string[];
87
+ /** The session they are in now. It keeps them as removed items, so the move can be undone from its Trash. */
88
+ fromSessionId: string;
89
+ }
72
90
  interface SessionPage<T> {
73
91
  data: T[];
74
92
  /** Pass back as `cursor` for the next page; `null` on the last one. */
@@ -98,12 +116,18 @@ declare class SessionsResource {
98
116
  delete(id: string): Promise<{
99
117
  success: true;
100
118
  }>;
101
- /** The session's items, born-in and imported, newest first. */
119
+ /**
120
+ * The session's live items, born-in and imported, newest first — or, with
121
+ * `{ removed: true }`, the items removed from it (its part of the Trash),
122
+ * newest removal first. An item whose job was deleted is in neither: it is in
123
+ * `client.trash.list()` as the deleted job.
124
+ */
102
125
  items(id: string, params?: ListSessionItemsParams): Promise<SessionPage<SessionItem>>;
103
126
  /**
104
127
  * Import some of your own jobs into a session — a link, not a copy (up to 100
105
128
  * a call). All-or-nothing: if any id is not one of your jobs, nothing is
106
- * imported and the call fails with 404. Items already there are left as they are.
129
+ * imported and the call fails with 404. Items already there are left as they
130
+ * are; an item removed from the session comes back where it was.
107
131
  */
108
132
  importItems(id: string, input: {
109
133
  jobIds: string[];
@@ -113,10 +137,36 @@ declare class SessionsResource {
113
137
  requested: number;
114
138
  };
115
139
  }>;
116
- /** Remove one item from a session. Only the link goes: the job, and every other session holding it, stay. */
117
- removeItem(id: string, jobId: string): Promise<{
140
+ /**
141
+ * Remove one item from a session: it goes to the session's Trash until
142
+ * {@link restoreItem} brings it back or `{ forever: true }` deletes it for good
143
+ * — no automatic cleanup. Only the link moves: the job, and every other
144
+ * session holding it, stay; an item in no session shows in General
145
+ * (`client.jobs.list({ inSession: false })`). `forever` on an item that is
146
+ * not removed fails with a 409 `NodaroError` whose `code` is `"not_in_trash"`.
147
+ */
148
+ removeItem(id: string, jobId: string, options?: {
149
+ forever?: boolean;
150
+ }): Promise<{
151
+ success: true;
152
+ }>;
153
+ /** Bring a removed item back into the session, where it was. An item that is not removed succeeds too. */
154
+ restoreItem(id: string, jobId: string): Promise<{
118
155
  success: true;
119
156
  }>;
157
+ /**
158
+ * Move items of another of your sessions into `targetId`, in one
159
+ * transaction: the target gets them (born-in stays born-in, else imported
160
+ * from the source), the source keeps them as removed items — so the move is
161
+ * undone with `restoreItem(fromSessionId, jobId)`. A session in another
162
+ * project is how an item moves to another project. All-or-nothing: if any id
163
+ * is not a live item of `fromSessionId`, nothing moves (404).
164
+ */
165
+ moveItems(targetId: string, input: MoveSessionItemsInput): Promise<{
166
+ data: {
167
+ moved: number;
168
+ };
169
+ }>;
120
170
  }
121
171
 
122
- export { type CreateSessionInput, type GenerationSession, type ListSessionItemsParams, type ListSessionsParams, type SessionItem, type SessionPage, SessionsResource, type UpdateSessionInput };
172
+ export { type CreateSessionInput, type GenerationSession, type ListSessionItemsParams, type ListSessionsParams, type MoveSessionItemsInput, type SessionItem, type SessionPage, SessionsResource, type UpdateSessionInput };