@nodaro/sdk 2.29.0 → 2.32.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-4CXB7RA6.js +104 -0
- package/dist/chunk-4CXB7RA6.js.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-65E3JBFZ.js +52 -0
- package/dist/chunk-65E3JBFZ.js.map +1 -0
- package/dist/chunk-6ECW23GA.js +214 -0
- package/dist/chunk-6ECW23GA.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-7CK6I4CT.cjs +16 -0
- package/dist/chunk-7CK6I4CT.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-B7RG6AUQ.cjs +216 -0
- package/dist/chunk-B7RG6AUQ.cjs.map +1 -0
- package/dist/chunk-BAL576G2.cjs +4 -0
- package/dist/chunk-BAL576G2.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-FB3S2FON.cjs +233 -0
- package/dist/chunk-FB3S2FON.cjs.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-GB724HW2.cjs +106 -0
- package/dist/chunk-GB724HW2.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-GWCOKNST.js +228 -0
- package/dist/chunk-GWCOKNST.js.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-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-PHEA6FVQ.js +184 -0
- package/dist/chunk-PHEA6FVQ.js.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-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-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-S7JQKNVT.cjs +187 -0
- package/dist/chunk-S7JQKNVT.cjs.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-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-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-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/chunk-ZYPH2FPT.js +3 -0
- package/dist/chunk-ZYPH2FPT.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 +237 -0
- package/dist/entries/credits.d.ts +237 -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 +67 -10895
- package/dist/index.d.ts +67 -10895
- package/dist/index.js +100 -5074
- package/dist/index.js.map +1 -1
- package/dist/nodes-C-wrO6Sg.d.ts +1364 -0
- package/dist/nodes-J8ByUN8z.d.cts +1364 -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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resources/competitors.ts"],"names":[],"mappings":"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","file":"chunk-BU5A6K4C.js","sourcesContent":["import type { NodaroClientCore } from \"../core.js\"\nimport type {\n CardActionResult,\n CompetitorActionsResult,\n CompetitorCardsResult,\n CompetitorCompareInput,\n CompetitorCompareResult,\n CompetitorDetail,\n CompetitorDiscovery,\n CompetitorHistory,\n CompetitorLessonsResult,\n CompetitorListResult,\n CreateCompetitorInput,\n TrackedCompetitor,\n UpdateCompetitorInput,\n} from \"@nodaro/shared/social\"\n\n/**\n * Competitors — brands you track (competitors, or your own), their scans and\n * the action cards read from them. Nodaro Cloud.\n *\n * Adding, reading and website lookups are free. A scan costs one Social\n * Search page per search it runs (`TrackedCompetitor.searches`); searches that\n * fail are not charged.\n */\nexport class CompetitorsResource {\n constructor(private client: NodaroClientCore) {}\n\n /** `GET /v1/competitors` → every tracked brand. */\n async list(): Promise<TrackedCompetitor[]> {\n const res = await this.listWithPlan()\n return [...res.data]\n }\n\n /** `GET /v1/competitors` → every tracked brand, with how many months of scans your plan keeps. */\n listWithPlan(): Promise<CompetitorListResult> {\n return this.client.request<CompetitorListResult>(\"GET\", \"/v1/competitors\")\n }\n\n /**\n * `GET /v1/competitors/:id` → one brand with its latest scan (posts and\n * cards) and its scan history; with `scan`, the brand as of that scan.\n */\n get(id: string, options: { readonly scan?: string } = {}): Promise<CompetitorDetail> {\n const query = options.scan ? `?scan=${encodeURIComponent(options.scan)}` : \"\"\n return this.client.request<CompetitorDetail>(\"GET\", `/v1/competitors/${encodeURIComponent(id)}${query}`)\n }\n\n /** `GET /v1/competitors/:id/history` → the brand's scans oldest first, per platform what each found and read (free). */\n history(id: string): Promise<CompetitorHistory> {\n return this.client.request<CompetitorHistory>(\"GET\", `/v1/competitors/${encodeURIComponent(id)}/history`)\n }\n\n /**\n * `GET /v1/competitors/:id/compare` → the brand over a period, and over a\n * second one to compare with (free). A post belongs to a period by its\n * publish date; a period is at most a year.\n */\n compare(id: string, input: CompetitorCompareInput): Promise<CompetitorCompareResult> {\n const params = new URLSearchParams({ from: input.from, to: input.to })\n if (input.vsFrom !== undefined && input.vsTo !== undefined) {\n params.set(\"vsFrom\", input.vsFrom)\n params.set(\"vsTo\", input.vsTo)\n }\n return this.client.request<CompetitorCompareResult>(\"GET\", `/v1/competitors/${encodeURIComponent(id)}/compare?${params.toString()}`)\n }\n\n /** `POST /v1/competitors` → track a brand. Accounts take handles or links. */\n create(input: CreateCompetitorInput): Promise<TrackedCompetitor> {\n return this.client.request<TrackedCompetitor>(\"POST\", \"/v1/competitors\", { body: input })\n }\n\n /**\n * `PATCH /v1/competitors/:id` → change its accounts, platforms, name or schedule.\n * `accounts` replaces the whole set: pass every account to keep. Send\n * `schedule` only to change it (it restarts the brand's schedule). While a\n * scan of the brand runs, a change to its name, accounts, platforms or\n * `isOwn` is refused with `409 scan_running`.\n */\n update(id: string, input: UpdateCompetitorInput): Promise<TrackedCompetitor> {\n return this.client.request<TrackedCompetitor>(\"PATCH\", `/v1/competitors/${encodeURIComponent(id)}`, { body: input })\n }\n\n /** `DELETE /v1/competitors/:id` → stop tracking it (its scans go too). */\n async delete(id: string): Promise<void> {\n await this.client.request<{ success: true }>(\"DELETE\", `/v1/competitors/${encodeURIComponent(id)}`)\n }\n\n /** `GET /v1/competitors/cards` → every action card, most urgent first, with the posts they rest on. */\n cards(): Promise<CompetitorCardsResult> {\n return this.client.request<CompetitorCardsResult>(\"GET\", \"/v1/competitors/cards\")\n }\n\n /**\n * `GET /v1/competitors/:id/lessons` → what works for a brand: per platform,\n * what its best posts share, measured on its own posts across every stored\n * scan, with the posts each lesson rests on (free). \"What works for you\" on\n * the brand marked as yours.\n */\n lessons(id: string): Promise<CompetitorLessonsResult> {\n return this.client.request<CompetitorLessonsResult>(\"GET\", `/v1/competitors/${encodeURIComponent(id)}/lessons`)\n }\n\n /**\n * `GET /v1/competitors/actions` → the cards you marked \"I did this\", newest\n * first, each with how it went (`outcome`), and your track record per\n * family of advice (free). Each scan of your own brand judges the post that\n * came of a card once it is a few days old; the first verdict stays.\n */\n tried(): Promise<CompetitorActionsResult> {\n return this.client.request<CompetitorActionsResult>(\"GET\", \"/v1/competitors/actions\")\n }\n\n /**\n * `POST /v1/competitors/actions` → \"I did this\" on a card on your wall (its\n * `id` from `cards()`), optionally with the link to your post that came of\n * it. Only cards whose advice ends in a post of yours can be marked\n * (`400 not_measurable`). Marking a marked card returns its mark\n * (`created: false`).\n */\n markDone(cardId: string, options: { postUrl?: string } = {}): Promise<CardActionResult> {\n return this.client.request<CardActionResult>(\"POST\", \"/v1/competitors/actions\", { body: { cardId, ...(options.postUrl ? { postUrl: options.postUrl } : {}) } })\n }\n\n /**\n * `PATCH /v1/competitors/actions/:id` → link the post that came of a marked\n * card (the post's full link; a short link is refused with `400\n * short_link`), or `null` to remove the link. Another post is judged afresh.\n */\n linkPost(markId: string, postUrl: string | null): Promise<CardActionResult> {\n return this.client.request<CardActionResult>(\"PATCH\", `/v1/competitors/actions/${encodeURIComponent(markId)}`, { body: { postUrl } })\n }\n\n /** `PATCH /v1/competitors/actions/:id` with `seen: true` → you have seen its verdict (the app stops announcing it). */\n markSeen(markId: string): Promise<CardActionResult> {\n return this.client.request<CardActionResult>(\"PATCH\", `/v1/competitors/actions/${encodeURIComponent(markId)}`, { body: { seen: true } })\n }\n\n /** `DELETE /v1/competitors/actions/:id` → undo \"I did this\" (its verdict leaves your track record). */\n async unmark(markId: string): Promise<void> {\n await this.client.request<{ success: true }>(\"DELETE\", `/v1/competitors/actions/${encodeURIComponent(markId)}`)\n }\n\n /** `POST /v1/competitor-discover` → a brand's accounts found from its website (free; guesses are marked). */\n discover(website: string): Promise<CompetitorDiscovery> {\n return this.client.request<CompetitorDiscovery>(\"POST\", \"/v1/competitor-discover\", { body: { website } })\n }\n\n /**\n * `POST /v1/competitor-scan` → scan a brand now. Answers with a job id;\n * poll `client.jobs.getStatus(jobId)`, then read `get(id)` or `cards()`.\n */\n scan(id: string): Promise<{ jobId: string }> {\n return this.client.request<{ jobId: string }>(\"POST\", \"/v1/competitor-scan\", { body: { competitorId: id } })\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-C22RJDW3.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-CGNVHN4V.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-CJFIOVBA.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-CJLLIVSB.cjs"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
export { CREATURE_ATTACH_COLUMNS, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS } from '@nodaro/shared/entities';
|
|
2
|
+
|
|
3
|
+
// src/resources/creatures.ts
|
|
4
|
+
var CREATURE_ASSET_TYPES = ["angles", "poses", "variations", "custom"];
|
|
5
|
+
var CreaturesResource = class {
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
client;
|
|
10
|
+
/**
|
|
11
|
+
* List the caller's creatures. By default returns active creatures only;
|
|
12
|
+
* pass `archived: true` to fetch soft-deleted rows for an "archive" view.
|
|
13
|
+
* Optional `projectId` scopes the result to a single project; `q` keeps the
|
|
14
|
+
* creatures whose name or description contains it.
|
|
15
|
+
*/
|
|
16
|
+
list(params = {}) {
|
|
17
|
+
const query = {};
|
|
18
|
+
if (params.archived) query.archived = "true";
|
|
19
|
+
if (params.projectId) query.projectId = params.projectId;
|
|
20
|
+
if (params.q) query.q = params.q;
|
|
21
|
+
if (params.limit !== void 0) query.limit = String(params.limit);
|
|
22
|
+
if (params.cursor) query.cursor = params.cursor;
|
|
23
|
+
return this.client.request("GET", "/v1/creatures", { query });
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convenience wrapper for `list({ archived: true })`. Returns soft-deleted
|
|
27
|
+
* rows so callers can drive a UI "Archived" tab without re-encoding the
|
|
28
|
+
* query param.
|
|
29
|
+
*
|
|
30
|
+
* `archived` is omitted from the param type — it's always set to `true` here.
|
|
31
|
+
*/
|
|
32
|
+
listArchived(params = {}) {
|
|
33
|
+
return this.list({ ...params, archived: true });
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Fetch a single creature including in-flight asset job state. Soft-deleted
|
|
37
|
+
* (archived) rows are NOT returned by id — the route enforces
|
|
38
|
+
* `deleted_at IS NULL` so archived creatures 404 (uniform "not_found" — does
|
|
39
|
+
* not leak the deleted vs non-existent distinction).
|
|
40
|
+
*/
|
|
41
|
+
async get(id) {
|
|
42
|
+
const res = await this.client.request(
|
|
43
|
+
"GET",
|
|
44
|
+
`/v1/creatures/${encodeURIComponent(id)}`
|
|
45
|
+
);
|
|
46
|
+
return { ...res, canonicalDescription: res.canonicalDescription || null };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a new creature. `name` + `nodeId` are required — the route 400s
|
|
50
|
+
* otherwise. Returns the new row's id.
|
|
51
|
+
*
|
|
52
|
+
* Note: the underlying route is the same `POST /v1/creatures` upsert that
|
|
53
|
+
* powers `update()`. This convenience wrapper enforces the INSERT-required
|
|
54
|
+
* fields at the type level and never sends an `id`.
|
|
55
|
+
*/
|
|
56
|
+
create(data) {
|
|
57
|
+
return this.client.request("POST", "/v1/creatures", { body: data });
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Update a creature. Only the fields you pass are written — undefined keys
|
|
61
|
+
* are NOT touched on the row. Worker-owned asset buckets are intentionally
|
|
62
|
+
* not exposed on this surface (see `UpdateCreatureInput` for the rationale).
|
|
63
|
+
*
|
|
64
|
+
* Optimistic-concurrency: pass `expectedUpdatedAt` to require the row's
|
|
65
|
+
* `updated_at` still matches; on mismatch the route returns 409
|
|
66
|
+
* `concurrent_modification` carrying the fresh `updatedAt`. The SDK
|
|
67
|
+
* surfaces that as a generic `NodaroError` with the same code.
|
|
68
|
+
*/
|
|
69
|
+
update(id, data) {
|
|
70
|
+
return this.client.request("POST", "/v1/creatures", {
|
|
71
|
+
body: { id, ...data }
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Soft-delete (archive) a creature. The row is hidden from `list()` by
|
|
76
|
+
* default but recoverable via `restore(id)` or visible under
|
|
77
|
+
* `listArchived()`. Idempotent — repeating a delete on an already-archived
|
|
78
|
+
* row is a no-op.
|
|
79
|
+
*/
|
|
80
|
+
delete(id) {
|
|
81
|
+
return this.client.request("DELETE", `/v1/creatures/${encodeURIComponent(id)}`);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Hard-delete (permanent) a creature — the row + every R2 asset it
|
|
85
|
+
* references. Archived rows ONLY: active creatures return 400 `not_archived`.
|
|
86
|
+
* Call `delete()` first to archive, then `permanentDelete()` to destroy.
|
|
87
|
+
*
|
|
88
|
+
* Mirrors the `app_runs` permanent-delete pattern (archive-first) so a
|
|
89
|
+
* stray SDK / curl caller cannot bypass the studio's archive-first UI
|
|
90
|
+
* flow.
|
|
91
|
+
*/
|
|
92
|
+
permanentDelete(id) {
|
|
93
|
+
return this.client.request("DELETE", `/v1/creatures/${encodeURIComponent(id)}`, {
|
|
94
|
+
query: { permanent: "true" }
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Un-archive a creature. If the original name now collides (case-
|
|
99
|
+
* insensitive) with an active row, the server auto-suffixes "(restored)"
|
|
100
|
+
* and returns the effective name.
|
|
101
|
+
*/
|
|
102
|
+
restore(id) {
|
|
103
|
+
return this.client.request("POST", `/v1/creatures/${encodeURIComponent(id)}/restore`);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Fire `POST /v1/generate-creature` to produce one or more candidate main
|
|
107
|
+
* images. With `count > 1`, all jobs are reserved up-front before any
|
|
108
|
+
* is enqueued — mid-batch failures roll back atomically.
|
|
109
|
+
*
|
|
110
|
+
* When `attachToCreatureId` is set AND `count === 1`, the worker writes
|
|
111
|
+
* the result directly to the row's `source_image_url`; otherwise you must
|
|
112
|
+
* call `approveMainImage()` after picking a candidate.
|
|
113
|
+
*/
|
|
114
|
+
async generate(data) {
|
|
115
|
+
const res = await this.client.request(
|
|
116
|
+
"POST",
|
|
117
|
+
"/v1/generate-creature",
|
|
118
|
+
{ body: data }
|
|
119
|
+
);
|
|
120
|
+
const jobIds = res.jobIds ?? (res.jobId ? [res.jobId] : []);
|
|
121
|
+
return res.jobId ? { jobIds, jobId: res.jobId } : { jobIds };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Fire `POST /v1/generate-creature-asset` to produce a single variant.
|
|
125
|
+
* When the studio path is set (`attachToCreatureId` + `attachToColumn` +
|
|
126
|
+
* `attachName`), the worker appends `{ name: attachName, url: <result> }`
|
|
127
|
+
* to the named JSONB array column on completion.
|
|
128
|
+
*
|
|
129
|
+
* Note: `attachToColumn` is REQUIRED for `assetType === "custom"` — the
|
|
130
|
+
* worker can't infer the bucket from the asset type. For canonical asset
|
|
131
|
+
* types (`angles` / `poses` / `variations`), the column is derived
|
|
132
|
+
* automatically by the route.
|
|
133
|
+
*/
|
|
134
|
+
generateAsset(data) {
|
|
135
|
+
return this.client.request("POST", "/v1/generate-creature-asset", { body: data });
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Fire `POST /v1/generate-creature-motion` to animate the creature's main
|
|
139
|
+
* image into a motion clip. Image-to-video, single clip per call; the
|
|
140
|
+
* attach column is hardcoded to `motion_clips` server-side (creatures have a
|
|
141
|
+
* single motion bucket so the caller doesn't supply `attachToColumn`).
|
|
142
|
+
* When the studio path is set (`attachToCreatureId` + `attachName`), the
|
|
143
|
+
* worker appends `{ name: attachName, url: <result> }` to the row's
|
|
144
|
+
* `motion_clips` column on completion.
|
|
145
|
+
*
|
|
146
|
+
* Defaults: `provider` → `"kling-turbo"`, `aspectRatio` → `"1:1"` (set
|
|
147
|
+
* server-side via `resolveObjectAspectRatio({ assetType: "motion" })`).
|
|
148
|
+
*/
|
|
149
|
+
generateMotion(data) {
|
|
150
|
+
return this.client.request("POST", "/v1/generate-creature-motion", { body: data });
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Approve a completed `generate-creature` job as the creature's main image.
|
|
154
|
+
* Sets `source_image_url` and fires the LLM caption (Claude Sonnet vision)
|
|
155
|
+
* inline. Returns the new main-image URL plus the caption.
|
|
156
|
+
*
|
|
157
|
+
* Caption-failure semantics: the route still sends `""` on LLM sub-failure,
|
|
158
|
+
* but the SDK normalizes `""` → `null` here so `canonicalDescription` carries
|
|
159
|
+
* the same `string | null` semantics as characters. The main image is still
|
|
160
|
+
* set; call `recaption()` to retry.
|
|
161
|
+
*
|
|
162
|
+
* Optimistic-concurrency: pass `expectedUpdatedAt` to gate the update on
|
|
163
|
+
* the row's current `updated_at`; on mismatch the route returns 409
|
|
164
|
+
* `concurrent_modification` carrying the fresh token.
|
|
165
|
+
*/
|
|
166
|
+
async approveMainImage(id, candidateJobId, expectedUpdatedAt) {
|
|
167
|
+
const res = await this.client.request(
|
|
168
|
+
"POST",
|
|
169
|
+
`/v1/creatures/${encodeURIComponent(id)}/approve-main-image`,
|
|
170
|
+
{ body: { candidateJobId, expectedUpdatedAt } }
|
|
171
|
+
);
|
|
172
|
+
return { sourceImageUrl: res.sourceImageUrl, canonicalDescription: res.canonicalDescription || null };
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Re-fire the LLM caption against the creature's current main image. 502s
|
|
176
|
+
* on LLM failure (unlike `approveMainImage` which preserves the side-effect
|
|
177
|
+
* and returns ""); returns 400 `main_image_required` if no main image is
|
|
178
|
+
* set yet.
|
|
179
|
+
*
|
|
180
|
+
* The route is a pure idempotent retry — it does NOT accept an
|
|
181
|
+
* `expectedUpdatedAt` token (backend route is idempotent retry, not gated on
|
|
182
|
+
* optimistic-concurrency).
|
|
183
|
+
*/
|
|
184
|
+
recaption(id) {
|
|
185
|
+
return this.client.request(
|
|
186
|
+
"POST",
|
|
187
|
+
`/v1/creatures/${encodeURIComponent(id)}/llm-caption`
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
export { CREATURE_ASSET_TYPES, CreaturesResource };
|
|
193
|
+
//# sourceMappingURL=chunk-CK3AMMSC.js.map
|
|
194
|
+
//# sourceMappingURL=chunk-CK3AMMSC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resources/creatures.ts"],"names":[],"mappings":"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","file":"chunk-CK3AMMSC.js","sourcesContent":["import type { ObjectAspectRatio, CreatureAttachColumn } from \"@nodaro/shared/entities\"\nimport type { TtsProvider } from \"@nodaro/shared/models\"\nexport type { CreatureAttachColumn, ObjectAspectRatio as CreatureAspectRatio } from \"@nodaro/shared/entities\"\nexport { CREATURE_ATTACH_COLUMNS, OBJECT_ASPECT_OPTIONS as CREATURE_ASPECT_OPTIONS, OBJECT_ASPECT_DEFAULTS as CREATURE_ASPECT_DEFAULTS } from \"@nodaro/shared/entities\"\nimport type { NodaroClientCore } from \"../core.js\"\nimport type { GenerationSessionParams } from \"./nodes.js\"\n\n/**\n * Creature voice — IDENTICAL shape + semantics to `Character[\"voice\"]` (the\n * \"talking creature\" stack reuses the character voice plumbing verbatim).\n * Render speech via `client.nodes.run(\"text-to-speech\", { text, voice:\n * voiceId, provider: ttsProvider, voiceType })`, then feed the audio + the\n * creature's `sourceImageUrl` to `client.nodes.run(\"lip-sync\", …)` (or\n * speech-to-video) for a talking-creature clip.\n */\nexport interface CreatureVoice {\n voiceId: string\n voiceName: string\n traits: string\n voiceType?: \"premade\" | \"library\" | \"custom\"\n /** Playable preview sample (client-played only). */\n previewUrl?: string\n /** Recommended TTS provider — send as `provider` on text-to-speech. */\n ttsProvider?: TtsProvider\n}\n\n/**\n * Re-export the shared `CreatureAttachColumn` union + its runtime tuple so SDK\n * consumers don't have to add `@nodaro/shared` as a second dependency just to\n * typecheck the `attachToColumn` field. Single source of truth lives in\n * `@nodaro/shared/entity-prompts` (`CREATURE_ATTACH_COLUMNS`).\n *\n * `CreatureAspectRatio` is re-exported as an alias of the shared\n * `ObjectAspectRatio` — `generateMotion`'s `aspectRatio` field is the 5-value\n * object enum (1:1 / 3:4 / 16:9 / 9:16 / 4:3). The creature motion route\n * deliberately REUSES `OBJECT_ASPECT_OPTIONS` server-side (a creature reference\n * clip is centered product-showcase framing, not cinematic 16:9), so the SDK\n * surfaces the same enum under a creature-friendly name. The runtime tuple is\n * re-exported as `CREATURE_ASPECT_OPTIONS` / `CREATURE_ASPECT_DEFAULTS` aliases.\n */\n\n/**\n * Creature asset-type enum — the kinds of variant a user can generate off a\n * creature's anchor main image. Mirrors the literal accepted by\n * `POST /v1/generate-creature-asset` (`backend/src/routes/generate-creature-asset.ts`).\n *\n * Delta vs `ObjectAssetType`: object's `materials` becomes `poses` (a creature\n * has poses, not materials), and there is NO `motion` value — creature motion\n * variants flow through the dedicated `/v1/generate-creature-motion` endpoint\n * (worker-side a different BullMQ job type). `custom` is the free-form bucket;\n * callers must supply `attachToColumn` explicitly since the worker can't infer\n * the destination from the asset type.\n *\n * The shared `@nodaro/shared` package does NOT export a `CREATURE_ASSET_TYPES`\n * tuple (the route validates an inline Zod enum), so the SDK defines its own\n * single-source-of-truth tuple here.\n */\nexport const CREATURE_ASSET_TYPES = [\"angles\", \"poses\", \"variations\", \"custom\"] as const\nexport type CreatureAssetType = (typeof CREATURE_ASSET_TYPES)[number]\n\n/**\n * Reference-photo kind discriminator — the mood-board roles a user can attach\n * to a creature. Mirrors the `reference_photos.kind` field accepted by\n * `backend/src/routes/creatures.ts` (the route accepts open strings; this SDK\n * type narrows to the 6 canonical roles surfaced by the Studio). `other` is\n * the free-form bucket.\n */\nexport type CreatureReferencePhotoKind =\n | \"front\"\n | \"side\"\n | \"detail\"\n | \"context\"\n | \"moodBoard\"\n | \"other\"\n\nexport interface CreatureReferencePhoto {\n url: string\n kind: CreatureReferencePhotoKind\n}\n\n/**\n * A creature record returned by Nodaro's REST API. Mirrors the camelCase\n * shape produced by `backend/src/routes/creatures.ts::toCamel()`.\n *\n * Asset buckets (`angles`, `poses`, `variations`, `motionClips`) are\n * independent JSONB arrays keyed by a human-readable variant name (e.g.\n * `\"front\"`, `\"walking\"`, `\"scarred\"`). Each entry's `url` points at an\n * R2-hosted asset.\n *\n * Creature delta vs object:\n * - `species` — free-text creature type (e.g. `\"dragon\"`, `\"wolf\"`). This is\n * the subject of the establishing-shot prompt and the primary creature\n * differentiator (object has no equivalent).\n * - `poses` (where object has `materials`) — the pose-variant asset bucket.\n * - `category` is free-text (NOT object's fixed 10-value enum) — a creature\n * can be any animal/type.\n *\n * Identity-foundation fields:\n * - `referencePhotos` — caller-supplied mood-board refs (cap 20).\n * - `canonicalDescription` — ~80–120-word LLM-authored visual caption,\n * populated by `approveMainImage()` / `recaption()`. The wire still sends\n * `\"\"` on caption sub-failure, but `get()` normalizes `\"\"` → `null` so\n * consumers see the same `string | null` semantics as characters.\n * - `styleLock` — whether asset gens should anchor to the canonical style\n * captured at approval time. Defaults to `true` on new rows.\n */\nexport interface Creature {\n id: string\n userId: string\n nodeId: string\n projectId: string | null\n name: string\n description: string | null\n /** Free-text creature type/species (e.g. \"dragon\", \"wolf\") — the creature\n * delta vs object. `null` when unset. */\n species: string | null\n category: string | null\n style: string | null\n sourceImageUrl: string | null\n /** MODEL_CATALOG image-model id the main image was generated with (or `null`).\n * Set on create + editable via the update route. */\n imageProvider: string | null\n angles: Array<{ name: string; url: string }>\n poses: Array<{ name: string; url: string }>\n variations: Array<{ name: string; url: string }>\n motionClips: Array<{ name: string; url: string }>\n /** Named Creature Boards — dense reference sheets, one per variant/mood\n * (the `generate-image/creature-board` factory preset rendered from the\n * creature's images). A first-class bucket: community publish snapshots it\n * and clone hands the consumer their own copy to extend. Defaults to `[]`.\n * `type` marks an image-collage `\"identity\"` sheet vs a plain `\"looks\"`\n * board; `sourceImages` are the R2 URLs it was collaged from. Both optional\n * + backward-compatible (legacy boards have neither). */\n boards?: Array<{ name: string; url: string; type?: \"looks\" | \"identity\"; sourceImages?: string[] }> | null\n /** The creature's voice (the \"talking creature\" stack) — same shape and\n * flow as `Character[\"voice\"]`. `null` when no voice is selected. */\n voice?: CreatureVoice | null\n referencePhotos: CreatureReferencePhoto[]\n /** `null` when no caption is set (or the LLM caption sub-failed) — the wire\n * sends `\"\"`, normalized to `null` in `get()` to match character semantics. */\n canonicalDescription: string | null\n styleLock: boolean\n /** The user's chosen DEFAULT asset take per variant (Studio version history).\n * OPAQUE map: key `\"<bucket>:<variant>\"` (e.g. `\"angles:front\"`) → the chosen\n * asset URL (one already present in that bucket). Stored verbatim — keys are\n * NOT normalized; soft-capped server-side at 200 keys / 2048-char values\n * (overflow dropped silently). Defaults to `{}`. */\n selectedAssetByVariant?: Record<string, string> | null\n deletedAt: string | null\n createdAt: string\n updatedAt: string\n}\n\n/**\n * GET /v1/creatures/:id may append a `pendingJobs` bucket the studio uses to\n * rehydrate spinners after a reload. Optional on the SDK surface — it doesn't\n * appear on `list()` rows.\n */\nexport interface CreatureDetail extends Creature {\n pendingJobs?: Array<{\n jobId: string\n assetType: string\n name: string\n status: string\n }>\n}\n\n/**\n * Body for `client.creatures.create()`. Mirrors the INSERT branch of\n * `upsertCreatureBody` in `backend/src/routes/creatures.ts`. `name` + `nodeId`\n * are required on create.\n */\nexport interface CreateCreatureInput {\n nodeId: string\n name: string\n description?: string\n /** Free-text creature type/species (the creature delta vs object). */\n species?: string\n /** Free-text category (NOT object's fixed enum — a creature can be anything). */\n category?: string\n style?: string\n workflowId?: string\n projectId?: string\n sourceImageUrl?: string\n /** Persistent image-model id (a MODEL_CATALOG image model). Validated\n * server-side — unknown / non-image / \"\" is stored as `null`. */\n imageProvider?: string | null\n referencePhotos?: CreatureReferencePhoto[]\n canonicalDescription?: string\n styleLock?: boolean\n /** The user's chosen DEFAULT asset take per variant. OPAQUE\n * `\"<bucket>:<variant>\"` → chosen-URL map; a write REPLACES the whole map.\n * Keys stored verbatim; soft-capped server-side at 200 keys / 2048-char values. */\n selectedAssetByVariant?: Record<string, string>\n /** Initial voice selection (see `CreatureVoice`). Omit for a voiceless creature. */\n voice?: CreatureVoice | null\n}\n\n/**\n * Body for `client.creatures.update()`. Mirrors the UPDATE branch of\n * `upsertCreatureBody` in `backend/src/routes/creatures.ts`.\n *\n * Worker-owned asset buckets (`angles` / `poses` / `variations` /\n * `motionClips`) are deliberately omitted — the route drops them on UPDATE\n * so a Studio auto-save with a stale snapshot cannot clobber the worker's\n * atomic `append_creature_asset()` writes.\n *\n * `expectedUpdatedAt` is the optimistic-concurrency token: when present, the\n * UPDATE only succeeds if the row's `updated_at` still matches; on mismatch\n * the route returns 409 so the studio can re-fetch + merge.\n */\nexport interface UpdateCreatureInput {\n name?: string\n description?: string\n /** Free-text creature type/species (the creature delta vs object). */\n species?: string\n category?: string\n style?: string\n sourceImageUrl?: string\n /** Persistent image-model id (a MODEL_CATALOG image model). Validated\n * server-side — unknown / non-image / \"\" is stored as `null`. */\n imageProvider?: string | null\n referencePhotos?: CreatureReferencePhoto[]\n canonicalDescription?: string\n styleLock?: boolean\n /** The user's chosen DEFAULT asset take per variant. OPAQUE\n * `\"<bucket>:<variant>\"` → chosen-URL map; a write REPLACES the whole map\n * (omit to leave untouched). Keys stored verbatim; soft-capped server-side\n * at 200 keys / 2048-char values. */\n selectedAssetByVariant?: Record<string, string>\n /** Named Creature Boards (see `Creature.boards`) — whole-array replace,\n * USER-owned (unlike the worker-owned buckets it flows through UPDATE).\n * Server caps: 24 boards, 200-char names, 30 sourceImages per board. */\n boards?: Array<{ name: string; url: string; type?: \"looks\" | \"identity\"; sourceImages?: string[] }>\n /** Voice selection (see `CreatureVoice`) — whole-object replace; pass\n * `null` to clear the voice, omit to leave untouched. */\n voice?: CreatureVoice | null\n expectedUpdatedAt?: string\n}\n\nexport interface UpdateCreatureResult {\n id: string\n updatedAt: string\n}\n\n/**\n * Combined create + update body (parameter for both branches). Exported for\n * callers that want to drive a single `upsert` flow without picking between\n * `Create*` and `Update*`. Mirrors the `upsertCreatureBody` Zod schema in\n * `backend/src/routes/creatures.ts`. `nodeId` + `name` are required on INSERT;\n * `id` flips the route into UPDATE mode.\n */\nexport interface UpsertCreatureInput extends CreateCreatureInput {\n id?: string\n expectedUpdatedAt?: string\n}\n\nexport type UpsertCreatureResult = { id: string } | UpdateCreatureResult\n\nexport interface ListCreaturesParams {\n /** When true, return archived creatures instead of active ones. */\n archived?: boolean\n /** Optional project filter — server-scoped to the caller's user. */\n projectId?: string\n /**\n * Search words: only the creatures whose name or description contains\n * every word (split on spaces, the first 5), in any order, ignoring case.\n * Each word is matched as written (`%`, `_` and `*` are not wildcards;\n * punctuation is kept); blank means no search; up to 200 characters.\n * Combines with the other filters and with `cursor` paging.\n */\n q?: string\n /**\n * Max rows to return (cap 500). OPT-IN: omitted, the server returns the\n * full legacy listing with no `nextCursor`; supplied, the response is one\n * page plus `nextCursor` — keep passing it back until it is `null`.\n */\n limit?: number\n /** Opaque cursor from a prior page's `nextCursor` (fetches the next page). */\n cursor?: string\n}\n\n/**\n * Input for `client.creatures.generate()` — fires the\n * `POST /v1/generate-creature` route. Produces 1–10 candidate\n * main images; each lands as one `jobs` row in `pending` state and is then\n * enqueued for the worker.\n *\n * When `attachToCreatureId` is set AND `count === 1`, the worker writes the\n * resulting URL directly to `creatures.source_image_url` on completion —\n * caller doesn't need a separate `approveMainImage` call. Multi-candidate\n * batches MUST go through explicit approval so the user picks the winner.\n *\n * `seedPromptHint` flows the parameter-picker's prompt fragment through to the\n * worker so a catalog selection (e.g. \"armored frost dragon\") gets appended to\n * the generated prompt context.\n */\nexport interface GenerateCreatureInput extends GenerationSessionParams {\n name: string\n description?: string\n userPrompt?: string\n /** Free-text creature type/species (the creature delta vs object). */\n species?: string\n category?: string\n style?: \"realistic\" | \"anime\" | \"3d-pixar\" | \"illustration\"\n sourceImageUrl?: string\n provider?: string\n /** Number of candidate images to generate (1–10; server-validated). */\n count?: number\n /** Auto-attach the result to this creature row (single-candidate only). */\n attachToCreatureId?: string\n /** Parameter-picker prompt-fragment pass-through. */\n seedPromptHint?: string\n /** Optional name to set on the attached row alongside the main image. */\n attachName?: string\n /** Optimistic-concurrency token for the single-candidate auto-attach path. */\n expectedUpdatedAt?: string\n}\n\n/**\n * `generate()` response — `jobIds` is ALWAYS present (the harmonized contract,\n * matching characters). `jobId` is a deprecated back-compat alias populated only\n * on `count === 1`; prefer `jobIds`. (Will be removed on the next major.)\n */\nexport interface GenerateCreatureResult {\n jobIds: string[]\n /** @deprecated count===1 back-compat alias — use `jobIds`. */\n jobId?: string\n}\n\n/**\n * Input for `client.creatures.generateAsset()` — fires the\n * `POST /v1/generate-creature-asset` route. Produces a single\n * angles / poses / variations / custom variant.\n *\n * When all three studio-path fields are set (`attachToCreatureId` +\n * `attachToColumn` + `attachName`), the worker appends\n * `{ name: attachName, url: <result> }` to the named JSONB array column on\n * the user's creature row on completion. `attachToColumn` is REQUIRED for\n * `assetType === \"custom\"` — the worker can't infer the bucket from the\n * asset type.\n */\nexport interface GenerateCreatureAssetInput extends GenerationSessionParams {\n assetType: CreatureAssetType\n variant: string\n name: string\n description?: string\n userPrompt?: string\n category?: string\n style?: string\n sourceImageUrl?: string\n provider?: string\n attachToCreatureId?: string\n attachToColumn?: CreatureAttachColumn\n attachName?: string\n /** Parameter-picker prompt-fragment pass-through. */\n seedPromptHint?: string\n}\n\nexport interface GenerateCreatureAssetResult {\n jobId: string\n}\n\n/**\n * Input for `client.creatures.generateMotion()` — fires the\n * `POST /v1/generate-creature-motion` route. Produces a single motion clip\n * (idle, prowl, attack, etc.) animated FROM a static creature-shot image.\n *\n * Mirrors `client.objects.generateMotion()` — the creature motion route reuses\n * the entity-agnostic object motion helpers server-side. The route hardcodes\n * the attach column to `motion_clips` — callers supply `attachToCreatureId` +\n * `attachName` only.\n *\n * `sourceImageUrl` is REQUIRED — image-to-video needs a source frame and the\n * route has no fallback (the studio path supplies the canonical creature-shot\n * URL explicitly).\n *\n * Defaults vs location:\n * - `provider` defaults to `\"kling-turbo\"` (not location's `\"kling\"`)\n * - `aspectRatio` defaults to `\"1:1\"` server-side via\n * `resolveObjectAspectRatio({ assetType: \"motion\" })` — creatures use\n * centered reference framing, not cinematic establishing shots.\n *\n * When the studio path is set (`attachToCreatureId` + `attachName`), the\n * worker appends `{ name: attachName, url: <result> }` to the creature row's\n * `motion_clips` JSONB column on completion.\n */\nexport interface GenerateCreatureMotionInput extends GenerationSessionParams {\n motionPrompt: string\n sourceImageUrl: string\n provider?: string\n name: string\n /** Source clip URL — when set, worker routes to video-to-video refine. */\n refineFromVideoUrl?: string\n category?: string\n style?: \"realistic\" | \"anime\" | \"3d-pixar\" | \"illustration\"\n canonicalDescription?: string\n /** Parameter-picker prompt-fragment pass-through. */\n seedPromptHint?: string\n attachToCreatureId?: string\n attachName?: string\n /**\n * Optional aspect ratio override. Defaults to 1:1 server-side. One of the\n * 5-value `CreatureAspectRatio` union (1:1 / 3:4 / 16:9 / 9:16 / 4:3) — the\n * creature route reuses the object aspect enum.\n */\n aspectRatio?: ObjectAspectRatio\n /**\n * Optional clip duration in seconds. Validated server-side against the chosen\n * provider's allowed durations (e.g. kling 5/10, wan-i2v 5/10/15); omitted →\n * the model's own default (no behavior change). Mirrors generate-video's\n * per-model i2v duration lever.\n */\n duration?: number\n}\n\nexport interface GenerateCreatureMotionResult {\n jobId: string\n}\n\nexport interface ApproveCreatureMainImageResult {\n sourceImageUrl: string\n /**\n * LLM-authored caption. `null` when the LLM caption sub-failed — the wire\n * sends `\"\"`, normalized to `null` here so consumers see the same\n * `string | null` semantics as characters. The main image is still set; call\n * `recaption()` to retry.\n */\n canonicalDescription: string | null\n}\n\nexport interface RecaptionCreatureResult {\n canonicalDescription: string\n}\n\nexport class CreaturesResource {\n constructor(private client: NodaroClientCore) {}\n\n /**\n * List the caller's creatures. By default returns active creatures only;\n * pass `archived: true` to fetch soft-deleted rows for an \"archive\" view.\n * Optional `projectId` scopes the result to a single project; `q` keeps the\n * creatures whose name or description contains it.\n */\n list(params: ListCreaturesParams = {}): Promise<{ creatures: Creature[]; nextCursor?: string | null }> {\n const query: Record<string, string | undefined> = {}\n if (params.archived) query.archived = \"true\"\n if (params.projectId) query.projectId = params.projectId\n if (params.q) query.q = params.q\n if (params.limit !== undefined) query.limit = String(params.limit)\n if (params.cursor) query.cursor = params.cursor\n return this.client.request(\"GET\", \"/v1/creatures\", { query })\n }\n\n /**\n * Convenience wrapper for `list({ archived: true })`. Returns soft-deleted\n * rows so callers can drive a UI \"Archived\" tab without re-encoding the\n * query param.\n *\n * `archived` is omitted from the param type — it's always set to `true` here.\n */\n listArchived(params: Omit<ListCreaturesParams, \"archived\"> = {}): Promise<{ creatures: Creature[]; nextCursor?: string | null }> {\n return this.list({ ...params, archived: true })\n }\n\n /**\n * Fetch a single creature including in-flight asset job state. Soft-deleted\n * (archived) rows are NOT returned by id — the route enforces\n * `deleted_at IS NULL` so archived creatures 404 (uniform \"not_found\" — does\n * not leak the deleted vs non-existent distinction).\n */\n async get(id: string): Promise<CreatureDetail> {\n const res = await this.client.request<CreatureDetail>(\n \"GET\",\n `/v1/creatures/${encodeURIComponent(id)}`,\n )\n // Normalize the wire `\"\"` caption (DB null / LLM sub-failure) → null so\n // consumers see the same `string | null` semantics as characters. New\n // object — never mutate the response.\n return { ...res, canonicalDescription: res.canonicalDescription || null }\n }\n\n /**\n * Create a new creature. `name` + `nodeId` are required — the route 400s\n * otherwise. Returns the new row's id.\n *\n * Note: the underlying route is the same `POST /v1/creatures` upsert that\n * powers `update()`. This convenience wrapper enforces the INSERT-required\n * fields at the type level and never sends an `id`.\n */\n create(data: CreateCreatureInput): Promise<{ id: string }> {\n return this.client.request(\"POST\", \"/v1/creatures\", { body: data })\n }\n\n /**\n * Update a creature. Only the fields you pass are written — undefined keys\n * are NOT touched on the row. Worker-owned asset buckets are intentionally\n * not exposed on this surface (see `UpdateCreatureInput` for the rationale).\n *\n * Optimistic-concurrency: pass `expectedUpdatedAt` to require the row's\n * `updated_at` still matches; on mismatch the route returns 409\n * `concurrent_modification` carrying the fresh `updatedAt`. The SDK\n * surfaces that as a generic `NodaroError` with the same code.\n */\n update(id: string, data: UpdateCreatureInput): Promise<UpdateCreatureResult> {\n return this.client.request(\"POST\", \"/v1/creatures\", {\n body: { id, ...data },\n })\n }\n\n /**\n * Soft-delete (archive) a creature. The row is hidden from `list()` by\n * default but recoverable via `restore(id)` or visible under\n * `listArchived()`. Idempotent — repeating a delete on an already-archived\n * row is a no-op.\n */\n delete(id: string): Promise<{ success: true; archived: true }> {\n return this.client.request(\"DELETE\", `/v1/creatures/${encodeURIComponent(id)}`)\n }\n\n /**\n * Hard-delete (permanent) a creature — the row + every R2 asset it\n * references. Archived rows ONLY: active creatures return 400 `not_archived`.\n * Call `delete()` first to archive, then `permanentDelete()` to destroy.\n *\n * Mirrors the `app_runs` permanent-delete pattern (archive-first) so a\n * stray SDK / curl caller cannot bypass the studio's archive-first UI\n * flow.\n */\n permanentDelete(id: string): Promise<{ success: true; permanent: true }> {\n return this.client.request(\"DELETE\", `/v1/creatures/${encodeURIComponent(id)}`, {\n query: { permanent: \"true\" },\n })\n }\n\n /**\n * Un-archive a creature. If the original name now collides (case-\n * insensitive) with an active row, the server auto-suffixes \"(restored)\"\n * and returns the effective name.\n */\n restore(id: string): Promise<{ id: string; name: string }> {\n return this.client.request(\"POST\", `/v1/creatures/${encodeURIComponent(id)}/restore`)\n }\n\n /**\n * Fire `POST /v1/generate-creature` to produce one or more candidate main\n * images. With `count > 1`, all jobs are reserved up-front before any\n * is enqueued — mid-batch failures roll back atomically.\n *\n * When `attachToCreatureId` is set AND `count === 1`, the worker writes\n * the result directly to the row's `source_image_url`; otherwise you must\n * call `approveMainImage()` after picking a candidate.\n */\n async generate(data: GenerateCreatureInput): Promise<GenerateCreatureResult> {\n const res = await this.client.request<{ jobId?: string; jobIds?: string[] }>(\n \"POST\", \"/v1/generate-creature\", { body: data },\n )\n // Tolerate the legacy `{ jobId }`-only shape (older server): synthesize jobIds.\n const jobIds = res.jobIds ?? (res.jobId ? [res.jobId] : [])\n return res.jobId ? { jobIds, jobId: res.jobId } : { jobIds }\n }\n\n /**\n * Fire `POST /v1/generate-creature-asset` to produce a single variant.\n * When the studio path is set (`attachToCreatureId` + `attachToColumn` +\n * `attachName`), the worker appends `{ name: attachName, url: <result> }`\n * to the named JSONB array column on completion.\n *\n * Note: `attachToColumn` is REQUIRED for `assetType === \"custom\"` — the\n * worker can't infer the bucket from the asset type. For canonical asset\n * types (`angles` / `poses` / `variations`), the column is derived\n * automatically by the route.\n */\n generateAsset(\n data: GenerateCreatureAssetInput,\n ): Promise<GenerateCreatureAssetResult> {\n return this.client.request(\"POST\", \"/v1/generate-creature-asset\", { body: data })\n }\n\n /**\n * Fire `POST /v1/generate-creature-motion` to animate the creature's main\n * image into a motion clip. Image-to-video, single clip per call; the\n * attach column is hardcoded to `motion_clips` server-side (creatures have a\n * single motion bucket so the caller doesn't supply `attachToColumn`).\n * When the studio path is set (`attachToCreatureId` + `attachName`), the\n * worker appends `{ name: attachName, url: <result> }` to the row's\n * `motion_clips` column on completion.\n *\n * Defaults: `provider` → `\"kling-turbo\"`, `aspectRatio` → `\"1:1\"` (set\n * server-side via `resolveObjectAspectRatio({ assetType: \"motion\" })`).\n */\n generateMotion(\n data: GenerateCreatureMotionInput,\n ): Promise<GenerateCreatureMotionResult> {\n return this.client.request(\"POST\", \"/v1/generate-creature-motion\", { body: data })\n }\n\n /**\n * Approve a completed `generate-creature` job as the creature's main image.\n * Sets `source_image_url` and fires the LLM caption (Claude Sonnet vision)\n * inline. Returns the new main-image URL plus the caption.\n *\n * Caption-failure semantics: the route still sends `\"\"` on LLM sub-failure,\n * but the SDK normalizes `\"\"` → `null` here so `canonicalDescription` carries\n * the same `string | null` semantics as characters. The main image is still\n * set; call `recaption()` to retry.\n *\n * Optimistic-concurrency: pass `expectedUpdatedAt` to gate the update on\n * the row's current `updated_at`; on mismatch the route returns 409\n * `concurrent_modification` carrying the fresh token.\n */\n async approveMainImage(\n id: string,\n candidateJobId: string,\n expectedUpdatedAt?: string,\n ): Promise<ApproveCreatureMainImageResult> {\n const res = await this.client.request<{ sourceImageUrl: string; canonicalDescription: string | null }>(\n \"POST\",\n `/v1/creatures/${encodeURIComponent(id)}/approve-main-image`,\n { body: { candidateJobId, expectedUpdatedAt } },\n )\n // Normalize the wire `\"\"` (LLM sub-failure) → null; build a new object\n // rather than mutating the response.\n return { sourceImageUrl: res.sourceImageUrl, canonicalDescription: res.canonicalDescription || null }\n }\n\n /**\n * Re-fire the LLM caption against the creature's current main image. 502s\n * on LLM failure (unlike `approveMainImage` which preserves the side-effect\n * and returns \"\"); returns 400 `main_image_required` if no main image is\n * set yet.\n *\n * The route is a pure idempotent retry — it does NOT accept an\n * `expectedUpdatedAt` token (backend route is idempotent retry, not gated on\n * optimistic-concurrency).\n */\n recaption(id: string): Promise<RecaptionCreatureResult> {\n return this.client.request(\n \"POST\",\n `/v1/creatures/${encodeURIComponent(id)}/llm-caption`,\n )\n }\n}\n"]}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/resources/pipelines.ts
|
|
4
|
+
var PipelinesResource = class {
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
client;
|
|
9
|
+
/**
|
|
10
|
+
* Start a new pipeline (headless film generation) — the programmatic
|
|
11
|
+
* equivalent of the studio's "Create film". In Auto mode the engine
|
|
12
|
+
* self-advances to completion; poll {@link get} for status and
|
|
13
|
+
* {@link getTimeline} for the assembled output. In manual/guided mode, drive
|
|
14
|
+
* it with {@link pendingApprovals} + {@link approveStage} /
|
|
15
|
+
* {@link approveSubGate} / {@link acceptMatchCutBreak}.
|
|
16
|
+
*
|
|
17
|
+
* Requires `pipelines:execute` scope. Returns the new pipeline id.
|
|
18
|
+
*/
|
|
19
|
+
create(input) {
|
|
20
|
+
return this.client.request("POST", "/v1/pipelines", { body: input });
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Fetch current pipeline state: `status`, `current_stage`, credit counters,
|
|
24
|
+
* `mode`, and `failure_reason` (set when `status='failed'`). Poll this to
|
|
25
|
+
* track a headless Auto run to completion. Requires `pipelines:read`.
|
|
26
|
+
*/
|
|
27
|
+
get(id) {
|
|
28
|
+
return this.client.request(
|
|
29
|
+
"GET",
|
|
30
|
+
`/v1/pipelines/${encodeURIComponent(id)}`
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
/** List the caller's pipelines (most recent first). Requires `pipelines:read`. */
|
|
34
|
+
list() {
|
|
35
|
+
return this.client.request("GET", "/v1/pipelines");
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Cancel a running pipeline. Unspent reserved credits refund. Idempotent on
|
|
39
|
+
* an already-terminal pipeline. Requires `pipelines:execute`.
|
|
40
|
+
*/
|
|
41
|
+
cancel(id) {
|
|
42
|
+
return this.client.request(
|
|
43
|
+
"POST",
|
|
44
|
+
`/v1/pipelines/${encodeURIComponent(id)}/cancel`,
|
|
45
|
+
{ body: {} }
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Stages currently `awaiting_approval`. Empty in a clean Auto run (the engine
|
|
50
|
+
* self-approves); populated in manual/guided mode at each gate. Requires
|
|
51
|
+
* `pipelines:read`.
|
|
52
|
+
*/
|
|
53
|
+
pendingApprovals(id) {
|
|
54
|
+
return this.client.request(
|
|
55
|
+
"GET",
|
|
56
|
+
`/v1/pipelines/${encodeURIComponent(id)}/pending-approvals`
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Approve a stage so the engine advances to the next one. An optional `edits`
|
|
61
|
+
* JSON-Patch is applied to the stage output before approval. Requires
|
|
62
|
+
* `pipelines:approve`.
|
|
63
|
+
*/
|
|
64
|
+
approveStage(id, stage, edits) {
|
|
65
|
+
return this.client.request(
|
|
66
|
+
"POST",
|
|
67
|
+
`/v1/pipelines/${encodeURIComponent(id)}/stages/${encodeURIComponent(stage)}/approve`,
|
|
68
|
+
{ body: edits ? { edits } : {} }
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Reject a stage with feedback; the engine re-runs it incorporating the note.
|
|
73
|
+
* Requires `pipelines:approve`.
|
|
74
|
+
*/
|
|
75
|
+
rejectStage(id, stage, feedback) {
|
|
76
|
+
return this.client.request(
|
|
77
|
+
"POST",
|
|
78
|
+
`/v1/pipelines/${encodeURIComponent(id)}/stages/${encodeURIComponent(stage)}/reject`,
|
|
79
|
+
{ body: { feedback } }
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Approve a Stage 7 (`animate_audio_edit`) sub-gate — `silent_cut_preview`
|
|
84
|
+
* or `dialogue_recheck` — so the orchestrator resumes from the next
|
|
85
|
+
* sub-step. Stage 6's `match_cut_break_pending` is not approved here: accept
|
|
86
|
+
* each break with {@link acceptMatchCutBreak}. Requires `pipelines:approve`.
|
|
87
|
+
*/
|
|
88
|
+
approveSubGate(id, gate) {
|
|
89
|
+
return this.client.request(
|
|
90
|
+
"POST",
|
|
91
|
+
`/v1/pipelines/${encodeURIComponent(id)}/sub-gates/${encodeURIComponent(gate)}/approve`,
|
|
92
|
+
{ body: {} }
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Accept one match-cut break Stage 6 (`scene_images`) flagged. While any
|
|
97
|
+
* break is pending, the stage pauses at the `match_cut_break_pending`
|
|
98
|
+
* sub-gate, and its output lists the pending shot ids; accepting the last
|
|
99
|
+
* one resumes the stage. `sceneId` is the scene entity that holds the shot.
|
|
100
|
+
* Requires `pipelines:approve`.
|
|
101
|
+
*/
|
|
102
|
+
acceptMatchCutBreak(id, sceneId, shotId) {
|
|
103
|
+
return this.client.request(
|
|
104
|
+
"POST",
|
|
105
|
+
`/v1/pipelines/${encodeURIComponent(id)}/entities/${encodeURIComponent(sceneId)}/helpers/accept_match_cut_break`,
|
|
106
|
+
{ body: { shotId } }
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Read a single stage's `status`, `output`, and `critic_feedback`. Useful for
|
|
111
|
+
* inspecting the script/plan before approving. Requires `pipelines:read`.
|
|
112
|
+
*/
|
|
113
|
+
getStage(id, stage) {
|
|
114
|
+
return this.client.request(
|
|
115
|
+
"GET",
|
|
116
|
+
`/v1/pipelines/${encodeURIComponent(id)}/stages/${encodeURIComponent(stage)}`
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Assembled timeline — ordered scene composites + durations + audio URLs +
|
|
121
|
+
* live animate progress. The output a headless caller renders or hands to a
|
|
122
|
+
* downstream editor. Requires `pipelines:read`.
|
|
123
|
+
*/
|
|
124
|
+
getTimeline(id) {
|
|
125
|
+
return this.client.request(
|
|
126
|
+
"GET",
|
|
127
|
+
`/v1/pipelines/${encodeURIComponent(id)}/timeline`
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Branch a completed pipeline into a new pipeline that re-runs from the
|
|
132
|
+
* given stage. The original pipeline's upstream stages and entities are
|
|
133
|
+
* cloned into the new pipeline; downstream stages are created by the
|
|
134
|
+
* orchestrator as it advances.
|
|
135
|
+
*
|
|
136
|
+
* Requires `pipelines:execute` scope.
|
|
137
|
+
* The source pipeline must have `status='completed'`.
|
|
138
|
+
*
|
|
139
|
+
* @returns 201 with `{ pipelineId, clonedStages, clonedEntities }`.
|
|
140
|
+
*/
|
|
141
|
+
branch(id, input) {
|
|
142
|
+
return this.client.request(
|
|
143
|
+
"POST",
|
|
144
|
+
`/v1/pipelines/${encodeURIComponent(id)}/branch`,
|
|
145
|
+
{ body: input }
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Send a chat message to the Showrunner Refinement Director (Guided Mode).
|
|
150
|
+
* Persists user + assistant turns; returns the assistant's reply and an
|
|
151
|
+
* optional `proposed_change` the user can `applyChatProposal` to commit.
|
|
152
|
+
*
|
|
153
|
+
* Requires `pipelines:approve` scope. The pipeline must have
|
|
154
|
+
* `mode='guided'` and the stage must be `awaiting_approval`.
|
|
155
|
+
*
|
|
156
|
+
* Only the Script stage ships a wired specialist in Phase 1D.2b — the other
|
|
157
|
+
* chat-enabled stages (`shot_list`, `post_merge`) return 501 until 1D.2d.
|
|
158
|
+
*/
|
|
159
|
+
chatStage(pipelineId, stage, message) {
|
|
160
|
+
return this.client.request(
|
|
161
|
+
"POST",
|
|
162
|
+
`/v1/pipelines/${encodeURIComponent(pipelineId)}/stages/${encodeURIComponent(stage)}/chat`,
|
|
163
|
+
{ body: { message } }
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Accept a proposed change from a prior assistant turn. Routes through
|
|
168
|
+
* `applyStageEdit` (validates JSON Patch + per-stage schema +
|
|
169
|
+
* reference-integrity, inserts a new pipeline_stage_attempts row, CAS-flips
|
|
170
|
+
* the stage to approved, emits `chat:proposal_applied` SSE).
|
|
171
|
+
*
|
|
172
|
+
* Requires `pipelines:approve` scope.
|
|
173
|
+
*
|
|
174
|
+
* Returns `{ applied: true, attemptId, newOutput }` on success, or
|
|
175
|
+
* `{ applied: false, error }` on recoverable failures (the backend already
|
|
176
|
+
* inserted a follow-up assistant turn with a hint). Hard failures
|
|
177
|
+
* (`patch_invalid`, `stage_not_awaiting`) throw via the standard error
|
|
178
|
+
* pipeline (HTTP 409).
|
|
179
|
+
*/
|
|
180
|
+
applyChatProposal(pipelineId, stage, turnId) {
|
|
181
|
+
return this.client.request(
|
|
182
|
+
"POST",
|
|
183
|
+
`/v1/pipelines/${encodeURIComponent(pipelineId)}/stages/${encodeURIComponent(stage)}/chat/turns/${encodeURIComponent(turnId)}/apply`,
|
|
184
|
+
{ body: {} }
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Fetch the chat history for a stage. Returns an empty array when no turns
|
|
189
|
+
* exist yet (e.g., stage has not been started or the user hasn't sent any
|
|
190
|
+
* messages). Used by the frontend chat panel on initial mount; subsequent
|
|
191
|
+
* updates arrive via SSE (`chat:turn` events).
|
|
192
|
+
*
|
|
193
|
+
* Requires `pipelines:read` scope.
|
|
194
|
+
*/
|
|
195
|
+
getStageChat(pipelineId, stage) {
|
|
196
|
+
return this.client.request(
|
|
197
|
+
"GET",
|
|
198
|
+
`/v1/pipelines/${encodeURIComponent(pipelineId)}/stages/${encodeURIComponent(stage)}/chat`
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
exports.PipelinesResource = PipelinesResource;
|
|
204
|
+
//# sourceMappingURL=chunk-COCKKMNP.cjs.map
|
|
205
|
+
//# sourceMappingURL=chunk-COCKKMNP.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resources/pipelines.ts"],"names":[],"mappings":"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","file":"chunk-COCKKMNP.cjs","sourcesContent":["import type { NodaroClientCore } from \"../core.js\"\nimport type { PipelineInput, PipelineStageName, PipelineStatus, PipelineMode, SubGateName, AnimateSubGate, ChatEnabledStage, ProposedChange } from \"@nodaro/shared/pipeline\"\n\nexport type {\n PipelineInput,\n PipelineStageName,\n PipelineStatus,\n PipelineMode,\n SubGateName,\n AnimateSubGate,\n ChatEnabledStage,\n ProposedChange,\n}\n\n/**\n * Owner-scoped pipeline record returned by `get` / `list` (the server strips\n * `user_id`). Mirrors the public field set of `GET /v1/pipelines/:id`.\n */\nexport interface PipelineRecord {\n id: string\n status: PipelineStatus\n current_stage: string | null\n spent_credits: number\n reserved_credits: number\n upfront_credit_estimate: number\n branched_from_pipeline_id: string | null\n branched_from_stage: string | null\n mode: PipelineMode | null\n failure_reason: string | null\n current_progress_message: string | null\n}\n\n/** One stage currently awaiting approval (from `pendingApprovals`). */\nexport interface PendingApproval {\n stage_name: PipelineStageName\n /** Stage output snapshot; shape varies by stage. */\n output: unknown\n}\n\n/**\n * Assembled timeline (`GET /v1/pipelines/:id/timeline`) — ordered scene\n * composites + their durations, plus optional music/narration and live\n * per-shot animate progress. The data the studio turns into a render.\n */\nexport interface PipelineTimeline {\n fps: number\n width: number\n height: number\n scenes: Array<{ compositeUrl: string; durationSeconds: number }>\n musicUrl?: string\n narrationUrl?: string\n animateProgress?: {\n totalShots: number\n shotsDone: number\n percent: number\n }\n}\n\nexport interface BranchPipelineInput {\n /** The stage to re-run from. Upstream stages are cloned as approved. */\n fromStage: PipelineStageName\n}\n\nexport interface BranchPipelineResult {\n /** The id of the newly created pipeline. */\n pipelineId: string\n /** Stage names that were cloned as 'approved' (stages before `fromStage`). */\n clonedStages: string[]\n /** Number of entity rows cloned into the new pipeline. */\n clonedEntities: number\n}\n\n/**\n * A single chat turn returned by `getStageChat`. Mirrors the\n * `pipeline_chat_turns` row shape selected by the GET handler.\n *\n * `@nodaro/shared` does not yet export a Zod schema for the full row; it only\n * exports `ChatTurnResponseSchema` (the LLM response shape) and the\n * `ProposedChange` discriminated union. Define the wire-format row locally so\n * callers get end-to-end typing today without re-shaping the backend payload.\n */\nexport interface ChatTurn {\n id: string\n turn_n: number\n role: \"user\" | \"assistant\"\n content: string\n proposed_change: ProposedChange | null\n llm_call_id: string | null\n applied_to_attempt_id: string | null\n created_at: string\n}\n\n/**\n * Result of `chatStage` — the assistant turn that was just persisted. The\n * route always echoes the assistant message back so callers can render the\n * reply without a follow-up GET (SSE is the secondary delivery channel).\n */\nexport interface ChatStageResult {\n turnId: string\n role: \"assistant\"\n content: string\n proposed_change: ProposedChange | null\n}\n\n/**\n * Result of `applyChatProposal`. Discriminated on `applied`:\n *\n * - `applied: true` — `applyStageEdit` validated + persisted a new attempt and\n * flipped the stage to approved. `newOutput` is the post-patch artifact.\n * - `applied: false` — recoverable failure (schema_invalid or\n * reference_integrity_failed); the backend has already inserted a follow-up\n * assistant turn with a human-readable hint so the user can iterate via\n * chat. Hard failures throw via the client's error pipeline (409).\n */\nexport type ApplyChatProposalResult =\n | { applied: true; attemptId: string; newOutput: unknown }\n | { applied: false; error: { code: string; detail?: unknown } }\n\nexport class PipelinesResource {\n constructor(private client: NodaroClientCore) {}\n\n /**\n * Start a new pipeline (headless film generation) — the programmatic\n * equivalent of the studio's \"Create film\". In Auto mode the engine\n * self-advances to completion; poll {@link get} for status and\n * {@link getTimeline} for the assembled output. In manual/guided mode, drive\n * it with {@link pendingApprovals} + {@link approveStage} /\n * {@link approveSubGate} / {@link acceptMatchCutBreak}.\n *\n * Requires `pipelines:execute` scope. Returns the new pipeline id.\n */\n create(input: PipelineInput): Promise<{ id: string }> {\n return this.client.request(\"POST\", \"/v1/pipelines\", { body: input })\n }\n\n /**\n * Fetch current pipeline state: `status`, `current_stage`, credit counters,\n * `mode`, and `failure_reason` (set when `status='failed'`). Poll this to\n * track a headless Auto run to completion. Requires `pipelines:read`.\n */\n get(id: string): Promise<PipelineRecord> {\n return this.client.request(\n \"GET\",\n `/v1/pipelines/${encodeURIComponent(id)}`,\n )\n }\n\n /** List the caller's pipelines (most recent first). Requires `pipelines:read`. */\n list(): Promise<PipelineRecord[]> {\n return this.client.request(\"GET\", \"/v1/pipelines\")\n }\n\n /**\n * Cancel a running pipeline. Unspent reserved credits refund. Idempotent on\n * an already-terminal pipeline. Requires `pipelines:execute`.\n */\n cancel(id: string): Promise<{ ok: true }> {\n return this.client.request(\n \"POST\",\n `/v1/pipelines/${encodeURIComponent(id)}/cancel`,\n { body: {} },\n )\n }\n\n /**\n * Stages currently `awaiting_approval`. Empty in a clean Auto run (the engine\n * self-approves); populated in manual/guided mode at each gate. Requires\n * `pipelines:read`.\n */\n pendingApprovals(id: string): Promise<PendingApproval[]> {\n return this.client.request(\n \"GET\",\n `/v1/pipelines/${encodeURIComponent(id)}/pending-approvals`,\n )\n }\n\n /**\n * Approve a stage so the engine advances to the next one. An optional `edits`\n * JSON-Patch is applied to the stage output before approval. Requires\n * `pipelines:approve`.\n */\n approveStage(\n id: string,\n stage: PipelineStageName,\n edits?: unknown,\n ): Promise<{ ok: true }> {\n return this.client.request(\n \"POST\",\n `/v1/pipelines/${encodeURIComponent(id)}/stages/${encodeURIComponent(stage)}/approve`,\n { body: edits ? { edits } : {} },\n )\n }\n\n /**\n * Reject a stage with feedback; the engine re-runs it incorporating the note.\n * Requires `pipelines:approve`.\n */\n rejectStage(\n id: string,\n stage: PipelineStageName,\n feedback: string,\n ): Promise<{ ok: true }> {\n return this.client.request(\n \"POST\",\n `/v1/pipelines/${encodeURIComponent(id)}/stages/${encodeURIComponent(stage)}/reject`,\n { body: { feedback } },\n )\n }\n\n /**\n * Approve a Stage 7 (`animate_audio_edit`) sub-gate — `silent_cut_preview`\n * or `dialogue_recheck` — so the orchestrator resumes from the next\n * sub-step. Stage 6's `match_cut_break_pending` is not approved here: accept\n * each break with {@link acceptMatchCutBreak}. Requires `pipelines:approve`.\n */\n approveSubGate(\n id: string,\n gate: AnimateSubGate,\n ): Promise<{ ok: true; gate: AnimateSubGate; resumed_at: string }> {\n return this.client.request(\n \"POST\",\n `/v1/pipelines/${encodeURIComponent(id)}/sub-gates/${encodeURIComponent(gate)}/approve`,\n { body: {} },\n )\n }\n\n /**\n * Accept one match-cut break Stage 6 (`scene_images`) flagged. While any\n * break is pending, the stage pauses at the `match_cut_break_pending`\n * sub-gate, and its output lists the pending shot ids; accepting the last\n * one resumes the stage. `sceneId` is the scene entity that holds the shot.\n * Requires `pipelines:approve`.\n */\n acceptMatchCutBreak(\n id: string,\n sceneId: string,\n shotId: string,\n ): Promise<{ ok: true; pendingRemaining: number }> {\n return this.client.request(\n \"POST\",\n `/v1/pipelines/${encodeURIComponent(id)}/entities/${encodeURIComponent(sceneId)}/helpers/accept_match_cut_break`,\n { body: { shotId } },\n )\n }\n\n /**\n * Read a single stage's `status`, `output`, and `critic_feedback`. Useful for\n * inspecting the script/plan before approving. Requires `pipelines:read`.\n */\n getStage(\n id: string,\n stage: PipelineStageName,\n ): Promise<{ status: string; output: unknown; critic_feedback: unknown }> {\n return this.client.request(\n \"GET\",\n `/v1/pipelines/${encodeURIComponent(id)}/stages/${encodeURIComponent(stage)}`,\n )\n }\n\n /**\n * Assembled timeline — ordered scene composites + durations + audio URLs +\n * live animate progress. The output a headless caller renders or hands to a\n * downstream editor. Requires `pipelines:read`.\n */\n getTimeline(id: string): Promise<PipelineTimeline> {\n return this.client.request(\n \"GET\",\n `/v1/pipelines/${encodeURIComponent(id)}/timeline`,\n )\n }\n\n /**\n * Branch a completed pipeline into a new pipeline that re-runs from the\n * given stage. The original pipeline's upstream stages and entities are\n * cloned into the new pipeline; downstream stages are created by the\n * orchestrator as it advances.\n *\n * Requires `pipelines:execute` scope.\n * The source pipeline must have `status='completed'`.\n *\n * @returns 201 with `{ pipelineId, clonedStages, clonedEntities }`.\n */\n branch(id: string, input: BranchPipelineInput): Promise<BranchPipelineResult> {\n return this.client.request(\n \"POST\",\n `/v1/pipelines/${encodeURIComponent(id)}/branch`,\n { body: input },\n )\n }\n\n /**\n * Send a chat message to the Showrunner Refinement Director (Guided Mode).\n * Persists user + assistant turns; returns the assistant's reply and an\n * optional `proposed_change` the user can `applyChatProposal` to commit.\n *\n * Requires `pipelines:approve` scope. The pipeline must have\n * `mode='guided'` and the stage must be `awaiting_approval`.\n *\n * Only the Script stage ships a wired specialist in Phase 1D.2b — the other\n * chat-enabled stages (`shot_list`, `post_merge`) return 501 until 1D.2d.\n */\n chatStage(\n pipelineId: string,\n stage: ChatEnabledStage,\n message: string,\n ): Promise<ChatStageResult> {\n return this.client.request(\n \"POST\",\n `/v1/pipelines/${encodeURIComponent(pipelineId)}/stages/${encodeURIComponent(stage)}/chat`,\n { body: { message } },\n )\n }\n\n /**\n * Accept a proposed change from a prior assistant turn. Routes through\n * `applyStageEdit` (validates JSON Patch + per-stage schema +\n * reference-integrity, inserts a new pipeline_stage_attempts row, CAS-flips\n * the stage to approved, emits `chat:proposal_applied` SSE).\n *\n * Requires `pipelines:approve` scope.\n *\n * Returns `{ applied: true, attemptId, newOutput }` on success, or\n * `{ applied: false, error }` on recoverable failures (the backend already\n * inserted a follow-up assistant turn with a hint). Hard failures\n * (`patch_invalid`, `stage_not_awaiting`) throw via the standard error\n * pipeline (HTTP 409).\n */\n applyChatProposal(\n pipelineId: string,\n stage: ChatEnabledStage,\n turnId: string,\n ): Promise<ApplyChatProposalResult> {\n return this.client.request(\n \"POST\",\n `/v1/pipelines/${encodeURIComponent(pipelineId)}/stages/${encodeURIComponent(stage)}/chat/turns/${encodeURIComponent(turnId)}/apply`,\n { body: {} },\n )\n }\n\n /**\n * Fetch the chat history for a stage. Returns an empty array when no turns\n * exist yet (e.g., stage has not been started or the user hasn't sent any\n * messages). Used by the frontend chat panel on initial mount; subsequent\n * updates arrive via SSE (`chat:turn` events).\n *\n * Requires `pipelines:read` scope.\n */\n getStageChat(\n pipelineId: string,\n stage: ChatEnabledStage,\n ): Promise<{ turns: ChatTurn[] }> {\n return this.client.request(\n \"GET\",\n `/v1/pipelines/${encodeURIComponent(pipelineId)}/stages/${encodeURIComponent(stage)}/chat`,\n )\n }\n}\n"]}
|