@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.
- package/README.md +31 -0
- package/dist/chunk-2DZWWIJ4.cjs +32 -0
- package/dist/chunk-2DZWWIJ4.cjs.map +1 -0
- package/dist/chunk-34PU2DAT.cjs +118 -0
- package/dist/chunk-34PU2DAT.cjs.map +1 -0
- package/dist/chunk-37Y5QAVA.js +3 -0
- package/dist/chunk-37Y5QAVA.js.map +1 -0
- package/dist/chunk-37YCKZX4.cjs +4 -0
- package/dist/chunk-37YCKZX4.cjs.map +1 -0
- package/dist/chunk-3B47IHB3.cjs +65 -0
- package/dist/chunk-3B47IHB3.cjs.map +1 -0
- package/dist/chunk-3BELHJBN.cjs +4 -0
- package/dist/chunk-3BELHJBN.cjs.map +1 -0
- package/dist/chunk-3PPSGM5X.js +3 -0
- package/dist/chunk-3PPSGM5X.js.map +1 -0
- package/dist/chunk-3QBH2VE2.cjs +80 -0
- package/dist/chunk-3QBH2VE2.cjs.map +1 -0
- package/dist/chunk-3QFTP5P5.js +102 -0
- package/dist/chunk-3QFTP5P5.js.map +1 -0
- package/dist/chunk-43FVH6LJ.cjs +123 -0
- package/dist/chunk-43FVH6LJ.cjs.map +1 -0
- package/dist/chunk-43NO4SGC.cjs +4 -0
- package/dist/chunk-43NO4SGC.cjs.map +1 -0
- package/dist/chunk-45CK55BH.cjs +4 -0
- package/dist/chunk-45CK55BH.cjs.map +1 -0
- package/dist/chunk-4NLVBYMW.js +280 -0
- package/dist/chunk-4NLVBYMW.js.map +1 -0
- package/dist/chunk-4WRDR4GN.js +102 -0
- package/dist/chunk-4WRDR4GN.js.map +1 -0
- package/dist/chunk-4WWSHV5G.cjs +4 -0
- package/dist/chunk-4WWSHV5G.cjs.map +1 -0
- package/dist/chunk-53SXNN3A.js +80 -0
- package/dist/chunk-53SXNN3A.js.map +1 -0
- package/dist/chunk-5ALNFATQ.cjs +27 -0
- package/dist/chunk-5ALNFATQ.cjs.map +1 -0
- package/dist/chunk-5UQNMNUE.cjs +4 -0
- package/dist/chunk-5UQNMNUE.cjs.map +1 -0
- package/dist/chunk-5WAI7VGO.js +184 -0
- package/dist/chunk-5WAI7VGO.js.map +1 -0
- package/dist/chunk-65E3JBFZ.js +52 -0
- package/dist/chunk-65E3JBFZ.js.map +1 -0
- package/dist/chunk-6JFNBAKV.js +3 -0
- package/dist/chunk-6JFNBAKV.js.map +1 -0
- package/dist/chunk-6OC6OKLY.cjs +4 -0
- package/dist/chunk-6OC6OKLY.cjs.map +1 -0
- package/dist/chunk-6OGGJQVA.js +25 -0
- package/dist/chunk-6OGGJQVA.js.map +1 -0
- package/dist/chunk-7A7HYFGM.js +3 -0
- package/dist/chunk-7A7HYFGM.js.map +1 -0
- package/dist/chunk-7ISSKQ6S.cjs +106 -0
- package/dist/chunk-7ISSKQ6S.cjs.map +1 -0
- package/dist/chunk-7LSFG2AF.js +194 -0
- package/dist/chunk-7LSFG2AF.js.map +1 -0
- package/dist/chunk-7MYKT2L4.cjs +4 -0
- package/dist/chunk-7MYKT2L4.cjs.map +1 -0
- package/dist/chunk-7QOCWJKD.cjs +25 -0
- package/dist/chunk-7QOCWJKD.cjs.map +1 -0
- package/dist/chunk-A2ZAFAWC.cjs +4 -0
- package/dist/chunk-A2ZAFAWC.cjs.map +1 -0
- package/dist/chunk-A3S55XGF.cjs +54 -0
- package/dist/chunk-A3S55XGF.cjs.map +1 -0
- package/dist/chunk-A3THLBFG.js +3 -0
- package/dist/chunk-A3THLBFG.js.map +1 -0
- package/dist/chunk-AJVSMNPZ.js +78 -0
- package/dist/chunk-AJVSMNPZ.js.map +1 -0
- package/dist/chunk-ALSLZG3U.js +124 -0
- package/dist/chunk-ALSLZG3U.js.map +1 -0
- package/dist/chunk-ALUUBPDG.cjs +4 -0
- package/dist/chunk-ALUUBPDG.cjs.map +1 -0
- package/dist/chunk-AO3W45LT.cjs +4 -0
- package/dist/chunk-AO3W45LT.cjs.map +1 -0
- package/dist/chunk-AUDHV3OE.js +3 -0
- package/dist/chunk-AUDHV3OE.js.map +1 -0
- package/dist/chunk-BAL576G2.cjs +4 -0
- package/dist/chunk-BAL576G2.cjs.map +1 -0
- package/dist/chunk-BFMKPELU.cjs +212 -0
- package/dist/chunk-BFMKPELU.cjs.map +1 -0
- package/dist/chunk-BKP6F2IX.js +3 -0
- package/dist/chunk-BKP6F2IX.js.map +1 -0
- package/dist/chunk-BLA44UCM.js +32 -0
- package/dist/chunk-BLA44UCM.js.map +1 -0
- package/dist/chunk-BPWUWUZ3.cjs +20 -0
- package/dist/chunk-BPWUWUZ3.cjs.map +1 -0
- package/dist/chunk-BRV7Z4GD.cjs +17 -0
- package/dist/chunk-BRV7Z4GD.cjs.map +1 -0
- package/dist/chunk-BU5A6K4C.js +122 -0
- package/dist/chunk-BU5A6K4C.js.map +1 -0
- package/dist/chunk-C22RJDW3.js +3 -0
- package/dist/chunk-C22RJDW3.js.map +1 -0
- package/dist/chunk-CGNVHN4V.js +3 -0
- package/dist/chunk-CGNVHN4V.js.map +1 -0
- package/dist/chunk-CJFIOVBA.js +3 -0
- package/dist/chunk-CJFIOVBA.js.map +1 -0
- package/dist/chunk-CJLLIVSB.cjs +4 -0
- package/dist/chunk-CJLLIVSB.cjs.map +1 -0
- package/dist/chunk-CK3AMMSC.js +194 -0
- package/dist/chunk-CK3AMMSC.js.map +1 -0
- package/dist/chunk-COCKKMNP.cjs +205 -0
- package/dist/chunk-COCKKMNP.cjs.map +1 -0
- package/dist/chunk-CR5E2SF3.cjs +212 -0
- package/dist/chunk-CR5E2SF3.cjs.map +1 -0
- package/dist/chunk-CRCPRZFN.js +3 -0
- package/dist/chunk-CRCPRZFN.js.map +1 -0
- package/dist/chunk-CYRFD6KR.cjs +4 -0
- package/dist/chunk-CYRFD6KR.cjs.map +1 -0
- package/dist/chunk-D3PW7AHZ.js +3 -0
- package/dist/chunk-D3PW7AHZ.js.map +1 -0
- package/dist/chunk-DKEYSJCE.cjs +82 -0
- package/dist/chunk-DKEYSJCE.cjs.map +1 -0
- package/dist/chunk-DPSMVOM3.js +15 -0
- package/dist/chunk-DPSMVOM3.js.map +1 -0
- package/dist/chunk-E2ZXHS6E.js +20 -0
- package/dist/chunk-E2ZXHS6E.js.map +1 -0
- package/dist/chunk-E37CVHWW.js +33 -0
- package/dist/chunk-E37CVHWW.js.map +1 -0
- package/dist/chunk-E5BM4BLO.js +78 -0
- package/dist/chunk-E5BM4BLO.js.map +1 -0
- package/dist/chunk-EHRWTYGR.cjs +4 -0
- package/dist/chunk-EHRWTYGR.cjs.map +1 -0
- package/dist/chunk-EJSGJDZY.js +212 -0
- package/dist/chunk-EJSGJDZY.js.map +1 -0
- package/dist/chunk-ELSOVJPF.js +3 -0
- package/dist/chunk-ELSOVJPF.js.map +1 -0
- package/dist/chunk-ERLXU47J.js +29 -0
- package/dist/chunk-ERLXU47J.js.map +1 -0
- package/dist/chunk-ES2E65HT.js +3 -0
- package/dist/chunk-ES2E65HT.js.map +1 -0
- package/dist/chunk-EXLAHZKF.js +3 -0
- package/dist/chunk-EXLAHZKF.js.map +1 -0
- package/dist/chunk-FHEYAW5H.js +3 -0
- package/dist/chunk-FHEYAW5H.js.map +1 -0
- package/dist/chunk-GA4LZZKQ.cjs +104 -0
- package/dist/chunk-GA4LZZKQ.cjs.map +1 -0
- package/dist/chunk-GAZJ2PA3.js +3 -0
- package/dist/chunk-GAZJ2PA3.js.map +1 -0
- package/dist/chunk-GB6C5OEZ.cjs +32 -0
- package/dist/chunk-GB6C5OEZ.cjs.map +1 -0
- package/dist/chunk-GD24ZRFD.js +3 -0
- package/dist/chunk-GD24ZRFD.js.map +1 -0
- package/dist/chunk-GI7LROLL.cjs +4 -0
- package/dist/chunk-GI7LROLL.cjs.map +1 -0
- package/dist/chunk-GRFLPEM2.cjs +16 -0
- package/dist/chunk-GRFLPEM2.cjs.map +1 -0
- package/dist/chunk-GVIFLUYZ.cjs +40 -0
- package/dist/chunk-GVIFLUYZ.cjs.map +1 -0
- package/dist/chunk-H7VQTG4M.js +35 -0
- package/dist/chunk-H7VQTG4M.js.map +1 -0
- package/dist/chunk-HAKYPZLB.cjs +242 -0
- package/dist/chunk-HAKYPZLB.cjs.map +1 -0
- package/dist/chunk-HFBR6G36.js +3 -0
- package/dist/chunk-HFBR6G36.js.map +1 -0
- package/dist/chunk-HGCVWOGK.cjs +209 -0
- package/dist/chunk-HGCVWOGK.cjs.map +1 -0
- package/dist/chunk-HLHR3R4P.js +3 -0
- package/dist/chunk-HLHR3R4P.js.map +1 -0
- package/dist/chunk-HRXXGGSJ.js +3 -0
- package/dist/chunk-HRXXGGSJ.js.map +1 -0
- package/dist/chunk-I3TYBAOX.js +3 -0
- package/dist/chunk-I3TYBAOX.js.map +1 -0
- package/dist/chunk-I4A5VJRL.js +352 -0
- package/dist/chunk-I4A5VJRL.js.map +1 -0
- package/dist/chunk-I6CXC345.js +102 -0
- package/dist/chunk-I6CXC345.js.map +1 -0
- package/dist/chunk-IGOPUMEX.cjs +4 -0
- package/dist/chunk-IGOPUMEX.cjs.map +1 -0
- package/dist/chunk-IHKIYVZQ.js +30 -0
- package/dist/chunk-IHKIYVZQ.js.map +1 -0
- package/dist/chunk-IMC2M5YM.cjs +12 -0
- package/dist/chunk-IMC2M5YM.cjs.map +1 -0
- package/dist/chunk-IQ6KWSXP.js +3 -0
- package/dist/chunk-IQ6KWSXP.js.map +1 -0
- package/dist/chunk-IS26FJO7.cjs +4 -0
- package/dist/chunk-IS26FJO7.cjs.map +1 -0
- package/dist/chunk-J4WFSKY6.js +50 -0
- package/dist/chunk-J4WFSKY6.js.map +1 -0
- package/dist/chunk-J5LGGCAS.cjs +126 -0
- package/dist/chunk-J5LGGCAS.cjs.map +1 -0
- package/dist/chunk-JDEZHITT.js +43 -0
- package/dist/chunk-JDEZHITT.js.map +1 -0
- package/dist/chunk-JGS6YBDW.js +260 -0
- package/dist/chunk-JGS6YBDW.js.map +1 -0
- package/dist/chunk-JMOKD6ZP.js +46 -0
- package/dist/chunk-JMOKD6ZP.js.map +1 -0
- package/dist/chunk-JOX5BJ6K.cjs +4 -0
- package/dist/chunk-JOX5BJ6K.cjs.map +1 -0
- package/dist/chunk-JTAW54UM.js +116 -0
- package/dist/chunk-JTAW54UM.js.map +1 -0
- package/dist/chunk-K4RQOSJH.js +203 -0
- package/dist/chunk-K4RQOSJH.js.map +1 -0
- package/dist/chunk-KAIE6WJB.cjs +4 -0
- package/dist/chunk-KAIE6WJB.cjs.map +1 -0
- package/dist/chunk-KEDPGWIK.cjs +4 -0
- package/dist/chunk-KEDPGWIK.cjs.map +1 -0
- package/dist/chunk-KG4R454Z.js +18 -0
- package/dist/chunk-KG4R454Z.js.map +1 -0
- package/dist/chunk-KGKCAGRD.cjs +22 -0
- package/dist/chunk-KGKCAGRD.cjs.map +1 -0
- package/dist/chunk-KNMW722T.cjs +48 -0
- package/dist/chunk-KNMW722T.cjs.map +1 -0
- package/dist/chunk-KTTL7BND.cjs +4 -0
- package/dist/chunk-KTTL7BND.cjs.map +1 -0
- package/dist/chunk-KXEWTYS4.cjs +80 -0
- package/dist/chunk-KXEWTYS4.cjs.map +1 -0
- package/dist/chunk-KZQKFBRN.js +3 -0
- package/dist/chunk-KZQKFBRN.js.map +1 -0
- package/dist/chunk-LAWYFC4G.cjs +37 -0
- package/dist/chunk-LAWYFC4G.cjs.map +1 -0
- package/dist/chunk-LHP2CWHD.js +228 -0
- package/dist/chunk-LHP2CWHD.js.map +1 -0
- package/dist/chunk-LHRQXWI5.js +3 -0
- package/dist/chunk-LHRQXWI5.js.map +1 -0
- package/dist/chunk-LKH5M44B.cjs +114 -0
- package/dist/chunk-LKH5M44B.cjs.map +1 -0
- package/dist/chunk-LLNNHLCE.cjs +4 -0
- package/dist/chunk-LLNNHLCE.cjs.map +1 -0
- package/dist/chunk-LWZLWSXD.cjs +4 -0
- package/dist/chunk-LWZLWSXD.cjs.map +1 -0
- package/dist/chunk-M6Y5TOYE.js +3 -0
- package/dist/chunk-M6Y5TOYE.js.map +1 -0
- package/dist/chunk-MBFUMWI5.cjs +31 -0
- package/dist/chunk-MBFUMWI5.cjs.map +1 -0
- package/dist/chunk-MEKI37WI.js +3 -0
- package/dist/chunk-MEKI37WI.js.map +1 -0
- package/dist/chunk-MQ74AKA2.cjs +200 -0
- package/dist/chunk-MQ74AKA2.cjs.map +1 -0
- package/dist/chunk-N6GLZOE4.cjs +282 -0
- package/dist/chunk-N6GLZOE4.cjs.map +1 -0
- package/dist/chunk-NBVARNVA.cjs +38 -0
- package/dist/chunk-NBVARNVA.cjs.map +1 -0
- package/dist/chunk-NCCBS6GU.js +42 -0
- package/dist/chunk-NCCBS6GU.js.map +1 -0
- package/dist/chunk-NGKODS3J.cjs +52 -0
- package/dist/chunk-NGKODS3J.cjs.map +1 -0
- package/dist/chunk-NJVSKUL2.cjs +4 -0
- package/dist/chunk-NJVSKUL2.cjs.map +1 -0
- package/dist/chunk-NLQQHJ25.cjs +104 -0
- package/dist/chunk-NLQQHJ25.cjs.map +1 -0
- package/dist/chunk-NNHWH7ER.js +181 -0
- package/dist/chunk-NNHWH7ER.js.map +1 -0
- package/dist/chunk-NX67YIF3.js +3 -0
- package/dist/chunk-NX67YIF3.js.map +1 -0
- package/dist/chunk-OA6FWYZF.cjs +4 -0
- package/dist/chunk-OA6FWYZF.cjs.map +1 -0
- package/dist/chunk-OJDBSKC2.js +3 -0
- package/dist/chunk-OJDBSKC2.js.map +1 -0
- package/dist/chunk-OLPA44QJ.js +3 -0
- package/dist/chunk-OLPA44QJ.js.map +1 -0
- package/dist/chunk-OMH7ATOQ.js +3 -0
- package/dist/chunk-OMH7ATOQ.js.map +1 -0
- package/dist/chunk-OPR4TULG.js +3 -0
- package/dist/chunk-OPR4TULG.js.map +1 -0
- package/dist/chunk-OSX2GVZ2.cjs +34 -0
- package/dist/chunk-OSX2GVZ2.cjs.map +1 -0
- package/dist/chunk-OXQKE5EG.cjs +282 -0
- package/dist/chunk-OXQKE5EG.cjs.map +1 -0
- package/dist/chunk-P6E4QDJN.js +30 -0
- package/dist/chunk-P6E4QDJN.js.map +1 -0
- package/dist/chunk-PEMLIAPZ.cjs +64 -0
- package/dist/chunk-PEMLIAPZ.cjs.map +1 -0
- package/dist/chunk-PGYQ754I.js +3 -0
- package/dist/chunk-PGYQ754I.js.map +1 -0
- package/dist/chunk-PHKYIWE4.cjs +16 -0
- package/dist/chunk-PHKYIWE4.cjs.map +1 -0
- package/dist/chunk-PMTM26LL.js +3 -0
- package/dist/chunk-PMTM26LL.js.map +1 -0
- package/dist/chunk-PY4OEKNX.cjs +4 -0
- package/dist/chunk-PY4OEKNX.cjs.map +1 -0
- package/dist/chunk-PZS2EXDR.cjs +4 -0
- package/dist/chunk-PZS2EXDR.cjs.map +1 -0
- package/dist/chunk-QITJGSFA.js +210 -0
- package/dist/chunk-QITJGSFA.js.map +1 -0
- package/dist/chunk-QRHJEITQ.cjs +4 -0
- package/dist/chunk-QRHJEITQ.cjs.map +1 -0
- package/dist/chunk-QUFU5RJ7.cjs +4 -0
- package/dist/chunk-QUFU5RJ7.cjs.map +1 -0
- package/dist/chunk-QVQCKOBM.js +3 -0
- package/dist/chunk-QVQCKOBM.js.map +1 -0
- package/dist/chunk-R63TTR35.cjs +200 -0
- package/dist/chunk-R63TTR35.cjs.map +1 -0
- package/dist/chunk-RA42NMWV.cjs +4 -0
- package/dist/chunk-RA42NMWV.cjs.map +1 -0
- package/dist/chunk-RAZN6C5R.cjs +12 -0
- package/dist/chunk-RAZN6C5R.cjs.map +1 -0
- package/dist/chunk-REUFPWM7.cjs +233 -0
- package/dist/chunk-REUFPWM7.cjs.map +1 -0
- package/dist/chunk-RHETJOUM.cjs +4 -0
- package/dist/chunk-RHETJOUM.cjs.map +1 -0
- package/dist/chunk-RJIJVVXS.js +3 -0
- package/dist/chunk-RJIJVVXS.js.map +1 -0
- package/dist/chunk-RKVRCNMB.js +3 -0
- package/dist/chunk-RKVRCNMB.js.map +1 -0
- package/dist/chunk-SBV5MWEL.cjs +53 -0
- package/dist/chunk-SBV5MWEL.cjs.map +1 -0
- package/dist/chunk-SFB4YLCS.js +121 -0
- package/dist/chunk-SFB4YLCS.js.map +1 -0
- package/dist/chunk-SLPD47SR.js +3 -0
- package/dist/chunk-SLPD47SR.js.map +1 -0
- package/dist/chunk-SS3B6PHT.cjs +35 -0
- package/dist/chunk-SS3B6PHT.cjs.map +1 -0
- package/dist/chunk-SUCHGNYT.js +3 -0
- package/dist/chunk-SUCHGNYT.js.map +1 -0
- package/dist/chunk-SYVNY3AH.cjs +44 -0
- package/dist/chunk-SYVNY3AH.cjs.map +1 -0
- package/dist/chunk-T3SYREY4.js +29 -0
- package/dist/chunk-T3SYREY4.js.map +1 -0
- package/dist/chunk-T7N7DFQJ.js +198 -0
- package/dist/chunk-T7N7DFQJ.js.map +1 -0
- package/dist/chunk-TRCENAIY.cjs +4 -0
- package/dist/chunk-TRCENAIY.cjs.map +1 -0
- package/dist/chunk-TVENC6PH.js +186 -0
- package/dist/chunk-TVENC6PH.js.map +1 -0
- package/dist/chunk-U4T3Z3K7.cjs +325 -0
- package/dist/chunk-U4T3Z3K7.cjs.map +1 -0
- package/dist/chunk-UI2NXUML.cjs +187 -0
- package/dist/chunk-UI2NXUML.cjs.map +1 -0
- package/dist/chunk-UIFFNTUX.js +3 -0
- package/dist/chunk-UIFFNTUX.js.map +1 -0
- package/dist/chunk-V4GPQ6Y2.js +3 -0
- package/dist/chunk-V4GPQ6Y2.js.map +1 -0
- package/dist/chunk-VGTRKXF2.js +93 -0
- package/dist/chunk-VGTRKXF2.js.map +1 -0
- package/dist/chunk-VGWOIWRQ.cjs +202 -0
- package/dist/chunk-VGWOIWRQ.cjs.map +1 -0
- package/dist/chunk-VLCNNA76.cjs +4 -0
- package/dist/chunk-VLCNNA76.cjs.map +1 -0
- package/dist/chunk-VPAUN75Q.js +3 -0
- package/dist/chunk-VPAUN75Q.js.map +1 -0
- package/dist/chunk-VT237QF2.js +3 -0
- package/dist/chunk-VT237QF2.js.map +1 -0
- package/dist/chunk-VV4TZG5S.js +321 -0
- package/dist/chunk-VV4TZG5S.js.map +1 -0
- package/dist/chunk-VYK6MBL4.cjs +4 -0
- package/dist/chunk-VYK6MBL4.cjs.map +1 -0
- package/dist/chunk-W33CKW6Q.cjs +4 -0
- package/dist/chunk-W33CKW6Q.cjs.map +1 -0
- package/dist/chunk-W5VHATSR.cjs +31 -0
- package/dist/chunk-W5VHATSR.cjs.map +1 -0
- package/dist/chunk-W7YI5UT3.js +3 -0
- package/dist/chunk-W7YI5UT3.js.map +1 -0
- package/dist/chunk-WEQWU2IC.js +34 -0
- package/dist/chunk-WEQWU2IC.js.map +1 -0
- package/dist/chunk-WK4VXPPZ.cjs +104 -0
- package/dist/chunk-WK4VXPPZ.cjs.map +1 -0
- package/dist/chunk-WSA4LMWR.cjs +96 -0
- package/dist/chunk-WSA4LMWR.cjs.map +1 -0
- package/dist/chunk-WUIEZ6Z4.cjs +360 -0
- package/dist/chunk-WUIEZ6Z4.cjs.map +1 -0
- package/dist/chunk-WUKIJJG2.cjs +45 -0
- package/dist/chunk-WUKIJJG2.cjs.map +1 -0
- package/dist/chunk-WVFAQBS7.js +29 -0
- package/dist/chunk-WVFAQBS7.js.map +1 -0
- package/dist/chunk-X7RDNMN7.js +3 -0
- package/dist/chunk-X7RDNMN7.js.map +1 -0
- package/dist/chunk-X7XP5WBP.cjs +4 -0
- package/dist/chunk-X7XP5WBP.cjs.map +1 -0
- package/dist/chunk-XQAIEPAZ.js +104 -0
- package/dist/chunk-XQAIEPAZ.js.map +1 -0
- package/dist/chunk-XWKNE6DH.cjs +4 -0
- package/dist/chunk-XWKNE6DH.cjs.map +1 -0
- package/dist/chunk-Y6V6CBY5.js +23 -0
- package/dist/chunk-Y6V6CBY5.js.map +1 -0
- package/dist/chunk-Y6VDCZPB.js +62 -0
- package/dist/chunk-Y6VDCZPB.js.map +1 -0
- package/dist/chunk-YDRXBRW2.cjs +184 -0
- package/dist/chunk-YDRXBRW2.cjs.map +1 -0
- package/dist/chunk-YFS2LMG4.cjs +124 -0
- package/dist/chunk-YFS2LMG4.cjs.map +1 -0
- package/dist/chunk-YN6CBIIB.js +63 -0
- package/dist/chunk-YN6CBIIB.js.map +1 -0
- package/dist/chunk-YOJ2XNQX.cjs +4 -0
- package/dist/chunk-YOJ2XNQX.cjs.map +1 -0
- package/dist/chunk-YOOZB4RL.js +3 -0
- package/dist/chunk-YOOZB4RL.js.map +1 -0
- package/dist/chunk-YVU2M7MI.js +34 -0
- package/dist/chunk-YVU2M7MI.js.map +1 -0
- package/dist/chunk-YXBZRB5H.cjs +4 -0
- package/dist/chunk-YXBZRB5H.cjs.map +1 -0
- package/dist/chunk-Z3ZKFI2M.js +43 -0
- package/dist/chunk-Z3ZKFI2M.js.map +1 -0
- package/dist/chunk-Z5GLY4R3.js +112 -0
- package/dist/chunk-Z5GLY4R3.js.map +1 -0
- package/dist/chunk-Z5OMWAQX.js +3 -0
- package/dist/chunk-Z5OMWAQX.js.map +1 -0
- package/dist/chunk-Z7LGWNI7.js +38 -0
- package/dist/chunk-Z7LGWNI7.js.map +1 -0
- package/dist/chunk-ZCWKX4V6.cjs +38 -0
- package/dist/chunk-ZCWKX4V6.cjs.map +1 -0
- package/dist/chunk-ZE5RISBZ.cjs +4 -0
- package/dist/chunk-ZE5RISBZ.cjs.map +1 -0
- package/dist/chunk-ZH4F2P2G.js +3 -0
- package/dist/chunk-ZH4F2P2G.js.map +1 -0
- package/dist/chunk-ZJGFLJ2Z.cjs +4 -0
- package/dist/chunk-ZJGFLJ2Z.cjs.map +1 -0
- package/dist/chunk-ZKBHD27K.cjs +4 -0
- package/dist/chunk-ZKBHD27K.cjs.map +1 -0
- package/dist/chunk-ZQPLRNKX.cjs +4 -0
- package/dist/chunk-ZQPLRNKX.cjs.map +1 -0
- package/dist/chunk-ZQQABQMH.cjs +31 -0
- package/dist/chunk-ZQQABQMH.cjs.map +1 -0
- package/dist/chunk-ZXJQSFIA.js +200 -0
- package/dist/chunk-ZXJQSFIA.js.map +1 -0
- package/dist/developer-apps-zSQXWmEG.d.cts +294 -0
- package/dist/developer-apps-zSQXWmEG.d.ts +294 -0
- package/dist/entries/apps.cjs +13 -0
- package/dist/entries/apps.cjs.map +1 -0
- package/dist/entries/apps.d.cts +300 -0
- package/dist/entries/apps.d.ts +300 -0
- package/dist/entries/apps.js +4 -0
- package/dist/entries/apps.js.map +1 -0
- package/dist/entries/audio.cjs +13 -0
- package/dist/entries/audio.cjs.map +1 -0
- package/dist/entries/audio.d.cts +200 -0
- package/dist/entries/audio.d.ts +200 -0
- package/dist/entries/audio.js +4 -0
- package/dist/entries/audio.js.map +1 -0
- package/dist/entries/billing.cjs +13 -0
- package/dist/entries/billing.cjs.map +1 -0
- package/dist/entries/billing.d.cts +208 -0
- package/dist/entries/billing.d.ts +208 -0
- package/dist/entries/billing.js +4 -0
- package/dist/entries/billing.js.map +1 -0
- package/dist/entries/catalogs.cjs +13 -0
- package/dist/entries/catalogs.cjs.map +1 -0
- package/dist/entries/catalogs.d.cts +82 -0
- package/dist/entries/catalogs.d.ts +82 -0
- package/dist/entries/catalogs.js +4 -0
- package/dist/entries/catalogs.js.map +1 -0
- package/dist/entries/characters.cjs +45 -0
- package/dist/entries/characters.cjs.map +1 -0
- package/dist/entries/characters.d.cts +741 -0
- package/dist/entries/characters.d.ts +741 -0
- package/dist/entries/characters.js +4 -0
- package/dist/entries/characters.js.map +1 -0
- package/dist/entries/client.cjs +78 -0
- package/dist/entries/client.cjs.map +1 -0
- package/dist/entries/client.d.cts +147 -0
- package/dist/entries/client.d.ts +147 -0
- package/dist/entries/client.js +53 -0
- package/dist/entries/client.js.map +1 -0
- package/dist/entries/collections.cjs +13 -0
- package/dist/entries/collections.cjs.map +1 -0
- package/dist/entries/collections.d.cts +77 -0
- package/dist/entries/collections.d.ts +77 -0
- package/dist/entries/collections.js +4 -0
- package/dist/entries/collections.js.map +1 -0
- package/dist/entries/community.cjs +13 -0
- package/dist/entries/community.cjs.map +1 -0
- package/dist/entries/community.d.cts +87 -0
- package/dist/entries/community.d.ts +87 -0
- package/dist/entries/community.js +4 -0
- package/dist/entries/community.js.map +1 -0
- package/dist/entries/competitors.cjs +13 -0
- package/dist/entries/competitors.cjs.map +1 -0
- package/dist/entries/competitors.d.cts +96 -0
- package/dist/entries/competitors.d.ts +96 -0
- package/dist/entries/competitors.js +4 -0
- package/dist/entries/competitors.js.map +1 -0
- package/dist/entries/copilot.cjs +15 -0
- package/dist/entries/copilot.cjs.map +1 -0
- package/dist/entries/copilot.d.cts +296 -0
- package/dist/entries/copilot.d.ts +296 -0
- package/dist/entries/copilot.js +6 -0
- package/dist/entries/copilot.js.map +1 -0
- package/dist/entries/core.cjs +26 -0
- package/dist/entries/core.cjs.map +1 -0
- package/dist/entries/core.d.cts +3 -0
- package/dist/entries/core.d.ts +3 -0
- package/dist/entries/core.js +5 -0
- package/dist/entries/core.js.map +1 -0
- package/dist/entries/creatures.cjs +29 -0
- package/dist/entries/creatures.cjs.map +1 -0
- package/dist/entries/creatures.d.cts +594 -0
- package/dist/entries/creatures.d.ts +594 -0
- package/dist/entries/creatures.js +4 -0
- package/dist/entries/creatures.js.map +1 -0
- package/dist/entries/credits.cjs +13 -0
- package/dist/entries/credits.cjs.map +1 -0
- package/dist/entries/credits.d.cts +229 -0
- package/dist/entries/credits.d.ts +229 -0
- package/dist/entries/credits.js +4 -0
- package/dist/entries/credits.js.map +1 -0
- package/dist/entries/developer-apps.cjs +13 -0
- package/dist/entries/developer-apps.cjs.map +1 -0
- package/dist/entries/developer-apps.d.cts +3 -0
- package/dist/entries/developer-apps.d.ts +3 -0
- package/dist/entries/developer-apps.js +4 -0
- package/dist/entries/developer-apps.js.map +1 -0
- package/dist/entries/edit.cjs +34 -0
- package/dist/entries/edit.cjs.map +1 -0
- package/dist/entries/edit.d.cts +705 -0
- package/dist/entries/edit.d.ts +705 -0
- package/dist/entries/edit.js +5 -0
- package/dist/entries/edit.js.map +1 -0
- package/dist/entries/errors.cjs +93 -0
- package/dist/entries/errors.cjs.map +1 -0
- package/dist/entries/errors.d.cts +338 -0
- package/dist/entries/errors.d.ts +338 -0
- package/dist/entries/errors.js +4 -0
- package/dist/entries/errors.js.map +1 -0
- package/dist/entries/executions.cjs +21 -0
- package/dist/entries/executions.cjs.map +1 -0
- package/dist/entries/executions.d.cts +120 -0
- package/dist/entries/executions.d.ts +120 -0
- package/dist/entries/executions.js +4 -0
- package/dist/entries/executions.js.map +1 -0
- package/dist/entries/gallery.cjs +13 -0
- package/dist/entries/gallery.cjs.map +1 -0
- package/dist/entries/gallery.d.cts +85 -0
- package/dist/entries/gallery.d.ts +85 -0
- package/dist/entries/gallery.js +4 -0
- package/dist/entries/gallery.js.map +1 -0
- package/dist/entries/jobs.cjs +13 -0
- package/dist/entries/jobs.cjs.map +1 -0
- package/dist/entries/jobs.d.cts +252 -0
- package/dist/entries/jobs.d.ts +252 -0
- package/dist/entries/jobs.js +4 -0
- package/dist/entries/jobs.js.map +1 -0
- package/dist/entries/library.cjs +13 -0
- package/dist/entries/library.cjs.map +1 -0
- package/dist/entries/library.d.cts +109 -0
- package/dist/entries/library.d.ts +109 -0
- package/dist/entries/library.js +4 -0
- package/dist/entries/library.js.map +1 -0
- package/dist/entries/llm.cjs +13 -0
- package/dist/entries/llm.cjs.map +1 -0
- package/dist/entries/llm.d.cts +98 -0
- package/dist/entries/llm.d.ts +98 -0
- package/dist/entries/llm.js +4 -0
- package/dist/entries/llm.js.map +1 -0
- package/dist/entries/locations.cjs +25 -0
- package/dist/entries/locations.cjs.map +1 -0
- package/dist/entries/locations.d.cts +573 -0
- package/dist/entries/locations.d.ts +573 -0
- package/dist/entries/locations.js +4 -0
- package/dist/entries/locations.js.map +1 -0
- package/dist/entries/media.cjs +15 -0
- package/dist/entries/media.cjs.map +1 -0
- package/dist/entries/media.d.cts +548 -0
- package/dist/entries/media.d.ts +548 -0
- package/dist/entries/media.js +6 -0
- package/dist/entries/media.js.map +1 -0
- package/dist/entries/models.cjs +13 -0
- package/dist/entries/models.cjs.map +1 -0
- package/dist/entries/models.d.cts +92 -0
- package/dist/entries/models.d.ts +92 -0
- package/dist/entries/models.js +4 -0
- package/dist/entries/models.js.map +1 -0
- package/dist/entries/moodboards.cjs +21 -0
- package/dist/entries/moodboards.cjs.map +1 -0
- package/dist/entries/moodboards.d.cts +77 -0
- package/dist/entries/moodboards.d.ts +77 -0
- package/dist/entries/moodboards.js +4 -0
- package/dist/entries/moodboards.js.map +1 -0
- package/dist/entries/node-presets.cjs +13 -0
- package/dist/entries/node-presets.cjs.map +1 -0
- package/dist/entries/node-presets.d.cts +217 -0
- package/dist/entries/node-presets.d.ts +217 -0
- package/dist/entries/node-presets.js +4 -0
- package/dist/entries/node-presets.js.map +1 -0
- package/dist/entries/nodes.cjs +22 -0
- package/dist/entries/nodes.cjs.map +1 -0
- package/dist/entries/nodes.d.cts +18 -0
- package/dist/entries/nodes.d.ts +18 -0
- package/dist/entries/nodes.js +5 -0
- package/dist/entries/nodes.js.map +1 -0
- package/dist/entries/oauth.cjs +13 -0
- package/dist/entries/oauth.cjs.map +1 -0
- package/dist/entries/oauth.d.cts +69 -0
- package/dist/entries/oauth.d.ts +69 -0
- package/dist/entries/oauth.js +4 -0
- package/dist/entries/oauth.js.map +1 -0
- package/dist/entries/objects.cjs +29 -0
- package/dist/entries/objects.cjs.map +1 -0
- package/dist/entries/objects.d.cts +544 -0
- package/dist/entries/objects.d.ts +544 -0
- package/dist/entries/objects.js +4 -0
- package/dist/entries/objects.js.map +1 -0
- package/dist/entries/organizations.cjs +21 -0
- package/dist/entries/organizations.cjs.map +1 -0
- package/dist/entries/organizations.d.cts +164 -0
- package/dist/entries/organizations.d.ts +164 -0
- package/dist/entries/organizations.js +4 -0
- package/dist/entries/organizations.js.map +1 -0
- package/dist/entries/palettes.cjs +21 -0
- package/dist/entries/palettes.cjs.map +1 -0
- package/dist/entries/palettes.d.cts +69 -0
- package/dist/entries/palettes.d.ts +69 -0
- package/dist/entries/palettes.js +4 -0
- package/dist/entries/palettes.js.map +1 -0
- package/dist/entries/picker-catalogs.cjs +13 -0
- package/dist/entries/picker-catalogs.cjs.map +1 -0
- package/dist/entries/picker-catalogs.d.cts +148 -0
- package/dist/entries/picker-catalogs.d.ts +148 -0
- package/dist/entries/picker-catalogs.js +4 -0
- package/dist/entries/picker-catalogs.js.map +1 -0
- package/dist/entries/pipelines.cjs +13 -0
- package/dist/entries/pipelines.cjs.map +1 -0
- package/dist/entries/pipelines.d.cts +255 -0
- package/dist/entries/pipelines.d.ts +255 -0
- package/dist/entries/pipelines.js +4 -0
- package/dist/entries/pipelines.js.map +1 -0
- package/dist/entries/projects.cjs +13 -0
- package/dist/entries/projects.cjs.map +1 -0
- package/dist/entries/projects.d.cts +49 -0
- package/dist/entries/projects.d.ts +49 -0
- package/dist/entries/projects.js +4 -0
- package/dist/entries/projects.js.map +1 -0
- package/dist/entries/prompt-helper.cjs +13 -0
- package/dist/entries/prompt-helper.cjs.map +1 -0
- package/dist/entries/prompt-helper.d.cts +73 -0
- package/dist/entries/prompt-helper.d.ts +73 -0
- package/dist/entries/prompt-helper.js +4 -0
- package/dist/entries/prompt-helper.js.map +1 -0
- package/dist/entries/recast.cjs +17 -0
- package/dist/entries/recast.cjs.map +1 -0
- package/dist/entries/recast.d.cts +229 -0
- package/dist/entries/recast.d.ts +229 -0
- package/dist/entries/recast.js +4 -0
- package/dist/entries/recast.js.map +1 -0
- package/dist/entries/reduce.cjs +13 -0
- package/dist/entries/reduce.cjs.map +1 -0
- package/dist/entries/reduce.d.cts +56 -0
- package/dist/entries/reduce.d.ts +56 -0
- package/dist/entries/reduce.js +4 -0
- package/dist/entries/reduce.js.map +1 -0
- package/dist/entries/saved-posts.cjs +13 -0
- package/dist/entries/saved-posts.cjs.map +1 -0
- package/dist/entries/saved-posts.d.cts +33 -0
- package/dist/entries/saved-posts.d.ts +33 -0
- package/dist/entries/saved-posts.js +4 -0
- package/dist/entries/saved-posts.js.map +1 -0
- package/dist/entries/scene3d.cjs +17 -0
- package/dist/entries/scene3d.cjs.map +1 -0
- package/dist/entries/scene3d.d.cts +131 -0
- package/dist/entries/scene3d.d.ts +131 -0
- package/dist/entries/scene3d.js +4 -0
- package/dist/entries/scene3d.js.map +1 -0
- package/dist/entries/sessions.cjs +13 -0
- package/dist/entries/sessions.cjs.map +1 -0
- package/dist/entries/sessions.d.cts +122 -0
- package/dist/entries/sessions.d.ts +122 -0
- package/dist/entries/sessions.js +4 -0
- package/dist/entries/sessions.js.map +1 -0
- package/dist/entries/shots.cjs +13 -0
- package/dist/entries/shots.cjs.map +1 -0
- package/dist/entries/shots.d.cts +78 -0
- package/dist/entries/shots.d.ts +78 -0
- package/dist/entries/shots.js +4 -0
- package/dist/entries/shots.js.map +1 -0
- package/dist/entries/studio.cjs +22 -0
- package/dist/entries/studio.cjs.map +1 -0
- package/dist/entries/studio.d.cts +281 -0
- package/dist/entries/studio.d.ts +281 -0
- package/dist/entries/studio.js +5 -0
- package/dist/entries/studio.js.map +1 -0
- package/dist/entries/templates.cjs +13 -0
- package/dist/entries/templates.cjs.map +1 -0
- package/dist/entries/templates.d.cts +110 -0
- package/dist/entries/templates.d.ts +110 -0
- package/dist/entries/templates.js +4 -0
- package/dist/entries/templates.js.map +1 -0
- package/dist/entries/tutorials.cjs +13 -0
- package/dist/entries/tutorials.cjs.map +1 -0
- package/dist/entries/tutorials.d.cts +63 -0
- package/dist/entries/tutorials.d.ts +63 -0
- package/dist/entries/tutorials.js +4 -0
- package/dist/entries/tutorials.js.map +1 -0
- package/dist/entries/uploads.cjs +13 -0
- package/dist/entries/uploads.cjs.map +1 -0
- package/dist/entries/uploads.d.cts +44 -0
- package/dist/entries/uploads.d.ts +44 -0
- package/dist/entries/uploads.js +4 -0
- package/dist/entries/uploads.js.map +1 -0
- package/dist/entries/video-pro.cjs +13 -0
- package/dist/entries/video-pro.cjs.map +1 -0
- package/dist/entries/video-pro.d.cts +60 -0
- package/dist/entries/video-pro.d.ts +60 -0
- package/dist/entries/video-pro.js +4 -0
- package/dist/entries/video-pro.js.map +1 -0
- package/dist/entries/voices.cjs +13 -0
- package/dist/entries/voices.cjs.map +1 -0
- package/dist/entries/voices.d.cts +498 -0
- package/dist/entries/voices.d.ts +498 -0
- package/dist/entries/voices.js +4 -0
- package/dist/entries/voices.js.map +1 -0
- package/dist/entries/webhooks.cjs +21 -0
- package/dist/entries/webhooks.cjs.map +1 -0
- package/dist/entries/webhooks.d.cts +64 -0
- package/dist/entries/webhooks.d.ts +64 -0
- package/dist/entries/webhooks.js +4 -0
- package/dist/entries/webhooks.js.map +1 -0
- package/dist/entries/workflows.cjs +13 -0
- package/dist/entries/workflows.cjs.map +1 -0
- package/dist/entries/workflows.d.cts +393 -0
- package/dist/entries/workflows.d.ts +393 -0
- package/dist/entries/workflows.js +4 -0
- package/dist/entries/workflows.js.map +1 -0
- package/dist/entries/workspaces.cjs +13 -0
- package/dist/entries/workspaces.cjs.map +1 -0
- package/dist/entries/workspaces.d.cts +124 -0
- package/dist/entries/workspaces.d.ts +124 -0
- package/dist/entries/workspaces.js +4 -0
- package/dist/entries/workspaces.js.map +1 -0
- package/dist/index.cjs +501 -5192
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +66 -10894
- package/dist/index.d.ts +66 -10894
- package/dist/index.js +100 -5074
- package/dist/index.js.map +1 -1
- package/dist/nodes-BPvrAoUs.d.cts +1264 -0
- package/dist/nodes-C2zu3uqn.d.ts +1264 -0
- package/dist/studio-productions-DUHvdSvk.d.cts +572 -0
- package/dist/studio-productions-vbCNSbtf.d.ts +572 -0
- package/dist/webhooks-BJawEIz8.d.ts +198 -0
- package/dist/webhooks-Dn_DtNTD.d.cts +198 -0
- package/package.json +253 -3
|
@@ -0,0 +1,741 @@
|
|
|
1
|
+
import { PersonValue } from '@nodaro/prompts/person';
|
|
2
|
+
export { PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PersonValue, buildPersonHints } from '@nodaro/prompts/person';
|
|
3
|
+
import { EntityStyle, CharacterAspectRatio, CharacterAttachColumn } from '@nodaro/shared/entities';
|
|
4
|
+
export { CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_STYLES, CharacterAspectRatio, EntityStyle } from '@nodaro/shared/entities';
|
|
5
|
+
import { TtsProvider } from '@nodaro/shared/models';
|
|
6
|
+
import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.js';
|
|
7
|
+
import { l as GenerationSessionParams } from '../nodes-C2zu3uqn.js';
|
|
8
|
+
import '@nodaro/shared/apps';
|
|
9
|
+
import '@nodaro/shared/organizations';
|
|
10
|
+
import '@nodaro/shared/types';
|
|
11
|
+
import '@nodaro/shared/video';
|
|
12
|
+
import '@nodaro/shared/nodes';
|
|
13
|
+
import '@nodaro/shared/social';
|
|
14
|
+
import '@nodaro/shared/media';
|
|
15
|
+
import '@nodaro/shared/scene3d';
|
|
16
|
+
import '@nodaro/shared/credits';
|
|
17
|
+
import './jobs.js';
|
|
18
|
+
import './errors.js';
|
|
19
|
+
import '../studio-productions-vbCNSbtf.js';
|
|
20
|
+
import '@nodaro/shared/model-catalog';
|
|
21
|
+
import '@nodaro/prompts/prompt-builder';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Re-export the shared `EntityStyle` union (realistic | anime | 3d-pixar |
|
|
25
|
+
* illustration) and `CHARACTER_STYLES` runtime tuple so SDK consumers don't
|
|
26
|
+
* have to add `@nodaro/shared` as a second dependency just to typecheck the
|
|
27
|
+
* `style` field. Single source of truth lives in `@nodaro/shared/entity-prompts`.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Re-export the 4-value aspect-ratio union accepted by the generate-character*
|
|
31
|
+
* routes. Single source of truth lives in `@nodaro/shared`. See
|
|
32
|
+
* `CHARACTER_ASPECT_DEFAULTS` for the per-asset-type defaults.
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* Structured Person composer, re-exported from `@nodaro/shared` so SDK
|
|
36
|
+
* consumers can build a detailed person description — Identity, Body, and the
|
|
37
|
+
* Face facial-geometry layer (cheekbones, canthal tilt, eyelid type, lip
|
|
38
|
+
* fullness/shape, nose tip, etc.) — and feed it as `seedPrompt` / `description`
|
|
39
|
+
* to `generate()` / `upsert()` without adding `@nodaro/shared` as a second dep.
|
|
40
|
+
*
|
|
41
|
+
* `buildPersonSeedPrompt` collapses a `PersonValue` into the same comma-joined
|
|
42
|
+
* fragment the editor's Person picker produces (e.g. "almond-shaped eyes,
|
|
43
|
+
* sharply sculpted high cheekbones, full plump lips"). Returns "" when empty.
|
|
44
|
+
*/
|
|
45
|
+
/**
|
|
46
|
+
* A character record returned by Nodaro's REST API. Mirrors the camelCase
|
|
47
|
+
* shape produced by `backend/src/routes/characters.ts::toCamel()`.
|
|
48
|
+
*
|
|
49
|
+
* `expressions`, `poses`, `motions`, `angles`, `bodyAngles`,
|
|
50
|
+
* `lightingVariations` are independent buckets keyed by a human-readable
|
|
51
|
+
* variant name (e.g. `"smile"`, `"standing"`, `"3/4 left"`). Each entry's
|
|
52
|
+
* `url` points at an R2-hosted asset.
|
|
53
|
+
*
|
|
54
|
+
* Identity-foundation fields:
|
|
55
|
+
* - `referencePhotos` — caller-supplied real-life refs (max one per
|
|
56
|
+
* non-`other` kind; cap 20 total). Drive the i2v / i2i path when a
|
|
57
|
+
* provider supports multi-image conditioning.
|
|
58
|
+
* - `realLifeRefsByVariant` — per-variant reference URLs (cap 20 keys,
|
|
59
|
+
* 5 URLs per key). Keys are lowercased+trimmed.
|
|
60
|
+
* - `referenceVideosByVariant` — per-label user-uploaded reference VIDEO
|
|
61
|
+
* URLs (cap 20 keys, 5 URLs per key, lowercased+trimmed keys). Mirrors
|
|
62
|
+
* `realLifeRefsByVariant` for video clips (e.g. emotion takes). Read the
|
|
63
|
+
* chosen URLs off the row to drive generate-video's `referenceVideoUrls`.
|
|
64
|
+
* - `seedPrompt` — short prompt fragment that scaffolds portrait gen.
|
|
65
|
+
* - `canonicalDescription` — ~80–120-word LLM-authored visual caption,
|
|
66
|
+
* populated by `approvePortrait()` / `recaption()`.
|
|
67
|
+
*/
|
|
68
|
+
interface Character {
|
|
69
|
+
id: string;
|
|
70
|
+
userId: string;
|
|
71
|
+
/** Canvas node linkage. `null` only on legacy clone rows that predate the
|
|
72
|
+
* clone-side node_id fix (new clones mint one; creates always had one). */
|
|
73
|
+
nodeId: string | null;
|
|
74
|
+
projectId: string | null;
|
|
75
|
+
name: string;
|
|
76
|
+
description: string | null;
|
|
77
|
+
gender: string | null;
|
|
78
|
+
style: string | null;
|
|
79
|
+
baseOutfit: string | null;
|
|
80
|
+
sourceImageUrl: string | null;
|
|
81
|
+
/** MODEL_CATALOG image-model id the main image was generated with (or `null`).
|
|
82
|
+
* Set on create (the provider you generated with) + editable via `upsert`. */
|
|
83
|
+
imageProvider: string | null;
|
|
84
|
+
expressions: Array<{
|
|
85
|
+
name: string;
|
|
86
|
+
url: string;
|
|
87
|
+
}> | null;
|
|
88
|
+
poses: Array<{
|
|
89
|
+
name: string;
|
|
90
|
+
url: string;
|
|
91
|
+
}> | null;
|
|
92
|
+
lightingVariations: Array<{
|
|
93
|
+
name: string;
|
|
94
|
+
url: string;
|
|
95
|
+
}> | null;
|
|
96
|
+
angles: Array<{
|
|
97
|
+
name: string;
|
|
98
|
+
url: string;
|
|
99
|
+
}> | null;
|
|
100
|
+
bodyAngles: Array<{
|
|
101
|
+
name: string;
|
|
102
|
+
url: string;
|
|
103
|
+
}> | null;
|
|
104
|
+
motions: Array<{
|
|
105
|
+
name: string;
|
|
106
|
+
url: string;
|
|
107
|
+
}> | null;
|
|
108
|
+
/** Named Character Boards — dense reference sheets, one per persona/look
|
|
109
|
+
* (the `generate-image/character-board` factory preset rendered from the
|
|
110
|
+
* character's images). A first-class bucket: community publish snapshots it
|
|
111
|
+
* and clone hands the consumer their own copy to extend. Defaults to `[]`.
|
|
112
|
+
* `type` marks an image-collage `"identity"` sheet vs a plain `"looks"`
|
|
113
|
+
* board; `sourceImages` are the R2 URLs it was collaged from. Both optional
|
|
114
|
+
* + backward-compatible (legacy boards have neither). */
|
|
115
|
+
boards?: Array<{
|
|
116
|
+
name: string;
|
|
117
|
+
url: string;
|
|
118
|
+
type?: "looks" | "identity";
|
|
119
|
+
sourceImages?: string[];
|
|
120
|
+
}> | null;
|
|
121
|
+
/** Per-label user-uploaded reference VIDEO URLs (R2), keyed by a
|
|
122
|
+
* caller-owned label (lowercased+trimmed server-side). Mirrors
|
|
123
|
+
* `realLifeRefsByVariant` for video clips; read the chosen URLs off the row
|
|
124
|
+
* to feed generate-video's `referenceVideoUrls`. Defaults to `{}`. */
|
|
125
|
+
referenceVideosByVariant?: Record<string, string[]> | null;
|
|
126
|
+
/** The user's chosen DEFAULT asset take per variant (Studio version history).
|
|
127
|
+
* OPAQUE map: key `"<bucket>:<variant>"` (e.g. `"bodyAngles:front"`,
|
|
128
|
+
* `"expressions:smile"`) → the chosen asset URL (one already present in that
|
|
129
|
+
* bucket). Stored verbatim — keys are NOT normalized; soft-capped server-side
|
|
130
|
+
* at 200 keys / 2048-char values (overflow dropped silently). Defaults to `{}`. */
|
|
131
|
+
selectedAssetByVariant?: Record<string, string> | null;
|
|
132
|
+
/** `voiceType` records the selected voice's KIND (premade voices are
|
|
133
|
+
* addressed by name; library/custom voices by id at text-to-speech time).
|
|
134
|
+
* `previewUrl` is a playable audio sample (the voice's `preview_url` / clone
|
|
135
|
+
* sample) the studio plays in an `<audio>` element — persisted so Voice Library
|
|
136
|
+
* voices (which have no by-id lookup) stay previewable after reload. Client-
|
|
137
|
+
* played only; the server never fetches it. `ttsProvider` is the library
|
|
138
|
+
* voice's verified TTS provider (see `SharedVoice.recommendedProvider`) —
|
|
139
|
+
* send it as the text-to-speech `provider` so the voice renders on a model
|
|
140
|
+
* it's verified for. All optional — a character may have no voice, or a
|
|
141
|
+
* legacy voice predating these fields. */
|
|
142
|
+
voice: {
|
|
143
|
+
voiceId: string;
|
|
144
|
+
voiceName: string;
|
|
145
|
+
traits: string;
|
|
146
|
+
voiceType?: "premade" | "library" | "custom";
|
|
147
|
+
previewUrl?: string;
|
|
148
|
+
ttsProvider?: TtsProvider;
|
|
149
|
+
} | null;
|
|
150
|
+
personality: {
|
|
151
|
+
mood: string;
|
|
152
|
+
speechStyle: string;
|
|
153
|
+
movementStyle: string;
|
|
154
|
+
behavioralNotes: string;
|
|
155
|
+
} | null;
|
|
156
|
+
/** ~80–120-word LLM-authored visual caption (approve-portrait / recaption).
|
|
157
|
+
* Optional on the read surface so existing literal consumers don't break;
|
|
158
|
+
* the route always returns it (string | null). */
|
|
159
|
+
canonicalDescription?: string | null;
|
|
160
|
+
/** Identity-lock strength for Character Studio asset generation. */
|
|
161
|
+
identityLock?: "off" | "soft" | "strict";
|
|
162
|
+
deletedAt: string | null;
|
|
163
|
+
createdAt: string;
|
|
164
|
+
updatedAt: string;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* GET /v1/characters/:id appends three live-progress buckets the studio uses
|
|
168
|
+
* to rehydrate spinners after a reload. Optional in the SDK surface — they
|
|
169
|
+
* don't appear on `list()` rows.
|
|
170
|
+
*/
|
|
171
|
+
interface CharacterDetail extends Character {
|
|
172
|
+
pendingJobs?: Array<{
|
|
173
|
+
jobId: string;
|
|
174
|
+
assetType: "expressions" | "poses" | "angles" | "bodyAngles" | "lighting" | "motions";
|
|
175
|
+
name: string;
|
|
176
|
+
}>;
|
|
177
|
+
portraitCandidates?: Array<{
|
|
178
|
+
jobId: string;
|
|
179
|
+
url: string | undefined;
|
|
180
|
+
progress: number;
|
|
181
|
+
status: string;
|
|
182
|
+
}>;
|
|
183
|
+
/** Recently completed portrait takes (7 days, newest first): at most 5
|
|
184
|
+
* alternates, never the current portrait — plus, with
|
|
185
|
+
* `get(id, { candidates: "all" })`, the current portrait's own take. */
|
|
186
|
+
previousCandidates?: Array<{
|
|
187
|
+
jobId: string;
|
|
188
|
+
url: string;
|
|
189
|
+
createdAt: string;
|
|
190
|
+
/** The image model the take was requested with. */
|
|
191
|
+
provider?: string;
|
|
192
|
+
/** The aspect ratio the request sent explicitly; absent when the take
|
|
193
|
+
* used the default ratio. */
|
|
194
|
+
aspectRatio?: string;
|
|
195
|
+
/** `true` only on the current portrait's own take (returned with
|
|
196
|
+
* `candidates: "all"`); `false` on the alternates. */
|
|
197
|
+
isPortrait?: boolean;
|
|
198
|
+
}>;
|
|
199
|
+
}
|
|
200
|
+
/** Options for `client.characters.get()`. */
|
|
201
|
+
interface GetCharacterOptions {
|
|
202
|
+
/**
|
|
203
|
+
* `"all"`: `previousCandidates` also carries the current portrait's own
|
|
204
|
+
* take, flagged `isPortrait: true`, when its job is within the 7-day window
|
|
205
|
+
* (the alternates stay at most 5). Default `"alternates"`: the current
|
|
206
|
+
* portrait is left out.
|
|
207
|
+
*/
|
|
208
|
+
candidates?: "alternates" | "all";
|
|
209
|
+
}
|
|
210
|
+
type ReferencePhotoKind = "frontFace" | "sideLeft" | "sideRight" | "threeQuarterLeft" | "threeQuarterRight" | "frontBody" | "other";
|
|
211
|
+
interface ReferencePhoto {
|
|
212
|
+
url: string;
|
|
213
|
+
kind: ReferencePhotoKind;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Body for `client.characters.upsert()`. Mirrors `upsertCharacterBody` in
|
|
217
|
+
* `backend/src/routes/characters.ts`. Omitting `id` triggers an INSERT;
|
|
218
|
+
* supplying it triggers an UPDATE that only writes the fields you pass —
|
|
219
|
+
* undefined keys are NOT touched on the row.
|
|
220
|
+
*
|
|
221
|
+
* `name` is optional at the type level. The route requires `name` on INSERT
|
|
222
|
+
* (id absent) and rejects with `validation_error` otherwise; on UPDATE the
|
|
223
|
+
* route just ignores `name` when omitted, which lets partial updates like
|
|
224
|
+
* `update(id, { gender: "female" })` succeed without re-sending the same
|
|
225
|
+
* name the caller already has.
|
|
226
|
+
*/
|
|
227
|
+
interface UpsertCharacterInput {
|
|
228
|
+
/** UUID of the character row; omit to create. */
|
|
229
|
+
id?: string;
|
|
230
|
+
/** Canvas node id the character belongs to. REQUIRED on create (the route
|
|
231
|
+
* 400s without it, like `name`); optional on update — the update branch
|
|
232
|
+
* never touches node_id, so partial updates needn't round-trip it. */
|
|
233
|
+
nodeId?: string;
|
|
234
|
+
workflowId?: string;
|
|
235
|
+
projectId?: string;
|
|
236
|
+
name?: string;
|
|
237
|
+
description?: string;
|
|
238
|
+
gender?: string;
|
|
239
|
+
style?: string;
|
|
240
|
+
baseOutfit?: string;
|
|
241
|
+
sourceImageUrl?: string;
|
|
242
|
+
/** Persistent image-model id (a MODEL_CATALOG image model). Validated
|
|
243
|
+
* server-side — unknown / non-image / "" is stored as `null`. */
|
|
244
|
+
imageProvider?: string | null;
|
|
245
|
+
expressions?: Array<{
|
|
246
|
+
name: string;
|
|
247
|
+
url: string;
|
|
248
|
+
}>;
|
|
249
|
+
poses?: Array<{
|
|
250
|
+
name: string;
|
|
251
|
+
url: string;
|
|
252
|
+
}>;
|
|
253
|
+
lightingVariations?: Array<{
|
|
254
|
+
name: string;
|
|
255
|
+
url: string;
|
|
256
|
+
}>;
|
|
257
|
+
angles?: Array<{
|
|
258
|
+
name: string;
|
|
259
|
+
url: string;
|
|
260
|
+
}>;
|
|
261
|
+
bodyAngles?: Array<{
|
|
262
|
+
name: string;
|
|
263
|
+
url: string;
|
|
264
|
+
}>;
|
|
265
|
+
motions?: Array<{
|
|
266
|
+
name: string;
|
|
267
|
+
url: string;
|
|
268
|
+
}>;
|
|
269
|
+
/** Named Character Boards (see `Character.boards`) — whole-array replace,
|
|
270
|
+
* like the asset buckets. Server caps: 24 boards, 200-char names, 30
|
|
271
|
+
* sourceImages per board. */
|
|
272
|
+
boards?: Array<{
|
|
273
|
+
name: string;
|
|
274
|
+
url: string;
|
|
275
|
+
type?: "looks" | "identity";
|
|
276
|
+
sourceImages?: string[];
|
|
277
|
+
}>;
|
|
278
|
+
/** See `Character.voice` — persisted alongside the voice so TTS can resolve a
|
|
279
|
+
* library/custom voice by id, `previewUrl` keeps the sample playable after
|
|
280
|
+
* reload, and `ttsProvider` keeps generation on a model the voice is
|
|
281
|
+
* verified for. All optional. */
|
|
282
|
+
voice?: {
|
|
283
|
+
voiceId: string;
|
|
284
|
+
voiceName: string;
|
|
285
|
+
traits: string;
|
|
286
|
+
voiceType?: "premade" | "library" | "custom";
|
|
287
|
+
previewUrl?: string;
|
|
288
|
+
ttsProvider?: TtsProvider;
|
|
289
|
+
} | null;
|
|
290
|
+
personality?: {
|
|
291
|
+
mood: string;
|
|
292
|
+
speechStyle: string;
|
|
293
|
+
movementStyle: string;
|
|
294
|
+
behavioralNotes: string;
|
|
295
|
+
} | null;
|
|
296
|
+
seedPrompt?: string;
|
|
297
|
+
canonicalDescription?: string;
|
|
298
|
+
/** Identity-lock strength for Character Studio asset generation (off/soft/strict). */
|
|
299
|
+
identityLock?: "off" | "soft" | "strict";
|
|
300
|
+
referencePhotos?: ReferencePhoto[];
|
|
301
|
+
/** Per-variant real-life reference URLs. Keys are lowercased+trimmed server-side. */
|
|
302
|
+
realLifeRefsByVariant?: Record<string, string[]>;
|
|
303
|
+
/** Per-label user-uploaded reference VIDEO URLs (e.g. emotion takes). Keys
|
|
304
|
+
* are lowercased+trimmed server-side; max 20 keys, 5 URLs each. Stored R2
|
|
305
|
+
* URLs are read back off the row to drive generate-video's
|
|
306
|
+
* `referenceVideoUrls`. */
|
|
307
|
+
referenceVideosByVariant?: Record<string, string[]>;
|
|
308
|
+
/** The user's chosen DEFAULT asset take per variant. OPAQUE
|
|
309
|
+
* `"<bucket>:<variant>"` → chosen-URL map; a write REPLACES the whole map
|
|
310
|
+
* (the studio sends the full map each save). Omit to leave the row untouched.
|
|
311
|
+
* Keys stored verbatim; soft-capped server-side at 200 keys / 2048-char values. */
|
|
312
|
+
selectedAssetByVariant?: Record<string, string>;
|
|
313
|
+
}
|
|
314
|
+
interface UpsertCharacterResult {
|
|
315
|
+
id: string;
|
|
316
|
+
name?: string;
|
|
317
|
+
}
|
|
318
|
+
interface ListCharactersParams {
|
|
319
|
+
/** Restrict to a single project. */
|
|
320
|
+
projectId?: string;
|
|
321
|
+
/** When true, return archived characters instead of active ones. */
|
|
322
|
+
archived?: boolean;
|
|
323
|
+
/**
|
|
324
|
+
* Search words: only the characters whose name or description contains
|
|
325
|
+
* every word (split on spaces, the first 5), in any order, ignoring case —
|
|
326
|
+
* `"red car"` finds "Car, red". Each word is matched as written (`%`, `_`
|
|
327
|
+
* and `*` are not wildcards; punctuation is kept); blank means no search; up
|
|
328
|
+
* to 200 characters. Combines with the other filters and with `cursor`
|
|
329
|
+
* paging.
|
|
330
|
+
*/
|
|
331
|
+
q?: string;
|
|
332
|
+
/**
|
|
333
|
+
* Max rows to return. Server defaults to 100, caps at 500. Omit to take the
|
|
334
|
+
* server default — passing it just narrows further.
|
|
335
|
+
*/
|
|
336
|
+
limit?: number;
|
|
337
|
+
/** Opaque cursor from a prior page's `nextCursor` (fetches the next page). */
|
|
338
|
+
cursor?: string;
|
|
339
|
+
}
|
|
340
|
+
interface ListCharactersResult {
|
|
341
|
+
characters: Character[];
|
|
342
|
+
/** Pass back as `cursor` for the next page; `null` when there are no more. */
|
|
343
|
+
nextCursor: string | null;
|
|
344
|
+
}
|
|
345
|
+
interface DuplicateCharacterInput {
|
|
346
|
+
/** Optional canvas node id to bind the new row to. */
|
|
347
|
+
nodeId?: string;
|
|
348
|
+
/** Optional project to drop the new row into. */
|
|
349
|
+
projectId?: string;
|
|
350
|
+
}
|
|
351
|
+
interface CharacterUsage {
|
|
352
|
+
workflowCount: number;
|
|
353
|
+
workflows: Array<{
|
|
354
|
+
id: string;
|
|
355
|
+
name: string;
|
|
356
|
+
}>;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Input for `client.characters.generate()` — fires the
|
|
360
|
+
* `POST /v1/generate-character` route. Produces 1–10 portrait candidates;
|
|
361
|
+
* each lands as one `jobs` row in `pending` state and is then enqueued for
|
|
362
|
+
* the worker.
|
|
363
|
+
*
|
|
364
|
+
* Provide at least one of `seedPrompt`, `referencePhotos`, or `description`
|
|
365
|
+
* (the backend's refinement rejects empty input with `validation_error`).
|
|
366
|
+
*
|
|
367
|
+
* When `attachToCharacterId` is set, the worker writes the resulting URL
|
|
368
|
+
* directly to `characters.source_image_url` on completion — caller doesn't
|
|
369
|
+
* need a separate `approvePortrait` call for single-candidate runs. Pass
|
|
370
|
+
* `attachPortrait: false` to keep every take a candidate instead.
|
|
371
|
+
*/
|
|
372
|
+
interface GenerateCharacterInput extends GenerationSessionParams {
|
|
373
|
+
name: string;
|
|
374
|
+
description?: string;
|
|
375
|
+
userPrompt?: string;
|
|
376
|
+
gender?: string;
|
|
377
|
+
style?: EntityStyle;
|
|
378
|
+
baseOutfit?: string;
|
|
379
|
+
sourceImageUrl?: string;
|
|
380
|
+
provider?: string;
|
|
381
|
+
/** Auto-attach the result to this character row. */
|
|
382
|
+
attachToCharacterId?: string;
|
|
383
|
+
/** `false`: the take stays a candidate; only the approve route
|
|
384
|
+
* (`approvePortrait()`) sets the portrait. Omitted/`true`: the finished
|
|
385
|
+
* take is written to the row's portrait. */
|
|
386
|
+
attachPortrait?: boolean;
|
|
387
|
+
seedPrompt?: string;
|
|
388
|
+
referencePhotos?: ReferencePhoto[];
|
|
389
|
+
/** Number of candidate images to generate (1–10; server-validated). */
|
|
390
|
+
count?: number;
|
|
391
|
+
/**
|
|
392
|
+
* Explicit aspect ratio. Highest precedence — overrides both the character
|
|
393
|
+
* node toggle and the per-asset-type default (portraits default to `3:4`).
|
|
394
|
+
* Must be one of the 4-value `CharacterAspectRatio` union.
|
|
395
|
+
*/
|
|
396
|
+
aspectRatio?: CharacterAspectRatio;
|
|
397
|
+
/**
|
|
398
|
+
* Character node toggle (per-canvas-node `defaultAssetAspectRatio`). Wins
|
|
399
|
+
* against the per-asset-type default, loses to `aspectRatio`.
|
|
400
|
+
*/
|
|
401
|
+
characterNodeAspectRatio?: CharacterAspectRatio;
|
|
402
|
+
/**
|
|
403
|
+
* Credit-affecting quality tier (e.g. `"high"` for gpt-image). Priced like
|
|
404
|
+
* generate-image (composite ids such as `gpt-image:high`); values the chosen
|
|
405
|
+
* model doesn't support are ignored server-side, never rejected.
|
|
406
|
+
*/
|
|
407
|
+
quality?: string;
|
|
408
|
+
/**
|
|
409
|
+
* Credit-affecting output resolution (e.g. `"2K"` / `"4K"` / `"2 MP"`).
|
|
410
|
+
* Priced like generate-image (composite ids such as `nano-banana-pro:4K`);
|
|
411
|
+
* values the chosen model doesn't support are ignored server-side, never
|
|
412
|
+
* rejected.
|
|
413
|
+
*/
|
|
414
|
+
resolution?: string;
|
|
415
|
+
}
|
|
416
|
+
interface GenerateCharacterResult {
|
|
417
|
+
/** First job-id; convenience alias for `jobIds[0]`. */
|
|
418
|
+
jobId: string;
|
|
419
|
+
/** All job-ids when `count > 1`. */
|
|
420
|
+
jobIds: string[];
|
|
421
|
+
}
|
|
422
|
+
interface GenerateAssetInput extends GenerationSessionParams {
|
|
423
|
+
assetType: "expressions" | "poses" | "lighting" | "angles" | "headAngles" | "bodyAngles" | "custom";
|
|
424
|
+
/** The named variant (e.g. `"smile"`, `"standing"`, `"3/4 left"`). */
|
|
425
|
+
variant: string;
|
|
426
|
+
/** Display name of the character; appears in the prompt. */
|
|
427
|
+
name: string;
|
|
428
|
+
description?: string;
|
|
429
|
+
userPrompt?: string;
|
|
430
|
+
gender?: string;
|
|
431
|
+
style?: EntityStyle;
|
|
432
|
+
baseOutfit?: string;
|
|
433
|
+
sourceImageUrl?: string;
|
|
434
|
+
/** Real-life reference URLs (cap 5). */
|
|
435
|
+
realLifeRefs?: string[];
|
|
436
|
+
provider?: string;
|
|
437
|
+
/** Auto-attach to character row + asset bucket on completion. */
|
|
438
|
+
attachToCharacterId?: string;
|
|
439
|
+
/** Shared type — auto-includes new buckets (sheets/detail_closeups/outfit_variations); mirrors objects.ts/locations.ts. */
|
|
440
|
+
attachToColumn?: CharacterAttachColumn;
|
|
441
|
+
attachName?: string;
|
|
442
|
+
/**
|
|
443
|
+
* Explicit aspect ratio. Highest precedence — overrides both the character
|
|
444
|
+
* node toggle and the per-asset-type default (expressions=1:1, poses=9:16,
|
|
445
|
+
* headAngles=3:4, bodyAngles=9:16, lighting=3:4, angles=3:4, custom=3:4).
|
|
446
|
+
*/
|
|
447
|
+
aspectRatio?: CharacterAspectRatio;
|
|
448
|
+
/**
|
|
449
|
+
* Character node toggle (per-canvas-node `defaultAssetAspectRatio`). Wins
|
|
450
|
+
* against the per-asset-type default, loses to `aspectRatio`.
|
|
451
|
+
*/
|
|
452
|
+
characterNodeAspectRatio?: CharacterAspectRatio;
|
|
453
|
+
/**
|
|
454
|
+
* Credit-affecting quality tier (e.g. `"high"` for gpt-image). Values the
|
|
455
|
+
* chosen model doesn't support are ignored server-side, never rejected.
|
|
456
|
+
*/
|
|
457
|
+
quality?: string;
|
|
458
|
+
/**
|
|
459
|
+
* Credit-affecting output resolution (e.g. `"2K"` / `"4K"` / `"2 MP"`).
|
|
460
|
+
* Values the chosen model doesn't support are ignored server-side, never
|
|
461
|
+
* rejected.
|
|
462
|
+
*/
|
|
463
|
+
resolution?: string;
|
|
464
|
+
}
|
|
465
|
+
interface GenerateMotionInput extends GenerationSessionParams {
|
|
466
|
+
motionPrompt: string;
|
|
467
|
+
/** Optional when `attachToCharacterId` is set — falls back to the row's portrait. */
|
|
468
|
+
sourceImageUrl?: string;
|
|
469
|
+
provider?: string;
|
|
470
|
+
name: string;
|
|
471
|
+
description?: string;
|
|
472
|
+
motionDescription?: string;
|
|
473
|
+
gender?: string;
|
|
474
|
+
style?: EntityStyle;
|
|
475
|
+
baseOutfit?: string;
|
|
476
|
+
realLifeRefs?: string[];
|
|
477
|
+
attachToCharacterId?: string;
|
|
478
|
+
attachName?: string;
|
|
479
|
+
/**
|
|
480
|
+
* Explicit aspect ratio. Highest precedence — overrides both the character
|
|
481
|
+
* node toggle and the motions default (`9:16`).
|
|
482
|
+
*/
|
|
483
|
+
aspectRatio?: CharacterAspectRatio;
|
|
484
|
+
/**
|
|
485
|
+
* Character node toggle (per-canvas-node `defaultAssetAspectRatio`). Wins
|
|
486
|
+
* against the motions default, loses to `aspectRatio`.
|
|
487
|
+
*/
|
|
488
|
+
characterNodeAspectRatio?: CharacterAspectRatio;
|
|
489
|
+
}
|
|
490
|
+
interface ApprovePortraitResult {
|
|
491
|
+
portraitUrl: string;
|
|
492
|
+
/**
|
|
493
|
+
* LLM-authored caption. `null` when the LLM call failed during the approval
|
|
494
|
+
* — the portrait is still set; call `recaption()` to retry.
|
|
495
|
+
*/
|
|
496
|
+
canonicalDescription: string | null;
|
|
497
|
+
}
|
|
498
|
+
interface RecaptionResult {
|
|
499
|
+
canonicalDescription: string;
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Where a character's high-fidelity training stands. `untrained`: nothing was
|
|
503
|
+
* ever trained, the trained model was removed (`deleteLora`), or a training
|
|
504
|
+
* could not be started (`training_dispatch_failed` — refunded; this resets the
|
|
505
|
+
* status even for a character trained before). `queued` / `training`: in
|
|
506
|
+
* flight. `succeeded` / `failed` / `cancelled`: the last training's outcome.
|
|
507
|
+
*
|
|
508
|
+
* Generation uses the trained model only while the status is `succeeded`.
|
|
509
|
+
*/
|
|
510
|
+
type CharacterTrainingState = "untrained" | "queued" | "training" | "succeeded" | "failed" | "cancelled";
|
|
511
|
+
/** `GET /v1/characters/:id/training` — the character's training record. */
|
|
512
|
+
interface CharacterTrainingStatus {
|
|
513
|
+
status: CharacterTrainingState;
|
|
514
|
+
/** The provider's id for the latest training; `null` before the first one. */
|
|
515
|
+
trainingId: string | null;
|
|
516
|
+
/** Why the last training failed, as the user may read it; `null` otherwise. */
|
|
517
|
+
error: string | null;
|
|
518
|
+
/**
|
|
519
|
+
* When the last successful training finished (ISO 8601). It stays set through
|
|
520
|
+
* a re-train, a failed or cancelled one, or one that could not be started —
|
|
521
|
+
* but the model is used only while `status` is `succeeded`.
|
|
522
|
+
*/
|
|
523
|
+
trainedAt: string | null;
|
|
524
|
+
/** The last successful training's model version; set or not, used only while `status` is `succeeded`. */
|
|
525
|
+
version: string | null;
|
|
526
|
+
/** The token added to prompts for this character (`TOK_<slug>_<6hex>`); generation adds it for you. */
|
|
527
|
+
triggerWord: string | null;
|
|
528
|
+
/** How many images the latest training used. */
|
|
529
|
+
imageCount: number | null;
|
|
530
|
+
}
|
|
531
|
+
/** Body for `characters.train()`. */
|
|
532
|
+
interface TrainCharacterInput {
|
|
533
|
+
/**
|
|
534
|
+
* Train on these of the character's images only (max 200 URLs; at most 20
|
|
535
|
+
* are used). Omitted or empty: every eligible image — the portrait,
|
|
536
|
+
* reference photos, expressions, poses, head and body angles and lighting
|
|
537
|
+
* variations. At least 4 distinct images must remain either way.
|
|
538
|
+
*/
|
|
539
|
+
selectedImageUrls?: string[];
|
|
540
|
+
}
|
|
541
|
+
/** `POST /v1/characters/:id/train` — answered 202 while the training runs. */
|
|
542
|
+
interface TrainCharacterResult {
|
|
543
|
+
/** The training's job; it ends `completed`, `failed` or `cancelled` with the training. */
|
|
544
|
+
jobId: string;
|
|
545
|
+
/** The provider's id for this training (also on `trainingStatus().trainingId`). */
|
|
546
|
+
trainingId: string;
|
|
547
|
+
/** The token added to prompts for this character once trained. */
|
|
548
|
+
triggerWord: string;
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* The `code` of a `NodaroError` `train()` can throw beyond the typed classes
|
|
552
|
+
* (`ForbiddenError` — an app token without `assets:write`, `missingScope`
|
|
553
|
+
* says so; `InsufficientCreditsError`; `RateLimitedError`; `JobBlockedError`;
|
|
554
|
+
* `UnauthorizedError`; …):
|
|
555
|
+
*
|
|
556
|
+
* - `insufficient_training_images` (400) — fewer than 4 distinct images; the
|
|
557
|
+
* message says how many there are.
|
|
558
|
+
* - `validation_error` (400) — a malformed id or `selectedImageUrls`.
|
|
559
|
+
* - `already_training_or_not_found` (409) — a training is already in flight,
|
|
560
|
+
* or the character is not yours / archived.
|
|
561
|
+
* - `claim_failed` (500) — the training slot could not be claimed; nothing
|
|
562
|
+
* started. Retry.
|
|
563
|
+
* - `training_dispatch_failed` (502) — the training could not be started;
|
|
564
|
+
* nothing is charged.
|
|
565
|
+
* - `public_url_not_configured` (503) — the deployment cannot receive the
|
|
566
|
+
* provider's completion call.
|
|
567
|
+
* - `price_not_configured` (503) — the deployment has no price for training.
|
|
568
|
+
* - `dedup_race_winner_unresolvable` (503) — a duplicate of this request was
|
|
569
|
+
* in flight and its outcome could not be read; this one reserved nothing.
|
|
570
|
+
* Read {@link CharactersResource.trainingStatus} before retrying.
|
|
571
|
+
*/
|
|
572
|
+
type TrainCharacterRefusalCode = "insufficient_training_images" | "validation_error" | "already_training_or_not_found" | "claim_failed" | "training_dispatch_failed" | "public_url_not_configured" | "price_not_configured" | "dedup_race_winner_unresolvable";
|
|
573
|
+
declare class CharactersResource {
|
|
574
|
+
private client;
|
|
575
|
+
constructor(client: NodaroClientCore);
|
|
576
|
+
/**
|
|
577
|
+
* List the caller's characters. By default returns active characters only;
|
|
578
|
+
* pass `archived: true` to fetch soft-deleted rows for an "archive" view.
|
|
579
|
+
* When `projectId` is set, only characters belonging to that project are
|
|
580
|
+
* returned; `q` keeps the ones whose name or description contains it.
|
|
581
|
+
*
|
|
582
|
+
* Cursor-paginated: a response carrying a non-null `nextCursor` means more
|
|
583
|
+
* rows exist. Pass it back as `cursor` to fetch the next page, and keep going
|
|
584
|
+
* until `nextCursor` is `null` — a single call returns at most `limit` rows
|
|
585
|
+
* (default 100), so treating one call as "all characters" silently truncates
|
|
586
|
+
* the list for anyone past that count.
|
|
587
|
+
*
|
|
588
|
+
* ```ts
|
|
589
|
+
* const all: Character[] = []
|
|
590
|
+
* let cursor: string | undefined
|
|
591
|
+
* do {
|
|
592
|
+
* const page = await client.characters.list({ cursor })
|
|
593
|
+
* all.push(...page.characters)
|
|
594
|
+
* cursor = page.nextCursor ?? undefined
|
|
595
|
+
* } while (cursor)
|
|
596
|
+
* ```
|
|
597
|
+
*/
|
|
598
|
+
list(params?: ListCharactersParams): Promise<ListCharactersResult>;
|
|
599
|
+
/**
|
|
600
|
+
* Fetch a single character including in-flight portrait / asset job state.
|
|
601
|
+
* Soft-deleted (archived) rows are returned by id intentionally so canvas
|
|
602
|
+
* nodes that hold a stale `characterDbId` keep loading. Pass
|
|
603
|
+
* `{ candidates: "all" }` to also get the current portrait's own take in
|
|
604
|
+
* `previousCandidates` (flagged `isPortrait: true`).
|
|
605
|
+
*/
|
|
606
|
+
get(id: string, options?: GetCharacterOptions): Promise<CharacterDetail>;
|
|
607
|
+
/**
|
|
608
|
+
* Create or update a character. Omit `id` to create; supply it to update
|
|
609
|
+
* (only the fields you pass get written — undefined keys are untouched).
|
|
610
|
+
*
|
|
611
|
+
* If the caller-supplied `name` collides with an existing active character
|
|
612
|
+
* for this user, the request returns 409 `name_taken`. To auto-number a
|
|
613
|
+
* placeholder, pass the placeholder name from `@nodaro/shared` and the
|
|
614
|
+
* server will derive "Untitled character 2", "Untitled character 3", etc.
|
|
615
|
+
*/
|
|
616
|
+
upsert(input: UpsertCharacterInput): Promise<UpsertCharacterResult>;
|
|
617
|
+
/**
|
|
618
|
+
* Convenience wrapper around `upsert()` for creating new characters.
|
|
619
|
+
* Equivalent to `upsert({ ...input, id: undefined })`. `name` is REQUIRED
|
|
620
|
+
* on create — the route 400s on INSERT-without-name; we narrow the type
|
|
621
|
+
* here so callers fail at compile-time rather than runtime.
|
|
622
|
+
*/
|
|
623
|
+
create(input: Omit<UpsertCharacterInput, "id"> & {
|
|
624
|
+
name: string;
|
|
625
|
+
}): Promise<UpsertCharacterResult>;
|
|
626
|
+
/**
|
|
627
|
+
* Convenience wrapper around `upsert()` for updating an existing character.
|
|
628
|
+
* Equivalent to `upsert({ ...input, id })`.
|
|
629
|
+
*/
|
|
630
|
+
update(id: string, input: Omit<UpsertCharacterInput, "id">): Promise<UpsertCharacterResult>;
|
|
631
|
+
/**
|
|
632
|
+
* Soft-delete (archive) a character. The row is hidden from `list()` by
|
|
633
|
+
* default but still loadable via `get(id)` so canvas nodes pointing at it
|
|
634
|
+
* keep working. Restore with `restore(id)`.
|
|
635
|
+
*/
|
|
636
|
+
delete(id: string): Promise<{
|
|
637
|
+
success: true;
|
|
638
|
+
archived: true;
|
|
639
|
+
}>;
|
|
640
|
+
/**
|
|
641
|
+
* Un-archive a character. If the original name now collides with an
|
|
642
|
+
* active row, the server auto-suffixes "(restored)" and returns the
|
|
643
|
+
* effective name.
|
|
644
|
+
*/
|
|
645
|
+
restore(id: string): Promise<{
|
|
646
|
+
id: string;
|
|
647
|
+
name: string;
|
|
648
|
+
}>;
|
|
649
|
+
/**
|
|
650
|
+
* Duplicate (fork) a character to a new row with a `"(copy)"` suffix.
|
|
651
|
+
* Asset URLs are shared by reference — the new row can diverge by
|
|
652
|
+
* regenerating any of them.
|
|
653
|
+
*/
|
|
654
|
+
duplicate(id: string, input?: DuplicateCharacterInput): Promise<{
|
|
655
|
+
id: string;
|
|
656
|
+
name: string;
|
|
657
|
+
}>;
|
|
658
|
+
/**
|
|
659
|
+
* Count of the caller's workflows that reference this character. Powers the
|
|
660
|
+
* library "Archive" confirmation modal in the editor.
|
|
661
|
+
*/
|
|
662
|
+
usage(id: string): Promise<CharacterUsage>;
|
|
663
|
+
/**
|
|
664
|
+
* Fire `POST /v1/generate-character` to produce one or more portrait
|
|
665
|
+
* candidates. With `count > 1`, all jobs are reserved up-front before any
|
|
666
|
+
* is enqueued — mid-batch failures roll back atomically.
|
|
667
|
+
*
|
|
668
|
+
* When `attachToCharacterId` is set, the worker writes the result directly
|
|
669
|
+
* to the row's `source_image_url` (unless `attachPortrait: false`);
|
|
670
|
+
* otherwise you must call `approvePortrait()` after picking a candidate.
|
|
671
|
+
*/
|
|
672
|
+
generate(input: GenerateCharacterInput): Promise<GenerateCharacterResult>;
|
|
673
|
+
/**
|
|
674
|
+
* Fire `POST /v1/generate-character-asset` to produce a single
|
|
675
|
+
* expression / pose / angle / lighting variant. When the studio path is
|
|
676
|
+
* set (`attachToCharacterId` + `attachToColumn` + `attachName`), the
|
|
677
|
+
* worker appends `{ name: attachName, url: <result> }` to the named
|
|
678
|
+
* JSONB array column on completion.
|
|
679
|
+
*/
|
|
680
|
+
generateAsset(input: GenerateAssetInput): Promise<{
|
|
681
|
+
jobId: string;
|
|
682
|
+
}>;
|
|
683
|
+
/**
|
|
684
|
+
* Fire `POST /v1/generate-character-motion` to animate the character's
|
|
685
|
+
* portrait into a motion clip. The result is appended to the character's
|
|
686
|
+
* `motions[]` bucket when `attachToCharacterId` is set.
|
|
687
|
+
*/
|
|
688
|
+
generateMotion(input: GenerateMotionInput): Promise<{
|
|
689
|
+
jobId: string;
|
|
690
|
+
}>;
|
|
691
|
+
/**
|
|
692
|
+
* Approve a completed `generate-character` job as the character's portrait.
|
|
693
|
+
* Sets `source_image_url` and fires the LLM caption (Claude Sonnet vision)
|
|
694
|
+
* inline. Returns the new portrait URL plus the caption — `canonicalDescription`
|
|
695
|
+
* is `null` if the LLM call sub-failed (portrait still set; retry via `recaption()`).
|
|
696
|
+
*/
|
|
697
|
+
approvePortrait(id: string, candidateJobId: string): Promise<ApprovePortraitResult>;
|
|
698
|
+
/**
|
|
699
|
+
* Re-fire the LLM caption against the character's current portrait. 502s on
|
|
700
|
+
* LLM failure; returns 400 `no_portrait` if no portrait is set yet.
|
|
701
|
+
*/
|
|
702
|
+
recaption(id: string): Promise<RecaptionResult>;
|
|
703
|
+
/**
|
|
704
|
+
* Start training a high-fidelity model of the character on its own images
|
|
705
|
+
* (Nodaro Cloud only — other editions answer `NotFoundError`). Reserves the
|
|
706
|
+
* training price up front and refunds it if the training fails or is
|
|
707
|
+
* cancelled. Resolves at once (202); a training takes about 15 minutes —
|
|
708
|
+
* follow it with {@link trainingStatus}. Once it succeeds, a workflow's
|
|
709
|
+
* Generate Image node whose prompt @-mentions this one character runs on the
|
|
710
|
+
* trained model.
|
|
711
|
+
*
|
|
712
|
+
* An OAuth app token needs the `assets:write` scope (`ForbiddenError`
|
|
713
|
+
* otherwise, before anything is reserved); a session or personal API key
|
|
714
|
+
* needs none. Refusals are `NodaroError`s whose `code` is a
|
|
715
|
+
* {@link TrainCharacterRefusalCode}; rate-limited to 3 calls a minute.
|
|
716
|
+
*/
|
|
717
|
+
train(id: string, input?: TrainCharacterInput): Promise<TrainCharacterResult>;
|
|
718
|
+
/**
|
|
719
|
+
* The character's training record (Nodaro Cloud only). Poll it while
|
|
720
|
+
* `status` is `queued` or `training` — every 10 s or so is plenty.
|
|
721
|
+
*/
|
|
722
|
+
trainingStatus(id: string): Promise<CharacterTrainingStatus>;
|
|
723
|
+
/**
|
|
724
|
+
* Remove the character's trained model (Nodaro Cloud only): cancels a
|
|
725
|
+
* training in flight and refunds its reservation, deletes the model, and
|
|
726
|
+
* clears the training record (`trainingStatus` then reads `untrained`).
|
|
727
|
+
* Generations go back to reference images. Cannot be undone — a new model
|
|
728
|
+
* means a new, paid training. An OAuth app token needs the `assets:write`
|
|
729
|
+
* scope (`ForbiddenError` otherwise), like deleting the character.
|
|
730
|
+
*/
|
|
731
|
+
deleteLora(id: string): Promise<void>;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
/**
|
|
735
|
+
* Collapse a PersonValue into the comma-joined seed-prompt fragment used by
|
|
736
|
+
* `characters.generate({ seedPrompt })` — same composition the Nodaro editor
|
|
737
|
+
* performs. Powered by @nodaro/prompts.
|
|
738
|
+
*/
|
|
739
|
+
declare function buildPersonSeedPrompt(value: PersonValue): string;
|
|
740
|
+
|
|
741
|
+
export { type ApprovePortraitResult, type Character, type CharacterDetail, type CharacterTrainingState, type CharacterTrainingStatus, type CharacterUsage, CharactersResource, type DuplicateCharacterInput, type GenerateAssetInput, type GenerateCharacterInput, type GenerateCharacterResult, type GenerateMotionInput, type GetCharacterOptions, type ListCharactersParams, type ListCharactersResult, type RecaptionResult, type ReferencePhoto, type ReferencePhotoKind, type TrainCharacterInput, type TrainCharacterRefusalCode, type TrainCharacterResult, type UpsertCharacterInput, type UpsertCharacterResult, buildPersonSeedPrompt };
|