coze-coding-dev-sdk 0.7.19-beta.10 → 0.7.19-beta.11

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.
@@ -60,7 +60,7 @@ export default defineConfig({
60
60
  });
61
61
  `;try{let e;a.writeFileSync(f,p),r&&console.log("Pushing schema changes to database...");let t=`npx drizzle-kit push --force --config=${f}`;r&&console.log(`Running: ${t}`);try{e=(0,i.execSync)(t,{encoding:"utf-8",stdio:"pipe",timeout:12e4,cwd:n,env:{...process.env,NODE_PATH:u}})}catch(n){let e=n.stderr?.toString()||"",t=n.stdout?.toString()||"";throw Error(`drizzle-kit push failed:
62
62
  ${e||t||n.message}`)}if(e&&(e.includes("error:")||e.includes("Error:")))throw Error(`drizzle-kit push failed:
63
- ${e}`);r&&e&&console.log(e),r&&console.log("✅ Database migration completed successfully")}finally{a.existsSync(f)&&a.unlinkSync(f)}}},"./src/database/models.ts"(e,t,n){"use strict";n.d(t,{q:()=>i});class i{static MAX_CONNECTIONS=100;static IDLE_TIMEOUT_MILLIS=3e4;static CONNECTION_TIMEOUT_MILLIS=3e4;static MAX_RETRY_TIME=2e4;static DEFAULT_SCHEMA_PATH="src/storage/database/shared/schema.ts"}},"./src/embedding/types.ts"(e,t,n){"use strict";n.d(t,{F:()=>i});let i={defaultModel:"doubao-embedding-vision-251215",defaultEncodingFormat:"float",maxBatchSize:100}},"./src/fetch/models.ts"(e,t,n){"use strict";function convertContentItem(e){let t;return e.image&&(t={image_url:e.image.image_url,display_url:e.image.display_url,width:e.image.width,height:e.image.height,thumbnail_display_url:e.image.thumbnail_display_url}),{type:e.type||"text",text:e.text,url:e.url,image:t}}function convertDisplayInfo(e){return{no_display:e.no_display,no_display_reason:e.no_display_reason}}n.d(t,{E:()=>convertDisplayInfo,W:()=>convertContentItem})},"./src/image/models.ts"(e,t,n){"use strict";n.d(t,{K8:()=>i,Li:()=>buildImageGenerationApiRequest,td:()=>r});class i{static DEFAULT_MODEL="doubao-seedream-5-0-260128";static DEFAULT_SIZE="2K";static DEFAULT_CUSTOM_SIZE="2048x2048";static DEFAULT_WATERMARK=!0;static DEFAULT_RESPONSE_FORMAT="url";static DEFAULT_OPTIMIZE_PROMPT_MODE="standard";static DEFAULT_SEQUENTIAL_IMAGE_GENERATION="disabled";static DEFAULT_SEQUENTIAL_IMAGE_GENERATION_MAX_IMAGES=15;static MIN_TOTAL_PIXELS=3686400;static MAX_TOTAL_PIXELS=0x1000000;static MIN_ASPECT_RATIO=1/16;static MAX_ASPECT_RATIO=16;static PRESET_SIZES=["2K","4K"]}function validateImageSize(e){if(i.PRESET_SIZES.includes(e))return e;let t=e.match(/^(\d+)x(\d+)$/);if(!t)throw Error(`Invalid size format. Must be ${JSON.stringify(i.PRESET_SIZES)} or 'WIDTHxHEIGHT' format (e.g., 2048x2048). Got: ${e}`);let n=parseInt(t[1],10),r=parseInt(t[2],10);if(n<=0||r<=0)throw Error(`Width and height must be positive integers. Got: ${e}`);let a=n*r;if(a<i.MIN_TOTAL_PIXELS||a>i.MAX_TOTAL_PIXELS)throw Error(`Total pixels must be between ${i.MIN_TOTAL_PIXELS.toLocaleString()} and ${i.MAX_TOTAL_PIXELS.toLocaleString()}. Got: ${a.toLocaleString()} (${n}x${r})`);let o=n/r;if(o<i.MIN_ASPECT_RATIO||o>i.MAX_ASPECT_RATIO)throw Error(`Aspect ratio must be between 1:16 and 16:1. Got: ${n}:${r} (${o.toFixed(2)})`);return e}function validateImageSizeOrDefault(e){try{return validateImageSize(e)}catch{return i.DEFAULT_SIZE}}class r{response;constructor(e){this.response=e}get success(){return!this.response.error&&this.response.data.every(e=>!e.error)}get imageUrls(){return this.response.data.filter(e=>e.url).map(e=>e.url)}get imageB64List(){return this.response.data.filter(e=>e.b64_json).map(e=>e.b64_json)}get errorMessages(){let e=[];for(let t of(this.response.error&&e.push(`API Error: ${this.response.error.message||"Unknown error"}`),this.response.data))t.error&&e.push(`Image generation error: ${t.error.message||"Unknown error"}`);return e}}function buildImageGenerationApiRequest(e,t){let n=validateImageSizeOrDefault(e.size||i.DEFAULT_SIZE);return{model:t,prompt:e.prompt,size:n,watermark:e.watermark??i.DEFAULT_WATERMARK,image:e.image,response_format:e.responseFormat||i.DEFAULT_RESPONSE_FORMAT,optimize_prompt_options:{mode:e.optimizePromptMode||i.DEFAULT_OPTIMIZE_PROMPT_MODE},sequential_image_generation:e.sequentialImageGeneration||i.DEFAULT_SEQUENTIAL_IMAGE_GENERATION,sequential_image_generation_options:{max_images:e.sequentialImageGenerationMaxImages||i.DEFAULT_SEQUENTIAL_IMAGE_GENERATION_MAX_IMAGES}}}},"./src/index.ts"(e,t,n){"use strict";n.d(t,{Config:()=>i,VideoGenerationClient:()=>w,EmbeddingClient:()=>R,ImageGenerationClient:()=>c,TTSClient:()=>b,ASRClient:()=>y,SupabaseClient:()=>j,LLMClient:()=>C,KnowledgeClient:()=>A,DataSourceType:()=>k,SearchClient:()=>p});class i{apiKey;baseUrl;modelBaseUrl;retryTimes;retryDelay;timeout;constructor(e){this.apiKey=e?.apiKey||process.env.COZE_WORKLOAD_IDENTITY_API_KEY||"",this.baseUrl=e?.baseUrl||process.env.COZE_INTEGRATION_BASE_URL||"",this.modelBaseUrl=e?.modelBaseUrl||process.env.COZE_INTEGRATION_MODEL_BASE_URL||"",this.retryTimes=e?.retryTimes??3,this.retryDelay=e?.retryDelay??1,this.timeout=e?.timeout??9e5}validate(){if(!this.apiKey)throw Error("API key is required. Set COZE_WORKLOAD_IDENTITY_API_KEY or provide apiKey in config.")}getHeaders(){if(!this.apiKey)throw Error("API key is required. Set COZE_WORKLOAD_IDENTITY_API_KEY or provide apiKey in config.");return{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"}}}var r,a=n("axios"),o=n.n(a);class s extends Error{statusCode;response;constructor(e,t,n){super(e),this.name="APIError",this.statusCode=t,this.response=n}}class l extends Error{originalError;constructor(e,t){super(e),this.originalError=t,this.name="NetworkError"}}class u extends Error{constructor(e){super(e),this.name="ValidationError"}}class d{config;axiosInstance;verbose;constructor(e,t,n=!1){this.config=e||new i,this.verbose=n,this.axiosInstance=o().create({timeout:this.config.timeout,headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","X-Client-Sdk":"coze-coding-dev-sdk-typescript/0.3.0",...t}})}async request(e,t,n,i){let r=null;for(let a=0;a<=this.config.retryTimes;a++)try{0===a&&this.verbose&&this.logRequest(e,t,n,i);let r=await this.axiosInstance.request({method:e,url:t,data:n,...i});return 0===a&&this.verbose&&this.logResponse(r),r.data}catch(e){if(r=e,e.response){let t=e.response.status;if(t>=400&&t<500&&429!==t)throw new s(e.response.data?.message||e.message,t,e.response.data)}a<this.config.retryTimes&&await this.sleep(1e3*this.config.retryDelay*(a+1))}if(r)if(o().isAxiosError(r)&&r.response)throw new s(r.response.data?.message||r.message,r.response.status,r.response.data);else throw new l(r.message);throw new l("Request failed after retries")}async requestWithResponse(e,t,n,i){let r=null;for(let a=0;a<=this.config.retryTimes;a++)try{0===a&&this.verbose&&this.logRequest(e,t,n,i);let r=await this.axiosInstance.request({method:e,url:t,data:n,...i});return 0===a&&this.verbose&&this.logResponse(r),r}catch(e){if(r=e,e.response){let t=e.response.status;if(t>=400&&t<500&&429!==t)throw new s(e.response.data?.message||e.message,t,e.response.data)}a<this.config.retryTimes&&await this.sleep(1e3*this.config.retryDelay*(a+1))}if(r)if(o().isAxiosError(r)&&r.response)throw new s(r.response.data?.message||r.message,r.response.status,r.response.data);else throw new l(r.message);throw new l("Request failed after retries")}sanitizeHeaders(e){let t=["authorization","auth","api-key","apikey","api_key","x-api-key","x-auth-token","token","secret","password","passwd","pwd"],n={};for(let[i,r]of Object.entries(e)){let e=i.toLowerCase();t.some(t=>e.includes(t))?n[i]="***":n[i]=r}return n}logRequest(e,t,n,i){console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),console.log("\uD83D\uDCE4 HTTP Request"),console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),console.log(`Method: ${e}`),console.log(`URL: ${t}`);let r={};Object.assign(r,this.axiosInstance.defaults.headers.common||{},this.axiosInstance.defaults.headers[e.toLowerCase()]||{},i?.headers||{});let a=this.sanitizeHeaders(r);for(let[e,t]of(console.log("\nHeaders:"),Object.entries(a)))console.log(` ${e}: ${t}`);n&&(console.log("\nBody:"),console.log(JSON.stringify(n,null,2))),console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n")}logResponse(e){if(console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),console.log("\uD83D\uDCE5 HTTP Response"),console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),console.log(`Status: ${e.status} ${e.statusText}`),e.headers)for(let[t,n]of(console.log("\nHeaders:"),Object.entries(e.headers)))console.log(` ${t}: ${n}`);if(e.data){console.log("\nBody:");let t="string"==typeof e.data?e.data:JSON.stringify(e.data,null,2);console.log(t.length>1e3?t.substring(0,1e3)+"\n... (truncated)":t)}console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n")}sleep(e){return new Promise(t=>setTimeout(t,e))}}var h=n("./src/image/models.ts");class c extends d{constructor(e,t,n=!1){super(e,t,n)}async generate(e){let t=e.model||h.K8.DEFAULT_MODEL,n=(0,h.Li)(e,t),i=await this.request("POST",`${this.config.baseUrl}/api/v3/images/generations`,n);if(i.error)throw new s(`API returned error: ${i.error.message||"Unknown error"}`,i.error.code?parseInt(i.error.code):500,i.error);for(let e of i.data)if(e.error)throw new s(`Image generation failed: ${e.error.message||"Unknown error"}`,e.error.code?parseInt(e.error.code):500,e.error);return i}async batchGenerate(e){return Promise.all(e.map(e=>this.generate(e)))}getResponseHelper(e){return new h.td(e)}}var f=n("./src/search/models.ts");class p extends d{constructor(e,t,n=!1){super(e,t,n)}async search(e){let t,n=(0,f.a)(e),i=await this.request("POST",`${this.config.baseUrl}/api/search_api/web_search`,n),r=i.ResponseMetadata||{};if(r.Error)throw new s(`Search failed: ${r.Error}`,500,r.Error);let a=i.Result||{},o=[];if(a.WebResults)for(let e of a.WebResults)o.push((0,f.b)(e));let l=[];if(a.ImageResults)for(let e of a.ImageResults)l.push((0,f.b)(e));return a.Choices&&a.Choices.length>0&&(t=a.Choices[0].Message?.Content),{web_items:o,image_items:l,summary:t}}async webSearch(e,t=10,n=!0){return this.search({query:e,search_type:"web",count:t,need_summary:n})}async webSearchWithSummary(e,t=10){return this.search({query:e,search_type:"web_summary",count:t,need_summary:!0})}async imageSearch(e,t=10){return this.search({query:e,search_type:"image",count:t,need_summary:!1})}async advancedSearch(e,t={}){let n={need_content:t.needContent,need_url:t.needUrl,sites:t.sites,block_hosts:t.blockHosts};return this.search({query:e,search_type:t.searchType||"web",count:t.count||10,filter:n,need_summary:void 0===t.needSummary||t.needSummary,time_range:t.timeRange})}}var g=n("./src/voice/models.ts");class b extends d{constructor(e,t,n=!1){super(e,t,n)}async synthesize(e){if(!e.text&&!e.ssml)throw new u("必须提供 text 或 ssml 其中之一");let t=(0,g.Xd)(e),n={...this.config.getHeaders(),Connection:"keep-alive"};try{let e=await o().post(`${this.config.baseUrl}/api/v3/tts/unidirectional`,t,{headers:n,responseType:"stream",timeout:this.config.timeout});return await this.processStreamResponse(e)}catch(e){if(e.response)throw new s(`TTS 请求失败: ${e.message}`,e.response.status,e.response.data);throw new s(`TTS 请求异常: ${e.message}`,500)}}async processStreamResponse(e){return new Promise((t,n)=>{let i="",r=0,a="";e.data.on("data",e=>{let o=(a+=e.toString("utf-8")).split("\n");for(let e of(a=o.pop()||"",o))if(e.trim()&&e.startsWith("data:"))try{let a=e.replace("data:","").trim();if(!a)continue;let o=JSON.parse(a);if(0===o.code&&o.data){let e=Buffer.from(o.data,"base64");r+=e.length}else if(2e7===o.code){o.url&&(i=o.url),t({audioUri:i,audioSize:r});return}else if(o.code>0)return void n(new s(`合成音频失败: ${o.message||""}`,o.code))}catch(e){n(new s(`响应解析失败: ${e.message}`,500));return}}),e.data.on("end",()=>{i||0!==r?t({audioUri:i,audioSize:r}):n(new s("未收到完整的音频数据",500))}),e.data.on("error",e=>{n(new s(`流处理错误: ${e.message}`,500))})})}}class y extends d{constructor(e,t,n=!1){super(e,t,n)}async recognize(e){if(!e.url&&!e.base64Data)throw new u("必须提供 url 或 base64Data 其中之一");let t=(0,g.uF)(e);try{let e=await this.requestWithResponse("POST",`${this.config.baseUrl}/api/v3/auc/bigmodel/recognize/flash`,t),n=e.headers["x-api-status-code"]||"0",i=e.headers["x-api-message"]||"";if("20000000"!==n)throw new s(`ASR 识别失败,状态码: ${n}, 错误信息: ${i}`,e.status,{code:n,message:i});let r=e.data.result||{};return{text:r.text||"",duration:r.duration,utterances:r.utterances,rawData:e.data}}catch(e){if(e instanceof s)throw e;throw new s(`ASR 请求异常: ${e.message}`,500)}}}var S=n("./src/video/models.ts");class w extends d{baseUrl;constructor(e,t,n=!1){super(e,t,n),this.baseUrl=this.config.baseUrl}async videoGeneration(e,t){let n=(t?.maxWaitTime??900)*1e3,i={model:t?.model||S.K.DEFAULT_MODEL,content:e};t?.callbackUrl&&(i.callback_url=t.callbackUrl),t?.returnLastFrame&&(i.return_last_frame=t.returnLastFrame),i.resolution=t?.resolution??S.K.DEFAULT_RESOLUTION,i.ratio=t?.ratio??S.K.DEFAULT_RATIO,i.duration=t?.duration??S.K.DEFAULT_DURATION,i.watermark=t?.watermark??S.K.DEFAULT_WATERMARK,t?.seed!==void 0&&(i.seed=t.seed),i.camerafixed=t?.camerafixed??S.K.DEFAULT_CAMERA_FIXED,i.generate_audio=t?.generateAudio??S.K.DEFAULT_GENERATE_AUDIO;let r=null,a=0;for(;a<3;)try{if(!(r=(await this.request("POST",`${this.baseUrl}/api/v3/contents/generations/tasks`,i)).id))throw new s("创建视频生成任务失败:响应中缺少任务ID",500);this.verbose&&console.log(`视频生成任务创建成功,任务ID: ${r}`);break}catch(t){a++;let e=t instanceof Error?t.message:String(t);if(this.verbose&&console.error(`创建视频生成任务失败(尝试 ${a}/3): ${e}`),a>=3)throw new s(`创建视频生成任务失败,已重试3次: ${e}`,500);if(e.toLowerCase().includes("rate limit")||e.includes("429")){let e=Math.min(2**a*1e3,1e4);this.verbose&&console.warn(`遇到速率限制,等待 ${e/1e3} 秒后重试...`),await this.sleep(e)}else if(e.toLowerCase().includes("timeout"))this.verbose&&console.warn("请求超时,等待 2 秒后重试..."),await this.sleep(2e3);else throw t}let o=Date.now(),l=0;for(;Date.now()-o<n;){l++;try{let e=await this.request("GET",`${this.baseUrl}/api/v3/contents/generations/tasks/${r}`),t=e.status;if(this.verbose&&console.log(`任务 ${r} 状态检查 #${l}: ${t}`),"succeeded"===t){let t=e.content?.video_url||null,n=e.content?.last_frame_url||"";if(!t)throw new s(`视频生成成功但响应中缺少视频URL,任务ID: ${r}`,500);return this.verbose&&console.log(`视频生成成功,任务ID: ${r}, 视频URL: ${t}`),{videoUrl:t,response:e,lastFrameUrl:n}}if("failed"===t){let t=e.error_message||"未知错误";throw this.verbose&&console.error(`视频生成失败,任务ID: ${r}, 错误: ${t}`),new s(`视频生成失败: ${t}`,500)}if("cancelled"===t)return this.verbose&&console.warn(`视频生成任务被取消,任务ID: ${r}`),{videoUrl:null,response:e,lastFrameUrl:""};else if("queued"===t||"running"===t){await this.sleep(5e3);continue}else{this.verbose&&console.warn(`未知的任务状态: ${t},任务ID: ${r}`),await this.sleep(5e3);continue}}catch(t){let e=t instanceof Error?t.message:String(t);if(this.verbose&&console.error(`查询任务状态失败,任务ID: ${r}, 错误: ${e}`),e.toLowerCase().includes("not found")||e.includes("404"))throw new s(`任务不存在或已过期,任务ID: ${r}`,404);if(Date.now()-o>=n)throw t;await this.sleep(5e3);continue}}let u=Math.floor((Date.now()-o)/1e3);throw this.verbose&&console.error(`视频生成超时,任务ID: ${r}, 已等待: ${u}秒`),new s(`视频生成超时,已等待 ${u} 秒,任务ID: ${r}`,408)}async videoGenerationAsync(e,t){return this.videoGeneration(e,t)}}n("./src/video_edit/models.ts");let v=require("@langchain/openai"),x=require("@langchain/core/messages");var T=n("./src/llm/models.ts");class C{config;customHeaders;constructor(e,t){this.config=e||new i,this.customHeaders=t}createLLM(e,t,n){let i={};i.thinking={type:e.thinking??T.c.THINKING},e.caching&&"disabled"!==e.caching&&(i.caching={type:e.caching});let r={Authorization:`Bearer ${this.config.apiKey}`,"X-Client-Sdk":"coze-coding-dev-sdk-typescript/0.3.0",...this.customHeaders,...n};return t&&(r["X-Previous-Response-Id"]=t),new v.ChatOpenAI({model:e.model||T.c.MODEL,apiKey:this.config.apiKey,configuration:{baseURL:this.config.modelBaseUrl,defaultHeaders:r},streaming:void 0!==e.streaming?e.streaming:T.c.STREAMING,temperature:void 0!==e.temperature?e.temperature:T.c.TEMPERATURE,modelKwargs:Object.keys(i).length>0?i:void 0})}convertMessages(e){return e.map(e=>{let t=this.convertContent(e.content);switch(e.role){case"system":return new x.SystemMessage(t);case"user":return new x.HumanMessage(t);case"assistant":return new x.AIMessage(t);default:throw Error(`Unknown message role: ${e.role}`)}})}convertContent(e){return"string"==typeof e?e:e.map(e=>{if("text"===e.type)return{type:"text",text:e.text};if("image_url"===e.type){let t={url:e.image_url.url};return e.image_url.detail&&(t.detail=e.image_url.detail),{type:"image_url",image_url:t}}if("video_url"===e.type){let t={url:e.video_url.url};return void 0!==e.video_url.fps&&(t.fps=e.video_url.fps),{type:"video_url",video_url:t}}return e})}async *stream(e,t={},n,i){let r=this.createLLM(t,n,i),a=this.convertMessages(e);for await(let e of(await r.stream(a)))yield e}async invoke(e,t={},n,i){let r="";for await(let a of this.stream(e,t,n,i))a.content&&(r+=a.content.toString());return{content:r}}}var k=((r={})[r.TEXT=0]="TEXT",r[r.URL=1]="URL",r[r.URI=2]="URI",r);class A extends d{baseUrl;constructor(e,t,n=!1){super(e,t,n),this.baseUrl=this.config.baseUrl}async search(e,t,n=5,i=0,r){let a={query:e,top_k:n,min_score:i};t&&(a.dataset=t);let o=`${this.baseUrl}/v1/knowledge_base/recall`,s={...r};this.config.apiKey&&(s["x-coze-token"]=`Bearer ${this.config.apiKey}`);let l=await this.request("POST",o,a,{headers:s});return{chunks:(l.data||[]).map(e=>({content:e.slice||"",score:e.score||0,chunk_id:e.chunk_id,doc_id:e.doc_id})),code:l.code||0,msg:l.msg||""}}async addDocuments(e,t,n,i){let r={dataset:t,data:e};n&&(r.chunk_config=Object.fromEntries(Object.entries(n).filter(([e,t])=>void 0!==t)));let a=`${this.baseUrl}/v1/knowledge_base/batch_import`,o={...i};this.config.apiKey&&(o["x-coze-token"]=`Bearer ${this.config.apiKey}`);let s=await this.request("POST",a,r,{headers:o}),l=s.msg||"";return 0===s.code&&(l="成功!文档正在异步导入中,请稍候。您可以查看数据库中的 'knowledge' schema 来验证导入状态。"),{doc_ids:s.doc_ids,code:s.code||0,msg:l}}}n("./src/database/index.ts"),n("./src/s3/index.ts");var L=n("./src/embedding/types.ts");class R extends d{model;constructor(e,t,n=!1){super(e,t,n),this.model=L.F.defaultModel}validateInputs(e,t,n){let i=e&&e.length>0,r=t&&t.length>0,a=n&&n.length>0;if(!i&&!r&&!a)throw new u("At least one of texts, imageUrls, or videoUrls must be provided");let o=(e?.length||0)+(t?.length||0)+(n?.length||0);if(o>L.F.maxBatchSize)throw new u(`Total inputs (${o}) exceed maximum batch size of ${L.F.maxBatchSize}`)}buildInputItems(e,t,n){let i=[];if(e)for(let t of e)t&&t.trim()&&i.push({type:"text",text:t});if(t)for(let e of t)e&&e.trim()&&i.push({type:"image_url",image_url:{url:e}});if(n)for(let e of n)e&&e.trim()&&i.push({type:"video_url",video_url:{url:e}});return i}async embed(e,t,n,i){this.validateInputs(e,t,n);let r=this.buildInputItems(e,t,n);if(0===r.length)throw new u("No valid input provided");let a={model:i?.model||this.model,input:r};i?.dimensions!==void 0&&(a.dimensions=i.dimensions),i?.encodingFormat&&(a.encoding_format=i.encodingFormat),i?.instructions&&(a.instructions=i.instructions),i?.multiEmbedding&&(a.multi_embedding={type:"enabled"}),i?.sparseEmbedding&&(a.sparse_embedding={type:"enabled"});let o=await this.request("POST",`${this.config.baseUrl}/api/v3/embeddings/multimodal`,a);if(o.error)throw new s(o.error.message||"Unknown error",void 0,o.error);return o}async embedText(e,t){let n=await this.embed([e],void 0,void 0,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedTexts(e,t){let n=await this.embed(e,void 0,void 0,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedImage(e,t){let n=await this.embed(void 0,[e],void 0,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedImages(e,t){let n=await this.embed(void 0,e,void 0,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedVideo(e,t){let n=await this.embed(void 0,void 0,[e],t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedVideos(e,t){let n=await this.embed(void 0,void 0,e,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedMultimodal(e,t,n,i){return this.embed(e,t,n,i)}async embedWithMultiVectors(e,t,n,i){let r=await this.embed(e,t,n,{...i,multiEmbedding:!0});return r.data?.multi_embedding}async embedWithSparse(e,t,n,i){let r=await this.embed(e,t,n,{...i,sparseEmbedding:!0});return r.data?.sparse_embedding}async batchEmbed(e,t,n=5){let i=[],r=[...e];for(;r.length>0;){let e=r.splice(0,n).map(e=>this.embed(e,void 0,void 0,t)),a=await Promise.all(e);i.push(...a)}return i}}n("./src/fetch/models.ts");class j{config;axiosInstance;constructor(e,t){this.config=e,this.axiosInstance=o().create({timeout:this.config.timeout,headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","X-Client-Sdk":"coze-coding-dev-sdk-typescript/0.3.0","x-coze-token":this.config.apiKey,...t}})}async request(e,t,n){return(await this.axiosInstance.request({method:e,url:t,data:n})).data}async listFunctions(){let e=await this.request("POST",`${this.config.baseUrl}/v1/supabase/functions/list`,{});return{functions:(e.functions||[]).map(e=>({id:e.id||"",slug:e.slug||"",name:e.name||"",status:e.status||"",version:e.version||0,verify_jwt:e.verify_jwt||!1,entrypoint_path:e.entrypoint_path,created_at:e.created_at,updated_at:e.updated_at})),code:e.code||0,msg:e.msg||""}}async getFunction(e){let t,n=await this.request("POST",`${this.config.baseUrl}/v1/supabase/functions/get`,{slug:e});if(n.function){let e=n.function;t={id:e.id||"",slug:e.slug||"",name:e.name||"",status:e.status||"",version:e.version||0,verify_jwt:e.verify_jwt||!1,entrypoint_path:e.entrypoint_path,created_at:e.created_at,updated_at:e.updated_at}}return{function:t,files:(n.files||[]).map(e=>({name:e.name||"",content:e.content||""})),code:n.code||0,msg:n.msg||""}}async deployFunction(e,t){let n={slug:e};t?.code!==void 0&&(n.code=t.code),t?.files!==void 0&&(n.files=t.files),t?.name!==void 0&&(n.name=t.name),t?.entrypoint!==void 0&&(n.entrypoint=t.entrypoint),t?.verify_jwt!==void 0&&(n.verify_jwt=t.verify_jwt);let i=await this.request("POST",`${this.config.baseUrl}/v1/supabase/functions/deploy`,n);return{success:i.success||!1,slug:i.slug,version:i.version,code:i.code||0,msg:i.msg||""}}async deleteFunction(e){let t=await this.request("POST",`${this.config.baseUrl}/v1/supabase/functions/delete`,{slug:e});return{success:t.success||!1,code:t.code||0,msg:t.msg||""}}async listBuckets(){let e=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/list`,{});return{buckets:(e.buckets||[]).map(e=>({id:e.id||"",name:e.name||"",public:e.public||!1,owner:e.owner,file_size_limit:e.file_size_limit,allowed_mime_types:e.allowed_mime_types,created_at:e.created_at,updated_at:e.updated_at})),code:e.code||0,msg:e.msg||""}}async getBucket(e){let t,n=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/get`,{bucket_id:e});if(n.bucket){let e=n.bucket;t={id:e.id||"",name:e.name||"",public:e.public||!1,owner:e.owner,file_size_limit:e.file_size_limit,allowed_mime_types:e.allowed_mime_types,created_at:e.created_at,updated_at:e.updated_at}}return{bucket:t,code:n.code||0,msg:n.msg||""}}async createBucket(e,t){let n={bucket_id:e};t?.name!==void 0&&(n.name=t.name),t?.public!==void 0&&(n.public=t.public),t?.file_size_limit!==void 0&&(n.file_size_limit=t.file_size_limit),t?.allowed_mime_types!==void 0&&(n.allowed_mime_types=t.allowed_mime_types);let i=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/create`,n);return{success:i.success||!1,bucket_id:i.bucket_id,code:i.code||0,msg:i.msg||""}}async updateBucket(e,t){let n={bucket_id:e};t?.public!==void 0&&(n.public=t.public),t?.file_size_limit!==void 0&&(n.file_size_limit=t.file_size_limit),t?.allowed_mime_types!==void 0&&(n.allowed_mime_types=t.allowed_mime_types);let i=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/update`,n);return{success:i.success||!1,code:i.code||0,msg:i.msg||""}}async deleteBucket(e){let t=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/delete`,{bucket_id:e});return{success:t.success||!1,code:t.code||0,msg:t.msg||""}}async getAuthConfig(){let e,t=await this.request("POST",`${this.config.baseUrl}/v1/supabase/auth/config/get`,{});if(t.config){let n=t.config;e={external_email_enabled:n.external_email_enabled,disable_signup:n.disable_signup,mailer_autoconfirm:n.mailer_autoconfirm,double_confirm_changes:n.double_confirm_changes,mailer_secure_email_change_enabled:n.mailer_secure_email_change_enabled,mailer_otp_exp:n.mailer_otp_exp,password_min_length:n.password_min_length,password_required_characters:n.password_required_characters,site_url:n.site_url,smtp_host:n.smtp_host,smtp_port:n.smtp_port,smtp_user:n.smtp_user,smtp_pass:n.smtp_pass,smtp_admin_email:n.smtp_admin_email,smtp_sender_name:n.smtp_sender_name,smtp_max_frequency:n.smtp_max_frequency}}return{config:e,code:t.code||0,msg:t.msg||""}}async updateAuthConfig(e){let t=await this.request("POST",`${this.config.baseUrl}/v1/supabase/auth/config/update`,{config:e});return{success:t.success||!1,code:t.code||0,msg:t.msg||""}}async diagnoseDatabase(e){let t,n={};void 0!==e&&(n.env=e);let i=await this.request("POST",`${this.config.baseUrl}/v1/supabase/database/diagnose`,n);if(i.report){let e=i.report;t={database_type:e.database_type??0,pg_metrics:e.pg_metrics||{},supabase_metrics:e.supabase_metrics}}return{report:t,code:i.code||0,msg:i.msg||""}}}n("./src/report/index.ts")},"./src/llm/models.ts"(e,t,n){"use strict";n.d(t,{c:()=>i});let i={MODEL:"doubao-seed-1-8-251228",THINKING:"disabled",CACHING:"disabled",TEMPERATURE:1,STREAMING:!0}},"./src/report/buffer.ts"(e,t,n){"use strict";n.d(t,{R:()=>i});class i{buffer=[];timer=null;projectId;env;client;destroyed=!1;flushing=!1;pendingFlush=!1;onExitHandler;constructor(e){this.client=e,this.projectId=process.env.COZELOOP_WORKSPACE_ID||null,this.env=process.env.COZE_PROJECT_ENV||null,this.timer=setInterval(()=>this.flush(),6e4),this.timer.unref&&this.timer.unref(),this.onExitHandler=()=>{this.destroyAndExit()},process.on("beforeExit",()=>this.destroy()),process.on("SIGTERM",this.onExitHandler),process.on("SIGINT",this.onExitHandler)}add(e){if(!this.destroyed)try{this.buffer.length>=6e4&&this.buffer.shift(),e.project_id=this.projectId,e.env=this.env,this.buffer.push(e),this.buffer.length>=100&&this.flush().catch(()=>{})}catch(e){console.error("[report] buffer.add failed:",e)}}async flush(){if(this.flushing){this.pendingFlush=!0;return}if(!this.buffer.length)return;this.flushing=!0;let e=this.buffer.splice(0,100);try{await this.client.batchReport(e)}catch(t){console.error("[report] flush failed, re-queuing entries:",t),this.buffer=e.concat(this.buffer)}finally{this.flushing=!1,(this.pendingFlush||this.buffer.length>=100)&&(this.pendingFlush=!1,this.flush().catch(()=>{}))}}destroy(){this.destroyed||(this.destroyed=!0,this.timer&&(clearInterval(this.timer),this.timer=null),process.removeListener("SIGTERM",this.onExitHandler),process.removeListener("SIGINT",this.onExitHandler),this.flush().catch(()=>{}))}destroyAndExit(){if(this.destroyed)return;this.destroyed=!0,this.timer&&(clearInterval(this.timer),this.timer=null),process.removeListener("SIGTERM",this.onExitHandler),process.removeListener("SIGINT",this.onExitHandler);let e=setTimeout(()=>process.exit(0),5e3);e.unref&&e.unref(),this.flush().catch(()=>{}).finally(()=>{clearTimeout(e),process.exit(0)})}}},"./src/report/index.ts"(e,t,n){"use strict";n.d(t,{LN:()=>createS3ReportMiddleware,T4:()=>getReportBuffer});var i=n("child_process");let r=!1,a={baseUrl:"",apiKey:""};function loadReportEnv(){if(r)return a;let e=process.env.COZE_INTEGRATION_BASE_URL||"",t=process.env.COZE_WORKLOAD_IDENTITY_API_KEY||"";if(e&&t)return r=!0,a={baseUrl:e,apiKey:t};try{if(n("./node_modules/dotenv/lib/main.js").config(),e=process.env.COZE_INTEGRATION_BASE_URL||"",t=process.env.COZE_WORKLOAD_IDENTITY_API_KEY||"",e&&t)return r=!0,a={baseUrl:e,apiKey:t}}catch{}try{let n=`
63
+ ${e}`);r&&e&&console.log(e),r&&console.log("✅ Database migration completed successfully")}finally{a.existsSync(f)&&a.unlinkSync(f)}}},"./src/database/models.ts"(e,t,n){"use strict";n.d(t,{q:()=>i});class i{static MAX_CONNECTIONS=100;static IDLE_TIMEOUT_MILLIS=3e4;static CONNECTION_TIMEOUT_MILLIS=3e4;static MAX_RETRY_TIME=2e4;static DEFAULT_SCHEMA_PATH="src/storage/database/shared/schema.ts"}},"./src/embedding/types.ts"(e,t,n){"use strict";n.d(t,{F:()=>i});let i={defaultModel:"doubao-embedding-vision-251215",defaultEncodingFormat:"float",maxBatchSize:100}},"./src/fetch/models.ts"(e,t,n){"use strict";function convertContentItem(e){let t;return e.image&&(t={image_url:e.image.image_url,display_url:e.image.display_url,width:e.image.width,height:e.image.height,thumbnail_display_url:e.image.thumbnail_display_url}),{type:e.type||"text",text:e.text,url:e.url,image:t}}function convertDisplayInfo(e){return{no_display:e.no_display,no_display_reason:e.no_display_reason}}n.d(t,{E:()=>convertDisplayInfo,W:()=>convertContentItem})},"./src/image/models.ts"(e,t,n){"use strict";n.d(t,{K8:()=>i,Li:()=>buildImageGenerationApiRequest,td:()=>r});class i{static DEFAULT_MODEL="doubao-seedream-5-0-260128";static DEFAULT_SIZE="2K";static DEFAULT_CUSTOM_SIZE="2048x2048";static DEFAULT_WATERMARK=!0;static DEFAULT_RESPONSE_FORMAT="url";static DEFAULT_OPTIMIZE_PROMPT_MODE="standard";static DEFAULT_SEQUENTIAL_IMAGE_GENERATION="disabled";static DEFAULT_SEQUENTIAL_IMAGE_GENERATION_MAX_IMAGES=15;static MIN_TOTAL_PIXELS=3686400;static MAX_TOTAL_PIXELS=0x1000000;static MIN_ASPECT_RATIO=1/16;static MAX_ASPECT_RATIO=16;static PRESET_SIZES=["2K","4K"]}function validateImageSize(e){if(i.PRESET_SIZES.includes(e))return e;let t=e.match(/^(\d+)x(\d+)$/);if(!t)throw Error(`Invalid size format. Must be ${JSON.stringify(i.PRESET_SIZES)} or 'WIDTHxHEIGHT' format (e.g., 2048x2048). Got: ${e}`);let n=parseInt(t[1],10),r=parseInt(t[2],10);if(n<=0||r<=0)throw Error(`Width and height must be positive integers. Got: ${e}`);let a=n*r;if(a<i.MIN_TOTAL_PIXELS||a>i.MAX_TOTAL_PIXELS)throw Error(`Total pixels must be between ${i.MIN_TOTAL_PIXELS.toLocaleString()} and ${i.MAX_TOTAL_PIXELS.toLocaleString()}. Got: ${a.toLocaleString()} (${n}x${r})`);let o=n/r;if(o<i.MIN_ASPECT_RATIO||o>i.MAX_ASPECT_RATIO)throw Error(`Aspect ratio must be between 1:16 and 16:1. Got: ${n}:${r} (${o.toFixed(2)})`);return e}function validateImageSizeOrDefault(e){try{return validateImageSize(e)}catch{return i.DEFAULT_SIZE}}class r{response;constructor(e){this.response=e}get success(){return!this.response.error&&this.response.data.every(e=>!e.error)}get imageUrls(){return this.response.data.filter(e=>e.url).map(e=>e.url)}get imageB64List(){return this.response.data.filter(e=>e.b64_json).map(e=>e.b64_json)}get errorMessages(){let e=[];for(let t of(this.response.error&&e.push(`API Error: ${this.response.error.message||"Unknown error"}`),this.response.data))t.error&&e.push(`Image generation error: ${t.error.message||"Unknown error"}`);return e}}function buildImageGenerationApiRequest(e,t){let n=validateImageSizeOrDefault(e.size||i.DEFAULT_SIZE);return{model:t,prompt:e.prompt,size:n,watermark:e.watermark??i.DEFAULT_WATERMARK,image:e.image,response_format:e.responseFormat||i.DEFAULT_RESPONSE_FORMAT,optimize_prompt_options:{mode:e.optimizePromptMode||i.DEFAULT_OPTIMIZE_PROMPT_MODE},sequential_image_generation:e.sequentialImageGeneration||i.DEFAULT_SEQUENTIAL_IMAGE_GENERATION,sequential_image_generation_options:{max_images:e.sequentialImageGenerationMaxImages||i.DEFAULT_SEQUENTIAL_IMAGE_GENERATION_MAX_IMAGES}}}},"./src/index.ts"(e,t,n){"use strict";n.d(t,{Config:()=>i,VideoGenerationClient:()=>w,EmbeddingClient:()=>R,ImageGenerationClient:()=>c,TTSClient:()=>b,ASRClient:()=>y,SupabaseClient:()=>j,LLMClient:()=>C,KnowledgeClient:()=>A,DataSourceType:()=>k,SearchClient:()=>p});class i{apiKey;baseUrl;modelBaseUrl;retryTimes;retryDelay;timeout;constructor(e){this.apiKey=e?.apiKey||process.env.COZE_WORKLOAD_IDENTITY_API_KEY||"",this.baseUrl=e?.baseUrl||process.env.COZE_INTEGRATION_BASE_URL||"",this.modelBaseUrl=e?.modelBaseUrl||process.env.COZE_INTEGRATION_MODEL_BASE_URL||"",this.retryTimes=e?.retryTimes??3,this.retryDelay=e?.retryDelay??1,this.timeout=e?.timeout??9e5}validate(){if(!this.apiKey)throw Error("API key is required. Set COZE_WORKLOAD_IDENTITY_API_KEY or provide apiKey in config.")}getHeaders(){if(!this.apiKey)throw Error("API key is required. Set COZE_WORKLOAD_IDENTITY_API_KEY or provide apiKey in config.");return{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"}}}var r,a=n("axios"),o=n.n(a);class s extends Error{statusCode;response;constructor(e,t,n){super(e),this.name="APIError",this.statusCode=t,this.response=n}}class l extends Error{originalError;constructor(e,t){super(e),this.originalError=t,this.name="NetworkError"}}class u extends Error{constructor(e){super(e),this.name="ValidationError"}}class d{config;axiosInstance;verbose;constructor(e,t,n=!1){this.config=e||new i,this.verbose=n,this.axiosInstance=o().create({timeout:this.config.timeout,headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","X-Client-Sdk":"coze-coding-dev-sdk-typescript/0.3.0",...t}})}async request(e,t,n,i){let r=null;for(let a=0;a<=this.config.retryTimes;a++)try{0===a&&this.verbose&&this.logRequest(e,t,n,i);let r=await this.axiosInstance.request({method:e,url:t,data:n,...i});return 0===a&&this.verbose&&this.logResponse(r),r.data}catch(e){if(r=e,e.response){let t=e.response.status;if(t>=400&&t<500&&429!==t)throw new s(e.response.data?.message||e.message,t,e.response.data)}a<this.config.retryTimes&&await this.sleep(1e3*this.config.retryDelay*(a+1))}if(r)if(o().isAxiosError(r)&&r.response)throw new s(r.response.data?.message||r.message,r.response.status,r.response.data);else throw new l(r.message);throw new l("Request failed after retries")}async requestWithResponse(e,t,n,i){let r=null;for(let a=0;a<=this.config.retryTimes;a++)try{0===a&&this.verbose&&this.logRequest(e,t,n,i);let r=await this.axiosInstance.request({method:e,url:t,data:n,...i});return 0===a&&this.verbose&&this.logResponse(r),r}catch(e){if(r=e,e.response){let t=e.response.status;if(t>=400&&t<500&&429!==t)throw new s(e.response.data?.message||e.message,t,e.response.data)}a<this.config.retryTimes&&await this.sleep(1e3*this.config.retryDelay*(a+1))}if(r)if(o().isAxiosError(r)&&r.response)throw new s(r.response.data?.message||r.message,r.response.status,r.response.data);else throw new l(r.message);throw new l("Request failed after retries")}sanitizeHeaders(e){let t=["authorization","auth","api-key","apikey","api_key","x-api-key","x-auth-token","token","secret","password","passwd","pwd"],n={};for(let[i,r]of Object.entries(e)){let e=i.toLowerCase();t.some(t=>e.includes(t))?n[i]="***":n[i]=r}return n}logRequest(e,t,n,i){console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),console.log("\uD83D\uDCE4 HTTP Request"),console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),console.log(`Method: ${e}`),console.log(`URL: ${t}`);let r={};Object.assign(r,this.axiosInstance.defaults.headers.common||{},this.axiosInstance.defaults.headers[e.toLowerCase()]||{},i?.headers||{});let a=this.sanitizeHeaders(r);for(let[e,t]of(console.log("\nHeaders:"),Object.entries(a)))console.log(` ${e}: ${t}`);n&&(console.log("\nBody:"),console.log(JSON.stringify(n,null,2))),console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n")}logResponse(e){if(console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),console.log("\uD83D\uDCE5 HTTP Response"),console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"),console.log(`Status: ${e.status} ${e.statusText}`),e.headers)for(let[t,n]of(console.log("\nHeaders:"),Object.entries(e.headers)))console.log(` ${t}: ${n}`);if(e.data){console.log("\nBody:");let t="string"==typeof e.data?e.data:JSON.stringify(e.data,null,2);console.log(t.length>1e3?t.substring(0,1e3)+"\n... (truncated)":t)}console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n")}sleep(e){return new Promise(t=>setTimeout(t,e))}}var h=n("./src/image/models.ts");class c extends d{constructor(e,t,n=!1){super(e,t,n)}async generate(e){let t=e.model||h.K8.DEFAULT_MODEL,n=(0,h.Li)(e,t),i=await this.request("POST",`${this.config.baseUrl}/api/v3/images/generations`,n);if(i.error)throw new s(`API returned error: ${i.error.message||"Unknown error"}`,i.error.code?parseInt(i.error.code):500,i.error);for(let e of i.data)if(e.error)throw new s(`Image generation failed: ${e.error.message||"Unknown error"}`,e.error.code?parseInt(e.error.code):500,e.error);return i}async batchGenerate(e){return Promise.all(e.map(e=>this.generate(e)))}getResponseHelper(e){return new h.td(e)}}var f=n("./src/search/models.ts");class p extends d{constructor(e,t,n=!1){super(e,t,n)}async search(e){let t,n=(0,f.a)(e),i=await this.request("POST",`${this.config.baseUrl}/api/search_api/web_search`,n),r=i.ResponseMetadata||{};if(r.Error)throw new s(`Search failed: ${r.Error}`,500,r.Error);let a=i.Result||{},o=[];if(a.WebResults)for(let e of a.WebResults)o.push((0,f.b)(e));let l=[];if(a.ImageResults)for(let e of a.ImageResults)l.push((0,f.b)(e));return a.Choices&&a.Choices.length>0&&(t=a.Choices[0].Message?.Content),{web_items:o,image_items:l,summary:t}}async webSearch(e,t=10,n=!0){return this.search({query:e,search_type:"web",count:t,need_summary:n})}async webSearchWithSummary(e,t=10){return this.search({query:e,search_type:"web_summary",count:t,need_summary:!0})}async imageSearch(e,t=10){return this.search({query:e,search_type:"image",count:t,need_summary:!1})}async advancedSearch(e,t={}){let n={need_content:t.needContent,need_url:t.needUrl,sites:t.sites,block_hosts:t.blockHosts};return this.search({query:e,search_type:t.searchType||"web",count:t.count||10,filter:n,need_summary:void 0===t.needSummary||t.needSummary,time_range:t.timeRange})}}var g=n("./src/voice/models.ts");class b extends d{constructor(e,t,n=!1){super(e,t,n)}async synthesize(e){if(!e.text&&!e.ssml)throw new u("必须提供 text 或 ssml 其中之一");let t=(0,g.Xd)(e),n={...this.config.getHeaders(),Connection:"keep-alive"};try{let e=await o().post(`${this.config.baseUrl}/api/v3/tts/unidirectional`,t,{headers:n,responseType:"stream",timeout:this.config.timeout});return await this.processStreamResponse(e)}catch(e){if(e.response)throw new s(`TTS 请求失败: ${e.message}`,e.response.status,e.response.data);throw new s(`TTS 请求异常: ${e.message}`,500)}}async processStreamResponse(e){return new Promise((t,n)=>{let i="",r=0,a="";e.data.on("data",e=>{let o=(a+=e.toString("utf-8")).split("\n");for(let e of(a=o.pop()||"",o))if(e.trim()&&e.startsWith("data:"))try{let a=e.replace("data:","").trim();if(!a)continue;let o=JSON.parse(a);if(0===o.code&&o.data){let e=Buffer.from(o.data,"base64");r+=e.length}else if(2e7===o.code){o.url&&(i=o.url),t({audioUri:i,audioSize:r});return}else if(o.code>0)return void n(new s(`合成音频失败: ${o.message||""}`,o.code))}catch(e){n(new s(`响应解析失败: ${e.message}`,500));return}}),e.data.on("end",()=>{i||0!==r?t({audioUri:i,audioSize:r}):n(new s("未收到完整的音频数据",500))}),e.data.on("error",e=>{n(new s(`流处理错误: ${e.message}`,500))})})}}class y extends d{constructor(e,t,n=!1){super(e,t,n)}async recognize(e){if(!e.url&&!e.base64Data)throw new u("必须提供 url 或 base64Data 其中之一");let t=(0,g.uF)(e);try{let e=await this.requestWithResponse("POST",`${this.config.baseUrl}/api/v3/auc/bigmodel/recognize/flash`,t),n=e.headers["x-api-status-code"]||"0",i=e.headers["x-api-message"]||"";if("20000000"!==n)throw new s(`ASR 识别失败,状态码: ${n}, 错误信息: ${i}`,e.status,{code:n,message:i});let r=e.data.result||{};return{text:r.text||"",duration:r.duration,utterances:r.utterances,rawData:e.data}}catch(e){if(e instanceof s)throw e;throw new s(`ASR 请求异常: ${e.message}`,500)}}}var S=n("./src/video/models.ts");class w extends d{baseUrl;constructor(e,t,n=!1){super(e,t,n),this.baseUrl=this.config.baseUrl}async videoGeneration(e,t){let n=(t?.maxWaitTime??900)*1e3,i={model:t?.model||S.K.DEFAULT_MODEL,content:e};t?.callbackUrl&&(i.callback_url=t.callbackUrl),t?.returnLastFrame&&(i.return_last_frame=t.returnLastFrame),i.resolution=t?.resolution??S.K.DEFAULT_RESOLUTION,i.ratio=t?.ratio??S.K.DEFAULT_RATIO,i.duration=t?.duration??S.K.DEFAULT_DURATION,i.watermark=t?.watermark??S.K.DEFAULT_WATERMARK,t?.seed!==void 0&&(i.seed=t.seed),i.camerafixed=t?.camerafixed??S.K.DEFAULT_CAMERA_FIXED,i.generate_audio=t?.generateAudio??S.K.DEFAULT_GENERATE_AUDIO;let r=null,a=0;for(;a<3;)try{if(!(r=(await this.request("POST",`${this.baseUrl}/api/v3/contents/generations/tasks`,i)).id))throw new s("创建视频生成任务失败:响应中缺少任务ID",500);this.verbose&&console.log(`视频生成任务创建成功,任务ID: ${r}`);break}catch(t){a++;let e=t instanceof Error?t.message:String(t);if(this.verbose&&console.error(`创建视频生成任务失败(尝试 ${a}/3): ${e}`),a>=3)throw new s(`创建视频生成任务失败,已重试3次: ${e}`,500);if(e.toLowerCase().includes("rate limit")||e.includes("429")){let e=Math.min(2**a*1e3,1e4);this.verbose&&console.warn(`遇到速率限制,等待 ${e/1e3} 秒后重试...`),await this.sleep(e)}else if(e.toLowerCase().includes("timeout"))this.verbose&&console.warn("请求超时,等待 2 秒后重试..."),await this.sleep(2e3);else throw t}let o=Date.now(),l=0;for(;Date.now()-o<n;){l++;try{let e=await this.request("GET",`${this.baseUrl}/api/v3/contents/generations/tasks/${r}`),t=e.status;if(this.verbose&&console.log(`任务 ${r} 状态检查 #${l}: ${t}`),"succeeded"===t){let t=e.content?.video_url||null,n=e.content?.last_frame_url||"";if(!t)throw new s(`视频生成成功但响应中缺少视频URL,任务ID: ${r}`,500);return this.verbose&&console.log(`视频生成成功,任务ID: ${r}, 视频URL: ${t}`),{videoUrl:t,response:e,lastFrameUrl:n}}if("failed"===t){let t=e.error_message||"未知错误";throw this.verbose&&console.error(`视频生成失败,任务ID: ${r}, 错误: ${t}`),new s(`视频生成失败: ${t}`,500)}if("cancelled"===t)return this.verbose&&console.warn(`视频生成任务被取消,任务ID: ${r}`),{videoUrl:null,response:e,lastFrameUrl:""};else if("queued"===t||"running"===t){await this.sleep(5e3);continue}else{this.verbose&&console.warn(`未知的任务状态: ${t},任务ID: ${r}`),await this.sleep(5e3);continue}}catch(t){let e=t instanceof Error?t.message:String(t);if(this.verbose&&console.error(`查询任务状态失败,任务ID: ${r}, 错误: ${e}`),e.toLowerCase().includes("not found")||e.includes("404"))throw new s(`任务不存在或已过期,任务ID: ${r}`,404);if(Date.now()-o>=n)throw t;await this.sleep(5e3);continue}}let u=Math.floor((Date.now()-o)/1e3);throw this.verbose&&console.error(`视频生成超时,任务ID: ${r}, 已等待: ${u}秒`),new s(`视频生成超时,已等待 ${u} 秒,任务ID: ${r}`,408)}async videoGenerationAsync(e,t){return this.videoGeneration(e,t)}}n("./src/video_edit/models.ts");let v=require("@langchain/openai"),x=require("@langchain/core/messages");var T=n("./src/llm/models.ts");class C{config;customHeaders;constructor(e,t){this.config=e||new i,this.customHeaders=t}createLLM(e,t,n){let i={};i.thinking={type:e.thinking??T.c.THINKING},e.caching&&"disabled"!==e.caching&&(i.caching={type:e.caching});let r={Authorization:`Bearer ${this.config.apiKey}`,"X-Client-Sdk":"coze-coding-dev-sdk-typescript/0.3.0",...this.customHeaders,...n};return t&&(r["X-Previous-Response-Id"]=t),new v.ChatOpenAI({model:e.model||T.c.MODEL,apiKey:this.config.apiKey,configuration:{baseURL:this.config.modelBaseUrl,defaultHeaders:r},streaming:void 0!==e.streaming?e.streaming:T.c.STREAMING,temperature:void 0!==e.temperature?e.temperature:T.c.TEMPERATURE,modelKwargs:Object.keys(i).length>0?i:void 0})}convertMessages(e){return e.map(e=>{let t=this.convertContent(e.content);switch(e.role){case"system":return new x.SystemMessage(t);case"user":return new x.HumanMessage(t);case"assistant":return new x.AIMessage(t);default:throw Error(`Unknown message role: ${e.role}`)}})}convertContent(e){return"string"==typeof e?e:e.map(e=>{if("text"===e.type)return{type:"text",text:e.text};if("image_url"===e.type){let t={url:e.image_url.url};return e.image_url.detail&&(t.detail=e.image_url.detail),{type:"image_url",image_url:t}}if("video_url"===e.type){let t={url:e.video_url.url};return void 0!==e.video_url.fps&&(t.fps=e.video_url.fps),{type:"video_url",video_url:t}}return e})}async *stream(e,t={},n,i){let r=this.createLLM(t,n,i),a=this.convertMessages(e);for await(let e of(await r.stream(a)))yield e}async invoke(e,t={},n,i){let r="";for await(let a of this.stream(e,t,n,i))a.content&&(r+=a.content.toString());return{content:r}}}var k=((r={})[r.TEXT=0]="TEXT",r[r.URL=1]="URL",r[r.URI=2]="URI",r);class A extends d{baseUrl;constructor(e,t,n=!1){super(e,t,n),this.baseUrl=this.config.baseUrl}async search(e,t,n=5,i=0,r){let a={query:e,top_k:n,min_score:i};t&&(a.dataset=t);let o=`${this.baseUrl}/v1/knowledge_base/recall`,s={...r};this.config.apiKey&&(s["x-coze-token"]=`Bearer ${this.config.apiKey}`);let l=await this.request("POST",o,a,{headers:s});return{chunks:(l.data||[]).map(e=>({content:e.slice||"",score:e.score||0,chunk_id:e.chunk_id,doc_id:e.doc_id})),code:l.code||0,msg:l.msg||""}}async addDocuments(e,t,n,i){let r={dataset:t,data:e};n&&(r.chunk_config=Object.fromEntries(Object.entries(n).filter(([e,t])=>void 0!==t)));let a=`${this.baseUrl}/v1/knowledge_base/batch_import`,o={...i};this.config.apiKey&&(o["x-coze-token"]=`Bearer ${this.config.apiKey}`);let s=await this.request("POST",a,r,{headers:o}),l=s.msg||"";return 0===s.code&&(l="成功!文档正在异步导入中,请稍候。您可以查看数据库中的 'knowledge' schema 来验证导入状态。"),{doc_ids:s.doc_ids,code:s.code||0,msg:l}}}n("./src/database/index.ts"),n("./src/s3/index.ts");var L=n("./src/embedding/types.ts");class R extends d{model;constructor(e,t,n=!1){super(e,t,n),this.model=L.F.defaultModel}validateInputs(e,t,n){let i=e&&e.length>0,r=t&&t.length>0,a=n&&n.length>0;if(!i&&!r&&!a)throw new u("At least one of texts, imageUrls, or videoUrls must be provided");let o=(e?.length||0)+(t?.length||0)+(n?.length||0);if(o>L.F.maxBatchSize)throw new u(`Total inputs (${o}) exceed maximum batch size of ${L.F.maxBatchSize}`)}buildInputItems(e,t,n){let i=[];if(e)for(let t of e)t&&t.trim()&&i.push({type:"text",text:t});if(t)for(let e of t)e&&e.trim()&&i.push({type:"image_url",image_url:{url:e}});if(n)for(let e of n)e&&e.trim()&&i.push({type:"video_url",video_url:{url:e}});return i}async embed(e,t,n,i){this.validateInputs(e,t,n);let r=this.buildInputItems(e,t,n);if(0===r.length)throw new u("No valid input provided");let a={model:i?.model||this.model,input:r};i?.dimensions!==void 0&&(a.dimensions=i.dimensions),i?.encodingFormat&&(a.encoding_format=i.encodingFormat),i?.instructions&&(a.instructions=i.instructions),i?.multiEmbedding&&(a.multi_embedding={type:"enabled"}),i?.sparseEmbedding&&(a.sparse_embedding={type:"enabled"});let o=await this.request("POST",`${this.config.baseUrl}/api/v3/embeddings/multimodal`,a);if(o.error)throw new s(o.error.message||"Unknown error",void 0,o.error);return o}async embedText(e,t){let n=await this.embed([e],void 0,void 0,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedTexts(e,t){let n=await this.embed(e,void 0,void 0,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedImage(e,t){let n=await this.embed(void 0,[e],void 0,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedImages(e,t){let n=await this.embed(void 0,e,void 0,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedVideo(e,t){let n=await this.embed(void 0,void 0,[e],t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedVideos(e,t){let n=await this.embed(void 0,void 0,e,t);if(n.data?.embedding)return n.data.embedding;throw new s("No embedding returned")}async embedMultimodal(e,t,n,i){return this.embed(e,t,n,i)}async embedWithMultiVectors(e,t,n,i){let r=await this.embed(e,t,n,{...i,multiEmbedding:!0});return r.data?.multi_embedding}async embedWithSparse(e,t,n,i){let r=await this.embed(e,t,n,{...i,sparseEmbedding:!0});return r.data?.sparse_embedding}async batchEmbed(e,t,n=5){let i=[],r=[...e];for(;r.length>0;){let e=r.splice(0,n).map(e=>this.embed(e,void 0,void 0,t)),a=await Promise.all(e);i.push(...a)}return i}}n("./src/fetch/models.ts");class j{config;axiosInstance;constructor(e,t){this.config=e,this.axiosInstance=o().create({timeout:this.config.timeout,headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","X-Client-Sdk":"coze-coding-dev-sdk-typescript/0.3.0","x-coze-token":this.config.apiKey,...t}})}async request(e,t,n){return(await this.axiosInstance.request({method:e,url:t,data:n})).data}async listFunctions(){let e=await this.request("POST",`${this.config.baseUrl}/v1/supabase/functions/list`,{});return{functions:(e.functions||[]).map(e=>({id:e.id||"",slug:e.slug||"",name:e.name||"",status:e.status||"",version:e.version||0,verify_jwt:e.verify_jwt||!1,entrypoint_path:e.entrypoint_path,created_at:e.created_at,updated_at:e.updated_at})),code:e.code||0,msg:e.msg||""}}async getFunction(e){let t,n=await this.request("POST",`${this.config.baseUrl}/v1/supabase/functions/get`,{slug:e});if(n.function){let e=n.function;t={id:e.id||"",slug:e.slug||"",name:e.name||"",status:e.status||"",version:e.version||0,verify_jwt:e.verify_jwt||!1,entrypoint_path:e.entrypoint_path,created_at:e.created_at,updated_at:e.updated_at}}return{function:t,files:(n.files||[]).map(e=>({name:e.name||"",content:e.content||""})),code:n.code||0,msg:n.msg||""}}async deployFunction(e,t){let n={slug:e};t?.code!==void 0&&(n.code=t.code),t?.files!==void 0&&(n.files=t.files),t?.name!==void 0&&(n.name=t.name),t?.entrypoint!==void 0&&(n.entrypoint=t.entrypoint),t?.verify_jwt!==void 0&&(n.verify_jwt=t.verify_jwt);let i=await this.request("POST",`${this.config.baseUrl}/v1/supabase/functions/deploy`,n);return{success:i.success||!1,slug:i.slug,version:i.version,code:i.code||0,msg:i.msg||""}}async deleteFunction(e){let t=await this.request("POST",`${this.config.baseUrl}/v1/supabase/functions/delete`,{slug:e});return{success:t.success||!1,code:t.code||0,msg:t.msg||""}}async listBuckets(){let e=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/list`,{});return{buckets:(e.buckets||[]).map(e=>({id:e.id||"",name:e.name||"",public:e.public||!1,owner:e.owner,file_size_limit:e.file_size_limit,allowed_mime_types:e.allowed_mime_types,created_at:e.created_at,updated_at:e.updated_at})),code:e.code||0,msg:e.msg||""}}async getBucket(e){let t,n=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/get`,{bucket_id:e});if(n.bucket){let e=n.bucket;t={id:e.id||"",name:e.name||"",public:e.public||!1,owner:e.owner,file_size_limit:e.file_size_limit,allowed_mime_types:e.allowed_mime_types,created_at:e.created_at,updated_at:e.updated_at}}return{bucket:t,code:n.code||0,msg:n.msg||""}}async createBucket(e,t){let n={bucket_id:e};t?.name!==void 0&&(n.name=t.name),t?.public!==void 0&&(n.public=t.public),t?.file_size_limit!==void 0&&(n.file_size_limit=t.file_size_limit),t?.allowed_mime_types!==void 0&&(n.allowed_mime_types=t.allowed_mime_types);let i=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/create`,n);return{success:i.success||!1,bucket_id:i.bucket_id,code:i.code||0,msg:i.msg||""}}async updateBucket(e,t){let n={bucket_id:e};t?.public!==void 0&&(n.public=t.public),t?.file_size_limit!==void 0&&(n.file_size_limit=t.file_size_limit),t?.allowed_mime_types!==void 0&&(n.allowed_mime_types=t.allowed_mime_types);let i=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/update`,n);return{success:i.success||!1,code:i.code||0,msg:i.msg||""}}async deleteBucket(e){let t=await this.request("POST",`${this.config.baseUrl}/v1/supabase/buckets/delete`,{bucket_id:e});return{success:t.success||!1,code:t.code||0,msg:t.msg||""}}async getAuthConfig(){let e,t=await this.request("POST",`${this.config.baseUrl}/v1/supabase/auth/config/get`,{});if(t.config){let n=t.config;e={external_email_enabled:n.external_email_enabled,disable_signup:n.disable_signup,mailer_autoconfirm:n.mailer_autoconfirm,double_confirm_changes:n.double_confirm_changes,mailer_secure_email_change_enabled:n.mailer_secure_email_change_enabled,mailer_otp_exp:n.mailer_otp_exp,password_min_length:n.password_min_length,password_required_characters:n.password_required_characters,site_url:n.site_url,smtp_host:n.smtp_host,smtp_port:n.smtp_port,smtp_user:n.smtp_user,smtp_pass:n.smtp_pass,smtp_admin_email:n.smtp_admin_email,smtp_sender_name:n.smtp_sender_name,smtp_max_frequency:n.smtp_max_frequency}}return{config:e,code:t.code||0,msg:t.msg||""}}async updateAuthConfig(e){let t=await this.request("POST",`${this.config.baseUrl}/v1/supabase/auth/config/update`,{config:e});return{success:t.success||!1,code:t.code||0,msg:t.msg||""}}async diagnoseDatabase(e){let t,n={};void 0!==e&&(n.env=e);let i=await this.request("POST",`${this.config.baseUrl}/v1/supabase/database/diagnose`,n);if(i.report){let e=i.report;t={database_type:e.database_type??0,pg_metrics:e.pg_metrics||{},supabase_metrics:e.supabase_metrics}}return{report:t,code:i.code||0,msg:i.msg||""}}}n("./src/report/index.ts")},"./src/llm/models.ts"(e,t,n){"use strict";n.d(t,{c:()=>i});let i={MODEL:"doubao-seed-1-8-251228",THINKING:"disabled",CACHING:"disabled",TEMPERATURE:1,STREAMING:!0}},"./src/report/buffer.ts"(e,t,n){"use strict";n.d(t,{R:()=>i});class i{buffer=[];timer=null;projectId;env;client;destroyed=!1;flushing=!1;pendingFlush=!1;onExitHandler;constructor(e){this.client=e,this.projectId=process.env.COZELOOP_WORKSPACE_ID||null,this.env=process.env.COZE_PROJECT_ENV||null,this.timer=setInterval(()=>this.flush(),6e4),this.timer.unref&&this.timer.unref(),this.onExitHandler=()=>{this.destroyAndExit()},process.on("beforeExit",()=>this.destroy()),process.on("SIGTERM",this.onExitHandler),process.on("SIGINT",this.onExitHandler)}add(e){if(!this.destroyed)try{this.buffer.length>=6e4&&this.buffer.shift(),e.project_id=this.projectId,e.env=this.env,this.buffer.push(e),this.buffer.length>=100&&this.flush().catch(()=>{})}catch(e){console.error("[report] buffer.add failed:",e)}}async flush(){if(this.flushing){this.pendingFlush=!0;return}if(!this.buffer.length)return;let e=0;for(;;){this.flushing=!0;let t=this.buffer.splice(0,100),n=!1;try{await this.client.batchReport(t),n=!0,e=0}catch(i){if(e++,this.buffer=t.concat(this.buffer),this.buffer.length>6e4&&(this.buffer.length=6e4),e>=3){console.error(`[report] flush failed ${e} times, giving up until next cycle:`,i),this.flushing=!1,this.pendingFlush=!1;return}let n=1e3*2**(e-1);console.error(`[report] flush failed (attempt ${e}/3), retrying in ${n}ms:`,i),await new Promise(e=>setTimeout(e,n))}finally{this.flushing=!1}if(n){if(this.pendingFlush||this.buffer.length>=100){this.pendingFlush=!1;continue}this.pendingFlush=!1;return}}}destroy(){this.destroyed||(this.destroyed=!0,this.timer&&(clearInterval(this.timer),this.timer=null),process.removeListener("SIGTERM",this.onExitHandler),process.removeListener("SIGINT",this.onExitHandler),this.flush().catch(()=>{}))}destroyAndExit(){if(this.destroyed)return;this.destroyed=!0,this.timer&&(clearInterval(this.timer),this.timer=null),process.removeListener("SIGTERM",this.onExitHandler),process.removeListener("SIGINT",this.onExitHandler);let e=setTimeout(()=>process.exit(0),5e3);e.unref&&e.unref(),this.flush().catch(()=>{}).finally(()=>{clearTimeout(e),process.exit(0)})}}},"./src/report/index.ts"(e,t,n){"use strict";n.d(t,{LN:()=>createS3ReportMiddleware,T4:()=>getReportBuffer});var i=n("child_process");let r=!1,a={baseUrl:"",apiKey:""};function loadReportEnv(){if(r)return a;let e=process.env.COZE_INTEGRATION_BASE_URL||"",t=process.env.COZE_WORKLOAD_IDENTITY_API_KEY||"";if(e&&t)return r=!0,a={baseUrl:e,apiKey:t};try{if(n("./node_modules/dotenv/lib/main.js").config(),e=process.env.COZE_INTEGRATION_BASE_URL||"",t=process.env.COZE_WORKLOAD_IDENTITY_API_KEY||"",e&&t)return r=!0,a={baseUrl:e,apiKey:t}}catch{}try{let n=`
64
64
  import sys
65
65
  try:
66
66
  from coze_workload_identity import Client