bailian-cli-core 2.0.0 → 2.0.1

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,20 +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{cpSync as ie,createWriteStream as ae,existsSync as C,lstatSync as w,mkdirSync as T,readFileSync as E,readdirSync as D,readlinkSync as oe,renameSync as se,rmSync as O,statSync as ce,symlinkSync as le,writeFileSync as k}from"node:fs";import{dirname as A,isAbsolute as ue,join as j,resolve as M,sep as de}from"node:path";import{homedir as fe}from"node:os";import{createHash as pe}from"node:crypto";import{Readable as me}from"node:stream";import{pipeline as he}from"node:stream/promises";import{createBrotliDecompress as ge}from"node:zlib";import _e from"tar-stream";import{mkdir as ve}from"node:fs/promises";var ye=Object.create,be=Object.defineProperty,xe=Object.getOwnPropertyDescriptor,Se=Object.getOwnPropertyNames,Ce=Object.getPrototypeOf,we=Object.prototype.hasOwnProperty,Te=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),Ee=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=Se(t),a=0,o=i.length,s;a<o;a++)s=i[a],!we.call(e,s)&&s!==n&&be(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=xe(t,s))||r.enumerable});return e},De=(e,t,n)=>(n=e==null?{}:ye(Ce(e)),Ee(t||!e||!e.__esModule||!we.call(e,`default`)?be(n,`default`,{value:e,enumerable:!0}):n,e)),Oe=/* @__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=ke(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 ke(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 Ae(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 je(e){let t=e.trim(),n;try{n=new URL(t)}catch{throw Me(e)}if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Me(e);return n.origin}function Me(e){return new P(`Invalid model base URL "${e}".`,N.USAGE,`Use an absolute http(s) URL.`)}const Ne={cn:`https://dashscope.aliyuncs.com`,us:`https://dashscope-us.aliyuncs.com`,intl:`https://dashscope-intl.aliyuncs.com`},Pe={cn:`https://help.aliyun.com/zh/model-studio`,us:`https://help.aliyun.com/zh/model-studio`,intl:`https://help.aliyun.com/zh/model-studio`},Fe=`https://bailian.cn-beijing.aliyuncs.com`,Ie=[`en-US`,`zh-CN`],Le=`en-US`,Re=[`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`],ze=/* @__PURE__ */ new Set([`text`,`json`]),Be=/* @__PURE__ */ new Set([`domestic`,`international`]),Ve=/^[a-z0-9]+(?:[.-][a-z0-9]+)*$/;function He(e){return Ve.test(e)}function Ue(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(!He(e))return[];t.includes(e)||t.push(e)}return t}function We(e){try{return je(e)}catch{return}}function Ge(e){if(!e||typeof e!=`object`||Array.isArray(e))return{};let t=e,n={};if(typeof t.language==`string`&&Ie.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=We(t.base_url);e&&(n.base_url=e)}typeof t.output==`string`&&ze.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=Ue(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`&&Be.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 Ke(e,t=Ne.cn){let n=e.flags.baseUrl||e.env.DASHSCOPE_BASE_URL||e.file.base_url;return{baseUrl:je(n||t),baseUrlIsDefault:!n}}function qe(e,t=Ne.cn){return Ke(e,t).baseUrl}function Je(e){let t=qe(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 Ye(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 Xe(e){let t=Ze(`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=Ze(`env`,e.env.ALIBABA_CLOUD_ACCESS_KEY_ID,e.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,!!(Qe(e.env.ALIBABA_CLOUD_ACCESS_KEY_ID)||Qe(e.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET)),e.env.ALIBABA_CLOUD_SECURITY_TOKEN);if(n)return n;let r=Ze(`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 Ze(e,t,n,r,i){if(!r)return;let a=Qe(t),o=Qe(n);if(!a||!o)throw new P(`Incomplete OpenAPI AK/SK credentials found.`,N.AUTH,$e(e));return{accessKeyId:a,accessKeySecret:o,securityToken:Qe(i),source:e}}function Qe(e){return e?.trim()||void 0}function $e(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 et(e){let t={};try{t.apiKey=Je(e)}catch{}try{t.console=Ye(e)}catch{}try{t.openapi=Xe(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 tt(){return g(I(),`credentials.json`)}async function nt(){let e=I(),t=await import(`fs/promises`);await t.mkdir(e,{recursive:!0,mode:448});try{await t.chmod(e,448)}catch{}}function rt(e){return v(e).replace(/\n$/,``)}function it(e){return JSON.stringify(e,null,2)}function at(e,t,n){return JSON.stringify({error:{code:e,message:t,...n?{hint:n}:{}}},null,2)}function ot(e){return e===`json`||e===`text`?e:`text`}function st(e,t){switch(t){case`json`:return it(e);case`text`:return rt(e)}}const ct=/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/,R=`active_config`;function lt(e){return!(!e||typeof e!=`object`||Array.isArray(e))}function ut(e){if(e!==void 0&&e!==``&&e!=="default"){if(typeof e!=`string`||!ct.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(Re.includes(e)||e===R)throw new P(`Invalid config name "${e}". It conflicts with a config key.`,N.USAGE);return e}}function z(){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 dt(e,t){let n=ut(e[R]);if(n&&t&&!lt(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 ft(e,t){if(!t)return e;let n=e[t];return lt(n)?n:{}}function B(e){return Ge(ft(z(),e))}async function pt(e,t,n={}){let r=z();if(t)r[t]=e;else{for(let e of Object.keys(r))Re.includes(e)&&delete r[e];Object.assign(r,e)}n.activate&&(r[R]=t??`default`),await mt(r)}async function mt(e){await nt();let t=L(),n=t+`.tmp`;d(n,JSON.stringify(e,null,2)+`
2
- `,{mode:384}),s(n,t)}function ht(){let e=z(),t={};for(let[n,r]of Object.entries(e))Re.includes(n)||n===R||lt(r)&&(t[n]=Ge(r));return{default:Ge(e),named:t,active:dt(e,!0)??`default`}}function gt(e,t){let n=ut(t);if(n&&!lt(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 _t(e){return gt(z(),e)}async function vt(e){let t=z(),n=gt(t,e);return t[R]=n,await mt(t),n}async function yt(e){let t=ut(e);if(!t)throw new P(`Cannot delete the default profile.`,N.USAGE);let n=z();return lt(n[t])?(delete n[t],dt(n,!1)===t&&(n[R]=`default`),await mt(n),!0):!1}function bt(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 xt(e){let t=z(),n=e.config!==void 0,r=dt(t,!n),i=n?ut(e.config):r;return{flags:e,file:Ge(ft(t,i)),env:process.env,configName:i,configPath:L()}}function St(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??L(),configName:e.configName,output:ot(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 Ct={"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 wt(e){return e?Ct[e]:void 0}function Tt(e){let t=e.trim();return t.startsWith(`sk-sp-`)?`token-plan`:t.startsWith(`sk-`)?`ordinary`:`unknown`}function Et(e,t,n){if(n)return t;let r=Tt(e);if(r===`token-plan`)return`token-plan`;if(r!==`ordinary`||t!==`token-plan`)return t}const Dt={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 Ot(e){let t=e.configName,n=e.flags.config!==void 0;return{describe:()=>et({...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=>qe(e,t),async login(e){let r=e.api_key?Et(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`?je(String(n)):n}await pt(a,r,{activate:i})},async logout(e){let n=B(t),r=Dt[e];if(!r.some(e=>n[e]!==void 0))return!1;for(let e of r)delete n[e];return await pt(n,t),!0},get path(){return e.configPath??L()}}}function kt(e){return e.length>8?`${e.slice(0,4)}...${e.slice(-4)}`:`***`}const At=`bailian-cli`,jt=`BailianCLI`,Mt=`X-Dashscope-Service`;function Nt(e){return JSON.stringify({channel:At,tags:{t1:`public`,t2:e.binName,t3:e.version}})}function V(e){return{"x-dashscope-source-config":Nt(e),"x-dashscope-openapisource":jt,[Mt]:At}}function Pt(e){return typeof e!=`object`||!e||e instanceof FormData?!1:JSON.stringify(e).includes(`oss://`)}async function Ft(e,t){let n=typeof FormData<`u`&&t.body instanceof FormData,r={"User-Agent":`${e.identity.clientName}/${e.identity.version}`,...V(e.identity),...t.headers};if(!n&&!r[`Content-Type`]&&(r[`Content-Type`]=`application/json`),t.async&&(r[`X-DashScope-Async`]=`enable`),Pt(t.body)&&(r[`X-DashScope-OssResourceResolve`]=`enable`),e.settings.verbose){console.error(`> ${t.method??`GET`} ${t.url}`);let n=r.Authorization;n&&console.error(`> Auth: ${kt(n.replace(/^Bearer /,``))}`),console.error(`> x-dashscope-source-config: ${Nt(e.identity)}`)}let i=It((t.timeout??e.settings.timeout)*1e3,t.signal),a=await fetch(t.url,{method:t.method??`GET`,headers:r,body:t.body?n?t.body:JSON.stringify(t.body):void 0,signal:i.signal}).finally(i.cleanup);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{}throw Ae(a.status,e,t.url)}return a}function It(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}}async function Lt(e,t){let n=await Ft(e,t),r;try{r=await n.json()}catch{throw new P(`API returned non-JSON response (${n.headers.get(`content-type`)||`unknown type`}). Server may be experiencing issues.`,N.GENERAL)}if(r.code&&typeof r.code==`string`&&r.code!==`200`&&r.code!==`Success`)throw Ae(200,{error:{message:r.message,type:r.code}},t.url);return r}function Rt(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])=>`${Bt(e)}=${Bt(String(t))}`).join(`&`)}function zt(e){let t=e.method??`POST`,n=(/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/,`Z`),r=te(),i=Vt(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{cpSync as ie,createWriteStream as ae,existsSync as C,lstatSync as w,mkdirSync as T,readFileSync as E,readdirSync as oe,readlinkSync as se,renameSync as ce,rmSync as D,statSync as le,symlinkSync as ue,writeFileSync as O}from"node:fs";import{dirname as k,isAbsolute as de,join as A,resolve as j,sep as fe}from"node:path";import{homedir as pe}from"node:os";import{createHash as me}from"node:crypto";import{Readable as he}from"node:stream";import{pipeline as ge}from"node:stream/promises";import{createBrotliDecompress as _e}from"node:zlib";import ve from"tar-stream";import{mkdir as ye}from"node:fs/promises";var be=Object.create,xe=Object.defineProperty,Se=Object.getOwnPropertyDescriptor,Ce=Object.getOwnPropertyNames,we=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty,Ee=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),De=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=Ce(t),a=0,o=i.length,s;a<o;a++)s=i[a],!Te.call(e,s)&&s!==n&&xe(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Se(t,s))||r.enumerable});return e},Oe=(e,t,n)=>(n=e==null?{}:be(we(e)),De(t||!e||!e.__esModule||!Te.call(e,`default`)?xe(n,`default`,{value:e,enumerable:!0}):n,e)),ke=/* @__PURE__ */ e(import.meta.url);const M={SUCCESS:0,GENERAL:1,USAGE:2,AUTH:3,QUOTA:4,TIMEOUT:5,NETWORK:6,CONFIRMATION_REQUIRED:7,CONTENT_FILTER:10};var N=class extends Error{exitCode;hint;api;rawResponse;constructor(e,t=M.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=Ae(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}:{}}}}},P=class extends N{constructor(e,t){super(e,M.USAGE,t),this.name=`UsageError`}};function Ae(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 je(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 N(r,M.GENERAL,void 0,{api:{httpStatus:e,apiCode:a,requestId:t.request_id??t.requestID}})}function Me(e){let t=e.trim(),n;try{n=new URL(t)}catch{throw Ne(e)}if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Ne(e);return n.origin}function Ne(e){return new N(`Invalid model base URL "${e}".`,M.USAGE,`Use an absolute http(s) URL.`)}const Pe={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 Me(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=Pe.cn){let n=e.flags.baseUrl||e.env.DASHSCOPE_BASE_URL||e.file.base_url;return{baseUrl:Me(n||t),baseUrlIsDefault:!n}}function Je(e,t=Pe.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 N(`No API key found.`,M.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 N(`No console access token found.`,M.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 N(`No OpenAPI AK/SK credentials found.`,M.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 N(`Incomplete OpenAPI AK/SK credentials found.`,M.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 F(){return process.env.BAILIAN_CONFIG_DIR?process.env.BAILIAN_CONFIG_DIR:g(f(),`.bailian`)}function I(){return g(F(),`config.json`)}function nt(){return g(F(),`credentials.json`)}async function rt(){let e=F(),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 N(`Invalid config name "${typeof e==`string`?e:JSON.stringify(e)}".`,M.USAGE,`Use letters, numbers, '-' or '_', starting with a letter or number.`);if(ze.includes(e)||e===ut)throw new N(`Invalid config name "${e}". It conflicts with a config key.`,M.USAGE);return e}}function L(){let e=I();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 N(`Active config "${n}" does not exist.`,M.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 R(e){return Ke(mt(L(),e))}async function z(e,t,n={}){let r=L();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 ht(r)}async function ht(e){await rt();let t=I(),n=t+`.tmp`;d(n,JSON.stringify(e,null,2)+`
2
+ `,{mode:384}),s(n,t)}function gt(){let e=L(),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 _t(e,t){let n=ft(t);if(n&&!dt(e[n]))throw new N(`Config "${n}" does not exist.`,M.USAGE,`Create or log in to the profile before activating it.`);return n??`default`}function vt(e){return _t(L(),e)}async function yt(e){let t=L(),n=_t(t,e);return t[ut]=n,await ht(t),n}async function bt(e){let t=ft(e);if(!t)throw new N(`Cannot delete the default profile.`,M.USAGE);let n=L();return dt(n[t])?(delete n[t],pt(n,!1)===t&&(n[ut]=`default`),await ht(n),!0):!1}function xt(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:R(),configName:void 0},fallbackFrom:e.configName}}function St(e){let t=L(),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:I()}}function Ct(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 N(`Timeout must be a positive finite number.`,M.USAGE);return{configPath:e.configPath??I(),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 wt={"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 Tt(e){return e?wt[e]:void 0}function Et(e){let t=e.trim();return t.startsWith(`sk-sp-`)?`token-plan`:t.startsWith(`sk-`)?`ordinary`:`unknown`}function Dt(e,t,n){if(n)return t;let r=Et(e);if(r===`token-plan`)return`token-plan`;if(r!==`ordinary`||t!==`token-plan`)return t}const Ot={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 kt(e){let t=e.configName,n=e.flags.config!==void 0;return{describe:()=>tt({...e,file:R(t)}),stored(){let e=R(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?Dt(e.api_key,t,n):t,i=n||r!==t,a=R(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`?Me(String(n)):n}await z(a,r,{activate:i})},async logout(e){let n=R(t),r=Ot[e];if(!r.some(e=>n[e]!==void 0))return!1;for(let e of r)delete n[e];return await z(n,t),!0},get path(){return e.configPath??I()}}}function At(e){return e.length>8?`${e.slice(0,4)}...${e.slice(-4)}`:`***`}const jt=`bailian-cli`,Mt=`BailianCLI`,Nt=`X-Dashscope-Service`;function Pt(e){return JSON.stringify({channel:jt,tags:{t1:`public`,t2:e.binName,t3:e.version}})}function B(e){return{"x-dashscope-source-config":Pt(e),"x-dashscope-openapisource":Mt,[Nt]:jt}}function Ft(e){return typeof e!=`object`||!e||e instanceof FormData?!1:JSON.stringify(e).includes(`oss://`)}async function It(e,t){let n=Rt((t.timeout??e.settings.timeout)*1e3,t.signal);try{return await Lt(e,t,n.signal)}finally{n.cleanup()}}async function Lt(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`),Ft(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: ${At(n.replace(/^Bearer /,``))}`),console.error(`> x-dashscope-source-config: ${Pt(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 je(a.status,e,t.url)}return a}function Rt(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 zt(e,t){let n=Rt((t.timeout??e.settings.timeout)*1e3,t.signal);try{let r=await Lt(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 N(`API returned non-JSON response (${e||`unknown type`}). Server may be experiencing issues.\nAPI 返回了非 JSON 响应(${e||`未知类型`}),服务器可能出现问题。`,M.GENERAL)}if(i.code&&typeof i.code==`string`&&i.code!==`200`&&i.code!==`Success`)throw je(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 Bt(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])=>`${Ht(e)}=${Ht(String(t))}`).join(`&`)}function Vt(e){let t=e.method??`POST`,n=(/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/,`Z`),r=te(),i=Ut(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${Vt(u)}`,p=Ht(e.accessKeySecret,f);return a.authorization=`${d} Credential=${e.accessKeyId},SignedHeaders=${c},Signature=${p}`,a}function Bt(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function Vt(e){return y(`sha256`).update(e,`utf8`).digest(`hex`)}function Ht(e,t){return b(`sha256`,e).update(t,`utf8`).digest(`hex`)}const Ut=`${Ne.cn}/api/v1/uploads`;async function Wt(e,t,n,r){let i=`${Ut}?action=getPolicy&model=${encodeURIComponent(t)}`,a=Qt(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 Gt(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=Qt(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 Kt={".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 qt(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=Kt[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 Jt(e){let t=/^data:([^;,]+);base64,/i.exec(e);return t?`data:${t[1]};base64,<omitted>`:e}async function Yt(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 Gt(await Wt(t,n,a,o),r,o)}function Xt(e){return e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`oss://`)||e.startsWith(`data:`)?!1:i(e)}async function Zt(e,t,n,r){return Xt(e)?Yt({apiKey:t,model:n,filePath:e,identity:r.identity,signal:r.signal}):e}function Qt(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 $t(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${Ut(u)}`,p=Wt(e.accessKeySecret,f);return a.authorization=`${d} Credential=${e.accessKeyId},SignedHeaders=${c},Signature=${p}`,a}function Ht(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function Ut(e){return y(`sha256`).update(e,`utf8`).digest(`hex`)}function Wt(e,t){return b(`sha256`,e).update(t,`utf8`).digest(`hex`)}const Gt=`${Pe.cn}/api/v1/uploads`;async function Kt(e,t,n,r){let i=`${Gt}?action=getPolicy&model=${encodeURIComponent(t)}`,a=en(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 N(`Failed to get upload policy (HTTP ${o.status}): ${e}`,M.GENERAL)}return(await o.json()).data}async function qt(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=en(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 N(`Failed to upload file to OSS (HTTP ${l.status}): ${e}`,M.GENERAL)}return`oss://${i}`}const Jt={".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 Yt(e){if(!i(e))throw new N(`File not found: ${e}`,M.USAGE);if(!l(e).isFile())throw new N(`Not a file: ${e}`,M.USAGE);let t=h(e).toLowerCase(),n=Jt[t];if(!n)throw new N(`Unsupported image format "${t||`unknown`}".`,M.USAGE,`Use an image file with a recognized extension.`);return`data:${n};base64,${o(e).toString(`base64`)}`}function Xt(e){let t=/^data:([^;,]+);base64,/i.exec(e);return t?`data:${t[1]};base64,<omitted>`:e}async function Zt(e){let{apiKey:t,model:n,filePath:r,identity:a,signal:o}=e;if(!i(r))throw new N(`File not found: ${r}`,M.USAGE);if(!l(r).isFile())throw new N(`Not a file: ${r}`,M.USAGE);return qt(await Kt(t,n,a,o),r,o)}function Qt(e){return e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`oss://`)||e.startsWith(`data:`)?!1:i(e)}async function $t(e,t,n,r){return Qt(e)?Zt({apiKey:t,model:n,filePath:e,identity:r.identity,signal:r.signal}):e}function en(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 tn(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 en(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*tn(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 nn(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 N(`SSE event exceeded the maximum buffer size.`,M.GENERAL);break;case`event`:o.event=a;break;case`id`:o.id=a}return{event:o}}async function*rn(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=en(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}=$t(r);r=c;for(let t of s){let n=en(t,e,i);e=n.event,n.completed&&(yield n.completed)}}r.length>0&&(e=en(r,e,i).event),e.data!==void 0&&(yield{data:e.data,event:e.event,id:e.id})}finally{t.releaseLock()}}function nn(e){return String(e)}var rn=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=on(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 tn(e)){if(this.closed)break;if(t.event===`endpoint`){let e=t.data.trim();if(!e)continue;this.messageUrl=an(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=nn(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=nn(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=on(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=sn(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 an(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 on(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 sn(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 cn(e){return`/api/v1/mcps/${e}/mcp`}function ln(e){return`/api/v1/mcps/${e}/sse`}function un(e){return e instanceof P&&/^MCP request failed:\s*405\b/i.test(e.message)}function dn(e){return e instanceof P&&/^MCP request failed:\s*(405|404)\b/i.test(e.message)}async function fn(e){let{deps:t,authToken:n,httpUrl:r,sseUrl:i,serverCode:a,urlOverride:o}=e;if(o){let e=new pn(t,o,n);try{return await e.initialize(),{client:e,url:o}}catch(e){if(!dn(e))throw e}let r=new rn(t,o,n);try{return await r.initialize(),{client:r,url:o}}catch(e){throw r.close(),e}}let s=new pn(t,r,n);try{return await s.initialize(),{client:s,url:r}}catch(e){if(!un(e)||a===`WebSearch`)throw e}let c=new rn(t,i,n);try{return await c.initialize(),{client:c,url:i}}catch(e){throw c.close(),e}}var pn=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 tn(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 mn={"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 hn(e,t){return mn[e]?.[t]??mn[`cn-beijing`][t]}function gn(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 _n(e){let t=gn(e);return(n,r)=>yn({region:t.consoleRegion,site:t.consoleSite,switchAgent:t.consoleSwitchAgent},e.timeout,{api:n,data:r})}function vn(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 yn(e,t,{api:n,data:r},i){let a=hn(e.region,e.site),o=`https://${a.csGateway}`,s=a.action,c=vn(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 bn=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 Ft(this.http,this.toOpts(e))}requestJson(e){return Lt(this.http,this.toOpts(e))}uploadFile(e,t,n={}){return Xt(e)?Zt(e,this.requireApi().token,t,{...n,identity:this.deps.identity}):Promise.resolve(e)}resolveImageInput(e,t,n={}){return Xt(e)?this.usesTokenPlanEndpoint()?Promise.resolve(qt(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 pn(this.http,t,this.deps.apiCred?.token)}connectBailianMcp(e,t){return this.requireApi(),fn({deps:this.http,authToken:this.deps.apiCred?.token,httpUrl:this.url(cn(e)),sseUrl:this.url(ln(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 yn(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 Tn({identity:this.deps.identity,settings:this.deps.settings,baseUrl:this.deps.baseUrl});if(!t)throw e;return await yn({...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?Rt(e.queryParams):``,i=`https://${e.host}${e.path}${r?`?${r}`:``}`,a=zt({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: ${kt(t.accessKeyId)}\n`),t.securityToken&&process.stderr.write(`> STS token: ${kt(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 xn={cn:`modelstudio.cn-beijing.aliyuncs.com`,intl:`modelstudio.ap-southeast-1.aliyuncs.com`};function Sn(e){for(let[t,n]of Object.entries(Ne))if(e===n||e.startsWith(`${n}/`))return t;return`cn`}function Cn(e){let t=Sn(e);return xn[t]??xn.cn}async function wn(e){let{identity:t,settings:n,baseUrl:r,accessKeyId:i,accessKeySecret:a,securityToken:o}=e,s=new bn({identity:t,settings:n,baseUrl:r,openApiCred:{accessKeyId:i,accessKeySecret:a,securityToken:o,source:`flag`}}),c=Cn(r);return s.openApiQueryJson({host:c,path:`/modelstudio/cli/generateAccessToken`,action:`GenerateCLIAccessToken`,version:`2026-02-10`,method:`POST`,queryParams:{}})}async function Tn(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 wn({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 pt(o,t),a}function En(){return`/compatible-mode/v1/chat/completions`}function Dn(){return`/compatible-mode/v1/responses`}function On(){return`/api/v1/services/aigc/image-generation/generation`}function kn(){return`/api/v1/services/aigc/multimodal-generation/generation`}function An(){return`/api/v1/services/aigc/text2image/image-synthesis`}function jn(){return`/api/v1/services/aigc/image2image/image-synthesis`}function Mn(){return`/api/v1/services/aigc/video-generation/video-synthesis`}function Nn(){return`/api/v1/services/aigc/image2video/video-synthesis`}function Pn(e){return`/api/v1/tasks/${encodeURIComponent(e)}`}function Fn(){return`/api/v1/models/limits`}function In(){return`/api/v1/models/permissions`}function Ln(e){return`/api/v1/apps/${encodeURIComponent(e)}/completion`}function Rn(){return`/api/v2/apps/memory/add`}function zn(){return`/api/v2/apps/memory/memory_nodes/search`}function Bn(){return`/api/v2/apps/memory/memory_nodes`}function Vn(e){return`/api/v2/apps/memory/memory_nodes/${encodeURIComponent(e)}`}function Hn(){return`/api/v1/services/audio/tts/SpeechSynthesizer`}function Un(){return`/api/v1/services/audio/asr/transcription`}function Wn(){return`/api/v1/services/audio/asr/customization`}function Gn(){return`/api/v2/apps/memory/profile_schemas`}function Kn(e){return`/api/v2/apps/memory/profile_schemas/${encodeURIComponent(e)}/profiles`}function qn(){return`/api/v1/indices/rag/index/retrieve`}function Jn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v1/indices/knowledge/search`}function Yn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v2/apps/knowledge/chat`}function Xn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}const Zn=`/api/v1/agentstudio/security`;function Qn(e){return`${e}${Zn}/overview`}function $n(e){return`${e}${Zn}/agent_logs`}function er(){return`/api/v1/mcps/WebSearch/mcp`}function tr(){return`/compatible-mode/v1/files`}function nr(){return`/api/v1/files`}function rr(e){return`/api/v1/files/${encodeURIComponent(e)}`}function ir(){return`/api/v1/fine-tunes`}function ar(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}`}function or(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/cancel`}function sr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/logs`}function cr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/checkpoints`}function lr(e,t){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/export/${encodeURIComponent(t)}`}function ur(){return`/api/v1/deployments`}function dr(e){return`/api/v1/deployments/${encodeURIComponent(e)}`}function fr(e){return`/api/v1/deployments/${encodeURIComponent(e)}/scale`}function pr(e){return`/api/v1/deployments/${encodeURIComponent(e)}/update`}function mr(){return`/api/v1/deployments/models`}function hr(e,t){return`https://${e}.cn-beijing.maas.aliyuncs.com${t}`}function gr(){return`/api/v1/agentstudio/files`}function _r(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}function vr(e){return`/api/v1/agentstudio/sandbox${e}`}function yr(e,t){return _r(e)+vr(t)}const br={sandboxes:`/sandboxes`,sandboxList:`/v2/sandboxes`,templates:`/templates`,templateCreate:`/v3/templates`,templateList:`/v2/templates`};function xr(e){return`${br.sandboxes}/${encodeURIComponent(e)}`}function Sr(e,t){return`${xr(e)}/${t}`}function Cr(e){return`${br.templates}/${encodeURIComponent(e)}`}function wr(e,t){return`${Cr(e)}/builds/${encodeURIComponent(t)}/status`}const Tr={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`},Er=[`qwen-image`,`wan2.7-image`,`z-image`],Dr=[`qwen-image-3.0`,`qwen-image-2.0`,`qwen-image-edit`,`wan2.7-image`,`wan2.6-image`];function Or(e,t){return t.some(t=>e.startsWith(t))}function kr(e){return Or(e,Er)||e.startsWith(`wan2.6-image`)}function Ar(e){return Or(e,Er)}function jr(e){return Or(e,Dr)}function Mr(e){return/^wanx-v1(?:-|$)/i.test(e)}function Nr(e){return e.startsWith(`wan2.6-t2i`)||e.startsWith(`wan2.6-image`)||Ar(e)?!1:!!(/^wan2\.[0-5][^-]*-t2i/i.test(e)||Mr(e)||/^wanx/i.test(e)&&/t2i|text2image/i.test(e))}function Pr(e){return/wan2\.5-i2i/i.test(e)}function Fr(e){return/imageedit/i.test(e)}function Ir(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`:Mr(e)?`wanx-v1`:/wan2\.5-i2i/i.test(e)?`wan25-i2i`:Nr(e)?`wan-legacy`:`wan26`}function Lr(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:Ir(t),promptExtendDefault:Lr(t)}}function Rr(e){return Ar(e)?H({kind:`sync-multimodal`,path:kn(),useSync:!0,inputStyle:`messages`},e):Nr(e)?H({kind:`async-text2image`,path:An(),useSync:!1,inputStyle:`prompt`},e):H({kind:`async-image-generation`,path:On(),useSync:!1,inputStyle:`messages`},e)}function zr(e){return jr(e)?H({kind:`sync-multimodal`,path:kn(),useSync:!0,inputStyle:`messages`},e):Fr(e)?H({kind:`async-image2image`,path:jn(),useSync:!1,inputStyle:`function-base-image`},e):Pr(e)?H({kind:`async-image2image`,path:jn(),useSync:!1,inputStyle:`prompt-images`},e):H({kind:`async-image-generation`,path:On(),useSync:!1,inputStyle:`messages`},e)}function Br(e){return/realtime|streaming/i.test(e)}function Vr(e){return/filetrans/i.test(e)}function Hr(e){return/^qwen3-asr-flash-filetrans(?:-|$)/i.test(e)}const Ur=[`fun-asr-flash`,`qwen-audio`];function Wr(e){return Br(e)||Vr(e)?!1:!!(e.startsWith(Ur[0])||e.startsWith(Ur[1])&&/asr-flash/i.test(e))}function Gr(e){return!(!/^qwen3-asr-flash(?:-|$)/i.test(e)||Vr(e)||Br(e)||Wr(e))}function Kr(e){if(Br(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(Vr(e)){let t=Hr(e);return{kind:`async-filetrans`,path:Un(),useSync:!1,asyncInputStyle:t?`file_url`:`file_urls`,asyncLanguageStyle:t?`language`:`language_hints`}}return Wr(e)?{kind:`sync-flash`,path:kn(),useSync:!0,flashFamily:`input-audio`}:Gr(e)?{kind:`sync-flash`,path:kn(),useSync:!0,flashFamily:`qwen3`}:{kind:`async-filetrans`,path:Un(),useSync:!1,asyncInputStyle:`file_urls`,asyncLanguageStyle:`language_hints`}}function qr(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 Jr(e){return[{role:`user`,content:[{type:`input_text`,text:e}]}]}function Yr(e,t){return t?e===`language`?{language:t}:{language_hints:[t]}:{}}function Xr(e){let{model:t,audioUrl:n,language:r,vocabularyId:i,vocabulary:a,context:o,flashFamily:s}=e;if(s===`input-audio`){let e={format:qr(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 Jr(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 Zr(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 Qr(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 $r={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`},ei=new Set(Object.values(Ne));function ti(e){return ei.has(e.replace(/\/+$/,``))}function ni(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:void 0}function U(...e){for(let t of e)if(typeof t==`string`&&t.length>0)return t}function ri(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,$r[r],{rawResponse:n.slice(0,500)})}function ii(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=ni(n),i=r?ni(r.data):void 0,a=i?ni(i.DataV2):void 0;if(a){let t=ni(a.data),n=Array.isArray(a.ret)?a.ret.map(e=>String(e)):[],o=n.length===0||n.some(e=>e.startsWith(`SUCCESS`)),s=U(i?.errorCode,r?.errorCode),c=U(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)&&ri(s,c,e),(t?t.data:void 0)??null}if(r&&`success`in r)return r.success||ri(U(r.errorCode),U(r.errorMsg),e),r.data??null;if(r){let t=U(i?.errorCode,r.errorCode),n=U(i?.errorMsg,r.errorMsg);(r.successResponse===!1||i?.success===!1||t!==void 0)&&ri(t,n,e)}if(r)return r;ri(void 0,void 0,e)}async function ai(e,t){let n=await e.request({path:t,method:`GET`});return ii(await n.text(),n.headers.get(`content-type`))}function oi(e){try{let{hostname:t}=new URL(e);return t===`aliyuncs.com`||t.endsWith(`.aliyuncs.com`)}catch{return!1}}function si(e){return typeof e==`string`?e:e instanceof URL?e.href:e.url}function ci(e){return async(t,n={})=>{let r=si(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}`),oi(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: ${kt(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 li=`2024-08-16`;function ui(e){return`bailiancontrol.${e}.aliyuncs.com`}function di(e){return new bn({identity:e.identity,settings:e.settings,baseUrl:e.baseUrl,openApiCred:{accessKeyId:e.accessKeyId,accessKeySecret:e.accessKeySecret,securityToken:e.securityToken,source:`flag`}})}async function fi(e){return di(e).openApiJson({host:ui(e.regionId),path:`/bailianControl/User/createUser`,action:`CreateUser`,version:li,method:`POST`,body:{data:JSON.stringify({reqDTO:e.reqDTO})}})}async function pi(e){return di(e).openApiJson({host:ui(e.regionId),path:`/bailianControl/workspaces`,action:`ListWorkspaces`,version:li,method:`GET`,queryParams:{data:JSON.stringify({reqDTO:{},cornerstoneParam:{}})}})}async function mi(e){return di(e).openApiJson({host:ui(e.regionId),path:`/bailianControl/serviserAuthorityPolicy/resetPolicies4Agent`,action:`ChangeUserPermissions`,version:li,method:`POST`,body:{data:JSON.stringify({cornerstoneParam:{},outerKey:e.outerKey,policyIndexList:e.policyIndexList??[1],agentId:e.agentId})}})}const hi=`zeldaHttp.dashscopeModel./zelda/api/v1/modelCenter/listFoundationModels`,gi=`zeldaEasy.bmp.modelPredictRpcService.getPredictParamConfig`;function W(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 _i(e,t={}){let{pageNo:n=1,pageSize:r=50,name:i=``,providers:a=[],capabilities:o=[]}=t,s=W(await e(hi,{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 vi(e,t={}){let n=t.pageSize??50,r=await _i(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 _i(e,{...t,pageNo:r,pageSize:n});if(a.models.length===0)break;i.push(...a.models)}return i}async function yi(e,t){return(await _i(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=W(await e(hi,{input:u}));return{total:d.total??0,groups:d.list??[]}}function xi(e){return e.flatMap(e=>e.items??[])}async function Si(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 xi([r.groups,...o.map(e=>e.groups)].flat())}async function Ci(e,t){return(W(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 Ti(e){return e.map(e=>{let t={};for(let n of wi)e[n]!==void 0&&(t[n]=e[n]);return t})}async function Ei(e,t){let n=W(await e(gi,{modelId:t})).predictConfig;if(!n)return null;if(typeof n==`string`)try{let e=JSON.parse(n);return Array.isArray(e)?Ti(e):null}catch{return null}return Array.isArray(n)?Ti(n):null}function Di(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`?je(String(r)):r;await pt(n,e)},async unset(t){let n=B(e);for(let e of t)delete n[e];await pt(n,e)},profiles:()=>ht(),activate:e=>vt(e),validateActivation:e=>_t(e),get path(){return L()}}}async function Oi(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:tr(),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 ki(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=nr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Ai(e,t,n){return e.requestJson({path:rr(t),method:`GET`,signal:n})}async function ji(e,t,n){let r=await e.request({path:rr(t),method:`DELETE`,signal:n});try{return await r.json()}catch{return{data:{deleted:!0,file_id:t}}}}const Mi=209715200,Ni=314572800,Pi=2147483648;function Fi(e,t=Mi){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 G(e,t,n,r={}){return{severity:e,code:t,message:n,...r}}function Ii(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 Li(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 Ri=/* @__PURE__ */ new Set([`system`,`user`,`assistant`,`tool`]),zi=.1;function Bi(e,t,n,r){let i=[],a=t=>{if(!(t in e))return;let a=e[t];(typeof a!=`number`||a<zi||a>10)&&i.push(G(`error`,`INVALID_VIDEO_FPS`,`"${t}" must be a number between ${zi} 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(G(`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(G(`error`,`INVALID_VIDEO_CLIP_TIME`,`"${a}" must be a number (seconds).`,{line:n,path:`${r}.${a}`}));return i}function Vi(e,t,n){let r=[];if(typeof e==`string`)return r;if(!Array.isArray(e))return r.push(G(`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(G(`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(G(`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(G(`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(G(`error`,`INVALID_CONTENT_TEXT`,`"text" in content item must be a string.`,{line:t,path:`${o}.text`})),l&&typeof s.image!=`string`&&r.push(G(`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(G(`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(G(`error`,`INVALID_VIDEO_FRAME`,`Video frame list item at index ${n} must be a string.`,{line:t,path:`${o}.video[${n}]`}));r.push(...Bi(s,Array.isArray(e),t,o))}}}return r}function Hi(e,t,n){let r=[];if(!Array.isArray(e))return r.push(G(`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(G(`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(G(`error`,`TOOL_CALL_MISSING_ID`,`tool_calls item must have a non-empty "id".`,{line:t,path:`${o}.id`})),s.type!==`function`&&r.push(G(`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(G(`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(G(`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(G(`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 Ui(e,t,n){let r=[];if(typeof e!=`object`||!e||Array.isArray(e))return r.push(G(`error`,`MESSAGE_NOT_OBJECT`,`Message must be an object.`,{line:t,path:n})),r;let i=e,a=i.role;return(typeof a!=`string`||!Ri.has(a))&&r.push(G(`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(G(`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(...Vi(i.content,t,`${n}.content`)):(a!==`assistant`||!(`tool_calls`in i))&&r.push(G(`error`,`MISSING_CONTENT`,`"content" field is missing.`,{line:t,path:`${n}.content`})),`tool_calls`in i&&r.push(...Hi(i.tool_calls,t,`${n}.tool_calls`)),`name`in i&&r.push(G(`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(G(`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 Wi(e,t){let n=[],r=e.messages;if(!Array.isArray(r))return n.push(G(`error`,`MISSING_MESSAGES`,`Required field "messages" is missing or not an array.`,{line:t,path:`messages`})),n;if(r.length===0)return n.push(G(`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(...Ui(l,t,u));let d=l,f=d?.role;if(f===`system`&&(e!==0&&n.push(G(`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(G(`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(G(`warning`,`NO_USER_ROLE`,`No "user" message found in this sample.`,{line:t,path:`messages`})),i&&r.length===1&&n.push(G(`warning`,`SYSTEM_ONLY`,`Sample only contains a "system" message.`,{line:t,path:`messages`}));for(let e of c)s.has(e)||n.push(G(`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(G(`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;Gi(a)&&n.push(G(`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(G(`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(G(`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(G(`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 Gi(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 Ki={name:`chatml`,detect:()=>!0,inspect:Wi};function qi(e,t){let n=[];if(!(`text`in e))return n.push(G(`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(G(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})),n):(n.push(G(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`})),n)}const Ji={name:`cpt`,detect:e=>`text`in e&&!(`messages`in e),inspect:qi};function Yi(e,t){let n=Wi(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(G(`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(G(`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(G(`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(G(`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(G(`error`,`MISSING_CHOSEN`,`DPO record is missing the "chosen" preference.`,{line:t,path:`chosen`})),s||n.push(G(`error`,`MISSING_REJECTED`,`DPO record is missing the "rejected" preference.`,{line:t,path:`rejected`})),o){n.push(...Ui(e.chosen,t,`chosen`)),n.push(...i(e.chosen?.content,`chosen`));let r=e.chosen?.role;typeof r==`string`&&r!==`assistant`&&n.push(G(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"chosen" role should be "assistant" (got "${r}").`,{line:t,path:`chosen.role`}))}if(s){n.push(...Ui(e.rejected,t,`rejected`)),n.push(...i(e.rejected?.content,`rejected`));let r=e.rejected?.role;typeof r==`string`&&r!==`assistant`&&n.push(G(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"rejected" role should be "assistant" (got "${r}").`,{line:t,path:`rejected.role`}))}return n}const Xi={name:`dpo`,detect:e=>`chosen`in e||`rejected`in e,inspect:Yi};function Zi(e,t){let n=[];if(!(`wav_fn`in e))n.push(G(`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(G(`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(G(`error`,`EMPTY_WAV_FN`,`"wav_fn" must not be empty.`,{line:t,path:`wav_fn`}));else{r.startsWith(`train/`)||n.push(G(`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(G(`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(G(`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(G(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})):n.push(G(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`}))}return n}const Qi={name:`tts`,detect:e=>`wav_fn`in e,inspect:Zi},$i=/* @__PURE__ */ new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.tif`,`.tiff`,`.webp`]);function ea(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function ta(e){return/^[\x20-\x7E]+$/.test(e)}function na(e,t){let n=[];if(!(`prompt`in e))n.push(G(`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(G(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(G(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}if(!(`img_path`in e))n.push(G(`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(G(`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(G(`error`,`EMPTY_IMG_PATH`,`"img_path" must not be empty.`,{line:t,path:`img_path`}));else{let e=ea(r);$i.has(e)||n.push(G(`warning`,`UNUSUAL_IMAGE_EXT`,`"img_path" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...$i].join(`, `)}.`,{line:t,path:`img_path`})),ta(r)||n.push(G(`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(G(`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(G(`error`,`EMPTY_INPUT_IMG`,`"input_img" must not be empty.`,{line:t,path:`input_img`}));else{let e=ea(r);$i.has(e)||n.push(G(`warning`,`UNUSUAL_INPUT_IMG_EXT`,`"input_img" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...$i].join(`, `)}.`,{line:t,path:`input_img`})),ta(r)||n.push(G(`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 ra={name:`image`,detect:e=>`img_path`in e,inspect:na},ia=/* @__PURE__ */ new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.webp`]),aa=/* @__PURE__ */ new Set([`.mp4`,`.mov`]);function oa(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function sa(e){return/^[\x20-\x7E]+$/.test(e)}function ca(e,t,n,r,i,a){if(!(n in t)){r&&e.push(G(`error`,`MISSING_FIELD`,`Required field "${n}" is missing.`,{line:a,path:n}));return}let o=t[n];if(typeof o!=`string`){e.push(G(`error`,`INVALID_FIELD`,`"${n}" must be a string (got ${typeof o}).`,{line:a,path:n}));return}if(o.trim().length===0){e.push(G(`error`,`EMPTY_FIELD`,`"${n}" must not be empty.`,{line:a,path:n}));return}let s=oa(o);i.has(s)||e.push(G(`warning`,`UNUSUAL_MEDIA_EXT`,`"${n}" points to a non-standard extension "${s||`(none)`}". Expected one of: ${[...i].join(`, `)}.`,{line:a,path:n})),sa(o)||e.push(G(`error`,`NON_ASCII_PATH`,`"${n}" must contain only ASCII characters (English filenames required). Got: "${o}".`,{line:a,path:n}))}function la(e,t){let n=[];if(!(`prompt`in e))n.push(G(`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(G(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(G(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}return ca(n,e,`first_frame_path`,!0,ia,t),ca(n,e,`last_frame_path`,!1,ia,t),ca(n,e,`video_path`,!1,aa,t),n}const ua=[Qi,ra,{name:`video`,detect:e=>`first_frame_path`in e||`video_path`in e,inspect:la},Xi,Ji,Ki];function da(e,t){return t===void 0?ua.find(t=>t.detect(e))??Ki:ua.find(e=>e.name===t)||Ki}async function fa(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(G(`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 pa(e,t,r,i,a){let o=r?null:new Set(Li(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(G(`error`,`MALFORMED_JSON`,`JSON.parse failed: ${e.message}`,{line:d}));continue}s.push(...ma(n,d,i))}return{sampled:c,issues:s}}function ma(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return[G(`error`,`RECORD_NOT_OBJECT`,`Each line must be a JSON object, got ${Array.isArray(e)?`array`:typeof e}.`,{line:t})];let r=e;return da(r,n).inspect(r,t)}const ha={format:`jsonl`,extensions:[`.jsonl`],async validate(e,t){let n=Date.now(),r=await fa(e,t.signal);if(r.totalLines===0||r.totalLines===r.blankLines)return{valid:!1,format:`jsonl`,filePath:e,errors:[G(`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 pa(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 ga(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 _a(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 va=/^[a-zA-Z0-9_-]+$/;function ya(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function ba(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 xa(e){let t=[],n=/* @__PURE__ */ new Map;for(let r of e){if(r.endsWith(`/`)||ba(r))continue;let e=r.split(`/`).filter(e=>e.length>0);for(let n of e){let e=ya(n),i=n.slice(e.length);e.length>0&&!va.test(e)&&t.length<10&&t.push(G(`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(G(`error`,`INVALID_FILENAME_CHARSET`,`File extension "${i}" in "${n}" contains invalid characters.`,{path:r}))}let i=e[e.length-1]??``,a=ya(i);if(a.length>120&&t.length<10&&t.push(G(`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(G(`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(G(`warning`,`FILENAME_ISSUES_TRUNCATED`,`More filename issues exist but reporting is capped at 10.`)),t}async function Sa(e,t,n){let{entry:i,zipfile:a}=await ga(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 Ca(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 wa={format:`zip`,extensions:[`.zip`],async validate(e,t){let n=Date.now(),r=[],i=[],o;try{o=await _a(e)}catch(t){return{valid:!1,format:`zip`,filePath:e,errors:[G(`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:[G(`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(G(`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(G(`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=xa(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(G(`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(`/`)||ba(e))return!1;let t=e.lastIndexOf(`.`),n=t>=0?e.slice(t).toLowerCase():``;return $i.has(n)});e.length<25&&r.push(G(`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 Sa(e,_,y)}catch(t){return r.push(G(`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 ha.validate(y,t);if(r.push(...b.errors),i.push(...b.warnings),b.valid){let{refs:e}=await Ca(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(G(`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 Ta(e){let t=h(e).toLowerCase();if(t===`.jsonl`)return Ea(e);if(t===`.zip`)return Da(e);throw new P(`Cannot inspect file with extension "${t}". Expected .jsonl or .zip.`,N.USAGE)}async function Ea(e){let t=await ka(e);if(!t)throw new P(`JSONL file is empty or contains only blank lines: ${e}`,N.USAGE);let n=Oa(t);return n===`unknown`?`text`:n}async function Da(e){let t=await Aa(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=Oa(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 Oa(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 ka(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 Aa(e,t){return ga(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 ja=[ha,wa];function Ma(e){let t=h(e).toLowerCase(),n=ja.find(e=>e.extensions.includes(t));if(!n){let e=ja.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 Na(e){ja.some(t=>t.format===e.format)||ja.push(e)}async function K(e,t={}){let{bytes:n}=Fi(e,t.maxBytes??209715200),r=await Ma(e).validate(e,t);return r.stats.bytes===void 0&&(r.stats.bytes=n),r}function Pa(){return ja.map(e=>({format:e.format,extensions:[...e.extensions]}))}function Fa(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 Ia(e,t,n){return e.requestJson({path:ir(),method:`POST`,body:t,signal:n})}async function La(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=ir(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Ra(e,t,n){return e.requestJson({path:ar(t),method:`GET`,signal:n})}async function za(e,t,n){return e.requestJson({path:or(t),method:`POST`,signal:n})}async function Ba(e,t,n){return e.requestJson({path:ar(t),method:`DELETE`,signal:n})}async function Va(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=sr(t),a=r.toString()?`${i}?${r.toString()}`:i;return e.requestJson({path:a,method:`GET`,signal:n.signal})}async function Ha(e,t,n){return e.requestJson({path:cr(t),method:`GET`,signal:n})}async function Ua(e,t,n,r,i){let a=new URLSearchParams;return a.set(`model_name`,r),e.requestJson({path:`${lr(t,n)}?${a.toString()}`,method:`GET`,signal:i})}const Wa={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`}},Ga=Object.keys(Wa),Ka=`sft-lora`;function qa(e){return e in Wa}function Ja(e){let{method:t,variant:n}=Wa[e];return{method:t,variant:n}}function Ya(e,t){if(!e)return!1;let{method:n,variant:r}=Wa[t];if(e.supports?.[n]!==!0)return!1;let i=e.trainingTypes?.[n];return Array.isArray(i)&&i.includes(r)}function Xa(e){return e?Ga.filter(t=>Ya(e,t)):[]}async function Za(e,t){return await yi(_n(e),t)}const Qa=`INSUFFICIENT_SAMPLES`;function $a(e){let{recordCount:t,batchSize:n}=e;return t>n?{ok:!0}:{ok:!1,issue:{severity:`error`,code:Qa,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 eo(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 to(e,t,n){return{clientTrainingType:e,serverTrainingType:t,acceptedExtensions:[`.jsonl`],async validate(e,t,r){return K(e,{...r,schema:n})},resolveHyperParameters(e,t){return eo(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}}const no=to(`sft`,`sft`,`chatml`),ro={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},io={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},ao={...io,max_pixels:`1k`,val_img_size:`1k`,generation_type:`i2i`},oo={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 so(e){return e===`image`||e===`image-i2i`}function co(e){return e===`video`||e===`video-kf2v`}function lo(e){return typeof e==`string`&&/wan2\.5/i.test(e)}function uo(e){return typeof e==`string`&&/wan2\.7/i.test(e)}const fo=[no,{clientTrainingType:`sft-lora`,serverTrainingType:`efficient_sft`,acceptedExtensions:[`.jsonl`,`.zip`],async validate(e,t,n){if(t===`audio`)return K(e,{...n,schema:`tts`});if(so(t))return K(e,{...n,schema:`image`,maxBytes:Pi});if(co(t)){let r=await K(e,{...n,schema:`video`,maxBytes:Pi});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(G(`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(G(`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 K(e,{...n,schema:`chatml`})},resolveHyperParameters(e,t){if(e===`audio`)return{...ro};if(so(e)){let n={...e===`image-i2i`?ao:io};return t.learningRate!==void 0&&(n.learning_rate=t.learningRate),n}if(co(e)){let e=t.model??t.baseModel,n={...oo,batch_size:uo(e)?1:4,max_pixels:uo(e)?102400:lo(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 eo(t)},shouldSkipGate(e,t){return!(t!==`audio`&&!so(t)&&!co(t)||e!==`batch_size`)},shouldSkipCapabilityCheck(e){return e===`audio`||so(e)||co(e)}},to(`dpo`,`dpo_full`,`dpo`),to(`dpo-lora`,`dpo_lora`,`dpo`),{clientTrainingType:`cpt`,serverTrainingType:`cpt`,acceptedExtensions:[`.jsonl`],async validate(e,t,n){return K(e,{...n,schema:`cpt`,maxBytes:Ni})},resolveHyperParameters(e,t){return eo(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}];function po(e){let t=fo.find(t=>t.clientTrainingType===e);if(!t){let t=fo.map(e=>e.clientTrainingType).join(`, `);throw new P(`Unknown training type "${e}".`,N.USAGE,`Supported training types: ${t}.`)}return t}function mo(){return fo.map(e=>e.clientTrainingType)}const ho=`zeldaEasy.broadscope-platform.modelCenter.getModelPrice`,go=`zeldaEasy.broadscope-platform.modelInstance.calculateDatasetsTotalTokens`,_o=`zeldaEasy.broadscope-platform.modelInstance.estimateFinetuneTokens`;async function vo(e,t){return W(await e.console(ho,{query:{type:0,modelId:t}}))}async function yo(e,t,n){return W(await e.console(go,{input:{trainDatasetIds:t,hyperParams:n}}))}async function bo(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 W(await e.console(_o,{input:{trainingType:`cpt`,instanceName:`${t}_cli_estimate`,algorithmType:100,bizType:100,trainDatasetIds:n,hyperParams:i,bailianTrainModel:t,validationDatasetIds:``,jobName:`${t}_cli_estimate`,priority:`L0`}}))}async function xo(e,t,n){return e.requestJson({path:ur(),method:`POST`,body:t,signal:n})}async function So(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);let r=ur(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Co(e,t,n){return e.requestJson({path:dr(t),method:`GET`,signal:n})}async function wo(e,t,n){return e.requestJson({path:dr(t),method:`DELETE`,signal:n})}async function To(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=mr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Eo(e,t,n,r){return e.requestJson({path:fr(t),method:`PUT`,body:n,signal:r})}async function Do(e,t,n,r){return e.requestJson({path:pr(t),method:`PUT`,body:n,signal:r})}const q={LORA:`lora`,PTU:`ptu`,MU:`mu`},Oo=q.LORA;function ko(e){return e===`audio`?q.MU:Oo}const Ao={POST_PAY:`POST_PAY`,PRE_PAY:`PRE_PAY`},jo=Ao.POST_PAY,Mo={POST_PAID:`post_paid`,PRE_PAID:`pre_paid`},No={name:q.LORA,validateFlags(){},async resolve(){return{body:{capacity:1}}}},Po={name:q.PTU,validateFlags(e){if(e.inputTpm===void 0||e.outputTpm===void 0)return`--input-tpm and --output-tpm are required for plan=ptu.`},async resolve(e){let t={input_tpm:e.flags.inputTpm,output_tpm:e.flags.outputTpm};return e.flags.thinkingOutputTpm!==void 0&&(t.thinking_output_tpm=e.flags.thinkingOutputTpm),{body:{ptu_capacity:t}}}},Fo={name:q.MU,validateFlags(){},async resolve(e){let t=e.flags.billingMethod||jo,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 To(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===q.MU)?.templates??[];if(o.length===0)throw i();let s=t===Ao.POST_PAY?Mo.POST_PAID:Mo.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}}},Io={[q.LORA]:No,[q.PTU]:Po,[q.MU]:Fo};function Lo(e){let t=Io[e];if(!t)throw new P(`Unsupported plan "${e}". Supported plans: ${Object.keys(Io).join(`, `)}.`,N.USAGE);return t}const Ro=`zeldaEasy.broadscope-platform.modelInstance.startModelService`,zo=`zeldaEasy.broadscope-platform.modelInstance.stopModelService`,Bo=`zeldaEasy.broadscope-platform.modelInstance.listIndependentDeployedModel`;async function Vo(e,t){return W(await e.console(Ro,{input:{modelServiceId:t}}))}async function Ho(e,t){return W(await e.console(zo,{input:{modelServiceId:t}}))}async function Uo(e){let t=[],n=1;for(;;){let r=W(await e.console(Bo,{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 Wo(e,t){return e.find(e=>e.modelServiceId===t||e.deployedModel===t||e.deployed_model===t)}const Go=`speech-biasing`;function Ko(e,t){return{model:Go,input:{action:e,...t}}}async function qo(e,t,n,r){return e.requestJson({path:Wn(),method:`POST`,body:Ko(t,n),signal:r})}function Jo(e,t,n){return qo(e,`create_vocabulary`,{target_model:t.targetModel,prefix:t.prefix,vocabulary:t.vocabulary},n)}function Yo(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),qo(e,`list_vocabulary`,r,n)}function Xo(e,t,n){return qo(e,`query_vocabulary`,{vocabulary_id:t},n)}function Zo(e,t,n,r){return qo(e,`update_vocabulary`,{vocabulary_id:t,vocabulary:n},r)}function Qo(e,t,n){return qo(e,`delete_vocabulary`,{vocabulary_id:t},n)}function $o(e,t){try{return JSON.parse(e)}catch(e){throw new F(`${t} is not valid JSON — ${e.message}`)}}function es(e){let t=$o(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=$o(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 ns={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":`显示版本信息`}}},rs={concurrent:{type:`number`,valueHint:`<n>`,description:{"en-US":`Run N parallel requests (default: 1)`,"zh-CN":`并行发送 N 个请求(默认:1)`}}},is={async:{type:`switch`,description:{"en-US":`Return async task id without waiting`,"zh-CN":`直接返回异步任务 ID,不等待任务完成`}}},as={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`}}},os={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)`}}},ss={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 cs(e){return e.auth===`apiKey`?as:e.auth===`console`?os:e.auth===`openapi`?ss:{}}function ls(e){return e}const us=1;function ds(e,t){return e.normalize(`NFKC`).replace(/[\\/:*?"<>|]/g,`_`).replace(/\s+/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``)||t}function fs(e,t){return`${ds(e||`image`,`image`)}_${ds((t||``).substring(0,20),`untitled`)}_${Date.now()}`}const ps=()=>g(f(),`bailian-output`);function ms(e,t){let n=t?.flagDir||e.outputDir||ps(),r=t?.subDir?g(n,t.subDir):n;return i(r)||a(r,{recursive:!0}),r}function hs(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}function gs(e){return o(e===`-`?0:e,`utf-8`)}async function _s(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 vs(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 ys(e,t=`boolean`){if(e!=null)return vs(e,t)}function bs(e,t,n=`boolean`){let r=ys(e,n);return r===void 0?t:r}function xs(e,t){return ys(e,`watermark`)??t??!0}function Ss(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 Cs(e){if(e==null)return;let t=typeof e==`string`?e:JSON.stringify(e);return t.length<=500?t:t.slice(0,500)}function ws(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=Cs(e.errorMessage)),e.requestId&&(i.c5=e.requestId),i}let J;function Ts(){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 Es=/* @__PURE__ */ Te(((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=Oe(`os`)},function(e,t){e.exports=globalThis.fetch},function(e,t,n){e.exports=n(6)},function(e,t){e.exports=Oe(`dns`)},function(e,t){e.exports=Oe(`util`)},function(e,t){e.exports=Oe(`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`},C=(e,t)=>{t.appName=`DataproviderBot`,t.appVersion=e.value,t.deviceBrand=`Dataprovider.com`,t.deviceType=`bot`,t.platform=`other`},w=(e,t)=>{t.appName=`AhrefsBot`,t.appVersion=e.value,t.deviceBrand=`Ahrefs`,t.deviceType=`bot`,t.platform=`other`},T=(e,t)=>{t.appName=`BitSightBot`,t.appVersion=e.value,t.deviceBrand=`Bitsight`,t.deviceType=`bot`,t.platform=`other`},E=(e,t)=>{t.appName=`oBot`,t.appVersion=e.value,t.deviceBrand=`IBM`,t.deviceType=`bot`,t.platform=`other`},D=(e,t)=>{t.appName=`Cincraw`,t.appVersion=e.value,t.deviceBrand=`CINC`,t.deviceType=`bot`,t.platform=`other`},oe=(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`},O=(e,t)=>{t.appName=`ByteSpider`,t.appVersion=e.value,t.deviceBrand=`ByteDance`,t.deviceType=`bot`,t.platform=`other`},ce=(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`},A=(e,t)=>{t.appName=`Ai2Bot`,t.appVersion=e.value,t.deviceBrand=`Ai2`,t.deviceType=`bot`,t.platform=`other`},ue=(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`,C),M.set(`AhrefsBot`,w),M.set(`BitSightBot`,T),M.set(`oBot`,E),M.set(`Cincraw`,D),M.set(`DingTalkBot-LinkService`,oe),M.set(`YisouSpider`,se),M.set(`Bytespider`,O),M.set(`ev-crawler`,ce),M.set(`bitdiscovery`,le),M.set(`Spider`,k),M.set(`Ai2Bot-Dolma`,A),M.set(`dianjing_ad_spider`,ue);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){C(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 C(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 w(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=E(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.
11
+ `);r=t.pop()??``;for(let n of t){let t=nn(n,e,i);e=t.event,t.completed&&(yield t.completed)}}break}if(r+=n.decode(o,{stream:!0}),r.length>i)throw new N(`SSE stream exceeded the maximum buffer size.`,M.GENERAL);let{lines:s,rest:c}=tn(r);r=c;for(let t of s){let n=nn(t,e,i);e=n.event,n.completed&&(yield n.completed)}}r.length>0&&(e=nn(r,e,i).event),e.data!==void 0&&(yield{data:e.data,event:e.event,id:e.id})}finally{t.releaseLock()}}function an(e){return String(e)}var on=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 N(`This command needs a model-domain API key.`,M.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 N(`MCP SSE session closed.`,M.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 N(`MCP SSE session closed.`,M.GENERAL):t?new N(`MCP SSE timed out waiting for response headers.`,M.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 N(`MCP SSE session closed.`,M.GENERAL):t?new N(`MCP SSE timed out reading error response body.`,M.TIMEOUT):new N(e,M.GENERAL,void 0,{cause:r})}throw clearTimeout(n),this.abortController=void 0,new N(e,M.GENERAL)}clearTimeout(n),this.consumeSse(i).catch(e=>{if(this.closed)return;let t=e instanceof N?e:new N(`MCP SSE stream failed: ${e instanceof Error?e.message:String(e)}`,M.GENERAL);this.rejectEndpoint?.(t),this.streamEnded||this.markStreamEnded(t)});let a=cn(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 rn(e)){if(this.closed)break;if(t.event===`endpoint`){let e=t.data.trim();if(!e)continue;this.messageUrl=sn(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=an(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 N(`MCP SSE stream ended before endpoint event.`,M.GENERAL);throw this.rejectEndpoint?.(e),e}this.markStreamEnded(new N(`MCP SSE stream ended unexpectedly.`,M.GENERAL))}}async rpc(e,t){if(this.closed||this.streamEnded)throw new N(`MCP SSE stream ended unexpectedly.`,M.GENERAL);let n=this.nextId++,r=an(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=cn(a,`MCP SSE timed out waiting for response to ${e}.`);try{if(await this.postMessage(i),this.closed||this.streamEnded)throw new N(`MCP SSE stream ended unexpectedly.`,M.GENERAL);let e=await Promise.race([o,s.promise]);if(e.error)throw new N(`MCP error (${e.error.code}): ${e.error.message}`,M.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 N(`MCP SSE stream ended unexpectedly.`,M.GENERAL);if(!this.messageUrl)throw new N(`MCP SSE message endpoint is not ready.`,M.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=ln(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 N(`MCP SSE session closed.`,M.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 N(`MCP SSE session closed.`,M.GENERAL):n.timedOut?new N(`MCP SSE timed out reading error response body.`,M.TIMEOUT):new N(e,M.GENERAL,void 0,{cause:t})}throw new N(e,M.GENERAL)}}finally{n.cleanup()}}};function sn(e,t){let n,r;try{r=new URL(e),n=new URL(t,e)}catch{throw new N(`MCP SSE endpoint is not a valid URL: ${t}`,M.GENERAL)}if(n.origin!==r.origin)throw new N(`MCP SSE endpoint origin mismatch: expected ${r.origin}, got ${n.origin}`,M.GENERAL);return n.toString()}function cn(e,t){let n,r=new Promise((r,i)=>{n=setTimeout(()=>{n=void 0,i(new N(t,M.TIMEOUT))},e)});return r.catch(()=>void 0),{promise:r,cancel:()=>{n!==void 0&&(clearTimeout(n),n=void 0)}}}function ln(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 un(e){return`/api/v1/mcps/${e}/mcp`}function dn(e){return`/api/v1/mcps/${e}/sse`}function fn(e){return e instanceof N&&/^MCP request failed:\s*405\b/i.test(e.message)}function pn(e){return e instanceof N&&/^MCP request failed:\s*(405|404)\b/i.test(e.message)}async function mn(e){let{deps:t,authToken:n,httpUrl:r,sseUrl:i,serverCode:a,urlOverride:o}=e;if(o){let e=new hn(t,o,n);try{return await e.initialize(),{client:e,url:o}}catch(e){if(!pn(e))throw e}let r=new on(t,o,n);try{return await r.initialize(),{client:r,url:o}}catch(e){throw r.close(),e}}let s=new hn(t,r,n);try{return await s.initialize(),{client:s,url:r}}catch(e){if(!fn(e)||a===`WebSearch`)throw e}let c=new on(t,i,n);try{return await c.initialize(),{client:c,url:i}}catch(e){throw c.close(),e}}var hn=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 N(`This command needs a model-domain API key.`,M.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 N(`MCP error (${a.error.code}): ${a.error.message}`,M.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 rn(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 N(`MCP SSE response stream ended without a matching JSON-RPC response.`,M.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 N(e,M.GENERAL)}return r}};const gn={"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 _n(e,t){return gn[e]?.[t]??gn[`cn-beijing`][t]}function vn(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 yn(e){let t=vn(e);return(n,r)=>xn({region:t.consoleRegion,site:t.consoleSite,switchAgent:t.consoleSwitchAgent},e.timeout,{api:n,data:r})}function bn(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 xn(e,t,{api:n,data:r},i){let a=_n(e.region,e.site),o=`https://${a.csGateway}`,s=a.action,c=bn(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 N(`Console CLI gateway failed: HTTP ${p.status} ${p.statusText}`,M.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 N(r?`Console session is not logged in or has expired.`:`Console gateway error: ${n}`,r?M.AUTH:M.GENERAL,r?"Run `bl auth login --console` to sign in or refresh your console session.":void 0,{rawResponse:e})}return m}var Sn=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 N(`This command needs a model-domain API key.`,M.AUTH);return this.deps.apiCred}requireOpenApi(){if(!this.deps.openApiCred)throw new N(`This command needs Alibaba Cloud OpenAPI AK/SK credentials.`,M.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 It(this.http,this.toOpts(e))}requestJson(e){return zt(this.http,this.toOpts(e))}uploadFile(e,t,n={}){return Qt(e)?$t(e,this.requireApi().token,t,{...n,identity:this.deps.identity}):Promise.resolve(e)}resolveImageInput(e,t,n={}){return Qt(e)?this.usesTokenPlanEndpoint()?Promise.resolve(Yt(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 hn(this.http,t,this.deps.apiCred?.token)}connectBailianMcp(e,t){return this.requireApi(),mn({deps:this.http,authToken:this.deps.apiCred?.token,httpUrl:this.url(un(e)),sseUrl:this.url(dn(e)),serverCode:e,urlOverride:t})}async console(e,t){if(!this.deps.consoleCred)throw new N(`This command needs a console access token.`,M.AUTH);let n={api:e,data:t},{timeout:r}=this.deps.settings;try{return await xn(this.deps.consoleCred,r,n,this.deps.settings)}catch(e){if(!(e instanceof N)||e.exitCode!==M.AUTH||!e.message.includes(`not logged in`))throw e;let t=await Dn({identity:this.deps.identity,settings:this.deps.settings,baseUrl:this.deps.baseUrl});if(!t)throw e;return await xn({...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?Bt(e.queryParams):``,i=`https://${e.host}${e.path}${r?`?${r}`:``}`,a=Vt({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: ${At(t.accessKeyId)}\n`),t.securityToken&&process.stderr.write(`> STS token: ${At(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 N(`${s.status} ${s.statusText} - ${c.slice(0,500)}`,M.GENERAL)}if(!s.ok||l.Success===!1)throw new N(`${l.Code||s.status} - ${l.Message||s.statusText}`,M.GENERAL);return l}};const Cn={cn:`modelstudio.cn-beijing.aliyuncs.com`,intl:`modelstudio.ap-southeast-1.aliyuncs.com`};function wn(e){for(let[t,n]of Object.entries(Pe))if(e===n||e.startsWith(`${n}/`))return t;return`cn`}function Tn(e){let t=wn(e);return Cn[t]??Cn.cn}async function En(e){let{identity:t,settings:n,baseUrl:r,accessKeyId:i,accessKeySecret:a,securityToken:o}=e,s=new Sn({identity:t,settings:n,baseUrl:r,openApiCred:{accessKeyId:i,accessKeySecret:a,securityToken:o,source:`flag`}}),c=Tn(r);return s.openApiQueryJson({host:c,path:`/modelstudio/cli/generateAccessToken`,action:`GenerateCLIAccessToken`,version:`2026-02-10`,method:`POST`,queryParams:{}})}async function Dn(e){let t=e.settings.configName,n=R(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 En({identity:e.identity,settings:e.settings,baseUrl:e.baseUrl,accessKeyId:r,accessKeySecret:i})).cliAccessToken;if(!a)return null;let o=R(t);return o.access_token=a,await z(o,t),a}function On(){return`/compatible-mode/v1/chat/completions`}function kn(){return`/compatible-mode/v1/responses`}function An(){return`/api/v1/services/aigc/image-generation/generation`}function jn(){return`/api/v1/services/aigc/multimodal-generation/generation`}function Mn(){return`/api/v1/services/aigc/text2image/image-synthesis`}function Nn(){return`/api/v1/services/aigc/image2image/image-synthesis`}function Pn(){return`/api/v1/services/aigc/video-generation/video-synthesis`}function Fn(){return`/api/v1/services/aigc/image2video/video-synthesis`}function In(e){return`/api/v1/tasks/${encodeURIComponent(e)}`}function Ln(){return`/api/v1/models/limits`}function Rn(){return`/api/v1/models/permissions`}function zn(e){return`/api/v1/apps/${encodeURIComponent(e)}/completion`}function Bn(){return`/api/v2/apps/memory/add`}function Vn(){return`/api/v2/apps/memory/memory_nodes/search`}function Hn(){return`/api/v2/apps/memory/memory_nodes`}function Un(e){return`/api/v2/apps/memory/memory_nodes/${encodeURIComponent(e)}`}function Wn(){return`/api/v1/services/audio/tts/SpeechSynthesizer`}function Gn(){return`/api/v1/services/audio/asr/transcription`}function Kn(){return`/api/v1/services/audio/asr/customization`}function qn(){return`/api/v2/apps/memory/profile_schemas`}function Jn(e){return`/api/v2/apps/memory/profile_schemas/${encodeURIComponent(e)}/profiles`}function Yn(){return`/api/v1/indices/rag/index/retrieve`}function Xn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}function Zn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v1/indices/knowledge/search`}function Qn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v2/apps/knowledge/chat`}function $n(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}const er=`/api/v1/agentstudio/security`;function tr(e){return`${e}${er}/overview`}function nr(e){return`${e}${er}/agent_logs`}function rr(){return`/api/v1/mcps/WebSearch/mcp`}function ir(){return`/compatible-mode/v1/files`}function ar(){return`/api/v1/files`}function or(e){return`/api/v1/files/${encodeURIComponent(e)}`}function sr(){return`/api/v1/fine-tunes`}function cr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}`}function lr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/cancel`}function ur(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/logs`}function dr(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/checkpoints`}function fr(e,t){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/export/${encodeURIComponent(t)}`}function pr(){return`/api/v1/deployments`}function V(e){return`/api/v1/deployments/${encodeURIComponent(e)}`}function mr(e){return`${V(e)}/capacity-instances`}function hr(e,t){return`${mr(e)}/${encodeURIComponent(t)}`}function gr(e,t){return`${hr(e,t)}/scale`}function _r(e,t){return`${hr(e,t)}/renew`}function vr(e){return`${V(e)}/update-overflowstrategy`}function yr(e,t){return`${V(e)}/capacity-operations/${encodeURIComponent(t)}`}function br(e){return`${V(e)}/scale`}function xr(e){return`/api/v1/deployments/${encodeURIComponent(e)}/update`}function Sr(){return`/api/v1/deployments/models`}function Cr(e,t){return`https://${e}.cn-beijing.maas.aliyuncs.com${t}`}function wr(){return`/api/v1/agentstudio/files`}function Tr(e){return`https://${e}.cn-beijing.maas.aliyuncs.com`}function Er(e){return`/api/v1/agentstudio/sandbox${e}`}function Dr(e,t){return Tr(e)+Er(t)}const Or={sandboxes:`/sandboxes`,sandboxList:`/v2/sandboxes`,templates:`/templates`,templateCreate:`/v3/templates`,templateList:`/v2/templates`};function kr(e){return`${Or.sandboxes}/${encodeURIComponent(e)}`}function Ar(e,t){return`${kr(e)}/${t}`}function jr(e){return`${Or.templates}/${encodeURIComponent(e)}`}function Mr(e,t){return`${jr(e)}/builds/${encodeURIComponent(t)}/status`}const Nr={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`},Pr=[`qwen-image`,`wan2.7-image`,`z-image`],Fr=[`qwen-image-3.0`,`qwen-image-2.0`,`qwen-image-edit`,`wan2.7-image`,`wan2.6-image`];function Ir(e,t){return t.some(t=>e.startsWith(t))}function Lr(e){return Ir(e,Pr)||e.startsWith(`wan2.6-image`)}function Rr(e){return Ir(e,Pr)}function zr(e){return Ir(e,Fr)}function Br(e){return/^wanx-v1(?:-|$)/i.test(e)}function Vr(e){return e.startsWith(`wan2.6-t2i`)||e.startsWith(`wan2.6-image`)||Rr(e)?!1:!!(/^wan2\.[0-5][^-]*-t2i/i.test(e)||Br(e)||/^wanx/i.test(e)&&/t2i|text2image/i.test(e))}function Hr(e){return/wan2\.5-i2i/i.test(e)}function Ur(e){return/imageedit/i.test(e)}function Wr(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`:Br(e)?`wanx-v1`:/wan2\.5-i2i/i.test(e)?`wan25-i2i`:Vr(e)?`wan-legacy`:`wan26`}function Gr(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:Wr(t),promptExtendDefault:Gr(t)}}function Kr(e){return Rr(e)?H({kind:`sync-multimodal`,path:jn(),useSync:!0,inputStyle:`messages`},e):Vr(e)?H({kind:`async-text2image`,path:Mn(),useSync:!1,inputStyle:`prompt`},e):H({kind:`async-image-generation`,path:An(),useSync:!1,inputStyle:`messages`},e)}function qr(e){return zr(e)?H({kind:`sync-multimodal`,path:jn(),useSync:!0,inputStyle:`messages`},e):Ur(e)?H({kind:`async-image2image`,path:Nn(),useSync:!1,inputStyle:`function-base-image`},e):Hr(e)?H({kind:`async-image2image`,path:Nn(),useSync:!1,inputStyle:`prompt-images`},e):H({kind:`async-image-generation`,path:An(),useSync:!1,inputStyle:`messages`},e)}function Jr(e){return/realtime|streaming/i.test(e)}function Yr(e){return/filetrans/i.test(e)}function Xr(e){return/^qwen3-asr-flash-filetrans(?:-|$)/i.test(e)}const Zr=[`fun-asr-flash`,`qwen-audio`];function Qr(e){return Jr(e)||Yr(e)?!1:!!(e.startsWith(Zr[0])||e.startsWith(Zr[1])&&/asr-flash/i.test(e))}function $r(e){return!(!/^qwen3-asr-flash(?:-|$)/i.test(e)||Yr(e)||Jr(e)||Qr(e))}function ei(e){if(Jr(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(Yr(e)){let t=Xr(e);return{kind:`async-filetrans`,path:Gn(),useSync:!1,asyncInputStyle:t?`file_url`:`file_urls`,asyncLanguageStyle:t?`language`:`language_hints`}}return Qr(e)?{kind:`sync-flash`,path:jn(),useSync:!0,flashFamily:`input-audio`}:$r(e)?{kind:`sync-flash`,path:jn(),useSync:!0,flashFamily:`qwen3`}:{kind:`async-filetrans`,path:Gn(),useSync:!1,asyncInputStyle:`file_urls`,asyncLanguageStyle:`language_hints`}}function ti(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 ni(e){return[{role:`user`,content:[{type:`input_text`,text:e}]}]}function ri(e,t){return t?e===`language`?{language:t}:{language_hints:[t]}:{}}function ii(e){let{model:t,audioUrl:n,language:r,vocabularyId:i,vocabulary:a,context:o,flashFamily:s}=e;if(s===`input-audio`){let e={format:ti(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 ni(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 ai(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 oi(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 si={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`},ci=new Set(Object.values(Pe));function li(e){return ci.has(e.replace(/\/+$/,``))}function ui(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:void 0}function di(...e){for(let t of e)if(typeof t==`string`&&t.length>0)return t}function fi(e,t,n){let r=e??`unknown`,i=e===void 0&&t===void 0?`\nUnexpected response body (truncated): ${n.slice(0,800)}`:``;throw new N(`Security API failed: ${r} - ${t??`no message`}${i}`,M.GENERAL,si[r],{rawResponse:n.slice(0,500)})}function pi(e,t){let n;try{n=JSON.parse(e)}catch{throw new N(`Security API returned non-JSON response (${t??`unknown type`}).`,M.GENERAL,void 0,{rawResponse:e.slice(0,500)})}let r=ui(n),i=r?ui(r.data):void 0,a=i?ui(i.DataV2):void 0;if(a){let t=ui(a.data),n=Array.isArray(a.ret)?a.ret.map(e=>String(e)):[],o=n.length===0||n.some(e=>e.startsWith(`SUCCESS`)),s=di(i?.errorCode,r?.errorCode),c=di(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)&&fi(s,c,e),(t?t.data:void 0)??null}if(r&&`success`in r)return r.success||fi(di(r.errorCode),di(r.errorMsg),e),r.data??null;if(r){let t=di(i?.errorCode,r.errorCode),n=di(i?.errorMsg,r.errorMsg);(r.successResponse===!1||i?.success===!1||t!==void 0)&&fi(t,n,e)}if(r)return r;fi(void 0,void 0,e)}async function mi(e,t){let n=await e.request({path:t,method:`GET`});return pi(await n.text(),n.headers.get(`content-type`))}function hi(e){try{let{hostname:t}=new URL(e);return t===`aliyuncs.com`||t.endsWith(`.aliyuncs.com`)}catch{return!1}}function gi(e){return typeof e==`string`?e:e instanceof URL?e.href:e.url}function _i(e){return async(t,n={})=>{let r=gi(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}`),hi(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: ${At(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 vi=`2024-08-16`;function yi(e){return`bailiancontrol.${e}.aliyuncs.com`}function bi(e){return new Sn({identity:e.identity,settings:e.settings,baseUrl:e.baseUrl,openApiCred:{accessKeyId:e.accessKeyId,accessKeySecret:e.accessKeySecret,securityToken:e.securityToken,source:`flag`}})}async function xi(e){return bi(e).openApiJson({host:yi(e.regionId),path:`/bailianControl/User/createUser`,action:`CreateUser`,version:vi,method:`POST`,body:{data:JSON.stringify({reqDTO:e.reqDTO})}})}async function Si(e){return bi(e).openApiJson({host:yi(e.regionId),path:`/bailianControl/workspaces`,action:`ListWorkspaces`,version:vi,method:`GET`,queryParams:{data:JSON.stringify({reqDTO:{},cornerstoneParam:{}})}})}async function Ci(e){return bi(e).openApiJson({host:yi(e.regionId),path:`/bailianControl/serviserAuthorityPolicy/resetPolicies4Agent`,action:`ChangeUserPermissions`,version:vi,method:`POST`,body:{data:JSON.stringify({cornerstoneParam:{},outerKey:e.outerKey,policyIndexList:e.policyIndexList??[1],agentId:e.agentId})}})}const wi=`zeldaHttp.dashscopeModel./zelda/api/v1/modelCenter/listFoundationModels`,Ti=`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 Ei(e,t={}){let{pageNo:n=1,pageSize:r=50,name:i=``,providers:a=[],capabilities:o=[]}=t,s=U(await e(wi,{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 Di(e,t={}){let n=t.pageSize??50,r=await Ei(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 Ei(e,{...t,pageNo:r,pageSize:n});if(a.models.length===0)break;i.push(...a.models)}return i}async function Oi(e,t){return(await Ei(e,{name:t,pageSize:50})).models.find(e=>e.model===t)??null}async function ki(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(wi,{input:u}));return{total:d.total??0,groups:d.list??[]}}function Ai(e){return e.flatMap(e=>e.items??[])}async function ji(e,t={}){let n=t.pageSize??50,r=await ki(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=>ki(e,{...t,pageNo:r,pageSize:n})));return Ai([r.groups,...o.map(e=>e.groups)].flat())}async function Mi(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 Ni=[`name`,`key`,`default`,`tip`,`range`];function Pi(e){return e.map(e=>{let t={};for(let n of Ni)e[n]!==void 0&&(t[n]=e[n]);return t})}async function Fi(e,t){let n=U(await e(Ti,{modelId:t})).predictConfig;if(!n)return null;if(typeof n==`string`)try{let e=JSON.parse(n);return Array.isArray(e)?Pi(e):null}catch{return null}return Array.isArray(n)?Pi(n):null}function Ii(e){return{read:()=>R(e),async write(t){let n=R(e);for(let[e,r]of Object.entries(t))r===void 0?delete n[e]:n[e]=e===`base_url`?Me(String(r)):r;await z(n,e)},async unset(t){let n=R(e);for(let e of t)delete n[e];await z(n,e)},profiles:()=>gt(),activate:e=>yt(e),validateActivation:e=>vt(e),get path(){return I()}}}async function Li(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:ir(),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 N(`Dataset upload failed${e.code?` [${e.code}]`:``}: ${e.message??`no message returned`}`,M.GENERAL,`Server reported failure for ${s}. Re-run with --verbose to see the raw response.`)}throw new N(`Dataset upload of ${s} returned no file_id (HTTP 200 with empty payload).`,M.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 Ri(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=ar(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function zi(e,t,n){return e.requestJson({path:or(t),method:`GET`,signal:n})}async function Bi(e,t,n){let r=await e.request({path:or(t),method:`DELETE`,signal:n});try{return await r.json()}catch{return{data:{deleted:!0,file_id:t}}}}const Vi=209715200,Hi=314572800,Ui=2147483648;function Wi(e,t=Vi){if(!i(e))throw new N(`File not found: ${e}`,M.USAGE);let n=l(e);if(!n.isFile())throw new N(`Not a regular file: ${e}`,M.USAGE);if(n.size===0)throw new N(`File is empty: ${e}`,M.USAGE);if(n.size>t)throw new N(`File too large: ${(n.size/1048576).toFixed(1)}MB exceeds the ${(t/1048576).toFixed(0)}MB dataset upload cap.`,M.USAGE);return{bytes:n.size,ext:h(e).toLowerCase()}}function W(e,t,n,r={}){return{severity:e,code:t,message:n,...r}}function Gi(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 N(`Unsupported --schema "${e}". Supported: chatml, dpo, cpt, tts, image.`,M.USAGE,`Omit --schema to auto-detect per record (chosen/rejected → DPO, text → CPT, wav_fn → TTS, img_path → image, else ChatML).`)}function Ki(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 qi=/* @__PURE__ */ new Set([`system`,`user`,`assistant`,`tool`]),Ji=.1;function Yi(e,t,n,r){let i=[],a=t=>{if(!(t in e))return;let a=e[t];(typeof a!=`number`||a<Ji||a>10)&&i.push(W(`error`,`INVALID_VIDEO_FPS`,`"${t}" must be a number between ${Ji} 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 Xi(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(...Yi(s,Array.isArray(e),t,o))}}}return r}function Zi(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 Qi(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`||!qi.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(...Xi(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(...Zi(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 $i(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(...Qi(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;ea(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 ea(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 ta={name:`chatml`,detect:()=>!0,inspect:$i};function na(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 ra={name:`cpt`,detect:e=>`text`in e&&!(`messages`in e),inspect:na};function ia(e,t){let n=$i(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(...Qi(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(...Qi(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 aa={name:`dpo`,detect:e=>`chosen`in e||`rejected`in e,inspect:ia};function oa(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 sa={name:`tts`,detect:e=>`wav_fn`in e,inspect:oa},ca=/* @__PURE__ */ new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.tif`,`.tiff`,`.webp`]);function la(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function ua(e){return/^[\x20-\x7E]+$/.test(e)}function da(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=la(r);ca.has(e)||n.push(W(`warning`,`UNUSUAL_IMAGE_EXT`,`"img_path" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...ca].join(`, `)}.`,{line:t,path:`img_path`})),ua(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=la(r);ca.has(e)||n.push(W(`warning`,`UNUSUAL_INPUT_IMG_EXT`,`"input_img" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...ca].join(`, `)}.`,{line:t,path:`input_img`})),ua(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 fa={name:`image`,detect:e=>`img_path`in e,inspect:da},pa=/* @__PURE__ */ new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.webp`]),ma=/* @__PURE__ */ new Set([`.mp4`,`.mov`]);function ha(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function ga(e){return/^[\x20-\x7E]+$/.test(e)}function _a(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=ha(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})),ga(o)||e.push(W(`error`,`NON_ASCII_PATH`,`"${n}" must contain only ASCII characters (English filenames required). Got: "${o}".`,{line:a,path:n}))}function va(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 _a(n,e,`first_frame_path`,!0,pa,t),_a(n,e,`last_frame_path`,!1,pa,t),_a(n,e,`video_path`,!1,ma,t),n}const ya=[sa,fa,{name:`video`,detect:e=>`first_frame_path`in e||`video_path`in e,inspect:va},aa,ra,ta];function ba(e,t){return t===void 0?ya.find(t=>t.detect(e))??ta:ya.find(e=>e.name===t)||ta}async function xa(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 Sa(e,t,r,i,a){let o=r?null:new Set(Ki(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(...Ca(n,d,i))}return{sampled:c,issues:s}}function Ca(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 ba(r,n).inspect(r,t)}const wa={format:`jsonl`,extensions:[`.jsonl`],async validate(e,t){let n=Date.now(),r=await xa(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 Sa(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 Ta(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 Ea(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 Da=/^[a-zA-Z0-9_-]+$/;function Oa(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function ka(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 Aa(e){let t=[],n=/* @__PURE__ */ new Map;for(let r of e){if(r.endsWith(`/`)||ka(r))continue;let e=r.split(`/`).filter(e=>e.length>0);for(let n of e){let e=Oa(n),i=n.slice(e.length);e.length>0&&!Da.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=Oa(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 ja(e,t,n){let{entry:i,zipfile:a}=await Ta(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 Ma(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 Na={format:`zip`,extensions:[`.zip`],async validate(e,t){let n=Date.now(),r=[],i=[],o;try{o=await Ea(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=Aa(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(`/`)||ka(e))return!1;let t=e.lastIndexOf(`.`),n=t>=0?e.slice(t).toLowerCase():``;return ca.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 ja(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 wa.validate(y,t);if(r.push(...b.errors),i.push(...b.warnings),b.valid){let{refs:e}=await Ma(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 Pa(e){let t=h(e).toLowerCase();if(t===`.jsonl`)return Fa(e);if(t===`.zip`)return Ia(e);throw new N(`Cannot inspect file with extension "${t}". Expected .jsonl or .zip.`,M.USAGE)}async function Fa(e){let t=await Ra(e);if(!t)throw new N(`JSONL file is empty or contains only blank lines: ${e}`,M.USAGE);let n=La(t);return n===`unknown`?`text`:n}async function Ia(e){let t=await za(e,`data.jsonl`);if(!t)throw new N(`ZIP archive does not contain "data.jsonl" or it is empty: ${e}`,M.USAGE,`Audio training data must be a ZIP with data.jsonl at the root and a train/ subfolder.`);let n=La(t);if(n===`unknown`)throw new N(`ZIP data.jsonl does not match any supported media format (expected wav_fn / img_path / first_frame_path / video_path): ${e}`,M.USAGE,`ZIP archives are for audio/image/video training data. For text data, use a .jsonl file instead.`);return n}function La(e){let t;try{t=JSON.parse(e)}catch{throw new N(`Failed to parse first JSON record for modality detection: ${e.slice(0,120)}`,M.USAGE)}if(typeof t!=`object`||!t||Array.isArray(t))throw new N(`Expected a JSON object as the first record, got ${Array.isArray(t)?`array`:typeof t}.`,M.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 Ra(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 za(e,t){return Ta(e,t).then(({entry:e,zipfile:n})=>new Promise((r,i)=>{n.openReadStream(e,(e,a)=>{if(e||!a){n.close(),i(new N(`Failed to read "${t}" from ZIP: ${e?.message}`,M.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 Ba=[wa,Na];function Va(e){let t=h(e).toLowerCase(),n=Ba.find(e=>e.extensions.includes(t));if(!n){let e=Ba.flatMap(e=>e.extensions).join(`, `);throw new N(`Unsupported dataset format "${t||`(none)`}". Supported: ${e}`,M.USAGE,`Convert your data to one of the supported formats and re-run.`)}return n}function Ha(e){Ba.some(t=>t.format===e.format)||Ba.push(e)}async function G(e,t={}){let{bytes:n}=Wi(e,t.maxBytes??209715200),r=await Va(e).validate(e,t);return r.stats.bytes===void 0&&(r.stats.bytes=n),r}function Ua(){return Ba.map(e=>({format:e.format,extensions:[...e.extensions]}))}function Wa(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 Ga(e,t,n){return e.requestJson({path:sr(),method:`POST`,body:t,signal:n})}async function Ka(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=sr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function qa(e,t,n){return e.requestJson({path:cr(t),method:`GET`,signal:n})}async function Ja(e,t,n){return e.requestJson({path:lr(t),method:`POST`,signal:n})}async function Ya(e,t,n){return e.requestJson({path:cr(t),method:`DELETE`,signal:n})}async function Xa(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=ur(t),a=r.toString()?`${i}?${r.toString()}`:i;return e.requestJson({path:a,method:`GET`,signal:n.signal})}async function Za(e,t,n){return e.requestJson({path:dr(t),method:`GET`,signal:n})}async function Qa(e,t,n,r,i){let a=new URLSearchParams;return a.set(`model_name`,r),e.requestJson({path:`${fr(t,n)}?${a.toString()}`,method:`GET`,signal:i})}const $a={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`}},eo=Object.keys($a),to=`sft-lora`;function no(e){return e in $a}function ro(e){let{method:t,variant:n}=$a[e];return{method:t,variant:n}}function io(e,t){if(!e)return!1;let{method:n,variant:r}=$a[t];if(e.supports?.[n]!==!0)return!1;let i=e.trainingTypes?.[n];return Array.isArray(i)&&i.includes(r)}function ao(e){return e?eo.filter(t=>io(e,t)):[]}async function oo(e,t){return await Oi(yn(e),t)}const so=`INSUFFICIENT_SAMPLES`;function co(e){let{recordCount:t,batchSize:n}=e;return t>n?{ok:!0}:{ok:!1,issue:{severity:`error`,code:so,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 lo(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 uo(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 lo(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}}const fo=uo(`sft`,`sft`,`chatml`),po={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},mo={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},ho={...mo,max_pixels:`1k`,val_img_size:`1k`,generation_type:`i2i`},go={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 _o(e){return e===`image`||e===`image-i2i`}function vo(e){return e===`video`||e===`video-kf2v`}function yo(e){return typeof e==`string`&&/wan2\.5/i.test(e)}function bo(e){return typeof e==`string`&&/wan2\.7/i.test(e)}const xo=[fo,{clientTrainingType:`sft-lora`,serverTrainingType:`efficient_sft`,acceptedExtensions:[`.jsonl`,`.zip`],async validate(e,t,n){if(t===`audio`)return G(e,{...n,schema:`tts`});if(_o(t))return G(e,{...n,schema:`image`,maxBytes:Ui});if(vo(t)){let r=await G(e,{...n,schema:`video`,maxBytes:Ui});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{...po};if(_o(e)){let n={...e===`image-i2i`?ho:mo};return t.learningRate!==void 0&&(n.learning_rate=t.learningRate),n}if(vo(e)){let e=t.model??t.baseModel,n={...go,batch_size:bo(e)?1:4,max_pixels:bo(e)?102400:yo(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 lo(t)},shouldSkipGate(e,t){return!(t!==`audio`&&!_o(t)&&!vo(t)||e!==`batch_size`)},shouldSkipCapabilityCheck(e){return e===`audio`||_o(e)||vo(e)}},uo(`dpo`,`dpo_full`,`dpo`),uo(`dpo-lora`,`dpo_lora`,`dpo`),{clientTrainingType:`cpt`,serverTrainingType:`cpt`,acceptedExtensions:[`.jsonl`],async validate(e,t,n){return G(e,{...n,schema:`cpt`,maxBytes:Hi})},resolveHyperParameters(e,t){return lo(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}];function So(e){let t=xo.find(t=>t.clientTrainingType===e);if(!t){let t=xo.map(e=>e.clientTrainingType).join(`, `);throw new N(`Unknown training type "${e}".`,M.USAGE,`Supported training types: ${t}.`)}return t}function Co(){return xo.map(e=>e.clientTrainingType)}const wo=`zeldaEasy.broadscope-platform.modelCenter.getModelPrice`,To=`zeldaEasy.broadscope-platform.modelInstance.calculateDatasetsTotalTokens`,Eo=`zeldaEasy.broadscope-platform.modelInstance.estimateFinetuneTokens`;async function Do(e,t){return U(await e.console(wo,{query:{type:0,modelId:t}}))}async function Oo(e,t,n){return U(await e.console(To,{input:{trainDatasetIds:t,hyperParams:n}}))}async function ko(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(Eo,{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 Ao(e){return e?{"x-acs-req-uuid":e,"X-DashScope-RequestId":e}:void 0}async function jo(e,t,n){return e.requestJson({path:pr(),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.plan!==void 0&&n.set(`plan`,t.plan);let r=pr(),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:V(t),method:`GET`,signal:n})}async function Po(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=mr(t),a=r.toString()?`${i}?${r.toString()}`:i;return e.requestJson({path:a,method:`GET`,signal:n.signal})}async function Fo(e,t,n,r){return e.requestJson({path:hr(t,n),method:`GET`,signal:r})}async function Io(e,t,n,r){return e.requestJson({path:yr(t,n),method:`GET`,signal:r})}async function Lo(e,t,n,r={}){return e.requestJson({path:mr(t),method:`POST`,body:n,headers:Ao(r.requestId),signal:r.signal})}async function Ro(e,t,n,r,i={}){return e.requestJson({path:gr(t,n),method:`PUT`,body:r,headers:Ao(i.requestId),signal:i.signal})}async function zo(e,t,n,r,i={}){return e.requestJson({path:_r(t,n),method:`PUT`,body:r,headers:Ao(i.requestId),signal:i.signal})}async function Bo(e,t,n,r={}){let i=hr(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:Ao(r.requestId),signal:r.signal})}async function Vo(e,t,n,r){return e.requestJson({path:vr(t),method:`PUT`,body:{overflow_strategy:n},signal:r})}async function Ho(e,t,n){return e.requestJson({path:V(t),method:`DELETE`,signal:n})}async function Uo(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=Sr(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Wo(e,t,n,r,i){return e.requestJson({path:br(t),method:`PUT`,body:n,headers:Ao(i),signal:r})}async function Go(e,t,n,r){return e.requestJson({path:xr(t),method:`PUT`,body:n,signal:r})}const K={LORA:`lora`,PTU:`ptu`,MU:`mu`},Ko=K.LORA;function qo(e){return e===`audio`?K.MU:Ko}const Jo={POST_PAY:`POST_PAY`,PRE_PAY:`PRE_PAY`},Yo=Jo.POST_PAY,q={POST_PAID:`post_paid`,PRE_PAID:`pre_paid`};function Xo(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
+ 必须同时提供 --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
+ --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 Zo(e){let t={};return e.inputTpm!==void 0&&(t.input_tpm=e.inputTpm),e.outputTpm!==void 0&&(t.output_tpm=e.outputTpm),t}function Qo(e){return e.duration!==void 0||e.autoRenewal!==void 0||e.autoRenewalDuration!==void 0||e.autoRenewalCycle!==void 0}function $o(e,t){if(t||Qo(e)){if(e.duration===void 0||!Number.isSafeInteger(e.duration)||e.duration<=0)return`--duration must be a positive safe integer in days.
17
+ --duration 必须是正安全整数,单位为天。`;if(typeof e.autoRenewal!=`boolean`)return`--auto-renewal must explicitly be true or false.
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
+ --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 es(e){if(!Qo(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 ts={name:K.LORA,validateFlags(){},async resolve(){return{body:{capacity:1}}}},ns={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.
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&&Qo(e)?`Prepaid flags are not allowed with --charge-type post_paid.
25
+ --charge-type post_paid 不允许提供预付费参数。`:Xo(e,!0)??$o(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:Zo(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=es(e.flags);return n!==void 0&&(t.pre_paid_info=n),{body:t}}},rs={name:K.MU,validateFlags(){},async resolve(e){let t=e.flags.billingMethod||Yo,n=e.flags.deploySpec,r=e.flags.capacity;if(!e.dryRun&&!n){let i=()=>new N(`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.`,M.USAGE);try{let a=await Uo(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===Jo.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 N?e:new N(`Failed to auto-pick template for plan=mu: ${e.message}. Pass --deploy-spec explicitly.`,M.USAGE)}}let i={capacity:r??1,billing_method:t};return n&&(i.deploy_spec=n),{body:i}}},is={[K.LORA]:ts,[K.PTU]:ns,[K.MU]:rs};function as(e){let t=is[e];if(!t)throw new N(`Unsupported plan "${e}". Supported plans: ${Object.keys(is).join(`, `)}.`,M.USAGE);return t}const os=`zeldaEasy.broadscope-platform.modelInstance.startModelService`,ss=`zeldaEasy.broadscope-platform.modelInstance.stopModelService`,cs=`zeldaEasy.broadscope-platform.modelInstance.listIndependentDeployedModel`;async function ls(e,t){return U(await e.console(os,{input:{modelServiceId:t}}))}async function us(e,t){return U(await e.console(ss,{input:{modelServiceId:t}}))}async function ds(e){let t=[],n=1;for(;;){let r=U(await e.console(cs,{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 fs(e,t){return e.find(e=>e.modelServiceId===t||e.deployedModel===t||e.deployed_model===t)}const ps=`speech-biasing`;function ms(e,t){return{model:ps,input:{action:e,...t}}}async function hs(e,t,n,r){return e.requestJson({path:Kn(),method:`POST`,body:ms(t,n),signal:r})}function gs(e,t,n){return hs(e,`create_vocabulary`,{target_model:t.targetModel,prefix:t.prefix,vocabulary:t.vocabulary},n)}function _s(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),hs(e,`list_vocabulary`,r,n)}function vs(e,t,n){return hs(e,`query_vocabulary`,{vocabulary_id:t},n)}function ys(e,t,n,r){return hs(e,`update_vocabulary`,{vocabulary_id:t,vocabulary:n},r)}function bs(e,t,n){return hs(e,`delete_vocabulary`,{vocabulary_id:t},n)}function xs(e,t){try{return JSON.parse(e)}catch(e){throw new P(`${t} is not valid JSON — ${e.message}`)}}function Ss(e){let t=xs(e,`--vocabulary`);if(!t||typeof t!=`object`||Array.isArray(t))throw new P(`--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 P(`--vocabulary weight for "${e}" must be a number.`);return t}function Cs(e,t){let n=`--words`,r=xs(e,n),i;if(Array.isArray(r))i=r.map((e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw new P(`${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 P(`${n} entry #${t} must have a string "text" and a number "weight".`);if(!Number.isFinite(r.weight))throw new P(`${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 P(`${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 P(`${n} weight for "${e}" must be a number.`);i.push({text:e,weight:a,...t?{lang:t}:{}})}}if(i.length===0)throw new P(`${n} must contain at least one hot word.`);return i}const ws={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":`显示版本信息`}}},Ts={concurrent:{type:`number`,valueHint:`<n>`,description:{"en-US":`Run N parallel requests (default: 1)`,"zh-CN":`并行发送 N 个请求(默认:1)`}}},Es={async:{type:`switch`,description:{"en-US":`Return async task id without waiting`,"zh-CN":`直接返回异步任务 ID,不等待任务完成`}}},Ds={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`}}},Os={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)`}}},ks={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 As(e){return e.auth===`apiKey`?Ds:e.auth===`console`?Os:e.auth===`openapi`?ks:{}}function js(e){return e}const Ms=1;function Ns(e,t){return e.normalize(`NFKC`).replace(/[\\/:*?"<>|]/g,`_`).replace(/\s+/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``)||t}function Ps(e,t){return`${Ns(e||`image`,`image`)}_${Ns((t||``).substring(0,20),`untitled`)}_${Date.now()}`}const Fs=()=>g(f(),`bailian-output`);function Is(e,t){let n=t?.flagDir||e.outputDir||Fs(),r=t?.subDir?g(n,t.subDir):n;return i(r)||a(r,{recursive:!0}),r}function Ls(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}function Rs(e){return o(e===`-`?0:e,`utf-8`)}async function zs(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 Bs(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 N(`Invalid ${t} value "${String(e)}". Use true or false.`,M.USAGE)}function Vs(e,t=`boolean`){if(e!=null)return Bs(e,t)}function Hs(e,t,n=`boolean`){let r=Vs(e,n);return r===void 0?t:r}function Us(e,t){return Vs(e,`watermark`)??t??!0}function Ws(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 Gs(e){if(e==null)return;let t=typeof e==`string`?e:JSON.stringify(e);return t.length<=500?t:t.slice(0,500)}function Ks(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=Gs(e.errorMessage)),e.requestId&&(i.c5=e.requestId),i}let J;function qs(){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 Js=/* @__PURE__ */ Ee(((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=ke(`os`)},function(e,t){e.exports=globalThis.fetch},function(e,t,n){e.exports=n(6)},function(e,t){e.exports=ke(`dns`)},function(e,t){e.exports=ke(`util`)},function(e,t){e.exports=ke(`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`},C=(e,t)=>{t.appName=`DataproviderBot`,t.appVersion=e.value,t.deviceBrand=`Dataprovider.com`,t.deviceType=`bot`,t.platform=`other`},w=(e,t)=>{t.appName=`AhrefsBot`,t.appVersion=e.value,t.deviceBrand=`Ahrefs`,t.deviceType=`bot`,t.platform=`other`},T=(e,t)=>{t.appName=`BitSightBot`,t.appVersion=e.value,t.deviceBrand=`Bitsight`,t.deviceType=`bot`,t.platform=`other`},E=(e,t)=>{t.appName=`oBot`,t.appVersion=e.value,t.deviceBrand=`IBM`,t.deviceType=`bot`,t.platform=`other`},oe=(e,t)=>{t.appName=`Cincraw`,t.appVersion=e.value,t.deviceBrand=`CINC`,t.deviceType=`bot`,t.platform=`other`},se=(e,t)=>{t.appName=`DingTalkBot`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},ce=(e,t)=>{t.appName=`YisouSpider`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},D=(e,t)=>{t.appName=`ByteSpider`,t.appVersion=e.value,t.deviceBrand=`ByteDance`,t.deviceType=`bot`,t.platform=`other`},le=(e,t)=>{t.appName=`HeadlineCrawler`,t.appVersion=e.value,t.deviceBrand=`Headline.com`,t.deviceType=`bot`,t.platform=`other`},ue=(e,t)=>{t.appName=`BitDiscoveryBot`,t.appVersion=e.value,t.deviceBrand=`Tenable`,t.deviceType=`bot`,t.platform=`other`},O=(e,t)=>{e.getPreviousNTokens(4)===`Screaming Frog SEO Spider`&&(t.deviceBrand=`Screaming Frog`,t.appName=`Screaming Frog`),t.appVersion=e.value,t.deviceType=`bot`},k=(e,t)=>{t.appName=`Ai2Bot`,t.appVersion=e.value,t.deviceBrand=`Ai2`,t.deviceType=`bot`,t.platform=`other`},de=(e,t)=>{t.appName=`DianjingAdSpider`,t.appVersion=e.value,t.deviceBrand=`Dianjing`,t.deviceType=`bot`,t.platform=`other`},A=/* @__PURE__ */ new Map,j=/* @__PURE__ */ new Map;A.set(`Baiduspider-render`,i),A.set(`Baiduspider+`,i),A.set(`Baiduspider-image+`,i),A.set(`360Spider`,a),A.set(`360Spider-Image`,a),A.set(`bingbot`,o),A.set(`Googlebot`,s),A.set(`YandexRenderResourcesBot`,c),A.set(`spider`,l),A.set(`Dataprovider.com`,u),A.set(`AhrefsBot`,d),A.set(`BitSightBot`,f),A.set(`oBot`,p),A.set(`Cincraw`,m),A.set(`DingTalkBot-LinkService`,h),A.set(`YisouSpider`,g),A.set(`Bytespider`,_),A.set(`ev-crawler`,v),A.set(`bitdiscovery`,y),A.set(`Spider`,b),A.set(`Ai2Bot-Dolma`,ee),A.set(`dianjing_ad_spider`,te),j.set(`Baiduspider-render`,ne),j.set(`Baiduspider+`,ne),j.set(`Baiduspider-image+`,ne),j.set(`360Spider`,x),j.set(`360Spider-Image`,x),j.set(`bingbot`,re),j.set(`Googlebot`,S),j.set(`YandexRenderResourcesBot`,ie),j.set(`spider`,ae),j.set(`Dataprovider.com`,C),j.set(`AhrefsBot`,w),j.set(`BitSightBot`,T),j.set(`oBot`,E),j.set(`Cincraw`,oe),j.set(`DingTalkBot-LinkService`,se),j.set(`YisouSpider`,ce),j.set(`Bytespider`,D),j.set(`ev-crawler`,le),j.set(`bitdiscovery`,ue),j.set(`Spider`,O),j.set(`Ai2Bot-Dolma`,k),j.set(`dianjing_ad_spider`,de);let fe={productHandlerMap:A,commentHandlerMap:j,getSpecialProductHandler:()=>null,getSpecialCommentHandler:()=>null,getDefaultModelHandler:()=>null};t.isBot=function(e){let t=r.createUAInfo();return r.runTask(e,t,fe),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){C(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 C(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 w(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=E(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.
14
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 T(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)||E(e,t)||(function(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
15
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)})()}function E(e,t){if(e){if(typeof e==`string`)return D(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)?D(e,t):void 0}}function D(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 oe(){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=T(r[n],2),o=(a[0],a[1]);if(o){var s,c=w(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,O,ce=(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(oe()).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({},ce),e)),this._config.endpoint_url=`https://${this._config.endpoint}/aes.1.1`}k.prototype=((O=function(){}).prototype=b.prototype,new O),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})),Ds=/* @__PURE__ */ Te(((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})),Os=/* @__PURE__ */ De(Es(),1),ks=/* @__PURE__ */ De(Ds(),1);const As=()=>g(I(),`telemetry.jsonl`);let js;const Ms=/* @__PURE__ */ new Set;let Ns;try{let e=new Os.default({pid:`bailian-cli-node`,env:Ts()}),t=e.send.bind(e);e.send=function(e){let n=t(e);if(n&&typeof n.then==`function`){let e=n;Ms.add(e),e.finally(()=>Ms.delete(e))}return n},Ns=e,js=e.use(ks.default)}catch{}async function Ps(e=1e3){try{if(Ns)try{typeof Ns._sendAll==`function`&&Ns._sendAll()}catch{}if(Ms.size===0)return;let t=[...Ms].map(e=>e.catch(()=>void 0));await Promise.race([Promise.allSettled(t),new Promise(t=>setTimeout(t,e).unref?.())])}catch{}}async function Fs(e){try{await nt();let n=As();try{l(n).size>5242880&&u(n)}catch{}t(n,JSON.stringify(e)+`
16
- `,{mode:384})}catch{}}async function Is(e){try{if(!js)return;js(e.command,ws(e))}catch{}}const Ls=/* @__PURE__ */ new Set([`apiKey`,`baseUrl`,`output`,`quiet`,`verbose`,`timeout`,`dryRun`,`help`,`console`]),Rs=/* @__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 zs(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith(`_`)||Ls.has(n)||Rs.has(n)&&r!==void 0&&r!==!1&&(t[n]=r);return t}async function Bs(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=Ss({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:zs(n)});Fs(u).catch(()=>{}),Is(u).catch(()=>{})}}function Vs(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 Hs=class{settings;name=`api`;constructor(e){this.settings=e}available(){return!0}async load(){return(await vi(_n(this.settings))).map(Vs).filter(e=>e!==null)}};function Us(){return j(I(),`skills/bailian-docs-llm-wiki`)}function Ws(){return j(Us(),`models`,`models.jsonl`)}function Gs(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 Ks(e){let t=E(e,`utf-8`).split(`
17
- `).filter(Boolean),n=[];for(let e of t)try{let t=Gs(JSON.parse(e));t&&n.push(t)}catch{}return n}var qs=class{name=`catalog`;constructor(e){}available(){return C(Ws())}async load(){return this.available()?Ks(Ws()):[]}};async function Js(e,t){let n=[new qs({onPrepareStart:t?.onPrepareStart}),new Hs(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 Ys={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`},Y={Single:`single`,Pipeline:`pipeline`},Xs={Low:`low`,Medium:`medium`,High:`high`},Zs={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`},Qs={FunctionCalling:`function-calling`,WebSearch:`web-search`,StructuredOutputs:`structured-outputs`,PrefixCompletion:`prefix-completion`},$s={Flagship:`Flagship`,CostOptimized:`Cost-optimized`},ec=20,tc=/-\d{4}-\d{2}-\d{2}$/,nc=/* @__PURE__ */ new Set([Z.IG,Z.VG,Z.TTS,Z.RealtimeTTS,Z.ThreeDGeneration]),rc=/* @__PURE__ */ new Set([Z.TG,Z.Reasoning,Z.ASR,Z.RealtimeASR,Z.RealtimeAudioTranslate,Z.TR,Z.ME]),ic={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 ac=`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 E(e,t){if(e){if(typeof e==`string`)return oe(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)?oe(e,t):void 0}}function oe(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 se(){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=T(r[n],2),o=(a[0],a[1]);if(o){var s,c=w(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 ce,D,le=(ce=process.version,{os:i.a.type(),os_version:i.a.release(),app_name:`node`,app_version:ce,device_id:re.a.createHash(`md5`).update(se()).digest(`hex`),platform:`node`}),ue=(0,ne.promisify)(te.a.resolve);function O(e){this._offlineQueue=[],e.endpoint=e.endpoint||`gm.mmstat.com`,b.call(this,ae(ae({},le),e)),this._config.endpoint_url=`https://${this._config.endpoint}/aes.1.1`}O.prototype=((D=function(){}).prototype=b.prototype,new D),O.prototype.constructor=O,O.prototype.send=function(e){var t,n=this;return(t=this._config.endpoint,ue(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=O}]).default})),Ys=/* @__PURE__ */ Ee(((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})),Xs=/* @__PURE__ */ Oe(Js(),1),Zs=/* @__PURE__ */ Oe(Ys(),1);const Qs=()=>g(F(),`telemetry.jsonl`);let $s;const ec=/* @__PURE__ */ new Set;let tc;try{let e=new Xs.default({pid:`bailian-cli-node`,env:qs()}),t=e.send.bind(e);e.send=function(e){let n=t(e);if(n&&typeof n.then==`function`){let e=n;ec.add(e),e.finally(()=>ec.delete(e))}return n},tc=e,$s=e.use(Zs.default)}catch{}async function nc(e=1e3){try{if(tc)try{typeof tc._sendAll==`function`&&tc._sendAll()}catch{}if(ec.size===0)return;let t=[...ec].map(e=>e.catch(()=>void 0));await Promise.race([Promise.allSettled(t),new Promise(t=>setTimeout(t,e).unref?.())])}catch{}}async function rc(e){try{await rt();let n=Qs();try{l(n).size>5242880&&u(n)}catch{}t(n,JSON.stringify(e)+`
29
+ `,{mode:384})}catch{}}async function ic(e){try{if(!$s)return;$s(e.command,Ks(e))}catch{}}const ac=/* @__PURE__ */ new Set([`apiKey`,`baseUrl`,`output`,`quiet`,`verbose`,`timeout`,`dryRun`,`help`,`console`]),oc=/* @__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 sc(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith(`_`)||ac.has(n)||oc.has(n)&&r!==void 0&&r!==!1&&(t[n]=r);return t}async function cc(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 N?(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=Ws({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:sc(n)});rc(u).catch(()=>{}),ic(u).catch(()=>{})}}function lc(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 uc=class{settings;name=`api`;constructor(e){this.settings=e}available(){return!0}async load(){return(await Di(yn(this.settings))).map(lc).filter(e=>e!==null)}};function dc(){return A(F(),`skills/bailian-docs-llm-wiki`)}function fc(){return A(dc(),`models`,`models.jsonl`)}function pc(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 mc(e){let t=E(e,`utf-8`).split(`
30
+ `).filter(Boolean),n=[];for(let e of t)try{let t=pc(JSON.parse(e));t&&n.push(t)}catch{}return n}var hc=class{name=`catalog`;constructor(e){}available(){return C(fc())}async load(){return this.available()?mc(fc()):[]}};async function gc(e,t){let n=[new hc({onPrepareStart:t?.onPrepareStart}),new uc(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 N(`No model data available.`,M.GENERAL)}const _c={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`},Y={Single:`single`,Pipeline:`pipeline`},vc={Low:`low`,Medium:`medium`,High:`high`},yc={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`},bc={FunctionCalling:`function-calling`,WebSearch:`web-search`,StructuredOutputs:`structured-outputs`,PrefixCompletion:`prefix-completion`},xc={Flagship:`Flagship`,CostOptimized:`Cost-optimized`},Sc=20,Cc=/-\d{4}-\d{2}-\d{2}$/,wc=/* @__PURE__ */ new Set([Z.IG,Z.VG,Z.TTS,Z.RealtimeTTS,Z.ThreeDGeneration]),Tc=/* @__PURE__ */ new Set([Z.TG,Z.Reasoning,Z.ASR,Z.RealtimeASR,Z.RealtimeAudioTranslate,Z.TR,Z.ME]),Ec={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 Dc=`You are a model recommendation advisor for Alibaba Cloud Model Studio. From the candidate models below, select the best recommendations.
18
31
 
19
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.
20
33
 
@@ -55,7 +68,7 @@ Single task:
55
68
  {"type":"single","recommendations":[{"model":"model ID","reason":"recommendation reason","highlights":["key highlights"]}]}
56
69
 
57
70
  Pipeline (only when confident multi-model is needed):
58
- {"type":"pipeline","summary":"one-line solution description","steps":[{"step":"step description","recommendations":[{"model":"model ID","reason":"reason for choosing","highlights":["highlights"]}]}]}`,oc=`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"]}]}]}`,Oc=`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.
59
72
 
60
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.
61
74
 
@@ -94,7 +107,7 @@ Key principles:
94
107
 
95
108
  Or (if single model suffices):
96
109
  {"type":"single","recommendations":[{"model":"model ID","reason":"recommendation reason","highlights":
97
- ["key highlights"]}]}`,sc={complexity:Y.Single,taskSummary:``,scenarioHints:[],semanticQuery:``,inputModality:[],outputModality:[],requiredCapabilities:[Z.TG],requiredFeatures:[],budget:Xs.Medium,contextNeed:Zs.Standard,qualityPreference:X.Balanced,confidence:0},cc=[`unconstrained`,`scoped`,`comparison`,`alternative`];function lc(e){if(!e||typeof e!=`object`)return;let t=typeof e.mode==`string`&&cc.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 uc(e,t){let n=En(),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"]}]}`,kc={complexity:Y.Single,taskSummary:``,scenarioHints:[],semanticQuery:``,inputModality:[],outputModality:[],requiredCapabilities:[Z.TG],requiredFeatures:[],budget:vc.Medium,contextNeed:yc.Standard,qualityPreference:X.Balanced,confidence:0},Ac=[`unconstrained`,`scoped`,`comparison`,`alternative`];function jc(e){if(!e||typeof e!=`object`)return;let t=typeof e.mode==`string`&&Ac.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 Mc(e,t){let n=On(),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.
98
111
 
99
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.
100
113
 
@@ -141,9 +154,9 @@ Analyze whether the user mentioned specific models, model families, or vendors:
141
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
142
155
  - modelPreference: { mode, targets?, excludes? }
143
156
 
144
- 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{...sc}}let a=(i.choices?.[0]?.message?.content??``).match(/\{[\s\S]*\}/);if(!a)return{...sc};let o=JSON.parse(a[0]),s=o.modelPreference,c=lc(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??sc.budget,contextNeed:o.contextNeed??sc.contextNeed,qualityPreference:o.qualityPreference??sc.qualityPreference,confidence:1,modelPreference:c}}function dc(e){let t=!1,n=!1;for(let r of e)nc.has(r)&&(t=!0),rc.has(r)&&(n=!0);return t&&n}function fc(e){let t=new Set(e.map(({model:e})=>e));return e.filter(({model:e})=>{let n=e.replace(tc,``);return n===e||!t.has(n)})}function pc(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 mc(e,t){if(t.length===0)return!0;let n=e.inferenceMetadata?.request_modality??[];return t.some(e=>n.includes(e))}function hc(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=ic[i];return d>0&&(c??0)>=d&&(u+=8),a===X.Flagship&&l===$s.Flagship||a===X.CostOptimized&&l===$s.CostOptimized?u+=15:a===X.Balanced&&l===$s.Flagship&&(u+=5),u}function gc(e,t,n){return e.map(e=>({model:e,score:hc(e,t)})).sort((e,t)=>t.score-e.score).slice(0,n)}function _c(e){return new Set(e.map(({model:e})=>e.model))}function vc(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 yc(e,t){let n=new Set(t);return e.filter(e=>!n.has(e.model.model)&&(n.add(e.model.model),!0))}function bc(e,t,n){return n.size>=10?[]:gc(e.filter(({model:e})=>!n.has(e)),t,10-n.size)}function xc(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:Zs.Standard,qualityPreference:i,confidence:1},l=e.filter(e=>pc(e,a,o)&&mc(e,n));return l.length<5&&(l=e.filter(e=>pc(e,a,o))),l.length<5&&(l=e),gc(l,c,5)}function Sc(e,t){e=fc(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=yc(xc(e,i,a,t.budget,t.qualityPreference),_c(r));r=[...r,...o]}let i=bc(e,t,_c(r));n=[...r,...i]}else if(dc(t.requiredCapabilities))n=Cc(e,t);else{let r=e.filter(e=>pc(e,t.inputModality,t.outputModality));r.length<5&&(r=e),n=gc(r,t,50)}return vc(n,3)}function Cc(e,t){let n=t.requiredCapabilities.filter(e=>nc.has(e)),r=t.requiredCapabilities.filter(e=>rc.has(e)),i=[];if(n.length>0&&(i=gc(e.filter(e=>n.some(t=>e.capabilities.includes(t))),t,25)),r.length>0){let n=_c(i),a={...t,requiredCapabilities:r},o=e.filter(e=>!n.has(e.model)&&r.some(t=>e.capabilities.includes(t)));i=[...i,...gc(o,a,25)]}let a=bc(e,t,_c(i));return[...i,...a]}const wc=`text-embedding-v4`;function Tc(){return j(I(),`skills/bailian-docs-llm-wiki`)}function Ec(){return j(Tc(),`models-embeddings.json`)}function Dc(){let e=Ec();if(!C(e))return null;try{return JSON.parse(E(e,`utf-8`)).items}catch{return null}}async function Oc(e,t){let n={model:wc,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 kc(e,t){let n={model:wc,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 Ac={TG:`Text Generation`,Reasoning:`Reasoning`,VU:`Vision Understanding`,IG:`Image Generation`,VG:`Video Generation`,TTS:`Text-to-Speech`,ASR:`Speech-to-Text`},jc={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`};function Mc(){let e=j(Tc(),`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(j(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 Nc(e,t){let n=(e.capabilities??[]).map(e=>Ac[e]??e).join(`, `),r=t.get(e.model)||e.shortDescription||e.description||``,i=(e.inferenceMetadata?.request_modality??[]).map(e=>jc[e]??e).join(`, `),a=(e.inferenceMetadata?.response_modality??[]).map(e=>jc[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 Pc(e,t){let n=Mc(),r=t.map(e=>Nc(e,n)),i=[];for(let t=0;t<r.length;t+=10){let n=await kc(e,r.slice(t,t+10));i.push(...n)}let a=t.map((e,t)=>({id:e.model,vector:i[t]})),o={model:wc,dimensions:512,count:a.length,items:a},s=Ec();return T(A(s),{recursive:!0}),k(s,JSON.stringify(o)),a}function Fc(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 Ic=null;function Lc(){return Ic===null&&(Ic=Dc()),Ic}function Rc(){return Lc()!==null}function zc(e){return(e??``).toLowerCase().replace(tc,``).replace(/[\s_-]+/g,``).trim()}function Bc(e,t){let n=zc(t);if(!n)return!1;if(zc(e.model)===n||zc(e.name)===n)return!0;let r=e.model,i=r.lastIndexOf(`/`);return i>=0&&zc(r.slice(i+1))===n||[e.family,e.familyName].some(e=>{if(!e)return!1;let t=zc(e);return t.length>0&&n.includes(t)})}function Vc(e,t){return t.some(t=>Bc(e,t))}function Hc(e,t){return t.length===0?[]:e.filter(e=>Vc(e,t))}function Uc(e,t){return t.length===0?e:e.filter(({model:e})=>!Vc(e,t))}function Wc(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 Gc(e,t){return Wc(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function Kc(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=ic[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===$s.Flagship?1:.5:a===X.CostOptimized&&(u=e.category===$s.CostOptimized?1:.5),.4*o+.2*s+.2*c+.2*u}function qc(e,t){if(!t)return new Set(e.map(e=>e.model));let n=e.filter(e=>Gc(e,t)),r=n.length>=5?n:e;return new Set(r.map(e=>e.model))}function Jc(e,t){return Wc(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function Yc(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=Fc(t,e.vector),o=a?Kc(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 Xc(e){return{model:e,score:1,hardScore:1,softScore:1}}function Zc(e,t,n,r,i,a,o){let s=r.targets??[],c=s.length>0?Hc(e,s):e,l=[];if(c.length<5&&s.length>0){for(let e of c)l.push(Xc(e));let r=new Set(l.map(({model:e})=>e.model)),s=Yc(t,n,qc(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 Yc(t,n,qc(c,o),i,a,o)}function Qc(e,t,n,r,i,a,o){let s=r.targets??[],c=[],l=/* @__PURE__ */ new Set;for(let t of e)Vc(t,s)&&!l.has(t.model)&&(c.push(Xc(t)),l.add(t.model));return c}function $c(e,t,n,r,i,a,o){let s=Hc(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(Xc(e)),u.add(e.model);let d=Math.max(0,i-l.length);if(d>0){let r=Yc(t,n,qc(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=Lc();if(!a)a=await Pc(e,t),Ic=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 Pc(e,t),Ic=a)}let o=await Oc(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=Zc(t,a,o,c,r,s,i);break;case`comparison`:e=Qc(t,a,o,c,r,s,i);break;case`alternative`:e=$c(t,a,o,c,r,s,i);break;default:e=[]}return Uc(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=>Jc(e,r)),u=new Set(l.filter(t=>!e.has(t.model)).map(e=>e.model));if(u.size===0)continue;let d=Yc(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 Uc(n,l)}let u=qc(t,i);return Uc(Yc(a,o,u,r,s,i),l)}function tl(e){if(e.prices?.length)return e.prices.map(e=>`${e.type}:${e.price}/${e.unit}`).join(`, `)}function nl(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=tl(e);return r&&t.push(`Pricing: ${r}`),e.family&&t.push(`Family: ${e.family}`),t.join(` | `)}).join(`
145
- `)}function rl(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!==Zs.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(`
146
- `)}function il(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 al(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 ol(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 sl(e,t,n,r,i,a){let o=nl(t),s=rl(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{...kc}}let a=(i.choices?.[0]?.message?.content??``).match(/\{[\s\S]*\}/);if(!a)return{...kc};let o=JSON.parse(a[0]),s=o.modelPreference,c=jc(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??kc.budget,contextNeed:o.contextNeed??kc.contextNeed,qualityPreference:o.qualityPreference??kc.qualityPreference,confidence:1,modelPreference:c}}function Nc(e){let t=!1,n=!1;for(let r of e)wc.has(r)&&(t=!0),Tc.has(r)&&(n=!0);return t&&n}function Pc(e){let t=new Set(e.map(({model:e})=>e));return e.filter(({model:e})=>{let n=e.replace(Cc,``);return n===e||!t.has(n)})}function Fc(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 Ic(e,t){if(t.length===0)return!0;let n=e.inferenceMetadata?.request_modality??[];return t.some(e=>n.includes(e))}function Lc(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=Ec[i];return d>0&&(c??0)>=d&&(u+=8),a===X.Flagship&&l===xc.Flagship||a===X.CostOptimized&&l===xc.CostOptimized?u+=15:a===X.Balanced&&l===xc.Flagship&&(u+=5),u}function Rc(e,t,n){return e.map(e=>({model:e,score:Lc(e,t)})).sort((e,t)=>t.score-e.score).slice(0,n)}function zc(e){return new Set(e.map(({model:e})=>e.model))}function Bc(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 Vc(e,t){let n=new Set(t);return e.filter(e=>!n.has(e.model.model)&&(n.add(e.model.model),!0))}function Hc(e,t,n){return n.size>=10?[]:Rc(e.filter(({model:e})=>!n.has(e)),t,10-n.size)}function Uc(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:yc.Standard,qualityPreference:i,confidence:1},l=e.filter(e=>Fc(e,a,o)&&Ic(e,n));return l.length<5&&(l=e.filter(e=>Fc(e,a,o))),l.length<5&&(l=e),Rc(l,c,5)}function Wc(e,t){e=Pc(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=Vc(Uc(e,i,a,t.budget,t.qualityPreference),zc(r));r=[...r,...o]}let i=Hc(e,t,zc(r));n=[...r,...i]}else if(Nc(t.requiredCapabilities))n=Gc(e,t);else{let r=e.filter(e=>Fc(e,t.inputModality,t.outputModality));r.length<5&&(r=e),n=Rc(r,t,50)}return Bc(n,3)}function Gc(e,t){let n=t.requiredCapabilities.filter(e=>wc.has(e)),r=t.requiredCapabilities.filter(e=>Tc.has(e)),i=[];if(n.length>0&&(i=Rc(e.filter(e=>n.some(t=>e.capabilities.includes(t))),t,25)),r.length>0){let n=zc(i),a={...t,requiredCapabilities:r},o=e.filter(e=>!n.has(e.model)&&r.some(t=>e.capabilities.includes(t)));i=[...i,...Rc(o,a,25)]}let a=Hc(e,t,zc(i));return[...i,...a]}const Kc=`text-embedding-v4`;function qc(){return A(F(),`skills/bailian-docs-llm-wiki`)}function Jc(){return A(qc(),`models-embeddings.json`)}function Yc(){let e=Jc();if(!C(e))return null;try{return JSON.parse(E(e,`utf-8`)).items}catch{return null}}async function Xc(e,t){let n={model:Kc,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 Zc(e,t){let n={model:Kc,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 Qc={TG:`Text Generation`,Reasoning:`Reasoning`,VU:`Vision Understanding`,IG:`Image Generation`,VG:`Video Generation`,TTS:`Text-to-Speech`,ASR:`Speech-to-Text`},$c={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`};function el(){let e=A(qc(),`groups`),t=/* @__PURE__ */ new Map;if(!C(e))return t;for(let n of oe(e).filter(e=>e.endsWith(`.json`)))try{let r=JSON.parse(E(A(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 tl(e,t){let n=(e.capabilities??[]).map(e=>Qc[e]??e).join(`, `),r=t.get(e.model)||e.shortDescription||e.description||``,i=(e.inferenceMetadata?.request_modality??[]).map(e=>$c[e]??e).join(`, `),a=(e.inferenceMetadata?.response_modality??[]).map(e=>$c[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 nl(e,t){let n=el(),r=t.map(e=>tl(e,n)),i=[];for(let t=0;t<r.length;t+=10){let n=await Zc(e,r.slice(t,t+10));i.push(...n)}let a=t.map((e,t)=>({id:e.model,vector:i[t]})),o={model:Kc,dimensions:512,count:a.length,items:a},s=Jc();return T(k(s),{recursive:!0}),O(s,JSON.stringify(o)),a}function rl(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 il=null;function al(){return il===null&&(il=Yc()),il}function ol(){return al()!==null}function sl(e){return(e??``).toLowerCase().replace(Cc,``).replace(/[\s_-]+/g,``).trim()}function cl(e,t){let n=sl(t);if(!n)return!1;if(sl(e.model)===n||sl(e.name)===n)return!0;let r=e.model,i=r.lastIndexOf(`/`);return i>=0&&sl(r.slice(i+1))===n||[e.family,e.familyName].some(e=>{if(!e)return!1;let t=sl(e);return t.length>0&&n.includes(t)})}function ll(e,t){return t.some(t=>cl(e,t))}function ul(e,t){return t.length===0?[]:e.filter(e=>ll(e,t))}function dl(e,t){return t.length===0?e:e.filter(({model:e})=>!ll(e,t))}function fl(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 pl(e,t){return fl(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function ml(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=Ec[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===xc.Flagship?1:.5:a===X.CostOptimized&&(u=e.category===xc.CostOptimized?1:.5),.4*o+.2*s+.2*c+.2*u}function hl(e,t){if(!t)return new Set(e.map(e=>e.model));let n=e.filter(e=>pl(e,t)),r=n.length>=5?n:e;return new Set(r.map(e=>e.model))}function gl(e,t){return fl(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function _l(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=rl(t,e.vector),o=a?ml(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 vl(e){return{model:e,score:1,hardScore:1,softScore:1}}function yl(e,t,n,r,i,a,o){let s=r.targets??[],c=s.length>0?ul(e,s):e,l=[];if(c.length<5&&s.length>0){for(let e of c)l.push(vl(e));let r=new Set(l.map(({model:e})=>e.model)),s=_l(t,n,hl(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 _l(t,n,hl(c,o),i,a,o)}function bl(e,t,n,r,i,a,o){let s=r.targets??[],c=[],l=/* @__PURE__ */ new Set;for(let t of e)ll(t,s)&&!l.has(t.model)&&(c.push(vl(t)),l.add(t.model));return c}function xl(e,t,n,r,i,a,o){let s=ul(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(vl(e)),u.add(e.model);let d=Math.max(0,i-l.length);if(d>0){let r=_l(t,n,hl(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 Sl(e,t,n,r,i){let a=al();if(!a)a=await nl(e,t),il=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 nl(e,t),il=a)}let o=await Xc(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=yl(t,a,o,c,r,s,i);break;case`comparison`:e=bl(t,a,o,c,r,s,i);break;case`alternative`:e=xl(t,a,o,c,r,s,i);break;default:e=[]}return dl(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=>gl(e,r)),u=new Set(l.filter(t=>!e.has(t.model)).map(e=>e.model));if(u.size===0)continue;let d=_l(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 dl(n,l)}let u=hl(t,i);return dl(_l(a,o,u,r,s,i),l)}function Cl(e){if(e.prices?.length)return e.prices.map(e=>`${e.type}:${e.price}/${e.unit}`).join(`, `)}function wl(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=Cl(e);return r&&t.push(`Pricing: ${r}`),e.family&&t.push(`Family: ${e.family}`),t.join(` | `)}).join(`
158
+ `)}function Tl(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!==yc.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 El(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 Dl(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 Ol(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 kl(e,t,n,r,i,a){let o=wl(t),s=Tl(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.
147
160
 
148
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.
149
162
 
@@ -185,6 +198,6 @@ The intent's modelPreference.targets is the reference model.
185
198
  - Output strict JSON
186
199
 
187
200
  ## Output Format
188
- {"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?oc:ac)+e}else l=n.complexity===Y.Pipeline?oc:ac;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=En(),m;if(u){let t=await e.request({path:p,method:`POST`,body:f,stream:!0}),n=``,r=!1;for await(let e of tn(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=al(t.recommendations??(t.model?[t]:[]),g,i);n.length>0&&e.push({step:t.step??``,recommendations:n})}return ol(e,g),{type:Y.Pipeline,summary:h.summary??``,steps:e}}let _=al(h.recommendations??h??[],g,i);return{type:Y.Single,recommendations:_}}function Q(){return j(I(),`skills`)}function cl(){return j(Q(),`skill-lock.json`)}function ll(){return{version:1,skills:{}}}function ul(){let e=cl();if(!C(e))return ll();try{let t=JSON.parse(E(e,`utf-8`));return t?.version!==1||typeof t.skills!=`object`||t.skills===null?ll():t}catch{return ll()}}function dl(e){T(Q(),{recursive:!0}),k(cl(),JSON.stringify(e,null,2)+`
189
- `)}function fl(e,t){let n=ul();n.skills[e]={...n.skills[e],...t},dl(n)}function pl(){let e=fe(),t=process.cwd(),n=process.env.XDG_CONFIG_HOME||j(e,`.config`),r=(t,n,r)=>({id:t,displayName:n,skillsDir:j(e,r,`skills`),detectDirs:[j(e,r)]}),i=(t,n)=>t?.trim()||j(e,n),a=(e,t,n)=>({id:e,displayName:t,skillsDir:j(n,`skills`),detectDirs:[n]}),o=[`.openclaw`,`.clawdbot`,`.moltbot`].map(t=>j(e,t)),s=o.find(e=>C(e))??o[0],c=[j(n,`zed`)],l=process.env.APPDATA?.trim();l&&c.push(j(l,`Zed`));let u=process.env.FLATPAK_XDG_CONFIG_HOME?.trim();u&&c.push(j(u,`zed`));let d=i(process.env.CODEX_HOME,`.codex`);return[{id:`universal`,displayName:`Universal (~/.agents/skills)`,skillsDir:j(e,`.agents`,`skills`),detectDirs:[j(e,`.agents`),j(e,`.cline`),j(e,`.dexto`),j(e,`.firebender`),j(e,`.kimi-code`),j(e,`.kimi`),j(e,`.loaf`),j(e,`.warp`),...c]},{id:`universal-xdg`,displayName:`Universal (XDG agents/skills)`,skillsDir:j(n,`agents`,`skills`),detectDirs:[j(n,`agents`),j(n,`amp`),j(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:j(e,`.astrbot`,`data`,`skills`),detectDirs:[j(t,`data`,`skills`),j(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:j(e,`.codebuddy`,`skills`),detectDirs:[j(t,`.codebuddy`),j(e,`.codebuddy`)]},r(`codemaker`,`Codemaker`,`.codemaker`),r(`codestudio`,`Code Studio`,`.codestudio`),{id:`codex`,displayName:`Codex`,skillsDir:j(d,`skills`),detectDirs:[d,`/etc/codex`]},r(`command-code`,`Command Code`,`.commandcode`),{id:`continue`,displayName:`Continue`,skillsDir:j(e,`.continue`,`skills`),detectDirs:[j(t,`.continue`),j(e,`.continue`)]},r(`cortex`,`Cortex Code`,`.snowflake/cortex`),r(`crush`,`Crush`,`.config/crush`),r(`cursor`,`Cursor`,`.cursor`),{id:`deepagents`,displayName:`Deep Agents`,skillsDir:j(e,`.deepagents`,`agent`,`skills`),detectDirs:[j(e,`.deepagents`)]},{id:`devin`,displayName:`Devin for Terminal`,skillsDir:j(n,`devin`,`skills`),detectDirs:[j(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:j(n,`goose`,`skills`),detectDirs:[j(n,`goose`)]},a(`grok`,`Grok Build`,i(process.env.GROK_HOME,`.grok`)),a(`hermes`,`Hermes Agent`,i(process.env.HERMES_HOME,`.hermes`)),r(`iflow-cli`,`iFlow CLI`,`.iflow`),r(`inference-sh`,`inference.sh`,`.inferencesh`),{id:`jazz`,displayName:`Jazz`,skillsDir:j(e,`.jazz`,`skills`),detectDirs:[j(e,`.jazz`),j(t,`.jazz`)]},r(`junie`,`Junie`,`.junie`),r(`kilo`,`Kilo Code`,`.kilocode`),{id:`kimchi`,displayName:`Kimchi`,skillsDir:j(e,`.config`,`kimchi`,`harness`,`skills`),detectDirs:[j(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:j(e,`.minimax`,`skills`),detectDirs:[j(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:j(n,`opencode`,`skills`),detectDirs:[j(n,`opencode`)]},{id:`openclaw`,displayName:`OpenClaw`,skillsDir:j(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:j(e,`.tabnine`,`agent`,`skills`),detectDirs:[j(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:j(e,`.zcode`,`skills`),detectDirs:[j(e,`.zcode`),`/Applications/ZCode.app`]},r(`zencoder`,`Zencoder`,`.zencoder`)]}function ml(){return pl().filter(e=>e.detectDirs.some(e=>C(e)))}function hl(e,t){return process.platform===`win32`?e.toLowerCase()===t.toLowerCase():e===t}function gl(e){let t=Q();if(process.platform===`win32`){let n=e.toLowerCase(),r=t.toLowerCase();return n===r||n.startsWith(r+de)}return e===t||e.startsWith(t+de)}function _l(e){try{if(!w(e).isSymbolicLink())return!1;let t=oe(e);return gl(ue(t)?t:M(A(e),t))}catch{return!1}}function vl(e,t){if(!t.some(t=>hl(t,e)))return!1;try{return w(e).isDirectory()}catch{return!1}}function yl(e){try{return w(e).isDirectory()?C(j(e,`SKILL.md`)):!1}catch{return!1}}const bl=`existing file/dir not managed by bl skill`;function xl(e,t=ml(),n=[]){let r=j(Q(),e),i=[];for(let a of t){let t=j(a.skillsDir,e);try{let e=!1;try{w(t),e=!0}catch{}if(e){if(_l(t))O(t);else if(vl(t,n))O(t,{recursive:!0,force:!0});else if(yl(t))O(t,{recursive:!0,force:!0});else{i.push({agent:a.id,path:t,mode:`skipped`,reason:bl});continue}}T(a.skillsDir,{recursive:!0});try{le(r,t,process.platform===`win32`?`junction`:`dir`),i.push({agent:a.id,path:t,mode:`symlink`})}catch{ie(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 Sl(e,t=ml(),n=[]){let r=xl(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===bl).map(e=>e.path),s=n.filter(e=>!a.some(t=>hl(t,e))&&!o.some(t=>hl(t,e)));return{results:r,linkedAgents:i.map(e=>e.agent),links:[...a,...s]}}function Cl(e,t=[]){let n=[],r=new Set(t);for(let t of pl())r.add(j(t.skillsDir,e));for(let e of r)try{let r;try{r=w(e)}catch{continue}r.isSymbolicLink()?_l(e)&&n.push(e):t.some(t=>hl(t,e))&&n.push(e)}catch{}return n}function wl(e,t=[]){let n=[];for(let r of Cl(e,t))try{if(_l(r))O(r);else if(!w(r).isSymbolicLink()&&t.some(e=>hl(e,r)))O(r,{recursive:!0,force:!0});else continue;n.push(r)}catch{}return n}function Tl(e){return e.includes(`\\`)||e.includes(`\0`)||e.startsWith(`/`)||/^[a-zA-Z]:[\\/]/.test(e)?!1:!e.split(`/`).includes(`..`)}async function El(e,t){let n=_e.extract();n.on(`entry`,(e,r,i)=>{if(!Tl(e.name)){r.on(`error`,()=>{}),r.resume(),n.destroy(/* @__PURE__ */ Error(`unsafe tar entry: ${e.name}`));return}let a=j(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=ae(a);r.pipe(o),o.on(`finish`,i),o.on(`error`,i)}),await he(me.from(e),ge(),n)}function Dl(e){let t=[],n=r=>{for(let i of D(r?j(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=pe(`sha256`);for(let n of t)r.update(n),r.update(E(j(e,n)));return`sha256:${r.digest(`hex`)}`}function Ol(e,t){T(A(t),{recursive:!0});let n=`${t}.old-${Date.now()}`;C(t)&&se(t,n);try{se(e,t)}catch(e){throw C(n)&&!C(t)&&se(n,t),e}try{C(n)&&O(n,{recursive:!0,force:!0})}catch{}}function kl(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 Al(e){return e instanceof P&&e.api?.httpStatus===429}function jl(e,t){return Math.min(t*2**(e-1),1e4)}function Ml(e){return new Promise(t=>setTimeout(t,e))}async function Nl(e,t=3){let n=typeof t==`number`?{attempts:t}:t,r=n.attempts??3,i=n.shouldRetry??kl,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;Al(e)&&await Ml(jl(t,a))}throw o}function Pl(){return(process.env.BAILIAN_SKILL_REGISTRY_URL?.trim()||`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/skills`).replace(/\/+$/,``)}async function Fl(e=3e4,t=3){return Nl(async()=>{let t=`${Pl()}/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 Il=/^sha256-[0-9a-f]{64}\.tar\.br$/;function Ll(e){let t=e?.object;return t&&Il.test(t)?t:`skill.tar.br`}async function Rl(e,t,n=3){return Nl(async()=>{let n=`${Pl()}/${e}/${Ll(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 zl(e){return e.replace(/[\\/:*?"<>|\s]+/g,`-`).replace(/\.\.+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`unnamed-skill`}function Bl(e){return e.length>0&&zl(e)===e}function Vl(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 Hl(e){if(!e.startsWith(`---`))return null;let t=/^---\r?\n([\s\S]*?)\r?\n---(\r?\n|$)/.exec(e);return t?t[1]:null}function Ul(e,t){let n=j(e,`SKILL.md`),r;try{ce(n).isFile()||Vl(t,`SKILL.md is not a regular file`),r=E(n,`utf-8`)}catch(e){if(e instanceof P)throw e;Vl(t,`missing SKILL.md`)}let i=Hl(r);i===null&&Vl(t,`SKILL.md is missing frontmatter (--- delimited YAML header)`);let a;try{a=_(i)}catch{Vl(t,`frontmatter is not valid YAML`)}(typeof a!=`object`||!a)&&Vl(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)&&Vl(t,`frontmatter is missing non-empty name / description fields`),{name:s,description:c}}function Wl(e){if(!Bl(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 Gl(e,t,n){Wl(e);let r=Q(),i=j(r,e),a=j(r,`.tmp-${e}-${process.pid}-${Date.now()}`);try{if(T(a,{recursive:!0}),await El(t,a),n?.startsWith(`sha256:`)){let t=Dl(a);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 r=Ul(a,e);return Ol(a,i),{name:e,path:i,meta:r}}finally{try{C(a)&&O(a,{recursive:!0,force:!0})}catch{}}}async function Kl(e,t,n){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 Gl(e,await Rl(e,t,n),t.contentHash)}function ql(e){Wl(e);let t=j(Q(),e);return C(t)?(O(t,{recursive:!0,force:!0}),!0):!1}function Jl(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 Yl(e,t,n=ml(),r=[],i){await Kl(e,t,i);let a=Sl(e,n,r);return{lockEntry:Jl(t,a.links),linkedAgents:a.linkedAgents}}const $=`bailian-docs-llm-wiki`;function Xl(){return j(I(),`skills/bailian-docs-llm-wiki`)}function Zl(){return C(j(Xl(),`models`,`models.jsonl`))}function Ql(){return j(I(),`wiki-sync-state.json`)}function $l(){try{return JSON.parse(E(Ql(),`utf-8`))}catch{return null}}function eu(e){try{k(Ql(),JSON.stringify(e))}catch{}}function tu(e){try{fl($,e)}catch{}}function nu(e){try{let t=ul().skills[$];return t?.contentHash!==e||!Array.isArray(t.links)}catch{return!0}}async function ru(){try{return(await Fl(3e3,1)).skills[$]??null}catch{return null}}async function iu(){let e=$l(),t=Date.now();if(e&&t-e.lastChecked<432e5&&Zl())return!1;let n=await ru();if(!n?.contentHash)return!1;if(Zl()&&(!e||e.contentHash===n.contentHash)){if(eu({lastChecked:t,contentHash:n.contentHash}),nu(n.contentHash)){let e=ul().skills[$]?.links??[];tu(Jl(n,Sl($,ml(),e).links))}return!1}try{let e=ul().skills[$]?.links??[];tu((await Yl($,n,ml(),e,1)).lockEntry)}catch{return!1}return eu({lastChecked:t,contentHash:n.contentHash}),!0}const au=`bailian-cli`,ou=`install-method`,su=/* @__PURE__ */ new Set([`binary`,`npm`,`brew`,`winget`,`unknown`]);function cu(e){return e?j(I(),`${ou}.${e}`):j(I(),ou)}function lu(){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 uu(e){if(!e)return null;let t=e.trim().toLowerCase();return su.has(t)?t:null}function du(e){try{return uu(E(e,`utf-8`).split(`
190
- `)[0])}catch{return null}}function fu(){let e=uu(process.env.BAILIAN_INSTALL_METHOD);if(e)return e;if(lu()){let e=process.execPath.replaceAll(`\\`,`/`);return e.includes(`/Cellar/`)||e.includes(`/homebrew/`)?`brew`:`binary`}return`npm`}function pu(e){let t=uu(process.env.BAILIAN_INSTALL_METHOD);if(t)return t;if(e?.clientName){let t=du(cu(e.clientName));if(t)return t;if(e.clientName===`bailian-cli`){let e=du(cu());if(e)return e}return fu()}return du(cu())||fu()}function mu(e){let t=pu(e);return t===`binary`&&e.npmPackage!==`bailian-cli`?`npm`:t}function hu(e,t={clientName:au}){try{let n=I();C(n)||T(n,{recursive:!0,mode:448}),k(cu(t.clientName),`${e}\n`,{mode:384}),t.clientName===`bailian-cli`&&k(cu(),`${e}\n`,{mode:384})}catch{}}const gu=`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/release`,_u=`https://github.com/modelstudioai/cli/releases`,vu=`https://bailian.aliyun.com/cli/install.sh`,yu=`https://bailian.aliyun.com/cli/install.ps1`;function bu(){let e=process.env.BAILIAN_CLI_CDN?.trim();return e?e.replace(/\/$/,``):gu}function xu(e=`latest`){let t=e.trim();return!t||t===`latest`||t===`stable`?`${bu()}/manifest.json`:`${bu()}/${t}.json`}function Su(e,t){let n=e.startsWith(`v`)?e:`v${e}`;return`${bu()}/${n}/${t}`}function Cu(){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 wu(e,t,n,r=!1){return`bl-${e}-${t}-${n}.zip`}function Tu(e,t,n){if(t!==`windows`)return`bl-${e}-${t}-${n}.tar.gz`}function Eu(e,t,n,r=!1){return`bl-${e}-${t}-${n}${r?`.exe`:``}`}function Du(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 Ou(e){let t=e.replace(/\\/g,`/`);return t.includes(`/`)?t.slice(t.lastIndexOf(`/`)+1):t}async function ku(e,t,n){let r=await Du(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=Ou(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 ve(A(t),{recursive:!0}),await he(r,ae(t)),c(a)}catch(e){s(e)}})()})}),r.readEntry()})}function Au(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 ju(){let e=Q();return C(e)?D(e).filter(t=>{if(t.startsWith(`.`)||t.includes(`.tmp-`)||t.includes(`.old-`))return!1;try{return ce(j(e,t)).isDirectory()}catch{return!1}}):[]}function Mu(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{Ve as API_KEY_CAPABILITY_PATTERN,is as ASYNC_FLAG,Fe as BAILIAN_HOST,Ao as BILLING_METHOD,au as BINARY_PRODUCT_CLIENT_NAME,P as BailianError,Xs as Budgets,go as CALC_DATASETS_TOKENS_API,At as CHANNEL,Mo as CHARGE_TYPE,us as COMMAND_PACK_API_VERSION,rs as CONCURRENT_FLAG,Re as CONFIG_FILE_KEYS,os as CONSOLE_AUTH_FLAGS,Z as Capabilities,bn as Client,Y as Complexities,Zs as ContextNeeds,Mt as DASHSCOPE_SERVICE_HEADER,jo as DEFAULT_BILLING_METHOD,gu as DEFAULT_CLI_CDN_BASE,Oo as DEFAULT_DEPLOY_PLAN,yu as DEFAULT_INSTALL_PS1_URL,vu as DEFAULT_INSTALL_SCRIPT_URL,Le as DEFAULT_LANGUAGE,Ka as DEFAULT_TRAINING_TYPE,Bo as DEPLOY_LIST_INDEPENDENT_API,q as DEPLOY_PLAN,Ro as DEPLOY_START_API,zo as DEPLOY_STOP_API,Pe as DOCS_HOSTS,_o as ESTIMATE_FINETUNE_TOKENS_API,N as ExitCode,Qs as Features,_u as GITHUB_RELEASES_BASE,ns as GLOBAL_FLAGS,Qa as INSUFFICIENT_SAMPLES_CODE,Ni as MAX_CPT_BYTES,Mi as MAX_DATASET_BYTES,Pi as MAX_MEDIA_ZIP_BYTES,as as MODEL_AUTH_FLAGS,hi as MODEL_LIST_API,pn as McpClient,Ys as Modalities,$s as ModelCategories,ss as OPENAPI_AUTH_FLAGS,jt as OPEN_API_SOURCE,gi as PREDICT_CONFIG_API,X as QualityPreferences,Tr as RAG_PATHS,Ne as REGIONS,br as SANDBOX_PATHS,ec as SEMANTIC_TOP_K,Go as SPEECH_BIASING_MODEL,Io as STRATEGIES,Ie as SUPPORTED_LANGUAGES,ho as TRAINING_MODEL_PRICE_API,Ga as TRAINING_TYPES_CLI,Wa as TRAINING_TYPE_MAP,F as UsageError,vt as activateConfigProfile,gr as agentStudioFilesPath,Xn as agentStudioHost,uc as analyzeIntent,_n as anonymousConsoleCall,Ln as appCompletionPath,Ol as atomicSwap,cn as bailianMcpPath,ln as bailianMcpSsePath,wu as binaryAssetFileName,Eu as binaryInnerFileName,Tu as binaryTarFileName,Rt as buildAcsCanonicalQuery,Jr as buildAsrContextMessages,Xr as buildAsrFlashRequest,Yr as buildAsyncAsrLanguageFields,il as buildDocLink,St as buildSettings,Jl as buildSkillLockEntry,xt as buildSources,Ko as buildVocabularyRequest,yn as callConsoleGateway,za as cancelFineTune,xu as channelManifestUrl,En as chatPath,Qr as collectAsrTranscriptionItems,Dl as computeDirContentHash,Mu as computeSkillStatuses,fn as connectBailianMcpWithFallback,fi as createBailianControlUser,xo as createDeployment,Ia as createFineTune,ci as createInstrumentedFetch,Ss as createTrackingEvent,Jo as createVocabulary,cs as credentialFlagDefs,ko as defaultDeployPlan,ls as defineCommand,yt as deleteConfigProfile,ji as deleteDataset,wo as deleteDeployment,Ba as deleteFineTune,Qo as deleteVocabulary,et as describeAuthState,Cu as detectBinaryPlatform,fu as detectInstallMethod,ml as detectInstalledAgents,Ta as detectModality,ot as detectOutputFormat,Rl as downloadSkillAsset,gn as effectiveConsoleGatewayConfig,ll as emptySkillLock,nt as ensureConfigDir,bo as estimateCptTokens,yo as estimateSftDpoTokens,Ua as exportCheckpoint,Zr as extractAsrFlashText,El as extractTarBr,ku as extractZipEntryToFile,Sl as fanOutSkillToAgents,Za as fetchModelCapability,Ci as fetchModelDetail,bi as fetchModelGroups,Si as fetchModelGroupsAll,_i as fetchModelList,vi as fetchModelListAll,Ei as fetchPredictConfig,Fl as fetchSkillsIndex,vo as fetchTrainingModelPrice,Wo as findDeploymentEntry,yi as findModelByName,xi as flattenModelGroups,Ps as flushTelemetry,at as formatErrorJson,Fa as formatIssue,it as formatJson,st as formatOutput,rt as formatText,wn as generateCLIAccessToken,fs as generateFilename,pl as getAgentTargets,Tt as getApiKeyLoginKind,bu as getCliCdnBase,I as getConfigDir,L as getConfigPath,tt as getCredentialsPath,Ai as getDataset,Co as getDeployment,Ra as getFineTune,Va as getFineTuneLogs,pu as getInstallMethod,wt as getModelProfilePreset,Js as getModels,po as getProfile,cl as getSkillLockPath,Pl as getSkillRegistryBaseUrl,Q as getSkillsDir,mu as getUpdateInstallMethod,jn as image2ImagePath,Nn as image2videoPath,qt as imageFileToDataUri,On as imagePath,kn as imageSyncPath,An as imageText2ImagePath,qr as inferAudioFormatHint,Kl as installSkill,Gl as installSkillFromBuffer,Yl as installSkillWithFanout,He as isApiKeyCapability,lu as isCompiledBinary,ti as isDashScopeGateway,Pr as isLegacyImage2ImageModel,Nr as isLegacyText2ImageModel,Xt as isLocalFile,Tl as isSafeEntryName,Bl as isSafeSkillName,Rc as isSemanticAvailable,un as isStreamableHttpUnsupported,kr as isSyncMultimodalImageModel,qa as isTrainingTypeCli,dn as isUrlOverrideSseFallbackCandidate,Fr as isWanxFunctionImageEditModel,Yn as knowledgeChatEndpoint,qn as knowledgeRetrievePath,Jn as knowledgeSearchEndpoint,xl as linkSkillToAgents,pi as listBailianControlWorkspaces,Ha as listCheckpoints,ki as listDatasets,To as listDeployableModels,So as listDeployments,La as listFineTunes,Uo as listIndependentDeployedModels,ju as listSkillDirsOnDisk,Pa as listSupportedFormats,Xa as listSupportedTrainingTypes,mo as listTrainingTypes,Yo as listVocabularies,Fs as localSink,Ot as makeAuthStore,Di as makeConfigStore,Ae as mapApiError,kt as maskToken,iu as maybeSyncWikiData,er as mcpWebSearchPath,Rn as memoryAddPath,Bn as memoryListPath,Vn as memoryNodePath,zn as memorySearchPath,Ya as modelSupportsTrainingType,Fn as modelsLimitsPath,In as modelsPermissionsPath,Ue as normalizeApiKeyCapabilities,ut as normalizeConfigName,je as normalizeModelBaseUrl,vs as parseBooleanValue,Ge as parseConfigFile,Ii as parseDatasetSchemaFlag,es as parseInstantVocabulary,ys as parseOptionalBooleanValue,tn as parseSSE,ii as parseSecurityBody,Au as parseSkillNames,ts as parseVocabularyEntries,Lo as pickPlanStrategy,Ma as pickValidator,Cl as planUnlinkSkillFromAgents,$a as preflightBatchSizeGate,Gn as profileSchemaPath,Xo as queryVocabulary,hr as ragEndpoint,sl as rankModels,B as readConfigFile,ht as readConfigProfiles,ul as readSkillLock,gs as readTextFromPathOrStdin,Sc as recallCandidates,el as recallSemantic,Jt as redactDataUri,Tn as refreshAccessToken,Na as registerValidator,Su as releaseAssetUrl,Is as remoteSink,ql as removeSkillDir,Ft as request,Lt as requestJson,mi as resetBailianControlPolicies4Agent,Je as resolveApiKey,Kr as resolveAsrApi,Ll as resolveAssetFileName,bs as resolveBooleanFlag,Ye as resolveConsole,Zt as resolveFileUrl,zr as resolveImageEditApi,Rr as resolveImageGenerateApi,Ir as resolveImageSizeProfile,qe as resolveModelBaseUrl,Ke as resolveModelBaseUrlState,Xe as resolveOpenApi,ms as resolveOutputDir,Lr as resolvePromptExtendDefault,xs as resolveWatermark,Dn as responsesPath,_s as runWithConcurrency,vr as sandboxApiPath,_r as sandboxBaseUrl,yr as sandboxEndpoint,Sr as sandboxInstanceActionPath,xr as sandboxInstancePath,wr as sandboxTemplateBuildStatusPath,Cr as sandboxTemplatePath,zl as sanitizeSkillName,Eo as scaleDeployment,$n as securityAgentLogsEndpoint,ai as securityGet,Qn as securityOverviewEndpoint,bt as selectApiKeyResolutionSources,zt as signAcsRequest,Nt as sourceConfig,Un as speechRecognizePath,Hn as speechSynthesizePath,Wn as speechVocabularyPath,Vo as startModelService,Ho as stopModelService,hs as stripUndefined,Pn as taskPath,Bs as trackCommandExecution,V as trackingHeaders,Ja as trainingTypeMethodVariant,wl as unlinkSkillFromAgents,W as unwrapResponse,Do as updateDeployment,Zo as updateVocabulary,Oi as uploadDataset,Yt as uploadFile,fl as upsertSkillLockEntry,Kn as userProfilePath,_t as validateConfigProfileActivation,K as validateDataset,Ul as validateSkillDir,Mn as videoGeneratePath,pt as writeConfigFile,hu as writeInstallMethodSync,dl 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===Y.Pipeline?Oc:Dc)+e}else l=n.complexity===Y.Pipeline?Oc:Dc;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=On(),m;if(u){let t=await e.request({path:p,method:`POST`,body:f,stream:!0}),n=``,r=!1;for await(let e of rn(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=Dl(t.recommendations??(t.model?[t]:[]),g,i);n.length>0&&e.push({step:t.step??``,recommendations:n})}return Ol(e,g),{type:Y.Pipeline,summary:h.summary??``,steps:e}}let _=Dl(h.recommendations??h??[],g,i);return{type:Y.Single,recommendations:_}}function Q(){return A(F(),`skills`)}function Al(){return A(Q(),`skill-lock.json`)}function jl(){return{version:1,skills:{}}}function Ml(){let e=Al();if(!C(e))return jl();try{let t=JSON.parse(E(e,`utf-8`));return t?.version!==1||typeof t.skills!=`object`||t.skills===null?jl():t}catch{return jl()}}function Nl(e){T(Q(),{recursive:!0}),O(Al(),JSON.stringify(e,null,2)+`
202
+ `)}function Pl(e,t){let n=Ml();n.skills[e]={...n.skills[e],...t},Nl(n)}function Fl(){let e=pe(),t=process.cwd(),n=process.env.XDG_CONFIG_HOME||A(e,`.config`),r=(t,n,r)=>({id:t,displayName:n,skillsDir:A(e,r,`skills`),detectDirs:[A(e,r)]}),i=(t,n)=>t?.trim()||A(e,n),a=(e,t,n)=>({id:e,displayName:t,skillsDir:A(n,`skills`),detectDirs:[n]}),o=[`.openclaw`,`.clawdbot`,`.moltbot`].map(t=>A(e,t)),s=o.find(e=>C(e))??o[0],c=[A(n,`zed`)],l=process.env.APPDATA?.trim();l&&c.push(A(l,`Zed`));let u=process.env.FLATPAK_XDG_CONFIG_HOME?.trim();u&&c.push(A(u,`zed`));let d=i(process.env.CODEX_HOME,`.codex`);return[{id:`universal`,displayName:`Universal (~/.agents/skills)`,skillsDir:A(e,`.agents`,`skills`),detectDirs:[A(e,`.agents`),A(e,`.cline`),A(e,`.dexto`),A(e,`.firebender`),A(e,`.kimi-code`),A(e,`.kimi`),A(e,`.loaf`),A(e,`.warp`),...c]},{id:`universal-xdg`,displayName:`Universal (XDG agents/skills)`,skillsDir:A(n,`agents`,`skills`),detectDirs:[A(n,`agents`),A(n,`amp`),A(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:A(e,`.astrbot`,`data`,`skills`),detectDirs:[A(t,`data`,`skills`),A(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:A(e,`.codebuddy`,`skills`),detectDirs:[A(t,`.codebuddy`),A(e,`.codebuddy`)]},r(`codemaker`,`Codemaker`,`.codemaker`),r(`codestudio`,`Code Studio`,`.codestudio`),{id:`codex`,displayName:`Codex`,skillsDir:A(d,`skills`),detectDirs:[d,`/etc/codex`]},r(`command-code`,`Command Code`,`.commandcode`),{id:`continue`,displayName:`Continue`,skillsDir:A(e,`.continue`,`skills`),detectDirs:[A(t,`.continue`),A(e,`.continue`)]},r(`cortex`,`Cortex Code`,`.snowflake/cortex`),r(`crush`,`Crush`,`.config/crush`),r(`cursor`,`Cursor`,`.cursor`),{id:`deepagents`,displayName:`Deep Agents`,skillsDir:A(e,`.deepagents`,`agent`,`skills`),detectDirs:[A(e,`.deepagents`)]},{id:`devin`,displayName:`Devin for Terminal`,skillsDir:A(n,`devin`,`skills`),detectDirs:[A(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:A(n,`goose`,`skills`),detectDirs:[A(n,`goose`)]},a(`grok`,`Grok Build`,i(process.env.GROK_HOME,`.grok`)),a(`hermes`,`Hermes Agent`,i(process.env.HERMES_HOME,`.hermes`)),r(`iflow-cli`,`iFlow CLI`,`.iflow`),r(`inference-sh`,`inference.sh`,`.inferencesh`),{id:`jazz`,displayName:`Jazz`,skillsDir:A(e,`.jazz`,`skills`),detectDirs:[A(e,`.jazz`),A(t,`.jazz`)]},r(`junie`,`Junie`,`.junie`),r(`kilo`,`Kilo Code`,`.kilocode`),{id:`kimchi`,displayName:`Kimchi`,skillsDir:A(e,`.config`,`kimchi`,`harness`,`skills`),detectDirs:[A(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:A(e,`.minimax`,`skills`),detectDirs:[A(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:A(n,`opencode`,`skills`),detectDirs:[A(n,`opencode`)]},{id:`openclaw`,displayName:`OpenClaw`,skillsDir:A(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:A(e,`.tabnine`,`agent`,`skills`),detectDirs:[A(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:A(e,`.zcode`,`skills`),detectDirs:[A(e,`.zcode`),`/Applications/ZCode.app`]},r(`zencoder`,`Zencoder`,`.zencoder`)]}function Il(){return Fl().filter(e=>e.detectDirs.some(e=>C(e)))}function Ll(e,t){return process.platform===`win32`?e.toLowerCase()===t.toLowerCase():e===t}function Rl(e){let t=Q();if(process.platform===`win32`){let n=e.toLowerCase(),r=t.toLowerCase();return n===r||n.startsWith(r+fe)}return e===t||e.startsWith(t+fe)}function zl(e){try{if(!w(e).isSymbolicLink())return!1;let t=se(e);return Rl(de(t)?t:j(k(e),t))}catch{return!1}}function Bl(e,t){if(!t.some(t=>Ll(t,e)))return!1;try{return w(e).isDirectory()}catch{return!1}}function Vl(e){try{return w(e).isDirectory()?C(A(e,`SKILL.md`)):!1}catch{return!1}}const Hl=`existing file/dir not managed by bl skill`;function Ul(e,t=Il(),n=[]){let r=A(Q(),e),i=[];for(let a of t){let t=A(a.skillsDir,e);try{let e=!1;try{w(t),e=!0}catch{}if(e){if(zl(t))D(t);else if(Bl(t,n))D(t,{recursive:!0,force:!0});else if(Vl(t))D(t,{recursive:!0,force:!0});else{i.push({agent:a.id,path:t,mode:`skipped`,reason:Hl});continue}}T(a.skillsDir,{recursive:!0});try{ue(r,t,process.platform===`win32`?`junction`:`dir`),i.push({agent:a.id,path:t,mode:`symlink`})}catch{ie(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 Wl(e,t=Il(),n=[]){let r=Ul(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===Hl).map(e=>e.path),s=n.filter(e=>!a.some(t=>Ll(t,e))&&!o.some(t=>Ll(t,e)));return{results:r,linkedAgents:i.map(e=>e.agent),links:[...a,...s]}}function Gl(e,t=[]){let n=[],r=new Set(t);for(let t of Fl())r.add(A(t.skillsDir,e));for(let e of r)try{let r;try{r=w(e)}catch{continue}r.isSymbolicLink()?zl(e)&&n.push(e):t.some(t=>Ll(t,e))&&n.push(e)}catch{}return n}function Kl(e,t=[]){let n=[];for(let r of Gl(e,t))try{if(zl(r))D(r);else if(!w(r).isSymbolicLink()&&t.some(e=>Ll(e,r)))D(r,{recursive:!0,force:!0});else continue;n.push(r)}catch{}return n}function ql(e){return e.includes(`\\`)||e.includes(`\0`)||e.startsWith(`/`)||/^[a-zA-Z]:[\\/]/.test(e)?!1:!e.split(`/`).includes(`..`)}async function Jl(e,t){let n=ve.extract();n.on(`entry`,(e,r,i)=>{if(!ql(e.name)){r.on(`error`,()=>{}),r.resume(),n.destroy(/* @__PURE__ */ Error(`unsafe tar entry: ${e.name}`));return}let a=A(t,e.name);if(e.type===`directory`){T(a,{recursive:!0}),r.resume(),r.on(`end`,i);return}T(k(a),{recursive:!0});let o=ae(a);r.pipe(o),o.on(`finish`,i),o.on(`error`,i)}),await ge(he.from(e),_e(),n)}function Yl(e){let t=[],n=r=>{for(let i of oe(r?A(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=me(`sha256`);for(let n of t)r.update(n),r.update(E(A(e,n)));return`sha256:${r.digest(`hex`)}`}function Xl(e,t){T(k(t),{recursive:!0});let n=`${t}.old-${Date.now()}`;C(t)&&ce(t,n);try{ce(e,t)}catch(e){throw C(n)&&!C(t)&&ce(n,t),e}try{C(n)&&D(n,{recursive:!0,force:!0})}catch{}}function Zl(e){if(e instanceof N){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 Ql(e){return e instanceof N&&e.api?.httpStatus===429}function $l(e,t){return Math.min(t*2**(e-1),1e4)}function eu(e){return new Promise(t=>setTimeout(t,e))}async function tu(e,t=3){let n=typeof t==`number`?{attempts:t}:t,r=n.attempts??3,i=n.shouldRetry??Zl,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;Ql(e)&&await eu($l(t,a))}throw o}function nu(){return(process.env.BAILIAN_SKILL_REGISTRY_URL?.trim()||`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/skills`).replace(/\/+$/,``)}async function ru(e=3e4,t=3){return tu(async()=>{let t=`${nu()}/index.json`,n;try{n=await fetch(t,{signal:AbortSignal.timeout(e)})}catch(e){throw new N(`Cannot access skill registry: ${t}`,M.NETWORK,`Check network connectivity; if using a private mirror, verify BAILIAN_SKILL_REGISTRY_URL configuration`,{cause:e})}if(!n.ok)throw new N(`Skill registry returned HTTP ${n.status}: ${t}`,M.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 N(`Skill index index.json is not valid JSON`,M.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 N(`Skill index index.json has invalid structure`,M.GENERAL,`Retry later or contact the publisher`);return i},{attempts:t})}const iu=/^sha256-[0-9a-f]{64}\.tar\.br$/;function au(e){let t=e?.object;return t&&iu.test(t)?t:`skill.tar.br`}async function ou(e,t,n=3){return tu(async()=>{let n=`${nu()}/${e}/${au(t)}`,r;try{r=await fetch(n,{signal:AbortSignal.timeout(12e4)})}catch(t){throw new N(`Failed to download skill ${e}: ${n}`,M.NETWORK,`Network error, retryable`,{cause:t})}if(!r.ok)throw new N(`Failed to download skill ${e}: HTTP ${r.status}`,M.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 su(e){return e.replace(/[\\/:*?"<>|\s]+/g,`-`).replace(/\.\.+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`unnamed-skill`}function cu(e){return e.length>0&&su(e)===e}function lu(e,t){throw new N(`Skill ${e} validation failed: ${t}`,M.GENERAL,`This skill package does not conform to the SKILL.md spec; contact the skill publisher to fix and republish`)}function uu(e){if(!e.startsWith(`---`))return null;let t=/^---\r?\n([\s\S]*?)\r?\n---(\r?\n|$)/.exec(e);return t?t[1]:null}function du(e,t){let n=A(e,`SKILL.md`),r;try{le(n).isFile()||lu(t,`SKILL.md is not a regular file`),r=E(n,`utf-8`)}catch(e){if(e instanceof N)throw e;lu(t,`missing SKILL.md`)}let i=uu(r);i===null&&lu(t,`SKILL.md is missing frontmatter (--- delimited YAML header)`);let a;try{a=_(i)}catch{lu(t,`frontmatter is not valid YAML`)}(typeof a!=`object`||!a)&&lu(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)&&lu(t,`frontmatter is missing non-empty name / description fields`),{name:s,description:c}}function fu(e){if(!cu(e))throw new N(`Invalid skill name: ${e}`,M.GENERAL,`Skill name contains path separators, traversal sequences, or other illegal characters; refusing to write to disk`)}async function pu(e,t,n){fu(e);let r=Q(),i=A(r,e),a=A(r,`.tmp-${e}-${process.pid}-${Date.now()}`);try{if(T(a,{recursive:!0}),await Jl(t,a),n?.startsWith(`sha256:`)){let t=Yl(a);if(t!==n)throw new N(`Skill ${e} failed integrity check: index says ${n}, archive is ${t}`,M.GENERAL,`Downloaded archive does not match the index fingerprint (registry may be mid-publish); retry later`)}let r=du(a,e);return Xl(a,i),{name:e,path:i,meta:r}}finally{try{C(a)&&D(a,{recursive:!0,force:!0})}catch{}}}async function mu(e,t,n){if(t.compression&&t.compression!==`tar.br`)throw new N(`Skill ${e} uses unsupported compression format: ${t.compression}`,M.GENERAL,`Upgrade bailian-cli to the latest version and retry`);return pu(e,await ou(e,t,n),t.contentHash)}function hu(e){fu(e);let t=A(Q(),e);return C(t)?(D(t,{recursive:!0,force:!0}),!0):!1}function gu(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 _u(e,t,n=Il(),r=[],i){await mu(e,t,i);let a=Wl(e,n,r);return{lockEntry:gu(t,a.links),linkedAgents:a.linkedAgents}}const $=`bailian-docs-llm-wiki`;function vu(){return A(F(),`skills/bailian-docs-llm-wiki`)}function yu(){return C(A(vu(),`models`,`models.jsonl`))}function bu(){return A(F(),`wiki-sync-state.json`)}function xu(){try{return JSON.parse(E(bu(),`utf-8`))}catch{return null}}function Su(e){try{O(bu(),JSON.stringify(e))}catch{}}function Cu(e){try{Pl($,e)}catch{}}function wu(e){try{let t=Ml().skills[$];return t?.contentHash!==e||!Array.isArray(t.links)}catch{return!0}}async function Tu(){try{return(await ru(3e3,1)).skills[$]??null}catch{return null}}async function Eu(){let e=xu(),t=Date.now();if(e&&t-e.lastChecked<432e5&&yu())return!1;let n=await Tu();if(!n?.contentHash)return!1;if(yu()&&(!e||e.contentHash===n.contentHash)){if(Su({lastChecked:t,contentHash:n.contentHash}),wu(n.contentHash)){let e=Ml().skills[$]?.links??[];Cu(gu(n,Wl($,Il(),e).links))}return!1}try{let e=Ml().skills[$]?.links??[];Cu((await _u($,n,Il(),e,1)).lockEntry)}catch{return!1}return Su({lastChecked:t,contentHash:n.contentHash}),!0}const Du=`bailian-cli`,Ou=`install-method`,ku=/* @__PURE__ */ new Set([`binary`,`npm`,`brew`,`winget`,`unknown`]);function Au(e){return e?A(F(),`${Ou}.${e}`):A(F(),Ou)}function ju(){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 Mu(e){if(!e)return null;let t=e.trim().toLowerCase();return ku.has(t)?t:null}function Nu(e){try{return Mu(E(e,`utf-8`).split(`
203
+ `)[0])}catch{return null}}function Pu(){let e=Mu(process.env.BAILIAN_INSTALL_METHOD);if(e)return e;if(ju()){let e=process.execPath.replaceAll(`\\`,`/`);return e.includes(`/Cellar/`)||e.includes(`/homebrew/`)?`brew`:`binary`}return`npm`}function Fu(e){let t=Mu(process.env.BAILIAN_INSTALL_METHOD);if(t)return t;if(e?.clientName){let t=Nu(Au(e.clientName));if(t)return t;if(e.clientName===`bailian-cli`){let e=Nu(Au());if(e)return e}return Pu()}return Nu(Au())||Pu()}function Iu(e){let t=Fu(e);return t===`binary`&&e.npmPackage!==`bailian-cli`?`npm`:t}function Lu(e,t={clientName:Du}){try{let n=F();C(n)||T(n,{recursive:!0,mode:448}),O(Au(t.clientName),`${e}\n`,{mode:384}),t.clientName===`bailian-cli`&&O(Au(),`${e}\n`,{mode:384})}catch{}}const Ru=`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/release`,zu=`https://github.com/modelstudioai/cli/releases`,Bu=`https://bailian.aliyun.com/cli/install.sh`,Vu=`https://bailian.aliyun.com/cli/install.ps1`;function Hu(){let e=process.env.BAILIAN_CLI_CDN?.trim();return e?e.replace(/\/$/,``):Ru}function Uu(e=`latest`){let t=e.trim();return!t||t===`latest`||t===`stable`?`${Hu()}/manifest.json`:`${Hu()}/${t}.json`}function Wu(e,t){let n=e.startsWith(`v`)?e:`v${e}`;return`${Hu()}/${n}/${t}`}function Gu(){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 Ku(e,t,n,r=!1){return`bl-${e}-${t}-${n}.zip`}function qu(e,t,n){if(t!==`windows`)return`bl-${e}-${t}-${n}.tar.gz`}function Ju(e,t,n,r=!1){return`bl-${e}-${t}-${n}${r?`.exe`:``}`}function Yu(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 Xu(e){let t=e.replace(/\\/g,`/`);return t.includes(`/`)?t.slice(t.lastIndexOf(`/`)+1):t}async function Zu(e,t,n){let r=await Yu(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=Xu(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 ye(k(t),{recursive:!0}),await ge(r,ae(t)),c(a)}catch(e){s(e)}})()})}),r.readEntry()})}function Qu(e,t){let n=(e??(t?`all`:``)).trim();if(!n)throw new P(`--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 P(`--name all cannot be mixed with specific skill names`,`Use either all or a comma-separated list of names`);return`all`}return r}function $u(){let e=Q();return C(e)?oe(e).filter(t=>{if(t.startsWith(`.`)||t.includes(`.tmp-`)||t.includes(`.old-`))return!1;try{return le(A(e,t)).isDirectory()}catch{return!1}}):[]}function ed(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,Es as ASYNC_FLAG,Ie as BAILIAN_HOST,Jo as BILLING_METHOD,Du as BINARY_PRODUCT_CLIENT_NAME,N as BailianError,vc as Budgets,To as CALC_DATASETS_TOKENS_API,jt as CHANNEL,q as CHARGE_TYPE,Ms as COMMAND_PACK_API_VERSION,Ts as CONCURRENT_FLAG,ze as CONFIG_FILE_KEYS,Os as CONSOLE_AUTH_FLAGS,Z as Capabilities,Sn as Client,Y as Complexities,yc as ContextNeeds,Nt as DASHSCOPE_SERVICE_HEADER,Yo as DEFAULT_BILLING_METHOD,Ru as DEFAULT_CLI_CDN_BASE,Ko as DEFAULT_DEPLOY_PLAN,Vu as DEFAULT_INSTALL_PS1_URL,Bu as DEFAULT_INSTALL_SCRIPT_URL,Re as DEFAULT_LANGUAGE,to as DEFAULT_TRAINING_TYPE,cs as DEPLOY_LIST_INDEPENDENT_API,K as DEPLOY_PLAN,os as DEPLOY_START_API,ss as DEPLOY_STOP_API,Fe as DOCS_HOSTS,Eo as ESTIMATE_FINETUNE_TOKENS_API,M as ExitCode,bc as Features,zu as GITHUB_RELEASES_BASE,ws as GLOBAL_FLAGS,so as INSUFFICIENT_SAMPLES_CODE,Hi as MAX_CPT_BYTES,Vi as MAX_DATASET_BYTES,Ui as MAX_MEDIA_ZIP_BYTES,Ds as MODEL_AUTH_FLAGS,wi as MODEL_LIST_API,hn as McpClient,_c as Modalities,xc as ModelCategories,ks as OPENAPI_AUTH_FLAGS,Mt as OPEN_API_SOURCE,Ti as PREDICT_CONFIG_API,X as QualityPreferences,Nr as RAG_PATHS,Pe as REGIONS,Or as SANDBOX_PATHS,Sc as SEMANTIC_TOP_K,ps as SPEECH_BIASING_MODEL,is as STRATEGIES,Le as SUPPORTED_LANGUAGES,wo as TRAINING_MODEL_PRICE_API,eo as TRAINING_TYPES_CLI,$a as TRAINING_TYPE_MAP,P as UsageError,yt as activateConfigProfile,wr as agentStudioFilesPath,$n as agentStudioHost,Mc as analyzeIntent,yn as anonymousConsoleCall,zn as appCompletionPath,Xl as atomicSwap,un as bailianMcpPath,dn as bailianMcpSsePath,Ku as binaryAssetFileName,Ju as binaryInnerFileName,qu as binaryTarFileName,Bt as buildAcsCanonicalQuery,ni as buildAsrContextMessages,ii as buildAsrFlashRequest,ri as buildAsyncAsrLanguageFields,El as buildDocLink,es as buildPrepaidInfo,Zo as buildReservationCapacity,Ct as buildSettings,gu as buildSkillLockEntry,St as buildSources,ms as buildVocabularyRequest,xn as callConsoleGateway,Ja as cancelFineTune,Uu as channelManifestUrl,On as chatPath,oi as collectAsrTranscriptionItems,Yl as computeDirContentHash,ed as computeSkillStatuses,mn as connectBailianMcpWithFallback,xi as createBailianControlUser,Lo as createCapacityInstance,jo as createDeployment,Ga as createFineTune,_i as createInstrumentedFetch,Ws as createTrackingEvent,gs as createVocabulary,As as credentialFlagDefs,qo as defaultDeployPlan,js as defineCommand,Bo as deleteCapacityInstance,bt as deleteConfigProfile,Bi as deleteDataset,Ho as deleteDeployment,Ya as deleteFineTune,bs as deleteVocabulary,hr as deploymentCapacityInstancePath,_r as deploymentCapacityInstanceRenewPath,gr as deploymentCapacityInstanceScalePath,mr as deploymentCapacityInstancesPath,yr as deploymentCapacityOperationPath,vr as deploymentOverflowPath,tt as describeAuthState,Gu as detectBinaryPlatform,Pu as detectInstallMethod,Il as detectInstalledAgents,Pa as detectModality,st as detectOutputFormat,ou as downloadSkillAsset,vn as effectiveConsoleGatewayConfig,jl as emptySkillLock,rt as ensureConfigDir,ko as estimateCptTokens,Oo as estimateSftDpoTokens,Qa as exportCheckpoint,ai as extractAsrFlashText,Jl as extractTarBr,Zu as extractZipEntryToFile,Wl as fanOutSkillToAgents,oo as fetchModelCapability,Mi as fetchModelDetail,ki as fetchModelGroups,ji as fetchModelGroupsAll,Ei as fetchModelList,Di as fetchModelListAll,Fi as fetchPredictConfig,ru as fetchSkillsIndex,Do as fetchTrainingModelPrice,fs as findDeploymentEntry,Oi as findModelByName,Ai as flattenModelGroups,nc as flushTelemetry,ot as formatErrorJson,Wa as formatIssue,at as formatJson,ct as formatOutput,it as formatText,En as generateCLIAccessToken,Ps as generateFilename,Fl as getAgentTargets,Et as getApiKeyLoginKind,Fo as getCapacityInstance,Io as getCapacityOperation,Hu as getCliCdnBase,F as getConfigDir,I as getConfigPath,nt as getCredentialsPath,zi as getDataset,No as getDeployment,qa as getFineTune,Xa as getFineTuneLogs,Fu as getInstallMethod,Tt as getModelProfilePreset,gc as getModels,So as getProfile,Al as getSkillLockPath,nu as getSkillRegistryBaseUrl,Q as getSkillsDir,Iu as getUpdateInstallMethod,Qo as hasPrepaidFlags,Nn as image2ImagePath,Fn as image2videoPath,Yt as imageFileToDataUri,An as imagePath,jn as imageSyncPath,Mn as imageText2ImagePath,ti as inferAudioFormatHint,mu as installSkill,pu as installSkillFromBuffer,_u as installSkillWithFanout,Ue as isApiKeyCapability,ju as isCompiledBinary,li as isDashScopeGateway,Hr as isLegacyImage2ImageModel,Vr as isLegacyText2ImageModel,Qt as isLocalFile,ql as isSafeEntryName,cu as isSafeSkillName,ol as isSemanticAvailable,fn as isStreamableHttpUnsupported,Lr as isSyncMultimodalImageModel,no as isTrainingTypeCli,pn as isUrlOverrideSseFallbackCandidate,Ur as isWanxFunctionImageEditModel,Qn as knowledgeChatEndpoint,Yn as knowledgeRetrievePath,Zn as knowledgeSearchEndpoint,Ul as linkSkillToAgents,Si as listBailianControlWorkspaces,Po as listCapacityInstances,Za as listCheckpoints,Ri as listDatasets,Uo as listDeployableModels,Mo as listDeployments,Ka as listFineTunes,ds as listIndependentDeployedModels,$u as listSkillDirsOnDisk,Ua as listSupportedFormats,ao as listSupportedTrainingTypes,Co as listTrainingTypes,_s as listVocabularies,rc as localSink,kt as makeAuthStore,Ii as makeConfigStore,je as mapApiError,At as maskToken,Eu as maybeSyncWikiData,rr as mcpWebSearchPath,Bn as memoryAddPath,Hn as memoryListPath,Un as memoryNodePath,Vn as memorySearchPath,io as modelSupportsTrainingType,Ln as modelsLimitsPath,Rn as modelsPermissionsPath,We as normalizeApiKeyCapabilities,ft as normalizeConfigName,Me as normalizeModelBaseUrl,Bs as parseBooleanValue,Ke as parseConfigFile,Gi as parseDatasetSchemaFlag,Ss as parseInstantVocabulary,Vs as parseOptionalBooleanValue,rn as parseSSE,pi as parseSecurityBody,Qu as parseSkillNames,Cs as parseVocabularyEntries,as as pickPlanStrategy,Va as pickValidator,Gl as planUnlinkSkillFromAgents,co as preflightBatchSizeGate,qn as profileSchemaPath,vs as queryVocabulary,Cr as ragEndpoint,kl as rankModels,R as readConfigFile,gt as readConfigProfiles,Ml as readSkillLock,Rs as readTextFromPathOrStdin,Wc as recallCandidates,Sl as recallSemantic,Xt as redactDataUri,Dn as refreshAccessToken,Ha as registerValidator,Wu as releaseAssetUrl,ic as remoteSink,hu as removeSkillDir,zo as renewCapacityInstance,It as request,zt as requestJson,Ci as resetBailianControlPolicies4Agent,Ye as resolveApiKey,ei as resolveAsrApi,au as resolveAssetFileName,Hs as resolveBooleanFlag,Xe as resolveConsole,$t as resolveFileUrl,qr as resolveImageEditApi,Kr as resolveImageGenerateApi,Wr as resolveImageSizeProfile,Je as resolveModelBaseUrl,qe as resolveModelBaseUrlState,Ze as resolveOpenApi,Is as resolveOutputDir,Gr as resolvePromptExtendDefault,Us as resolveWatermark,kn as responsesPath,zs as runWithConcurrency,Er as sandboxApiPath,Tr as sandboxBaseUrl,Dr as sandboxEndpoint,Ar as sandboxInstanceActionPath,kr as sandboxInstancePath,Mr as sandboxTemplateBuildStatusPath,jr as sandboxTemplatePath,su as sanitizeSkillName,Ro as scaleCapacityInstance,Wo as scaleDeployment,nr as securityAgentLogsEndpoint,mi as securityGet,tr as securityOverviewEndpoint,xt as selectApiKeyResolutionSources,Vt as signAcsRequest,Pt as sourceConfig,Gn as speechRecognizePath,Wn as speechSynthesizePath,Kn as speechVocabularyPath,ls as startModelService,us as stopModelService,Ls as stripUndefined,In as taskPath,cc as trackCommandExecution,B as trackingHeaders,ro as trainingTypeMethodVariant,Kl as unlinkSkillFromAgents,U as unwrapResponse,Go as updateDeployment,Vo as updateDeploymentOverflow,ys as updateVocabulary,Li as uploadDataset,Zt as uploadFile,Pl as upsertSkillLockEntry,Jn as userProfilePath,vt as validateConfigProfileActivation,G as validateDataset,$o as validatePrepaidFlags,Xo as validateReservationCapacity,du as validateSkillDir,Pn as videoGeneratePath,Xn as workspaceMaaSBaseUrl,z as writeConfigFile,Lu as writeInstallMethodSync,Nl as writeSkillLock};