@nodaro/sdk 2.33.0 → 2.38.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 (197) hide show
  1. package/dist/{chunk-GKQSA24K.cjs → chunk-3WNEIBTH.cjs} +43 -35
  2. package/dist/chunk-3WNEIBTH.cjs.map +1 -0
  3. package/dist/{chunk-JMOKD6ZP.js → chunk-7CUWAVWB.js} +3 -3
  4. package/dist/{chunk-JMOKD6ZP.js.map → chunk-7CUWAVWB.js.map} +1 -1
  5. package/dist/{chunk-E5BM4BLO.js → chunk-7IWVDWSP.js} +20 -3
  6. package/dist/chunk-7IWVDWSP.js.map +1 -0
  7. package/dist/{chunk-RHJRLXKY.cjs → chunk-7XOK277W.cjs} +9 -9
  8. package/dist/{chunk-RHJRLXKY.cjs.map → chunk-7XOK277W.cjs.map} +1 -1
  9. package/dist/{chunk-3QBH2VE2.cjs → chunk-A7QSOD2S.cjs} +20 -3
  10. package/dist/chunk-A7QSOD2S.cjs.map +1 -0
  11. package/dist/{chunk-VV4TZG5S.js → chunk-AUKHMT53.js} +3 -3
  12. package/dist/chunk-AUKHMT53.js.map +1 -0
  13. package/dist/{chunk-JSCC2N7N.js → chunk-AVOQ5DG4.js} +29 -21
  14. package/dist/chunk-AVOQ5DG4.js.map +1 -0
  15. package/dist/{chunk-I6CXC345.js → chunk-D2ILCSOQ.js} +3 -3
  16. package/dist/{chunk-I6CXC345.js.map → chunk-D2ILCSOQ.js.map} +1 -1
  17. package/dist/{chunk-4NLVBYMW.js → chunk-DQAYIVVS.js} +42 -8
  18. package/dist/chunk-DQAYIVVS.js.map +1 -0
  19. package/dist/chunk-ED3ZOX3M.js +54 -0
  20. package/dist/chunk-ED3ZOX3M.js.map +1 -0
  21. package/dist/{chunk-5ALNFATQ.cjs → chunk-EK672FFM.cjs} +2 -2
  22. package/dist/chunk-EK672FFM.cjs.map +1 -0
  23. package/dist/{chunk-OXQKE5EG.cjs → chunk-ETX3TLNB.cjs} +43 -9
  24. package/dist/{chunk-4NLVBYMW.js.map → chunk-ETX3TLNB.cjs.map} +1 -1
  25. package/dist/{chunk-BRV7Z4GD.cjs → chunk-FHVNTS4E.cjs} +2 -2
  26. package/dist/{chunk-BRV7Z4GD.cjs.map → chunk-FHVNTS4E.cjs.map} +1 -1
  27. package/dist/{chunk-N6GLZOE4.cjs → chunk-FM2KM5TY.cjs} +52 -10
  28. package/dist/chunk-FM2KM5TY.cjs.map +1 -0
  29. package/dist/{chunk-53SXNN3A.js → chunk-FQNCIP6K.js} +2 -2
  30. package/dist/chunk-FQNCIP6K.js.map +1 -0
  31. package/dist/{chunk-KNMW722T.cjs → chunk-FRQJNGJS.cjs} +5 -5
  32. package/dist/{chunk-KNMW722T.cjs.map → chunk-FRQJNGJS.cjs.map} +1 -1
  33. package/dist/{chunk-4CXB7RA6.js → chunk-IGMWFEFB.js} +6 -4
  34. package/dist/chunk-IGMWFEFB.js.map +1 -0
  35. package/dist/{chunk-56NJIP7P.cjs → chunk-IISVYX5J.cjs} +5 -5
  36. package/dist/{chunk-56NJIP7P.cjs.map → chunk-IISVYX5J.cjs.map} +1 -1
  37. package/dist/{chunk-6OGGJQVA.js → chunk-ILG5DHQQ.js} +2 -2
  38. package/dist/chunk-ILG5DHQQ.js.map +1 -0
  39. package/dist/{chunk-ZQQABQMH.cjs → chunk-JTOEHQQJ.cjs} +12 -2
  40. package/dist/chunk-JTOEHQQJ.cjs.map +1 -0
  41. package/dist/{chunk-ZXJQSFIA.js → chunk-JUON5NXA.js} +2 -2
  42. package/dist/{chunk-ZXJQSFIA.js.map → chunk-JUON5NXA.js.map} +1 -1
  43. package/dist/chunk-KARJ7P7Y.js +3 -0
  44. package/dist/chunk-KARJ7P7Y.js.map +1 -0
  45. package/dist/{chunk-JGS6YBDW.js → chunk-L6T44A3G.js} +51 -11
  46. package/dist/chunk-L6T44A3G.js.map +1 -0
  47. package/dist/{chunk-U4T3Z3K7.cjs → chunk-NKH2UFSD.cjs} +5 -5
  48. package/dist/chunk-NKH2UFSD.cjs.map +1 -0
  49. package/dist/{chunk-E2ZXHS6E.js → chunk-OIPPTBW4.js} +2 -2
  50. package/dist/chunk-OIPPTBW4.js.map +1 -0
  51. package/dist/{chunk-DKEYSJCE.cjs → chunk-OIYMTGYN.cjs} +2 -2
  52. package/dist/chunk-OIYMTGYN.cjs.map +1 -0
  53. package/dist/{chunk-NLQQHJ25.cjs → chunk-OSMKIRKI.cjs} +4 -4
  54. package/dist/{chunk-NLQQHJ25.cjs.map → chunk-OSMKIRKI.cjs.map} +1 -1
  55. package/dist/chunk-PG2GBS3K.cjs +4 -0
  56. package/dist/chunk-PG2GBS3K.cjs.map +1 -0
  57. package/dist/{chunk-GB724HW2.cjs → chunk-PQ7OKM3E.cjs} +6 -4
  58. package/dist/chunk-PQ7OKM3E.cjs.map +1 -0
  59. package/dist/{chunk-Y5CYFNNW.js → chunk-Q6HY2Q5V.js} +4 -4
  60. package/dist/{chunk-Y5CYFNNW.js.map → chunk-Q6HY2Q5V.js.map} +1 -1
  61. package/dist/chunk-QGOEQGAE.js +102 -0
  62. package/dist/chunk-QGOEQGAE.js.map +1 -0
  63. package/dist/{chunk-B7RG6AUQ.cjs → chunk-QZHRXPN5.cjs} +22 -22
  64. package/dist/chunk-QZHRXPN5.cjs.map +1 -0
  65. package/dist/chunk-RQSGS7ZK.cjs +4 -0
  66. package/dist/chunk-RQSGS7ZK.cjs.map +1 -0
  67. package/dist/{chunk-KGKCAGRD.cjs → chunk-TCLNSVYA.cjs} +2 -2
  68. package/dist/chunk-TCLNSVYA.cjs.map +1 -0
  69. package/dist/chunk-U2B7YQ2N.cjs +56 -0
  70. package/dist/chunk-U2B7YQ2N.cjs.map +1 -0
  71. package/dist/chunk-VCEYLJ2Q.cjs +104 -0
  72. package/dist/chunk-VCEYLJ2Q.cjs.map +1 -0
  73. package/dist/{chunk-VGWOIWRQ.cjs → chunk-VHSMOBU7.cjs} +2 -2
  74. package/dist/{chunk-VGWOIWRQ.cjs.map → chunk-VHSMOBU7.cjs.map} +1 -1
  75. package/dist/{chunk-T3SYREY4.js → chunk-WY4QRJZW.js} +12 -2
  76. package/dist/chunk-WY4QRJZW.js.map +1 -0
  77. package/dist/chunk-YCVRQZT3.js +3 -0
  78. package/dist/chunk-YCVRQZT3.js.map +1 -0
  79. package/dist/{chunk-DPSMVOM3.js → chunk-YSZM3N7Q.js} +2 -2
  80. package/dist/chunk-YSZM3N7Q.js.map +1 -0
  81. package/dist/{chunk-5A7J24LN.js → chunk-Z7UZ3FD3.js} +3 -3
  82. package/dist/{chunk-5A7J24LN.js.map → chunk-Z7UZ3FD3.js.map} +1 -1
  83. package/dist/{chunk-6ECW23GA.js → chunk-ZDSC6KBT.js} +3 -3
  84. package/dist/chunk-ZDSC6KBT.js.map +1 -0
  85. package/dist/entries/apps.cjs +2 -2
  86. package/dist/entries/apps.d.cts +4 -0
  87. package/dist/entries/apps.d.ts +4 -0
  88. package/dist/entries/apps.js +1 -1
  89. package/dist/entries/cast-swap.cjs +13 -0
  90. package/dist/entries/cast-swap.cjs.map +1 -0
  91. package/dist/entries/cast-swap.d.cts +380 -0
  92. package/dist/entries/cast-swap.d.ts +380 -0
  93. package/dist/entries/cast-swap.js +4 -0
  94. package/dist/entries/cast-swap.js.map +1 -0
  95. package/dist/entries/characters.d.cts +2 -2
  96. package/dist/entries/characters.d.ts +2 -2
  97. package/dist/entries/client.cjs +29 -27
  98. package/dist/entries/client.d.cts +8 -2
  99. package/dist/entries/client.d.ts +8 -2
  100. package/dist/entries/client.js +24 -22
  101. package/dist/entries/copilot.cjs +4 -4
  102. package/dist/entries/copilot.js +3 -3
  103. package/dist/entries/core.cjs +6 -6
  104. package/dist/entries/core.js +2 -2
  105. package/dist/entries/creatures.d.cts +2 -2
  106. package/dist/entries/creatures.d.ts +2 -2
  107. package/dist/entries/credits.cjs +2 -2
  108. package/dist/entries/credits.d.cts +37 -2
  109. package/dist/entries/credits.d.ts +37 -2
  110. package/dist/entries/credits.js +1 -1
  111. package/dist/entries/edit.cjs +7 -7
  112. package/dist/entries/edit.d.cts +3 -0
  113. package/dist/entries/edit.d.ts +3 -0
  114. package/dist/entries/edit.js +2 -2
  115. package/dist/entries/errors.cjs +30 -22
  116. package/dist/entries/errors.d.cts +42 -4
  117. package/dist/entries/errors.d.ts +42 -4
  118. package/dist/entries/errors.js +1 -1
  119. package/dist/entries/jobs.cjs +2 -2
  120. package/dist/entries/jobs.d.cts +76 -4
  121. package/dist/entries/jobs.d.ts +76 -4
  122. package/dist/entries/jobs.js +1 -1
  123. package/dist/entries/locations.d.cts +2 -2
  124. package/dist/entries/locations.d.ts +2 -2
  125. package/dist/entries/media.cjs +4 -4
  126. package/dist/entries/media.d.cts +39 -5
  127. package/dist/entries/media.d.ts +39 -5
  128. package/dist/entries/media.js +3 -3
  129. package/dist/entries/nodes.cjs +3 -3
  130. package/dist/entries/nodes.d.cts +2 -2
  131. package/dist/entries/nodes.d.ts +2 -2
  132. package/dist/entries/nodes.js +2 -2
  133. package/dist/entries/objects.d.cts +2 -2
  134. package/dist/entries/objects.d.ts +2 -2
  135. package/dist/entries/prompt-helper.cjs +2 -2
  136. package/dist/entries/prompt-helper.d.cts +3 -1
  137. package/dist/entries/prompt-helper.d.ts +3 -1
  138. package/dist/entries/prompt-helper.js +1 -1
  139. package/dist/entries/scene3d.d.cts +3 -3
  140. package/dist/entries/scene3d.d.ts +3 -3
  141. package/dist/entries/studio.cjs +5 -5
  142. package/dist/entries/studio.d.cts +2 -2
  143. package/dist/entries/studio.d.ts +2 -2
  144. package/dist/entries/studio.js +2 -2
  145. package/dist/entries/templates.cjs +2 -2
  146. package/dist/entries/templates.d.cts +4 -0
  147. package/dist/entries/templates.d.ts +4 -0
  148. package/dist/entries/templates.js +1 -1
  149. package/dist/entries/trends.cjs +13 -0
  150. package/dist/entries/trends.cjs.map +1 -0
  151. package/dist/entries/trends.d.cts +295 -0
  152. package/dist/entries/trends.d.ts +295 -0
  153. package/dist/entries/trends.js +4 -0
  154. package/dist/entries/trends.js.map +1 -0
  155. package/dist/entries/tutorials.cjs +2 -2
  156. package/dist/entries/tutorials.d.cts +4 -0
  157. package/dist/entries/tutorials.d.ts +4 -0
  158. package/dist/entries/tutorials.js +1 -1
  159. package/dist/entries/uploads.cjs +2 -2
  160. package/dist/entries/uploads.d.cts +14 -1
  161. package/dist/entries/uploads.d.ts +14 -1
  162. package/dist/entries/uploads.js +1 -1
  163. package/dist/entries/workflows.cjs +2 -2
  164. package/dist/entries/workflows.d.cts +6 -0
  165. package/dist/entries/workflows.d.ts +6 -0
  166. package/dist/entries/workflows.js +1 -1
  167. package/dist/index.cjs +158 -138
  168. package/dist/index.d.cts +8 -6
  169. package/dist/index.d.ts +8 -6
  170. package/dist/index.js +33 -29
  171. package/dist/{nodes-C-wrO6Sg.d.ts → nodes-9WpYNWtS.d.ts} +35 -1
  172. package/dist/{nodes-J8ByUN8z.d.cts → nodes-BDUk5Aej.d.cts} +35 -1
  173. package/dist/{studio-productions-vbCNSbtf.d.ts → studio-productions-DtTE8mdl.d.ts} +35 -1
  174. package/dist/{studio-productions-DUHvdSvk.d.cts → studio-productions-r2-VZsKj.d.cts} +35 -1
  175. package/package.json +12 -2
  176. package/dist/chunk-3QBH2VE2.cjs.map +0 -1
  177. package/dist/chunk-4CXB7RA6.js.map +0 -1
  178. package/dist/chunk-53SXNN3A.js.map +0 -1
  179. package/dist/chunk-5ALNFATQ.cjs.map +0 -1
  180. package/dist/chunk-6ECW23GA.js.map +0 -1
  181. package/dist/chunk-6OGGJQVA.js.map +0 -1
  182. package/dist/chunk-B7RG6AUQ.cjs.map +0 -1
  183. package/dist/chunk-DKEYSJCE.cjs.map +0 -1
  184. package/dist/chunk-DPSMVOM3.js.map +0 -1
  185. package/dist/chunk-E2ZXHS6E.js.map +0 -1
  186. package/dist/chunk-E5BM4BLO.js.map +0 -1
  187. package/dist/chunk-GB724HW2.cjs.map +0 -1
  188. package/dist/chunk-GKQSA24K.cjs.map +0 -1
  189. package/dist/chunk-JGS6YBDW.js.map +0 -1
  190. package/dist/chunk-JSCC2N7N.js.map +0 -1
  191. package/dist/chunk-KGKCAGRD.cjs.map +0 -1
  192. package/dist/chunk-N6GLZOE4.cjs.map +0 -1
  193. package/dist/chunk-OXQKE5EG.cjs.map +0 -1
  194. package/dist/chunk-T3SYREY4.js.map +0 -1
  195. package/dist/chunk-U4T3Z3K7.cjs.map +0 -1
  196. package/dist/chunk-VV4TZG5S.js.map +0 -1
  197. package/dist/chunk-ZQQABQMH.cjs.map +0 -1
@@ -1,56 +1,58 @@
1
1
  'use strict';
2
2
 
3
+ var chunkW5VHATSR_cjs = require('./chunk-W5VHATSR.cjs');
4
+ var chunkR63TTR35_cjs = require('./chunk-R63TTR35.cjs');
3
5
  var chunk3B47IHB3_cjs = require('./chunk-3B47IHB3.cjs');
4
- var chunkVGWOIWRQ_cjs = require('./chunk-VGWOIWRQ.cjs');
6
+ var chunkVHSMOBU7_cjs = require('./chunk-VHSMOBU7.cjs');
5
7
  var chunkLKH5M44B_cjs = require('./chunk-LKH5M44B.cjs');
8
+ var chunkYDRXBRW2_cjs = require('./chunk-YDRXBRW2.cjs');
6
9
  var chunkPEMLIAPZ_cjs = require('./chunk-PEMLIAPZ.cjs');
7
10
  var chunkMBFUMWI5_cjs = require('./chunk-MBFUMWI5.cjs');
8
- var chunkU4T3Z3K7_cjs = require('./chunk-U4T3Z3K7.cjs');
9
- var chunk5ALNFATQ_cjs = require('./chunk-5ALNFATQ.cjs');
10
- var chunkBRV7Z4GD_cjs = require('./chunk-BRV7Z4GD.cjs');
11
- var chunkZQQABQMH_cjs = require('./chunk-ZQQABQMH.cjs');
12
- var chunkW5VHATSR_cjs = require('./chunk-W5VHATSR.cjs');
13
- var chunkR63TTR35_cjs = require('./chunk-R63TTR35.cjs');
11
+ var chunkNKH2UFSD_cjs = require('./chunk-NKH2UFSD.cjs');
12
+ var chunkEK672FFM_cjs = require('./chunk-EK672FFM.cjs');
13
+ var chunkVCEYLJ2Q_cjs = require('./chunk-VCEYLJ2Q.cjs');
14
+ var chunkFHVNTS4E_cjs = require('./chunk-FHVNTS4E.cjs');
15
+ var chunkJTOEHQQJ_cjs = require('./chunk-JTOEHQQJ.cjs');
16
+ var chunkNBVARNVA_cjs = require('./chunk-NBVARNVA.cjs');
14
17
  var chunkOSX2GVZ2_cjs = require('./chunk-OSX2GVZ2.cjs');
15
18
  var chunkCOCKKMNP_cjs = require('./chunk-COCKKMNP.cjs');
16
19
  var chunkLAWYFC4G_cjs = require('./chunk-LAWYFC4G.cjs');
17
- var chunkKGKCAGRD_cjs = require('./chunk-KGKCAGRD.cjs');
20
+ var chunkTCLNSVYA_cjs = require('./chunk-TCLNSVYA.cjs');
18
21
  var chunkKXEWTYS4_cjs = require('./chunk-KXEWTYS4.cjs');
19
22
  var chunkGB6C5OEZ_cjs = require('./chunk-GB6C5OEZ.cjs');
20
23
  var chunkSYVNY3AH_cjs = require('./chunk-SYVNY3AH.cjs');
21
- var chunkYDRXBRW2_cjs = require('./chunk-YDRXBRW2.cjs');
24
+ var chunkETX3TLNB_cjs = require('./chunk-ETX3TLNB.cjs');
22
25
  var chunk7QOCWJKD_cjs = require('./chunk-7QOCWJKD.cjs');
23
26
  var chunkZCWKX4V6_cjs = require('./chunk-ZCWKX4V6.cjs');
24
27
  var chunk34PU2DAT_cjs = require('./chunk-34PU2DAT.cjs');
25
- var chunkB7RG6AUQ_cjs = require('./chunk-B7RG6AUQ.cjs');
28
+ var chunkQZHRXPN5_cjs = require('./chunk-QZHRXPN5.cjs');
26
29
  var chunkGVIFLUYZ_cjs = require('./chunk-GVIFLUYZ.cjs');
27
30
  var chunkCR5E2SF3_cjs = require('./chunk-CR5E2SF3.cjs');
28
31
  var chunkJ5LGGCAS_cjs = require('./chunk-J5LGGCAS.cjs');
29
- var chunkNBVARNVA_cjs = require('./chunk-NBVARNVA.cjs');
32
+ var chunk7XOK277W_cjs = require('./chunk-7XOK277W.cjs');
30
33
  var chunkSBV5MWEL_cjs = require('./chunk-SBV5MWEL.cjs');
31
34
  var chunkWUKIJJG2_cjs = require('./chunk-WUKIJJG2.cjs');
32
- var chunk3QBH2VE2_cjs = require('./chunk-3QBH2VE2.cjs');
35
+ var chunkA7QSOD2S_cjs = require('./chunk-A7QSOD2S.cjs');
33
36
  var chunk2DZWWIJ4_cjs = require('./chunk-2DZWWIJ4.cjs');
34
37
  var chunkSS3B6PHT_cjs = require('./chunk-SS3B6PHT.cjs');
35
38
  var chunkMQ74AKA2_cjs = require('./chunk-MQ74AKA2.cjs');
36
- var chunkOXQKE5EG_cjs = require('./chunk-OXQKE5EG.cjs');
39
+ var chunkWK4VXPPZ_cjs = require('./chunk-WK4VXPPZ.cjs');
37
40
  var chunk43FVH6LJ_cjs = require('./chunk-43FVH6LJ.cjs');
38
41
  var chunkYFS2LMG4_cjs = require('./chunk-YFS2LMG4.cjs');
39
- var chunkNLQQHJ25_cjs = require('./chunk-NLQQHJ25.cjs');
40
- var chunk56NJIP7P_cjs = require('./chunk-56NJIP7P.cjs');
42
+ var chunkOSMKIRKI_cjs = require('./chunk-OSMKIRKI.cjs');
43
+ var chunkIISVYX5J_cjs = require('./chunk-IISVYX5J.cjs');
41
44
  var chunkHGCVWOGK_cjs = require('./chunk-HGCVWOGK.cjs');
42
- var chunkGB724HW2_cjs = require('./chunk-GB724HW2.cjs');
45
+ var chunkPQ7OKM3E_cjs = require('./chunk-PQ7OKM3E.cjs');
43
46
  var chunkA3S55XGF_cjs = require('./chunk-A3S55XGF.cjs');
44
- var chunkRHJRLXKY_cjs = require('./chunk-RHJRLXKY.cjs');
45
- var chunkDKEYSJCE_cjs = require('./chunk-DKEYSJCE.cjs');
47
+ var chunkOIYMTGYN_cjs = require('./chunk-OIYMTGYN.cjs');
46
48
  var chunkGA4LZZKQ_cjs = require('./chunk-GA4LZZKQ.cjs');
47
49
  var chunkNGKODS3J_cjs = require('./chunk-NGKODS3J.cjs');
50
+ var chunkU2B7YQ2N_cjs = require('./chunk-U2B7YQ2N.cjs');
48
51
  var chunkBPWUWUZ3_cjs = require('./chunk-BPWUWUZ3.cjs');
49
52
  var chunkHAKYPZLB_cjs = require('./chunk-HAKYPZLB.cjs');
50
- var chunkWK4VXPPZ_cjs = require('./chunk-WK4VXPPZ.cjs');
51
53
 
52
54
  // src/client.ts
53
- var NodaroClient = class _NodaroClient extends chunk56NJIP7P_cjs.NodaroClientCore {
55
+ var NodaroClient = class _NodaroClient extends chunkIISVYX5J_cjs.NodaroClientCore {
54
56
  workflows;
55
57
  projects;
56
58
  /** Generation sessions inside projects (Create Image / Video / Music). */
@@ -96,6 +98,10 @@ var NodaroClient = class _NodaroClient extends chunk56NJIP7P_cjs.NodaroClientCor
96
98
  models;
97
99
  shots;
98
100
  recast;
101
+ /** Cast Swap: replace the people and/or location in a short video (Cloud). */
102
+ castSwap;
103
+ /** Trends: ready-made Cast Swap recipes you fill with your own pictures (Cloud). */
104
+ trends;
99
105
  studio;
100
106
  copilot;
101
107
  community;
@@ -106,32 +112,32 @@ var NodaroClient = class _NodaroClient extends chunk56NJIP7P_cjs.NodaroClientCor
106
112
  edit;
107
113
  constructor(opts) {
108
114
  super(opts);
109
- this.workflows = new chunkVGWOIWRQ_cjs.WorkflowsResource(this);
115
+ this.workflows = new chunkVHSMOBU7_cjs.WorkflowsResource(this);
110
116
  this.projects = new chunkLAWYFC4G_cjs.ProjectsResource(this);
111
117
  this.sessions = new chunkPEMLIAPZ_cjs.SessionsResource(this);
112
- this.jobs = new chunk3QBH2VE2_cjs.JobsResource(this);
118
+ this.jobs = new chunkA7QSOD2S_cjs.JobsResource(this);
113
119
  this.videoPro = new chunkW5VHATSR_cjs.VideoProResource(this);
114
120
  this.executions = new chunkSBV5MWEL_cjs.ExecutionsResource(this);
115
- this.nodes = new chunkB7RG6AUQ_cjs.NodesResource(this);
121
+ this.nodes = new chunkQZHRXPN5_cjs.NodesResource(this);
116
122
  this.scene3d = new chunkYDRXBRW2_cjs.Scene3DResource(this);
117
123
  this.developerApps = new chunkA3S55XGF_cjs.DeveloperAppsResource(this);
118
124
  this.oauth = new chunkGVIFLUYZ_cjs.OAuthResource(this);
119
125
  this.webhooks = new chunk3B47IHB3_cjs.WebhooksResource(this);
120
- this.apps = new chunkDKEYSJCE_cjs.AppsResource(this);
126
+ this.apps = new chunkOIYMTGYN_cjs.AppsResource(this);
121
127
  this.characters = new chunkHAKYPZLB_cjs.CharactersResource(this);
122
128
  this.locations = new chunkMQ74AKA2_cjs.LocationsResource(this);
123
129
  this.objects = new chunkCR5E2SF3_cjs.ObjectsResource(this);
124
130
  this.creatures = new chunkHGCVWOGK_cjs.CreaturesResource(this);
125
131
  this.pipelines = new chunkCOCKKMNP_cjs.PipelinesResource(this);
126
132
  this.reduce = new chunkGB6C5OEZ_cjs.ReduceResource(this);
127
- this.promptHelper = new chunkKGKCAGRD_cjs.PromptHelperResource(this);
133
+ this.promptHelper = new chunkTCLNSVYA_cjs.PromptHelperResource(this);
128
134
  this.voices = new chunkR63TTR35_cjs.VoicesResource(this);
129
135
  this.llm = new chunkSS3B6PHT_cjs.LlmResource(this);
130
- this.media = new chunkOXQKE5EG_cjs.MediaResource(this);
136
+ this.media = new chunkETX3TLNB_cjs.MediaResource(this);
131
137
  this.audio = new chunkGA4LZZKQ_cjs.AudioResource(this);
132
- this.credits = new chunkGB724HW2_cjs.CreditsResource(this);
138
+ this.credits = new chunkPQ7OKM3E_cjs.CreditsResource(this);
133
139
  this.billing = new chunkNGKODS3J_cjs.BillingResource(this);
134
- this.uploads = new chunkZQQABQMH_cjs.UploadsResource(this);
140
+ this.uploads = new chunkJTOEHQQJ_cjs.UploadsResource(this);
135
141
  this.library = new chunk2DZWWIJ4_cjs.LibraryResource(this);
136
142
  this.gallery = new chunkWUKIJJG2_cjs.GalleryResource(this);
137
143
  this.presets = new chunk34PU2DAT_cjs.PresetsResource(this);
@@ -145,14 +151,16 @@ var NodaroClient = class _NodaroClient extends chunk56NJIP7P_cjs.NodaroClientCor
145
151
  this.models = new chunk7QOCWJKD_cjs.ModelsResource(this);
146
152
  this.shots = new chunkMBFUMWI5_cjs.ShotsResource(this);
147
153
  this.recast = new chunkKXEWTYS4_cjs.RecastResource(this);
148
- this.studio = new chunkU4T3Z3K7_cjs.StudioResource(this);
149
- this.copilot = new chunkNLQQHJ25_cjs.CopilotResource(this);
154
+ this.castSwap = new chunkU2B7YQ2N_cjs.CastSwapResource(this);
155
+ this.trends = new chunkVCEYLJ2Q_cjs.TrendsResource(this);
156
+ this.studio = new chunkNKH2UFSD_cjs.StudioResource(this);
157
+ this.copilot = new chunkOSMKIRKI_cjs.CopilotResource(this);
150
158
  this.community = new chunk43FVH6LJ_cjs.CommunityResource(this);
151
- this.templates = new chunk5ALNFATQ_cjs.TemplatesResource(this);
152
- this.tutorials = new chunkBRV7Z4GD_cjs.TutorialsResource(this);
159
+ this.templates = new chunkEK672FFM_cjs.TemplatesResource(this);
160
+ this.tutorials = new chunkFHVNTS4E_cjs.TutorialsResource(this);
153
161
  this.organizations = new chunkJ5LGGCAS_cjs.OrganizationsResource(this);
154
162
  this.workspaces = new chunkLKH5M44B_cjs.WorkspacesResource(this);
155
- this.edit = new chunkRHJRLXKY_cjs.EditResource(this);
163
+ this.edit = new chunk7XOK277W_cjs.EditResource(this);
156
164
  }
157
165
  /**
158
166
  * A client that acts in `workspaceId`, sharing this one's auth and config.
@@ -183,5 +191,5 @@ function createClient(opts) {
183
191
 
184
192
  exports.NodaroClient = NodaroClient;
185
193
  exports.createClient = createClient;
186
- //# sourceMappingURL=chunk-GKQSA24K.cjs.map
187
- //# sourceMappingURL=chunk-GKQSA24K.cjs.map
194
+ //# sourceMappingURL=chunk-3WNEIBTH.cjs.map
195
+ //# sourceMappingURL=chunk-3WNEIBTH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client.ts"],"names":["NodaroClientCore","WorkflowsResource","ProjectsResource","SessionsResource","JobsResource","VideoProResource","ExecutionsResource","NodesResource","Scene3DResource","DeveloperAppsResource","OAuthResource","WebhooksResource","AppsResource","CharactersResource","LocationsResource","ObjectsResource","CreaturesResource","PipelinesResource","ReduceResource","PromptHelperResource","VoicesResource","LlmResource","MediaResource","AudioResource","CreditsResource","BillingResource","UploadsResource","LibraryResource","GalleryResource","PresetsResource","SavedPostsResource","CollectionsResource","PalettesResource","MoodboardsResource","CompetitorsResource","PickerCatalogsResource","CatalogsResource","ModelsResource","ShotsResource","RecastResource","CastSwapResource","TrendsResource","StudioResource","CopilotResource","CommunityResource","TemplatesResource","TutorialsResource","OrganizationsResource","WorkspacesResource","EditResource"],"mappings":"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","file":"chunk-3WNEIBTH.cjs","sourcesContent":["import { WorkflowsResource } from \"./resources/workflows.js\"\nimport { ProjectsResource } from \"./resources/projects.js\"\nimport { SessionsResource } from \"./resources/sessions.js\"\nimport { JobsResource } from \"./resources/jobs.js\"\nimport { VideoProResource } from \"./resources/video-pro.js\"\nimport { ExecutionsResource } from \"./resources/executions.js\"\nimport { NodesResource } from \"./resources/nodes.js\"\nimport { Scene3DResource } from \"./resources/scene3d.js\"\nimport { DeveloperAppsResource } from \"./resources/developer-apps.js\"\nimport { OAuthResource } from \"./resources/oauth.js\"\nimport { WebhooksResource } from \"./resources/webhooks.js\"\nimport { AppsResource } from \"./resources/apps.js\"\nimport { CharactersResource } from \"./resources/characters.js\"\nimport { LocationsResource } from \"./resources/locations.js\"\nimport { ObjectsResource } from \"./resources/objects.js\"\nimport { CreaturesResource } from \"./resources/creatures.js\"\nimport { PipelinesResource } from \"./resources/pipelines.js\"\nimport { ReduceResource } from \"./resources/reduce.js\"\nimport { PromptHelperResource } from \"./resources/prompt-helper.js\"\nimport { VoicesResource } from \"./resources/voices.js\"\nimport { LlmResource } from \"./resources/llm.js\"\nimport { MediaResource } from \"./resources/media.js\"\nimport { AudioResource } from \"./resources/audio.js\"\nimport { CreditsResource } from \"./resources/credits.js\"\nimport { BillingResource } from \"./resources/billing.js\"\nimport { UploadsResource } from \"./resources/uploads.js\"\nimport { LibraryResource } from \"./resources/library.js\"\nimport { GalleryResource } from \"./resources/gallery.js\"\nimport { PresetsResource } from \"./resources/node-presets.js\"\nimport { SavedPostsResource } from \"./resources/saved-posts.js\"\nimport { CollectionsResource } from \"./resources/collections.js\"\nimport { PalettesResource } from \"./resources/palettes.js\"\nimport { MoodboardsResource } from \"./resources/moodboards.js\"\nimport { CompetitorsResource } from \"./resources/competitors.js\"\nimport { PickerCatalogsResource } from \"./resources/picker-catalogs.js\"\nimport { CatalogsResource } from \"./resources/catalogs.js\"\nimport { ModelsResource } from \"./resources/models.js\"\nimport { ShotsResource } from \"./resources/shots.js\"\nimport { RecastResource } from \"./resources/recast.js\"\nimport { CastSwapResource } from \"./resources/cast-swap.js\"\nimport { TrendsResource } from \"./resources/trends.js\"\nimport { StudioResource } from \"./resources/studio.js\"\nimport { CopilotResource } from \"./resources/copilot.js\"\nimport { CommunityResource } from \"./resources/community.js\"\nimport { TemplatesResource } from \"./resources/templates.js\"\nimport { TutorialsResource } from \"./resources/tutorials.js\"\nimport { OrganizationsResource } from \"./resources/organizations.js\"\nimport { WorkspacesResource } from \"./resources/workspaces.js\"\nimport { EditResource } from \"./resources/edit.js\"\nimport { NodaroClientCore, type ClientOptions } from \"./core.js\"\n\nexport { CLIENT_HEADER } from \"./core.js\"\nexport type { ClientOptions, UserIdentity, ConnectedApp } from \"./core.js\"\n\n/**\n * The full client: the core (`./core.ts` — config, transport, identity) and\n * every resource.\n */\nexport class NodaroClient extends NodaroClientCore {\n readonly workflows: WorkflowsResource\n readonly projects: ProjectsResource\n /** Generation sessions inside projects (Create Image / Video / Music). */\n readonly sessions: SessionsResource\n readonly jobs: JobsResource\n readonly videoPro: VideoProResource\n readonly executions: ExecutionsResource\n readonly nodes: NodesResource\n readonly scene3d: Scene3DResource\n readonly developerApps: DeveloperAppsResource\n readonly oauth: OAuthResource\n /** Outbound webhooks: endpoints that receive your job.completed / job.failed. */\n readonly webhooks: WebhooksResource\n readonly apps: AppsResource\n readonly characters: CharactersResource\n readonly locations: LocationsResource\n readonly objects: ObjectsResource\n readonly creatures: CreaturesResource\n readonly pipelines: PipelinesResource\n readonly reduce: ReduceResource\n readonly promptHelper: PromptHelperResource\n readonly voices: VoicesResource\n readonly llm: LlmResource\n readonly media: MediaResource\n readonly audio: AudioResource\n readonly credits: CreditsResource\n /** Plans and prices, the subscription, and how this deployment bills. */\n readonly billing: BillingResource\n readonly uploads: UploadsResource\n readonly library: LibraryResource\n /** The public gallery and your favorites. */\n readonly gallery: GalleryResource\n readonly presets: PresetsResource\n readonly savedPosts: SavedPostsResource\n readonly collections: CollectionsResource\n /** Your colour palettes — a generate-image direction (`direction.colorLook: paletteDirectionId(id)`). */\n readonly palettes: PalettesResource\n /** Your moodboards — a generate-image direction (`direction.style: moodboardDirectionId(id)`). */\n readonly moodboards: MoodboardsResource\n readonly competitors: CompetitorsResource\n readonly pickerCatalogs: PickerCatalogsResource\n readonly catalogs: CatalogsResource\n readonly models: ModelsResource\n readonly shots: ShotsResource\n readonly recast: RecastResource\n /** Cast Swap: replace the people and/or location in a short video (Cloud). */\n readonly castSwap: CastSwapResource\n /** Trends: ready-made Cast Swap recipes you fill with your own pictures (Cloud). */\n readonly trends: TrendsResource\n readonly studio: StudioResource\n readonly copilot: CopilotResource\n readonly community: CommunityResource\n readonly templates: TemplatesResource\n readonly tutorials: TutorialsResource\n readonly organizations: OrganizationsResource\n readonly workspaces: WorkspacesResource\n readonly edit: EditResource\n\n constructor(opts: ClientOptions) {\n super(opts)\n\n this.workflows = new WorkflowsResource(this)\n this.projects = new ProjectsResource(this)\n this.sessions = new SessionsResource(this)\n this.jobs = new JobsResource(this)\n this.videoPro = new VideoProResource(this)\n this.executions = new ExecutionsResource(this)\n this.nodes = new NodesResource(this)\n this.scene3d = new Scene3DResource(this)\n this.developerApps = new DeveloperAppsResource(this)\n this.oauth = new OAuthResource(this)\n this.webhooks = new WebhooksResource(this)\n this.apps = new AppsResource(this)\n this.characters = new CharactersResource(this)\n this.locations = new LocationsResource(this)\n this.objects = new ObjectsResource(this)\n this.creatures = new CreaturesResource(this)\n this.pipelines = new PipelinesResource(this)\n this.reduce = new ReduceResource(this)\n this.promptHelper = new PromptHelperResource(this)\n this.voices = new VoicesResource(this)\n this.llm = new LlmResource(this)\n this.media = new MediaResource(this)\n this.audio = new AudioResource(this)\n this.credits = new CreditsResource(this)\n this.billing = new BillingResource(this)\n this.uploads = new UploadsResource(this)\n this.library = new LibraryResource(this)\n this.gallery = new GalleryResource(this)\n this.presets = new PresetsResource(this)\n this.savedPosts = new SavedPostsResource(this)\n this.collections = new CollectionsResource(this)\n this.palettes = new PalettesResource(this)\n this.moodboards = new MoodboardsResource(this)\n this.competitors = new CompetitorsResource(this)\n this.pickerCatalogs = new PickerCatalogsResource(this)\n this.catalogs = new CatalogsResource(this)\n this.models = new ModelsResource(this)\n this.shots = new ShotsResource(this)\n this.recast = new RecastResource(this)\n this.castSwap = new CastSwapResource(this)\n this.trends = new TrendsResource(this)\n this.studio = new StudioResource(this)\n this.copilot = new CopilotResource(this)\n this.community = new CommunityResource(this)\n this.templates = new TemplatesResource(this)\n this.tutorials = new TutorialsResource(this)\n this.organizations = new OrganizationsResource(this)\n this.workspaces = new WorkspacesResource(this)\n this.edit = new EditResource(this)\n }\n\n /**\n * A client that acts in `workspaceId`, sharing this one's auth and config.\n *\n * A NEW client rather than a setter, deliberately. A mutable selection is\n * the bug this whole axis exists to prevent: two concurrent operations\n * against one client would race over which workspace they were in, and the\n * loser would create work in the wrong place with nothing failing. A\n * per-workspace client cannot be raced.\n *\n * Pass `null` for the personal space.\n */\n withWorkspace(workspaceId: string | null): NodaroClient {\n // The two private settings are read by bracket access, which TypeScript\n // allows on a subclass and which adds no member to the declarations. Read\n // through `this` (not a side table keyed by the instance), so a client\n // wrapped in a Proxy (Vue/Pinia `reactive()`) or reached through\n // `Object.create(client)` still works.\n const fetchOverride = this[\"fetchOverride\"]\n return new NodaroClient({\n baseUrl: this.baseUrl,\n auth: this.auth,\n timeoutMs: this.timeoutMs,\n ...(fetchOverride ? { fetch: fetchOverride } : {}),\n ...(this[\"sendClientHeader\"] ? { clientLabel: this.clientLabel } : {}),\n ...(workspaceId ? { workspaceId } : {}),\n })\n }\n}\n\n/** Factory function — preferred entry point. */\nexport function createClient(opts: ClientOptions): NodaroClient {\n return new NodaroClient(opts)\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { throwFromResponse, NodaroError } from './chunk-JGS6YBDW.js';
1
+ import { throwFromResponse, NodaroError } from './chunk-L6T44A3G.js';
2
2
 
3
3
  // src/sse.ts
4
4
  async function* readSseStream(res, opts = {}) {
@@ -42,5 +42,5 @@ async function* readSseStream(res, opts = {}) {
42
42
  }
43
43
 
44
44
  export { readSseStream };
45
- //# sourceMappingURL=chunk-JMOKD6ZP.js.map
46
- //# sourceMappingURL=chunk-JMOKD6ZP.js.map
45
+ //# sourceMappingURL=chunk-7CUWAVWB.js.map
46
+ //# sourceMappingURL=chunk-7CUWAVWB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/sse.ts"],"names":[],"mappings":";;;AAyBA,gBAAuB,aAAA,CACrB,GAAA,EACA,IAAA,GAGI,EAAC,EAC+B;AACpC,EAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,IAAA,IAAI,UAAmC,EAAC;AACxC,IAAA,IAAI;AACF,MAAA,OAAA,GAAW,MAAM,IAAI,IAAA,EAAK;AAAA,IAC5B,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,iBAAA,CAAkB,GAAA,CAAI,QAAQ,OAAO,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,CAAC,IAAI,IAAA,EAAM;AACb,IAAA,MAAM,IAAI,YAAY,CAAA,EAAG,IAAA,CAAK,SAAS,cAAc,CAAA,qBAAA,CAAA,EAAyB,cAAA,EAAgB,GAAA,CAAI,MAAM,CAAA;AAAA,EAC1G;AAEA,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,IAAA,CAAK,SAAA,EAAU;AAClC,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,IAAI;AACF,IAAA,WAAS;AACP,MAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,MAAA,IAAI,IAAA,EAAM;AACV,MAAA,MAAA,IAAU,QAAQ,MAAA,CAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAChD,MAAA,IAAI,GAAA;AACJ,MAAA,OAAA,CAAQ,GAAA,GAAM,MAAA,CAAO,OAAA,CAAQ,MAAM,MAAM,CAAA,EAAG;AAC1C,QAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA;AACjC,QAAA,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,GAAA,GAAM,CAAC,CAAA;AAC7B,QAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA,EAAG;AACpC,UAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,EAAG;AAC/B,UAAA,IAAI;AACF,YAAA,MAAM,KAAK,KAAA,CAAM,IAAA,CAAK,MAAM,CAAC,CAAA,CAAE,MAAM,CAAA;AAAA,UACvC,CAAA,CAAA,MAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA,SAAE;AAEA,IAAA,MAAA,CAAO,WAAA,EAAY;AACnB,IAAA,MAAM,GAAA,CAAI,IAAA,CAAK,MAAA,EAAO,CAAE,MAAM,MAAM;AAAA,IAAC,CAAC,CAAA;AAAA,EACxC;AACF","file":"chunk-JMOKD6ZP.js","sourcesContent":["import { NodaroError, throwFromResponse } from \"./errors.js\"\n\n/**\n * The ONE server-sent-event reader in this package.\n *\n * Every streaming route here writes the same minimal shape — `data: <json>\\n\\n`\n * frames, with the event kind INSIDE the JSON rather than on an `event:` line —\n * so one reader serves them all, and a second hand-rolled parse loop is the\n * thing this file exists to prevent. Deliberately minimal, matching the\n * server's writer rather than the whole SSE grammar: split on blank lines,\n * JSON-parse each `data:` line on its own, skip what does not parse (the next\n * frame re-reports state), and ignore every other line — keepalive comments\n * (`: keepalive`) included.\n *\n * Frames are separated by a bare `\\n\\n` and each `data:` line is parsed on its\n * own, exactly as the server writes them. Both halves are literal: a stream\n * whose frames arrive CRLF-terminated, or whose JSON was split across two\n * `data:` lines, yields NOTHING rather than erroring — so an intermediary that\n * normalises line endings would show up as an empty stream, not a parse\n * failure. The server's writer produces neither shape.\n *\n * No timeout is applied. The caller owns the lifetime: pass the `AbortSignal`\n * to the `fetch` that produced `res`, or just stop iterating — the `finally`\n * cancels the body, which ends the HTTP request.\n */\nexport async function* readSseStream<T>(\n res: Response,\n opts: {\n /** Names the stream in the \"no response body\" error. */\n label?: string\n } = {},\n): AsyncGenerator<T, void, undefined> {\n if (!res.ok) {\n let errBody: Record<string, unknown> = {}\n try {\n errBody = (await res.json()) as Record<string, unknown>\n } catch {\n // Empty/non-JSON body — fall through with empty errBody\n }\n throwFromResponse(res.status, errBody)\n }\n if (!res.body) {\n throw new NodaroError(`${opts.label ?? \"event stream\"} has no response body`, \"empty_stream\", res.status)\n }\n\n const reader = res.body.getReader()\n const decoder = new TextDecoder()\n let buffer = \"\"\n try {\n for (;;) {\n const { done, value } = await reader.read()\n if (done) break\n buffer += decoder.decode(value, { stream: true })\n let sep: number\n while ((sep = buffer.indexOf(\"\\n\\n\")) >= 0) {\n const frame = buffer.slice(0, sep)\n buffer = buffer.slice(sep + 2)\n for (const line of frame.split(\"\\n\")) {\n if (!line.startsWith(\"data:\")) continue\n try {\n yield JSON.parse(line.slice(5).trim()) as T\n } catch {\n // Skip malformed frames — the next tick re-reports full state.\n }\n }\n }\n }\n } finally {\n // Ends the HTTP request when the consumer breaks out of the loop early.\n reader.releaseLock()\n await res.body.cancel().catch(() => {})\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/sse.ts"],"names":[],"mappings":";;;AAyBA,gBAAuB,aAAA,CACrB,GAAA,EACA,IAAA,GAGI,EAAC,EAC+B;AACpC,EAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,IAAA,IAAI,UAAmC,EAAC;AACxC,IAAA,IAAI;AACF,MAAA,OAAA,GAAW,MAAM,IAAI,IAAA,EAAK;AAAA,IAC5B,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,iBAAA,CAAkB,GAAA,CAAI,QAAQ,OAAO,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,CAAC,IAAI,IAAA,EAAM;AACb,IAAA,MAAM,IAAI,YAAY,CAAA,EAAG,IAAA,CAAK,SAAS,cAAc,CAAA,qBAAA,CAAA,EAAyB,cAAA,EAAgB,GAAA,CAAI,MAAM,CAAA;AAAA,EAC1G;AAEA,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,IAAA,CAAK,SAAA,EAAU;AAClC,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,IAAI;AACF,IAAA,WAAS;AACP,MAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,MAAA,IAAI,IAAA,EAAM;AACV,MAAA,MAAA,IAAU,QAAQ,MAAA,CAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAChD,MAAA,IAAI,GAAA;AACJ,MAAA,OAAA,CAAQ,GAAA,GAAM,MAAA,CAAO,OAAA,CAAQ,MAAM,MAAM,CAAA,EAAG;AAC1C,QAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA;AACjC,QAAA,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,GAAA,GAAM,CAAC,CAAA;AAC7B,QAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA,EAAG;AACpC,UAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,EAAG;AAC/B,UAAA,IAAI;AACF,YAAA,MAAM,KAAK,KAAA,CAAM,IAAA,CAAK,MAAM,CAAC,CAAA,CAAE,MAAM,CAAA;AAAA,UACvC,CAAA,CAAA,MAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA,SAAE;AAEA,IAAA,MAAA,CAAO,WAAA,EAAY;AACnB,IAAA,MAAM,GAAA,CAAI,IAAA,CAAK,MAAA,EAAO,CAAE,MAAM,MAAM;AAAA,IAAC,CAAC,CAAA;AAAA,EACxC;AACF","file":"chunk-7CUWAVWB.js","sourcesContent":["import { NodaroError, throwFromResponse } from \"./errors.js\"\n\n/**\n * The ONE server-sent-event reader in this package.\n *\n * Every streaming route here writes the same minimal shape — `data: <json>\\n\\n`\n * frames, with the event kind INSIDE the JSON rather than on an `event:` line —\n * so one reader serves them all, and a second hand-rolled parse loop is the\n * thing this file exists to prevent. Deliberately minimal, matching the\n * server's writer rather than the whole SSE grammar: split on blank lines,\n * JSON-parse each `data:` line on its own, skip what does not parse (the next\n * frame re-reports state), and ignore every other line — keepalive comments\n * (`: keepalive`) included.\n *\n * Frames are separated by a bare `\\n\\n` and each `data:` line is parsed on its\n * own, exactly as the server writes them. Both halves are literal: a stream\n * whose frames arrive CRLF-terminated, or whose JSON was split across two\n * `data:` lines, yields NOTHING rather than erroring — so an intermediary that\n * normalises line endings would show up as an empty stream, not a parse\n * failure. The server's writer produces neither shape.\n *\n * No timeout is applied. The caller owns the lifetime: pass the `AbortSignal`\n * to the `fetch` that produced `res`, or just stop iterating — the `finally`\n * cancels the body, which ends the HTTP request.\n */\nexport async function* readSseStream<T>(\n res: Response,\n opts: {\n /** Names the stream in the \"no response body\" error. */\n label?: string\n } = {},\n): AsyncGenerator<T, void, undefined> {\n if (!res.ok) {\n let errBody: Record<string, unknown> = {}\n try {\n errBody = (await res.json()) as Record<string, unknown>\n } catch {\n // Empty/non-JSON body — fall through with empty errBody\n }\n throwFromResponse(res.status, errBody)\n }\n if (!res.body) {\n throw new NodaroError(`${opts.label ?? \"event stream\"} has no response body`, \"empty_stream\", res.status)\n }\n\n const reader = res.body.getReader()\n const decoder = new TextDecoder()\n let buffer = \"\"\n try {\n for (;;) {\n const { done, value } = await reader.read()\n if (done) break\n buffer += decoder.decode(value, { stream: true })\n let sep: number\n while ((sep = buffer.indexOf(\"\\n\\n\")) >= 0) {\n const frame = buffer.slice(0, sep)\n buffer = buffer.slice(sep + 2)\n for (const line of frame.split(\"\\n\")) {\n if (!line.startsWith(\"data:\")) continue\n try {\n yield JSON.parse(line.slice(5).trim()) as T\n } catch {\n // Skip malformed frames — the next tick re-reports full state.\n }\n }\n }\n }\n } finally {\n // Ends the HTTP request when the consumer breaks out of the loop early.\n reader.releaseLock()\n await res.body.cancel().catch(() => {})\n }\n}\n"]}
@@ -26,6 +26,18 @@ var JobsResource = class {
26
26
  query: { ...rest, status: listParam(status), type: listParam(type) }
27
27
  });
28
28
  }
29
+ /**
30
+ * Record an image edited in the browser as a job (`POST /v1/jobs/from-upload`):
31
+ * a completed, private, free `image-edit` job whose `output_data.imageUrl` is
32
+ * the upload, linked to its source in `input_data` (`sourceJobId` /
33
+ * `sourceAssetId`, `sourceImageUrl`). It then lists, rates, favorites and
34
+ * files into a session like any image job. One upload is one job: the same
35
+ * `assetId` again returns the same job. OAuth apps need the `assets:write`
36
+ * scope. A deployment's job policy can refuse the image ({@link JobBlockedError}).
37
+ */
38
+ fromUpload(params) {
39
+ return this.client.request("POST", "/v1/jobs/from-upload", { body: params });
40
+ }
29
41
  /**
30
42
  * Rate one of your jobs `"good"` or `"bad"`, or clear the rating with
31
43
  * `null` (`PUT /v1/jobs/:id/rating`). Only the job's owner rates it — anyone
@@ -51,7 +63,12 @@ var JobsResource = class {
51
63
  }
52
64
  /**
53
65
  * Cancel a job. Server route is `POST /v1/jobs/:jobId/cancel`.
54
- * Refunds any reserved credit holds.
66
+ * Refunds any reserved credit holds. A running LLM job priced per model
67
+ * (metered) whose call has already started answers
68
+ * `{ success: true, cancelled: 0, inFlight: true }`: it finishes and is
69
+ * charged only what it used. A job stopped before its call starts is
70
+ * refunded, except for what an earlier attempt of the same job already used
71
+ * (a retry after a billed attempt): that is charged.
55
72
  */
56
73
  cancel(id) {
57
74
  return this.client.request(
@@ -74,5 +91,5 @@ var JobsResource = class {
74
91
  };
75
92
 
76
93
  export { JobsResource };
77
- //# sourceMappingURL=chunk-E5BM4BLO.js.map
78
- //# sourceMappingURL=chunk-E5BM4BLO.js.map
94
+ //# sourceMappingURL=chunk-7IWVDWSP.js.map
95
+ //# sourceMappingURL=chunk-7IWVDWSP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/jobs.ts"],"names":[],"mappings":";AA0PA,SAAS,UAAU,KAAA,EAAmE;AACpF,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,MAAA;AAChC,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,KAAA,CAAM,KAAK,GAAG,CAAA;AAC3D;AAgCO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,MAAA,EAA0B;AAA1B,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAA2B;AAAA,EAA3B,MAAA;AAAA;AAAA,EAGpB,IAAI,EAAA,EAAoC;AACtC,IAAA,OAAO,IAAA,CAAK,OAAO,OAAA,CAAQ,KAAA,EAAO,YAAY,kBAAA,CAAmB,EAAE,CAAC,CAAA,CAAE,CAAA;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,IAAA,CAAK,MAAA,GAAyB,EAAC,EAA0B;AACvD,IAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAM,GAAG,MAAK,GAAI,MAAA;AAClC,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAsB,KAAA,EAAO,UAAA,EAAY;AAAA,MAC1D,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,SAAA,CAAU,MAAM,CAAA,EAAG,IAAA,EAAM,SAAA,CAAU,IAAI,CAAA;AAAE,KACpE,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,WAAW,MAAA,EAAqD;AAC9D,IAAA,OAAO,IAAA,CAAK,OAAO,OAAA,CAAuB,MAAA,EAAQ,wBAAwB,EAAE,IAAA,EAAM,QAAQ,CAAA;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAA,CAAK,IAAY,MAAA,EAAkD;AACjE,IAAA,OAAO,IAAA,CAAK,OAAO,OAAA,CAAuB,KAAA,EAAO,YAAY,kBAAA,CAAmB,EAAE,CAAC,CAAA,OAAA,CAAA,EAAW;AAAA,MAC5F,IAAA,EAAM,EAAE,MAAA;AAAO,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,UAAU,EAAA,EAAgD;AACxD,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,KAAA;AAAA,MACA,CAAA,SAAA,EAAY,kBAAA,CAAmB,EAAE,CAAC,CAAA,OAAA;AAAA,KACpC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,EAAA,EAAsC;AAC3C,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,MAAA;AAAA,MACA,CAAA,SAAA,EAAY,kBAAA,CAAmB,EAAE,CAAC,CAAA,OAAA;AAAA,KACpC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,EAAA,EAAsC;AAC3C,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,QAAA;AAAA,MACA,CAAA,SAAA,EAAY,kBAAA,CAAmB,EAAE,CAAC,CAAA;AAAA,KACpC;AAAA,EACF;AACF","file":"chunk-7IWVDWSP.js","sourcesContent":["import type { NodaroClientCore } from \"../core.js\"\n\n/**\n * A job's lifecycle status. Hand-copied mirror of `JOB_STATUSES` in the\n * platform's `backend/src/lib/job-status.ts` — nothing links the two at build\n * time, so a new member has to be added here in the same change.\n *\n * `pending_review` is IN-FLIGHT, NOT TERMINAL: a job policy registered by the\n * deployment held the output for a human reviewer. Treat it like `processing`\n * in a `switch` — keep waiting, do not re-run — and it resolves to `completed`\n * (approved), `failed` (rejected, carrying an `error_hint` with\n * `kind: \"policy-block\"`) or `cancelled` (a held job is cancellable like any\n * in-flight job). `credit_status` reads `\"reserved\"` for the whole hold. Only\n * appears on deployments that register a job policy; `runAndWait` throws\n * {@link JobHeldError} on the first held tick rather than waiting it out.\n */\nexport type JobStatus =\n | \"pending\"\n | \"queued\"\n | \"processing\"\n | \"pending_review\"\n | \"completed\"\n | \"failed\"\n | \"cancelled\"\n\n/**\n * A PROVIDER's verdict: the model's own safety filter refused the output.\n * `class` distinguishes a deterministic block (copyright/likeness — retrying\n * the same request never helps) from `safety`, whose filter is known to be\n * non-deterministic for some models: `retried` says whether the worker\n * already spent its one extra attempt, and `suggestedProvider` — present\n * only when the catalog declares a fallback for the model that failed — is a\n * real model id the SAME prompt/references can be retried on.\n */\nexport type SafetyBlockHint = {\n kind: \"safety-block\"\n class: \"copyright\" | \"likeness\" | \"safety\"\n retried: boolean\n suggestedProvider?: string\n /**\n * Present when the provider refused the INPUT VIDEO itself — not the prompt,\n * a reference image or the output. Sending a different clip is the fix.\n */\n subject?: \"input_video\"\n}\n\n/**\n * A NODARO-side verdict, not a provider's: a job policy registered by the\n * deployment rejected the request (`hookPoint: \"request\"` — nothing ran, and\n * the call itself failed with {@link JobBlockedError}) or the finished output\n * (`hookPoint: \"result\"` — the result was blocked and never published).\n *\n * `reason` is USER-SAFE BY CONTRACT — the platform guarantees the policy's\n * machine text (scores, labels) never reaches it — so show it to the person\n * who made the request as-is. `policyId` identifies the deployment's policy,\n * not a Nodaro product feature. Only occurs on deployments that register a\n * job policy.\n */\nexport type PolicyBlockHint = {\n kind: \"policy-block\"\n policyId: string\n reason: string\n hookPoint: \"request\" | \"result\"\n}\n\n/**\n * The job ran out of credits partway: a step that reserves its own credits\n * (for example, the video a Cast Swap or trend run dispatches) was refused —\n * the balance could not cover it, or a plan or workspace cap was reached. The\n * job failed and its credits were refunded; ask the person to top up (or raise\n * the cap), then run it again.\n *\n * `code` is the refusal's own code, a lowercase snake_case token — for\n * example `insufficient_credits`, `free_video_limit`, `instance_cap_reached`,\n * `budget_exceeded`, `member_cap_exceeded` or `user_allowance_exceeded`. Treat\n * an unknown code like `insufficient_credits`.\n */\nexport type CreditsHint = {\n kind: \"credits\"\n code: string\n}\n\n/**\n * The provider refused the job's input video without naming a content-policy\n * class (its message is about the file, not a policy). Treat it like any\n * other failure — no fallback model is offered — except that the input to\n * change is known: send a different clip.\n */\nexport type InputRefusedHint = {\n kind: \"input-refused\"\n subject: \"input_video\"\n}\n\n/**\n * A job's `jobs.error_hint` (migration 376) — a user-safe, machine-readable\n * failure verdict, so a caller can act on it without parsing `error_message`\n * prose. One column, several verdict sources; `kind` is the discriminant.\n *\n * HAND-COPIED MIRROR of `ErrorHint` in the platform's\n * `backend/src/lib/safety-block.ts` (which names this file in its own\n * comment). Nothing links the two at build time: a new arm there has to be\n * pasted here verbatim in the same change, with a changeset.\n * `packages/client/dist/index.d.ts` is REBUILT, never hand-edited.\n */\nexport type JobErrorHint = SafetyBlockHint | PolicyBlockHint | CreditsHint | InputRefusedHint\n\n/**\n * The billing lifecycle of a job's credit reservation — `usage_logs.status`\n * for the job's `usage_log_id`. `null` when the job has no usage log (e.g. a\n * free run) or hasn't reserved credits yet.\n */\nexport type CreditStatus = \"reserved\" | \"committed\" | \"refunded\"\n\n/** A job owner's rating of their job — set with {@link JobsResource.rate}. */\nexport type JobRating = \"good\" | \"bad\"\n\n/**\n * The `rating` filter of {@link JobsResource.list}: one rating, any rating\n * (`\"rated\"`) or none (`\"unrated\"`).\n */\nexport type JobRatingFilter = JobRating | \"rated\" | \"unrated\"\n\n/**\n * Job record returned to non-admin SDK consumers. Field names are snake_case\n * to match the wire format (per the OpenAPI fix in Phase 1).\n *\n * Sensitive fields stripped server-side for non-admin callers:\n * `provider`, `provider_cost`, `display_cost`, `credits_actual`. USD\n * pricing is admin-only across api/sdk/mcp — non-admin consumers see\n * only the `credits` abstraction. Server-only nested job data (including\n * Recast's private remux base) is stripped for every caller, including admins.\n */\nexport interface Job {\n id: string\n status: JobStatus\n progress: number\n user_id: string\n input_data: unknown\n output_data: unknown\n error_message: string | null\n /** Present on a failed job the worker classified as a provider\n * content-policy block (`kind: \"safety-block\"`) or that a deployment's job\n * policy rejected (`kind: \"policy-block\"`); absent/null otherwise.\n * User-safe by construction — narrow on `kind` before reading the rest. */\n error_hint?: JobErrorHint | null\n /** PR9: the job's credit reservation lifecycle, derived server-side from\n * `usage_logs.status`. `null` when there is no usage log to report. Never\n * changes the meaning of `credits` (the reserved amount) below. */\n credit_status?: CreditStatus | null\n /** The credits HELD when the job was accepted. Never changes — a job can\n * settle below it; read {@link Job.credits_charged} for what it cost. */\n credits: number | null\n /**\n * What the job actually cost once its hold settled. Can be lower than\n * `credits` (the unused part goes back to the balance), `0` when the hold was\n * refunded, `null` while the job is still running or when it reserved\n * nothing of its own. Sum this — not `credits` — to total spend. Returned by\n * `get()` and `list()`.\n */\n credits_charged?: number | null\n job_type: string | null\n created_at: string\n started_at: string | null\n completed_at: string | null\n /**\n * Provenance: which kind of caller created the job — one of\n * `\"internal\" | \"mcp\" | \"app\" | \"cli\" | \"sdk\" | \"extension\" | \"web\" | \"api\"`.\n * `source_detail` narrows it (origin host, `extension/<name>` label,\n * `sdk/<version>`, MCP client name, developer-app id). Descriptive only;\n * lets a library view label or filter media by origin.\n */\n source?: string | null\n source_detail?: string | null\n /** The generation session this job was born in (the `sessionId` sent with\n * the generation request), or null. See `client.sessions`. */\n session_id?: string | null\n /**\n * Whether the job's owner favorited it (`client.gallery.toggleFavorite`).\n * Returned by `get()` and `list()`. Absent from an older server, and when\n * the server could not read it for a moment — treat absent as unknown,\n * never as `false`.\n */\n favorited?: boolean\n /**\n * The owner's rating of the job ({@link JobsResource.rate}), or `null` when\n * unrated. Returned by `get()` and `list()`; absent like `favorited`.\n */\n rating?: JobRating | null\n}\n\nexport interface CancelJobResult {\n success: true\n cancelled: number\n /**\n * `true` when the job could not be stopped because its provider call is\n * already running — a metered LLM job's call, an external provider task. It\n * finishes and is charged only what it used.\n */\n inFlight?: boolean\n}\n\nexport interface DeleteJobResult {\n success: true\n}\n\nexport interface ListJobsParams {\n /** One status or several (a job matching any of them). An unknown status is a 400. */\n status?: JobStatus | readonly JobStatus[]\n /** Exact match on `input_data.type` — the route that created the job\n * (`\"llm-structured\"`, `\"video-analysis\"`, …). One value or several (up to 20). */\n type?: string | readonly string[]\n /** Exact match on `input_data.origin` — the client app that sent it. */\n origin?: string\n /** `true`: only jobs you favorited; `false`: only jobs you did not. */\n favorited?: boolean\n /** Your rating: `\"good\"`, `\"bad\"`, any (`\"rated\"`) or none (`\"unrated\"`). */\n rating?: JobRatingFilter\n /** The jobs of one generate-image batch (`count` / `models`) — its `batchId`. */\n batchId?: string\n /** Page size, 1–100 (server default 50). */\n limit?: number\n /** The previous page's `next`. */\n cursor?: string\n}\n\n/** What {@link JobsResource.rate} answers: the job's rating now. */\nexport interface RateJobResult {\n data: { jobId: string; rating: JobRating | null }\n}\n\n/**\n * {@link JobsResource.fromUpload}'s body: an image edited in the browser,\n * already stored with `client.uploads.upload`, and what it was made from.\n */\nexport interface JobFromUploadParams {\n /** The edited image's `assetId`, as `client.uploads.upload` returned it. */\n assetId: string\n /** The job whose image was edited. */\n sourceJobId?: string\n /** Which of `sourceJobId`'s images was edited, when it made several. Default: its `imageUrl`. */\n sourceImageUrl?: string\n /** The upload that was edited, when the source is not a job. Not with `sourceJobId`. */\n sourceAssetId?: string\n /** The editor's design state, stored with `client.uploads.uploadJson`, so the edit can be reopened. */\n editStateUrl?: string\n /** The generation session to file the job in. */\n sessionId?: string\n}\n\n/** A list filter value as the query string carries it: several are comma-separated. */\nfunction listParam(value: string | readonly string[] | undefined): string | undefined {\n if (value === undefined) return undefined\n return typeof value === \"string\" ? value : value.join(\",\")\n}\n\nexport interface ListJobsPage {\n /**\n * A page may hold fewer than `limit` rows — even none — and still carry a\n * `next`. Page on `next`, never on `data.length`.\n */\n data: Job[]\n /** Pass back as `cursor` for the next page; `null` on the last one. */\n next: string | null\n}\n\n/**\n * Lean job status returned by `GET /v1/jobs/:id/status`. Skips the\n * `input_data` JSONB and cost columns. Its `output_data` still goes\n * through the server-only nested-field redaction. Intended for poll loops that\n * only need progress/output/error, and when the job finished.\n */\nexport interface JobStatusResult {\n id: string\n status: JobStatus\n progress?: number\n output_data?: unknown\n error_message?: string | null\n /** PR9: see {@link Job.error_hint}. */\n error_hint?: JobErrorHint | null\n /** PR9: see {@link Job.credit_status}. */\n credit_status?: CreditStatus | null\n /** When the job finished, on the server's clock; null until it has. */\n completed_at?: string | null\n}\n\nexport class JobsResource {\n constructor(private client: NodaroClientCore) {}\n\n /** Get a single job by ID. */\n get(id: string): Promise<{ data: Job }> {\n return this.client.request(\"GET\", `/v1/jobs/${encodeURIComponent(id)}`)\n }\n\n /**\n * Your jobs, newest first (`GET /v1/jobs`), cursor-paginated. `type` and\n * `origin` filter on the job's own `input_data`, which every job carries —\n * a client app lists its runs with `{ type: \"llm-structured\", origin: \"studio\" }`.\n * `status` and `type` take one value or a list; `favorited` and `rating`\n * filter on your own marks. Every filter combines with AND, and each job\n * carries `favorited` and `rating`.\n */\n list(params: ListJobsParams = {}): Promise<ListJobsPage> {\n const { status, type, ...rest } = params\n return this.client.request<ListJobsPage>(\"GET\", \"/v1/jobs\", {\n query: { ...rest, status: listParam(status), type: listParam(type) },\n })\n }\n\n /**\n * Record an image edited in the browser as a job (`POST /v1/jobs/from-upload`):\n * a completed, private, free `image-edit` job whose `output_data.imageUrl` is\n * the upload, linked to its source in `input_data` (`sourceJobId` /\n * `sourceAssetId`, `sourceImageUrl`). It then lists, rates, favorites and\n * files into a session like any image job. One upload is one job: the same\n * `assetId` again returns the same job. OAuth apps need the `assets:write`\n * scope. A deployment's job policy can refuse the image ({@link JobBlockedError}).\n */\n fromUpload(params: JobFromUploadParams): Promise<{ data: Job }> {\n return this.client.request<{ data: Job }>(\"POST\", \"/v1/jobs/from-upload\", { body: params })\n }\n\n /**\n * Rate one of your jobs `\"good\"` or `\"bad\"`, or clear the rating with\n * `null` (`PUT /v1/jobs/:id/rating`). Only the job's owner rates it — anyone\n * else's job is a `NotFoundError`. The rating reads back as `Job.rating`\n * and filters {@link list}. OAuth apps need the `assets:write` scope.\n */\n rate(id: string, rating: JobRating | null): Promise<RateJobResult> {\n return this.client.request<RateJobResult>(\"PUT\", `/v1/jobs/${encodeURIComponent(id)}/rating`, {\n body: { rating },\n })\n }\n\n /**\n * Get the lean status of a single job (poll-loop friendly).\n * Hits `GET /v1/jobs/:id/status` — returns only id/status/progress/\n * output_data/error_message, with far less wire/CPU cost than `get()`.\n * Same auth + ownership semantics as {@link get}.\n */\n getStatus(id: string): Promise<{ data: JobStatusResult }> {\n return this.client.request(\n \"GET\",\n `/v1/jobs/${encodeURIComponent(id)}/status`,\n )\n }\n\n /**\n * Cancel a job. Server route is `POST /v1/jobs/:jobId/cancel`.\n * Refunds any reserved credit holds. A running LLM job priced per model\n * (metered) whose call has already started answers\n * `{ success: true, cancelled: 0, inFlight: true }`: it finishes and is\n * charged only what it used. A job stopped before its call starts is\n * refunded, except for what an earlier attempt of the same job already used\n * (a retry after a billed attempt): that is charged.\n */\n cancel(id: string): Promise<CancelJobResult> {\n return this.client.request(\n \"POST\",\n `/v1/jobs/${encodeURIComponent(id)}/cancel`,\n )\n }\n\n /**\n * Delete a job and the private media it produced. Server route is\n * `DELETE /v1/jobs/:jobId`. Only the job's owner (or an admin) may delete it;\n * a job that is still running is deleted as-is — cancel it first when its\n * worker should stop ({@link cancel}).\n */\n delete(id: string): Promise<DeleteJobResult> {\n return this.client.request(\n \"DELETE\",\n `/v1/jobs/${encodeURIComponent(id)}`,\n )\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkN6GLZOE4_cjs = require('./chunk-N6GLZOE4.cjs');
3
+ var chunkFM2KM5TY_cjs = require('./chunk-FM2KM5TY.cjs');
4
4
  var edl = require('@nodaro/shared/edl');
5
5
  var nodes = require('@nodaro/shared/nodes');
6
6
 
@@ -277,7 +277,7 @@ var EditResource = class {
277
277
  */
278
278
  async continueUseCase(input, options) {
279
279
  if (input.nodeType !== void 0 && !nodes.isUseCaseNodeType(input.nodeType)) {
280
- throw new chunkN6GLZOE4_cjs.NodaroError(
280
+ throw new chunkFM2KM5TY_cjs.NodaroError(
281
281
  `continueUseCase: nodeType "${String(input.nodeType)}" is not a use-case node type (${nodes.USE_CASE_NODE_TYPES.join(", ")})`,
282
282
  "invalid_node_type",
283
283
  400
@@ -298,12 +298,12 @@ var EditResource = class {
298
298
  * Any other failure of the read, any other 403 included, is thrown as is.
299
299
  */
300
300
  async runTypeOf(jobId) {
301
- const unknown = () => new chunkN6GLZOE4_cjs.NodaroError("continueUseCase: the run's node type cannot be read \u2014 pass nodeType", "use_case_type_unknown", 400);
301
+ const unknown = () => new chunkFM2KM5TY_cjs.NodaroError("continueUseCase: the run's node type cannot be read \u2014 pass nodeType", "use_case_type_unknown", 400);
302
302
  let row;
303
303
  try {
304
304
  row = (await this.client.request("GET", `/v1/jobs/${encodeURIComponent(jobId)}`)).data;
305
305
  } catch (err) {
306
- if (err instanceof chunkN6GLZOE4_cjs.ForbiddenError && err.missingScope === "jobs:read") throw unknown();
306
+ if (err instanceof chunkFM2KM5TY_cjs.ForbiddenError && err.missingScope === "jobs:read") throw unknown();
307
307
  throw err;
308
308
  }
309
309
  const input = row?.input_data;
@@ -330,7 +330,7 @@ var EditResource = class {
330
330
  });
331
331
  if (!planned.ok) {
332
332
  const message = planned.issues.map((issue) => edl.describeAudioSyncOffsetIssue(issue)).join("; ");
333
- return Promise.reject(new chunkN6GLZOE4_cjs.NodaroError(`editPlan: ${message}`, "edit_plan_sources", 400));
333
+ return Promise.reject(new chunkFM2KM5TY_cjs.NodaroError(`editPlan: ${message}`, "edit_plan_sources", 400));
334
334
  }
335
335
  const transcript = planned.transcriptSourceId ? { ...input.transcript, sourceId: planned.transcriptSourceId } : input.transcript;
336
336
  return this.client.request("POST", "/v1/edit-plan", {
@@ -360,14 +360,14 @@ var EditResource = class {
360
360
  */
361
361
  cameraSwitch(input) {
362
362
  if (edl.transcriptSpeakerLabels(input.transcript).length === 0) {
363
- return Promise.reject(new chunkN6GLZOE4_cjs.NodaroError(
363
+ return Promise.reject(new chunkFM2KM5TY_cjs.NodaroError(
364
364
  "cameraSwitch: the transcript has no speaker labels \u2014 transcribe with speaker detection on",
365
365
  "no_speakers",
366
366
  422
367
367
  ));
368
368
  }
369
369
  const result = input.speakerMapResult;
370
- if (result !== void 0 && !edl.speakerMapResultOf(result)) return Promise.reject(new chunkN6GLZOE4_cjs.NodaroError("cameraSwitch: speakerMapResult is not a Speaker Map result \u2014 pass that job's output_data.json", "not_a_speaker_map", 400));
370
+ if (result !== void 0 && !edl.speakerMapResultOf(result)) return Promise.reject(new chunkFM2KM5TY_cjs.NodaroError("cameraSwitch: speakerMapResult is not a Speaker Map result \u2014 pass that job's output_data.json", "not_a_speaker_map", 400));
371
371
  const speakerMap = result !== void 0 ? edl.cameraSwitchSpeakerMap({ speakerMap: input.speakerMap }, input.edl, input.transcript, { speakerMap: result }) : input.speakerMap;
372
372
  return this.client.request("POST", "/v1/camera-switch", {
373
373
  body: {
@@ -404,5 +404,5 @@ exports.CLIP_PACK_MAX_TARGET_SEC = CLIP_PACK_MAX_TARGET_SEC;
404
404
  exports.CLIP_PACK_MIN_TARGET_SEC = CLIP_PACK_MIN_TARGET_SEC;
405
405
  exports.EditResource = EditResource;
406
406
  exports.TRAILER_FORMATS = TRAILER_FORMATS;
407
- //# sourceMappingURL=chunk-RHJRLXKY.cjs.map
408
- //# sourceMappingURL=chunk-RHJRLXKY.cjs.map
407
+ //# sourceMappingURL=chunk-7XOK277W.cjs.map
408
+ //# sourceMappingURL=chunk-7XOK277W.cjs.map