bailian-cli-core 1.15.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +469 -14
- package/dist/index.mjs +19 -19
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
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 ee,createHmac as te,randomBytes as ne,randomUUID as re}from"crypto";import{Readable as ie}from"stream";import{createInterface as y}from"readline";import{pipeline as ae}from"stream/promises";import*as b from"yauzl";import{cpSync as oe,createWriteStream as se,existsSync as x,lstatSync as S,mkdirSync as C,readFileSync as w,readdirSync as T,readlinkSync as ce,renameSync as E,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?xe(n,`default`,{value:e,enumerable:!0}):n,e)),ke=e(import.meta.url);const M={SUCCESS:0,GENERAL:1,USAGE:2,AUTH:3,QUOTA:4,TIMEOUT:5,NETWORK:6,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=je(this.cause);return{error:{code:this.exitCode,message:this.message,...this.hint?{hint:this.hint}:{},...this.api?.httpStatus===void 0?{}:{http_status:this.api.httpStatus},...this.api?.apiCode?{api_code:this.api.apiCode}:{},...this.api?.requestId?{request_id:this.api.requestId}:{},...e?{cause:e}:{}}}}},Ae=class extends N{constructor(e,t){super(e,M.USAGE,t),this.name=`UsageError`}};function je(e){if(e!=null){if(e instanceof Error){let t={message:e.message},n=e.code;return n&&(t.code=n),t}if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return{message:String(e)};try{return{message:JSON.stringify(e)}}catch{return}}}function Me(e,t,n){let r=t.error?.message||t.message||`HTTP ${e}`,i=t.error?.type??t.code,a=typeof i==`string`?i:typeof i==`number`?String(i):void 0;return new N(r,M.GENERAL,void 0,{api:{httpStatus:e,apiCode:a,requestId:t.request_id}})}function Ne(e){let t=e.trim(),n;try{n=new URL(t)}catch{throw Pe(e)}if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Pe(e);return n.origin}function Pe(e){return new N(`Invalid model base URL "${e}".`,M.USAGE,`Use an absolute http(s) URL.`)}const Fe={cn:`https://dashscope.aliyuncs.com`,us:`https://dashscope-us.aliyuncs.com`,intl:`https://dashscope-intl.aliyuncs.com`},Ie={cn:`https://help.aliyun.com/zh/model-studio`,us:`https://help.aliyun.com/zh/model-studio`,intl:`https://help.aliyun.com/zh/model-studio`},Le=`https://bailian.cn-beijing.aliyuncs.com`,Re=[`api_key`,`access_token`,`access_key_id`,`access_key_secret`,`security_token`,`base_url`,`output`,`output_dir`,`timeout`,`default_text_model`,`default_video_model`,`default_image_to_video_model`,`default_reference_to_video_model`,`default_image_model`,`default_speech_model`,`default_omni_model`,`workspace_id`,`console_site`,`console_region`,`console_switch_agent`,`telemetry`],ze=new Set([`text`,`json`]),Be=new Set([`domestic`,`international`]);function Ve(e){try{return Ne(e)}catch{return}}function He(e){if(!e||typeof e!=`object`||Array.isArray(e))return{};let t=e,n={};if(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=Ve(t.base_url);e&&(n.base_url=e)}return 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.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_omni_model==`string`&&t.default_omni_model.length>0&&(n.default_omni_model=t.default_omni_model),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 Ue(e,t=Fe.cn){return Ne(e.flags.baseUrl||e.env.DASHSCOPE_BASE_URL||e.file.base_url||t)}function We(e){let t=Ue(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 Ge(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 Ke(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,!!(Je(e.env.ALIBABA_CLOUD_ACCESS_KEY_ID)||Je(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=Je(t),o=Je(n);if(!a||!o)throw new N(`Incomplete OpenAPI AK/SK credentials found.`,M.AUTH,Ye(e));return{accessKeyId:a,accessKeySecret:o,securityToken:Je(i),source:e}}function Je(e){return e?.trim()||void 0}function Ye(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 Xe(e){let t={};try{t.apiKey=We(e)}catch{}try{t.console=Ge(e)}catch{}try{t.openapi=Ke(e)}catch{}return t}function P(){return process.env.BAILIAN_CONFIG_DIR?process.env.BAILIAN_CONFIG_DIR:g(f(),`.bailian`)}function F(){return g(P(),`config.json`)}function Ze(){return g(P(),`credentials.json`)}async function Qe(){let e=P(),t=await import(`fs/promises`);await t.mkdir(e,{recursive:!0,mode:448});try{await t.chmod(e,448)}catch{}}function $e(e){return v(e).replace(/\n$/,``)}function et(e){return JSON.stringify(e,null,2)}function tt(e,t,n){return JSON.stringify({error:{code:e,message:t,...n?{hint:n}:{}}},null,2)}function nt(e){return e===`json`||e===`text`?e:`text`}function rt(e,t){switch(t){case`json`:return et(e);case`text`:return $e(e)}}const it=/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/,I=`active_config`;function at(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function ot(e){if(!(e===void 0||e===``||e===`default`)){if(typeof e!=`string`||!it.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(Re.includes(e)||e===I)throw new N(`Invalid config name "${e}". It conflicts with a config key.`,M.USAGE);return e}}function L(){let e=F();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 st(e,t){let n=ot(e[I]);if(n&&t&&!at(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 ct(e,t){if(!t)return e;let n=e[t];return at(n)?n:{}}function R(e){return He(ct(L(),e))}async function z(e,t,n={}){let r=L();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[I]=t??`default`),await lt(r)}async function lt(e){await Qe();let t=F(),n=t+`.tmp`;d(n,JSON.stringify(e,null,2)+`
|
|
2
|
-
`,{mode:384}),s(n,t)}function ut(){let e=L(),t={};for(let[n,r]of Object.entries(e))
|
|
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 O,rmSync as k,statSync as se,symlinkSync as ce,writeFileSync as A}from"node:fs";import{dirname as le,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?be(n,`default`,{value:e,enumerable:!0}):n,e)),Oe=e(import.meta.url);const N={SUCCESS:0,GENERAL:1,USAGE:2,AUTH:3,QUOTA:4,TIMEOUT:5,NETWORK:6,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=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}:{}}}}},ke=class extends P{constructor(e,t){super(e,N.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 P(r,N.GENERAL,void 0,{api:{httpStatus:e,apiCode:a,requestId:t.request_id}})}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 P(`Invalid model base URL "${e}".`,N.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=[`api_key`,`access_token`,`access_key_id`,`access_key_secret`,`security_token`,`base_url`,`output`,`output_dir`,`timeout`,`default_text_model`,`default_video_model`,`default_image_to_video_model`,`default_reference_to_video_model`,`default_image_model`,`default_speech_model`,`default_omni_model`,`workspace_id`,`console_site`,`console_region`,`console_switch_agent`,`telemetry`],Re=new Set([`text`,`json`]),ze=new Set([`domestic`,`international`]);function Be(e){try{return Me(e)}catch{return}}function Ve(e){if(!e||typeof e!=`object`||Array.isArray(e))return{};let t=e,n={};if(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=Be(t.base_url);e&&(n.base_url=e)}return typeof t.output==`string`&&Re.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.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_omni_model==`string`&&t.default_omni_model.length>0&&(n.default_omni_model=t.default_omni_model),typeof t.workspace_id==`string`&&t.workspace_id.length>0&&(n.workspace_id=t.workspace_id),typeof t.console_site==`string`&&ze.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 He(e,t=Pe.cn){return Me(e.flags.baseUrl||e.env.DASHSCOPE_BASE_URL||e.file.base_url||t)}function Ue(e){let t=He(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 We(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 Ge(e){let t=Ke(`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=Ke(`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=Ke(`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 Ke(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,Je(e));return{accessKeyId:a,accessKeySecret:o,securityToken:qe(i),source:e}}function qe(e){return e?.trim()||void 0}function Je(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 Ye(e){let t={};try{t.apiKey=Ue(e)}catch{}try{t.console=We(e)}catch{}try{t.openapi=Ge(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 Xe(){return g(F(),`credentials.json`)}async function Ze(){let e=F(),t=await import(`fs/promises`);await t.mkdir(e,{recursive:!0,mode:448});try{await t.chmod(e,448)}catch{}}function Qe(e){return v(e).replace(/\n$/,``)}function $e(e){return JSON.stringify(e,null,2)}function et(e,t,n){return JSON.stringify({error:{code:e,message:t,...n?{hint:n}:{}}},null,2)}function tt(e){return e===`json`||e===`text`?e:`text`}function nt(e,t){switch(t){case`json`:return $e(e);case`text`:return Qe(e)}}const rt=/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/,it=`active_config`;function at(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function ot(e){if(!(e===void 0||e===``||e===`default`)){if(typeof e!=`string`||!rt.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(Le.includes(e)||e===it)throw new P(`Invalid config name "${e}". It conflicts with a config key.`,N.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 st(e,t){let n=ot(e[it]);if(n&&t&&!at(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 ct(e,t){if(!t)return e;let n=e[t];return at(n)?n:{}}function R(e){return Ve(ct(L(),e))}async function z(e,t,n={}){let r=L();if(t)r[t]=e;else{for(let e of Object.keys(r))Le.includes(e)&&delete r[e];Object.assign(r,e)}n.activate&&(r[it]=t??`default`),await lt(r)}async function lt(e){await Ze();let t=I(),n=t+`.tmp`;d(n,JSON.stringify(e,null,2)+`
|
|
2
|
+
`,{mode:384}),s(n,t)}function ut(){let e=L(),t={};for(let[n,r]of Object.entries(e))Le.includes(n)||n===it||at(r)&&(t[n]=Ve(r));return{default:Ve(e),named:t,active:st(e,!0)??`default`}}function dt(e,t){let n=ot(t);if(n&&!at(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 ft(e){return dt(L(),e)}async function pt(e){let t=L(),n=dt(t,e);return t[it]=n,await lt(t),n}async function mt(e){let t=ot(e);if(!t)throw new P(`Cannot delete the default profile.`,N.USAGE);let n=L();return at(n[t])?(delete n[t],st(n,!1)===t&&(n[it]=`default`),await lt(n),!0):!1}function ht(e){let t=L(),n=e.config!==void 0,r=st(t,!n),i=n?ot(e.config):r;return{flags:e,file:Ve(ct(t,i)),env:process.env,configName:i,configPath:I()}}function gt(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??I(),configName:e.configName,output:tt(t.output||r.DASHSCOPE_OUTPUT||n.output),outputExplicit:!!(t.output||r.DASHSCOPE_OUTPUT||n.output),outputDir:n.output_dir||void 0,timeout:o,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,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 _t={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 vt(e){let t=e.configName,n=e.flags.config!==void 0;return{describe:()=>Ye({...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}},resolveBaseUrl:t=>He(e,t),async login(e){let r=R(t);for(let[t,n]of Object.entries(e))n!==void 0&&(r[t]=t===`base_url`?Me(String(n)):n);await z(r,t,{activate:n})},async logout(e){let n=R(t),r=_t[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 yt(e){return e.length>8?`${e.slice(0,4)}...${e.slice(-4)}`:`***`}const bt=`bailian-cli`,xt=`BailianCLI`;function St(e){return JSON.stringify({channel:bt,tags:{t1:`public`,t2:e.binName,t3:e.version}})}function B(e){return{"x-dashscope-source-config":St(e),"x-dashscope-openapisource":xt}}function Ct(e){return typeof e!=`object`||!e||e instanceof FormData?!1:JSON.stringify(e).includes(`oss://`)}async function wt(e,t){let n=typeof FormData<`u`&&t.body instanceof FormData,r={"User-Agent":`${e.identity.clientName}/${e.identity.version}`,...B(e.identity),...t.headers};if(!n&&!r[`Content-Type`]&&(r[`Content-Type`]=`application/json`),t.async&&(r[`X-DashScope-Async`]=`enable`),Ct(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: ${yt(n.replace(/^Bearer /,``))}`),console.error(`> x-dashscope-source-config: ${St(e.identity)}`)}let i=Tt((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 je(a.status,e,t.url)}return a}function Tt(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 Et(e,t){let n=await wt(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 je(200,{error:{message:r.message,type:r.code}},t.url);return r}function Dt(e){let t=[];for(let[n,r]of Object.entries(e))if(!(r===void 0||r===``))if(Array.isArray(r))for(let e=0;e<r.length;e++){let i=r[e];i!==``&&t.push([`${n}.${e+1}`,i])}else t.push([n,r]);return t.sort(([e],[t])=>e<t?-1:+(e>t)),t.map(([e,t])=>`${kt(e)}=${kt(String(t))}`).join(`&`)}function Ot(e){let t=e.method??`POST`,n=new Date().toISOString().replace(/\.\d{3}Z$/,`Z`),r=te(),i=At(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${
|
|
5
|
+
`),d=`ACS3-HMAC-SHA256`,f=`${d}\n${At(u)}`,p=jt(e.accessKeySecret,f);return a.authorization=`${d} Credential=${e.accessKeyId},SignedHeaders=${c},Signature=${p}`,a}function kt(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function At(e){return y(`sha256`).update(e,`utf8`).digest(`hex`)}function jt(e,t){return b(`sha256`,e).update(t,`utf8`).digest(`hex`)}const Mt=`${Pe.cn}/api/v1/uploads`;async function Nt(e,t,n,r){let i=`${Mt}?action=getPolicy&model=${encodeURIComponent(t)}`,a=Vt(15e3,r),o=await fetch(i,{headers:{Authorization:`Bearer ${e}`,"Content-Type":`application/json`,...B(n)},signal:a.signal}).finally(a.cleanup);if(!o.ok){let e=await o.text().catch(()=>``);throw new P(`Failed to get upload policy (HTTP ${o.status}): ${e}`,N.GENERAL)}return(await o.json()).data}async function Pt(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=Vt(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 Ft={".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 It(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=Ft[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 Lt(e){let t=/^data:([^;,]+);base64,/i.exec(e);return t?`data:${t[1]};base64,<omitted>`:e}async function Rt(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 Pt(await Nt(t,n,a,o),r,o)}function zt(e){return e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`oss://`)||e.startsWith(`data:`)?!1:i(e)}async function Bt(e,t,n,r){return zt(e)?Rt({apiKey:t,model:n,filePath:e,identity:r.identity,signal:r.signal}):e}function Vt(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 Ht(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
|
|
8
|
+
`),i=r.pop()??``;return{lines:r,rest:n?`${i}\r`:i}}function Ut(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;break}return{event:o}}async function*Wt(e){let t=e.body?.getReader();if(!t)return;let n=new TextDecoder,r=``,i=16*1024*1024;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=Ht(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}=Vt(r);r=c;for(let t of s){let n=Ht(t,e,i);e=n.event,n.completed&&(yield n.completed)}}r.length>0&&(e=Ht(r,e,i).event),e.data!==void 0&&(yield{data:e.data,event:e.event,id:e.id})}finally{t.releaseLock()}}function Wt(e){return String(e)}var Gt=class{sseUrl;messageUrl;nextId=1;deps;authToken;abortController;pending=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=qt(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 Ut(e)){if(this.closed)break;if(t.event===`endpoint`){let e=t.data.trim();if(!e)continue;this.messageUrl=Kt(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=Wt(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=Wt(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=qt(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=Jt(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 Kt(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 qt(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 Jt(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 Yt(e){return`/api/v1/mcps/${e}/mcp`}function Xt(e){return`/api/v1/mcps/${e}/sse`}function Zt(e){return e instanceof N?/^MCP request failed:\s*405\b/i.test(e.message):!1}function Qt(e){return e instanceof N?/^MCP request failed:\s*(405|404)\b/i.test(e.message):!1}async function $t(e){let{deps:t,authToken:n,httpUrl:r,sseUrl:i,serverCode:a,urlOverride:o}=e;if(o){let e=new en(t,o,n);try{return await e.initialize(),{client:e,url:o}}catch(e){if(!Qt(e))throw e}let r=new Gt(t,o,n);try{return await r.initialize(),{client:r,url:o}}catch(e){throw r.close(),e}}let s=new en(t,r,n);try{return await s.initialize(),{client:s,url:r}}catch(e){if(!Zt(e)||a===`WebSearch`)throw e}let c=new Gt(t,i,n);try{return await c.initialize(),{client:c,url:i}}catch(e){throw c.close(),e}}var en=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 Ut(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 tn={"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 nn(e,t){return tn[e]?.[t]??tn[`cn-beijing`][t]}function rn(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 an(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 on(e,t,{api:n,data:r},i){let a=nn(e.region,e.site),o=`https://${a.csGateway}`,s=a.action,c=an(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{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}url(e){return 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 Ct(this.http,this.toOpts(e))}requestJson(e){return Tt(this.http,this.toOpts(e))}uploadFile(e,t,n={}){return Rt(e)?zt(e,this.requireApi().token,t,{...n,identity:this.deps.identity}):Promise.resolve(e)}resolveImageInput(e,t,n={}){return Rt(e)?this.usesTokenPlanEndpoint()?Promise.resolve(Ft(e)):this.uploadFile(e,t,{signal:n.signal}):Promise.resolve(e)}usesTokenPlanEndpoint(){if(this.deps.settings.configName===`token-plan`)return!0;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 en(this.http,t,this.deps.apiCred?.token)}connectBailianMcp(e,t){return this.requireApi(),$t({deps:this.http,authToken:this.deps.apiCred?.token,httpUrl:this.url(Yt(e)),sseUrl:this.url(Xt(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 on(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 fn({identity:this.deps.identity,settings:this.deps.settings,baseUrl:this.deps.baseUrl});if(!t)throw e;return await on({...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?Et(e.queryParams):``,i=`https://${e.host}${e.path}${r?`?${r}`:``}`,a=Dt({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: ${yt(t.accessKeyId)}\n`),t.securityToken&&process.stderr.write(`> STS token: ${yt(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 ln(e){for(let[t,n]of Object.entries(Fe))if(e===n||e.startsWith(`${n}/`))return t;return`cn`}function un(e){return cn[ln(e)]??cn.cn}async function dn(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=un(r);return s.openApiQueryJson({host:c,path:`/modelstudio/cli/generateAccessToken`,action:`GenerateCLIAccessToken`,version:`2026-02-10`,method:`POST`,queryParams:{}})}async function fn(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 dn({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 pn(){return`/compatible-mode/v1/chat/completions`}function mn(){return`/compatible-mode/v1/responses`}function hn(){return`/api/v1/services/aigc/image-generation/generation`}function gn(){return`/api/v1/services/aigc/multimodal-generation/generation`}function _n(){return`/api/v1/services/aigc/text2image/image-synthesis`}function vn(){return`/api/v1/services/aigc/image2image/image-synthesis`}function yn(){return`/api/v1/services/aigc/video-generation/video-synthesis`}function bn(e){return`/api/v1/tasks/${encodeURIComponent(e)}`}function xn(e){return`/api/v1/apps/${encodeURIComponent(e)}/completion`}function Sn(){return`/api/v2/apps/memory/add`}function Cn(){return`/api/v2/apps/memory/memory_nodes/search`}function wn(){return`/api/v2/apps/memory/memory_nodes`}function Tn(e){return`/api/v2/apps/memory/memory_nodes/${encodeURIComponent(e)}`}function En(){return`/api/v1/services/audio/tts/SpeechSynthesizer`}function Dn(){return`/api/v1/services/audio/asr/transcription`}function On(){return`/api/v2/apps/memory/profile_schemas`}function kn(e){return`/api/v2/apps/memory/profile_schemas/${encodeURIComponent(e)}/profiles`}function An(){return`/api/v1/indices/rag/index/retrieve`}function jn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v1/indices/knowledge/search`}function Mn(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v2/apps/knowledge/chat`}function Nn(){return`/api/v1/mcps/WebSearch/mcp`}function Pn(){return`/compatible-mode/v1/files`}function Fn(){return`/api/v1/files`}function In(e){return`/api/v1/files/${encodeURIComponent(e)}`}function Ln(){return`/api/v1/fine-tunes`}function Rn(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}`}function zn(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/cancel`}function Bn(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/logs`}function Vn(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/checkpoints`}function Hn(e,t){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/export/${encodeURIComponent(t)}`}function Un(){return`/api/v1/deployments`}function Wn(e){return`/api/v1/deployments/${encodeURIComponent(e)}`}function Gn(e){return`/api/v1/deployments/${encodeURIComponent(e)}/scale`}function Kn(e){return`/api/v1/deployments/${encodeURIComponent(e)}/update`}function qn(){return`/api/v1/deployments/models`}const Jn=[`qwen-image`,`wan2.7-image`,`z-image`],Yn=[`qwen-image-3.0`,`qwen-image-2.0`,`qwen-image-edit`,`wan2.7-image`,`wan2.6-image`];function Xn(e,t){return t.some(t=>e.startsWith(t))}function Zn(e){return Xn(e,Jn)||e.startsWith(`wan2.6-image`)}function Qn(e){return Xn(e,Jn)}function $n(e){return Xn(e,Yn)}function er(e){return/^wanx-v1(?:-|$)/i.test(e)}function tr(e){return e.startsWith(`wan2.6-t2i`)||e.startsWith(`wan2.6-image`)||Qn(e)?!1:!!(/^wan2\.[0-5][^-]*-t2i/i.test(e)||er(e)||/^wanx/i.test(e)&&/t2i|text2image/i.test(e))}function nr(e){return/wan2\.5-i2i/i.test(e)}function rr(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`:er(e)?`wanx-v1`:/wan2\.5-i2i/i.test(e)?`wan25-i2i`:tr(e)?`wan-legacy`:`wan26`}function ar(e){if(e.startsWith(`qwen-image-3.0`)||e.startsWith(`qwen-image-2.0`)||e.startsWith(`qwen-image-max`))return!0;if(e.startsWith(`z-image`))return!1}function V(e,t){return{...e,sizeProfile:ir(t),promptExtendDefault:ar(t)}}function or(e){return Qn(e)?V({kind:`sync-multimodal`,path:gn(),useSync:!0,inputStyle:`messages`},e):tr(e)?V({kind:`async-text2image`,path:_n(),useSync:!1,inputStyle:`prompt`},e):V({kind:`async-image-generation`,path:hn(),useSync:!1,inputStyle:`messages`},e)}function sr(e){return $n(e)?V({kind:`sync-multimodal`,path:gn(),useSync:!0,inputStyle:`messages`},e):rr(e)?V({kind:`async-image2image`,path:vn(),useSync:!1,inputStyle:`function-base-image`},e):nr(e)?V({kind:`async-image2image`,path:vn(),useSync:!1,inputStyle:`prompt-images`},e):V({kind:`async-image-generation`,path:hn(),useSync:!1,inputStyle:`messages`},e)}function cr(e){return/realtime|streaming/i.test(e)}function lr(e){return/filetrans/i.test(e)}function ur(e){return/^qwen3-asr-flash-filetrans(?:-|$)/i.test(e)}const dr=[`fun-asr-flash`,`qwen-audio`];function fr(e){return cr(e)||lr(e)?!1:!!(e.startsWith(dr[0])||e.startsWith(dr[1])&&/asr-flash/i.test(e))}function pr(e){return!(!/^qwen3-asr-flash(?:-|$)/i.test(e)||lr(e)||cr(e)||fr(e))}function mr(e){if(cr(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(lr(e)){let t=ur(e);return{kind:`async-filetrans`,path:Dn(),useSync:!1,asyncInputStyle:t?`file_url`:`file_urls`,asyncLanguageStyle:t?`language`:`language_hints`}}return fr(e)?{kind:`sync-flash`,path:gn(),useSync:!0,flashFamily:`input-audio`}:pr(e)?{kind:`sync-flash`,path:gn(),useSync:!0,flashFamily:`qwen3`}:{kind:`async-filetrans`,path:Dn(),useSync:!1,asyncInputStyle:`file_urls`,asyncLanguageStyle:`language_hints`}}function hr(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 gr(e,t){return t?e===`language`?{language:t}:{language_hints:[t]}:{}}function _r(e){let{model:t,audioUrl:n,language:r,vocabularyId:i,flashFamily:a}=e;if(a===`input-audio`){let e={format:hr(n),sample_rate:`16000`};return r&&(e.language_hints=[r]),i&&(e.vocabulary_id=i),{model:t,input:{messages:[{role:`user`,content:[{type:`input_audio`,input_audio:{data:n}}]}]},parameters:e}}let o={};r&&(o.language=r);let s={};Object.keys(o).length>0&&(s.asr_options=o);let c={model:t,input:{messages:[{role:`user`,content:[{audio:n}]}]}};return Object.keys(s).length>0&&(c.parameters=s),c}function vr(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 yr(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`}]:[]}function br(e){try{let{hostname:t}=new URL(e);return t===`aliyuncs.com`||t.endsWith(`.aliyuncs.com`)}catch{return!1}}function xr(e){return typeof e==`string`?e:e instanceof URL?e.href:e.url}function Sr(e){return async(t,n={})=>{let r=xr(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}`),br(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: ${yt(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 Cr=`2024-08-16`;function wr(e){return`bailiancontrol.${e}.aliyuncs.com`}function Tr(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 Er(e){return Tr(e).openApiJson({host:wr(e.regionId),path:`/bailianControl/User/createUser`,action:`CreateUser`,version:Cr,method:`POST`,body:{data:JSON.stringify({reqDTO:e.reqDTO})}})}async function Dr(e){return Tr(e).openApiJson({host:wr(e.regionId),path:`/bailianControl/workspaces`,action:`ListWorkspaces`,version:Cr,method:`GET`,queryParams:{data:JSON.stringify({reqDTO:{},cornerstoneParam:{}})}})}async function Or(e){return Tr(e).openApiJson({host:wr(e.regionId),path:`/bailianControl/serviserAuthorityPolicy/resetPolicies4Agent`,action:`ChangeUserPermissions`,version:Cr,method:`POST`,body:{data:JSON.stringify({cornerstoneParam:{},outerKey:e.outerKey,policyIndexList:e.policyIndexList??[1],agentId:e.agentId})}})}const kr=`zeldaHttp.dashscopeModel./zelda/api/v1/modelCenter/listFoundationModels`,Ar=`zeldaEasy.bmp.modelPredictRpcService.getPredictParamConfig`;function jr(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 Mr(e,t={}){let{pageNo:n=1,pageSize:r=50,name:i=``,providers:a=[],capabilities:o=[]}=t,s=jr(await e(kr,{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 Nr(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=jr(await e(kr,{input:u}));return{total:d.total??0,groups:d.list??[]}}async function Pr(e,t){return(jr(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 Fr=[`name`,`key`,`default`,`tip`,`range`];function Ir(e){return e.map(e=>{let t={};for(let n of Fr)e[n]!==void 0&&(t[n]=e[n]);return t})}async function Lr(e,t){let n=jr(await e(Ar,{modelId:t})).predictConfig;if(!n)return null;if(typeof n==`string`)try{let e=JSON.parse(n);return Array.isArray(e)?Ir(e):null}catch{return null}return Array.isArray(n)?Ir(n):null}function Rr(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`?Ne(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:()=>ut(),activate:e=>pt(e),validateActivation:e=>ft(e),get path(){return F()}}}const zr={"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`}};function Br(e){return e?zr[e]:void 0}async function Vr(e,t){let{filePath:r,purpose:i=`fine-tune`,signal:a}=t,o=l(r),s=m(r),c=ie.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:Pn(),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?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 Hr(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=Fn(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Ur(e,t,n){return e.requestJson({path:In(t),method:`GET`,signal:n})}async function Wr(e,t,n){let r=await e.request({path:In(t),method:`DELETE`,signal:n});try{return await r.json()}catch{return{data:{deleted:!0,file_id:t}}}}const Gr=300*1024*1024,Kr=1024*1024*1024;function qr(e,t=Gr){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/(1024*1024)).toFixed(1)}MB exceeds the ${(t/(1024*1024)).toFixed(0)}MB dataset upload cap.`,M.USAGE);return{bytes:n.size,ext:h(e).toLowerCase()}}function H(e,t,n,r={}){return{severity:e,code:t,message:n,...r}}function Jr(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 Yr(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=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 Xr=new Set([`system`,`user`,`assistant`]);function Zr(e,t,n){let r=[];if(typeof e!=`object`||!e||Array.isArray(e))return r.push(H(`error`,`MESSAGE_NOT_OBJECT`,`Message must be an object.`,{line:t,path:n})),r;let i=e,a=i.role,o=i.content;return(typeof a!=`string`||!Xr.has(a))&&r.push(H(`error`,`INVALID_ROLE`,`Invalid role "${String(a)}". Expected one of: system, user, assistant.`,{line:t,path:`${n}.role`})),typeof o!=`string`&&r.push(H(`error`,`INVALID_CONTENT`,`"content" must be a string (got ${typeof o}).`,{line:t,path:`${n}.content`})),r}function Qr(e,t){let n=[],r=e.messages;if(!Array.isArray(r))return n.push(H(`error`,`MISSING_MESSAGES`,`Required field "messages" is missing or not an array.`,{line:t,path:`messages`})),n;if(r.length===0)return n.push(H(`error`,`EMPTY_MESSAGES`,`"messages" must contain at least one entry.`,{line:t,path:`messages`})),n;let i=!1,a;for(let e=0;e<r.length;e++){let o=r[e],s=`messages[${e}]`;n.push(...Zr(o,t,s));let c=o?.role;c===`system`&&(e!==0&&n.push(H(`warning`,`SYSTEM_NOT_FIRST`,`"system" message should appear at index 0; found at index ${e}.`,{line:t,path:`${s}.role`})),i=!0),a===c&&(c===`user`||c===`assistant`)&&n.push(H(`warning`,`ROLE_NOT_ALTERNATING`,`Consecutive ${c} messages — user/assistant turns should typically alternate.`,{line:t,path:`${s}.role`})),typeof c==`string`&&(a=c)}return r.some(e=>e.role===`user`)||n.push(H(`warning`,`NO_USER_ROLE`,`No "user" message found in this sample.`,{line:t,path:`messages`})),i&&r.length===1&&n.push(H(`warning`,`SYSTEM_ONLY`,`Sample only contains a "system" message.`,{line:t,path:`messages`})),n}const $r={name:`chatml`,detect:()=>!0,inspect:Qr};function ei(e,t){let n=[];if(!(`text`in e))return n.push(H(`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(H(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})),n):(n.push(H(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`})),n)}const ti={name:`cpt`,detect:e=>`text`in e&&!(`messages`in e),inspect:ei};function ni(e,t){let n=Qr(e,t),r=e.messages;if(!Array.isArray(r)||r.length===0)return n;let i=`chosen`in e,a=`rejected`in e;if(i||n.push(H(`error`,`MISSING_CHOSEN`,`DPO record is missing the "chosen" preference.`,{line:t,path:`chosen`})),a||n.push(H(`error`,`MISSING_REJECTED`,`DPO record is missing the "rejected" preference.`,{line:t,path:`rejected`})),i){n.push(...Zr(e.chosen,t,`chosen`));let r=e.chosen?.role;typeof r==`string`&&r!==`assistant`&&n.push(H(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"chosen" role should be "assistant" (got "${r}").`,{line:t,path:`chosen.role`}))}if(a){n.push(...Zr(e.rejected,t,`rejected`));let r=e.rejected?.role;typeof r==`string`&&r!==`assistant`&&n.push(H(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"rejected" role should be "assistant" (got "${r}").`,{line:t,path:`rejected.role`}))}return n}const ri={name:`dpo`,detect:e=>`chosen`in e||`rejected`in e,inspect:ni};function ii(e,t){let n=[];if(!(`wav_fn`in e))n.push(H(`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(H(`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(H(`error`,`EMPTY_WAV_FN`,`"wav_fn" must not be empty.`,{line:t,path:`wav_fn`}));else{r.startsWith(`train/`)||n.push(H(`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(H(`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(H(`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(H(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})):n.push(H(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`}))}return n}const ai={name:`tts`,detect:e=>`wav_fn`in e,inspect:ii},oi=new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.webp`,`.tiff`]);function si(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function ci(e){return/^[\x20-\x7E]+$/.test(e)}function li(e,t){let n=[];if(!(`prompt`in e))n.push(H(`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(H(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(H(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}if(!(`img_path`in e))n.push(H(`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(H(`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(H(`error`,`EMPTY_IMG_PATH`,`"img_path" must not be empty.`,{line:t,path:`img_path`}));else{let e=si(r);oi.has(e)||n.push(H(`warning`,`UNUSUAL_IMAGE_EXT`,`"img_path" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...oi].join(`, `)}.`,{line:t,path:`img_path`})),ci(r)||n.push(H(`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(H(`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(H(`error`,`EMPTY_INPUT_IMG`,`"input_img" must not be empty.`,{line:t,path:`input_img`}));else{let e=si(r);oi.has(e)||n.push(H(`warning`,`UNUSUAL_INPUT_IMG_EXT`,`"input_img" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...oi].join(`, `)}.`,{line:t,path:`input_img`})),ci(r)||n.push(H(`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 ui={name:`image`,detect:e=>`img_path`in e,inspect:li},di=new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.webp`]),fi=new Set([`.mp4`,`.mov`]);function pi(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function mi(e){return/^[\x20-\x7E]+$/.test(e)}function hi(e,t,n,r,i,a){if(!(n in t)){r&&e.push(H(`error`,`MISSING_FIELD`,`Required field "${n}" is missing.`,{line:a,path:n}));return}let o=t[n];if(typeof o!=`string`){e.push(H(`error`,`INVALID_FIELD`,`"${n}" must be a string (got ${typeof o}).`,{line:a,path:n}));return}if(o.trim().length===0){e.push(H(`error`,`EMPTY_FIELD`,`"${n}" must not be empty.`,{line:a,path:n}));return}let s=pi(o);i.has(s)||e.push(H(`warning`,`UNUSUAL_MEDIA_EXT`,`"${n}" points to a non-standard extension "${s||`(none)`}". Expected one of: ${[...i].join(`, `)}.`,{line:a,path:n})),mi(o)||e.push(H(`error`,`NON_ASCII_PATH`,`"${n}" must contain only ASCII characters (English filenames required). Got: "${o}".`,{line:a,path:n}))}function gi(e,t){let n=[];if(!(`prompt`in e))n.push(H(`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(H(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(H(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}return hi(n,e,`first_frame_path`,!0,di,t),hi(n,e,`last_frame_path`,!1,di,t),hi(n,e,`video_path`,!1,fi,t),n}const _i=[ai,ui,{name:`video`,detect:e=>`first_frame_path`in e||`video_path`in e,inspect:gi},ri,ti,$r];function vi(e,t){return t===void 0?_i.find(t=>t.detect(e))??$r:_i.find(e=>e.name===t)||$r}async function yi(e,t){let r=y({input:n(e,{encoding:`utf8`}),crlfDelay:1/0}),i=[],a=0,o=0;for await(let e of r){if(t?.aborted)break;a++;let n=e.trim();if(n.length===0){o++;continue}i.length>=20||(n[0]!==`{`||n[n.length-1]!==`}`)&&i.push(H(`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:a}))}return{totalLines:a,blankLines:o,issues:i}}async function bi(e,t,r,i,a){let o=r?null:new Set(Yr(t)),s=[],c=0,l=y({input:n(e,{encoding:`utf8`}),crlfDelay:1/0}),u=0;for await(let e of l){if(a?.aborted)break;if(u++,o&&!o.has(u))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(H(`error`,`MALFORMED_JSON`,`JSON.parse failed: ${e.message}`,{line:u}));continue}s.push(...xi(n,u,i))}return{sampled:c,issues:s}}function xi(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return[H(`error`,`RECORD_NOT_OBJECT`,`Each line must be a JSON object, got ${Array.isArray(e)?`array`:typeof e}.`,{line:t})];let r=e;return vi(r,n).inspect(r,t)}const Si={format:`jsonl`,extensions:[`.jsonl`],async validate(e,t){let n=Date.now(),r=await yi(e,t.signal);if(r.totalLines===0||r.totalLines===r.blankLines)return{valid:!1,format:`jsonl`,filePath:e,errors:[H(`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 bi(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 Ci(e,t){return new Promise((n,r)=>{b.open(e,{lazyEntries:!0},(e,i)=>{if(e||!i){r(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(Error(`Entry "${t}" not found in ZIP`))}),i.on(`error`,r)})})}function wi(e){return new Promise((t,n)=>{b.open(e,{lazyEntries:!0},(e,r)=>{if(e||!r){n(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)})})}async function Ti(e,t,n){let{entry:i,zipfile:a}=await Ci(e,t);return new Promise((e,t)=>{a.openReadStream(i,(i,o)=>{if(i||!o){a.close(),t(i??Error(`Failed to open entry stream`));return}ae(o,r(n)).then(()=>{a.close(),e()}).catch(e=>{a.close(),t(e)})})})}async function Ei(e,t=100){let r=y({input:n(e,{encoding:`utf8`}),crlfDelay:1/0}),i=[],a=0;for await(let e of r){if(a++,i.length>=t)continue;let n=e.trim();if(n.length!==0)try{let e=JSON.parse(n);typeof e.wav_fn==`string`&&i.push(e.wav_fn),typeof e.img_path==`string`&&i.push(e.img_path),typeof e.input_img==`string`&&i.push(e.input_img),typeof e.first_frame_path==`string`&&i.push(e.first_frame_path),typeof e.last_frame_path==`string`&&i.push(e.last_frame_path),typeof e.video_path==`string`&&i.push(e.video_path),typeof e.image_fn==`string`&&i.push(e.image_fn),typeof e.video_fn==`string`&&i.push(e.video_fn)}catch{}}return{refs:i,totalLines:a}}const Di={format:`zip`,extensions:[`.zip`],async validate(e,t){let n=Date.now(),r=[],i=[],o;try{o=await wi(e)}catch(t){return{valid:!1,format:`zip`,filePath:e,errors:[H(`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:[H(`error`,`ZIP_EMPTY`,`ZIP archive contains no entries.`)],warnings:[],stats:{durationMs:Date.now()-n}};let s=o.some(e=>e===`data.jsonl`||e.endsWith(`/data.jsonl`));s||r.push(H(`error`,`MISSING_DATA_JSONL`,`ZIP archive must contain "data.jsonl" at the root. This file maps media files (e.g. .wav) to their labels.`));let l=t.schema===`image`,u=t.schema===`video`,d=o.some(e=>e===`train/`||e.startsWith(`train/`)),f=o.some(e=>e.toLowerCase().endsWith(`.wav`));if(!d&&!l&&!u&&f&&i.push(H(`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.`)),l){let e=o.filter(e=>{if(e===`data.jsonl`||e.endsWith(`/data.jsonl`)||e.endsWith(`/`))return!1;let t=e.lastIndexOf(`.`),n=t>=0?e.slice(t).toLowerCase():``;return oi.has(n)});e.length<25&&r.push(H(`error`,`INSUFFICIENT_IMAGES`,`Found ${e.length} image(s) in ZIP, but image generation fine-tuning requires at least 25 images (50+ recommended).`))}if(!s)return{valid:!1,format:`zip`,filePath:e,errors:r,warnings:i,stats:{totalRecords:o.length,durationMs:Date.now()-n}};let m=o.find(e=>e===`data.jsonl`||e.endsWith(`/data.jsonl`)),h=g(p(),`bl-zip-${ne(6).toString(`hex`)}`);a(h,{recursive:!0});let _=g(h,`data.jsonl`);try{await Ti(e,m,_)}catch(t){return r.push(H(`error`,`EXTRACT_FAILED`,`Failed to extract "data.jsonl" from ZIP: ${t.message}`)),c(h,{recursive:!0,force:!0}),{valid:!1,format:`zip`,filePath:e,errors:r,warnings:i,stats:{durationMs:Date.now()-n}}}let v=await Si.validate(_,t);if(r.push(...v.errors),i.push(...v.warnings),v.valid){let{refs:e}=await Ei(_),t=new Set(o),n=m.lastIndexOf(`/`),i=n>=0?m.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(H(`error`,`DANGLING_MEDIA_REFS`,`${a.length} media file(s) referenced in data.jsonl not found in ZIP: ${e}${t}`))}}return c(h,{recursive:!0,force:!0}),{valid:r.length===0,format:`zip`,filePath:e,errors:r,warnings:i,stats:{totalRecords:v.stats.totalRecords??o.length,sampledRecords:v.stats.sampledRecords,durationMs:Date.now()-n}}}};async function Oi(e){let t=h(e).toLowerCase();if(t===`.jsonl`)return ki(e);if(t===`.zip`)return Ai(e);throw new N(`Cannot inspect file with extension "${t}". Expected .jsonl or .zip.`,M.USAGE)}async function ki(e){let t=await Mi(e);if(!t)throw new N(`JSONL file is empty or contains only blank lines: ${e}`,M.USAGE);let n=ji(t);return n===`unknown`?`text`:n}async function Ai(e){let t=await Ni(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=ji(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 ji(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 Mi(e){return new Promise((t,r)=>{let i=n(e,{encoding:`utf8`}),a=y({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 Ni(e,t){return Ci(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=y({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 Pi=[Si,Di];function Fi(e){let t=h(e).toLowerCase(),n=Pi.find(e=>e.extensions.includes(t));if(!n){let e=Pi.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 Ii(e){Pi.some(t=>t.format===e.format)||Pi.push(e)}async function U(e,t={}){let{bytes:n}=qr(e,t.maxBytes??314572800),r=await Fi(e).validate(e,t);return r.stats.bytes===void 0&&(r.stats.bytes=n),r}function Li(){return Pi.map(e=>({format:e.format,extensions:[...e.extensions]}))}function Ri(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 zi(e,t,n){return e.requestJson({path:Ln(),method:`POST`,body:t,signal:n})}async function Bi(e,t={}){let n=new URLSearchParams;t.pageNo!==void 0&&n.set(`page_no`,String(t.pageNo)),t.pageSize!==void 0&&n.set(`page_size`,String(t.pageSize)),t.status&&n.set(`status`,t.status);let r=Ln(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Vi(e,t,n){return e.requestJson({path:Rn(t),method:`GET`,signal:n})}async function Hi(e,t,n){return e.requestJson({path:zn(t),method:`POST`,signal:n})}async function Ui(e,t,n){return e.requestJson({path:Rn(t),method:`DELETE`,signal:n})}async function Wi(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=Bn(t),a=r.toString()?`${i}?${r.toString()}`:i;return e.requestJson({path:a,method:`GET`,signal:n.signal})}async function Gi(e,t,n){return e.requestJson({path:Vn(t),method:`GET`,signal:n})}async function Ki(e,t,n,r,i){let a=new URLSearchParams;return a.set(`model_name`,r),e.requestJson({path:`${Hn(t,n)}?${a.toString()}`,method:`GET`,signal:i})}const qi={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`}},Ji=Object.keys(qi),Yi=`sft-lora`;function Xi(e){return e in qi}function Zi(e){let{method:t,variant:n}=qi[e];return{method:t,variant:n}}function Qi(e,t){if(!e)return!1;let{method:n,variant:r}=qi[t];if(e.supports?.[n]!==!0)return!1;let i=e.trainingTypes?.[n];return Array.isArray(i)&&i.includes(r)}function $i(e){return e?Ji.filter(t=>Qi(e,t)):[]}async function ea(e,t){let n=rn(e);return(await Mr((t,r)=>on({region:n.consoleRegion,site:n.consoleSite,switchAgent:n.consoleSwitchAgent},e.timeout,{api:t,data:r}),{name:t,pageSize:20})).models.find(e=>e.model===t)??null}const ta=`INSUFFICIENT_SAMPLES`;function na(e){let{recordCount:t,batchSize:n}=e;return t>n?{ok:!0}:{ok:!1,issue:{severity:`error`,code:ta,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 ra(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 ia(e,t,n){return{clientTrainingType:e,serverTrainingType:t,acceptedExtensions:[`.jsonl`],async validate(e,t,r){return U(e,{...r,schema:n})},resolveHyperParameters(e,t){return ra(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}}const aa=ia(`sft`,`sft`,`chatml`),oa={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},sa={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},ca={...sa,max_pixels:`1k`,val_img_size:`1k`,generation_type:`i2i`},la={n_epochs:400,learning_rate:`2e-5`,split:.9,max_split_val_dataset_sample:5,eval_epochs:50,save_total_limit:10,lora_rank:32,lora_alpha:32};function ua(e){return e===`image`||e===`image-i2i`}function da(e){return e===`video`||e===`video-kf2v`}function fa(e){return typeof e==`string`&&/wan2\.5/i.test(e)}const pa=[aa,{clientTrainingType:`sft-lora`,serverTrainingType:`efficient_sft`,acceptedExtensions:[`.jsonl`,`.zip`],async validate(e,t,n){if(t===`audio`)return U(e,{...n,schema:`tts`});if(ua(t))return U(e,{...n,schema:`image`,maxBytes:Kr});if(da(t)){let r=await U(e,{...n,schema:`video`,maxBytes:Kr});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(H(`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(H(`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 U(e,{...n,schema:`chatml`})},resolveHyperParameters(e,t){if(e===`audio`)return{...oa};if(ua(e)){let n={...e===`image-i2i`?ca:sa};return t.learningRate!==void 0&&(n.learning_rate=t.learningRate),n}if(da(e)){let e=fa(t.model),n={...la,batch_size:4,max_pixels:e?36864:262144};return t.nEpochs!==void 0&&(n.n_epochs=t.nEpochs),t.learningRate!==void 0&&(n.learning_rate=t.learningRate),n}return ra(t)},shouldSkipGate(e,t){return!!((t===`audio`||ua(t)||da(t))&&e===`batch_size`)},shouldSkipCapabilityCheck(e){return e===`audio`||ua(e)||da(e)}},ia(`dpo`,`dpo_full`,`dpo`),ia(`dpo-lora`,`dpo_lora`,`dpo`),ia(`cpt`,`cpt`,`cpt`)];function ma(e){let t=pa.find(t=>t.clientTrainingType===e);if(!t){let t=pa.map(e=>e.clientTrainingType).join(`, `);throw new N(`Unknown training type "${e}".`,M.USAGE,`Supported training types: ${t}.`)}return t}function ha(){return pa.map(e=>e.clientTrainingType)}async function ga(e,t,n){return e.requestJson({path:Un(),method:`POST`,body:t,signal:n})}async function _a(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=Un(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function va(e,t,n){return e.requestJson({path:Wn(t),method:`GET`,signal:n})}async function ya(e,t,n){return e.requestJson({path:Wn(t),method:`DELETE`,signal:n})}async function ba(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=qn(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function xa(e,t,n,r){return e.requestJson({path:Gn(t),method:`PUT`,body:n,signal:r})}async function Sa(e,t,n,r){return e.requestJson({path:Kn(t),method:`PUT`,body:n,signal:r})}const W={LORA:`lora`,PTU:`ptu`,MU:`mu`},Ca=W.LORA;function wa(e){return e===`audio`?W.MU:Ca}const Ta={POST_PAY:`POST_PAY`,PRE_PAY:`PRE_PAY`},Ea=Ta.POST_PAY,Da={POST_PAID:`post_paid`,PRE_PAID:`pre_paid`},Oa={name:W.LORA,validateFlags(){},async resolve(){return{body:{capacity:1}}}},ka={name:W.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}}}},Aa={name:W.MU,validateFlags(){},async resolve(e){let t=e.flags.billingMethod||Ea,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 ba(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===W.MU)?.templates??[];if(o.length===0)throw i();let s=t===Ta.POST_PAY?Da.POST_PAID:Da.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}}},ja={[W.LORA]:Oa,[W.PTU]:ka,[W.MU]:Aa};function Ma(e){let t=ja[e];if(!t)throw new N(`Unsupported plan "${e}". Supported plans: ${Object.keys(ja).join(`, `)}.`,M.USAGE);return t}const Na={output:{type:`string`,valueHint:`<format>`,description:`Output format: text, json`},timeout:{type:`number`,valueHint:`<seconds>`,description:`Request timeout`},quiet:{type:`switch`,description:`Suppress non-essential output`},verbose:{type:`switch`,description:`Print HTTP request/response details`},dryRun:{type:`switch`,description:`Dry run mode`},config:{type:`string`,valueHint:`<name>`,description:`Use a config profile for this command`},help:{type:`switch`,description:`Show help`},version:{type:`switch`,description:`Print version`}},Pa={concurrent:{type:`number`,valueHint:`<n>`,description:`Run N parallel requests (default: 1)`}},Fa={async:{type:`switch`,description:`Return async task id without waiting`}},Ia={apiKey:{type:`string`,valueHint:`<key>`,description:`API key`},baseUrl:{type:`string`,valueHint:`<url>`,description:`API base URL`}},La={consoleRegion:{type:`string`,valueHint:`<region>`,description:`Console gateway region (e.g. cn-beijing, ap-southeast-1)`},consoleSite:{type:`string`,valueHint:`<site>`,description:`Console site: domestic, international`},consoleSwitchAgent:{type:`number`,valueHint:`<uid>`,description:`Switch agent UID for delegated access`},workspaceId:{type:`string`,valueHint:`<id>`,description:`Workspace ID (env: BAILIAN_WORKSPACE_ID)`}},Ra={accessKeyId:{type:`string`,valueHint:`<key>`,description:`Alibaba Cloud Access Key ID (env: ALIBABA_CLOUD_ACCESS_KEY_ID)`},accessKeySecret:{type:`string`,valueHint:`<key>`,description:`Alibaba Cloud Access Key Secret (env: ALIBABA_CLOUD_ACCESS_KEY_SECRET)`},securityToken:{type:`string`,valueHint:`<token>`,description:`Alibaba Cloud STS Security Token (env: ALIBABA_CLOUD_SECURITY_TOKEN)`}};function za(e){return e.auth===`apiKey`?Ia:e.auth===`console`?La:e.auth===`openapi`?Ra:{}}function Ba(e){return e}const Va=1;function Ha(e,t){return e.normalize(`NFKC`).replace(/[\\/:*?"<>|]/g,`_`).replace(/\s+/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``)||t}function Ua(e,t){return`${Ha(e||`image`,`image`)}_${Ha((t||``).substring(0,20),`untitled`)}_${Date.now()}`}const Wa=()=>g(f(),`bailian-output`);function Ga(e,t){let n=t?.flagDir||e.outputDir||Wa(),r=t?.subDir?g(n,t.subDir):n;return i(r)||a(r,{recursive:!0}),r}function Ka(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}function qa(e){return o(e===`-`?0:e,`utf-8`)}async function Ja(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 Ya(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 Xa(e,t=`boolean`){if(e!=null)return Ya(e,t)}function Za(e,t,n=`boolean`){let r=Xa(e,n);return r===void 0?t:r}function Qa(e){return Xa(e,`watermark`)??!0}function $a(e){let t={command:e.command,timestamp: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.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 eo(e){if(e==null)return;let t=typeof e==`string`?e:JSON.stringify(e);return t.length<=500?t:t.slice(0,500)}function to(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=eo(e.errorMessage)),e.requestId&&(i.c5=e.requestId),i}let G;function no(){return G||(process.env.NODE_ENV===`development`?(G=`dev`,G):process.env.BAILIAN_COMPILED===`1`?(G=`prod`,G):(G=import.meta.url.includes(`/node_modules/`)?`prod`:`dev`,G))}var ro=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`},ee=(e,t)=>{t.appName=`BitDiscoveryBot`,t.appVersion=e.value,t.deviceBrand=`Tenable`,t.deviceType=`bot`,t.platform=`other`},te=(e,t)=>{e.getPreviousNTokens(4)===`Screaming Frog SEO Spider`&&(t.deviceBrand=`Screaming Frog`,t.appName=`Screaming Frog`),t.appVersion=e.value,t.deviceType=`bot`},ne=(e,t)=>{t.appName=`Ai2Bot`,t.appVersion=e.value,t.deviceBrand=`Ai2`,t.deviceType=`bot`,t.platform=`other`},re=(e,t)=>{t.appName=`DianjingAdSpider`,t.appVersion=e.value,t.deviceBrand=`Dianjing`,t.deviceType=`bot`,t.platform=`other`},ie=(e,t)=>{t.appName=`BaiduSpider`,t.appVersion=e.value,t.deviceBrand=`Baidu`,t.deviceType=`bot`,t.platform=`other`},y=(e,t)=>{t.appName=`360 Spider`,t.appVersion=e.value,t.deviceBrand=`360`,t.deviceType=`bot`,t.platform=`other`},ae=(e,t)=>{t.appName=`BingBot`,t.appVersion=e.value,t.deviceBrand=`Microsoft`,t.deviceType=`bot`,t.platform=`other`},b=(e,t)=>{t.appName=`Googlebot`,t.appVersion=e.value,t.deviceBrand=`Google`,t.deviceType=`bot`,t.platform=`other`},oe=(e,t)=>{t.appName=`YandexBot`,t.appVersion=e.value,t.deviceBrand=`Yandex`,t.deviceType=`bot`,t.platform=`other`},se=(e,t)=>{e.getPreviousNTokens(3)===`Sogou web spider`&&(t.deviceBrand=`Sogou.com`,t.appName=`SogouSpider`),t.appVersion=e.value,t.deviceType=`bot`},x=(e,t)=>{t.appName=`DataproviderBot`,t.appVersion=e.value,t.deviceBrand=`Dataprovider.com`,t.deviceType=`bot`,t.platform=`other`},S=(e,t)=>{t.appName=`AhrefsBot`,t.appVersion=e.value,t.deviceBrand=`Ahrefs`,t.deviceType=`bot`,t.platform=`other`},C=(e,t)=>{t.appName=`BitSightBot`,t.appVersion=e.value,t.deviceBrand=`Bitsight`,t.deviceType=`bot`,t.platform=`other`},w=(e,t)=>{t.appName=`oBot`,t.appVersion=e.value,t.deviceBrand=`IBM`,t.deviceType=`bot`,t.platform=`other`},T=(e,t)=>{t.appName=`Cincraw`,t.appVersion=e.value,t.deviceBrand=`CINC`,t.deviceType=`bot`,t.platform=`other`},ce=(e,t)=>{t.appName=`DingTalkBot`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},E=(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=new Map,j=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`,ee),A.set(`Spider`,te),A.set(`Ai2Bot-Dolma`,ne),A.set(`dianjing_ad_spider`,re),j.set(`Baiduspider-render`,ie),j.set(`Baiduspider+`,ie),j.set(`Baiduspider-image+`,ie),j.set(`360Spider`,y),j.set(`360Spider-Image`,y),j.set(`bingbot`,ae),j.set(`Googlebot`,b),j.set(`YandexRenderResourcesBot`,oe),j.set(`spider`,se),j.set(`Dataprovider.com`,x),j.set(`AhrefsBot`,S),j.set(`BitSightBot`,C),j.set(`oBot`,w),j.set(`Cincraw`,T),j.set(`DingTalkBot-LinkService`,ce),j.set(`YisouSpider`,E),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=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 ee(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:new Date().getTimezoneOffset()},e&&(this._config=c(this._config,e))}ee.prototype={constructor:ee,_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||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 te=ee,ne=n(3),re=n.n(ne),ie=n(4),y=n(5),ae=n.n(y);function b(e){return(b=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 oe(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 se(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?oe(Object(n),!0).forEach(function(t){x(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):oe(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function x(e,t,n){return(t=(function(e){var t=(function(e,t){if(b(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(b(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)})(e,`string`);return b(t)==`symbol`?t:t+``})(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=w(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
|
-
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
|
|
15
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)})()}function
|
|
16
|
-
`,{mode:384})}catch{}}async function
|
|
17
|
-
`).filter(Boolean),n=[];for(let e of t)try{let t=
|
|
11
|
+
`);r=t.pop()??``;for(let n of t){let t=Ut(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}=Ht(r);r=c;for(let t of s){let n=Ut(t,e,i);e=n.event,n.completed&&(yield n.completed)}}r.length>0&&(e=Ut(r,e,i).event),e.data!==void 0&&(yield{data:e.data,event:e.event,id:e.id})}finally{t.releaseLock()}}function Gt(e){return String(e)}var Kt=class{sseUrl;messageUrl;nextId=1;deps;authToken;abortController;pending=new Map;endpointReady;resolveEndpoint;rejectEndpoint;closed=!1;streamEnded=!1;constructor(e,t,n){this.deps=e,this.sseUrl=t,this.authToken=n,this.endpointReady=new Promise((e,t)=>{this.resolveEndpoint=e,this.rejectEndpoint=t})}async initialize(){if(!this.authToken)throw new P(`This command needs a model-domain API key.`,N.AUTH);await this.openSse();let e=await this.rpc(`initialize`,{protocolVersion:`2025-03-26`,capabilities:{},clientInfo:{name:this.deps.identity.clientName,version:this.deps.identity.version}});this.deps.settings.verbose&&(console.error(`[MCP SSE] Session initialized`),console.error(`[MCP SSE] Server: ${JSON.stringify(e)}`)),await this.notify(`notifications/initialized`)}async listTools(){return(await this.rpc(`tools/list`)).tools||[]}async callTool(e,t){return await this.rpc(`tools/call`,{name:e,arguments:t})}close(){this.closed||(this.closed=!0,this.abortController?.abort(),this.failPending(new P(`MCP SSE session closed.`,N.GENERAL)),this.messageUrl=void 0)}failPending(e){for(let[,t]of this.pending)t.reject(e);this.pending.clear()}markStreamEnded(e){this.streamEnded=!0,this.messageUrl=void 0,this.failPending(e)}async openSse(){if(this.abortController)return;this.abortController=new AbortController;let e=this.deps.settings.timeout*1e3,t=!1,n=setTimeout(()=>{t=!0,this.abortController?.abort()},e),r={Accept:`text/event-stream`,"User-Agent":`${this.deps.identity.clientName}/${this.deps.identity.version}`,...B(this.deps.identity)};this.authToken&&(r.Authorization=`Bearer ${this.authToken}`),this.deps.settings.verbose&&console.error(`> GET ${this.sseUrl}`);let i;try{i=await fetch(this.sseUrl,{method:`GET`,headers:r,signal:this.abortController.signal})}catch(e){throw clearTimeout(n),this.abortController=void 0,this.closed?new P(`MCP SSE session closed.`,N.GENERAL):t?new P(`MCP SSE timed out waiting for response headers.`,N.TIMEOUT):e}if(this.deps.settings.verbose&&console.error(`< ${i.status} ${i.statusText}`),!i.ok){let e=`MCP request failed: ${i.status} ${i.statusText}`;try{let t=await i.text();t&&(e+=` - ${t.slice(0,500)}`)}catch(r){throw clearTimeout(n),this.abortController=void 0,this.closed?new P(`MCP SSE session closed.`,N.GENERAL):t?new P(`MCP SSE timed out reading error response body.`,N.TIMEOUT):new P(e,N.GENERAL,void 0,{cause:r})}throw clearTimeout(n),this.abortController=void 0,new P(e,N.GENERAL)}clearTimeout(n),this.consumeSse(i).catch(e=>{if(this.closed)return;let t=e instanceof P?e:new P(`MCP SSE stream failed: ${e instanceof Error?e.message:String(e)}`,N.GENERAL);this.rejectEndpoint?.(t),this.streamEnded||this.markStreamEnded(t)});let a=Jt(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 Wt(e)){if(this.closed)break;if(t.event===`endpoint`){let e=t.data.trim();if(!e)continue;this.messageUrl=qt(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=Gt(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=Gt(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=Jt(a,`MCP SSE timed out waiting for response to ${e}.`);try{if(await this.postMessage(i),this.closed||this.streamEnded)throw new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL);let e=await Promise.race([o,s.promise]);if(e.error)throw new P(`MCP error (${e.error.code}): ${e.error.message}`,N.GENERAL);return e.result}catch(e){throw this.pending.delete(r),e}finally{s.cancel()}}async notify(e,t){let n={jsonrpc:`2.0`,method:e,...t?{params:t}:{}};await this.postMessage(n)}async postMessage(e){if(this.closed||this.streamEnded)throw new P(`MCP SSE stream ended unexpectedly.`,N.GENERAL);if(!this.messageUrl)throw new P(`MCP SSE message endpoint is not ready.`,N.GENERAL);let t={"Content-Type":`application/json`,Accept:`application/json, text/event-stream`,"User-Agent":`${this.deps.identity.clientName}/${this.deps.identity.version}`,...B(this.deps.identity)};this.authToken&&(t.Authorization=`Bearer ${this.authToken}`),this.deps.settings.verbose&&(console.error(`> POST ${this.messageUrl}`),console.error(`> Method: ${e.method}`));let n=Yt(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 qt(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 Jt(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 Yt(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 Xt(e){return`/api/v1/mcps/${e}/mcp`}function Zt(e){return`/api/v1/mcps/${e}/sse`}function Qt(e){return e instanceof P?/^MCP request failed:\s*405\b/i.test(e.message):!1}function $t(e){return e instanceof P?/^MCP request failed:\s*(405|404)\b/i.test(e.message):!1}async function en(e){let{deps:t,authToken:n,httpUrl:r,sseUrl:i,serverCode:a,urlOverride:o}=e;if(o){let e=new tn(t,o,n);try{return await e.initialize(),{client:e,url:o}}catch(e){if(!$t(e))throw e}let r=new Kt(t,o,n);try{return await r.initialize(),{client:r,url:o}}catch(e){throw r.close(),e}}let s=new tn(t,r,n);try{return await s.initialize(),{client:s,url:r}}catch(e){if(!Qt(e)||a===`WebSearch`)throw e}let c=new Kt(t,i,n);try{return await c.initialize(),{client:c,url:i}}catch(e){throw c.close(),e}}var tn=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 Wt(e)){if(t.event&&t.event!==`message`)continue;let e;try{e=JSON.parse(t.data)}catch{continue}if(e.id!=null&&String(e.id)===n)return e}throw new P(`MCP SSE response stream ended without a matching JSON-RPC response.`,N.GENERAL)}async send(e){let t={"Content-Type":`application/json`,Accept:`application/json, text/event-stream`,"User-Agent":`${this.deps.identity.clientName}/${this.deps.identity.version}`,...B(this.deps.identity)};this.authToken&&(t.Authorization=`Bearer ${this.authToken}`),this.sessionId&&(t[`Mcp-Session-Id`]=this.sessionId),this.deps.settings.verbose&&(console.error(`> POST ${this.url}`),console.error(`> Method: ${e.method}`));let n=this.deps.settings.timeout*1e3,r=await fetch(this.url,{method:`POST`,headers:t,body:JSON.stringify(e),signal:AbortSignal.timeout(n)});this.deps.settings.verbose&&console.error(`< ${r.status} ${r.statusText}`);let i=r.headers.get(`Mcp-Session-Id`)||r.headers.get(`mcp-session-id`);if(i&&(this.sessionId=i),!r.ok){let e=`MCP request failed: ${r.status} ${r.statusText}`;try{let t=await r.text();t&&(e+=` - ${t.slice(0,500)}`)}catch{}throw new P(e,N.GENERAL)}return r}};const nn={"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 rn(e,t){return nn[e]?.[t]??nn[`cn-beijing`][t]}function an(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 on(e){let t=an(e);return(n,r)=>cn({region:t.consoleRegion,site:t.consoleSite,switchAgent:t.consoleSwitchAgent},e.timeout,{api:n,data:r})}function sn(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 cn(e,t,{api:n,data:r},i){let a=rn(e.region,e.site),o=`https://${a.csGateway}`,s=a.action,c=sn(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 ln=class{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}url(e){return 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 wt(this.http,this.toOpts(e))}requestJson(e){return Et(this.http,this.toOpts(e))}uploadFile(e,t,n={}){return zt(e)?Bt(e,this.requireApi().token,t,{...n,identity:this.deps.identity}):Promise.resolve(e)}resolveImageInput(e,t,n={}){return zt(e)?this.usesTokenPlanEndpoint()?Promise.resolve(It(e)):this.uploadFile(e,t,{signal:n.signal}):Promise.resolve(e)}usesTokenPlanEndpoint(){if(this.deps.settings.configName===`token-plan`)return!0;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 tn(this.http,t,this.deps.apiCred?.token)}connectBailianMcp(e,t){return this.requireApi(),en({deps:this.http,authToken:this.deps.apiCred?.token,httpUrl:this.url(Xt(e)),sseUrl:this.url(Zt(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 cn(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 mn({identity:this.deps.identity,settings:this.deps.settings,baseUrl:this.deps.baseUrl});if(!t)throw e;return await cn({...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?Dt(e.queryParams):``,i=`https://${e.host}${e.path}${r?`?${r}`:``}`,a=Ot({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: ${yt(t.accessKeyId)}\n`),t.securityToken&&process.stderr.write(`> STS token: ${yt(t.securityToken)}\n`),r&&process.stderr.write(`> query: ${r}\n`),n&&process.stderr.write(`> body: ${n}\n`));let o=this.deps.settings.timeout*1e3,s=await fetch(i,{method:e.method,headers:{...a,...B(this.deps.identity)},body:n||void 0,signal:AbortSignal.timeout(o)}),c=await s.text();this.deps.settings.verbose&&(process.stderr.write(`< ${s.status} ${s.statusText}\n`),process.stderr.write(`< ${c}\n`));let l;try{l=JSON.parse(c)}catch{throw new P(`${s.status} ${s.statusText} - ${c.slice(0,500)}`,N.GENERAL)}if(!s.ok||l.Success===!1)throw new P(`${l.Code||s.status} - ${l.Message||s.statusText}`,N.GENERAL);return l}};const un={cn:`modelstudio.cn-beijing.aliyuncs.com`,intl:`modelstudio.ap-southeast-1.aliyuncs.com`};function dn(e){for(let[t,n]of Object.entries(Pe))if(e===n||e.startsWith(`${n}/`))return t;return`cn`}function fn(e){return un[dn(e)]??un.cn}async function pn(e){let{identity:t,settings:n,baseUrl:r,accessKeyId:i,accessKeySecret:a,securityToken:o}=e,s=new ln({identity:t,settings:n,baseUrl:r,openApiCred:{accessKeyId:i,accessKeySecret:a,securityToken:o,source:`flag`}}),c=fn(r);return s.openApiQueryJson({host:c,path:`/modelstudio/cli/generateAccessToken`,action:`GenerateCLIAccessToken`,version:`2026-02-10`,method:`POST`,queryParams:{}})}async function mn(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 pn({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 hn(){return`/compatible-mode/v1/chat/completions`}function gn(){return`/compatible-mode/v1/responses`}function _n(){return`/api/v1/services/aigc/image-generation/generation`}function vn(){return`/api/v1/services/aigc/multimodal-generation/generation`}function yn(){return`/api/v1/services/aigc/text2image/image-synthesis`}function bn(){return`/api/v1/services/aigc/image2image/image-synthesis`}function xn(){return`/api/v1/services/aigc/video-generation/video-synthesis`}function Sn(){return`/api/v1/services/aigc/image2video/video-synthesis`}function Cn(e){return`/api/v1/tasks/${encodeURIComponent(e)}`}function wn(){return`/api/v1/models/limits`}function Tn(){return`/api/v1/models/permissions`}function En(e){return`/api/v1/apps/${encodeURIComponent(e)}/completion`}function Dn(){return`/api/v2/apps/memory/add`}function On(){return`/api/v2/apps/memory/memory_nodes/search`}function kn(){return`/api/v2/apps/memory/memory_nodes`}function An(e){return`/api/v2/apps/memory/memory_nodes/${encodeURIComponent(e)}`}function jn(){return`/api/v1/services/audio/tts/SpeechSynthesizer`}function Mn(){return`/api/v1/services/audio/asr/transcription`}function Nn(){return`/api/v2/apps/memory/profile_schemas`}function Pn(e){return`/api/v2/apps/memory/profile_schemas/${encodeURIComponent(e)}/profiles`}function Fn(){return`/api/v1/indices/rag/index/retrieve`}function In(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v1/indices/knowledge/search`}function Ln(e){return`https://${e}.cn-beijing.maas.aliyuncs.com/api/v2/apps/knowledge/chat`}function Rn(){return`/api/v1/mcps/WebSearch/mcp`}function zn(){return`/compatible-mode/v1/files`}function Bn(){return`/api/v1/files`}function Vn(e){return`/api/v1/files/${encodeURIComponent(e)}`}function Hn(){return`/api/v1/fine-tunes`}function Un(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}`}function Wn(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/cancel`}function Gn(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/logs`}function Kn(e){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/checkpoints`}function qn(e,t){return`/api/v1/fine-tunes/${encodeURIComponent(e)}/export/${encodeURIComponent(t)}`}function Jn(){return`/api/v1/deployments`}function Yn(e){return`/api/v1/deployments/${encodeURIComponent(e)}`}function Xn(e){return`/api/v1/deployments/${encodeURIComponent(e)}/scale`}function Zn(e){return`/api/v1/deployments/${encodeURIComponent(e)}/update`}function Qn(){return`/api/v1/deployments/models`}function $n(e,t){return`https://${e}.cn-beijing.maas.aliyuncs.com${t}`}const er={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`},tr=[`qwen-image`,`wan2.7-image`,`z-image`],nr=[`qwen-image-3.0`,`qwen-image-2.0`,`qwen-image-edit`,`wan2.7-image`,`wan2.6-image`];function rr(e,t){return t.some(t=>e.startsWith(t))}function ir(e){return rr(e,tr)||e.startsWith(`wan2.6-image`)}function ar(e){return rr(e,tr)}function or(e){return rr(e,nr)}function sr(e){return/^wanx-v1(?:-|$)/i.test(e)}function cr(e){return e.startsWith(`wan2.6-t2i`)||e.startsWith(`wan2.6-image`)||ar(e)?!1:!!(/^wan2\.[0-5][^-]*-t2i/i.test(e)||sr(e)||/^wanx/i.test(e)&&/t2i|text2image/i.test(e))}function lr(e){return/wan2\.5-i2i/i.test(e)}function ur(e){return/imageedit/i.test(e)}function dr(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`:sr(e)?`wanx-v1`:/wan2\.5-i2i/i.test(e)?`wan25-i2i`:cr(e)?`wan-legacy`:`wan26`}function fr(e){if(e.startsWith(`qwen-image-3.0`)||e.startsWith(`qwen-image-2.0`)||e.startsWith(`qwen-image-max`))return!0;if(e.startsWith(`z-image`))return!1}function V(e,t){return{...e,sizeProfile:dr(t),promptExtendDefault:fr(t)}}function pr(e){return ar(e)?V({kind:`sync-multimodal`,path:vn(),useSync:!0,inputStyle:`messages`},e):cr(e)?V({kind:`async-text2image`,path:yn(),useSync:!1,inputStyle:`prompt`},e):V({kind:`async-image-generation`,path:_n(),useSync:!1,inputStyle:`messages`},e)}function mr(e){return or(e)?V({kind:`sync-multimodal`,path:vn(),useSync:!0,inputStyle:`messages`},e):ur(e)?V({kind:`async-image2image`,path:bn(),useSync:!1,inputStyle:`function-base-image`},e):lr(e)?V({kind:`async-image2image`,path:bn(),useSync:!1,inputStyle:`prompt-images`},e):V({kind:`async-image-generation`,path:_n(),useSync:!1,inputStyle:`messages`},e)}function hr(e){return/realtime|streaming/i.test(e)}function gr(e){return/filetrans/i.test(e)}function _r(e){return/^qwen3-asr-flash-filetrans(?:-|$)/i.test(e)}const vr=[`fun-asr-flash`,`qwen-audio`];function yr(e){return hr(e)||gr(e)?!1:!!(e.startsWith(vr[0])||e.startsWith(vr[1])&&/asr-flash/i.test(e))}function br(e){return!(!/^qwen3-asr-flash(?:-|$)/i.test(e)||gr(e)||hr(e)||yr(e))}function xr(e){if(hr(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(gr(e)){let t=_r(e);return{kind:`async-filetrans`,path:Mn(),useSync:!1,asyncInputStyle:t?`file_url`:`file_urls`,asyncLanguageStyle:t?`language`:`language_hints`}}return yr(e)?{kind:`sync-flash`,path:vn(),useSync:!0,flashFamily:`input-audio`}:br(e)?{kind:`sync-flash`,path:vn(),useSync:!0,flashFamily:`qwen3`}:{kind:`async-filetrans`,path:Mn(),useSync:!1,asyncInputStyle:`file_urls`,asyncLanguageStyle:`language_hints`}}function Sr(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 Cr(e,t){return t?e===`language`?{language:t}:{language_hints:[t]}:{}}function wr(e){let{model:t,audioUrl:n,language:r,vocabularyId:i,flashFamily:a}=e;if(a===`input-audio`){let e={format:Sr(n),sample_rate:`16000`};return r&&(e.language_hints=[r]),i&&(e.vocabulary_id=i),{model:t,input:{messages:[{role:`user`,content:[{type:`input_audio`,input_audio:{data:n}}]}]},parameters:e}}let o={};r&&(o.language=r);let s={};Object.keys(o).length>0&&(s.asr_options=o);let c={model:t,input:{messages:[{role:`user`,content:[{audio:n}]}]}};return Object.keys(s).length>0&&(c.parameters=s),c}function Tr(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 Er(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`}]:[]}function Dr(e){try{let{hostname:t}=new URL(e);return t===`aliyuncs.com`||t.endsWith(`.aliyuncs.com`)}catch{return!1}}function Or(e){return typeof e==`string`?e:e instanceof URL?e.href:e.url}function kr(e){return async(t,n={})=>{let r=Or(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}`),Dr(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: ${yt(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 Ar=`2024-08-16`;function jr(e){return`bailiancontrol.${e}.aliyuncs.com`}function Mr(e){return new ln({identity:e.identity,settings:e.settings,baseUrl:e.baseUrl,openApiCred:{accessKeyId:e.accessKeyId,accessKeySecret:e.accessKeySecret,securityToken:e.securityToken,source:`flag`}})}async function Nr(e){return Mr(e).openApiJson({host:jr(e.regionId),path:`/bailianControl/User/createUser`,action:`CreateUser`,version:Ar,method:`POST`,body:{data:JSON.stringify({reqDTO:e.reqDTO})}})}async function Pr(e){return Mr(e).openApiJson({host:jr(e.regionId),path:`/bailianControl/workspaces`,action:`ListWorkspaces`,version:Ar,method:`GET`,queryParams:{data:JSON.stringify({reqDTO:{},cornerstoneParam:{}})}})}async function Fr(e){return Mr(e).openApiJson({host:jr(e.regionId),path:`/bailianControl/serviserAuthorityPolicy/resetPolicies4Agent`,action:`ChangeUserPermissions`,version:Ar,method:`POST`,body:{data:JSON.stringify({cornerstoneParam:{},outerKey:e.outerKey,policyIndexList:e.policyIndexList??[1],agentId:e.agentId})}})}const Ir=`zeldaHttp.dashscopeModel./zelda/api/v1/modelCenter/listFoundationModels`,Lr=`zeldaEasy.bmp.modelPredictRpcService.getPredictParamConfig`;function H(e){let t=e.data;if(!t)return e;let n=t.DataV2;if(n){let e=n.data;return e?.data??e??n}return t.data??t}async function Rr(e,t={}){let{pageNo:n=1,pageSize:r=50,name:i=``,providers:a=[],capabilities:o=[]}=t,s=H(await e(Ir,{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 zr(e,t={}){let n=t.pageSize??50,r=await Rr(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 Rr(e,{...t,pageNo:r,pageSize:n});if(a.models.length===0)break;i.push(...a.models)}return i}async function Br(e,t){return(await Rr(e,{name:t,pageSize:50})).models.find(e=>e.model===t)??null}async function Vr(e,t={}){let{pageNo:n=1,pageSize:r=50,name:i=``,providers:a=[],capabilities:o=[],features:s=[],contextWindows:c=[],querySampleCode:l}=t,u={pageNo:n,pageSize:r,name:i,providers:a,inferenceProviders:[],features:s,group:!0,capabilities:o,contextWindows:c,queryPermissions:!0,queryApplyStatus:!0,queryActivationStatus:!0,queryPrice:!0,queryQpmInfo:!0,supports:{inference:!0}};l&&(u.querySampleCode=!0);let d=H(await e(Ir,{input:u}));return{total:d.total??0,groups:d.list??[]}}async function Hr(e,t){return(H(await e(`zeldaHttp.dashscopeModel./zelda/api/v1/modelCenter/listFoundationModels`,{input:{pageNo:1,pageSize:50,group:!0,model:t,querySampleCode:!0,queryGroupByModel:!0,queryWorkspaceLimit:!0,queryPrice:!0,queryQuota:!1,queryQpmInfo:!0,queryApplyStatus:!0,queryPermissions:!0,queryActivationStatus:!0}})).list??[])[0]??null}const Ur=[`name`,`key`,`default`,`tip`,`range`];function Wr(e){return e.map(e=>{let t={};for(let n of Ur)e[n]!==void 0&&(t[n]=e[n]);return t})}async function Gr(e,t){let n=H(await e(Lr,{modelId:t})).predictConfig;if(!n)return null;if(typeof n==`string`)try{let e=JSON.parse(n);return Array.isArray(e)?Wr(e):null}catch{return null}return Array.isArray(n)?Wr(n):null}function Kr(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:()=>ut(),activate:e=>pt(e),validateActivation:e=>ft(e),get path(){return I()}}}const qr={"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`}};function Jr(e){return e?qr[e]:void 0}async function Yr(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:zn(),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?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 Xr(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=Bn(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Zr(e,t,n){return e.requestJson({path:Vn(t),method:`GET`,signal:n})}async function Qr(e,t,n){let r=await e.request({path:Vn(t),method:`DELETE`,signal:n});try{return await r.json()}catch{return{data:{deleted:!0,file_id:t}}}}const $r=200*1024*1024,ei=300*1024*1024,ti=2*1024*1024*1024;function ni(e,t=$r){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/(1024*1024)).toFixed(1)}MB exceeds the ${(t/(1024*1024)).toFixed(0)}MB dataset upload cap.`,N.USAGE);return{bytes:n.size,ext:h(e).toLowerCase()}}function U(e,t,n,r={}){return{severity:e,code:t,message:n,...r}}function ri(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 ii(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=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 ai=new Set([`system`,`user`,`assistant`,`tool`]),oi=.1;function si(e,t,n,r){let i=[],a=t=>{if(!(t in e))return;let a=e[t];(typeof a!=`number`||a<oi||a>10)&&i.push(U(`error`,`INVALID_VIDEO_FPS`,`"${t}" must be a number between ${oi} and 10 (got ${JSON.stringify(a)}).`,{line:n,path:`${r}.${t}`}))};a(`fps`),a(`sample_fps`);let o=t?[`fps`,`video_start`,`video_end`]:[`sample_fps`],s=t?`frame-list`:`file-path`;for(let t of o)t in e&&i.push(U(`warning`,`VIDEO_PARAM_MODE_MISMATCH`,`"${t}" does not apply to ${s} video mode and will be ignored by the platform.`,{line:n,path:`${r}.${t}`}));for(let a of[`video_start`,`video_end`])a in e&&!t&&typeof e[a]!=`number`&&i.push(U(`error`,`INVALID_VIDEO_CLIP_TIME`,`"${a}" must be a number (seconds).`,{line:n,path:`${r}.${a}`}));return i}function ci(e,t,n){let r=[];if(typeof e==`string`)return r;if(!Array.isArray(e))return r.push(U(`error`,`INVALID_CONTENT`,`"content" must be a string or an array of content items (got ${typeof e}).`,{line:t,path:n})),r;if(e.length===0)return r.push(U(`error`,`EMPTY_CONTENT_ARRAY`,`"content" array must not be empty.`,{line:t,path:n})),r;for(let i=0;i<e.length;i++){let a=e[i],o=`${n}[${i}]`;if(typeof a!=`object`||!a||Array.isArray(a)){r.push(U(`error`,`INVALID_CONTENT_ITEM`,`Content item must be an object.`,{line:t,path:o}));continue}let s=a,c=`text`in s,l=`image`in s,u=`video`in s;if(!c&&!l&&!u){r.push(U(`error`,`CONTENT_ITEM_NO_KNOWN_FIELD`,`Content item must contain at least one of: "text", "image", "video".`,{line:t,path:o}));continue}if(c&&typeof s.text!=`string`&&r.push(U(`error`,`INVALID_CONTENT_TEXT`,`"text" in content item must be a string.`,{line:t,path:`${o}.text`})),l&&typeof s.image!=`string`&&r.push(U(`error`,`INVALID_CONTENT_IMAGE`,`"image" in content item must be a string.`,{line:t,path:`${o}.image`})),u){let e=s.video;if(typeof e!=`string`&&!Array.isArray(e))r.push(U(`error`,`INVALID_CONTENT_VIDEO`,`"video" in content item must be a string (file path) or an array of strings (frame list).`,{line:t,path:`${o}.video`}));else{if(Array.isArray(e))for(let n=0;n<e.length;n++)typeof e[n]!=`string`&&r.push(U(`error`,`INVALID_VIDEO_FRAME`,`Video frame list item at index ${n} must be a string.`,{line:t,path:`${o}.video[${n}]`}));r.push(...si(s,Array.isArray(e),t,o))}}}return r}function li(e,t,n){let r=[];if(!Array.isArray(e))return r.push(U(`error`,`INVALID_TOOL_CALLS`,`"tool_calls" must be an array.`,{line:t,path:n})),r;for(let i=0;i<e.length;i++){let a=e[i],o=`${n}[${i}]`;if(typeof a!=`object`||!a||Array.isArray(a)){r.push(U(`error`,`INVALID_TOOL_CALL`,`tool_calls item must be an object.`,{line:t,path:o}));continue}let s=a;(typeof s.id!=`string`||s.id.length===0)&&r.push(U(`error`,`TOOL_CALL_MISSING_ID`,`tool_calls item must have a non-empty "id".`,{line:t,path:`${o}.id`})),s.type!==`function`&&r.push(U(`warning`,`TOOL_CALL_TYPE_NOT_FUNCTION`,`tool_calls item "type" should be "function" (got "${String(s.type)}").`,{line:t,path:`${o}.type`}));let c=s.function;if(typeof c!=`object`||!c||Array.isArray(c))r.push(U(`error`,`TOOL_CALL_MISSING_FUNCTION`,`tool_calls item must have a "function" object.`,{line:t,path:`${o}.function`}));else{let e=c;(typeof e.name!=`string`||e.name.length===0)&&r.push(U(`error`,`TOOL_CALL_FN_NO_NAME`,`tool_calls function must have a "name".`,{line:t,path:`${o}.function.name`})),typeof e.arguments!=`string`&&r.push(U(`error`,`TOOL_CALL_FN_ARGS_NOT_STRING`,`tool_calls function "arguments" must be a JSON string.`,{line:t,path:`${o}.function.arguments`}))}}return r}function ui(e,t,n){let r=[];if(typeof e!=`object`||!e||Array.isArray(e))return r.push(U(`error`,`MESSAGE_NOT_OBJECT`,`Message must be an object.`,{line:t,path:n})),r;let i=e,a=i.role;return(typeof a!=`string`||!ai.has(a))&&r.push(U(`error`,`INVALID_ROLE`,`Invalid role "${String(a)}". Expected one of: system, user, assistant, tool.`,{line:t,path:`${n}.role`})),a===`tool`&&(typeof i.tool_call_id!=`string`||i.tool_call_id.length===0)&&r.push(U(`error`,`TOOL_MISSING_CALL_ID`,`A "tool" role message must have a non-empty "tool_call_id".`,{line:t,path:`${n}.tool_call_id`})),`content`in i?r.push(...ci(i.content,t,`${n}.content`)):(a!==`assistant`||!(`tool_calls`in i))&&r.push(U(`error`,`MISSING_CONTENT`,`"content" field is missing.`,{line:t,path:`${n}.content`})),`tool_calls`in i&&r.push(...li(i.tool_calls,t,`${n}.tool_calls`)),`name`in i&&r.push(U(`error`,`UNSUPPORTED_FIELD_NAME`,`Field "name" is not supported by Bailian and must be removed when migrating from OpenAI/Azure.`,{line:t,path:`${n}.name`})),`weight`in i&&r.push(U(`error`,`UNSUPPORTED_FIELD_WEIGHT`,`Field "weight" is not supported by Bailian and must be removed when migrating from OpenAI/Azure. All assistant outputs are trained; per-line importance uses "loss_weight" (invite-only).`,{line:t,path:`${n}.weight`})),r}function di(e,t){let n=[],r=e.messages;if(!Array.isArray(r))return n.push(U(`error`,`MISSING_MESSAGES`,`Required field "messages" is missing or not an array.`,{line:t,path:`messages`})),n;if(r.length===0)return n.push(U(`error`,`EMPTY_MESSAGES`,`"messages" must contain at least one entry.`,{line:t,path:`messages`})),n;let i=!1,a,o=-1,s=new Set,c=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(U(`warning`,`SYSTEM_NOT_FIRST`,`"system" message should appear at index 0; found at index ${e}.`,{line:t,path:`${u}.role`})),i=!0),f===`assistant`&&(o=e,d&&Array.isArray(d.tool_calls)))for(let e of d.tool_calls){let t=e;t&&typeof t.id==`string`&&s.add(t.id)}if(f===`tool`){let e=d?.tool_call_id;typeof e==`string`&&e.length>0&&c.add(e)}a===f&&(f===`user`||f===`assistant`)&&n.push(U(`warning`,`ROLE_NOT_ALTERNATING`,`Consecutive ${f} messages — user/assistant turns should typically alternate.`,{line:t,path:`${u}.role`})),typeof f==`string`&&(a=f)}r.some(e=>e.role===`user`)||n.push(U(`warning`,`NO_USER_ROLE`,`No "user" message found in this sample.`,{line:t,path:`messages`})),i&&r.length===1&&n.push(U(`warning`,`SYSTEM_ONLY`,`Sample only contains a "system" message.`,{line:t,path:`messages`}));for(let e of c)s.has(e)||n.push(U(`error`,`TOOL_CALL_ID_UNMATCHED`,`tool message references tool_call_id "${e}" which does not match any assistant tool_calls[].id.`,{line:t,path:`messages`}));for(let e of s)c.has(e)||n.push(U(`warning`,`TOOL_CALL_NO_RESPONSE`,`assistant tool_calls[].id "${e}" has no matching tool response message.`,{line:t,path:`messages`}));if(o>=0)for(let e=0;e<r.length;e++){if(e===o)continue;let i=r[e];if(i?.role!==`assistant`||i&&Array.isArray(i.tool_calls))continue;let a=i?.content;fi(a)&&n.push(U(`warning`,`THINK_TAG_NOT_LAST`,`Thinking tags (<think>…</think>) should only appear in the last assistant message (or an assistant message carrying tool_calls), found at messages[${e}].`,{line:t,path:`messages[${e}].content`}))}let l=(e,r)=>{(typeof e!=`number`||e<0||e>1)&&n.push(U(`error`,`INVALID_LOSS_WEIGHT`,`"loss_weight" must be a number between 0.0 and 1.0 (got ${JSON.stringify(e)}).`,{line:t,path:r}))};`loss_weight`in e&&l(e.loss_weight,`loss_weight`);for(let e=0;e<r.length;e++){let i=r[e];!i||!(`loss_weight`in i)||(l(i.loss_weight,`messages[${e}].loss_weight`),i.role===`assistant`&&e===o||n.push(U(`warning`,`LOSS_WEIGHT_PLACEMENT`,`"loss_weight" is only supported on the last assistant message; found at messages[${e}] (role "${String(i.role)}").`,{line:t,path:`messages[${e}].loss_weight`})))}return`weight`in e&&n.push(U(`error`,`UNSUPPORTED_FIELD_WEIGHT`,`Record-level field "weight" is not supported by Bailian and must be removed when migrating from OpenAI/Azure.`,{line:t,path:`weight`})),n}function fi(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 pi={name:`chatml`,detect:()=>!0,inspect:di};function mi(e,t){let n=[];if(!(`text`in e))return n.push(U(`error`,`MISSING_TEXT`,`Required field "text" is missing.`,{line:t,path:`text`})),n;let r=e.text;return typeof r==`string`?(r.trim().length===0&&n.push(U(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})),n):(n.push(U(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`})),n)}const hi={name:`cpt`,detect:e=>`text`in e&&!(`messages`in e),inspect:mi};function gi(e,t){let n=di(e,t),r=e.messages;if(!Array.isArray(r)||r.length===0)return n;let i=(e,n)=>{if(!Array.isArray(e))return[];let r=[];for(let i=0;i<e.length;i++){let a=e[i];if(!(!a||typeof a!=`object`))for(let e of[`image`,`video`])e in a&&r.push(U(`error`,`DPO_UNSUPPORTED_ELEMENT`,`DPO training data does not support ${e} inputs; found at ${n}.content[${i}].`,{line:t,path:`${n}.content[${i}].${e}`}))}return r};`tools`in e&&n.push(U(`error`,`DPO_UNSUPPORTED_ELEMENT`,`DPO training data does not support tool calling; remove the "tools" definition.`,{line:t,path:`tools`}));for(let e=0;e<r.length;e++){let a=r[e];if(!a)continue;let o=`messages[${e}]`;(a.role===`tool`||`tool_calls`in a)&&n.push(U(`error`,`DPO_UNSUPPORTED_ELEMENT`,`DPO training data does not support tool calling; found ${a.role===`tool`?`role "tool"`:`"tool_calls"`} at ${o}.`,{line:t,path:o})),n.push(...i(a.content,o))}let a=r[r.length-1];a&&a.role!==`user`&&n.push(U(`error`,`DPO_LAST_MSG_NOT_USER`,`DPO "messages" must end with a "user" message (the prompt for chosen/rejected). Got "${String(a.role)}" as the last message.`,{line:t,path:`messages[${r.length-1}].role`}));let o=`chosen`in e,s=`rejected`in e;if(o||n.push(U(`error`,`MISSING_CHOSEN`,`DPO record is missing the "chosen" preference.`,{line:t,path:`chosen`})),s||n.push(U(`error`,`MISSING_REJECTED`,`DPO record is missing the "rejected" preference.`,{line:t,path:`rejected`})),o){n.push(...ui(e.chosen,t,`chosen`)),n.push(...i(e.chosen?.content,`chosen`));let r=e.chosen?.role;typeof r==`string`&&r!==`assistant`&&n.push(U(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"chosen" role should be "assistant" (got "${r}").`,{line:t,path:`chosen.role`}))}if(s){n.push(...ui(e.rejected,t,`rejected`)),n.push(...i(e.rejected?.content,`rejected`));let r=e.rejected?.role;typeof r==`string`&&r!==`assistant`&&n.push(U(`warning`,`PREFERENCE_ROLE_NOT_ASSISTANT`,`"rejected" role should be "assistant" (got "${r}").`,{line:t,path:`rejected.role`}))}return n}const _i={name:`dpo`,detect:e=>`chosen`in e||`rejected`in e,inspect:gi};function vi(e,t){let n=[];if(!(`wav_fn`in e))n.push(U(`error`,`MISSING_WAV_FN`,`Required field "wav_fn" is missing.`,{line:t,path:`wav_fn`}));else{let r=e.wav_fn;if(typeof r!=`string`)n.push(U(`error`,`INVALID_WAV_FN`,`"wav_fn" must be a string (got ${typeof r}).`,{line:t,path:`wav_fn`}));else if(r.trim().length===0)n.push(U(`error`,`EMPTY_WAV_FN`,`"wav_fn" must not be empty.`,{line:t,path:`wav_fn`}));else{r.startsWith(`train/`)||n.push(U(`error`,`WAV_FN_PREFIX`,`"wav_fn" must start with "train/" (got "${r}").`,{line:t,path:`wav_fn`}));let e=r.lastIndexOf(`.`),i=e>=0?r.slice(e).toLowerCase():``;i!==`.wav`&&n.push(U(`error`,`INVALID_AUDIO_EXT`,`"wav_fn" must reference a .wav file (got "${i||`(none)`}"). CosyVoice training audio must be WAV.`,{line:t,path:`wav_fn`}))}}if(!(`text`in e))n.push(U(`error`,`MISSING_TEXT`,`Required field "text" is missing.`,{line:t,path:`text`}));else{let r=e.text;typeof r==`string`?r.trim().length===0&&n.push(U(`error`,`EMPTY_TEXT`,`"text" must not be empty / whitespace-only.`,{line:t,path:`text`})):n.push(U(`error`,`INVALID_TEXT`,`"text" must be a string (got ${typeof r}).`,{line:t,path:`text`}))}return n}const yi={name:`tts`,detect:e=>`wav_fn`in e,inspect:vi},bi=new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.tif`,`.tiff`,`.webp`]);function xi(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function Si(e){return/^[\x20-\x7E]+$/.test(e)}function Ci(e,t){let n=[];if(!(`prompt`in e))n.push(U(`error`,`MISSING_PROMPT`,`Required field "prompt" is missing.`,{line:t,path:`prompt`}));else{let r=e.prompt;typeof r==`string`?r.trim().length===0&&n.push(U(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(U(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}if(!(`img_path`in e))n.push(U(`error`,`MISSING_IMG_PATH`,`Required field "img_path" is missing.`,{line:t,path:`img_path`}));else{let r=e.img_path;if(typeof r!=`string`)n.push(U(`error`,`INVALID_IMG_PATH`,`"img_path" must be a string (got ${typeof r}).`,{line:t,path:`img_path`}));else if(r.trim().length===0)n.push(U(`error`,`EMPTY_IMG_PATH`,`"img_path" must not be empty.`,{line:t,path:`img_path`}));else{let e=xi(r);bi.has(e)||n.push(U(`warning`,`UNUSUAL_IMAGE_EXT`,`"img_path" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...bi].join(`, `)}.`,{line:t,path:`img_path`})),Si(r)||n.push(U(`error`,`NON_ASCII_IMG_PATH`,`"img_path" must contain only ASCII characters (English filenames required). Got: "${r}".`,{line:t,path:`img_path`}))}}if(`input_img`in e){let r=e.input_img;if(typeof r!=`string`)n.push(U(`error`,`INVALID_INPUT_IMG`,`"input_img" must be a string (got ${typeof r}).`,{line:t,path:`input_img`}));else if(r.trim().length===0)n.push(U(`error`,`EMPTY_INPUT_IMG`,`"input_img" must not be empty.`,{line:t,path:`input_img`}));else{let e=xi(r);bi.has(e)||n.push(U(`warning`,`UNUSUAL_INPUT_IMG_EXT`,`"input_img" points to a non-standard image extension "${e||`(none)`}". Expected one of: ${[...bi].join(`, `)}.`,{line:t,path:`input_img`})),Si(r)||n.push(U(`error`,`NON_ASCII_INPUT_IMG`,`"input_img" must contain only ASCII characters (English filenames required). Got: "${r}".`,{line:t,path:`input_img`}))}}return n}const wi={name:`image`,detect:e=>`img_path`in e,inspect:Ci},Ti=new Set([`.png`,`.jpg`,`.jpeg`,`.bmp`,`.webp`]),Ei=new Set([`.mp4`,`.mov`]);function Di(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function Oi(e){return/^[\x20-\x7E]+$/.test(e)}function ki(e,t,n,r,i,a){if(!(n in t)){r&&e.push(U(`error`,`MISSING_FIELD`,`Required field "${n}" is missing.`,{line:a,path:n}));return}let o=t[n];if(typeof o!=`string`){e.push(U(`error`,`INVALID_FIELD`,`"${n}" must be a string (got ${typeof o}).`,{line:a,path:n}));return}if(o.trim().length===0){e.push(U(`error`,`EMPTY_FIELD`,`"${n}" must not be empty.`,{line:a,path:n}));return}let s=Di(o);i.has(s)||e.push(U(`warning`,`UNUSUAL_MEDIA_EXT`,`"${n}" points to a non-standard extension "${s||`(none)`}". Expected one of: ${[...i].join(`, `)}.`,{line:a,path:n})),Oi(o)||e.push(U(`error`,`NON_ASCII_PATH`,`"${n}" must contain only ASCII characters (English filenames required). Got: "${o}".`,{line:a,path:n}))}function Ai(e,t){let n=[];if(!(`prompt`in e))n.push(U(`error`,`MISSING_PROMPT`,`Required field "prompt" is missing.`,{line:t,path:`prompt`}));else{let r=e.prompt;typeof r==`string`?r.trim().length===0&&n.push(U(`error`,`EMPTY_PROMPT`,`"prompt" must not be empty / whitespace-only.`,{line:t,path:`prompt`})):n.push(U(`error`,`INVALID_PROMPT`,`"prompt" must be a string (got ${typeof r}).`,{line:t,path:`prompt`}))}return ki(n,e,`first_frame_path`,!0,Ti,t),ki(n,e,`last_frame_path`,!1,Ti,t),ki(n,e,`video_path`,!1,Ei,t),n}const ji=[yi,wi,{name:`video`,detect:e=>`first_frame_path`in e||`video_path`in e,inspect:Ai},_i,hi,pi];function Mi(e,t){return t===void 0?ji.find(t=>t.detect(e))??pi:ji.find(e=>e.name===t)||pi}async function Ni(e,t){let r=x({input:n(e,{encoding:`utf8`}),crlfDelay:1/0}),i=[],a=0,o=0;for await(let e of r){if(t?.aborted)break;a++;let n=e.trim();if(n.length===0){o++;continue}i.length>=20||(n[0]!==`{`||n[n.length-1]!==`}`)&&i.push(U(`error`,`MALFORMED_LINE`,`Line does not start with '{' and end with '}'. JSONL requires one minified JSON object per line — pretty-printed JSON or arrays are not accepted here.`,{line:a}))}return{totalLines:a,blankLines:o,issues:i}}async function Pi(e,t,r,i,a){let o=r?null:new Set(ii(t)),s=[],c=0,l=x({input:n(e,{encoding:`utf8`}),crlfDelay:1/0}),u=0;for await(let e of l){if(a?.aborted)break;if(u++,o&&!o.has(u))continue;let t=e.trim();if(t.length===0||(c++,s.length>=30))continue;let n;try{n=JSON.parse(t)}catch(e){s.push(U(`error`,`MALFORMED_JSON`,`JSON.parse failed: ${e.message}`,{line:u}));continue}s.push(...Fi(n,u,i))}return{sampled:c,issues:s}}function Fi(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return[U(`error`,`RECORD_NOT_OBJECT`,`Each line must be a JSON object, got ${Array.isArray(e)?`array`:typeof e}.`,{line:t})];let r=e;return Mi(r,n).inspect(r,t)}const Ii={format:`jsonl`,extensions:[`.jsonl`],async validate(e,t){let n=Date.now(),r=await Ni(e,t.signal);if(r.totalLines===0||r.totalLines===r.blankLines)return{valid:!1,format:`jsonl`,filePath:e,errors:[U(`error`,`EMPTY_FILE`,`File contains no non-blank lines.`)],warnings:[],stats:{totalRecords:0,sampledRecords:0,durationMs:Date.now()-n}};if(r.issues.length>0)return{valid:!1,format:`jsonl`,filePath:e,errors:r.issues,warnings:[],stats:{totalRecords:r.totalLines-r.blankLines,sampledRecords:0,durationMs:Date.now()-n}};let i=await Pi(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 Li(e,t){return new Promise((n,r)=>{S.open(e,{lazyEntries:!0},(e,i)=>{if(e||!i){r(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(Error(`Entry "${t}" not found in ZIP`))}),i.on(`error`,r)})})}function Ri(e){return new Promise((t,n)=>{S.open(e,{lazyEntries:!0},(e,r)=>{if(e||!r){n(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 zi=/^[a-zA-Z0-9_-]+$/;function Bi(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function Vi(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 Hi(e){let t=[],n=new Map;for(let r of e){if(r.endsWith(`/`)||Vi(r))continue;let e=r.split(`/`).filter(e=>e.length>0);for(let n of e){let e=Bi(n),i=n.slice(e.length);e.length>0&&!zi.test(e)&&t.length<10&&t.push(U(`error`,`INVALID_FILENAME_CHARSET`,`File/folder name "${n}" contains invalid characters. Only a-z, A-Z, 0-9, underscore (_), and hyphen (-) are allowed.`,{path:r})),i.length>0&&!/^\.[a-zA-Z0-9]+$/.test(i)&&t.length<10&&t.push(U(`error`,`INVALID_FILENAME_CHARSET`,`File extension "${i}" in "${n}" contains invalid characters.`,{path:r}))}let i=e[e.length-1]??``,a=Bi(i);if(a.length>120&&t.length<10&&t.push(U(`error`,`FILENAME_TOO_LONG`,`Filename "${i}" (without extension) exceeds 120 characters (got ${a.length}). Shorten the name and re-upload.`,{path:r})),a.length>0){let e=n.get(a);e===void 0?n.set(a,r):t.length<10&&t.push(U(`error`,`DUPLICATE_FILENAME`,`Filename "${i}" conflicts with "${e}" — names must be globally unique (ignoring extension) even across different folders.`,{path:r}))}}return t.length>=10&&t.push(U(`warning`,`FILENAME_ISSUES_TRUNCATED`,`More filename issues exist but reporting is capped at 10.`)),t}async function Ui(e,t,n){let{entry:i,zipfile:a}=await Li(e,t);return new Promise((e,t)=>{a.openReadStream(i,(i,o)=>{if(i||!o){a.close(),t(i??Error(`Failed to open entry stream`));return}re(o,r(n)).then(()=>{a.close(),e()}).catch(e=>{a.close(),t(e)})})})}async function Wi(e,t=100){let r=x({input:n(e,{encoding:`utf8`}),crlfDelay:1/0}),i=[],a=0;for await(let e of r){if(a++,i.length>=t)continue;let n=e.trim();if(n.length!==0)try{let e=JSON.parse(n);typeof e.wav_fn==`string`&&i.push(e.wav_fn),typeof e.img_path==`string`&&i.push(e.img_path),typeof e.input_img==`string`&&i.push(e.input_img),typeof e.first_frame_path==`string`&&i.push(e.first_frame_path),typeof e.last_frame_path==`string`&&i.push(e.last_frame_path),typeof e.video_path==`string`&&i.push(e.video_path),typeof e.image_fn==`string`&&i.push(e.image_fn),typeof e.video_fn==`string`&&i.push(e.video_fn)}catch{}}return{refs:i,totalLines:a}}const Gi={format:`zip`,extensions:[`.zip`],async validate(e,t){let n=Date.now(),r=[],i=[],o;try{o=await Ri(e)}catch(t){return{valid:!1,format:`zip`,filePath:e,errors:[U(`error`,`ZIP_OPEN_FAILED`,`Could not open ZIP archive: ${t.message}`)],warnings:[],stats:{durationMs:Date.now()-n}}}if(o.length===0)return{valid:!1,format:`zip`,filePath:e,errors:[U(`error`,`ZIP_EMPTY`,`ZIP archive contains no entries.`)],warnings:[],stats:{durationMs:Date.now()-n}};let s=o.some(e=>e===`data.jsonl`),l=!s&&o.find(e=>e.endsWith(`/data.jsonl`));s||(l?r.push(U(`error`,`DATA_JSONL_NOT_AT_ROOT`,`"data.jsonl" must be at the ZIP root (found "${l}"). Re-package so that opening the ZIP shows data.jsonl directly, without a wrapping folder.`)):r.push(U(`error`,`MISSING_DATA_JSONL`,`ZIP archive must contain "data.jsonl" at the root. This file maps media files (e.g. .wav, .jpg) to their labels.`)));let u=Hi(o);for(let e of u)e.severity===`error`?r.push(e):i.push(e);let d=t.schema===`image`,f=t.schema===`video`,m=o.some(e=>e===`train/`||e.startsWith(`train/`)),h=o.some(e=>e.toLowerCase().endsWith(`.wav`));if(!m&&!d&&!f&&h&&i.push(U(`warning`,`NO_TRAIN_DIR`,`No "train/" directory found in the ZIP. Media files are typically placed under "train/" and referenced as "train/xxx.wav" in data.jsonl.`)),d){let e=o.filter(e=>{if(e===`data.jsonl`||e.endsWith(`/data.jsonl`)||e.endsWith(`/`)||Vi(e))return!1;let t=e.lastIndexOf(`.`),n=t>=0?e.slice(t).toLowerCase():``;return bi.has(n)});e.length<25&&r.push(U(`error`,`INSUFFICIENT_IMAGES`,`Found ${e.length} image(s) in ZIP, but image generation fine-tuning requires at least 25 images (50+ recommended).`))}if(!s&&!l)return{valid:!1,format:`zip`,filePath:e,errors:r,warnings:i,stats:{totalRecords:o.length,durationMs:Date.now()-n}};let _=s?`data.jsonl`:o.find(e=>e.endsWith(`/data.jsonl`)),v=g(p(),`bl-zip-${ee(6).toString(`hex`)}`);a(v,{recursive:!0});let y=g(v,`data.jsonl`);try{await Ui(e,_,y)}catch(t){return r.push(U(`error`,`EXTRACT_FAILED`,`Failed to extract "data.jsonl" from ZIP: ${t.message}`)),c(v,{recursive:!0,force:!0}),{valid:!1,format:`zip`,filePath:e,errors:r,warnings:i,stats:{durationMs:Date.now()-n}}}let b=await Ii.validate(y,t);if(r.push(...b.errors),i.push(...b.warnings),b.valid){let{refs:e}=await Wi(y),t=new Set(o),n=_.lastIndexOf(`/`),i=n>=0?_.slice(0,n+1):``,a=[];for(let n of e){let e=n.replace(/^\.\//,``);t.has(e)||t.has(i+e)||a.push(n)}if(a.length>0){let e=a.slice(0,5).join(`, `),t=a.length>5?` (and ${a.length-5} more)`:``;r.push(U(`error`,`DANGLING_MEDIA_REFS`,`${a.length} media file(s) referenced in data.jsonl not found in ZIP: ${e}${t}`))}}return c(v,{recursive:!0,force:!0}),{valid:r.length===0,format:`zip`,filePath:e,errors:r,warnings:i,stats:{totalRecords:b.stats.totalRecords??o.length,sampledRecords:b.stats.sampledRecords,durationMs:Date.now()-n}}}};async function Ki(e){let t=h(e).toLowerCase();if(t===`.jsonl`)return qi(e);if(t===`.zip`)return Ji(e);throw new P(`Cannot inspect file with extension "${t}". Expected .jsonl or .zip.`,N.USAGE)}async function qi(e){let t=await Xi(e);if(!t)throw new P(`JSONL file is empty or contains only blank lines: ${e}`,N.USAGE);let n=Yi(t);return n===`unknown`?`text`:n}async function Ji(e){let t=await Zi(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=Yi(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 Yi(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 Xi(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 Zi(e,t){return Li(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 Qi=[Ii,Gi];function $i(e){let t=h(e).toLowerCase(),n=Qi.find(e=>e.extensions.includes(t));if(!n){let e=Qi.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 ea(e){Qi.some(t=>t.format===e.format)||Qi.push(e)}async function W(e,t={}){let{bytes:n}=ni(e,t.maxBytes??209715200),r=await $i(e).validate(e,t);return r.stats.bytes===void 0&&(r.stats.bytes=n),r}function ta(){return Qi.map(e=>({format:e.format,extensions:[...e.extensions]}))}function na(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 ra(e,t,n){return e.requestJson({path:Hn(),method:`POST`,body:t,signal:n})}async function ia(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=Hn(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function aa(e,t,n){return e.requestJson({path:Un(t),method:`GET`,signal:n})}async function oa(e,t,n){return e.requestJson({path:Wn(t),method:`POST`,signal:n})}async function sa(e,t,n){return e.requestJson({path:Un(t),method:`DELETE`,signal:n})}async function ca(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=Gn(t),a=r.toString()?`${i}?${r.toString()}`:i;return e.requestJson({path:a,method:`GET`,signal:n.signal})}async function la(e,t,n){return e.requestJson({path:Kn(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:`${qn(t,n)}?${a.toString()}`,method:`GET`,signal:i})}const da={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`}},fa=Object.keys(da),pa=`sft-lora`;function ma(e){return e in da}function ha(e){let{method:t,variant:n}=da[e];return{method:t,variant:n}}function ga(e,t){if(!e)return!1;let{method:n,variant:r}=da[t];if(e.supports?.[n]!==!0)return!1;let i=e.trainingTypes?.[n];return Array.isArray(i)&&i.includes(r)}function _a(e){return e?fa.filter(t=>ga(e,t)):[]}async function va(e,t){return await Br(on(e),t)}const ya=`INSUFFICIENT_SAMPLES`;function ba(e){let{recordCount:t,batchSize:n}=e;return t>n?{ok:!0}:{ok:!1,issue:{severity:`error`,code:ya,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 xa(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 Sa(e,t,n){return{clientTrainingType:e,serverTrainingType:t,acceptedExtensions:[`.jsonl`],async validate(e,t,r){return W(e,{...r,schema:n})},resolveHyperParameters(e,t){return xa(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}}const Ca=Sa(`sft`,`sft`,`chatml`),wa={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},Ta={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},Ea={...Ta,max_pixels:`1k`,val_img_size:`1k`,generation_type:`i2i`},Da={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 Oa(e){return e===`image`||e===`image-i2i`}function ka(e){return e===`video`||e===`video-kf2v`}function Aa(e){return typeof e==`string`&&/wan2\.5/i.test(e)}function ja(e){return typeof e==`string`&&/wan2\.7/i.test(e)}const Ma=[Ca,{clientTrainingType:`sft-lora`,serverTrainingType:`efficient_sft`,acceptedExtensions:[`.jsonl`,`.zip`],async validate(e,t,n){if(t===`audio`)return W(e,{...n,schema:`tts`});if(Oa(t))return W(e,{...n,schema:`image`,maxBytes:ti});if(ka(t)){let r=await W(e,{...n,schema:`video`,maxBytes:ti});if(typeof n.model==`string`&&n.model.length>0){let e=/kf2v/i.test(n.model),i=t===`video-kf2v`;e&&!i?r.errors.push(U(`error`,`KF2V_DATA_MISMATCH`,`Model "${n.model}" is a first+last-frame (kf2v) model but the data has no "last_frame_path". kf2v training data must include a last frame per record.`)):!e&&i&&r.warnings.push(U(`warning`,`I2V_LAST_FRAME_IGNORED`,`Model "${n.model}" is a first-frame (i2v) model but the data includes "last_frame_path"; the last frame will be ignored during training.`))}return r.valid=r.errors.length===0,r}return W(e,{...n,schema:`chatml`})},resolveHyperParameters(e,t){if(e===`audio`)return{...wa};if(Oa(e)){let n={...e===`image-i2i`?Ea:Ta};return t.learningRate!==void 0&&(n.learning_rate=t.learningRate),n}if(ka(e)){let e=t.model??t.baseModel,n={...Da,batch_size:ja(e)?1:4,max_pixels:ja(e)?102400:Aa(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 xa(t)},shouldSkipGate(e,t){return!!((t===`audio`||Oa(t)||ka(t))&&e===`batch_size`)},shouldSkipCapabilityCheck(e){return e===`audio`||Oa(e)||ka(e)}},Sa(`dpo`,`dpo_full`,`dpo`),Sa(`dpo-lora`,`dpo_lora`,`dpo`),{clientTrainingType:`cpt`,serverTrainingType:`cpt`,acceptedExtensions:[`.jsonl`],async validate(e,t,n){return W(e,{...n,schema:`cpt`,maxBytes:ei})},resolveHyperParameters(e,t){return xa(t)},shouldSkipGate(e,t){return!1},shouldSkipCapabilityCheck(e){return!1}}];function Na(e){let t=Ma.find(t=>t.clientTrainingType===e);if(!t){let t=Ma.map(e=>e.clientTrainingType).join(`, `);throw new P(`Unknown training type "${e}".`,N.USAGE,`Supported training types: ${t}.`)}return t}function Pa(){return Ma.map(e=>e.clientTrainingType)}const Fa=`zeldaEasy.broadscope-platform.modelCenter.getModelPrice`,Ia=`zeldaEasy.broadscope-platform.modelInstance.calculateDatasetsTotalTokens`,La=`zeldaEasy.broadscope-platform.modelInstance.estimateFinetuneTokens`;async function Ra(e,t){return H(await e.console(Fa,{query:{type:0,modelId:t}}))}async function za(e,t,n){return H(await e.console(Ia,{input:{trainDatasetIds:t,hyperParams:n}}))}async function Ba(e,t,n,r){let i=JSON.stringify({useDefault:!1,userDefinedObj:{batch_size:16,eval_steps:50,learning_rate:`7e-6`,lr_scheduler_type:`linear`,max_length:8192,n_epochs:r,split:.9,save_total_limit:`3`,resume_from_checkpoint:!1,save_strategy:`epoch`},useQwenMixedStrategy:!1});return H(await e.console(La,{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 Va(e,t,n){return e.requestJson({path:Jn(),method:`POST`,body:t,signal:n})}async function Ha(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=Jn(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Ua(e,t,n){return e.requestJson({path:Yn(t),method:`GET`,signal:n})}async function Wa(e,t,n){return e.requestJson({path:Yn(t),method:`DELETE`,signal:n})}async function Ga(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=Qn(),i=n.toString()?`${r}?${n.toString()}`:r;return e.requestJson({path:i,method:`GET`,signal:t.signal})}async function Ka(e,t,n,r){return e.requestJson({path:Xn(t),method:`PUT`,body:n,signal:r})}async function qa(e,t,n,r){return e.requestJson({path:Zn(t),method:`PUT`,body:n,signal:r})}const G={LORA:`lora`,PTU:`ptu`,MU:`mu`},Ja=G.LORA;function Ya(e){return e===`audio`?G.MU:Ja}const Xa={POST_PAY:`POST_PAY`,PRE_PAY:`PRE_PAY`},Za=Xa.POST_PAY,Qa={POST_PAID:`post_paid`,PRE_PAID:`pre_paid`},$a={name:G.LORA,validateFlags(){},async resolve(){return{body:{capacity:1}}}},eo={name:G.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}}}},to={name:G.MU,validateFlags(){},async resolve(e){let t=e.flags.billingMethod||Za,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 Ga(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===G.MU)?.templates??[];if(o.length===0)throw i();let s=t===Xa.POST_PAY?Qa.POST_PAID:Qa.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}}},no={[G.LORA]:$a,[G.PTU]:eo,[G.MU]:to};function ro(e){let t=no[e];if(!t)throw new P(`Unsupported plan "${e}". Supported plans: ${Object.keys(no).join(`, `)}.`,N.USAGE);return t}const io=`zeldaEasy.broadscope-platform.modelInstance.startModelService`,ao=`zeldaEasy.broadscope-platform.modelInstance.stopModelService`,oo=`zeldaEasy.broadscope-platform.modelInstance.listIndependentDeployedModel`;async function so(e,t){return H(await e.console(io,{input:{modelServiceId:t}}))}async function co(e,t){return H(await e.console(ao,{input:{modelServiceId:t}}))}async function lo(e){let t=[],n=1;for(;;){let r=H(await e.console(oo,{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 uo(e,t){return e.find(e=>e.modelServiceId===t||e.deployedModel===t||e.deployed_model===t)}const fo={output:{type:`string`,valueHint:`<format>`,description:`Output format: text, json`},timeout:{type:`number`,valueHint:`<seconds>`,description:`Request timeout`},quiet:{type:`switch`,description:`Suppress non-essential output`},verbose:{type:`switch`,description:`Print HTTP request/response details`},dryRun:{type:`switch`,description:`Dry run mode`},config:{type:`string`,valueHint:`<name>`,description:`Use a config profile for this command`},help:{type:`switch`,description:`Show help`},version:{type:`switch`,description:`Print version`}},po={concurrent:{type:`number`,valueHint:`<n>`,description:`Run N parallel requests (default: 1)`}},mo={async:{type:`switch`,description:`Return async task id without waiting`}},ho={apiKey:{type:`string`,valueHint:`<key>`,description:`API key`},baseUrl:{type:`string`,valueHint:`<url>`,description:`API base URL`}},go={consoleRegion:{type:`string`,valueHint:`<region>`,description:`Console gateway region (e.g. cn-beijing, ap-southeast-1)`},consoleSite:{type:`string`,valueHint:`<site>`,description:`Console site: domestic, international`},consoleSwitchAgent:{type:`number`,valueHint:`<uid>`,description:`Switch agent UID for delegated access`},workspaceId:{type:`string`,valueHint:`<id>`,description:`Workspace ID (env: BAILIAN_WORKSPACE_ID)`}},_o={accessKeyId:{type:`string`,valueHint:`<key>`,description:`Alibaba Cloud Access Key ID (env: ALIBABA_CLOUD_ACCESS_KEY_ID)`},accessKeySecret:{type:`string`,valueHint:`<key>`,description:`Alibaba Cloud Access Key Secret (env: ALIBABA_CLOUD_ACCESS_KEY_SECRET)`},securityToken:{type:`string`,valueHint:`<token>`,description:`Alibaba Cloud STS Security Token (env: ALIBABA_CLOUD_SECURITY_TOKEN)`}};function vo(e){return e.auth===`apiKey`?ho:e.auth===`console`?go:e.auth===`openapi`?_o:{}}function yo(e){return e}const bo=1;function xo(e,t){return e.normalize(`NFKC`).replace(/[\\/:*?"<>|]/g,`_`).replace(/\s+/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``)||t}function So(e,t){return`${xo(e||`image`,`image`)}_${xo((t||``).substring(0,20),`untitled`)}_${Date.now()}`}const Co=()=>g(f(),`bailian-output`);function wo(e,t){let n=t?.flagDir||e.outputDir||Co(),r=t?.subDir?g(n,t.subDir):n;return i(r)||a(r,{recursive:!0}),r}function To(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}function Eo(e){return o(e===`-`?0:e,`utf-8`)}async function Do(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 Oo(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 ko(e,t=`boolean`){if(e!=null)return Oo(e,t)}function Ao(e,t,n=`boolean`){let r=ko(e,n);return r===void 0?t:r}function jo(e){return ko(e,`watermark`)??!0}function Mo(e){let t={command:e.command,timestamp: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.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 No(e){if(e==null)return;let t=typeof e==`string`?e:JSON.stringify(e);return t.length<=500?t:t.slice(0,500)}function Po(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=No(e.errorMessage)),e.requestId&&(i.c5=e.requestId),i}let K;function Fo(){return K||(process.env.NODE_ENV===`development`?(K=`dev`,K):process.env.BAILIAN_COMPILED===`1`?(K=`prod`,K):(K=import.meta.url.includes(`/node_modules/`)?`prod`:`dev`,K))}var Io=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`},O=(e,t)=>{t.appName=`YisouSpider`,t.appVersion=e.value,t.deviceBrand=`Alibaba`,t.deviceType=`bot`,t.platform=`other`},k=(e,t)=>{t.appName=`ByteSpider`,t.appVersion=e.value,t.deviceBrand=`ByteDance`,t.deviceType=`bot`,t.platform=`other`},se=(e,t)=>{t.appName=`HeadlineCrawler`,t.appVersion=e.value,t.deviceBrand=`Headline.com`,t.deviceType=`bot`,t.platform=`other`},ce=(e,t)=>{t.appName=`BitDiscoveryBot`,t.appVersion=e.value,t.deviceBrand=`Tenable`,t.deviceType=`bot`,t.platform=`other`},A=(e,t)=>{e.getPreviousNTokens(4)===`Screaming Frog SEO Spider`&&(t.deviceBrand=`Screaming Frog`,t.appName=`Screaming Frog`),t.appVersion=e.value,t.deviceType=`bot`},le=(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=new Map,M=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`,O),M.set(`Bytespider`,k),M.set(`ev-crawler`,se),M.set(`bitdiscovery`,ce),M.set(`Spider`,A),M.set(`Ai2Bot-Dolma`,le),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=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: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||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
|
+
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 O,k,se=(O=process.version,{os:i.a.type(),os_version:i.a.release(),app_name:`node`,app_version:O,device_id:re.a.createHash(`md5`).update(oe()).digest(`hex`),platform:`node`}),ce=(0,ne.promisify)(te.a.resolve);function A(e){this._offlineQueue=[],e.endpoint=e.endpoint||`gm.mmstat.com`,b.call(this,ae(ae({},se),e)),this._config.endpoint_url=`https://${this._config.endpoint}/aes.1.1`}A.prototype=((k=function(){}).prototype=b.prototype,new k),A.prototype.constructor=A,A.prototype.send=function(e){var t,n=this;return(t=this._config.endpoint,ce(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=A}]).default})),Lo=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})),Ro=De(Io(),1),zo=De(Lo(),1);const Bo=()=>g(F(),`telemetry.jsonl`);let Vo;const Ho=new Set;let Uo;try{let e=new Ro.default({pid:`bailian-cli-node`,env:Fo()}),t=e.send.bind(e);e.send=function(e){let n=t(e);if(n&&typeof n.then==`function`){let e=n;Ho.add(e),e.finally(()=>Ho.delete(e))}return n},Uo=e,Vo=e.use(zo.default)}catch{}async function Wo(e=1e3){try{if(Uo)try{typeof Uo._sendAll==`function`&&Uo._sendAll()}catch{}if(Ho.size===0)return;let t=[...Ho].map(e=>e.catch(()=>void 0));await Promise.race([Promise.allSettled(t),new Promise(t=>setTimeout(t,e).unref?.())])}catch{}}async function Go(e){try{await Ze();let n=Bo();try{l(n).size>5242880&&u(n)}catch{}t(n,JSON.stringify(e)+`
|
|
16
|
+
`,{mode:384})}catch{}}async function Ko(e){try{if(!Vo)return;Vo(e.command,Po(e))}catch{}}const qo=new Set([`apiKey`,`baseUrl`,`output`,`quiet`,`verbose`,`timeout`,`dryRun`,`help`,`console`]),Jo=new Set(`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 Yo(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith(`_`)||qo.has(n)||Jo.has(n)&&(r===void 0||r===!1||(t[n]=r));return t}async function Xo(e,t,n,r){if(!e.settings.telemetry){await r();return}let i=performance.now(),a=!0,o,s,c;try{await r()}catch(e){throw a=!1,e instanceof P?(o=e.message,s=e.api?.httpStatus,c=e.api?.requestId):e instanceof Error&&(o=e.message),e}finally{let r=Math.round(performance.now()-i),l=Mo({command:t.join(` `),durationMs:r,success:a,error:a?void 0:{message:o,httpStatus:s,requestId:c},cliVersion:e.identity.version,authMethod:e.authMethod,params:Yo(n)});Go(l).catch(()=>{}),Ko(l).catch(()=>{})}}function Zo(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 Qo=class{name=`api`;constructor(e){this.settings=e}available(){return!0}async load(){return(await zr(on(this.settings))).map(Zo).filter(e=>e!==null)}};function $o(){return j(F(),`skills/bailian-docs-llm-wiki`)}function es(){return j($o(),`models`,`models.jsonl`)}function ts(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 ns(e){let t=E(e,`utf-8`).split(`
|
|
17
|
+
`).filter(Boolean),n=[];for(let e of t)try{let t=ts(JSON.parse(e));t&&n.push(t)}catch{}return n}var rs=class{name=`catalog`;constructor(e){}available(){return C(es())}async load(){return this.available()?ns(es()):[]}};async function is(e,t){let n=[new rs({onPrepareStart:t?.onPrepareStart}),new Qo(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 as={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`},q={Single:`single`,Pipeline:`pipeline`},os={Low:`low`,Medium:`medium`,High:`high`},ss={Standard:`standard`,Large:`large`,ExtraLarge:`extra-large`},J={Flagship:`flagship`,Balanced:`balanced`,CostOptimized:`cost-optimized`},Y={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`},cs={FunctionCalling:`function-calling`,WebSearch:`web-search`,StructuredOutputs:`structured-outputs`,PrefixCompletion:`prefix-completion`},X={Flagship:`Flagship`,CostOptimized:`Cost-optimized`},ls=20,us=/-\d{4}-\d{2}-\d{2}$/,ds=new Set([Y.IG,Y.VG,Y.TTS,Y.RealtimeTTS,Y.ThreeDGeneration]),fs=new Set([Y.TG,Y.Reasoning,Y.ASR,Y.RealtimeASR,Y.RealtimeAudioTranslate,Y.TR,Y.ME]),ps={standard:0,large:32e3,"extra-large":128e3},ms=.4,hs=.6,gs=.4,_s=.2,vs=.2,ys=.2;console.assert(Math.abs(ms+hs-1)<1e-9,`FUSION_HARD_WEIGHT + FUSION_SOFT_WEIGHT must sum to 1`),console.assert(Math.abs(gs+_s+vs+ys-1)<1e-9,`HARD_WEIGHT_* sub-weights must sum to 1`);const bs=`You are a model recommendation advisor for Alibaba Cloud Model Studio. From the candidate models below, select the best recommendations.
|
|
18
18
|
|
|
19
19
|
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
20
|
|
|
@@ -55,7 +55,7 @@ Single task:
|
|
|
55
55
|
{"type":"single","recommendations":[{"model":"model ID","reason":"recommendation reason","highlights":["key highlights"]}]}
|
|
56
56
|
|
|
57
57
|
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"]}]}]}`,
|
|
58
|
+
{"type":"pipeline","summary":"one-line solution description","steps":[{"step":"step description","recommendations":[{"model":"model ID","reason":"reason for choosing","highlights":["highlights"]}]}]}`,xs=`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
59
|
|
|
60
60
|
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
61
|
|
|
@@ -94,7 +94,7 @@ Key principles:
|
|
|
94
94
|
|
|
95
95
|
Or (if single model suffices):
|
|
96
96
|
{"type":"single","recommendations":[{"model":"model ID","reason":"recommendation reason","highlights":
|
|
97
|
-
["key highlights"]}]}`,
|
|
97
|
+
["key highlights"]}]}`,Ss={complexity:q.Single,taskSummary:``,scenarioHints:[],semanticQuery:``,inputModality:[],outputModality:[],requiredCapabilities:[Y.TG],requiredFeatures:[],budget:os.Medium,contextNeed:ss.Standard,qualityPreference:J.Balanced,confidence:0},Cs=[`unconstrained`,`scoped`,`comparison`,`alternative`];function ws(e){if(!e||typeof e!=`object`)return;let t=typeof e.mode==`string`&&Cs.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 Ts(e,t){let n=hn(),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
98
|
|
|
99
99
|
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
100
|
|
|
@@ -141,9 +141,9 @@ Analyze whether the user mentioned specific models, model families, or vendors:
|
|
|
141
141
|
- 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
142
|
- modelPreference: { mode, targets?, excludes? }
|
|
143
143
|
|
|
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{...Wo}}let a=(i.choices?.[0]?.message?.content??``).match(/\{[\s\S]*\}/);if(!a)return{...Wo};let o=JSON.parse(a[0]),s=o.modelPreference,c=Ko(s);return{complexity:o.complexity===K.Pipeline?K.Pipeline:K.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??Wo.budget,contextNeed:o.contextNeed??Wo.contextNeed,qualityPreference:o.qualityPreference??Wo.qualityPreference,confidence:1,modelPreference:c}}function Jo(e){let t=!1,n=!1;for(let r of e)No.has(r)&&(t=!0),Po.has(r)&&(n=!0);return t&&n}function Yo(e){let t=new Set(e.map(({model:e})=>e));return e.filter(({model:e})=>{let n=e.replace(Mo,``);return n===e?!0:!t.has(n)})}function Xo(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 Zo(e,t){if(t.length===0)return!0;let n=e.inferenceMetadata?.request_modality??[];return t.some(e=>n.includes(e))}function Qo(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=Fo[i];return d>0&&(c??0)>=d&&(u+=8),a===q.Flagship&&l===Y.Flagship||a===q.CostOptimized&&l===Y.CostOptimized?u+=15:a===q.Balanced&&l===Y.Flagship&&(u+=5),u}function $o(e,t,n){return e.map(e=>({model:e,score:Qo(e,t)})).sort((e,t)=>t.score-e.score).slice(0,n)}function es(e){return new Set(e.map(({model:e})=>e.model))}function ts(e,t){let n=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 ns(e,t){let n=new Set(t);return e.filter(e=>n.has(e.model.model)?!1:(n.add(e.model.model),!0))}function rs(e,t,n){return n.size>=10?[]:$o(e.filter(({model:e})=>!n.has(e)),t,10-n.size)}function is(e,t,n,r,i){let{inputModality:a,outputModality:o,requiredCapabilities:s}=t,c={complexity:K.Single,taskSummary:``,scenarioHints:[],semanticQuery:``,inputModality:a,outputModality:o,requiredCapabilities:s,requiredFeatures:[],budget:r,contextNeed:ko.Standard,qualityPreference:i,confidence:1},l=e.filter(e=>Xo(e,a,o)&&Zo(e,n));return l.length<5&&(l=e.filter(e=>Xo(e,a,o))),l.length<5&&(l=e),$o(l,c,5)}function as(e,t){e=Yo(e);let n;if(t.complexity===K.Pipeline&&t.segments?.length){let r=[];for(let[n,i]of t.segments.entries()){let a=n===0?[]:t.segments[n-1].outputModality,o=ns(is(e,i,a,t.budget,t.qualityPreference),es(r));r=[...r,...o]}let i=rs(e,t,es(r));n=[...r,...i]}else if(Jo(t.requiredCapabilities))n=os(e,t);else{let r=e.filter(e=>Xo(e,t.inputModality,t.outputModality));r.length<5&&(r=e),n=$o(r,t,50)}return ts(n,3)}function os(e,t){let n=t.requiredCapabilities.filter(e=>No.has(e)),r=t.requiredCapabilities.filter(e=>Po.has(e)),i=[];if(n.length>0&&(i=$o(e.filter(e=>n.some(t=>e.capabilities.includes(t))),t,25)),r.length>0){let n=es(i),a={...t,requiredCapabilities:r},o=e.filter(e=>!n.has(e.model)&&r.some(t=>e.capabilities.includes(t)));i=[...i,...$o(o,a,25)]}let a=rs(e,t,es(i));return[...i,...a]}const ss=`text-embedding-v4`;function cs(){return A(P(),`skills/bailian-docs-llm-wiki`)}function ls(){return A(cs(),`models-embeddings.json`)}function us(){let e=ls();if(!x(e))return null;try{return JSON.parse(w(e,`utf-8`)).items}catch{return null}}async function ds(e,t){let n={model:ss,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 fs(e,t){let n={model:ss,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 ps={TG:`Text Generation`,Reasoning:`Reasoning`,VU:`Vision Understanding`,IG:`Image Generation`,VG:`Video Generation`,TTS:`Text-to-Speech`,ASR:`Speech-to-Text`},ms={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`};function hs(){let e=A(cs(),`groups`),t=new Map;if(!x(e))return t;for(let n of T(e).filter(e=>e.endsWith(`.json`)))try{let r=JSON.parse(w(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 gs(e,t){let n=(e.capabilities??[]).map(e=>ps[e]??e).join(`, `),r=t.get(e.model)||e.shortDescription||e.description||``,i=(e.inferenceMetadata?.request_modality??[]).map(e=>ms[e]??e).join(`, `),a=(e.inferenceMetadata?.response_modality??[]).map(e=>ms[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 _s(e,t){let n=hs(),r=t.map(e=>gs(e,n)),i=[];for(let t=0;t<r.length;t+=10){let n=await fs(e,r.slice(t,t+10));i.push(...n)}let a=t.map((e,t)=>({id:e.model,vector:i[t]})),o={model:ss,dimensions:512,count:a.length,items:a},s=ls();return C(k(s),{recursive:!0}),O(s,JSON.stringify(o)),a}function vs(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 ys=null;function bs(){return ys===null&&(ys=us()),ys}function xs(){return bs()!==null}function Ss(e){return(e??``).toLowerCase().replace(Mo,``).replace(/[\s_-]+/g,``).trim()}function Cs(e,t){let n=Ss(t);if(!n)return!1;if(Ss(e.model)===n||Ss(e.name)===n)return!0;let r=e.model,i=r.lastIndexOf(`/`);return i>=0&&Ss(r.slice(i+1))===n?!0:[e.family,e.familyName].some(e=>{if(!e)return!1;let t=Ss(e);return t.length>0&&n.includes(t)})}function ws(e,t){return t.some(t=>Cs(e,t))}function Ts(e,t){return t.length===0?[]:e.filter(e=>ws(e,t))}function Es(e,t){return t.length===0?e:e.filter(({model:e})=>!ws(e,t))}function Ds(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 Os(e,t){return Ds(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function ks(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=Fo[i]??0;if(l>0){let t=e.contextWindow??0;c=t>=l?1:t/l}let u=1;return a===q.Flagship?u=e.category===Y.Flagship?1:.5:a===q.CostOptimized&&(u=e.category===Y.CostOptimized?1:.5),Ro*o+zo*s+Bo*c+Vo*u}function As(e,t){if(!t)return new Set(e.map(e=>e.model));let n=e.filter(e=>Os(e,t)),r=n.length>=5?n:e;return new Set(r.map(e=>e.model))}function js(e,t){return Ds(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function Ms(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=vs(t,e.vector),o=a?ks(n,a):0;return[{model:n,score:a?Io*o+Lo*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 Ns(e){return{model:e,score:1,hardScore:1,softScore:1}}function Ps(e,t,n,r,i,a,o){let s=r.targets??[],c=s.length>0?Ts(e,s):e,l=[];if(c.length<5&&s.length>0){for(let e of c)l.push(Ns(e));let r=new Set(l.map(({model:e})=>e.model)),s=Ms(t,n,As(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 Ms(t,n,As(c,o),i,a,o)}function Fs(e,t,n,r,i,a,o){let s=r.targets??[],c=[],l=new Set;for(let t of e)ws(t,s)&&!l.has(t.model)&&(c.push(Ns(t)),l.add(t.model));return c}function Is(e,t,n,r,i,a,o){let s=Ts(e,r.targets??[]),c=new Set(s.map(e=>e.family).filter(Boolean)),l=[],u=new Set;for(let e of s)l.push(Ns(e)),u.add(e.model);let d=Math.max(0,i-l.length);if(d>0){let r=Ms(t,n,As(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 Ls(e,t,n,r,i){let a=bs();if(!a)a=await _s(e,t),ys=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 _s(e,t),ys=a)}let o=await ds(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=Ps(t,a,o,c,r,s,i);break;case`comparison`:e=Fs(t,a,o,c,r,s,i);break;case`alternative`:e=Is(t,a,o,c,r,s,i);break;default:e=[]}return Es(e,l)}if(i?.complexity===K.Pipeline&&i.segments?.length){let e=new Set,n=[],c=Math.max(5,Math.ceil(r/i.segments.length));for(let r of i.segments){let l=t.filter(e=>js(e,r)),u=new Set(l.filter(t=>!e.has(t.model)).map(e=>e.model));if(u.size===0)continue;let d=Ms(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 Es(n,l)}let u=As(t,i);return Es(Ms(a,o,u,r,s,i),l)}function Rs(e){if(e.prices?.length)return e.prices.map(e=>`${e.type}:${e.price}/${e.unit}`).join(`, `)}function zs(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=Rs(e);return r&&t.push(`Pricing: ${r}`),e.family&&t.push(`Family: ${e.family}`),t.join(` | `)}).join(`
|
|
145
|
-
`)}function
|
|
146
|
-
`)}function
|
|
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{...Ss}}let a=(i.choices?.[0]?.message?.content??``).match(/\{[\s\S]*\}/);if(!a)return{...Ss};let o=JSON.parse(a[0]),s=o.modelPreference,c=ws(s);return{complexity:o.complexity===q.Pipeline?q.Pipeline:q.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??Ss.budget,contextNeed:o.contextNeed??Ss.contextNeed,qualityPreference:o.qualityPreference??Ss.qualityPreference,confidence:1,modelPreference:c}}function Es(e){let t=!1,n=!1;for(let r of e)ds.has(r)&&(t=!0),fs.has(r)&&(n=!0);return t&&n}function Ds(e){let t=new Set(e.map(({model:e})=>e));return e.filter(({model:e})=>{let n=e.replace(us,``);return n===e?!0:!t.has(n)})}function Os(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 ks(e,t){if(t.length===0)return!0;let n=e.inferenceMetadata?.request_modality??[];return t.some(e=>n.includes(e))}function As(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=ps[i];return d>0&&(c??0)>=d&&(u+=8),a===J.Flagship&&l===X.Flagship||a===J.CostOptimized&&l===X.CostOptimized?u+=15:a===J.Balanced&&l===X.Flagship&&(u+=5),u}function js(e,t,n){return e.map(e=>({model:e,score:As(e,t)})).sort((e,t)=>t.score-e.score).slice(0,n)}function Ms(e){return new Set(e.map(({model:e})=>e.model))}function Ns(e,t){let n=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 Ps(e,t){let n=new Set(t);return e.filter(e=>n.has(e.model.model)?!1:(n.add(e.model.model),!0))}function Fs(e,t,n){return n.size>=10?[]:js(e.filter(({model:e})=>!n.has(e)),t,10-n.size)}function Is(e,t,n,r,i){let{inputModality:a,outputModality:o,requiredCapabilities:s}=t,c={complexity:q.Single,taskSummary:``,scenarioHints:[],semanticQuery:``,inputModality:a,outputModality:o,requiredCapabilities:s,requiredFeatures:[],budget:r,contextNeed:ss.Standard,qualityPreference:i,confidence:1},l=e.filter(e=>Os(e,a,o)&&ks(e,n));return l.length<5&&(l=e.filter(e=>Os(e,a,o))),l.length<5&&(l=e),js(l,c,5)}function Ls(e,t){e=Ds(e);let n;if(t.complexity===q.Pipeline&&t.segments?.length){let r=[];for(let[n,i]of t.segments.entries()){let a=n===0?[]:t.segments[n-1].outputModality,o=Ps(Is(e,i,a,t.budget,t.qualityPreference),Ms(r));r=[...r,...o]}let i=Fs(e,t,Ms(r));n=[...r,...i]}else if(Es(t.requiredCapabilities))n=Rs(e,t);else{let r=e.filter(e=>Os(e,t.inputModality,t.outputModality));r.length<5&&(r=e),n=js(r,t,50)}return Ns(n,3)}function Rs(e,t){let n=t.requiredCapabilities.filter(e=>ds.has(e)),r=t.requiredCapabilities.filter(e=>fs.has(e)),i=[];if(n.length>0&&(i=js(e.filter(e=>n.some(t=>e.capabilities.includes(t))),t,25)),r.length>0){let n=Ms(i),a={...t,requiredCapabilities:r},o=e.filter(e=>!n.has(e.model)&&r.some(t=>e.capabilities.includes(t)));i=[...i,...js(o,a,25)]}let a=Fs(e,t,Ms(i));return[...i,...a]}const zs=`text-embedding-v4`;function Bs(){return j(F(),`skills/bailian-docs-llm-wiki`)}function Vs(){return j(Bs(),`models-embeddings.json`)}function Hs(){let e=Vs();if(!C(e))return null;try{return JSON.parse(E(e,`utf-8`)).items}catch{return null}}async function Us(e,t){let n={model:zs,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 Ws(e,t){let n={model:zs,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 Gs={TG:`Text Generation`,Reasoning:`Reasoning`,VU:`Vision Understanding`,IG:`Image Generation`,VG:`Video Generation`,TTS:`Text-to-Speech`,ASR:`Speech-to-Text`},Ks={Text:`Text`,Image:`Image`,Video:`Video`,Audio:`Audio`};function qs(){let e=j(Bs(),`groups`),t=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 Js(e,t){let n=(e.capabilities??[]).map(e=>Gs[e]??e).join(`, `),r=t.get(e.model)||e.shortDescription||e.description||``,i=(e.inferenceMetadata?.request_modality??[]).map(e=>Ks[e]??e).join(`, `),a=(e.inferenceMetadata?.response_modality??[]).map(e=>Ks[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 Ys(e,t){let n=qs(),r=t.map(e=>Js(e,n)),i=[];for(let t=0;t<r.length;t+=10){let n=await Ws(e,r.slice(t,t+10));i.push(...n)}let a=t.map((e,t)=>({id:e.model,vector:i[t]})),o={model:zs,dimensions:512,count:a.length,items:a},s=Vs();return T(le(s),{recursive:!0}),A(s,JSON.stringify(o)),a}function Xs(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 Zs=null;function Qs(){return Zs===null&&(Zs=Hs()),Zs}function $s(){return Qs()!==null}function ec(e){return(e??``).toLowerCase().replace(us,``).replace(/[\s_-]+/g,``).trim()}function tc(e,t){let n=ec(t);if(!n)return!1;if(ec(e.model)===n||ec(e.name)===n)return!0;let r=e.model,i=r.lastIndexOf(`/`);return i>=0&&ec(r.slice(i+1))===n?!0:[e.family,e.familyName].some(e=>{if(!e)return!1;let t=ec(e);return t.length>0&&n.includes(t)})}function nc(e,t){return t.some(t=>tc(e,t))}function rc(e,t){return t.length===0?[]:e.filter(e=>nc(e,t))}function ic(e,t){return t.length===0?e:e.filter(({model:e})=>!nc(e,t))}function ac(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 oc(e,t){return ac(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function sc(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=ps[i]??0;if(l>0){let t=e.contextWindow??0;c=t>=l?1:t/l}let u=1;return a===J.Flagship?u=e.category===X.Flagship?1:.5:a===J.CostOptimized&&(u=e.category===X.CostOptimized?1:.5),gs*o+_s*s+vs*c+ys*u}function cc(e,t){if(!t)return new Set(e.map(e=>e.model));let n=e.filter(e=>oc(e,t)),r=n.length>=5?n:e;return new Set(r.map(e=>e.model))}function lc(e,t){return ac(e,t.inputModality,t.outputModality,t.requiredCapabilities)}function uc(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=Xs(t,e.vector),o=a?sc(n,a):0;return[{model:n,score:a?ms*o+hs*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 dc(e){return{model:e,score:1,hardScore:1,softScore:1}}function fc(e,t,n,r,i,a,o){let s=r.targets??[],c=s.length>0?rc(e,s):e,l=[];if(c.length<5&&s.length>0){for(let e of c)l.push(dc(e));let r=new Set(l.map(({model:e})=>e.model)),s=uc(t,n,cc(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 uc(t,n,cc(c,o),i,a,o)}function pc(e,t,n,r,i,a,o){let s=r.targets??[],c=[],l=new Set;for(let t of e)nc(t,s)&&!l.has(t.model)&&(c.push(dc(t)),l.add(t.model));return c}function mc(e,t,n,r,i,a,o){let s=rc(e,r.targets??[]),c=new Set(s.map(e=>e.family).filter(Boolean)),l=[],u=new Set;for(let e of s)l.push(dc(e)),u.add(e.model);let d=Math.max(0,i-l.length);if(d>0){let r=uc(t,n,cc(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 hc(e,t,n,r,i){let a=Qs();if(!a)a=await Ys(e,t),Zs=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 Ys(e,t),Zs=a)}let o=await Us(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=fc(t,a,o,c,r,s,i);break;case`comparison`:e=pc(t,a,o,c,r,s,i);break;case`alternative`:e=mc(t,a,o,c,r,s,i);break;default:e=[]}return ic(e,l)}if(i?.complexity===q.Pipeline&&i.segments?.length){let e=new Set,n=[],c=Math.max(5,Math.ceil(r/i.segments.length));for(let r of i.segments){let l=t.filter(e=>lc(e,r)),u=new Set(l.filter(t=>!e.has(t.model)).map(e=>e.model));if(u.size===0)continue;let d=uc(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 ic(n,l)}let u=cc(t,i);return ic(uc(a,o,u,r,s,i),l)}function gc(e){if(e.prices?.length)return e.prices.map(e=>`${e.type}:${e.price}/${e.unit}`).join(`, `)}function _c(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=gc(e);return r&&t.push(`Pricing: ${r}`),e.family&&t.push(`Family: ${e.family}`),t.join(` | `)}).join(`
|
|
145
|
+
`)}function vc(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!==ss.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 yc(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 bc(e,t,n){let r=Array.isArray(e)?e:[],i=[],a=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 xc(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 Sc(e,t,n,r,i,a){let o=_c(t),s=vc(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
147
|
|
|
148
148
|
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
149
|
|
|
@@ -185,6 +185,6 @@ The intent's modelPreference.targets is the reference model.
|
|
|
185
185
|
- Output strict JSON
|
|
186
186
|
|
|
187
187
|
## 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===
|
|
189
|
-
`)}function Ys(e,t){let n=qs();n.skills[e]={...n.skills[e],...t},Js(n)}function Xs(){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=>x(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`),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-cn`,`Trae CN`,`.trae-cn`),r(`windsurf`,`Windsurf`,`.codeium/windsurf`),{id:`zcode`,displayName:`ZCode`,skillsDir:A(e,`.zcode`,`skills`),detectDirs:[A(e,`.zcode`),`/Applications/ZCode.app`]},r(`zencoder`,`Zencoder`,`.zencoder`)]}function Z(){return Xs().filter(e=>e.detectDirs.some(e=>x(e)))}function Zs(e,t){return process.platform===`win32`?e.toLowerCase()===t.toLowerCase():e===t}function Qs(e){let t=X();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 $s(e){try{if(!S(e).isSymbolicLink())return!1;let t=ce(e);return Qs(de(t)?t:j(k(e),t))}catch{return!1}}function ec(e,t){if(!t.some(t=>Zs(t,e)))return!1;try{return S(e).isDirectory()}catch{return!1}}const tc=`existing file/dir not managed by bl skill`;function nc(e,t=Z(),n=[]){let r=A(X(),e),i=[];for(let a of t){let t=A(a.skillsDir,e);try{let e=!1;try{S(t),e=!0}catch{}if(e)if($s(t))D(t);else if(ec(t,n))D(t,{recursive:!0,force:!0});else{i.push({agent:a.id,path:t,mode:`skipped`,reason:tc});continue}C(a.skillsDir,{recursive:!0});try{ue(r,t,process.platform===`win32`?`junction`:`dir`),i.push({agent:a.id,path:t,mode:`symlink`})}catch{oe(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 rc(e,t=Z(),n=[]){let r=nc(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===tc).map(e=>e.path),s=n.filter(e=>!a.some(t=>Zs(t,e))&&!o.some(t=>Zs(t,e)));return{results:r,linkedAgents:i.map(e=>e.agent),links:[...a,...s]}}function ic(e,t=[]){let n=[],r=new Set(t);for(let t of Xs())r.add(A(t.skillsDir,e));for(let e of r)try{let r;try{r=S(e)}catch{continue}r.isSymbolicLink()?$s(e)&&(D(e),n.push(e)):t.some(t=>Zs(t,e))&&(D(e,{recursive:!0,force:!0}),n.push(e))}catch{}return n}function ac(e){return e.includes(`\\`)||e.includes(`\0`)||e.startsWith(`/`)||/^[a-zA-Z]:[\\/]/.test(e)?!1:!e.split(`/`).includes(`..`)}async function oc(e,t){let n=ve.extract();n.on(`entry`,(e,r,i)=>{if(!ac(e.name)){r.on(`error`,()=>{}),r.resume(),n.destroy(Error(`unsafe tar entry: ${e.name}`));return}let a=A(t,e.name);if(e.type===`directory`){C(a,{recursive:!0}),r.resume(),r.on(`end`,i);return}C(k(a),{recursive:!0});let o=se(a);r.pipe(o),o.on(`finish`,i),o.on(`error`,i)}),await ge(he.from(e),_e(),n)}function sc(e){let t=[],n=r=>{for(let i of T(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(w(A(e,n)));return`sha256:${r.digest(`hex`)}`}function cc(e,t){C(k(t),{recursive:!0});let n=`${t}.old-${Date.now()}`;x(t)&&E(t,n);try{E(e,t)}catch(e){throw x(n)&&!x(t)&&E(n,t),e}x(n)&&D(n,{recursive:!0,force:!0})}function lc(){return(process.env.BAILIAN_SKILL_REGISTRY_URL?.trim()||`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/skills`).replace(/\/+$/,``)}async function uc(e=1e4){let t=`${lc()}/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}const dc=/^sha256-[0-9a-f]{64}\.tar\.br$/;function fc(e){let t=e?.object;return t&&dc.test(t)?t:`skill.tar.br`}async function pc(e,t){let n=`${lc()}/${e}/${fc(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())}function mc(e){return e.replace(/[\\/:*?"<>|\s]+/g,`-`).replace(/\.\.+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`unnamed-skill`}function hc(e){return e.length>0&&mc(e)===e}function Q(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 gc(e){if(!e.startsWith(`---`))return null;let t=/^---\r?\n([\s\S]*?)\r?\n---(\r?\n|$)/.exec(e);return t?t[1]:null}function _c(e,t){let n=A(e,`SKILL.md`),r;try{le(n).isFile()||Q(t,`SKILL.md is not a regular file`),r=w(n,`utf-8`)}catch(e){if(e instanceof N)throw e;Q(t,`missing SKILL.md`)}let i=gc(r);i===null&&Q(t,`SKILL.md is missing frontmatter (--- delimited YAML header)`);let a;try{a=_(i)}catch{Q(t,`frontmatter is not valid YAML`)}(typeof a!=`object`||!a)&&Q(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)&&Q(t,`frontmatter is missing non-empty name / description fields`),{name:s,description:c}}function vc(e){if(!hc(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 yc(e,t,n){vc(e);let r=X(),i=A(r,e),a=A(r,`.tmp-${e}-${process.pid}-${Date.now()}`);try{if(C(a,{recursive:!0}),await oc(t,a),n?.startsWith(`sha256:`)){let t=sc(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=_c(a,e);return cc(a,i),{name:e,path:i,meta:r}}finally{x(a)&&D(a,{recursive:!0,force:!0})}}async function bc(e,t){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 yc(e,await pc(e,t),t.contentHash)}function xc(e){vc(e);let t=A(X(),e);return x(t)?(D(t,{recursive:!0,force:!0}),!0):!1}function Sc(e,t){return{...e.contentHash?{contentHash:e.contentHash}:{},...e.publishedAt?{publishedAt:e.publishedAt}:{},installedAt:new Date().toISOString(),sourceType:`oss`,...e.description?{description:e.description}:{},links:t}}async function Cc(e,t,n=Z(),r=[]){await bc(e,t);let i=rc(e,n,r);return{lockEntry:Sc(t,i.links),linkedAgents:i.linkedAgents}}const $=`bailian-docs-llm-wiki`;function wc(){return A(P(),`skills/bailian-docs-llm-wiki`)}function Tc(){return x(A(wc(),`models`,`models.jsonl`))}function Ec(){return A(P(),`wiki-sync-state.json`)}function Dc(){try{return JSON.parse(w(Ec(),`utf-8`))}catch{return null}}function Oc(e){try{O(Ec(),JSON.stringify(e))}catch{}}function kc(e){try{Ys($,e)}catch{}}function Ac(e){try{let t=qs().skills[$];return t?.contentHash!==e||!Array.isArray(t.links)}catch{return!0}}async function jc(){try{return(await uc(3e3)).skills[$]??null}catch{return null}}async function Mc(){let e=Dc(),t=Date.now();if(e&&t-e.lastChecked<432e5&&Tc())return!1;let n=await jc();if(!n?.contentHash)return!1;if(Tc()&&(!e||e.contentHash===n.contentHash)){if(Oc({lastChecked:t,contentHash:n.contentHash}),Ac(n.contentHash)){let e=qs().skills[$]?.links??[];kc(Sc(n,rc($,Z(),e).links))}return!1}try{let e=qs().skills[$]?.links??[];kc((await Cc($,n,Z(),e)).lockEntry)}catch{return!1}return Oc({lastChecked:t,contentHash:n.contentHash}),!0}const Nc=`bailian-cli`,Pc=`install-method`,Fc=new Set([`binary`,`npm`,`brew`,`winget`,`unknown`]);function Ic(e){return e?A(P(),`${Pc}.${e}`):A(P(),Pc)}function Lc(){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 Rc(e){if(!e)return null;let t=e.trim().toLowerCase();return Fc.has(t)?t:null}function zc(e){try{return Rc(w(e,`utf-8`).split(`
|
|
190
|
-
`)[0])}catch{return null}}function Bc(){let e=Rc(process.env.BAILIAN_INSTALL_METHOD);if(e)return e;if(Lc()){let e=process.execPath.replaceAll(`\\`,`/`);return e.includes(`/Cellar/`)||e.includes(`/homebrew/`)?`brew`:`binary`}return`npm`}function Vc(e){let t=Rc(process.env.BAILIAN_INSTALL_METHOD);if(t)return t;if(e?.clientName){let t=zc(Ic(e.clientName));if(t)return t;if(e.clientName===`bailian-cli`){let e=zc(Ic());if(e)return e}return Bc()}return zc(Ic())||Bc()}function Hc(e){let t=Vc(e);return t===`binary`&&e.npmPackage!==`bailian-cli`?`npm`:t}function Uc(e,t={clientName:Nc}){try{let n=P();x(n)||C(n,{recursive:!0,mode:448}),O(Ic(t.clientName),`${e}\n`,{mode:384}),t.clientName===`bailian-cli`&&O(Ic(),`${e}\n`,{mode:384})}catch{}}const Wc=`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/release`,Gc=`https://github.com/modelstudioai/cli/releases`,Kc=`https://bailian.aliyun.com/cli/install.sh`,qc=`https://bailian.aliyun.com/cli/install.ps1`;function Jc(){let e=process.env.BAILIAN_CLI_CDN?.trim();return e?e.replace(/\/$/,``):Wc}function Yc(e=`latest`){let t=e.trim();return!t||t===`latest`||t===`stable`?`${Jc()}/manifest.json`:`${Jc()}/${t}.json`}function Xc(e,t){let n=e.startsWith(`v`)?e:`v${e}`;return`${Jc()}/${n}/${t}`}function Zc(){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 Qc(e,t,n,r=!1){return`bl-${e}-${t}-${n}.zip`}function $c(e,t,n,r=!1){return`bl-${e}-${t}-${n}${r?`.exe`:``}`}function el(e){return new Promise((t,n)=>{b.open(e,{lazyEntries:!0},(r,i)=>{if(r||!i){n(r??Error(`Failed to open zip: ${e}`));return}t(i)})})}function tl(e){let t=e.replace(/\\/g,`/`);return t.includes(`/`)?t.slice(t.lastIndexOf(`/`)+1):t}async function nl(e,t,n){let r=await el(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(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=tl(i);if(!(!n||i===n||a===n)){r.readEntry();return}r.openReadStream(e,(n,r)=>{if(n||!r){s(n??Error(`Failed to read zip entry: ${e.fileName}`));return}(async()=>{try{await ye(k(t),{recursive:!0}),await ge(r,se(t)),c(a)}catch(e){s(e)}})()})}),r.readEntry()})}function rl(e,t){let n=(e??(t?`all`:``)).trim();if(!n)throw new Ae(`--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 Ae(`--name all cannot be mixed with specific skill names`,`Use either all or a comma-separated list of names`);return`all`}return r}function il(){let e=X();return x(e)?T(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 al(e,t,n){let r=new Set(n),i=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{Fa as ASYNC_FLAG,Le as BAILIAN_HOST,Ta as BILLING_METHOD,Nc as BINARY_PRODUCT_CLIENT_NAME,N as BailianError,Oo as Budgets,bt as CHANNEL,Da as CHARGE_TYPE,Va as COMMAND_PACK_API_VERSION,Pa as CONCURRENT_FLAG,Re as CONFIG_FILE_KEYS,La as CONSOLE_AUTH_FLAGS,J as Capabilities,sn as Client,K as Complexities,ko as ContextNeeds,Ea as DEFAULT_BILLING_METHOD,Wc as DEFAULT_CLI_CDN_BASE,Ca as DEFAULT_DEPLOY_PLAN,qc as DEFAULT_INSTALL_PS1_URL,Kc as DEFAULT_INSTALL_SCRIPT_URL,Yi as DEFAULT_TRAINING_TYPE,W as DEPLOY_PLAN,Ie as DOCS_HOSTS,M as ExitCode,Ao as Features,Gc as GITHUB_RELEASES_BASE,Na as GLOBAL_FLAGS,ta as INSUFFICIENT_SAMPLES_CODE,Gr as MAX_DATASET_BYTES,Kr as MAX_MEDIA_ZIP_BYTES,Ia as MODEL_AUTH_FLAGS,kr as MODEL_LIST_API,en as McpClient,Do as Modalities,Y as ModelCategories,Ra as OPENAPI_AUTH_FLAGS,Ar as PREDICT_CONFIG_API,q as QualityPreferences,Fe as REGIONS,jo as SEMANTIC_TOP_K,ja as STRATEGIES,Ji as TRAINING_TYPES_CLI,qi as TRAINING_TYPE_MAP,Ae as UsageError,pt as activateConfigProfile,qo as analyzeIntent,xn as appCompletionPath,cc as atomicSwap,Yt as bailianMcpPath,Xt as bailianMcpSsePath,Qc as binaryAssetFileName,$c as binaryInnerFileName,Et as buildAcsCanonicalQuery,_r as buildAsrFlashRequest,gr as buildAsyncAsrLanguageFields,Vs as buildDocLink,gt as buildSettings,Sc as buildSkillLockEntry,ht as buildSources,on as callConsoleGateway,Hi as cancelFineTune,Yc as channelManifestUrl,pn as chatPath,yr as collectAsrTranscriptionItems,sc as computeDirContentHash,al as computeSkillStatuses,$t as connectBailianMcpWithFallback,Er as createBailianControlUser,ga as createDeployment,zi as createFineTune,Sr as createInstrumentedFetch,$a as createTrackingEvent,za as credentialFlagDefs,wa as defaultDeployPlan,Ba as defineCommand,mt as deleteConfigProfile,Wr as deleteDataset,ya as deleteDeployment,Ui as deleteFineTune,Xe as describeAuthState,Zc as detectBinaryPlatform,Bc as detectInstallMethod,Z as detectInstalledAgents,Oi as detectModality,nt as detectOutputFormat,pc as downloadSkillAsset,rn as effectiveConsoleGatewayConfig,Ks as emptySkillLock,Qe as ensureConfigDir,Ki as exportCheckpoint,vr as extractAsrFlashText,oc as extractTarBr,nl as extractZipEntryToFile,rc as fanOutSkillToAgents,ea as fetchModelCapability,Pr as fetchModelDetail,Nr as fetchModelGroups,Mr as fetchModelList,Lr as fetchPredictConfig,uc as fetchSkillsIndex,fo as flushTelemetry,tt as formatErrorJson,Ri as formatIssue,et as formatJson,rt as formatOutput,$e as formatText,dn as generateCLIAccessToken,Ua as generateFilename,Xs as getAgentTargets,Jc as getCliCdnBase,P as getConfigDir,F as getConfigPath,Ze as getCredentialsPath,Ur as getDataset,va as getDeployment,Vi as getFineTune,Wi as getFineTuneLogs,Vc as getInstallMethod,Br as getModelProfilePreset,Eo as getModels,ma as getProfile,Gs as getSkillLockPath,lc as getSkillRegistryBaseUrl,X as getSkillsDir,Hc as getUpdateInstallMethod,vn as image2ImagePath,Ft as imageFileToDataUri,hn as imagePath,gn as imageSyncPath,_n as imageText2ImagePath,hr as inferAudioFormatHint,bc as installSkill,yc as installSkillFromBuffer,Cc as installSkillWithFanout,Lc as isCompiledBinary,nr as isLegacyImage2ImageModel,tr as isLegacyText2ImageModel,Rt as isLocalFile,ac as isSafeEntryName,hc as isSafeSkillName,xs as isSemanticAvailable,Zt as isStreamableHttpUnsupported,Zn as isSyncMultimodalImageModel,Xi as isTrainingTypeCli,Qt as isUrlOverrideSseFallbackCandidate,rr as isWanxFunctionImageEditModel,Mn as knowledgeChatEndpoint,An as knowledgeRetrievePath,jn as knowledgeSearchEndpoint,nc as linkSkillToAgents,Dr as listBailianControlWorkspaces,Gi as listCheckpoints,Hr as listDatasets,ba as listDeployableModels,_a as listDeployments,Bi as listFineTunes,il as listSkillDirsOnDisk,Li as listSupportedFormats,$i as listSupportedTrainingTypes,ha as listTrainingTypes,po as localSink,vt as makeAuthStore,Rr as makeConfigStore,Me as mapApiError,yt as maskToken,Mc as maybeSyncWikiData,Nn as mcpWebSearchPath,Sn as memoryAddPath,wn as memoryListPath,Tn as memoryNodePath,Cn as memorySearchPath,Qi as modelSupportsTrainingType,ot as normalizeConfigName,Ne as normalizeModelBaseUrl,Ya as parseBooleanValue,He as parseConfigFile,Jr as parseDatasetSchemaFlag,Xa as parseOptionalBooleanValue,Ut as parseSSE,rl as parseSkillNames,Ma as pickPlanStrategy,Fi as pickValidator,na as preflightBatchSizeGate,On as profileSchemaPath,Ws as rankModels,R as readConfigFile,ut as readConfigProfiles,qs as readSkillLock,qa as readTextFromPathOrStdin,as as recallCandidates,Ls as recallSemantic,It as redactDataUri,fn as refreshAccessToken,Ii as registerValidator,Xc as releaseAssetUrl,mo as remoteSink,xc as removeSkillDir,Ct as request,Tt as requestJson,Or as resetBailianControlPolicies4Agent,We as resolveApiKey,mr as resolveAsrApi,fc as resolveAssetFileName,Za as resolveBooleanFlag,Ge as resolveConsole,zt as resolveFileUrl,sr as resolveImageEditApi,or as resolveImageGenerateApi,ir as resolveImageSizeProfile,Ue as resolveModelBaseUrl,Ke as resolveOpenApi,Ga as resolveOutputDir,ar as resolvePromptExtendDefault,Qa as resolveWatermark,mn as responsesPath,Ja as runWithConcurrency,mc as sanitizeSkillName,xa as scaleDeployment,Dt as signAcsRequest,xt as sourceConfig,Dn as speechRecognizePath,En as speechSynthesizePath,Ka as stripUndefined,bn as taskPath,vo as trackCommandExecution,B as trackingHeaders,Zi as trainingTypeMethodVariant,ic as unlinkSkillFromAgents,jr as unwrapResponse,Sa as updateDeployment,Vr as uploadDataset,Lt as uploadFile,Ys as upsertSkillLockEntry,kn as userProfilePath,ft as validateConfigProfileActivation,U as validateDataset,_c as validateSkillDir,yn as videoGeneratePath,z as writeConfigFile,Uc as writeInstallMethodSync,Js as writeSkillLock};
|
|
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===q.Pipeline?xs:bs)+e}else l=n.complexity===q.Pipeline?xs:bs;let u=a?.enableThinking??!1,d=n.complexity===q.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=hn(),m;if(u){let t=await e.request({path:p,method:`POST`,body:f,stream:!0}),n=``,r=!1;for await(let e of Wt(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:q.Single,recommendations:[]}}let g=new Map(t.map(({model:e})=>[e.model,e]));if(h.type===q.Pipeline&&Array.isArray(h.steps)){let e=[];for(let t of h.steps){let n=bc(t.recommendations??(t.model?[t]:[]),g,i);n.length>0&&e.push({step:t.step??``,recommendations:n})}return xc(e,g),{type:q.Pipeline,summary:h.summary??``,steps:e}}let _=bc(h.recommendations??h??[],g,i);return{type:q.Single,recommendations:_}}function Z(){return j(F(),`skills`)}function Cc(){return j(Z(),`skill-lock.json`)}function wc(){return{version:1,skills:{}}}function Tc(){let e=Cc();if(!C(e))return wc();try{let t=JSON.parse(E(e,`utf-8`));return t?.version!==1||typeof t.skills!=`object`||t.skills===null?wc():t}catch{return wc()}}function Ec(e){T(Z(),{recursive:!0}),A(Cc(),JSON.stringify(e,null,2)+`
|
|
189
|
+
`)}function Dc(e,t){let n=Tc();n.skills[e]={...n.skills[e],...t},Ec(n)}function Oc(){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`),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-cn`,`Trae CN`,`.trae-cn`),r(`windsurf`,`Windsurf`,`.codeium/windsurf`),{id:`zcode`,displayName:`ZCode`,skillsDir:j(e,`.zcode`,`skills`),detectDirs:[j(e,`.zcode`),`/Applications/ZCode.app`]},r(`zencoder`,`Zencoder`,`.zencoder`)]}function Q(){return Oc().filter(e=>e.detectDirs.some(e=>C(e)))}function kc(e,t){return process.platform===`win32`?e.toLowerCase()===t.toLowerCase():e===t}function Ac(e){let t=Z();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 jc(e){try{if(!w(e).isSymbolicLink())return!1;let t=oe(e);return Ac(ue(t)?t:M(le(e),t))}catch{return!1}}function Mc(e,t){if(!t.some(t=>kc(t,e)))return!1;try{return w(e).isDirectory()}catch{return!1}}function Nc(e){try{return w(e).isDirectory()?C(j(e,`SKILL.md`)):!1}catch{return!1}}const Pc=`existing file/dir not managed by bl skill`;function Fc(e,t=Q(),n=[]){let r=j(Z(),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(jc(t))k(t);else if(Mc(t,n))k(t,{recursive:!0,force:!0});else if(Nc(t))k(t,{recursive:!0,force:!0});else{i.push({agent:a.id,path:t,mode:`skipped`,reason:Pc});continue}T(a.skillsDir,{recursive:!0});try{ce(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 Ic(e,t=Q(),n=[]){let r=Fc(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===Pc).map(e=>e.path),s=n.filter(e=>!a.some(t=>kc(t,e))&&!o.some(t=>kc(t,e)));return{results:r,linkedAgents:i.map(e=>e.agent),links:[...a,...s]}}function Lc(e,t=[]){let n=[],r=new Set(t);for(let t of Oc())r.add(j(t.skillsDir,e));for(let e of r)try{let r;try{r=w(e)}catch{continue}r.isSymbolicLink()?jc(e)&&(k(e),n.push(e)):t.some(t=>kc(t,e))&&(k(e,{recursive:!0,force:!0}),n.push(e))}catch{}return n}function Rc(e){return e.includes(`\\`)||e.includes(`\0`)||e.startsWith(`/`)||/^[a-zA-Z]:[\\/]/.test(e)?!1:!e.split(`/`).includes(`..`)}async function zc(e,t){let n=_e.extract();n.on(`entry`,(e,r,i)=>{if(!Rc(e.name)){r.on(`error`,()=>{}),r.resume(),n.destroy(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(le(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 Bc(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 Vc(e,t){T(le(t),{recursive:!0});let n=`${t}.old-${Date.now()}`;C(t)&&O(t,n);try{O(e,t)}catch(e){throw C(n)&&!C(t)&&O(n,t),e}C(n)&&k(n,{recursive:!0,force:!0})}function Hc(){return(process.env.BAILIAN_SKILL_REGISTRY_URL?.trim()||`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/skills`).replace(/\/+$/,``)}async function Uc(e=1e4){let t=`${Hc()}/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}const Wc=/^sha256-[0-9a-f]{64}\.tar\.br$/;function Gc(e){let t=e?.object;return t&&Wc.test(t)?t:`skill.tar.br`}async function Kc(e,t){let n=`${Hc()}/${e}/${Gc(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())}function qc(e){return e.replace(/[\\/:*?"<>|\s]+/g,`-`).replace(/\.\.+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`unnamed-skill`}function Jc(e){return e.length>0&&qc(e)===e}function Yc(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 Xc(e){if(!e.startsWith(`---`))return null;let t=/^---\r?\n([\s\S]*?)\r?\n---(\r?\n|$)/.exec(e);return t?t[1]:null}function Zc(e,t){let n=j(e,`SKILL.md`),r;try{se(n).isFile()||Yc(t,`SKILL.md is not a regular file`),r=E(n,`utf-8`)}catch(e){if(e instanceof P)throw e;Yc(t,`missing SKILL.md`)}let i=Xc(r);i===null&&Yc(t,`SKILL.md is missing frontmatter (--- delimited YAML header)`);let a;try{a=_(i)}catch{Yc(t,`frontmatter is not valid YAML`)}(typeof a!=`object`||!a)&&Yc(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)&&Yc(t,`frontmatter is missing non-empty name / description fields`),{name:s,description:c}}function Qc(e){if(!Jc(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 $c(e,t,n){Qc(e);let r=Z(),i=j(r,e),a=j(r,`.tmp-${e}-${process.pid}-${Date.now()}`);try{if(T(a,{recursive:!0}),await zc(t,a),n?.startsWith(`sha256:`)){let t=Bc(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=Zc(a,e);return Vc(a,i),{name:e,path:i,meta:r}}finally{C(a)&&k(a,{recursive:!0,force:!0})}}async function el(e,t){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 $c(e,await Kc(e,t),t.contentHash)}function tl(e){Qc(e);let t=j(Z(),e);return C(t)?(k(t,{recursive:!0,force:!0}),!0):!1}function nl(e,t){return{...e.contentHash?{contentHash:e.contentHash}:{},...e.publishedAt?{publishedAt:e.publishedAt}:{},installedAt:new Date().toISOString(),sourceType:`oss`,...e.description?{description:e.description}:{},links:t}}async function rl(e,t,n=Q(),r=[]){await el(e,t);let i=Ic(e,n,r);return{lockEntry:nl(t,i.links),linkedAgents:i.linkedAgents}}const $=`bailian-docs-llm-wiki`;function il(){return j(F(),`skills/bailian-docs-llm-wiki`)}function al(){return C(j(il(),`models`,`models.jsonl`))}function ol(){return j(F(),`wiki-sync-state.json`)}function sl(){try{return JSON.parse(E(ol(),`utf-8`))}catch{return null}}function cl(e){try{A(ol(),JSON.stringify(e))}catch{}}function ll(e){try{Dc($,e)}catch{}}function ul(e){try{let t=Tc().skills[$];return t?.contentHash!==e||!Array.isArray(t.links)}catch{return!0}}async function dl(){try{return(await Uc(3e3)).skills[$]??null}catch{return null}}async function fl(){let e=sl(),t=Date.now();if(e&&t-e.lastChecked<432e5&&al())return!1;let n=await dl();if(!n?.contentHash)return!1;if(al()&&(!e||e.contentHash===n.contentHash)){if(cl({lastChecked:t,contentHash:n.contentHash}),ul(n.contentHash)){let e=Tc().skills[$]?.links??[];ll(nl(n,Ic($,Q(),e).links))}return!1}try{let e=Tc().skills[$]?.links??[];ll((await rl($,n,Q(),e)).lockEntry)}catch{return!1}return cl({lastChecked:t,contentHash:n.contentHash}),!0}const pl=`bailian-cli`,ml=`install-method`,hl=new Set([`binary`,`npm`,`brew`,`winget`,`unknown`]);function gl(e){return e?j(F(),`${ml}.${e}`):j(F(),ml)}function _l(){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 vl(e){if(!e)return null;let t=e.trim().toLowerCase();return hl.has(t)?t:null}function yl(e){try{return vl(E(e,`utf-8`).split(`
|
|
190
|
+
`)[0])}catch{return null}}function bl(){let e=vl(process.env.BAILIAN_INSTALL_METHOD);if(e)return e;if(_l()){let e=process.execPath.replaceAll(`\\`,`/`);return e.includes(`/Cellar/`)||e.includes(`/homebrew/`)?`brew`:`binary`}return`npm`}function xl(e){let t=vl(process.env.BAILIAN_INSTALL_METHOD);if(t)return t;if(e?.clientName){let t=yl(gl(e.clientName));if(t)return t;if(e.clientName===`bailian-cli`){let e=yl(gl());if(e)return e}return bl()}return yl(gl())||bl()}function Sl(e){let t=xl(e);return t===`binary`&&e.npmPackage!==`bailian-cli`?`npm`:t}function Cl(e,t={clientName:pl}){try{let n=F();C(n)||T(n,{recursive:!0,mode:448}),A(gl(t.clientName),`${e}\n`,{mode:384}),t.clientName===`bailian-cli`&&A(gl(),`${e}\n`,{mode:384})}catch{}}const wl=`https://bailian-wiki.oss-cn-hangzhou.aliyuncs.com/release`,Tl=`https://github.com/modelstudioai/cli/releases`,El=`https://bailian.aliyun.com/cli/install.sh`,Dl=`https://bailian.aliyun.com/cli/install.ps1`;function Ol(){let e=process.env.BAILIAN_CLI_CDN?.trim();return e?e.replace(/\/$/,``):wl}function kl(e=`latest`){let t=e.trim();return!t||t===`latest`||t===`stable`?`${Ol()}/manifest.json`:`${Ol()}/${t}.json`}function Al(e,t){let n=e.startsWith(`v`)?e:`v${e}`;return`${Ol()}/${n}/${t}`}function jl(){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 Ml(e,t,n,r=!1){return`bl-${e}-${t}-${n}.zip`}function Nl(e,t,n,r=!1){return`bl-${e}-${t}-${n}${r?`.exe`:``}`}function Pl(e){return new Promise((t,n)=>{S.open(e,{lazyEntries:!0},(r,i)=>{if(r||!i){n(r??Error(`Failed to open zip: ${e}`));return}t(i)})})}function Fl(e){let t=e.replace(/\\/g,`/`);return t.includes(`/`)?t.slice(t.lastIndexOf(`/`)+1):t}async function Il(e,t,n){let r=await Pl(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(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=Fl(i);if(!(!n||i===n||a===n)){r.readEntry();return}r.openReadStream(e,(n,r)=>{if(n||!r){s(n??Error(`Failed to read zip entry: ${e.fileName}`));return}(async()=>{try{await ve(le(t),{recursive:!0}),await he(r,ae(t)),c(a)}catch(e){s(e)}})()})}),r.readEntry()})}function Ll(e,t){let n=(e??(t?`all`:``)).trim();if(!n)throw new ke(`--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 ke(`--name all cannot be mixed with specific skill names`,`Use either all or a comma-separated list of names`);return`all`}return r}function Rl(){let e=Z();return C(e)?D(e).filter(t=>{if(t.startsWith(`.`)||t.includes(`.tmp-`)||t.includes(`.old-`))return!1;try{return se(j(e,t)).isDirectory()}catch{return!1}}):[]}function zl(e,t,n){let r=new Set(n),i=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{mo as ASYNC_FLAG,Ie as BAILIAN_HOST,Xa as BILLING_METHOD,pl as BINARY_PRODUCT_CLIENT_NAME,P as BailianError,os as Budgets,Ia as CALC_DATASETS_TOKENS_API,bt as CHANNEL,Qa as CHARGE_TYPE,bo as COMMAND_PACK_API_VERSION,po as CONCURRENT_FLAG,Le as CONFIG_FILE_KEYS,go as CONSOLE_AUTH_FLAGS,Y as Capabilities,ln as Client,q as Complexities,ss as ContextNeeds,Za as DEFAULT_BILLING_METHOD,wl as DEFAULT_CLI_CDN_BASE,Ja as DEFAULT_DEPLOY_PLAN,Dl as DEFAULT_INSTALL_PS1_URL,El as DEFAULT_INSTALL_SCRIPT_URL,pa as DEFAULT_TRAINING_TYPE,oo as DEPLOY_LIST_INDEPENDENT_API,G as DEPLOY_PLAN,io as DEPLOY_START_API,ao as DEPLOY_STOP_API,Fe as DOCS_HOSTS,La as ESTIMATE_FINETUNE_TOKENS_API,N as ExitCode,cs as Features,Tl as GITHUB_RELEASES_BASE,fo as GLOBAL_FLAGS,ya as INSUFFICIENT_SAMPLES_CODE,ei as MAX_CPT_BYTES,$r as MAX_DATASET_BYTES,ti as MAX_MEDIA_ZIP_BYTES,ho as MODEL_AUTH_FLAGS,Ir as MODEL_LIST_API,tn as McpClient,as as Modalities,X as ModelCategories,_o as OPENAPI_AUTH_FLAGS,xt as OPEN_API_SOURCE,Lr as PREDICT_CONFIG_API,J as QualityPreferences,er as RAG_PATHS,Pe as REGIONS,ls as SEMANTIC_TOP_K,no as STRATEGIES,Fa as TRAINING_MODEL_PRICE_API,fa as TRAINING_TYPES_CLI,da as TRAINING_TYPE_MAP,ke as UsageError,pt as activateConfigProfile,Ts as analyzeIntent,on as anonymousConsoleCall,En as appCompletionPath,Vc as atomicSwap,Xt as bailianMcpPath,Zt as bailianMcpSsePath,Ml as binaryAssetFileName,Nl as binaryInnerFileName,Dt as buildAcsCanonicalQuery,wr as buildAsrFlashRequest,Cr as buildAsyncAsrLanguageFields,yc as buildDocLink,gt as buildSettings,nl as buildSkillLockEntry,ht as buildSources,cn as callConsoleGateway,oa as cancelFineTune,kl as channelManifestUrl,hn as chatPath,Er as collectAsrTranscriptionItems,Bc as computeDirContentHash,zl as computeSkillStatuses,en as connectBailianMcpWithFallback,Nr as createBailianControlUser,Va as createDeployment,ra as createFineTune,kr as createInstrumentedFetch,Mo as createTrackingEvent,vo as credentialFlagDefs,Ya as defaultDeployPlan,yo as defineCommand,mt as deleteConfigProfile,Qr as deleteDataset,Wa as deleteDeployment,sa as deleteFineTune,Ye as describeAuthState,jl as detectBinaryPlatform,bl as detectInstallMethod,Q as detectInstalledAgents,Ki as detectModality,tt as detectOutputFormat,Kc as downloadSkillAsset,an as effectiveConsoleGatewayConfig,wc as emptySkillLock,Ze as ensureConfigDir,Ba as estimateCptTokens,za as estimateSftDpoTokens,ua as exportCheckpoint,Tr as extractAsrFlashText,zc as extractTarBr,Il as extractZipEntryToFile,Ic as fanOutSkillToAgents,va as fetchModelCapability,Hr as fetchModelDetail,Vr as fetchModelGroups,Rr as fetchModelList,zr as fetchModelListAll,Gr as fetchPredictConfig,Uc as fetchSkillsIndex,Ra as fetchTrainingModelPrice,uo as findDeploymentEntry,Br as findModelByName,Wo as flushTelemetry,et as formatErrorJson,na as formatIssue,$e as formatJson,nt as formatOutput,Qe as formatText,pn as generateCLIAccessToken,So as generateFilename,Oc as getAgentTargets,Ol as getCliCdnBase,F as getConfigDir,I as getConfigPath,Xe as getCredentialsPath,Zr as getDataset,Ua as getDeployment,aa as getFineTune,ca as getFineTuneLogs,xl as getInstallMethod,Jr as getModelProfilePreset,is as getModels,Na as getProfile,Cc as getSkillLockPath,Hc as getSkillRegistryBaseUrl,Z as getSkillsDir,Sl as getUpdateInstallMethod,bn as image2ImagePath,Sn as image2videoPath,It as imageFileToDataUri,_n as imagePath,vn as imageSyncPath,yn as imageText2ImagePath,Sr as inferAudioFormatHint,el as installSkill,$c as installSkillFromBuffer,rl as installSkillWithFanout,_l as isCompiledBinary,lr as isLegacyImage2ImageModel,cr as isLegacyText2ImageModel,zt as isLocalFile,Rc as isSafeEntryName,Jc as isSafeSkillName,$s as isSemanticAvailable,Qt as isStreamableHttpUnsupported,ir as isSyncMultimodalImageModel,ma as isTrainingTypeCli,$t as isUrlOverrideSseFallbackCandidate,ur as isWanxFunctionImageEditModel,Ln as knowledgeChatEndpoint,Fn as knowledgeRetrievePath,In as knowledgeSearchEndpoint,Fc as linkSkillToAgents,Pr as listBailianControlWorkspaces,la as listCheckpoints,Xr as listDatasets,Ga as listDeployableModels,Ha as listDeployments,ia as listFineTunes,lo as listIndependentDeployedModels,Rl as listSkillDirsOnDisk,ta as listSupportedFormats,_a as listSupportedTrainingTypes,Pa as listTrainingTypes,Go as localSink,vt as makeAuthStore,Kr as makeConfigStore,je as mapApiError,yt as maskToken,fl as maybeSyncWikiData,Rn as mcpWebSearchPath,Dn as memoryAddPath,kn as memoryListPath,An as memoryNodePath,On as memorySearchPath,ga as modelSupportsTrainingType,wn as modelsLimitsPath,Tn as modelsPermissionsPath,ot as normalizeConfigName,Me as normalizeModelBaseUrl,Oo as parseBooleanValue,Ve as parseConfigFile,ri as parseDatasetSchemaFlag,ko as parseOptionalBooleanValue,Wt as parseSSE,Ll as parseSkillNames,ro as pickPlanStrategy,$i as pickValidator,ba as preflightBatchSizeGate,Nn as profileSchemaPath,$n as ragEndpoint,Sc as rankModels,R as readConfigFile,ut as readConfigProfiles,Tc as readSkillLock,Eo as readTextFromPathOrStdin,Ls as recallCandidates,hc as recallSemantic,Lt as redactDataUri,mn as refreshAccessToken,ea as registerValidator,Al as releaseAssetUrl,Ko as remoteSink,tl as removeSkillDir,wt as request,Et as requestJson,Fr as resetBailianControlPolicies4Agent,Ue as resolveApiKey,xr as resolveAsrApi,Gc as resolveAssetFileName,Ao as resolveBooleanFlag,We as resolveConsole,Bt as resolveFileUrl,mr as resolveImageEditApi,pr as resolveImageGenerateApi,dr as resolveImageSizeProfile,He as resolveModelBaseUrl,Ge as resolveOpenApi,wo as resolveOutputDir,fr as resolvePromptExtendDefault,jo as resolveWatermark,gn as responsesPath,Do as runWithConcurrency,qc as sanitizeSkillName,Ka as scaleDeployment,Ot as signAcsRequest,St as sourceConfig,Mn as speechRecognizePath,jn as speechSynthesizePath,so as startModelService,co as stopModelService,To as stripUndefined,Cn as taskPath,Xo as trackCommandExecution,B as trackingHeaders,ha as trainingTypeMethodVariant,Lc as unlinkSkillFromAgents,H as unwrapResponse,qa as updateDeployment,Yr as uploadDataset,Rt as uploadFile,Dc as upsertSkillLockEntry,Pn as userProfilePath,ft as validateConfigProfileActivation,W as validateDataset,Zc as validateSkillDir,xn as videoGeneratePath,z as writeConfigFile,Cl as writeInstallMethodSync,Ec as writeSkillLock};
|