@nodaro/sdk 2.29.0 → 2.31.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 (716) hide show
  1. package/README.md +31 -0
  2. package/dist/chunk-2DZWWIJ4.cjs +32 -0
  3. package/dist/chunk-2DZWWIJ4.cjs.map +1 -0
  4. package/dist/chunk-34PU2DAT.cjs +118 -0
  5. package/dist/chunk-34PU2DAT.cjs.map +1 -0
  6. package/dist/chunk-37Y5QAVA.js +3 -0
  7. package/dist/chunk-37Y5QAVA.js.map +1 -0
  8. package/dist/chunk-37YCKZX4.cjs +4 -0
  9. package/dist/chunk-37YCKZX4.cjs.map +1 -0
  10. package/dist/chunk-3B47IHB3.cjs +65 -0
  11. package/dist/chunk-3B47IHB3.cjs.map +1 -0
  12. package/dist/chunk-3BELHJBN.cjs +4 -0
  13. package/dist/chunk-3BELHJBN.cjs.map +1 -0
  14. package/dist/chunk-3PPSGM5X.js +3 -0
  15. package/dist/chunk-3PPSGM5X.js.map +1 -0
  16. package/dist/chunk-3QBH2VE2.cjs +80 -0
  17. package/dist/chunk-3QBH2VE2.cjs.map +1 -0
  18. package/dist/chunk-3QFTP5P5.js +102 -0
  19. package/dist/chunk-3QFTP5P5.js.map +1 -0
  20. package/dist/chunk-43FVH6LJ.cjs +123 -0
  21. package/dist/chunk-43FVH6LJ.cjs.map +1 -0
  22. package/dist/chunk-43NO4SGC.cjs +4 -0
  23. package/dist/chunk-43NO4SGC.cjs.map +1 -0
  24. package/dist/chunk-45CK55BH.cjs +4 -0
  25. package/dist/chunk-45CK55BH.cjs.map +1 -0
  26. package/dist/chunk-4NLVBYMW.js +280 -0
  27. package/dist/chunk-4NLVBYMW.js.map +1 -0
  28. package/dist/chunk-4WRDR4GN.js +102 -0
  29. package/dist/chunk-4WRDR4GN.js.map +1 -0
  30. package/dist/chunk-4WWSHV5G.cjs +4 -0
  31. package/dist/chunk-4WWSHV5G.cjs.map +1 -0
  32. package/dist/chunk-53SXNN3A.js +80 -0
  33. package/dist/chunk-53SXNN3A.js.map +1 -0
  34. package/dist/chunk-5ALNFATQ.cjs +27 -0
  35. package/dist/chunk-5ALNFATQ.cjs.map +1 -0
  36. package/dist/chunk-5UQNMNUE.cjs +4 -0
  37. package/dist/chunk-5UQNMNUE.cjs.map +1 -0
  38. package/dist/chunk-5WAI7VGO.js +184 -0
  39. package/dist/chunk-5WAI7VGO.js.map +1 -0
  40. package/dist/chunk-65E3JBFZ.js +52 -0
  41. package/dist/chunk-65E3JBFZ.js.map +1 -0
  42. package/dist/chunk-6JFNBAKV.js +3 -0
  43. package/dist/chunk-6JFNBAKV.js.map +1 -0
  44. package/dist/chunk-6OC6OKLY.cjs +4 -0
  45. package/dist/chunk-6OC6OKLY.cjs.map +1 -0
  46. package/dist/chunk-6OGGJQVA.js +25 -0
  47. package/dist/chunk-6OGGJQVA.js.map +1 -0
  48. package/dist/chunk-7A7HYFGM.js +3 -0
  49. package/dist/chunk-7A7HYFGM.js.map +1 -0
  50. package/dist/chunk-7ISSKQ6S.cjs +106 -0
  51. package/dist/chunk-7ISSKQ6S.cjs.map +1 -0
  52. package/dist/chunk-7LSFG2AF.js +194 -0
  53. package/dist/chunk-7LSFG2AF.js.map +1 -0
  54. package/dist/chunk-7MYKT2L4.cjs +4 -0
  55. package/dist/chunk-7MYKT2L4.cjs.map +1 -0
  56. package/dist/chunk-7QOCWJKD.cjs +25 -0
  57. package/dist/chunk-7QOCWJKD.cjs.map +1 -0
  58. package/dist/chunk-A2ZAFAWC.cjs +4 -0
  59. package/dist/chunk-A2ZAFAWC.cjs.map +1 -0
  60. package/dist/chunk-A3S55XGF.cjs +54 -0
  61. package/dist/chunk-A3S55XGF.cjs.map +1 -0
  62. package/dist/chunk-A3THLBFG.js +3 -0
  63. package/dist/chunk-A3THLBFG.js.map +1 -0
  64. package/dist/chunk-AJVSMNPZ.js +78 -0
  65. package/dist/chunk-AJVSMNPZ.js.map +1 -0
  66. package/dist/chunk-ALSLZG3U.js +124 -0
  67. package/dist/chunk-ALSLZG3U.js.map +1 -0
  68. package/dist/chunk-ALUUBPDG.cjs +4 -0
  69. package/dist/chunk-ALUUBPDG.cjs.map +1 -0
  70. package/dist/chunk-AO3W45LT.cjs +4 -0
  71. package/dist/chunk-AO3W45LT.cjs.map +1 -0
  72. package/dist/chunk-AUDHV3OE.js +3 -0
  73. package/dist/chunk-AUDHV3OE.js.map +1 -0
  74. package/dist/chunk-BAL576G2.cjs +4 -0
  75. package/dist/chunk-BAL576G2.cjs.map +1 -0
  76. package/dist/chunk-BFMKPELU.cjs +212 -0
  77. package/dist/chunk-BFMKPELU.cjs.map +1 -0
  78. package/dist/chunk-BKP6F2IX.js +3 -0
  79. package/dist/chunk-BKP6F2IX.js.map +1 -0
  80. package/dist/chunk-BLA44UCM.js +32 -0
  81. package/dist/chunk-BLA44UCM.js.map +1 -0
  82. package/dist/chunk-BPWUWUZ3.cjs +20 -0
  83. package/dist/chunk-BPWUWUZ3.cjs.map +1 -0
  84. package/dist/chunk-BRV7Z4GD.cjs +17 -0
  85. package/dist/chunk-BRV7Z4GD.cjs.map +1 -0
  86. package/dist/chunk-BU5A6K4C.js +122 -0
  87. package/dist/chunk-BU5A6K4C.js.map +1 -0
  88. package/dist/chunk-C22RJDW3.js +3 -0
  89. package/dist/chunk-C22RJDW3.js.map +1 -0
  90. package/dist/chunk-CGNVHN4V.js +3 -0
  91. package/dist/chunk-CGNVHN4V.js.map +1 -0
  92. package/dist/chunk-CJFIOVBA.js +3 -0
  93. package/dist/chunk-CJFIOVBA.js.map +1 -0
  94. package/dist/chunk-CJLLIVSB.cjs +4 -0
  95. package/dist/chunk-CJLLIVSB.cjs.map +1 -0
  96. package/dist/chunk-CK3AMMSC.js +194 -0
  97. package/dist/chunk-CK3AMMSC.js.map +1 -0
  98. package/dist/chunk-COCKKMNP.cjs +205 -0
  99. package/dist/chunk-COCKKMNP.cjs.map +1 -0
  100. package/dist/chunk-CR5E2SF3.cjs +212 -0
  101. package/dist/chunk-CR5E2SF3.cjs.map +1 -0
  102. package/dist/chunk-CRCPRZFN.js +3 -0
  103. package/dist/chunk-CRCPRZFN.js.map +1 -0
  104. package/dist/chunk-CYRFD6KR.cjs +4 -0
  105. package/dist/chunk-CYRFD6KR.cjs.map +1 -0
  106. package/dist/chunk-D3PW7AHZ.js +3 -0
  107. package/dist/chunk-D3PW7AHZ.js.map +1 -0
  108. package/dist/chunk-DKEYSJCE.cjs +82 -0
  109. package/dist/chunk-DKEYSJCE.cjs.map +1 -0
  110. package/dist/chunk-DPSMVOM3.js +15 -0
  111. package/dist/chunk-DPSMVOM3.js.map +1 -0
  112. package/dist/chunk-E2ZXHS6E.js +20 -0
  113. package/dist/chunk-E2ZXHS6E.js.map +1 -0
  114. package/dist/chunk-E37CVHWW.js +33 -0
  115. package/dist/chunk-E37CVHWW.js.map +1 -0
  116. package/dist/chunk-E5BM4BLO.js +78 -0
  117. package/dist/chunk-E5BM4BLO.js.map +1 -0
  118. package/dist/chunk-EHRWTYGR.cjs +4 -0
  119. package/dist/chunk-EHRWTYGR.cjs.map +1 -0
  120. package/dist/chunk-EJSGJDZY.js +212 -0
  121. package/dist/chunk-EJSGJDZY.js.map +1 -0
  122. package/dist/chunk-ELSOVJPF.js +3 -0
  123. package/dist/chunk-ELSOVJPF.js.map +1 -0
  124. package/dist/chunk-ERLXU47J.js +29 -0
  125. package/dist/chunk-ERLXU47J.js.map +1 -0
  126. package/dist/chunk-ES2E65HT.js +3 -0
  127. package/dist/chunk-ES2E65HT.js.map +1 -0
  128. package/dist/chunk-EXLAHZKF.js +3 -0
  129. package/dist/chunk-EXLAHZKF.js.map +1 -0
  130. package/dist/chunk-FHEYAW5H.js +3 -0
  131. package/dist/chunk-FHEYAW5H.js.map +1 -0
  132. package/dist/chunk-GA4LZZKQ.cjs +104 -0
  133. package/dist/chunk-GA4LZZKQ.cjs.map +1 -0
  134. package/dist/chunk-GAZJ2PA3.js +3 -0
  135. package/dist/chunk-GAZJ2PA3.js.map +1 -0
  136. package/dist/chunk-GB6C5OEZ.cjs +32 -0
  137. package/dist/chunk-GB6C5OEZ.cjs.map +1 -0
  138. package/dist/chunk-GD24ZRFD.js +3 -0
  139. package/dist/chunk-GD24ZRFD.js.map +1 -0
  140. package/dist/chunk-GI7LROLL.cjs +4 -0
  141. package/dist/chunk-GI7LROLL.cjs.map +1 -0
  142. package/dist/chunk-GRFLPEM2.cjs +16 -0
  143. package/dist/chunk-GRFLPEM2.cjs.map +1 -0
  144. package/dist/chunk-GVIFLUYZ.cjs +40 -0
  145. package/dist/chunk-GVIFLUYZ.cjs.map +1 -0
  146. package/dist/chunk-H7VQTG4M.js +35 -0
  147. package/dist/chunk-H7VQTG4M.js.map +1 -0
  148. package/dist/chunk-HAKYPZLB.cjs +242 -0
  149. package/dist/chunk-HAKYPZLB.cjs.map +1 -0
  150. package/dist/chunk-HFBR6G36.js +3 -0
  151. package/dist/chunk-HFBR6G36.js.map +1 -0
  152. package/dist/chunk-HGCVWOGK.cjs +209 -0
  153. package/dist/chunk-HGCVWOGK.cjs.map +1 -0
  154. package/dist/chunk-HLHR3R4P.js +3 -0
  155. package/dist/chunk-HLHR3R4P.js.map +1 -0
  156. package/dist/chunk-HRXXGGSJ.js +3 -0
  157. package/dist/chunk-HRXXGGSJ.js.map +1 -0
  158. package/dist/chunk-I3TYBAOX.js +3 -0
  159. package/dist/chunk-I3TYBAOX.js.map +1 -0
  160. package/dist/chunk-I4A5VJRL.js +352 -0
  161. package/dist/chunk-I4A5VJRL.js.map +1 -0
  162. package/dist/chunk-I6CXC345.js +102 -0
  163. package/dist/chunk-I6CXC345.js.map +1 -0
  164. package/dist/chunk-IGOPUMEX.cjs +4 -0
  165. package/dist/chunk-IGOPUMEX.cjs.map +1 -0
  166. package/dist/chunk-IHKIYVZQ.js +30 -0
  167. package/dist/chunk-IHKIYVZQ.js.map +1 -0
  168. package/dist/chunk-IMC2M5YM.cjs +12 -0
  169. package/dist/chunk-IMC2M5YM.cjs.map +1 -0
  170. package/dist/chunk-IQ6KWSXP.js +3 -0
  171. package/dist/chunk-IQ6KWSXP.js.map +1 -0
  172. package/dist/chunk-IS26FJO7.cjs +4 -0
  173. package/dist/chunk-IS26FJO7.cjs.map +1 -0
  174. package/dist/chunk-J4WFSKY6.js +50 -0
  175. package/dist/chunk-J4WFSKY6.js.map +1 -0
  176. package/dist/chunk-J5LGGCAS.cjs +126 -0
  177. package/dist/chunk-J5LGGCAS.cjs.map +1 -0
  178. package/dist/chunk-JDEZHITT.js +43 -0
  179. package/dist/chunk-JDEZHITT.js.map +1 -0
  180. package/dist/chunk-JGS6YBDW.js +260 -0
  181. package/dist/chunk-JGS6YBDW.js.map +1 -0
  182. package/dist/chunk-JMOKD6ZP.js +46 -0
  183. package/dist/chunk-JMOKD6ZP.js.map +1 -0
  184. package/dist/chunk-JOX5BJ6K.cjs +4 -0
  185. package/dist/chunk-JOX5BJ6K.cjs.map +1 -0
  186. package/dist/chunk-JTAW54UM.js +116 -0
  187. package/dist/chunk-JTAW54UM.js.map +1 -0
  188. package/dist/chunk-K4RQOSJH.js +203 -0
  189. package/dist/chunk-K4RQOSJH.js.map +1 -0
  190. package/dist/chunk-KAIE6WJB.cjs +4 -0
  191. package/dist/chunk-KAIE6WJB.cjs.map +1 -0
  192. package/dist/chunk-KEDPGWIK.cjs +4 -0
  193. package/dist/chunk-KEDPGWIK.cjs.map +1 -0
  194. package/dist/chunk-KG4R454Z.js +18 -0
  195. package/dist/chunk-KG4R454Z.js.map +1 -0
  196. package/dist/chunk-KGKCAGRD.cjs +22 -0
  197. package/dist/chunk-KGKCAGRD.cjs.map +1 -0
  198. package/dist/chunk-KNMW722T.cjs +48 -0
  199. package/dist/chunk-KNMW722T.cjs.map +1 -0
  200. package/dist/chunk-KTTL7BND.cjs +4 -0
  201. package/dist/chunk-KTTL7BND.cjs.map +1 -0
  202. package/dist/chunk-KXEWTYS4.cjs +80 -0
  203. package/dist/chunk-KXEWTYS4.cjs.map +1 -0
  204. package/dist/chunk-KZQKFBRN.js +3 -0
  205. package/dist/chunk-KZQKFBRN.js.map +1 -0
  206. package/dist/chunk-LAWYFC4G.cjs +37 -0
  207. package/dist/chunk-LAWYFC4G.cjs.map +1 -0
  208. package/dist/chunk-LHP2CWHD.js +228 -0
  209. package/dist/chunk-LHP2CWHD.js.map +1 -0
  210. package/dist/chunk-LHRQXWI5.js +3 -0
  211. package/dist/chunk-LHRQXWI5.js.map +1 -0
  212. package/dist/chunk-LKH5M44B.cjs +114 -0
  213. package/dist/chunk-LKH5M44B.cjs.map +1 -0
  214. package/dist/chunk-LLNNHLCE.cjs +4 -0
  215. package/dist/chunk-LLNNHLCE.cjs.map +1 -0
  216. package/dist/chunk-LWZLWSXD.cjs +4 -0
  217. package/dist/chunk-LWZLWSXD.cjs.map +1 -0
  218. package/dist/chunk-M6Y5TOYE.js +3 -0
  219. package/dist/chunk-M6Y5TOYE.js.map +1 -0
  220. package/dist/chunk-MBFUMWI5.cjs +31 -0
  221. package/dist/chunk-MBFUMWI5.cjs.map +1 -0
  222. package/dist/chunk-MEKI37WI.js +3 -0
  223. package/dist/chunk-MEKI37WI.js.map +1 -0
  224. package/dist/chunk-MQ74AKA2.cjs +200 -0
  225. package/dist/chunk-MQ74AKA2.cjs.map +1 -0
  226. package/dist/chunk-N6GLZOE4.cjs +282 -0
  227. package/dist/chunk-N6GLZOE4.cjs.map +1 -0
  228. package/dist/chunk-NBVARNVA.cjs +38 -0
  229. package/dist/chunk-NBVARNVA.cjs.map +1 -0
  230. package/dist/chunk-NCCBS6GU.js +42 -0
  231. package/dist/chunk-NCCBS6GU.js.map +1 -0
  232. package/dist/chunk-NGKODS3J.cjs +52 -0
  233. package/dist/chunk-NGKODS3J.cjs.map +1 -0
  234. package/dist/chunk-NJVSKUL2.cjs +4 -0
  235. package/dist/chunk-NJVSKUL2.cjs.map +1 -0
  236. package/dist/chunk-NLQQHJ25.cjs +104 -0
  237. package/dist/chunk-NLQQHJ25.cjs.map +1 -0
  238. package/dist/chunk-NNHWH7ER.js +181 -0
  239. package/dist/chunk-NNHWH7ER.js.map +1 -0
  240. package/dist/chunk-NX67YIF3.js +3 -0
  241. package/dist/chunk-NX67YIF3.js.map +1 -0
  242. package/dist/chunk-OA6FWYZF.cjs +4 -0
  243. package/dist/chunk-OA6FWYZF.cjs.map +1 -0
  244. package/dist/chunk-OJDBSKC2.js +3 -0
  245. package/dist/chunk-OJDBSKC2.js.map +1 -0
  246. package/dist/chunk-OLPA44QJ.js +3 -0
  247. package/dist/chunk-OLPA44QJ.js.map +1 -0
  248. package/dist/chunk-OMH7ATOQ.js +3 -0
  249. package/dist/chunk-OMH7ATOQ.js.map +1 -0
  250. package/dist/chunk-OPR4TULG.js +3 -0
  251. package/dist/chunk-OPR4TULG.js.map +1 -0
  252. package/dist/chunk-OSX2GVZ2.cjs +34 -0
  253. package/dist/chunk-OSX2GVZ2.cjs.map +1 -0
  254. package/dist/chunk-OXQKE5EG.cjs +282 -0
  255. package/dist/chunk-OXQKE5EG.cjs.map +1 -0
  256. package/dist/chunk-P6E4QDJN.js +30 -0
  257. package/dist/chunk-P6E4QDJN.js.map +1 -0
  258. package/dist/chunk-PEMLIAPZ.cjs +64 -0
  259. package/dist/chunk-PEMLIAPZ.cjs.map +1 -0
  260. package/dist/chunk-PGYQ754I.js +3 -0
  261. package/dist/chunk-PGYQ754I.js.map +1 -0
  262. package/dist/chunk-PHKYIWE4.cjs +16 -0
  263. package/dist/chunk-PHKYIWE4.cjs.map +1 -0
  264. package/dist/chunk-PMTM26LL.js +3 -0
  265. package/dist/chunk-PMTM26LL.js.map +1 -0
  266. package/dist/chunk-PY4OEKNX.cjs +4 -0
  267. package/dist/chunk-PY4OEKNX.cjs.map +1 -0
  268. package/dist/chunk-PZS2EXDR.cjs +4 -0
  269. package/dist/chunk-PZS2EXDR.cjs.map +1 -0
  270. package/dist/chunk-QITJGSFA.js +210 -0
  271. package/dist/chunk-QITJGSFA.js.map +1 -0
  272. package/dist/chunk-QRHJEITQ.cjs +4 -0
  273. package/dist/chunk-QRHJEITQ.cjs.map +1 -0
  274. package/dist/chunk-QUFU5RJ7.cjs +4 -0
  275. package/dist/chunk-QUFU5RJ7.cjs.map +1 -0
  276. package/dist/chunk-QVQCKOBM.js +3 -0
  277. package/dist/chunk-QVQCKOBM.js.map +1 -0
  278. package/dist/chunk-R63TTR35.cjs +200 -0
  279. package/dist/chunk-R63TTR35.cjs.map +1 -0
  280. package/dist/chunk-RA42NMWV.cjs +4 -0
  281. package/dist/chunk-RA42NMWV.cjs.map +1 -0
  282. package/dist/chunk-RAZN6C5R.cjs +12 -0
  283. package/dist/chunk-RAZN6C5R.cjs.map +1 -0
  284. package/dist/chunk-REUFPWM7.cjs +233 -0
  285. package/dist/chunk-REUFPWM7.cjs.map +1 -0
  286. package/dist/chunk-RHETJOUM.cjs +4 -0
  287. package/dist/chunk-RHETJOUM.cjs.map +1 -0
  288. package/dist/chunk-RJIJVVXS.js +3 -0
  289. package/dist/chunk-RJIJVVXS.js.map +1 -0
  290. package/dist/chunk-RKVRCNMB.js +3 -0
  291. package/dist/chunk-RKVRCNMB.js.map +1 -0
  292. package/dist/chunk-SBV5MWEL.cjs +53 -0
  293. package/dist/chunk-SBV5MWEL.cjs.map +1 -0
  294. package/dist/chunk-SFB4YLCS.js +121 -0
  295. package/dist/chunk-SFB4YLCS.js.map +1 -0
  296. package/dist/chunk-SLPD47SR.js +3 -0
  297. package/dist/chunk-SLPD47SR.js.map +1 -0
  298. package/dist/chunk-SS3B6PHT.cjs +35 -0
  299. package/dist/chunk-SS3B6PHT.cjs.map +1 -0
  300. package/dist/chunk-SUCHGNYT.js +3 -0
  301. package/dist/chunk-SUCHGNYT.js.map +1 -0
  302. package/dist/chunk-SYVNY3AH.cjs +44 -0
  303. package/dist/chunk-SYVNY3AH.cjs.map +1 -0
  304. package/dist/chunk-T3SYREY4.js +29 -0
  305. package/dist/chunk-T3SYREY4.js.map +1 -0
  306. package/dist/chunk-T7N7DFQJ.js +198 -0
  307. package/dist/chunk-T7N7DFQJ.js.map +1 -0
  308. package/dist/chunk-TRCENAIY.cjs +4 -0
  309. package/dist/chunk-TRCENAIY.cjs.map +1 -0
  310. package/dist/chunk-TVENC6PH.js +186 -0
  311. package/dist/chunk-TVENC6PH.js.map +1 -0
  312. package/dist/chunk-U4T3Z3K7.cjs +325 -0
  313. package/dist/chunk-U4T3Z3K7.cjs.map +1 -0
  314. package/dist/chunk-UI2NXUML.cjs +187 -0
  315. package/dist/chunk-UI2NXUML.cjs.map +1 -0
  316. package/dist/chunk-UIFFNTUX.js +3 -0
  317. package/dist/chunk-UIFFNTUX.js.map +1 -0
  318. package/dist/chunk-V4GPQ6Y2.js +3 -0
  319. package/dist/chunk-V4GPQ6Y2.js.map +1 -0
  320. package/dist/chunk-VGTRKXF2.js +93 -0
  321. package/dist/chunk-VGTRKXF2.js.map +1 -0
  322. package/dist/chunk-VGWOIWRQ.cjs +202 -0
  323. package/dist/chunk-VGWOIWRQ.cjs.map +1 -0
  324. package/dist/chunk-VLCNNA76.cjs +4 -0
  325. package/dist/chunk-VLCNNA76.cjs.map +1 -0
  326. package/dist/chunk-VPAUN75Q.js +3 -0
  327. package/dist/chunk-VPAUN75Q.js.map +1 -0
  328. package/dist/chunk-VT237QF2.js +3 -0
  329. package/dist/chunk-VT237QF2.js.map +1 -0
  330. package/dist/chunk-VV4TZG5S.js +321 -0
  331. package/dist/chunk-VV4TZG5S.js.map +1 -0
  332. package/dist/chunk-VYK6MBL4.cjs +4 -0
  333. package/dist/chunk-VYK6MBL4.cjs.map +1 -0
  334. package/dist/chunk-W33CKW6Q.cjs +4 -0
  335. package/dist/chunk-W33CKW6Q.cjs.map +1 -0
  336. package/dist/chunk-W5VHATSR.cjs +31 -0
  337. package/dist/chunk-W5VHATSR.cjs.map +1 -0
  338. package/dist/chunk-W7YI5UT3.js +3 -0
  339. package/dist/chunk-W7YI5UT3.js.map +1 -0
  340. package/dist/chunk-WEQWU2IC.js +34 -0
  341. package/dist/chunk-WEQWU2IC.js.map +1 -0
  342. package/dist/chunk-WK4VXPPZ.cjs +104 -0
  343. package/dist/chunk-WK4VXPPZ.cjs.map +1 -0
  344. package/dist/chunk-WSA4LMWR.cjs +96 -0
  345. package/dist/chunk-WSA4LMWR.cjs.map +1 -0
  346. package/dist/chunk-WUIEZ6Z4.cjs +360 -0
  347. package/dist/chunk-WUIEZ6Z4.cjs.map +1 -0
  348. package/dist/chunk-WUKIJJG2.cjs +45 -0
  349. package/dist/chunk-WUKIJJG2.cjs.map +1 -0
  350. package/dist/chunk-WVFAQBS7.js +29 -0
  351. package/dist/chunk-WVFAQBS7.js.map +1 -0
  352. package/dist/chunk-X7RDNMN7.js +3 -0
  353. package/dist/chunk-X7RDNMN7.js.map +1 -0
  354. package/dist/chunk-X7XP5WBP.cjs +4 -0
  355. package/dist/chunk-X7XP5WBP.cjs.map +1 -0
  356. package/dist/chunk-XQAIEPAZ.js +104 -0
  357. package/dist/chunk-XQAIEPAZ.js.map +1 -0
  358. package/dist/chunk-XWKNE6DH.cjs +4 -0
  359. package/dist/chunk-XWKNE6DH.cjs.map +1 -0
  360. package/dist/chunk-Y6V6CBY5.js +23 -0
  361. package/dist/chunk-Y6V6CBY5.js.map +1 -0
  362. package/dist/chunk-Y6VDCZPB.js +62 -0
  363. package/dist/chunk-Y6VDCZPB.js.map +1 -0
  364. package/dist/chunk-YDRXBRW2.cjs +184 -0
  365. package/dist/chunk-YDRXBRW2.cjs.map +1 -0
  366. package/dist/chunk-YFS2LMG4.cjs +124 -0
  367. package/dist/chunk-YFS2LMG4.cjs.map +1 -0
  368. package/dist/chunk-YN6CBIIB.js +63 -0
  369. package/dist/chunk-YN6CBIIB.js.map +1 -0
  370. package/dist/chunk-YOJ2XNQX.cjs +4 -0
  371. package/dist/chunk-YOJ2XNQX.cjs.map +1 -0
  372. package/dist/chunk-YOOZB4RL.js +3 -0
  373. package/dist/chunk-YOOZB4RL.js.map +1 -0
  374. package/dist/chunk-YVU2M7MI.js +34 -0
  375. package/dist/chunk-YVU2M7MI.js.map +1 -0
  376. package/dist/chunk-YXBZRB5H.cjs +4 -0
  377. package/dist/chunk-YXBZRB5H.cjs.map +1 -0
  378. package/dist/chunk-Z3ZKFI2M.js +43 -0
  379. package/dist/chunk-Z3ZKFI2M.js.map +1 -0
  380. package/dist/chunk-Z5GLY4R3.js +112 -0
  381. package/dist/chunk-Z5GLY4R3.js.map +1 -0
  382. package/dist/chunk-Z5OMWAQX.js +3 -0
  383. package/dist/chunk-Z5OMWAQX.js.map +1 -0
  384. package/dist/chunk-Z7LGWNI7.js +38 -0
  385. package/dist/chunk-Z7LGWNI7.js.map +1 -0
  386. package/dist/chunk-ZCWKX4V6.cjs +38 -0
  387. package/dist/chunk-ZCWKX4V6.cjs.map +1 -0
  388. package/dist/chunk-ZE5RISBZ.cjs +4 -0
  389. package/dist/chunk-ZE5RISBZ.cjs.map +1 -0
  390. package/dist/chunk-ZH4F2P2G.js +3 -0
  391. package/dist/chunk-ZH4F2P2G.js.map +1 -0
  392. package/dist/chunk-ZJGFLJ2Z.cjs +4 -0
  393. package/dist/chunk-ZJGFLJ2Z.cjs.map +1 -0
  394. package/dist/chunk-ZKBHD27K.cjs +4 -0
  395. package/dist/chunk-ZKBHD27K.cjs.map +1 -0
  396. package/dist/chunk-ZQPLRNKX.cjs +4 -0
  397. package/dist/chunk-ZQPLRNKX.cjs.map +1 -0
  398. package/dist/chunk-ZQQABQMH.cjs +31 -0
  399. package/dist/chunk-ZQQABQMH.cjs.map +1 -0
  400. package/dist/chunk-ZXJQSFIA.js +200 -0
  401. package/dist/chunk-ZXJQSFIA.js.map +1 -0
  402. package/dist/developer-apps-zSQXWmEG.d.cts +294 -0
  403. package/dist/developer-apps-zSQXWmEG.d.ts +294 -0
  404. package/dist/entries/apps.cjs +13 -0
  405. package/dist/entries/apps.cjs.map +1 -0
  406. package/dist/entries/apps.d.cts +300 -0
  407. package/dist/entries/apps.d.ts +300 -0
  408. package/dist/entries/apps.js +4 -0
  409. package/dist/entries/apps.js.map +1 -0
  410. package/dist/entries/audio.cjs +13 -0
  411. package/dist/entries/audio.cjs.map +1 -0
  412. package/dist/entries/audio.d.cts +200 -0
  413. package/dist/entries/audio.d.ts +200 -0
  414. package/dist/entries/audio.js +4 -0
  415. package/dist/entries/audio.js.map +1 -0
  416. package/dist/entries/billing.cjs +13 -0
  417. package/dist/entries/billing.cjs.map +1 -0
  418. package/dist/entries/billing.d.cts +208 -0
  419. package/dist/entries/billing.d.ts +208 -0
  420. package/dist/entries/billing.js +4 -0
  421. package/dist/entries/billing.js.map +1 -0
  422. package/dist/entries/catalogs.cjs +13 -0
  423. package/dist/entries/catalogs.cjs.map +1 -0
  424. package/dist/entries/catalogs.d.cts +82 -0
  425. package/dist/entries/catalogs.d.ts +82 -0
  426. package/dist/entries/catalogs.js +4 -0
  427. package/dist/entries/catalogs.js.map +1 -0
  428. package/dist/entries/characters.cjs +45 -0
  429. package/dist/entries/characters.cjs.map +1 -0
  430. package/dist/entries/characters.d.cts +741 -0
  431. package/dist/entries/characters.d.ts +741 -0
  432. package/dist/entries/characters.js +4 -0
  433. package/dist/entries/characters.js.map +1 -0
  434. package/dist/entries/client.cjs +78 -0
  435. package/dist/entries/client.cjs.map +1 -0
  436. package/dist/entries/client.d.cts +147 -0
  437. package/dist/entries/client.d.ts +147 -0
  438. package/dist/entries/client.js +53 -0
  439. package/dist/entries/client.js.map +1 -0
  440. package/dist/entries/collections.cjs +13 -0
  441. package/dist/entries/collections.cjs.map +1 -0
  442. package/dist/entries/collections.d.cts +77 -0
  443. package/dist/entries/collections.d.ts +77 -0
  444. package/dist/entries/collections.js +4 -0
  445. package/dist/entries/collections.js.map +1 -0
  446. package/dist/entries/community.cjs +13 -0
  447. package/dist/entries/community.cjs.map +1 -0
  448. package/dist/entries/community.d.cts +87 -0
  449. package/dist/entries/community.d.ts +87 -0
  450. package/dist/entries/community.js +4 -0
  451. package/dist/entries/community.js.map +1 -0
  452. package/dist/entries/competitors.cjs +13 -0
  453. package/dist/entries/competitors.cjs.map +1 -0
  454. package/dist/entries/competitors.d.cts +96 -0
  455. package/dist/entries/competitors.d.ts +96 -0
  456. package/dist/entries/competitors.js +4 -0
  457. package/dist/entries/competitors.js.map +1 -0
  458. package/dist/entries/copilot.cjs +15 -0
  459. package/dist/entries/copilot.cjs.map +1 -0
  460. package/dist/entries/copilot.d.cts +296 -0
  461. package/dist/entries/copilot.d.ts +296 -0
  462. package/dist/entries/copilot.js +6 -0
  463. package/dist/entries/copilot.js.map +1 -0
  464. package/dist/entries/core.cjs +26 -0
  465. package/dist/entries/core.cjs.map +1 -0
  466. package/dist/entries/core.d.cts +3 -0
  467. package/dist/entries/core.d.ts +3 -0
  468. package/dist/entries/core.js +5 -0
  469. package/dist/entries/core.js.map +1 -0
  470. package/dist/entries/creatures.cjs +29 -0
  471. package/dist/entries/creatures.cjs.map +1 -0
  472. package/dist/entries/creatures.d.cts +594 -0
  473. package/dist/entries/creatures.d.ts +594 -0
  474. package/dist/entries/creatures.js +4 -0
  475. package/dist/entries/creatures.js.map +1 -0
  476. package/dist/entries/credits.cjs +13 -0
  477. package/dist/entries/credits.cjs.map +1 -0
  478. package/dist/entries/credits.d.cts +229 -0
  479. package/dist/entries/credits.d.ts +229 -0
  480. package/dist/entries/credits.js +4 -0
  481. package/dist/entries/credits.js.map +1 -0
  482. package/dist/entries/developer-apps.cjs +13 -0
  483. package/dist/entries/developer-apps.cjs.map +1 -0
  484. package/dist/entries/developer-apps.d.cts +3 -0
  485. package/dist/entries/developer-apps.d.ts +3 -0
  486. package/dist/entries/developer-apps.js +4 -0
  487. package/dist/entries/developer-apps.js.map +1 -0
  488. package/dist/entries/edit.cjs +34 -0
  489. package/dist/entries/edit.cjs.map +1 -0
  490. package/dist/entries/edit.d.cts +705 -0
  491. package/dist/entries/edit.d.ts +705 -0
  492. package/dist/entries/edit.js +5 -0
  493. package/dist/entries/edit.js.map +1 -0
  494. package/dist/entries/errors.cjs +93 -0
  495. package/dist/entries/errors.cjs.map +1 -0
  496. package/dist/entries/errors.d.cts +338 -0
  497. package/dist/entries/errors.d.ts +338 -0
  498. package/dist/entries/errors.js +4 -0
  499. package/dist/entries/errors.js.map +1 -0
  500. package/dist/entries/executions.cjs +21 -0
  501. package/dist/entries/executions.cjs.map +1 -0
  502. package/dist/entries/executions.d.cts +120 -0
  503. package/dist/entries/executions.d.ts +120 -0
  504. package/dist/entries/executions.js +4 -0
  505. package/dist/entries/executions.js.map +1 -0
  506. package/dist/entries/gallery.cjs +13 -0
  507. package/dist/entries/gallery.cjs.map +1 -0
  508. package/dist/entries/gallery.d.cts +85 -0
  509. package/dist/entries/gallery.d.ts +85 -0
  510. package/dist/entries/gallery.js +4 -0
  511. package/dist/entries/gallery.js.map +1 -0
  512. package/dist/entries/jobs.cjs +13 -0
  513. package/dist/entries/jobs.cjs.map +1 -0
  514. package/dist/entries/jobs.d.cts +252 -0
  515. package/dist/entries/jobs.d.ts +252 -0
  516. package/dist/entries/jobs.js +4 -0
  517. package/dist/entries/jobs.js.map +1 -0
  518. package/dist/entries/library.cjs +13 -0
  519. package/dist/entries/library.cjs.map +1 -0
  520. package/dist/entries/library.d.cts +109 -0
  521. package/dist/entries/library.d.ts +109 -0
  522. package/dist/entries/library.js +4 -0
  523. package/dist/entries/library.js.map +1 -0
  524. package/dist/entries/llm.cjs +13 -0
  525. package/dist/entries/llm.cjs.map +1 -0
  526. package/dist/entries/llm.d.cts +98 -0
  527. package/dist/entries/llm.d.ts +98 -0
  528. package/dist/entries/llm.js +4 -0
  529. package/dist/entries/llm.js.map +1 -0
  530. package/dist/entries/locations.cjs +25 -0
  531. package/dist/entries/locations.cjs.map +1 -0
  532. package/dist/entries/locations.d.cts +573 -0
  533. package/dist/entries/locations.d.ts +573 -0
  534. package/dist/entries/locations.js +4 -0
  535. package/dist/entries/locations.js.map +1 -0
  536. package/dist/entries/media.cjs +15 -0
  537. package/dist/entries/media.cjs.map +1 -0
  538. package/dist/entries/media.d.cts +548 -0
  539. package/dist/entries/media.d.ts +548 -0
  540. package/dist/entries/media.js +6 -0
  541. package/dist/entries/media.js.map +1 -0
  542. package/dist/entries/models.cjs +13 -0
  543. package/dist/entries/models.cjs.map +1 -0
  544. package/dist/entries/models.d.cts +92 -0
  545. package/dist/entries/models.d.ts +92 -0
  546. package/dist/entries/models.js +4 -0
  547. package/dist/entries/models.js.map +1 -0
  548. package/dist/entries/moodboards.cjs +21 -0
  549. package/dist/entries/moodboards.cjs.map +1 -0
  550. package/dist/entries/moodboards.d.cts +77 -0
  551. package/dist/entries/moodboards.d.ts +77 -0
  552. package/dist/entries/moodboards.js +4 -0
  553. package/dist/entries/moodboards.js.map +1 -0
  554. package/dist/entries/node-presets.cjs +13 -0
  555. package/dist/entries/node-presets.cjs.map +1 -0
  556. package/dist/entries/node-presets.d.cts +217 -0
  557. package/dist/entries/node-presets.d.ts +217 -0
  558. package/dist/entries/node-presets.js +4 -0
  559. package/dist/entries/node-presets.js.map +1 -0
  560. package/dist/entries/nodes.cjs +22 -0
  561. package/dist/entries/nodes.cjs.map +1 -0
  562. package/dist/entries/nodes.d.cts +18 -0
  563. package/dist/entries/nodes.d.ts +18 -0
  564. package/dist/entries/nodes.js +5 -0
  565. package/dist/entries/nodes.js.map +1 -0
  566. package/dist/entries/oauth.cjs +13 -0
  567. package/dist/entries/oauth.cjs.map +1 -0
  568. package/dist/entries/oauth.d.cts +69 -0
  569. package/dist/entries/oauth.d.ts +69 -0
  570. package/dist/entries/oauth.js +4 -0
  571. package/dist/entries/oauth.js.map +1 -0
  572. package/dist/entries/objects.cjs +29 -0
  573. package/dist/entries/objects.cjs.map +1 -0
  574. package/dist/entries/objects.d.cts +544 -0
  575. package/dist/entries/objects.d.ts +544 -0
  576. package/dist/entries/objects.js +4 -0
  577. package/dist/entries/objects.js.map +1 -0
  578. package/dist/entries/organizations.cjs +21 -0
  579. package/dist/entries/organizations.cjs.map +1 -0
  580. package/dist/entries/organizations.d.cts +164 -0
  581. package/dist/entries/organizations.d.ts +164 -0
  582. package/dist/entries/organizations.js +4 -0
  583. package/dist/entries/organizations.js.map +1 -0
  584. package/dist/entries/palettes.cjs +21 -0
  585. package/dist/entries/palettes.cjs.map +1 -0
  586. package/dist/entries/palettes.d.cts +69 -0
  587. package/dist/entries/palettes.d.ts +69 -0
  588. package/dist/entries/palettes.js +4 -0
  589. package/dist/entries/palettes.js.map +1 -0
  590. package/dist/entries/picker-catalogs.cjs +13 -0
  591. package/dist/entries/picker-catalogs.cjs.map +1 -0
  592. package/dist/entries/picker-catalogs.d.cts +148 -0
  593. package/dist/entries/picker-catalogs.d.ts +148 -0
  594. package/dist/entries/picker-catalogs.js +4 -0
  595. package/dist/entries/picker-catalogs.js.map +1 -0
  596. package/dist/entries/pipelines.cjs +13 -0
  597. package/dist/entries/pipelines.cjs.map +1 -0
  598. package/dist/entries/pipelines.d.cts +255 -0
  599. package/dist/entries/pipelines.d.ts +255 -0
  600. package/dist/entries/pipelines.js +4 -0
  601. package/dist/entries/pipelines.js.map +1 -0
  602. package/dist/entries/projects.cjs +13 -0
  603. package/dist/entries/projects.cjs.map +1 -0
  604. package/dist/entries/projects.d.cts +49 -0
  605. package/dist/entries/projects.d.ts +49 -0
  606. package/dist/entries/projects.js +4 -0
  607. package/dist/entries/projects.js.map +1 -0
  608. package/dist/entries/prompt-helper.cjs +13 -0
  609. package/dist/entries/prompt-helper.cjs.map +1 -0
  610. package/dist/entries/prompt-helper.d.cts +73 -0
  611. package/dist/entries/prompt-helper.d.ts +73 -0
  612. package/dist/entries/prompt-helper.js +4 -0
  613. package/dist/entries/prompt-helper.js.map +1 -0
  614. package/dist/entries/recast.cjs +17 -0
  615. package/dist/entries/recast.cjs.map +1 -0
  616. package/dist/entries/recast.d.cts +229 -0
  617. package/dist/entries/recast.d.ts +229 -0
  618. package/dist/entries/recast.js +4 -0
  619. package/dist/entries/recast.js.map +1 -0
  620. package/dist/entries/reduce.cjs +13 -0
  621. package/dist/entries/reduce.cjs.map +1 -0
  622. package/dist/entries/reduce.d.cts +56 -0
  623. package/dist/entries/reduce.d.ts +56 -0
  624. package/dist/entries/reduce.js +4 -0
  625. package/dist/entries/reduce.js.map +1 -0
  626. package/dist/entries/saved-posts.cjs +13 -0
  627. package/dist/entries/saved-posts.cjs.map +1 -0
  628. package/dist/entries/saved-posts.d.cts +33 -0
  629. package/dist/entries/saved-posts.d.ts +33 -0
  630. package/dist/entries/saved-posts.js +4 -0
  631. package/dist/entries/saved-posts.js.map +1 -0
  632. package/dist/entries/scene3d.cjs +17 -0
  633. package/dist/entries/scene3d.cjs.map +1 -0
  634. package/dist/entries/scene3d.d.cts +131 -0
  635. package/dist/entries/scene3d.d.ts +131 -0
  636. package/dist/entries/scene3d.js +4 -0
  637. package/dist/entries/scene3d.js.map +1 -0
  638. package/dist/entries/sessions.cjs +13 -0
  639. package/dist/entries/sessions.cjs.map +1 -0
  640. package/dist/entries/sessions.d.cts +122 -0
  641. package/dist/entries/sessions.d.ts +122 -0
  642. package/dist/entries/sessions.js +4 -0
  643. package/dist/entries/sessions.js.map +1 -0
  644. package/dist/entries/shots.cjs +13 -0
  645. package/dist/entries/shots.cjs.map +1 -0
  646. package/dist/entries/shots.d.cts +78 -0
  647. package/dist/entries/shots.d.ts +78 -0
  648. package/dist/entries/shots.js +4 -0
  649. package/dist/entries/shots.js.map +1 -0
  650. package/dist/entries/studio.cjs +22 -0
  651. package/dist/entries/studio.cjs.map +1 -0
  652. package/dist/entries/studio.d.cts +281 -0
  653. package/dist/entries/studio.d.ts +281 -0
  654. package/dist/entries/studio.js +5 -0
  655. package/dist/entries/studio.js.map +1 -0
  656. package/dist/entries/templates.cjs +13 -0
  657. package/dist/entries/templates.cjs.map +1 -0
  658. package/dist/entries/templates.d.cts +110 -0
  659. package/dist/entries/templates.d.ts +110 -0
  660. package/dist/entries/templates.js +4 -0
  661. package/dist/entries/templates.js.map +1 -0
  662. package/dist/entries/tutorials.cjs +13 -0
  663. package/dist/entries/tutorials.cjs.map +1 -0
  664. package/dist/entries/tutorials.d.cts +63 -0
  665. package/dist/entries/tutorials.d.ts +63 -0
  666. package/dist/entries/tutorials.js +4 -0
  667. package/dist/entries/tutorials.js.map +1 -0
  668. package/dist/entries/uploads.cjs +13 -0
  669. package/dist/entries/uploads.cjs.map +1 -0
  670. package/dist/entries/uploads.d.cts +44 -0
  671. package/dist/entries/uploads.d.ts +44 -0
  672. package/dist/entries/uploads.js +4 -0
  673. package/dist/entries/uploads.js.map +1 -0
  674. package/dist/entries/video-pro.cjs +13 -0
  675. package/dist/entries/video-pro.cjs.map +1 -0
  676. package/dist/entries/video-pro.d.cts +60 -0
  677. package/dist/entries/video-pro.d.ts +60 -0
  678. package/dist/entries/video-pro.js +4 -0
  679. package/dist/entries/video-pro.js.map +1 -0
  680. package/dist/entries/voices.cjs +13 -0
  681. package/dist/entries/voices.cjs.map +1 -0
  682. package/dist/entries/voices.d.cts +498 -0
  683. package/dist/entries/voices.d.ts +498 -0
  684. package/dist/entries/voices.js +4 -0
  685. package/dist/entries/voices.js.map +1 -0
  686. package/dist/entries/webhooks.cjs +21 -0
  687. package/dist/entries/webhooks.cjs.map +1 -0
  688. package/dist/entries/webhooks.d.cts +64 -0
  689. package/dist/entries/webhooks.d.ts +64 -0
  690. package/dist/entries/webhooks.js +4 -0
  691. package/dist/entries/webhooks.js.map +1 -0
  692. package/dist/entries/workflows.cjs +13 -0
  693. package/dist/entries/workflows.cjs.map +1 -0
  694. package/dist/entries/workflows.d.cts +393 -0
  695. package/dist/entries/workflows.d.ts +393 -0
  696. package/dist/entries/workflows.js +4 -0
  697. package/dist/entries/workflows.js.map +1 -0
  698. package/dist/entries/workspaces.cjs +13 -0
  699. package/dist/entries/workspaces.cjs.map +1 -0
  700. package/dist/entries/workspaces.d.cts +124 -0
  701. package/dist/entries/workspaces.d.ts +124 -0
  702. package/dist/entries/workspaces.js +4 -0
  703. package/dist/entries/workspaces.js.map +1 -0
  704. package/dist/index.cjs +501 -5192
  705. package/dist/index.cjs.map +1 -1
  706. package/dist/index.d.cts +66 -10894
  707. package/dist/index.d.ts +66 -10894
  708. package/dist/index.js +100 -5074
  709. package/dist/index.js.map +1 -1
  710. package/dist/nodes-BPvrAoUs.d.cts +1264 -0
  711. package/dist/nodes-C2zu3uqn.d.ts +1264 -0
  712. package/dist/studio-productions-DUHvdSvk.d.cts +572 -0
  713. package/dist/studio-productions-vbCNSbtf.d.ts +572 -0
  714. package/dist/webhooks-BJawEIz8.d.ts +198 -0
  715. package/dist/webhooks-Dn_DtNTD.d.cts +198 -0
  716. package/package.json +253 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/executions.ts"],"names":[],"mappings":";;;AAgIO,IAAM,qBAAN,MAAyB;AAAA,EAC9B,YAAoB,MAAA,EAA0B;AAA1B,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAA2B;AAAA,EAA3B,MAAA;AAAA;AAAA,EAGpB,IAAI,EAAA,EAAkD;AACpD,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,KAAA;AAAA,MACA,CAAA,wBAAA,EAA2B,kBAAA,CAAmB,EAAE,CAAC,CAAA;AAAA,KACnD;AAAA,EACF;AAAA;AAAA,EAGA,eAAA,CACE,UAAA,EACA,MAAA,GAA0C,EAAC,EACY;AACvD,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,KAAA;AAAA,MACA,CAAA,cAAA,EAAiB,kBAAA,CAAmB,UAAU,CAAC,CAAA,WAAA,CAAA;AAAA,MAC/C;AAAA,QACE,KAAA,EAAO;AAAA,UACL,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,QAAQ,MAAA,CAAO;AAAA;AACjB;AACF,KACF;AAAA,EACF;AAAA;AAAA,EAGA,MAAA,CAAO,EAAA,EAAY,MAAA,GAAgC,EAAC,EAA+B;AACjF,IAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACjB,MAAA;AAAA,MACA,CAAA,wBAAA,EAA2B,kBAAA,CAAmB,EAAE,CAAC,CAAA,OAAA,CAAA;AAAA,MACjD,EAAE,MAAM,MAAA;AAAO,KACjB;AAAA,EACF;AACF","file":"chunk-Z3ZKFI2M.js","sourcesContent":["import type { NodaroClientCore } from \"../core.js\"\nimport type { ExecutionOutcome, NodeExecutionStateWire } from \"@nodaro/shared/workflow\"\n\nexport type ExecutionStatus =\n | \"pending\"\n | \"running\"\n | \"completed\"\n | \"failed\"\n | \"cancelled\"\n | \"stopping\"\n | \"timed_out\"\n | \"discarded\"\n\nexport type ExecutionTriggerType =\n | \"manual\"\n | \"webhook\"\n | \"schedule\"\n | \"app_run\"\n | \"single-node\"\n | \"telegram\"\n | \"telegram_account\"\n | \"api\"\n | \"mcp\"\n\n/**\n * Per-node state inside an execution's `nodeStates` map. Keys are node IDs.\n *\n * Extends the published wire contract in `@nodaro/shared`, which is what the\n * orchestrator writes and the editor reads — so a field added there reaches\n * SDK consumers as a typed field rather than through the index signature. The\n * synthetic single-node-job shape from `routes/workflow-execution.ts` fits the\n * same contract.\n */\nexport interface NodeExecutionState extends NodeExecutionStateWire {\n [key: string]: unknown\n}\n\nexport type { NodeExecutionStatus, NodeSkipReason, ExecutionOutcome } from \"@nodaro/shared/workflow\"\nexport { OUTPUT_BEARING_NODE_STATUSES, nodeStateMayCarryOutput, executionOutcome, countEmptyInputSkips } from \"@nodaro/shared/workflow\"\n\n/**\n * Workflow execution record. Returned by `get()` and `cancel()` (the cancel\n * endpoint returns `{ success: true }`, not the execution itself).\n */\nexport interface WorkflowExecution {\n id: string\n /**\n * `\"execution\"` for an orchestrator run; `\"job\"` for a single-node job the\n * list shows beside the runs (its `triggerType` is the lane that started it,\n * `\"mcp\"` for an MCP client's one-node job). Absent on an older server.\n */\n kind?: \"execution\" | \"job\"\n workflowId: string | null\n userId: string\n status: ExecutionStatus\n /**\n * How a `completed` run ended: `\"nothing_new\"` when at least one node was\n * skipped for want of input (its `nodeStates` entry carries\n * `skipReason: \"empty_input\"` — a feed that found no new posts, a writer with\n * nothing to write), `\"succeeded\"` otherwise. Absent until the run completes\n * and on an older server. Derived by `executionOutcome()` (exported).\n */\n outcome?: ExecutionOutcome\n triggerType: ExecutionTriggerType\n triggerData?: unknown\n nodeStates: Record<string, NodeExecutionState>\n /**\n * What a continue-from-failed of this run (`continueMode: \"from-failed\"`)\n * sent no `nodeIds` considers, besides every node the run left failed or\n * held back: the nodes the first run of its chain was started on (`nodeIds`\n * on `/run` — Run selected, an API subset, a Render final). `null`: every\n * node — a run of every node, one started before the nodes were recorded,\n * or one a trigger started. Absent on an older server (= every node).\n */\n nodeScope?: string[] | null\n totalNodes: number\n completedNodes: number\n failedNodes: number\n totalCreditsUsed: number\n errorMessage: string | null\n startedAt: string | null\n completedAt: string | null\n createdAt: string\n updatedAt: string\n}\n\n/** Summary returned by `listForWorkflow()`. Excludes per-row `triggerData`/`updatedAt`. */\nexport interface WorkflowExecutionSummary {\n id: string\n /** See {@link WorkflowExecution.kind}. */\n kind?: \"execution\" | \"job\"\n status: ExecutionStatus\n /** See {@link WorkflowExecution.outcome}. */\n outcome?: ExecutionOutcome\n triggerType: ExecutionTriggerType\n nodeStates: Record<string, NodeExecutionState>\n totalNodes: number\n completedNodes: number\n failedNodes: number\n totalCreditsUsed: number\n errorMessage: string | null\n startedAt: string | null\n completedAt: string | null\n createdAt: string\n}\n\nexport interface ListExecutionsForWorkflowParams {\n limit?: number\n cursor?: string\n /** Comma-separated list of statuses, e.g. \"pending,running\". */\n status?: string\n /** \"editor\" excludes app_run / component / webhook / schedule executions. */\n source?: \"editor\" | \"all\"\n}\n\nexport interface ListExecutionsPage<T> {\n data: T[]\n nextCursor?: string\n}\n\nexport interface CancelExecutionParams {\n /**\n * \"after_current\" sets the execution to \"stopping\" (let in-flight nodes\n * finish, then stop). Default behavior cancels immediately.\n */\n mode?: \"after_current\" | \"discard\"\n}\n\nexport class ExecutionsResource {\n constructor(private client: NodaroClientCore) {}\n\n /** Get an execution by ID. Falls back to standalone single-node jobs server-side. */\n get(id: string): Promise<{ data: WorkflowExecution }> {\n return this.client.request(\n \"GET\",\n `/v1/workflow-executions/${encodeURIComponent(id)}`,\n )\n }\n\n /** List executions for a workflow. Merges workflow_executions + standalone single-node jobs. */\n listForWorkflow(\n workflowId: string,\n params: ListExecutionsForWorkflowParams = {},\n ): Promise<ListExecutionsPage<WorkflowExecutionSummary>> {\n return this.client.request(\n \"GET\",\n `/v1/workflows/${encodeURIComponent(workflowId)}/executions`,\n {\n query: {\n limit: params.limit,\n cursor: params.cursor,\n status: params.status,\n source: params.source,\n },\n },\n )\n }\n\n /** Cancel an execution. Returns `{ success: true }`. */\n cancel(id: string, params: CancelExecutionParams = {}): Promise<{ success: true }> {\n return this.client.request(\n \"POST\",\n `/v1/workflow-executions/${encodeURIComponent(id)}/cancel`,\n { body: params },\n )\n }\n}\n"]}
@@ -0,0 +1,112 @@
1
+ // src/resources/workspaces.ts
2
+ var WorkspacesResource = class {
3
+ constructor(client) {
4
+ this.client = client;
5
+ }
6
+ client;
7
+ /**
8
+ * Every workspace this account belongs to, across all its organizations.
9
+ *
10
+ * An identity read: a stale workspace binding cannot lock a caller out of
11
+ * it, which is what makes it safe to call when a selection has gone bad.
12
+ *
13
+ * Byte-for-byte the list `GET /v1/me` carries, so a client reconciles
14
+ * against one truth rather than two. That is why these are SUMMARIES —
15
+ * enough to render a switcher, not the full view; use {@link get} for that.
16
+ */
17
+ list() {
18
+ return this.client.request("GET", "/v1/workspaces");
19
+ }
20
+ listForOrg(orgId, opts = {}) {
21
+ return this.client.request("GET", `/v1/orgs/${encodeURIComponent(orgId)}/workspaces`, {
22
+ query: { includeArchived: opts.includeArchived }
23
+ });
24
+ }
25
+ get(id) {
26
+ return this.client.request("GET", `/v1/workspaces/${encodeURIComponent(id)}`);
27
+ }
28
+ create(orgId, input) {
29
+ return this.client.request("POST", `/v1/orgs/${encodeURIComponent(orgId)}/workspaces`, { body: input });
30
+ }
31
+ update(id, input) {
32
+ return this.client.request("PATCH", `/v1/workspaces/${encodeURIComponent(id)}`, { body: input });
33
+ }
34
+ /**
35
+ * Archive or restore. Archiving is REVERSIBLE and destroys nothing: the
36
+ * workspace stops accepting new work and stays fully readable, which is
37
+ * what a finished class term needs and a delete would not survive.
38
+ */
39
+ setArchived(id, archived) {
40
+ return this.client.request(
41
+ "POST",
42
+ `/v1/workspaces/${encodeURIComponent(id)}/${archived ? "archive" : "unarchive"}`
43
+ );
44
+ }
45
+ // -- members --------------------------------------------------------------
46
+ listMembers(id, opts = {}) {
47
+ return this.client.request("GET", `/v1/workspaces/${encodeURIComponent(id)}/members`, {
48
+ query: { ...opts }
49
+ });
50
+ }
51
+ /** Add someone who is ALREADY in the organization. To bring in a new person, invite them. */
52
+ addMember(id, input) {
53
+ return this.client.request("POST", `/v1/workspaces/${encodeURIComponent(id)}/members`, { body: input });
54
+ }
55
+ updateMember(id, userId, input) {
56
+ return this.client.request(
57
+ "PATCH",
58
+ `/v1/workspaces/${encodeURIComponent(id)}/members/${encodeURIComponent(userId)}`,
59
+ { body: input }
60
+ );
61
+ }
62
+ removeMember(id, userId) {
63
+ return this.client.request(
64
+ "DELETE",
65
+ `/v1/workspaces/${encodeURIComponent(id)}/members/${encodeURIComponent(userId)}`
66
+ );
67
+ }
68
+ // -- join codes -----------------------------------------------------------
69
+ /** The workspace's join code, or `null` if none has been created. Admins only. */
70
+ getJoinCode(id) {
71
+ return this.client.request("GET", `/v1/workspaces/${encodeURIComponent(id)}/join-code`);
72
+ }
73
+ /**
74
+ * Rotate, enable or disable the code. Rotating invalidates the old one
75
+ * immediately — that is the point of it, and anyone still holding a link
76
+ * with the old code will be refused.
77
+ */
78
+ actOnJoinCode(id, action) {
79
+ return this.client.request("POST", `/v1/workspaces/${encodeURIComponent(id)}/join-code`, {
80
+ body: { action }
81
+ });
82
+ }
83
+ /**
84
+ * Join by code. Another way IN, so a stale workspace binding must not block
85
+ * it — the server treats this as an identity route for that reason.
86
+ */
87
+ join(code) {
88
+ return this.client.request("POST", "/v1/workspaces/join", { body: { code } });
89
+ }
90
+ // -- usage ----------------------------------------------------------------
91
+ /**
92
+ * Credits by member, model or day for this workspace. A plain member sees
93
+ * their OWN runs (the report is self-narrowed and `groupBy: "member"` is
94
+ * refused); a workspace admin sees everyone and may filter `userId`.
95
+ * Inclusive dates, IANA `tz` (default UTC), ≤ 366 days (default last 30).
96
+ */
97
+ usage(id, opts = {}) {
98
+ return this.client.request("GET", `/v1/workspaces/${encodeURIComponent(id)}/usage`, { query: { ...opts } });
99
+ }
100
+ /** The individual runs behind a report, newest first, cursor-paged. */
101
+ usageRows(id, opts = {}) {
102
+ return this.client.request("GET", `/v1/workspaces/${encodeURIComponent(id)}/usage`, { query: { ...opts, groupBy: "none" } });
103
+ }
104
+ /** The same report (or the rows, with `groupBy: "none"`) as CSV text. */
105
+ usageCsv(id, opts = {}) {
106
+ return this.client.requestText("GET", `/v1/workspaces/${encodeURIComponent(id)}/usage`, { query: { ...opts, format: "csv" } });
107
+ }
108
+ };
109
+
110
+ export { WorkspacesResource };
111
+ //# sourceMappingURL=chunk-Z5GLY4R3.js.map
112
+ //# sourceMappingURL=chunk-Z5GLY4R3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/workspaces.ts"],"names":[],"mappings":"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","file":"chunk-Z5GLY4R3.js","sourcesContent":["import type {\n JoinCodeView,\n MemberStatus,\n OrgPage,\n UsageLogEntry,\n UsageQuery,\n UsageReport,\n WorkspaceMemberView,\n WorkspaceRole,\n WorkspaceSettings,\n WorkspaceSummary,\n WorkspaceView,\n} from \"@nodaro/shared/organizations\"\nimport type { NodaroClientCore } from \"../core.js\"\n\n/**\n * Workspaces — the inner tenancy axis, where work actually lives.\n *\n * Selecting a workspace and belonging to one are different things, and this\n * resource is only about the second. Use {@link NodaroClient.withWorkspace}\n * to decide which workspace a REQUEST acts in; these methods read and change\n * the workspaces themselves.\n */\n\nexport interface CreateWorkspaceInput {\n name: string\n slug?: string\n description?: string\n settings?: WorkspaceSettings\n}\n\nexport class WorkspacesResource {\n constructor(private client: NodaroClientCore) {}\n\n /**\n * Every workspace this account belongs to, across all its organizations.\n *\n * An identity read: a stale workspace binding cannot lock a caller out of\n * it, which is what makes it safe to call when a selection has gone bad.\n *\n * Byte-for-byte the list `GET /v1/me` carries, so a client reconciles\n * against one truth rather than two. That is why these are SUMMARIES —\n * enough to render a switcher, not the full view; use {@link get} for that.\n */\n list(): Promise<{ data: WorkspaceSummary[]; lastWorkspaceId: string | null }> {\n return this.client.request(\"GET\", \"/v1/workspaces\")\n }\n\n listForOrg(orgId: string, opts: { includeArchived?: boolean } = {}): Promise<{ data: WorkspaceView[] }> {\n return this.client.request(\"GET\", `/v1/orgs/${encodeURIComponent(orgId)}/workspaces`, {\n query: { includeArchived: opts.includeArchived },\n })\n }\n\n get(id: string): Promise<{ data: WorkspaceView }> {\n return this.client.request(\"GET\", `/v1/workspaces/${encodeURIComponent(id)}`)\n }\n\n create(orgId: string, input: CreateWorkspaceInput): Promise<{ data: WorkspaceView }> {\n return this.client.request(\"POST\", `/v1/orgs/${encodeURIComponent(orgId)}/workspaces`, { body: input })\n }\n\n update(\n id: string,\n input: { name?: string; description?: string | null; settings?: WorkspaceSettings },\n ): Promise<{ data: WorkspaceView }> {\n return this.client.request(\"PATCH\", `/v1/workspaces/${encodeURIComponent(id)}`, { body: input })\n }\n\n /**\n * Archive or restore. Archiving is REVERSIBLE and destroys nothing: the\n * workspace stops accepting new work and stays fully readable, which is\n * what a finished class term needs and a delete would not survive.\n */\n setArchived(id: string, archived: boolean): Promise<{ data: WorkspaceView }> {\n return this.client.request(\n \"POST\",\n `/v1/workspaces/${encodeURIComponent(id)}/${archived ? \"archive\" : \"unarchive\"}`,\n )\n }\n\n // -- members --------------------------------------------------------------\n\n listMembers(id: string, opts: { cursor?: string; limit?: number } = {}): Promise<OrgPage<WorkspaceMemberView>> {\n return this.client.request(\"GET\", `/v1/workspaces/${encodeURIComponent(id)}/members`, {\n query: { ...opts },\n })\n }\n\n /** Add someone who is ALREADY in the organization. To bring in a new person, invite them. */\n addMember(id: string, input: { userId: string; role: WorkspaceRole }): Promise<{ data: WorkspaceMemberView }> {\n return this.client.request(\"POST\", `/v1/workspaces/${encodeURIComponent(id)}/members`, { body: input })\n }\n\n updateMember(\n id: string,\n userId: string,\n input: { role?: WorkspaceRole; status?: MemberStatus; creditCap?: number | null },\n ): Promise<{ data: WorkspaceMemberView }> {\n return this.client.request(\n \"PATCH\",\n `/v1/workspaces/${encodeURIComponent(id)}/members/${encodeURIComponent(userId)}`,\n { body: input },\n )\n }\n\n removeMember(id: string, userId: string): Promise<{ data: { removed: boolean } }> {\n return this.client.request(\n \"DELETE\",\n `/v1/workspaces/${encodeURIComponent(id)}/members/${encodeURIComponent(userId)}`,\n )\n }\n\n // -- join codes -----------------------------------------------------------\n\n /** The workspace's join code, or `null` if none has been created. Admins only. */\n getJoinCode(id: string): Promise<{ data: JoinCodeView | null }> {\n return this.client.request(\"GET\", `/v1/workspaces/${encodeURIComponent(id)}/join-code`)\n }\n\n /**\n * Rotate, enable or disable the code. Rotating invalidates the old one\n * immediately — that is the point of it, and anyone still holding a link\n * with the old code will be refused.\n */\n actOnJoinCode(id: string, action: \"rotate\" | \"enable\" | \"disable\"): Promise<{ data: JoinCodeView }> {\n return this.client.request(\"POST\", `/v1/workspaces/${encodeURIComponent(id)}/join-code`, {\n body: { action },\n })\n }\n\n /**\n * Join by code. Another way IN, so a stale workspace binding must not block\n * it — the server treats this as an identity route for that reason.\n */\n join(code: string): Promise<{ data: { orgId: string; workspaceId: string } }> {\n return this.client.request(\"POST\", \"/v1/workspaces/join\", { body: { code } })\n }\n\n // -- usage ----------------------------------------------------------------\n\n /**\n * Credits by member, model or day for this workspace. A plain member sees\n * their OWN runs (the report is self-narrowed and `groupBy: \"member\"` is\n * refused); a workspace admin sees everyone and may filter `userId`.\n * Inclusive dates, IANA `tz` (default UTC), ≤ 366 days (default last 30).\n */\n usage(\n id: string,\n opts: Omit<UsageQuery, \"cursor\" | \"limit\" | \"workspaceId\" | \"groupBy\"> & { groupBy?: \"member\" | \"model\" | \"day\" } = {},\n ): Promise<{ data: UsageReport }> {\n return this.client.request(\"GET\", `/v1/workspaces/${encodeURIComponent(id)}/usage`, { query: { ...opts } })\n }\n\n /** The individual runs behind a report, newest first, cursor-paged. */\n usageRows(id: string, opts: Omit<UsageQuery, \"groupBy\" | \"workspaceId\"> = {}): Promise<OrgPage<UsageLogEntry>> {\n return this.client.request(\"GET\", `/v1/workspaces/${encodeURIComponent(id)}/usage`, { query: { ...opts, groupBy: \"none\" } })\n }\n\n /** The same report (or the rows, with `groupBy: \"none\"`) as CSV text. */\n usageCsv(id: string, opts: Omit<UsageQuery, \"cursor\" | \"limit\" | \"workspaceId\"> = {}): Promise<string> {\n return this.client.requestText(\"GET\", `/v1/workspaces/${encodeURIComponent(id)}/usage`, { query: { ...opts, format: \"csv\" } })\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-Z5OMWAQX.js.map
3
+ //# sourceMappingURL=chunk-Z5OMWAQX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-Z5OMWAQX.js"}
@@ -0,0 +1,38 @@
1
+ // src/resources/oauth.ts
2
+ var OAuthResource = class {
3
+ constructor(client) {
4
+ this.client = client;
5
+ }
6
+ client;
7
+ /**
8
+ * Server-side authorization-code exchange. Sends the standard OAuth 2.0
9
+ * `application/json` body to `POST /v1/oauth/token`.
10
+ *
11
+ * NEVER call this from a browser — `client_secret` must stay on the server.
12
+ */
13
+ exchangeCode(input) {
14
+ return this.client.request("POST", "/v1/oauth/token", {
15
+ body: { grant_type: "authorization_code", ...input }
16
+ });
17
+ }
18
+ /**
19
+ * Revoke an access token (RFC 7009). Always returns `{ success: true }`,
20
+ * even for unknown tokens — the spec forbids leaking token validity.
21
+ */
22
+ revoke(token) {
23
+ return this.client.request("POST", "/v1/oauth/revoke", { body: { token } });
24
+ }
25
+ /**
26
+ * Get public app metadata for a consent screen.
27
+ * `GET /v1/oauth/app-info?client_id=<id>`. Public route — no auth needed.
28
+ */
29
+ getAppInfo(clientId, redirectUri) {
30
+ return this.client.request("GET", "/v1/oauth/app-info", {
31
+ query: redirectUri ? { client_id: clientId, redirect_uri: redirectUri } : { client_id: clientId }
32
+ });
33
+ }
34
+ };
35
+
36
+ export { OAuthResource };
37
+ //# sourceMappingURL=chunk-Z7LGWNI7.js.map
38
+ //# sourceMappingURL=chunk-Z7LGWNI7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/oauth.ts"],"names":[],"mappings":";AA8CO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAoB,MAAA,EAA0B;AAA1B,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAA2B;AAAA,EAA3B,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQpB,aAAa,KAAA,EAAwD;AACnE,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,MAAA,EAAQ,iBAAA,EAAmB;AAAA,MACpD,IAAA,EAAM,EAAE,UAAA,EAAY,oBAAA,EAAsB,GAAG,KAAA;AAAM,KACpD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,KAAA,EAA2C;AAChD,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,MAAA,EAAQ,kBAAA,EAAoB,EAAE,IAAA,EAAM,EAAE,KAAA,EAAM,EAAG,CAAA;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAA,CAAW,UAAkB,WAAA,EAA6C;AACxE,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,oBAAA,EAAsB;AAAA,MACtD,KAAA,EAAO,WAAA,GAAc,EAAE,SAAA,EAAW,QAAA,EAAU,cAAc,WAAA,EAAY,GAAI,EAAE,SAAA,EAAW,QAAA;AAAS,KACjG,CAAA;AAAA,EACH;AACF","file":"chunk-Z7LGWNI7.js","sourcesContent":["import type { NodaroClientCore } from \"../core.js\"\nimport type { DeveloperAppScope } from \"./developer-apps.js\"\n\n/**\n * Server-side authorization-code exchange payload. Field names are snake_case\n * per OAuth 2.0 (RFC 6749).\n */\nexport interface ExchangeCodeInput {\n client_id: string\n client_secret: string\n /** Authorization code received from the consent redirect. */\n code: string\n /** Must match the redirect_uri used when issuing the code. */\n redirect_uri: string\n}\n\n/**\n * `POST /v1/oauth/token` response — snake_case per RFC 6749. `expires_in` is\n * the token's lifetime in seconds.\n */\nexport interface AccessTokenResponse {\n access_token: string\n token_type: \"Bearer\"\n /** Space-separated list of granted scopes. */\n scope: string\n expires_in: number\n}\n\n/**\n * Public app metadata for consent screens. Only safe-to-display fields —\n * no secret, no full origin list, no owner_user_id.\n */\nexport interface OAuthAppInfo {\n name: string\n description: string | null\n logoUrl: string | null\n homepageUrl: string | null\n scopesRequested: DeveloperAppScope[]\n /**\n * Present when `getAppInfo` was given a `redirectUri`: whether that exact\n * URI is registered for the app. `null` when none was given. Lets a consent\n * screen refuse to redirect anywhere unregistered without exposing the list.\n */\n redirectUriRegistered?: boolean | null\n}\n\nexport class OAuthResource {\n constructor(private client: NodaroClientCore) {}\n\n /**\n * Server-side authorization-code exchange. Sends the standard OAuth 2.0\n * `application/json` body to `POST /v1/oauth/token`.\n *\n * NEVER call this from a browser — `client_secret` must stay on the server.\n */\n exchangeCode(input: ExchangeCodeInput): Promise<AccessTokenResponse> {\n return this.client.request(\"POST\", \"/v1/oauth/token\", {\n body: { grant_type: \"authorization_code\", ...input },\n })\n }\n\n /**\n * Revoke an access token (RFC 7009). Always returns `{ success: true }`,\n * even for unknown tokens — the spec forbids leaking token validity.\n */\n revoke(token: string): Promise<{ success: true }> {\n return this.client.request(\"POST\", \"/v1/oauth/revoke\", { body: { token } })\n }\n\n /**\n * Get public app metadata for a consent screen.\n * `GET /v1/oauth/app-info?client_id=<id>`. Public route — no auth needed.\n */\n getAppInfo(clientId: string, redirectUri?: string): Promise<OAuthAppInfo> {\n return this.client.request(\"GET\", \"/v1/oauth/app-info\", {\n query: redirectUri ? { client_id: clientId, redirect_uri: redirectUri } : { client_id: clientId },\n })\n }\n}\n"]}
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ // src/resources/moodboards.ts
4
+ var MOODBOARD_DIRECTION_PREFIX = "moodboard:";
5
+ function moodboardDirectionId(id) {
6
+ return `${MOODBOARD_DIRECTION_PREFIX}${id}`;
7
+ }
8
+ var MoodboardsResource = class {
9
+ constructor(client) {
10
+ this.client = client;
11
+ }
12
+ client;
13
+ /** Your moodboards, newest first. Page with `nextCursor`. */
14
+ list(params = {}) {
15
+ return this.client.request("GET", "/v1/moodboards", {
16
+ query: { limit: params.limit, cursor: params.cursor }
17
+ });
18
+ }
19
+ get(id) {
20
+ return this.client.request("GET", `/v1/moodboards/${encodeURIComponent(id)}`);
21
+ }
22
+ create(input) {
23
+ return this.client.request("POST", "/v1/moodboards", { body: input });
24
+ }
25
+ update(id, input) {
26
+ return this.client.request("PATCH", `/v1/moodboards/${encodeURIComponent(id)}`, { body: input });
27
+ }
28
+ /** Deletes the moodboard only; the images it links to are untouched. */
29
+ async delete(id) {
30
+ await this.client.request("DELETE", `/v1/moodboards/${encodeURIComponent(id)}`);
31
+ }
32
+ };
33
+
34
+ exports.MOODBOARD_DIRECTION_PREFIX = MOODBOARD_DIRECTION_PREFIX;
35
+ exports.MoodboardsResource = MoodboardsResource;
36
+ exports.moodboardDirectionId = moodboardDirectionId;
37
+ //# sourceMappingURL=chunk-ZCWKX4V6.cjs.map
38
+ //# sourceMappingURL=chunk-ZCWKX4V6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/moodboards.ts"],"names":[],"mappings":";;;AAoDO,IAAM,0BAAA,GAA6B;AASnC,SAAS,qBAAqB,EAAA,EAAmC;AACtE,EAAA,OAAO,CAAA,EAAG,0BAA0B,CAAA,EAAG,EAAE,CAAA,CAAA;AAC3C;AASO,IAAM,qBAAN,MAAyB;AAAA,EAC9B,YAAoB,MAAA,EAA0B;AAA1B,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAA2B;AAAA,EAA3B,MAAA;AAAA;AAAA,EAGpB,IAAA,CAAK,MAAA,GAA+B,EAAC,EAA2B;AAC9D,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAuB,KAAA,EAAO,gBAAA,EAAkB;AAAA,MACjE,OAAO,EAAE,KAAA,EAAO,OAAO,KAAA,EAAO,MAAA,EAAQ,OAAO,MAAA;AAAO,KACrD,CAAA;AAAA,EACH;AAAA,EAEA,IAAI,EAAA,EAAgC;AAClC,IAAA,OAAO,IAAA,CAAK,OAAO,OAAA,CAAmB,KAAA,EAAO,kBAAkB,kBAAA,CAAmB,EAAE,CAAC,CAAA,CAAE,CAAA;AAAA,EACzF;AAAA,EAEA,OAAO,KAAA,EAAiD;AACtD,IAAA,OAAO,IAAA,CAAK,OAAO,OAAA,CAAmB,MAAA,EAAQ,kBAAkB,EAAE,IAAA,EAAM,OAAO,CAAA;AAAA,EACjF;AAAA,EAEA,MAAA,CAAO,IAAY,KAAA,EAAiD;AAClE,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAmB,OAAA,EAAS,CAAA,eAAA,EAAkB,kBAAA,CAAmB,EAAE,CAAC,CAAA,CAAA,EAAI,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,EAC5G;AAAA;AAAA,EAGA,MAAM,OAAO,EAAA,EAA2B;AACtC,IAAA,MAAM,IAAA,CAAK,OAAO,OAAA,CAA2B,QAAA,EAAU,kBAAkB,kBAAA,CAAmB,EAAE,CAAC,CAAA,CAAE,CAAA;AAAA,EACnG;AACF","file":"chunk-ZCWKX4V6.cjs","sourcesContent":["import type { NodaroClientCore } from \"../core.js\"\n\n/** One image of a moodboard — a link, never a copy. */\nexport interface MoodboardImage {\n /** An http(s) image link (no localhost or private address), up to 2048 characters. */\n url: string\n /** Up to 200 characters; it goes along with the image as a style reference. */\n caption?: string\n}\n\n/** One of your moodboards. */\nexport interface Moodboard {\n id: string\n name: string\n /** The words a run puts into the prompt as the moodboard's look. */\n description: string | null\n /** 1–12 images, in order. */\n images: MoodboardImage[]\n createdAt: string\n updatedAt: string\n}\n\nexport interface CreateMoodboardInput {\n /** 1–80 characters. */\n name: string\n /** Up to 1000 characters. */\n description?: string | null\n /** 1–12 images. */\n images: MoodboardImage[]\n}\n\n/** Only the fields you send are written; `images` replaces them all; `description: null` clears it. */\nexport interface UpdateMoodboardInput {\n name?: string\n description?: string | null\n images?: MoodboardImage[]\n}\n\nexport interface ListMoodboardsParams {\n /** Page size, 1–100 (server default 50). */\n limit?: number\n /** The previous page's `nextCursor`. */\n cursor?: string\n}\n\nexport interface MoodboardPage {\n data: Moodboard[]\n /** Pass back as `cursor` for the next page; `null` on the last one. */\n nextCursor: string | null\n}\n\n/** The prefix of a moodboard's generate-image direction id (`direction.style`). */\nexport const MOODBOARD_DIRECTION_PREFIX = \"moodboard:\" as const\n\n/**\n * A moodboard as a generate-image direction value — put it on\n * `direction.style`. The run puts its description into the prompt and sends\n * its images as style references after your own references, up to the\n * model's reference limit (the answer's `warnings` says when some did not\n * fit). The job keeps the id.\n */\nexport function moodboardDirectionId(id: string): `moodboard:${string}` {\n return `${MOODBOARD_DIRECTION_PREFIX}${id}`\n}\n\n/**\n * Moodboards — `GET/POST /v1/moodboards`, `GET/PATCH/DELETE /v1/moodboards/:id`.\n *\n * Yours only (another person's id answers 404). Use one on generate-image as\n * `direction: { style: moodboardDirectionId(id) }`. OAuth app tokens need\n * `assets:read` for reads and `assets:write` for writes.\n */\nexport class MoodboardsResource {\n constructor(private client: NodaroClientCore) {}\n\n /** Your moodboards, newest first. Page with `nextCursor`. */\n list(params: ListMoodboardsParams = {}): Promise<MoodboardPage> {\n return this.client.request<MoodboardPage>(\"GET\", \"/v1/moodboards\", {\n query: { limit: params.limit, cursor: params.cursor },\n })\n }\n\n get(id: string): Promise<Moodboard> {\n return this.client.request<Moodboard>(\"GET\", `/v1/moodboards/${encodeURIComponent(id)}`)\n }\n\n create(input: CreateMoodboardInput): Promise<Moodboard> {\n return this.client.request<Moodboard>(\"POST\", \"/v1/moodboards\", { body: input })\n }\n\n update(id: string, input: UpdateMoodboardInput): Promise<Moodboard> {\n return this.client.request<Moodboard>(\"PATCH\", `/v1/moodboards/${encodeURIComponent(id)}`, { body: input })\n }\n\n /** Deletes the moodboard only; the images it links to are untouched. */\n async delete(id: string): Promise<void> {\n await this.client.request<{ success: true }>(\"DELETE\", `/v1/moodboards/${encodeURIComponent(id)}`)\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=chunk-ZE5RISBZ.cjs.map
4
+ //# sourceMappingURL=chunk-ZE5RISBZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-ZE5RISBZ.cjs"}
@@ -0,0 +1,3 @@
1
+ export { unwrapEditPlanOutput } from '@nodaro/shared/edl';
2
+ //# sourceMappingURL=chunk-ZH4F2P2G.js.map
3
+ //# sourceMappingURL=chunk-ZH4F2P2G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-ZH4F2P2G.js","sourcesContent":[]}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=chunk-ZJGFLJ2Z.cjs.map
4
+ //# sourceMappingURL=chunk-ZJGFLJ2Z.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-ZJGFLJ2Z.cjs"}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=chunk-ZKBHD27K.cjs.map
4
+ //# sourceMappingURL=chunk-ZKBHD27K.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-ZKBHD27K.cjs"}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=chunk-ZQPLRNKX.cjs.map
4
+ //# sourceMappingURL=chunk-ZQPLRNKX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-ZQPLRNKX.cjs"}
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ // src/resources/uploads.ts
4
+ var UploadsResource = class {
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ client;
9
+ /**
10
+ * Upload one file (`POST /v1/upload`, multipart — the file rides the `file`
11
+ * field). The SDK's `request` detects the `FormData` body and lets the
12
+ * runtime set the multipart boundary. Returns the persisted asset's public
13
+ * URL + storage metadata (unwraps the `{ data }` envelope). Throws
14
+ * `StorageExceededError` (413) over the storage cap and the SDK's other typed
15
+ * errors on the usual statuses.
16
+ */
17
+ async upload(file) {
18
+ const form = new FormData();
19
+ form.append("file", file);
20
+ const res = await this.client.request(
21
+ "POST",
22
+ "/v1/upload",
23
+ { body: form }
24
+ );
25
+ return res.data;
26
+ }
27
+ };
28
+
29
+ exports.UploadsResource = UploadsResource;
30
+ //# sourceMappingURL=chunk-ZQQABQMH.cjs.map
31
+ //# sourceMappingURL=chunk-ZQQABQMH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/uploads.ts"],"names":[],"mappings":";;;AA4BO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,MAAA,EAA0B;AAA1B,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAA2B;AAAA,EAA3B,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUpB,MAAM,OAAO,IAAA,EAAmC;AAC9C,IAAA,MAAM,IAAA,GAAO,IAAI,QAAA,EAAS;AAC1B,IAAA,IAAA,CAAK,MAAA,CAAO,QAAQ,IAAI,CAAA;AACxB,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,MAAA,CAAO,OAAA;AAAA,MAC5B,MAAA;AAAA,MACA,YAAA;AAAA,MACA,EAAE,MAAM,IAAA;AAAK,KACf;AACA,IAAA,OAAO,GAAA,CAAI,IAAA;AAAA,EACb;AACF","file":"chunk-ZQQABQMH.cjs","sourcesContent":["import type { NodaroClientCore } from \"../core.js\"\n\n/**\n * Result of a successful `POST /v1/upload`. Mirrors the route's `data` envelope\n * (`backend/src/routes/upload.ts`), the source of truth — keep in sync if that\n * response changes. The route also returns loosely-typed extracted `metadata`;\n * it is omitted here until a consumer needs a typed shape (add it shaped to\n * that need rather than inventing `Record<string, unknown>` surface now).\n */\nexport interface UploadResult {\n /** Public R2 URL of the stored asset (always present on success). */\n readonly url: string\n /** Storage row id; `null` when no asset row was written (e.g. unauthenticated). */\n readonly assetId: string | null\n /** Generated thumbnail URL (images/video); `null` for audio or on failure. */\n readonly thumbnailUrl: string | null\n /** Server-classified asset category (e.g. \"image\" | \"video\" | \"audio\"). */\n readonly category: string\n /** Display filename (server override or the original). */\n readonly filename: string\n /** Final MIME type after server normalization. */\n readonly mimeType: string\n /** Stored byte size. */\n readonly sizeBytes: number\n /** R2 object key. */\n readonly r2Key: string\n}\n\nexport class UploadsResource {\n constructor(private client: NodaroClientCore) {}\n\n /**\n * Upload one file (`POST /v1/upload`, multipart — the file rides the `file`\n * field). The SDK's `request` detects the `FormData` body and lets the\n * runtime set the multipart boundary. Returns the persisted asset's public\n * URL + storage metadata (unwraps the `{ data }` envelope). Throws\n * `StorageExceededError` (413) over the storage cap and the SDK's other typed\n * errors on the usual statuses.\n */\n async upload(file: File): Promise<UploadResult> {\n const form = new FormData()\n form.append(\"file\", file)\n const res = await this.client.request<{ data: UploadResult }>(\n \"POST\",\n \"/v1/upload\",\n { body: form },\n )\n return res.data\n }\n}\n"]}
@@ -0,0 +1,200 @@
1
+ // src/resources/workflows.ts
2
+ var WorkflowCollaboratorsResource = class {
3
+ constructor(client) {
4
+ this.client = client;
5
+ }
6
+ client;
7
+ /** List a workflow's collaborators (id, name, avatar, role — never email). */
8
+ list(workflowId) {
9
+ return this.client.request(
10
+ "GET",
11
+ `/v1/workflows/${encodeURIComponent(workflowId)}/collaborators`
12
+ );
13
+ }
14
+ /** Add a collaborator by `userId` OR `email` (exactly one), at the given role. */
15
+ add(workflowId, input) {
16
+ return this.client.request(
17
+ "POST",
18
+ `/v1/workflows/${encodeURIComponent(workflowId)}/collaborators`,
19
+ { body: input }
20
+ );
21
+ }
22
+ /** Change a collaborator's role. */
23
+ update(workflowId, userId, input) {
24
+ return this.client.request(
25
+ "PATCH",
26
+ `/v1/workflows/${encodeURIComponent(workflowId)}/collaborators/${encodeURIComponent(userId)}`,
27
+ { body: input }
28
+ );
29
+ }
30
+ /** Remove a collaborator — or yourself. Returns `{ success: true }`. */
31
+ remove(workflowId, userId) {
32
+ return this.client.request(
33
+ "DELETE",
34
+ `/v1/workflows/${encodeURIComponent(workflowId)}/collaborators/${encodeURIComponent(userId)}`
35
+ );
36
+ }
37
+ };
38
+ var WorkflowsResource = class {
39
+ constructor(client) {
40
+ this.client = client;
41
+ this.collaborators = new WorkflowCollaboratorsResource(client);
42
+ }
43
+ client;
44
+ /** The people this workflow is shared with. See {@link WorkflowCollaboratorsResource}. */
45
+ collaborators;
46
+ /** List workflows for a project. Returns metadata only — `nodes`/`edges` are not included. */
47
+ list(params) {
48
+ return this.client.request(
49
+ "GET",
50
+ `/v1/projects/${encodeURIComponent(params.projectId)}/workflows`
51
+ );
52
+ }
53
+ /** Get a workflow including its full nodes/edges/settings. */
54
+ get(id) {
55
+ return this.client.request("GET", `/v1/workflows/${encodeURIComponent(id)}`);
56
+ }
57
+ /**
58
+ * Get a PUBLICLY-SHARED workflow by id (`GET /v1/public/workflows/:id`) — the
59
+ * unauthenticated share-by-link read. Returns the workflow's nodes/edges/
60
+ * settings ONLY when it's opted into sharing server-side (`settings.studio.shared
61
+ * === true`); otherwise the route 404s (→ `NotFoundError`). No auth required —
62
+ * a share viewer has no session; the SDK omits the bearer when no token exists.
63
+ */
64
+ getPublic(id) {
65
+ return this.client.request("GET", `/v1/public/workflows/${encodeURIComponent(id)}`);
66
+ }
67
+ /**
68
+ * Create a workflow under a project. Returns the full record.
69
+ * NOTE: server route is `POST /v1/projects/:projectId/workflows`.
70
+ */
71
+ create(input) {
72
+ const { projectId, ...body } = input;
73
+ return this.client.request(
74
+ "POST",
75
+ `/v1/projects/${encodeURIComponent(projectId)}/workflows`,
76
+ { body }
77
+ );
78
+ }
79
+ /** Patch a workflow. Returns the full updated record. */
80
+ update(id, input) {
81
+ return this.client.request(
82
+ "PATCH",
83
+ `/v1/workflows/${encodeURIComponent(id)}`,
84
+ { body: input }
85
+ );
86
+ }
87
+ /** Delete a workflow. Returns `{ success: true }`. Throws `NotFoundError`
88
+ * when the id doesn't exist or isn't yours (the delete is not silent). */
89
+ delete(id) {
90
+ return this.client.request("DELETE", `/v1/workflows/${encodeURIComponent(id)}`);
91
+ }
92
+ /**
93
+ * Run a workflow. Returns the executionId for polling via
94
+ * `client.executions.get(executionId)`.
95
+ */
96
+ run(id, params = {}, options) {
97
+ return this.client.request(
98
+ "POST",
99
+ `/v1/workflows/${encodeURIComponent(id)}/run`,
100
+ {
101
+ body: params,
102
+ ...options?.idempotencyKey ? { headers: { "Idempotency-Key": options.idempotencyKey } } : {}
103
+ }
104
+ );
105
+ }
106
+ /**
107
+ * Render final (`renderFinal` on `POST /v1/workflows/:id/run`): run the
108
+ * render at Final for this run only, and every node after it, continuing the
109
+ * execution that stopped at its preview. The server derives the nodes and
110
+ * the override — send nothing else. Quote it first with
111
+ * {@link estimateRenderFinal}. Refused with `render_final_node_not_found`,
112
+ * `render_final_not_a_render`, or a continuation code (see `run`); a run
113
+ * its payer cannot cover throws `InsufficientCreditsError` (with `required`
114
+ * and, when it is yours to see, `available`) before any execution exists.
115
+ */
116
+ renderFinal(id, params) {
117
+ return this.client.request("POST", `/v1/workflows/${encodeURIComponent(id)}/run`, {
118
+ body: {
119
+ renderFinal: { renderNodeId: params.renderNodeId },
120
+ continueFromExecutionId: params.continueFromExecutionId
121
+ }
122
+ });
123
+ }
124
+ /**
125
+ * Quote a Render final (`POST /v1/workflows/:id/render-final/estimate`): the
126
+ * nodes it will run, the override it runs with and its estimated credits.
127
+ * Nothing is created or charged.
128
+ */
129
+ estimateRenderFinal(id, params) {
130
+ return this.client.request("POST", `/v1/workflows/${encodeURIComponent(id)}/render-final/estimate`, {
131
+ body: { renderNodeId: params.renderNodeId, continueFromExecutionId: params.continueFromExecutionId }
132
+ });
133
+ }
134
+ /**
135
+ * Export a workflow as a portable JSON bundle.
136
+ * Pass `opts.assets = true` to include character/object/location entity data.
137
+ */
138
+ export(workflowId, opts) {
139
+ return this.client.request(
140
+ "GET",
141
+ `/v1/workflows/${encodeURIComponent(workflowId)}/export`,
142
+ { query: { assets: opts?.assets ?? false } }
143
+ );
144
+ }
145
+ /**
146
+ * Import a `WorkflowExport` bundle into the specified project.
147
+ * Re-creates any bundled assets (characters, objects, creatures, locations)
148
+ * under your account, and re-points BOTH the entity nodes and every `@`-chip
149
+ * (`ConnectedReference`) bound in the graph at the rows it created.
150
+ * Media the bundle references on other hosts is copied onto this instance's
151
+ * storage where reachable; a bundled entity's images are copied whoever
152
+ * hosts them, because they are the exporter's bytes and their lifecycle is
153
+ * not yours. `importReport` says what was copied, what could not be reached
154
+ * and what was skipped (and why); `assetIdMap` maps each bundled entity id
155
+ * to the row created for it (for chips you hold outside the graph), and
156
+ * `assetsSkipped` names the entities your storage quota left uncreated —
157
+ * the workflow itself still lands.
158
+ */
159
+ import(input) {
160
+ const { projectId, ...workflowJson } = input;
161
+ return this.client.request("POST", "/v1/workflows/import", {
162
+ body: { projectId, workflow_json: workflowJson }
163
+ });
164
+ }
165
+ /**
166
+ * Set a workflow's visibility — `"private"` (creator + explicit collaborators)
167
+ * or `"workspace"` (everyone in its workspace). Only the creator or a workspace
168
+ * admin may change it; anyone else gets HTTP 403. Thin wrapper over `update()`:
169
+ * the visibility lever lives on `PATCH /v1/workflows/:id`.
170
+ */
171
+ setVisibility(id, visibility) {
172
+ return this.client.request("PATCH", `/v1/workflows/${encodeURIComponent(id)}`, {
173
+ body: { visibility }
174
+ });
175
+ }
176
+ /**
177
+ * Move a workflow to another project (`POST /v1/workflows/:id/move`); its folder
178
+ * is cleared. When the move takes the workflow out of a workspace, collaborator
179
+ * grants that came from that workspace are dropped and returned as
180
+ * `droppedCollaborators`.
181
+ */
182
+ move(id, params) {
183
+ return this.client.request("POST", `/v1/workflows/${encodeURIComponent(id)}/move`, {
184
+ body: params
185
+ });
186
+ }
187
+ /**
188
+ * Workflows other people shared with you (`GET /v1/workflows/shared-with-me`) —
189
+ * grants on work that is NOT in a workspace you belong to (workspace work already
190
+ * shows in that workspace's own lists). Each carries the `grantedRole` you hold.
191
+ * Empty when the organizations feature is off server-side.
192
+ */
193
+ sharedWithMe() {
194
+ return this.client.request("GET", "/v1/workflows/shared-with-me");
195
+ }
196
+ };
197
+
198
+ export { WorkflowsResource };
199
+ //# sourceMappingURL=chunk-ZXJQSFIA.js.map
200
+ //# sourceMappingURL=chunk-ZXJQSFIA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/workflows.ts"],"names":[],"mappings":"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","file":"chunk-ZXJQSFIA.js","sourcesContent":["import type { NodaroClientCore } from \"../core.js\"\nimport type {\n GenericNode,\n GenericEdge,\n} from \"@nodaro/shared/types\"\nimport type {\n WorkflowExport,\n WorkflowImportReport,\n} from \"@nodaro/shared/workflow\"\nimport type {\n WorkflowVisibility,\n CollaboratorRole,\n} from \"@nodaro/shared/organizations\"\n\n/**\n * Workflow metadata + (when fetched as a single record) full nodes/edges/settings.\n *\n * The list endpoint returns metadata only; `get`, `create`, and `update` return the\n * full record. `nodes`, `edges`, `settings`, and `sourcePrompt` are present only on\n * full records and omitted in list responses.\n */\nexport interface Workflow {\n id: string\n projectId: string | null\n userId: string\n name: string\n description?: string | null\n folderId?: string | null\n isTemplate?: boolean\n version?: number\n thumbnailUrl?: string | null\n nodes?: GenericNode[]\n edges?: GenericEdge[]\n settings?: Record<string, unknown>\n sourcePrompt?: string | null\n createdAt: string\n updatedAt: string\n}\n\nexport interface ListWorkflowsParams {\n /** Required — list endpoint is `/v1/projects/:projectId/workflows`. */\n projectId: string\n}\n\nexport interface CreateWorkflowInput {\n /** Required — workflow is created under this project. */\n projectId: string\n name: string\n description?: string\n folderId?: string | null\n nodes?: GenericNode[]\n edges?: GenericEdge[]\n settings?: Record<string, unknown>\n sourcePrompt?: string\n}\n\nexport interface UpdateWorkflowInput {\n name?: string\n description?: string\n folderId?: string | null\n nodes?: GenericNode[]\n edges?: GenericEdge[]\n settings?: Record<string, unknown>\n sourcePrompt?: string\n thumbnailUrl?: string | null\n /**\n * Optimistic concurrency: the `updatedAt` your copy of the workflow was\n * loaded with. When the row has since been written by another tab/device,\n * the update is rejected with HTTP 409 `workflow_conflict`\n * (`WorkflowConflictError`) carrying the current record — re-read/merge and\n * retry instead of last-writer-wins clobbering the other writer's changes.\n * Omit for the legacy unconditional replace.\n */\n expectedUpdatedAt?: string\n /**\n * Optimistic concurrency by monotonic version — preferred over\n * `expectedUpdatedAt` (integer bumped by the DB on every content change).\n */\n expectedVersion?: number\n}\n\nexport interface RunWorkflowParams {\n /**\n * Optional subset of node IDs to execute. Omit to run the full workflow.\n * With `continueMode: \"from-failed\"`, the nodes to consider (default: the\n * nodes the run's chain was first started on, plus every node left failed or\n * held back; see `continueMode`); the run executes only those the failed run\n * did not complete. Every id sent counts as named: a node of work no run of\n * the chain ever ran (each only handed on its saved results) runs and is\n * priced, while a source, trigger, parameter picker or container keeps what\n * the run handed on and a node set to skip never runs.\n */\n nodeIds?: string[]\n /**\n * Per-node field overrides for this run only, `{ [nodeId]: { field: value } }`,\n * shallow-merged over each node's saved data (the node's saved results are\n * not used). A run through the API has nobody to review a Preview render, so\n * a workflow whose Apply EDL render is set to Preview is refused\n * (`preview_review_required`) unless the run sets it to Final:\n * `{ [renderNodeId]: { quality: \"final\" } }`. A node with Review before\n * render on (Tighten Episode, Trailer) is refused the same way (turn its\n * review off). A failed execution records what held it —\n * `preview_review_required` / `preview_render_nested` (a render),\n * `…_review_on` (a review-on node) or `…_mixed` (both); match all six with\n * `isPreviewRefusalCode` from `@nodaro/shared`. A review-on Tighten Episode\n * fed by a List is refused with `use_case_review_list_driven`; a Trailer fed\n * by a List, with `use_case_list_driven`.\n */\n inputOverrides?: Record<string, Record<string, unknown>>\n /**\n * Continue from an earlier execution of this workflow — Render final after a\n * run that stopped at its preview, or (with `continueMode: \"from-failed\"`) a\n * failed run from where it stopped. The run executes `nodeIds` only\n * (required with this field, except with `continueMode`); every other node\n * hands on what that execution produced, not the workflow's saved results,\n * and an Edit Plan hands on its plan with the person's review applied. The\n * execution must be your own `completed` run of this workflow (`failed`,\n * with `continueMode`), not of a published app version. Refused with\n * `continuation_subset_required`, `continuation_not_found` (404),\n * `continuation_workflow_mismatch`, `continuation_version_mismatch` or\n * `continuation_not_completed` (409). A continuation its payer cannot cover\n * (with or without `continueMode`, priced on the nodes it runs) throws\n * `InsufficientCreditsError` before any execution exists, checked as a\n * {@link WorkflowsResource.renderFinal} is.\n */\n continueFromExecutionId?: string\n /**\n * `\"from-failed\"`: continue a FAILED run (`continueFromExecutionId`) from\n * where it stopped. It runs every node that run did not complete — of\n * `nodeIds`, which default to the nodes the run was started on (a run\n * started on named nodes is continued on those, a run of every node on every\n * node; a continuation of a continuation keeps those of the first run of its\n * chain) plus every node the run left failed or held back — and hands on\n * what it completed,\n * never run or charged again. That is per node: a node that failed runs\n * again in full, every list item included. When a later continuation of it\n * completed only part of what it left (a narrower `nodeIds`), the run builds\n * on the newest such one: it is seeded from that run and runs only what is\n * still left ({@link RunWorkflowResult.continuedFrom} names it). A node\n * `nodeIds` names that no run of the chain ever ran runs too, and is priced\n * (see `nodeIds`). A Render\n * final, or a run of named nodes, continuing the newest of those counts as\n * one of them too. Not combinable with {@link renderFinal}. Refused with\n * `continuation_not_failed` (409) for a run that did not fail,\n * `continuation_superseded` (409) when a later continuation supersedes it —\n * the message names that run: one that failed (continue that one instead),\n * or one that completed all this run left (the work is done, and its results\n * are on that run) — `continuation_preview_pending` (409, a\n * `ContinuationPreviewPendingError`) when the newest later continuation\n * stopped at a Preview review of a render or of a Tighten Episode (the error\n * names that run, what holds it, and in `next` the run that finishes it:\n * `client.workflows.run(workflowId, error.next)` first — for a single render,\n * its {@link renderFinal}), and\n * `continuation_subset_required` (409) when nothing is left to run. Send an\n * {@link RunWorkflowOptions.idempotencyKey} with each continuation.\n */\n continueMode?: \"from-failed\"\n}\n\n/** Per-call options for {@link WorkflowsResource.run}. */\nexport interface RunWorkflowOptions {\n /**\n * Sent as the `Idempotency-Key` header (at least 8 characters; the server\n * ignores a shorter one). Reuse the same value when retrying the same\n * request: the server answers the run it already started (`deduped: true`)\n * instead of starting a second one — or, once that run is under way or has\n * superseded the one it continued, refuses with `already_running` (an\n * `AlreadyRunningError` carrying its `executionId`) or\n * `continuation_superseded` naming it. Either way nothing runs twice.\n */\n idempotencyKey?: string\n}\n\nexport interface RunWorkflowResult {\n executionId: string\n status: \"pending\" | \"running\"\n /** `true` when an `idempotencyKey` retry found the run already started: `executionId` is that run. */\n deduped?: boolean\n /**\n * With `continueMode: \"from-failed\"`: the execution the run continued from —\n * its states seed the run. The run asked for (`continueFromExecutionId`), or\n * the newest later continuation of it that completed part of what it left.\n * Absent on any other run, and on a `deduped` answer.\n */\n continuedFrom?: string\n}\n\n/**\n * A Render final: the Apply EDL render at Final for this run only, and every\n * node after it (Camera Switch first, in multicam). The server works out which\n * nodes run — the same rule as the editor's Render final button.\n */\nexport interface RenderFinalParams {\n /** The Apply EDL render node to finalize. */\n renderNodeId: string\n /**\n * The execution that stopped at the preview: your own `completed` run of\n * this workflow. Every node the Render final does not run hands on what it\n * produced (an Edit Plan hands on its plan with the review applied).\n */\n continueFromExecutionId: string\n}\n\n/** What a Render final will run and charge. Nothing is created by the quote. */\nexport interface RenderFinalQuote {\n renderNodeId: string\n /** The nodes the run executes, in canvas order. */\n nodeIds: string[]\n /** The one-shot override it runs with: `{ [renderNodeId]: { quality: \"final\" } }`. */\n inputOverrides: Record<string, Record<string, unknown>>\n /** Estimated credits; `null` in an edition without credits. */\n estimatedCredits: number | null\n /**\n * Whether the payer can cover `estimatedCredits`; `null` in an edition\n * without credits. When `false`, {@link WorkflowsResource.renderFinal} is\n * refused with `InsufficientCreditsError` before any execution exists.\n */\n sufficient: boolean | null\n /**\n * The payer's spendable credits; `null` when it is not yours to see (a\n * deployment's operator pays) or a workspace budget pays.\n */\n available: number | null\n}\n\n/** A person granted access to a workflow. Email is never returned (privacy). */\nexport interface Collaborator {\n userId: string\n name?: string | null\n avatar?: string | null\n role: CollaboratorRole\n}\n\nexport interface AddCollaboratorInput {\n /** Provide exactly one of `userId` or `email`. */\n userId?: string\n email?: string\n role: CollaboratorRole\n}\n\n/** A workflow someone else shared with you, plus the role you hold on it. */\nexport interface SharedWorkflow extends Workflow {\n grantedRole: CollaboratorRole\n}\n\n/** A grant dropped because a move took the workflow out of the workspace the\n * access came from. */\nexport interface DroppedCollaborator {\n userId: string\n name: string | null\n}\n\n/**\n * The people a workflow is shared with — reached as `client.workflows.collaborators`.\n * All four endpoints are served by the organizations feature and exist only when\n * it is enabled server-side; against an install without it they 404\n * (→ `NotFoundError`). The active workspace travels on the request like every\n * other call, so a workspace admin's grants apply automatically.\n */\nexport class WorkflowCollaboratorsResource {\n constructor(private client: NodaroClientCore) {}\n\n /** List a workflow's collaborators (id, name, avatar, role — never email). */\n list(workflowId: string): Promise<{ data: Collaborator[] }> {\n return this.client.request(\n \"GET\",\n `/v1/workflows/${encodeURIComponent(workflowId)}/collaborators`,\n )\n }\n\n /** Add a collaborator by `userId` OR `email` (exactly one), at the given role. */\n add(\n workflowId: string,\n input: AddCollaboratorInput,\n ): Promise<{ data: { userId: string; role: CollaboratorRole } }> {\n return this.client.request(\n \"POST\",\n `/v1/workflows/${encodeURIComponent(workflowId)}/collaborators`,\n { body: input },\n )\n }\n\n /** Change a collaborator's role. */\n update(\n workflowId: string,\n userId: string,\n input: { role: CollaboratorRole },\n ): Promise<{ data: { userId: string; role: CollaboratorRole } }> {\n return this.client.request(\n \"PATCH\",\n `/v1/workflows/${encodeURIComponent(workflowId)}/collaborators/${encodeURIComponent(userId)}`,\n { body: input },\n )\n }\n\n /** Remove a collaborator — or yourself. Returns `{ success: true }`. */\n remove(workflowId: string, userId: string): Promise<{ success: true }> {\n return this.client.request(\n \"DELETE\",\n `/v1/workflows/${encodeURIComponent(workflowId)}/collaborators/${encodeURIComponent(userId)}`,\n )\n }\n}\n\nexport class WorkflowsResource {\n /** The people this workflow is shared with. See {@link WorkflowCollaboratorsResource}. */\n readonly collaborators: WorkflowCollaboratorsResource\n\n constructor(private client: NodaroClientCore) {\n this.collaborators = new WorkflowCollaboratorsResource(client)\n }\n\n /** List workflows for a project. Returns metadata only — `nodes`/`edges` are not included. */\n list(params: ListWorkflowsParams): Promise<{ data: Workflow[] }> {\n return this.client.request(\n \"GET\",\n `/v1/projects/${encodeURIComponent(params.projectId)}/workflows`,\n )\n }\n\n /** Get a workflow including its full nodes/edges/settings. */\n get(id: string): Promise<{ data: Workflow }> {\n return this.client.request(\"GET\", `/v1/workflows/${encodeURIComponent(id)}`)\n }\n\n /**\n * Get a PUBLICLY-SHARED workflow by id (`GET /v1/public/workflows/:id`) — the\n * unauthenticated share-by-link read. Returns the workflow's nodes/edges/\n * settings ONLY when it's opted into sharing server-side (`settings.studio.shared\n * === true`); otherwise the route 404s (→ `NotFoundError`). No auth required —\n * a share viewer has no session; the SDK omits the bearer when no token exists.\n */\n getPublic(id: string): Promise<{ data: Workflow }> {\n return this.client.request(\"GET\", `/v1/public/workflows/${encodeURIComponent(id)}`)\n }\n\n /**\n * Create a workflow under a project. Returns the full record.\n * NOTE: server route is `POST /v1/projects/:projectId/workflows`.\n */\n create(input: CreateWorkflowInput): Promise<{ data: Workflow }> {\n const { projectId, ...body } = input\n return this.client.request(\n \"POST\",\n `/v1/projects/${encodeURIComponent(projectId)}/workflows`,\n { body },\n )\n }\n\n /** Patch a workflow. Returns the full updated record. */\n update(id: string, input: UpdateWorkflowInput): Promise<{ data: Workflow }> {\n return this.client.request(\n \"PATCH\",\n `/v1/workflows/${encodeURIComponent(id)}`,\n { body: input },\n )\n }\n\n /** Delete a workflow. Returns `{ success: true }`. Throws `NotFoundError`\n * when the id doesn't exist or isn't yours (the delete is not silent). */\n delete(id: string): Promise<{ success: true }> {\n return this.client.request(\"DELETE\", `/v1/workflows/${encodeURIComponent(id)}`)\n }\n\n /**\n * Run a workflow. Returns the executionId for polling via\n * `client.executions.get(executionId)`.\n */\n run(id: string, params: RunWorkflowParams = {}, options?: RunWorkflowOptions): Promise<RunWorkflowResult> {\n return this.client.request(\n \"POST\",\n `/v1/workflows/${encodeURIComponent(id)}/run`,\n {\n body: params,\n ...(options?.idempotencyKey ? { headers: { \"Idempotency-Key\": options.idempotencyKey } } : {}),\n },\n )\n }\n\n /**\n * Render final (`renderFinal` on `POST /v1/workflows/:id/run`): run the\n * render at Final for this run only, and every node after it, continuing the\n * execution that stopped at its preview. The server derives the nodes and\n * the override — send nothing else. Quote it first with\n * {@link estimateRenderFinal}. Refused with `render_final_node_not_found`,\n * `render_final_not_a_render`, or a continuation code (see `run`); a run\n * its payer cannot cover throws `InsufficientCreditsError` (with `required`\n * and, when it is yours to see, `available`) before any execution exists.\n */\n renderFinal(id: string, params: RenderFinalParams): Promise<RunWorkflowResult> {\n return this.client.request(\"POST\", `/v1/workflows/${encodeURIComponent(id)}/run`, {\n body: {\n renderFinal: { renderNodeId: params.renderNodeId },\n continueFromExecutionId: params.continueFromExecutionId,\n },\n })\n }\n\n /**\n * Quote a Render final (`POST /v1/workflows/:id/render-final/estimate`): the\n * nodes it will run, the override it runs with and its estimated credits.\n * Nothing is created or charged.\n */\n estimateRenderFinal(id: string, params: RenderFinalParams): Promise<{ data: RenderFinalQuote }> {\n return this.client.request(\"POST\", `/v1/workflows/${encodeURIComponent(id)}/render-final/estimate`, {\n body: { renderNodeId: params.renderNodeId, continueFromExecutionId: params.continueFromExecutionId },\n })\n }\n\n /**\n * Export a workflow as a portable JSON bundle.\n * Pass `opts.assets = true` to include character/object/location entity data.\n */\n export(\n workflowId: string,\n opts?: { assets?: boolean },\n ): Promise<{ data: WorkflowExport }> {\n return this.client.request(\n \"GET\",\n `/v1/workflows/${encodeURIComponent(workflowId)}/export`,\n { query: { assets: opts?.assets ?? false } },\n )\n }\n\n /**\n * Import a `WorkflowExport` bundle into the specified project.\n * Re-creates any bundled assets (characters, objects, creatures, locations)\n * under your account, and re-points BOTH the entity nodes and every `@`-chip\n * (`ConnectedReference`) bound in the graph at the rows it created.\n * Media the bundle references on other hosts is copied onto this instance's\n * storage where reachable; a bundled entity's images are copied whoever\n * hosts them, because they are the exporter's bytes and their lifecycle is\n * not yours. `importReport` says what was copied, what could not be reached\n * and what was skipped (and why); `assetIdMap` maps each bundled entity id\n * to the row created for it (for chips you hold outside the graph), and\n * `assetsSkipped` names the entities your storage quota left uncreated —\n * the workflow itself still lands.\n */\n import(input: WorkflowExport & { projectId: string }): Promise<{ data: Workflow; importReport?: WorkflowImportReport }> {\n const { projectId, ...workflowJson } = input\n return this.client.request(\"POST\", \"/v1/workflows/import\", {\n body: { projectId, workflow_json: workflowJson },\n })\n }\n\n /**\n * Set a workflow's visibility — `\"private\"` (creator + explicit collaborators)\n * or `\"workspace\"` (everyone in its workspace). Only the creator or a workspace\n * admin may change it; anyone else gets HTTP 403. Thin wrapper over `update()`:\n * the visibility lever lives on `PATCH /v1/workflows/:id`.\n */\n setVisibility(id: string, visibility: WorkflowVisibility): Promise<{ data: Workflow }> {\n return this.client.request(\"PATCH\", `/v1/workflows/${encodeURIComponent(id)}`, {\n body: { visibility },\n })\n }\n\n /**\n * Move a workflow to another project (`POST /v1/workflows/:id/move`); its folder\n * is cleared. When the move takes the workflow out of a workspace, collaborator\n * grants that came from that workspace are dropped and returned as\n * `droppedCollaborators`.\n */\n move(\n id: string,\n params: { projectId: string },\n ): Promise<{ data: Workflow; droppedCollaborators: DroppedCollaborator[] }> {\n return this.client.request(\"POST\", `/v1/workflows/${encodeURIComponent(id)}/move`, {\n body: params,\n })\n }\n\n /**\n * Workflows other people shared with you (`GET /v1/workflows/shared-with-me`) —\n * grants on work that is NOT in a workspace you belong to (workspace work already\n * shows in that workspace's own lists). Each carries the `grantedRole` you hold.\n * Empty when the organizations feature is off server-side.\n */\n sharedWithMe(): Promise<{ data: SharedWorkflow[] }> {\n return this.client.request(\"GET\", \"/v1/workflows/shared-with-me\")\n }\n}\n"]}