bailian-cli-core 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,33 +1,33 @@
1
- import{createRequire as e}from"node:module";import{appendFileSync as t,createReadStream as n,createWriteStream as r,existsSync as i,mkdirSync as a,readFileSync as o,renameSync as s,rmSync as c,statSync as l,unlinkSync as u,writeFileSync as d}from"fs";import{homedir as f,tmpdir as p}from"os";import{basename as m,extname as h,join as g}from"path";import{parse as _,stringify as v}from"yaml";import{createHash as y,createHmac as b,randomBytes as ee,randomUUID as te}from"crypto";import{Readable as ne}from"stream";import{createInterface as x}from"readline";import{pipeline as re}from"stream/promises";import*as S from"yauzl";import{copyFileSync as ie,cpSync as ae,createWriteStream as oe,existsSync as C,lstatSync as w,mkdirSync as T,readFileSync as E,readdirSync as D,readlinkSync as se,renameSync as ce,rmSync as O,statSync as le,symlinkSync as k,writeFileSync as ue}from"node:fs";import{dirname as A,isAbsolute as j,join as M,relative as de,resolve as fe,sep as pe}from"node:path";import{homedir as me}from"node:os";import{createHash as he}from"node:crypto";import{Readable as ge}from"node:stream";import{pipeline as _e}from"node:stream/promises";import{createBrotliDecompress as ve}from"node:zlib";import ye from"tar-stream";import{mkdir as be}from"node:fs/promises";var xe=Object.create,Se=Object.defineProperty,Ce=Object.getOwnPropertyDescriptor,we=Object.getOwnPropertyNames,Te=Object.getPrototypeOf,Ee=Object.prototype.hasOwnProperty,De=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),Oe=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=we(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Ee.call(e,s)&&s!==n&&Se(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Ce(t,s))||r.enumerable});return e},ke=(e,t,n)=>(n=e==null?{}:xe(Te(e)),Oe(t||!e||!e.__esModule||!Ee.call(e,`default`)?Se(n,`default`,{value:e,enumerable:!0}):n,e)),Ae=/* @__PURE__ */ e(import.meta.url);const N={SUCCESS:0,GENERAL:1,USAGE:2,AUTH:3,QUOTA:4,TIMEOUT:5,NETWORK:6,CONFIRMATION_REQUIRED:7,CONTENT_FILTER:10};var P=class extends Error{exitCode;hint;api;rawResponse;constructor(e,t=N.GENERAL,n,r){super(e,r?.cause===void 0?void 0:{cause:r.cause}),this.name=`BailianError`,this.exitCode=t,this.hint=n,this.api=r?.api,this.rawResponse=r?.rawResponse}toJSON(){let e=je(this.cause);return{error:{code:this.exitCode,message:this.message,...this.hint?{hint:this.hint}:{},...this.api?.httpStatus===void 0?{}:{http_status:this.api.httpStatus},...this.api?.apiCode?{api_code:this.api.apiCode}:{},...this.api?.requestId?{request_id:this.api.requestId}:{},...e?{cause:e}:{}}}}},F=class extends P{constructor(e,t){super(e,N.USAGE,t),this.name=`UsageError`}};function je(e){if(e!=null){if(e instanceof Error){let t={message:e.message},n=e.code;return n&&(t.code=n),t}if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return{message:String(e)};try{return{message:JSON.stringify(e)}}catch{return}}}function Me(e,t,n){let r=t.error?.message||t.message||`HTTP ${e}`,i=t.error?.type??t.code,a=typeof i==`string`?i:typeof i==`number`?String(i):void 0;return new P(r,N.GENERAL,void 0,{api:{httpStatus:e,apiCode:a,requestId:t.request_id??t.requestID}})}function Ne(e){let t=e.trim(),n;try{n=new URL(t)}catch{throw Pe(e)}if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Pe(e);return n.origin}function Pe(e){return new P(`Invalid model base URL "${e}".`,N.USAGE,`Use an absolute http(s) URL.`)}const I={cn:`https://dashscope.aliyuncs.com`,us:`https://dashscope-us.aliyuncs.com`,intl:`https://dashscope-intl.aliyuncs.com`},Fe={cn:`https://help.aliyun.com/zh/model-studio`,us:`https://help.aliyun.com/zh/model-studio`,intl:`https://help.aliyun.com/zh/model-studio`},Ie=`https://bailian.cn-beijing.aliyuncs.com`,Le=[`en-US`,`zh-CN`],Re=`en-US`,ze=[`language`,`api_key`,`access_token`,`access_key_id`,`access_key_secret`,`security_token`,`base_url`,`output`,`output_dir`,`timeout`,`watermark`,`default_text_model`,`default_video_model`,`default_image_to_video_model`,`default_reference_to_video_model`,`default_image_model`,`default_speech_model`,`default_speech_recognition_model`,`default_omni_model`,`api_key_capabilities`,`workspace_id`,`console_site`,`console_region`,`console_switch_agent`,`telemetry`],Be=/* @__PURE__ */ new Set([`text`,`json`]),Ve=/* @__PURE__ */ new Set([`domestic`,`international`]),He=/^[a-z0-9]+(?:[.-][a-z0-9]+)*$/;function Ue(e){return He.test(e)}function We(e){if(e===void 0)return;if(!Array.isArray(e))return[];let t=[];for(let n of e){if(typeof n!=`string`)return[];let e=n.trim();if(!Ue(e))return[];t.includes(e)||t.push(e)}return t}function Ge(e){try{return Ne(e)}catch{return}}function Ke(e){if(!e||typeof e!=`object`||Array.isArray(e))return{};let t=e,n={};if(typeof t.language==`string`&&Le.includes(t.language)&&(n.language=t.language),typeof t.api_key==`string`&&(n.api_key=t.api_key),typeof t.access_token==`string`&&t.access_token.length>0?n.access_token=t.access_token:typeof t.accessToken==`string`&&t.accessToken.length>0&&(n.access_token=t.accessToken),typeof t.access_key_id==`string`&&t.access_key_id.length>0?n.access_key_id=t.access_key_id:typeof t.openapi_access_key_id==`string`&&t.openapi_access_key_id.length>0&&(n.access_key_id=t.openapi_access_key_id),typeof t.access_key_secret==`string`&&t.access_key_secret.length>0?n.access_key_secret=t.access_key_secret:typeof t.openapi_access_key_secret==`string`&&t.openapi_access_key_secret.length>0&&(n.access_key_secret=t.openapi_access_key_secret),typeof t.security_token==`string`&&t.security_token.length>0&&(n.security_token=t.security_token),typeof t.base_url==`string`){let e=Ge(t.base_url);e&&(n.base_url=e)}typeof t.output==`string`&&Be.has(t.output)&&(n.output=t.output),typeof t.output_dir==`string`&&t.output_dir.length>0&&(n.output_dir=t.output_dir),typeof t.timeout==`number`&&t.timeout>0&&(n.timeout=t.timeout),typeof t.watermark==`boolean`&&(n.watermark=t.watermark),typeof t.default_text_model==`string`&&t.default_text_model.length>0&&(n.default_text_model=t.default_text_model),typeof t.default_video_model==`string`&&t.default_video_model.length>0&&(n.default_video_model=t.default_video_model),typeof t.default_image_to_video_model==`string`&&t.default_image_to_video_model.length>0&&(n.default_image_to_video_model=t.default_image_to_video_model),typeof t.default_reference_to_video_model==`string`&&t.default_reference_to_video_model.length>0&&(n.default_reference_to_video_model=t.default_reference_to_video_model),typeof t.default_image_model==`string`&&t.default_image_model.length>0&&(n.default_image_model=t.default_image_model),typeof t.default_speech_model==`string`&&t.default_speech_model.length>0&&(n.default_speech_model=t.default_speech_model),typeof t.default_speech_recognition_model==`string`&&t.default_speech_recognition_model.length>0&&(n.default_speech_recognition_model=t.default_speech_recognition_model),typeof t.default_omni_model==`string`&&t.default_omni_model.length>0&&(n.default_omni_model=t.default_omni_model);let r=We(t.api_key_capabilities);return r!==void 0&&(n.api_key_capabilities=r),typeof t.workspace_id==`string`&&t.workspace_id.length>0&&(n.workspace_id=t.workspace_id),typeof t.console_site==`string`&&Ve.has(t.console_site)&&(n.console_site=t.console_site),typeof t.console_region==`string`&&t.console_region.length>0&&(n.console_region=t.console_region),typeof t.console_switch_agent==`number`&&t.console_switch_agent>0&&(n.console_switch_agent=t.console_switch_agent),typeof t.telemetry==`boolean`&&(n.telemetry=t.telemetry),n}function qe(e,t=I.cn){let n=e.flags.baseUrl||e.env.DASHSCOPE_BASE_URL||e.file.base_url;return{baseUrl:Ne(n||t),baseUrlIsDefault:!n}}function Je(e,t=I.cn){return qe(e,t).baseUrl}function Ye(e){let t=Je(e);if(e.flags.apiKey)return{token:e.flags.apiKey,baseUrl:t,source:`flag`};let n=e.env.DASHSCOPE_API_KEY?.trim();if(n)return{token:n,baseUrl:t,source:`env`};if(e.file.api_key)return{token:e.file.api_key,baseUrl:t,source:`config`};throw new P(`No API key found.`,N.AUTH,"Set DASHSCOPE_API_KEY, pass --api-key, or run `bl auth login`.")}function Xe(e){let t=e.file.access_token?.trim();if(!t)throw new P(`No console access token found.`,N.AUTH,"Run `bl auth login --console`.");return{token:t,region:e.flags.consoleRegion||e.file.console_region||`cn-beijing`,site:e.flags.consoleSite||e.file.console_site||`domestic`,switchAgent:e.flags.consoleSwitchAgent||e.file.console_switch_agent||void 0,source:`config`}}function Ze(e){let t=Qe(`flag`,e.flags.accessKeyId,e.flags.accessKeySecret,e.flags.accessKeyId!==void 0||e.flags.accessKeySecret!==void 0,e.flags.securityToken);if(t)return t;let n=Qe(`env`,e.env.ALIBABA_CLOUD_ACCESS_KEY_ID,e.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,!!($e(e.env.ALIBABA_CLOUD_ACCESS_KEY_ID)||$e(e.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET)),e.env.ALIBABA_CLOUD_SECURITY_TOKEN);if(n)return n;let r=Qe(`config`,e.file.access_key_id,e.file.access_key_secret,!!(e.file.access_key_id||e.file.access_key_secret),e.file.security_token);if(r)return r;throw new P(`No OpenAPI AK/SK credentials found.`,N.AUTH,"Set ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET, pass --access-key-id and --access-key-secret, or run `bl auth login --open-api`.")}function Qe(e,t,n,r,i){if(!r)return;let a=$e(t),o=$e(n);if(!a||!o)throw new P(`Incomplete OpenAPI AK/SK credentials found.`,N.AUTH,et(e));return{accessKeyId:a,accessKeySecret:o,securityToken:$e(i),source:e}}function $e(e){return e?.trim()||void 0}function et(e){return e===`flag`?`Pass both --access-key-id and --access-key-secret, or remove the partial flags to use env/config credentials.`:e===`env`?`Set both ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET, or unset the partial env vars to use config credentials.`:"Run `bl auth login --open-api --access-key-id <id> --access-key-secret <secret>` again to save a complete pair."}function tt(e){let t={};try{t.apiKey=Ye(e)}catch{}try{t.console=Xe(e)}catch{}try{t.openapi=Ze(e)}catch{}return t}function L(){return process.env.BAILIAN_CONFIG_DIR?process.env.BAILIAN_CONFIG_DIR:g(f(),`.bailian`)}function R(){return g(L(),`config.json`)}function nt(){return g(L(),`credentials.json`)}async function rt(){let e=L(),t=await import(`fs/promises`);await t.mkdir(e,{recursive:!0,mode:448});try{await t.chmod(e,448)}catch{}}function it(e){return v(e).replace(/\n$/,``)}function at(e){return JSON.stringify(e,null,2)}function ot(e,t,n){return JSON.stringify({error:{code:e,message:t,...n?{hint:n}:{}}},null,2)}function st(e){return e===`json`||e===`text`?e:`text`}function ct(e,t){switch(t){case`json`:return at(e);case`text`:return it(e)}}const lt=/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/,ut=`active_config`;function dt(e){return!(!e||typeof e!=`object`||Array.isArray(e))}function ft(e){if(e!==void 0&&e!==``&&e!=="default"){if(typeof e!=`string`||!lt.test(e))throw new P(`Invalid config name "${typeof e==`string`?e:JSON.stringify(e)}".`,N.USAGE,`Use letters, numbers, '-' or '_', starting with a letter or number.`);if(ze.includes(e)||e===ut)throw new P(`Invalid config name "${e}". It conflicts with a config key.`,N.USAGE);return e}}function z(){let e=R();if(!i(e))return{};try{let t=JSON.parse(o(e,`utf-8`));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch(e){let t=e;return(t instanceof SyntaxError||t.message.includes(`JSON`))&&console.warn(`Warning: config file is corrupted; using defaults.`),{}}}function pt(e,t){let n=ft(e[ut]);if(n&&t&&!dt(e[n]))throw new P(`Active config "${n}" does not exist.`,N.USAGE,`Use --config default to select the default config, then activate an existing profile.`);return n}function mt(e,t){if(!t)return e;let n=e[t];return dt(n)?n:{}}function B(e){return Ke(mt(z(),e))}async function ht(e,t,n={}){let r=z();if(t)r[t]=e;else{for(let e of Object.keys(r))ze.includes(e)&&delete r[e];Object.assign(r,e)}n.activate&&(r[ut]=t??`default`),await gt(r)}async function gt(e){await rt();let t=R(),n=t+`.tmp`;d(n,JSON.stringify(e,null,2)+`
2
- `,{mode:384}),s(n,t)}function _t(){let e=z(),t={};for(let[n,r]of Object.entries(e))ze.includes(n)||n===ut||dt(r)&&(t[n]=Ke(r));return{default:Ke(e),named:t,active:pt(e,!0)??`default`}}function vt(e,t){let n=ft(t);if(n&&!dt(e[n]))throw new P(`Config "${n}" does not exist.`,N.USAGE,`Create or log in to the profile before activating it.`);return n??`default`}function yt(e){return vt(z(),e)}async function bt(e){let t=z(),n=vt(t,e);return t[ut]=n,await gt(t),n}async function xt(e){let t=ft(e);if(!t)throw new P(`Cannot delete the default profile.`,N.USAGE);let n=z();return dt(n[t])?(delete n[t],pt(n,!1)===t&&(n[ut]=`default`),await gt(n),!0):!1}function St(e,t){if(e.flags.apiKey||e.flags.baseUrl||e.env.DASHSCOPE_API_KEY?.trim()||e.env.DASHSCOPE_BASE_URL||!e.configName)return{sources:e};let n=e.file.api_key_capabilities;return n===void 0||n.includes(t)?{sources:e}:{sources:{...e,file:B(),configName:void 0},fallbackFrom:e.configName}}function Ct(e){let t=z(),n=e.config!==void 0,r=pt(t,!n),i=n?ft(e.config):r;return{flags:e,file:Ke(mt(t,i)),env:process.env,configName:i,configPath:R()}}function wt(e){let{flags:t,file:n,env:r}=e,i=r.DASHSCOPE_TIMEOUT?Number(r.DASHSCOPE_TIMEOUT):void 0,a=i!==void 0&&Number.isFinite(i)&&i>0?i:void 0,o=t.timeout??a??n.timeout??300;if(!Number.isFinite(o)||o<=0)throw new P(`Timeout must be a positive finite number.`,N.USAGE);return{configPath:e.configPath??R(),configName:e.configName,output:st(t.output||r.DASHSCOPE_OUTPUT||n.output),outputExplicit:!!(t.output||r.DASHSCOPE_OUTPUT||n.output),outputDir:n.output_dir||void 0,timeout:o,watermark:n.watermark??!0,defaultTextModel:n.default_text_model,defaultVideoModel:n.default_video_model,defaultImageToVideoModel:n.default_image_to_video_model,defaultReferenceToVideoModel:n.default_reference_to_video_model,defaultImageModel:n.default_image_model,defaultSpeechModel:n.default_speech_model,defaultSpeechRecognitionModel:n.default_speech_recognition_model,defaultOmniModel:n.default_omni_model,workspaceId:t.workspaceId||r.BAILIAN_WORKSPACE_ID||n.workspace_id||void 0,consoleRegion:t.consoleRegion||n.console_region||void 0,consoleSite:t.consoleSite||n.console_site||void 0,consoleSwitchAgent:t.consoleSwitchAgent||n.console_switch_agent||void 0,verbose:t.verbose||r.DASHSCOPE_VERBOSE===`1`,quiet:t.quiet||!1,dryRun:t.dryRun||!1,telemetry:r.DO_NOT_TRACK===`1`?!1:n.telemetry??!0}}const Tt={"token-plan":{baseUrl:`https://token-plan.cn-beijing.maas.aliyuncs.com`,defaultTextModel:`qwen3.8-max`,defaultVideoModel:`happyhorse-1.1-t2v`,defaultImageToVideoModel:`happyhorse-1.1-i2v`,defaultReferenceToVideoModel:`happyhorse-1.1-r2v`,defaultImageModel:`wan2.7-image`,defaultSpeechModel:`qwen-audio-3.0-tts-plus`,defaultSpeechRecognitionModel:`qwen-audio-3.0-asr-flash`,apiKeyCapabilities:[`text.chat`,`vision.describe`,`image.generate`,`image.edit`,`speech.recognize`,`speech.synthesize`,`video.generate`,`video.ref`,`video.task.get`,`video.download`]}};function Et(e){return e?Tt[e]:void 0}function Dt(e){let t=e.trim();return t.startsWith(`sk-sp-`)?`token-plan`:t.startsWith(`sk-`)?`ordinary`:`unknown`}function Ot(e,t,n){if(n)return t;let r=Dt(e);if(r===`token-plan`)return`token-plan`;if(r!==`ordinary`||t!==`token-plan`)return t}const kt={console:[`access_token`],openapi:[`access_key_id`,`access_key_secret`,`security_token`],all:[`api_key`,`base_url`,`access_token`,`access_key_id`,`access_key_secret`,`security_token`]};function At(e){let t=e.configName,n=e.flags.config!==void 0;return{describe:()=>tt({...e,file:B(t)}),stored(){let e=B(t);return{apiKey:!!e.api_key,console:!!e.access_token,openapi:!!(e.access_key_id||e.access_key_secret||e.security_token),baseUrl:e.base_url,apiKeyCapabilities:e.api_key_capabilities}},resolveBaseUrl:t=>Je(e,t),async login(e){let r=e.api_key?Ot(e.api_key,t,n):t,i=n||r!==t,a=B(r);for(let[t,n]of Object.entries(e))if(n!==void 0){if(t===`api_key_capabilities`&&Array.isArray(n)){let e=Array.isArray(a[t])?a[t]:[];a[t]=[.../* @__PURE__ */ new Set([...e,...n])]}else a[t]=t===`base_url`?Ne(String(n)):n}await ht(a,r,{activate:i})},async logout(e){let n=B(t),r=kt[e];if(!r.some(e=>n[e]!==void 0))return!1;for(let e of r)delete n[e];return await ht(n,t),!0},get path(){return e.configPath??R()}}}function jt(e){return e.length>8?`${e.slice(0,4)}...${e.slice(-4)}`:`***`}const Mt=`bailian-cli`,Nt=`BailianCLI`,Pt=`X-Dashscope-Service`;function Ft(e){return JSON.stringify({channel:Mt,tags:{t1:`public`,t2:e.binName,t3:e.version}})}function V(e){return{"x-dashscope-source-config":Ft(e),"x-dashscope-openapisource":Nt,[Pt]:Mt}}function It(e){return typeof e!=`object`||!e||e instanceof FormData?!1:JSON.stringify(e).includes(`oss://`)}async function Lt(e,t){let n=zt((t.timeout??e.settings.timeout)*1e3,t.signal);try{return await Rt(e,t,n.signal)}finally{n.cleanup()}}async function Rt(e,t,n){let r=typeof FormData<`u`&&t.body instanceof FormData,i={"User-Agent":`${e.identity.clientName}/${e.identity.version}`,...V(e.identity),...t.headers};if(!r&&!i[`Content-Type`]&&(i[`Content-Type`]=`application/json`),t.async&&(i[`X-DashScope-Async`]=`enable`),It(t.body)&&(i[`X-DashScope-OssResourceResolve`]=`enable`),e.settings.verbose){console.error(`> ${t.method??`GET`} ${t.url}`);let n=i.Authorization;n&&console.error(`> Auth: ${jt(n.replace(/^Bearer /,``))}`),console.error(`> x-dashscope-source-config: ${Ft(e.identity)}`)}let a=await fetch(t.url,{method:t.method??`GET`,headers:i,body:t.body?r?t.body:JSON.stringify(t.body):void 0,signal:n});if(e.settings.verbose){console.error(`< ${a.status} ${a.statusText}`);let e=a.headers.get(`x-request-id`);e&&console.error(`request_id: ${e}`)}if(!a.ok){let e={};try{e=await a.json()}catch{if(n.aborted)throw n.reason}throw Me(a.status,e,t.url)}return a}function zt(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),e),i=()=>n.abort(t?.reason),a=()=>{clearTimeout(r),t?.removeEventListener(`abort`,i),n.signal.removeEventListener(`abort`,a)};return n.signal.addEventListener(`abort`,a,{once:!0}),t?.aborted?i():t?.addEventListener(`abort`,i,{once:!0}),{signal:n.signal,cleanup:a}}async function Bt(e,t){let n=zt((t.timeout??e.settings.timeout)*1e3,t.signal);try{let r=await Rt(e,t,n.signal),i;try{i=await r.json()}catch{if(n.signal.aborted)throw n.signal.reason;let e=r.headers.get(`content-type`)||``;throw new P(`API returned non-JSON response (${e||`unknown type`}). Server may be experiencing issues.\nAPI 返回了非 JSON 响应(${e||`未知类型`}),服务器可能出现问题。`,N.GENERAL)}if(i.code&&typeof i.code==`string`&&i.code!==`200`&&i.code!==`Success`)throw Me(200,{error:{message:i.message,type:i.code}},t.url);return i}catch(e){throw n.signal.aborted?n.signal.reason:e}finally{n.cleanup()}}function Vt(e){let t=[];for(let[n,r]of Object.entries(e))if(r!==void 0&&r!==``){if(Array.isArray(r))for(let e=0;e<r.length;e++){let i=r[e];i!==``&&t.push([`${n}.${e+1}`,i])}else t.push([n,r])}return t.sort(([e],[t])=>e<t?-1:+(e>t)),t.map(([e,t])=>`${Ut(e)}=${Ut(String(t))}`).join(`&`)}function Ht(e){let t=e.method??`POST`,n=(/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/,`Z`),r=te(),i=Wt(e.body),a={host:e.host,"x-acs-action":e.action,"x-acs-version":e.version,"x-acs-date":n,"x-acs-signature-nonce":r,"x-acs-content-sha256":i,"content-type":`application/json`};e.securityToken&&(a[`x-acs-security-token`]=e.securityToken);let o=Object.keys(a).filter(e=>e===`host`||e===`content-type`||e.startsWith(`x-acs-`)).sort(),s=o.map(e=>`${e}:${a[e]}`).join(`
1
+ import{createRequire as e}from"node:module";import{appendFileSync as t,createReadStream as n,createWriteStream as r,existsSync as i,mkdirSync as a,readFileSync as o,renameSync as s,rmSync as c,statSync as l,unlinkSync as u,writeFileSync as d}from"fs";import{homedir as f,tmpdir as p}from"os";import{basename as m,extname as h,join as g}from"path";import{parse as _,stringify as v}from"yaml";import{createHash as y,createHmac as b,randomBytes as ee,randomUUID as te}from"crypto";import{Readable as ne}from"stream";import{createInterface as x}from"readline";import{pipeline as re}from"stream/promises";import*as S from"yauzl";import{copyFileSync as ie,cpSync as ae,createWriteStream as oe,existsSync as C,lstatSync as w,mkdirSync as T,readFileSync as E,readdirSync as D,readlinkSync as se,renameSync as ce,rmSync as O,statSync as le,symlinkSync as k,writeFileSync as ue}from"node:fs";import{dirname as A,isAbsolute as j,join as M,relative as de,resolve as fe,sep as pe}from"node:path";import{homedir as me}from"node:os";import{createHash as he}from"node:crypto";import{Readable as ge}from"node:stream";import{pipeline as _e}from"node:stream/promises";import{createBrotliDecompress as ve}from"node:zlib";import ye from"tar-stream";import{mkdir as be}from"node:fs/promises";var xe=Object.create,Se=Object.defineProperty,Ce=Object.getOwnPropertyDescriptor,we=Object.getOwnPropertyNames,Te=Object.getPrototypeOf,Ee=Object.prototype.hasOwnProperty,De=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),Oe=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=we(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Ee.call(e,s)&&s!==n&&Se(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Ce(t,s))||r.enumerable});return e},ke=(e,t,n)=>(n=e==null?{}:xe(Te(e)),Oe(t||!e||!e.__esModule||!Ee.call(e,`default`)?Se(n,`default`,{value:e,enumerable:!0}):n,e)),Ae=/* @__PURE__ */ e(import.meta.url);const N={SUCCESS:0,GENERAL:1,USAGE:2,AUTH:3,QUOTA:4,TIMEOUT:5,NETWORK:6,CONFIRMATION_REQUIRED:7,CONTENT_FILTER:10};var P=class extends Error{exitCode;hint;api;rawResponse;constructor(e,t=N.GENERAL,n,r){super(e,r?.cause===void 0?void 0:{cause:r.cause}),this.name=`BailianError`,this.exitCode=t,this.hint=n,this.api=r?.api,this.rawResponse=r?.rawResponse}toJSON(){let e=je(this.cause);return{error:{code:this.exitCode,message:this.message,...this.hint?{hint:this.hint}:{},...this.api?.httpStatus===void 0?{}:{http_status:this.api.httpStatus},...this.api?.apiCode?{api_code:this.api.apiCode}:{},...this.api?.requestId?{request_id:this.api.requestId}:{},...e?{cause:e}:{}}}}},F=class extends P{constructor(e,t){super(e,N.USAGE,t),this.name=`UsageError`}};function je(e){if(e!=null){if(e instanceof Error){let t={message:e.message},n=e.code;return n&&(t.code=n),t}if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return{message:String(e)};try{return{message:JSON.stringify(e)}}catch{return}}}function Me(e,t,n){let r=t.error?.message||t.message||`HTTP ${e}`,i=t.error?.type??t.code,a=typeof i==`string`?i:typeof i==`number`?String(i):void 0;return new P(r,N.GENERAL,void 0,{api:{httpStatus:e,apiCode:a,requestId:t.request_id??t.requestID}})}function Ne(e){let t=e.trim(),n;try{n=new URL(t)}catch{throw Pe(e)}if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Pe(e);return n.origin}function Pe(e){return new P(`Invalid model base URL "${e}".`,N.USAGE,`Use an absolute http(s) URL.`)}const Fe={cn:`https://dashscope.aliyuncs.com`,us:`https://dashscope-us.aliyuncs.com`,intl:`https://dashscope-intl.aliyuncs.com`},Ie={cn:`https://help.aliyun.com/zh/model-studio`,us:`https://help.aliyun.com/zh/model-studio`,intl:`https://help.aliyun.com/zh/model-studio`},Le=`https://bailian.cn-beijing.aliyuncs.com`,Re=[`en-US`,`zh-CN`],ze=`en-US`,Be=[`language`,`api_key`,`access_token`,`access_key_id`,`access_key_secret`,`security_token`,`base_url`,`output`,`output_dir`,`timeout`,`watermark`,`default_text_model`,`default_video_model`,`default_image_to_video_model`,`default_reference_to_video_model`,`default_image_model`,`default_speech_model`,`default_speech_recognition_model`,`default_omni_model`,`api_key_capabilities`,`workspace_id`,`console_site`,`console_region`,`console_switch_agent`,`telemetry`],Ve=/* @__PURE__ */ new Set([`text`,`json`]),He=/* @__PURE__ */ new Set([`domestic`,`international`]),Ue=/^[a-z0-9]+(?:[.-][a-z0-9]+)*$/;function We(e){return Ue.test(e)}function Ge(e){if(e===void 0)return;if(!Array.isArray(e))return[];let t=[];for(let n of e){if(typeof n!=`string`)return[];let e=n.trim();if(!We(e))return[];t.includes(e)||t.push(e)}return t}function Ke(e){try{return Ne(e)}catch{return}}function qe(e){if(!e||typeof e!=`object`||Array.isArray(e))return{};let t=e,n={};if(typeof t.language==`string`&&Re.includes(t.language)&&(n.language=t.language),typeof t.api_key==`string`&&(n.api_key=t.api_key),typeof t.access_token==`string`&&t.access_token.length>0?n.access_token=t.access_token:typeof t.accessToken==`string`&&t.accessToken.length>0&&(n.access_token=t.accessToken),typeof t.access_key_id==`string`&&t.access_key_id.length>0?n.access_key_id=t.access_key_id:typeof t.openapi_access_key_id==`string`&&t.openapi_access_key_id.length>0&&(n.access_key_id=t.openapi_access_key_id),typeof t.access_key_secret==`string`&&t.access_key_secret.length>0?n.access_key_secret=t.access_key_secret:typeof t.openapi_access_key_secret==`string`&&t.openapi_access_key_secret.length>0&&(n.access_key_secret=t.openapi_access_key_secret),typeof t.security_token==`string`&&t.security_token.length>0&&(n.security_token=t.security_token),typeof t.base_url==`string`){let e=Ke(t.base_url);e&&(n.base_url=e)}typeof t.output==`string`&&Ve.has(t.output)&&(n.output=t.output),typeof t.output_dir==`string`&&t.output_dir.length>0&&(n.output_dir=t.output_dir),typeof t.timeout==`number`&&t.timeout>0&&(n.timeout=t.timeout),typeof t.watermark==`boolean`&&(n.watermark=t.watermark),typeof t.default_text_model==`string`&&t.default_text_model.length>0&&(n.default_text_model=t.default_text_model),typeof t.default_video_model==`string`&&t.default_video_model.length>0&&(n.default_video_model=t.default_video_model),typeof t.default_image_to_video_model==`string`&&t.default_image_to_video_model.length>0&&(n.default_image_to_video_model=t.default_image_to_video_model),typeof t.default_reference_to_video_model==`string`&&t.default_reference_to_video_model.length>0&&(n.default_reference_to_video_model=t.default_reference_to_video_model),typeof t.default_image_model==`string`&&t.default_image_model.length>0&&(n.default_image_model=t.default_image_model),typeof t.default_speech_model==`string`&&t.default_speech_model.length>0&&(n.default_speech_model=t.default_speech_model),typeof t.default_speech_recognition_model==`string`&&t.default_speech_recognition_model.length>0&&(n.default_speech_recognition_model=t.default_speech_recognition_model),typeof t.default_omni_model==`string`&&t.default_omni_model.length>0&&(n.default_omni_model=t.default_omni_model);let r=Ge(t.api_key_capabilities);return r!==void 0&&(n.api_key_capabilities=r),typeof t.workspace_id==`string`&&t.workspace_id.length>0&&(n.workspace_id=t.workspace_id),typeof t.console_site==`string`&&He.has(t.console_site)&&(n.console_site=t.console_site),typeof t.console_region==`string`&&t.console_region.length>0&&(n.console_region=t.console_region),typeof t.console_switch_agent==`number`&&t.console_switch_agent>0&&(n.console_switch_agent=t.console_switch_agent),typeof t.telemetry==`boolean`&&(n.telemetry=t.telemetry),n}function Je(e,t=Fe.cn){let n=e.flags.baseUrl||e.env.DASHSCOPE_BASE_URL||e.file.base_url;return{baseUrl:Ne(n||t),baseUrlIsDefault:!n}}function Ye(e,t=Fe.cn){return Je(e,t).baseUrl}function Xe(e){let t=Ye(e);if(e.flags.apiKey)return{token:e.flags.apiKey,baseUrl:t,source:`flag`};let n=e.env.DASHSCOPE_API_KEY?.trim();if(n)return{token:n,baseUrl:t,source:`env`};if(e.file.api_key)return{token:e.file.api_key,baseUrl:t,source:`config`};throw new P(`No API key found.`,N.AUTH,"Set DASHSCOPE_API_KEY, pass --api-key, or run `bl auth login`.")}function Ze(e){let t=e.file.access_token?.trim();if(!t)throw new P(`No console access token found.`,N.AUTH,"Run `bl auth login --console`.");return{token:t,region:e.flags.consoleRegion||e.file.console_region||`cn-beijing`,site:e.flags.consoleSite||e.file.console_site||`domestic`,switchAgent:e.flags.consoleSwitchAgent||e.file.console_switch_agent||void 0,source:`config`}}function Qe(e){let t=$e(`flag`,e.flags.accessKeyId,e.flags.accessKeySecret,e.flags.accessKeyId!==void 0||e.flags.accessKeySecret!==void 0,e.flags.securityToken);if(t)return t;let n=$e(`env`,e.env.ALIBABA_CLOUD_ACCESS_KEY_ID,e.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,!!(et(e.env.ALIBABA_CLOUD_ACCESS_KEY_ID)||et(e.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET)),e.env.ALIBABA_CLOUD_SECURITY_TOKEN);if(n)return n;let r=$e(`config`,e.file.access_key_id,e.file.access_key_secret,!!(e.file.access_key_id||e.file.access_key_secret),e.file.security_token);if(r)return r;throw new P(`No OpenAPI AK/SK credentials found.`,N.AUTH,"Set ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET, pass --access-key-id and --access-key-secret, or run `bl auth login --open-api`.")}function $e(e,t,n,r,i){if(!r)return;let a=et(t),o=et(n);if(!a||!o)throw new P(`Incomplete OpenAPI AK/SK credentials found.`,N.AUTH,tt(e));return{accessKeyId:a,accessKeySecret:o,securityToken:et(i),source:e}}function et(e){return e?.trim()||void 0}function tt(e){return e===`flag`?`Pass both --access-key-id and --access-key-secret, or remove the partial flags to use env/config credentials.`:e===`env`?`Set both ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET, or unset the partial env vars to use config credentials.`:"Run `bl auth login --open-api --access-key-id <id> --access-key-secret <secret>` again to save a complete pair."}function nt(e){let t={};try{t.apiKey=Xe(e)}catch{}try{t.console=Ze(e)}catch{}try{t.openapi=Qe(e)}catch{}return t}function I(){return process.env.BAILIAN_CONFIG_DIR?process.env.BAILIAN_CONFIG_DIR:g(f(),`.bailian`)}function L(){return g(I(),`config.json`)}function rt(){return g(I(),`credentials.json`)}async function it(){let e=I(),t=await import(`fs/promises`);await t.mkdir(e,{recursive:!0,mode:448});try{await t.chmod(e,448)}catch{}}function at(e){return v(e).replace(/\n$/,``)}function ot(e){return JSON.stringify(e,null,2)}function st(e,t,n){return JSON.stringify({error:{code:e,message:t,...n?{hint:n}:{}}},null,2)}function ct(e){return e===`json`||e===`text`?e:`text`}function lt(e,t){switch(t){case`json`:return ot(e);case`text`:return at(e)}}const ut={"en-US":`Timeout must be a positive finite number.`,"zh-CN":`请求超时必须是一个有限的正数。`};function dt(e){if(typeof e!=`number`||!Number.isFinite(e)||e<=0)return ut}const ft=/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/,pt=`active_config`;function mt(e){return!(!e||typeof e!=`object`||Array.isArray(e))}function ht(e){if(e!==void 0&&e!==``&&e!=="default"){if(typeof e!=`string`||!ft.test(e))throw new P(`Invalid config name "${typeof e==`string`?e:JSON.stringify(e)}".`,N.USAGE,`Use letters, numbers, '-' or '_', starting with a letter or number.`);if(Be.includes(e)||e===pt)throw new P(`Invalid config name "${e}". It conflicts with a config key.`,N.USAGE);return e}}function R(){let e=L();if(!i(e))return{};try{let t=JSON.parse(o(e,`utf-8`));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch(e){let t=e;return(t instanceof SyntaxError||t.message.includes(`JSON`))&&console.warn(`Warning: config file is corrupted; using defaults.`),{}}}function gt(e,t){let n=ht(e[pt]);if(n&&t&&!mt(e[n]))throw new P(`Active config "${n}" does not exist.`,N.USAGE,`Use --config default to select the default config, then activate an existing profile.`);return n}function _t(e,t){if(!t)return e;let n=e[t];return mt(n)?n:{}}function z(e){return qe(_t(R(),e))}async function vt(e,t,n={}){let r=R();if(t)r[t]=e;else{for(let e of Object.keys(r))Be.includes(e)&&delete r[e];Object.assign(r,e)}n.activate&&(r[pt]=t??`default`),await yt(r)}async function yt(e){await it();let t=L(),n=t+`.tmp`;d(n,JSON.stringify(e,null,2)+`
2
+ `,{mode:384}),s(n,t)}function bt(){let e=R(),t={};for(let[n,r]of Object.entries(e))Be.includes(n)||n===pt||mt(r)&&(t[n]=qe(r));return{default:qe(e),named:t,active:gt(e,!0)??`default`}}function xt(e,t){let n=ht(t);if(n&&!mt(e[n]))throw new P(`Config "${n}" does not exist.`,N.USAGE,`Create or log in to the profile before activating it.`);return n??`default`}function St(e){return xt(R(),e)}async function Ct(e){let t=R(),n=xt(t,e);return t[pt]=n,await yt(t),n}async function wt(e){let t=ht(e);if(!t)throw new P(`Cannot delete the default profile.`,N.USAGE);let n=R();return mt(n[t])?(delete n[t],gt(n,!1)===t&&(n[pt]=`default`),await yt(n),!0):!1}function Tt(e,t){if(e.flags.apiKey||e.flags.baseUrl||e.env.DASHSCOPE_API_KEY?.trim()||e.env.DASHSCOPE_BASE_URL||!e.configName)return{sources:e};let n=e.file.api_key_capabilities;return n===void 0||n.includes(t)?{sources:e}:{sources:{...e,file:z(),configName:void 0},fallbackFrom:e.configName}}function Et(e){let t=R(),n=e.config!==void 0,r=gt(t,!n),i=n?ht(e.config):r;return{flags:e,file:qe(_t(t,i)),env:process.env,configName:i,configPath:L()}}function Dt(e){let{flags:t,file:n,env:r}=e,i=r.DASHSCOPE_TIMEOUT?Number(r.DASHSCOPE_TIMEOUT):void 0,a=dt(i)===void 0?i:void 0,o=t.timeout??a??n.timeout??300,s=dt(o);if(s)throw new P(s[`en-US`],N.USAGE);return{configPath:e.configPath??L(),configName:e.configName,output:ct(t.output||r.DASHSCOPE_OUTPUT||n.output),outputExplicit:!!(t.output||r.DASHSCOPE_OUTPUT||n.output),outputDir:n.output_dir||void 0,timeout:o,watermark:n.watermark??!0,defaultTextModel:n.default_text_model,defaultVideoModel:n.default_video_model,defaultImageToVideoModel:n.default_image_to_video_model,defaultReferenceToVideoModel:n.default_reference_to_video_model,defaultImageModel:n.default_image_model,defaultSpeechModel:n.default_speech_model,defaultSpeechRecognitionModel:n.default_speech_recognition_model,defaultOmniModel:n.default_omni_model,workspaceId:t.workspaceId||r.BAILIAN_WORKSPACE_ID||n.workspace_id||void 0,consoleRegion:t.consoleRegion||n.console_region||void 0,consoleSite:t.consoleSite||n.console_site||void 0,consoleSwitchAgent:t.consoleSwitchAgent||n.console_switch_agent||void 0,verbose:t.verbose||r.DASHSCOPE_VERBOSE===`1`,quiet:t.quiet||!1,dryRun:t.dryRun||!1,telemetry:r.DO_NOT_TRACK===`1`?!1:n.telemetry??!0}}const Ot={"token-plan":{baseUrl:`https://token-plan.cn-beijing.maas.aliyuncs.com`,defaultTextModel:`qwen3.8-max`,defaultVideoModel:`happyhorse-1.1-t2v`,defaultImageToVideoModel:`happyhorse-1.1-i2v`,defaultReferenceToVideoModel:`happyhorse-1.1-r2v`,defaultImageModel:`wan2.7-image`,defaultSpeechModel:`qwen-audio-3.0-tts-plus`,defaultSpeechRecognitionModel:`qwen-audio-3.0-asr-flash`,apiKeyCapabilities:[`text.chat`,`vision.describe`,`image.generate`,`image.edit`,`speech.recognize`,`speech.synthesize`,`video.generate`,`video.ref`,`video.task.get`,`video.download`]}};function kt(e){return e?Ot[e]:void 0}function At(e){let t=e.trim();return t.startsWith(`sk-sp-`)?`token-plan`:t.startsWith(`sk-`)?`ordinary`:`unknown`}function jt(e,t,n){if(n)return t;let r=At(e);if(r===`token-plan`)return`token-plan`;if(r!==`ordinary`||t!==`token-plan`)return t}const Mt={console:[`access_token`],openapi:[`access_key_id`,`access_key_secret`,`security_token`],all:[`api_key`,`base_url`,`access_token`,`access_key_id`,`access_key_secret`,`security_token`]};function Nt(e){let t=e.configName,n=e.flags.config!==void 0;return{describe:()=>nt({...e,file:z(t)}),stored(){let e=z(t);return{apiKey:!!e.api_key,console:!!e.access_token,openapi:!!(e.access_key_id||e.access_key_secret||e.security_token),baseUrl:e.base_url,apiKeyCapabilities:e.api_key_capabilities}},resolveBaseUrl:t=>Ye(e,t),async login(e){let r=e.api_key?jt(e.api_key,t,n):t,i=n||r!==t,a=z(r);for(let[t,n]of Object.entries(e))if(n!==void 0){if(t===`api_key_capabilities`&&Array.isArray(n)){let e=Array.isArray(a[t])?a[t]:[];a[t]=[.../* @__PURE__ */ new Set([...e,...n])]}else a[t]=t===`base_url`?Ne(String(n)):n}await vt(a,r,{activate:i})},async logout(e){let n=z(t),r=Mt[e];if(!r.some(e=>n[e]!==void 0))return!1;for(let e of r)delete n[e];return await vt(n,t),!0},get path(){return e.configPath??L()}}}function Pt(e){return e.length>8?`${e.slice(0,4)}...${e.slice(-4)}`:`***`}const Ft=`bailian-cli`,It=`BailianCLI`,Lt=`X-Dashscope-Service`;function Rt(e){return JSON.stringify({channel:Ft,tags:{t1:`public`,t2:e.binName,t3:e.version}})}function B(e){return{"x-dashscope-source-config":Rt(e),"x-dashscope-openapisource":It,[Lt]:Ft}}function zt(e){return typeof e!=`object`||!e||e instanceof FormData?!1:JSON.stringify(e).includes(`oss://`)}async function Bt(e,t){let n=Ht((t.timeout??e.settings.timeout)*1e3,t.signal);try{return await Vt(e,t,n.signal)}finally{n.cleanup()}}async function Vt(e,t,n){let r=typeof FormData<`u`&&t.body instanceof FormData,i={"User-Agent":`${e.identity.clientName}/${e.identity.version}`,...B(e.identity),...t.headers};if(!r&&!i[`Content-Type`]&&(i[`Content-Type`]=`application/json`),t.async&&(i[`X-DashScope-Async`]=`enable`),zt(t.body)&&(i[`X-DashScope-OssResourceResolve`]=`enable`),e.settings.verbose){console.error(`> ${t.method??`GET`} ${t.url}`);let n=i.Authorization;n&&console.error(`> Auth: ${Pt(n.replace(/^Bearer /,``))}`),console.error(`> x-dashscope-source-config: ${Rt(e.identity)}`)}let a=await fetch(t.url,{method:t.method??`GET`,headers:i,body:t.body?r?t.body:JSON.stringify(t.body):void 0,signal:n});if(e.settings.verbose){console.error(`< ${a.status} ${a.statusText}`);let e=a.headers.get(`x-request-id`);e&&console.error(`request_id: ${e}`)}if(!a.ok){let e={};try{e=await a.json()}catch{if(n.aborted)throw n.reason}throw Me(a.status,e,t.url)}return a}function Ht(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),e),i=()=>n.abort(t?.reason),a=()=>{clearTimeout(r),t?.removeEventListener(`abort`,i),n.signal.removeEventListener(`abort`,a)};return n.signal.addEventListener(`abort`,a,{once:!0}),t?.aborted?i():t?.addEventListener(`abort`,i,{once:!0}),{signal:n.signal,cleanup:a}}async function Ut(e,t){let n=Ht((t.timeout??e.settings.timeout)*1e3,t.signal);try{let r=await Vt(e,t,n.signal),i;try{i=await r.json()}catch{if(n.signal.aborted)throw n.signal.reason;let e=r.headers.get(`content-type`)||``;throw new P(`API returned non-JSON response (${e||`unknown type`}). Server may be experiencing issues.\nAPI 返回了非 JSON 响应(${e||`未知类型`}),服务器可能出现问题。`,N.GENERAL)}if(i.code&&typeof i.code==`string`&&i.code!==`200`&&i.code!==`Success`)throw Me(200,{error:{message:i.message,type:i.code}},t.url);return i}catch(e){throw n.signal.aborted?n.signal.reason:e}finally{n.cleanup()}}function Wt(e){let t=[];for(let[n,r]of Object.entries(e))if(r!==void 0&&r!==``){if(Array.isArray(r))for(let e=0;e<r.length;e++){let i=r[e];i!==``&&t.push([`${n}.${e+1}`,i])}else t.push([n,r])}return t.sort(([e],[t])=>e<t?-1:+(e>t)),t.map(([e,t])=>`${Kt(e)}=${Kt(String(t))}`).join(`&`)}function Gt(e){let t=e.method??`POST`,n=(/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/,`Z`),r=te(),i=qt(e.body),a={host:e.host,"x-acs-action":e.action,"x-acs-version":e.version,"x-acs-date":n,"x-acs-signature-nonce":r,"x-acs-content-sha256":i,"content-type":`application/json`};e.securityToken&&(a[`x-acs-security-token`]=e.securityToken);let o=Object.keys(a).filter(e=>e===`host`||e===`content-type`||e.startsWith(`x-acs-`)).sort(),s=o.map(e=>`${e}:${a[e]}`).join(`
3
3
  `)+`
4
4
  `,c=o.join(`;`),l=e.queryString??``,u=[t,e.pathname,l,s,c,i].join(`
5
- `),d=`ACS3-HMAC-SHA256`,f=`${d}\n${Wt(u)}`,p=Gt(e.accessKeySecret,f);return a.authorization=`${d} Credential=${e.accessKeyId},SignedHeaders=${c},Signature=${p}`,a}function Ut(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function Wt(e){return y(`sha256`).update(e,`utf8`).digest(`hex`)}function Gt(e,t){return b(`sha256`,e).update(t,`utf8`).digest(`hex`)}const Kt=`${I.cn}/api/v1/uploads`;async function qt(e,t,n,r){let i=`${Kt}?action=getPolicy&model=${encodeURIComponent(t)}`,a=tn(15e3,r),o=await fetch(i,{headers:{Authorization:`Bearer ${e}`,"Content-Type":`application/json`,...V(n)},signal:a.signal}).finally(a.cleanup);if(!o.ok){let e=await o.text().catch(()=>``);throw new P(`Failed to get upload policy (HTTP ${o.status}): ${e}`,N.GENERAL)}return(await o.json()).data}async function Jt(e,t,n){let r=m(t),i=`${e.upload_dir}/${r}`,a=o(t),s=new FormData;s.append(`OSSAccessKeyId`,e.oss_access_key_id),s.append(`Signature`,e.signature),s.append(`policy`,e.policy),s.append(`x-oss-object-acl`,e.x_oss_object_acl),s.append(`x-oss-forbid-overwrite`,e.x_oss_forbid_overwrite),s.append(`key`,i),s.append(`success_action_status`,`200`),s.append(`file`,new Blob([a]),r);let c=tn(12e4,n),l=await fetch(e.upload_host,{method:`POST`,body:s,signal:c.signal}).finally(c.cleanup);if(!l.ok){let e=await l.text().catch(()=>``);throw new P(`Failed to upload file to OSS (HTTP ${l.status}): ${e}`,N.GENERAL)}return`oss://${i}`}const Yt={".bmp":`image/bmp`,".heic":`image/heic`,".jpe":`image/jpeg`,".jpeg":`image/jpeg`,".jpg":`image/jpeg`,".png":`image/png`,".tif":`image/tiff`,".tiff":`image/tiff`,".webp":`image/webp`};function Xt(e){if(!i(e))throw new P(`File not found: ${e}`,N.USAGE);if(!l(e).isFile())throw new P(`Not a file: ${e}`,N.USAGE);let t=h(e).toLowerCase(),n=Yt[t];if(!n)throw new P(`Unsupported image format "${t||`unknown`}".`,N.USAGE,`Use an image file with a recognized extension.`);return`data:${n};base64,${o(e).toString(`base64`)}`}function Zt(e){let t=/^data:([^;,]+);base64,/i.exec(e);return t?`data:${t[1]};base64,<omitted>`:e}async function Qt(e){let{apiKey:t,model:n,filePath:r,identity:a,signal:o}=e;if(!i(r))throw new P(`File not found: ${r}`,N.USAGE);if(!l(r).isFile())throw new P(`Not a file: ${r}`,N.USAGE);return Jt(await qt(t,n,a,o),r,o)}function $t(e){return e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`oss://`)||e.startsWith(`data:`)?!1:i(e)}async function en(e,t,n,r){return $t(e)?Qt({apiKey:t,model:n,filePath:e,identity:r.identity,signal:r.signal}):e}function tn(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),e),i=()=>n.abort(t?.reason),a=()=>{clearTimeout(r),t?.removeEventListener(`abort`,i)};return t?.aborted?i():t?.addEventListener(`abort`,i,{once:!0}),n.signal.addEventListener(`abort`,a,{once:!0}),{signal:n.signal,cleanup:a}}function nn(e){let t=e,n=!1;t.endsWith(`\r`)&&(n=!0,t=t.slice(0,-1)),t=t.replace(/\r\n/g,`
5
+ `),d=`ACS3-HMAC-SHA256`,f=`${d}\n${qt(u)}`,p=Jt(e.accessKeySecret,f);return a.authorization=`${d} Credential=${e.accessKeyId},SignedHeaders=${c},Signature=${p}`,a}function Kt(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function qt(e){return y(`sha256`).update(e,`utf8`).digest(`hex`)}function Jt(e,t){return b(`sha256`,e).update(t,`utf8`).digest(`hex`)}const Yt=`${Fe.cn}/api/v1/uploads`;async function Xt(e,t,n,r){let i=`${Yt}?action=getPolicy&model=${encodeURIComponent(t)}`,a=an(15e3,r),o=await fetch(i,{headers:{Authorization:`Bearer ${e}`,"Content-Type":`application/json`,...B(n)},signal:a.signal}).finally(a.cleanup);if(!o.ok){let e=await o.text().catch(()=>``);throw new P(`Failed to get upload policy (HTTP ${o.status}): ${e}`,N.GENERAL)}return(await o.json()).data}async function Zt(e,t,n,r=120){let i=m(t),a=`${e.upload_dir}/${i}`,s=o(t),c=new FormData;c.append(`OSSAccessKeyId`,e.oss_access_key_id),c.append(`Signature`,e.signature),c.append(`policy`,e.policy),c.append(`x-oss-object-acl`,e.x_oss_object_acl),c.append(`x-oss-forbid-overwrite`,e.x_oss_forbid_overwrite),c.append(`key`,a),c.append(`success_action_status`,`200`),c.append(`file`,new Blob([s]),i);let l=an(r*1e3,n),u=await fetch(e.upload_host,{method:`POST`,body:c,signal:l.signal}).finally(l.cleanup);if(!u.ok){let e=await u.text().catch(()=>``);throw new P(`Failed to upload file to OSS (HTTP ${u.status}): ${e}`,N.GENERAL)}return`oss://${a}`}const Qt={".bmp":`image/bmp`,".heic":`image/heic`,".jpe":`image/jpeg`,".jpeg":`image/jpeg`,".jpg":`image/jpeg`,".png":`image/png`,".tif":`image/tiff`,".tiff":`image/tiff`,".webp":`image/webp`};function $t(e){if(!i(e))throw new P(`File not found: ${e}`,N.USAGE);if(!l(e).isFile())throw new P(`Not a file: ${e}`,N.USAGE);let t=h(e).toLowerCase(),n=Qt[t];if(!n)throw new P(`Unsupported image format "${t||`unknown`}".`,N.USAGE,`Use an image file with a recognized extension.`);return`data:${n};base64,${o(e).toString(`base64`)}`}function en(e){let t=/^data:([^;,]+);base64,/i.exec(e);return t?`data:${t[1]};base64,<omitted>`:e}async function tn(e){let{apiKey:t,model:n,filePath:r,identity:a,signal:o,timeout:s}=e;if(!i(r))throw new P(`File not found: ${r}`,N.USAGE);if(!l(r).isFile())throw new P(`Not a file: ${r}`,N.USAGE);return Zt(await Xt(t,n,a,o),r,o,s)}function nn(e){return e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`oss://`)||e.startsWith(`data:`)?!1:i(e)}async function rn(e,t,n,r){return nn(e)?tn({apiKey:t,model:n,filePath:e,identity:r.identity,signal:r.signal,timeout:r.timeout}):e}function an(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),e),i=()=>n.abort(t?.reason),a=()=>{clearTimeout(r),t?.removeEventListener(`abort`,i)};return t?.aborted?i():t?.addEventListener(`abort`,i,{once:!0}),n.signal.addEventListener(`abort`,a,{once:!0}),{signal:n.signal,cleanup:a}}function on(e){let t=e,n=!1;t.endsWith(`\r`)&&(n=!0,t=t.slice(0,-1)),t=t.replace(/\r\n/g,`
6
6
  `).replace(/\r/g,`
7
7
  `);let r=t.split(`
8
- `),i=r.pop()??``;return{lines:r,rest:n?`${i}\r`:i}}function rn(e,t,n){if(e===``)return t.data===void 0?{event:{}}:{event:{},completed:{data:t.data,event:t.event,id:t.id}};if(e.startsWith(`:`))return{event:t};let r=e.indexOf(`:`);if(r===-1)return{event:t};let i=e.slice(0,r),a=e.slice(r+1).trimStart(),o={...t};switch(i){case`data`:if(o.data=o.data===void 0?a:`${o.data}\n${a}`,o.data.length>n)throw new P(`SSE event exceeded the maximum buffer size.`,N.GENERAL);break;case`event`:o.event=a;break;case`id`:o.id=a}return{event:o}}async function*an(e){let t=e.body?.getReader();if(!t)return;let n=new TextDecoder,r=``,i=16777216;try{let e={};for(;;){let{done:a,value:o}=await t.read();if(a){if(r.length>0){let t=r.replace(/\r\n/g,`
8
+ `),i=r.pop()??``;return{lines:r,rest:n?`${i}\r`:i}}function sn(e,t,n){if(e===``)return t.data===void 0?{event:{}}:{event:{},completed:{data:t.data,event:t.event,id:t.id}};if(e.startsWith(`:`))return{event:t};let r=e.indexOf(`:`);if(r===-1)return{event:t};let i=e.slice(0,r),a=e.slice(r+1).trimStart(),o={...t};switch(i){case`data`:if(o.data=o.data===void 0?a:`${o.data}\n${a}`,o.data.length>n)throw new P(`SSE event exceeded the maximum buffer size.`,N.GENERAL);break;case`event`:o.event=a;break;case`id`:o.id=a}return{event:o}}async function*cn(e){let t=e.body?.getReader();if(!t)return;let n=new TextDecoder,r=``,i=16777216;try{let e={};for(;;){let{done:a,value:o}=await t.read();if(a){if(r.length>0){let t=r.replace(/\r\n/g,`
9
9
  `).replace(/\r/g,`
10
10
  `).split(`
11
- `);r=t.pop()??``;for(let n of t){let t=rn(n,e,i);e=t.event,t.completed&&(yield t.completed)}}break}if(r+=n.decode(o,{stream:!0}),r.length>i)throw new P(`SSE stream exceeded the maximum buffer size.`,N.GENERAL);let{lines:s,rest:c}=nn(r);r=c;for(let t of s){let n=rn(t,e,i);e=n.event,n.completed&&(yield n.completed)}}r.length>0&&(e=rn(r,e,i).event),e.data!==void 0&&(yield{data:e.data,event:e.event,id:e.id})}finally{t.releaseLock()}}function on(e){return String(e)}var sn=class{sseUrl;messageUrl;nextId=1;deps;authToken;abortController;pending=/* @__PURE__ */ new Map;endpointReady;resolveEndpoint;rejectEndpoint;closed=!1;streamEnded=!1;constructor(e,t,n){this.deps=e,this.sseUrl=t,this.authToken=n,this.endpointReady=new Promise((e,t)=>{this.resolveEndpoint=e,this.rejectEndpoint=t})}async initialize(){if(!this.authToken)throw new P(`This command needs a model-domain API key.`,N.AUTH);await this.openSse();let e=await this.rpc(`initialize`,{protocolVersion:`2025-03-26`,capabilities:{},clientInfo:{name:this.deps.identity.clientName,version:this.deps.identity.version}});this.deps.settings.verbose&&(console.error(`[MCP SSE] Session initialized`),console.error(`[MCP SSE] Server: ${JSON.stringify(e)}`)),await this.notify(`notifications/initialized`)}async listTools(){return(await this.rpc(`tools/list`)).tools||[]}async callTool(e,t){return await this.rpc(`tools/call`,{name:e,arguments:t})}close(){this.closed||(this.closed=!0,this.abortController?.abort(),this.failPending(new P(`MCP SSE session closed.`,N.GENERAL)),this.messageUrl=void 0)}failPending(e){for(let[,t]of this.pending)t.reject(e);this.pending.clear()}markStreamEnded(e){this.streamEnded=!0,this.messageUrl=void 0,this.failPending(e)}async openSse(){if(this.abortController)return;this.abortController=new AbortController;let e=this.deps.settings.timeout*1e3,t=!1,n=setTimeout(()=>{t=!0,this.abortController?.abort()},e),r={Accept:`text/event-stream`,"User-Agent":`${this.deps.identity.clientName}/${this.deps.identity.version}`,...V(this.deps.identity)};this.authToken&&(r.Authorization=`Bearer ${this.authToken}`),this.deps.settings.verbose&&console.error(`> GET ${this.sseUrl}`);let i;try{i=await fetch(this.sseUrl,{method:`GET`,headers:r,signal:this.abortController.signal})}catch(e){throw clearTimeout(n),this.abortController=void 0,this.closed?new P(`MCP SSE session closed.`,N.GENERAL):t?new P(`MCP SSE timed out waiting for response headers.`,N.TIMEOUT):e}if(this.deps.settings.verbose&&console.error(`< ${i.status} ${i.statusText}`),!i.ok){let e=`MCP request failed: ${i.status} ${i.statusText}`;try{let t=await i.text();t&&(e+=` - ${t.slice(0,500)}`)}catch(r){throw clearTimeout(n),this.abortController=void 0,this.closed?new P(`MCP SSE session closed.`,N.GENERAL):t?new P(`MCP SSE timed out reading error response body.`,N.TIMEOUT):new P(e,N.GENERAL,void 0,{cause:r})}throw clearTimeout(n),this.abortController=void 0,new P(e,N.GENERAL)}clearTimeout(n),this.consumeSse(i).catch(e=>{if(this.closed)return;let t=e instanceof P?e:new P(`MCP SSE stream failed: ${e instanceof Error?e.message:String(e)}`,N.GENERAL);this.rejectEndpoint?.(t),this.streamEnded||this.markStreamEnded(t)});let a=ln(e,`MCP SSE timed out waiting for endpoint event.`);try{await Promise.race([this.endpointReady,a.promise])}finally{a.cancel()}}async consumeSse(e){for await(let t of an(e)){if(this.closed)break;if(t.event===`endpoint`){let e=t.data.trim();if(!e)continue;this.messageUrl=cn(this.sseUrl,e),this.resolveEndpoint?.(),this.resolveEndpoint=void 0,this.rejectEndpoint=void 0;continue}if(t.event===`message`||t.event===void 0){let e;try{e=JSON.parse(t.data)}catch{continue}if(typeof e.id!=`number`&&typeof e.id!=`string`)continue;let n=on(e.id),r=this.pending.get(n);if(!r)continue;this.pending.delete(n),r.resolve(e)}}if(!this.closed){if(!this.messageUrl){let e=new P(`MCP SSE stream ended before endpoint event.`,N.GENERAL);throw this.rejectEndpoint?.(e),e}this.markStreamEnded(new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL))}}async rpc(e,t){if(this.closed||this.streamEnded)throw new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL);let n=this.nextId++,r=on(n),i={jsonrpc:`2.0`,id:n,method:e,...t?{params:t}:{}},a=this.deps.settings.timeout*1e3,o=new Promise((e,t)=>{this.pending.set(r,{resolve:e,reject:t})});o.catch(()=>void 0);let s=ln(a,`MCP SSE timed out waiting for response to ${e}.`);try{if(await this.postMessage(i),this.closed||this.streamEnded)throw new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL);let e=await Promise.race([o,s.promise]);if(e.error)throw new P(`MCP error (${e.error.code}): ${e.error.message}`,N.GENERAL);return e.result}catch(e){throw this.pending.delete(r),e}finally{s.cancel()}}async notify(e,t){let n={jsonrpc:`2.0`,method:e,...t?{params:t}:{}};await this.postMessage(n)}async postMessage(e){if(this.closed||this.streamEnded)throw new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL);if(!this.messageUrl)throw new P(`MCP SSE message endpoint is not ready.`,N.GENERAL);let t={"Content-Type":`application/json`,Accept:`application/json, text/event-stream`,"User-Agent":`${this.deps.identity.clientName}/${this.deps.identity.version}`,...V(this.deps.identity)};this.authToken&&(t.Authorization=`Bearer ${this.authToken}`),this.deps.settings.verbose&&(console.error(`> POST ${this.messageUrl}`),console.error(`> Method: ${e.method}`));let n=un(this.deps.settings.timeout*1e3,this.abortController?.signal),r;try{try{r=await fetch(this.messageUrl,{method:`POST`,headers:t,body:JSON.stringify(e),signal:n.signal})}catch(e){throw this.closed?new P(`MCP SSE session closed.`,N.GENERAL):e}if(this.deps.settings.verbose&&console.error(`< ${r.status} ${r.statusText}`),!r.ok){let e=`MCP request failed: ${r.status} ${r.statusText}`;try{let t=await r.text();t&&(e+=` - ${t.slice(0,500)}`)}catch(t){throw this.closed?new P(`MCP SSE session closed.`,N.GENERAL):n.timedOut?new P(`MCP SSE timed out reading error response body.`,N.TIMEOUT):new P(e,N.GENERAL,void 0,{cause:t})}throw new P(e,N.GENERAL)}}finally{n.cleanup()}}};function cn(e,t){let n,r;try{r=new URL(e),n=new URL(t,e)}catch{throw new P(`MCP SSE endpoint is not a valid URL: ${t}`,N.GENERAL)}if(n.origin!==r.origin)throw new P(`MCP SSE endpoint origin mismatch: expected ${r.origin}, got ${n.origin}`,N.GENERAL);return n.toString()}function ln(e,t){let n,r=new Promise((r,i)=>{n=setTimeout(()=>{n=void 0,i(new P(t,N.TIMEOUT))},e)});return r.catch(()=>void 0),{promise:r,cancel:()=>{n!==void 0&&(clearTimeout(n),n=void 0)}}}function un(e,t){let n=new AbortController,r={timedOut:!1},i=setTimeout(()=>{r.timedOut=!0,n.abort()},e),a=()=>n.abort(t?.reason),o=()=>{clearTimeout(i),t?.removeEventListener(`abort`,a)};return t?.aborted?a():t?.addEventListener(`abort`,a,{once:!0}),n.signal.addEventListener(`abort`,o,{once:!0}),{signal:n.signal,cleanup:o,get timedOut(){return r.timedOut}}}function dn(e){return`/api/v1/mcps/${e}/mcp`}function fn(e){return`/api/v1/mcps/${e}/sse`}function pn(e){return e instanceof P&&/^MCP request failed:\s*405\b/i.test(e.message)}function mn(e){return e instanceof P&&/^MCP request failed:\s*(405|404)\b/i.test(e.message)}async function hn(e){let{deps:t,authToken:n,httpUrl:r,sseUrl:i,serverCode:a,urlOverride:o}=e;if(o){let e=new gn(t,o,n);try{return await e.initialize(),{client:e,url:o}}catch(e){if(!mn(e))throw e}let r=new sn(t,o,n);try{return await r.initialize(),{client:r,url:o}}catch(e){throw r.close(),e}}let s=new gn(t,r,n);try{return await s.initialize(),{client:s,url:r}}catch(e){if(!pn(e)||a===`WebSearch`)throw e}let c=new sn(t,i,n);try{return await c.initialize(),{client:c,url:i}}catch(e){throw c.close(),e}}var gn=class{url;sessionId;nextId=1;deps;authToken;constructor(e,t,n){this.deps=e,this.url=t,this.authToken=n}async initialize(){if(!this.authToken)throw new P(`This command needs a model-domain API key.`,N.AUTH);let e=await this.rpc(`initialize`,{protocolVersion:`2025-03-26`,capabilities:{},clientInfo:{name:this.deps.identity.clientName,version:this.deps.identity.version}});this.deps.settings.verbose&&(console.error(`[MCP] Session initialized: ${this.sessionId??`no session`}`),console.error(`[MCP] Server: ${JSON.stringify(e)}`)),await this.notify(`notifications/initialized`)}async listTools(){return(await this.rpc(`tools/list`)).tools||[]}async callTool(e,t){return await this.rpc(`tools/call`,{name:e,arguments:t})}async rpc(e,t){let n=this.nextId++,r={jsonrpc:`2.0`,id:n,method:e,...t?{params:t}:{}},i=await this.send(r),a=await this.readJsonRpcResponse(i,n);if(a.error)throw new P(`MCP error (${a.error.code}): ${a.error.message}`,N.GENERAL);return a.result}async notify(e,t){let n={jsonrpc:`2.0`,method:e,...t?{params:t}:{}};await this.send(n)}async readJsonRpcResponse(e,t){return(e.headers.get(`content-type`)||``).includes(`text/event-stream`)?await this.readJsonRpcFromSse(e,t):await e.json()}async readJsonRpcFromSse(e,t){let n=String(t);for await(let t of an(e)){if(t.event&&t.event!==`message`)continue;let e;try{e=JSON.parse(t.data)}catch{continue}if(e.id!=null&&String(e.id)===n)return e}throw new P(`MCP SSE response stream ended without a matching JSON-RPC response.`,N.GENERAL)}async send(e){let t={"Content-Type":`application/json`,Accept:`application/json, text/event-stream`,"User-Agent":`${this.deps.identity.clientName}/${this.deps.identity.version}`,...V(this.deps.identity)};this.authToken&&(t.Authorization=`Bearer ${this.authToken}`),this.sessionId&&(t[`Mcp-Session-Id`]=this.sessionId),this.deps.settings.verbose&&(console.error(`> POST ${this.url}`),console.error(`> Method: ${e.method}`));let n=this.deps.settings.timeout*1e3,r=await fetch(this.url,{method:`POST`,headers:t,body:JSON.stringify(e),signal:AbortSignal.timeout(n)});this.deps.settings.verbose&&console.error(`< ${r.status} ${r.statusText}`);let i=r.headers.get(`Mcp-Session-Id`)||r.headers.get(`mcp-session-id`);if(i&&(this.sessionId=i),!r.ok){let e=`MCP request failed: ${r.status} ${r.statusText}`;try{let t=await r.text();t&&(e+=` - ${t.slice(0,500)}`)}catch{}throw new P(e,N.GENERAL)}return r}};const _n={"cn-beijing":{domestic:{csGateway:`bailian-cs.console.aliyun.com`,action:`BroadScopeAspnGateway`},international:{csGateway:`bailian-cs.console.alibabacloud.com`,action:`BroadScopeAspnGateway`}},"ap-southeast-1":{domestic:{csGateway:`modelstudio-cs.console.aliyun.com`,action:`IntlBroadScopeAspnGateway`},international:{csGateway:`bailian-singapore-cs.alibabacloud.com`,action:`IntlBroadScopeAspnGateway`}}};function vn(e,t){return _n[e]?.[t]??_n[`cn-beijing`][t]}function yn(e){let t=e.consoleRegion??`cn-beijing`,n=e.consoleSite??`domestic`,r=e.consoleSwitchAgent;return r==null?{consoleRegion:t,consoleSite:n}:{consoleRegion:t,consoleSite:n,consoleSwitchAgent:r}}function bn(e){let t=yn(e);return(n,r)=>Sn({region:t.consoleRegion,site:t.consoleSite,switchAgent:t.consoleSwitchAgent},e.timeout,{api:n,data:r})}function xn(e,t,n){return JSON.stringify({Api:e,V:`1.0`,Data:{...t,cornerstoneParam:{protocol:`V2`,console:`ONE_CONSOLE`,productCode:`p_efm`,switchUserType:3,consoleSite:`BAILIAN_ALIYUN`,...n==null?{}:{switchAgent:n},...typeof t.cornerstoneParam==`object`&&t.cornerstoneParam!==null?t.cornerstoneParam:{}}}})}async function Sn(e,t,{api:n,data:r},i){let a=vn(e.region,e.site),o=`https://${a.csGateway}`,s=a.action,c=xn(n,r,e.switchAgent),l=new URLSearchParams({params:c,region:e.region}),u=t*1e3,d={Accept:`*/*`,"Content-Type":`application/x-www-form-urlencoded`};e.token&&(d.Authorization=`Bearer ${e.token}`);let f=`${o}/cli/api.json?action=${s}&product=sfm_bailian&api=${encodeURIComponent(n)}`;i?.verbose&&(process.stderr.write(`> POST ${f}\n`),process.stderr.write(`> payload ${JSON.stringify({params:JSON.parse(c),region:e.region},null,2)}\n`));let p=await fetch(f,{method:`POST`,headers:d,body:l.toString(),signal:AbortSignal.timeout(u)});if(i?.verbose&&process.stderr.write(`< ${p.status} ${p.statusText}\n`),!p.ok){let e=await p.text().catch(()=>``);throw new P(`Console CLI gateway failed: HTTP ${p.status} ${p.statusText}`,N.GENERAL,e.slice(0,500))}let m=await p.json(),h=m.data;if(h?.success===!1&&h.errorCode){let e=JSON.stringify(m),t=h.errorCode,n=typeof t==`string`?t:JSON.stringify(t),r=n.includes(`NotLogined`);throw new P(r?`Console session is not logged in or has expired.`:`Console gateway error: ${n}`,r?N.AUTH:N.GENERAL,r?"Run `bl auth login --console` to sign in or refresh your console session.":void 0,{rawResponse:e})}return m}var Cn=class{deps;constructor(e){this.deps=e}get http(){return{identity:this.deps.identity,settings:this.deps.settings}}requireApi(){if(!this.deps.apiCred)throw new P(`This command needs a model-domain API key.`,N.AUTH);return this.deps.apiCred}requireOpenApi(){if(!this.deps.openApiCred)throw new P(`This command needs Alibaba Cloud OpenAPI AK/SK credentials.`,N.AUTH);return this.deps.openApiCred}get baseUrl(){return this.deps.apiCred?.baseUrl??this.deps.baseUrl}exportApiCredential(){return this.deps.apiCred}bailianMcpRegistrationHeaders(){return{Authorization:`Bearer ${this.requireApi().token}`,...V(this.deps.identity)}}url(e,t){return(this.deps.baseUrlIsDefault&&t?t():this.baseUrl)+e}toOpts({path:e,...t}){let n=this.requireApi();return{...t,url:/^https?:\/\//.test(e)?e:n.baseUrl+e,headers:{...t.headers,Authorization:`Bearer ${n.token}`}}}request(e){return Lt(this.http,this.toOpts(e))}requestJson(e){return Bt(this.http,this.toOpts(e))}uploadFile(e,t,n={}){return $t(e)?en(e,this.requireApi().token,t,{...n,identity:this.deps.identity}):Promise.resolve(e)}resolveImageInput(e,t,n={}){return $t(e)?this.usesTokenPlanEndpoint()?Promise.resolve(Xt(e)):this.uploadFile(e,t,{signal:n.signal}):Promise.resolve(e)}usesTokenPlanEndpoint(){try{return/^token-plan\.[a-z0-9-]+\.maas\.aliyuncs\.com$/i.test(new URL(this.baseUrl).hostname)}catch{return!1}}mcp(e){let t=/^https?:\/\//.test(e)?e:this.requireApi().baseUrl+e;return new gn(this.http,t,this.deps.apiCred?.token)}connectBailianMcp(e,t){return this.requireApi(),hn({deps:this.http,authToken:this.deps.apiCred?.token,httpUrl:this.url(dn(e)),sseUrl:this.url(fn(e)),serverCode:e,urlOverride:t})}async console(e,t){if(!this.deps.consoleCred)throw new P(`This command needs a console access token.`,N.AUTH);let n={api:e,data:t},{timeout:r}=this.deps.settings;try{return await Sn(this.deps.consoleCred,r,n,this.deps.settings)}catch(e){if(!(e instanceof P)||e.exitCode!==N.AUTH||!e.message.includes(`not logged in`))throw e;let t=await On({identity:this.deps.identity,settings:this.deps.settings,baseUrl:this.deps.baseUrl});if(!t)throw e;return await Sn({...this.deps.consoleCred,token:t},r,n,this.deps.settings)}}openApiQueryJson(e){return this.openApiJson(e)}async openApiJson(e){let t=this.requireOpenApi(),n=e.body===void 0?``:JSON.stringify(e.body),r=e.queryParams?Vt(e.queryParams):``,i=`https://${e.host}${e.path}${r?`?${r}`:``}`,a=Ht({accessKeyId:t.accessKeyId,accessKeySecret:t.accessKeySecret,securityToken:t.securityToken,action:e.action,version:e.version,body:n,host:e.host,pathname:e.path,method:e.method,queryString:r});this.deps.settings.verbose&&(process.stderr.write(`> ${e.method} ${i}\n`),process.stderr.write(`> x-acs-action: ${e.action} (version ${e.version})\n`),process.stderr.write(`> AK: ${jt(t.accessKeyId)}\n`),t.securityToken&&process.stderr.write(`> STS token: ${jt(t.securityToken)}\n`),r&&process.stderr.write(`> query: ${r}\n`),n&&process.stderr.write(`> body: ${n}\n`));let o=this.deps.settings.timeout*1e3,s=await fetch(i,{method:e.method,headers:{...a,...V(this.deps.identity)},body:n||void 0,signal:AbortSignal.timeout(o)}),c=await s.text();this.deps.settings.verbose&&(process.stderr.write(`< ${s.status} ${s.statusText}\n`),process.stderr.write(`< ${c}\n`));let l;try{l=JSON.parse(c)}catch{throw new P(`${s.status} ${s.statusText} - ${c.slice(0,500)}`,N.GENERAL)}if(!s.ok||l.Success===!1)throw new P(`${l.Code||s.status} - ${l.Message||s.statusText}`,N.GENERAL);return l}};const wn={cn:`modelstudio.cn-beijing.aliyuncs.com`,intl:`modelstudio.ap-southeast-1.aliyuncs.com`};function Tn(e){for(let[t,n]of Object.entries(I))if(e===n||e.startsWith(`${n}/`))return t;return`cn`}function En(e){let t=Tn(e);return wn[t]??wn.cn}async function Dn(e){let{identity:t,settings:n,baseUrl:r,accessKeyId:i,accessKeySecret:a,securityToken:o}=e,s=new Cn({identity:t,settings:n,baseUrl:r,openApiCred:{accessKeyId:i,accessKeySecret:a,securityToken:o,source:`flag`}}),c=En(r);return s.openApiQueryJson({host:c,path:`/modelstudio/cli/generateAccessToken`,action:`GenerateCLIAccessToken`,version:`2026-02-10`,method:`POST`,queryParams:{}})}async function On(e){let t=e.settings.configName,n=B(t),r=n.access_key_id,i=n.access_key_secret;if(!r||!i)return null;e.settings.verbose&&process.stderr.write(`Refreshing access token...
12
- `);let a=(await Dn({identity:e.identity,settings:e.settings,baseUrl:e.baseUrl,accessKeyId:r,accessKeySecret:i})).cliAccessToken;if(!a)return null;let o=B(t);return o.access_token=a,await ht(o,t),a}function kn(){return`/compatible-mode/v1/chat/completions`}function An(){return`/compatible-mode/v1/responses`}function jn(){return`/api/v1/services/aigc/image-generation/generation`}function Mn(){return`/api/v1/services/aigc/multimodal-generation/generation`}function Nn(){return`/api/v1/services/aigc/text2image/image-synthesis`}function Pn(){return`/api/v1/services/aigc/image2image/image-synthesis`}function Fn(){return`/api/v1/services/aigc/video-generation/video-synthesis`}function In(){return`/api/v1/services/aigc/image2video/video-synthesis`}function Ln(e){return`/api/v1/tasks/${encodeURIComponent(e)}`}function Rn(){return`/api/v1/models/limits`}function zn(){return`/api/v1/models/permissions`}function Bn(e){return`/api/v1/apps/${encodeURIComponent(e)}/completion`}function Vn(){return`/api/v2/apps/memory/add`}function Hn(){return`/api/v2/apps/memory/memory_nodes/search`}function Un(){return`/api/v2/apps/memory/memory_nodes`}function Wn(e){return`/api/v2/apps/memory/memory_nodes/${encodeURIComponent(e)}`}function Gn(){return`/api/v1/services/audio/tts/SpeechSynthesizer`}function Kn(){return`/api/v1/services/audio/asr/transcription`}function qn(){return`/api/v1/services/audio/asr/customization`}function Jn(){return`/api/v2/apps/memory/profile_schemas`}function Yn(e){return`/api/v2/apps/memory/profile_schemas/${encodeURIComponent(e)}/profiles`}function Xn(){return`/api/v1/indices/rag/index/retrieve`}function Zn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}function Qn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v1/indices/knowledge/search`}function $n(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v2/apps/knowledge/chat`}function er(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}const tr=`/api/v1/agentstudio/security`;function nr(e){return`${e}${tr}/overview`}function rr(e){return`${e}${tr}/agent_logs`}function ir(){return`/api/v1/mcps/WebSearch/mcp`}function ar(){return`/compatible-mode/v1/files`}function or(){return`/api/v1/files`}function sr(e){return`/api/v1/files/${encodeURIComponent(e)}`}function cr(){return`/api/v1/fine-tunes`}function lr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}`}function ur(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/cancel`}function dr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/logs`}function fr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/checkpoints`}function pr(e,t){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/export/${encodeURIComponent(t)}`}function mr(){return`/api/v1/deployments`}function hr(e){return`/api/v1/deployments/${encodeURIComponent(e)}`}function gr(e){return`${hr(e)}/capacity-instances`}function _r(e,t){return`${gr(e)}/${encodeURIComponent(t)}`}function vr(e,t){return`${_r(e,t)}/scale`}function yr(e,t){return`${_r(e,t)}/renew`}function br(e){return`${hr(e)}/update-overflowstrategy`}function xr(e,t){return`${hr(e)}/capacity-operations/${encodeURIComponent(t)}`}function Sr(e){return`${hr(e)}/scale`}function Cr(e){return`/api/v1/deployments/${encodeURIComponent(e)}/update`}function wr(){return`/api/v1/deployments/models`}function Tr(e,t){return`https://${e}.cn-beijing.maas.aliyuncs.com${t}`}function Er(){return`/api/v1/agentstudio/files`}function Dr(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}function Or(e){return`/api/v1/agentstudio/sandbox${e}`}function kr(e,t){return Dr(e)+Or(t)}const Ar={sandboxes:`/sandboxes`,sandboxList:`/v2/sandboxes`,templates:`/templates`,templateCreate:`/v3/templates`,templateList:`/v2/templates`};function jr(e){return`${Ar.sandboxes}/${encodeURIComponent(e)}`}function Mr(e,t){return`${jr(e)}/${t}`}function Nr(e){return`${Ar.templates}/${encodeURIComponent(e)}`}function Pr(e,t){return`${Nr(e)}/builds/${encodeURIComponent(t)}/status`}const Fr={indexList:`/api/v1/indices/rag/index/list`,indexCreateV2:`/api/v1/indices/rag/index/create_v2`,indexUpdate:`/api/v1/indices/rag/index/update`,indexDelete:`/api/v1/indices/rag/index/delete`,indexMonitor:`/api/v1/indices/rag/index/monitor`,indexFiles:`/api/v1/indices/rag/index/files`,indexDeleteFile:`/api/v1/indices/rag/index/delete_file`,indexJobCreate:`/api/v1/indices/rag/index/job/create`,indexJobStatus:`/api/v1/indices/rag/index_job/status`,chunkList:`/api/v1/indices/rag/index/chunklist`,chunkCreate:`/api/v1/indices/rag/index/chunk/create`,chunkUpdate:`/api/v1/indices/rag/index/chunk/update`,chunkDelete:`/api/v1/indices/rag/index/chunk/delete`,agentList:`/api/v1/indices/rag/app/list`,agentGet:`/api/v1/indices/rag/app/get`,agentCreate:`/api/v1/indices/rag/app/create`,agentUpdate:`/api/v1/indices/rag/app/update`,agentDeploy:`/api/v1/indices/rag/app/deploy`,agentDelete:`/api/v1/indices/rag/app/delete`,agentCopy:`/api/v1/indices/rag/app/copy`,applyFileUploadLease:`/api/v1/connector/dash/applyFileUploadLease`,addFile:`/api/v1/connector/dash/addFile`,addFilesFromAuthorizedOss:`/api/v1/connector/dash/addFilesFromAuthorizedOss`,batchUpdateFileTag:`/api/v1/connector/dash/batchUpdateFileTag`,listFile:`/api/v1/connector/dash/listFile`,describeFile:`/api/v1/connector/dash/describeFile`,deleteFile:`/api/v1/connector/dash/deleteFile`,addConnector:`/api/v1/connector/dash/addConnector`,getConnector:`/api/v1/connector/dash/getConnector`,listCategory:`/api/v1/connector/dash/listCategory`,addCategory:`/api/v1/connector/dash/addCategory`,deleteCategory:`/api/v1/connector/dash/deleteCategory`},Ir=[`qwen-image`,`wan2.7-image`,`z-image`],Lr=[`qwen-image-3.0`,`qwen-image-2.0`,`qwen-image-edit`,`wan2.7-image`,`wan2.6-image`];function Rr(e,t){return t.some(t=>e.startsWith(t))}function zr(e){return Rr(e,Ir)||e.startsWith(`wan2.6-image`)}function Br(e){return Rr(e,Ir)}function Vr(e){return Rr(e,Lr)}function Hr(e){return/^wanx-v1(?:-|$)/i.test(e)}function Ur(e){return e.startsWith(`wan2.6-t2i`)||e.startsWith(`wan2.6-image`)||Br(e)?!1:!!(/^wan2\.[0-5][^-]*-t2i/i.test(e)||Hr(e)||/^wanx/i.test(e)&&/t2i|text2image/i.test(e))}function Wr(e){return/wan2\.5-i2i/i.test(e)}function Gr(e){return/imageedit/i.test(e)}function Kr(e){return e.startsWith(`qwen-image-3.0`)||e.startsWith(`qwen-image-2.0`)||e.startsWith(`qwen-image-edit`)?`qwen-image-2.0`:e.startsWith(`qwen-image`)?`qwen-image-fixed`:e.startsWith(`wan2.7-image`)?`wan27`:e.startsWith(`z-image`)?`z-image`:e.startsWith(`wan2.6-t2i`)||e.startsWith(`wan2.6-image`)||e.startsWith(`wan2.5-t2i`)?`wan26`:Hr(e)?`wanx-v1`:/wan2\.5-i2i/i.test(e)?`wan25-i2i`:Ur(e)?`wan-legacy`:`wan26`}function qr(e){if(e.startsWith(`qwen-image-3.0`)||e.startsWith(`qwen-image-2.0`)||e.startsWith(`qwen-image-max`))return!0;if(e.startsWith(`z-image`))return!1}function H(e,t){return{...e,sizeProfile:Kr(t),promptExtendDefault:qr(t)}}function Jr(e){return Br(e)?H({kind:`sync-multimodal`,path:Mn(),useSync:!0,inputStyle:`messages`},e):Ur(e)?H({kind:`async-text2image`,path:Nn(),useSync:!1,inputStyle:`prompt`},e):H({kind:`async-image-generation`,path:jn(),useSync:!1,inputStyle:`messages`},e)}function Yr(e){return Vr(e)?H({kind:`sync-multimodal`,path:Mn(),useSync:!0,inputStyle:`messages`},e):Gr(e)?H({kind:`async-image2image`,path:Pn(),useSync:!1,inputStyle:`function-base-image`},e):Wr(e)?H({kind:`async-image2image`,path:Pn(),useSync:!1,inputStyle:`prompt-images`},e):H({kind:`async-image-generation`,path:jn(),useSync:!1,inputStyle:`messages`},e)}function Xr(e){return/realtime|streaming/i.test(e)}function Zr(e){return/filetrans/i.test(e)}function Qr(e){return/^qwen3-asr-flash-filetrans(?:-|$)/i.test(e)}const $r=[`fun-asr-flash`,`qwen-audio`];function ei(e){return Xr(e)||Zr(e)?!1:!!(e.startsWith($r[0])||e.startsWith($r[1])&&/asr-flash/i.test(e))}function ti(e){return!(!/^qwen3-asr-flash(?:-|$)/i.test(e)||Zr(e)||Xr(e)||ei(e))}function ni(e){if(Xr(e))return{kind:`unsupported`,path:``,useSync:!1,unsupportedReason:`Model "${e}" is a realtime/streaming ASR model and requires a WebSocket API. Use an async filetrans model (e.g. fun-asr, qwen3-asr-flash-filetrans) or a sync flash model (e.g. qwen3-asr-flash, qwen-audio-3.0-asr-flash) with this command.`};if(Zr(e)){let t=Qr(e);return{kind:`async-filetrans`,path:Kn(),useSync:!1,asyncInputStyle:t?`file_url`:`file_urls`,asyncLanguageStyle:t?`language`:`language_hints`}}return ei(e)?{kind:`sync-flash`,path:Mn(),useSync:!0,flashFamily:`input-audio`}:ti(e)?{kind:`sync-flash`,path:Mn(),useSync:!0,flashFamily:`qwen3`}:{kind:`async-filetrans`,path:Kn(),useSync:!1,asyncInputStyle:`file_urls`,asyncLanguageStyle:`language_hints`}}function ri(e){let t=/^data:audio\/([^;,]+)/i.exec(e)?.[1]?.toLowerCase();if(t)return t===`mpeg`?`mp3`:t===`x-wav`||t===`wave`?`wav`:t;let n=(e.split(/[?#]/,1)[0]??e).match(/\.([a-zA-Z0-9]+)$/)?.[1]?.toLowerCase();return n?n===`mpeg`?`mp3`:n:`wav`}function ii(e){return[{role:`user`,content:[{type:`input_text`,text:e}]}]}function ai(e,t){return t?e===`language`?{language:t}:{language_hints:[t]}:{}}function oi(e){let{model:t,audioUrl:n,language:r,vocabularyId:i,vocabulary:a,context:o,flashFamily:s}=e;if(s===`input-audio`){let e={format:ri(n),sample_rate:`16000`};r&&(e.language_hints=[r]),i&&(e.vocabulary_id=i),a&&(e.vocabulary=a);let s=[];if(o)for(let e of ii(o))s.push(e);return s.push({role:`user`,content:[{type:`input_audio`,input_audio:{data:n}}]}),{model:t,input:{messages:s},parameters:e}}let c={};r&&(c.language=r);let l={};Object.keys(c).length>0&&(l.asr_options=c);let u={model:t,input:{messages:[{role:`user`,content:[{audio:n}]}]}};return Object.keys(l).length>0&&(u.parameters=l),u}function si(e,t){let n=e.output;if(!n)return``;if(t===`input-audio`){if(typeof n.text==`string`&&n.text.length>0)return n.text;let e=n.sentence;if(typeof e?.text==`string`&&e.text.length>0)return e.text;let t=n.output?.sentence;return typeof t?.text==`string`?t.text:``}let r=n.choices;if(!r?.length)return``;let i=[];for(let e of r){let t=e.message;if(!t)continue;let n=t.content;if(typeof n==`string`){i.push(n);continue}if(Array.isArray(n))for(let e of n){if(typeof e==`string`){i.push(e);continue}if(e&&typeof e==`object`){let t=e;typeof t.text==`string`&&i.push(t.text)}}}return i.join(``)}function ci(e){if(e.results&&e.results.length>0)return e.results;let t=e.result?.transcription_url;return typeof t==`string`&&t.length>0?[{transcription_url:t,subtask_status:`SUCCEEDED`}]:[]}const li={12000090:`STS credentials unavailable — retry in a moment`,12000091:`Service-linked role creation failed — retry`,12000092:`Use the primary account to create the service-linked role`,12000093:`Cloud security service is unavailable — retry later`,12000094:`Alert query failed — treat as no data`},ui=new Set(Object.values(I));function di(e){return ui.has(e.replace(/\/+$/,``))}function fi(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:void 0}function pi(...e){for(let t of e)if(typeof t==`string`&&t.length>0)return t}function mi(e,t,n){let r=e??`unknown`,i=e===void 0&&t===void 0?`\nUnexpected response body (truncated): ${n.slice(0,800)}`:``;throw new P(`Security API failed: ${r} - ${t??`no message`}${i}`,N.GENERAL,li[r],{rawResponse:n.slice(0,500)})}function hi(e,t){let n;try{n=JSON.parse(e)}catch{throw new P(`Security API returned non-JSON response (${t??`unknown type`}).`,N.GENERAL,void 0,{rawResponse:e.slice(0,500)})}let r=fi(n),i=r?fi(r.data):void 0,a=i?fi(i.DataV2):void 0;if(a){let t=fi(a.data),n=Array.isArray(a.ret)?a.ret.map(e=>String(e)):[],o=n.length===0||n.some(e=>e.startsWith(`SUCCESS`)),s=pi(i?.errorCode,r?.errorCode),c=pi(i?.errorMsg,r?.errorMsg)??(o?void 0:n.join(`; `));return(r?.successResponse===!1||i?.success===!1||t?.success===!1||t?.failed===!0||!o||s!==void 0)&&mi(s,c,e),(t?t.data:void 0)??null}if(r&&`success`in r)return r.success||mi(pi(r.errorCode),pi(r.errorMsg),e),r.data??null;if(r){let t=pi(i?.errorCode,r.errorCode),n=pi(i?.errorMsg,r.errorMsg);(r.successResponse===!1||i?.success===!1||t!==void 0)&&mi(t,n,e)}if(r)return r;mi(void 0,void 0,e)}async function gi(e,t){let n=await e.request({path:t,method:`GET`});return hi(await n.text(),n.headers.get(`content-type`))}function _i(e){try{let{hostname:t}=new URL(e);return t===`aliyuncs.com`||t.endsWith(`.aliyuncs.com`)}catch{return!1}}function vi(e){return typeof e==`string`?e:e instanceof URL?e.href:e.url}function yi(e){return async(t,n={})=>{let r=vi(t),i=new Headers(n.headers??(t instanceof Request?t.headers:void 0));if(i.has(`user-agent`)||i.set(`User-Agent`,`${e.identity.clientName}/${e.identity.version}`),_i(r))for(let[t,n]of Object.entries(V(e.identity)))i.set(t,n);if(e.settings.verbose){console.error(`> ${n.method??`GET`} ${r}`);let e=i.get(`authorization`);e&&console.error(`> Auth: ${jt(e.replace(/^Bearer /,``))}`)}let a=await fetch(t,{...n,headers:i});if(e.settings.verbose){console.error(`< ${a.status} ${a.statusText}`);let e=a.headers.get(`x-request-id`);e&&console.error(`request_id: ${e}`)}return a}}const bi=`2024-08-16`;function xi(e){return`bailiancontrol.${e}.aliyuncs.com`}function Si(e){return new Cn({identity:e.identity,settings:e.settings,baseUrl:e.baseUrl,openApiCred:{accessKeyId:e.accessKeyId,accessKeySecret:e.accessKeySecret,securityToken:e.securityToken,source:`flag`}})}async function Ci(e){return Si(e).openApiJson({host:xi(e.regionId),path:`/bailianControl/User/createUser`,action:`CreateUser`,version:bi,method:`POST`,body:{data:JSON.stringify({reqDTO:e.reqDTO})}})}async function wi(e){return Si(e).openApiJson({host:xi(e.regionId),path:`/bailianControl/workspaces`,action:`ListWorkspaces`,version:bi,method:`GET`,queryParams:{data:JSON.stringify({reqDTO:{},cornerstoneParam:{}})}})}async function Ti(e){return Si(e).openApiJson({host:xi(e.regionId),path:`/bailianControl/serviserAuthorityPolicy/resetPolicies4Agent`,action:`ChangeUserPermissions`,version:bi,method:`POST`,body:{data:JSON.stringify({cornerstoneParam:{},outerKey:e.outerKey,policyIndexList:e.policyIndexList??[1],agentId:e.agentId})}})}const Ei=`zeldaHttp.dashscopeModel./zelda/api/v1/modelCenter/listFoundationModels`,Di=`zeldaEasy.bmp.modelPredictRpcService.getPredictParamConfig`;function U(e){let t=e.data;if(!t)return e;let n=t.DataV2;if(n){let e=n.data;return e?.data??e??n}return t.data??t}async function Oi(e,t={}){let{pageNo:n=1,pageSize:r=50,name:i=``,providers:a=[],capabilities:o=[]}=t,s=U(await e(Ei,{input:{pageNo:n,pageSize:r,name:i,providers:a,inferenceProviders:[],features:[],group:!0,capabilities:o,contextWindows:[]}})),c=s.total??0,l=s.list??[],u=[];for(let e of l){let t=e.items;if(t?.length)for(let e of t)u.push(e);else u.push(e)}return{total:c,models:u}}async function ki(e,t={}){let n=t.pageSize??50,r=await Oi(e,{...t,pageNo:1,pageSize:n}),i=[...r.models],a=Math.ceil(r.total/n);for(let r=2;r<=a;r++){let a=await Oi(e,{...t,pageNo:r,pageSize:n});if(a.models.length===0)break;i.push(...a.models)}return i}async function Ai(e,t){return(await Oi(e,{name:t,pageSize:50})).models.find(e=>e.model===t)??null}async function ji(e,t={}){let{pageNo:n=1,pageSize:r=50,name:i=``,providers:a=[],capabilities:o=[],features:s=[],contextWindows:c=[],querySampleCode:l}=t,u={pageNo:n,pageSize:r,name:i,providers:a,inferenceProviders:[],features:s,group:!0,capabilities:o,contextWindows:c,queryPermissions:!0,queryApplyStatus:!0,queryActivationStatus:!0,queryPrice:!0,queryQpmInfo:!0,supports:{inference:!0}};l&&(u.querySampleCode=!0);let d=U(await e(Ei,{input:u}));return{total:d.total??0,groups:d.list??[]}}function Mi(e){return e.flatMap(e=>e.items??[])}async function Ni(e,t={}){let n=t.pageSize??50,r=await ji(e,{...t,pageNo:1,pageSize:n}),i=Math.max(1,Math.ceil(r.total/n)),a=[];for(let e=2;e<=i;e++)a.push(e);let o=await Promise.all(a.map(r=>ji(e,{...t,pageNo:r,pageSize:n})));return Mi([r.groups,...o.map(e=>e.groups)].flat())}async function Pi(e,t){return(U(await e(`zeldaHttp.dashscopeModel./zelda/api/v1/modelCenter/listFoundationModels`,{input:{pageNo:1,pageSize:50,group:!0,model:t,querySampleCode:!0,queryGroupByModel:!0,queryWorkspaceLimit:!0,queryPrice:!0,queryQuota:!1,queryQpmInfo:!0,queryApplyStatus:!0,queryPermissions:!0,queryActivationStatus:!0}})).list??[])[0]??null}const Fi=[`name`,`key`,`default`,`tip`,`range`];function Ii(e){return e.map(e=>{let t={};for(let n of Fi)e[n]!==void 0&&(t[n]=e[n]);return t})}async function Li(e,t){let n=U(await e(Di,{modelId:t})).predictConfig;if(!n)return null;if(typeof n==`string`)try{let e=JSON.parse(n);return Array.isArray(e)?Ii(e):null}catch{return null}return Array.isArray(n)?Ii(n):null}function Ri(e){return{read:()=>B(e),async write(t){let n=B(e);for(let[e,r]of Object.entries(t))r===void 0?delete n[e]:n[e]=e===`base_url`?Ne(String(r)):r;await ht(n,e)},async unset(t){let n=B(e);for(let e of t)delete n[e];await ht(n,e)},profiles:()=>_t(),activate:e=>bt(e),validateActivation:e=>yt(e),get path(){return R()}}}async function zi(e,t){let{filePath:r,purpose:i=`fine-tune`,signal:a}=t,o=l(r),s=m(r),c=ne.toWeb(n(r)),u=await new Response(c).blob(),d=new FormData;d.append(`file`,u,s),d.append(`purpose`,i);let f=await e.requestJson({path:ar(),method:`POST`,body:d,signal:a});if(f.id)return{file_id:f.id,name:f.filename??s,size:f.bytes??o.size,purpose:f.purpose??i,gmt_create:f.created_at?(/* @__PURE__ */ new Date(f.created_at*1e3)).toISOString():void 0,request_id:f.request_id};let p=f.data?.failed_uploads;if(Array.isArray(p)&&p.length>0){let e=p[0]??{};throw new P(`Dataset upload failed${e.code?` [${e.code}]`:``}: ${e.message??`no message returned`}`,N.GENERAL,`Server reported failure for ${s}. Re-run with --verbose to see the raw response.`)}throw new P(`Dataset upload of ${s} returned no file_id (HTTP 200 with empty payload).`,N.GENERAL,`The platform accepted the request but did not allocate a file_id. Retry the upload; if it recurs, contact platform support with the request id.`)}async function Bi(e,t={}){let n=new URLSearchParams;t.pageNo!==void 0&&n.set(`page_no`,String(t.pageNo)),t.pageSize!==void 0&&n.set(`page_size`,String(t.pageSize)),t.purpose&&n.set(`purpose`,t.purpose);let r=or(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Vi(e,t,n){return e.requestJson({path:sr(t),method:`GET`,signal:n})}async function Hi(e,t,n){let r=await e.request({path:sr(t),method:`DELETE`,signal:n});try{return await r.json()}catch{return{data:{deleted:!0,file_id:t}}}}const Ui=209715200,Wi=314572800,Gi=2147483648;function Ki(e,t=Ui){if(!i(e))throw new P(`File not found: ${e}`,N.USAGE);let n=l(e);if(!n.isFile())throw new P(`Not a regular file: ${e}`,N.USAGE);if(n.size===0)throw new P(`File is empty: ${e}`,N.USAGE);if(n.size>t)throw new P(`File too large: ${(n.size/1048576).toFixed(1)}MB exceeds the ${(t/1048576).toFixed(0)}MB dataset upload cap.`,N.USAGE);return{bytes:n.size,ext:h(e).toLowerCase()}}function W(e,t,n,r={}){return{severity:e,code:t,message:n,...r}}function qi(e){if(e===void 0||e.trim()===``)return;let t=e.trim();if(t===`chatml`||t===`dpo`||t===`cpt`||t===`tts`||t===`image`||t===`video`)return t;throw new P(`Unsupported --schema "${e}". Supported: chatml, dpo, cpt, tts, image.`,N.USAGE,`Omit --schema to auto-detect per record (chosen/rejected → DPO, text → CPT, wav_fn → TTS, img_path → image, else ChatML).`)}function Ji(e,t=50,n=100,r=10){if(e<=0)return[];if(e<=t+r)return Array.from({length:e},(e,t)=>t+1);let i=/* @__PURE__ */ new Set;for(let n=1;n<=Math.min(t,e);n++)i.add(n);for(let t=0;t<r;t++)i.add(e-t);let a=Math.max(1,Math.ceil(e/n));for(let n=t+1;n<=e-r;n+=a)i.add(n);return[...i].filter(t=>t>=1&&t<=e).sort((e,t)=>e-t)}const Yi=/* @__PURE__ */ new Set([`system`,`user`,`assistant`,`tool`]),Xi=.1;function Zi(e,t,n,r){let i=[],a=t=>{if(!(t in e))return;let a=e[t];(typeof a!=`number`||a<Xi||a>10)&&i.push(W(`error`,`INVALID_VIDEO_FPS`,`"${t}" must be a number between ${Xi} and 10 (got ${JSON.stringify(a)}).`,{line:n,path:`${r}.${t}`}))};a(`fps`),a(`sample_fps`);let o=t?[`fps`,`video_start`,`video_end`]:[`sample_fps`],s=t?`frame-list`:`file-path`;for(let t of o)t in e&&i.push(W(`warning`,`VIDEO_PARAM_MODE_MISMATCH`,`"${t}" does not apply to ${s} video mode and will be ignored by the platform.`,{line:n,path:`${r}.${t}`}));for(let a of[`video_start`,`video_end`])a in e&&!t&&typeof e[a]!=`number`&&i.push(W(`error`,`INVALID_VIDEO_CLIP_TIME`,`"${a}" must be a number (seconds).`,{line:n,path:`${r}.${a}`}));return i}function Qi(e,t,n){let r=[];if(typeof e==`string`)return r;if(!Array.isArray(e))return r.push(W(`error`,`INVALID_CONTENT`,`"content" must be a string or an array of content items (got ${typeof e}).`,{line:t,path:n})),r;if(e.length===0)return r.push(W(`error`,`EMPTY_CONTENT_ARRAY`,`"content" array must not be empty.`,{line:t,path:n})),r;for(let i=0;i<e.length;i++){let a=e[i],o=`${n}[${i}]`;if(typeof a!=`object`||!a||Array.isArray(a)){r.push(W(`error`,`INVALID_CONTENT_ITEM`,`Content item must be an object.`,{line:t,path:o}));continue}let s=a,c=`text`in s,l=`image`in s,u=`video`in s;if(!c&&!l&&!u){r.push(W(`error`,`CONTENT_ITEM_NO_KNOWN_FIELD`,`Content item must contain at least one of: "text", "image", "video".`,{line:t,path:o}));continue}if(c&&typeof s.text!=`string`&&r.push(W(`error`,`INVALID_CONTENT_TEXT`,`"text" in content item must be a string.`,{line:t,path:`${o}.text`})),l&&typeof s.image!=`string`&&r.push(W(`error`,`INVALID_CONTENT_IMAGE`,`"image" in content item must be a string.`,{line:t,path:`${o}.image`})),u){let e=s.video;if(typeof e!=`string`&&!Array.isArray(e))r.push(W(`error`,`INVALID_CONTENT_VIDEO`,`"video" in content item must be a string (file path) or an array of strings (frame list).`,{line:t,path:`${o}.video`}));else{if(Array.isArray(e))for(let n=0;n<e.length;n++)typeof e[n]!=`string`&&r.push(W(`error`,`INVALID_VIDEO_FRAME`,`Video frame list item at index ${n} must be a string.`,{line:t,path:`${o}.video[${n}]`}));r.push(...Zi(s,Array.isArray(e),t,o))}}}return r}function $i(e,t,n){let r=[];if(!Array.isArray(e))return r.push(W(`error`,`INVALID_TOOL_CALLS`,`"tool_calls" must be an array.`,{line:t,path:n})),r;for(let i=0;i<e.length;i++){let a=e[i],o=`${n}[${i}]`;if(typeof a!=`object`||!a||Array.isArray(a)){r.push(W(`error`,`INVALID_TOOL_CALL`,`tool_calls item must be an object.`,{line:t,path:o}));continue}let s=a;(typeof s.id!=`string`||s.id.length===0)&&r.push(W(`error`,`TOOL_CALL_MISSING_ID`,`tool_calls item must have a non-empty "id".`,{line:t,path:`${o}.id`})),s.type!==`function`&&r.push(W(`warning`,`TOOL_CALL_TYPE_NOT_FUNCTION`,`tool_calls item "type" should be "function" (got "${String(s.type)}").`,{line:t,path:`${o}.type`}));let c=s.function;if(typeof c!=`object`||!c||Array.isArray(c))r.push(W(`error`,`TOOL_CALL_MISSING_FUNCTION`,`tool_calls item must have a "function" object.`,{line:t,path:`${o}.function`}));else{let e=c;(typeof e.name!=`string`||e.name.length===0)&&r.push(W(`error`,`TOOL_CALL_FN_NO_NAME`,`tool_calls function must have a "name".`,{line:t,path:`${o}.function.name`})),typeof e.arguments!=`string`&&r.push(W(`error`,`TOOL_CALL_FN_ARGS_NOT_STRING`,`tool_calls function "arguments" must be a JSON string.`,{line:t,path:`${o}.function.arguments`}))}}return r}function ea(e,t,n){let r=[];if(typeof e!=`object`||!e||Array.isArray(e))return r.push(W(`error`,`MESSAGE_NOT_OBJECT`,`Message must be an object.`,{line:t,path:n})),r;let i=e,a=i.role;return(typeof a!=`string`||!Yi.has(a))&&r.push(W(`error`,`INVALID_ROLE`,`Invalid role "${String(a)}". Expected one of: system, user, assistant, tool.`,{line:t,path:`${n}.role`})),a===`tool`&&(typeof i.tool_call_id!=`string`||i.tool_call_id.length===0)&&r.push(W(`error`,`TOOL_MISSING_CALL_ID`,`A "tool" role message must have a non-empty "tool_call_id".`,{line:t,path:`${n}.tool_call_id`})),`content`in i?r.push(...Qi(i.content,t,`${n}.content`)):(a!==`assistant`||!(`tool_calls`in i))&&r.push(W(`error`,`MISSING_CONTENT`,`"content" field is missing.`,{line:t,path:`${n}.content`})),`tool_calls`in i&&r.push(...$i(i.tool_calls,t,`${n}.tool_calls`)),`name`in i&&r.push(W(`error`,`UNSUPPORTED_FIELD_NAME`,`Field "name" is not supported by Bailian and must be removed when migrating from OpenAI/Azure.`,{line:t,path:`${n}.name`})),`weight`in i&&r.push(W(`error`,`UNSUPPORTED_FIELD_WEIGHT`,`Field "weight" is not supported by Bailian and must be removed when migrating from OpenAI/Azure. All assistant outputs are trained; per-line importance uses "loss_weight" (invite-only).`,{line:t,path:`${n}.weight`})),r}function ta(e,t){let n=[],r=e.messages;if(!Array.isArray(r))return n.push(W(`error`,`MISSING_MESSAGES`,`Required field "messages" is missing or not an array.`,{line:t,path:`messages`})),n;if(r.length===0)return n.push(W(`error`,`EMPTY_MESSAGES`,`"messages" must contain at least one entry.`,{line:t,path:`messages`})),n;let i=!1,a,o=-1,s=/* @__PURE__ */ new Set,c=/* @__PURE__ */ new Set;for(let e=0;e<r.length;e++){let l=r[e],u=`messages[${e}]`;n.push(...ea(l,t,u));let d=l,f=d?.role;if(f===`system`&&(e!==0&&n.push(W(`warning`,`SYSTEM_NOT_FIRST`,`"system" message should appear at index 0; found at index ${e}.`,{line:t,path:`${u}.role`})),i=!0),f===`assistant`&&(o=e,d&&Array.isArray(d.tool_calls)))for(let e of d.tool_calls){let t=e;t&&typeof t.id==`string`&&s.add(t.id)}if(f===`tool`){let e=d?.tool_call_id;typeof e==`string`&&e.length>0&&c.add(e)}a===f&&(f===`user`||f===`assistant`)&&n.push(W(`warning`,`ROLE_NOT_ALTERNATING`,`Consecutive ${f} messages — user/assistant turns should typically alternate.`,{line:t,path:`${u}.role`})),typeof f==`string`&&(a=f)}r.some(e=>e.role===`user`)||n.push(W(`warning`,`NO_USER_ROLE`,`No "user" message found in this sample.`,{line:t,path:`messages`})),i&&r.length===1&&n.push(W(`warning`,`SYSTEM_ONLY`,`Sample only contains a "system" message.`,{line:t,path:`messages`}));for(let e of c)s.has(e)||n.push(W(`error`,`TOOL_CALL_ID_UNMATCHED`,`tool message references tool_call_id "${e}" which does not match any assistant tool_calls[].id.`,{line:t,path:`messages`}));for(let e of s)c.has(e)||n.push(W(`warning`,`TOOL_CALL_NO_RESPONSE`,`assistant tool_calls[].id "${e}" has no matching tool response message.`,{line:t,path:`messages`}));if(o>=0)for(let e=0;e<r.length;e++){if(e===o)continue;let i=r[e];if(i?.role!==`assistant`||i&&Array.isArray(i.tool_calls))continue;let a=i?.content;na(a)&&n.push(W(`warning`,`THINK_TAG_NOT_LAST`,`Thinking tags (<think>…</think>) should only appear in the last assistant message (or an assistant message carrying tool_calls), found at messages[${e}].`,{line:t,path:`messages[${e}].content`}))}let l=(e,r)=>{(typeof e!=`number`||e<0||e>1)&&n.push(W(`error`,`INVALID_LOSS_WEIGHT`,`"loss_weight" must be a number between 0.0 and 1.0 (got ${JSON.stringify(e)}).`,{line:t,path:r}))};`loss_weight`in e&&l(e.loss_weight,`loss_weight`);for(let e=0;e<r.length;e++){let i=r[e];i&&`loss_weight`in i&&(l(i.loss_weight,`messages[${e}].loss_weight`),(i.role!==`assistant`||e!==o)&&n.push(W(`warning`,`LOSS_WEIGHT_PLACEMENT`,`"loss_weight" is only supported on the last assistant message; found at messages[${e}] (role "${String(i.role)}").`,{line:t,path:`messages[${e}].loss_weight`})))}return`weight`in e&&n.push(W(`error`,`UNSUPPORTED_FIELD_WEIGHT`,`Record-level field "weight" is not supported by Bailian and must be removed when migrating from OpenAI/Azure.`,{line:t,path:`weight`})),n}function na(e){return typeof e==`string`?e.includes(`<think>`):Array.isArray(e)?e.some(e=>e&&typeof e==`object`&&`text`in e?typeof e.text==`string`&&e.text.includes(`<think>`):!1):!1}const ra={name:`chatml`,detect:()=>!0,inspect:ta};function ia(e,t){let n=[];if(!(`text`in e))return n.push(W(`error`,`MISSING_TEXT`,`Required field "text" is missing.`,{line:t,path:`text`})),n;let r=e.text;return typeof r==`string`?(r.trim().length===0&&n.push(W(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})),n):(n.push(W(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`})),n)}const aa={name:`cpt`,detect:e=>`text`in e&&!(`messages`in e),inspect:ia};function oa(e,t){let n=ta(e,t),r=e.messages;if(!Array.isArray(r)||r.length===0)return n;let i=(e,n)=>{if(!Array.isArray(e))return[];let r=[];for(let i=0;i<e.length;i++){let a=e[i];if(a&&typeof a==`object`)for(let e of[`image`,`video`])e in a&&r.push(W(`error`,`DPO_UNSUPPORTED_ELEMENT`,`DPO training data does not support ${e} inputs; found at ${n}.content[${i}].`,{line:t,path:`${n}.content[${i}].${e}`}))}return r};`tools`in e&&n.push(W(`error`,`DPO_UNSUPPORTED_ELEMENT`,`DPO training data does not support tool calling; remove the "tools" definition.`,{line:t,path:`tools`}));for(let e=0;e<r.length;e++){let a=r[e];if(!a)continue;let o=`messages[${e}]`;(a.role===`tool`||`tool_calls`in a)&&n.push(W(`error`,`DPO_UNSUPPORTED_ELEMENT`,`DPO training data does not support tool calling; found ${a.role===`tool`?`role "tool"`:`"tool_calls"`} at ${o}.`,{line:t,path:o})),n.push(...i(a.content,o))}let a=r[r.length-1];a&&a.role!==`user`&&n.push(W(`error`,`DPO_LAST_MSG_NOT_USER`,`DPO "messages" must end with a "user" message (the prompt for chosen/rejected). Got "${String(a.role)}" as the last message.`,{line:t,path:`messages[${r.length-1}].role`}));let o=`chosen`in e,s=`rejected`in e;if(o||n.push(W(`error`,`MISSING_CHOSEN`,`DPO record is missing the "chosen" preference.`,{line:t,path:`chosen`})),s||n.push(W(`error`,`MISSING_REJECTED`,`DPO record is missing the "rejected" preference.`,{line:t,path:`rejected`})),o){n.push(...ea(e.chosen,t,`chosen`)),n.push(...i(e.chosen?.content,`chosen`));let r=e.chosen?.role;typeof r==`string`&&r!==`assistant`&&n.push(W(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"chosen" role should be "assistant" (got "${r}").`,{line:t,path:`chosen.role`}))}if(s){n.push(...ea(e.rejected,t,`rejected`)),n.push(...i(e.rejected?.content,`rejected`));let r=e.rejected?.role;typeof r==`string`&&r!==`assistant`&&n.push(W(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"rejected" role should be "assistant" (got "${r}").`,{line:t,path:`rejected.role`}))}return n}const sa={name:`dpo`,detect:e=>`chosen`in e||`rejected`in e,inspect:oa};function ca(e,t){let n=[];if(!(`wav_fn`in e))n.push(W(`error`,`MISSING_WAV_FN`,`Required field "wav_fn" is missing.`,{line:t,path:`wav_fn`}));else{let r=e.wav_fn;if(typeof r!=`string`)n.push(W(`error`,`INVALID_WAV_FN`,`"wav_fn" must be a string (got ${typeof r}).`,{line:t,path:`wav_fn`}));else if(r.trim().length===0)n.push(W(`error`,`EMPTY_WAV_FN`,`"wav_fn" must not be empty.`,{line:t,path:`wav_fn`}));else{r.startsWith(`train/`)||n.push(W(`error`,`WAV_FN_PREFIX`,`"wav_fn" must start with "train/" (got "${r}").`,{line:t,path:`wav_fn`}));let e=r.lastIndexOf(`.`),i=e>=0?r.slice(e).toLowerCase():``;i!==`.wav`&&n.push(W(`error`,`INVALID_AUDIO_EXT`,`"wav_fn" must reference a .wav file (got "${i||`(none)`}"). CosyVoice training audio must be WAV.`,{line:t,path:`wav_fn`}))}}if(!(`text`in e))n.push(W(`error`,`MISSING_TEXT`,`Required field "text" is missing.`,{line:t,path:`text`}));else{let r=e.text;typeof r==`string`?r.trim().length===0&&n.push(W(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})):n.push(W(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`}))}return n}const la={name:`tts`,detect:e=>`wav_fn`in e,inspect:ca},ua=/* @__PURE__ */ new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.tif`,`.tiff`,`.webp`]);function da(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function fa(e){return/^[\x20-\x7E]+$/.test(e)}function pa(e,t){let n=[];if(!(`prompt`in e))n.push(W(`error`,`MISSING_PROMPT`,`Required field "prompt" is missing.`,{line:t,path:`prompt`}));else{let r=e.prompt;typeof r==`string`?r.trim().length===0&&n.push(W(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(W(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}if(!(`img_path`in e))n.push(W(`error`,`MISSING_IMG_PATH`,`Required field "img_path" is missing.`,{line:t,path:`img_path`}));else{let r=e.img_path;if(typeof r!=`string`)n.push(W(`error`,`INVALID_IMG_PATH`,`"img_path" must be a string (got ${typeof r}).`,{line:t,path:`img_path`}));else if(r.trim().length===0)n.push(W(`error`,`EMPTY_IMG_PATH`,`"img_path" must not be empty.`,{line:t,path:`img_path`}));else{let e=da(r);ua.has(e)||n.push(W(`warning`,`UNUSUAL_IMAGE_EXT`,`"img_path" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...ua].join(`, `)}.`,{line:t,path:`img_path`})),fa(r)||n.push(W(`error`,`NON_ASCII_IMG_PATH`,`"img_path" must contain only ASCII characters (English filenames required). Got: "${r}".`,{line:t,path:`img_path`}))}}if(`input_img`in e){let r=e.input_img;if(typeof r!=`string`)n.push(W(`error`,`INVALID_INPUT_IMG`,`"input_img" must be a string (got ${typeof r}).`,{line:t,path:`input_img`}));else if(r.trim().length===0)n.push(W(`error`,`EMPTY_INPUT_IMG`,`"input_img" must not be empty.`,{line:t,path:`input_img`}));else{let e=da(r);ua.has(e)||n.push(W(`warning`,`UNUSUAL_INPUT_IMG_EXT`,`"input_img" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...ua].join(`, `)}.`,{line:t,path:`input_img`})),fa(r)||n.push(W(`error`,`NON_ASCII_INPUT_IMG`,`"input_img" must contain only ASCII characters (English filenames required). Got: "${r}".`,{line:t,path:`input_img`}))}}return n}const ma={name:`image`,detect:e=>`img_path`in e,inspect:pa},ha=/* @__PURE__ */ new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.webp`]),ga=/* @__PURE__ */ new Set([`.mp4`,`.mov`]);function _a(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function va(e){return/^[\x20-\x7E]+$/.test(e)}function ya(e,t,n,r,i,a){if(!(n in t)){r&&e.push(W(`error`,`MISSING_FIELD`,`Required field "${n}" is missing.`,{line:a,path:n}));return}let o=t[n];if(typeof o!=`string`){e.push(W(`error`,`INVALID_FIELD`,`"${n}" must be a string (got ${typeof o}).`,{line:a,path:n}));return}if(o.trim().length===0){e.push(W(`error`,`EMPTY_FIELD`,`"${n}" must not be empty.`,{line:a,path:n}));return}let s=_a(o);i.has(s)||e.push(W(`warning`,`UNUSUAL_MEDIA_EXT`,`"${n}" points to a non-standard extension "${s||`(none)`}". Expected one of: ${[...i].join(`, `)}.`,{line:a,path:n})),va(o)||e.push(W(`error`,`NON_ASCII_PATH`,`"${n}" must contain only ASCII characters (English filenames required). Got: "${o}".`,{line:a,path:n}))}function ba(e,t){let n=[];if(!(`prompt`in e))n.push(W(`error`,`MISSING_PROMPT`,`Required field "prompt" is missing.`,{line:t,path:`prompt`}));else{let r=e.prompt;typeof r==`string`?r.trim().length===0&&n.push(W(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(W(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}return ya(n,e,`first_frame_path`,!0,ha,t),ya(n,e,`last_frame_path`,!1,ha,t),ya(n,e,`video_path`,!1,ga,t),n}const xa=[la,ma,{name:`video`,detect:e=>`first_frame_path`in e||`video_path`in e,inspect:ba},sa,aa,ra];function Sa(e,t){return t===void 0?xa.find(t=>t.detect(e))??ra:xa.find(e=>e.name===t)||ra}async function Ca(e,t){let r=n(e,{encoding:`utf8`}),i=x({input:r,crlfDelay:1/0}),a=[],o=0,s=0;for await(let e of i){if(t?.aborted)break;o++;let n=e.trim();if(n.length===0){s++;continue}a.length>=20||(n[0]!==`{`||n[n.length-1]!==`}`)&&a.push(W(`error`,`MALFORMED_LINE`,`Line does not start with '{' and end with '}'. JSONL requires one minified JSON object per line — pretty-printed JSON or arrays are not accepted here.`,{line:o}))}return{totalLines:o,blankLines:s,issues:a}}async function wa(e,t,r,i,a){let o=r?null:new Set(Ji(t)),s=[],c=0,l=n(e,{encoding:`utf8`}),u=x({input:l,crlfDelay:1/0}),d=0;for await(let e of u){if(a?.aborted)break;if(d++,o&&!o.has(d))continue;let t=e.trim();if(t.length===0||(c++,s.length>=30))continue;let n;try{n=JSON.parse(t)}catch(e){s.push(W(`error`,`MALFORMED_JSON`,`JSON.parse failed: ${e.message}`,{line:d}));continue}s.push(...Ta(n,d,i))}return{sampled:c,issues:s}}function Ta(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return[W(`error`,`RECORD_NOT_OBJECT`,`Each line must be a JSON object, got ${Array.isArray(e)?`array`:typeof e}.`,{line:t})];let r=e;return Sa(r,n).inspect(r,t)}const Ea={format:`jsonl`,extensions:[`.jsonl`],async validate(e,t){let n=Date.now(),r=await Ca(e,t.signal);if(r.totalLines===0||r.totalLines===r.blankLines)return{valid:!1,format:`jsonl`,filePath:e,errors:[W(`error`,`EMPTY_FILE`,`File contains no non-blank lines.`)],warnings:[],stats:{totalRecords:0,sampledRecords:0,durationMs:Date.now()-n}};if(r.issues.length>0)return{valid:!1,format:`jsonl`,filePath:e,errors:r.issues,warnings:[],stats:{totalRecords:r.totalLines-r.blankLines,sampledRecords:0,durationMs:Date.now()-n}};let i=await wa(e,r.totalLines,!!t.fullValidate,t.schema,t.signal),a=i.issues.filter(e=>e.severity===`error`),o=i.issues.filter(e=>e.severity===`warning`);return{valid:a.length===0,format:`jsonl`,filePath:e,errors:a,warnings:o,stats:{totalRecords:r.totalLines-r.blankLines,sampledRecords:i.sampled,durationMs:Date.now()-n}}}};function Da(e,t){return new Promise((n,r)=>{S.open(e,{lazyEntries:!0},(e,i)=>{if(e||!i){r(/* @__PURE__ */ Error(`Failed to open ZIP: ${e?.message??`unknown error`}`));return}i.readEntry(),i.on(`entry`,e=>{let r=e.fileName.replace(/\\/g,`/`);r===t||r.endsWith(`/${t}`)?n({entry:e,zipfile:i}):i.readEntry()}),i.on(`end`,()=>{i.close(),r(/* @__PURE__ */ Error(`Entry "${t}" not found in ZIP`))}),i.on(`error`,r)})})}function Oa(e){return new Promise((t,n)=>{S.open(e,{lazyEntries:!0},(e,r)=>{if(e||!r){n(/* @__PURE__ */ Error(`Failed to open ZIP: ${e?.message??`unknown error`}`));return}let i=[];r.readEntry(),r.on(`entry`,e=>{i.push(e.fileName.replace(/\\/g,`/`)),r.readEntry()}),r.on(`end`,()=>{r.close(),t(i)}),r.on(`error`,n)})})}const ka=/^[a-zA-Z0-9_-]+$/;function Aa(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function ja(e){if(e===`__MACOSX`||e.startsWith(`__MACOSX/`))return!0;let t=e.split(`/`).filter(e=>e.length>0).pop()??``;return t===`.DS_Store`||t.startsWith(`._`)}function Ma(e){let t=[],n=/* @__PURE__ */ new Map;for(let r of e){if(r.endsWith(`/`)||ja(r))continue;let e=r.split(`/`).filter(e=>e.length>0);for(let n of e){let e=Aa(n),i=n.slice(e.length);e.length>0&&!ka.test(e)&&t.length<10&&t.push(W(`error`,`INVALID_FILENAME_CHARSET`,`File/folder name "${n}" contains invalid characters. Only a-z, A-Z, 0-9, underscore (_), and hyphen (-) are allowed.`,{path:r})),i.length>0&&!/^\.[a-zA-Z0-9]+$/.test(i)&&t.length<10&&t.push(W(`error`,`INVALID_FILENAME_CHARSET`,`File extension "${i}" in "${n}" contains invalid characters.`,{path:r}))}let i=e[e.length-1]??``,a=Aa(i);if(a.length>120&&t.length<10&&t.push(W(`error`,`FILENAME_TOO_LONG`,`Filename "${i}" (without extension) exceeds 120 characters (got ${a.length}). Shorten the name and re-upload.`,{path:r})),a.length>0){let e=n.get(a);e===void 0?n.set(a,r):t.length<10&&t.push(W(`error`,`DUPLICATE_FILENAME`,`Filename "${i}" conflicts with "${e}" — names must be globally unique (ignoring extension) even across different folders.`,{path:r}))}}return t.length>=10&&t.push(W(`warning`,`FILENAME_ISSUES_TRUNCATED`,`More filename issues exist but reporting is capped at 10.`)),t}async function Na(e,t,n){let{entry:i,zipfile:a}=await Da(e,t);return new Promise((e,t)=>{a.openReadStream(i,(i,o)=>{if(i||!o){a.close(),t(i??/* @__PURE__ */ Error(`Failed to open entry stream`));return}let s=r(n);re(o,s).then(()=>{a.close(),e()}).catch(e=>{a.close(),t(e)})})})}async function Pa(e,t=100){let r=n(e,{encoding:`utf8`}),i=x({input:r,crlfDelay:1/0}),a=[],o=0;for await(let e of i){if(o++,a.length>=t)continue;let n=e.trim();if(n.length!==0)try{let e=JSON.parse(n);typeof e.wav_fn==`string`&&a.push(e.wav_fn),typeof e.img_path==`string`&&a.push(e.img_path),typeof e.input_img==`string`&&a.push(e.input_img),typeof e.first_frame_path==`string`&&a.push(e.first_frame_path),typeof e.last_frame_path==`string`&&a.push(e.last_frame_path),typeof e.video_path==`string`&&a.push(e.video_path),typeof e.image_fn==`string`&&a.push(e.image_fn),typeof e.video_fn==`string`&&a.push(e.video_fn)}catch{}}return{refs:a,totalLines:o}}const Fa={format:`zip`,extensions:[`.zip`],async validate(e,t){let n=Date.now(),r=[],i=[],o;try{o=await Oa(e)}catch(t){return{valid:!1,format:`zip`,filePath:e,errors:[W(`error`,`ZIP_OPEN_FAILED`,`Could not open ZIP archive: ${t.message}`)],warnings:[],stats:{durationMs:Date.now()-n}}}if(o.length===0)return{valid:!1,format:`zip`,filePath:e,errors:[W(`error`,`ZIP_EMPTY`,`ZIP archive contains no entries.`)],warnings:[],stats:{durationMs:Date.now()-n}};let s=o.some(e=>e===`data.jsonl`),l=!s&&o.find(e=>e.endsWith(`/data.jsonl`));s||(l?r.push(W(`error`,`DATA_JSONL_NOT_AT_ROOT`,`"data.jsonl" must be at the ZIP root (found "${l}"). Re-package so that opening the ZIP shows data.jsonl directly, without a wrapping folder.`)):r.push(W(`error`,`MISSING_DATA_JSONL`,`ZIP archive must contain "data.jsonl" at the root. This file maps media files (e.g. .wav, .jpg) to their labels.`)));let u=Ma(o);for(let e of u)e.severity===`error`?r.push(e):i.push(e);let d=t.schema===`image`,f=t.schema===`video`,m=o.some(e=>e===`train/`||e.startsWith(`train/`)),h=o.some(e=>e.toLowerCase().endsWith(`.wav`));if(!m&&!d&&!f&&h&&i.push(W(`warning`,`NO_TRAIN_DIR`,`No "train/" directory found in the ZIP. Media files are typically placed under "train/" and referenced as "train/xxx.wav" in data.jsonl.`)),d){let e=o.filter(e=>{if(e===`data.jsonl`||e.endsWith(`/data.jsonl`)||e.endsWith(`/`)||ja(e))return!1;let t=e.lastIndexOf(`.`),n=t>=0?e.slice(t).toLowerCase():``;return ua.has(n)});e.length<25&&r.push(W(`error`,`INSUFFICIENT_IMAGES`,`Found ${e.length} image(s) in ZIP, but image generation fine-tuning requires at least 25 images (50+ recommended).`))}if(!s&&!l)return{valid:!1,format:`zip`,filePath:e,errors:r,warnings:i,stats:{totalRecords:o.length,durationMs:Date.now()-n}};let _=s?`data.jsonl`:o.find(e=>e.endsWith(`/data.jsonl`)),v=g(p(),`bl-zip-${ee(6).toString(`hex`)}`);a(v,{recursive:!0});let y=g(v,`data.jsonl`);try{await Na(e,_,y)}catch(t){return r.push(W(`error`,`EXTRACT_FAILED`,`Failed to extract "data.jsonl" from ZIP: ${t.message}`)),c(v,{recursive:!0,force:!0}),{valid:!1,format:`zip`,filePath:e,errors:r,warnings:i,stats:{durationMs:Date.now()-n}}}let b=await Ea.validate(y,t);if(r.push(...b.errors),i.push(...b.warnings),b.valid){let{refs:e}=await Pa(y),t=new Set(o),n=_.lastIndexOf(`/`),i=n>=0?_.slice(0,n+1):``,a=[];for(let n of e){let e=n.replace(/^\.\//,``);t.has(e)||t.has(i+e)||a.push(n)}if(a.length>0){let e=a.slice(0,5).join(`, `),t=a.length>5?` (and ${a.length-5} more)`:``;r.push(W(`error`,`DANGLING_MEDIA_REFS`,`${a.length} media file(s) referenced in data.jsonl not found in ZIP: ${e}${t}`))}}return c(v,{recursive:!0,force:!0}),{valid:r.length===0,format:`zip`,filePath:e,errors:r,warnings:i,stats:{totalRecords:b.stats.totalRecords??o.length,sampledRecords:b.stats.sampledRecords,durationMs:Date.now()-n}}}};async function Ia(e){let t=h(e).toLowerCase();if(t===`.jsonl`)return La(e);if(t===`.zip`)return Ra(e);throw new P(`Cannot inspect file with extension "${t}". Expected .jsonl or .zip.`,N.USAGE)}async function La(e){let t=await Ba(e);if(!t)throw new P(`JSONL file is empty or contains only blank lines: ${e}`,N.USAGE);let n=za(t);return n===`unknown`?`text`:n}async function Ra(e){let t=await Va(e,`data.jsonl`);if(!t)throw new P(`ZIP archive does not contain "data.jsonl" or it is empty: ${e}`,N.USAGE,`Audio training data must be a ZIP with data.jsonl at the root and a train/ subfolder.`);let n=za(t);if(n===`unknown`)throw new P(`ZIP data.jsonl does not match any supported media format (expected wav_fn / img_path / first_frame_path / video_path): ${e}`,N.USAGE,`ZIP archives are for audio/image/video training data. For text data, use a .jsonl file instead.`);return n}function za(e){let t;try{t=JSON.parse(e)}catch{throw new P(`Failed to parse first JSON record for modality detection: ${e.slice(0,120)}`,N.USAGE)}if(typeof t!=`object`||!t||Array.isArray(t))throw new P(`Expected a JSON object as the first record, got ${Array.isArray(t)?`array`:typeof t}.`,N.USAGE);return`wav_fn`in t?`audio`:`img_path`in t?`input_img`in t?`image-i2i`:`image`:`first_frame_path`in t||`video_path`in t?`last_frame_path`in t?`video-kf2v`:`video`:`unknown`}function Ba(e){return new Promise((t,r)=>{let i=n(e,{encoding:`utf8`}),a=x({input:i,crlfDelay:1/0}),o=!1;a.on(`line`,e=>{if(o)return;let n=e.trim();n.length!==0&&(o=!0,a.close(),i.destroy(),t(n))}),a.on(`close`,()=>{o||t(null)}),a.on(`error`,r),i.on(`error`,r)})}function Va(e,t){return Da(e,t).then(({entry:e,zipfile:n})=>new Promise((r,i)=>{n.openReadStream(e,(e,a)=>{if(e||!a){n.close(),i(new P(`Failed to read "${t}" from ZIP: ${e?.message}`,N.USAGE));return}let o=x({input:a,crlfDelay:1/0}),s=!1;o.on(`line`,e=>{if(s)return;let t=e.trim();t.length!==0&&(s=!0,o.close(),a.destroy(),n.close(),r(t))}),o.on(`close`,()=>{s||(n.close(),r(null))}),o.on(`error`,e=>{n.close(),i(e)})})})).catch(e=>{if(e instanceof Error&&e.message.includes(`not found in ZIP`))return null;throw e})}const Ha=[Ea,Fa];function Ua(e){let t=h(e).toLowerCase(),n=Ha.find(e=>e.extensions.includes(t));if(!n){let e=Ha.flatMap(e=>e.extensions).join(`, `);throw new P(`Unsupported dataset format "${t||`(none)`}". Supported: ${e}`,N.USAGE,`Convert your data to one of the supported formats and re-run.`)}return n}function Wa(e){Ha.some(t=>t.format===e.format)||Ha.push(e)}async function G(e,t={}){let{bytes:n}=Ki(e,t.maxBytes??209715200),r=await Ua(e).validate(e,t);return r.stats.bytes===void 0&&(r.stats.bytes=n),r}function Ga(){return Ha.map(e=>({format:e.format,extensions:[...e.extensions]}))}function Ka(e){let t=[];e.line!==void 0&&t.push(`line ${e.line}`),e.path&&t.push(e.path);let n=t.length?` [${t.join(` · `)}]`:``;return` ${e.severity.toUpperCase()} ${e.code}${n}: ${e.message}`}async function qa(e,t,n){return e.requestJson({path:cr(),method:`POST`,body:t,signal:n})}async function Ja(e,t={}){let n=new URLSearchParams;t.pageNo!==void 0&&n.set(`page_no`,String(t.pageNo)),t.pageSize!==void 0&&n.set(`page_size`,String(t.pageSize)),t.status&&n.set(`status`,t.status),t.model&&n.set(`model`,t.model);let r=cr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Ya(e,t,n){return e.requestJson({path:lr(t),method:`GET`,signal:n})}async function Xa(e,t,n){return e.requestJson({path:ur(t),method:`POST`,signal:n})}async function Za(e,t,n){return e.requestJson({path:lr(t),method:`DELETE`,signal:n})}async function Qa(e,t,n={}){let r=new URLSearchParams;n.pageNo!==void 0&&r.set(`page_no`,String(n.pageNo)),n.pageSize!==void 0&&r.set(`page_size`,String(n.pageSize));let i=dr(t),a=r.toString()?`${i}?${r.toString()}`:i;return e.requestJson({path:a,method:`GET`,signal:n.signal})}async function $a(e,t,n){return e.requestJson({path:fr(t),method:`GET`,signal:n})}async function eo(e,t,n,r,i){let a=new URLSearchParams;return a.set(`model_name`,r),e.requestJson({path:`${pr(t,n)}?${a.toString()}`,method:`GET`,signal:i})}const to={sft:{server:`sft`,method:`sft`,variant:`full`},"sft-lora":{server:`efficient_sft`,method:`sft`,variant:`lora`},dpo:{server:`dpo_full`,method:`dpo`,variant:`full`},"dpo-lora":{server:`dpo_lora`,method:`dpo`,variant:`lora`},cpt:{server:`cpt`,method:`cpt`,variant:`full`}},no=Object.keys(to),ro=`sft-lora`;function io(e){return e in to}function ao(e){let{method:t,variant:n}=to[e];return{method:t,variant:n}}function oo(e,t){if(!e)return!1;let{method:n,variant:r}=to[t];if(e.supports?.[n]!==!0)return!1;let i=e.trainingTypes?.[n];return Array.isArray(i)&&i.includes(r)}function so(e){return e?no.filter(t=>oo(e,t)):[]}async function co(e,t){return await Ai(bn(e),t)}const lo=`INSUFFICIENT_SAMPLES`;function uo(e){let{recordCount:t,batchSize:n}=e;return t>n?{ok:!0}:{ok:!1,issue:{severity:`error`,code:lo,message:`Training dataset has ${t} sample(s), which is not greater than batch_size (${n}).`},hint:[`The platform requires the number of training samples to exceed batch_size.`,`Options:`,` • add more data (recommended: comfortably more than batch_size, since the`,` platform also holds back a default 0.9 train split),`,` • lower --batch-size (server clamps to a minimum of 8).`].join(`
13
- `)}}function fo(e){let t={};if(t.n_epochs=e.nEpochs===void 0?3:e.nEpochs,e.learningRate!==void 0&&(t.learning_rate=e.learningRate),e.maxLength!==void 0&&(t.max_length=e.maxLength),e.batchSize!==void 0){let n=e.batchSize;n<8&&(n=8),n>1024&&(n=1024),t.batch_size=n}return t}function po(e,t,n){return{clientTrainingType:e,serverTrainingType:t,acceptedExtensions:[`.jsonl`],async validate(e,t,r){return G(e,{...r,schema:n})},resolveHyperParameters(e,t){return fo(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}}const mo=po(`sft`,`sft`,`chatml`),ho={lm_max_epoch:60,lm_step:5,lm_num:3,lm_batch_size:1e3,fm_max_epoch:100,fm_step:10,fm_num:3,fm_batch_size:2e3},go={learning_rate:`3e-5`,max_steps:800,eval_steps:200,max_token_length:`1k`,gradient_clip:.5,weight_decay:.02,max_pixels:`2k`,val_img_size:`2k`,generation_type:`t2i`,lora_rank:32,save_total_limit:10,split:.9},_o={...go,max_pixels:`1k`,val_img_size:`1k`,generation_type:`i2i`},vo={n_epochs:50,learning_rate:`2e-5`,split:.5,max_split_val_dataset_sample:5,eval_epochs:20,save_total_limit:10,lora_rank:32,lora_alpha:32};function yo(e){return e===`image`||e===`image-i2i`}function bo(e){return e===`video`||e===`video-kf2v`}function xo(e){return typeof e==`string`&&/wan2\.5/i.test(e)}function So(e){return typeof e==`string`&&/wan2\.7/i.test(e)}const Co=[mo,{clientTrainingType:`sft-lora`,serverTrainingType:`efficient_sft`,acceptedExtensions:[`.jsonl`,`.zip`],async validate(e,t,n){if(t===`audio`)return G(e,{...n,schema:`tts`});if(yo(t))return G(e,{...n,schema:`image`,maxBytes:Gi});if(bo(t)){let r=await G(e,{...n,schema:`video`,maxBytes:Gi});if(typeof n.model==`string`&&n.model.length>0){let e=/kf2v/i.test(n.model),i=t===`video-kf2v`;e&&!i?r.errors.push(W(`error`,`KF2V_DATA_MISMATCH`,`Model "${n.model}" is a first+last-frame (kf2v) model but the data has no "last_frame_path". kf2v training data must include a last frame per record.`)):!e&&i&&r.warnings.push(W(`warning`,`I2V_LAST_FRAME_IGNORED`,`Model "${n.model}" is a first-frame (i2v) model but the data includes "last_frame_path"; the last frame will be ignored during training.`))}return r.valid=r.errors.length===0,r}return G(e,{...n,schema:`chatml`})},resolveHyperParameters(e,t){if(e===`audio`)return{...ho};if(yo(e)){let n={...e===`image-i2i`?_o:go};return t.learningRate!==void 0&&(n.learning_rate=t.learningRate),n}if(bo(e)){let e=t.model??t.baseModel,n={...vo,batch_size:So(e)?1:4,max_pixels:So(e)?102400:xo(e)?36864:262144};return t.nEpochs!==void 0&&(n.n_epochs=t.nEpochs),t.batchSize!==void 0&&(n.batch_size=t.batchSize),t.learningRate!==void 0&&(n.learning_rate=t.learningRate),n}return fo(t)},shouldSkipGate(e,t){return!(t!==`audio`&&!yo(t)&&!bo(t)||e!==`batch_size`)},shouldSkipCapabilityCheck(e){return e===`audio`||yo(e)||bo(e)}},po(`dpo`,`dpo_full`,`dpo`),po(`dpo-lora`,`dpo_lora`,`dpo`),{clientTrainingType:`cpt`,serverTrainingType:`cpt`,acceptedExtensions:[`.jsonl`],async validate(e,t,n){return G(e,{...n,schema:`cpt`,maxBytes:Wi})},resolveHyperParameters(e,t){return fo(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}];function wo(e){let t=Co.find(t=>t.clientTrainingType===e);if(!t){let t=Co.map(e=>e.clientTrainingType).join(`, `);throw new P(`Unknown training type "${e}".`,N.USAGE,`Supported training types: ${t}.`)}return t}function To(){return Co.map(e=>e.clientTrainingType)}const Eo=`zeldaEasy.broadscope-platform.modelCenter.getModelPrice`,Do=`zeldaEasy.broadscope-platform.modelInstance.calculateDatasetsTotalTokens`,Oo=`zeldaEasy.broadscope-platform.modelInstance.estimateFinetuneTokens`;async function ko(e,t){return U(await e.console(Eo,{query:{type:0,modelId:t}}))}async function Ao(e,t,n){return U(await e.console(Do,{input:{trainDatasetIds:t,hyperParams:n}}))}async function jo(e,t,n,r){let i=JSON.stringify({useDefault:!1,userDefinedObj:{batch_size:16,eval_steps:50,learning_rate:`7e-6`,lr_scheduler_type:`linear`,max_length:8192,n_epochs:r,split:.9,save_total_limit:`3`,resume_from_checkpoint:!1,save_strategy:`epoch`},useQwenMixedStrategy:!1});return U(await e.console(Oo,{input:{trainingType:`cpt`,instanceName:`${t}_cli_estimate`,algorithmType:100,bizType:100,trainDatasetIds:n,hyperParams:i,bailianTrainModel:t,validationDatasetIds:``,jobName:`${t}_cli_estimate`,priority:`L0`}}))}function Mo(e){return e?{"x-acs-req-uuid":e,"X-DashScope-RequestId":e}:void 0}async function No(e,t,n){return e.requestJson({path:mr(),method:`POST`,body:t,signal:n})}async function Po(e,t={}){let n=new URLSearchParams;t.pageNo!==void 0&&n.set(`page_no`,String(t.pageNo)),t.pageSize!==void 0&&n.set(`page_size`,String(t.pageSize)),t.plan!==void 0&&n.set(`plan`,t.plan);let r=mr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Fo(e,t,n){return e.requestJson({path:hr(t),method:`GET`,signal:n})}async function Io(e,t,n={}){let r=new URLSearchParams;n.pageNo!==void 0&&r.set(`page_no`,String(n.pageNo)),n.pageSize!==void 0&&r.set(`page_size`,String(n.pageSize)),n.includeDeleted!==void 0&&r.set(`include_deleted`,String(n.includeDeleted)),n.statuses!==void 0&&r.set(`statuses`,n.statuses.join(`,`)),n.chargeTypes!==void 0&&r.set(`charge_types`,n.chargeTypes.join(`,`));let i=gr(t),a=r.toString()?`${i}?${r.toString()}`:i;return e.requestJson({path:a,method:`GET`,signal:n.signal})}async function Lo(e,t,n,r){return e.requestJson({path:_r(t,n),method:`GET`,signal:r})}async function Ro(e,t,n,r){return e.requestJson({path:xr(t,n),method:`GET`,signal:r})}async function zo(e,t,n,r={}){return e.requestJson({path:gr(t),method:`POST`,body:n,headers:Mo(r.requestId),signal:r.signal})}async function Bo(e,t,n,r,i={}){return e.requestJson({path:vr(t,n),method:`PUT`,body:r,headers:Mo(i.requestId),signal:i.signal})}async function Vo(e,t,n,r,i={}){return e.requestJson({path:yr(t,n),method:`PUT`,body:r,headers:Mo(i.requestId),signal:i.signal})}async function Ho(e,t,n,r={}){let i=_r(t,n),a=new URLSearchParams;return r.reason!==void 0&&a.set(`reason`,r.reason),e.requestJson({path:a.toString()?`${i}?${a.toString()}`:i,method:`DELETE`,headers:Mo(r.requestId),signal:r.signal})}async function Uo(e,t,n,r){return e.requestJson({path:br(t),method:`PUT`,body:{overflow_strategy:n},signal:r})}async function Wo(e,t,n){return e.requestJson({path:hr(t),method:`DELETE`,signal:n})}async function Go(e,t={}){let n=new URLSearchParams;t.pageNo!==void 0&&n.set(`page_no`,String(t.pageNo)),t.pageSize!==void 0&&n.set(`page_size`,String(t.pageSize)),t.version&&n.set(`version`,t.version),t.modelSource&&n.set(`model_source`,t.modelSource);let r=wr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Ko(e,t,n,r,i){return e.requestJson({path:Sr(t),method:`PUT`,body:n,headers:Mo(i),signal:r})}async function qo(e,t,n,r){return e.requestJson({path:Cr(t),method:`PUT`,body:n,signal:r})}const K={LORA:`lora`,PTU:`ptu`,MU:`mu`},Jo=K.LORA;function Yo(e){return e===`audio`?K.MU:Jo}const Xo={POST_PAY:`POST_PAY`,PRE_PAY:`PRE_PAY`},Zo=Xo.POST_PAY,q={POST_PAID:`post_paid`,PRE_PAID:`pre_paid`};function Qo(e,t){if(t||e.inputTpm!==void 0||e.outputTpm!==void 0){if(e.inputTpm===void 0||e.outputTpm===void 0)return`--input-tpm and --output-tpm must be provided together.
11
+ `);r=t.pop()??``;for(let n of t){let t=sn(n,e,i);e=t.event,t.completed&&(yield t.completed)}}break}if(r+=n.decode(o,{stream:!0}),r.length>i)throw new P(`SSE stream exceeded the maximum buffer size.`,N.GENERAL);let{lines:s,rest:c}=on(r);r=c;for(let t of s){let n=sn(t,e,i);e=n.event,n.completed&&(yield n.completed)}}r.length>0&&(e=sn(r,e,i).event),e.data!==void 0&&(yield{data:e.data,event:e.event,id:e.id})}finally{t.releaseLock()}}function ln(e){return String(e)}var un=class{sseUrl;messageUrl;nextId=1;deps;authToken;abortController;pending=/* @__PURE__ */ new Map;endpointReady;resolveEndpoint;rejectEndpoint;closed=!1;streamEnded=!1;constructor(e,t,n){this.deps=e,this.sseUrl=t,this.authToken=n,this.endpointReady=new Promise((e,t)=>{this.resolveEndpoint=e,this.rejectEndpoint=t})}async initialize(){if(!this.authToken)throw new P(`This command needs a model-domain API key.`,N.AUTH);await this.openSse();let e=await this.rpc(`initialize`,{protocolVersion:`2025-03-26`,capabilities:{},clientInfo:{name:this.deps.identity.clientName,version:this.deps.identity.version}});this.deps.settings.verbose&&(console.error(`[MCP SSE] Session initialized`),console.error(`[MCP SSE] Server: ${JSON.stringify(e)}`)),await this.notify(`notifications/initialized`)}async listTools(){return(await this.rpc(`tools/list`)).tools||[]}async callTool(e,t){return await this.rpc(`tools/call`,{name:e,arguments:t})}close(){this.closed||(this.closed=!0,this.abortController?.abort(),this.failPending(new P(`MCP SSE session closed.`,N.GENERAL)),this.messageUrl=void 0)}failPending(e){for(let[,t]of this.pending)t.reject(e);this.pending.clear()}markStreamEnded(e){this.streamEnded=!0,this.messageUrl=void 0,this.failPending(e)}async openSse(){if(this.abortController)return;this.abortController=new AbortController;let e=this.deps.settings.timeout*1e3,t=!1,n=setTimeout(()=>{t=!0,this.abortController?.abort()},e),r={Accept:`text/event-stream`,"User-Agent":`${this.deps.identity.clientName}/${this.deps.identity.version}`,...B(this.deps.identity)};this.authToken&&(r.Authorization=`Bearer ${this.authToken}`),this.deps.settings.verbose&&console.error(`> GET ${this.sseUrl}`);let i;try{i=await fetch(this.sseUrl,{method:`GET`,headers:r,signal:this.abortController.signal})}catch(e){throw clearTimeout(n),this.abortController=void 0,this.closed?new P(`MCP SSE session closed.`,N.GENERAL):t?new P(`MCP SSE timed out waiting for response headers.`,N.TIMEOUT):e}if(this.deps.settings.verbose&&console.error(`< ${i.status} ${i.statusText}`),!i.ok){let e=`MCP request failed: ${i.status} ${i.statusText}`;try{let t=await i.text();t&&(e+=` - ${t.slice(0,500)}`)}catch(r){throw clearTimeout(n),this.abortController=void 0,this.closed?new P(`MCP SSE session closed.`,N.GENERAL):t?new P(`MCP SSE timed out reading error response body.`,N.TIMEOUT):new P(e,N.GENERAL,void 0,{cause:r})}throw clearTimeout(n),this.abortController=void 0,new P(e,N.GENERAL)}clearTimeout(n),this.consumeSse(i).catch(e=>{if(this.closed)return;let t=e instanceof P?e:new P(`MCP SSE stream failed: ${e instanceof Error?e.message:String(e)}`,N.GENERAL);this.rejectEndpoint?.(t),this.streamEnded||this.markStreamEnded(t)});let a=fn(e,`MCP SSE timed out waiting for endpoint event.`);try{await Promise.race([this.endpointReady,a.promise])}finally{a.cancel()}}async consumeSse(e){for await(let t of cn(e)){if(this.closed)break;if(t.event===`endpoint`){let e=t.data.trim();if(!e)continue;this.messageUrl=dn(this.sseUrl,e),this.resolveEndpoint?.(),this.resolveEndpoint=void 0,this.rejectEndpoint=void 0;continue}if(t.event===`message`||t.event===void 0){let e;try{e=JSON.parse(t.data)}catch{continue}if(typeof e.id!=`number`&&typeof e.id!=`string`)continue;let n=ln(e.id),r=this.pending.get(n);if(!r)continue;this.pending.delete(n),r.resolve(e)}}if(!this.closed){if(!this.messageUrl){let e=new P(`MCP SSE stream ended before endpoint event.`,N.GENERAL);throw this.rejectEndpoint?.(e),e}this.markStreamEnded(new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL))}}async rpc(e,t){if(this.closed||this.streamEnded)throw new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL);let n=this.nextId++,r=ln(n),i={jsonrpc:`2.0`,id:n,method:e,...t?{params:t}:{}},a=this.deps.settings.timeout*1e3,o=new Promise((e,t)=>{this.pending.set(r,{resolve:e,reject:t})});o.catch(()=>void 0);let s=fn(a,`MCP SSE timed out waiting for response to ${e}.`);try{if(await this.postMessage(i),this.closed||this.streamEnded)throw new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL);let e=await Promise.race([o,s.promise]);if(e.error)throw new P(`MCP error (${e.error.code}): ${e.error.message}`,N.GENERAL);return e.result}catch(e){throw this.pending.delete(r),e}finally{s.cancel()}}async notify(e,t){let n={jsonrpc:`2.0`,method:e,...t?{params:t}:{}};await this.postMessage(n)}async postMessage(e){if(this.closed||this.streamEnded)throw new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL);if(!this.messageUrl)throw new P(`MCP SSE message endpoint is not ready.`,N.GENERAL);let t={"Content-Type":`application/json`,Accept:`application/json, text/event-stream`,"User-Agent":`${this.deps.identity.clientName}/${this.deps.identity.version}`,...B(this.deps.identity)};this.authToken&&(t.Authorization=`Bearer ${this.authToken}`),this.deps.settings.verbose&&(console.error(`> POST ${this.messageUrl}`),console.error(`> Method: ${e.method}`));let n=pn(this.deps.settings.timeout*1e3,this.abortController?.signal),r;try{try{r=await fetch(this.messageUrl,{method:`POST`,headers:t,body:JSON.stringify(e),signal:n.signal})}catch(e){throw this.closed?new P(`MCP SSE session closed.`,N.GENERAL):e}if(this.deps.settings.verbose&&console.error(`< ${r.status} ${r.statusText}`),!r.ok){let e=`MCP request failed: ${r.status} ${r.statusText}`;try{let t=await r.text();t&&(e+=` - ${t.slice(0,500)}`)}catch(t){throw this.closed?new P(`MCP SSE session closed.`,N.GENERAL):n.timedOut?new P(`MCP SSE timed out reading error response body.`,N.TIMEOUT):new P(e,N.GENERAL,void 0,{cause:t})}throw new P(e,N.GENERAL)}}finally{n.cleanup()}}};function dn(e,t){let n,r;try{r=new URL(e),n=new URL(t,e)}catch{throw new P(`MCP SSE endpoint is not a valid URL: ${t}`,N.GENERAL)}if(n.origin!==r.origin)throw new P(`MCP SSE endpoint origin mismatch: expected ${r.origin}, got ${n.origin}`,N.GENERAL);return n.toString()}function fn(e,t){let n,r=new Promise((r,i)=>{n=setTimeout(()=>{n=void 0,i(new P(t,N.TIMEOUT))},e)});return r.catch(()=>void 0),{promise:r,cancel:()=>{n!==void 0&&(clearTimeout(n),n=void 0)}}}function pn(e,t){let n=new AbortController,r={timedOut:!1},i=setTimeout(()=>{r.timedOut=!0,n.abort()},e),a=()=>n.abort(t?.reason),o=()=>{clearTimeout(i),t?.removeEventListener(`abort`,a)};return t?.aborted?a():t?.addEventListener(`abort`,a,{once:!0}),n.signal.addEventListener(`abort`,o,{once:!0}),{signal:n.signal,cleanup:o,get timedOut(){return r.timedOut}}}function mn(e){return`/api/v1/mcps/${e}/mcp`}function hn(e){return`/api/v1/mcps/${e}/sse`}function gn(e){return e instanceof P&&/^MCP request failed:\s*405\b/i.test(e.message)}function _n(e){return e instanceof P&&/^MCP request failed:\s*(405|404)\b/i.test(e.message)}async function vn(e){let{deps:t,authToken:n,httpUrl:r,sseUrl:i,serverCode:a,urlOverride:o}=e;if(o){let e=new yn(t,o,n);try{return await e.initialize(),{client:e,url:o}}catch(e){if(!_n(e))throw e}let r=new un(t,o,n);try{return await r.initialize(),{client:r,url:o}}catch(e){throw r.close(),e}}let s=new yn(t,r,n);try{return await s.initialize(),{client:s,url:r}}catch(e){if(!gn(e)||a===`WebSearch`)throw e}let c=new un(t,i,n);try{return await c.initialize(),{client:c,url:i}}catch(e){throw c.close(),e}}var yn=class{url;sessionId;nextId=1;deps;authToken;constructor(e,t,n){this.deps=e,this.url=t,this.authToken=n}async initialize(){if(!this.authToken)throw new P(`This command needs a model-domain API key.`,N.AUTH);let e=await this.rpc(`initialize`,{protocolVersion:`2025-03-26`,capabilities:{},clientInfo:{name:this.deps.identity.clientName,version:this.deps.identity.version}});this.deps.settings.verbose&&(console.error(`[MCP] Session initialized: ${this.sessionId??`no session`}`),console.error(`[MCP] Server: ${JSON.stringify(e)}`)),await this.notify(`notifications/initialized`)}async listTools(){return(await this.rpc(`tools/list`)).tools||[]}async callTool(e,t){return await this.rpc(`tools/call`,{name:e,arguments:t})}async rpc(e,t){let n=this.nextId++,r={jsonrpc:`2.0`,id:n,method:e,...t?{params:t}:{}},i=await this.send(r),a=await this.readJsonRpcResponse(i,n);if(a.error)throw new P(`MCP error (${a.error.code}): ${a.error.message}`,N.GENERAL);return a.result}async notify(e,t){let n={jsonrpc:`2.0`,method:e,...t?{params:t}:{}};await this.send(n)}async readJsonRpcResponse(e,t){return(e.headers.get(`content-type`)||``).includes(`text/event-stream`)?await this.readJsonRpcFromSse(e,t):await e.json()}async readJsonRpcFromSse(e,t){let n=String(t);for await(let t of cn(e)){if(t.event&&t.event!==`message`)continue;let e;try{e=JSON.parse(t.data)}catch{continue}if(e.id!=null&&String(e.id)===n)return e}throw new P(`MCP SSE response stream ended without a matching JSON-RPC response.`,N.GENERAL)}async send(e){let t={"Content-Type":`application/json`,Accept:`application/json, text/event-stream`,"User-Agent":`${this.deps.identity.clientName}/${this.deps.identity.version}`,...B(this.deps.identity)};this.authToken&&(t.Authorization=`Bearer ${this.authToken}`),this.sessionId&&(t[`Mcp-Session-Id`]=this.sessionId),this.deps.settings.verbose&&(console.error(`> POST ${this.url}`),console.error(`> Method: ${e.method}`));let n=this.deps.settings.timeout*1e3,r=await fetch(this.url,{method:`POST`,headers:t,body:JSON.stringify(e),signal:AbortSignal.timeout(n)});this.deps.settings.verbose&&console.error(`< ${r.status} ${r.statusText}`);let i=r.headers.get(`Mcp-Session-Id`)||r.headers.get(`mcp-session-id`);if(i&&(this.sessionId=i),!r.ok){let e=`MCP request failed: ${r.status} ${r.statusText}`;try{let t=await r.text();t&&(e+=` - ${t.slice(0,500)}`)}catch{}throw new P(e,N.GENERAL)}return r}};const bn={"cn-beijing":{domestic:{csGateway:`bailian-cs.console.aliyun.com`,action:`BroadScopeAspnGateway`},international:{csGateway:`bailian-cs.console.alibabacloud.com`,action:`BroadScopeAspnGateway`}},"ap-southeast-1":{domestic:{csGateway:`modelstudio-cs.console.aliyun.com`,action:`IntlBroadScopeAspnGateway`},international:{csGateway:`bailian-singapore-cs.alibabacloud.com`,action:`IntlBroadScopeAspnGateway`}}};function xn(e,t){return bn[e]?.[t]??bn[`cn-beijing`][t]}function Sn(e){let t=e.consoleRegion??`cn-beijing`,n=e.consoleSite??`domestic`,r=e.consoleSwitchAgent;return r==null?{consoleRegion:t,consoleSite:n}:{consoleRegion:t,consoleSite:n,consoleSwitchAgent:r}}function Cn(e){let t=Sn(e);return(n,r)=>Tn({region:t.consoleRegion,site:t.consoleSite,switchAgent:t.consoleSwitchAgent},e.timeout,{api:n,data:r})}function wn(e,t,n){return JSON.stringify({Api:e,V:`1.0`,Data:{...t,cornerstoneParam:{protocol:`V2`,console:`ONE_CONSOLE`,productCode:`p_efm`,switchUserType:3,consoleSite:`BAILIAN_ALIYUN`,...n==null?{}:{switchAgent:n},...typeof t.cornerstoneParam==`object`&&t.cornerstoneParam!==null?t.cornerstoneParam:{}}}})}async function Tn(e,t,{api:n,data:r},i){let a=xn(e.region,e.site),o=`https://${a.csGateway}`,s=a.action,c=wn(n,r,e.switchAgent),l=new URLSearchParams({params:c,region:e.region}),u=t*1e3,d={Accept:`*/*`,"Content-Type":`application/x-www-form-urlencoded`};e.token&&(d.Authorization=`Bearer ${e.token}`);let f=`${o}/cli/api.json?action=${s}&product=sfm_bailian&api=${encodeURIComponent(n)}`;i?.verbose&&(process.stderr.write(`> POST ${f}\n`),process.stderr.write(`> payload ${JSON.stringify({params:JSON.parse(c),region:e.region},null,2)}\n`));let p=await fetch(f,{method:`POST`,headers:d,body:l.toString(),signal:AbortSignal.timeout(u)});if(i?.verbose&&process.stderr.write(`< ${p.status} ${p.statusText}\n`),!p.ok){let e=await p.text().catch(()=>``);throw new P(`Console CLI gateway failed: HTTP ${p.status} ${p.statusText}`,N.GENERAL,e.slice(0,500))}let m=await p.json(),h=m.data;if(h?.success===!1&&h.errorCode){let e=JSON.stringify(m),t=h.errorCode,n=typeof t==`string`?t:JSON.stringify(t),r=n.includes(`NotLogined`);throw new P(r?`Console session is not logged in or has expired.`:`Console gateway error: ${n}`,r?N.AUTH:N.GENERAL,r?"Run `bl auth login --console` to sign in or refresh your console session.":void 0,{rawResponse:e})}return m}var En=class{deps;constructor(e){this.deps=e}get http(){return{identity:this.deps.identity,settings:this.deps.settings}}requireApi(){if(!this.deps.apiCred)throw new P(`This command needs a model-domain API key.`,N.AUTH);return this.deps.apiCred}requireOpenApi(){if(!this.deps.openApiCred)throw new P(`This command needs Alibaba Cloud OpenAPI AK/SK credentials.`,N.AUTH);return this.deps.openApiCred}get baseUrl(){return this.deps.apiCred?.baseUrl??this.deps.baseUrl}exportApiCredential(){return this.deps.apiCred}bailianMcpRegistrationHeaders(){return{Authorization:`Bearer ${this.requireApi().token}`,...B(this.deps.identity)}}url(e,t){return(this.deps.baseUrlIsDefault&&t?t():this.baseUrl)+e}toOpts({path:e,...t}){let n=this.requireApi();return{...t,url:/^https?:\/\//.test(e)?e:n.baseUrl+e,headers:{...t.headers,Authorization:`Bearer ${n.token}`}}}request(e){return Bt(this.http,this.toOpts(e))}requestJson(e){return Ut(this.http,this.toOpts(e))}uploadFile(e,t,n={}){return nn(e)?rn(e,this.requireApi().token,t,{...n,identity:this.deps.identity,timeout:this.deps.settings.timeout}):Promise.resolve(e)}resolveImageInput(e,t,n={}){return nn(e)?this.usesTokenPlanEndpoint()?Promise.resolve($t(e)):this.uploadFile(e,t,{signal:n.signal}):Promise.resolve(e)}usesTokenPlanEndpoint(){try{return/^token-plan\.[a-z0-9-]+\.maas\.aliyuncs\.com$/i.test(new URL(this.baseUrl).hostname)}catch{return!1}}mcp(e){let t=/^https?:\/\//.test(e)?e:this.requireApi().baseUrl+e;return new yn(this.http,t,this.deps.apiCred?.token)}connectBailianMcp(e,t){return this.requireApi(),vn({deps:this.http,authToken:this.deps.apiCred?.token,httpUrl:this.url(mn(e)),sseUrl:this.url(hn(e)),serverCode:e,urlOverride:t})}async console(e,t){if(!this.deps.consoleCred)throw new P(`This command needs a console access token.`,N.AUTH);let n={api:e,data:t},{timeout:r}=this.deps.settings;try{return await Tn(this.deps.consoleCred,r,n,this.deps.settings)}catch(e){if(!(e instanceof P)||e.exitCode!==N.AUTH||!e.message.includes(`not logged in`))throw e;let t=await jn({identity:this.deps.identity,settings:this.deps.settings,baseUrl:this.deps.baseUrl});if(!t)throw e;return await Tn({...this.deps.consoleCred,token:t},r,n,this.deps.settings)}}openApiQueryJson(e){return this.openApiJson(e)}async openApiJson(e){let t=this.requireOpenApi(),n=e.body===void 0?``:JSON.stringify(e.body),r=e.queryParams?Wt(e.queryParams):``,i=`https://${e.host}${e.path}${r?`?${r}`:``}`,a=Gt({accessKeyId:t.accessKeyId,accessKeySecret:t.accessKeySecret,securityToken:t.securityToken,action:e.action,version:e.version,body:n,host:e.host,pathname:e.path,method:e.method,queryString:r});this.deps.settings.verbose&&(process.stderr.write(`> ${e.method} ${i}\n`),process.stderr.write(`> x-acs-action: ${e.action} (version ${e.version})\n`),process.stderr.write(`> AK: ${Pt(t.accessKeyId)}\n`),t.securityToken&&process.stderr.write(`> STS token: ${Pt(t.securityToken)}\n`),r&&process.stderr.write(`> query: ${r}\n`),n&&process.stderr.write(`> body: ${n}\n`));let o=this.deps.settings.timeout*1e3,s=await fetch(i,{method:e.method,headers:{...a,...B(this.deps.identity)},body:n||void 0,signal:AbortSignal.timeout(o)}),c=await s.text();this.deps.settings.verbose&&(process.stderr.write(`< ${s.status} ${s.statusText}\n`),process.stderr.write(`< ${c}\n`));let l;try{l=JSON.parse(c)}catch{throw new P(`${s.status} ${s.statusText} - ${c.slice(0,500)}`,N.GENERAL)}if(!s.ok||l.Success===!1)throw new P(`${l.Code||s.status} - ${l.Message||s.statusText}`,N.GENERAL);return l}};const Dn={cn:`modelstudio.cn-beijing.aliyuncs.com`,intl:`modelstudio.ap-southeast-1.aliyuncs.com`};function On(e){for(let[t,n]of Object.entries(Fe))if(e===n||e.startsWith(`${n}/`))return t;return`cn`}function kn(e){let t=On(e);return Dn[t]??Dn.cn}async function An(e){let{identity:t,settings:n,baseUrl:r,accessKeyId:i,accessKeySecret:a,securityToken:o}=e,s=new En({identity:t,settings:n,baseUrl:r,openApiCred:{accessKeyId:i,accessKeySecret:a,securityToken:o,source:`flag`}}),c=kn(r);return s.openApiQueryJson({host:c,path:`/modelstudio/cli/generateAccessToken`,action:`GenerateCLIAccessToken`,version:`2026-02-10`,method:`POST`,queryParams:{}})}async function jn(e){let t=e.settings.configName,n=z(t),r=n.access_key_id,i=n.access_key_secret;if(!r||!i)return null;e.settings.verbose&&process.stderr.write(`Refreshing access token...
12
+ `);let a=(await An({identity:e.identity,settings:e.settings,baseUrl:e.baseUrl,accessKeyId:r,accessKeySecret:i})).cliAccessToken;if(!a)return null;let o=z(t);return o.access_token=a,await vt(o,t),a}function Mn(){return`/compatible-mode/v1/chat/completions`}function Nn(){return`/compatible-mode/v1/responses`}function Pn(){return`/compatible-mode/v1/systemone`}function Fn(){return`/api/v1/services/aigc/image-generation/generation`}function In(){return`/api/v1/services/aigc/multimodal-generation/generation`}function Ln(){return`/api/v1/services/aigc/text2image/image-synthesis`}function Rn(){return`/api/v1/services/aigc/image2image/image-synthesis`}function zn(){return`/api/v1/services/aigc/video-generation/video-synthesis`}function Bn(){return`/api/v1/services/aigc/image2video/video-synthesis`}function Vn(e){return`/api/v1/tasks/${encodeURIComponent(e)}`}function Hn(){return`/api/v1/models/limits`}function Un(){return`/api/v1/models/permissions`}function Wn(e){return`/api/v1/apps/${encodeURIComponent(e)}/completion`}function Gn(){return`/api/v2/apps/memory/add`}function Kn(){return`/api/v2/apps/memory/memory_nodes/search`}function qn(){return`/api/v2/apps/memory/memory_nodes`}function Jn(e){return`/api/v2/apps/memory/memory_nodes/${encodeURIComponent(e)}`}function Yn(){return`/api/v1/services/audio/tts/SpeechSynthesizer`}function Xn(){return`/api/v1/services/audio/asr/transcription`}function Zn(){return`/api/v1/services/audio/asr/customization`}function Qn(){return`/api/v2/apps/memory/profile_schemas`}function $n(e){return`/api/v2/apps/memory/profile_schemas/${encodeURIComponent(e)}/profiles`}function er(){return`/api/v1/indices/rag/index/retrieve`}function tr(e,t=`cn-beijing`){return`https://${e}.${t}.maas.aliyuncs.com`}function nr(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v1/indices/knowledge/search`}function rr(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v2/apps/knowledge/chat`}function ir(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}const ar=`/api/v1/agentstudio/security`;function or(e){return`${e}${ar}/overview`}function sr(e){return`${e}${ar}/agent_logs`}function cr(){return`/api/v1/mcps/WebSearch/mcp`}function lr(){return`/compatible-mode/v1/files`}function ur(){return`/api/v1/files`}function dr(e){return`/api/v1/files/${encodeURIComponent(e)}`}function fr(){return`/api/v1/fine-tunes`}function pr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}`}function mr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/cancel`}function hr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/logs`}function gr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/checkpoints`}function _r(e,t){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/export/${encodeURIComponent(t)}`}function vr(){return`/api/v1/fine-tunes/compress/templates`}function yr(){return`/api/v1/fine-tunes/compress/jobs`}function br(e){return`/api/v1/fine-tunes/compress/jobs/${encodeURIComponent(e)}`}function xr(e){return`/api/v1/fine-tunes/compress/jobs/${encodeURIComponent(e)}/cancel`}function Sr(e){return`/api/v1/fine-tunes/compress/jobs/${encodeURIComponent(e)}/logs`}function Cr(){return`/api/v1/deployments`}function wr(e){return`/api/v1/deployments/${encodeURIComponent(e)}`}function Tr(e){return`${wr(e)}/capacity-instances`}function Er(e,t){return`${Tr(e)}/${encodeURIComponent(t)}`}function Dr(e,t){return`${Er(e,t)}/scale`}function Or(e,t){return`${Er(e,t)}/renew`}function kr(e){return`${wr(e)}/update-overflowstrategy`}function Ar(e,t){return`${wr(e)}/capacity-operations/${encodeURIComponent(t)}`}function jr(e){return`${wr(e)}/scale`}function Mr(e){return`/api/v1/deployments/${encodeURIComponent(e)}/update`}function Nr(){return`/api/v1/deployments/models`}function Pr(e,t){return`https://${e}.cn-beijing.maas.aliyuncs.com${t}`}function Fr(){return`/api/v1/agentstudio/files`}function Ir(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}function Lr(e){return`/api/v1/agentstudio/sandbox${e}`}function Rr(e,t){return Ir(e)+Lr(t)}const zr={sandboxes:`/sandboxes`,sandboxList:`/v2/sandboxes`,templates:`/templates`,templateCreate:`/v3/templates`,templateList:`/v2/templates`};function Br(e){return`${zr.sandboxes}/${encodeURIComponent(e)}`}function Vr(e,t){return`${Br(e)}/${t}`}function Hr(e){return`${zr.templates}/${encodeURIComponent(e)}`}function Ur(e,t){return`${Hr(e)}/builds/${encodeURIComponent(t)}/status`}const Wr={indexList:`/api/v1/indices/rag/index/list`,indexCreateV2:`/api/v1/indices/rag/index/create_v2`,indexUpdate:`/api/v1/indices/rag/index/update`,indexDelete:`/api/v1/indices/rag/index/delete`,indexMonitor:`/api/v1/indices/rag/index/monitor`,indexFiles:`/api/v1/indices/rag/index/files`,indexDeleteFile:`/api/v1/indices/rag/index/delete_file`,indexJobCreate:`/api/v1/indices/rag/index/job/create`,indexJobStatus:`/api/v1/indices/rag/index_job/status`,chunkList:`/api/v1/indices/rag/index/chunklist`,chunkCreate:`/api/v1/indices/rag/index/chunk/create`,chunkUpdate:`/api/v1/indices/rag/index/chunk/update`,chunkDelete:`/api/v1/indices/rag/index/chunk/delete`,agentList:`/api/v1/indices/rag/app/list`,agentGet:`/api/v1/indices/rag/app/get`,agentCreate:`/api/v1/indices/rag/app/create`,agentUpdate:`/api/v1/indices/rag/app/update`,agentDeploy:`/api/v1/indices/rag/app/deploy`,agentDelete:`/api/v1/indices/rag/app/delete`,agentCopy:`/api/v1/indices/rag/app/copy`,applyFileUploadLease:`/api/v1/connector/dash/applyFileUploadLease`,addFile:`/api/v1/connector/dash/addFile`,addFilesFromAuthorizedOss:`/api/v1/connector/dash/addFilesFromAuthorizedOss`,batchUpdateFileTag:`/api/v1/connector/dash/batchUpdateFileTag`,listFile:`/api/v1/connector/dash/listFile`,describeFile:`/api/v1/connector/dash/describeFile`,deleteFile:`/api/v1/connector/dash/deleteFile`,addConnector:`/api/v1/connector/dash/addConnector`,getConnector:`/api/v1/connector/dash/getConnector`,listCategory:`/api/v1/connector/dash/listCategory`,addCategory:`/api/v1/connector/dash/addCategory`,deleteCategory:`/api/v1/connector/dash/deleteCategory`},Gr=[`qwen-image`,`wan2.7-image`,`z-image`],Kr=[`qwen-image-3.0`,`qwen-image-2.0`,`qwen-image-edit`,`wan2.7-image`,`wan2.6-image`];function qr(e,t){return t.some(t=>e.startsWith(t))}function Jr(e){return qr(e,Gr)||e.startsWith(`wan2.6-image`)}function Yr(e){return qr(e,Gr)}function Xr(e){return qr(e,Kr)}function Zr(e){return/^wanx-v1(?:-|$)/i.test(e)}function Qr(e){return e.startsWith(`wan2.6-t2i`)||e.startsWith(`wan2.6-image`)||Yr(e)?!1:!!(/^wan2\.[0-5][^-]*-t2i/i.test(e)||Zr(e)||/^wanx/i.test(e)&&/t2i|text2image/i.test(e))}function $r(e){return/wan2\.5-i2i/i.test(e)}function ei(e){return/imageedit/i.test(e)}function ti(e){return e.startsWith(`qwen-image-3.0`)||e.startsWith(`qwen-image-2.0`)||e.startsWith(`qwen-image-edit`)?`qwen-image-2.0`:e.startsWith(`qwen-image`)?`qwen-image-fixed`:e.startsWith(`wan2.7-image`)?`wan27`:e.startsWith(`z-image`)?`z-image`:e.startsWith(`wan2.6-t2i`)||e.startsWith(`wan2.6-image`)||e.startsWith(`wan2.5-t2i`)?`wan26`:Zr(e)?`wanx-v1`:/wan2\.5-i2i/i.test(e)?`wan25-i2i`:Qr(e)?`wan-legacy`:`wan26`}function ni(e){if(e.startsWith(`qwen-image-3.0`)||e.startsWith(`qwen-image-2.0`)||e.startsWith(`qwen-image-max`))return!0;if(e.startsWith(`z-image`))return!1}function V(e,t){return{...e,sizeProfile:ti(t),promptExtendDefault:ni(t)}}function ri(e){return Yr(e)?V({kind:`sync-multimodal`,path:In(),useSync:!0,inputStyle:`messages`},e):Qr(e)?V({kind:`async-text2image`,path:Ln(),useSync:!1,inputStyle:`prompt`},e):V({kind:`async-image-generation`,path:Fn(),useSync:!1,inputStyle:`messages`},e)}function ii(e){return Xr(e)?V({kind:`sync-multimodal`,path:In(),useSync:!0,inputStyle:`messages`},e):ei(e)?V({kind:`async-image2image`,path:Rn(),useSync:!1,inputStyle:`function-base-image`},e):$r(e)?V({kind:`async-image2image`,path:Rn(),useSync:!1,inputStyle:`prompt-images`},e):V({kind:`async-image-generation`,path:Fn(),useSync:!1,inputStyle:`messages`},e)}function ai(e){return/realtime|streaming/i.test(e)}function oi(e){return/filetrans/i.test(e)}function si(e){return/^qwen3-asr-flash-filetrans(?:-|$)/i.test(e)}const ci=[`fun-asr-flash`,`qwen-audio`];function li(e){return ai(e)||oi(e)?!1:!!(e.startsWith(ci[0])||e.startsWith(ci[1])&&/asr-flash/i.test(e))}function ui(e){return!(!/^qwen3-asr-flash(?:-|$)/i.test(e)||oi(e)||ai(e)||li(e))}function di(e){if(ai(e))return{kind:`unsupported`,path:``,useSync:!1,unsupportedReason:`Model "${e}" is a realtime/streaming ASR model and requires a WebSocket API. Use an async filetrans model (e.g. fun-asr, qwen3-asr-flash-filetrans) or a sync flash model (e.g. qwen3-asr-flash, qwen-audio-3.0-asr-flash) with this command.`};if(oi(e)){let t=si(e);return{kind:`async-filetrans`,path:Xn(),useSync:!1,asyncInputStyle:t?`file_url`:`file_urls`,asyncLanguageStyle:t?`language`:`language_hints`}}return li(e)?{kind:`sync-flash`,path:In(),useSync:!0,flashFamily:`input-audio`}:ui(e)?{kind:`sync-flash`,path:In(),useSync:!0,flashFamily:`qwen3`}:{kind:`async-filetrans`,path:Xn(),useSync:!1,asyncInputStyle:`file_urls`,asyncLanguageStyle:`language_hints`}}function fi(e){let t=/^data:audio\/([^;,]+)/i.exec(e)?.[1]?.toLowerCase();if(t)return t===`mpeg`?`mp3`:t===`x-wav`||t===`wave`?`wav`:t;let n=(e.split(/[?#]/,1)[0]??e).match(/\.([a-zA-Z0-9]+)$/)?.[1]?.toLowerCase();return n?n===`mpeg`?`mp3`:n:`wav`}function pi(e){return[{role:`user`,content:[{type:`input_text`,text:e}]}]}function mi(e,t){return t?e===`language`?{language:t}:{language_hints:[t]}:{}}function hi(e){let{model:t,audioUrl:n,language:r,vocabularyId:i,vocabulary:a,context:o,flashFamily:s}=e;if(s===`input-audio`){let e={format:fi(n),sample_rate:`16000`};r&&(e.language_hints=[r]),i&&(e.vocabulary_id=i),a&&(e.vocabulary=a);let s=[];if(o)for(let e of pi(o))s.push(e);return s.push({role:`user`,content:[{type:`input_audio`,input_audio:{data:n}}]}),{model:t,input:{messages:s},parameters:e}}let c={};r&&(c.language=r);let l={};Object.keys(c).length>0&&(l.asr_options=c);let u={model:t,input:{messages:[{role:`user`,content:[{audio:n}]}]}};return Object.keys(l).length>0&&(u.parameters=l),u}function gi(e,t){let n=e.output;if(!n)return``;if(t===`input-audio`){if(typeof n.text==`string`&&n.text.length>0)return n.text;let e=n.sentence;if(typeof e?.text==`string`&&e.text.length>0)return e.text;let t=n.output?.sentence;return typeof t?.text==`string`?t.text:``}let r=n.choices;if(!r?.length)return``;let i=[];for(let e of r){let t=e.message;if(!t)continue;let n=t.content;if(typeof n==`string`){i.push(n);continue}if(Array.isArray(n))for(let e of n){if(typeof e==`string`){i.push(e);continue}if(e&&typeof e==`object`){let t=e;typeof t.text==`string`&&i.push(t.text)}}}return i.join(``)}function _i(e){if(e.results&&e.results.length>0)return e.results;let t=e.result?.transcription_url;return typeof t==`string`&&t.length>0?[{transcription_url:t,subtask_status:`SUCCEEDED`}]:[]}const vi={12000090:`STS credentials unavailable — retry in a moment`,12000091:`Service-linked role creation failed — retry`,12000092:`Use the primary account to create the service-linked role`,12000093:`Cloud security service is unavailable — retry later`,12000094:`Alert query failed — treat as no data`},yi=new Set(Object.values(Fe));function bi(e){return yi.has(e.replace(/\/+$/,``))}function xi(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:void 0}function Si(...e){for(let t of e)if(typeof t==`string`&&t.length>0)return t}function Ci(e,t,n){let r=e??`unknown`,i=e===void 0&&t===void 0?`\nUnexpected response body (truncated): ${n.slice(0,800)}`:``;throw new P(`Security API failed: ${r} - ${t??`no message`}${i}`,N.GENERAL,vi[r],{rawResponse:n.slice(0,500)})}function wi(e,t){let n;try{n=JSON.parse(e)}catch{throw new P(`Security API returned non-JSON response (${t??`unknown type`}).`,N.GENERAL,void 0,{rawResponse:e.slice(0,500)})}let r=xi(n),i=r?xi(r.data):void 0,a=i?xi(i.DataV2):void 0;if(a){let t=xi(a.data),n=Array.isArray(a.ret)?a.ret.map(e=>String(e)):[],o=n.length===0||n.some(e=>e.startsWith(`SUCCESS`)),s=Si(i?.errorCode,r?.errorCode),c=Si(i?.errorMsg,r?.errorMsg)??(o?void 0:n.join(`; `));return(r?.successResponse===!1||i?.success===!1||t?.success===!1||t?.failed===!0||!o||s!==void 0)&&Ci(s,c,e),(t?t.data:void 0)??null}if(r&&`success`in r)return r.success||Ci(Si(r.errorCode),Si(r.errorMsg),e),r.data??null;if(r){let t=Si(i?.errorCode,r.errorCode),n=Si(i?.errorMsg,r.errorMsg);(r.successResponse===!1||i?.success===!1||t!==void 0)&&Ci(t,n,e)}if(r)return r;Ci(void 0,void 0,e)}async function Ti(e,t){let n=await e.request({path:t,method:`GET`});return wi(await n.text(),n.headers.get(`content-type`))}function Ei(e){try{let{hostname:t}=new URL(e);return t===`aliyuncs.com`||t.endsWith(`.aliyuncs.com`)}catch{return!1}}function Di(e){return typeof e==`string`?e:e instanceof URL?e.href:e.url}function Oi(e){return async(t,n={})=>{let r=Di(t),i=new Headers(n.headers??(t instanceof Request?t.headers:void 0));if(i.has(`user-agent`)||i.set(`User-Agent`,`${e.identity.clientName}/${e.identity.version}`),Ei(r))for(let[t,n]of Object.entries(B(e.identity)))i.set(t,n);if(e.settings.verbose){console.error(`> ${n.method??`GET`} ${r}`);let e=i.get(`authorization`);e&&console.error(`> Auth: ${Pt(e.replace(/^Bearer /,``))}`)}let a=await fetch(t,{...n,headers:i});if(e.settings.verbose){console.error(`< ${a.status} ${a.statusText}`);let e=a.headers.get(`x-request-id`);e&&console.error(`request_id: ${e}`)}return a}}const ki=`2024-08-16`;function Ai(e){return`bailiancontrol.${e}.aliyuncs.com`}function ji(e){return new En({identity:e.identity,settings:e.settings,baseUrl:e.baseUrl,openApiCred:{accessKeyId:e.accessKeyId,accessKeySecret:e.accessKeySecret,securityToken:e.securityToken,source:`flag`}})}async function Mi(e){return ji(e).openApiJson({host:Ai(e.regionId),path:`/bailianControl/User/createUser`,action:`CreateUser`,version:ki,method:`POST`,body:{data:JSON.stringify({reqDTO:e.reqDTO})}})}async function Ni(e){return ji(e).openApiJson({host:Ai(e.regionId),path:`/bailianControl/workspaces`,action:`ListWorkspaces`,version:ki,method:`GET`,queryParams:{data:JSON.stringify({reqDTO:{},cornerstoneParam:{}})}})}async function Pi(e){return ji(e).openApiJson({host:Ai(e.regionId),path:`/bailianControl/serviserAuthorityPolicy/resetPolicies4Agent`,action:`ChangeUserPermissions`,version:ki,method:`POST`,body:{data:JSON.stringify({cornerstoneParam:{},outerKey:e.outerKey,policyIndexList:e.policyIndexList??[1],agentId:e.agentId})}})}const Fi=`zeldaHttp.dashscopeModel./zelda/api/v1/modelCenter/listFoundationModels`,Ii=`zeldaEasy.bmp.modelPredictRpcService.getPredictParamConfig`;function H(e){let t=e.data;if(!t)return e;let n=t.DataV2;if(n){let e=n.data;return e?.data??e??n}return t.data??t}async function Li(e,t={}){let{pageNo:n=1,pageSize:r=50,name:i=``,providers:a=[],capabilities:o=[]}=t,s=H(await e(Fi,{input:{pageNo:n,pageSize:r,name:i,providers:a,inferenceProviders:[],features:[],group:!0,capabilities:o,contextWindows:[]}})),c=s.total??0,l=s.list??[],u=[];for(let e of l){let t=e.items;if(t?.length)for(let e of t)u.push(e);else u.push(e)}return{total:c,models:u}}async function Ri(e,t={}){let n=t.pageSize??50,r=await Li(e,{...t,pageNo:1,pageSize:n}),i=[...r.models],a=Math.ceil(r.total/n);for(let r=2;r<=a;r++){let a=await Li(e,{...t,pageNo:r,pageSize:n});if(a.models.length===0)break;i.push(...a.models)}return i}async function zi(e,t){return(await Li(e,{name:t,pageSize:50})).models.find(e=>e.model===t)??null}async function Bi(e,t={}){let{pageNo:n=1,pageSize:r=50,name:i=``,providers:a=[],capabilities:o=[],features:s=[],contextWindows:c=[],querySampleCode:l}=t,u={pageNo:n,pageSize:r,name:i,providers:a,inferenceProviders:[],features:s,group:!0,capabilities:o,contextWindows:c,queryPermissions:!0,queryApplyStatus:!0,queryActivationStatus:!0,queryPrice:!0,queryQpmInfo:!0,supports:{inference:!0}};l&&(u.querySampleCode=!0);let d=H(await e(Fi,{input:u}));return{total:d.total??0,groups:d.list??[]}}function Vi(e){return e.flatMap(e=>e.items??[])}async function Hi(e,t={}){let n=t.pageSize??50,r=await Bi(e,{...t,pageNo:1,pageSize:n}),i=Math.max(1,Math.ceil(r.total/n)),a=[];for(let e=2;e<=i;e++)a.push(e);let o=await Promise.all(a.map(r=>Bi(e,{...t,pageNo:r,pageSize:n})));return Vi([r.groups,...o.map(e=>e.groups)].flat())}async function Ui(e,t){return(H(await e(`zeldaHttp.dashscopeModel./zelda/api/v1/modelCenter/listFoundationModels`,{input:{pageNo:1,pageSize:50,group:!0,model:t,querySampleCode:!0,queryGroupByModel:!0,queryWorkspaceLimit:!0,queryPrice:!0,queryQuota:!1,queryQpmInfo:!0,queryApplyStatus:!0,queryPermissions:!0,queryActivationStatus:!0}})).list??[])[0]??null}const Wi=[`name`,`key`,`default`,`tip`,`range`];function Gi(e){return e.map(e=>{let t={};for(let n of Wi)e[n]!==void 0&&(t[n]=e[n]);return t})}async function Ki(e,t){let n=H(await e(Ii,{modelId:t})).predictConfig;if(!n)return null;if(typeof n==`string`)try{let e=JSON.parse(n);return Array.isArray(e)?Gi(e):null}catch{return null}return Array.isArray(n)?Gi(n):null}function qi(e){return{read:()=>z(e),async write(t){let n=z(e);for(let[e,r]of Object.entries(t))r===void 0?delete n[e]:n[e]=e===`base_url`?Ne(String(r)):r;await vt(n,e)},async unset(t){let n=z(e);for(let e of t)delete n[e];await vt(n,e)},profiles:()=>bt(),activate:e=>Ct(e),validateActivation:e=>St(e),get path(){return L()}}}async function Ji(e,t){let{filePath:r,purpose:i=`fine-tune`,signal:a}=t,o=l(r),s=m(r),c=ne.toWeb(n(r)),u=await new Response(c).blob(),d=new FormData;d.append(`file`,u,s),d.append(`purpose`,i);let f=await e.requestJson({path:lr(),method:`POST`,body:d,signal:a});if(f.id)return{file_id:f.id,name:f.filename??s,size:f.bytes??o.size,purpose:f.purpose??i,gmt_create:f.created_at?(/* @__PURE__ */ new Date(f.created_at*1e3)).toISOString():void 0,request_id:f.request_id};let p=f.data?.failed_uploads;if(Array.isArray(p)&&p.length>0){let e=p[0]??{};throw new P(`Dataset upload failed${e.code?` [${e.code}]`:``}: ${e.message??`no message returned`}`,N.GENERAL,`Server reported failure for ${s}. Re-run with --verbose to see the raw response.`)}throw new P(`Dataset upload of ${s} returned no file_id (HTTP 200 with empty payload).`,N.GENERAL,`The platform accepted the request but did not allocate a file_id. Retry the upload; if it recurs, contact platform support with the request id.`)}async function Yi(e,t={}){let n=new URLSearchParams;t.pageNo!==void 0&&n.set(`page_no`,String(t.pageNo)),t.pageSize!==void 0&&n.set(`page_size`,String(t.pageSize)),t.purpose&&n.set(`purpose`,t.purpose);let r=ur(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Xi(e,t,n){return e.requestJson({path:dr(t),method:`GET`,signal:n})}async function Zi(e,t,n){let r=await e.request({path:dr(t),method:`DELETE`,signal:n});try{return await r.json()}catch{return{data:{deleted:!0,file_id:t}}}}const Qi=209715200,$i=314572800,ea=314572800,ta=2147483648;function na(e,t=Qi){if(!i(e))throw new P(`File not found: ${e}`,N.USAGE);let n=l(e);if(!n.isFile())throw new P(`Not a regular file: ${e}`,N.USAGE);if(n.size===0)throw new P(`File is empty: ${e}`,N.USAGE);if(n.size>t)throw new P(`File too large: ${(n.size/1048576).toFixed(1)}MB exceeds the ${(t/1048576).toFixed(0)}MB dataset upload cap.`,N.USAGE);return{bytes:n.size,ext:h(e).toLowerCase()}}function U(e,t,n,r={}){return{severity:e,code:t,message:n,...r}}function ra(e){if(e===void 0||e.trim()===``)return;let t=e.trim();if(t===`chatml`||t===`dpo`||t===`cpt`||t===`decision`||t===`tts`||t===`image`||t===`video`)return t;throw new P(`Unsupported --schema "${e}". Supported: chatml, dpo, cpt, decision, tts, image, video. / 不支持的 --schema;可选值:chatml、dpo、cpt、decision、tts、image、video。`,N.USAGE,`Omit --schema to auto-detect per record (state/questions → decision, chosen/rejected → DPO, text → CPT, wav_fn → TTS, img_path → image, first_frame_path/video_path → video, else ChatML). / 省略 --schema 可逐条自动识别。`)}function ia(e,t=50,n=100,r=10){if(e<=0)return[];if(e<=t+r)return Array.from({length:e},(e,t)=>t+1);let i=/* @__PURE__ */ new Set;for(let n=1;n<=Math.min(t,e);n++)i.add(n);for(let t=0;t<r;t++)i.add(e-t);let a=Math.max(1,Math.ceil(e/n));for(let n=t+1;n<=e-r;n+=a)i.add(n);return[...i].filter(t=>t>=1&&t<=e).sort((e,t)=>e-t)}const aa=/* @__PURE__ */ new Set([`system`,`user`,`assistant`,`tool`]),oa=.1;function sa(e,t,n,r){let i=[],a=t=>{if(!(t in e))return;let a=e[t];(typeof a!=`number`||a<oa||a>10)&&i.push(U(`error`,`INVALID_VIDEO_FPS`,`"${t}" must be a number between ${oa} and 10 (got ${JSON.stringify(a)}).`,{line:n,path:`${r}.${t}`}))};a(`fps`),a(`sample_fps`);let o=t?[`fps`,`video_start`,`video_end`]:[`sample_fps`],s=t?`frame-list`:`file-path`;for(let t of o)t in e&&i.push(U(`warning`,`VIDEO_PARAM_MODE_MISMATCH`,`"${t}" does not apply to ${s} video mode and will be ignored by the platform.`,{line:n,path:`${r}.${t}`}));for(let a of[`video_start`,`video_end`])a in e&&!t&&typeof e[a]!=`number`&&i.push(U(`error`,`INVALID_VIDEO_CLIP_TIME`,`"${a}" must be a number (seconds).`,{line:n,path:`${r}.${a}`}));return i}function ca(e,t,n){let r=[];if(typeof e==`string`)return r;if(!Array.isArray(e))return r.push(U(`error`,`INVALID_CONTENT`,`"content" must be a string or an array of content items (got ${typeof e}).`,{line:t,path:n})),r;if(e.length===0)return r.push(U(`error`,`EMPTY_CONTENT_ARRAY`,`"content" array must not be empty.`,{line:t,path:n})),r;for(let i=0;i<e.length;i++){let a=e[i],o=`${n}[${i}]`;if(typeof a!=`object`||!a||Array.isArray(a)){r.push(U(`error`,`INVALID_CONTENT_ITEM`,`Content item must be an object.`,{line:t,path:o}));continue}let s=a,c=`text`in s,l=`image`in s,u=`video`in s;if(!c&&!l&&!u){r.push(U(`error`,`CONTENT_ITEM_NO_KNOWN_FIELD`,`Content item must contain at least one of: "text", "image", "video".`,{line:t,path:o}));continue}if(c&&typeof s.text!=`string`&&r.push(U(`error`,`INVALID_CONTENT_TEXT`,`"text" in content item must be a string.`,{line:t,path:`${o}.text`})),l&&typeof s.image!=`string`&&r.push(U(`error`,`INVALID_CONTENT_IMAGE`,`"image" in content item must be a string.`,{line:t,path:`${o}.image`})),u){let e=s.video;if(typeof e!=`string`&&!Array.isArray(e))r.push(U(`error`,`INVALID_CONTENT_VIDEO`,`"video" in content item must be a string (file path) or an array of strings (frame list).`,{line:t,path:`${o}.video`}));else{if(Array.isArray(e))for(let n=0;n<e.length;n++)typeof e[n]!=`string`&&r.push(U(`error`,`INVALID_VIDEO_FRAME`,`Video frame list item at index ${n} must be a string.`,{line:t,path:`${o}.video[${n}]`}));r.push(...sa(s,Array.isArray(e),t,o))}}}return r}function la(e,t,n){let r=[];if(!Array.isArray(e))return r.push(U(`error`,`INVALID_TOOL_CALLS`,`"tool_calls" must be an array.`,{line:t,path:n})),r;for(let i=0;i<e.length;i++){let a=e[i],o=`${n}[${i}]`;if(typeof a!=`object`||!a||Array.isArray(a)){r.push(U(`error`,`INVALID_TOOL_CALL`,`tool_calls item must be an object.`,{line:t,path:o}));continue}let s=a;(typeof s.id!=`string`||s.id.length===0)&&r.push(U(`error`,`TOOL_CALL_MISSING_ID`,`tool_calls item must have a non-empty "id".`,{line:t,path:`${o}.id`})),s.type!==`function`&&r.push(U(`warning`,`TOOL_CALL_TYPE_NOT_FUNCTION`,`tool_calls item "type" should be "function" (got "${String(s.type)}").`,{line:t,path:`${o}.type`}));let c=s.function;if(typeof c!=`object`||!c||Array.isArray(c))r.push(U(`error`,`TOOL_CALL_MISSING_FUNCTION`,`tool_calls item must have a "function" object.`,{line:t,path:`${o}.function`}));else{let e=c;(typeof e.name!=`string`||e.name.length===0)&&r.push(U(`error`,`TOOL_CALL_FN_NO_NAME`,`tool_calls function must have a "name".`,{line:t,path:`${o}.function.name`})),typeof e.arguments!=`string`&&r.push(U(`error`,`TOOL_CALL_FN_ARGS_NOT_STRING`,`tool_calls function "arguments" must be a JSON string.`,{line:t,path:`${o}.function.arguments`}))}}return r}function ua(e,t,n){let r=[];if(typeof e!=`object`||!e||Array.isArray(e))return r.push(U(`error`,`MESSAGE_NOT_OBJECT`,`Message must be an object.`,{line:t,path:n})),r;let i=e,a=i.role;return(typeof a!=`string`||!aa.has(a))&&r.push(U(`error`,`INVALID_ROLE`,`Invalid role "${String(a)}". Expected one of: system, user, assistant, tool.`,{line:t,path:`${n}.role`})),a===`tool`&&(typeof i.tool_call_id!=`string`||i.tool_call_id.length===0)&&r.push(U(`error`,`TOOL_MISSING_CALL_ID`,`A "tool" role message must have a non-empty "tool_call_id".`,{line:t,path:`${n}.tool_call_id`})),`content`in i?r.push(...ca(i.content,t,`${n}.content`)):(a!==`assistant`||!(`tool_calls`in i))&&r.push(U(`error`,`MISSING_CONTENT`,`"content" field is missing.`,{line:t,path:`${n}.content`})),`tool_calls`in i&&r.push(...la(i.tool_calls,t,`${n}.tool_calls`)),`name`in i&&r.push(U(`error`,`UNSUPPORTED_FIELD_NAME`,`Field "name" is not supported by Bailian and must be removed when migrating from OpenAI/Azure.`,{line:t,path:`${n}.name`})),`weight`in i&&r.push(U(`error`,`UNSUPPORTED_FIELD_WEIGHT`,`Field "weight" is not supported by Bailian and must be removed when migrating from OpenAI/Azure. All assistant outputs are trained; per-line importance uses "loss_weight" (invite-only).`,{line:t,path:`${n}.weight`})),r}function da(e,t){let n=[],r=e.messages;if(!Array.isArray(r))return n.push(U(`error`,`MISSING_MESSAGES`,`Required field "messages" is missing or not an array.`,{line:t,path:`messages`})),n;if(r.length===0)return n.push(U(`error`,`EMPTY_MESSAGES`,`"messages" must contain at least one entry.`,{line:t,path:`messages`})),n;let i=!1,a,o=-1,s=/* @__PURE__ */ new Set,c=/* @__PURE__ */ new Set;for(let e=0;e<r.length;e++){let l=r[e],u=`messages[${e}]`;n.push(...ua(l,t,u));let d=l,f=d?.role;if(f===`system`&&(e!==0&&n.push(U(`warning`,`SYSTEM_NOT_FIRST`,`"system" message should appear at index 0; found at index ${e}.`,{line:t,path:`${u}.role`})),i=!0),f===`assistant`&&(o=e,d&&Array.isArray(d.tool_calls)))for(let e of d.tool_calls){let t=e;t&&typeof t.id==`string`&&s.add(t.id)}if(f===`tool`){let e=d?.tool_call_id;typeof e==`string`&&e.length>0&&c.add(e)}a===f&&(f===`user`||f===`assistant`)&&n.push(U(`warning`,`ROLE_NOT_ALTERNATING`,`Consecutive ${f} messages — user/assistant turns should typically alternate.`,{line:t,path:`${u}.role`})),typeof f==`string`&&(a=f)}r.some(e=>e.role===`user`)||n.push(U(`warning`,`NO_USER_ROLE`,`No "user" message found in this sample.`,{line:t,path:`messages`})),i&&r.length===1&&n.push(U(`warning`,`SYSTEM_ONLY`,`Sample only contains a "system" message.`,{line:t,path:`messages`}));for(let e of c)s.has(e)||n.push(U(`error`,`TOOL_CALL_ID_UNMATCHED`,`tool message references tool_call_id "${e}" which does not match any assistant tool_calls[].id.`,{line:t,path:`messages`}));for(let e of s)c.has(e)||n.push(U(`warning`,`TOOL_CALL_NO_RESPONSE`,`assistant tool_calls[].id "${e}" has no matching tool response message.`,{line:t,path:`messages`}));if(o>=0)for(let e=0;e<r.length;e++){if(e===o)continue;let i=r[e];if(i?.role!==`assistant`||i&&Array.isArray(i.tool_calls))continue;let a=i?.content;fa(a)&&n.push(U(`warning`,`THINK_TAG_NOT_LAST`,`Thinking tags (<think>…</think>) should only appear in the last assistant message (or an assistant message carrying tool_calls), found at messages[${e}].`,{line:t,path:`messages[${e}].content`}))}let l=(e,r)=>{(typeof e!=`number`||e<0||e>1)&&n.push(U(`error`,`INVALID_LOSS_WEIGHT`,`"loss_weight" must be a number between 0.0 and 1.0 (got ${JSON.stringify(e)}).`,{line:t,path:r}))};`loss_weight`in e&&l(e.loss_weight,`loss_weight`);for(let e=0;e<r.length;e++){let i=r[e];i&&`loss_weight`in i&&(l(i.loss_weight,`messages[${e}].loss_weight`),(i.role!==`assistant`||e!==o)&&n.push(U(`warning`,`LOSS_WEIGHT_PLACEMENT`,`"loss_weight" is only supported on the last assistant message; found at messages[${e}] (role "${String(i.role)}").`,{line:t,path:`messages[${e}].loss_weight`})))}return`weight`in e&&n.push(U(`error`,`UNSUPPORTED_FIELD_WEIGHT`,`Record-level field "weight" is not supported by Bailian and must be removed when migrating from OpenAI/Azure.`,{line:t,path:`weight`})),n}function fa(e){return typeof e==`string`?e.includes(`<think>`):Array.isArray(e)?e.some(e=>e&&typeof e==`object`&&`text`in e?typeof e.text==`string`&&e.text.includes(`<think>`):!1):!1}const pa={name:`chatml`,detect:()=>!0,inspect:da};function ma(e,t){let n=[];if(!(`text`in e))return n.push(U(`error`,`MISSING_TEXT`,`Required field "text" is missing.`,{line:t,path:`text`})),n;let r=e.text;return typeof r==`string`?(r.trim().length===0&&n.push(U(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})),n):(n.push(U(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`})),n)}const ha={name:`cpt`,detect:e=>`text`in e&&!(`messages`in e),inspect:ma};function ga(e,t){let n=da(e,t),r=e.messages;if(!Array.isArray(r)||r.length===0)return n;let i=(e,n)=>{if(!Array.isArray(e))return[];let r=[];for(let i=0;i<e.length;i++){let a=e[i];if(a&&typeof a==`object`)for(let e of[`image`,`video`])e in a&&r.push(U(`error`,`DPO_UNSUPPORTED_ELEMENT`,`DPO training data does not support ${e} inputs; found at ${n}.content[${i}].`,{line:t,path:`${n}.content[${i}].${e}`}))}return r};`tools`in e&&n.push(U(`error`,`DPO_UNSUPPORTED_ELEMENT`,`DPO training data does not support tool calling; remove the "tools" definition.`,{line:t,path:`tools`}));for(let e=0;e<r.length;e++){let a=r[e];if(!a)continue;let o=`messages[${e}]`;(a.role===`tool`||`tool_calls`in a)&&n.push(U(`error`,`DPO_UNSUPPORTED_ELEMENT`,`DPO training data does not support tool calling; found ${a.role===`tool`?`role "tool"`:`"tool_calls"`} at ${o}.`,{line:t,path:o})),n.push(...i(a.content,o))}let a=r[r.length-1];a&&a.role!==`user`&&n.push(U(`error`,`DPO_LAST_MSG_NOT_USER`,`DPO "messages" must end with a "user" message (the prompt for chosen/rejected). Got "${String(a.role)}" as the last message.`,{line:t,path:`messages[${r.length-1}].role`}));let o=`chosen`in e,s=`rejected`in e;if(o||n.push(U(`error`,`MISSING_CHOSEN`,`DPO record is missing the "chosen" preference.`,{line:t,path:`chosen`})),s||n.push(U(`error`,`MISSING_REJECTED`,`DPO record is missing the "rejected" preference.`,{line:t,path:`rejected`})),o){n.push(...ua(e.chosen,t,`chosen`)),n.push(...i(e.chosen?.content,`chosen`));let r=e.chosen?.role;typeof r==`string`&&r!==`assistant`&&n.push(U(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"chosen" role should be "assistant" (got "${r}").`,{line:t,path:`chosen.role`}))}if(s){n.push(...ua(e.rejected,t,`rejected`)),n.push(...i(e.rejected?.content,`rejected`));let r=e.rejected?.role;typeof r==`string`&&r!==`assistant`&&n.push(U(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"rejected" role should be "assistant" (got "${r}").`,{line:t,path:`rejected.role`}))}return n}const _a={name:`dpo`,detect:e=>`chosen`in e||`rejected`in e,inspect:ga},va=[`choice`,`noul`,`score`],ya=255,ba=2,xa=255,Sa=/* @__PURE__ */ new Set([`true`,`false`]);function W(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ca(e){return typeof e==`string`&&e.trim().length>0}function G(e,t,n,r){return{code:e,path:t,message:{"en-US":n,"zh-CN":r}}}function wa(e,t=`state`){return Ca(e)||Array.isArray(e)&&e.length>0||W(e)&&Object.keys(e).length>0?[]:[G(`DECISION_INVALID_STATE`,t,`"${t}" must be a non-empty string, object, or array.`,`"${t}" 必须是非空字符串、对象或数组。`)]}function Ta(e,t){let n=`${t}.criteria`;if(!W(e))return[G(`DECISION_INVALID_CHOICE_CRITERIA`,n,`"${n}" must be an option-to-description object.`,`"${n}" 必须是“选项名到描述”的对象。`)];let r=Object.keys(e).length;if(r<1||r>255)return[G(`DECISION_INVALID_CHOICE_CRITERIA`,n,`"${n}" must contain 1-255 options (got ${r}).`,`"${n}" 必须包含 1-255 个选项(当前 ${r} 个)。`)];for(let[t,r]of Object.entries(e))if(!Ca(t)||!Ca(r))return[G(`DECISION_INVALID_CHOICE_CRITERIA`,`${n}.${t}`,`Choice option names and descriptions in "${n}" must be non-empty strings.`,`"${n}" 中的选项名和描述必须是非空字符串。`)];return[]}function Ea(e,t){let n=`${t}.criteria`;return!Array.isArray(e)||e.some(e=>!Ca(e))?[G(`DECISION_INVALID_SCORE_CRITERIA`,n,`"${n}" must be an array of non-empty level descriptions, from low to high.`,`"${n}" 必须是从低到高排列、由非空等级描述组成的数组。`)]:e.length<2||e.length>255?[G(`DECISION_INVALID_SCORE_CRITERIA`,n,`"${n}" must contain 2-255 levels (got ${e.length}).`,`"${n}" 必须包含 2-255 个等级(当前 ${e.length} 个)。`)]:[]}function Da(e,t){if(e===void 0)return[];let n=`${t}.criteria`;return W(e)&&Object.entries(e).every(([e,t])=>Sa.has(e)&&typeof t==`string`)?[]:[G(`DECISION_INVALID_NOUL_CRITERIA`,n,`"${n}" is optional; when provided it must be an object with only "true" / "false" string descriptions.`,`"${n}" 为可选项;填写时必须是只包含 "true" / "false" 字符串描述的对象。`)]}function Oa(e,t){if(!W(e))return[G(`DECISION_QUESTION_NOT_OBJECT`,t,`"${t}" must be an object.`,`"${t}" 必须是对象。`)];let n=[];return e.instructions!==void 0&&typeof e.instructions!=`string`&&n.push(G(`DECISION_INVALID_INSTRUCTIONS`,`${t}.instructions`,`"${t}.instructions" must be a string when provided.`,`"${t}.instructions" 填写时必须是字符串。`)),e.type===`choice`?n.push(...Ta(e.criteria,t)):e.type===`noul`?n.push(...Da(e.criteria,t)):e.type===`score`?n.push(...Ea(e.criteria,t)):n.push(G(`DECISION_INVALID_QUESTION_TYPE`,`${t}.type`,`"${t}.type" must be choice, noul, or score.`,`"${t}.type" 必须是 choice、noul 或 score。`)),n}function ka(e,t=`questions`){return W(e)&&Object.keys(e).length>0?[]:[G(`DECISION_INVALID_QUESTIONS`,t,`"${t}" must be a non-empty object keyed by question ID.`,`"${t}" 必须是以问题 ID 为键的非空对象。`)]}function Aa(e,t=`questions`){return Ca(e)?[]:[G(`DECISION_INVALID_QUESTION_ID`,t,`Question IDs must be non-empty strings.`,`问题 ID 必须是非空字符串。`)]}function ja(e,t=`questions`){let n=ka(e,t);if(n.length>0)return n;let r=[];for(let[n,i]of Object.entries(e)){let e=Aa(n,t);if(e.length>0){r.push(...e);continue}r.push(...Oa(i,`${t}.${n}`))}return r}function K(e,t,n,r){return U(`error`,e,t,{line:n,path:r})}function Ma(e,t){return K(e.code,`${e.message[`en-US`]} / ${e.message[`zh-CN`]}`,t,e.path)}function Na(e,t,n,r){if(!W(e))return[K(`DECISION_INVALID_TARGET`,`"${r}" must be an object containing a complete probability distribution. / "${r}" 必须是包含完整概率分布的对象。`,n,r)];let i=Object.keys(e).sort(),a=[...t].sort();if(i.length!==a.length||i.some((e,t)=>e!==a[t]))return[K(`DECISION_INVALID_TARGET_KEYS`,`"${r}" must contain exactly these keys: ${a.join(`, `)}. / "${r}" 必须且只能包含这些键:${a.join(`, `)}。`,n,r)];let o=0;for(let t of a){let i=e[t];if(typeof i!=`number`||!Number.isFinite(i)||i<0||i>1)return[K(`DECISION_INVALID_TARGET_PROBABILITY`,`"${r}.${t}" must be a finite number in [0, 1]. / "${r}.${t}" 必须是 [0, 1] 范围内的有限数字。`,n,`${r}.${t}`)];o+=i}return Math.abs(o-1)>1e-6?[K(`DECISION_TARGET_SUM_NOT_ONE`,`Probabilities in "${r}" must sum to 1 (got ${o}). / "${r}" 中的概率之和必须为 1(当前为 ${o})。`,n,r)]:[]}function Pa(e,t,n){let r=Object.keys(e.criteria);return typeof e.label!=`string`||!r.includes(e.label)?[K(`DECISION_INVALID_CHOICE_LABEL`,`"${n}.label" must be one of: ${r.join(`, `)}. / "${n}.label" 必须是以下选项之一:${r.join(`, `)}。`,t,`${n}.label`)]:e.target===void 0?[]:Na(e.target,r,t,`${n}.target`)}function Fa(e,t,n){return typeof e.label==`boolean`?e.target===void 0?[]:Na(e.target,[`true`,`false`],t,`${n}.target`):[K(`DECISION_INVALID_NOUL_LABEL`,`"${n}.label" must be true or false. / "${n}.label" 必须是 true 或 false。`,t,`${n}.label`)]}function Ia(e,t,n){let r=e.criteria.length;if(typeof e.label!=`number`||!Number.isInteger(e.label)||e.label<0||e.label>=r)return[K(`DECISION_INVALID_SCORE_LABEL`,`"${n}.label" must be an integer from 0 to ${r-1}. / "${n}.label" 必须是 0 到 ${r-1} 之间的整数。`,t,`${n}.label`)];let i=Array.from({length:r},(e,t)=>String(t));return e.target===void 0?[]:Na(e.target,i,t,`${n}.target`)}function La(e,t){let n=wa(e.state).map(e=>Ma(e,t)),r=e.questions,i=ka(r);if(i.length>0)return n.push(...i.map(e=>Ma(e,t))),n;for(let[e,i]of Object.entries(r)){let r=Aa(e);if(r.length>0){n.push(...r.map(e=>Ma(e,t)));continue}let a=`questions.${e}`,o=Oa(i,a);if(o.length>0){n.push(...o.map(e=>Ma(e,t)));continue}let s=i;s.type===`choice`?n.push(...Pa(s,t,a)):s.type===`noul`?n.push(...Fa(s,t,a)):n.push(...Ia(s,t,a))}return n}const Ra={name:`decision`,detect:e=>!(`messages`in e)&&(`questions`in e||`state`in e),inspect:La};function za(e,t){let n=[];if(!(`wav_fn`in e))n.push(U(`error`,`MISSING_WAV_FN`,`Required field "wav_fn" is missing.`,{line:t,path:`wav_fn`}));else{let r=e.wav_fn;if(typeof r!=`string`)n.push(U(`error`,`INVALID_WAV_FN`,`"wav_fn" must be a string (got ${typeof r}).`,{line:t,path:`wav_fn`}));else if(r.trim().length===0)n.push(U(`error`,`EMPTY_WAV_FN`,`"wav_fn" must not be empty.`,{line:t,path:`wav_fn`}));else{r.startsWith(`train/`)||n.push(U(`error`,`WAV_FN_PREFIX`,`"wav_fn" must start with "train/" (got "${r}").`,{line:t,path:`wav_fn`}));let e=r.lastIndexOf(`.`),i=e>=0?r.slice(e).toLowerCase():``;i!==`.wav`&&n.push(U(`error`,`INVALID_AUDIO_EXT`,`"wav_fn" must reference a .wav file (got "${i||`(none)`}"). CosyVoice training audio must be WAV.`,{line:t,path:`wav_fn`}))}}if(!(`text`in e))n.push(U(`error`,`MISSING_TEXT`,`Required field "text" is missing.`,{line:t,path:`text`}));else{let r=e.text;typeof r==`string`?r.trim().length===0&&n.push(U(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})):n.push(U(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`}))}return n}const Ba={name:`tts`,detect:e=>`wav_fn`in e,inspect:za},Va=/* @__PURE__ */ new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.tif`,`.tiff`,`.webp`]);function Ha(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function Ua(e){return/^[\x20-\x7E]+$/.test(e)}function Wa(e,t){let n=[];if(!(`prompt`in e))n.push(U(`error`,`MISSING_PROMPT`,`Required field "prompt" is missing.`,{line:t,path:`prompt`}));else{let r=e.prompt;typeof r==`string`?r.trim().length===0&&n.push(U(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(U(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}if(!(`img_path`in e))n.push(U(`error`,`MISSING_IMG_PATH`,`Required field "img_path" is missing.`,{line:t,path:`img_path`}));else{let r=e.img_path;if(typeof r!=`string`)n.push(U(`error`,`INVALID_IMG_PATH`,`"img_path" must be a string (got ${typeof r}).`,{line:t,path:`img_path`}));else if(r.trim().length===0)n.push(U(`error`,`EMPTY_IMG_PATH`,`"img_path" must not be empty.`,{line:t,path:`img_path`}));else{let e=Ha(r);Va.has(e)||n.push(U(`warning`,`UNUSUAL_IMAGE_EXT`,`"img_path" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...Va].join(`, `)}.`,{line:t,path:`img_path`})),Ua(r)||n.push(U(`error`,`NON_ASCII_IMG_PATH`,`"img_path" must contain only ASCII characters (English filenames required). Got: "${r}".`,{line:t,path:`img_path`}))}}if(`input_img`in e){let r=e.input_img;if(typeof r!=`string`)n.push(U(`error`,`INVALID_INPUT_IMG`,`"input_img" must be a string (got ${typeof r}).`,{line:t,path:`input_img`}));else if(r.trim().length===0)n.push(U(`error`,`EMPTY_INPUT_IMG`,`"input_img" must not be empty.`,{line:t,path:`input_img`}));else{let e=Ha(r);Va.has(e)||n.push(U(`warning`,`UNUSUAL_INPUT_IMG_EXT`,`"input_img" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...Va].join(`, `)}.`,{line:t,path:`input_img`})),Ua(r)||n.push(U(`error`,`NON_ASCII_INPUT_IMG`,`"input_img" must contain only ASCII characters (English filenames required). Got: "${r}".`,{line:t,path:`input_img`}))}}return n}const Ga={name:`image`,detect:e=>`img_path`in e,inspect:Wa},Ka=/* @__PURE__ */ new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.webp`]),qa=/* @__PURE__ */ new Set([`.mp4`,`.mov`]);function Ja(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function Ya(e){return/^[\x20-\x7E]+$/.test(e)}function Xa(e,t,n,r,i,a){if(!(n in t)){r&&e.push(U(`error`,`MISSING_FIELD`,`Required field "${n}" is missing.`,{line:a,path:n}));return}let o=t[n];if(typeof o!=`string`){e.push(U(`error`,`INVALID_FIELD`,`"${n}" must be a string (got ${typeof o}).`,{line:a,path:n}));return}if(o.trim().length===0){e.push(U(`error`,`EMPTY_FIELD`,`"${n}" must not be empty.`,{line:a,path:n}));return}let s=Ja(o);i.has(s)||e.push(U(`warning`,`UNUSUAL_MEDIA_EXT`,`"${n}" points to a non-standard extension "${s||`(none)`}". Expected one of: ${[...i].join(`, `)}.`,{line:a,path:n})),Ya(o)||e.push(U(`error`,`NON_ASCII_PATH`,`"${n}" must contain only ASCII characters (English filenames required). Got: "${o}".`,{line:a,path:n}))}function Za(e,t){let n=[];if(!(`prompt`in e))n.push(U(`error`,`MISSING_PROMPT`,`Required field "prompt" is missing.`,{line:t,path:`prompt`}));else{let r=e.prompt;typeof r==`string`?r.trim().length===0&&n.push(U(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(U(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}return Xa(n,e,`first_frame_path`,!0,Ka,t),Xa(n,e,`last_frame_path`,!1,Ka,t),Xa(n,e,`video_path`,!1,qa,t),n}const Qa=[Ba,Ga,{name:`video`,detect:e=>`first_frame_path`in e||`video_path`in e,inspect:Za},Ra,_a,ha,pa];function $a(e,t){return t===void 0?Qa.find(t=>t.detect(e))??pa:Qa.find(e=>e.name===t)||pa}async function eo(e,t){let r=n(e,{encoding:`utf8`}),i=x({input:r,crlfDelay:1/0}),a=[],o=0,s=0;for await(let e of i){if(t?.aborted)break;o++;let n=e.trim();if(n.length===0){s++;continue}a.length>=20||(n[0]!==`{`||n[n.length-1]!==`}`)&&a.push(U(`error`,`MALFORMED_LINE`,`Line does not start with '{' and end with '}'. JSONL requires one minified JSON object per line — pretty-printed JSON or arrays are not accepted here.`,{line:o}))}return{totalLines:o,blankLines:s,issues:a}}async function to(e,t,r,i,a){let o=r?null:new Set(ia(t)),s=[],c=0,l=n(e,{encoding:`utf8`}),u=x({input:l,crlfDelay:1/0}),d=0;for await(let e of u){if(a?.aborted)break;if(d++,o&&!o.has(d))continue;let t=e.trim();if(t.length===0||(c++,s.length>=30))continue;let n;try{n=JSON.parse(t)}catch(e){s.push(U(`error`,`MALFORMED_JSON`,`JSON.parse failed: ${e.message}`,{line:d}));continue}s.push(...no(n,d,i))}return{sampled:c,issues:s}}function no(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return[U(`error`,`RECORD_NOT_OBJECT`,`Each line must be a JSON object, got ${Array.isArray(e)?`array`:typeof e}.`,{line:t})];let r=e;return $a(r,n).inspect(r,t)}const ro={format:`jsonl`,extensions:[`.jsonl`],async validate(e,t){let n=Date.now(),r=await eo(e,t.signal);if(r.totalLines===0||r.totalLines===r.blankLines)return{valid:!1,format:`jsonl`,filePath:e,errors:[U(`error`,`EMPTY_FILE`,`File contains no non-blank lines.`)],warnings:[],stats:{totalRecords:0,sampledRecords:0,durationMs:Date.now()-n}};if(r.issues.length>0)return{valid:!1,format:`jsonl`,filePath:e,errors:r.issues,warnings:[],stats:{totalRecords:r.totalLines-r.blankLines,sampledRecords:0,durationMs:Date.now()-n}};let i=await to(e,r.totalLines,!!t.fullValidate,t.schema,t.signal),a=i.issues.filter(e=>e.severity===`error`),o=i.issues.filter(e=>e.severity===`warning`);return{valid:a.length===0,format:`jsonl`,filePath:e,errors:a,warnings:o,stats:{totalRecords:r.totalLines-r.blankLines,sampledRecords:i.sampled,durationMs:Date.now()-n}}}};function io(e,t){return new Promise((n,r)=>{S.open(e,{lazyEntries:!0},(e,i)=>{if(e||!i){r(/* @__PURE__ */ Error(`Failed to open ZIP: ${e?.message??`unknown error`}`));return}i.readEntry(),i.on(`entry`,e=>{let r=e.fileName.replace(/\\/g,`/`);r===t||r.endsWith(`/${t}`)?n({entry:e,zipfile:i}):i.readEntry()}),i.on(`end`,()=>{i.close(),r(/* @__PURE__ */ Error(`Entry "${t}" not found in ZIP`))}),i.on(`error`,r)})})}function ao(e){return new Promise((t,n)=>{S.open(e,{lazyEntries:!0},(e,r)=>{if(e||!r){n(/* @__PURE__ */ Error(`Failed to open ZIP: ${e?.message??`unknown error`}`));return}let i=[];r.readEntry(),r.on(`entry`,e=>{i.push(e.fileName.replace(/\\/g,`/`)),r.readEntry()}),r.on(`end`,()=>{r.close(),t(i)}),r.on(`error`,n)})})}const oo=/^[a-zA-Z0-9_-]+$/;function so(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function co(e){if(e===`__MACOSX`||e.startsWith(`__MACOSX/`))return!0;let t=e.split(`/`).filter(e=>e.length>0).pop()??``;return t===`.DS_Store`||t.startsWith(`._`)}function lo(e){let t=[],n=/* @__PURE__ */ new Map;for(let r of e){if(r.endsWith(`/`)||co(r))continue;let e=r.split(`/`).filter(e=>e.length>0);for(let n of e){let e=so(n),i=n.slice(e.length);e.length>0&&!oo.test(e)&&t.length<10&&t.push(U(`error`,`INVALID_FILENAME_CHARSET`,`File/folder name "${n}" contains invalid characters. Only a-z, A-Z, 0-9, underscore (_), and hyphen (-) are allowed.`,{path:r})),i.length>0&&!/^\.[a-zA-Z0-9]+$/.test(i)&&t.length<10&&t.push(U(`error`,`INVALID_FILENAME_CHARSET`,`File extension "${i}" in "${n}" contains invalid characters.`,{path:r}))}let i=e[e.length-1]??``,a=so(i);if(a.length>120&&t.length<10&&t.push(U(`error`,`FILENAME_TOO_LONG`,`Filename "${i}" (without extension) exceeds 120 characters (got ${a.length}). Shorten the name and re-upload.`,{path:r})),a.length>0){let e=n.get(a);e===void 0?n.set(a,r):t.length<10&&t.push(U(`error`,`DUPLICATE_FILENAME`,`Filename "${i}" conflicts with "${e}" — names must be globally unique (ignoring extension) even across different folders.`,{path:r}))}}return t.length>=10&&t.push(U(`warning`,`FILENAME_ISSUES_TRUNCATED`,`More filename issues exist but reporting is capped at 10.`)),t}async function uo(e,t,n){let{entry:i,zipfile:a}=await io(e,t);return new Promise((e,t)=>{a.openReadStream(i,(i,o)=>{if(i||!o){a.close(),t(i??/* @__PURE__ */ Error(`Failed to open entry stream`));return}let s=r(n);re(o,s).then(()=>{a.close(),e()}).catch(e=>{a.close(),t(e)})})})}async function fo(e,t=100){let r=n(e,{encoding:`utf8`}),i=x({input:r,crlfDelay:1/0}),a=[],o=0;for await(let e of i){if(o++,a.length>=t)continue;let n=e.trim();if(n.length!==0)try{let e=JSON.parse(n);typeof e.wav_fn==`string`&&a.push(e.wav_fn),typeof e.img_path==`string`&&a.push(e.img_path),typeof e.input_img==`string`&&a.push(e.input_img),typeof e.first_frame_path==`string`&&a.push(e.first_frame_path),typeof e.last_frame_path==`string`&&a.push(e.last_frame_path),typeof e.video_path==`string`&&a.push(e.video_path),typeof e.image_fn==`string`&&a.push(e.image_fn),typeof e.video_fn==`string`&&a.push(e.video_fn)}catch{}}return{refs:a,totalLines:o}}const po={format:`zip`,extensions:[`.zip`],async validate(e,t){let n=Date.now(),r=[],i=[],o;try{o=await ao(e)}catch(t){return{valid:!1,format:`zip`,filePath:e,errors:[U(`error`,`ZIP_OPEN_FAILED`,`Could not open ZIP archive: ${t.message}`)],warnings:[],stats:{durationMs:Date.now()-n}}}if(o.length===0)return{valid:!1,format:`zip`,filePath:e,errors:[U(`error`,`ZIP_EMPTY`,`ZIP archive contains no entries.`)],warnings:[],stats:{durationMs:Date.now()-n}};let s=o.some(e=>e===`data.jsonl`),l=!s&&o.find(e=>e.endsWith(`/data.jsonl`));s||(l?r.push(U(`error`,`DATA_JSONL_NOT_AT_ROOT`,`"data.jsonl" must be at the ZIP root (found "${l}"). Re-package so that opening the ZIP shows data.jsonl directly, without a wrapping folder.`)):r.push(U(`error`,`MISSING_DATA_JSONL`,`ZIP archive must contain "data.jsonl" at the root. This file maps media files (e.g. .wav, .jpg) to their labels.`)));let u=lo(o);for(let e of u)e.severity===`error`?r.push(e):i.push(e);let d=t.schema===`image`,f=t.schema===`video`,m=o.some(e=>e===`train/`||e.startsWith(`train/`)),h=o.some(e=>e.toLowerCase().endsWith(`.wav`));if(!m&&!d&&!f&&h&&i.push(U(`warning`,`NO_TRAIN_DIR`,`No "train/" directory found in the ZIP. Media files are typically placed under "train/" and referenced as "train/xxx.wav" in data.jsonl.`)),d){let e=o.filter(e=>{if(e===`data.jsonl`||e.endsWith(`/data.jsonl`)||e.endsWith(`/`)||co(e))return!1;let t=e.lastIndexOf(`.`),n=t>=0?e.slice(t).toLowerCase():``;return Va.has(n)});e.length<25&&r.push(U(`error`,`INSUFFICIENT_IMAGES`,`Found ${e.length} image(s) in ZIP, but image generation fine-tuning requires at least 25 images (50+ recommended).`))}if(!s&&!l)return{valid:!1,format:`zip`,filePath:e,errors:r,warnings:i,stats:{totalRecords:o.length,durationMs:Date.now()-n}};let _=s?`data.jsonl`:o.find(e=>e.endsWith(`/data.jsonl`)),v=g(p(),`bl-zip-${ee(6).toString(`hex`)}`);a(v,{recursive:!0});let y=g(v,`data.jsonl`);try{await uo(e,_,y)}catch(t){return r.push(U(`error`,`EXTRACT_FAILED`,`Failed to extract "data.jsonl" from ZIP: ${t.message}`)),c(v,{recursive:!0,force:!0}),{valid:!1,format:`zip`,filePath:e,errors:r,warnings:i,stats:{durationMs:Date.now()-n}}}let b=await ro.validate(y,t);if(r.push(...b.errors),i.push(...b.warnings),b.valid){let{refs:e}=await fo(y),t=new Set(o),n=_.lastIndexOf(`/`),i=n>=0?_.slice(0,n+1):``,a=[];for(let n of e){let e=n.replace(/^\.\//,``);t.has(e)||t.has(i+e)||a.push(n)}if(a.length>0){let e=a.slice(0,5).join(`, `),t=a.length>5?` (and ${a.length-5} more)`:``;r.push(U(`error`,`DANGLING_MEDIA_REFS`,`${a.length} media file(s) referenced in data.jsonl not found in ZIP: ${e}${t}`))}}return c(v,{recursive:!0,force:!0}),{valid:r.length===0,format:`zip`,filePath:e,errors:r,warnings:i,stats:{totalRecords:b.stats.totalRecords??o.length,sampledRecords:b.stats.sampledRecords,durationMs:Date.now()-n}}}};async function mo(e){let t=h(e).toLowerCase();if(t===`.jsonl`)return ho(e);if(t===`.zip`)return go(e);throw new P(`Cannot inspect file with extension "${t}". Expected .jsonl or .zip.`,N.USAGE)}async function ho(e){let t=await vo(e);if(!t)throw new P(`JSONL file is empty or contains only blank lines: ${e}`,N.USAGE);let n=_o(t);return n===`unknown`?`text`:n}async function go(e){let t=await yo(e,`data.jsonl`);if(!t)throw new P(`ZIP archive does not contain "data.jsonl" or it is empty: ${e}`,N.USAGE,`Audio training data must be a ZIP with data.jsonl at the root and a train/ subfolder.`);let n=_o(t);if(n===`unknown`)throw new P(`ZIP data.jsonl does not match any supported media format (expected wav_fn / img_path / first_frame_path / video_path): ${e}`,N.USAGE,`ZIP archives are for audio/image/video training data. For text data, use a .jsonl file instead.`);return n}function _o(e){let t;try{t=JSON.parse(e)}catch{throw new P(`Failed to parse first JSON record for modality detection: ${e.slice(0,120)}`,N.USAGE)}if(typeof t!=`object`||!t||Array.isArray(t))throw new P(`Expected a JSON object as the first record, got ${Array.isArray(t)?`array`:typeof t}.`,N.USAGE);return`wav_fn`in t?`audio`:`img_path`in t?`input_img`in t?`image-i2i`:`image`:`first_frame_path`in t||`video_path`in t?`last_frame_path`in t?`video-kf2v`:`video`:`unknown`}function vo(e){return new Promise((t,r)=>{let i=n(e,{encoding:`utf8`}),a=x({input:i,crlfDelay:1/0}),o=!1;a.on(`line`,e=>{if(o)return;let n=e.trim();n.length!==0&&(o=!0,a.close(),i.destroy(),t(n))}),a.on(`close`,()=>{o||t(null)}),a.on(`error`,r),i.on(`error`,r)})}function yo(e,t){return io(e,t).then(({entry:e,zipfile:n})=>new Promise((r,i)=>{n.openReadStream(e,(e,a)=>{if(e||!a){n.close(),i(new P(`Failed to read "${t}" from ZIP: ${e?.message}`,N.USAGE));return}let o=x({input:a,crlfDelay:1/0}),s=!1;o.on(`line`,e=>{if(s)return;let t=e.trim();t.length!==0&&(s=!0,o.close(),a.destroy(),n.close(),r(t))}),o.on(`close`,()=>{s||(n.close(),r(null))}),o.on(`error`,e=>{n.close(),i(e)})})})).catch(e=>{if(e instanceof Error&&e.message.includes(`not found in ZIP`))return null;throw e})}const bo=[ro,po];function xo(e){let t=h(e).toLowerCase(),n=bo.find(e=>e.extensions.includes(t));if(!n){let e=bo.flatMap(e=>e.extensions).join(`, `);throw new P(`Unsupported dataset format "${t||`(none)`}". Supported: ${e}`,N.USAGE,`Convert your data to one of the supported formats and re-run.`)}return n}function So(e){bo.some(t=>t.format===e.format)||bo.push(e)}async function q(e,t={}){let{bytes:n}=na(e,t.maxBytes??209715200),r=await xo(e).validate(e,t);return r.stats.bytes===void 0&&(r.stats.bytes=n),r}function Co(){return bo.map(e=>({format:e.format,extensions:[...e.extensions]}))}function wo(e){let t=[];e.line!==void 0&&t.push(`line ${e.line}`),e.path&&t.push(e.path);let n=t.length?` [${t.join(` · `)}]`:``;return` ${e.severity.toUpperCase()} ${e.code}${n}: ${e.message}`}const To=`decision-model-preview`,Eo=[`cn-beijing`,`ap-southeast-1`],Do=`cn-beijing`,Oo=[`label`,`target`];function ko(e){if(!W(e))return e;let t=e.questions;return W(t)&&typeof t.type!=`string`?t:e}function Ao(e){if(!W(e))return e;let t={};for(let[n,r]of Object.entries(e)){if(!W(r)){t[n]=r;continue}let e={...r};for(let t of Oo)delete e[t];t[n]=e}return t}async function jo(e,t,n){return e.requestJson({path:fr(),method:`POST`,body:t,signal:n})}async function Mo(e,t={}){let n=new URLSearchParams;t.pageNo!==void 0&&n.set(`page_no`,String(t.pageNo)),t.pageSize!==void 0&&n.set(`page_size`,String(t.pageSize)),t.status&&n.set(`status`,t.status),t.model&&n.set(`model`,t.model);let r=fr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function No(e,t,n){return e.requestJson({path:pr(t),method:`GET`,signal:n})}async function Po(e,t,n){return e.requestJson({path:mr(t),method:`POST`,signal:n})}async function Fo(e,t,n){return e.requestJson({path:pr(t),method:`DELETE`,signal:n})}async function Io(e,t,n={}){let r=new URLSearchParams;n.pageNo!==void 0&&r.set(`page_no`,String(n.pageNo)),n.pageSize!==void 0&&r.set(`page_size`,String(n.pageSize));let i=hr(t),a=r.toString()?`${i}?${r.toString()}`:i;return e.requestJson({path:a,method:`GET`,signal:n.signal})}async function Lo(e,t,n){return e.requestJson({path:gr(t),method:`GET`,signal:n})}async function Ro(e,t,n,r,i){let a=new URLSearchParams;return a.set(`model_name`,r),e.requestJson({path:`${_r(t,n)}?${a.toString()}`,method:`GET`,signal:i})}function zo(e,t){let n=new URLSearchParams;for(let[e,r]of Object.entries(t))r!==void 0&&r!==``&&n.set(e,String(r));return n.toString()?`${e}?${n.toString()}`:e}async function Bo(e,t={}){return e.requestJson({path:zo(vr(),{model:t.model,lang:t.lang}),method:`GET`,signal:t.signal})}async function Vo(e,t,n){return e.requestJson({path:yr(),method:`POST`,body:t,signal:n})}async function Ho(e,t={}){let n=zo(yr(),{status:t.status,model:t.model,template_id:t.templateId,quant_spec:t.quantSpec,quant_method:t.quantMethod,start_time:t.startTime,end_time:t.endTime,search_key:t.searchKey,select_key:t.selectKey,sort_order:t.sortOrder,page_no:t.pageNo,page_size:t.pageSize});return e.requestJson({path:n,method:`GET`,signal:t.signal})}async function Uo(e,t,n){return e.requestJson({path:br(t),method:`GET`,signal:n})}async function Wo(e,t,n={}){return e.requestJson({path:zo(Sr(t),{offset:n.offset,line:n.line}),method:`GET`,signal:n.signal})}async function Go(e,t,n){return e.requestJson({path:xr(t),method:`POST`,signal:n})}async function Ko(e,t,n){return e.requestJson({path:br(t),method:`DELETE`,signal:n})}const qo={sft:{server:`sft`,method:`sft`,variant:`full`},"sft-lora":{server:`efficient_sft`,method:`sft`,variant:`lora`},dpo:{server:`dpo_full`,method:`dpo`,variant:`full`},"dpo-lora":{server:`dpo_lora`,method:`dpo`,variant:`lora`},cpt:{server:`cpt`,method:`cpt`,variant:`full`}},Jo=Object.keys(qo),Yo=`sft-lora`;function Xo(e){return e in qo}function Zo(e){let{method:t,variant:n}=qo[e];return{method:t,variant:n}}function Qo(e,t){if(!e)return!1;let{method:n,variant:r}=qo[t];if(e.supports?.[n]!==!0)return!1;let i=e.trainingTypes?.[n];return Array.isArray(i)&&i.includes(r)}function $o(e){return e?Jo.filter(t=>Qo(e,t)):[]}async function es(e,t){return await zi(Cn(e),t)}const ts=`INSUFFICIENT_SAMPLES`;function ns(e){let{recordCount:t,batchSize:n}=e;return t>n?{ok:!0}:{ok:!1,issue:{severity:`error`,code:ts,message:`Training dataset has ${t} sample(s), which is not greater than batch_size (${n}).`},hint:[`The platform requires the number of training samples to exceed batch_size.`,`Options:`,` • add more data (recommended: comfortably more than batch_size, since the`,` platform also holds back a default 0.9 train split),`,` • lower --batch-size (server clamps to a minimum of 8).`].join(`
13
+ `)}}function rs(e){let t={};if(t.n_epochs=e.nEpochs===void 0?3:e.nEpochs,e.learningRate!==void 0&&(t.learning_rate=e.learningRate),e.maxLength!==void 0&&(t.max_length=e.maxLength),e.batchSize!==void 0){let n=e.batchSize;n<8&&(n=8),n>1024&&(n=1024),t.batch_size=n}return t}function is(e,t,n){return{clientTrainingType:e,serverTrainingType:t,acceptedExtensions:[`.jsonl`],async validate(e,t,r){return q(e,{...r,schema:n})},resolveHyperParameters(e,t){return rs(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}}const as=is(`sft`,`sft`,`chatml`),os={lm_max_epoch:60,lm_step:5,lm_num:3,lm_batch_size:1e3,fm_max_epoch:100,fm_step:10,fm_num:3,fm_batch_size:2e3},ss={learning_rate:`3e-5`,max_steps:800,eval_steps:200,max_token_length:`1k`,gradient_clip:.5,weight_decay:.02,max_pixels:`2k`,val_img_size:`2k`,generation_type:`t2i`,lora_rank:32,save_total_limit:10,split:.9},cs={...ss,max_pixels:`1k`,val_img_size:`1k`,generation_type:`i2i`},ls={n_epochs:50,learning_rate:`2e-5`,split:.5,max_split_val_dataset_sample:5,eval_epochs:20,save_total_limit:10,lora_rank:32,lora_alpha:32};function us(e){return e===`image`||e===`image-i2i`}function ds(e){return e===`video`||e===`video-kf2v`}function fs(e){return typeof e==`string`&&/wan2\.5/i.test(e)}function ps(e){return typeof e==`string`&&/wan2\.7/i.test(e)}const ms=[as,{clientTrainingType:`sft-lora`,serverTrainingType:`efficient_sft`,acceptedExtensions:[`.jsonl`,`.zip`],async validate(e,t,n){if(t===`audio`)return q(e,{...n,schema:`tts`});if(us(t))return q(e,{...n,schema:`image`,maxBytes:ta});if(ds(t)){let r=await q(e,{...n,schema:`video`,maxBytes:ta});if(typeof n.model==`string`&&n.model.length>0){let e=/kf2v/i.test(n.model),i=t===`video-kf2v`;e&&!i?r.errors.push(U(`error`,`KF2V_DATA_MISMATCH`,`Model "${n.model}" is a first+last-frame (kf2v) model but the data has no "last_frame_path". kf2v training data must include a last frame per record.`)):!e&&i&&r.warnings.push(U(`warning`,`I2V_LAST_FRAME_IGNORED`,`Model "${n.model}" is a first-frame (i2v) model but the data includes "last_frame_path"; the last frame will be ignored during training.`))}return r.valid=r.errors.length===0,r}return q(e,{...n,schema:`chatml`})},resolveHyperParameters(e,t){if(e===`audio`)return{...os};if(us(e)){let n={...e===`image-i2i`?cs:ss};return t.learningRate!==void 0&&(n.learning_rate=t.learningRate),n}if(ds(e)){let e=t.model??t.baseModel,n={...ls,batch_size:ps(e)?1:4,max_pixels:ps(e)?102400:fs(e)?36864:262144};return t.nEpochs!==void 0&&(n.n_epochs=t.nEpochs),t.batchSize!==void 0&&(n.batch_size=t.batchSize),t.learningRate!==void 0&&(n.learning_rate=t.learningRate),n}return rs(t)},shouldSkipGate(e,t){return!(t!==`audio`&&!us(t)&&!ds(t)||e!==`batch_size`)},shouldSkipCapabilityCheck(e){return e===`audio`||us(e)||ds(e)}},is(`dpo`,`dpo_full`,`dpo`),is(`dpo-lora`,`dpo_lora`,`dpo`),{clientTrainingType:`cpt`,serverTrainingType:`cpt`,acceptedExtensions:[`.jsonl`],async validate(e,t,n){return q(e,{...n,schema:`cpt`,maxBytes:$i})},resolveHyperParameters(e,t){return rs(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}];function hs(e){let t=ms.find(t=>t.clientTrainingType===e);if(!t){let t=ms.map(e=>e.clientTrainingType).join(`, `);throw new P(`Unknown training type "${e}".`,N.USAGE,`Supported training types: ${t}.`)}return t}function gs(){return ms.map(e=>e.clientTrainingType)}const _s=`zeldaEasy.broadscope-platform.modelCenter.getModelPrice`,vs=`zeldaEasy.broadscope-platform.modelInstance.calculateDatasetsTotalTokens`,ys=`zeldaEasy.broadscope-platform.modelInstance.estimateFinetuneTokens`;async function bs(e,t){return H(await e.console(_s,{query:{type:0,modelId:t}}))}async function xs(e,t,n){return H(await e.console(vs,{input:{trainDatasetIds:t,hyperParams:n}}))}async function Ss(e,t,n,r){let i=JSON.stringify({useDefault:!1,userDefinedObj:{batch_size:16,eval_steps:50,learning_rate:`7e-6`,lr_scheduler_type:`linear`,max_length:8192,n_epochs:r,split:.9,save_total_limit:`3`,resume_from_checkpoint:!1,save_strategy:`epoch`},useQwenMixedStrategy:!1});return H(await e.console(ys,{input:{trainingType:`cpt`,instanceName:`${t}_cli_estimate`,algorithmType:100,bizType:100,trainDatasetIds:n,hyperParams:i,bailianTrainModel:t,validationDatasetIds:``,jobName:`${t}_cli_estimate`,priority:`L0`}}))}function Cs(e){return e?{"x-acs-req-uuid":e,"X-DashScope-RequestId":e}:void 0}async function ws(e,t,n){return e.requestJson({path:Cr(),method:`POST`,body:t,signal:n})}async function Ts(e,t={}){let n=new URLSearchParams;t.pageNo!==void 0&&n.set(`page_no`,String(t.pageNo)),t.pageSize!==void 0&&n.set(`page_size`,String(t.pageSize)),t.plan!==void 0&&n.set(`plan`,t.plan);let r=Cr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Es(e,t,n){return e.requestJson({path:wr(t),method:`GET`,signal:n})}async function Ds(e,t,n={}){let r=new URLSearchParams;n.pageNo!==void 0&&r.set(`page_no`,String(n.pageNo)),n.pageSize!==void 0&&r.set(`page_size`,String(n.pageSize)),n.includeDeleted!==void 0&&r.set(`include_deleted`,String(n.includeDeleted)),n.statuses!==void 0&&r.set(`statuses`,n.statuses.join(`,`)),n.chargeTypes!==void 0&&r.set(`charge_types`,n.chargeTypes.join(`,`));let i=Tr(t),a=r.toString()?`${i}?${r.toString()}`:i;return e.requestJson({path:a,method:`GET`,signal:n.signal})}async function Os(e,t,n,r){return e.requestJson({path:Er(t,n),method:`GET`,signal:r})}async function ks(e,t,n,r){return e.requestJson({path:Ar(t,n),method:`GET`,signal:r})}async function As(e,t,n,r={}){return e.requestJson({path:Tr(t),method:`POST`,body:n,headers:Cs(r.requestId),signal:r.signal})}async function js(e,t,n,r,i={}){return e.requestJson({path:Dr(t,n),method:`PUT`,body:r,headers:Cs(i.requestId),signal:i.signal})}async function Ms(e,t,n,r,i={}){return e.requestJson({path:Or(t,n),method:`PUT`,body:r,headers:Cs(i.requestId),signal:i.signal})}async function Ns(e,t,n,r={}){let i=Er(t,n),a=new URLSearchParams;return r.reason!==void 0&&a.set(`reason`,r.reason),e.requestJson({path:a.toString()?`${i}?${a.toString()}`:i,method:`DELETE`,headers:Cs(r.requestId),signal:r.signal})}async function Ps(e,t,n,r){return e.requestJson({path:kr(t),method:`PUT`,body:{overflow_strategy:n},signal:r})}async function Fs(e,t,n){return e.requestJson({path:wr(t),method:`DELETE`,signal:n})}async function Is(e,t={}){let n=new URLSearchParams;t.pageNo!==void 0&&n.set(`page_no`,String(t.pageNo)),t.pageSize!==void 0&&n.set(`page_size`,String(t.pageSize)),t.version&&n.set(`version`,t.version),t.modelSource&&n.set(`model_source`,t.modelSource);let r=Nr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Ls(e,t,n,r,i){return e.requestJson({path:jr(t),method:`PUT`,body:n,headers:Cs(i),signal:r})}async function Rs(e,t,n,r){return e.requestJson({path:Mr(t),method:`PUT`,body:n,signal:r})}const J={LORA:`lora`,PTU:`ptu`,MU:`mu`},zs=J.LORA;function Bs(e){return e===`audio`?J.MU:zs}const Vs={POST_PAY:`POST_PAY`,PRE_PAY:`PRE_PAY`},Hs=Vs.POST_PAY,Y={POST_PAID:`post_paid`,PRE_PAID:`pre_paid`};function Us(e,t){if(t||e.inputTpm!==void 0||e.outputTpm!==void 0){if(e.inputTpm===void 0||e.outputTpm===void 0)return`--input-tpm and --output-tpm must be provided together.
14
14
  必须同时提供 --input-tpm 和 --output-tpm。`;if(!Number.isSafeInteger(e.inputTpm)||e.inputTpm<0)return`--input-tpm must be a non-negative safe integer in kTPM.
15
15
  --input-tpm 必须是非负安全整数,单位为 kTPM。`;if(!Number.isSafeInteger(e.outputTpm)||e.outputTpm<0)return`--output-tpm must be a non-negative safe integer in kTPM.
16
- --output-tpm 必须是非负安全整数,单位为 kTPM。`}}function $o(e){let t={};return e.inputTpm!==void 0&&(t.input_tpm=e.inputTpm),e.outputTpm!==void 0&&(t.output_tpm=e.outputTpm),t}function es(e){return e.duration!==void 0||e.autoRenewal!==void 0||e.autoRenewalDuration!==void 0||e.autoRenewalCycle!==void 0}function ts(e,t){if(t||es(e)){if(e.duration===void 0||!Number.isSafeInteger(e.duration)||e.duration<=0)return`--duration must be a positive safe integer in days.
16
+ --output-tpm 必须是非负安全整数,单位为 kTPM。`}}function Ws(e){let t={};return e.inputTpm!==void 0&&(t.input_tpm=e.inputTpm),e.outputTpm!==void 0&&(t.output_tpm=e.outputTpm),t}function Gs(e){return e.duration!==void 0||e.autoRenewal!==void 0||e.autoRenewalDuration!==void 0||e.autoRenewalCycle!==void 0}function Ks(e,t){if(t||Gs(e)){if(e.duration===void 0||!Number.isSafeInteger(e.duration)||e.duration<=0)return`--duration must be a positive safe integer in days.
17
17
  --duration 必须是正安全整数,单位为天。`;if(typeof e.autoRenewal!=`boolean`)return`--auto-renewal must explicitly be true or false.
18
18
  必须显式指定 --auto-renewal 为 true 或 false。`;if((e.autoRenewal||e.autoRenewalDuration!==void 0)&&(e.autoRenewalDuration===void 0||!Number.isSafeInteger(e.autoRenewalDuration)||e.autoRenewalDuration<=0))return`--auto-renewal-duration must be a positive safe integer in days; required when --auto-renewal=true.
19
19
  --auto-renewal-duration 必须是正安全整数(天);开启自动续费时必填。`;if(e.autoRenewalCycle!==void 0&&(typeof e.autoRenewalCycle!=`string`||e.autoRenewalCycle.trim()===``))return`--auto-renewal-cycle must be a non-empty string.
20
- --auto-renewal-cycle 必须是非空字符串。`}}function ns(e){if(!es(e))return;let t={};return e.duration!==void 0&&(t.duration=e.duration),e.autoRenewal!==void 0&&(t.auto_renewal=e.autoRenewal),e.autoRenewalDuration!==void 0&&(t.auto_renewal_duration=e.autoRenewalDuration),e.autoRenewalCycle!==void 0&&(t.auto_renewal_cycle=e.autoRenewalCycle),t}const rs={name:K.LORA,validateFlags(){},async resolve(){return{body:{capacity:1}}}},is={name:K.PTU,validateFlags(e){return e.capacity!==void 0||e.deploySpec!==void 0||e.billingMethod!==void 0?`--capacity, --deploy-spec and --billing-method are not supported for plan=ptu; use reservation capacity and --charge-type.
21
- plan=ptu 不支持 --capacity、--deploy-spec 和 --billing-method;请使用预留容量参数和 --charge-type。`:e.thinkingOutputTpm===void 0?e.chargeType!==q.PRE_PAID&&e.chargeType!==q.POST_PAID?`--charge-type is required for plan=ptu and must be pre_paid or post_paid.
20
+ --auto-renewal-cycle 必须是非空字符串。`}}function qs(e){if(!Gs(e))return;let t={};return e.duration!==void 0&&(t.duration=e.duration),e.autoRenewal!==void 0&&(t.auto_renewal=e.autoRenewal),e.autoRenewalDuration!==void 0&&(t.auto_renewal_duration=e.autoRenewalDuration),e.autoRenewalCycle!==void 0&&(t.auto_renewal_cycle=e.autoRenewalCycle),t}const Js={name:J.LORA,validateFlags(){},async resolve(){return{body:{capacity:1}}}},Ys={name:J.PTU,validateFlags(e){return e.capacity!==void 0||e.deploySpec!==void 0||e.billingMethod!==void 0?`--capacity, --deploy-spec and --billing-method are not supported for plan=ptu; use reservation capacity and --charge-type.
21
+ plan=ptu 不支持 --capacity、--deploy-spec 和 --billing-method;请使用预留容量参数和 --charge-type。`:e.thinkingOutputTpm===void 0?e.chargeType!==Y.PRE_PAID&&e.chargeType!==Y.POST_PAID?`--charge-type is required for plan=ptu and must be pre_paid or post_paid.
22
22
  plan=ptu 必须提供 --charge-type,且只能为 pre_paid 或 post_paid。`:e.serviceTier!==void 0&&e.serviceTier!==`ptu_fast`&&e.serviceTier!==`ptu_default`?`--service-tier must be ptu_fast or ptu_default.
23
- --service-tier 只能为 ptu_fast 或 ptu_default。`:e.serviceTier===`ptu_default`&&e.chargeType===q.POST_PAID?`ptu_default only supports pre_paid.
24
- ptu_default 仅支持 pre_paid。`:e.chargeType===q.POST_PAID&&es(e)?`Prepaid flags are not allowed with --charge-type post_paid.
25
- --charge-type post_paid 不允许提供预付费参数。`:Qo(e,!0)??ts(e,e.chargeType===q.PRE_PAID):`--thinking-output-tpm is not supported by current reservation models.
26
- 当前吞吐预留模型不支持 --thinking-output-tpm。`},async resolve(e){let t={charge_type:e.flags.chargeType,ptu_capacity:$o(e.flags)};e.flags.serviceTier!==void 0&&(t.service_tier=e.flags.serviceTier),e.flags.suffix!==void 0&&(t.suffix=e.flags.suffix);let n=ns(e.flags);return n!==void 0&&(t.pre_paid_info=n),{body:t}}},as={name:K.MU,validateFlags(){},async resolve(e){let t=e.flags.billingMethod||Zo,n=e.flags.deploySpec,r=e.flags.capacity;if(!e.dryRun&&!n){let i=()=>new P(`No mu-plan template found for model "${e.model}". Run \`${e.binName} deploy models --source base\` to inspect available models, or pass --deploy-spec explicitly.`,N.USAGE);try{let a=await Go(e.client,{modelSource:`base`,pageSize:100,version:`v1.0`}),o=((a.output??a.data)?.models??[]).find(t=>t.model_name===e.model)?.plans?.find(({plan:e})=>e===K.MU)?.templates??[];if(o.length===0)throw i();let s=t===Xo.POST_PAY?q.POST_PAID:q.PRE_PAID,c=o.find(e=>e.charge_type===s)??o[0];if(!c?.deploy_spec&&!c?.template_id)throw i();n=c.deploy_spec??c.template_id,r===void 0&&(r=c.roles?.unified?.capacity_unit_per_instance??1)}catch(e){throw e instanceof P?e:new P(`Failed to auto-pick template for plan=mu: ${e.message}. Pass --deploy-spec explicitly.`,N.USAGE)}}let i={capacity:r??1,billing_method:t};return n&&(i.deploy_spec=n),{body:i}}},os={[K.LORA]:rs,[K.PTU]:is,[K.MU]:as};function ss(e){let t=os[e];if(!t)throw new P(`Unsupported plan "${e}". Supported plans: ${Object.keys(os).join(`, `)}.`,N.USAGE);return t}const cs=`zeldaEasy.broadscope-platform.modelInstance.startModelService`,ls=`zeldaEasy.broadscope-platform.modelInstance.stopModelService`,us=`zeldaEasy.broadscope-platform.modelInstance.listIndependentDeployedModel`;async function ds(e,t){return U(await e.console(cs,{input:{modelServiceId:t}}))}async function fs(e,t){return U(await e.console(ls,{input:{modelServiceId:t}}))}async function ps(e){let t=[],n=1;for(;;){let r=U(await e.console(us,{input:{pageNo:n,pageSize:50}})),i=r.records??[];t.push(...i);let a=r.pageCount??1;if(n>=a||i.length===0)break;n++}return t}function ms(e,t){return e.find(e=>e.modelServiceId===t||e.deployedModel===t||e.deployed_model===t)}const hs=`speech-biasing`;function gs(e,t){return{model:hs,input:{action:e,...t}}}async function _s(e,t,n,r){return e.requestJson({path:qn(),method:`POST`,body:gs(t,n),signal:r})}function vs(e,t,n){return _s(e,`create_vocabulary`,{target_model:t.targetModel,prefix:t.prefix,vocabulary:t.vocabulary},n)}function ys(e,t={},n){let r={};return t.prefix!==void 0&&(r.prefix=t.prefix),t.pageIndex!==void 0&&(r.page_index=t.pageIndex),t.pageSize!==void 0&&(r.page_size=t.pageSize),_s(e,`list_vocabulary`,r,n)}function bs(e,t,n){return _s(e,`query_vocabulary`,{vocabulary_id:t},n)}function xs(e,t,n,r){return _s(e,`update_vocabulary`,{vocabulary_id:t,vocabulary:n},r)}function Ss(e,t,n){return _s(e,`delete_vocabulary`,{vocabulary_id:t},n)}function Cs(e,t){try{return JSON.parse(e)}catch(e){throw new F(`${t} is not valid JSON — ${e.message}`)}}function ws(e){let t=Cs(e,`--vocabulary`);if(!t||typeof t!=`object`||Array.isArray(t))throw new F(`--vocabulary must decode to a JSON object of word→weight.`);for(let[e,n]of Object.entries(t))if(typeof n!=`number`||!Number.isFinite(n))throw new F(`--vocabulary weight for "${e}" must be a number.`);return t}function Ts(e,t){let n=`--words`,r=Cs(e,n),i;if(Array.isArray(r))i=r.map((e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw new F(`${n} entry #${t} must be an object with string "text" and number "weight".`);let r=e;if(typeof r.text!=`string`||typeof r.weight!=`number`)throw new F(`${n} entry #${t} must have a string "text" and a number "weight".`);if(!Number.isFinite(r.weight))throw new F(`${n} entry #${t} weight must be a finite number.`);return{text:r.text,weight:r.weight,...typeof r.lang==`string`?{lang:r.lang}:{}}});else if(!r||typeof r!=`object`)throw new F(`${n} must decode to a JSON object or array.`);else{i=[];for(let[e,a]of Object.entries(r)){if(typeof a!=`number`||!Number.isFinite(a))throw new F(`${n} weight for "${e}" must be a number.`);i.push({text:e,weight:a,...t?{lang:t}:{}})}}if(i.length===0)throw new F(`${n} must contain at least one hot word.`);return i}const Es={output:{type:`string`,valueHint:`<format>`,description:{"en-US":`Output format: text, json`,"zh-CN":`输出格式:text、json`}},timeout:{type:`number`,valueHint:`<seconds>`,description:{"en-US":`Request timeout`,"zh-CN":`请求超时时间`}},quiet:{type:`switch`,description:{"en-US":`Suppress non-essential output`,"zh-CN":`隐藏非必要输出`}},verbose:{type:`switch`,description:{"en-US":`Print HTTP request/response details`,"zh-CN":`打印 HTTP 请求和响应详情`}},dryRun:{type:`switch`,description:{"en-US":`Dry run mode`,"zh-CN":`仅预览,不实际执行`}},config:{type:`string`,valueHint:`<name>`,description:{"en-US":`Use a config profile for this command`,"zh-CN":`为当前命令使用指定配置 Profile`}},help:{type:`switch`,description:{"en-US":`Show help`,"zh-CN":`显示帮助信息`}},version:{type:`switch`,description:{"en-US":`Print version`,"zh-CN":`显示版本信息`}}},Ds={concurrent:{type:`number`,valueHint:`<n>`,description:{"en-US":`Run N parallel requests (default: 1)`,"zh-CN":`并行发送 N 个请求(默认:1)`}}},Os={async:{type:`switch`,description:{"en-US":`Return async task id without waiting`,"zh-CN":`直接返回异步任务 ID,不等待任务完成`}}},ks={apiKey:{type:`string`,valueHint:`<key>`,description:{"en-US":`API key`,"zh-CN":`API Key`}},baseUrl:{type:`string`,valueHint:`<url>`,description:{"en-US":`API base URL`,"zh-CN":`API Base URL`}}},As={consoleRegion:{type:`string`,valueHint:`<region>`,description:{"en-US":`Console gateway region (e.g. cn-beijing, ap-southeast-1)`,"zh-CN":`控制台网关地域(例如 cn-beijing、ap-southeast-1)`}},consoleSite:{type:`string`,valueHint:`<site>`,description:{"en-US":`Console site: domestic, international`,"zh-CN":`控制台站点:domestic、international`}},consoleSwitchAgent:{type:`number`,valueHint:`<uid>`,description:{"en-US":`Switch agent UID for delegated access`,"zh-CN":`切换代理访问的 UID`}},workspaceId:{type:`string`,valueHint:`<id>`,description:{"en-US":`Workspace ID (env: BAILIAN_WORKSPACE_ID)`,"zh-CN":`Workspace ID(环境变量:BAILIAN_WORKSPACE_ID)`}}},js={accessKeyId:{type:`string`,valueHint:`<key>`,description:{"en-US":`Alibaba Cloud Access Key ID (env: ALIBABA_CLOUD_ACCESS_KEY_ID)`,"zh-CN":`阿里云 Access Key ID(环境变量:ALIBABA_CLOUD_ACCESS_KEY_ID)`}},accessKeySecret:{type:`string`,valueHint:`<key>`,description:{"en-US":`Alibaba Cloud Access Key Secret (env: ALIBABA_CLOUD_ACCESS_KEY_SECRET)`,"zh-CN":`阿里云 Access Key Secret(环境变量:ALIBABA_CLOUD_ACCESS_KEY_SECRET)`}},securityToken:{type:`string`,valueHint:`<token>`,description:{"en-US":`Alibaba Cloud STS Security Token (env: ALIBABA_CLOUD_SECURITY_TOKEN)`,"zh-CN":`阿里云 STS Security Token(环境变量:ALIBABA_CLOUD_SECURITY_TOKEN)`}}};function Ms(e){return e.auth===`apiKey`?ks:e.auth===`console`?As:e.auth===`openapi`?js:{}}function Ns(e){return e}const Ps=1;function Fs(e,t){return e.normalize(`NFKC`).replace(/[\\/:*?"<>|]/g,`_`).replace(/\s+/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``)||t}function Is(e,t){return`${Fs(e||`image`,`image`)}_${Fs((t||``).substring(0,20),`untitled`)}_${Date.now()}`}function Ls(e=f()){let t=process.env.HERMES_HOME?.trim();if(t)return Rs(t);if(process.platform===`win32`){let t=process.env.LOCALAPPDATA?.trim();return t?g(t,`hermes`):g(e,`AppData`,`Local`,`hermes`)}return g(e,`.hermes`)}function Rs(e){return e===`~`?f():e.startsWith(`~/`)||e.startsWith(`~\\`)?g(f(),e.slice(2)):e}const zs=()=>g(f(),`bailian-output`);function Bs(e,t){let n=t?.flagDir||e.outputDir||zs(),r=t?.subDir?g(n,t.subDir):n;return i(r)||a(r,{recursive:!0}),r}function Vs(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}function Hs(e){return o(e===`-`?0:e,`utf-8`)}async function Us(e,t){let n=[],r=0;async function i(){for(;r<e.length;){let t=r++;n[t]=await e[t]()}}let a=Array.from({length:Math.min(t,e.length)},()=>i());return await Promise.all(a),n}function Ws(e,t=`boolean`){if(typeof e==`boolean`)return e;if(typeof e==`string`){let t=e.trim().toLowerCase();if(t===`true`)return!0;if(t===`false`)return!1}throw new P(`Invalid ${t} value "${String(e)}". Use true or false.`,N.USAGE)}function Gs(e,t=`boolean`){if(e!=null)return Ws(e,t)}function Ks(e,t,n=`boolean`){let r=Gs(e,n);return r===void 0?t:r}function qs(e,t){return Gs(e,`watermark`)??t??!0}function Js(e){let t={command:e.command,timestamp:(/* @__PURE__ */ new Date()).toISOString(),durationMs:e.durationMs,success:e.success,cliVersion:e.cliVersion,nodeVersion:process.version,os:process.platform};return e.authMethod&&(t.authMethod=e.authMethod),!e.success&&e.error&&(e.error.message&&(t.errorMessage=e.error.message),e.error.exitCode!==void 0&&(t.exitCode=e.error.exitCode),e.error.httpStatus!==void 0&&(t.httpStatus=e.error.httpStatus),e.error.requestId&&(t.requestId=e.error.requestId)),e.params&&Object.keys(e.params).length>0&&(t.params=e.params),t}function Ys(e){if(e==null)return;let t=typeof e==`string`?e:JSON.stringify(e);return t.length<=500?t:t.slice(0,500)}function Xs(e){let{command:t,params:n,...r}=e,i={et:`EXP`,ext:r,c1:n,c2:e.success?`success`:`failure`};return e.httpStatus!==void 0&&(i.c3=String(e.httpStatus)),e.errorMessage&&(i.c4=Ys(e.errorMessage)),e.requestId&&(i.c5=e.requestId),i}let J;function Zs(){return J||(process.env.NODE_ENV===`development`?(J=`dev`,J):process.env.BAILIAN_COMPILED===`1`?(J=`prod`,J):(J=import.meta.url.includes(`/node_modules/`)?`prod`:`dev`,J))}var Qs=/* @__PURE__ */ De(((e,t)=>{t.exports=(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t||4&t&&typeof e==`object`&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&typeof e!=`string`)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=8)})([function(e,t){e.exports=Ae(`os`)},function(e,t){e.exports=globalThis.fetch},function(e,t,n){e.exports=n(6)},function(e,t){e.exports=Ae(`dns`)},function(e,t){e.exports=Ae(`util`)},function(e,t){e.exports=Ae(`crypto`)},function(e,t,n){Object.defineProperty(t,Symbol.toStringTag,{value:`Module`});let r=n(7),i=(e,t)=>{t.appName=`BaiduSpider`,t.appVersion=e.value,t.deviceBrand=`Baidu`,t.deviceType=`bot`,t.platform=`other`},a=(e,t)=>{t.appName=`360 Spider`,t.appVersion=e.value,t.deviceBrand=`360`,t.deviceType=`bot`,t.platform=`other`},o=(e,t)=>{t.appName=`BingBot`,t.appVersion=e.value,t.deviceBrand=`Microsoft`,t.deviceType=`bot`,t.platform=`other`},s=(e,t)=>{t.appName=`Googlebot`,t.appVersion=e.value,t.deviceBrand=`Google`,t.deviceType=`bot`,t.platform=`other`},c=(e,t)=>{t.appName=`YandexBot`,t.appVersion=e.value,t.deviceBrand=`Yandex`,t.deviceType=`bot`,t.platform=`other`},l=(e,t)=>{e.getPreviousNTokens(3)===`Sogou web spider`&&(t.deviceBrand=`Sogou.com`,t.appName=`SogouSpider`),t.appVersion=e.value,t.deviceType=`bot`},u=(e,t)=>{t.appName=`DataproviderBot`,t.appVersion=e.value,t.deviceBrand=`Dataprovider.com`,t.deviceType=`bot`,t.platform=`other`},d=(e,t)=>{t.appName=`AhrefsBot`,t.appVersion=e.value,t.deviceBrand=`Ahrefs`,t.deviceType=`bot`,t.platform=`other`},f=(e,t)=>{t.appName=`BitSightBot`,t.appVersion=e.value,t.deviceBrand=`Bitsight`,t.deviceType=`bot`,t.platform=`other`},p=(e,t)=>{t.appName=`oBot`,t.appVersion=e.value,t.deviceBrand=`IBM`,t.deviceType=`bot`,t.platform=`other`},m=(e,t)=>{t.appName=`Cincraw`,t.appVersion=e.value,t.deviceBrand=`CINC`,t.deviceType=`bot`,t.platform=`other`},h=(e,t)=>{t.appName=`DingTalkBot`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},g=(e,t)=>{t.appName=`YisouSpider`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},_=(e,t)=>{t.appName=`ByteSpider`,t.appVersion=e.value,t.deviceBrand=`ByteDance`,t.deviceType=`bot`,t.platform=`other`},v=(e,t)=>{t.appName=`HeadlineCrawler`,t.appVersion=e.value,t.deviceBrand=`Headline.com`,t.deviceType=`bot`,t.platform=`other`},y=(e,t)=>{t.appName=`BitDiscoveryBot`,t.appVersion=e.value,t.deviceBrand=`Tenable`,t.deviceType=`bot`,t.platform=`other`},b=(e,t)=>{e.getPreviousNTokens(4)===`Screaming Frog SEO Spider`&&(t.deviceBrand=`Screaming Frog`,t.appName=`Screaming Frog`),t.appVersion=e.value,t.deviceType=`bot`},ee=(e,t)=>{t.appName=`Ai2Bot`,t.appVersion=e.value,t.deviceBrand=`Ai2`,t.deviceType=`bot`,t.platform=`other`},te=(e,t)=>{t.appName=`DianjingAdSpider`,t.appVersion=e.value,t.deviceBrand=`Dianjing`,t.deviceType=`bot`,t.platform=`other`},ne=(e,t)=>{t.appName=`BaiduSpider`,t.appVersion=e.value,t.deviceBrand=`Baidu`,t.deviceType=`bot`,t.platform=`other`},x=(e,t)=>{t.appName=`360 Spider`,t.appVersion=e.value,t.deviceBrand=`360`,t.deviceType=`bot`,t.platform=`other`},re=(e,t)=>{t.appName=`BingBot`,t.appVersion=e.value,t.deviceBrand=`Microsoft`,t.deviceType=`bot`,t.platform=`other`},S=(e,t)=>{t.appName=`Googlebot`,t.appVersion=e.value,t.deviceBrand=`Google`,t.deviceType=`bot`,t.platform=`other`},ie=(e,t)=>{t.appName=`YandexBot`,t.appVersion=e.value,t.deviceBrand=`Yandex`,t.deviceType=`bot`,t.platform=`other`},ae=(e,t)=>{e.getPreviousNTokens(3)===`Sogou web spider`&&(t.deviceBrand=`Sogou.com`,t.appName=`SogouSpider`),t.appVersion=e.value,t.deviceType=`bot`},oe=(e,t)=>{t.appName=`DataproviderBot`,t.appVersion=e.value,t.deviceBrand=`Dataprovider.com`,t.deviceType=`bot`,t.platform=`other`},C=(e,t)=>{t.appName=`AhrefsBot`,t.appVersion=e.value,t.deviceBrand=`Ahrefs`,t.deviceType=`bot`,t.platform=`other`},w=(e,t)=>{t.appName=`BitSightBot`,t.appVersion=e.value,t.deviceBrand=`Bitsight`,t.deviceType=`bot`,t.platform=`other`},T=(e,t)=>{t.appName=`oBot`,t.appVersion=e.value,t.deviceBrand=`IBM`,t.deviceType=`bot`,t.platform=`other`},E=(e,t)=>{t.appName=`Cincraw`,t.appVersion=e.value,t.deviceBrand=`CINC`,t.deviceType=`bot`,t.platform=`other`},D=(e,t)=>{t.appName=`DingTalkBot`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},se=(e,t)=>{t.appName=`YisouSpider`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},ce=(e,t)=>{t.appName=`ByteSpider`,t.appVersion=e.value,t.deviceBrand=`ByteDance`,t.deviceType=`bot`,t.platform=`other`},O=(e,t)=>{t.appName=`HeadlineCrawler`,t.appVersion=e.value,t.deviceBrand=`Headline.com`,t.deviceType=`bot`,t.platform=`other`},le=(e,t)=>{t.appName=`BitDiscoveryBot`,t.appVersion=e.value,t.deviceBrand=`Tenable`,t.deviceType=`bot`,t.platform=`other`},k=(e,t)=>{e.getPreviousNTokens(4)===`Screaming Frog SEO Spider`&&(t.deviceBrand=`Screaming Frog`,t.appName=`Screaming Frog`),t.appVersion=e.value,t.deviceType=`bot`},ue=(e,t)=>{t.appName=`Ai2Bot`,t.appVersion=e.value,t.deviceBrand=`Ai2`,t.deviceType=`bot`,t.platform=`other`},A=(e,t)=>{t.appName=`DianjingAdSpider`,t.appVersion=e.value,t.deviceBrand=`Dianjing`,t.deviceType=`bot`,t.platform=`other`},j=/* @__PURE__ */ new Map,M=/* @__PURE__ */ new Map;j.set(`Baiduspider-render`,i),j.set(`Baiduspider+`,i),j.set(`Baiduspider-image+`,i),j.set(`360Spider`,a),j.set(`360Spider-Image`,a),j.set(`bingbot`,o),j.set(`Googlebot`,s),j.set(`YandexRenderResourcesBot`,c),j.set(`spider`,l),j.set(`Dataprovider.com`,u),j.set(`AhrefsBot`,d),j.set(`BitSightBot`,f),j.set(`oBot`,p),j.set(`Cincraw`,m),j.set(`DingTalkBot-LinkService`,h),j.set(`YisouSpider`,g),j.set(`Bytespider`,_),j.set(`ev-crawler`,v),j.set(`bitdiscovery`,y),j.set(`Spider`,b),j.set(`Ai2Bot-Dolma`,ee),j.set(`dianjing_ad_spider`,te),M.set(`Baiduspider-render`,ne),M.set(`Baiduspider+`,ne),M.set(`Baiduspider-image+`,ne),M.set(`360Spider`,x),M.set(`360Spider-Image`,x),M.set(`bingbot`,re),M.set(`Googlebot`,S),M.set(`YandexRenderResourcesBot`,ie),M.set(`spider`,ae),M.set(`Dataprovider.com`,oe),M.set(`AhrefsBot`,C),M.set(`BitSightBot`,w),M.set(`oBot`,T),M.set(`Cincraw`,E),M.set(`DingTalkBot-LinkService`,D),M.set(`YisouSpider`,se),M.set(`Bytespider`,ce),M.set(`ev-crawler`,O),M.set(`bitdiscovery`,le),M.set(`Spider`,k),M.set(`Ai2Bot-Dolma`,ue),M.set(`dianjing_ad_spider`,A);let de={productHandlerMap:j,commentHandlerMap:M,getSpecialProductHandler:()=>null,getSpecialCommentHandler:()=>null,getDefaultModelHandler:()=>null};t.isBot=function(e){let t=r.createUAInfo();return r.runTask(e,t,de),t.deviceType===`bot`}},function(e,t){function n(e){let t=[],n={parent:e,tokens:t,get firstToken(){return t.length===0?null:t[0]},getNewToken(r){let i=(function(){let e=[],t=[],n=[],r=null,i=null,a=null,o=!0,s=!0,c=!0,l=null,u={get key(){return o&&=(r=e.join(``),!1),r},get value(){return s&&=(i=t.join(``),!1),i},get originValue(){return c&&=(a=n.join(``),!1),a},previousToken:null,properties:null,appendKey(t){e.push(t),o=!0},appendValue(e){t.push(e===`_`?`.`:e),n.push(e),s=!0,c=!0,l=null},getSplitValue(e){if(l===null){let e=u.value;l=e===``?[]:e.split(`/`)}return e>=0&&e<l.length?l[e]:null},getPreviousNTokens(e){let t=[],n=u;for(let r=0;r<e;r++){if(n==null)return null;t.unshift(n.key),n=n.previousToken}return t.join(` `)}};return u})();return t.push(i),i.previousToken=r===void 0?t.length>1?t[t.length-2]:null:r,e&&(e.properties=n),i},getLastToken:()=>t.length===0?null:t[t.length-1],getFirstToken:()=>t.length===0?null:t[0],isEmpty:()=>t.length===0};return n}function r(){return{appName:null,appVersion:null,browserName:null,browserVersion:null,engineName:null,engineVersion:null,deviceBrand:null,deviceModel:null,deviceType:`mobile`,osName:null,osVersion:null,platform:`web`,tokenGroup:n(null)}}let i=new Set(` ;,"'`.split(``)),a=new Set(`/=:`.split(``)),o=/* @__PURE__ */ new Set([`Mozilla`,`AppleWebKit`,`Safari`,`Opera`,`Dalvik`,`com.ss.android.ugc.aweme`]);function s(e){return e.length===1&&i.has(e)}function c(e){return e.length===1&&a.has(e)}function l(e,t,n,r){if(e==null)return;let i=t.parent,a=e.key,s=null;if(i!=null){let e=i.key;o.has(e)?(s=r.commentHandlerMap.get(a)??null,s??=r.getSpecialCommentHandler(a),s==null&&a.endsWith(` Build`)&&(s=r.getDefaultModelHandler())):s=r.productHandlerMap.get(a)??r.getSpecialProductHandler(a)}else s=r.productHandlerMap.get(a)??r.getSpecialProductHandler(a);if(s!=null)try{s(e,n)}catch{}}function u(e,t,r){if(e==null)throw Error(`input can not be null`);return(function e(t,r,i,a,o){let u,d=null,f=null,p=!1,m=t.length,h=r>0?t[r-1]:`\0`;for(u=r;u<m;u++){let g=t[u];if(s(g)){let e=h!==`\0`&&s(h);if(!p&&r>0&&g===` `&&!e){let e=u+1;if(e<m){let n=t[e];/\d/.test(n)||n===`-`?p=!0:f?.appendKey(g)}else f?.appendKey(g)}else f!=null&&(d=f,f=null);h=g}else if(g===`(`){if(h===`(`){h=g;continue}let r=u;u=e(t,u+1,n(i.getLastToken()),a,o),f!=null&&(d=f,f=null),h=t[r]}else{if(g===`)`){if(r===0){h=g;continue}break}f??(l(i.getLastToken(),i,a,o),f=i.getNewToken(d),p=!1),c(g)?(p&&f.appendValue(g),p=!0):p?f.appendValue(g):f.appendKey(g),h=g}}return l(i.getLastToken(),i,a,o),u})(e,0,t.tokenGroup,t,r),t}Object.defineProperty(t,"DEFAULT_MODEL_HANDLER_KEY",{enumerable:!0,get:function(){return`DEFAULT_MODEL_HANDLER`}}),Object.defineProperty(t,"createUAInfo",{enumerable:!0,get:function(){return r}}),Object.defineProperty(t,"runTask",{enumerable:!0,get:function(){return u}})},function(e,t,n){n.r(t);var r=n(0),i=n.n(r),a=n(1),o=n.n(a);n(2);function s(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:20,t=arguments.length>1?arguments[1]:void 0;return t||=``,e?s(--e,`0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz`.charAt(Math.floor(60*Math.random()))+t):t}function c(e,t){for(var n in t)e[n]=t[n];return e}function l(e){return Object.prototype.toString.call(e)===`[object Object]`}function u(e){return typeof Promise<`u`&&e instanceof Promise}var d=Object.freeze({__aesBeforeSkip:1}),f=function(e){var t=Object.prototype.toString.call(e);if(t===`[object String]`&&e||t===`[object Number]`||t===`[object Boolean]`)return e;if(t===`[object Object]`||t===`[object Array]`)try{return JSON.stringify(e)}catch{}},p=function(e){var t={};for(var n in e){var r=e[n];r!==void 0&&(t[n]=f(r))}return t},m=function(e){var t=[];for(var n in e){var r=f(e[n]);r!==void 0&&t.push(`${n}=${encodeURIComponent(r)}`)}return t.join(`&`)};function h(e){return(e.requiredFields||[]).concat([`pid`]).some(function(t){return e[t]===void 0})}function g(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:``,t=arguments.length>1?arguments[1]:void 0;typeof console<`u`&&console.warn(`日志解析报错,埋点将被丢弃 => ${e}`,t)}var _=`AEM_TRACKER_UNIQUE_PVID`,v=typeof globalThis<`u`&&globalThis?globalThis:typeof window<`u`&&window?window:typeof global<`u`&&global?global:typeof self<`u`&&self?self:(console.error(`Unable to locate global object in current environment`),{});function y(e){this._queue=[],this._reqQueue=[],this._plugins={},this._subscribers={onConfigUpdated:[]},this._timeout=0,this._config={sdk_version:`3.3.18`,set pv_id(e){v[_]=e},get pv_id(){return v[_]||(v[_]=s()),v[_]},timezone_offset:(/* @__PURE__ */ new Date()).getTimezoneOffset()},e&&(this._config=c(this._config,e))}y.prototype={constructor:y,_sendAll:function(){if(this._timeout&&=(clearTimeout(this._timeout),0),this._queue.length){var e,t=this._config.maxUrlLength||3e4,n=this._getSendConfig();try{e=this._processData(this._queue,n)}catch{}if(e&&e.length<t)return this._queue=[],void this.send(e);for(var r,i=[];this._queue.length;){i.push(this._queue.shift());try{r=this._processData(i,n)}catch(e){var a=i.pop();g(e.message,a);continue}if(r.length>t){i.length>1&&(this._queue.unshift(i.pop()),r=this._processData(i,n));break}}r&&this.send(r),this._queue.length&&this._sendAll()}},_send:function(e,t){var n=this;if(!1===t){var r;try{r=this._processData([e])}catch(t){g(t.message,e)}r&&this.send(r)}else{this._queue.push(e);var i=this._config.mergeRequestInterval||500;this._timeout||=setTimeout(function(){n._sendAll()},i)}},_getSendConfig:function(){var e={},t=this._config;for(var n in t)n!==`requiredFields`&&n!==`maxUrlLength`&&n!==`queueGlobalName`&&n!==`debug`&&n!==`excludeCrawlers`&&n!==`collectClientHints`&&n.indexOf(`plugin`)!==0&&t[n]!==``&&t[n]!==null&&t[n]!==void 0&&(e[n]=f(t[n]));return e},_processData:function(e,t){t||=this._getSendConfig();var n=m(t);return n+=`&msg=`+encodeURIComponent(e.map(function(e){return m(e)}).join(`|`))},setConfig:function(e,t){var n=this,r={};t===void 0?r=e:r[e]=t;var i=!(function e(t,n){if(t===void 0||n===void 0||!l(t)||!l(n))return!1;for(var r in t)if(l(t[r])){if(!e(t[r],n[r]))return!1}else if(t[r]!==n[r])return!1;return!0})(r,this._config),a=function(){if(i){for(var e in r)l(r[e])?n._config[e]=c(n._config[e]||{},r[e]):n._config[e]=r[e];n._execSubscribe(`onConfigUpdated`,[r,n._config])}};this._reqQueue.length?(a(),h(this._config)||(this._reqQueue.forEach(function(e){n._send.apply(n,e)}),this._reqQueue=[])):(i&&this._sendAll(),a())},getConfig:function(e){return e?this._config[e]:this._config},updatePVID:(function(e,t){if(typeof e!=`function`)throw TypeError(`Expected a function`);t=typeof t==`number`&&t>=0?t:100;var n=null;return function(){if(n===null){var r=this,i=Array.prototype.slice.call(arguments);n=setTimeout(function(){n=null},t),e.apply(r,i)}}})(function(){v[_]=s()},200),log:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};e&&(t.ts=t.ts||(/* @__PURE__ */ new Date()).getTime(),t.type=e,this._print(`log`,e,t),t=p(t),h(this._config)?this._reqQueue.length<1e3&&this._reqQueue.push([t,n.combo]):this._send(t,n.combo))},before:function(e,t){var n=this;return function(){var r=arguments,i=t.apply(n,r);i!==d&&(u(i)?i.then(function(t){t!==d&&e.apply(n,t||r)}):e.apply(n,i||r))}},after:function(e,t){var n=this;return function(){var r=arguments;e.apply(n,r),t.apply(n,r)}},use:function(e,t){var n=this;return Object.prototype.toString.call(e)===`[object Array]`?e.map(function(e){if(Object.prototype.toString.call(e)===`[object Array]`){var t=e[0],r=e[1];return n._plugins[t]||(n._plugins[t]=new t(n,r))}return n._plugins[e]||(n._plugins[e]=new e(n))}):this._plugins[e]||(this._plugins[e]=new e(this,t))},_print:function(){this._config.debug&&typeof console<`u`&&console.log.apply(console,arguments)},onConfigUpdated:function(e){this._subscribers.onConfigUpdated&&this._subscribers.onConfigUpdated.push(e)},_execSubscribe:function(e,t){this._subscribers[e]&&this._subscribers[e].forEach(function(e){e.apply(this,t)})}};var b=y,ee=n(3),te=n.n(ee),ne=n(4),x=n(5),re=n.n(x);function S(e){return(S=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e})(e)}function ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ae(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?ie(Object(n),!0).forEach(function(t){oe(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ie(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function oe(e,t,n){return(t=(function(e){var t=(function(e,t){if(S(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(S(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)})(e,`string`);return S(t)==`symbol`?t:t+``})(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=T(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
23
+ --service-tier 只能为 ptu_fast 或 ptu_default。`:e.serviceTier===`ptu_default`&&e.chargeType===Y.POST_PAID?`ptu_default only supports pre_paid.
24
+ ptu_default 仅支持 pre_paid。`:e.chargeType===Y.POST_PAID&&Gs(e)?`Prepaid flags are not allowed with --charge-type post_paid.
25
+ --charge-type post_paid 不允许提供预付费参数。`:Us(e,!0)??Ks(e,e.chargeType===Y.PRE_PAID):`--thinking-output-tpm is not supported by current reservation models.
26
+ 当前吞吐预留模型不支持 --thinking-output-tpm。`},async resolve(e){let t={charge_type:e.flags.chargeType,ptu_capacity:Ws(e.flags)};e.flags.serviceTier!==void 0&&(t.service_tier=e.flags.serviceTier),e.flags.suffix!==void 0&&(t.suffix=e.flags.suffix);let n=qs(e.flags);return n!==void 0&&(t.pre_paid_info=n),{body:t}}},Xs={name:J.MU,validateFlags(){},async resolve(e){let t=e.flags.billingMethod||Hs,n=e.flags.deploySpec,r=e.flags.capacity;if(!e.dryRun&&!n){let i=()=>new P(`No mu-plan template found for model "${e.model}". Run \`${e.binName} deploy models --source base\` to inspect available models, or pass --deploy-spec explicitly.`,N.USAGE);try{let a=await Is(e.client,{modelSource:`base`,pageSize:100,version:`v1.0`}),o=((a.output??a.data)?.models??[]).find(t=>t.model_name===e.model)?.plans?.find(({plan:e})=>e===J.MU)?.templates??[];if(o.length===0)throw i();let s=t===Vs.POST_PAY?Y.POST_PAID:Y.PRE_PAID,c=o.find(e=>e.charge_type===s)??o[0];if(!c?.deploy_spec&&!c?.template_id)throw i();n=c.deploy_spec??c.template_id,r===void 0&&(r=c.roles?.unified?.capacity_unit_per_instance??1)}catch(e){throw e instanceof P?e:new P(`Failed to auto-pick template for plan=mu: ${e.message}. Pass --deploy-spec explicitly.`,N.USAGE)}}let i={capacity:r??1,billing_method:t};return n&&(i.deploy_spec=n),{body:i}}},Zs={[J.LORA]:Js,[J.PTU]:Ys,[J.MU]:Xs};function Qs(e){let t=Zs[e];if(!t)throw new P(`Unsupported plan "${e}". Supported plans: ${Object.keys(Zs).join(`, `)}.`,N.USAGE);return t}const $s=`zeldaEasy.broadscope-platform.modelInstance.startModelService`,ec=`zeldaEasy.broadscope-platform.modelInstance.stopModelService`,tc=`zeldaEasy.broadscope-platform.modelInstance.listIndependentDeployedModel`;async function nc(e,t){return H(await e.console($s,{input:{modelServiceId:t}}))}async function rc(e,t){return H(await e.console(ec,{input:{modelServiceId:t}}))}async function ic(e){let t=[],n=1;for(;;){let r=H(await e.console(tc,{input:{pageNo:n,pageSize:50}})),i=r.records??[];t.push(...i);let a=r.pageCount??1;if(n>=a||i.length===0)break;n++}return t}function ac(e,t){return e.find(e=>e.modelServiceId===t||e.deployedModel===t||e.deployed_model===t)}const oc=`speech-biasing`;function sc(e,t){return{model:oc,input:{action:e,...t}}}async function cc(e,t,n,r){return e.requestJson({path:Zn(),method:`POST`,body:sc(t,n),signal:r})}function lc(e,t,n){return cc(e,`create_vocabulary`,{target_model:t.targetModel,prefix:t.prefix,vocabulary:t.vocabulary},n)}function uc(e,t={},n){let r={};return t.prefix!==void 0&&(r.prefix=t.prefix),t.pageIndex!==void 0&&(r.page_index=t.pageIndex),t.pageSize!==void 0&&(r.page_size=t.pageSize),cc(e,`list_vocabulary`,r,n)}function dc(e,t,n){return cc(e,`query_vocabulary`,{vocabulary_id:t},n)}function fc(e,t,n,r){return cc(e,`update_vocabulary`,{vocabulary_id:t,vocabulary:n},r)}function pc(e,t,n){return cc(e,`delete_vocabulary`,{vocabulary_id:t},n)}function mc(e,t){try{return JSON.parse(e)}catch(e){throw new F(`${t} is not valid JSON — ${e.message}`)}}function hc(e){let t=mc(e,`--vocabulary`);if(!t||typeof t!=`object`||Array.isArray(t))throw new F(`--vocabulary must decode to a JSON object of word→weight.`);for(let[e,n]of Object.entries(t))if(typeof n!=`number`||!Number.isFinite(n))throw new F(`--vocabulary weight for "${e}" must be a number.`);return t}function gc(e,t){let n=`--words`,r=mc(e,n),i;if(Array.isArray(r))i=r.map((e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw new F(`${n} entry #${t} must be an object with string "text" and number "weight".`);let r=e;if(typeof r.text!=`string`||typeof r.weight!=`number`)throw new F(`${n} entry #${t} must have a string "text" and a number "weight".`);if(!Number.isFinite(r.weight))throw new F(`${n} entry #${t} weight must be a finite number.`);return{text:r.text,weight:r.weight,...typeof r.lang==`string`?{lang:r.lang}:{}}});else if(!r||typeof r!=`object`)throw new F(`${n} must decode to a JSON object or array.`);else{i=[];for(let[e,a]of Object.entries(r)){if(typeof a!=`number`||!Number.isFinite(a))throw new F(`${n} weight for "${e}" must be a number.`);i.push({text:e,weight:a,...t?{lang:t}:{}})}}if(i.length===0)throw new F(`${n} must contain at least one hot word.`);return i}const _c={output:{type:`string`,valueHint:`<format>`,description:{"en-US":`Output format: text, json`,"zh-CN":`输出格式:text、json`}},timeout:{type:`number`,valueHint:`<seconds>`,description:{"en-US":`Request timeout`,"zh-CN":`请求超时时间`}},quiet:{type:`switch`,description:{"en-US":`Suppress non-essential output`,"zh-CN":`隐藏非必要输出`}},verbose:{type:`switch`,description:{"en-US":`Print HTTP request/response details`,"zh-CN":`打印 HTTP 请求和响应详情`}},dryRun:{type:`switch`,description:{"en-US":`Dry run mode`,"zh-CN":`仅预览,不实际执行`}},config:{type:`string`,valueHint:`<name>`,description:{"en-US":`Use a config profile for this command`,"zh-CN":`为当前命令使用指定配置 Profile`}},help:{type:`switch`,description:{"en-US":`Show help`,"zh-CN":`显示帮助信息`}},version:{type:`switch`,description:{"en-US":`Print version`,"zh-CN":`显示版本信息`}}},vc={concurrent:{type:`number`,valueHint:`<n>`,description:{"en-US":`Run N parallel requests (default: 1)`,"zh-CN":`并行发送 N 个请求(默认:1)`}}},yc={async:{type:`switch`,description:{"en-US":`Return async task id without waiting`,"zh-CN":`直接返回异步任务 ID,不等待任务完成`}}},bc={apiKey:{type:`string`,valueHint:`<key>`,description:{"en-US":`API key`,"zh-CN":`API Key`}},baseUrl:{type:`string`,valueHint:`<url>`,description:{"en-US":`API base URL`,"zh-CN":`API Base URL`}}},xc={consoleRegion:{type:`string`,valueHint:`<region>`,description:{"en-US":`Console gateway region (e.g. cn-beijing, ap-southeast-1)`,"zh-CN":`控制台网关地域(例如 cn-beijing、ap-southeast-1)`}},consoleSite:{type:`string`,valueHint:`<site>`,description:{"en-US":`Console site: domestic, international`,"zh-CN":`控制台站点:domestic、international`}},consoleSwitchAgent:{type:`number`,valueHint:`<uid>`,description:{"en-US":`Switch agent UID for delegated access`,"zh-CN":`切换代理访问的 UID`}},workspaceId:{type:`string`,valueHint:`<id>`,description:{"en-US":`Workspace ID (env: BAILIAN_WORKSPACE_ID)`,"zh-CN":`Workspace ID(环境变量:BAILIAN_WORKSPACE_ID)`}}},Sc={accessKeyId:{type:`string`,valueHint:`<key>`,description:{"en-US":`Alibaba Cloud Access Key ID (env: ALIBABA_CLOUD_ACCESS_KEY_ID)`,"zh-CN":`阿里云 Access Key ID(环境变量:ALIBABA_CLOUD_ACCESS_KEY_ID)`}},accessKeySecret:{type:`string`,valueHint:`<key>`,description:{"en-US":`Alibaba Cloud Access Key Secret (env: ALIBABA_CLOUD_ACCESS_KEY_SECRET)`,"zh-CN":`阿里云 Access Key Secret(环境变量:ALIBABA_CLOUD_ACCESS_KEY_SECRET)`}},securityToken:{type:`string`,valueHint:`<token>`,description:{"en-US":`Alibaba Cloud STS Security Token (env: ALIBABA_CLOUD_SECURITY_TOKEN)`,"zh-CN":`阿里云 STS Security Token(环境变量:ALIBABA_CLOUD_SECURITY_TOKEN)`}}};function Cc(e){return e.auth===`apiKey`?bc:e.auth===`console`?xc:e.auth===`openapi`?Sc:{}}function wc(e){return e}const Tc=1;function Ec(e,t){return e.normalize(`NFKC`).replace(/[\\/:*?"<>|]/g,`_`).replace(/\s+/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``)||t}function Dc(e,t){return`${Ec(e||`image`,`image`)}_${Ec((t||``).substring(0,20),`untitled`)}_${Date.now()}`}function Oc(e=f()){let t=process.env.HERMES_HOME?.trim();if(t)return kc(t);if(process.platform===`win32`){let t=process.env.LOCALAPPDATA?.trim();return t?g(t,`hermes`):g(e,`AppData`,`Local`,`hermes`)}return g(e,`.hermes`)}function kc(e){return e===`~`?f():e.startsWith(`~/`)||e.startsWith(`~\\`)?g(f(),e.slice(2)):e}const Ac=()=>g(f(),`bailian-output`);function jc(e,t){let n=t?.flagDir||e.outputDir||Ac(),r=t?.subDir?g(n,t.subDir):n;return i(r)||a(r,{recursive:!0}),r}function Mc(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}function Nc(e){return o(e===`-`?0:e,`utf-8`)}async function Pc(e,t){let n=[],r=0;async function i(){for(;r<e.length;){let t=r++;n[t]=await e[t]()}}let a=Array.from({length:Math.min(t,e.length)},()=>i());return await Promise.all(a),n}function Fc(e,t=`boolean`){if(typeof e==`boolean`)return e;if(typeof e==`string`){let t=e.trim().toLowerCase();if(t===`true`)return!0;if(t===`false`)return!1}throw new P(`Invalid ${t} value "${String(e)}". Use true or false.`,N.USAGE)}function Ic(e,t=`boolean`){if(e!=null)return Fc(e,t)}function Lc(e,t,n=`boolean`){let r=Ic(e,n);return r===void 0?t:r}function Rc(e,t){return Ic(e,`watermark`)??t??!0}function zc(e){let t={command:e.command,timestamp:(/* @__PURE__ */ new Date()).toISOString(),durationMs:e.durationMs,success:e.success,cliVersion:e.cliVersion,nodeVersion:process.version,os:process.platform};return e.authMethod&&(t.authMethod=e.authMethod),!e.success&&e.error&&(e.error.message&&(t.errorMessage=e.error.message),e.error.exitCode!==void 0&&(t.exitCode=e.error.exitCode),e.error.httpStatus!==void 0&&(t.httpStatus=e.error.httpStatus),e.error.requestId&&(t.requestId=e.error.requestId)),e.params&&Object.keys(e.params).length>0&&(t.params=e.params),t}function Bc(e){if(e==null)return;let t=typeof e==`string`?e:JSON.stringify(e);return t.length<=500?t:t.slice(0,500)}function Vc(e){let{command:t,params:n,...r}=e,i={et:`EXP`,ext:r,c1:n,c2:e.success?`success`:`failure`};return e.httpStatus!==void 0&&(i.c3=String(e.httpStatus)),e.errorMessage&&(i.c4=Bc(e.errorMessage)),e.requestId&&(i.c5=e.requestId),i}let X;function Hc(){return X||(process.env.NODE_ENV===`development`?(X=`dev`,X):process.env.BAILIAN_COMPILED===`1`?(X=`prod`,X):(X=import.meta.url.includes(`/node_modules/`)?`prod`:`dev`,X))}var Uc=/* @__PURE__ */ De(((e,t)=>{t.exports=(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t||4&t&&typeof e==`object`&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&typeof e!=`string`)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=8)})([function(e,t){e.exports=Ae(`os`)},function(e,t){e.exports=globalThis.fetch},function(e,t,n){e.exports=n(6)},function(e,t){e.exports=Ae(`dns`)},function(e,t){e.exports=Ae(`util`)},function(e,t){e.exports=Ae(`crypto`)},function(e,t,n){Object.defineProperty(t,Symbol.toStringTag,{value:`Module`});let r=n(7),i=(e,t)=>{t.appName=`BaiduSpider`,t.appVersion=e.value,t.deviceBrand=`Baidu`,t.deviceType=`bot`,t.platform=`other`},a=(e,t)=>{t.appName=`360 Spider`,t.appVersion=e.value,t.deviceBrand=`360`,t.deviceType=`bot`,t.platform=`other`},o=(e,t)=>{t.appName=`BingBot`,t.appVersion=e.value,t.deviceBrand=`Microsoft`,t.deviceType=`bot`,t.platform=`other`},s=(e,t)=>{t.appName=`Googlebot`,t.appVersion=e.value,t.deviceBrand=`Google`,t.deviceType=`bot`,t.platform=`other`},c=(e,t)=>{t.appName=`YandexBot`,t.appVersion=e.value,t.deviceBrand=`Yandex`,t.deviceType=`bot`,t.platform=`other`},l=(e,t)=>{e.getPreviousNTokens(3)===`Sogou web spider`&&(t.deviceBrand=`Sogou.com`,t.appName=`SogouSpider`),t.appVersion=e.value,t.deviceType=`bot`},u=(e,t)=>{t.appName=`DataproviderBot`,t.appVersion=e.value,t.deviceBrand=`Dataprovider.com`,t.deviceType=`bot`,t.platform=`other`},d=(e,t)=>{t.appName=`AhrefsBot`,t.appVersion=e.value,t.deviceBrand=`Ahrefs`,t.deviceType=`bot`,t.platform=`other`},f=(e,t)=>{t.appName=`BitSightBot`,t.appVersion=e.value,t.deviceBrand=`Bitsight`,t.deviceType=`bot`,t.platform=`other`},p=(e,t)=>{t.appName=`oBot`,t.appVersion=e.value,t.deviceBrand=`IBM`,t.deviceType=`bot`,t.platform=`other`},m=(e,t)=>{t.appName=`Cincraw`,t.appVersion=e.value,t.deviceBrand=`CINC`,t.deviceType=`bot`,t.platform=`other`},h=(e,t)=>{t.appName=`DingTalkBot`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},g=(e,t)=>{t.appName=`YisouSpider`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},_=(e,t)=>{t.appName=`ByteSpider`,t.appVersion=e.value,t.deviceBrand=`ByteDance`,t.deviceType=`bot`,t.platform=`other`},v=(e,t)=>{t.appName=`HeadlineCrawler`,t.appVersion=e.value,t.deviceBrand=`Headline.com`,t.deviceType=`bot`,t.platform=`other`},y=(e,t)=>{t.appName=`BitDiscoveryBot`,t.appVersion=e.value,t.deviceBrand=`Tenable`,t.deviceType=`bot`,t.platform=`other`},b=(e,t)=>{e.getPreviousNTokens(4)===`Screaming Frog SEO Spider`&&(t.deviceBrand=`Screaming Frog`,t.appName=`Screaming Frog`),t.appVersion=e.value,t.deviceType=`bot`},ee=(e,t)=>{t.appName=`Ai2Bot`,t.appVersion=e.value,t.deviceBrand=`Ai2`,t.deviceType=`bot`,t.platform=`other`},te=(e,t)=>{t.appName=`DianjingAdSpider`,t.appVersion=e.value,t.deviceBrand=`Dianjing`,t.deviceType=`bot`,t.platform=`other`},ne=(e,t)=>{t.appName=`BaiduSpider`,t.appVersion=e.value,t.deviceBrand=`Baidu`,t.deviceType=`bot`,t.platform=`other`},x=(e,t)=>{t.appName=`360 Spider`,t.appVersion=e.value,t.deviceBrand=`360`,t.deviceType=`bot`,t.platform=`other`},re=(e,t)=>{t.appName=`BingBot`,t.appVersion=e.value,t.deviceBrand=`Microsoft`,t.deviceType=`bot`,t.platform=`other`},S=(e,t)=>{t.appName=`Googlebot`,t.appVersion=e.value,t.deviceBrand=`Google`,t.deviceType=`bot`,t.platform=`other`},ie=(e,t)=>{t.appName=`YandexBot`,t.appVersion=e.value,t.deviceBrand=`Yandex`,t.deviceType=`bot`,t.platform=`other`},ae=(e,t)=>{e.getPreviousNTokens(3)===`Sogou web spider`&&(t.deviceBrand=`Sogou.com`,t.appName=`SogouSpider`),t.appVersion=e.value,t.deviceType=`bot`},oe=(e,t)=>{t.appName=`DataproviderBot`,t.appVersion=e.value,t.deviceBrand=`Dataprovider.com`,t.deviceType=`bot`,t.platform=`other`},C=(e,t)=>{t.appName=`AhrefsBot`,t.appVersion=e.value,t.deviceBrand=`Ahrefs`,t.deviceType=`bot`,t.platform=`other`},w=(e,t)=>{t.appName=`BitSightBot`,t.appVersion=e.value,t.deviceBrand=`Bitsight`,t.deviceType=`bot`,t.platform=`other`},T=(e,t)=>{t.appName=`oBot`,t.appVersion=e.value,t.deviceBrand=`IBM`,t.deviceType=`bot`,t.platform=`other`},E=(e,t)=>{t.appName=`Cincraw`,t.appVersion=e.value,t.deviceBrand=`CINC`,t.deviceType=`bot`,t.platform=`other`},D=(e,t)=>{t.appName=`DingTalkBot`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},se=(e,t)=>{t.appName=`YisouSpider`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},ce=(e,t)=>{t.appName=`ByteSpider`,t.appVersion=e.value,t.deviceBrand=`ByteDance`,t.deviceType=`bot`,t.platform=`other`},O=(e,t)=>{t.appName=`HeadlineCrawler`,t.appVersion=e.value,t.deviceBrand=`Headline.com`,t.deviceType=`bot`,t.platform=`other`},le=(e,t)=>{t.appName=`BitDiscoveryBot`,t.appVersion=e.value,t.deviceBrand=`Tenable`,t.deviceType=`bot`,t.platform=`other`},k=(e,t)=>{e.getPreviousNTokens(4)===`Screaming Frog SEO Spider`&&(t.deviceBrand=`Screaming Frog`,t.appName=`Screaming Frog`),t.appVersion=e.value,t.deviceType=`bot`},ue=(e,t)=>{t.appName=`Ai2Bot`,t.appVersion=e.value,t.deviceBrand=`Ai2`,t.deviceType=`bot`,t.platform=`other`},A=(e,t)=>{t.appName=`DianjingAdSpider`,t.appVersion=e.value,t.deviceBrand=`Dianjing`,t.deviceType=`bot`,t.platform=`other`},j=/* @__PURE__ */ new Map,M=/* @__PURE__ */ new Map;j.set(`Baiduspider-render`,i),j.set(`Baiduspider+`,i),j.set(`Baiduspider-image+`,i),j.set(`360Spider`,a),j.set(`360Spider-Image`,a),j.set(`bingbot`,o),j.set(`Googlebot`,s),j.set(`YandexRenderResourcesBot`,c),j.set(`spider`,l),j.set(`Dataprovider.com`,u),j.set(`AhrefsBot`,d),j.set(`BitSightBot`,f),j.set(`oBot`,p),j.set(`Cincraw`,m),j.set(`DingTalkBot-LinkService`,h),j.set(`YisouSpider`,g),j.set(`Bytespider`,_),j.set(`ev-crawler`,v),j.set(`bitdiscovery`,y),j.set(`Spider`,b),j.set(`Ai2Bot-Dolma`,ee),j.set(`dianjing_ad_spider`,te),M.set(`Baiduspider-render`,ne),M.set(`Baiduspider+`,ne),M.set(`Baiduspider-image+`,ne),M.set(`360Spider`,x),M.set(`360Spider-Image`,x),M.set(`bingbot`,re),M.set(`Googlebot`,S),M.set(`YandexRenderResourcesBot`,ie),M.set(`spider`,ae),M.set(`Dataprovider.com`,oe),M.set(`AhrefsBot`,C),M.set(`BitSightBot`,w),M.set(`oBot`,T),M.set(`Cincraw`,E),M.set(`DingTalkBot-LinkService`,D),M.set(`YisouSpider`,se),M.set(`Bytespider`,ce),M.set(`ev-crawler`,O),M.set(`bitdiscovery`,le),M.set(`Spider`,k),M.set(`Ai2Bot-Dolma`,ue),M.set(`dianjing_ad_spider`,A);let de={productHandlerMap:j,commentHandlerMap:M,getSpecialProductHandler:()=>null,getSpecialCommentHandler:()=>null,getDefaultModelHandler:()=>null};t.isBot=function(e){let t=r.createUAInfo();return r.runTask(e,t,de),t.deviceType===`bot`}},function(e,t){function n(e){let t=[],n={parent:e,tokens:t,get firstToken(){return t.length===0?null:t[0]},getNewToken(r){let i=(function(){let e=[],t=[],n=[],r=null,i=null,a=null,o=!0,s=!0,c=!0,l=null,u={get key(){return o&&=(r=e.join(``),!1),r},get value(){return s&&=(i=t.join(``),!1),i},get originValue(){return c&&=(a=n.join(``),!1),a},previousToken:null,properties:null,appendKey(t){e.push(t),o=!0},appendValue(e){t.push(e===`_`?`.`:e),n.push(e),s=!0,c=!0,l=null},getSplitValue(e){if(l===null){let e=u.value;l=e===``?[]:e.split(`/`)}return e>=0&&e<l.length?l[e]:null},getPreviousNTokens(e){let t=[],n=u;for(let r=0;r<e;r++){if(n==null)return null;t.unshift(n.key),n=n.previousToken}return t.join(` `)}};return u})();return t.push(i),i.previousToken=r===void 0?t.length>1?t[t.length-2]:null:r,e&&(e.properties=n),i},getLastToken:()=>t.length===0?null:t[t.length-1],getFirstToken:()=>t.length===0?null:t[0],isEmpty:()=>t.length===0};return n}function r(){return{appName:null,appVersion:null,browserName:null,browserVersion:null,engineName:null,engineVersion:null,deviceBrand:null,deviceModel:null,deviceType:`mobile`,osName:null,osVersion:null,platform:`web`,tokenGroup:n(null)}}let i=new Set(` ;,"'`.split(``)),a=new Set(`/=:`.split(``)),o=/* @__PURE__ */ new Set([`Mozilla`,`AppleWebKit`,`Safari`,`Opera`,`Dalvik`,`com.ss.android.ugc.aweme`]);function s(e){return e.length===1&&i.has(e)}function c(e){return e.length===1&&a.has(e)}function l(e,t,n,r){if(e==null)return;let i=t.parent,a=e.key,s=null;if(i!=null){let e=i.key;o.has(e)?(s=r.commentHandlerMap.get(a)??null,s??=r.getSpecialCommentHandler(a),s==null&&a.endsWith(` Build`)&&(s=r.getDefaultModelHandler())):s=r.productHandlerMap.get(a)??r.getSpecialProductHandler(a)}else s=r.productHandlerMap.get(a)??r.getSpecialProductHandler(a);if(s!=null)try{s(e,n)}catch{}}function u(e,t,r){if(e==null)throw Error(`input can not be null`);return(function e(t,r,i,a,o){let u,d=null,f=null,p=!1,m=t.length,h=r>0?t[r-1]:`\0`;for(u=r;u<m;u++){let g=t[u];if(s(g)){let e=h!==`\0`&&s(h);if(!p&&r>0&&g===` `&&!e){let e=u+1;if(e<m){let n=t[e];/\d/.test(n)||n===`-`?p=!0:f?.appendKey(g)}else f?.appendKey(g)}else f!=null&&(d=f,f=null);h=g}else if(g===`(`){if(h===`(`){h=g;continue}let r=u;u=e(t,u+1,n(i.getLastToken()),a,o),f!=null&&(d=f,f=null),h=t[r]}else{if(g===`)`){if(r===0){h=g;continue}break}f??(l(i.getLastToken(),i,a,o),f=i.getNewToken(d),p=!1),c(g)?(p&&f.appendValue(g),p=!0):p?f.appendValue(g):f.appendKey(g),h=g}}return l(i.getLastToken(),i,a,o),u})(e,0,t.tokenGroup,t,r),t}Object.defineProperty(t,"DEFAULT_MODEL_HANDLER_KEY",{enumerable:!0,get:function(){return`DEFAULT_MODEL_HANDLER`}}),Object.defineProperty(t,"createUAInfo",{enumerable:!0,get:function(){return r}}),Object.defineProperty(t,"runTask",{enumerable:!0,get:function(){return u}})},function(e,t,n){n.r(t);var r=n(0),i=n.n(r),a=n(1),o=n.n(a);n(2);function s(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:20,t=arguments.length>1?arguments[1]:void 0;return t||=``,e?s(--e,`0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz`.charAt(Math.floor(60*Math.random()))+t):t}function c(e,t){for(var n in t)e[n]=t[n];return e}function l(e){return Object.prototype.toString.call(e)===`[object Object]`}function u(e){return typeof Promise<`u`&&e instanceof Promise}var d=Object.freeze({__aesBeforeSkip:1}),f=function(e){var t=Object.prototype.toString.call(e);if(t===`[object String]`&&e||t===`[object Number]`||t===`[object Boolean]`)return e;if(t===`[object Object]`||t===`[object Array]`)try{return JSON.stringify(e)}catch{}},p=function(e){var t={};for(var n in e){var r=e[n];r!==void 0&&(t[n]=f(r))}return t},m=function(e){var t=[];for(var n in e){var r=f(e[n]);r!==void 0&&t.push(`${n}=${encodeURIComponent(r)}`)}return t.join(`&`)};function h(e){return(e.requiredFields||[]).concat([`pid`]).some(function(t){return e[t]===void 0})}function g(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:``,t=arguments.length>1?arguments[1]:void 0;typeof console<`u`&&console.warn(`日志解析报错,埋点将被丢弃 => ${e}`,t)}var _=`AEM_TRACKER_UNIQUE_PVID`,v=typeof globalThis<`u`&&globalThis?globalThis:typeof window<`u`&&window?window:typeof global<`u`&&global?global:typeof self<`u`&&self?self:(console.error(`Unable to locate global object in current environment`),{});function y(e){this._queue=[],this._reqQueue=[],this._plugins={},this._subscribers={onConfigUpdated:[]},this._timeout=0,this._config={sdk_version:`3.3.18`,set pv_id(e){v[_]=e},get pv_id(){return v[_]||(v[_]=s()),v[_]},timezone_offset:(/* @__PURE__ */ new Date()).getTimezoneOffset()},e&&(this._config=c(this._config,e))}y.prototype={constructor:y,_sendAll:function(){if(this._timeout&&=(clearTimeout(this._timeout),0),this._queue.length){var e,t=this._config.maxUrlLength||3e4,n=this._getSendConfig();try{e=this._processData(this._queue,n)}catch{}if(e&&e.length<t)return this._queue=[],void this.send(e);for(var r,i=[];this._queue.length;){i.push(this._queue.shift());try{r=this._processData(i,n)}catch(e){var a=i.pop();g(e.message,a);continue}if(r.length>t){i.length>1&&(this._queue.unshift(i.pop()),r=this._processData(i,n));break}}r&&this.send(r),this._queue.length&&this._sendAll()}},_send:function(e,t){var n=this;if(!1===t){var r;try{r=this._processData([e])}catch(t){g(t.message,e)}r&&this.send(r)}else{this._queue.push(e);var i=this._config.mergeRequestInterval||500;this._timeout||=setTimeout(function(){n._sendAll()},i)}},_getSendConfig:function(){var e={},t=this._config;for(var n in t)n!==`requiredFields`&&n!==`maxUrlLength`&&n!==`queueGlobalName`&&n!==`debug`&&n!==`excludeCrawlers`&&n!==`collectClientHints`&&n.indexOf(`plugin`)!==0&&t[n]!==``&&t[n]!==null&&t[n]!==void 0&&(e[n]=f(t[n]));return e},_processData:function(e,t){t||=this._getSendConfig();var n=m(t);return n+=`&msg=`+encodeURIComponent(e.map(function(e){return m(e)}).join(`|`))},setConfig:function(e,t){var n=this,r={};t===void 0?r=e:r[e]=t;var i=!(function e(t,n){if(t===void 0||n===void 0||!l(t)||!l(n))return!1;for(var r in t)if(l(t[r])){if(!e(t[r],n[r]))return!1}else if(t[r]!==n[r])return!1;return!0})(r,this._config),a=function(){if(i){for(var e in r)l(r[e])?n._config[e]=c(n._config[e]||{},r[e]):n._config[e]=r[e];n._execSubscribe(`onConfigUpdated`,[r,n._config])}};this._reqQueue.length?(a(),h(this._config)||(this._reqQueue.forEach(function(e){n._send.apply(n,e)}),this._reqQueue=[])):(i&&this._sendAll(),a())},getConfig:function(e){return e?this._config[e]:this._config},updatePVID:(function(e,t){if(typeof e!=`function`)throw TypeError(`Expected a function`);t=typeof t==`number`&&t>=0?t:100;var n=null;return function(){if(n===null){var r=this,i=Array.prototype.slice.call(arguments);n=setTimeout(function(){n=null},t),e.apply(r,i)}}})(function(){v[_]=s()},200),log:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};e&&(t.ts=t.ts||(/* @__PURE__ */ new Date()).getTime(),t.type=e,this._print(`log`,e,t),t=p(t),h(this._config)?this._reqQueue.length<1e3&&this._reqQueue.push([t,n.combo]):this._send(t,n.combo))},before:function(e,t){var n=this;return function(){var r=arguments,i=t.apply(n,r);i!==d&&(u(i)?i.then(function(t){t!==d&&e.apply(n,t||r)}):e.apply(n,i||r))}},after:function(e,t){var n=this;return function(){var r=arguments;e.apply(n,r),t.apply(n,r)}},use:function(e,t){var n=this;return Object.prototype.toString.call(e)===`[object Array]`?e.map(function(e){if(Object.prototype.toString.call(e)===`[object Array]`){var t=e[0],r=e[1];return n._plugins[t]||(n._plugins[t]=new t(n,r))}return n._plugins[e]||(n._plugins[e]=new e(n))}):this._plugins[e]||(this._plugins[e]=new e(this,t))},_print:function(){this._config.debug&&typeof console<`u`&&console.log.apply(console,arguments)},onConfigUpdated:function(e){this._subscribers.onConfigUpdated&&this._subscribers.onConfigUpdated.push(e)},_execSubscribe:function(e,t){this._subscribers[e]&&this._subscribers[e].forEach(function(e){e.apply(this,t)})}};var b=y,ee=n(3),te=n.n(ee),ne=n(4),x=n(5),re=n.n(x);function S(e){return(S=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e})(e)}function ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ae(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?ie(Object(n),!0).forEach(function(t){oe(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ie(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function oe(e,t,n){return(t=(function(e){var t=(function(e,t){if(S(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(S(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)})(e,`string`);return S(t)==`symbol`?t:t+``})(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=T(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
27
27
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(s)throw a}}}}function w(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}})(e,t)||T(e,t)||(function(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
28
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)})()}function T(e,t){if(e){if(typeof e==`string`)return E(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?E(e,t):void 0}}function E(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function D(){for(var e=/(?:[0]{1,2}[:-]){5}[0]{1,2}/,t=i.a.networkInterfaces(),n=0,r=Object.entries(t);n<r.length;n++){var a=w(r[n],2),o=(a[0],a[1]);if(o){var s,c=C(o);try{for(c.s();!(s=c.n()).done;){var l=s.value;if(!1===e.test(l.mac))return l.mac}}catch(e){c.e(e)}finally{c.f()}}}return`00:00:00:00:00:00`}var se,ce,O=(se=process.version,{os:i.a.type(),os_version:i.a.release(),app_name:`node`,app_version:se,device_id:re.a.createHash(`md5`).update(D()).digest(`hex`),platform:`node`}),le=(0,ne.promisify)(te.a.resolve);function k(e){this._offlineQueue=[],e.endpoint=e.endpoint||`gm.mmstat.com`,b.call(this,ae(ae({},O),e)),this._config.endpoint_url=`https://${this._config.endpoint}/aes.1.1`}k.prototype=((ce=function(){}).prototype=b.prototype,new ce),k.prototype.constructor=k,k.prototype.send=function(e){var t,n=this;return(t=this._config.endpoint,le(t)).then(function(t){return n._offlineQueue.forEach(function(e){n.send(e)}),n._offlineQueue=[],n._print(`send`,e),o()(n._config.endpoint_url,{method:`POST`,keepalive:!0,body:JSON.stringify({gokey:encodeURIComponent(e),gmkey:`EXP`})}).catch(function(){})}).catch(function(t){n._offlineQueue.length>500&&n._offlineQueue.shift(),n._offlineQueue.push(e)})},t.default=k}]).default})),$s=/* @__PURE__ */ De(((e,t)=>{t.exports=(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t||4&t&&typeof e==`object`&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&typeof e!=`string`)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=0)})([function(e,t,n){n.r(t);var r=[`ec`,`ea`,`el`,`et`],i=function(e,t){var n=function(e){var n=e.ec,r=e.ea,i=e.el,a=e.et,o=a===void 0?`CLK`:a,s=e.xpath;delete e.ec,delete e.ea,delete e.el,delete e.et,delete e.xpath,e.p1=n,e.p2=r,e.p3=i,e.p4=o,e.p5=s;try{t.log(`event`,e)}catch{}};return function(){var t=arguments,i={};if(t.length!==0){for(var a=0;a<t.length;a++){var o,s,c=t[a];if(a!==0&&typeof c==`object`&&a!==t.length-1)return void(e==null||(o=e.console)==null||(s=o.warn)==null||s.call(o,`Only the last argument can be object type`));if(typeof c==`string`||typeof c==`number`)i[r[a]]=c;else if(typeof c==`object`&&a===t.length-1)for(var l in c)c.hasOwnProperty(l)&&(i[l]=c[l])}n(i)}else{var u,d;(u=e.console)==null||(d=u.warn)==null||d.call(u,`At lease one augument`)}}};t.default=function(e,t){return i(global,e)}}]).default})),ec=/* @__PURE__ */ ke(Qs(),1),tc=/* @__PURE__ */ ke($s(),1);const nc=()=>g(L(),`telemetry.jsonl`);let rc;const ic=/* @__PURE__ */ new Set;let ac;try{let e=new ec.default({pid:`bailian-cli-node`,env:Zs()}),t=e.send.bind(e);e.send=function(e){let n=t(e);if(n&&typeof n.then==`function`){let e=n;ic.add(e),e.finally(()=>ic.delete(e))}return n},ac=e,rc=e.use(tc.default)}catch{}async function oc(e=1e3){try{if(ac)try{typeof ac._sendAll==`function`&&ac._sendAll()}catch{}if(ic.size===0)return;let t=[...ic].map(e=>e.catch(()=>void 0));await Promise.race([Promise.allSettled(t),new Promise(t=>setTimeout(t,e).unref?.())])}catch{}}async function sc(e){try{await rt();let n=nc();try{l(n).size>5242880&&u(n)}catch{}t(n,JSON.stringify(e)+`
29
- `,{mode:384})}catch{}}async function cc(e){try{if(!rc)return;rc(e.command,Xs(e))}catch{}}const lc=/* @__PURE__ */ new Set([`apiKey`,`baseUrl`,`output`,`quiet`,`verbose`,`timeout`,`dryRun`,`help`,`console`]),uc=/* @__PURE__ */ new Set(/* @__PURE__ */ `page.pageSize.n.count.model.voice.language.provider.capability.temperature.topP.topK.maxTokens.seed.stream.size.resolution.ratio.duration.format.audioFormat.sampleRate.pitch.rate.volume.api.mode.download.textOnly.promptExtend.enableSsml.watermark.hasThoughts.listTools.rerank.rerankTopN.diarization`.split(`.`));function dc(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith(`_`)||lc.has(n)||uc.has(n)&&r!==void 0&&r!==!1&&(t[n]=r);return t}async function fc(e,t,n,r){if(!e.settings.telemetry){await r();return}let i=performance.now(),a=!0,o,s,c,l;try{await r()}catch(e){throw a=!1,e instanceof P?(o=e.message,s=e.exitCode,c=e.api?.httpStatus,l=e.api?.requestId):e instanceof Error&&(o=e.message),e}finally{let r=Math.round(performance.now()-i),u=Js({command:t.join(` `),durationMs:r,success:a,error:a?void 0:{message:o,exitCode:s,httpStatus:c,requestId:l},cliVersion:e.identity.version,authMethod:e.authMethod,params:dc(n)});sc(u).catch(()=>{}),cc(u).catch(()=>{})}}function pc(e){if(!e.model)return null;let t=e.inferenceMetadata;return{model:e.model,name:e.name??e.model,description:e.description??e.shortDescription??``,shortDescription:e.shortDescription,provider:e.provider??``,capabilities:e.capabilities??[],features:e.features??[],category:e.category,contextWindow:e.contextWindow??void 0,maxOutputTokens:e.maxOutputTokens??void 0,maxInputTokens:e.maxInputTokens??void 0,docUrl:e.docUrl,collectionTag:e.collectionTag,inferenceMetadata:t,prices:e.prices,qpmInfo:e.qpmInfo,versionTag:e.versionTag,openSource:e.openSource}}var mc=class{settings;name=`api`;constructor(e){this.settings=e}available(){return!0}async load(){return(await ki(bn(this.settings))).map(pc).filter(e=>e!==null)}};function hc(){return M(L(),`skills/bailian-docs-llm-wiki`)}function gc(){return M(hc(),`models`,`models.jsonl`)}function _c(e){return!e.model||typeof e.model!=`string`?null:{model:e.model,name:e.name??e.model,description:e.description??``,provider:e.provider??``,capabilities:e.capabilities??[],features:e.features??[],contextWindow:e.contextWindow,maxOutputTokens:e.maxOutputTokens,docUrl:e.docUrl,inferenceMetadata:e.inferenceMetadata,shortDescription:e.shortDescription,category:e.category,collectionTag:e.collectionTag,maxInputTokens:e.maxInputTokens,prices:e.prices,qpmInfo:e.qpmInfo,versionTag:e.versionTag,openSource:e.openSource,family:e.family,familyName:e.familyName}}function vc(e){let t=E(e,`utf-8`).split(`
30
- `).filter(Boolean),n=[];for(let e of t)try{let t=_c(JSON.parse(e));t&&n.push(t)}catch{}return n}var yc=class{name=`catalog`;constructor(e){}available(){return C(gc())}async load(){return this.available()?vc(gc()):[]}};async function bc(e,t){let n=[new yc({onPrepareStart:t?.onPrepareStart}),new mc(e)];for(let e of n)if(e.available()){let t=await e.load();if(t.length>0)return t}let r=await n[0].load();if(r.length>0)return r;throw new P(`No model data available.`,N.GENERAL)}const xc={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`},Y={Single:`single`,Pipeline:`pipeline`},Sc={Low:`low`,Medium:`medium`,High:`high`},Cc={Standard:`standard`,Large:`large`,ExtraLarge:`extra-large`},X={Flagship:`flagship`,Balanced:`balanced`,CostOptimized:`cost-optimized`},Z={TG:`TG`,Reasoning:`Reasoning`,VU:`VU`,IG:`IG`,VG:`VG`,TTS:`TTS`,ASR:`ASR`,RealtimeASR:`Realtime-ASR`,RealtimeTTS:`Realtime-Text-to-Speech`,RealtimeAudioTranslate:`Realtime-Audio-Translate`,RealtimeOmni:`Realtime-Omni`,MultimodalOmni:`Multimodal-Omni`,ME:`ME`,TR:`TR`,ThreeDGeneration:`3D-generation`},wc={FunctionCalling:`function-calling`,WebSearch:`web-search`,StructuredOutputs:`structured-outputs`,PrefixCompletion:`prefix-completion`},Tc={Flagship:`Flagship`,CostOptimized:`Cost-optimized`},Ec=20,Dc=/-\d{4}-\d{2}-\d{2}$/,Oc=/* @__PURE__ */ new Set([Z.IG,Z.VG,Z.TTS,Z.RealtimeTTS,Z.ThreeDGeneration]),kc=/* @__PURE__ */ new Set([Z.TG,Z.Reasoning,Z.ASR,Z.RealtimeASR,Z.RealtimeAudioTranslate,Z.TR,Z.ME]),Ac={standard:0,large:32e3,"extra-large":128e3};console.assert(!0,`FUSION_HARD_WEIGHT + FUSION_SOFT_WEIGHT must sum to 1`),console.assert(!0,`HARD_WEIGHT_* sub-weights must sum to 1`);const jc=`You are a model recommendation advisor for Alibaba Cloud Model Studio. From the candidate models below, select the best recommendations.
28
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)})()}function T(e,t){if(e){if(typeof e==`string`)return E(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?E(e,t):void 0}}function E(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function D(){for(var e=/(?:[0]{1,2}[:-]){5}[0]{1,2}/,t=i.a.networkInterfaces(),n=0,r=Object.entries(t);n<r.length;n++){var a=w(r[n],2),o=(a[0],a[1]);if(o){var s,c=C(o);try{for(c.s();!(s=c.n()).done;){var l=s.value;if(!1===e.test(l.mac))return l.mac}}catch(e){c.e(e)}finally{c.f()}}}return`00:00:00:00:00:00`}var se,ce,O=(se=process.version,{os:i.a.type(),os_version:i.a.release(),app_name:`node`,app_version:se,device_id:re.a.createHash(`md5`).update(D()).digest(`hex`),platform:`node`}),le=(0,ne.promisify)(te.a.resolve);function k(e){this._offlineQueue=[],e.endpoint=e.endpoint||`gm.mmstat.com`,b.call(this,ae(ae({},O),e)),this._config.endpoint_url=`https://${this._config.endpoint}/aes.1.1`}k.prototype=((ce=function(){}).prototype=b.prototype,new ce),k.prototype.constructor=k,k.prototype.send=function(e){var t,n=this;return(t=this._config.endpoint,le(t)).then(function(t){return n._offlineQueue.forEach(function(e){n.send(e)}),n._offlineQueue=[],n._print(`send`,e),o()(n._config.endpoint_url,{method:`POST`,keepalive:!0,body:JSON.stringify({gokey:encodeURIComponent(e),gmkey:`EXP`})}).catch(function(){})}).catch(function(t){n._offlineQueue.length>500&&n._offlineQueue.shift(),n._offlineQueue.push(e)})},t.default=k}]).default})),Wc=/* @__PURE__ */ De(((e,t)=>{t.exports=(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t||4&t&&typeof e==`object`&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&typeof e!=`string`)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=0)})([function(e,t,n){n.r(t);var r=[`ec`,`ea`,`el`,`et`],i=function(e,t){var n=function(e){var n=e.ec,r=e.ea,i=e.el,a=e.et,o=a===void 0?`CLK`:a,s=e.xpath;delete e.ec,delete e.ea,delete e.el,delete e.et,delete e.xpath,e.p1=n,e.p2=r,e.p3=i,e.p4=o,e.p5=s;try{t.log(`event`,e)}catch{}};return function(){var t=arguments,i={};if(t.length!==0){for(var a=0;a<t.length;a++){var o,s,c=t[a];if(a!==0&&typeof c==`object`&&a!==t.length-1)return void(e==null||(o=e.console)==null||(s=o.warn)==null||s.call(o,`Only the last argument can be object type`));if(typeof c==`string`||typeof c==`number`)i[r[a]]=c;else if(typeof c==`object`&&a===t.length-1)for(var l in c)c.hasOwnProperty(l)&&(i[l]=c[l])}n(i)}else{var u,d;(u=e.console)==null||(d=u.warn)==null||d.call(u,`At lease one augument`)}}};t.default=function(e,t){return i(global,e)}}]).default})),Gc=/* @__PURE__ */ ke(Uc(),1),Kc=/* @__PURE__ */ ke(Wc(),1);const qc=()=>g(I(),`telemetry.jsonl`);let Jc;const Yc=/* @__PURE__ */ new Set;let Xc;try{let e=new Gc.default({pid:`bailian-cli-node`,env:Hc()}),t=e.send.bind(e);e.send=function(e){let n=t(e);if(n&&typeof n.then==`function`){let e=n;Yc.add(e),e.finally(()=>Yc.delete(e))}return n},Xc=e,Jc=e.use(Kc.default)}catch{}async function Zc(e=1e3){try{if(Xc)try{typeof Xc._sendAll==`function`&&Xc._sendAll()}catch{}if(Yc.size===0)return;let t=[...Yc].map(e=>e.catch(()=>void 0));await Promise.race([Promise.allSettled(t),new Promise(t=>setTimeout(t,e).unref?.())])}catch{}}async function Qc(e){try{await it();let n=qc();try{l(n).size>5242880&&u(n)}catch{}t(n,JSON.stringify(e)+`
29
+ `,{mode:384})}catch{}}async function $c(e){try{if(!Jc)return;Jc(e.command,Vc(e))}catch{}}const el=/* @__PURE__ */ new Set([`apiKey`,`baseUrl`,`output`,`quiet`,`verbose`,`timeout`,`dryRun`,`help`,`console`]),tl=/* @__PURE__ */ new Set(/* @__PURE__ */ `page.pageSize.n.count.model.voice.language.provider.capability.temperature.topP.topK.maxTokens.seed.stream.size.resolution.ratio.duration.format.audioFormat.sampleRate.pitch.rate.volume.api.mode.download.textOnly.promptExtend.enableSsml.watermark.hasThoughts.listTools.rerank.rerankTopN.diarization`.split(`.`));function nl(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith(`_`)||el.has(n)||tl.has(n)&&r!==void 0&&r!==!1&&(t[n]=r);return t}async function rl(e,t,n,r){if(!e.settings.telemetry){await r();return}let i=performance.now(),a=!0,o,s,c,l;try{await r()}catch(e){throw a=!1,e instanceof P?(o=e.message,s=e.exitCode,c=e.api?.httpStatus,l=e.api?.requestId):e instanceof Error&&(o=e.message),e}finally{let r=Math.round(performance.now()-i),u=zc({command:t.join(` `),durationMs:r,success:a,error:a?void 0:{message:o,exitCode:s,httpStatus:c,requestId:l},cliVersion:e.identity.version,authMethod:e.authMethod,params:nl(n)});Qc(u).catch(()=>{}),$c(u).catch(()=>{})}}function il(e){if(!e.model)return null;let t=e.inferenceMetadata;return{model:e.model,name:e.name??e.model,description:e.description??e.shortDescription??``,shortDescription:e.shortDescription,provider:e.provider??``,capabilities:e.capabilities??[],features:e.features??[],category:e.category,contextWindow:e.contextWindow??void 0,maxOutputTokens:e.maxOutputTokens??void 0,maxInputTokens:e.maxInputTokens??void 0,docUrl:e.docUrl,collectionTag:e.collectionTag,inferenceMetadata:t,prices:e.prices,qpmInfo:e.qpmInfo,versionTag:e.versionTag,openSource:e.openSource}}var al=class{settings;name=`api`;constructor(e){this.settings=e}available(){return!0}async load(){return(await Ri(Cn(this.settings))).map(il).filter(e=>e!==null)}};function ol(){return M(I(),`skills/bailian-docs-llm-wiki`)}function sl(){return M(ol(),`models`,`models.jsonl`)}function cl(e){return!e.model||typeof e.model!=`string`?null:{model:e.model,name:e.name??e.model,description:e.description??``,provider:e.provider??``,capabilities:e.capabilities??[],features:e.features??[],contextWindow:e.contextWindow,maxOutputTokens:e.maxOutputTokens,docUrl:e.docUrl,inferenceMetadata:e.inferenceMetadata,shortDescription:e.shortDescription,category:e.category,collectionTag:e.collectionTag,maxInputTokens:e.maxInputTokens,prices:e.prices,qpmInfo:e.qpmInfo,versionTag:e.versionTag,openSource:e.openSource,family:e.family,familyName:e.familyName}}function ll(e){let t=E(e,`utf-8`).split(`
30
+ `).filter(Boolean),n=[];for(let e of t)try{let t=cl(JSON.parse(e));t&&n.push(t)}catch{}return n}var ul=class{name=`catalog`;constructor(e){}available(){return C(sl())}async load(){return this.available()?ll(sl()):[]}};async function dl(e,t){let n=[new ul({onPrepareStart:t?.onPrepareStart}),new al(e)];for(let e of n)if(e.available()){let t=await e.load();if(t.length>0)return t}let r=await n[0].load();if(r.length>0)return r;throw new P(`No model data available.`,N.GENERAL)}const fl={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`},Z={Single:`single`,Pipeline:`pipeline`},pl={Low:`low`,Medium:`medium`,High:`high`},ml={Standard:`standard`,Large:`large`,ExtraLarge:`extra-large`},hl={Flagship:`flagship`,Balanced:`balanced`,CostOptimized:`cost-optimized`},Q={TG:`TG`,Reasoning:`Reasoning`,VU:`VU`,IG:`IG`,VG:`VG`,TTS:`TTS`,ASR:`ASR`,RealtimeASR:`Realtime-ASR`,RealtimeTTS:`Realtime-Text-to-Speech`,RealtimeAudioTranslate:`Realtime-Audio-Translate`,RealtimeOmni:`Realtime-Omni`,MultimodalOmni:`Multimodal-Omni`,ME:`ME`,TR:`TR`,ThreeDGeneration:`3D-generation`},gl={FunctionCalling:`function-calling`,WebSearch:`web-search`,StructuredOutputs:`structured-outputs`,PrefixCompletion:`prefix-completion`},_l={Flagship:`Flagship`,CostOptimized:`Cost-optimized`},vl=20,yl=/-\d{4}-\d{2}-\d{2}$/,bl=/* @__PURE__ */ new Set([Q.IG,Q.VG,Q.TTS,Q.RealtimeTTS,Q.ThreeDGeneration]),xl=/* @__PURE__ */ new Set([Q.TG,Q.Reasoning,Q.ASR,Q.RealtimeASR,Q.RealtimeAudioTranslate,Q.TR,Q.ME]),Sl={standard:0,large:32e3,"extra-large":128e3};console.assert(!0,`FUSION_HARD_WEIGHT + FUSION_SOFT_WEIGHT must sum to 1`),console.assert(!0,`HARD_WEIGHT_* sub-weights must sum to 1`);const Cl=`You are a model recommendation advisor for Alibaba Cloud Model Studio. From the candidate models below, select the best recommendations.
31
31
 
32
32
  CRITICAL: You MUST respond entirely in English. Do not use any Chinese characters anywhere in your response. Every field — reason, highlights, step, summary — must be written in English.
33
33
 
@@ -68,7 +68,7 @@ Single task:
68
68
  {"type":"single","recommendations":[{"model":"model ID","reason":"recommendation reason","highlights":["key highlights"]}]}
69
69
 
70
70
  Pipeline (only when confident multi-model is needed):
71
- {"type":"pipeline","summary":"one-line solution description","steps":[{"step":"step description","recommendations":[{"model":"model ID","reason":"reason for choosing","highlights":["highlights"]}]}]}`,Mc=`You are a model recommendation advisor for Alibaba Cloud Model Studio. The user's need has been decomposed into multi-step pipeline. Select the best model for each step.
71
+ {"type":"pipeline","summary":"one-line solution description","steps":[{"step":"step description","recommendations":[{"model":"model ID","reason":"reason for choosing","highlights":["highlights"]}]}]}`,wl=`You are a model recommendation advisor for Alibaba Cloud Model Studio. The user's need has been decomposed into multi-step pipeline. Select the best model for each step.
72
72
 
73
73
  CRITICAL: You MUST respond entirely in English. Do not use any Chinese characters anywhere in your response. Every field — reason, highlights, step, summary — must be written in English.
74
74
 
@@ -107,7 +107,7 @@ Key principles:
107
107
 
108
108
  Or (if single model suffices):
109
109
  {"type":"single","recommendations":[{"model":"model ID","reason":"recommendation reason","highlights":
110
- ["key highlights"]}]}`,Nc={complexity:Y.Single,taskSummary:``,scenarioHints:[],semanticQuery:``,inputModality:[],outputModality:[],requiredCapabilities:[Z.TG],requiredFeatures:[],budget:Sc.Medium,contextNeed:Cc.Standard,qualityPreference:X.Balanced,confidence:0},Pc=[`unconstrained`,`scoped`,`comparison`,`alternative`];function Fc(e){if(!e||typeof e!=`object`)return;let t=typeof e.mode==`string`&&Pc.includes(e.mode)?e.mode:`unconstrained`,n=Array.isArray(e.targets)?e.targets.filter(e=>typeof e==`string`):[],r=Array.isArray(e.excludes)?e.excludes.filter(e=>typeof e==`string`):[];return{mode:t,targets:n.length>0?n:void 0,excludes:r.length>0?r:void 0}}async function Ic(e,t){let n=kn(),r={model:`qwen3.6-flash`,messages:[{role:`system`,content:`You are an intent analyzer. Given the user's requirement, understand the scenario first, then extract structured information.
110
+ ["key highlights"]}]}`,Tl={complexity:Z.Single,taskSummary:``,scenarioHints:[],semanticQuery:``,inputModality:[],outputModality:[],requiredCapabilities:[Q.TG],requiredFeatures:[],budget:pl.Medium,contextNeed:ml.Standard,qualityPreference:hl.Balanced,confidence:0},El=[`unconstrained`,`scoped`,`comparison`,`alternative`];function Dl(e){if(!e||typeof e!=`object`)return;let t=typeof e.mode==`string`&&El.includes(e.mode)?e.mode:`unconstrained`,n=Array.isArray(e.targets)?e.targets.filter(e=>typeof e==`string`):[],r=Array.isArray(e.excludes)?e.excludes.filter(e=>typeof e==`string`):[];return{mode:t,targets:n.length>0?n:void 0,excludes:r.length>0?r:void 0}}async function Ol(e,t){let n=Mn(),r={model:`qwen3.6-flash`,messages:[{role:`system`,content:`You are an intent analyzer. Given the user's requirement, understand the scenario first, then extract structured information.
111
111
 
112
112
  CRITICAL: You MUST respond entirely in English. Do not use any Chinese characters anywhere in your response. All text fields (taskSummary, scenarioHints) must be in English.
113
113
 
@@ -154,9 +154,9 @@ Analyze whether the user mentioned specific models, model families, or vendors:
154
154
  - semanticQuery: a self-contained English phrase (15-30 words) describing the need in a form optimized for semantic matching against model descriptions — fold in scenario, modalities, and key constraints; do not just copy the user's wording
155
155
  - modelPreference: { mode, targets?, excludes? }
156
156
 
157
- Output only JSON, no other text.`},{role:`user`,content:t}],max_tokens:1024,temperature:0},i;try{i=await e.requestJson({path:n,method:`POST`,body:r,timeout:30})}catch{return{...Nc}}let a=(i.choices?.[0]?.message?.content??``).match(/\{[\s\S]*\}/);if(!a)return{...Nc};let o=JSON.parse(a[0]),s=o.modelPreference,c=Fc(s);return{complexity:o.complexity===Y.Pipeline?Y.Pipeline:Y.Single,taskSummary:typeof o.taskSummary==`string`?o.taskSummary:``,scenarioHints:Array.isArray(o.scenarioHints)?o.scenarioHints:[],semanticQuery:typeof o.semanticQuery==`string`?o.semanticQuery:``,segments:Array.isArray(o.segments)?o.segments.map(e=>({step:e.step??``,inputModality:Array.isArray(e.inputModality)?e.inputModality:[],outputModality:Array.isArray(e.outputModality)?e.outputModality:[],requiredCapabilities:Array.isArray(e.requiredCapabilities)?e.requiredCapabilities:[]})):void 0,inputModality:Array.isArray(o.inputModality)?o.inputModality:[],outputModality:Array.isArray(o.outputModality)?o.outputModality:[],requiredCapabilities:Array.isArray(o.requiredCapabilities)?o.requiredCapabilities:[],requiredFeatures:Array.isArray(o.requiredFeatures)?o.requiredFeatures:[],budget:o.budget??Nc.budget,contextNeed:o.contextNeed??Nc.contextNeed,qualityPreference:o.qualityPreference??Nc.qualityPreference,confidence:1,modelPreference:c}}function Lc(e){let t=!1,n=!1;for(let r of e)Oc.has(r)&&(t=!0),kc.has(r)&&(n=!0);return t&&n}function Rc(e){let t=new Set(e.map(({model:e})=>e));return e.filter(({model:e})=>{let n=e.replace(Dc,``);return n===e||!t.has(n)})}function zc(e,t,n){let r=e.inferenceMetadata?.request_modality??[],i=e.inferenceMetadata?.response_modality??[];return!(t.length>0&&!t.some(e=>r.includes(e))||n.length>0&&!n.some(e=>i.includes(e)))}function Bc(e,t){if(t.length===0)return!0;let n=e.inferenceMetadata?.request_modality??[];return t.some(e=>n.includes(e))}function Vc(e,t){let{requiredCapabilities:n,requiredFeatures:r,contextNeed:i,qualityPreference:a}=t,{capabilities:o,features:s,contextWindow:c,category:l}=e,u=0;for(let e of n)o.includes(e)&&(u+=10);for(let e of r)s.includes(e)&&(u+=5);let d=Ac[i];return d>0&&(c??0)>=d&&(u+=8),a===X.Flagship&&l===Tc.Flagship||a===X.CostOptimized&&l===Tc.CostOptimized?u+=15:a===X.Balanced&&l===Tc.Flagship&&(u+=5),u}function Hc(e,t,n){return e.map(e=>({model:e,score:Vc(e,t)})).sort((e,t)=>t.score-e.score).slice(0,n)}function Uc(e){return new Set(e.map(({model:e})=>e.model))}function Wc(e,t){let n=/* @__PURE__ */ new Map,r=[],i=[];for(let a of e){let e=a.model.family;if(!e){r.push(a);continue}let o=n.get(e)??0;o<t?(r.push(a),n.set(e,o+1)):i.push(a)}return r.length>=10?r:[...r,...i.slice(0,10-r.length)]}function Gc(e,t){let n=new Set(t);return e.filter(e=>!n.has(e.model.model)&&(n.add(e.model.model),!0))}function Kc(e,t,n){return n.size>=10?[]:Hc(e.filter(({model:e})=>!n.has(e)),t,10-n.size)}function qc(e,t,n,r,i){let{inputModality:a,outputModality:o,requiredCapabilities:s}=t,c={complexity:Y.Single,taskSummary:``,scenarioHints:[],semanticQuery:``,inputModality:a,outputModality:o,requiredCapabilities:s,requiredFeatures:[],budget:r,contextNeed:Cc.Standard,qualityPreference:i,confidence:1},l=e.filter(e=>zc(e,a,o)&&Bc(e,n));return l.length<5&&(l=e.filter(e=>zc(e,a,o))),l.length<5&&(l=e),Hc(l,c,5)}function Jc(e,t){e=Rc(e);let n;if(t.complexity===Y.Pipeline&&t.segments?.length){let r=[];for(let[n,i]of t.segments.entries()){let a=n===0?[]:t.segments[n-1].outputModality,o=Gc(qc(e,i,a,t.budget,t.qualityPreference),Uc(r));r=[...r,...o]}let i=Kc(e,t,Uc(r));n=[...r,...i]}else if(Lc(t.requiredCapabilities))n=Yc(e,t);else{let r=e.filter(e=>zc(e,t.inputModality,t.outputModality));r.length<5&&(r=e),n=Hc(r,t,50)}return Wc(n,3)}function Yc(e,t){let n=t.requiredCapabilities.filter(e=>Oc.has(e)),r=t.requiredCapabilities.filter(e=>kc.has(e)),i=[];if(n.length>0&&(i=Hc(e.filter(e=>n.some(t=>e.capabilities.includes(t))),t,25)),r.length>0){let n=Uc(i),a={...t,requiredCapabilities:r},o=e.filter(e=>!n.has(e.model)&&r.some(t=>e.capabilities.includes(t)));i=[...i,...Hc(o,a,25)]}let a=Kc(e,t,Uc(i));return[...i,...a]}const Xc=`text-embedding-v4`;function Zc(){return M(L(),`skills/bailian-docs-llm-wiki`)}function Qc(){return M(Zc(),`models-embeddings.json`)}function $c(){let e=Qc();if(!C(e))return null;try{return JSON.parse(E(e,`utf-8`)).items}catch{return null}}async function el(e,t){let n={model:Xc,input:[t],dimensions:512,encoding_format:`float`};return(await e.requestJson({path:`/compatible-mode/v1/embeddings`,method:`POST`,body:n,timeout:1e4})).data[0].embedding}async function tl(e,t){let n={model:Xc,input:t,dimensions:512,encoding_format:`float`};return(await e.requestJson({path:`/compatible-mode/v1/embeddings`,method:`POST`,body:n,timeout:3e4})).data.sort((e,t)=>e.index-t.index).map(e=>e.embedding)}const nl={TG:`Text Generation`,Reasoning:`Reasoning`,VU:`Vision Understanding`,IG:`Image Generation`,VG:`Video Generation`,TTS:`Text-to-Speech`,ASR:`Speech-to-Text`},rl={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`};function il(){let e=M(Zc(),`groups`),t=/* @__PURE__ */ new Map;if(!C(e))return t;for(let n of D(e).filter(e=>e.endsWith(`.json`)))try{let r=JSON.parse(E(M(e,n),`utf-8`)),i=r.description??``;if(r.items)for(let e of r.items)t.set(e.model,e.description||i)}catch{}return t}function al(e,t){let n=(e.capabilities??[]).map(e=>nl[e]??e).join(`, `),r=t.get(e.model)||e.shortDescription||e.description||``,i=(e.inferenceMetadata?.request_modality??[]).map(e=>rl[e]??e).join(`, `),a=(e.inferenceMetadata?.response_modality??[]).map(e=>rl[e]??e).join(`, `);return[e.name,e.model,r,n?`Capabilities: ${n}`:``,i?`Input: ${i}`:``,a?`Output: ${a}`:``,e.features?.length?`Features: ${e.features.join(`, `)}`:``,e.familyName||``,e.category?`Category: ${e.category}`:``].filter(Boolean).join(` | `)}async function ol(e,t){let n=il(),r=t.map(e=>al(e,n)),i=[];for(let t=0;t<r.length;t+=10){let n=await tl(e,r.slice(t,t+10));i.push(...n)}let a=t.map((e,t)=>({id:e.model,vector:i[t]})),o={model:Xc,dimensions:512,count:a.length,items:a},s=Qc();return T(A(s),{recursive:!0}),ue(s,JSON.stringify(o)),a}function sl(e,t){let n=0,r=0,i=0;for(let a=0;a<e.length;a++)n+=e[a]*t[a],r+=e[a]*e[a],i+=t[a]*t[a];let a=Math.sqrt(r)*Math.sqrt(i);return a===0?0:n/a}let cl=null;function ll(){return cl===null&&(cl=$c()),cl}function ul(){return ll()!==null}function dl(e){return(e??``).toLowerCase().replace(Dc,``).replace(/[\s_-]+/g,``).trim()}function fl(e,t){let n=dl(t);if(!n)return!1;if(dl(e.model)===n||dl(e.name)===n)return!0;let r=e.model,i=r.lastIndexOf(`/`);return i>=0&&dl(r.slice(i+1))===n||[e.family,e.familyName].some(e=>{if(!e)return!1;let t=dl(e);return t.length>0&&n.includes(t)})}function pl(e,t){return t.some(t=>fl(e,t))}function ml(e,t){return t.length===0?[]:e.filter(e=>pl(e,t))}function hl(e,t){return t.length===0?e:e.filter(({model:e})=>!pl(e,t))}function gl(e,t,n,r){let i=e.inferenceMetadata?.request_modality??[],a=e.inferenceMetadata?.response_modality??[];return!(t.length>0&&!t.some(e=>i.includes(e))||n.length>0&&!n.some(e=>a.includes(e))||r.length>0&&!r.some(t=>e.capabilities.includes(t)))}function _l(e,t){return gl(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function vl(e,t){let{requiredCapabilities:n,requiredFeatures:r,contextNeed:i,qualityPreference:a}=t,o=1;n.length>0&&(o=n.filter(t=>e.capabilities.includes(t)).length/n.length);let s=1;r.length>0&&(s=r.filter(t=>e.features.includes(t)).length/r.length);let c=1,l=Ac[i]??0;if(l>0){let t=e.contextWindow??0;c=t>=l?1:t/l}let u=1;return a===X.Flagship?u=e.category===Tc.Flagship?1:.5:a===X.CostOptimized&&(u=e.category===Tc.CostOptimized?1:.5),.4*o+.2*s+.2*c+.2*u}function yl(e,t){if(!t)return new Set(e.map(e=>e.model));let n=e.filter(e=>_l(e,t)),r=n.length>=5?n:e;return new Set(r.map(e=>e.model))}function bl(e,t){return gl(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function xl(e,t,n,r,i,a){let o=e.filter(e=>n.has(e.id)).flatMap(e=>{let n=i.get(e.id);if(!n)return[];let r=sl(t,e.vector),o=a?vl(n,a):0;return[{model:n,score:a?.4*o+.6*r:r,hardScore:a?o:void 0,softScore:r}]}),s=o.filter(e=>(e.softScore??0)>=.3);return(s.length>=10?s:o).sort((e,t)=>t.score-e.score).slice(0,Math.max(0,r))}function Sl(e){return{model:e,score:1,hardScore:1,softScore:1}}function Cl(e,t,n,r,i,a,o){let s=r.targets??[],c=s.length>0?ml(e,s):e,l=[];if(c.length<5&&s.length>0){for(let e of c)l.push(Sl(e));let r=new Set(l.map(({model:e})=>e.model)),s=xl(t,n,yl(e,o),i,a,o);for(let e of s)if(!r.has(e.model.model)&&(l.push(e),l.length>=i))break;return l}return xl(t,n,yl(c,o),i,a,o)}function wl(e,t,n,r,i,a,o){let s=r.targets??[],c=[],l=/* @__PURE__ */ new Set;for(let t of e)pl(t,s)&&!l.has(t.model)&&(c.push(Sl(t)),l.add(t.model));return c}function Tl(e,t,n,r,i,a,o){let s=ml(e,r.targets??[]),c=new Set(s.map(e=>e.family).filter(Boolean)),l=[],u=/* @__PURE__ */ new Set;for(let e of s)l.push(Sl(e)),u.add(e.model);let d=Math.max(0,i-l.length);if(d>0){let r=xl(t,n,yl(e.filter(e=>!u.has(e.model)&&(!e.family||!c.has(e.family))),o),d,a,o);for(let e of r)l.push(e)}return l}async function El(e,t,n,r,i){let a=ll();if(!a)a=await ol(e,t),cl=a;else{let n=new Set(a.map(e=>e.id)),r=new Set(t.map(e=>e.model)),i=n.size!==r.size;if(!i){for(let e of n)if(!r.has(e)){i=!0;break}}i&&(a=await ol(e,t),cl=a)}let o=await el(e,i?.semanticQuery?.trim()||n),s=new Map(t.map(e=>[e.model,e])),c=i?.modelPreference,l=c?.excludes??[];if(c&&c.mode!==`unconstrained`){let e;switch(c.mode){case`scoped`:e=Cl(t,a,o,c,r,s,i);break;case`comparison`:e=wl(t,a,o,c,r,s,i);break;case`alternative`:e=Tl(t,a,o,c,r,s,i);break;default:e=[]}return hl(e,l)}if(i?.complexity===Y.Pipeline&&i.segments?.length){let e=/* @__PURE__ */ new Set,n=[],c=Math.max(5,Math.ceil(r/i.segments.length));for(let r of i.segments){let l=t.filter(e=>bl(e,r)),u=new Set(l.filter(t=>!e.has(t.model)).map(e=>e.model));if(u.size===0)continue;let d=xl(a,o,u,c,s,i);for(let t of d)e.has(t.model.model)||(n.push(t),e.add(t.model.model))}return hl(n,l)}let u=yl(t,i);return hl(xl(a,o,u,r,s,i),l)}function Dl(e){if(e.prices?.length)return e.prices.map(e=>`${e.type}:${e.price}/${e.unit}`).join(`, `)}function Ol(e){return e.map(({model:e})=>{let t=[`ID: ${e.model}`,`Name: ${e.name}`,`Description: ${e.shortDescription||e.description}`,`Capabilities: ${e.capabilities.join(`, `)}`,`Features: ${e.features.join(`, `)}`];e.contextWindow&&t.push(`Context Window: ${e.contextWindow}`),e.maxOutputTokens&&t.push(`Max Output: ${e.maxOutputTokens}`),e.category&&t.push(`Category: ${e.category}`);let n=e.inferenceMetadata;n?.request_modality?.length&&t.push(`Input Modality: ${n.request_modality.join(`, `)}`),n?.response_modality?.length&&t.push(`Output Modality: ${n.response_modality.join(`, `)}`);let r=Dl(e);return r&&t.push(`Pricing: ${r}`),e.family&&t.push(`Family: ${e.family}`),t.join(` | `)}).join(`
158
- `)}function kl(e){let{taskSummary:t,scenarioHints:n,inputModality:r,outputModality:i,requiredCapabilities:a,requiredFeatures:o,budget:s,qualityPreference:c,contextNeed:l,segments:u,modelPreference:d}=e,f=[];if(t&&f.push(`Task: ${t}`),n.length&&f.push(`Scenario: ${n.join(`, `)}`),r.length&&f.push(`Input: ${r.join(`, `)}`),i.length&&f.push(`Output: ${i.join(`, `)}`),a.length&&f.push(`Capabilities: ${a.join(`, `)}`),o.length&&f.push(`Features: ${o.join(`, `)}`),f.push(`Budget: ${s}`),f.push(`Quality: ${c}`),l!==Cc.Standard&&f.push(`Context: ${l}`),d&&d.mode!==`unconstrained`&&(f.push(`Mode: ${d.mode}`),d.targets?.length&&f.push(`Targets: ${d.targets.join(`, `)}`),d.excludes?.length&&f.push(`Excludes: ${d.excludes.join(`, `)}`)),u?.length){f.push(`Pipeline Steps:`);for(let e of u){let t=e.inputModality.join(`,`)||`none`,n=e.outputModality.join(`,`)||`none`,r=e.requiredCapabilities.join(`,`)||`none`;f.push(` - ${e.step} (Input: ${t} → Output: ${n}, Capabilities: ${r})`)}}return f.join(`
159
- `)}function Al(e){if(!e)return;let t=e.match(/\/(\d+)\.html/);if(t)return`https://bailian.console.aliyun.com/cn-beijing?tab=doc#/doc/?type=model&url=${t[1]}`}function jl(e,t,n){let r=Array.isArray(e)?e:[],i=[],a=/* @__PURE__ */ new Set;for(let e of r){let r=t.get(e.model);if(!r||r.family&&a.has(r.family))continue;r.family&&a.add(r.family);let{model:o,name:s,category:c,contextWindow:l,maxOutputTokens:u,docUrl:d}=r;if(i.push({model:o,name:s,reason:e.reason??``,highlights:e.highlights??[],category:c,contextWindow:l,maxOutputTokens:u,docUrl:d}),i.length>=n)break}return i}function Ml(e,t){for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n],a=new Set(r.recommendations.flatMap(e=>t.get(e.model)?.inferenceMetadata?.response_modality??[]));if(a.size===0)continue;let o=[];for(let e of i.recommendations){let n=t.get(e.model)?.inferenceMetadata?.request_modality??[];!n.some(e=>a.has(e))&&n.length>0&&o.push(`${e.name}'s input modalities [${n.join(`, `)}] may not be compatible with the previous step's output modalities [${[...a].join(`, `)}]`)}o.length>0&&(i.warnings=o)}}async function Nl(e,t,n,r,i,a){let o=Ol(t),s=kl(n),c=n.modelPreference?.mode,l;if(c===`comparison`)l=`You are a model comparison advisor for Alibaba Cloud Model Studio. The user wants to compare specific models — analyze them against the use case.
157
+ Output only JSON, no other text.`},{role:`user`,content:t}],max_tokens:1024,temperature:0},i;try{i=await e.requestJson({path:n,method:`POST`,body:r,timeout:30})}catch{return{...Tl}}let a=(i.choices?.[0]?.message?.content??``).match(/\{[\s\S]*\}/);if(!a)return{...Tl};let o=JSON.parse(a[0]),s=o.modelPreference,c=Dl(s);return{complexity:o.complexity===Z.Pipeline?Z.Pipeline:Z.Single,taskSummary:typeof o.taskSummary==`string`?o.taskSummary:``,scenarioHints:Array.isArray(o.scenarioHints)?o.scenarioHints:[],semanticQuery:typeof o.semanticQuery==`string`?o.semanticQuery:``,segments:Array.isArray(o.segments)?o.segments.map(e=>({step:e.step??``,inputModality:Array.isArray(e.inputModality)?e.inputModality:[],outputModality:Array.isArray(e.outputModality)?e.outputModality:[],requiredCapabilities:Array.isArray(e.requiredCapabilities)?e.requiredCapabilities:[]})):void 0,inputModality:Array.isArray(o.inputModality)?o.inputModality:[],outputModality:Array.isArray(o.outputModality)?o.outputModality:[],requiredCapabilities:Array.isArray(o.requiredCapabilities)?o.requiredCapabilities:[],requiredFeatures:Array.isArray(o.requiredFeatures)?o.requiredFeatures:[],budget:o.budget??Tl.budget,contextNeed:o.contextNeed??Tl.contextNeed,qualityPreference:o.qualityPreference??Tl.qualityPreference,confidence:1,modelPreference:c}}function kl(e){let t=!1,n=!1;for(let r of e)bl.has(r)&&(t=!0),xl.has(r)&&(n=!0);return t&&n}function Al(e){let t=new Set(e.map(({model:e})=>e));return e.filter(({model:e})=>{let n=e.replace(yl,``);return n===e||!t.has(n)})}function jl(e,t,n){let r=e.inferenceMetadata?.request_modality??[],i=e.inferenceMetadata?.response_modality??[];return!(t.length>0&&!t.some(e=>r.includes(e))||n.length>0&&!n.some(e=>i.includes(e)))}function Ml(e,t){if(t.length===0)return!0;let n=e.inferenceMetadata?.request_modality??[];return t.some(e=>n.includes(e))}function Nl(e,t){let{requiredCapabilities:n,requiredFeatures:r,contextNeed:i,qualityPreference:a}=t,{capabilities:o,features:s,contextWindow:c,category:l}=e,u=0;for(let e of n)o.includes(e)&&(u+=10);for(let e of r)s.includes(e)&&(u+=5);let d=Sl[i];return d>0&&(c??0)>=d&&(u+=8),a===hl.Flagship&&l===_l.Flagship||a===hl.CostOptimized&&l===_l.CostOptimized?u+=15:a===hl.Balanced&&l===_l.Flagship&&(u+=5),u}function Pl(e,t,n){return e.map(e=>({model:e,score:Nl(e,t)})).sort((e,t)=>t.score-e.score).slice(0,n)}function Fl(e){return new Set(e.map(({model:e})=>e.model))}function Il(e,t){let n=/* @__PURE__ */ new Map,r=[],i=[];for(let a of e){let e=a.model.family;if(!e){r.push(a);continue}let o=n.get(e)??0;o<t?(r.push(a),n.set(e,o+1)):i.push(a)}return r.length>=10?r:[...r,...i.slice(0,10-r.length)]}function Ll(e,t){let n=new Set(t);return e.filter(e=>!n.has(e.model.model)&&(n.add(e.model.model),!0))}function Rl(e,t,n){return n.size>=10?[]:Pl(e.filter(({model:e})=>!n.has(e)),t,10-n.size)}function zl(e,t,n,r,i){let{inputModality:a,outputModality:o,requiredCapabilities:s}=t,c={complexity:Z.Single,taskSummary:``,scenarioHints:[],semanticQuery:``,inputModality:a,outputModality:o,requiredCapabilities:s,requiredFeatures:[],budget:r,contextNeed:ml.Standard,qualityPreference:i,confidence:1},l=e.filter(e=>jl(e,a,o)&&Ml(e,n));return l.length<5&&(l=e.filter(e=>jl(e,a,o))),l.length<5&&(l=e),Pl(l,c,5)}function Bl(e,t){e=Al(e);let n;if(t.complexity===Z.Pipeline&&t.segments?.length){let r=[];for(let[n,i]of t.segments.entries()){let a=n===0?[]:t.segments[n-1].outputModality,o=Ll(zl(e,i,a,t.budget,t.qualityPreference),Fl(r));r=[...r,...o]}let i=Rl(e,t,Fl(r));n=[...r,...i]}else if(kl(t.requiredCapabilities))n=Vl(e,t);else{let r=e.filter(e=>jl(e,t.inputModality,t.outputModality));r.length<5&&(r=e),n=Pl(r,t,50)}return Il(n,3)}function Vl(e,t){let n=t.requiredCapabilities.filter(e=>bl.has(e)),r=t.requiredCapabilities.filter(e=>xl.has(e)),i=[];if(n.length>0&&(i=Pl(e.filter(e=>n.some(t=>e.capabilities.includes(t))),t,25)),r.length>0){let n=Fl(i),a={...t,requiredCapabilities:r},o=e.filter(e=>!n.has(e.model)&&r.some(t=>e.capabilities.includes(t)));i=[...i,...Pl(o,a,25)]}let a=Rl(e,t,Fl(i));return[...i,...a]}const Hl=`text-embedding-v4`;function Ul(){return M(I(),`skills/bailian-docs-llm-wiki`)}function Wl(){return M(Ul(),`models-embeddings.json`)}function Gl(){let e=Wl();if(!C(e))return null;try{return JSON.parse(E(e,`utf-8`)).items}catch{return null}}async function Kl(e,t){let n={model:Hl,input:[t],dimensions:512,encoding_format:`float`};return(await e.requestJson({path:`/compatible-mode/v1/embeddings`,method:`POST`,body:n,timeout:1e4})).data[0].embedding}async function ql(e,t){let n={model:Hl,input:t,dimensions:512,encoding_format:`float`};return(await e.requestJson({path:`/compatible-mode/v1/embeddings`,method:`POST`,body:n,timeout:3e4})).data.sort((e,t)=>e.index-t.index).map(e=>e.embedding)}const Jl={TG:`Text Generation`,Reasoning:`Reasoning`,VU:`Vision Understanding`,IG:`Image Generation`,VG:`Video Generation`,TTS:`Text-to-Speech`,ASR:`Speech-to-Text`},Yl={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`};function Xl(){let e=M(Ul(),`groups`),t=/* @__PURE__ */ new Map;if(!C(e))return t;for(let n of D(e).filter(e=>e.endsWith(`.json`)))try{let r=JSON.parse(E(M(e,n),`utf-8`)),i=r.description??``;if(r.items)for(let e of r.items)t.set(e.model,e.description||i)}catch{}return t}function Zl(e,t){let n=(e.capabilities??[]).map(e=>Jl[e]??e).join(`, `),r=t.get(e.model)||e.shortDescription||e.description||``,i=(e.inferenceMetadata?.request_modality??[]).map(e=>Yl[e]??e).join(`, `),a=(e.inferenceMetadata?.response_modality??[]).map(e=>Yl[e]??e).join(`, `);return[e.name,e.model,r,n?`Capabilities: ${n}`:``,i?`Input: ${i}`:``,a?`Output: ${a}`:``,e.features?.length?`Features: ${e.features.join(`, `)}`:``,e.familyName||``,e.category?`Category: ${e.category}`:``].filter(Boolean).join(` | `)}async function Ql(e,t){let n=Xl(),r=t.map(e=>Zl(e,n)),i=[];for(let t=0;t<r.length;t+=10){let n=await ql(e,r.slice(t,t+10));i.push(...n)}let a=t.map((e,t)=>({id:e.model,vector:i[t]})),o={model:Hl,dimensions:512,count:a.length,items:a},s=Wl();return T(A(s),{recursive:!0}),ue(s,JSON.stringify(o)),a}function $l(e,t){let n=0,r=0,i=0;for(let a=0;a<e.length;a++)n+=e[a]*t[a],r+=e[a]*e[a],i+=t[a]*t[a];let a=Math.sqrt(r)*Math.sqrt(i);return a===0?0:n/a}let eu=null;function tu(){return eu===null&&(eu=Gl()),eu}function nu(){return tu()!==null}function ru(e){return(e??``).toLowerCase().replace(yl,``).replace(/[\s_-]+/g,``).trim()}function iu(e,t){let n=ru(t);if(!n)return!1;if(ru(e.model)===n||ru(e.name)===n)return!0;let r=e.model,i=r.lastIndexOf(`/`);return i>=0&&ru(r.slice(i+1))===n||[e.family,e.familyName].some(e=>{if(!e)return!1;let t=ru(e);return t.length>0&&n.includes(t)})}function au(e,t){return t.some(t=>iu(e,t))}function ou(e,t){return t.length===0?[]:e.filter(e=>au(e,t))}function su(e,t){return t.length===0?e:e.filter(({model:e})=>!au(e,t))}function cu(e,t,n,r){let i=e.inferenceMetadata?.request_modality??[],a=e.inferenceMetadata?.response_modality??[];return!(t.length>0&&!t.some(e=>i.includes(e))||n.length>0&&!n.some(e=>a.includes(e))||r.length>0&&!r.some(t=>e.capabilities.includes(t)))}function lu(e,t){return cu(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function uu(e,t){let{requiredCapabilities:n,requiredFeatures:r,contextNeed:i,qualityPreference:a}=t,o=1;n.length>0&&(o=n.filter(t=>e.capabilities.includes(t)).length/n.length);let s=1;r.length>0&&(s=r.filter(t=>e.features.includes(t)).length/r.length);let c=1,l=Sl[i]??0;if(l>0){let t=e.contextWindow??0;c=t>=l?1:t/l}let u=1;return a===hl.Flagship?u=e.category===_l.Flagship?1:.5:a===hl.CostOptimized&&(u=e.category===_l.CostOptimized?1:.5),.4*o+.2*s+.2*c+.2*u}function du(e,t){if(!t)return new Set(e.map(e=>e.model));let n=e.filter(e=>lu(e,t)),r=n.length>=5?n:e;return new Set(r.map(e=>e.model))}function fu(e,t){return cu(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function pu(e,t,n,r,i,a){let o=e.filter(e=>n.has(e.id)).flatMap(e=>{let n=i.get(e.id);if(!n)return[];let r=$l(t,e.vector),o=a?uu(n,a):0;return[{model:n,score:a?.4*o+.6*r:r,hardScore:a?o:void 0,softScore:r}]}),s=o.filter(e=>(e.softScore??0)>=.3);return(s.length>=10?s:o).sort((e,t)=>t.score-e.score).slice(0,Math.max(0,r))}function mu(e){return{model:e,score:1,hardScore:1,softScore:1}}function hu(e,t,n,r,i,a,o){let s=r.targets??[],c=s.length>0?ou(e,s):e,l=[];if(c.length<5&&s.length>0){for(let e of c)l.push(mu(e));let r=new Set(l.map(({model:e})=>e.model)),s=pu(t,n,du(e,o),i,a,o);for(let e of s)if(!r.has(e.model.model)&&(l.push(e),l.length>=i))break;return l}return pu(t,n,du(c,o),i,a,o)}function gu(e,t,n,r,i,a,o){let s=r.targets??[],c=[],l=/* @__PURE__ */ new Set;for(let t of e)au(t,s)&&!l.has(t.model)&&(c.push(mu(t)),l.add(t.model));return c}function _u(e,t,n,r,i,a,o){let s=ou(e,r.targets??[]),c=new Set(s.map(e=>e.family).filter(Boolean)),l=[],u=/* @__PURE__ */ new Set;for(let e of s)l.push(mu(e)),u.add(e.model);let d=Math.max(0,i-l.length);if(d>0){let r=pu(t,n,du(e.filter(e=>!u.has(e.model)&&(!e.family||!c.has(e.family))),o),d,a,o);for(let e of r)l.push(e)}return l}async function vu(e,t,n,r,i){let a=tu();if(!a)a=await Ql(e,t),eu=a;else{let n=new Set(a.map(e=>e.id)),r=new Set(t.map(e=>e.model)),i=n.size!==r.size;if(!i){for(let e of n)if(!r.has(e)){i=!0;break}}i&&(a=await Ql(e,t),eu=a)}let o=await Kl(e,i?.semanticQuery?.trim()||n),s=new Map(t.map(e=>[e.model,e])),c=i?.modelPreference,l=c?.excludes??[];if(c&&c.mode!==`unconstrained`){let e;switch(c.mode){case`scoped`:e=hu(t,a,o,c,r,s,i);break;case`comparison`:e=gu(t,a,o,c,r,s,i);break;case`alternative`:e=_u(t,a,o,c,r,s,i);break;default:e=[]}return su(e,l)}if(i?.complexity===Z.Pipeline&&i.segments?.length){let e=/* @__PURE__ */ new Set,n=[],c=Math.max(5,Math.ceil(r/i.segments.length));for(let r of i.segments){let l=t.filter(e=>fu(e,r)),u=new Set(l.filter(t=>!e.has(t.model)).map(e=>e.model));if(u.size===0)continue;let d=pu(a,o,u,c,s,i);for(let t of d)e.has(t.model.model)||(n.push(t),e.add(t.model.model))}return su(n,l)}let u=du(t,i);return su(pu(a,o,u,r,s,i),l)}function yu(e){if(e.prices?.length)return e.prices.map(e=>`${e.type}:${e.price}/${e.unit}`).join(`, `)}function bu(e){return e.map(({model:e})=>{let t=[`ID: ${e.model}`,`Name: ${e.name}`,`Description: ${e.shortDescription||e.description}`,`Capabilities: ${e.capabilities.join(`, `)}`,`Features: ${e.features.join(`, `)}`];e.contextWindow&&t.push(`Context Window: ${e.contextWindow}`),e.maxOutputTokens&&t.push(`Max Output: ${e.maxOutputTokens}`),e.category&&t.push(`Category: ${e.category}`);let n=e.inferenceMetadata;n?.request_modality?.length&&t.push(`Input Modality: ${n.request_modality.join(`, `)}`),n?.response_modality?.length&&t.push(`Output Modality: ${n.response_modality.join(`, `)}`);let r=yu(e);return r&&t.push(`Pricing: ${r}`),e.family&&t.push(`Family: ${e.family}`),t.join(` | `)}).join(`
158
+ `)}function xu(e){let{taskSummary:t,scenarioHints:n,inputModality:r,outputModality:i,requiredCapabilities:a,requiredFeatures:o,budget:s,qualityPreference:c,contextNeed:l,segments:u,modelPreference:d}=e,f=[];if(t&&f.push(`Task: ${t}`),n.length&&f.push(`Scenario: ${n.join(`, `)}`),r.length&&f.push(`Input: ${r.join(`, `)}`),i.length&&f.push(`Output: ${i.join(`, `)}`),a.length&&f.push(`Capabilities: ${a.join(`, `)}`),o.length&&f.push(`Features: ${o.join(`, `)}`),f.push(`Budget: ${s}`),f.push(`Quality: ${c}`),l!==ml.Standard&&f.push(`Context: ${l}`),d&&d.mode!==`unconstrained`&&(f.push(`Mode: ${d.mode}`),d.targets?.length&&f.push(`Targets: ${d.targets.join(`, `)}`),d.excludes?.length&&f.push(`Excludes: ${d.excludes.join(`, `)}`)),u?.length){f.push(`Pipeline Steps:`);for(let e of u){let t=e.inputModality.join(`,`)||`none`,n=e.outputModality.join(`,`)||`none`,r=e.requiredCapabilities.join(`,`)||`none`;f.push(` - ${e.step} (Input: ${t} → Output: ${n}, Capabilities: ${r})`)}}return f.join(`
159
+ `)}function Su(e){if(!e)return;let t=e.match(/\/(\d+)\.html/);if(t)return`https://bailian.console.aliyun.com/cn-beijing?tab=doc#/doc/?type=model&url=${t[1]}`}function Cu(e,t,n){let r=Array.isArray(e)?e:[],i=[],a=/* @__PURE__ */ new Set;for(let e of r){let r=t.get(e.model);if(!r||r.family&&a.has(r.family))continue;r.family&&a.add(r.family);let{model:o,name:s,category:c,contextWindow:l,maxOutputTokens:u,docUrl:d}=r;if(i.push({model:o,name:s,reason:e.reason??``,highlights:e.highlights??[],category:c,contextWindow:l,maxOutputTokens:u,docUrl:d}),i.length>=n)break}return i}function wu(e,t){for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n],a=new Set(r.recommendations.flatMap(e=>t.get(e.model)?.inferenceMetadata?.response_modality??[]));if(a.size===0)continue;let o=[];for(let e of i.recommendations){let n=t.get(e.model)?.inferenceMetadata?.request_modality??[];!n.some(e=>a.has(e))&&n.length>0&&o.push(`${e.name}'s input modalities [${n.join(`, `)}] may not be compatible with the previous step's output modalities [${[...a].join(`, `)}]`)}o.length>0&&(i.warnings=o)}}async function Tu(e,t,n,r,i,a){let o=bu(t),s=xu(n),c=n.modelPreference?.mode,l;if(c===`comparison`)l=`You are a model comparison advisor for Alibaba Cloud Model Studio. The user wants to compare specific models — analyze them against the use case.
160
160
 
161
161
  CRITICAL: You MUST respond entirely in English. Do not use any Chinese characters anywhere in your response. Every field — reason, highlights — must be written in English.
162
162
 
@@ -198,6 +198,6 @@ The intent's modelPreference.targets is the reference model.
198
198
  - Output strict JSON
199
199
 
200
200
  ## Output Format
201
- {"type":"single","recommendations":[{"model":"model ID","reason":"alternative analysis","highlights":["differentiators"]}]}`;else if(c===`scoped`){let e=n.modelPreference?.targets?.length?`\n\n## Scope Restriction\nThe user explicitly requested recommendations from: ${n.modelPreference.targets.join(`, `)}. Prioritize models within this scope.`:``;l=(n.complexity===Y.Pipeline?Mc:jc)+e}else l=n.complexity===Y.Pipeline?Mc:jc;let u=a?.enableThinking??!1,d=n.complexity===Y.Pipeline?`Intent Analysis:\n${s}\n\nCandidate Models:\n${o}\n\nUser Request: ${r}\n\nRecommend up to ${i} models for each pipeline step. Respond in English only.`:`Intent Analysis:\n${s}\n\nCandidate Models:\n${o}\n\nUser Request: ${r}\n\nRecommend up to ${i} models. Respond in English only.`,f={model:`qwen-flash`,messages:[{role:`system`,content:l},{role:`user`,content:d}],max_tokens:4096,temperature:0};u&&(f.stream=!0,f.enable_thinking=!0);let p=kn(),m;if(u){let t=await e.request({path:p,method:`POST`,body:f,stream:!0}),n=``,r=!1;for await(let e of an(t)){if(e.data===`[DONE]`)break;try{let t=JSON.parse(e.data);for(let e of t.choices){let t=e.delta;t.reasoning_content&&a?.onThinking&&a.onThinking(t.reasoning_content),t.content&&(r||(r=!0,a?.onContentStart?.()),n+=t.content)}}catch{}}m=n||`{}`}else m=(await e.requestJson({path:p,method:`POST`,body:f})).choices?.[0]?.message?.content??`{}`;let h;try{let e=m.match(/\{[\s\S]*\}/);h=JSON.parse(e?.[0]??`{}`)}catch{return{type:Y.Single,recommendations:[]}}let g=new Map(t.map(({model:e})=>[e.model,e]));if(h.type===Y.Pipeline&&Array.isArray(h.steps)){let e=[];for(let t of h.steps){let n=jl(t.recommendations??(t.model?[t]:[]),g,i);n.length>0&&e.push({step:t.step??``,recommendations:n})}return Ml(e,g),{type:Y.Pipeline,summary:h.summary??``,steps:e}}let _=jl(h.recommendations??h??[],g,i);return{type:Y.Single,recommendations:_}}function Q(){return M(L(),`skills`)}function Pl(){return M(Q(),`skill-lock.json`)}function Fl(){return{version:1,skills:{}}}function Il(){let e=Pl();if(!C(e))return Fl();try{let t=JSON.parse(E(e,`utf-8`));return t?.version!==1||typeof t.skills!=`object`||t.skills===null?Fl():t}catch{return Fl()}}function Ll(e){T(Q(),{recursive:!0}),ue(Pl(),JSON.stringify(e,null,2)+`
202
- `)}function Rl(e,t){let n=Il();n.skills[e]={...n.skills[e],...t},Ll(n)}function zl(){let e=me(),t=process.cwd(),n=process.env.XDG_CONFIG_HOME||M(e,`.config`),r=(t,n,r)=>({id:t,displayName:n,skillsDir:M(e,r,`skills`),detectDirs:[M(e,r)]}),i=(t,n)=>t?.trim()||M(e,n),a=(e,t,n)=>({id:e,displayName:t,skillsDir:M(n,`skills`),detectDirs:[n]}),o=[`.openclaw`,`.clawdbot`,`.moltbot`].map(t=>M(e,t)),s=o.find(e=>C(e))??o[0],c=[M(n,`zed`)],l=process.env.APPDATA?.trim();l&&c.push(M(l,`Zed`));let u=process.env.FLATPAK_XDG_CONFIG_HOME?.trim();u&&c.push(M(u,`zed`));let d=i(process.env.CODEX_HOME,`.codex`);return[{id:`universal`,displayName:`Universal (~/.agents/skills)`,skillsDir:M(e,`.agents`,`skills`),detectDirs:[M(e,`.agents`),M(e,`.cline`),M(e,`.dexto`),M(e,`.firebender`),M(e,`.kimi-code`),M(e,`.kimi`),M(e,`.loaf`),M(e,`.warp`),...c]},{id:`universal-xdg`,displayName:`Universal (XDG agents/skills)`,skillsDir:M(n,`agents`,`skills`),detectDirs:[M(n,`agents`),M(n,`amp`),M(t,`.replit`)]},r(`adal`,`AdaL`,`.adal`),r(`aider-desk`,`AiderDesk`,`.aider-desk`),r(`antigravity`,`Antigravity`,`.gemini/antigravity`),r(`antigravity-cli`,`Antigravity CLI`,`.gemini/antigravity-cli`),{id:`astrbot`,displayName:`AstrBot`,skillsDir:M(e,`.astrbot`,`data`,`skills`),detectDirs:[M(t,`data`,`skills`),M(e,`.astrbot`)]},a(`autohand-code`,`Autohand Code CLI`,i(process.env.AUTOHAND_HOME,`.autohand`)),r(`augment`,`Augment`,`.augment`),r(`bob`,`IBM Bob`,`.bob`),a(`claude-code`,`Claude Code`,i(process.env.CLAUDE_CONFIG_DIR,`.claude`)),r(`codearts-agent`,`CodeArts Agent`,`.codeartsdoer`),{id:`codebuddy`,displayName:`CodeBuddy`,skillsDir:M(e,`.codebuddy`,`skills`),detectDirs:[M(t,`.codebuddy`),M(e,`.codebuddy`)]},r(`codemaker`,`Codemaker`,`.codemaker`),r(`codestudio`,`Code Studio`,`.codestudio`),{id:`codex`,displayName:`Codex`,skillsDir:M(d,`skills`),detectDirs:[d,`/etc/codex`]},r(`command-code`,`Command Code`,`.commandcode`),{id:`continue`,displayName:`Continue`,skillsDir:M(e,`.continue`,`skills`),detectDirs:[M(t,`.continue`),M(e,`.continue`)]},r(`cortex`,`Cortex Code`,`.snowflake/cortex`),r(`crush`,`Crush`,`.config/crush`),r(`cursor`,`Cursor`,`.cursor`),{id:`deepagents`,displayName:`Deep Agents`,skillsDir:M(e,`.deepagents`,`agent`,`skills`),detectDirs:[M(e,`.deepagents`)]},{id:`devin`,displayName:`Devin for Terminal`,skillsDir:M(n,`devin`,`skills`),detectDirs:[M(n,`devin`)]},r(`droid`,`Droid`,`.factory`),a(`dsh`,`DeepSeek DSH`,i(process.env.DSH_HOME,`.dsh`)),r(`forgecode`,`ForgeCode`,`.forge`),r(`gemini-cli`,`Gemini CLI`,`.gemini`),r(`github-copilot`,`GitHub Copilot`,`.copilot`),{id:`goose`,displayName:`Goose`,skillsDir:M(n,`goose`,`skills`),detectDirs:[M(n,`goose`)]},a(`grok`,`Grok Build`,i(process.env.GROK_HOME,`.grok`)),a(`hermes`,`Hermes Agent`,Ls(e)),r(`iflow-cli`,`iFlow CLI`,`.iflow`),r(`inference-sh`,`inference.sh`,`.inferencesh`),{id:`jazz`,displayName:`Jazz`,skillsDir:M(e,`.jazz`,`skills`),detectDirs:[M(e,`.jazz`),M(t,`.jazz`)]},r(`junie`,`Junie`,`.junie`),r(`kilo`,`Kilo Code`,`.kilocode`),{id:`kimchi`,displayName:`Kimchi`,skillsDir:M(e,`.config`,`kimchi`,`harness`,`skills`),detectDirs:[M(e,`.config`,`kimchi`)]},r(`kiro-cli`,`Kiro CLI`,`.kiro`),r(`kode`,`Kode`,`.kode`),r(`lingma`,`Lingma`,`.lingma`),r(`mcpjam`,`MCPJam`,`.mcpjam`),{id:`minimax-code`,displayName:`MiniMax Code`,skillsDir:M(e,`.minimax`,`skills`),detectDirs:[M(e,`.minimax`),`/Applications/MiniMax Code.app`]},a(`mistral-vibe`,`Mistral Vibe`,i(process.env.VIBE_HOME,`.vibe`)),r(`moxby`,`Moxby`,`.moxby`),r(`mux`,`Mux`,`.mux`),r(`neovate`,`Neovate`,`.neovate`),{id:`opencode`,displayName:`OpenCode`,skillsDir:M(n,`opencode`,`skills`),detectDirs:[M(n,`opencode`)]},{id:`openclaw`,displayName:`OpenClaw`,skillsDir:M(s,`skills`),detectDirs:o},r(`openhands`,`OpenHands`,`.openhands`),r(`ona`,`Ona`,`.ona`),r(`pi`,`Pi`,`.pi/agent`),r(`pochi`,`Pochi`,`.pochi`),r(`qoder`,`Qoder`,`.qoder`),r(`qoder-cn`,`Qoder CN`,`.qoder-cn`),r(`qwen-code`,`Qwen Code`,`.qwen`),r(`reasonix`,`Reasonix`,`.reasonix`),r(`rovodev`,`Rovo Dev`,`.rovodev`),r(`roo`,`Roo Code`,`.roo`),{id:`tabnine-cli`,displayName:`Tabnine CLI`,skillsDir:M(e,`.tabnine`,`agent`,`skills`),detectDirs:[M(e,`.tabnine`)]},r(`terramind`,`Terramind`,`.terramind`),r(`tinycloud`,`Tinycloud`,`.tinycloud`),r(`trae`,`Trae`,`.trae`),r(`trae-cli`,`Trae CLI`,`.traecli`),r(`trae-cn`,`Trae CN`,`.trae-cn`),r(`windsurf`,`Windsurf`,`.codeium/windsurf`),r(`workbuddy`,`Tencent WorkBuddy`,`.workbuddy`),{id:`zcode`,displayName:`ZCode`,skillsDir:M(e,`.zcode`,`skills`),detectDirs:[M(e,`.zcode`),`/Applications/ZCode.app`]},r(`zencoder`,`Zencoder`,`.zencoder`)]}function Bl(){return zl().filter(e=>e.detectDirs.some(e=>C(e)))}function Vl(e,t){return process.platform===`win32`?e.toLowerCase()===t.toLowerCase():e===t}function Hl(e){let t=Q();if(process.platform===`win32`){let n=e.toLowerCase(),r=t.toLowerCase();return n===r||n.startsWith(r+pe)}return e===t||e.startsWith(t+pe)}function Ul(e){try{if(!w(e).isSymbolicLink())return!1;let t=se(e);return Hl(j(t)?t:fe(A(e),t))}catch{return!1}}function Wl(e,t){if(!t.some(t=>Vl(t,e)))return!1;try{return w(e).isDirectory()}catch{return!1}}function Gl(e){try{return w(e).isDirectory()?C(M(e,`SKILL.md`)):!1}catch{return!1}}const Kl=`existing file/dir not managed by bl skill`;function ql(e,t=Bl(),n=[]){let r=M(Q(),e),i=[];for(let a of t){let t=M(a.skillsDir,e);try{let e=!1;try{w(t),e=!0}catch{}if(e){if(Ul(t))O(t);else if(Wl(t,n))O(t,{recursive:!0,force:!0});else if(Gl(t))O(t,{recursive:!0,force:!0});else{i.push({agent:a.id,path:t,mode:`skipped`,reason:Kl});continue}}T(a.skillsDir,{recursive:!0});try{k(r,t,process.platform===`win32`?`junction`:`dir`),i.push({agent:a.id,path:t,mode:`symlink`})}catch{ae(r,t,{recursive:!0}),i.push({agent:a.id,path:t,mode:`copy`})}}catch(e){i.push({agent:a.id,path:t,mode:`skipped`,reason:e instanceof Error?e.message:String(e)})}}return i}function Jl(e,t=Bl(),n=[]){let r=ql(e,t,n),i=r.filter(e=>e.mode!==`skipped`),a=i.map(e=>e.path),o=r.filter(e=>e.mode===`skipped`&&e.reason===Kl).map(e=>e.path),s=n.filter(e=>!a.some(t=>Vl(t,e))&&!o.some(t=>Vl(t,e)));return{results:r,linkedAgents:i.map(e=>e.agent),links:[...a,...s]}}function Yl(e,t=[]){let n=[],r=new Set(t);for(let t of zl())r.add(M(t.skillsDir,e));for(let e of r)try{let r;try{r=w(e)}catch{continue}r.isSymbolicLink()?Ul(e)&&n.push(e):t.some(t=>Vl(t,e))&&n.push(e)}catch{}return n}function Xl(e,t=[]){let n=[];for(let r of Yl(e,t))try{if(Ul(r))O(r);else if(!w(r).isSymbolicLink()&&t.some(e=>Vl(e,r)))O(r,{recursive:!0,force:!0});else continue;n.push(r)}catch{}return n}function Zl(e){return e.includes(`\\`)||e.includes(`\0`)||e.startsWith(`/`)||/^[a-zA-Z]:[\\/]/.test(e)?!1:!e.split(`/`).includes(`..`)}async function Ql(e,t){let n=ye.extract();n.on(`entry`,(e,r,i)=>{if(!Zl(e.name)){r.on(`error`,()=>{}),r.resume(),n.destroy(/* @__PURE__ */ Error(`unsafe tar entry: ${e.name}`));return}let a=M(t,e.name);if(e.type===`directory`){T(a,{recursive:!0}),r.resume(),r.on(`end`,i);return}T(A(a),{recursive:!0});let o=oe(a);r.pipe(o),o.on(`finish`,i),o.on(`error`,i)}),await _e(ge.from(e),ve(),n)}function $l(e){let t=[],n=r=>{for(let i of D(r?M(e,r):e,{withFileTypes:!0})){let e=r?`${r}/${i.name}`:i.name;i.isDirectory()?n(e):i.isFile()&&t.push(e)}};n(``),t.sort((e,t)=>e<t?-1:+(e>t));let r=he(`sha256`);for(let n of t)r.update(n),r.update(E(M(e,n)));return`sha256:${r.digest(`hex`)}`}function eu(e,t,n=259){let r,i=a=>{for(let o of D(a,{withFileTypes:!0}).sort((e,t)=>e.name.localeCompare(t.name))){let s=M(a,o.name),c=de(e,s);for(let e of t){let t=M(e,c).length;t>n&&t>(r?.pathLength??0)&&(r={root:e,relativePath:c,pathLength:t})}o.isDirectory()&&i(s)}};for(let e of t)e.length>n&&e.length>(r?.pathLength??0)&&(r={root:e,relativePath:``,pathLength:e.length});return i(e),r}function tu(e){let t=[],n=r=>{for(let i of D(r,{withFileTypes:!0}).sort((e,t)=>e.name.localeCompare(t.name))){let a=M(r,i.name),o=de(e,a);i.isDirectory()?(t.push({relativePath:o,type:`directory`}),n(a)):i.isFile()&&t.push({relativePath:o,type:`file`})}};return n(e),t}function nu(e,t){let n=tu(e),r=new Set(n.map(e=>e.relativePath));T(t,{recursive:!0});for(let r of n){let n=M(e,r.relativePath),i=M(t,r.relativePath);if(C(i)){let e=w(i);(!(r.type===`directory`?e.isDirectory():e.isFile())||e.isSymbolicLink())&&O(i,{recursive:!0,force:!0})}r.type===`directory`?T(i,{recursive:!0}):(T(A(i),{recursive:!0}),ie(n,i))}let i=tu(t).filter(e=>!r.has(e.relativePath)).sort((e,t)=>t.relativePath.length-e.relativePath.length);for(let e of i)O(M(t,e.relativePath),{recursive:!0,force:!0})}function ru(e){let t=e?.code;return t===`EPERM`||t===`EBUSY`}function iu(e){try{C(e)&&O(e,{recursive:!0,force:!0})}catch{}}function au(e,t,n={}){T(A(t),{recursive:!0});let r=`${t}.old-${Date.now()}`;if(C(t))try{ce(t,r)}catch(i){if(!(n.allowInPlaceFallback??process.platform===`win32`)||!ru(i))throw i;try{nu(t,r),nu(e,t),iu(r);return}catch(e){try{C(r)&&nu(r,t)}catch{}throw Error(`Skill directory is in use and could not be updated in place. Close running agent hosts and retry. / Skill 目录正被占用,无法原地更新;请关闭正在运行的 Agent 后重试。 ${e instanceof Error?e.message:String(e)}`,{cause:e})}}try{ce(e,t)}catch(e){throw C(r)&&!C(t)&&ce(r,t),e}iu(r)}function ou(e){if(e instanceof P){let t=e.api?.httpStatus;if(t!==void 0){if(t===408||t===429)return!0;if(t>=400&&t<500)return!1}return!0}return!0}function su(e){return e instanceof P&&e.api?.httpStatus===429}function cu(e,t){return Math.min(t*2**(e-1),1e4)}function lu(e){return new Promise(t=>setTimeout(t,e))}async function uu(e,t=3){let n=typeof t==`number`?{attempts:t}:t,r=n.attempts??3,i=n.shouldRetry??ou,a=n.backoffBaseMs??500,o;for(let t=1;t<=r;t++)try{return await e(t)}catch(e){if(o=e,t>=r||!i(e,t))break;su(e)&&await lu(cu(t,a))}throw o}function du(){return(process.env.BAILIAN_SKILL_REGISTRY_URL?.trim()||`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/skills`).replace(/\/+$/,``)}async function fu(e=3e4,t=3){return uu(async()=>{let t=`${du()}/index.json`,n;try{n=await fetch(t,{signal:AbortSignal.timeout(e)})}catch(e){throw new P(`Cannot access skill registry: ${t}`,N.NETWORK,`Check network connectivity; if using a private mirror, verify BAILIAN_SKILL_REGISTRY_URL configuration`,{cause:e})}if(!n.ok)throw new P(`Skill registry returned HTTP ${n.status}: ${t}`,N.NETWORK,n.status===404?`Skill index not yet published or registry URL is incorrect; confirm the publisher has generated index.json`:`Remote error, retry later`);let r;try{r=await n.json()}catch(e){throw new P(`Skill index index.json is not valid JSON`,N.GENERAL,`Remote may be in the middle of publishing, retry later`,{cause:e})}let i=r;if(typeof i!=`object`||!i||typeof i.skills!=`object`||i.skills===null)throw new P(`Skill index index.json has invalid structure`,N.GENERAL,`Retry later or contact the publisher`);return i},{attempts:t})}const pu=/^sha256-[0-9a-f]{64}\.tar\.br$/;function mu(e){let t=e?.object;return t&&pu.test(t)?t:`skill.tar.br`}async function hu(e,t,n=3){return uu(async()=>{let n=`${du()}/${e}/${mu(t)}`,r;try{r=await fetch(n,{signal:AbortSignal.timeout(12e4)})}catch(t){throw new P(`Failed to download skill ${e}: ${n}`,N.NETWORK,`Network error, retryable`,{cause:t})}if(!r.ok)throw new P(`Failed to download skill ${e}: HTTP ${r.status}`,N.NETWORK,r.status===404?`index.json and skill object are temporarily inconsistent (publishing in progress), retry later`:`Remote error, retry later`);return Buffer.from(await r.arrayBuffer())},{attempts:n})}function gu(e){return e.replace(/[\\/:*?"<>|\s]+/g,`-`).replace(/\.\.+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`unnamed-skill`}function _u(e){return e.length>0&&gu(e)===e}function vu(e,t){throw new P(`Skill ${e} validation failed: ${t}`,N.GENERAL,`This skill package does not conform to the SKILL.md spec; contact the skill publisher to fix and republish`)}function yu(e){if(!e.startsWith(`---`))return null;let t=/^---\r?\n([\s\S]*?)\r?\n---(\r?\n|$)/.exec(e);return t?t[1]:null}function bu(e,t){let n=M(e,`SKILL.md`),r;try{le(n).isFile()||vu(t,`SKILL.md is not a regular file`),r=E(n,`utf-8`)}catch(e){if(e instanceof P)throw e;vu(t,`missing SKILL.md`)}let i=yu(r);i===null&&vu(t,`SKILL.md is missing frontmatter (--- delimited YAML header)`);let a;try{a=_(i)}catch{vu(t,`frontmatter is not valid YAML`)}(typeof a!=`object`||!a)&&vu(t,`frontmatter is not a key-value structure`);let o=a,s=typeof o.name==`string`?o.name.trim():``,c=typeof o.description==`string`?o.description.trim():``;return(!s||!c)&&vu(t,`frontmatter is missing non-empty name / description fields`),{name:s,description:c}}function xu(e){if(!_u(e))throw new P(`Invalid skill name: ${e}`,N.GENERAL,`Skill name contains path separators, traversal sequences, or other illegal characters; refusing to write to disk`)}async function Su(e,t,n,r){xu(e);let i=Q(),a=M(i,e),o=M(i,`.tmp-${e}-${process.pid}-${Date.now()}`);try{T(o,{recursive:!0}),await Ql(t,o);let i=eu(o,r??(process.platform===`win32`?[a]:[]));if(i)throw new P(`Skill ${e} contains a Windows-incompatible path (${i.pathLength} characters): ${i.relativePath}`,N.GENERAL,`The skill package must shorten this path before it can be installed safely on Windows. / Skill 包必须缩短该路径后才能在 Windows 上安全安装。`);if(n?.startsWith(`sha256:`)){let t=$l(o);if(t!==n)throw new P(`Skill ${e} failed integrity check: index says ${n}, archive is ${t}`,N.GENERAL,`Downloaded archive does not match the index fingerprint (registry may be mid-publish); retry later`)}let s=bu(o,e);return au(o,a),{name:e,path:a,meta:s}}finally{try{C(o)&&O(o,{recursive:!0,force:!0})}catch{}}}async function Cu(e,t,n,r){if(t.compression&&t.compression!==`tar.br`)throw new P(`Skill ${e} uses unsupported compression format: ${t.compression}`,N.GENERAL,`Upgrade bailian-cli to the latest version and retry`);return Su(e,await hu(e,t,n),t.contentHash,r)}function wu(e){xu(e);let t=M(Q(),e);return C(t)?(O(t,{recursive:!0,force:!0}),!0):!1}function Tu(e,t){return{...e.contentHash?{contentHash:e.contentHash}:{},...e.publishedAt?{publishedAt:e.publishedAt}:{},installedAt:(/* @__PURE__ */ new Date()).toISOString(),sourceType:`oss`,...e.description?{description:e.description}:{},links:t}}async function Eu(e,t,n=Bl(),r=[],i){await Cu(e,t,i,process.platform===`win32`?[M(Q(),e),...n.map(t=>M(t.skillsDir,e))]:void 0);let a=Jl(e,n,r);return{lockEntry:Tu(t,a.links),linkedAgents:a.linkedAgents}}const $=`bailian-docs-llm-wiki`;function Du(){return M(L(),`skills/bailian-docs-llm-wiki`)}function Ou(){return C(M(Du(),`models`,`models.jsonl`))}function ku(){return M(L(),`wiki-sync-state.json`)}function Au(){try{return JSON.parse(E(ku(),`utf-8`))}catch{return null}}function ju(e){try{ue(ku(),JSON.stringify(e))}catch{}}function Mu(e){try{Rl($,e)}catch{}}function Nu(e){try{let t=Il().skills[$];return t?.contentHash!==e||!Array.isArray(t.links)}catch{return!0}}async function Pu(){try{return(await fu(3e3,1)).skills[$]??null}catch{return null}}async function Fu(){let e=Au(),t=Date.now();if(e&&t-e.lastChecked<432e5&&Ou())return!1;let n=await Pu();if(!n?.contentHash)return!1;if(Ou()&&(!e||e.contentHash===n.contentHash)){if(ju({lastChecked:t,contentHash:n.contentHash}),Nu(n.contentHash)){let e=Il().skills[$]?.links??[];Mu(Tu(n,Jl($,Bl(),e).links))}return!1}try{let e=Il().skills[$]?.links??[];Mu((await Eu($,n,Bl(),e,1)).lockEntry)}catch{return!1}return ju({lastChecked:t,contentHash:n.contentHash}),!0}const Iu=`bailian-cli`,Lu=`install-method`,Ru=/* @__PURE__ */ new Set([`binary`,`npm`,`brew`,`winget`,`unknown`]);function zu(e){return e?M(L(),`${Lu}.${e}`):M(L(),Lu)}function Bu(){if(process.env.BAILIAN_COMPILED===`1`)return!0;let e=process.execPath.replaceAll(`\\`,`/`);return/(^|\/)node(\.exe)?$/i.test(e)||e.includes(`/node/`)||/(^|\/)bun(\.exe)?$/i.test(e)||e.includes(`/.bun/`)?!1:/\/(bl|bailian)(\.exe)?$/i.test(e)}function Vu(e){if(!e)return null;let t=e.trim().toLowerCase();return Ru.has(t)?t:null}function Hu(e){try{return Vu(E(e,`utf-8`).split(`
203
- `)[0])}catch{return null}}function Uu(){let e=Vu(process.env.BAILIAN_INSTALL_METHOD);if(e)return e;if(Bu()){let e=process.execPath.replaceAll(`\\`,`/`);return e.includes(`/Cellar/`)||e.includes(`/homebrew/`)?`brew`:`binary`}return`npm`}function Wu(e){let t=Vu(process.env.BAILIAN_INSTALL_METHOD);if(t)return t;if(e?.clientName){let t=Hu(zu(e.clientName));if(t)return t;if(e.clientName===`bailian-cli`){let e=Hu(zu());if(e)return e}return Uu()}return Hu(zu())||Uu()}function Gu(e){let t=Wu(e);return t===`binary`&&e.npmPackage!==`bailian-cli`?`npm`:t}function Ku(e,t={clientName:Iu}){try{let n=L();C(n)||T(n,{recursive:!0,mode:448}),ue(zu(t.clientName),`${e}\n`,{mode:384}),t.clientName===`bailian-cli`&&ue(zu(),`${e}\n`,{mode:384})}catch{}}const qu=`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/release`,Ju=`https://github.com/modelstudioai/cli/releases`,Yu=`https://bailian.aliyun.com/cli/install.sh`,Xu=`https://bailian.aliyun.com/cli/install.ps1`;function Zu(){let e=process.env.BAILIAN_CLI_CDN?.trim();return e?e.replace(/\/$/,``):qu}function Qu(e=`latest`){let t=e.trim();return!t||t===`latest`||t===`stable`?`${Zu()}/manifest.json`:`${Zu()}/${t}.json`}function $u(e,t){let n=e.startsWith(`v`)?e:`v${e}`;return`${Zu()}/${n}/${t}`}function ed(){let e=process.platform,t=process.arch,n;if(e===`darwin`)n=`darwin`;else if(e===`linux`)n=`linux`;else if(e===`win32`)n=`windows`;else throw Error(`Unsupported platform for binary updates: ${e}`);let r;if(t===`arm64`)r=`arm64`;else if(t===`x64`)r=`x64`;else throw Error(`Unsupported architecture for binary updates: ${t}`);if(n===`linux`&&r===`arm64`)throw Error(`linux arm64 is not supported for binary updates; use: npm install -g bailian-cli`);if(n===`windows`&&r===`arm64`)throw Error(`windows arm64 is not supported for binary updates; use: npm install -g bailian-cli`);return{os:n,arch:r,fileSuffix:e===`win32`?`.exe`:``}}function td(e,t,n,r=!1){return`bl-${e}-${t}-${n}.zip`}function nd(e,t,n){if(t!==`windows`)return`bl-${e}-${t}-${n}.tar.gz`}function rd(e,t,n,r=!1){return`bl-${e}-${t}-${n}${r?`.exe`:``}`}function id(e){return new Promise((t,n)=>{S.open(e,{lazyEntries:!0},(r,i)=>{if(r||!i){n(r??/* @__PURE__ */ Error(`Failed to open zip: ${e}`));return}t(i)})})}function ad(e){let t=e.replace(/\\/g,`/`);return t.includes(`/`)?t.slice(t.lastIndexOf(`/`)+1):t}async function od(e,t,n){let r=await id(e);return new Promise((i,a)=>{let o=!1,s=e=>{if(!o){o=!0;try{r.close()}catch{}a(e instanceof Error?e:Error(String(e)))}},c=e=>{if(!o){o=!0;try{r.close()}catch{}i(e)}};r.on(`error`,s),r.on(`end`,()=>{o||s(/* @__PURE__ */ Error(n?`Zip entry not found: ${n} in ${e}`:`Zip has no file entries: ${e}`))}),r.on(`entry`,e=>{if(o)return;let i=e.fileName.replace(/\\/g,`/`);if(i.endsWith(`/`)){r.readEntry();return}let a=ad(i);if(n&&i!==n&&a!==n){r.readEntry();return}r.openReadStream(e,(n,r)=>{if(n||!r){s(n??/* @__PURE__ */ Error(`Failed to read zip entry: ${e.fileName}`));return}(async()=>{try{await be(A(t),{recursive:!0}),await _e(r,oe(t)),c(a)}catch(e){s(e)}})()})}),r.readEntry()})}function sd(e,t){let n=(e??(t?`all`:``)).trim();if(!n)throw new F(`--name cannot be empty`,`Use --name all or --name skill-a,skill-b`);let r=[...new Set(n.split(`,`).map(e=>e.trim()).filter(Boolean))];if(r.includes(`all`)){if(r.length>1)throw new F(`--name all cannot be mixed with specific skill names`,`Use either all or a comma-separated list of names`);return`all`}return r}function cd(){let e=Q();return C(e)?D(e).filter(t=>{if(t.startsWith(`.`)||t.includes(`.tmp-`)||t.includes(`.old-`))return!1;try{return le(M(e,t)).isDirectory()}catch{return!1}}):[]}function ld(e,t,n){let r=new Set(n),i=/* @__PURE__ */ new Set,a=[];for(let[n,o]of Object.entries(e.skills)){i.add(n);let e=t.skills[n];if(e){let t=r.has(n)?e.contentHash===o.contentHash?`installed`:`outdated`:`missing`;a.push({name:n,status:t,publishedAt:o.publishedAt,description:o.description})}else r.has(n)?a.push({name:n,status:`untracked`,publishedAt:o.publishedAt,description:o.description}):a.push({name:n,status:`not-installed`,publishedAt:o.publishedAt,description:o.description})}for(let[e,n]of Object.entries(t.skills))i.has(e)||(i.add(e),a.push({name:e,status:r.has(e)?`installed`:`missing`,publishedAt:n.publishedAt,description:n.description}));for(let e of n)i.has(e)||a.push({name:e,status:`untracked`});return a.sort((e,t)=>e.name<t.name?-1:+(e.name>t.name))}export{He as API_KEY_CAPABILITY_PATTERN,Os as ASYNC_FLAG,Ie as BAILIAN_HOST,Xo as BILLING_METHOD,Iu as BINARY_PRODUCT_CLIENT_NAME,P as BailianError,Sc as Budgets,Do as CALC_DATASETS_TOKENS_API,Mt as CHANNEL,q as CHARGE_TYPE,Ps as COMMAND_PACK_API_VERSION,Ds as CONCURRENT_FLAG,ze as CONFIG_FILE_KEYS,As as CONSOLE_AUTH_FLAGS,Z as Capabilities,Cn as Client,Y as Complexities,Cc as ContextNeeds,Pt as DASHSCOPE_SERVICE_HEADER,Zo as DEFAULT_BILLING_METHOD,qu as DEFAULT_CLI_CDN_BASE,Jo as DEFAULT_DEPLOY_PLAN,Xu as DEFAULT_INSTALL_PS1_URL,Yu as DEFAULT_INSTALL_SCRIPT_URL,Re as DEFAULT_LANGUAGE,ro as DEFAULT_TRAINING_TYPE,us as DEPLOY_LIST_INDEPENDENT_API,K as DEPLOY_PLAN,cs as DEPLOY_START_API,ls as DEPLOY_STOP_API,Fe as DOCS_HOSTS,Oo as ESTIMATE_FINETUNE_TOKENS_API,N as ExitCode,wc as Features,Ju as GITHUB_RELEASES_BASE,Es as GLOBAL_FLAGS,lo as INSUFFICIENT_SAMPLES_CODE,Wi as MAX_CPT_BYTES,Ui as MAX_DATASET_BYTES,Gi as MAX_MEDIA_ZIP_BYTES,ks as MODEL_AUTH_FLAGS,Ei as MODEL_LIST_API,gn as McpClient,xc as Modalities,Tc as ModelCategories,js as OPENAPI_AUTH_FLAGS,Nt as OPEN_API_SOURCE,Di as PREDICT_CONFIG_API,X as QualityPreferences,Fr as RAG_PATHS,I as REGIONS,Ar as SANDBOX_PATHS,Ec as SEMANTIC_TOP_K,hs as SPEECH_BIASING_MODEL,os as STRATEGIES,Le as SUPPORTED_LANGUAGES,Eo as TRAINING_MODEL_PRICE_API,no as TRAINING_TYPES_CLI,to as TRAINING_TYPE_MAP,F as UsageError,bt as activateConfigProfile,Er as agentStudioFilesPath,er as agentStudioHost,Ic as analyzeIntent,bn as anonymousConsoleCall,Bn as appCompletionPath,au as atomicSwap,dn as bailianMcpPath,fn as bailianMcpSsePath,td as binaryAssetFileName,rd as binaryInnerFileName,nd as binaryTarFileName,Vt as buildAcsCanonicalQuery,ii as buildAsrContextMessages,oi as buildAsrFlashRequest,ai as buildAsyncAsrLanguageFields,Al as buildDocLink,ns as buildPrepaidInfo,$o as buildReservationCapacity,wt as buildSettings,Tu as buildSkillLockEntry,Ct as buildSources,gs as buildVocabularyRequest,Sn as callConsoleGateway,Xa as cancelFineTune,Qu as channelManifestUrl,kn as chatPath,ci as collectAsrTranscriptionItems,$l as computeDirContentHash,ld as computeSkillStatuses,hn as connectBailianMcpWithFallback,Ci as createBailianControlUser,zo as createCapacityInstance,No as createDeployment,qa as createFineTune,yi as createInstrumentedFetch,Js as createTrackingEvent,vs as createVocabulary,Ms as credentialFlagDefs,Yo as defaultDeployPlan,Ns as defineCommand,Ho as deleteCapacityInstance,xt as deleteConfigProfile,Hi as deleteDataset,Wo as deleteDeployment,Za as deleteFineTune,Ss as deleteVocabulary,_r as deploymentCapacityInstancePath,yr as deploymentCapacityInstanceRenewPath,vr as deploymentCapacityInstanceScalePath,gr as deploymentCapacityInstancesPath,xr as deploymentCapacityOperationPath,br as deploymentOverflowPath,tt as describeAuthState,ed as detectBinaryPlatform,Uu as detectInstallMethod,Bl as detectInstalledAgents,Ia as detectModality,st as detectOutputFormat,hu as downloadSkillAsset,yn as effectiveConsoleGatewayConfig,Fl as emptySkillLock,rt as ensureConfigDir,jo as estimateCptTokens,Ao as estimateSftDpoTokens,eo as exportCheckpoint,si as extractAsrFlashText,Ql as extractTarBr,od as extractZipEntryToFile,Jl as fanOutSkillToAgents,co as fetchModelCapability,Pi as fetchModelDetail,ji as fetchModelGroups,Ni as fetchModelGroupsAll,Oi as fetchModelList,ki as fetchModelListAll,Li as fetchPredictConfig,fu as fetchSkillsIndex,ko as fetchTrainingModelPrice,ms as findDeploymentEntry,Ai as findModelByName,Mi as flattenModelGroups,oc as flushTelemetry,ot as formatErrorJson,Ka as formatIssue,at as formatJson,ct as formatOutput,it as formatText,Dn as generateCLIAccessToken,Is as generateFilename,zl as getAgentTargets,Dt as getApiKeyLoginKind,Lo as getCapacityInstance,Ro as getCapacityOperation,Zu as getCliCdnBase,L as getConfigDir,R as getConfigPath,nt as getCredentialsPath,Vi as getDataset,Fo as getDeployment,Ya as getFineTune,Qa as getFineTuneLogs,Ls as getHermesHome,Wu as getInstallMethod,Et as getModelProfilePreset,bc as getModels,wo as getProfile,Pl as getSkillLockPath,du as getSkillRegistryBaseUrl,Q as getSkillsDir,Gu as getUpdateInstallMethod,es as hasPrepaidFlags,Pn as image2ImagePath,In as image2videoPath,Xt as imageFileToDataUri,jn as imagePath,Mn as imageSyncPath,Nn as imageText2ImagePath,ri as inferAudioFormatHint,Cu as installSkill,Su as installSkillFromBuffer,Eu as installSkillWithFanout,Ue as isApiKeyCapability,Bu as isCompiledBinary,di as isDashScopeGateway,Wr as isLegacyImage2ImageModel,Ur as isLegacyText2ImageModel,$t as isLocalFile,Zl as isSafeEntryName,_u as isSafeSkillName,ul as isSemanticAvailable,pn as isStreamableHttpUnsupported,zr as isSyncMultimodalImageModel,io as isTrainingTypeCli,mn as isUrlOverrideSseFallbackCandidate,Gr as isWanxFunctionImageEditModel,$n as knowledgeChatEndpoint,Xn as knowledgeRetrievePath,Qn as knowledgeSearchEndpoint,ql as linkSkillToAgents,wi as listBailianControlWorkspaces,Io as listCapacityInstances,$a as listCheckpoints,Bi as listDatasets,Go as listDeployableModels,Po as listDeployments,Ja as listFineTunes,ps as listIndependentDeployedModels,cd as listSkillDirsOnDisk,Ga as listSupportedFormats,so as listSupportedTrainingTypes,To as listTrainingTypes,ys as listVocabularies,sc as localSink,At as makeAuthStore,Ri as makeConfigStore,Me as mapApiError,jt as maskToken,Fu as maybeSyncWikiData,ir as mcpWebSearchPath,Vn as memoryAddPath,Un as memoryListPath,Wn as memoryNodePath,Hn as memorySearchPath,oo as modelSupportsTrainingType,Rn as modelsLimitsPath,zn as modelsPermissionsPath,We as normalizeApiKeyCapabilities,ft as normalizeConfigName,Ne as normalizeModelBaseUrl,Ws as parseBooleanValue,Ke as parseConfigFile,qi as parseDatasetSchemaFlag,ws as parseInstantVocabulary,Gs as parseOptionalBooleanValue,an as parseSSE,hi as parseSecurityBody,sd as parseSkillNames,Ts as parseVocabularyEntries,ss as pickPlanStrategy,Ua as pickValidator,Yl as planUnlinkSkillFromAgents,uo as preflightBatchSizeGate,Jn as profileSchemaPath,bs as queryVocabulary,Tr as ragEndpoint,Nl as rankModels,B as readConfigFile,_t as readConfigProfiles,Il as readSkillLock,Hs as readTextFromPathOrStdin,Jc as recallCandidates,El as recallSemantic,Zt as redactDataUri,On as refreshAccessToken,Wa as registerValidator,$u as releaseAssetUrl,cc as remoteSink,wu as removeSkillDir,Vo as renewCapacityInstance,Lt as request,Bt as requestJson,Ti as resetBailianControlPolicies4Agent,Ye as resolveApiKey,ni as resolveAsrApi,mu as resolveAssetFileName,Ks as resolveBooleanFlag,Xe as resolveConsole,en as resolveFileUrl,Yr as resolveImageEditApi,Jr as resolveImageGenerateApi,Kr as resolveImageSizeProfile,Je as resolveModelBaseUrl,qe as resolveModelBaseUrlState,Ze as resolveOpenApi,Bs as resolveOutputDir,qr as resolvePromptExtendDefault,qs as resolveWatermark,An as responsesPath,Us as runWithConcurrency,Or as sandboxApiPath,Dr as sandboxBaseUrl,kr as sandboxEndpoint,Mr as sandboxInstanceActionPath,jr as sandboxInstancePath,Pr as sandboxTemplateBuildStatusPath,Nr as sandboxTemplatePath,gu as sanitizeSkillName,Bo as scaleCapacityInstance,Ko as scaleDeployment,rr as securityAgentLogsEndpoint,gi as securityGet,nr as securityOverviewEndpoint,St as selectApiKeyResolutionSources,Ht as signAcsRequest,Ft as sourceConfig,Kn as speechRecognizePath,Gn as speechSynthesizePath,qn as speechVocabularyPath,ds as startModelService,fs as stopModelService,Vs as stripUndefined,Ln as taskPath,fc as trackCommandExecution,V as trackingHeaders,ao as trainingTypeMethodVariant,Xl as unlinkSkillFromAgents,U as unwrapResponse,qo as updateDeployment,Uo as updateDeploymentOverflow,xs as updateVocabulary,zi as uploadDataset,Qt as uploadFile,Rl as upsertSkillLockEntry,Yn as userProfilePath,yt as validateConfigProfileActivation,G as validateDataset,ts as validatePrepaidFlags,Qo as validateReservationCapacity,bu as validateSkillDir,Fn as videoGeneratePath,Zn as workspaceMaaSBaseUrl,ht as writeConfigFile,Ku as writeInstallMethodSync,Ll as writeSkillLock};
201
+ {"type":"single","recommendations":[{"model":"model ID","reason":"alternative analysis","highlights":["differentiators"]}]}`;else if(c===`scoped`){let e=n.modelPreference?.targets?.length?`\n\n## Scope Restriction\nThe user explicitly requested recommendations from: ${n.modelPreference.targets.join(`, `)}. Prioritize models within this scope.`:``;l=(n.complexity===Z.Pipeline?wl:Cl)+e}else l=n.complexity===Z.Pipeline?wl:Cl;let u=a?.enableThinking??!1,d=n.complexity===Z.Pipeline?`Intent Analysis:\n${s}\n\nCandidate Models:\n${o}\n\nUser Request: ${r}\n\nRecommend up to ${i} models for each pipeline step. Respond in English only.`:`Intent Analysis:\n${s}\n\nCandidate Models:\n${o}\n\nUser Request: ${r}\n\nRecommend up to ${i} models. Respond in English only.`,f={model:`qwen-flash`,messages:[{role:`system`,content:l},{role:`user`,content:d}],max_tokens:4096,temperature:0};u&&(f.stream=!0,f.enable_thinking=!0);let p=Mn(),m;if(u){let t=await e.request({path:p,method:`POST`,body:f,stream:!0}),n=``,r=!1;for await(let e of cn(t)){if(e.data===`[DONE]`)break;try{let t=JSON.parse(e.data);for(let e of t.choices){let t=e.delta;t.reasoning_content&&a?.onThinking&&a.onThinking(t.reasoning_content),t.content&&(r||(r=!0,a?.onContentStart?.()),n+=t.content)}}catch{}}m=n||`{}`}else m=(await e.requestJson({path:p,method:`POST`,body:f})).choices?.[0]?.message?.content??`{}`;let h;try{let e=m.match(/\{[\s\S]*\}/);h=JSON.parse(e?.[0]??`{}`)}catch{return{type:Z.Single,recommendations:[]}}let g=new Map(t.map(({model:e})=>[e.model,e]));if(h.type===Z.Pipeline&&Array.isArray(h.steps)){let e=[];for(let t of h.steps){let n=Cu(t.recommendations??(t.model?[t]:[]),g,i);n.length>0&&e.push({step:t.step??``,recommendations:n})}return wu(e,g),{type:Z.Pipeline,summary:h.summary??``,steps:e}}let _=Cu(h.recommendations??h??[],g,i);return{type:Z.Single,recommendations:_}}function $(){return M(I(),`skills`)}function Eu(){return M($(),`skill-lock.json`)}function Du(){return{version:1,skills:{}}}function Ou(){let e=Eu();if(!C(e))return Du();try{let t=JSON.parse(E(e,`utf-8`));return t?.version!==1||typeof t.skills!=`object`||t.skills===null?Du():t}catch{return Du()}}function ku(e){T($(),{recursive:!0}),ue(Eu(),JSON.stringify(e,null,2)+`
202
+ `)}function Au(e,t){let n=Ou();n.skills[e]={...n.skills[e],...t},ku(n)}function ju(){let e=me(),t=process.cwd(),n=process.env.XDG_CONFIG_HOME||M(e,`.config`),r=(t,n,r)=>({id:t,displayName:n,skillsDir:M(e,r,`skills`),detectDirs:[M(e,r)]}),i=(t,n)=>t?.trim()||M(e,n),a=(e,t,n)=>({id:e,displayName:t,skillsDir:M(n,`skills`),detectDirs:[n]}),o=[`.openclaw`,`.clawdbot`,`.moltbot`].map(t=>M(e,t)),s=o.find(e=>C(e))??o[0],c=[M(n,`zed`)],l=process.env.APPDATA?.trim();l&&c.push(M(l,`Zed`));let u=process.env.FLATPAK_XDG_CONFIG_HOME?.trim();u&&c.push(M(u,`zed`));let d=i(process.env.CODEX_HOME,`.codex`);return[{id:`universal`,displayName:`Universal (~/.agents/skills)`,skillsDir:M(e,`.agents`,`skills`),detectDirs:[M(e,`.agents`),M(e,`.cline`),M(e,`.dexto`),M(e,`.firebender`),M(e,`.kimi-code`),M(e,`.kimi`),M(e,`.loaf`),M(e,`.warp`),...c]},{id:`universal-xdg`,displayName:`Universal (XDG agents/skills)`,skillsDir:M(n,`agents`,`skills`),detectDirs:[M(n,`agents`),M(n,`amp`),M(t,`.replit`)]},r(`adal`,`AdaL`,`.adal`),r(`aider-desk`,`AiderDesk`,`.aider-desk`),r(`antigravity`,`Antigravity`,`.gemini/antigravity`),r(`antigravity-cli`,`Antigravity CLI`,`.gemini/antigravity-cli`),{id:`astrbot`,displayName:`AstrBot`,skillsDir:M(e,`.astrbot`,`data`,`skills`),detectDirs:[M(t,`data`,`skills`),M(e,`.astrbot`)]},a(`autohand-code`,`Autohand Code CLI`,i(process.env.AUTOHAND_HOME,`.autohand`)),r(`augment`,`Augment`,`.augment`),r(`bob`,`IBM Bob`,`.bob`),a(`claude-code`,`Claude Code`,i(process.env.CLAUDE_CONFIG_DIR,`.claude`)),r(`codearts-agent`,`CodeArts Agent`,`.codeartsdoer`),{id:`codebuddy`,displayName:`CodeBuddy`,skillsDir:M(e,`.codebuddy`,`skills`),detectDirs:[M(t,`.codebuddy`),M(e,`.codebuddy`)]},r(`codemaker`,`Codemaker`,`.codemaker`),r(`codestudio`,`Code Studio`,`.codestudio`),{id:`codex`,displayName:`Codex`,skillsDir:M(d,`skills`),detectDirs:[d,`/etc/codex`]},r(`command-code`,`Command Code`,`.commandcode`),{id:`continue`,displayName:`Continue`,skillsDir:M(e,`.continue`,`skills`),detectDirs:[M(t,`.continue`),M(e,`.continue`)]},r(`cortex`,`Cortex Code`,`.snowflake/cortex`),r(`crush`,`Crush`,`.config/crush`),r(`cursor`,`Cursor`,`.cursor`),{id:`deepagents`,displayName:`Deep Agents`,skillsDir:M(e,`.deepagents`,`agent`,`skills`),detectDirs:[M(e,`.deepagents`)]},{id:`devin`,displayName:`Devin for Terminal`,skillsDir:M(n,`devin`,`skills`),detectDirs:[M(n,`devin`)]},r(`droid`,`Droid`,`.factory`),a(`dsh`,`DeepSeek DSH`,i(process.env.DSH_HOME,`.dsh`)),r(`forgecode`,`ForgeCode`,`.forge`),r(`gemini-cli`,`Gemini CLI`,`.gemini`),r(`github-copilot`,`GitHub Copilot`,`.copilot`),{id:`goose`,displayName:`Goose`,skillsDir:M(n,`goose`,`skills`),detectDirs:[M(n,`goose`)]},a(`grok`,`Grok Build`,i(process.env.GROK_HOME,`.grok`)),a(`hermes`,`Hermes Agent`,Oc(e)),r(`iflow-cli`,`iFlow CLI`,`.iflow`),r(`inference-sh`,`inference.sh`,`.inferencesh`),{id:`jazz`,displayName:`Jazz`,skillsDir:M(e,`.jazz`,`skills`),detectDirs:[M(e,`.jazz`),M(t,`.jazz`)]},r(`junie`,`Junie`,`.junie`),r(`kilo`,`Kilo Code`,`.kilocode`),{id:`kimchi`,displayName:`Kimchi`,skillsDir:M(e,`.config`,`kimchi`,`harness`,`skills`),detectDirs:[M(e,`.config`,`kimchi`)]},r(`kiro-cli`,`Kiro CLI`,`.kiro`),r(`kode`,`Kode`,`.kode`),r(`lingma`,`Lingma`,`.lingma`),r(`mcpjam`,`MCPJam`,`.mcpjam`),{id:`minimax-code`,displayName:`MiniMax Code`,skillsDir:M(e,`.minimax`,`skills`),detectDirs:[M(e,`.minimax`),`/Applications/MiniMax Code.app`]},a(`mistral-vibe`,`Mistral Vibe`,i(process.env.VIBE_HOME,`.vibe`)),r(`moxby`,`Moxby`,`.moxby`),r(`mux`,`Mux`,`.mux`),r(`neovate`,`Neovate`,`.neovate`),{id:`opencode`,displayName:`OpenCode`,skillsDir:M(n,`opencode`,`skills`),detectDirs:[M(n,`opencode`)]},{id:`openclaw`,displayName:`OpenClaw`,skillsDir:M(s,`skills`),detectDirs:o},r(`openhands`,`OpenHands`,`.openhands`),r(`ona`,`Ona`,`.ona`),r(`pi`,`Pi`,`.pi/agent`),r(`pochi`,`Pochi`,`.pochi`),r(`qoder`,`Qoder`,`.qoder`),r(`qoder-cn`,`Qoder CN`,`.qoder-cn`),r(`qwen-code`,`Qwen Code`,`.qwen`),r(`reasonix`,`Reasonix`,`.reasonix`),r(`rovodev`,`Rovo Dev`,`.rovodev`),r(`roo`,`Roo Code`,`.roo`),{id:`tabnine-cli`,displayName:`Tabnine CLI`,skillsDir:M(e,`.tabnine`,`agent`,`skills`),detectDirs:[M(e,`.tabnine`)]},r(`terramind`,`Terramind`,`.terramind`),r(`tinycloud`,`Tinycloud`,`.tinycloud`),r(`trae`,`Trae`,`.trae`),r(`trae-cli`,`Trae CLI`,`.traecli`),r(`trae-cn`,`Trae CN`,`.trae-cn`),r(`windsurf`,`Windsurf`,`.codeium/windsurf`),r(`workbuddy`,`Tencent WorkBuddy`,`.workbuddy`),{id:`zcode`,displayName:`ZCode`,skillsDir:M(e,`.zcode`,`skills`),detectDirs:[M(e,`.zcode`),`/Applications/ZCode.app`]},r(`zencoder`,`Zencoder`,`.zencoder`)]}function Mu(){return ju().filter(e=>e.detectDirs.some(e=>C(e)))}function Nu(e,t){return process.platform===`win32`?e.toLowerCase()===t.toLowerCase():e===t}function Pu(e){let t=$();if(process.platform===`win32`){let n=e.toLowerCase(),r=t.toLowerCase();return n===r||n.startsWith(r+pe)}return e===t||e.startsWith(t+pe)}function Fu(e){try{if(!w(e).isSymbolicLink())return!1;let t=se(e);return Pu(j(t)?t:fe(A(e),t))}catch{return!1}}function Iu(e,t){if(!t.some(t=>Nu(t,e)))return!1;try{return w(e).isDirectory()}catch{return!1}}function Lu(e){try{return w(e).isDirectory()?C(M(e,`SKILL.md`)):!1}catch{return!1}}const Ru=`existing file/dir not managed by bl skill`;function zu(e,t=Mu(),n=[]){let r=M($(),e),i=[];for(let a of t){let t=M(a.skillsDir,e);try{let e=!1;try{w(t),e=!0}catch{}if(e){if(Fu(t))O(t);else if(Iu(t,n))O(t,{recursive:!0,force:!0});else if(Lu(t))O(t,{recursive:!0,force:!0});else{i.push({agent:a.id,path:t,mode:`skipped`,reason:Ru});continue}}T(a.skillsDir,{recursive:!0});try{k(r,t,process.platform===`win32`?`junction`:`dir`),i.push({agent:a.id,path:t,mode:`symlink`})}catch{ae(r,t,{recursive:!0}),i.push({agent:a.id,path:t,mode:`copy`})}}catch(e){i.push({agent:a.id,path:t,mode:`skipped`,reason:e instanceof Error?e.message:String(e)})}}return i}function Bu(e,t=Mu(),n=[]){let r=zu(e,t,n),i=r.filter(e=>e.mode!==`skipped`),a=i.map(e=>e.path),o=r.filter(e=>e.mode===`skipped`&&e.reason===Ru).map(e=>e.path),s=n.filter(e=>!a.some(t=>Nu(t,e))&&!o.some(t=>Nu(t,e)));return{results:r,linkedAgents:i.map(e=>e.agent),links:[...a,...s]}}function Vu(e,t=[]){let n=[],r=new Set(t);for(let t of ju())r.add(M(t.skillsDir,e));for(let e of r)try{let r;try{r=w(e)}catch{continue}r.isSymbolicLink()?Fu(e)&&n.push(e):t.some(t=>Nu(t,e))&&n.push(e)}catch{}return n}function Hu(e,t=[]){let n=[];for(let r of Vu(e,t))try{if(Fu(r))O(r);else if(!w(r).isSymbolicLink()&&t.some(e=>Nu(e,r)))O(r,{recursive:!0,force:!0});else continue;n.push(r)}catch{}return n}function Uu(e){return e.includes(`\\`)||e.includes(`\0`)||e.startsWith(`/`)||/^[a-zA-Z]:[\\/]/.test(e)?!1:!e.split(`/`).includes(`..`)}async function Wu(e,t){let n=ye.extract();n.on(`entry`,(e,r,i)=>{if(!Uu(e.name)){r.on(`error`,()=>{}),r.resume(),n.destroy(/* @__PURE__ */ Error(`unsafe tar entry: ${e.name}`));return}let a=M(t,e.name);if(e.type===`directory`){T(a,{recursive:!0}),r.resume(),r.on(`end`,i);return}T(A(a),{recursive:!0});let o=oe(a);r.pipe(o),o.on(`finish`,i),o.on(`error`,i)}),await _e(ge.from(e),ve(),n)}function Gu(e){let t=[],n=r=>{for(let i of D(r?M(e,r):e,{withFileTypes:!0})){let e=r?`${r}/${i.name}`:i.name;i.isDirectory()?n(e):i.isFile()&&t.push(e)}};n(``),t.sort((e,t)=>e<t?-1:+(e>t));let r=he(`sha256`);for(let n of t)r.update(n),r.update(E(M(e,n)));return`sha256:${r.digest(`hex`)}`}function Ku(e,t,n=259){let r,i=a=>{for(let o of D(a,{withFileTypes:!0}).sort((e,t)=>e.name.localeCompare(t.name))){let s=M(a,o.name),c=de(e,s);for(let e of t){let t=M(e,c).length;t>n&&t>(r?.pathLength??0)&&(r={root:e,relativePath:c,pathLength:t})}o.isDirectory()&&i(s)}};for(let e of t)e.length>n&&e.length>(r?.pathLength??0)&&(r={root:e,relativePath:``,pathLength:e.length});return i(e),r}function qu(e){let t=[],n=r=>{for(let i of D(r,{withFileTypes:!0}).sort((e,t)=>e.name.localeCompare(t.name))){let a=M(r,i.name),o=de(e,a);i.isDirectory()?(t.push({relativePath:o,type:`directory`}),n(a)):i.isFile()&&t.push({relativePath:o,type:`file`})}};return n(e),t}function Ju(e,t){let n=qu(e),r=new Set(n.map(e=>e.relativePath));T(t,{recursive:!0});for(let r of n){let n=M(e,r.relativePath),i=M(t,r.relativePath);if(C(i)){let e=w(i);(!(r.type===`directory`?e.isDirectory():e.isFile())||e.isSymbolicLink())&&O(i,{recursive:!0,force:!0})}r.type===`directory`?T(i,{recursive:!0}):(T(A(i),{recursive:!0}),ie(n,i))}let i=qu(t).filter(e=>!r.has(e.relativePath)).sort((e,t)=>t.relativePath.length-e.relativePath.length);for(let e of i)O(M(t,e.relativePath),{recursive:!0,force:!0})}function Yu(e){let t=e?.code;return t===`EPERM`||t===`EBUSY`}function Xu(e){try{C(e)&&O(e,{recursive:!0,force:!0})}catch{}}function Zu(e,t,n={}){T(A(t),{recursive:!0});let r=`${t}.old-${Date.now()}`;if(C(t))try{ce(t,r)}catch(i){if(!(n.allowInPlaceFallback??process.platform===`win32`)||!Yu(i))throw i;try{Ju(t,r),Ju(e,t),Xu(r);return}catch(e){try{C(r)&&Ju(r,t)}catch{}throw Error(`Skill directory is in use and could not be updated in place. Close running agent hosts and retry. / Skill 目录正被占用,无法原地更新;请关闭正在运行的 Agent 后重试。 ${e instanceof Error?e.message:String(e)}`,{cause:e})}}try{ce(e,t)}catch(e){throw C(r)&&!C(t)&&ce(r,t),e}Xu(r)}function Qu(e){if(e instanceof P){let t=e.api?.httpStatus;if(t!==void 0){if(t===408||t===429)return!0;if(t>=400&&t<500)return!1}return!0}return!0}function $u(e){return e instanceof P&&e.api?.httpStatus===429}function ed(e,t){return Math.min(t*2**(e-1),1e4)}function td(e){return new Promise(t=>setTimeout(t,e))}async function nd(e,t=3){let n=typeof t==`number`?{attempts:t}:t,r=n.attempts??3,i=n.shouldRetry??Qu,a=n.backoffBaseMs??500,o;for(let t=1;t<=r;t++)try{return await e(t)}catch(e){if(o=e,t>=r||!i(e,t))break;$u(e)&&await td(ed(t,a))}throw o}function rd(){return(process.env.BAILIAN_SKILL_REGISTRY_URL?.trim()||`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/skills`).replace(/\/+$/,``)}async function id(e=3e4,t=3){return nd(async()=>{let t=`${rd()}/index.json`,n;try{n=await fetch(t,{signal:AbortSignal.timeout(e)})}catch(e){throw new P(`Cannot access skill registry: ${t}`,N.NETWORK,`Check network connectivity; if using a private mirror, verify BAILIAN_SKILL_REGISTRY_URL configuration`,{cause:e})}if(!n.ok)throw new P(`Skill registry returned HTTP ${n.status}: ${t}`,N.NETWORK,n.status===404?`Skill index not yet published or registry URL is incorrect; confirm the publisher has generated index.json`:`Remote error, retry later`);let r;try{r=await n.json()}catch(e){throw new P(`Skill index index.json is not valid JSON`,N.GENERAL,`Remote may be in the middle of publishing, retry later`,{cause:e})}let i=r;if(typeof i!=`object`||!i||typeof i.skills!=`object`||i.skills===null)throw new P(`Skill index index.json has invalid structure`,N.GENERAL,`Retry later or contact the publisher`);return i},{attempts:t})}const ad=/^sha256-[0-9a-f]{64}\.tar\.br$/;function od(e){let t=e?.object;return t&&ad.test(t)?t:`skill.tar.br`}async function sd(e,t,n=3){return nd(async()=>{let n=`${rd()}/${e}/${od(t)}`,r;try{r=await fetch(n,{signal:AbortSignal.timeout(12e4)})}catch(t){throw new P(`Failed to download skill ${e}: ${n}`,N.NETWORK,`Network error, retryable`,{cause:t})}if(!r.ok)throw new P(`Failed to download skill ${e}: HTTP ${r.status}`,N.NETWORK,r.status===404?`index.json and skill object are temporarily inconsistent (publishing in progress), retry later`:`Remote error, retry later`);return Buffer.from(await r.arrayBuffer())},{attempts:n})}function cd(e){return e.replace(/[\\/:*?"<>|\s]+/g,`-`).replace(/\.\.+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`unnamed-skill`}function ld(e){return e.length>0&&cd(e)===e}function ud(e,t){throw new P(`Skill ${e} validation failed: ${t}`,N.GENERAL,`This skill package does not conform to the SKILL.md spec; contact the skill publisher to fix and republish`)}function dd(e){if(!e.startsWith(`---`))return null;let t=/^---\r?\n([\s\S]*?)\r?\n---(\r?\n|$)/.exec(e);return t?t[1]:null}function fd(e,t){let n=M(e,`SKILL.md`),r;try{le(n).isFile()||ud(t,`SKILL.md is not a regular file`),r=E(n,`utf-8`)}catch(e){if(e instanceof P)throw e;ud(t,`missing SKILL.md`)}let i=dd(r);i===null&&ud(t,`SKILL.md is missing frontmatter (--- delimited YAML header)`);let a;try{a=_(i)}catch{ud(t,`frontmatter is not valid YAML`)}(typeof a!=`object`||!a)&&ud(t,`frontmatter is not a key-value structure`);let o=a,s=typeof o.name==`string`?o.name.trim():``,c=typeof o.description==`string`?o.description.trim():``;return(!s||!c)&&ud(t,`frontmatter is missing non-empty name / description fields`),{name:s,description:c}}function pd(e){if(!ld(e))throw new P(`Invalid skill name: ${e}`,N.GENERAL,`Skill name contains path separators, traversal sequences, or other illegal characters; refusing to write to disk`)}async function md(e,t,n,r){pd(e);let i=$(),a=M(i,e),o=M(i,`.tmp-${e}-${process.pid}-${Date.now()}`);try{T(o,{recursive:!0}),await Wu(t,o);let i=Ku(o,r??(process.platform===`win32`?[a]:[]));if(i)throw new P(`Skill ${e} contains a Windows-incompatible path (${i.pathLength} characters): ${i.relativePath}`,N.GENERAL,`The skill package must shorten this path before it can be installed safely on Windows. / Skill 包必须缩短该路径后才能在 Windows 上安全安装。`);if(n?.startsWith(`sha256:`)){let t=Gu(o);if(t!==n)throw new P(`Skill ${e} failed integrity check: index says ${n}, archive is ${t}`,N.GENERAL,`Downloaded archive does not match the index fingerprint (registry may be mid-publish); retry later`)}let s=fd(o,e);return Zu(o,a),{name:e,path:a,meta:s}}finally{try{C(o)&&O(o,{recursive:!0,force:!0})}catch{}}}async function hd(e,t,n,r){if(t.compression&&t.compression!==`tar.br`)throw new P(`Skill ${e} uses unsupported compression format: ${t.compression}`,N.GENERAL,`Upgrade bailian-cli to the latest version and retry`);return md(e,await sd(e,t,n),t.contentHash,r)}function gd(e){pd(e);let t=M($(),e);return C(t)?(O(t,{recursive:!0,force:!0}),!0):!1}function _d(e,t){return{...e.contentHash?{contentHash:e.contentHash}:{},...e.publishedAt?{publishedAt:e.publishedAt}:{},installedAt:(/* @__PURE__ */ new Date()).toISOString(),sourceType:`oss`,...e.description?{description:e.description}:{},links:t}}async function vd(e,t,n=Mu(),r=[],i){await hd(e,t,i,process.platform===`win32`?[M($(),e),...n.map(t=>M(t.skillsDir,e))]:void 0);let a=Bu(e,n,r);return{lockEntry:_d(t,a.links),linkedAgents:a.linkedAgents}}const yd=`bailian-docs-llm-wiki`;function bd(){return M(I(),`skills/bailian-docs-llm-wiki`)}function xd(){return C(M(bd(),`models`,`models.jsonl`))}function Sd(){return M(I(),`wiki-sync-state.json`)}function Cd(){try{return JSON.parse(E(Sd(),`utf-8`))}catch{return null}}function wd(e){try{ue(Sd(),JSON.stringify(e))}catch{}}function Td(e){try{Au(yd,e)}catch{}}function Ed(e){try{let t=Ou().skills[yd];return t?.contentHash!==e||!Array.isArray(t.links)}catch{return!0}}async function Dd(){try{return(await id(3e3,1)).skills[yd]??null}catch{return null}}async function Od(){let e=Cd(),t=Date.now();if(e&&t-e.lastChecked<432e5&&xd())return!1;let n=await Dd();if(!n?.contentHash)return!1;if(xd()&&(!e||e.contentHash===n.contentHash)){if(wd({lastChecked:t,contentHash:n.contentHash}),Ed(n.contentHash)){let e=Ou().skills[yd]?.links??[];Td(_d(n,Bu(yd,Mu(),e).links))}return!1}try{let e=Ou().skills[yd]?.links??[];Td((await vd(yd,n,Mu(),e,1)).lockEntry)}catch{return!1}return wd({lastChecked:t,contentHash:n.contentHash}),!0}const kd=`bailian-cli`,Ad=`install-method`,jd=/* @__PURE__ */ new Set([`binary`,`npm`,`brew`,`winget`,`unknown`]);function Md(e){return e?M(I(),`${Ad}.${e}`):M(I(),Ad)}function Nd(){if(process.env.BAILIAN_COMPILED===`1`)return!0;let e=process.execPath.replaceAll(`\\`,`/`);return/(^|\/)node(\.exe)?$/i.test(e)||e.includes(`/node/`)||/(^|\/)bun(\.exe)?$/i.test(e)||e.includes(`/.bun/`)?!1:/\/(bl|bailian)(\.exe)?$/i.test(e)}function Pd(e){if(!e)return null;let t=e.trim().toLowerCase();return jd.has(t)?t:null}function Fd(e){try{return Pd(E(e,`utf-8`).split(`
203
+ `)[0])}catch{return null}}function Id(){let e=Pd(process.env.BAILIAN_INSTALL_METHOD);if(e)return e;if(Nd()){let e=process.execPath.replaceAll(`\\`,`/`);return e.includes(`/Cellar/`)||e.includes(`/homebrew/`)?`brew`:`binary`}return`npm`}function Ld(e){let t=Pd(process.env.BAILIAN_INSTALL_METHOD);if(t)return t;if(e?.clientName){let t=Fd(Md(e.clientName));if(t)return t;if(e.clientName===`bailian-cli`){let e=Fd(Md());if(e)return e}return Id()}return Fd(Md())||Id()}function Rd(e){let t=Ld(e);return t===`binary`&&e.npmPackage!==`bailian-cli`?`npm`:t}function zd(e,t={clientName:kd}){try{let n=I();C(n)||T(n,{recursive:!0,mode:448}),ue(Md(t.clientName),`${e}\n`,{mode:384}),t.clientName===`bailian-cli`&&ue(Md(),`${e}\n`,{mode:384})}catch{}}const Bd=`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/release`,Vd=`https://github.com/modelstudioai/cli/releases`,Hd=`https://bailian.aliyun.com/cli/install.sh`,Ud=`https://bailian.aliyun.com/cli/install.ps1`;function Wd(){let e=process.env.BAILIAN_CLI_CDN?.trim();return e?e.replace(/\/$/,``):Bd}function Gd(e=`latest`){let t=e.trim();return!t||t===`latest`||t===`stable`?`${Wd()}/manifest.json`:`${Wd()}/${t}.json`}function Kd(e,t){let n=e.startsWith(`v`)?e:`v${e}`;return`${Wd()}/${n}/${t}`}function qd(){let e=process.platform,t=process.arch,n;if(e===`darwin`)n=`darwin`;else if(e===`linux`)n=`linux`;else if(e===`win32`)n=`windows`;else throw Error(`Unsupported platform for binary updates: ${e}`);let r;if(t===`arm64`)r=`arm64`;else if(t===`x64`)r=`x64`;else throw Error(`Unsupported architecture for binary updates: ${t}`);if(n===`linux`&&r===`arm64`)throw Error(`linux arm64 is not supported for binary updates; use: npm install -g bailian-cli`);if(n===`windows`&&r===`arm64`)throw Error(`windows arm64 is not supported for binary updates; use: npm install -g bailian-cli`);return{os:n,arch:r,fileSuffix:e===`win32`?`.exe`:``}}function Jd(e,t,n,r=!1){return`bl-${e}-${t}-${n}.zip`}function Yd(e,t,n){if(t!==`windows`)return`bl-${e}-${t}-${n}.tar.gz`}function Xd(e,t,n,r=!1){return`bl-${e}-${t}-${n}${r?`.exe`:``}`}function Zd(e){return new Promise((t,n)=>{S.open(e,{lazyEntries:!0},(r,i)=>{if(r||!i){n(r??/* @__PURE__ */ Error(`Failed to open zip: ${e}`));return}t(i)})})}function Qd(e){let t=e.replace(/\\/g,`/`);return t.includes(`/`)?t.slice(t.lastIndexOf(`/`)+1):t}async function $d(e,t,n){let r=await Zd(e);return new Promise((i,a)=>{let o=!1,s=e=>{if(!o){o=!0;try{r.close()}catch{}a(e instanceof Error?e:Error(String(e)))}},c=e=>{if(!o){o=!0;try{r.close()}catch{}i(e)}};r.on(`error`,s),r.on(`end`,()=>{o||s(/* @__PURE__ */ Error(n?`Zip entry not found: ${n} in ${e}`:`Zip has no file entries: ${e}`))}),r.on(`entry`,e=>{if(o)return;let i=e.fileName.replace(/\\/g,`/`);if(i.endsWith(`/`)){r.readEntry();return}let a=Qd(i);if(n&&i!==n&&a!==n){r.readEntry();return}r.openReadStream(e,(n,r)=>{if(n||!r){s(n??/* @__PURE__ */ Error(`Failed to read zip entry: ${e.fileName}`));return}(async()=>{try{await be(A(t),{recursive:!0}),await _e(r,oe(t)),c(a)}catch(e){s(e)}})()})}),r.readEntry()})}function ef(e,t){let n=(e??(t?`all`:``)).trim();if(!n)throw new F(`--name cannot be empty`,`Use --name all or --name skill-a,skill-b`);let r=[...new Set(n.split(`,`).map(e=>e.trim()).filter(Boolean))];if(r.includes(`all`)){if(r.length>1)throw new F(`--name all cannot be mixed with specific skill names`,`Use either all or a comma-separated list of names`);return`all`}return r}function tf(){let e=$();return C(e)?D(e).filter(t=>{if(t.startsWith(`.`)||t.includes(`.tmp-`)||t.includes(`.old-`))return!1;try{return le(M(e,t)).isDirectory()}catch{return!1}}):[]}function nf(e,t,n){let r=new Set(n),i=/* @__PURE__ */ new Set,a=[];for(let[n,o]of Object.entries(e.skills)){i.add(n);let e=t.skills[n];if(e){let t=r.has(n)?e.contentHash===o.contentHash?`installed`:`outdated`:`missing`;a.push({name:n,status:t,publishedAt:o.publishedAt,description:o.description})}else r.has(n)?a.push({name:n,status:`untracked`,publishedAt:o.publishedAt,description:o.description}):a.push({name:n,status:`not-installed`,publishedAt:o.publishedAt,description:o.description})}for(let[e,n]of Object.entries(t.skills))i.has(e)||(i.add(e),a.push({name:e,status:r.has(e)?`installed`:`missing`,publishedAt:n.publishedAt,description:n.description}));for(let e of n)i.has(e)||a.push({name:e,status:`untracked`});return a.sort((e,t)=>e.name<t.name?-1:+(e.name>t.name))}export{Ue as API_KEY_CAPABILITY_PATTERN,yc as ASYNC_FLAG,Le as BAILIAN_HOST,Vs as BILLING_METHOD,kd as BINARY_PRODUCT_CLIENT_NAME,P as BailianError,pl as Budgets,vs as CALC_DATASETS_TOKENS_API,Ft as CHANNEL,Y as CHARGE_TYPE,Tc as COMMAND_PACK_API_VERSION,vc as CONCURRENT_FLAG,Be as CONFIG_FILE_KEYS,xc as CONSOLE_AUTH_FLAGS,Q as Capabilities,En as Client,Z as Complexities,ml as ContextNeeds,Lt as DASHSCOPE_SERVICE_HEADER,va as DECISION_QUESTION_TYPES,Eo as DECISION_REGIONS,Hs as DEFAULT_BILLING_METHOD,Bd as DEFAULT_CLI_CDN_BASE,To as DEFAULT_DECISION_MODEL,Do as DEFAULT_DECISION_REGION,zs as DEFAULT_DEPLOY_PLAN,Ud as DEFAULT_INSTALL_PS1_URL,Hd as DEFAULT_INSTALL_SCRIPT_URL,ze as DEFAULT_LANGUAGE,Yo as DEFAULT_TRAINING_TYPE,tc as DEPLOY_LIST_INDEPENDENT_API,J as DEPLOY_PLAN,$s as DEPLOY_START_API,ec as DEPLOY_STOP_API,Ie as DOCS_HOSTS,ys as ESTIMATE_FINETUNE_TOKENS_API,N as ExitCode,gl as Features,Vd as GITHUB_RELEASES_BASE,_c as GLOBAL_FLAGS,ts as INSUFFICIENT_SAMPLES_CODE,$i as MAX_CPT_BYTES,Qi as MAX_DATASET_BYTES,ya as MAX_DECISION_CHOICE_OPTIONS,ea as MAX_DECISION_DATASET_BYTES,xa as MAX_DECISION_SCORE_LEVELS,ta as MAX_MEDIA_ZIP_BYTES,ba as MIN_DECISION_SCORE_LEVELS,bc as MODEL_AUTH_FLAGS,Fi as MODEL_LIST_API,yn as McpClient,fl as Modalities,_l as ModelCategories,Sc as OPENAPI_AUTH_FLAGS,It as OPEN_API_SOURCE,Ii as PREDICT_CONFIG_API,hl as QualityPreferences,Wr as RAG_PATHS,Fe as REGIONS,zr as SANDBOX_PATHS,vl as SEMANTIC_TOP_K,oc as SPEECH_BIASING_MODEL,Zs as STRATEGIES,Re as SUPPORTED_LANGUAGES,_s as TRAINING_MODEL_PRICE_API,Jo as TRAINING_TYPES_CLI,qo as TRAINING_TYPE_MAP,F as UsageError,Ct as activateConfigProfile,Fr as agentStudioFilesPath,ir as agentStudioHost,Ol as analyzeIntent,Cn as anonymousConsoleCall,Wn as appCompletionPath,Zu as atomicSwap,mn as bailianMcpPath,hn as bailianMcpSsePath,Jd as binaryAssetFileName,Xd as binaryInnerFileName,Yd as binaryTarFileName,Wt as buildAcsCanonicalQuery,pi as buildAsrContextMessages,hi as buildAsrFlashRequest,mi as buildAsyncAsrLanguageFields,Su as buildDocLink,qs as buildPrepaidInfo,Ws as buildReservationCapacity,Dt as buildSettings,_d as buildSkillLockEntry,Et as buildSources,sc as buildVocabularyRequest,Tn as callConsoleGateway,Go as cancelCompressJob,Po as cancelFineTune,Gd as channelManifestUrl,Mn as chatPath,_i as collectAsrTranscriptionItems,Gu as computeDirContentHash,nf as computeSkillStatuses,vn as connectBailianMcpWithFallback,Mi as createBailianControlUser,As as createCapacityInstance,Vo as createCompressJob,ws as createDeployment,jo as createFineTune,Oi as createInstrumentedFetch,zc as createTrackingEvent,lc as createVocabulary,Cc as credentialFlagDefs,Pn as decisionPath,Bs as defaultDeployPlan,wc as defineCommand,Ns as deleteCapacityInstance,Ko as deleteCompressJob,wt as deleteConfigProfile,Zi as deleteDataset,Fs as deleteDeployment,Fo as deleteFineTune,pc as deleteVocabulary,Er as deploymentCapacityInstancePath,Or as deploymentCapacityInstanceRenewPath,Dr as deploymentCapacityInstanceScalePath,Tr as deploymentCapacityInstancesPath,Ar as deploymentCapacityOperationPath,kr as deploymentOverflowPath,nt as describeAuthState,qd as detectBinaryPlatform,Id as detectInstallMethod,Mu as detectInstalledAgents,mo as detectModality,ct as detectOutputFormat,sd as downloadSkillAsset,Sn as effectiveConsoleGatewayConfig,Du as emptySkillLock,it as ensureConfigDir,Ss as estimateCptTokens,xs as estimateSftDpoTokens,Ro as exportCheckpoint,gi as extractAsrFlashText,Wu as extractTarBr,$d as extractZipEntryToFile,Bu as fanOutSkillToAgents,es as fetchModelCapability,Ui as fetchModelDetail,Bi as fetchModelGroups,Hi as fetchModelGroupsAll,Li as fetchModelList,Ri as fetchModelListAll,Ki as fetchPredictConfig,id as fetchSkillsIndex,bs as fetchTrainingModelPrice,ac as findDeploymentEntry,zi as findModelByName,Vi as flattenModelGroups,Zc as flushTelemetry,st as formatErrorJson,wo as formatIssue,ot as formatJson,lt as formatOutput,at as formatText,An as generateCLIAccessToken,Dc as generateFilename,ju as getAgentTargets,At as getApiKeyLoginKind,Os as getCapacityInstance,ks as getCapacityOperation,Wd as getCliCdnBase,Uo as getCompressJob,Wo as getCompressJobLogs,I as getConfigDir,L as getConfigPath,rt as getCredentialsPath,Xi as getDataset,Es as getDeployment,No as getFineTune,Io as getFineTuneLogs,Oc as getHermesHome,Ld as getInstallMethod,kt as getModelProfilePreset,dl as getModels,hs as getProfile,Eu as getSkillLockPath,rd as getSkillRegistryBaseUrl,$ as getSkillsDir,Rd as getUpdateInstallMethod,Gs as hasPrepaidFlags,Rn as image2ImagePath,Bn as image2videoPath,$t as imageFileToDataUri,Fn as imagePath,In as imageSyncPath,Ln as imageText2ImagePath,fi as inferAudioFormatHint,Oa as inspectDecisionQuestion,Aa as inspectDecisionQuestionId,ka as inspectDecisionQuestionTable,ja as inspectDecisionQuestions,wa as inspectDecisionState,hd as installSkill,md as installSkillFromBuffer,vd as installSkillWithFanout,We as isApiKeyCapability,Nd as isCompiledBinary,bi as isDashScopeGateway,W as isDecisionObject,$r as isLegacyImage2ImageModel,Qr as isLegacyText2ImageModel,nn as isLocalFile,Uu as isSafeEntryName,ld as isSafeSkillName,nu as isSemanticAvailable,gn as isStreamableHttpUnsupported,Jr as isSyncMultimodalImageModel,Xo as isTrainingTypeCli,_n as isUrlOverrideSseFallbackCandidate,ei as isWanxFunctionImageEditModel,rr as knowledgeChatEndpoint,er as knowledgeRetrievePath,nr as knowledgeSearchEndpoint,zu as linkSkillToAgents,Ni as listBailianControlWorkspaces,Ds as listCapacityInstances,Lo as listCheckpoints,Ho as listCompressJobs,Bo as listCompressTemplates,Yi as listDatasets,Is as listDeployableModels,Ts as listDeployments,Mo as listFineTunes,ic as listIndependentDeployedModels,tf as listSkillDirsOnDisk,Co as listSupportedFormats,$o as listSupportedTrainingTypes,gs as listTrainingTypes,uc as listVocabularies,Qc as localSink,Nt as makeAuthStore,qi as makeConfigStore,Me as mapApiError,Pt as maskToken,Od as maybeSyncWikiData,cr as mcpWebSearchPath,Gn as memoryAddPath,qn as memoryListPath,Jn as memoryNodePath,Kn as memorySearchPath,Qo as modelSupportsTrainingType,Hn as modelsLimitsPath,Un as modelsPermissionsPath,Ge as normalizeApiKeyCapabilities,ht as normalizeConfigName,Ne as normalizeModelBaseUrl,Fc as parseBooleanValue,qe as parseConfigFile,ra as parseDatasetSchemaFlag,hc as parseInstantVocabulary,Ic as parseOptionalBooleanValue,cn as parseSSE,wi as parseSecurityBody,ef as parseSkillNames,gc as parseVocabularyEntries,Qs as pickPlanStrategy,xo as pickValidator,Vu as planUnlinkSkillFromAgents,ns as preflightBatchSizeGate,Qn as profileSchemaPath,dc as queryVocabulary,Pr as ragEndpoint,Tu as rankModels,z as readConfigFile,bt as readConfigProfiles,Ou as readSkillLock,Nc as readTextFromPathOrStdin,Bl as recallCandidates,vu as recallSemantic,en as redactDataUri,jn as refreshAccessToken,So as registerValidator,Kd as releaseAssetUrl,$c as remoteSink,gd as removeSkillDir,Ms as renewCapacityInstance,Bt as request,Ut as requestJson,Pi as resetBailianControlPolicies4Agent,Xe as resolveApiKey,di as resolveAsrApi,od as resolveAssetFileName,Lc as resolveBooleanFlag,Ze as resolveConsole,rn as resolveFileUrl,ii as resolveImageEditApi,ri as resolveImageGenerateApi,ti as resolveImageSizeProfile,Ye as resolveModelBaseUrl,Je as resolveModelBaseUrlState,Qe as resolveOpenApi,jc as resolveOutputDir,ni as resolvePromptExtendDefault,Rc as resolveWatermark,Nn as responsesPath,Pc as runWithConcurrency,Lr as sandboxApiPath,Ir as sandboxBaseUrl,Rr as sandboxEndpoint,Vr as sandboxInstanceActionPath,Br as sandboxInstancePath,Ur as sandboxTemplateBuildStatusPath,Hr as sandboxTemplatePath,cd as sanitizeSkillName,js as scaleCapacityInstance,Ls as scaleDeployment,sr as securityAgentLogsEndpoint,Ti as securityGet,or as securityOverviewEndpoint,Tt as selectApiKeyResolutionSources,Gt as signAcsRequest,Rt as sourceConfig,Xn as speechRecognizePath,Yn as speechSynthesizePath,Zn as speechVocabularyPath,nc as startModelService,rc as stopModelService,Ao as stripDecisionTrainingFields,Mc as stripUndefined,Vn as taskPath,rl as trackCommandExecution,B as trackingHeaders,Zo as trainingTypeMethodVariant,Hu as unlinkSkillFromAgents,ko as unwrapDecisionQuestions,H as unwrapResponse,Rs as updateDeployment,Ps as updateDeploymentOverflow,fc as updateVocabulary,Ji as uploadDataset,tn as uploadFile,Au as upsertSkillLockEntry,$n as userProfilePath,St as validateConfigProfileActivation,q as validateDataset,Ks as validatePrepaidFlags,Us as validateReservationCapacity,fd as validateSkillDir,dt as validateTimeout,zn as videoGeneratePath,tr as workspaceMaaSBaseUrl,vt as writeConfigFile,zd as writeInstallMethodSync,ku as writeSkillLock};