@byteplus/amk-editor-assistant 1.0.1 → 1.0.2
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 +66 -384
- package/dist/chunks/{DZTsnYdF.js → 0ao3sINM.js} +1 -1
- package/dist/chunks/{D9J5dntL.js → 1P8Gcfln.js} +67 -67
- package/dist/chunks/{BuIBFD8F.js → 1pWz-bNC.js} +1 -1
- package/dist/chunks/{B5rbhYmw.js → 30cxSdKf.js} +1 -1
- package/dist/chunks/{DYkaNET5.js → 34NiWDHc.js} +2 -2
- package/dist/chunks/{D_b068xO.js → 365M1bob.js} +1 -1
- package/dist/chunks/{CZ9YdBXM.js → 3xHddIai.js} +1 -1
- package/dist/chunks/{DAQKCkPb.js → 4or8zKtL.js} +1 -1
- package/dist/chunks/{Rs_0WnDi.js → 6TzQQC06.js} +1 -1
- package/dist/chunks/{BZLlbNFM.js → 6fQ8S0F7.js} +1 -1
- package/dist/chunks/{DSdniTIg.js → 7bj37uzn.js} +1 -1
- package/dist/chunks/{fC89ARAI.js → 7xm-hvXB.js} +1 -1
- package/dist/chunks/{DlgwTrED.js → 85haj7GT.js} +1 -1
- package/dist/chunks/{BmB9CpWm.js → 8HiwoEJt.js} +1 -1
- package/dist/chunks/{1tE-8uvB.js → ADIvhl4T.js} +1 -1
- package/dist/chunks/{BWTn6I6-.js → B-uOKxGl.js} +1 -1
- package/dist/chunks/{D5r29357.js → B1a6hJnd.js} +1 -1
- package/dist/chunks/{DTbZJH_g.js → B1dTEuHj.js} +1 -1
- package/dist/chunks/{DClDTDOg.js → B3J91seK.js} +1 -1
- package/dist/chunks/{Did_A4tQ.js → B3kzgvDh.js} +1 -1
- package/dist/chunks/{B0gfydaT.js → B4D6PrrA.js} +1 -1
- package/dist/chunks/{kSDIMdrW.js → B4Kmr5lz.js} +1 -1
- package/dist/chunks/{BANRrPHo.js → B5i3NjCW.js} +1 -1
- package/dist/chunks/{Dpj_TenC.js → B6KcuYqW.js} +1 -1
- package/dist/chunks/{Ow1B6kPa.js → B6uzJUR4.js} +1 -1
- package/dist/chunks/{BNU2Gd-2.js → B79Euled.js} +1 -1
- package/dist/chunks/{Cw3OIO7f.js → B7LlgL91.js} +1 -1
- package/dist/chunks/{Cv6y5hCC.js → B7_Hd6ya.js} +1 -1
- package/dist/chunks/{BduDU9v-.js → B84DaDk2.js} +3 -3
- package/dist/chunks/B8l-MaI0.js +4 -0
- package/dist/chunks/{CeAZjuzS.js → BAQZvhdE.js} +1 -1
- package/dist/chunks/{CrGxx5pZ.js → BAgUCFb8.js} +1 -1
- package/dist/chunks/{BMdOcfZY.js → BBdtyPq1.js} +2 -2
- package/dist/chunks/{BZN-Qtc-.js → BCDh8gXm.js} +1 -1
- package/dist/chunks/{DBQcbE1B.js → BCGgtx6g.js} +1 -1
- package/dist/chunks/{CyDJnrgH.js → BEeDVacw.js} +1 -1
- package/dist/chunks/{D0soKNVA.js → BElGXypR.js} +1 -1
- package/dist/chunks/{BC3QhIqu.js → BFDltT68.js} +1 -1
- package/dist/chunks/{DFqfa4wi.js → BFi4jNCy.js} +1 -1
- package/dist/chunks/{BQ8f1Irz.js → BHWsk_9Y.js} +1 -1
- package/dist/chunks/{XW8xvI-l.js → BHpGfjmt.js} +1 -1
- package/dist/chunks/{CbIdbu1q.js → BIepx18b.js} +1 -1
- package/dist/chunks/{CeiO8JDd.js → BJGo2zHc.js} +1 -1
- package/dist/chunks/{CJPT5G8K.js → BJzCJofu.js} +1 -1
- package/dist/chunks/{Blc2zNKG.js → BKWEn27d.js} +1 -1
- package/dist/chunks/{DtXl7wUz.js → BLlrkb5U.js} +1 -1
- package/dist/chunks/{HZBZOBPJ.js → BLub4nvK.js} +1 -1
- package/dist/chunks/{D9TZIvZZ.js → BLz2zs6T.js} +7 -7
- package/dist/chunks/{Dfhj2Q-l.js → BM1krxiA.js} +1 -1
- package/dist/chunks/{Bg1m6N8S.js → BOvnv-q9.js} +1 -1
- package/dist/chunks/{DspEUWMn.js → BPYNgQNo.js} +1 -1
- package/dist/chunks/{BhR4YUyv.js → BQwkY-Y6.js} +1 -1
- package/dist/chunks/{cypJj-nM.js → BS-icwFa.js} +1 -1
- package/dist/chunks/{B9g8jV-A.js → BSGgY69l.js} +1 -1
- package/dist/chunks/{hcDZUAbD.js → BSecqvoh.js} +1 -1
- package/dist/chunks/{CxOKcb75.js → BUgzFZSR.js} +1 -1
- package/dist/chunks/{CZ54hWCQ.js → BVEDuTBn.js} +1 -1
- package/dist/chunks/{CEmwxoQ0.js → BVhGmuUo.js} +1 -1
- package/dist/chunks/{wNpkUxrT.js → BWtFB071.js} +1 -1
- package/dist/chunks/{MGXFxxVC.js → BXKaYSo5.js} +1 -1
- package/dist/chunks/{D_x6ZlL0.js → BXTVlN8Y.js} +1 -1
- package/dist/chunks/{BRsHuPkC.js → BXv1OZm3.js} +1 -1
- package/dist/chunks/{C3ZiaZUJ.js → BY9QTqre.js} +1 -1
- package/dist/chunks/{CP6hjcUc.js → B_xKHGz9.js} +1 -1
- package/dist/chunks/{DwMd7j1O.js → BaZxnQJp.js} +1 -1
- package/dist/chunks/{kGt6l-AV.js → BamMTBnI.js} +1 -1
- package/dist/chunks/{Bn6OmDKG.js → BcPj0jXe.js} +1 -1
- package/dist/chunks/{B3QAvMgv.js → BimzUeUj.js} +1 -1
- package/dist/chunks/{bXiNzDLt.js → BjbCJXQO.js} +1 -1
- package/dist/chunks/{CX4-jU-K.js → BjtqVeEr.js} +1 -1
- package/dist/chunks/{DNCZJY6t.js → Bkn7TT3W.js} +45 -45
- package/dist/chunks/{RhDw5djS.js → BlKBHlwI.js} +1 -1
- package/dist/chunks/{jlvtsOD1.js → BmdPjIro.js} +1 -1
- package/dist/chunks/{CO6DBErj.js → Bn5Tjbwr.js} +1 -1
- package/dist/chunks/{CnAUXm0m.js → BoT9v95Y.js} +1 -1
- package/dist/chunks/{B1RHLrA7.js → BoXhyywy.js} +1 -1
- package/dist/chunks/{DBLTP0yE.js → BpPXywmu.js} +1 -1
- package/dist/chunks/{C5phrbqJ.js → BqqO9Muq.js} +2 -2
- package/dist/chunks/{X5pqtX7T.js → BqyrWDNX.js} +1 -1
- package/dist/chunks/{BBGFACZZ.js → BuoLxi4D.js} +1 -1
- package/dist/chunks/{C-atAQdc.js → Bv4Q8ijr.js} +1 -1
- package/dist/chunks/{RAU6x2tk.js → Bx9Ol7bq.js} +1 -1
- package/dist/chunks/{DVVy7jdm.js → BxDgPUuY.js} +3 -3
- package/dist/chunks/{i9HbQ2VL.js → ByxpDAsO.js} +1 -1
- package/dist/chunks/{Bt4IGKAv.js → BzUI0Ir5.js} +1 -1
- package/dist/chunks/{DDrCe7IZ.js → BzgLZ0dx.js} +1 -1
- package/dist/chunks/C-h-92RT.js +6 -0
- package/dist/chunks/{CG35s-nJ.js → C-pd8K3_.js} +1 -1
- package/dist/chunks/{C5lqRnGr.js → C1Bs5rSH.js} +1 -1
- package/dist/chunks/{DlLuycrj.js → C1NWUZRE.js} +1 -1
- package/dist/chunks/{BFQDJSA4.js → C1z2bICu.js} +1 -1
- package/dist/chunks/{HRtLKaWF.js → C3oGeGQp.js} +1 -1
- package/dist/chunks/{C4HXfGuc.js → C4SoSt5D.js} +1 -1
- package/dist/chunks/{BHmRZHq-.js → C4c4eA7g.js} +1 -1
- package/dist/chunks/{teQCsHel.js → C50vyjY5.js} +1 -1
- package/dist/chunks/{BZv8tpo9.js → C57QoVYf.js} +3 -3
- package/dist/chunks/{ZKimBplC.js → C5V_S1p4.js} +1 -1
- package/dist/chunks/{DfpcUVy7.js → C63QEeSJ.js} +1 -1
- package/dist/chunks/{BJPj327o.js → C6HXgQbn.js} +1 -1
- package/dist/chunks/{BoVVoXsL.js → C6Ne3fw6.js} +1 -1
- package/dist/chunks/{D2XZuqSe.js → C6XGgysf.js} +3 -3
- package/dist/chunks/{BxF7HZD9.js → C7pOP--t.js} +1 -1
- package/dist/chunks/{CIdDUSlv.js → C7wwyHPc.js} +2 -2
- package/dist/chunks/{DM-7KVHr.js → C8d5Kpm0.js} +1 -1
- package/dist/chunks/{CGutgUjM.js → C8jlXxPy.js} +1 -1
- package/dist/chunks/{CpsJqnNs.js → C9X016Sl.js} +3 -3
- package/dist/chunks/{DmFkFiTW.js → CAHm18QC.js} +4 -4
- package/dist/chunks/{BwGRWoZy.js → CAzFKd1O.js} +1 -1
- package/dist/chunks/{DRDhh-IX.js → CBF8Uz7j.js} +1 -1
- package/dist/chunks/{CnAN9lQj.js → CBFonT6d.js} +1 -1
- package/dist/chunks/{BddjSkwv.js → CC4wnx-1.js} +1 -1
- package/dist/chunks/{CBF8f8tt.js → CC6vn5Wz.js} +3 -3
- package/dist/chunks/{CeN_o9jo.js → CDV2KPtD.js} +1 -1
- package/dist/chunks/{Cdh7i8Pr.js → CDZQ3Sr_.js} +1 -1
- package/dist/chunks/{GJjuEO5Q.js → CDb_hiB1.js} +1 -1
- package/dist/chunks/{Be0nPNEN.js → CEN4boKD.js} +1 -1
- package/dist/chunks/{DbX8eAHW.js → CEngk1-G.js} +3 -3
- package/dist/chunks/{DuWwVLOv.js → CFK4J-Pr.js} +1 -1
- package/dist/chunks/{BJXfjvzq.js → CFPo1xAh.js} +1 -1
- package/dist/chunks/{BHJskY63.js → CFnGq8r9.js} +2 -2
- package/dist/chunks/{NcKtN0ak.js → CFtCp8zT.js} +1 -1
- package/dist/chunks/{Br2qkbzi.js → CFtRS1p7.js} +1 -1
- package/dist/chunks/{U2Em5cUh.js → CG1-Ix3X.js} +2 -2
- package/dist/chunks/{CEfcUab2.js → CGA8sqHr.js} +1 -1
- package/dist/chunks/{DqYMCLjr.js → CHRX-o9z.js} +1 -1
- package/dist/chunks/{B_ICXJfu.js → CHjk2tlr.js} +1 -1
- package/dist/chunks/{BD5EdO6A.js → CIH3a7tU.js} +1 -1
- package/dist/chunks/{DgO-D1Jw.js → CItqk2r2.js} +1 -1
- package/dist/chunks/{LpN35LHD.js → CJTsYpCO.js} +1 -1
- package/dist/chunks/{F9VGVwcQ.js → CKuYIxRd.js} +1 -1
- package/dist/chunks/{DAKkVmKk.js → CMe_kgyg.js} +1 -1
- package/dist/chunks/{BxkRzGBY.js → CMzmKSxH.js} +2 -2
- package/dist/chunks/{gMWza0Ue.js → CNGDrd3d.js} +2 -2
- package/dist/chunks/{elf8_ilu.js → CP9H1A2L.js} +1 -1
- package/dist/chunks/{nFeH-YhG.js → CQHxYv-G.js} +1 -1
- package/dist/chunks/{D-IxAxW9.js → CQfukB8y.js} +1 -1
- package/dist/chunks/{B1bbx2UA.js → CRgRrrXJ.js} +1 -1
- package/dist/chunks/{yCqAboun.js → CRxYQjak.js} +3 -3
- package/dist/chunks/{BdDrMlce.js → CSKAqszr.js} +1 -1
- package/dist/chunks/{CTglqX7C.js → CSiQ7Xrs.js} +1 -1
- package/dist/chunks/{DGToxF2E.js → CTGWsYhq.js} +1 -1
- package/dist/chunks/{BQBQn-Vg.js → CTIZ_VRf.js} +1 -1
- package/dist/chunks/{BBTvz0Y0.js → CVFQWjtx.js} +1 -1
- package/dist/chunks/{4KKVsW0q.js → CVJeRlmP.js} +1 -1
- package/dist/chunks/{zzdH5myS.js → CWZ4KDue.js} +1 -1
- package/dist/chunks/{BkTYzO6H.js → CWp7XmfM.js} +1 -1
- package/dist/chunks/{BzUyZ5t5.js → CWpoNV8L.js} +4 -4
- package/dist/chunks/{CmfoT2WG.js → CXSFkdeW.js} +3 -3
- package/dist/chunks/{Dq2vYiZ2.js → CZ3xSu78.js} +1 -1
- package/dist/chunks/{BvLDU75H.js → C_Pyfu_I.js} +1 -1
- package/dist/chunks/{BJ70bE0S.js → Ca_nN2Dj.js} +1 -1
- package/dist/chunks/{Cm_X0FV3.js → CacxCZbv.js} +1 -1
- package/dist/chunks/{CWVQ_3UC.js → Cb5_0SAp.js} +1 -1
- package/dist/chunks/{5Prke9wT.js → CbANjnCw.js} +1 -1
- package/dist/chunks/{DcDk8tdA.js → CdQpikMq.js} +1 -1
- package/dist/chunks/{DEnfLAj7.js → Cf8lOvSH.js} +1 -1
- package/dist/chunks/{ChKx_jf2.js → CiVI6an6.js} +1 -1
- package/dist/chunks/{DOdSvVvc.js → Ck_mVBzg.js} +1 -1
- package/dist/chunks/{D085HE7Y.js → ClQXHJ1g.js} +1 -1
- package/dist/chunks/{Cy_XVSGU.js → Clm20NL0.js} +3 -3
- package/dist/chunks/{5o1_J-1r.js → CmEZj9A8.js} +1 -1
- package/dist/chunks/{1kdeP-pc.js → CmholN3S.js} +1 -1
- package/dist/chunks/{Dn3HiyPC.js → Co32TGXw.js} +1 -1
- package/dist/chunks/{DIZuZ7hK.js → CoSuylwP.js} +1 -1
- package/dist/chunks/{C4rdtjLs.js → Cprd2a_I.js} +1 -1
- package/dist/chunks/{6zA1Ozcp.js → Cpy10BdI.js} +2 -2
- package/dist/chunks/{BDKHN7tb.js → CqybLmoV.js} +1 -1
- package/dist/chunks/{7pxRmYIo.js → CrkTogab.js} +1 -1
- package/dist/chunks/{LrQiE_9y.js → CsFqC_KT.js} +1 -1
- package/dist/chunks/{5DHK2_s0.js → CuUd7A4z.js} +1 -1
- package/dist/chunks/{COF1uWaQ.js → CuloOzf7.js} +1 -1
- package/dist/chunks/{EbAVYvvy.js → CvT2iJWk.js} +1 -1
- package/dist/chunks/{z4DGtiIr.js → D-wdjr1W.js} +1 -1
- package/dist/chunks/{oLTtYtye.js → D0CZP8Ii.js} +1 -1
- package/dist/chunks/{BaI2EoXy.js → D0PSvb40.js} +2 -2
- package/dist/chunks/{DdfOKetE.js → D0wzgo2e.js} +1 -1
- package/dist/chunks/{Cs55gILk.js → D0yyoyVF.js} +1 -1
- package/dist/chunks/{DgGxqth3.js → D0ztXqhl.js} +1 -1
- package/dist/chunks/{oKjC9Dz4.js → D23-Pq_o.js} +1 -1
- package/dist/chunks/{dJR2MEAE.js → D35ZPio4.js} +1 -1
- package/dist/chunks/{D76bDnDJ.js → D39p0MhO.js} +1 -1
- package/dist/chunks/{DmZhq23y.js → D3jrSa6q.js} +1 -1
- package/dist/chunks/{s0GXEDha.js → D4y5p2f9.js} +1 -1
- package/dist/chunks/{DR7rKVdl.js → D5OVEcki.js} +1 -1
- package/dist/chunks/{Dd77Oujg.js → D5jTiU5l.js} +1 -1
- package/dist/chunks/{CyUrQjK5.js → D6D_yMOK.js} +3 -3
- package/dist/chunks/{DMtRXylu.js → D74G6PD4.js} +1 -1
- package/dist/chunks/{C_LQci4z.js → D8B4KF2n.js} +1 -1
- package/dist/chunks/{gji92mcx.js → D8Di_3oX.js} +5 -5
- package/dist/chunks/{C5ioMHzw.js → D9aZl3iS.js} +1 -1
- package/dist/chunks/{H9SvUktg.js → DAFRAMCl.js} +1 -1
- package/dist/chunks/{DqTC2_ik.js → DCXTfzJV.js} +1 -1
- package/dist/chunks/{D5XfVRog.js → DD7O274W.js} +1 -1
- package/dist/chunks/{CnFNyTON.js → DDl6Uk_O.js} +1 -1
- package/dist/chunks/{LyKKCCqU.js → DE_aCGp8.js} +1 -1
- package/dist/chunks/{CIuqo61L.js → DEroBi4P.js} +1 -1
- package/dist/chunks/{BGbLcbqO.js → DFF3bMmN.js} +1 -1
- package/dist/chunks/{7fly_ROj.js → DFmncqON.js} +1 -1
- package/dist/chunks/{rnWrmTcP.js → DGbbk4uR.js} +1 -1
- package/dist/chunks/{CTPyX6sY.js → DH8vG2v0.js} +1 -1
- package/dist/chunks/{Bw80t94z.js → DIGqwQFd.js} +1 -1
- package/dist/chunks/{Bx6lxThG.js → DIf8gP1J.js} +1 -1
- package/dist/chunks/{DIpXtFaC.js → DIiKk-PA.js} +1 -1
- package/dist/chunks/{B2TzF3o_.js → DL7JtWEQ.js} +1 -1
- package/dist/chunks/{DBGTAOeW.js → DLYR42N7.js} +1 -1
- package/dist/chunks/{Dpl3YvrM.js → DMpWrqqQ.js} +1 -1
- package/dist/chunks/{DJ0-h-XF.js → DN3_ZGBS.js} +1 -1
- package/dist/chunks/{CGnmCV5X.js → DOqvsWUa.js} +1 -1
- package/dist/chunks/{BXLo-033.js → DOs7kBs9.js} +2 -2
- package/dist/chunks/{0j09Q6pP.js → DP6CACR-.js} +1 -1
- package/dist/chunks/{D1YFn4Kl.js → DPi-FUAz.js} +6 -6
- package/dist/chunks/{47deajRo.js → DR9FX75V.js} +1 -1
- package/dist/chunks/{DRM504TO.js → DSpTDlU6.js} +4 -4
- package/dist/chunks/{BIJ35Xtt.js → DTijb4Om.js} +1 -1
- package/dist/chunks/{D7ZJDfcj.js → DULbNV6l.js} +1 -1
- package/dist/chunks/{fGOWjITa.js → DUbiw4Vs.js} +1 -1
- package/dist/chunks/{CyNWAe9n.js → DWYgywbt.js} +1 -1
- package/dist/chunks/{BDq_ZLXR.js → DX2Yc2_g.js} +1 -1
- package/dist/chunks/{CLS1poz0.js → DX9kVSug.js} +1 -1
- package/dist/chunks/{CZJhiMK6.js → DXhaaLpy.js} +1 -1
- package/dist/chunks/{BYJgkD_D.js → DY4ESLWe.js} +1 -1
- package/dist/chunks/{CTb9eF4Z.js → DYYCvTQB.js} +1 -1
- package/dist/chunks/{j1SvXeib.js → DY_zLRrq.js} +2 -2
- package/dist/chunks/{BIYW-cYu.js → DZKEJaGv.js} +1 -1
- package/dist/chunks/{BTKBxfDL.js → DZPBiojr.js} +1 -1
- package/dist/chunks/{C1qpVRf0.js → D_lHb_Xw.js} +1 -1
- package/dist/chunks/{0By4if8W.js → DaJ8h1mS.js} +1 -1
- package/dist/chunks/{w3IsCs0W.js → Dc36lGl4.js} +1 -1
- package/dist/chunks/{D1VbofnW.js → DctOThcz.js} +1 -1
- package/dist/chunks/{DX21TMMS.js → DcxmPWXV.js} +1 -1
- package/dist/chunks/{BwL98Mtt.js → Dd93gSOR.js} +1 -1
- package/dist/chunks/{mlIDuOx7.js → DdK0BCNy.js} +1 -1
- package/dist/chunks/{CuZE2S4t.js → Df1-20-6.js} +1 -1
- package/dist/chunks/{CZJQDxVZ.js → Dfl7cCvO.js} +1 -1
- package/dist/chunks/{DB4dl8_n.js → Dfygz1al.js} +2 -2
- package/dist/chunks/{FT1uNp0F.js → Dg2vE5c9.js} +1 -1
- package/dist/chunks/{DkocZ8G-.js → DgxwEYyK.js} +1 -1
- package/dist/chunks/{BDSpFdiU.js → DiYgFbqb.js} +1 -1
- package/dist/chunks/{B1GBMeq9.js → DkFPd4VL.js} +3 -3
- package/dist/chunks/{DiDTd2Ae.js → DkKVJDip.js} +1 -1
- package/dist/chunks/{BJNRLf2G.js → DkYBnc1D.js} +1 -1
- package/dist/chunks/{QgrSl2QF.js → DmRDV2Rr.js} +1 -1
- package/dist/chunks/{BJzABeVf.js → DoNvjOLr.js} +1 -1
- package/dist/chunks/{BuVUWC0S.js → DoqZf8wu.js} +1 -1
- package/dist/chunks/{C7pXw_Wb.js → Dp-styJf.js} +1 -1
- package/dist/chunks/{Cni53EcU.js → DsgXnEQZ.js} +1 -1
- package/dist/chunks/{vh6lNPMx.js → DtR0Z_76.js} +1 -1
- package/dist/chunks/{D-cNovb7.js → Dtet8dIK.js} +1 -1
- package/dist/chunks/{BNIOB3s2.js → DuMoYNVt.js} +1 -1
- package/dist/chunks/{n8WEDIDG.js → DuPCGjon.js} +1 -1
- package/dist/chunks/{CJ2-35yw.js → DwJyrx6g.js} +1 -1
- package/dist/chunks/{be4Lp6v5.js → DwoweSH3.js} +1 -1
- package/dist/chunks/{CapWP-Z_.js → Dyd0Gr7E.js} +1 -1
- package/dist/chunks/{BUig6uzu.js → Dyev6qo5.js} +1 -1
- package/dist/chunks/{7Tp0A5EA.js → DzT21AgR.js} +1 -1
- package/dist/chunks/{7yNWCzAa.js → ECGWPQbV.js} +1 -1
- package/dist/chunks/{Bkr0EvAd.js → G-lHr_TW.js} +1 -1
- package/dist/chunks/{DYRWJGT0.js → GL2a_FLV.js} +1 -1
- package/dist/chunks/{l8yy9Fbn.js → IUeweaa7.js} +1 -1
- package/dist/chunks/{6k2U2f_Q.js → Is8fpUrM.js} +2 -2
- package/dist/chunks/{O5qQbdFk.js → JkGrHD2G.js} +1 -1
- package/dist/chunks/{CVI1UUF7.js → JzzggGXv.js} +1 -1
- package/dist/chunks/{BRIEjdbh.js → Kp7IvYcz.js} +1 -1
- package/dist/chunks/{Bl1illQM.js → MTIU3W1X.js} +1 -1
- package/dist/chunks/{Cm3HSAmB.js → MggxSLwQ.js} +1 -1
- package/dist/chunks/{BRODcIXe.js → OBwRfjLZ.js} +3 -3
- package/dist/chunks/{ByoAdVG3.js → OXmjonJX.js} +1 -1
- package/dist/chunks/{BKzD-q9b.js → PN96L20c.js} +1 -1
- package/dist/chunks/{uHk5sn1-.js → R-STsl-Q.js} +1 -1
- package/dist/chunks/{dwdop78j.js → RWy6DQbo.js} +85911 -85889
- package/dist/chunks/{BlHPIHvs.js → SoiWMAEa.js} +1 -1
- package/dist/chunks/{CNO3v3aH.js → THsB7f2t.js} +1 -1
- package/dist/chunks/{CcJqrAKm.js → Tkrhflsz.js} +2 -2
- package/dist/chunks/{DVAoqNOp.js → UpCRpvq5.js} +1 -1
- package/dist/chunks/{DWSoUwVC.js → VBUxsdof.js} +1 -1
- package/dist/chunks/{j4CpkMZs.js → Vi3zeDSO.js} +1 -1
- package/dist/chunks/{DGFc6sc4.js → VjYys42m.js} +1 -1
- package/dist/chunks/{YBObSrf5.js → WZj7dkUr.js} +1 -1
- package/dist/chunks/{CvyxWC7e.js → XgwwIXWI.js} +1 -1
- package/dist/chunks/{BHdSscaO.js → Y67sPj96.js} +1 -1
- package/dist/chunks/{DMZvdTzY.js → YXeipBJt.js} +2 -2
- package/dist/chunks/{DRr6hJMl.js → eL3N3a1D.js} +1 -1
- package/dist/chunks/{CGVr2eIB.js → fGz28DCQ.js} +1 -1
- package/dist/chunks/{TsAqRwxq.js → fImJaw5d.js} +1 -1
- package/dist/chunks/{DxyemCrD.js → g9biOQoP.js} +1 -1
- package/dist/chunks/{DrYf3fk8.js → gPbzTXs_.js} +1 -1
- package/dist/chunks/{B2lT4AdU.js → io7h187y.js} +3 -3
- package/dist/chunks/{B2ofmSlL.js → j4bwt99v.js} +1 -1
- package/dist/chunks/{zpV8lfJH.js → jFrlGoul.js} +1 -1
- package/dist/chunks/{DRCcGOT5.js → l82-bz3m.js} +1 -1
- package/dist/chunks/{BgmUJpAZ.js → qzaSrQxv.js} +1 -1
- package/dist/chunks/{CgSu6lC7.js → s-adq1ot.js} +1 -1
- package/dist/chunks/{D5CvWVZf.js → sWdLalCE.js} +1 -1
- package/dist/chunks/{B7a4_pCq.js → sjsPdxJ4.js} +1 -1
- package/dist/chunks/{CF0lifas.js → skXhNPxJ.js} +1 -1
- package/dist/chunks/{Cf7mlAt-.js → tiqcwIOV.js} +1 -1
- package/dist/chunks/{D-X22TeH.js → u8gEiBhc.js} +1 -1
- package/dist/chunks/{CpIiQxim.js → vRfqN0Et.js} +1 -1
- package/dist/chunks/{DokxwJ4d.js → wW0rdZvj.js} +1 -1
- package/dist/chunks/{DsBibwV6.js → wsoB58PX.js} +1 -1
- package/dist/chunks/{BUGer3cj.js → xwEZ1RV2.js} +1 -1
- package/dist/chunks/{CutnDzpI.js → xxz9B0jl.js} +1 -1
- package/dist/i18n/assistant-i18n.d.ts +5 -0
- package/dist/index.js +1 -1
- package/dist/material-mention/material-mention-entity.d.ts +2 -1
- package/dist/timeline/timeline-entity.d.ts +2 -1
- package/package.json +2 -2
- package/dist/chunks/AtzN3HgS.js +0 -6
- package/dist/chunks/CuzKE3mB.js +0 -4
package/README.md
CHANGED
|
@@ -1,422 +1,104 @@
|
|
|
1
1
|
# @byteplus/amk-editor-assistant
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
素材引用、AI 编辑结果同步与手动精修。完整的代理示例、接口路径和接入流程请参阅
|
|
5
|
-
[Web 智能剪辑 SDK 集成指南](https://docs.volcengine.com/docs/Intelligentprocessing/WebSmartClipSDKIntegrationGuide?lang=zh)。
|
|
3
|
+
An AI video editing SDK for web applications. Combine a conversational assistant with a multitrack editor to import media, reference clips in chat, apply AI edits, and make manual adjustments.
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
## Prerequisites
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
- Enable BytePlus AI MediaKit and obtain an API key. Prepare inference and media understanding models available in your service region.
|
|
8
|
+
- Create an editing project on your server and pass its `project_id` to the browser.
|
|
9
|
+
- Implement a backend proxy that checks user and project permissions, injects the API key, and forwards editor and assistant requests. Preserve streaming assistant responses.
|
|
10
|
+
- Use a browser environment with React / React DOM 18.2 or 19. Give the mounting container an explicit width and height.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
2. **在服务端**创建剪辑工程,将返回的 `project_id` 作为前端的 `projectId`。不要在浏览器代码中存放 AI MediaKit API Key 或BytePlus 对应的模型服务密钥。
|
|
13
|
-
3. 实现业务代理(例如 `/api/amk-proxy`):验证用户与工程权限,在服务端注入 AI MediaKit API Key,转发剪辑器和助手两条链路。助手执行可能返回流式响应,代理须透传响应流。具体路径白名单和服务端示例见上述集成指南。
|
|
14
|
-
|
|
15
|
-
## 安装
|
|
12
|
+
## Install and initialize
|
|
16
13
|
|
|
17
14
|
```bash
|
|
18
15
|
npm install @byteplus/amk-editor-assistant react react-dom
|
|
19
16
|
```
|
|
20
17
|
|
|
21
|
-
## 快速开始
|
|
22
|
-
|
|
23
|
-
准备一个有明确宽高的挂载容器,然后初始化 SDK:
|
|
24
|
-
|
|
25
18
|
```ts
|
|
26
|
-
import { createAmkEditorAssistant } from
|
|
27
|
-
import
|
|
19
|
+
import { createAmkEditorAssistant } from '@byteplus/amk-editor-assistant';
|
|
20
|
+
import '@byteplus/amk-editor-assistant/styles.css';
|
|
28
21
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Authorization: `Bearer ${await getYourShortLivedBusinessToken()}`,
|
|
32
|
-
});
|
|
22
|
+
const container = document.getElementById('editor');
|
|
23
|
+
if (!container) throw new Error('Editor container not found');
|
|
33
24
|
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
// Implement this callback using your application's authentication.
|
|
26
|
+
const getHeaders = async () => ({
|
|
27
|
+
Authorization: `Bearer ${await getBusinessToken()}`,
|
|
28
|
+
});
|
|
36
29
|
|
|
37
30
|
const sdk = createAmkEditorAssistant({
|
|
38
31
|
container,
|
|
39
|
-
projectId:
|
|
40
|
-
endpoint:
|
|
41
|
-
getHeaders
|
|
42
|
-
i18n: { locale:
|
|
32
|
+
projectId: 'your-project-id',
|
|
33
|
+
endpoint: '/api/amk-proxy',
|
|
34
|
+
getHeaders,
|
|
35
|
+
i18n: { locale: 'en-US' },
|
|
43
36
|
assistant: {
|
|
44
|
-
model:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
getHeaders: getBusinessHeaders, // Assistant 请求头;地址由 endpoint 自动派生
|
|
49
|
-
},
|
|
50
|
-
onIntegrationError: (error) => {
|
|
51
|
-
console.error("智能剪辑 SDK 初始化或同步失败", error);
|
|
52
|
-
},
|
|
37
|
+
model: 'your-inference-model-id',
|
|
38
|
+
preferMultiModalModels: ['your-audio-model-id', 'your-visual-model-id'],
|
|
39
|
+
runtime: { getHeaders },
|
|
40
|
+
onIntegrationError: (error) => console.error(error),
|
|
53
41
|
},
|
|
54
42
|
});
|
|
55
43
|
|
|
56
44
|
await sdk.whenReady();
|
|
57
|
-
|
|
58
|
-
// 离开页面时释放资源;在 React 中也应放入 useEffect 的清理函数。
|
|
59
|
-
window.addEventListener("pagehide", () => sdk.destroy(), { once: true });
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
例如以下挂载节点和样式:
|
|
63
|
-
|
|
64
|
-
```html
|
|
65
|
-
<div id="amk-editor-assistant"></div>
|
|
66
|
-
<style>
|
|
67
|
-
#amk-editor-assistant {
|
|
68
|
-
width: 100%;
|
|
69
|
-
height: 100vh;
|
|
70
|
-
}
|
|
71
|
-
</style>
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
`getYourShortLivedBusinessToken()` 是由接入方实现的示例函数;若代理使用其他鉴权方式,应按实际情况配置两条链路的请求头。SDK 基于同一个 `endpoint` 自动追加剪辑器和 Assistant 的 API 路径,无需单独配置 `runtimeUrl`。示例中的 `ep-*` 均为占位值,请替换为实际的BytePlus 对应的模型服务 Endpoint ID。
|
|
75
|
-
|
|
76
|
-
### 验证接入
|
|
77
|
-
|
|
78
|
-
- 页面应同时出现 AI 助手和剪辑器,并加载指定 `projectId` 的工程。
|
|
79
|
-
- 检查两条代理请求的路径和鉴权;长期 API Key 只能留在服务端。
|
|
80
|
-
- 发送一条编辑指令,确认工程结果刷新;尝试素材导入、刷新后恢复会话,并在页面卸载时调用 `destroy()`。
|
|
81
|
-
|
|
82
|
-
### 请求链路
|
|
83
|
-
|
|
84
|
-
以 `endpoint: "/api/amk-proxy"` 为例:
|
|
85
|
-
|
|
86
|
-
| 链路 | 浏览器请求路径示例 | 请求头配置 |
|
|
87
|
-
| ------- | ------------------------------------------------------------------------ | ------------------------------ |
|
|
88
|
-
| 剪辑器 | `/api/amk-proxy/api/v1/editing/projects/...`(还可能请求工具、任务接口) | 顶层 `getHeaders` |
|
|
89
|
-
| AI 助手 | `/api/amk-proxy/api/v1/studio/agents/copilotkit`(还有会话查询接口) | `assistant.runtime.getHeaders` |
|
|
90
|
-
|
|
91
|
-
业务代理应只剥离自身前缀,再将完整 `/api/v1/...` 路径转发给 AI MediaKit,并在服务端注入长期密钥;不要把浏览器携带的业务 Token 直接当作上游 API Key。参见[官方代理示例](https://docs.volcengine.com/docs/Intelligentprocessing/WebSmartClipSDKIntegrationGuide?lang=zh)。
|
|
92
|
-
|
|
93
|
-
## 配置
|
|
94
|
-
|
|
95
|
-
`createAmkEditorAssistant(options)` 接收 AMK Editor 配置,并增加 Assistant 与左右布局配置。
|
|
96
|
-
|
|
97
|
-
### 基础配置
|
|
98
|
-
|
|
99
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
100
|
-
| ------------ | --------------------------------- | ---- | -------------------------------------- |
|
|
101
|
-
| `container` | `HTMLElement` | 是 | SDK 挂载节点 |
|
|
102
|
-
| `projectId` | `string` | 是 | 当前 AMK 工程 ID |
|
|
103
|
-
| `endpoint` | `string` | 是 | Editor 与 Assistant 共用的业务代理前缀 |
|
|
104
|
-
| `getHeaders` | `AmkEditorGetHeaders` | 否 | 剪辑器请求发送前动态获取请求头 |
|
|
105
|
-
| `assistant` | `AmkEditorAssistantConfig` | 是 | Assistant 配置 |
|
|
106
|
-
| `layout` | `AmkEditorAssistantLayoutOptions` | 否 | Assistant 与编辑器的左右布局配置 |
|
|
107
|
-
| `i18n` | `AmkI18nOptions` | 否 | 语言与文案覆盖,默认 `en-US` |
|
|
108
|
-
|
|
109
|
-
其余编辑器能力,例如 `material`、`storage`、`decode`、`header` 和 `interaction`,与
|
|
110
|
-
`@byteplus/amk-editor` 的配置保持一致。顶层 `theme` 同时应用于 Editor 和 Assistant,支持
|
|
111
|
-
`"light"` 和 `"dark"`;未配置时默认为 `"light"`。
|
|
112
|
-
|
|
113
|
-
顶层 `i18n` 除传给 Editor 外,也用于本 SDK 自带的按钮、菜单和弹窗展示文案,
|
|
114
|
-
例如“添加到对话”;其 `locale` 也会默认传给 Assistant(包括 VeloAssistant)。
|
|
115
|
-
只配置 `assistant.locale` 时,Editor 和本 SDK 的文案也会默认使用该语言;
|
|
116
|
-
两处都显式配置时各自生效,都不配置时默认 `en-US`。
|
|
117
|
-
业务自行传入的模型名称、场景名称、输入框占位符等文案不会自动翻译,应由业务按语言传入。
|
|
118
|
-
语言配置不会修改工具入参、返回值或发送给 Agent 的素材内容。
|
|
119
|
-
配置格式与 AMK Editor 一致:
|
|
120
|
-
|
|
121
|
-
```ts
|
|
122
|
-
createAmkEditorAssistant({
|
|
123
|
-
// 其余必填配置略
|
|
124
|
-
i18n: {
|
|
125
|
-
locale: "en-US",
|
|
126
|
-
// 可选:使用 amk.assistant.* 键覆盖 Assistant 文案
|
|
127
|
-
messageOverrides: {
|
|
128
|
-
"amk.assistant.timeline.addToConversation": "Add clip to chat",
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
});
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
未配置时默认使用中文文案;`assistant.timelineLabels.addToConversation` 仍可单独覆盖按钮标题。
|
|
135
|
-
|
|
136
|
-
### Assistant 配置
|
|
137
|
-
|
|
138
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
139
|
-
| ------------------------ | --------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------- |
|
|
140
|
-
| `model` | `string \| AmkEditorAssistantSelectableModel[] \| AmkEditorAssistantModelGroup[]` | 是 | 单个推理模型值、扁平列表或分组模型列表 |
|
|
141
|
-
| `preferMultiModalModels` | `string[]` | 否 | 多模态理解模型 Endpoint ID 列表;需要理解音频、视频或图片时配置 |
|
|
142
|
-
| `maasModel` | `string \| readonly string[]` | 否 | 生成模型的真实 wire modelId(低层强制值);通常由 `maasModel` 分组自动选择 |
|
|
143
|
-
| `mcp.tools` | `readonly string[]` | 否 | MCP Server 内部工具原名,经 TCC 绑定到 `x-mcp-tools-override` |
|
|
144
|
-
| `mcp.editDenyTools` | `readonly string[]` | 否 | MCP Server 内部工具原名,经 TCC 绑定到编辑黑名单 override Header |
|
|
145
|
-
| `runtime` | `AssistantRuntimeConfig` | 否 | Assistant Runtime 的请求头配置;地址由顶层 `endpoint` 派生 |
|
|
146
|
-
| `locale` | `string` | 否 | Assistant 展示语言;默认沿用顶层 `i18n.locale` |
|
|
147
|
-
| `agentId` | `string` | 否 | Agent ID,默认 `mediakit-editor-sdk-agent` |
|
|
148
|
-
| `onIntegrationError` | `(error: unknown) => void` | 否 | 接收初始化和联动过程中的错误 |
|
|
149
|
-
|
|
150
|
-
SDK 不对外要求 `auth`。AMK 链路通过外层 `getHeaders` 配置请求头,Assistant 链路通过
|
|
151
|
-
`assistant.runtime.getHeaders` 或 `assistant.runtime.headers` 配置请求头。两条链路相互独立,可以复用同一个
|
|
152
|
-
`getHeaders` 函数,也可以使用不同的地址和凭据。
|
|
153
|
-
|
|
154
|
-
`assistant.runtime.runtimeUrl` 是完整的 Runtime 地址覆盖;省略时使用
|
|
155
|
-
`${endpoint}/api/v1/studio/agents`。外层 `getHeaders` **不会**自动复制给 Assistant,
|
|
156
|
-
如需共用请求头,请显式将同一个函数同时传给两处。`preferMultiModalModels` 可直接配置一个或多个
|
|
157
|
-
理解模型;仅配置单个推理模型字符串时不会展示模型选择器。
|
|
158
|
-
|
|
159
|
-
### MCP 工具配置
|
|
160
|
-
|
|
161
|
-
```ts
|
|
162
|
-
createAmkEditorAssistant({
|
|
163
|
-
container,
|
|
164
|
-
projectId: "your-project-id",
|
|
165
|
-
endpoint: "/api/amk-proxy",
|
|
166
|
-
assistant: {
|
|
167
|
-
model: "ep-inference-model",
|
|
168
|
-
mcp: {
|
|
169
|
-
tools: ["probe_video_metadata"],
|
|
170
|
-
editDenyTools: ["export_project"],
|
|
171
|
-
},
|
|
172
|
-
runtime: { getHeaders: getBusinessHeaders },
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
两项配置使用目标 MCP Server 的内部工具原名,以 Server 工具目录为准:
|
|
178
|
-
|
|
179
|
-
| SDK 字段 | 请求字段 `mediakit.*` | TCC 绑定的 MCP Header |
|
|
180
|
-
| ----------------------------- | --------------------- | -------------------------------- |
|
|
181
|
-
| `assistant.mcp.tools` | `mcp_tools` | `x-mcp-tools-override` |
|
|
182
|
-
| `assistant.mcp.editDenyTools` | `mcp_edit_deny_tools` | `x-mcp-edit-deny-tools-override` |
|
|
183
|
-
|
|
184
|
-
每项独立去除名称首尾空格、去重并编码成 JSON 数组字符串。名称须匹配 `^[A-Za-z0-9_-]{1,64}$`,**每项** JSON 最大 8192 字节,两项合计可以超过 8192 字节。一项未传、类型或名称非法、超限时,仅省略该项请求字段,不影响另一有效项,也不抛出配置异常。非法名单不保留部分有效名称;合法 `[]` 原样发送为字符串 `"[]"`。
|
|
185
|
-
|
|
186
|
-
`assistant.mcp.tools` 也接受 API 风格的横杠名称:例如 `probe-video-metadata` 会在去重前转换成 `probe_video_metadata`,两种写法混用时只发送一次。`assistant.mcp.editDenyTools` 不做横杠转换,继续使用内部工具原名。
|
|
187
|
-
|
|
188
|
-
两个请求字段由 `assistant.mcp` 独占,通用 Prompt Variables 的同名值被移除,Composer 的 `patchMediaKitPromptVariables` 也不能覆盖。目标 Agent 的 TCC Profile 须通过 `request_props` 将 `mcp_tools` 和 `mcp_edit_deny_tools` 声明为可选字符串(各自 `max_length: 8192`),并将以下片段**增量合并**至相应 MCP Server 的现有 `header_bindings`。保留鉴权、工程、产物、多模态模型等已有绑定,不要用该片段整体替换原配置:
|
|
189
|
-
|
|
190
|
-
SDK 异常字段在发送前已省略,实现按项回退。直接绕过 SDK 提交请求字段时,Runtime 仍执行原有校验;非字符串、超过长度限制或包含 CRLF 的 wire 值会返回 HTTP 400。
|
|
191
|
-
|
|
192
|
-
```json
|
|
193
|
-
{
|
|
194
|
-
"header_bindings": {
|
|
195
|
-
"x-mcp-tools-override": "${mediakit.mcp_tools}",
|
|
196
|
-
"x-mcp-edit-deny-tools-override": "${mediakit.mcp_edit_deny_tools}"
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
原有静态 `x-mcp-tools`、`x-mcp-edit-deny-tools` 和 `x-mcp-domains` 保留不动;Runtime 使用已有通用 TCC 绑定转发 JSON,不增加工具筛选业务逻辑。先部署支持这些 override Header 的 MCP Server,再配置目标 Profile 并接入 SDK。
|
|
202
|
-
|
|
203
|
-
覆盖与回退由 MCP Server 分别处理。缺失或非法的某一 override 只回退该项原 Header / 环境配置。`tools: []` 显式覆盖本项为空,延续原 `x-mcp-tools` 空值行为,仍可能使用 `MCP_TOOLS` 环境默认值并结合 domains 过滤,**不表示禁用所有 MCP 工具**。`editDenyTools: []` 清空编辑黑名单。原 Header 的选择语义延续,这不是严格的全局工具白名单;共享工具、domains、服务端授权和实际可用性继续由 MCP Server 决定,Runtime Profile 中已有的 MCP `tool_filter` 也仍会限制最终工具集合,`frontendTools` 按原配置生效。
|
|
204
|
-
|
|
205
|
-
### 多模型选择
|
|
206
|
-
|
|
207
|
-
传入模型数组后,输入框底部会显示模型选择器:
|
|
208
|
-
|
|
209
|
-
```ts
|
|
210
|
-
assistant: {
|
|
211
|
-
model: [
|
|
212
|
-
{
|
|
213
|
-
value: "model-endpoint-a",
|
|
214
|
-
name: "Model A",
|
|
215
|
-
default: true,
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
value: "model-endpoint-b",
|
|
219
|
-
name: "Model B",
|
|
220
|
-
},
|
|
221
|
-
],
|
|
222
|
-
}
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
最多可设置一个 `default: true`。SDK 会在浏览器本地保存用户最近一次选择;缓存中的模型 `value` 仍存在于当前
|
|
226
|
-
列表时优先恢复,否则使用默认项,未设置默认项时使用第一项。
|
|
227
|
-
|
|
228
|
-
需要同时展示推理模型和多模态理解模型的选择时,可以传入分组模型列表。每组使用稳定的
|
|
229
|
-
`key`。`title`、`description`、`icon`、`panelHeader` 以及模型的 `name`、`description` 均支持字符串或 React
|
|
230
|
-
组件。`key: "model"` 的当前模型作为 Assistant 的活动推理模型,`key: "maasModel"` 的单选或多选结果会自动作为平调模型注入 `agentContext`,`key: "preferMultiModalModels"` 及其他辅助组的当前选择会去重汇总为 `preferMultiModalModels`;各组顺序不影响映射。为兼容旧配置,缺少 `model` key 时首个非保留组仍作为活动推理模型。无有效缓存时,显式传入的 `assistant.maasModel` 会在当前 `maasModel` 分组内匹配,未匹配则使用配置的默认项;没有默认项时保持未选择。请保持 `model`(分组数组)与 `preferMultiModalModels` 的引用稳定(使用模块级常量或 `useMemo`),避免内联新建对象导致选择被反复重置。所有选择都会通过 `onModelChange` 事件返回完整变化。
|
|
231
|
-
|
|
232
|
-
```ts
|
|
233
|
-
assistant: {
|
|
234
|
-
model: [
|
|
235
|
-
{
|
|
236
|
-
key: "model",
|
|
237
|
-
title: "推理模型",
|
|
238
|
-
description: "理解指令并规划剪辑任务",
|
|
239
|
-
panelHeader: "请选择推理模型",
|
|
240
|
-
models: [
|
|
241
|
-
{ value: "ep-inference-a", name: "推理模型 A", default: true },
|
|
242
|
-
{ value: "ep-inference-b", name: "推理模型 B" },
|
|
243
|
-
],
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
key: "preferMultiModalModels",
|
|
247
|
-
title: "多模态理解模型",
|
|
248
|
-
description: "理解图片、视频和音频素材",
|
|
249
|
-
panelHeader: "请选择理解模型",
|
|
250
|
-
multiple: true,
|
|
251
|
-
models: [
|
|
252
|
-
{ value: "ep-audio-model", name: "音频理解模型", default: true },
|
|
253
|
-
{ value: "ep-visual-model", name: "视觉理解模型", default: true },
|
|
254
|
-
],
|
|
255
|
-
selectedRenderer: (models) => `已选 ${models.length} 个模型`,
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
key: "maasModel",
|
|
259
|
-
title: "生成模型",
|
|
260
|
-
multiple: true,
|
|
261
|
-
models: [
|
|
262
|
-
{ value: MaasModelId.Seedream5Pro, name: "Seedream 5.0 Pro", description: "生图" },
|
|
263
|
-
{ value: MaasModelId.Seedance25, name: "Seedance 2.5", description: "生视频" },
|
|
264
|
-
{ value: MaasModelId.SeedAudio1, name: "Seed Audio 1.0", description: "生音频" },
|
|
265
|
-
],
|
|
266
|
-
},
|
|
267
|
-
],
|
|
268
|
-
onModelChange: (event) => {
|
|
269
|
-
// 扁平模式收到模型对象;分组模式收到完整的 group/model/models/value/selection 快照。
|
|
270
|
-
console.info(event);
|
|
271
|
-
},
|
|
272
|
-
}
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
单选分组最多设置一个 `default: true`;多选分组可设置多个;`maasModel` 分组未设置默认项时保持未选择,其他分组默认选择第一项。分组选择同样优先恢复
|
|
276
|
-
浏览器本地缓存,缓存只恢复仍存在于当前分组的模型 `value`(比较时自动忽略首尾空白)。`model` 分组必须至少包含一个模型;其他分组可为空,
|
|
277
|
-
选择器会展示空状态。各分组顺序不影响 `model`、`preferMultiModalModels`、`maasModel` 的映射。显式
|
|
278
|
-
`assistant.maasModel` 仅在命中某个 `maasModel` 分组内模型时生效;未命中时使用该组配置的 `default`;没有默认项时保持未选择。
|
|
279
|
-
|
|
280
|
-
`MaasModelId` 从 `@byteplus/amk-editor-assistant` 根入口导入,与底层 SDK 共用目录。其枚举值是不带 `doubao-`、`dola-`、`dreamina-` 等品牌前缀的 canonical model ID。MaaS 分组与其他分组写法相同,只需额外提供 `region`;模型 `value` 在 TypeScript 中约束为 `MaasModelId`,SDK 内部按地区和模型族补充 provider 前缀。运行时对 JavaScript、旧数据或类型断言传入的目录外非空字符串保持容错,已经包含 provider 前缀的 wire ID 保持原值。模型名称和能力标签由宿主提供。旧 MaaS 缓存不在当前选项内时自动失效;没有配置默认项时保持未选择。未选择或清空选择时,MaaS context 的 `value` 为 `""`;description 直接声明用户尚未选择模型,要求 Agent 不调用相关 MaaS 工具,并在回复中请用户先选择或提供模型;不得猜测模型 ID 或使用默认模型。已选择模型时,description 要求 Agent 先确认所选模型支持当前生成类型;没有兼容模型或无法确认能力时不调用工具,并请用户选择兼容模型。例如,只有生图模型时不执行生视频任务;多个所选模型均支持当前任务时,按 context `value` 中的顺序使用第一个兼容模型。
|
|
281
|
-
|
|
282
|
-
直接组装 `key: "maasModel"` 的分组可通过 `region` 指定地区,省略时默认使用 `cn`。显式 `assistant.maasModel` 只用于低层强制场景,必须是真实 wire modelId 或 modelId 数组。Seedance 2.1 及 2.x Pro 尚无核实的官方 ID,因此未加入推荐目录,但宿主仍可自行配置。国内音频沿用既有 MaaS ID,未实测生成请求。
|
|
283
|
-
|
|
284
|
-
### Composer 自定义 Action 与请求参数
|
|
285
|
-
|
|
286
|
-
业务可以通过 `assistant.composer.actions` 添加场景、多模态模型等控件。Action 上下文提供草稿操作,以及
|
|
287
|
-
`patchMediaKitPromptVariables`,用于动态更新下一次请求中的 `promptVariables.mediakit`:
|
|
288
|
-
|
|
289
|
-
```tsx
|
|
290
|
-
assistant: {
|
|
291
|
-
model: "inference-model-endpoint",
|
|
292
|
-
composer: {
|
|
293
|
-
actions: [{
|
|
294
|
-
key: "multimodal-model-selector",
|
|
295
|
-
render: ({ patchMediaKitPromptVariables }) => (
|
|
296
|
-
<MultimodalModelSelector
|
|
297
|
-
onChange={(endpoint) => {
|
|
298
|
-
patchMediaKitPromptVariables({
|
|
299
|
-
multimodal_endpoint: endpoint,
|
|
300
|
-
});
|
|
301
|
-
}}
|
|
302
|
-
/>
|
|
303
|
-
),
|
|
304
|
-
}],
|
|
305
|
-
},
|
|
306
|
-
}
|
|
45
|
+
// Call sdk.destroy() when the page or component is unmounted.
|
|
307
46
|
```
|
|
308
47
|
|
|
309
|
-
|
|
310
|
-
`media_output_destination` 由 SDK 管理,不能通过该方法覆盖。
|
|
48
|
+
Replace the project and model identifiers with values from your BytePlus account. Implement `getBusinessToken()` in your application. Keep API keys and permanent access keys on your server.
|
|
311
49
|
|
|
312
|
-
|
|
313
|
-
重排、包装或替换当前及后续新增的内置插件。以下示例隐藏自动生成的模型选择器:
|
|
50
|
+
## Configuration
|
|
314
51
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
52
|
+
| Option | Description |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| `container` | Required. An existing `HTMLElement` |
|
|
55
|
+
| `projectId` | Required. Cloud editing project ID |
|
|
56
|
+
| `endpoint` | Required. Backend proxy prefix; the SDK appends API paths |
|
|
57
|
+
| `getHeaders` | Editor request headers callback; supports asynchronous results |
|
|
58
|
+
| `assistant.model` | Required. Inference model ID, model list, or grouped model list |
|
|
59
|
+
| `assistant.preferMultiModalModels` | Model IDs for audio, video, and image understanding |
|
|
60
|
+
| `assistant.runtime.getHeaders` | Assistant request headers callback; configure separately |
|
|
61
|
+
| `assistant.runtime.runtimeUrl` | Optional separate assistant endpoint; defaults to `${endpoint}/api/v1/studio/agents` |
|
|
62
|
+
| `assistant.onModelChange` | Model selection change callback |
|
|
63
|
+
| `assistant.onIntegrationError` | Initialization and editor synchronization error callback |
|
|
64
|
+
| `assistant.mcp.tools` | Optional tool selection configuration; requires server support and remains subject to server permissions |
|
|
65
|
+
| `assistant.mcp.editDenyTools` | Optional editing tool deny list using server tool names |
|
|
66
|
+
| `i18n` | Language and message overrides; defaults to `en-US`, also supports `zh-CN` |
|
|
67
|
+
| `theme` | `light` or `dark`; defaults to `light` |
|
|
68
|
+
| `layout` | Panel widths, resizing, and panel visibility |
|
|
69
|
+
| `material` | Callbacks for file uploads, URL imports, and your asset library |
|
|
70
|
+
| `storage` | Upload destination and temporary credentials callback |
|
|
320
71
|
|
|
321
|
-
|
|
322
|
-
// ...
|
|
323
|
-
assistant: {
|
|
324
|
-
model: models,
|
|
325
|
-
composer: {
|
|
326
|
-
actions: (actions) =>
|
|
327
|
-
actions.filter(
|
|
328
|
-
(action) =>
|
|
329
|
-
action.key !== AMK_EDITOR_ASSISTANT_MODEL_SELECTOR_ACTION_KEY,
|
|
330
|
-
),
|
|
331
|
-
},
|
|
332
|
-
},
|
|
333
|
-
});
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
数组形式的 `composer.actions` 仍用于添加带稳定 AMK 上下文的业务控件;函数形式则接管最终 Action
|
|
337
|
-
列表。`AssistantModelSelectorPlugin` 也由本包直接导出,调用方无需另外安装或引入底层 Assistant 包。
|
|
72
|
+
Editor `getHeaders` is not copied to the assistant. Set `assistant.runtime.getHeaders` explicitly. The default configuration uses one backend proxy prefix for both request paths. The BytePlus Editing API upstream is `https://mediakit.ap-southeast-1.bytepluses.com`. Use `runtimeUrl` if your assistant service has a separate endpoint. Use credentials, projects, models, and storage from the same brand and region.
|
|
338
73
|
|
|
339
|
-
###
|
|
74
|
+
### Models and language
|
|
340
75
|
|
|
341
|
-
|
|
342
|
-
layout: {
|
|
343
|
-
initialWidthPercent: 37.5,
|
|
344
|
-
minAssistantWidth: 320,
|
|
345
|
-
minEditorWidth: 640,
|
|
346
|
-
resizable: true,
|
|
347
|
-
initialHeaderVisible: true,
|
|
348
|
-
initialPanelToggleVisible: true,
|
|
349
|
-
// defaultHiddenPanel: "assistant",
|
|
350
|
-
onPanelVisibilityChange: ({ assistantOpen, editorOpen }) => {
|
|
351
|
-
console.log({ assistantOpen, editorOpen });
|
|
352
|
-
},
|
|
353
|
-
}
|
|
354
|
-
```
|
|
76
|
+
Model options use `{ value, name, default? }`. Grouped options use `{ key, title, models, multiple? }`. Use `model` for inference, `preferMultiModalModels` for understanding, and `maasModel` for generation. Set the generation group's `region` to your service region; the default is `cn`. Keep model list references stable to avoid resetting selection.
|
|
355
77
|
|
|
356
|
-
`
|
|
357
|
-
`onPanelVisibilityChange` 在面板状态发生变化后触发,初始渲染时不触发。
|
|
78
|
+
`i18n.locale` is passed to the assistant by default. Provide your own translated model names and custom text. Override SDK messages through `i18n.messageOverrides` using `amk.assistant.*` keys.
|
|
358
79
|
|
|
359
|
-
|
|
80
|
+
### Media and storage
|
|
360
81
|
|
|
361
|
-
|
|
362
|
-
assistant: {
|
|
363
|
-
model: "your-model-endpoint-id",
|
|
364
|
-
agent: {
|
|
365
|
-
welcome: <BusinessWelcome />,
|
|
366
|
-
},
|
|
367
|
-
}
|
|
368
|
-
```
|
|
82
|
+
Use `material.onUploadFile`, `material.onUploadUrlMaterial`, and `material.onUploadFromSystem` for your upload and asset library integration. Users can reference media through `@` or the timeline's “Add to conversation” action. Project results synchronize after AI editing completes.
|
|
369
83
|
|
|
370
|
-
|
|
84
|
+
For built-in VOD uploads, configure both `storage.media_output_destination` and `storage.getUploadSTS`:
|
|
371
85
|
|
|
372
|
-
|
|
86
|
+
| Option | Value |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| `storage.media_output_destination` | `vod://<space>`; use the space name without a media ID or directory |
|
|
89
|
+
| `storage.getUploadSTS` | Return `AccessKeyId`, `SecretAccessKey`, `SessionToken`, `ExpiredTime`, and `CurrentTime` as strings |
|
|
373
90
|
|
|
374
|
-
|
|
375
|
-
material: {
|
|
376
|
-
onUploadFile: (file) => uploadOneFile(file),
|
|
377
|
-
onUploadUrlMaterial: (urls) => importUrls(urls),
|
|
378
|
-
onUploadFromSystem: () => openAssetLibrary(),
|
|
379
|
-
}
|
|
380
|
-
```
|
|
91
|
+
Issue temporary credentials on your server with upload, publish, and playback query permissions for the target space. The SDK resolves and refreshes playback URLs. Custom file upload callbacks take precedence over built-in uploads. Original media URLs must support CORS.
|
|
381
92
|
|
|
382
|
-
|
|
383
|
-
临时素材识别、转存、并发控制、替换与失败重试均由 AMK Editor 负责。
|
|
384
|
-
|
|
385
|
-
配置相应能力后,Assistant 输入区会提供素材导入入口。导入成功的素材先进入当前工程素材库,再作为素材引用
|
|
386
|
-
添加到对话。用户也可以通过输入框的 `@` 入口引用当前工程已有素材,或从编辑器时间线将选中元素添加到对话。
|
|
387
|
-
|
|
388
|
-
`sync_materials` 写入 MediaKit 生成素材后,Assistant 只调用一次 AMK Editor 的 `refreshMaterials()`,使 Agent
|
|
389
|
-
已插入的素材立即显示;AMK Editor 随后自行处理其中的临时素材。编辑器首次加载、临时 HTTP/HTTPS 地址转存、
|
|
390
|
-
客户播放信息隔离和原位替换均遵循 AMK Editor 的行为,Assistant 不再维护平行的扫描或替换状态机。
|
|
391
|
-
|
|
392
|
-
## 联动行为
|
|
393
|
-
|
|
394
|
-
- Assistant 运行期间,编辑器进入只读状态,避免编辑操作与 Agent 修改互相覆盖。
|
|
395
|
-
- Assistant 运行结束后,SDK 自动刷新工程,使编辑器展示最新的素材和剪辑结果。
|
|
396
|
-
- 编辑器初始化、保存或刷新期间,Assistant 保留输入内容,但暂时禁止发送。
|
|
397
|
-
- SDK 自动解析当前工程绑定的会话,接入方无需维护 `threadId`。
|
|
398
|
-
- 工程上下文会自动传给 Assistant,包括 `projectId` 以及可选的媒体输出位置。
|
|
399
|
-
|
|
400
|
-
## 实例方法
|
|
401
|
-
|
|
402
|
-
```ts
|
|
403
|
-
await sdk.whenReady();
|
|
404
|
-
|
|
405
|
-
const editor = sdk.getEditor();
|
|
406
|
-
|
|
407
|
-
sdk.destroy();
|
|
408
|
-
```
|
|
93
|
+
BytePlus currently does not forward `media_output_destination` to AMK for cloud output transfer. Configuring VOD storage enables built-in local uploads and playback resolution; it does not automatically transfer AI-generated cloud outputs to your space. Use your own integration for storage capabilities outside this flow.
|
|
409
94
|
|
|
410
|
-
|
|
411
|
-
| ----------------------------- | ----------------------------------------------------- |
|
|
412
|
-
| `whenReady()` | 等待工程加载和编辑器挂载完成 |
|
|
413
|
-
| `getEditor()` | 获取底层 `AmkEditor` 实例;调用前应等待 `whenReady()` |
|
|
414
|
-
| `setLayoutChromeVisibility()` | 动态显示或隐藏 Header 与分栏按钮 |
|
|
415
|
-
| `destroy()` | 销毁 Assistant、编辑器及相关监听器;可重复调用 |
|
|
95
|
+
## Instance methods
|
|
416
96
|
|
|
417
|
-
|
|
97
|
+
| Method | Description |
|
|
98
|
+
| --- | --- |
|
|
99
|
+
| `whenReady()` | Wait for the project and editor to load |
|
|
100
|
+
| `getEditor()` | Get the editor instance after initialization |
|
|
101
|
+
| `setLayoutChromeVisibility()` | Update header and panel toggle visibility |
|
|
102
|
+
| `destroy()` | Release resources and event listeners |
|
|
418
103
|
|
|
419
|
-
|
|
420
|
-
- `getHeaders` 适合返回短期凭据:SDK 会在发起请求时调用,不缓存返回值。
|
|
421
|
-
- 不要在浏览器代码中放置长期 AK/SK 或其他服务端密钥。
|
|
422
|
-
- 切换 `projectId` 时,请销毁旧实例并使用新配置创建实例。
|
|
104
|
+
Destroy the previous instance before switching projects. In React, call `destroy()` in your effect cleanup.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as a, r as t } from "./
|
|
1
|
+
import { d as a, r as t } from "./RWy6DQbo.js";
|
|
2
2
|
const e = `<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" fill="none" viewBox="0 0 40 40"><path fill="#1664ff" d="M4 12.385V27.62c0 5.47 4.435 9.905 9.905 9.905h12.19c5.47 0 9.905-4.434 9.905-9.905V14.293a9.9 9.9 0 0 0-3.174-7.267l-2.06-1.908a9.9 9.9 0 0 0-6.73-2.638H13.905C8.435 2.48 4 6.914 4 12.385"/><path fill="#fff" d="M5.453 12.554A8.554 8.554 0 0 1 14.006 4h7.563a4.99 4.99 0 0 1 4.835 3.767 4.99 4.99 0 0 0 3.72 3.64l.239.054a5.39 5.39 0 0 1 4.182 5.251v10.735A8.554 8.554 0 0 1 25.991 36H14.006a8.554 8.554 0 0 1-8.553-8.553z"/><path fill="#1664ff" d="M16.972 17.25a.75.75 0 0 1 .642 1.136l-3.289 5.483h2.647a.75.75 0 0 1 0 1.5H13a.75.75 0 0 1-.643-1.136l3.29-5.483H13a.75.75 0 0 1 0-1.5zm2.56 7.37V18a.75.75 0 1 1 1.5 0v6.62a.75.75 0 0 1-1.5 0m7.942-4.635c0-.682-.553-1.235-1.236-1.235h-1.897v2.472h1.897c.683 0 1.236-.554 1.236-1.237m1.5 0a2.736 2.736 0 0 1-2.736 2.737h-1.897v1.897a.75.75 0 0 1-1.5 0V18a.75.75 0 0 1 .75-.75h2.647a2.736 2.736 0 0 1 2.736 2.735"/></svg>
|
|
3
3
|
`, f = {
|
|
4
4
|
name: "type-zip-state-default",
|