aipexbase-js 1.1.16 → 1.1.18

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.
@@ -1397,6 +1397,165 @@
1397
1397
  return this._execute().then(resolve, reject);
1398
1398
  }
1399
1399
  }
1400
+ class JimengPicBuilder extends UploadBuilder {
1401
+ constructor(client) {
1402
+ super(client);
1403
+ this.params = {};
1404
+ this.params.req_key = "jimeng_t2i_v40";
1405
+ this.params.image_urls = [];
1406
+ this.params.scale = 0.5;
1407
+ }
1408
+ image(image) {
1409
+ this.params.image_urls.push(image);
1410
+ return this;
1411
+ }
1412
+ scale(scale) {
1413
+ this.params.scale = scale;
1414
+ return this;
1415
+ }
1416
+ prompt(prompt) {
1417
+ this.params.prompt = prompt;
1418
+ return this;
1419
+ }
1420
+ createTask() {
1421
+ const {
1422
+ req_key,
1423
+ image_urls,
1424
+ prompt,
1425
+ scale
1426
+ } = this.params;
1427
+ let playLoad = {
1428
+ req_key: req_key,
1429
+ image_urls: image_urls,
1430
+ prompt: prompt,
1431
+ scale: scale
1432
+ };
1433
+ const url = "/api/JMAI";
1434
+ return this.client.request(url, {
1435
+ method: "POST",
1436
+ body: JSON.stringify(playLoad)
1437
+ });
1438
+ }
1439
+ async queryTask(taskId) {
1440
+ const url = "/api/JMAIQuery";
1441
+ let playLoad = {
1442
+ req_key: 'jimeng_t2i_v40',
1443
+ task_id: taskId
1444
+ };
1445
+ return await this.client.request(url, {
1446
+ method: "POST",
1447
+ body: JSON.stringify(playLoad)
1448
+ });
1449
+ }
1450
+ async _execute() {
1451
+ const createRes = await this.createTask();
1452
+ const taskId = createRes.data.data.task_id;
1453
+ if (!taskId) {
1454
+ throw new Error('任务创建失败,未返回任务ID');
1455
+ }
1456
+ while (true) {
1457
+ const queryRes = await this.queryTask(taskId);
1458
+ if (queryRes.data.data.status === 'done') {
1459
+ const res = await this.uploadFile(queryRes.data.data.image_urls[0], "png", "image/png");
1460
+ queryRes.data = res.data;
1461
+ return queryRes;
1462
+ }
1463
+ await new Promise(resolve => setTimeout(resolve, 2000));
1464
+ }
1465
+ }
1466
+ then(resolve, reject) {
1467
+ this._execute().then(resolve, reject);
1468
+ }
1469
+ }
1470
+ class JimengVideoBuilder extends UploadBuilder {
1471
+ constructor(client) {
1472
+ super(client);
1473
+ this.params = {};
1474
+ this.params.image_urls = [];
1475
+ }
1476
+ image(image) {
1477
+ this.params.image_urls.push(image);
1478
+ return this;
1479
+ }
1480
+ prompt(prompt) {
1481
+ this.params.prompt = prompt;
1482
+ return this;
1483
+ }
1484
+ _getTaskReqKey() {
1485
+ let reqKey = '';
1486
+ const len = this.params.image_urls.length;
1487
+ if (len === 0) {
1488
+ reqKey = "jimeng_t2v_v30";
1489
+ } else if (len === 1) {
1490
+ reqKey = "jimeng_i2v_first_v30";
1491
+ } else if (len === 2) {
1492
+ reqKey = "jimeng_i2v_first_tail_v30";
1493
+ } else {
1494
+ throw new Error('不支持超过2张图片');
1495
+ }
1496
+ return reqKey;
1497
+ }
1498
+ createTask(reqKey) {
1499
+ const url = "/api/JMAI";
1500
+ let playLoad = {};
1501
+ if (reqKey === 'jimeng_t2v_v30') {
1502
+ playLoad = {
1503
+ req_key: reqKey,
1504
+ prompt: this.params.prompt
1505
+ };
1506
+ } else if (reqKey === 'jimeng_i2v_first_v30') {
1507
+ playLoad = {
1508
+ req_key: reqKey,
1509
+ image_urls: this.params.image_urls,
1510
+ prompt: this.params.prompt
1511
+ };
1512
+ } else if (reqKey === 'jimeng_i2v_first_tail_v30') {
1513
+ playLoad = {
1514
+ req_key: reqKey,
1515
+ image_urls: this.params.image_urls,
1516
+ prompt: this.params.prompt
1517
+ };
1518
+ } else {
1519
+ throw new Error('不支持超过2张图片');
1520
+ }
1521
+ return this.client.request(url, {
1522
+ method: "POST",
1523
+ body: JSON.stringify(playLoad)
1524
+ });
1525
+ }
1526
+ async queryTask(reqKey, taskId) {
1527
+ const url = "/api/JMAIQuery";
1528
+ let playLoad = {
1529
+ req_key: reqKey,
1530
+ task_id: taskId
1531
+ };
1532
+ return await this.client.request(url, {
1533
+ method: "POST",
1534
+ body: JSON.stringify(playLoad)
1535
+ });
1536
+ }
1537
+ async _execute() {
1538
+ const reqKey = this._getTaskReqKey();
1539
+ const createRes = await this.createTask(reqKey);
1540
+ console.log("==============", createRes);
1541
+ const taskId = createRes.data.data.task_id;
1542
+ if (!taskId) {
1543
+ throw new Error('任务创建失败,未返回任务ID');
1544
+ }
1545
+ while (true) {
1546
+ const queryRes = await this.queryTask(reqKey, taskId);
1547
+ if (queryRes.data.data.status === 'done') {
1548
+ const res = await this.uploadFile(queryRes.data.data.video_url, "mp4", "video/mp4");
1549
+ queryRes.data = res.data;
1550
+ return queryRes;
1551
+ }
1552
+ await new Promise(resolve => setTimeout(resolve, 2000));
1553
+ }
1554
+ }
1555
+ then(resolve, reject) {
1556
+ this._execute().then(resolve, reject);
1557
+ }
1558
+ }
1400
1559
  function aiModule(client) {
1401
1560
  return {
1402
1561
  textToImage() {
@@ -1425,6 +1584,12 @@
1425
1584
  },
1426
1585
  imageToVideoFrameEffect() {
1427
1586
  return new HuoshanTemplateBuilder(client, "frame");
1587
+ },
1588
+ jmTextToImage() {
1589
+ return new JimengPicBuilder(client);
1590
+ },
1591
+ jmGenToVideo() {
1592
+ return new JimengVideoBuilder(client);
1428
1593
  }
1429
1594
  };
1430
1595
  }
@@ -2823,7 +2988,7 @@
2823
2988
  const messageId = createRes.data;
2824
2989
  while (true) {
2825
2990
  const queryRes = await this.getMessage(messageId);
2826
- if (queryRes.data) {
2991
+ if (queryRes.data.isComplete) {
2827
2992
  return queryRes;
2828
2993
  }
2829
2994
  await new Promise(resolve => setTimeout(resolve, 2000));
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).aipexbase={})}(this,function(t){"use strict";const e={getItem(t){try{return localStorage.getItem(t)}catch(t){return console.warn("No localStorage available"),null}},setItem(t,e){try{localStorage.setItem(t,e)}catch(t){console.warn("Cannot write to localStorage")}},removeItem(t){try{localStorage.removeItem(t)}catch(t){console.warn("Cannot remove from localStorage")}}},s=async(t,e)=>(await fetch(t,e)).json();class r{constructor({baseUrl:t,apiKey:r,storage:i,request:a}){this.baseUrl=t,this.apiKey=r,this.storage=i||e,this.requestImpl=a||s}getApiKey(){return this.apiKey}setToken(t){t?this.storage.setItem("baas_token",t):this.storage.removeItem("baas_token")}getToken(){return this.storage.getItem("baas_token")}async request(t,e={}){const s=`${this.baseUrl}${t}`,r={"Content-Type":"application/json",CODE_FLYING:`${this.apiKey}`,...this.getToken()?{Authorization:`Bearer ${this.getToken()}`}:{},...e.headers||{}},i=await this.requestImpl(s,{...e,headers:r});return console.log("url: ",s,"\n header:",r,"\n response:",i),i}}function i(t){return{async login({user_name:e,phone:s,email:r,password:i}={}){const a=e||s||r;if(!a)throw new Error("必须提供 user_name、phone 或 email 之一");if(!i)throw new Error("必须提供 password");const n=await t.request("/login/passwd",{method:"POST",body:JSON.stringify({phone:a,password:i})});return n.success&&t.setToken(n.data),n},async loginByEmailAndCode({email:e,code:s}={}){const r=await t.request("/login/mail",{method:"POST",body:JSON.stringify({phone:e,code:s})});return r.success&&t.setToken(r.data),r},async loginByPhoneAndCode({phone:e,code:s}={}){const r=await t.request("/login/phone",{method:"POST",body:JSON.stringify({phone:e,code:s})});return r.success&&t.setToken(r.data),r},async loginByWeChat({code:e}={}){const s=await t.request("/login/wechat",{method:"POST",body:JSON.stringify({code:e})});return s.success&&t.setToken(s.data),s},async loginByWeApp({code:e}={}){const s=await t.request("/login/weapp",{method:"POST",body:JSON.stringify({code:e})});return s.success&&t.setToken(s.data),s},getUser:async()=>t.request("/getUserInfo",{method:"GET"}),register:async e=>await t.request("/login/register",{method:"POST",body:JSON.stringify(e)}),logout:async()=>(t.setToken(null),t.request("/logout",{method:"GET"})),loginOauth2Uri:async({provider:e}={})=>await t.request("/oauth2/authorize/"+e,{method:"GET"})}}class a{constructor(t,e){this.client=t,this.table=e,this._body=null,this._method=""}list(){return new n(this.client,this.table,"list")}page(){return new n(this.client,this.table,"page")}get(){return new n(this.client,this.table,"get")}insert(){return new o(this.client,this.table,"add")}update(){return new o(this.client,this.table,"update")}delete(){return new n(this.client,this.table,"delete")}}class n{constructor(t,e,s){this.client=t,this.table=e,this.method=s,this.filters={}}_addFilter(t,e,s){return this.filters.hasOwnProperty(t)||(this.filters[t]={}),this.filters[t][e]=s,this}eq(t,e){return this._addFilter(t,"eq",e)}neq(t,e){return this._addFilter(t,"neq",e)}gt(t,e){return this._addFilter(t,"gt",e)}gte(t,e){return this._addFilter(t,"gte",e)}lt(t,e){return this._addFilter(t,"lt",e)}lte(t,e){return this._addFilter(t,"lte",e)}like(t,e){return this._addFilter(t,"like",e)}in(t,e){return this._addFilter(t,"in",e)}between(t,e){return this._addFilter(t,"between",e)}or(t){this.filters.or||(this.filters.or=[]);const e=new n(this.client,this.table,"or");return t(e),this.filters.or.push(e.build()),this}limit(t){return this}page(t,e){return this.filters.current=t,this.filters.pageSize=e,this}order(t,e="asc"){this.filters.order_by||(this.filters.order_by=[]);let s="asc";return"string"==typeof e?s=e.toLowerCase():"object"==typeof e&&null!==e&&("ascending"in e?s=e.ascending?"asc":"desc":"direction"in e&&(s=e.direction.toLowerCase())),this.filters.order_by.push({field:t,direction:s}),this}build(){return this.filters}async _execute(){return await this.client.request(`/api/data/invoke?table=${this.table}&method=${this.method}`,{method:"POST",body:this.filters?JSON.stringify(this.filters):void 0})}then(t,e){this._execute().then(t,e)}}class o extends n{constructor(t,e,s){super(t,e,s),this.data={}}values(t){return this.data={...t},this}set(t){return this.data={...t},this}build(){return{...this.filters,...this.data}}async _execute(){return await this.client.request(`/api/data/invoke?table=${this.table}&method=${this.method}`,{method:"POST",body:JSON.stringify(this.build())})}then(t,e){this._execute().then(t,e)}}function h(t){return{from:e=>new a(t,e)}}class c{constructor(t,e){this.client=t,this.apiName=e,this._params={},this._headers={},this._method="POST"}param(t,e){return this._params[t]=e,this}params(t){return Object.assign(this._params,t),this}header(t,e){return this._headers[t]=e,this}headers(t){return Object.assign(this._headers,t),this}async _execute(){const t=JSON.stringify(this._params),e=`/api/${this.apiName}`;return await this.client.request(e,{method:this._method,headers:this._headers,body:t})}then(t,e){this._execute().then(t,e)}}function u(t){return{call:e=>new c(t,e)}}class l{static API_MAP={search:"/api/bijia_spu_search",compare:"/api/bijia_spu_goods_search"};constructor(t,e){this.client=t,this._params={},this.type=e}keyword(t){return this._params.query=t,this}setParams(t={}){return Object.assign(this._params,t),this}type(t){if(!l.API_MAP[t])throw new Error(`Unsupported comparison type: ${t}`);return this.type=t,this}async _execute(){const t=l.API_MAP[this.type];return await this.client.request(t,{method:"POST",body:JSON.stringify(this._params)})}then(t,e){this._execute().then(t,e)}}function d(t){return{searchProduct:()=>new l(t,"search"),findLowestPrice:()=>new l(t,"compare")}}class p{constructor(t){this.client=t,this._params={},this._taskId=null,this._pollingInterval=2e3,this._maxRetries=30}url(t){return this._params.url=t,this._params.format="pdf-to-image",this}format(t="pdf-to-image"){return this._params.format=t,this}pollingInterval(t){return this._pollingInterval=t,this}maxRetries(t){return this._maxRetries=t,this}async createTask(){if(!this._params.url)throw new Error("PDF文件URL不能为空");const t=await this.client.request("/api/pdf2image",{method:"POST",body:JSON.stringify({url:this._params.url,format:this._params.format})});return this._taskId=t.data,t}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");return await this.client.request("/api/queryPDF2ImageTask",{method:"POST",body:JSON.stringify({taskId:e})})}async convert(){try{console.log("开始创建PDF转图片任务...");const t=await this.createTask();console.log("任务创建成功:",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");console.log("开始轮询查询任务状态...");let s=0;for(;s<this._maxRetries;){const t=await this.queryTask(e);console.log(`第${s+1}次查询结果:`,t);const r=t.data?.state;if(1===r)return console.log("PDF转图片任务完成:",t.data),t;if(r<0)return console.log("PDF转图片任务失败,状态码:",r),t;s++,s<this._maxRetries&&(console.log(`等待${this._pollingInterval}ms后进行第${s+1}次查询...`),await new Promise(t=>setTimeout(t,this._pollingInterval)))}throw new Error(`PDF转图片任务超时,已重试${this._maxRetries}次`)}catch(t){throw console.error("PDF转图片失败:",t),t}}then(t,e){return this.convert().then(t,e)}catch(t){return this.convert().catch(t)}}function m(t){return{convertPdf:()=>new p(t),async quickConvert(e={}){const s=new p(t);return e.url&&s.url(e.url),e.format&&s.format(e.format),e.pollingInterval&&s.pollingInterval(e.pollingInterval),e.maxRetries&&s.maxRetries(e.maxRetries),await s.convert()}}}class y{constructor(t){this.client=t,this._params={}}company(t){return this._params.com=t,this}trackingNumber(t){return this._params.num=t,this}phone(t){return this._params.phone=t,this}_validateParams(){if(!this._params.com)throw new Error("快递公司代码不能为空");if(!this._params.num)throw new Error("快递单号不能为空");if(("shunfeng"===this._params.com||"shunfengkuaiyun"===this._params.com)&&!this._params.phone)throw new Error("顺丰快递必须提供手机号参数")}async track(){return this._validateParams(),await this.client.request("/api/expressInquiry",{method:"POST",body:JSON.stringify({com:this._params.com,num:this._params.num,resultv2:4,...this._params.phone?{phone:this._params.phone}:{}})})}then(t,e){return this.track().then(t,e)}catch(t){return this.track().catch(t)}}function g(t){return{trackPackage:()=>new y(t)}}class w{static LOCATION_MAP={location:"/api/geocoder",address:"/api/geoaddress"};constructor(t,e){this.client=t,this._params={},this.type=e}latitude(t){return this._params.latitude=t,this}longitude(t){return this._params.longitude=t,this}address(t){return this._params.address=t,this}_validateLocationParams(){if(!this._params.latitude||!this._params.longitude)throw new Error("经纬度参数不能为空")}_validateAddressParams(){if(!this._params.address)throw new Error("地址参数不能为空")}_data(){return"location"===this.type?(this._validateLocationParams(),{location:`${this._params.latitude},${this._params.longitude}`}):(this._validateAddressParams(),{address:this._params.address})}async _execute(){const t=w.LOCATION_MAP[this.type],e=this._data();let s=await this.client.request(t,{method:"POST",body:JSON.stringify(e)}),r=s;return"data"in s&&"result"in s.data&&(r.result=s.data.result,r.result.latitude=s.data.result.location.lat,r.result.longitude=s.data.result.location.lng,r.status=s.data.status),r}then(t,e){this._execute().then(t,e)}}class _{constructor(t){this.client=t}async _execute(){const t=await this.client.request("/api/amap_ip_location",{method:"POST",body:JSON.stringify({})}),e=t?.data?.rectangle;if(!e)throw new Error("返回数据中缺少 rectangle 字段");const[s,r]=e.split(";"),[i,a]=s.split(",").map(Number),[n,o]=r.split(",").map(Number);return{success:!0,latitude:(a+o)/2,longitude:(i+n)/2,speed:0,altitude:0,horizontalAccuracy:1e3}}then(t,e){this._execute().then(t,e)}}class f{constructor(t){this.client=t,this._params={}}from(t,e){return this._params.from={lat:t,lng:e},this}to(t,e){return this._params.to={lat:t,lng:e},this}decodePolyline(t){for(let e=2;e<t.length;e++)t[e]=t[e-2]+t[e]/1e6;return t}async _execute(){const{from:t,to:e}=this._params;if(!t||!e)throw new Error("必须提供起点和终点坐标");const s={from:`${t.lat},${t.lng}`,to:`${e.lat},${e.lng}`},r=await this.client.request("/api/driving",{method:"POST",body:JSON.stringify(s)}),{routes:i}=r.data.result;return{success:!0,data:{paths:i.map(t=>{const e=this.decodePolyline([...t.polyline]),s=t.steps.map(t=>{const{polyline_idx:[s,r]}=t,i=[];for(let t=s;t<=r;t+=2)i.push({latitude:e[t],longitude:e[t+1]});return{...t,polylines:i}});return{distance:t.distance,duration:t.duration,steps:s}})}}}then(t,e){this._execute().then(t,e)}}class P{constructor(t){this.client=t,this._params={}}lat(t){return this._params.lat=t,this}lng(t){return this._params.lng=t,this}radius(t){return this._params.radius=t,this}keyword(t){return this._params.keyword=t,this}async _execute(){const{lat:t,lng:e,radius:s=1e3,keyword:r}=this._params;if(!t||!e)throw new Error("必须提供经纬度参数");const i={boundary:`nearby(${t},${e},${s})`,...r&&{keyword:r}};return{success:!0,data:(await this.client.request("/api/mapsearch",{method:"POST",body:JSON.stringify(i)})).data.map(t=>({...t,latitude:t.location.lat,longitude:t.location.lng}))}}then(t,e){this._execute().then(t,e)}}function S(t){return{locationToAddress:()=>new w(t,"location"),addressToLocation:()=>new w(t,"address"),currentLocation:()=>new _(t),driving:()=>new f(t),nearby:()=>new P(t)}}class q{static API_MAP={train:"/api/queryTickets",flight:"/api/queryFlight"};constructor(t,e){this.client=t,this.params={},this.mode=e}from(t){return this.params.from=t,this}to(t){return this.params.to=t,this}date(t){return this.params.date=t,this}async _execute(){const t=q.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function b(t){return{train:()=>new q(t,"train"),flight:()=>new q(t,"flight")}}class T{static API_MAP={feishu:"/api/feishuRobotText",wechat:"/api/wechatRobotText"};constructor(t,e){this.client=t,this.params={},this.mode=e}content(t){return this.params.content=t?.replace(/\r?\n/g," "),this}async _execute(){const t=T.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}class x{constructor(t){this.client=t,this.payload={}}title(t){return this.payload.title=t,this}content(t){return this.payload.content=t?.replace(/\r?\n/g," "),this}to(t){return this.payload.to=t,this}params(t={}){return this.payload.params=t,this}async _execute(){return await this.client.request("/common/mail/send",{method:"POST",body:JSON.stringify(this.payload)})}then(t,e){this._execute().then(t,e)}}function A(t){return{feishuRobot:()=>new T(t,"feishu"),wechatRobot:()=>new T(t,"wechat"),mail:()=>new x(t)}}class I{static API_MAP={text2pic:"/api/word2pic",text2tts:"/api/text/tts"};constructor(t,e){this.client=t,this.params={model:"gemini-3-pro-image-preview"},this.mode=e}text(t){return this.params.text=t,this}file(t){return this.params.file=t,this}model(t){return this.params.model=t,this}async _execute(){const t=I.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class k{constructor(t){this.client=t}async uploadFile(t,e="mp3",s="audio/mpeg"){const r=await this.client.request("/common/uploadByUrl",{method:"POST",body:JSON.stringify({fileUrl:t,formatter:e,contentType:s})});return console.log("uploadFile response:",r),r}}class O extends k{constructor(t){super(t),this.params={}}text(t){return this.params.text=t,this}speaker(t){return this.params.speaker=t,this}createTask(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");let e=this.params.speaker;e&&""!==e||(e="zh_female_cancan_mars_bigtts");let s={text:t,speaker:e};const r=this.client.request("/api/ttsTask",{method:"POST",body:JSON.stringify(s)});return this._taskId=r.data,r}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");let s={taskId:e};return await this.client.request("/api/queryTts",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=await this.createTask();console.log("====TTS任务创建成功:====",t);const e=t.data.task_id;if(!e)throw new Error("任务创建失败,未返回任务ID");let s=0;for(;2!==s;){const t=await this.queryTask(e);if(s=t.data?.task_status||0,2===s){const e=await this.uploadFile(t.data.audio_url);return t.data=e.data,t}if(3===s)return t;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}class v{constructor(t){this.client=t,this.params={}}text(t){return this.params.text=t,this}prompt(t){return this.params.prompt=t,this}conversationId(t){return this.params.conversationId=t,this}async _execute(){const{text:t,prompt:e="",conversationId:s=""}=this.params,r={prompt:e,query:t,conversation_id:s,user:this.client.getApiKey(),files:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(r)})}then(t,e){this._execute().then(t,e)}}class N extends v{constructor(t){super(t)}url(t){return this.params.url=t,this}async _execute(){const{url:t,prompt:e,text:s,conversationId:r=""}=this.params,i=[{type:"image",transfer_method:"remote_url",url:t}],a={prompt:e,query:s,conversation_id:r,user:this.client.getApiKey(),files:t?i:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(a)})}then(t,e){this._execute().then(t,e)}}class M extends k{static CREATE_API_MAP={video:"/api/text2video",audio:"/api/text2music"};static QUERY_API_MAP={video:"/api/queryVideo",audio:"/api/queryMusic"};constructor(t,e){super(t),this.params={},this.mode=e,this._taskId=null}text(t){return this.params.text=t,this}createTask(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");const e=M.CREATE_API_MAP[this.mode];let s={};s="video"===this.mode?{text:t}:{prompt:this.cleanString(t)};const r=this.client.request(e,{method:"POST",body:JSON.stringify(s)});return this._taskId=r.data,r}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");const s=M.QUERY_API_MAP[this.mode];let r={};return r="video"===this.mode?{id:e}:{TaskID:e},await this.client.request(s,{method:"POST",body:JSON.stringify(r)})}async _execute(){const t=await this.createTask();console.log("任务创建成功:",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");if("video"===this.mode){let t="";for(;"succeeded"!==t;){const s=await this.queryTask(e);if(t=s.data?.status||"","succeeded"===t){const t=await this.uploadFile(s.data.content.video_url,"mp4","video/mp4");return s.data.content.video_url=t.data,s}if("failed"===t)return s;await new Promise(t=>setTimeout(t,2e3))}}else{let t=0;for(;2!==t;){const s=await this.queryTask(e);if(t=s.data?.Status||0,2===t){const t=await this.uploadFile(s.data.SongDetail.AudioUrl,"mp3","audio/mpeg");return s.data.SongDetail.AudioUrl=t.data,s}if(3===t)return s;await new Promise(t=>setTimeout(t,2e3))}}}then(t,e){this._execute().then(t,e)}cleanString(t){return t?(t=(t=(t=t.toString()).replace(/[\n\r\t]+/g,",")).replace(/\s{2,}/g,",")).trim():t}}class C extends k{constructor(t,e){super(t),this.params={},this.mode=e,this.params.serverId="video"===e?0xb6540c7b88083:"frame"===e?7809632936052886:0x906a2f709413b}templateId(t){return this.params.templateId=t,this}serverId(t){return this.params.serverId=t,this}resourceList(t){return this.params.resourceList=t,this}createHuoshanTemplateTask(){const t=this.params.templateId,e=this.params.serverId,s=this.params.resourceList;if(!t||!e)throw new Error("模版Id或服务Id不能为空");if(s.length<1)throw new Error("图片不能为空");let r={templateId:t,serverId:e,resourceList:s};const i=this.client.request("/api/AIEffectsTemplateTask",{method:"POST",body:JSON.stringify(r)});return this._taskId=i.data,i}async queryHuoshanTemplateTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");let s={TaskId:e};return await this.client.request("/api/QueryAIEffectsTemplateTaskResult",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=await this.createHuoshanTemplateTask();console.log("====AI特效模版任务创建成功:====",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");let s=1e3;for(;0!==s;){const t=await this.queryHuoshanTemplateTask(e);if(s=t.data?.Code,0===s){let e="";return"video"!==this.mode&&"frame"!==this.mode||(e=await this.uploadFile(t.data.ResultUrl,"mp4","video/mp4")),"image"===this.mode&&(e=await this.uploadFile(t.data.ResultUrl,"png","image/png")),t.data.ResultUrl=e.data,t}if(2e3===s)return t;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}function E(t){return{textToImage:()=>new I(t,"text2pic"),textToSpeech:()=>new O(t),imageToText:()=>new N(t),chat:()=>new v(t),textToVideo:()=>new M(t,"video"),textToAudio:()=>new M(t,"audio"),imageToVideoEffect:()=>new C(t,"video"),imageToImageEffect:()=>new C(t,"image"),imageToVideoFrameEffect:()=>new C(t,"frame")}}class J{static API_MAP={web:"/api/webSearch",video:"/api/webSearch",image:"/api/webSearch"};constructor(t,e){this.client=t,this._params={type:e,top_k:20,site:[]},this._type=e}content(t){return this._params.content=t,this}type(t){if(!J.API_MAP[t])throw new Error(`Unsupported search type: ${t}`);return this._type=t,this._params.type=t,this}site(t){return this._params.site||(this._params.site=[]),null==t||this._params.site.push(t),this}async _execute(){const t=J.API_MAP[this._type];return await this.client.request(t,{method:"POST",body:JSON.stringify(this._params)})}then(t,e){return this._execute().then(t,e)}}function D(t){return{search:()=>new J(t,"web"),webSearch:()=>new J(t,"web"),videoSearch:()=>new J(t,"video"),imageSearch:()=>new J(t,"image")}}const R=new class{constructor(){this.plugins=new Map,this.pluginModules=new Map}register(t,e){if(this.plugins.has(t))console.warn(`Plugin ${t} is already registered`);else{if(!this.validatePlugin(e))throw console.log(`Invalid plugin module for ${t}:`,{type:typeof e,value:e,constructor:e?.constructor?.name,keys:"object"==typeof e?Object.keys(e):"N/A"}),new Error(`Invalid plugin module structure for ${t}`);this.plugins.set(t,{name:t,module:e,initialized:!1}),console.log(`Plugin ${t} registered successfully`)}}validatePlugin(t){return null!=t&&("function"==typeof t||"object"==typeof t&&!Array.isArray(t))}init(t,e){const s=this.plugins.get(t);if(!s)throw new Error(`Plugin ${t} not found`);let r;if("function"!=typeof s.module&&"object"!=typeof s.module)throw new Error(`Invalid plugin module type for ${t}`);return r=s.module,s.initialized=!0,"function"==typeof r.init&&r.init(),r}getRegisteredPlugins(){return Array.from(this.plugins.keys())}isRegistered(t){return this.plugins.has(t)}unregister(t){this.plugins.has(t)&&(this.plugins.delete(t),console.log(`Plugin ${t} unregistered`))}};class B{constructor(t){this.client=t,this._params={}}interval(t){return this._params.interval=t,this}vsCurrency(t){return this._params.vsCurrency=t,this}days(t){return this._params.days=t,this}async query(){return await this.client.request("/api/historytrend",{method:"POST",body:JSON.stringify({interval:this._params.interval,vs_currency:this._params.vsCurrency,days:this._params.days})})}then(t,e){return this.query().then(t,e)}catch(t){return this.query().catch(t)}}function F(t){return{historytrend:()=>new B(t)}}class ${static API_MAP={googleSearch:"/api/googleSearch"};constructor(t){this.client=t,this.params={}}content(t){return this.params.content=t,this}num(t){return this.params.num=t,this}type(t){return this.params.type=t,this}async _execute(){const t=$.API_MAP.googleSearch;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function L(t){return{search:()=>new $(t)}}class U{static API_MAP={list:"/api/queryToutiaoIndex",content:"/api/queryToutiaoContent",NewsByCategory:"/api/NewsByCategory",NewsByRegion:"/api/NewsByRegion"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}page(t){return this.params.page=t,this}page_size(t){return this.params.pageSize=t,this}is_filter(t){return this.params.isFilter=t,this}uniquekey(t){return this.params.uniquekey=t,this}category(t){return this.params.category=t,this}region(t){return this.params.region=t,this}async _execute(){const t=U.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function W(t){return{queryToutiaoIndex:()=>new U(t,"list"),queryToutiaoContent:()=>new U(t,"content"),queryNYNewsByCategory:()=>new U(t,"NewsByCategory"),queryNYNewsByRegion:()=>new U(t,"NewsByRegion")}}class z{static API_MAP={nationalWeather:"/api/nationalWeather",internationalWeather:"/api/weather"};constructor(t,e){this.client=t,this.mode=e,this.params={}}city(t){return"nationalWeather"!==this.mode&&console.warn("city 参数仅适用于 nationalWeather 模式"),this.params.city=t,this}latitude(t){return"internationalWeather"!==this.mode&&console.warn("latitude 参数仅适用于 internationalWeather 模式"),this.params["location.latitude"]=t,this}longitude(t){return"internationalWeather"!==this.mode&&console.warn("longitude 参数仅适用于 internationalWeather 模式"),this.params["location.longitude"]=t,this}async _execute(){this._validateParams();const t=z.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}_validateParams(){if("nationalWeather"===this.mode){if(!this.params.city)throw new Error("nationalWeather 模式需要提供 city 参数")}else if(!("internationalWeather"!==this.mode||this.params["location.latitude"]&&this.params["location.longitude"]))throw new Error("internationalWeather 模式需要提供 latitude 和 longitude 参数")}then(t,e){return this._execute().then(t,e)}}function j(t){return{queryNationalWeather:()=>new z(t,"nationalWeather"),queryWeather:()=>new z(t,"internationalWeather")}}class G{static API_MAP={frate:"/api/frate",rmbquot:"/api/rmbquot"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}bank(t){return this.params.bank=t,this}async _execute(){const t=G.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function H(t){return{frate:()=>new G(t,"frate"),rmbquot:()=>new G(t,"rmbquot")}}class K{static API_MAP={queryCaipu:"/api/queryCaipu",RandomRecipes:"/api/RandomRecipes",MealPlan:"/api/MealPlan"};constructor(t,e){this.client=t,this.params={},this.mode=e}word(t){return this.params.word=t,this}num(t){return this.params.num=t,this}page(t){return this.params.page=t,this}tags(t){return this.params.tags=t,this}number(t){return this.params.number=t,this}timeFrame(t){return this.params.timeFrame=t,this}targetCalories(t){return this.params.targetCalories=t,this}diet(t){return this.params.diet=t,this}exclude(t){return this.params.exclude=t,this}async _execute(){const t=K.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Y(t){return{queryIngredients:()=>new K(t,"queryCaipu"),queryDishName:()=>new K(t,"queryCaipu"),query:()=>new K(t,"queryCaipu"),queryRandomRecipes:()=>new K(t,"RandomRecipes"),queryMealPlan:()=>new K(t,"MealPlan")}}class V{static API_MAP={queryCarPrice:"/api/queryCarPrice"};constructor(t){this.client=t,this.params={}}search(t){return this.params.search=t,this}async _execute(){const t=V.API_MAP.queryCarPrice;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Q(t){return{query:()=>new V(t)}}class X{static API_MAP={queryDiseaseByName:"/api/queryDiseaseByName"};constructor(t){this.client=t,this.params={}}word(t){return this.params.word=t,this}async _execute(){const t=X.API_MAP.queryDiseaseByName;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Z(t){return{query:()=>new X(t)}}class tt{static API_MAP={queryCalorie:"/api/queryCalorie"};constructor(t){this.client=t,this.params={}}sex(t){return this.params.sex=t,this}height(t){return this.params.height=t,this}weight(t){return this.params.weight=t,this}age(t){return this.params.age=t,this}level(t){return this.params.level=t,this}async _execute(){const t=tt.API_MAP.queryCalorie;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function et(t){return{query:()=>new tt(t)}}class st{static API_MAP={nationalGoldprice:"/api/nationalGoldprice"};constructor(t){this.client=t,this.params={}}async _execute(){const t=st.API_MAP.nationalGoldprice;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function rt(t){return{query:()=>new st(t)}}class it{static API_MAP={youtubeSearch:"/api/youtubeSearch"};constructor(t){this.client=t,this.params={}}q(t){return this.params.q=t,this}type(t){return this.params.type=t,this}async _execute(){const t=it.API_MAP.youtubeSearch;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function at(t){return{search:()=>new it(t)}}class nt{static API_MAP={queryTimezone:"/api/timezone"};constructor(t){this.client=t,this.params={}}location(t){return this.params.location=t,this}timestamp(t){return this.params.timestamp=t,this}async _execute(){const t=nt.API_MAP.queryTimezone;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function ot(t){return{search:()=>new nt(t)}}class ht{static API_MAP={queryNationalScenic:"/api/queryNationalScenic",restaurantsSearch:"/api/restaurantsSearch",hotelsSearch:"/api/hotelsSearch",attractionSearch:"/api/attractionSearch"};constructor(t,e){this.client=t,this.params={},this.model=e}word(t){return this.params.word=t,this}num(t){return this.params.num=t,this}page(t){return this.params.page=t,this}province(t){return this.params.province=t,this}city(t){return this.params.city=t,this}query(t){return this.params.query=t,this}async _execute(){const t=ht.API_MAP[this.model];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function ct(t){return{query:()=>new ht(t,"queryNationalScenic"),queryRestaurantsSearch:()=>new ht(t,"restaurantsSearch"),queryHotelsSearch:()=>new ht(t,"hotelsSearch"),queryAttractionSearch:()=>new ht(t,"attractionSearch")}}class ut{static API_MAP={queryFootballMatch:"/api/queryFootballMatch",footballRank:"/api/footballRank"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}async _execute(){const t=ut.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function lt(t){return{match:()=>new ut(t,"queryFootballMatch"),rank:()=>new ut(t,"footballRank")}}class dt{static API_MAP={hsStock:"/api/hsStock",usaStock:"/api/usaStock",usaall:"/api/usaall",szall:"/api/szall",shall:"/api/shall"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.gid=t,this}type(t){return this.params.type=t,this}stock(t){return this.params.stock=t,this}page(t){return this.params.page=t,this}async _execute(){const t=dt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function pt(t){return{queryHs:()=>new dt(t,"hsStock"),queryHk:()=>new yt(t,"hkStock"),queryUsa:()=>new dt(t,"usaStock"),queryHkAll:()=>new yt(t,"hkall"),queryUsaAll:()=>new dt(t,"usaall"),querySzAll:()=>new dt(t,"szall"),queryShAll:()=>new dt(t,"shall"),queryTimeDaily:()=>new mt(t,"TimeDaily"),queryCurrencyExchange:()=>new mt(t,"CurrencyExchange"),queryDigitalCurrencyDaily:()=>new mt(t,"DigitalCurrencyDaily"),queryTechnicalIndicators:()=>new mt(t,"TechnicalIndicators")}}class mt{static API_MAP={TimeDaily:"/api/TimeDaily",CurrencyExchange:"/api/CurrencyExchange",DigitalCurrencyDaily:"/api/DigitalCurrencyDaily",TechnicalIndicators:"/api/TechnicalIndicators"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.symbol=t,this}to_currency(t){return this.params.to_currency=t,this}from_currency(t){return this.params.from_currency=t,this}market(t){return this.params.market=t,this}time_period(t){return this.params.time_period=t,this}interval(t){return this.params.interval=t,this}series_type(t){return this.params.series_type=t,this}async _execute(){const t=mt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class yt{static API_MAP={hkStock:"/api/hkStock",hkall:"/api/hkall"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.num=t,this}page(t){return this.params.page=t,this}async _execute(){const t=yt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class gt{static API_MAP={SearchCocktail:"/api/SearchCocktail",ListPopularCocktails:"/api/ListPopularCocktails",ListMostLatestCocktails:"/api/ ListMostLatestCocktails",GetBeersDataByBreweryOrBrand:"/api/GetBeersDataByBreweryOrBrand",GetBeersDataByName:"/api/GetBeersDataByName"};constructor(t,e){this.client=t,this.params={},this.mode=e}s(t){return this.params.s=t,this}brewery(t){return this.params.brewery=t,this}name(t){return this.params.name=t,this}async _execute(){const t=gt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function wt(t){return{queryCocktail:()=>new gt(t,"SearchCocktail"),queryPopularCocktails:()=>new gt(t,"ListPopularCocktails"),queryLatestCocktails:()=>new gt(t,"ListMostLatestCocktails"),queryBeersData:()=>new gt(t,"GetBeersDataByBreweryOrBrand"),queryBeersDataByName:()=>new gt(t,"GetBeersDataByName")}}class _t{constructor(t){this.client=t,this.params={}}userId(t){return this.params.userId=t,this}text(t){return this.params.text=t,this}putMessage(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");const e=this.params.userId;if(!e)throw new Error("用户不能为空");let s={userId:e,text:t};return this.client.request("/clawdbot/chat",{method:"POST",body:JSON.stringify(s)})}async getMessage(t){const e="/clawdbot/chat?messageId="+t;return await this.client.request(e,{method:"GET"})}async _execute(){const t=(await this.putMessage()).data;for(;;){const e=await this.getMessage(t);if(e.data)return e;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}function ft(t){return{chat:()=>new _t(t)}}t.createClient=function(t){const e=new r(t),s={setToken:t=>e.setToken(t),getToken:()=>e.getToken(),auth:i(e),db:h(e),api:u(e),comparison:d(e),document:m(e),logistics:g(e),location:S(e),travel:b(e),notification:A(e),ai:E(e),baidu:D(e),bitcoin:F(e),google:L(e),news:W(e),weather:j(e),money:H(e),caipu:Y(e),car:Q(e),disease:Z(e),calorie:et(e),goldprice:rt(e),youtube:at(e),timezone:ot(e),scenic:ct(e),football:lt(e),stock:pt(e),wine:wt(e),clawdbot:ft(e)};return R.getRegisteredPlugins().forEach(t=>{try{const r=R.init(t,e);s[t]?(console.warn(`Plugin "${t}" conflicts with built-in module. Merging plugin methods into existing module.`),Object.assign(s[t],r)):s[t]=r}catch(e){console.error(`Failed to load plugin ${t}:`,e)}}),s},t.pluginLoader=R});
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).aipexbase={})}(this,function(t){"use strict";const e={getItem(t){try{return localStorage.getItem(t)}catch(t){return console.warn("No localStorage available"),null}},setItem(t,e){try{localStorage.setItem(t,e)}catch(t){console.warn("Cannot write to localStorage")}},removeItem(t){try{localStorage.removeItem(t)}catch(t){console.warn("Cannot remove from localStorage")}}},s=async(t,e)=>(await fetch(t,e)).json();class r{constructor({baseUrl:t,apiKey:r,storage:a,request:i}){this.baseUrl=t,this.apiKey=r,this.storage=a||e,this.requestImpl=i||s}getApiKey(){return this.apiKey}setToken(t){t?this.storage.setItem("baas_token",t):this.storage.removeItem("baas_token")}getToken(){return this.storage.getItem("baas_token")}async request(t,e={}){const s=`${this.baseUrl}${t}`,r={"Content-Type":"application/json",CODE_FLYING:`${this.apiKey}`,...this.getToken()?{Authorization:`Bearer ${this.getToken()}`}:{},...e.headers||{}},a=await this.requestImpl(s,{...e,headers:r});return console.log("url: ",s,"\n header:",r,"\n response:",a),a}}function a(t){return{async login({user_name:e,phone:s,email:r,password:a}={}){const i=e||s||r;if(!i)throw new Error("必须提供 user_name、phone 或 email 之一");if(!a)throw new Error("必须提供 password");const n=await t.request("/login/passwd",{method:"POST",body:JSON.stringify({phone:i,password:a})});return n.success&&t.setToken(n.data),n},async loginByEmailAndCode({email:e,code:s}={}){const r=await t.request("/login/mail",{method:"POST",body:JSON.stringify({phone:e,code:s})});return r.success&&t.setToken(r.data),r},async loginByPhoneAndCode({phone:e,code:s}={}){const r=await t.request("/login/phone",{method:"POST",body:JSON.stringify({phone:e,code:s})});return r.success&&t.setToken(r.data),r},async loginByWeChat({code:e}={}){const s=await t.request("/login/wechat",{method:"POST",body:JSON.stringify({code:e})});return s.success&&t.setToken(s.data),s},async loginByWeApp({code:e}={}){const s=await t.request("/login/weapp",{method:"POST",body:JSON.stringify({code:e})});return s.success&&t.setToken(s.data),s},getUser:async()=>t.request("/getUserInfo",{method:"GET"}),register:async e=>await t.request("/login/register",{method:"POST",body:JSON.stringify(e)}),logout:async()=>(t.setToken(null),t.request("/logout",{method:"GET"})),loginOauth2Uri:async({provider:e}={})=>await t.request("/oauth2/authorize/"+e,{method:"GET"})}}class i{constructor(t,e){this.client=t,this.table=e,this._body=null,this._method=""}list(){return new n(this.client,this.table,"list")}page(){return new n(this.client,this.table,"page")}get(){return new n(this.client,this.table,"get")}insert(){return new o(this.client,this.table,"add")}update(){return new o(this.client,this.table,"update")}delete(){return new n(this.client,this.table,"delete")}}class n{constructor(t,e,s){this.client=t,this.table=e,this.method=s,this.filters={}}_addFilter(t,e,s){return this.filters.hasOwnProperty(t)||(this.filters[t]={}),this.filters[t][e]=s,this}eq(t,e){return this._addFilter(t,"eq",e)}neq(t,e){return this._addFilter(t,"neq",e)}gt(t,e){return this._addFilter(t,"gt",e)}gte(t,e){return this._addFilter(t,"gte",e)}lt(t,e){return this._addFilter(t,"lt",e)}lte(t,e){return this._addFilter(t,"lte",e)}like(t,e){return this._addFilter(t,"like",e)}in(t,e){return this._addFilter(t,"in",e)}between(t,e){return this._addFilter(t,"between",e)}or(t){this.filters.or||(this.filters.or=[]);const e=new n(this.client,this.table,"or");return t(e),this.filters.or.push(e.build()),this}limit(t){return this}page(t,e){return this.filters.current=t,this.filters.pageSize=e,this}order(t,e="asc"){this.filters.order_by||(this.filters.order_by=[]);let s="asc";return"string"==typeof e?s=e.toLowerCase():"object"==typeof e&&null!==e&&("ascending"in e?s=e.ascending?"asc":"desc":"direction"in e&&(s=e.direction.toLowerCase())),this.filters.order_by.push({field:t,direction:s}),this}build(){return this.filters}async _execute(){return await this.client.request(`/api/data/invoke?table=${this.table}&method=${this.method}`,{method:"POST",body:this.filters?JSON.stringify(this.filters):void 0})}then(t,e){this._execute().then(t,e)}}class o extends n{constructor(t,e,s){super(t,e,s),this.data={}}values(t){return this.data={...t},this}set(t){return this.data={...t},this}build(){return{...this.filters,...this.data}}async _execute(){return await this.client.request(`/api/data/invoke?table=${this.table}&method=${this.method}`,{method:"POST",body:JSON.stringify(this.build())})}then(t,e){this._execute().then(t,e)}}function h(t){return{from:e=>new i(t,e)}}class c{constructor(t,e){this.client=t,this.apiName=e,this._params={},this._headers={},this._method="POST"}param(t,e){return this._params[t]=e,this}params(t){return Object.assign(this._params,t),this}header(t,e){return this._headers[t]=e,this}headers(t){return Object.assign(this._headers,t),this}async _execute(){const t=JSON.stringify(this._params),e=`/api/${this.apiName}`;return await this.client.request(e,{method:this._method,headers:this._headers,body:t})}then(t,e){this._execute().then(t,e)}}function u(t){return{call:e=>new c(t,e)}}class l{static API_MAP={search:"/api/bijia_spu_search",compare:"/api/bijia_spu_goods_search"};constructor(t,e){this.client=t,this._params={},this.type=e}keyword(t){return this._params.query=t,this}setParams(t={}){return Object.assign(this._params,t),this}type(t){if(!l.API_MAP[t])throw new Error(`Unsupported comparison type: ${t}`);return this.type=t,this}async _execute(){const t=l.API_MAP[this.type];return await this.client.request(t,{method:"POST",body:JSON.stringify(this._params)})}then(t,e){this._execute().then(t,e)}}function m(t){return{searchProduct:()=>new l(t,"search"),findLowestPrice:()=>new l(t,"compare")}}class p{constructor(t){this.client=t,this._params={},this._taskId=null,this._pollingInterval=2e3,this._maxRetries=30}url(t){return this._params.url=t,this._params.format="pdf-to-image",this}format(t="pdf-to-image"){return this._params.format=t,this}pollingInterval(t){return this._pollingInterval=t,this}maxRetries(t){return this._maxRetries=t,this}async createTask(){if(!this._params.url)throw new Error("PDF文件URL不能为空");const t=await this.client.request("/api/pdf2image",{method:"POST",body:JSON.stringify({url:this._params.url,format:this._params.format})});return this._taskId=t.data,t}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");return await this.client.request("/api/queryPDF2ImageTask",{method:"POST",body:JSON.stringify({taskId:e})})}async convert(){try{console.log("开始创建PDF转图片任务...");const t=await this.createTask();console.log("任务创建成功:",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");console.log("开始轮询查询任务状态...");let s=0;for(;s<this._maxRetries;){const t=await this.queryTask(e);console.log(`第${s+1}次查询结果:`,t);const r=t.data?.state;if(1===r)return console.log("PDF转图片任务完成:",t.data),t;if(r<0)return console.log("PDF转图片任务失败,状态码:",r),t;s++,s<this._maxRetries&&(console.log(`等待${this._pollingInterval}ms后进行第${s+1}次查询...`),await new Promise(t=>setTimeout(t,this._pollingInterval)))}throw new Error(`PDF转图片任务超时,已重试${this._maxRetries}次`)}catch(t){throw console.error("PDF转图片失败:",t),t}}then(t,e){return this.convert().then(t,e)}catch(t){return this.convert().catch(t)}}function d(t){return{convertPdf:()=>new p(t),async quickConvert(e={}){const s=new p(t);return e.url&&s.url(e.url),e.format&&s.format(e.format),e.pollingInterval&&s.pollingInterval(e.pollingInterval),e.maxRetries&&s.maxRetries(e.maxRetries),await s.convert()}}}class y{constructor(t){this.client=t,this._params={}}company(t){return this._params.com=t,this}trackingNumber(t){return this._params.num=t,this}phone(t){return this._params.phone=t,this}_validateParams(){if(!this._params.com)throw new Error("快递公司代码不能为空");if(!this._params.num)throw new Error("快递单号不能为空");if(("shunfeng"===this._params.com||"shunfengkuaiyun"===this._params.com)&&!this._params.phone)throw new Error("顺丰快递必须提供手机号参数")}async track(){return this._validateParams(),await this.client.request("/api/expressInquiry",{method:"POST",body:JSON.stringify({com:this._params.com,num:this._params.num,resultv2:4,...this._params.phone?{phone:this._params.phone}:{}})})}then(t,e){return this.track().then(t,e)}catch(t){return this.track().catch(t)}}function g(t){return{trackPackage:()=>new y(t)}}class _{static LOCATION_MAP={location:"/api/geocoder",address:"/api/geoaddress"};constructor(t,e){this.client=t,this._params={},this.type=e}latitude(t){return this._params.latitude=t,this}longitude(t){return this._params.longitude=t,this}address(t){return this._params.address=t,this}_validateLocationParams(){if(!this._params.latitude||!this._params.longitude)throw new Error("经纬度参数不能为空")}_validateAddressParams(){if(!this._params.address)throw new Error("地址参数不能为空")}_data(){return"location"===this.type?(this._validateLocationParams(),{location:`${this._params.latitude},${this._params.longitude}`}):(this._validateAddressParams(),{address:this._params.address})}async _execute(){const t=_.LOCATION_MAP[this.type],e=this._data();let s=await this.client.request(t,{method:"POST",body:JSON.stringify(e)}),r=s;return"data"in s&&"result"in s.data&&(r.result=s.data.result,r.result.latitude=s.data.result.location.lat,r.result.longitude=s.data.result.location.lng,r.status=s.data.status),r}then(t,e){this._execute().then(t,e)}}class w{constructor(t){this.client=t}async _execute(){const t=await this.client.request("/api/amap_ip_location",{method:"POST",body:JSON.stringify({})}),e=t?.data?.rectangle;if(!e)throw new Error("返回数据中缺少 rectangle 字段");const[s,r]=e.split(";"),[a,i]=s.split(",").map(Number),[n,o]=r.split(",").map(Number);return{success:!0,latitude:(i+o)/2,longitude:(a+n)/2,speed:0,altitude:0,horizontalAccuracy:1e3}}then(t,e){this._execute().then(t,e)}}class f{constructor(t){this.client=t,this._params={}}from(t,e){return this._params.from={lat:t,lng:e},this}to(t,e){return this._params.to={lat:t,lng:e},this}decodePolyline(t){for(let e=2;e<t.length;e++)t[e]=t[e-2]+t[e]/1e6;return t}async _execute(){const{from:t,to:e}=this._params;if(!t||!e)throw new Error("必须提供起点和终点坐标");const s={from:`${t.lat},${t.lng}`,to:`${e.lat},${e.lng}`},r=await this.client.request("/api/driving",{method:"POST",body:JSON.stringify(s)}),{routes:a}=r.data.result;return{success:!0,data:{paths:a.map(t=>{const e=this.decodePolyline([...t.polyline]),s=t.steps.map(t=>{const{polyline_idx:[s,r]}=t,a=[];for(let t=s;t<=r;t+=2)a.push({latitude:e[t],longitude:e[t+1]});return{...t,polylines:a}});return{distance:t.distance,duration:t.duration,steps:s}})}}}then(t,e){this._execute().then(t,e)}}class P{constructor(t){this.client=t,this._params={}}lat(t){return this._params.lat=t,this}lng(t){return this._params.lng=t,this}radius(t){return this._params.radius=t,this}keyword(t){return this._params.keyword=t,this}async _execute(){const{lat:t,lng:e,radius:s=1e3,keyword:r}=this._params;if(!t||!e)throw new Error("必须提供经纬度参数");const a={boundary:`nearby(${t},${e},${s})`,...r&&{keyword:r}};return{success:!0,data:(await this.client.request("/api/mapsearch",{method:"POST",body:JSON.stringify(a)})).data.map(t=>({...t,latitude:t.location.lat,longitude:t.location.lng}))}}then(t,e){this._execute().then(t,e)}}function q(t){return{locationToAddress:()=>new _(t,"location"),addressToLocation:()=>new _(t,"address"),currentLocation:()=>new w(t),driving:()=>new f(t),nearby:()=>new P(t)}}class S{static API_MAP={train:"/api/queryTickets",flight:"/api/queryFlight"};constructor(t,e){this.client=t,this.params={},this.mode=e}from(t){return this.params.from=t,this}to(t){return this.params.to=t,this}date(t){return this.params.date=t,this}async _execute(){const t=S.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function T(t){return{train:()=>new S(t,"train"),flight:()=>new S(t,"flight")}}class b{static API_MAP={feishu:"/api/feishuRobotText",wechat:"/api/wechatRobotText"};constructor(t,e){this.client=t,this.params={},this.mode=e}content(t){return this.params.content=t?.replace(/\r?\n/g," "),this}async _execute(){const t=b.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}class k{constructor(t){this.client=t,this.payload={}}title(t){return this.payload.title=t,this}content(t){return this.payload.content=t?.replace(/\r?\n/g," "),this}to(t){return this.payload.to=t,this}params(t={}){return this.payload.params=t,this}async _execute(){return await this.client.request("/common/mail/send",{method:"POST",body:JSON.stringify(this.payload)})}then(t,e){this._execute().then(t,e)}}function x(t){return{feishuRobot:()=>new b(t,"feishu"),wechatRobot:()=>new b(t,"wechat"),mail:()=>new k(t)}}class A{static API_MAP={text2pic:"/api/word2pic",text2tts:"/api/text/tts"};constructor(t,e){this.client=t,this.params={model:"gemini-3-pro-image-preview"},this.mode=e}text(t){return this.params.text=t,this}file(t){return this.params.file=t,this}model(t){return this.params.model=t,this}async _execute(){const t=A.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class I{constructor(t){this.client=t}async uploadFile(t,e="mp3",s="audio/mpeg"){const r=await this.client.request("/common/uploadByUrl",{method:"POST",body:JSON.stringify({fileUrl:t,formatter:e,contentType:s})});return console.log("uploadFile response:",r),r}}class O extends I{constructor(t){super(t),this.params={}}text(t){return this.params.text=t,this}speaker(t){return this.params.speaker=t,this}createTask(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");let e=this.params.speaker;e&&""!==e||(e="zh_female_cancan_mars_bigtts");let s={text:t,speaker:e};const r=this.client.request("/api/ttsTask",{method:"POST",body:JSON.stringify(s)});return this._taskId=r.data,r}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");let s={taskId:e};return await this.client.request("/api/queryTts",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=await this.createTask();console.log("====TTS任务创建成功:====",t);const e=t.data.task_id;if(!e)throw new Error("任务创建失败,未返回任务ID");let s=0;for(;2!==s;){const t=await this.queryTask(e);if(s=t.data?.task_status||0,2===s){const e=await this.uploadFile(t.data.audio_url);return t.data=e.data,t}if(3===s)return t;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}class v{constructor(t){this.client=t,this.params={}}text(t){return this.params.text=t,this}prompt(t){return this.params.prompt=t,this}conversationId(t){return this.params.conversationId=t,this}async _execute(){const{text:t,prompt:e="",conversationId:s=""}=this.params,r={prompt:e,query:t,conversation_id:s,user:this.client.getApiKey(),files:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(r)})}then(t,e){this._execute().then(t,e)}}class N extends v{constructor(t){super(t)}url(t){return this.params.url=t,this}async _execute(){const{url:t,prompt:e,text:s,conversationId:r=""}=this.params,a=[{type:"image",transfer_method:"remote_url",url:t}],i={prompt:e,query:s,conversation_id:r,user:this.client.getApiKey(),files:t?a:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(i)})}then(t,e){this._execute().then(t,e)}}class M extends I{static CREATE_API_MAP={video:"/api/text2video",audio:"/api/text2music"};static QUERY_API_MAP={video:"/api/queryVideo",audio:"/api/queryMusic"};constructor(t,e){super(t),this.params={},this.mode=e,this._taskId=null}text(t){return this.params.text=t,this}createTask(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");const e=M.CREATE_API_MAP[this.mode];let s={};s="video"===this.mode?{text:t}:{prompt:this.cleanString(t)};const r=this.client.request(e,{method:"POST",body:JSON.stringify(s)});return this._taskId=r.data,r}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");const s=M.QUERY_API_MAP[this.mode];let r={};return r="video"===this.mode?{id:e}:{TaskID:e},await this.client.request(s,{method:"POST",body:JSON.stringify(r)})}async _execute(){const t=await this.createTask();console.log("任务创建成功:",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");if("video"===this.mode){let t="";for(;"succeeded"!==t;){const s=await this.queryTask(e);if(t=s.data?.status||"","succeeded"===t){const t=await this.uploadFile(s.data.content.video_url,"mp4","video/mp4");return s.data.content.video_url=t.data,s}if("failed"===t)return s;await new Promise(t=>setTimeout(t,2e3))}}else{let t=0;for(;2!==t;){const s=await this.queryTask(e);if(t=s.data?.Status||0,2===t){const t=await this.uploadFile(s.data.SongDetail.AudioUrl,"mp3","audio/mpeg");return s.data.SongDetail.AudioUrl=t.data,s}if(3===t)return s;await new Promise(t=>setTimeout(t,2e3))}}}then(t,e){this._execute().then(t,e)}cleanString(t){return t?(t=(t=(t=t.toString()).replace(/[\n\r\t]+/g,",")).replace(/\s{2,}/g,",")).trim():t}}class C extends I{constructor(t,e){super(t),this.params={},this.mode=e,this.params.serverId="video"===e?0xb6540c7b88083:"frame"===e?7809632936052886:0x906a2f709413b}templateId(t){return this.params.templateId=t,this}serverId(t){return this.params.serverId=t,this}resourceList(t){return this.params.resourceList=t,this}createHuoshanTemplateTask(){const t=this.params.templateId,e=this.params.serverId,s=this.params.resourceList;if(!t||!e)throw new Error("模版Id或服务Id不能为空");if(s.length<1)throw new Error("图片不能为空");let r={templateId:t,serverId:e,resourceList:s};const a=this.client.request("/api/AIEffectsTemplateTask",{method:"POST",body:JSON.stringify(r)});return this._taskId=a.data,a}async queryHuoshanTemplateTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");let s={TaskId:e};return await this.client.request("/api/QueryAIEffectsTemplateTaskResult",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=await this.createHuoshanTemplateTask();console.log("====AI特效模版任务创建成功:====",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");let s=1e3;for(;0!==s;){const t=await this.queryHuoshanTemplateTask(e);if(s=t.data?.Code,0===s){let e="";return"video"!==this.mode&&"frame"!==this.mode||(e=await this.uploadFile(t.data.ResultUrl,"mp4","video/mp4")),"image"===this.mode&&(e=await this.uploadFile(t.data.ResultUrl,"png","image/png")),t.data.ResultUrl=e.data,t}if(2e3===s)return t;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}class E extends I{constructor(t){super(t),this.params={},this.params.req_key="jimeng_t2i_v40",this.params.image_urls=[],this.params.scale=.5}image(t){return this.params.image_urls.push(t),this}scale(t){return this.params.scale=t,this}prompt(t){return this.params.prompt=t,this}createTask(){const{req_key:t,image_urls:e,prompt:s,scale:r}=this.params;let a={req_key:t,image_urls:e,prompt:s,scale:r};return this.client.request("/api/JMAI",{method:"POST",body:JSON.stringify(a)})}async queryTask(t){let e={req_key:"jimeng_t2i_v40",task_id:t};return await this.client.request("/api/JMAIQuery",{method:"POST",body:JSON.stringify(e)})}async _execute(){const t=(await this.createTask()).data.data.task_id;if(!t)throw new Error("任务创建失败,未返回任务ID");for(;;){const e=await this.queryTask(t);if("done"===e.data.data.status){const t=await this.uploadFile(e.data.data.image_urls[0],"png","image/png");return e.data=t.data,e}await new Promise(t=>setTimeout(t,2e3))}}then(t,e){this._execute().then(t,e)}}class J extends I{constructor(t){super(t),this.params={},this.params.image_urls=[]}image(t){return this.params.image_urls.push(t),this}prompt(t){return this.params.prompt=t,this}_getTaskReqKey(){let t="";const e=this.params.image_urls.length;if(0===e)t="jimeng_t2v_v30";else if(1===e)t="jimeng_i2v_first_v30";else{if(2!==e)throw new Error("不支持超过2张图片");t="jimeng_i2v_first_tail_v30"}return t}createTask(t){let e={};if("jimeng_t2v_v30"===t)e={req_key:t,prompt:this.params.prompt};else if("jimeng_i2v_first_v30"===t)e={req_key:t,image_urls:this.params.image_urls,prompt:this.params.prompt};else{if("jimeng_i2v_first_tail_v30"!==t)throw new Error("不支持超过2张图片");e={req_key:t,image_urls:this.params.image_urls,prompt:this.params.prompt}}return this.client.request("/api/JMAI",{method:"POST",body:JSON.stringify(e)})}async queryTask(t,e){let s={req_key:t,task_id:e};return await this.client.request("/api/JMAIQuery",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=this._getTaskReqKey(),e=await this.createTask(t);console.log("==============",e);const s=e.data.data.task_id;if(!s)throw new Error("任务创建失败,未返回任务ID");for(;;){const e=await this.queryTask(t,s);if("done"===e.data.data.status){const t=await this.uploadFile(e.data.data.video_url,"mp4","video/mp4");return e.data=t.data,e}await new Promise(t=>setTimeout(t,2e3))}}then(t,e){this._execute().then(t,e)}}function D(t){return{textToImage:()=>new A(t,"text2pic"),textToSpeech:()=>new O(t),imageToText:()=>new N(t),chat:()=>new v(t),textToVideo:()=>new M(t,"video"),textToAudio:()=>new M(t,"audio"),imageToVideoEffect:()=>new C(t,"video"),imageToImageEffect:()=>new C(t,"image"),imageToVideoFrameEffect:()=>new C(t,"frame"),jmTextToImage:()=>new E(t),jmGenToVideo:()=>new J(t)}}class R{static API_MAP={web:"/api/webSearch",video:"/api/webSearch",image:"/api/webSearch"};constructor(t,e){this.client=t,this._params={type:e,top_k:20,site:[]},this._type=e}content(t){return this._params.content=t,this}type(t){if(!R.API_MAP[t])throw new Error(`Unsupported search type: ${t}`);return this._type=t,this._params.type=t,this}site(t){return this._params.site||(this._params.site=[]),null==t||this._params.site.push(t),this}async _execute(){const t=R.API_MAP[this._type];return await this.client.request(t,{method:"POST",body:JSON.stringify(this._params)})}then(t,e){return this._execute().then(t,e)}}function B(t){return{search:()=>new R(t,"web"),webSearch:()=>new R(t,"web"),videoSearch:()=>new R(t,"video"),imageSearch:()=>new R(t,"image")}}const F=new class{constructor(){this.plugins=new Map,this.pluginModules=new Map}register(t,e){if(this.plugins.has(t))console.warn(`Plugin ${t} is already registered`);else{if(!this.validatePlugin(e))throw console.log(`Invalid plugin module for ${t}:`,{type:typeof e,value:e,constructor:e?.constructor?.name,keys:"object"==typeof e?Object.keys(e):"N/A"}),new Error(`Invalid plugin module structure for ${t}`);this.plugins.set(t,{name:t,module:e,initialized:!1}),console.log(`Plugin ${t} registered successfully`)}}validatePlugin(t){return null!=t&&("function"==typeof t||"object"==typeof t&&!Array.isArray(t))}init(t,e){const s=this.plugins.get(t);if(!s)throw new Error(`Plugin ${t} not found`);let r;if("function"!=typeof s.module&&"object"!=typeof s.module)throw new Error(`Invalid plugin module type for ${t}`);return r=s.module,s.initialized=!0,"function"==typeof r.init&&r.init(),r}getRegisteredPlugins(){return Array.from(this.plugins.keys())}isRegistered(t){return this.plugins.has(t)}unregister(t){this.plugins.has(t)&&(this.plugins.delete(t),console.log(`Plugin ${t} unregistered`))}};class ${constructor(t){this.client=t,this._params={}}interval(t){return this._params.interval=t,this}vsCurrency(t){return this._params.vsCurrency=t,this}days(t){return this._params.days=t,this}async query(){return await this.client.request("/api/historytrend",{method:"POST",body:JSON.stringify({interval:this._params.interval,vs_currency:this._params.vsCurrency,days:this._params.days})})}then(t,e){return this.query().then(t,e)}catch(t){return this.query().catch(t)}}function L(t){return{historytrend:()=>new $(t)}}class j{static API_MAP={googleSearch:"/api/googleSearch"};constructor(t){this.client=t,this.params={}}content(t){return this.params.content=t,this}num(t){return this.params.num=t,this}type(t){return this.params.type=t,this}async _execute(){const t=j.API_MAP.googleSearch;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function U(t){return{search:()=>new j(t)}}class W{static API_MAP={list:"/api/queryToutiaoIndex",content:"/api/queryToutiaoContent",NewsByCategory:"/api/NewsByCategory",NewsByRegion:"/api/NewsByRegion"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}page(t){return this.params.page=t,this}page_size(t){return this.params.pageSize=t,this}is_filter(t){return this.params.isFilter=t,this}uniquekey(t){return this.params.uniquekey=t,this}category(t){return this.params.category=t,this}region(t){return this.params.region=t,this}async _execute(){const t=W.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function z(t){return{queryToutiaoIndex:()=>new W(t,"list"),queryToutiaoContent:()=>new W(t,"content"),queryNYNewsByCategory:()=>new W(t,"NewsByCategory"),queryNYNewsByRegion:()=>new W(t,"NewsByRegion")}}class G{static API_MAP={nationalWeather:"/api/nationalWeather",internationalWeather:"/api/weather"};constructor(t,e){this.client=t,this.mode=e,this.params={}}city(t){return"nationalWeather"!==this.mode&&console.warn("city 参数仅适用于 nationalWeather 模式"),this.params.city=t,this}latitude(t){return"internationalWeather"!==this.mode&&console.warn("latitude 参数仅适用于 internationalWeather 模式"),this.params["location.latitude"]=t,this}longitude(t){return"internationalWeather"!==this.mode&&console.warn("longitude 参数仅适用于 internationalWeather 模式"),this.params["location.longitude"]=t,this}async _execute(){this._validateParams();const t=G.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}_validateParams(){if("nationalWeather"===this.mode){if(!this.params.city)throw new Error("nationalWeather 模式需要提供 city 参数")}else if(!("internationalWeather"!==this.mode||this.params["location.latitude"]&&this.params["location.longitude"]))throw new Error("internationalWeather 模式需要提供 latitude 和 longitude 参数")}then(t,e){return this._execute().then(t,e)}}function K(t){return{queryNationalWeather:()=>new G(t,"nationalWeather"),queryWeather:()=>new G(t,"internationalWeather")}}class H{static API_MAP={frate:"/api/frate",rmbquot:"/api/rmbquot"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}bank(t){return this.params.bank=t,this}async _execute(){const t=H.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Q(t){return{frate:()=>new H(t,"frate"),rmbquot:()=>new H(t,"rmbquot")}}class V{static API_MAP={queryCaipu:"/api/queryCaipu",RandomRecipes:"/api/RandomRecipes",MealPlan:"/api/MealPlan"};constructor(t,e){this.client=t,this.params={},this.mode=e}word(t){return this.params.word=t,this}num(t){return this.params.num=t,this}page(t){return this.params.page=t,this}tags(t){return this.params.tags=t,this}number(t){return this.params.number=t,this}timeFrame(t){return this.params.timeFrame=t,this}targetCalories(t){return this.params.targetCalories=t,this}diet(t){return this.params.diet=t,this}exclude(t){return this.params.exclude=t,this}async _execute(){const t=V.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Y(t){return{queryIngredients:()=>new V(t,"queryCaipu"),queryDishName:()=>new V(t,"queryCaipu"),query:()=>new V(t,"queryCaipu"),queryRandomRecipes:()=>new V(t,"RandomRecipes"),queryMealPlan:()=>new V(t,"MealPlan")}}class X{static API_MAP={queryCarPrice:"/api/queryCarPrice"};constructor(t){this.client=t,this.params={}}search(t){return this.params.search=t,this}async _execute(){const t=X.API_MAP.queryCarPrice;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Z(t){return{query:()=>new X(t)}}class tt{static API_MAP={queryDiseaseByName:"/api/queryDiseaseByName"};constructor(t){this.client=t,this.params={}}word(t){return this.params.word=t,this}async _execute(){const t=tt.API_MAP.queryDiseaseByName;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function et(t){return{query:()=>new tt(t)}}class st{static API_MAP={queryCalorie:"/api/queryCalorie"};constructor(t){this.client=t,this.params={}}sex(t){return this.params.sex=t,this}height(t){return this.params.height=t,this}weight(t){return this.params.weight=t,this}age(t){return this.params.age=t,this}level(t){return this.params.level=t,this}async _execute(){const t=st.API_MAP.queryCalorie;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function rt(t){return{query:()=>new st(t)}}class at{static API_MAP={nationalGoldprice:"/api/nationalGoldprice"};constructor(t){this.client=t,this.params={}}async _execute(){const t=at.API_MAP.nationalGoldprice;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function it(t){return{query:()=>new at(t)}}class nt{static API_MAP={youtubeSearch:"/api/youtubeSearch"};constructor(t){this.client=t,this.params={}}q(t){return this.params.q=t,this}type(t){return this.params.type=t,this}async _execute(){const t=nt.API_MAP.youtubeSearch;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function ot(t){return{search:()=>new nt(t)}}class ht{static API_MAP={queryTimezone:"/api/timezone"};constructor(t){this.client=t,this.params={}}location(t){return this.params.location=t,this}timestamp(t){return this.params.timestamp=t,this}async _execute(){const t=ht.API_MAP.queryTimezone;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function ct(t){return{search:()=>new ht(t)}}class ut{static API_MAP={queryNationalScenic:"/api/queryNationalScenic",restaurantsSearch:"/api/restaurantsSearch",hotelsSearch:"/api/hotelsSearch",attractionSearch:"/api/attractionSearch"};constructor(t,e){this.client=t,this.params={},this.model=e}word(t){return this.params.word=t,this}num(t){return this.params.num=t,this}page(t){return this.params.page=t,this}province(t){return this.params.province=t,this}city(t){return this.params.city=t,this}query(t){return this.params.query=t,this}async _execute(){const t=ut.API_MAP[this.model];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function lt(t){return{query:()=>new ut(t,"queryNationalScenic"),queryRestaurantsSearch:()=>new ut(t,"restaurantsSearch"),queryHotelsSearch:()=>new ut(t,"hotelsSearch"),queryAttractionSearch:()=>new ut(t,"attractionSearch")}}class mt{static API_MAP={queryFootballMatch:"/api/queryFootballMatch",footballRank:"/api/footballRank"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}async _execute(){const t=mt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function pt(t){return{match:()=>new mt(t,"queryFootballMatch"),rank:()=>new mt(t,"footballRank")}}class dt{static API_MAP={hsStock:"/api/hsStock",usaStock:"/api/usaStock",usaall:"/api/usaall",szall:"/api/szall",shall:"/api/shall"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.gid=t,this}type(t){return this.params.type=t,this}stock(t){return this.params.stock=t,this}page(t){return this.params.page=t,this}async _execute(){const t=dt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function yt(t){return{queryHs:()=>new dt(t,"hsStock"),queryHk:()=>new _t(t,"hkStock"),queryUsa:()=>new dt(t,"usaStock"),queryHkAll:()=>new _t(t,"hkall"),queryUsaAll:()=>new dt(t,"usaall"),querySzAll:()=>new dt(t,"szall"),queryShAll:()=>new dt(t,"shall"),queryTimeDaily:()=>new gt(t,"TimeDaily"),queryCurrencyExchange:()=>new gt(t,"CurrencyExchange"),queryDigitalCurrencyDaily:()=>new gt(t,"DigitalCurrencyDaily"),queryTechnicalIndicators:()=>new gt(t,"TechnicalIndicators")}}class gt{static API_MAP={TimeDaily:"/api/TimeDaily",CurrencyExchange:"/api/CurrencyExchange",DigitalCurrencyDaily:"/api/DigitalCurrencyDaily",TechnicalIndicators:"/api/TechnicalIndicators"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.symbol=t,this}to_currency(t){return this.params.to_currency=t,this}from_currency(t){return this.params.from_currency=t,this}market(t){return this.params.market=t,this}time_period(t){return this.params.time_period=t,this}interval(t){return this.params.interval=t,this}series_type(t){return this.params.series_type=t,this}async _execute(){const t=gt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class _t{static API_MAP={hkStock:"/api/hkStock",hkall:"/api/hkall"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.num=t,this}page(t){return this.params.page=t,this}async _execute(){const t=_t.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class wt{static API_MAP={SearchCocktail:"/api/SearchCocktail",ListPopularCocktails:"/api/ListPopularCocktails",ListMostLatestCocktails:"/api/ ListMostLatestCocktails",GetBeersDataByBreweryOrBrand:"/api/GetBeersDataByBreweryOrBrand",GetBeersDataByName:"/api/GetBeersDataByName"};constructor(t,e){this.client=t,this.params={},this.mode=e}s(t){return this.params.s=t,this}brewery(t){return this.params.brewery=t,this}name(t){return this.params.name=t,this}async _execute(){const t=wt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function ft(t){return{queryCocktail:()=>new wt(t,"SearchCocktail"),queryPopularCocktails:()=>new wt(t,"ListPopularCocktails"),queryLatestCocktails:()=>new wt(t,"ListMostLatestCocktails"),queryBeersData:()=>new wt(t,"GetBeersDataByBreweryOrBrand"),queryBeersDataByName:()=>new wt(t,"GetBeersDataByName")}}class Pt{constructor(t){this.client=t,this.params={}}userId(t){return this.params.userId=t,this}text(t){return this.params.text=t,this}putMessage(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");const e=this.params.userId;if(!e)throw new Error("用户不能为空");let s={userId:e,text:t};return this.client.request("/clawdbot/chat",{method:"POST",body:JSON.stringify(s)})}async getMessage(t){const e="/clawdbot/chat?messageId="+t;return await this.client.request(e,{method:"GET"})}async _execute(){const t=(await this.putMessage()).data;for(;;){const e=await this.getMessage(t);if(e.data.isComplete)return e;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}function qt(t){return{chat:()=>new Pt(t)}}t.createClient=function(t){const e=new r(t),s={setToken:t=>e.setToken(t),getToken:()=>e.getToken(),auth:a(e),db:h(e),api:u(e),comparison:m(e),document:d(e),logistics:g(e),location:q(e),travel:T(e),notification:x(e),ai:D(e),baidu:B(e),bitcoin:L(e),google:U(e),news:z(e),weather:K(e),money:Q(e),caipu:Y(e),car:Z(e),disease:et(e),calorie:rt(e),goldprice:it(e),youtube:ot(e),timezone:ct(e),scenic:lt(e),football:pt(e),stock:yt(e),wine:ft(e),clawdbot:qt(e)};return F.getRegisteredPlugins().forEach(t=>{try{const r=F.init(t,e);s[t]?(console.warn(`Plugin "${t}" conflicts with built-in module. Merging plugin methods into existing module.`),Object.assign(s[t],r)):s[t]=r}catch(e){console.error(`Failed to load plugin ${t}:`,e)}}),s},t.pluginLoader=F});
package/dist/index.cjs.js CHANGED
@@ -1393,6 +1393,165 @@ class HuoshanTemplateBuilder extends UploadBuilder {
1393
1393
  return this._execute().then(resolve, reject);
1394
1394
  }
1395
1395
  }
1396
+ class JimengPicBuilder extends UploadBuilder {
1397
+ constructor(client) {
1398
+ super(client);
1399
+ this.params = {};
1400
+ this.params.req_key = "jimeng_t2i_v40";
1401
+ this.params.image_urls = [];
1402
+ this.params.scale = 0.5;
1403
+ }
1404
+ image(image) {
1405
+ this.params.image_urls.push(image);
1406
+ return this;
1407
+ }
1408
+ scale(scale) {
1409
+ this.params.scale = scale;
1410
+ return this;
1411
+ }
1412
+ prompt(prompt) {
1413
+ this.params.prompt = prompt;
1414
+ return this;
1415
+ }
1416
+ createTask() {
1417
+ const {
1418
+ req_key,
1419
+ image_urls,
1420
+ prompt,
1421
+ scale
1422
+ } = this.params;
1423
+ let playLoad = {
1424
+ req_key: req_key,
1425
+ image_urls: image_urls,
1426
+ prompt: prompt,
1427
+ scale: scale
1428
+ };
1429
+ const url = "/api/JMAI";
1430
+ return this.client.request(url, {
1431
+ method: "POST",
1432
+ body: JSON.stringify(playLoad)
1433
+ });
1434
+ }
1435
+ async queryTask(taskId) {
1436
+ const url = "/api/JMAIQuery";
1437
+ let playLoad = {
1438
+ req_key: 'jimeng_t2i_v40',
1439
+ task_id: taskId
1440
+ };
1441
+ return await this.client.request(url, {
1442
+ method: "POST",
1443
+ body: JSON.stringify(playLoad)
1444
+ });
1445
+ }
1446
+ async _execute() {
1447
+ const createRes = await this.createTask();
1448
+ const taskId = createRes.data.data.task_id;
1449
+ if (!taskId) {
1450
+ throw new Error('任务创建失败,未返回任务ID');
1451
+ }
1452
+ while (true) {
1453
+ const queryRes = await this.queryTask(taskId);
1454
+ if (queryRes.data.data.status === 'done') {
1455
+ const res = await this.uploadFile(queryRes.data.data.image_urls[0], "png", "image/png");
1456
+ queryRes.data = res.data;
1457
+ return queryRes;
1458
+ }
1459
+ await new Promise(resolve => setTimeout(resolve, 2000));
1460
+ }
1461
+ }
1462
+ then(resolve, reject) {
1463
+ this._execute().then(resolve, reject);
1464
+ }
1465
+ }
1466
+ class JimengVideoBuilder extends UploadBuilder {
1467
+ constructor(client) {
1468
+ super(client);
1469
+ this.params = {};
1470
+ this.params.image_urls = [];
1471
+ }
1472
+ image(image) {
1473
+ this.params.image_urls.push(image);
1474
+ return this;
1475
+ }
1476
+ prompt(prompt) {
1477
+ this.params.prompt = prompt;
1478
+ return this;
1479
+ }
1480
+ _getTaskReqKey() {
1481
+ let reqKey = '';
1482
+ const len = this.params.image_urls.length;
1483
+ if (len === 0) {
1484
+ reqKey = "jimeng_t2v_v30";
1485
+ } else if (len === 1) {
1486
+ reqKey = "jimeng_i2v_first_v30";
1487
+ } else if (len === 2) {
1488
+ reqKey = "jimeng_i2v_first_tail_v30";
1489
+ } else {
1490
+ throw new Error('不支持超过2张图片');
1491
+ }
1492
+ return reqKey;
1493
+ }
1494
+ createTask(reqKey) {
1495
+ const url = "/api/JMAI";
1496
+ let playLoad = {};
1497
+ if (reqKey === 'jimeng_t2v_v30') {
1498
+ playLoad = {
1499
+ req_key: reqKey,
1500
+ prompt: this.params.prompt
1501
+ };
1502
+ } else if (reqKey === 'jimeng_i2v_first_v30') {
1503
+ playLoad = {
1504
+ req_key: reqKey,
1505
+ image_urls: this.params.image_urls,
1506
+ prompt: this.params.prompt
1507
+ };
1508
+ } else if (reqKey === 'jimeng_i2v_first_tail_v30') {
1509
+ playLoad = {
1510
+ req_key: reqKey,
1511
+ image_urls: this.params.image_urls,
1512
+ prompt: this.params.prompt
1513
+ };
1514
+ } else {
1515
+ throw new Error('不支持超过2张图片');
1516
+ }
1517
+ return this.client.request(url, {
1518
+ method: "POST",
1519
+ body: JSON.stringify(playLoad)
1520
+ });
1521
+ }
1522
+ async queryTask(reqKey, taskId) {
1523
+ const url = "/api/JMAIQuery";
1524
+ let playLoad = {
1525
+ req_key: reqKey,
1526
+ task_id: taskId
1527
+ };
1528
+ return await this.client.request(url, {
1529
+ method: "POST",
1530
+ body: JSON.stringify(playLoad)
1531
+ });
1532
+ }
1533
+ async _execute() {
1534
+ const reqKey = this._getTaskReqKey();
1535
+ const createRes = await this.createTask(reqKey);
1536
+ console.log("==============", createRes);
1537
+ const taskId = createRes.data.data.task_id;
1538
+ if (!taskId) {
1539
+ throw new Error('任务创建失败,未返回任务ID');
1540
+ }
1541
+ while (true) {
1542
+ const queryRes = await this.queryTask(reqKey, taskId);
1543
+ if (queryRes.data.data.status === 'done') {
1544
+ const res = await this.uploadFile(queryRes.data.data.video_url, "mp4", "video/mp4");
1545
+ queryRes.data = res.data;
1546
+ return queryRes;
1547
+ }
1548
+ await new Promise(resolve => setTimeout(resolve, 2000));
1549
+ }
1550
+ }
1551
+ then(resolve, reject) {
1552
+ this._execute().then(resolve, reject);
1553
+ }
1554
+ }
1396
1555
  function aiModule(client) {
1397
1556
  return {
1398
1557
  textToImage() {
@@ -1421,6 +1580,12 @@ function aiModule(client) {
1421
1580
  },
1422
1581
  imageToVideoFrameEffect() {
1423
1582
  return new HuoshanTemplateBuilder(client, "frame");
1583
+ },
1584
+ jmTextToImage() {
1585
+ return new JimengPicBuilder(client);
1586
+ },
1587
+ jmGenToVideo() {
1588
+ return new JimengVideoBuilder(client);
1424
1589
  }
1425
1590
  };
1426
1591
  }
@@ -2819,7 +2984,7 @@ class ClawdbotChatBuilder {
2819
2984
  const messageId = createRes.data;
2820
2985
  while (true) {
2821
2986
  const queryRes = await this.getMessage(messageId);
2822
- if (queryRes.data) {
2987
+ if (queryRes.data.isComplete) {
2823
2988
  return queryRes;
2824
2989
  }
2825
2990
  await new Promise(resolve => setTimeout(resolve, 2000));
package/dist/index.esm.js CHANGED
@@ -1391,6 +1391,165 @@ class HuoshanTemplateBuilder extends UploadBuilder {
1391
1391
  return this._execute().then(resolve, reject);
1392
1392
  }
1393
1393
  }
1394
+ class JimengPicBuilder extends UploadBuilder {
1395
+ constructor(client) {
1396
+ super(client);
1397
+ this.params = {};
1398
+ this.params.req_key = "jimeng_t2i_v40";
1399
+ this.params.image_urls = [];
1400
+ this.params.scale = 0.5;
1401
+ }
1402
+ image(image) {
1403
+ this.params.image_urls.push(image);
1404
+ return this;
1405
+ }
1406
+ scale(scale) {
1407
+ this.params.scale = scale;
1408
+ return this;
1409
+ }
1410
+ prompt(prompt) {
1411
+ this.params.prompt = prompt;
1412
+ return this;
1413
+ }
1414
+ createTask() {
1415
+ const {
1416
+ req_key,
1417
+ image_urls,
1418
+ prompt,
1419
+ scale
1420
+ } = this.params;
1421
+ let playLoad = {
1422
+ req_key: req_key,
1423
+ image_urls: image_urls,
1424
+ prompt: prompt,
1425
+ scale: scale
1426
+ };
1427
+ const url = "/api/JMAI";
1428
+ return this.client.request(url, {
1429
+ method: "POST",
1430
+ body: JSON.stringify(playLoad)
1431
+ });
1432
+ }
1433
+ async queryTask(taskId) {
1434
+ const url = "/api/JMAIQuery";
1435
+ let playLoad = {
1436
+ req_key: 'jimeng_t2i_v40',
1437
+ task_id: taskId
1438
+ };
1439
+ return await this.client.request(url, {
1440
+ method: "POST",
1441
+ body: JSON.stringify(playLoad)
1442
+ });
1443
+ }
1444
+ async _execute() {
1445
+ const createRes = await this.createTask();
1446
+ const taskId = createRes.data.data.task_id;
1447
+ if (!taskId) {
1448
+ throw new Error('任务创建失败,未返回任务ID');
1449
+ }
1450
+ while (true) {
1451
+ const queryRes = await this.queryTask(taskId);
1452
+ if (queryRes.data.data.status === 'done') {
1453
+ const res = await this.uploadFile(queryRes.data.data.image_urls[0], "png", "image/png");
1454
+ queryRes.data = res.data;
1455
+ return queryRes;
1456
+ }
1457
+ await new Promise(resolve => setTimeout(resolve, 2000));
1458
+ }
1459
+ }
1460
+ then(resolve, reject) {
1461
+ this._execute().then(resolve, reject);
1462
+ }
1463
+ }
1464
+ class JimengVideoBuilder extends UploadBuilder {
1465
+ constructor(client) {
1466
+ super(client);
1467
+ this.params = {};
1468
+ this.params.image_urls = [];
1469
+ }
1470
+ image(image) {
1471
+ this.params.image_urls.push(image);
1472
+ return this;
1473
+ }
1474
+ prompt(prompt) {
1475
+ this.params.prompt = prompt;
1476
+ return this;
1477
+ }
1478
+ _getTaskReqKey() {
1479
+ let reqKey = '';
1480
+ const len = this.params.image_urls.length;
1481
+ if (len === 0) {
1482
+ reqKey = "jimeng_t2v_v30";
1483
+ } else if (len === 1) {
1484
+ reqKey = "jimeng_i2v_first_v30";
1485
+ } else if (len === 2) {
1486
+ reqKey = "jimeng_i2v_first_tail_v30";
1487
+ } else {
1488
+ throw new Error('不支持超过2张图片');
1489
+ }
1490
+ return reqKey;
1491
+ }
1492
+ createTask(reqKey) {
1493
+ const url = "/api/JMAI";
1494
+ let playLoad = {};
1495
+ if (reqKey === 'jimeng_t2v_v30') {
1496
+ playLoad = {
1497
+ req_key: reqKey,
1498
+ prompt: this.params.prompt
1499
+ };
1500
+ } else if (reqKey === 'jimeng_i2v_first_v30') {
1501
+ playLoad = {
1502
+ req_key: reqKey,
1503
+ image_urls: this.params.image_urls,
1504
+ prompt: this.params.prompt
1505
+ };
1506
+ } else if (reqKey === 'jimeng_i2v_first_tail_v30') {
1507
+ playLoad = {
1508
+ req_key: reqKey,
1509
+ image_urls: this.params.image_urls,
1510
+ prompt: this.params.prompt
1511
+ };
1512
+ } else {
1513
+ throw new Error('不支持超过2张图片');
1514
+ }
1515
+ return this.client.request(url, {
1516
+ method: "POST",
1517
+ body: JSON.stringify(playLoad)
1518
+ });
1519
+ }
1520
+ async queryTask(reqKey, taskId) {
1521
+ const url = "/api/JMAIQuery";
1522
+ let playLoad = {
1523
+ req_key: reqKey,
1524
+ task_id: taskId
1525
+ };
1526
+ return await this.client.request(url, {
1527
+ method: "POST",
1528
+ body: JSON.stringify(playLoad)
1529
+ });
1530
+ }
1531
+ async _execute() {
1532
+ const reqKey = this._getTaskReqKey();
1533
+ const createRes = await this.createTask(reqKey);
1534
+ console.log("==============", createRes);
1535
+ const taskId = createRes.data.data.task_id;
1536
+ if (!taskId) {
1537
+ throw new Error('任务创建失败,未返回任务ID');
1538
+ }
1539
+ while (true) {
1540
+ const queryRes = await this.queryTask(reqKey, taskId);
1541
+ if (queryRes.data.data.status === 'done') {
1542
+ const res = await this.uploadFile(queryRes.data.data.video_url, "mp4", "video/mp4");
1543
+ queryRes.data = res.data;
1544
+ return queryRes;
1545
+ }
1546
+ await new Promise(resolve => setTimeout(resolve, 2000));
1547
+ }
1548
+ }
1549
+ then(resolve, reject) {
1550
+ this._execute().then(resolve, reject);
1551
+ }
1552
+ }
1394
1553
  function aiModule(client) {
1395
1554
  return {
1396
1555
  textToImage() {
@@ -1419,6 +1578,12 @@ function aiModule(client) {
1419
1578
  },
1420
1579
  imageToVideoFrameEffect() {
1421
1580
  return new HuoshanTemplateBuilder(client, "frame");
1581
+ },
1582
+ jmTextToImage() {
1583
+ return new JimengPicBuilder(client);
1584
+ },
1585
+ jmGenToVideo() {
1586
+ return new JimengVideoBuilder(client);
1422
1587
  }
1423
1588
  };
1424
1589
  }
@@ -2817,7 +2982,7 @@ class ClawdbotChatBuilder {
2817
2982
  const messageId = createRes.data;
2818
2983
  while (true) {
2819
2984
  const queryRes = await this.getMessage(messageId);
2820
- if (queryRes.data) {
2985
+ if (queryRes.data.isComplete) {
2821
2986
  return queryRes;
2822
2987
  }
2823
2988
  await new Promise(resolve => setTimeout(resolve, 2000));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aipexbase-js",
3
- "version": "1.1.16",
3
+ "version": "1.1.18",
4
4
  "description": "",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",