@doubao-dev/cli 0.0.37 → 0.0.38
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/1272.js +3 -12
- package/dist/2168~0.js +1 -1
- package/dist/4315~0.js +1 -1
- package/dist/@inquirer/confirm.js +1 -0
- package/dist/assets/web-sdk-debugger/assets/framework/doubao-apps-api.template.js +0 -0
- package/dist/assets/web-sdk-debugger/assets/framework/doubao-apps-framework.template.js +0 -0
- package/dist/assets/web-sdk-debugger/index.html +1 -1
- package/dist/assets/web-sdk-debugger/static/js/491.26cad27284.js +1836 -0
- package/dist/assets/web-sdk-debugger/static/js/index.cefeab0b95.js +44 -0
- package/dist/build.js +2 -2
- package/dist/check.js +1 -1
- package/dist/dev-config.js +2 -2
- package/dist/dev.js +7 -7
- package/dist/inquirer.js +1 -1
- package/dist/sdk.js +71 -71
- package/dist/template-starter/package.json +0 -1
- package/package.json +2 -2
- package/skills/doubao-agentic-service-development/SKILL.md +2 -0
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/30-/346/227/245/345/216/206.md +141 -0
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/groups.md +1 -1
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/quick-reference.md +2 -1
- package/dist/assets/web-sdk-debugger/static/js/13.6b014d5621.js +0 -1836
- package/dist/assets/web-sdk-debugger/static/js/index.01a86a6f8b.js +0 -44
- package/dist/dist~2.js +0 -2
- /package/dist/assets/web-sdk-debugger/static/js/{13.6b014d5621.js.LICENSE.txt → 491.26cad27284.js.LICENSE.txt} +0 -0
package/dist/1272.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
import"node:module";import{__webpack_require__ as e}from"./rslib-runtime~0.js";import"./9652~0.js";import"./628~0.js";import"./yaml.js";import"./8663~0.js";import{getLastHttpResponseLogId as t,http_getApiBaseUrl as r,isRecord as n}from"./4315~0.js";import{remoteFileName as o,sourceTypeForWorkspaceFileType as s,describeWorkspaceUpload as i,resolveAppKey as a}from"./workspace.js";import{CliUsageError as l,CliError as p}from"./2168~0.js";import{uploadMiniAppVersionDraftPackage as c,verifyYAML as u,submitMiniAppVersionDraft as d,uploadMiniAppVersionDraftSourceCode as _,compactValidationIssues as f,normalizeAppVersionTag as m}from"./app.js";import{requireRuntimeSkillEntries as h,resolveProjectLayout as g}from"./project-layout.js";import{precheckBusinessTemplatesPersonalInformation as v}from"./business-template-personal-information.js";import{archiveEntries as y}from"./archive.js";import{readAppManifest as E}from"./manifest-yaml-generator.js";import"./3551~0.js";e.add({"../../../node_modules/.pnpm/dotenv@17.2.3/node_modules/dotenv/lib/main.js"(e,t,r){let n=r("fs"),o=r("path"),s=r("os"),i=r("crypto"),a=r("../../../node_modules/.pnpm/dotenv@17.2.3/node_modules/dotenv/package.json").version,l=["\uD83D\uDD10 encrypt with Dotenvx: https://dotenvx.com","\uD83D\uDD10 prevent committing .env to code: https://dotenvx.com/precommit","\uD83D\uDD10 prevent building .env in docker: https://dotenvx.com/prebuild","\uD83D\uDCE1 add observability to secrets: https://dotenvx.com/ops","\uD83D\uDC65 sync secrets across teammates & machines: https://dotenvx.com/ops","\uD83D\uDDC2️ backup and recover secrets: https://dotenvx.com/ops","✅ audit secrets and track compliance: https://dotenvx.com/ops","\uD83D\uDD04 add secrets lifecycle management: https://dotenvx.com/ops","\uD83D\uDD11 add access controls to secrets: https://dotenvx.com/ops","\uD83D\uDEE0️ run anywhere with `dotenvx run -- yourcommand`","⚙️ specify custom .env file path with { path: '/custom/path/.env' }","⚙️ enable debug logging with { debug: true }","⚙️ override existing env vars with { override: true }","⚙️ suppress all logs with { quiet: true }","⚙️ write to custom object with { processEnv: myObject }","⚙️ load multiple .env files with { path: ['.env.local', '.env'] }"];function p(e){return"string"==typeof e?!["false","0","no","off",""].includes(e.toLowerCase()):!!e}let c=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function u(e){console.log(`[dotenv@${a}][DEBUG] ${e}`)}function d(e){console.log(`[dotenv@${a}] ${e}`)}function _(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function f(e){let t=null;if(e&&e.path&&e.path.length>0)if(Array.isArray(e.path))for(let r of e.path)n.existsSync(r)&&(t=r.endsWith(".vault")?r:`${r}.vault`);else t=e.path.endsWith(".vault")?e.path:`${e.path}.vault`;else t=o.resolve(process.cwd(),".env.vault");return n.existsSync(t)?t:null}function m(e){return"~"===e[0]?o.join(s.homedir(),e.slice(1)):e}let h={configDotenv:function(e){let t,r=o.resolve(process.cwd(),".env"),s="utf8",i=process.env;e&&null!=e.processEnv&&(i=e.processEnv);let a=p(i.DOTENV_CONFIG_DEBUG||e&&e.debug),c=p(i.DOTENV_CONFIG_QUIET||e&&e.quiet);e&&e.encoding?s=e.encoding:a&&u("No encoding is specified. UTF-8 is used by default");let _=[r];if(e&&e.path)if(Array.isArray(e.path))for(let t of(_=[],e.path))_.push(m(t));else _=[m(e.path)];let f={};for(let r of _)try{let t=h.parse(n.readFileSync(r,{encoding:s}));h.populate(f,t,e)}catch(e){a&&u(`Failed to load ${r} ${e.message}`),t=e}let g=h.populate(i,f,e);if(a=p(i.DOTENV_CONFIG_DEBUG||a),c=p(i.DOTENV_CONFIG_QUIET||c),a||!c){var v;let e=Object.keys(g).length,r=[];for(let e of _)try{let t=o.relative(process.cwd(),e);r.push(t)}catch(r){a&&u(`Failed to load ${e} ${r.message}`),t=r}d(`injecting env (${e}) from ${r.join(",")} ${(v=`-- tip: ${l[Math.floor(Math.random()*l.length)]}`,process.stdout.isTTY?`\x1b[2m${v}\x1b[0m`:v)}`)}return t?{parsed:f,error:t}:{parsed:f}},_configVault:function(e){let t=p(process.env.DOTENV_CONFIG_DEBUG||e&&e.debug),r=p(process.env.DOTENV_CONFIG_QUIET||e&&e.quiet);(t||!r)&&d("Loading env from encrypted .env.vault");let n=h._parseVault(e),o=process.env;return e&&null!=e.processEnv&&(o=e.processEnv),h.populate(o,n,e),{parsed:n}},_parseVault:function(e){let t,r=f(e=e||{});e.path=r;let n=h.configDotenv(e);if(!n.parsed){let e=Error(`MISSING_DATA: Cannot parse ${r} for an unknown reason`);throw e.code="MISSING_DATA",e}let o=_(e).split(","),s=o.length;for(let e=0;e<s;e++)try{let r=o[e].trim(),s=function(e,t){let r;try{r=new URL(t)}catch(e){if("ERR_INVALID_URL"===e.code){let e=Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw e.code="INVALID_DOTENV_KEY",e}throw e}let n=r.password;if(!n){let e=Error("INVALID_DOTENV_KEY: Missing key part");throw e.code="INVALID_DOTENV_KEY",e}let o=r.searchParams.get("environment");if(!o){let e=Error("INVALID_DOTENV_KEY: Missing environment part");throw e.code="INVALID_DOTENV_KEY",e}let s=`DOTENV_VAULT_${o.toUpperCase()}`,i=e.parsed[s];if(!i){let e=Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${s} in your .env.vault file.`);throw e.code="NOT_FOUND_DOTENV_ENVIRONMENT",e}return{ciphertext:i,key:n}}(n,r);t=h.decrypt(s.ciphertext,s.key);break}catch(t){if(e+1>=s)throw t}return h.parse(t)},config:function(e){if(0===_(e).length)return h.configDotenv(e);let t=f(e);if(!t){var r;return r=`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`,console.error(`[dotenv@${a}][WARN] ${r}`),h.configDotenv(e)}return h._configVault(e)},decrypt:function(e,t){let r=Buffer.from(t.slice(-64),"hex"),n=Buffer.from(e,"base64"),o=n.subarray(0,12),s=n.subarray(-16);n=n.subarray(12,-16);try{let e=i.createDecipheriv("aes-256-gcm",r,o);return e.setAuthTag(s),`${e.update(n)}${e.final()}`}catch(n){let e=n instanceof RangeError,t="Invalid key length"===n.message,r="Unsupported state or unable to authenticate data"===n.message;if(e||t){let e=Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw e.code="INVALID_DOTENV_KEY",e}if(r){let e=Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw e.code="DECRYPTION_FAILED",e}throw n}},parse:function(e){let t,r={},n=e.toString();for(n=n.replace(/\r\n?/mg,"\n");null!=(t=c.exec(n));){let e=t[1],n=t[2]||"",o=(n=n.trim())[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),'"'===o&&(n=(n=n.replace(/\\n/g,"\n")).replace(/\\r/g,"\r")),r[e]=n}return r},populate:function(e,t,r={}){let n=!!(r&&r.debug),o=!!(r&&r.override),s={};if("object"!=typeof t){let e=Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw e.code="OBJECT_REQUIRED",e}for(let r of Object.keys(t))Object.prototype.hasOwnProperty.call(e,r)?(!0===o&&(e[r]=t[r],s[r]=t[r]),n&&(!0===o?u(`"${r}" is already defined and WAS overwritten`):u(`"${r}" is already defined and was NOT overwritten`))):(e[r]=t[r],s[r]=t[r]);return s}};e.exports.configDotenv=h.configDotenv,e.exports._configVault=h._configVault,e.exports._parseVault=h._parseVault,e.exports.config=h.config,e.exports.decrypt=h.decrypt,e.exports.parse=h.parse,e.exports.populate=h.populate,e.exports=h},"../../../node_modules/.pnpm/dotenv@17.2.3/node_modules/dotenv/package.json"(e){e.exports={version:"17.2.3"}}});let w=e("node:fs"),b=e("node:util");async function N(e,t={}){let r=k(e);try{let e=await S({action:"build",appDir:r,appId:t.appId,envMode:t.envMode});return{cwd:r,card_check:e.cardCheck}}catch(e){throw new I(r,e)}}async function $(e,t,r){let n=k(e),o={cwd:n,output_dir:t},s="";try{o.archive_path=s=(await S({action:"cloudPackage",appDir:n,outputDir:t})).archivePath||""}catch(e){throw new O(n,e,o,r)}if(!s)throw new O(n,Error("DoubaoAppsSDK.cloudPackage 未返回压缩包路径"),o,r);return s}function k(e){if(!(0,w.existsSync)(e))throw Error(`未找到 frontend_code 路径: ${e}`);if((0,w.statSync)(e).isFile())throw Error(`frontend_code 必须是目录: ${e}`);return(0,w.realpathSync)(e)}async function S(e){let t,r,o,s,i=process.cwd(),a={...process.env},l=(t=[],r=[],o=process.stdout.write,s=process.stderr.write,process.stdout.write=C(t),process.stderr.write=C(r),{result(){let e=D({stdout:t.join(""),stderr:r.join("")});return{...e,...e.stdout||e.stderr?{output:T([e.stdout,e.stderr].filter(Boolean).join("\n"))}:{}}},restore(){process.stdout.write=o,process.stderr.write=s}});try{process.chdir(e.appDir),process.env.CI="true",process.env.FORCE_COLOR="0",process.env.NO_COLOR="1";let{DoubaoAppsSDK:t}=await import("./sdk.js"),r=new t(e.appDir);if("build"===e.action){let t=await r.build({...e.appId?{appId:e.appId}:{},...e.envMode?{envMode:e.envMode}:{}});return{...l.result(),cardCheck:t?.cardCheck}}let n=await r.cloudPackage({outputDir:e.outputDir});return{...l.result(),archivePath:n}}catch(t){let e=l.result();throw n(t)&&Object.assign(t,e),t}finally{l.restore(),process.chdir(i),function(e){for(let t of Object.keys(process.env))Object.prototype.hasOwnProperty.call(e,t)||delete process.env[t];Object.assign(process.env,e)}(a)}}function C(e){return(t,r,n)=>{e.push("string"==typeof t?t:Buffer.from(t).toString("string"==typeof r?r:"utf8"));let o="function"==typeof r?r:n;return o?.(),!0}}function D(e){let t=T(e.stdout),r=T(e.stderr),n=T(e.output);return{...t?{stdout:t}:{},...r?{stderr:r}:{},...n?{output:n}:{}}}class I extends Error{exitCode=1;details;constructor(e,t){var r;let n,o=x(t),s=j(o.output||o.stderr||o.stdout),i={code:"frontend_build_check_failed",cwd:e,...void 0===o.exitCode?{}:{exit_code:o.exitCode},...o.signal?{signal:o.signal}:{},...o.shortMessage?{short_message:o.shortMessage}:{},...o.originalMessage?{original_message:o.originalMessage}:{},...s?{output:s}:{}};super((n=(r=i).output||r.short_message||r.original_message||"未知构建错误",["前端构建检查失败",`工作目录: ${r.cwd}`,"构建输出:",n].join("\n"))),this.name="FrontendBuildCheckError",this.details=i}}class O extends Error{exitCode=1;details;constructor(e,t,r,n){var o;let s,i=function(e,t){let r=x(e),n=[...new Set(t?.flatMap(({value:e,is_secret:t})=>t&&e?[e,JSON.stringify(e).slice(1,-1),T(e)??""].filter(Boolean):[]))].sort((e,t)=>t.length-e.length);for(let[e,t]of Object.entries(r))"string"==typeof t&&Object.assign(r,{[e]:n.reduce((e,t)=>e.split(t).join("[REDACTED]"),t)});return r}(t,n),a=r?.stdout||i.stdout,l=r?.stderr||i.stderr,p=j(r?.output||i.output||l||a),c={code:"frontend_package_failed",cwd:r?.cwd||e,output_dir:r?.output_dir??"",...r?.archive_path?{archive_path:r.archive_path}:{},...void 0===i.exitCode?{}:{exit_code:i.exitCode},...i.signal?{signal:i.signal}:{},...i.shortMessage?{short_message:i.shortMessage}:{},...i.originalMessage?{original_message:i.originalMessage}:{},...p?{output:p}:{}};super((s=(o=c).output||o.stderr||o.stdout||o.short_message||o.original_message||"未知打包错误",["前端打包失败",`工作目录: ${o.cwd}`,"打包输出:",s].join("\n"))),this.name="FrontendPackageError",this.details=c}}function x(e){if(!n(e))return{output:String(e)};let t=D({stdout:e.stdout,stderr:e.stderr,output:e.all??e.output}),r=!!(t.stdout||t.stderr||t.output);return{exitCode:"number"==typeof e.exitCode?e.exitCode:void 0,signal:"string"==typeof e.signal?e.signal:void 0,shortMessage:r||"string"!=typeof e.shortMessage?void 0:e.shortMessage,originalMessage:"string"==typeof e.originalMessage?e.originalMessage:r||"string"!=typeof e.message?void 0:e.message,...t}}function T(e){let t=Buffer.isBuffer(e)?e.toString("utf8"):"string"==typeof e?e:"";return(0,b.stripVTControlCharacters)(t).replace(/\r\n/g,"\n").replace(/\r/g,"\n").split("\n").map(e=>e.trimEnd()).join("\n").trim()||void 0}function j(e){let t,r=T(e);if(!r)return;let n=(t=[r.search(/(^|\n)error\s+Build error:/i),r.search(/(^|\n)Build error:/i),r.search(/(^|\n)File:\s/i),r.search(/(^|\n)\s*[×x]\s+.*TS\d+:/i)].filter(e=>e>=0)).length>0?Math.min(...t):-1,o=n>=0?r.slice(n).trim():r;return o.length<=4e3?o:`${o.slice(0,4e3).trimEnd()}
|
|
2
|
-
... output truncated ...`}function A(e){try{return a(e)}catch(e){throw new l(e instanceof Error?e.message:String(e),"DBX_PROJECT_INVALID")}}function V(e){return`${U()}/agentic_service/${encodeURIComponent(e)}`}function M(e,t){return`${U()}/agentic_service/${encodeURIComponent(e)}/versions/${encodeURIComponent(t)}`}function U(){return r().replace(/\/+$/,"")}let P=e("../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/index.js");function K(e){if(!n(e))return;let t=n(e.mcp_server)?e.mcp_server:void 0,r=t?.end_point;return"string"==typeof r&&r.trim()?r:void 0}function R(e,t,r){return{checked:!0,endpoint:e,cloud_reachable:!1,reason:t,message:r}}function L(e){let t=e.split(".");if(4!==t.length)return;let r=t.map(e=>Number(e));if(!r.some(e=>!Number.isInteger(e)||e<0||e>255))return r}let F=e("node:fs/promises"),B=e("node:path"),Y=e("../../../node_modules/.pnpm/dotenv@17.2.3/node_modules/dotenv/lib/main.js"),H=/^[A-Za-z_][A-Za-z0-9_]*$/,z=new Set(["platform_info_version_tag","platform_info_upload_token","platform_info_app_name","platform_info_app_icon","platform_info_app_key","skip_uploading","X_TT_ENV"]);async function G(e){if(void 0===e.env&&void 0===e.secretEnv)return;let t=W(e.project,e.env,"--env"),r=W(e.project,e.secretEnv,"--secret-env"),n=new Map;try{for(let[e,o]of[[t,!1],[r,!0]])if(e)for(let[t,r]of Object.entries((0,Y.parse)(await (0,F.readFile)(e,"utf8"))))n.set(t,{name:t,value:r,env_var_name:t,...o?{is_secret:!0}:{}})}catch{throw new l("所选构建环境文件必须是可读取的文件")}let o=[...n.values()];for(let{name:e,value:t,is_secret:r}of o){if(!H.test(e))throw new l("构建环境变量名称无效");if(z.has(e))throw new l(`不能使用保留的构建环境变量: ${e}`);if(r&&e.startsWith("PUBLIC_"))throw new l(`密钥环境文件不能包含 PUBLIC_ 变量: ${e}`);if("NODE_ENV"===e&&"production"!==t)throw new l("构建环境变量 NODE_ENV 必须为 production")}return o}function W(e,t,r){let n;if(void 0!==t){try{if(n=(0,w.realpathSync)((0,B.resolve)(e,t)),!(0,w.statSync)(n).isFile())throw Error("not a file")}catch{throw new l(`${r} 必须指向可读取的文件`)}if(!(0,B.basename)(n).startsWith(".env"))throw new l(`${r} 实际文件名必须以 .env 开头`);return n}}let q=e("node:crypto");async function Q(e,r){let n=m(r.appVersionTag),s=await G(r),i=g(r.project),l=J(r.project,r.manifest,i.manifestPath),p=J(r.project,r.skill,i.skillDirectory),c=J(r.project,r.frontendCode,(0,B.resolve)(r.project,i.frontendDirectory)),u=a(r.project,r.appId,l);e.targetAppId=u;let _=r.keepPackages,f=en(),h="",y="",E="",b="",$=[],k=[],S=[];try{var C,D,I,O,x;let i,m,T,j=void 0===s?await N(c,{appId:u}):{cwd:c,skipped:!0,card_check:void 0};h=Z(l,f,"manifest"),k.push(es({type:"manifest",file:h})),I=r.project,O=f,i=g(I),$=[{type:"events",file:i.eventsPath},{type:"tools",file:i.toolsPath}].flatMap(e=>{if(!(0,w.existsSync)(e.file))return[];eu(e.file,e.type);let t=(0,B.join)(O,o(e.type));return(0,w.copyFileSync)(e.file,t),[{type:e.type,file:t}]});let A=await ea(h),V=ee(r);V&&(b=Z(V,f,"business_templates"),k.push(es({type:"business_templates",file:b})));let U=b?await el(b):void 0,F=v(A.manifest,b?P.qg((0,w.readFileSync)(b,"utf8")):void 0);F&&e.warn(`[${F.code}] ${F.path}: ${F.message} Core 将在提交时校验继承后的最终生效配置。`),k.push(...$.map(es));let Y=(C=(0,w.readFileSync)(h,"utf8"),D=A.manifest,(m=K(function(e){try{return P.qg(e)}catch{return}}(C))??K(D))?function(e){let t,r=e.trim();try{t=new URL(r)}catch{return R(r,"invalid_url","manifest.mcp_server.end_point 必须是有效的 http(s) URL。")}if("http:"!==t.protocol&&"https:"!==t.protocol)return R(r,"invalid_protocol","manifest.mcp_server.end_point 必须使用 http:// 或 https://。");let n=function(e){if(!e)return"empty_hostname";if("localhost"===e||e.endsWith(".localhost"))return"localhost";if(e.endsWith(".local")||e.endsWith(".lan")||e.endsWith(".internal"))return"private_hostname";if(!e.includes(".")&&!e.includes(":"))return"unqualified_hostname";let t=L(e)??function(e){let t="::ffff:";if(!e.startsWith(t))return;let r=e.slice(t.length),n=L(r);if(n)return n;let o=r.split(":");if(2!==o.length)return;let s=o.map(e=>Number.parseInt(e,16));if(s.some((e,t)=>!/^[0-9a-f]{1,4}$/i.test(o[t])||!Number.isInteger(e)||e<0||e>65535))return;let[i,a]=s;return[i>>8,255&i,a>>8,255&a]}(e);return t?function(e){let[t,r]=e;return 10===t?"private_ipv4":127===t?"loopback_ipv4":172===t&&r>=16&&r<=31||192===t&&168===r?"private_ipv4":169===t&&254===r?"link_local_ipv4":100===t&&r>=64&&r<=127?"carrier_grade_nat_ipv4":0===t?"reserved_ipv4":192===t&&0===e[1]&&2===e[2]||198===t&&51===e[1]&&100===e[2]||203===t&&0===e[1]&&113===e[2]?"documentation_ipv4":198===t&&(18===r||19===r)?"benchmark_ipv4":t>=224?"reserved_ipv4":void 0}(t):e.includes(":")?function(e){if("::1"===e||"0:0:0:0:0:0:0:1"===e)return"loopback_ipv6";let t=Number.parseInt(e.split(":")[0]||"0",16);if(Number.isFinite(t)){if((65024&t)==64512)return"unique_local_ipv6";if((65472&t)==65152)return"link_local_ipv6"}}(e):void 0}(t.hostname.replace(/^\[/,"").replace(/\]$/,"").toLowerCase());return n?R(r,n,"manifest.mcp_server.end_point 指向本地或私有网络地址,云构建环境和真机无法访问。"):{checked:!0,endpoint:r,cloud_reachable:!0}}(m):{checked:!1,cloud_reachable:!1,reason:"mcp_endpoint_missing",message:"缺少 manifest.mcp_server.end_point"});Y.checked&&!Y.cloud_reachable&&e.warn((T=Y.endpoint??"(未配置)",`云构建环境或真机可能无法访问 manifest.mcp_server.end_point。
|
|
3
|
-
服务地址: ${T}
|
|
4
|
-
原因:${Y.message??"未知"}
|
|
5
|
-
|
|
6
|
-
影响:
|
|
7
|
-
- 上传将继续。
|
|
8
|
-
- 云构建仍可能成功,但如果云端或设备无法访问该地址,运行时 MCP 调用可能失败。
|
|
9
|
-
|
|
10
|
-
处理方法:
|
|
11
|
-
发布前,请将 manifest.mcp_server.end_point 设置为云端和设备可访问的 http(s) MCP URL。`),{style:"label"});let H=await et(p,f);y=H.file,k.push(es({type:"skill",file:y}));let z=function(e,t){let r,n=(0,w.readFileSync)(e);if(n.byteLength<22||(r=n.readUInt32LE(0),0x4034b50!==r&&0x6054b50!==r&&0x8074b50!==r))throw Error(`Skill 压缩包无效:${e} 不是 ZIP 文件`);let o=function(e){let t=function(e){let t=Math.max(0,e.length-65535-22);for(let r=e.length-22;r>=t;r-=1)if(0x6054b50===e.readUInt32LE(r))return r;return -1}(e);if(t<0)return[];let r=e.readUInt32LE(t+12),n=e.readUInt32LE(t+16),o=Math.min(e.length,n+r),s=[],i=n;for(;i+46<=o&&0x2014b50===e.readUInt32LE(i);){let t=e.readUInt16LE(i+28),r=e.readUInt16LE(i+30),n=e.readUInt16LE(i+32),o=i+46,a=o+t;s.push(e.toString("utf8",o,a)),i=a+r+n}return s}(n),s=t.map(e=>e.relativePath),i=s.filter(e=>!o.includes(e));if(i.length>0)throw Error(`Skill 压缩包无效:缺少已发现的 Skill 文件: ${i.join(", ")}`);return{valid:!0,file_name:(0,B.basename)(e),skill_paths:s}}(y,H.skills);E=await er(c,f,s),k.push(es({type:"frontend_code",file:E}));let G=(0,q.createHash)("sha256");for await(let e of(0,w.createReadStream)(E))G.update(e);let W={...j?.card_check??{schema_version:1,rules_version:"1",execution_status:"skipped",coverage:"unknown",reason_code:void 0===s?"checker_unavailable":"local_build_skipped",checked_widgets:[],diagnostics:[],total_count:0,truncated:!1},source_digest:`sha256:${G.digest("hex")}`};if(S.push(await eo(u,{type:"manifest",file:h})),b){let e={type:"business_templates",file:b},t=await eo(u,e);S.push(t),ec(t.business_template_sync_result)}for(let e of $)S.push(await eo(u,e));S.push(await eo(u,{type:"skill",file:y})),S.push(await eo(u,{type:"frontend_code",file:E}));let Q=await d(u,{appVersionTag:n,release:r.release,variables:s,cardCheck:W}),J=Q.data?.version_tag||(x=S,x.find(e=>e.version_tag)?.version_tag??""),X=function(e,t,r){try{if(a(e)!==t)return}catch{return}return["dbx","build","status",r,"--project",(0,B.resolve)(e)].map(e=>/^[a-zA-Z0-9_./:-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`).join(" ")}(r.project,u,J),en={app_id:u,version_tag:J,card_check:W,status:"submitted",submitted:!0,build_triggered:!0,uploaded_artifacts:S.map(e=>e.type),packages:k,business_template_sync_result:S.find(e=>"business_templates"===e.type)?.business_template_sync_result,next:{...X?{status_command:X}:{},version_detail_url:M(u,J)},..._?{kept_packages:{temp_dir:f,manifest:h,skill_zip:y,frontend_code_zip:E,...b?{business_templates:b}:{},...Object.fromEntries($.map(e=>[e.type,e.file]))}}:{},...e.verbose?{debug:{frontend_build_check:j,manifest:A,...U?{business_templates:U}:{},skill:z,uploads:S,endpoints:{manifest_validate:{method:"POST",path:"/app_developer/api/yaml/verify"},upload:{method:"POST",path:"/app_developer/api/apps/:app_key/draft/upload"},source_code_upload_start:{method:"POST",path:"/app_developer/api/apps/:app_key/draft/source_code/upload/start"},source_code_tos_upload:{method:"PUT",path:"<upload_url>"},source_code_upload_finish:{method:"POST",path:"/app_developer/api/apps/:app_key/draft/source_code/upload/finish"},submit:{method:"POST",path:"/app_developer/api/apps/:app_key/draft/submit"}}}}:{},log_id:Q.log_id??t()??""};if(!r.quiet){for(let t of(e.log("产物已上传,已触发构建"),e.log(`app_id: ${u}`),e.log(`版本号: ${J}`),e.log("状态:已提交"),en.next.status_command&&e.log(`下一步: ${en.next.status_command}`),e.log(`版本详情: ${en.next.version_detail_url}`),e.log("压缩包大小:"),k))e.log(` ${t.type}: ${t.file_name} (${t.file_size_human})`);_&&e.log(`已保留压缩包: ${f}`)}return en}catch(e){throw ei(e,k,S)}finally{_||(0,w.rmSync)(f,{recursive:!0,force:!0})}}function J(e,t,r){return t?.trim()?(0,B.resolve)(e,t.trim()):r}async function X(e,r,n){let o=ee(n);if(!o)throw Error(`未找到 business_templates 文件: ${(0,B.resolve)(n.project,"business-templates.yaml")}`);let s=en(),i=[],a=[];try{let l=Z(o,s,"business_templates");a.push(es({type:"business_templates",file:l}));let p=await el(l),c=await eo(r,{type:"business_templates",file:l});i.push(c),ec(c.business_template_sync_result);let u={app_id:r,status:"uploaded",submitted:!1,build_triggered:!1,uploaded_artifacts:[c.type],packages:a,business_template_validation:p,business_template_sync_result:c.business_template_sync_result,log_id:t()??"",...n.keepPackages?{kept_packages:{temp_dir:s,business_templates:l}}:{}};return n.quiet||(e.log("业务模板已上传"),e.log(`app_id: ${r}`)),u}catch(e){throw ei(e,a,i)}finally{n.keepPackages||(0,w.rmSync)(s,{recursive:!0,force:!0})}}function Z(e,t,r){eu(e,r);let n=(0,B.join)(t,o(r));return(0,w.copyFileSync)(e,n),n}function ee(e){if(e.businessTemplates){let t=(0,B.resolve)(e.project,e.businessTemplates.trim());return eu(t,"business_templates"),t}let t=g(e.project).businessTemplatesPath;return(0,w.existsSync)(t)&&(0,w.statSync)(t).isFile()?t:""}async function et(e,t){let r=h(e),n=(0,B.join)(t,"skill.zip");return await y({entries:r.map(e=>({name:e.relativePath,data:Buffer.from(e.content)})),destination:n}),{file:n,skills:r}}async function er(e,t,r){let n=await $(e,t,r);return eu(n,"frontend_code"),n}function en(){let e=(0,B.join)("/tmp","dbx","artifacts-upload");return(0,w.mkdirSync)(e,{recursive:!0}),(0,w.mkdtempSync)((0,B.join)(e,"upload-"))}async function eo(e,t){var r;if("frontend_code"===t.type){let r=await _({appKey:e,filePath:t.file});return{...i(t),source_type:s(t.type),version_tag:r.data?.version_tag??""}}let n=await c({appKey:e,sourceType:s(t.type),filePath:t.file,contentType:"manifest"===(r=t.type)||"business_templates"===r?"application/x-yaml":"events"===r||"tools"===r?"application/json":"application/zip"});return{...i(t),source_type:s(t.type),version_tag:n.data?.version_tag??"",business_template_sync_result:n.data?.business_template_sync_result}}function es(e){let t=i(e);return{type:t.type,file_name:t.file_name,file_size:t.file_size,file_size_human:function(e){let t=["B","KiB","MiB","GiB"],r=e,n=0;for(;r>=1024&&n<t.length-1;)r/=1024,n+=1;return 0===n?`${e} B`:`${r>=10?r.toFixed(1):r.toFixed(2)} ${t[n]}`}(t.file_size)}}function ei(e,t,r){let o=e instanceof Error?e:Error(String(e)),s=t.map(e=>({...e})),i={uploaded_artifacts:r.map(e=>e.type)},a=o.details;return o.details=n(a)?{...a,...i,package_sizes:s}:{...void 0===a?{}:{cause:a},...i,package_sizes:s},r.length>0&&(o.message+=`
|
|
1
|
+
import"node:module";import{__webpack_require__ as e}from"./rslib-runtime~0.js";import"./9652~0.js";import"./628~0.js";import"./6831~0.js";import"./yaml.js";import"./8663~0.js";import{getLastHttpResponseLogId as t,http_getApiBaseUrl as r,isRecord as n}from"./4315~0.js";import{remoteFileName as o,sourceTypeForWorkspaceFileType as s,describeWorkspaceUpload as i,resolveAppKey as a}from"./workspace.js";import{CliUsageError as l,CliError as c}from"./2168~0.js";import{components_Box as p,render_to_string as u,Text as d}from"./ink.js";import{uploadMiniAppVersionDraftPackage as _,verifyYAML as f,submitMiniAppVersionDraft as m,uploadMiniAppVersionDraftSourceCode as h,compactValidationIssues as g,normalizeAppVersionTag as v}from"./app.js";import{requireRuntimeSkillEntries as y,resolveProjectLayout as E}from"./project-layout.js";import{precheckBusinessTemplatesPersonalInformation as w}from"./business-template-personal-information.js";import{archiveEntries as b}from"./archive.js";import"./3551~0.js";e.add({"../../../node_modules/.pnpm/dotenv@17.2.3/node_modules/dotenv/lib/main.js"(e,t,r){let n=r("fs"),o=r("path"),s=r("os"),i=r("crypto"),a=r("../../../node_modules/.pnpm/dotenv@17.2.3/node_modules/dotenv/package.json").version,l=["\uD83D\uDD10 encrypt with Dotenvx: https://dotenvx.com","\uD83D\uDD10 prevent committing .env to code: https://dotenvx.com/precommit","\uD83D\uDD10 prevent building .env in docker: https://dotenvx.com/prebuild","\uD83D\uDCE1 add observability to secrets: https://dotenvx.com/ops","\uD83D\uDC65 sync secrets across teammates & machines: https://dotenvx.com/ops","\uD83D\uDDC2️ backup and recover secrets: https://dotenvx.com/ops","✅ audit secrets and track compliance: https://dotenvx.com/ops","\uD83D\uDD04 add secrets lifecycle management: https://dotenvx.com/ops","\uD83D\uDD11 add access controls to secrets: https://dotenvx.com/ops","\uD83D\uDEE0️ run anywhere with `dotenvx run -- yourcommand`","⚙️ specify custom .env file path with { path: '/custom/path/.env' }","⚙️ enable debug logging with { debug: true }","⚙️ override existing env vars with { override: true }","⚙️ suppress all logs with { quiet: true }","⚙️ write to custom object with { processEnv: myObject }","⚙️ load multiple .env files with { path: ['.env.local', '.env'] }"];function c(e){return"string"==typeof e?!["false","0","no","off",""].includes(e.toLowerCase()):!!e}let p=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function u(e){console.log(`[dotenv@${a}][DEBUG] ${e}`)}function d(e){console.log(`[dotenv@${a}] ${e}`)}function _(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function f(e){let t=null;if(e&&e.path&&e.path.length>0)if(Array.isArray(e.path))for(let r of e.path)n.existsSync(r)&&(t=r.endsWith(".vault")?r:`${r}.vault`);else t=e.path.endsWith(".vault")?e.path:`${e.path}.vault`;else t=o.resolve(process.cwd(),".env.vault");return n.existsSync(t)?t:null}function m(e){return"~"===e[0]?o.join(s.homedir(),e.slice(1)):e}let h={configDotenv:function(e){let t,r=o.resolve(process.cwd(),".env"),s="utf8",i=process.env;e&&null!=e.processEnv&&(i=e.processEnv);let a=c(i.DOTENV_CONFIG_DEBUG||e&&e.debug),p=c(i.DOTENV_CONFIG_QUIET||e&&e.quiet);e&&e.encoding?s=e.encoding:a&&u("No encoding is specified. UTF-8 is used by default");let _=[r];if(e&&e.path)if(Array.isArray(e.path))for(let t of(_=[],e.path))_.push(m(t));else _=[m(e.path)];let f={};for(let r of _)try{let t=h.parse(n.readFileSync(r,{encoding:s}));h.populate(f,t,e)}catch(e){a&&u(`Failed to load ${r} ${e.message}`),t=e}let g=h.populate(i,f,e);if(a=c(i.DOTENV_CONFIG_DEBUG||a),p=c(i.DOTENV_CONFIG_QUIET||p),a||!p){var v;let e=Object.keys(g).length,r=[];for(let e of _)try{let t=o.relative(process.cwd(),e);r.push(t)}catch(r){a&&u(`Failed to load ${e} ${r.message}`),t=r}d(`injecting env (${e}) from ${r.join(",")} ${(v=`-- tip: ${l[Math.floor(Math.random()*l.length)]}`,process.stdout.isTTY?`\x1b[2m${v}\x1b[0m`:v)}`)}return t?{parsed:f,error:t}:{parsed:f}},_configVault:function(e){let t=c(process.env.DOTENV_CONFIG_DEBUG||e&&e.debug),r=c(process.env.DOTENV_CONFIG_QUIET||e&&e.quiet);(t||!r)&&d("Loading env from encrypted .env.vault");let n=h._parseVault(e),o=process.env;return e&&null!=e.processEnv&&(o=e.processEnv),h.populate(o,n,e),{parsed:n}},_parseVault:function(e){let t,r=f(e=e||{});e.path=r;let n=h.configDotenv(e);if(!n.parsed){let e=Error(`MISSING_DATA: Cannot parse ${r} for an unknown reason`);throw e.code="MISSING_DATA",e}let o=_(e).split(","),s=o.length;for(let e=0;e<s;e++)try{let r=o[e].trim(),s=function(e,t){let r;try{r=new URL(t)}catch(e){if("ERR_INVALID_URL"===e.code){let e=Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw e.code="INVALID_DOTENV_KEY",e}throw e}let n=r.password;if(!n){let e=Error("INVALID_DOTENV_KEY: Missing key part");throw e.code="INVALID_DOTENV_KEY",e}let o=r.searchParams.get("environment");if(!o){let e=Error("INVALID_DOTENV_KEY: Missing environment part");throw e.code="INVALID_DOTENV_KEY",e}let s=`DOTENV_VAULT_${o.toUpperCase()}`,i=e.parsed[s];if(!i){let e=Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${s} in your .env.vault file.`);throw e.code="NOT_FOUND_DOTENV_ENVIRONMENT",e}return{ciphertext:i,key:n}}(n,r);t=h.decrypt(s.ciphertext,s.key);break}catch(t){if(e+1>=s)throw t}return h.parse(t)},config:function(e){if(0===_(e).length)return h.configDotenv(e);let t=f(e);if(!t){var r;return r=`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`,console.error(`[dotenv@${a}][WARN] ${r}`),h.configDotenv(e)}return h._configVault(e)},decrypt:function(e,t){let r=Buffer.from(t.slice(-64),"hex"),n=Buffer.from(e,"base64"),o=n.subarray(0,12),s=n.subarray(-16);n=n.subarray(12,-16);try{let e=i.createDecipheriv("aes-256-gcm",r,o);return e.setAuthTag(s),`${e.update(n)}${e.final()}`}catch(n){let e=n instanceof RangeError,t="Invalid key length"===n.message,r="Unsupported state or unable to authenticate data"===n.message;if(e||t){let e=Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw e.code="INVALID_DOTENV_KEY",e}if(r){let e=Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw e.code="DECRYPTION_FAILED",e}throw n}},parse:function(e){let t,r={},n=e.toString();for(n=n.replace(/\r\n?/mg,"\n");null!=(t=p.exec(n));){let e=t[1],n=t[2]||"",o=(n=n.trim())[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),'"'===o&&(n=(n=n.replace(/\\n/g,"\n")).replace(/\\r/g,"\r")),r[e]=n}return r},populate:function(e,t,r={}){let n=!!(r&&r.debug),o=!!(r&&r.override),s={};if("object"!=typeof t){let e=Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw e.code="OBJECT_REQUIRED",e}for(let r of Object.keys(t))Object.prototype.hasOwnProperty.call(e,r)?(!0===o&&(e[r]=t[r],s[r]=t[r]),n&&(!0===o?u(`"${r}" is already defined and WAS overwritten`):u(`"${r}" is already defined and was NOT overwritten`))):(e[r]=t[r],s[r]=t[r]);return s}};e.exports.configDotenv=h.configDotenv,e.exports._configVault=h._configVault,e.exports._parseVault=h._parseVault,e.exports.config=h.config,e.exports.decrypt=h.decrypt,e.exports.parse=h.parse,e.exports.populate=h.populate,e.exports=h},"../../../node_modules/.pnpm/dotenv@17.2.3/node_modules/dotenv/package.json"(e){e.exports={version:"17.2.3"}}});let N=e("node:fs"),S=e("node:util");async function $(e,t={}){let r=k(e);try{let e=await D({action:"build",appDir:r,appId:t.appId,envMode:t.envMode});return{cwd:r,card_check:e.cardCheck}}catch(e){throw new x(r,e)}}async function C(e,t,r){let n=k(e),o={cwd:n,output_dir:t},s="";try{o.archive_path=s=(await D({action:"cloudPackage",appDir:n,outputDir:t})).archivePath||""}catch(e){throw new T(n,e,o,r)}if(!s)throw new T(n,Error("DoubaoAppsSDK.cloudPackage 未返回压缩包路径"),o,r);return s}function k(e){if(!(0,N.existsSync)(e))throw Error(`未找到 frontend_code 路径: ${e}`);if((0,N.statSync)(e).isFile())throw Error(`frontend_code 必须是目录: ${e}`);return(0,N.realpathSync)(e)}async function D(e){let t,r,o,s,i=process.cwd(),a={...process.env},l=(t=[],r=[],o=process.stdout.write,s=process.stderr.write,process.stdout.write=I(t),process.stderr.write=I(r),{result(){let e=O({stdout:t.join(""),stderr:r.join("")});return{...e,...e.stdout||e.stderr?{output:A([e.stdout,e.stderr].filter(Boolean).join("\n"))}:{}}},restore(){process.stdout.write=o,process.stderr.write=s}});try{process.chdir(e.appDir),process.env.CI="true",process.env.FORCE_COLOR="0",process.env.NO_COLOR="1";let{DoubaoAppsSDK:t}=await import("./sdk.js"),r=new t(e.appDir);if("build"===e.action){let t=await r.build({...e.appId?{appId:e.appId}:{},...e.envMode?{envMode:e.envMode}:{}});return{...l.result(),cardCheck:t?.cardCheck}}let n=await r.cloudPackage({outputDir:e.outputDir});return{...l.result(),archivePath:n}}catch(t){let e=l.result();throw n(t)&&Object.assign(t,e),t}finally{l.restore(),process.chdir(i),function(e){for(let t of Object.keys(process.env))Object.prototype.hasOwnProperty.call(e,t)||delete process.env[t];Object.assign(process.env,e)}(a)}}function I(e){return(t,r,n)=>{e.push("string"==typeof t?t:Buffer.from(t).toString("string"==typeof r?r:"utf8"));let o="function"==typeof r?r:n;return o?.(),!0}}function O(e){let t=A(e.stdout),r=A(e.stderr),n=A(e.output);return{...t?{stdout:t}:{},...r?{stderr:r}:{},...n?{output:n}:{}}}class x extends Error{exitCode=1;details;constructor(e,t){var r;let n,o=j(t),s=M(o.output||o.stderr||o.stdout),i={code:"frontend_build_check_failed",cwd:e,...void 0===o.exitCode?{}:{exit_code:o.exitCode},...o.signal?{signal:o.signal}:{},...o.shortMessage?{short_message:o.shortMessage}:{},...o.originalMessage?{original_message:o.originalMessage}:{},...s?{output:s}:{}};super((n=(r=i).output||r.short_message||r.original_message||"未知构建错误",["前端构建检查失败",`工作目录: ${r.cwd}`,"构建输出:",n].join("\n"))),this.name="FrontendBuildCheckError",this.details=i}}class T extends Error{exitCode=1;details;constructor(e,t,r,n){var o;let s,i=function(e,t){let r=j(e),n=[...new Set(t?.flatMap(({value:e,is_secret:t})=>t&&e?[e,JSON.stringify(e).slice(1,-1),A(e)??""].filter(Boolean):[]))].sort((e,t)=>t.length-e.length);for(let[e,t]of Object.entries(r))"string"==typeof t&&Object.assign(r,{[e]:n.reduce((e,t)=>e.split(t).join("[REDACTED]"),t)});return r}(t,n),a=r?.stdout||i.stdout,l=r?.stderr||i.stderr,c=M(r?.output||i.output||l||a),p={code:"frontend_package_failed",cwd:r?.cwd||e,output_dir:r?.output_dir??"",...r?.archive_path?{archive_path:r.archive_path}:{},...void 0===i.exitCode?{}:{exit_code:i.exitCode},...i.signal?{signal:i.signal}:{},...i.shortMessage?{short_message:i.shortMessage}:{},...i.originalMessage?{original_message:i.originalMessage}:{},...c?{output:c}:{}};super((s=(o=p).output||o.stderr||o.stdout||o.short_message||o.original_message||"未知打包错误",["前端打包失败",`工作目录: ${o.cwd}`,"打包输出:",s].join("\n"))),this.name="FrontendPackageError",this.details=p}}function j(e){if(!n(e))return{output:String(e)};let t=O({stdout:e.stdout,stderr:e.stderr,output:e.all??e.output}),r=!!(t.stdout||t.stderr||t.output);return{exitCode:"number"==typeof e.exitCode?e.exitCode:void 0,signal:"string"==typeof e.signal?e.signal:void 0,shortMessage:r||"string"!=typeof e.shortMessage?void 0:e.shortMessage,originalMessage:"string"==typeof e.originalMessage?e.originalMessage:r||"string"!=typeof e.message?void 0:e.message,...t}}function A(e){let t=Buffer.isBuffer(e)?e.toString("utf8"):"string"==typeof e?e:"";return(0,S.stripVTControlCharacters)(t).replace(/\r\n/g,"\n").replace(/\r/g,"\n").split("\n").map(e=>e.trimEnd()).join("\n").trim()||void 0}function M(e){let t,r=A(e);if(!r)return;let n=(t=[r.search(/(^|\n)error\s+Build error:/i),r.search(/(^|\n)Build error:/i),r.search(/(^|\n)File:\s/i),r.search(/(^|\n)\s*[×x]\s+.*TS\d+:/i)].filter(e=>e>=0)).length>0?Math.min(...t):-1,o=n>=0?r.slice(n).trim():r;return o.length<=4e3?o:`${o.slice(0,4e3).trimEnd()}
|
|
2
|
+
... output truncated ...`}function P(e){try{return a(e)}catch(e){throw new l(e instanceof Error?e.message:String(e),"DBX_PROJECT_INVALID")}}function V(e){return`${K()}/agentic_service/${encodeURIComponent(e)}`}function U(e,t){return`${K()}/agentic_service/${encodeURIComponent(e)}/versions/${encodeURIComponent(t)}`}function K(){return r().replace(/\/+$/,"")}let R=e("../../../node_modules/.pnpm/react@19.2.7/node_modules/react/index.js"),L=e("../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/index.js");function F(e){if(!n(e))return;let t=n(e.mcp_server)?e.mcp_server:void 0,r=t?.end_point;return"string"==typeof r&&r.trim()?r:void 0}function B(e,t,r){return{checked:!0,endpoint:e,cloud_reachable:!1,reason:t,message:r}}function Y(e){let t=e.split(".");if(4!==t.length)return;let r=t.map(e=>Number(e));if(!r.some(e=>!Number.isInteger(e)||e<0||e>255))return r}let H=e("node:fs/promises"),z=e("node:path"),G=e("../../../node_modules/.pnpm/dotenv@17.2.3/node_modules/dotenv/lib/main.js"),W=/^[A-Za-z_][A-Za-z0-9_]*$/,q=new Set(["platform_info_version_tag","platform_info_upload_token","platform_info_app_name","platform_info_app_icon","platform_info_app_key","skip_uploading","X_TT_ENV"]);async function Q(e){if(void 0===e.env&&void 0===e.secretEnv)return;let t=J(e.project,e.env,"--env"),r=J(e.project,e.secretEnv,"--secret-env"),n=new Map;try{for(let[e,o]of[[t,!1],[r,!0]])if(e)for(let[t,r]of Object.entries((0,G.parse)(await (0,H.readFile)(e,"utf8"))))n.set(t,{name:t,value:r,env_var_name:t,...o?{is_secret:!0}:{}})}catch{throw new l("所选构建环境文件必须是可读取的文件")}let o=[...n.values()];for(let{name:e,value:t,is_secret:r}of o){if(!W.test(e))throw new l("构建环境变量名称无效");if(q.has(e))throw new l(`不能使用保留的构建环境变量: ${e}`);if(r&&e.startsWith("PUBLIC_"))throw new l(`密钥环境文件不能包含 PUBLIC_ 变量: ${e}`);if("NODE_ENV"===e&&"production"!==t)throw new l("构建环境变量 NODE_ENV 必须为 production")}return o}function J(e,t,r){let n;if(void 0!==t){try{if(n=(0,N.realpathSync)((0,z.resolve)(e,t)),!(0,N.statSync)(n).isFile())throw Error("not a file")}catch{throw new l(`${r} 必须指向可读取的文件`)}if(!(0,z.basename)(n).startsWith(".env"))throw new l(`${r} 实际文件名必须以 .env 开头`);return n}}let X=e("node:crypto");async function Z(e,r){let n=v(r.appVersionTag),s=await Q(r),i=E(r.project),l=ee(r.project,r.manifest,i.manifestPath),c=ee(r.project,r.skill,i.skillDirectory),_=ee(r.project,r.frontendCode,(0,z.resolve)(r.project,i.frontendDirectory)),f=a(r.project,r.appId,l);e.targetAppId=f;let h=r.keepPackages,g=ei(),y="",b="",S="",C="",k=[],D=[],I=[];try{var O,x,T,j,A;let i,v,M=void 0===s?await $(_,{appId:f}):{cwd:_,skipped:!0,card_check:void 0};y=er(l,g,"manifest"),D.push(el({type:"manifest",file:y})),T=r.project,j=g,i=E(T),k=[{type:"events",file:i.eventsPath},{type:"tools",file:i.toolsPath}].flatMap(e=>{if(!(0,N.existsSync)(e.file))return[];ef(e.file,e.type);let t=(0,z.join)(j,o(e.type));return(0,N.copyFileSync)(e.file,t),[{type:e.type,file:t}]});let P=await ep(y),V=en(r);V&&(C=er(V,g,"business_templates"),D.push(el({type:"business_templates",file:C})));let K=C?await eu(C):void 0,H=w(P.manifest,C?L.qg((0,N.readFileSync)(C,"utf8")):void 0);H&&e.warn(`[${H.code}] ${H.path}: ${H.message} Core 将在提交时校验继承后的最终生效配置。`),D.push(...k.map(el));let G=(O=(0,N.readFileSync)(y,"utf8"),x=P.manifest,(v=F(function(e){try{return L.qg(e)}catch{return}}(O))??F(x))?function(e){let t,r=e.trim();try{t=new URL(r)}catch{return B(r,"invalid_url","不是有效的 HTTP(S) URL。")}if("http:"!==t.protocol&&"https:"!==t.protocol)return B(r,"invalid_protocol","仅支持 http:// 或 https://。");let n=function(e){if(!e)return"empty_hostname";if("localhost"===e||e.endsWith(".localhost"))return"localhost";if(e.endsWith(".local")||e.endsWith(".lan")||e.endsWith(".internal"))return"private_hostname";if(!e.includes(".")&&!e.includes(":"))return"unqualified_hostname";let t=Y(e)??function(e){let t="::ffff:";if(!e.startsWith(t))return;let r=e.slice(t.length),n=Y(r);if(n)return n;let o=r.split(":");if(2!==o.length)return;let s=o.map(e=>Number.parseInt(e,16));if(s.some((e,t)=>!/^[0-9a-f]{1,4}$/i.test(o[t])||!Number.isInteger(e)||e<0||e>65535))return;let[i,a]=s;return[i>>8,255&i,a>>8,255&a]}(e);return t?function(e){let[t,r]=e;return 10===t?"private_ipv4":127===t?"loopback_ipv4":172===t&&r>=16&&r<=31||192===t&&168===r?"private_ipv4":169===t&&254===r?"link_local_ipv4":100===t&&r>=64&&r<=127?"carrier_grade_nat_ipv4":0===t?"reserved_ipv4":192===t&&0===e[1]&&2===e[2]||198===t&&51===e[1]&&100===e[2]||203===t&&0===e[1]&&113===e[2]?"documentation_ipv4":198===t&&(18===r||19===r)?"benchmark_ipv4":t>=224?"reserved_ipv4":void 0}(t):e.includes(":")?function(e){if("::1"===e||"0:0:0:0:0:0:0:1"===e)return"loopback_ipv6";let t=Number.parseInt(e.split(":")[0]||"0",16);if(Number.isFinite(t)){if((65024&t)==64512)return"unique_local_ipv6";if((65472&t)==65152)return"link_local_ipv6"}}(e):void 0}(t.hostname.replace(/^\[/,"").replace(/\]$/,"").toLowerCase());return n?B(r,n,"指向本地或私有网络,云端和真机无法访问。"):{checked:!0,endpoint:r,cloud_reachable:!0}}(v):{checked:!1,cloud_reachable:!1,reason:"mcp_endpoint_missing",message:"缺少 manifest.mcp_server.end_point"});G.checked&&!G.cloud_reachable&&e.warn(function(e,t=process.stderr.columns??80){return u((0,R.createElement)(p,{flexDirection:"column",width:Math.min(t-2,80),marginY:1,marginLeft:1,paddingLeft:2,borderStyle:"single",borderColor:"yellow",borderTop:!1,borderBottom:!1,borderRight:!1},(0,R.createElement)(d,{bold:!0,color:"yellow"},"⚠ MCP 服务地址可能无法访问"),(0,R.createElement)(p,{flexDirection:"column",marginY:1},(0,R.createElement)(d,{bold:!0},e.endpoint??"(未配置)"),(0,R.createElement)(d,{dimColor:!0},e.message??"未知原因")),(0,R.createElement)(d,null,"发布前修改 ",(0,R.createElement)(d,{color:"cyan"},"manifest.mcp_server.end_point")),(0,R.createElement)(d,null,"使用云端和真机可访问的 HTTP(S) 地址。"),(0,R.createElement)(p,{marginTop:1},(0,R.createElement)(d,{dimColor:!0},"上传将继续;即使构建成功,运行时 MCP 调用仍可能失败。"))),{columns:t})}(G),{style:"raw"});let W=await eo(c,g);b=W.file,D.push(el({type:"skill",file:b}));let q=function(e,t){let r,n=(0,N.readFileSync)(e);if(n.byteLength<22||(r=n.readUInt32LE(0),0x4034b50!==r&&0x6054b50!==r&&0x8074b50!==r))throw Error(`Skill 压缩包无效:${e} 不是 ZIP 文件`);let o=function(e){let t=function(e){let t=Math.max(0,e.length-65535-22);for(let r=e.length-22;r>=t;r-=1)if(0x6054b50===e.readUInt32LE(r))return r;return -1}(e);if(t<0)return[];let r=e.readUInt32LE(t+12),n=e.readUInt32LE(t+16),o=Math.min(e.length,n+r),s=[],i=n;for(;i+46<=o&&0x2014b50===e.readUInt32LE(i);){let t=e.readUInt16LE(i+28),r=e.readUInt16LE(i+30),n=e.readUInt16LE(i+32),o=i+46,a=o+t;s.push(e.toString("utf8",o,a)),i=a+r+n}return s}(n),s=t.map(e=>e.relativePath),i=s.filter(e=>!o.includes(e));if(i.length>0)throw Error(`Skill 压缩包无效:缺少已发现的 Skill 文件: ${i.join(", ")}`);return{valid:!0,file_name:(0,z.basename)(e),skill_paths:s}}(b,W.skills);S=await es(_,g,s),D.push(el({type:"frontend_code",file:S}));let Q=(0,X.createHash)("sha256");for await(let e of(0,N.createReadStream)(S))Q.update(e);let J={...M?.card_check??{schema_version:1,rules_version:"1",execution_status:"skipped",coverage:"unknown",reason_code:void 0===s?"checker_unavailable":"local_build_skipped",checked_widgets:[],diagnostics:[],total_count:0,truncated:!1},source_digest:`sha256:${Q.digest("hex")}`};if(I.push(await ea(f,{type:"manifest",file:y})),C){let e={type:"business_templates",file:C},t=await ea(f,e);I.push(t),e_(t.business_template_sync_result)}for(let e of k)I.push(await ea(f,e));I.push(await ea(f,{type:"skill",file:b})),I.push(await ea(f,{type:"frontend_code",file:S}));let Z=await m(f,{appVersionTag:n,release:r.release,variables:s,cardCheck:J}),ee=Z.data?.version_tag||(A=I,A.find(e=>e.version_tag)?.version_tag??""),et=function(e,t,r){try{if(a(e)!==t)return}catch{return}return["dbx","build","status",r,"--project",(0,z.resolve)(e)].map(e=>/^[a-zA-Z0-9_./:-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`).join(" ")}(r.project,f,ee),ei={app_id:f,version_tag:ee,card_check:J,status:"submitted",submitted:!0,build_triggered:!0,uploaded_artifacts:I.map(e=>e.type),packages:D,business_template_sync_result:I.find(e=>"business_templates"===e.type)?.business_template_sync_result,next:{...et?{status_command:et}:{},version_detail_url:U(f,ee)},...h?{kept_packages:{temp_dir:g,manifest:y,skill_zip:b,frontend_code_zip:S,...C?{business_templates:C}:{},...Object.fromEntries(k.map(e=>[e.type,e.file]))}}:{},...e.verbose?{debug:{frontend_build_check:M,manifest:P,...K?{business_templates:K}:{},skill:q,uploads:I,endpoints:{manifest_validate:{method:"POST",path:"/app_developer/api/yaml/verify"},upload:{method:"POST",path:"/app_developer/api/apps/:app_key/draft/upload"},source_code_upload_start:{method:"POST",path:"/app_developer/api/apps/:app_key/draft/source_code/upload/start"},source_code_tos_upload:{method:"PUT",path:"<upload_url>"},source_code_upload_finish:{method:"POST",path:"/app_developer/api/apps/:app_key/draft/source_code/upload/finish"},submit:{method:"POST",path:"/app_developer/api/apps/:app_key/draft/submit"}}}}:{},log_id:Z.log_id??t()??""};if(!r.quiet){for(let t of(e.log("产物已上传,已触发构建"),e.log(`app_id: ${f}`),e.log(`版本号: ${ee}`),e.log("状态:已提交"),ei.next.status_command&&e.log(`下一步: ${ei.next.status_command}`),e.log(`版本详情: ${ei.next.version_detail_url}`),e.log("压缩包大小:"),D))e.log(` ${t.type}: ${t.file_name} (${t.file_size_human})`);h&&e.log(`已保留压缩包: ${g}`)}return ei}catch(e){throw ec(e,D,I)}finally{h||(0,N.rmSync)(g,{recursive:!0,force:!0})}}function ee(e,t,r){return t?.trim()?(0,z.resolve)(e,t.trim()):r}async function et(e,r,n){let o=en(n);if(!o)throw Error(`未找到 business_templates 文件: ${(0,z.resolve)(n.project,"business-templates.yaml")}`);let s=ei(),i=[],a=[];try{let l=er(o,s,"business_templates");a.push(el({type:"business_templates",file:l}));let c=await eu(l),p=await ea(r,{type:"business_templates",file:l});i.push(p),e_(p.business_template_sync_result);let u={app_id:r,status:"uploaded",submitted:!1,build_triggered:!1,uploaded_artifacts:[p.type],packages:a,business_template_validation:c,business_template_sync_result:p.business_template_sync_result,log_id:t()??"",...n.keepPackages?{kept_packages:{temp_dir:s,business_templates:l}}:{}};return n.quiet||(e.log("业务模板已上传"),e.log(`app_id: ${r}`)),u}catch(e){throw ec(e,a,i)}finally{n.keepPackages||(0,N.rmSync)(s,{recursive:!0,force:!0})}}function er(e,t,r){ef(e,r);let n=(0,z.join)(t,o(r));return(0,N.copyFileSync)(e,n),n}function en(e){if(e.businessTemplates){let t=(0,z.resolve)(e.project,e.businessTemplates.trim());return ef(t,"business_templates"),t}let t=E(e.project).businessTemplatesPath;return(0,N.existsSync)(t)&&(0,N.statSync)(t).isFile()?t:""}async function eo(e,t){let r=y(e),n=(0,z.join)(t,"skill.zip");return await b({entries:r.map(e=>({name:e.relativePath,data:Buffer.from(e.content)})),destination:n}),{file:n,skills:r}}async function es(e,t,r){let n=await C(e,t,r);return ef(n,"frontend_code"),n}function ei(){let e=(0,z.join)("/tmp","dbx","artifacts-upload");return(0,N.mkdirSync)(e,{recursive:!0}),(0,N.mkdtempSync)((0,z.join)(e,"upload-"))}async function ea(e,t){var r;if("frontend_code"===t.type){let r=await h({appKey:e,filePath:t.file});return{...i(t),source_type:s(t.type),version_tag:r.data?.version_tag??""}}let n=await _({appKey:e,sourceType:s(t.type),filePath:t.file,contentType:"manifest"===(r=t.type)||"business_templates"===r?"application/x-yaml":"events"===r||"tools"===r?"application/json":"application/zip"});return{...i(t),source_type:s(t.type),version_tag:n.data?.version_tag??"",business_template_sync_result:n.data?.business_template_sync_result}}function el(e){let t=i(e);return{type:t.type,file_name:t.file_name,file_size:t.file_size,file_size_human:function(e){let t=["B","KiB","MiB","GiB"],r=e,n=0;for(;r>=1024&&n<t.length-1;)r/=1024,n+=1;return 0===n?`${e} B`:`${r>=10?r.toFixed(1):r.toFixed(2)} ${t[n]}`}(t.file_size)}}function ec(e,t,r){let o=e instanceof Error?e:Error(String(e)),s=t.map(e=>({...e})),i={uploaded_artifacts:r.map(e=>e.type)},a=o.details;return o.details=n(a)?{...a,...i,package_sizes:s}:{...void 0===a?{}:{cause:a},...i,package_sizes:s},r.length>0&&(o.message+=`
|
|
12
3
|
远端草稿已确认写入:${r.map(e=>e.type).join(", ")};未执行回滚。`),t.length>0&&!o.message.includes("压缩包大小:")&&(o.message=`${o.message}
|
|
13
|
-
${["压缩包大小:",...t.map(e=>` ${e.type}: ${e.file_name} (${e.file_size_human})`)].join("\n")}`),o}async function
|
|
4
|
+
${["压缩包大小:",...t.map(e=>` ${e.type}: ${e.file_name} (${e.file_size_human})`)].join("\n")}`),o}async function ep(e){return ed(e,"manifest","manifest")}async function eu(e){return ed(e,"业务模板","business_templates")}async function ed(e,r,n){let o=(0,N.readFileSync)(e,"utf8"),s=await f(o,"strict",n),i=s.data,a={valid:!!i?.success,manifest:i?.manifest,errors:g(i?.errors??[]),warnings:g(i?.warnings??[]),log_id:s.log_id??t()??""};if(!a.valid){var l,p;throw new c((l=r,0===(p=a.errors).length?`${l} 校验失败`:[`${l} 校验失败`,`${l} 校验错误:`,...p.map(e=>` - [${e.code}] ${e.path}: ${e.message}`)].join("\n")),{code:"DBX_VALIDATION_FAILED",details:a,logId:a.log_id})}return{...a,valid:!0}}function e_(e){let r=e?.results.find(e=>3!==e.sync_status||e.error_message?.trim());if(e&&!r)return;let n=r?`${r.template_key}: ${r.error_message?.trim()||`sync_status=${r.sync_status}`}`:"未返回同步结果";throw new c(`业务模板同步失败: ${n}`,{code:"DBX_CONFIG_SYNC_FAILED",details:e,logId:t()})}function ef(e,t){if(!(0,N.existsSync)(e)||!(0,N.statSync)(e).isFile())throw Error(`未找到 ${t} 文件: ${e}`)}export{V as miniAppDetailUrl,U as miniAppVersionDetailUrl,P as resolveProjectAppId,et as runBusinessTemplatesUpload,$ as runFrontendBuildCheck,Z as uploadArtifacts};
|
package/dist/2168~0.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
let e,t;import"node:module";import{__webpack_require__ as r}from"./rslib-runtime~0.js";import"./628~0.js";import"./9652~0.js";import"./8663~0.js";import{package_namespaceObject as n,getLastHttpResponseLogId as o,getAuthOptions as a,hasJsonOption as i,version as s,command_Command as c,configureCommandOutput as l,CommanderError as _,build_DBX_BUILD_CONFIG as u,isRecord as d}from"./4315~0.js";import{types_TokenStatus as p,chalkStderr as m,whoami as f,source as g,startLogin as v,login as h,completeLogin as C}from"./5610~0.js";import{execa as S,TeaUploader as w}from"./4913~0.js";let y=JSON.parse('{"UU":"@doubao-dev/cli"}').UU,b=n.XL;async function E(e={}){return h(R(e))}async function K(e={}){return v(R(e))}async function N(e,t={}){return C(e,R(t))}async function A(e={}){return f(R(e))}function M(e){switch(e){case p.Pending:return"正在等待授权……";case p.SlowDown:return"服务端要求降低轮询频率,正在延长等待时间……";case p.Authorized:return"授权已完成。";case p.Expired:return"授权已过期。";case p.Invalid:return"授权无效。";default:return`授权状态:${String(e)}`}}function R(e){var t,r,n;let o,i=a();return{...e,baseUrl:i.baseUrl,allowedOrigins:(t=i.allowedOrigins,[...new Set([...t??[],...e.allowedOrigins??[]])]),requestHeaders:(r=i.requestHeaders,n=e.requestHeaders,o=new Headers(r),n&&new Headers(n).forEach((e,t)=>{o.set(t,e)}),o)}}let k="<已隐藏>",j=/^(?:api[_-]?key|authorization|bearer|token|headers?|prompt|messages?|body|arguments?|arguments_json|result|raw_result_text|raw_mcp_result_json|content)$/i;function O(e){return e instanceof Error?`${e.name}: ${U(e.message)}`:"string"==typeof e?U(e):Array.isArray(e)?e.map(e=>O(e)):e&&"object"==typeof e?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,j.test(e)?k:O(t)])):e}function U(e){return e.replace(/Bearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer <已隐藏>").replace(/("?(?:api[_-]?key|authorization|token|secret|cookie)"?\s*[=:]\s*)("?)[^\s,;}]+/gi,"$1$2<已隐藏>").replace(/(\b(?:body|prompt|messages?|arguments?|result|content)"?\s*[=:]\s*).*$/gi,"$1<已隐藏>").replace(/https?:\/\/[^\s\])}"']+/gi,"<接口地址已隐藏>").replace(/(?:\/[A-Za-z0-9._-]+){3,}(?:\.[A-Za-z0-9._-]+)?/g,"<本地路径已隐藏>").replace(/[A-Za-z]:\\(?:[^\s\\]+\\){2,}[^\s,;]*/g,"<本地路径已隐藏>")}function x(e,t){return/意图|用户输入|入参|结果|目录|路径|prompt|message|body|argument/i.test(e)?[e,k]:[e,O(t)]}function P(e){let t=e instanceof Error&&e.name?e.name:"Error",r=e instanceof Error?e.message:String(e),n=r.match(/\bHTTP[=: ]+(\d{3})\b/i)?.[1],o=r.match(/(?:错误码|code)[=: ]+(-?[A-Za-z0-9_]+)/i)?.[1];return[t,n?`HTTP ${n}`:void 0,o?`错误码 ${o}`:void 0].filter(Boolean).join(",")}function H(e){return{...e,reason:U(e.reason),hint:e.hint?U(e.hint):void 0}}let I=r("node:os"),$=r("node:util");async function T(){try{let r=await A({fetch:(e,t)=>fetch(e,{...t,signal:AbortSignal.timeout(3e3)})});!e&&r.loggedIn&&r.uid&&(t=r.uid)}catch{}}async function L(e){await Z({name:"cli_command",params:{...X(e),cli_command:e.command,cli_output_mode:e.outputMode}})}async function D(e){await Z({name:"cli_dev_action",params:{...X(e),cli_action:e.action,cli_dev_session_id:e.devSessionId,cli_action_sequence:Math.max(1,Math.round(e.actionSequence))}})}async function z(e){await Z({name:"cli_eval_phase",params:Y({...W(e),cli_eval_execution_id:e.executionId,cli_eval_run_id:e.runId,cli_eval_run_type:e.runType,cli_eval_mode:e.mode,cli_eval_phase:e.phase,cli_eval_phase_sequence:Q(e.phaseSequence)})})}async function B(e){var t;await Z({name:"cli_eval_run",params:Y({...W(e),cli_eval_execution_id:e.executionId,cli_eval_run_id:e.runId,cli_eval_run_type:e.runType,cli_eval_mode:e.mode,cli_eval_rollout_mode:e.rolloutMode,cli_eval_intent_count:Q(e.intentCount),cli_eval_pass_k:Q(e.passK),cli_eval_concurrency:Q(e.concurrency),cli_eval_pass_threshold:void 0!==(t=e.passThreshold)&&Number.isFinite(t)?t:void 0,cli_eval_render_enabled:G(e.renderEnabled),cli_eval_total_cases:Q(e.totalCases),cli_eval_evaluated_cases:Q(e.evaluatedCases),cli_eval_passed_cases:Q(e.passedCases),cli_eval_blocked_cases:Q(e.blockedCases),cli_eval_skipped_cases:Q(e.skippedCases),cli_eval_release_result:e.releaseResult,cli_eval_veto_hit:G(e.vetoHit),cli_eval_l1_platform_count:Q(e.l1PlatformCount),cli_eval_l2_tool_count:Q(e.l2ToolCount),cli_eval_l3_skill_count:Q(e.l3SkillCount),cli_eval_case_quality_count:Q(e.caseQualityCount),cli_eval_other_intent_count:Q(e.otherIntentCount)})})}async function V(e,t){let r=performance.now();try{let n=await t();return await D({...e,durationMs:performance.now()-r,status:"success"}),n}catch(t){throw await D({...e,durationMs:performance.now()-r,error:t,status:q(t)}),t}}async function F(){try{await e?.flush(3e3)}catch{}}function q(e){let t=J(e);return"user_cancelled"===t?"cancelled":"timeout_error"===t?"timeout":"failed"}function J(e){let t=d(e)?e:void 0,r=e instanceof Error?e.name.toLowerCase():"",n=(e instanceof Error?e.message:String(e)).toLowerCase(),o="string"==typeof t?.code?t.code.toLowerCase():"";return t?.exitCode===2||o.startsWith("commander.")?"usage_error":/^(econn|enet|enotfound|eai_again)/.test(o)?"network_error":"aborterror"===r||"evalrunstoppederror"===r||/cancel(?:led|ed)|用户取消/.test(n)?"user_cancelled":/timeout|timed out|超时/.test(`${r} ${o} ${n}`)?"timeout_error":/auth|credential|login|access token|token (?:expired|invalid)|登录|鉴权|认证/.test(n)?"auth_error":/device|debug router|二维码|扫码|真机|设备连接/.test(n)?"device_connection_error":/econn|enet|enotfound|eai_again|fetch|network|socket|网络/.test(`${o} ${n}`)?"network_error":/enoent|eacces|eperm|enotdir|eisdir/.test(o)?"filesystem_error":/manifest|config|yaml|配置/.test(n)?"config_error":/validat|schema|invalid|校验|无效/.test(n)?"validation_error":/build|compile|rspack|构建|编译/.test(n)?"build_error":/dependency|module not found|package|依赖/.test(n)?"dependency_error":/service|daemon|moleculer|服务/.test(n)?"service_error":"unknown_error"}async function Z(r){if("test"!==process.env.NODE_ENV)try{e??=new w(t),await e.upload(r)}catch{}}function X(e){var t;let r,n=function(){let e=process.env.npm_config_user_agent;if(!e)return{name:"unknown"};let[t=""]=e.split(" "),[r="unknown",n]=t.split("/"),o="npm"===r&&"exec"===process.env.npm_command?"npx":r;return{name:["npm","npx","pnpm"].includes(o)?o:"unknown",...n?{version:n}:{}}}();return{cli_status:e.status,cli_duration_ms:Q(e.durationMs)??0,cli_version:s,cli_package_name:y,cli_run_env:process.env.CI?"ci":"local",cli_os_name:process.platform,cli_node_version:process.version,cli_package_manager:n.name,...e.appId?{cli_app_id:e.appId}:{},...n.version?{cli_package_manager_version:n.version}:{},...void 0!==e.error?{cli_error_type:e.errorType??J(e.error),cli_error_message:(r=(t=e.error)instanceof Error?t.message:String(t),(0,$.stripVTControlCharacters)(r||"Unknown error").split(process.cwd()).join("<project>").split((0,I.homedir)()).join("<home>").replace(/([?&](?:access_?token|token|code)=)[^&\s]+/gi,"$1<redacted>").replace(/(authorization:\s*bearer\s+)\S+/gi,"$1<redacted>").slice(0,1024)),...e.errorStage?{cli_error_stage:e.errorStage}:{}}:{}}}function G(e){return void 0===e?void 0:Number(e)}function W(e){let t=X(e);return"string"==typeof t.cli_error_message&&(t.cli_error_message=U(t.cli_error_message)),t}function Y(e){let t={};for(let[r,n]of Object.entries(e))"number"==typeof n&&Number.isFinite(n)?t[r]=n:"string"==typeof n&&n.length>0&&(t[r]=n);return t}function Q(e){return void 0!==e&&Number.isFinite(e)?Math.max(0,Math.round(e)):void 0}let ee=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;function et(e){return e.trim().replace(/^v/i,"")}function er(e){return ee.test(e.trim())}function en(e,t){let r=eo(e),n=eo(t);if(!r||!n)throw Error(`语义化版本号无效: ${!r?e:t}`);for(let e=0;e<3;e+=1){if(r.version[e]>n.version[e])return 1;if(r.version[e]<n.version[e])return -1}return function(e,t){if(0===e.length&&0===t.length)return 0;if(0===e.length)return 1;if(0===t.length)return -1;let r=Math.max(e.length,t.length);for(let n=0;n<r;n+=1){let r=e[n],o=t[n];if(void 0===r)return -1;if(void 0===o)return 1;let a=function(e,t){let r=/^\d+$/.test(e),n=/^\d+$/.test(t);return r&&n?BigInt(e)===BigInt(t)?0:BigInt(e)<BigInt(t)?-1:1:r?-1:n?1:e===t?0:e<t?-1:1}(r,o);if(0!==a)return a}return 0}(r.prerelease,n.prerelease)}function eo(e){let t=e.trim().match(ee);return t?{version:[Number(t[1]),Number(t[2]),Number(t[3])],prerelease:t[4]?.split(".")??[]}:null}let ea=r("node:fs"),ei=r("node:path");async function es(e){if(eu(e.currentVersion))return;let t=e.runner??{npmView:async t=>(await S("npm",["view",t,"version"],{cancelSignal:e.cancelSignal,env:process.env,killSignal:"SIGKILL",stdio:["ignore","pipe","pipe"],timeout:e.timeoutMs??5e3})).stdout.trim()};await ed(e.currentVersion,t)}async function ec(e){let t=et(e);if(!er(t))return;let r=Date.now();e_({...ep()??{},latest_version:t,checked_at:r,attempted_at:r})}function el(e){let t=et(e);er(t)&&e_({...ep()??{},ignored_version:t})}function e_(e){try{ea.mkdirSync(ef(),{recursive:!0}),em(ea.constants.O_WRONLY|ea.constants.O_CREAT|ea.constants.O_TRUNC|ea.constants.O_NONBLOCK,t=>{ea.fstatSync(t).isFile()&&ea.writeFileSync(t,`${JSON.stringify(e,null,2)}
|
|
2
2
|
`,"utf8")})}catch{}}function eu(e){return!!process.env.DBX_CLI_NO_UPDATE_NOTIFIER||!!process.env.CI||!!process.env.BUILD_NUMBER||!!process.env.RUN_ID||!er(et(e))}async function ed(e,t){let r=et(await t.npmView(y)),n=et(e);er(r)&&er(n)&&await ec(r)}function ep(){try{let e=em(ea.constants.O_RDONLY|ea.constants.O_NONBLOCK,e=>ea.fstatSync(e).isFile()?ea.readFileSync(e,"utf8"):""),t=JSON.parse(e);return d(t)?t:null}catch{return null}}function em(e,t){let r=ea.openSync(ei.join(ef(),"update-state.json"),e,438);try{return t(r)}finally{ea.closeSync(r)}}function ef(){return ei.join(I.homedir(),".dbx")}let eg=!1;function ev(e){let t=eg;return eg=e,t}function eh(){return eg}let eC=r("../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/index.js");var eS=r.n(eC);class ew extends Error{code;details;exitCode;json;logId;constructor(e,t={}){super(e),this.code=t.code??"DBX_INTERNAL_ERROR",this.details=t.details,this.exitCode=t.exitCode??1,this.json=t.json,this.logId=t.logId}}class ey extends ew{constructor(e,t="DBX_USAGE_ERROR",r){super(e,{code:t,details:r,exitCode:2})}}async function eb(e,t){try{return await t()}catch(r){if(r instanceof ew)throw r;let t=d(r)?r:void 0;throw new ew(eN(r)??String(r),{code:e,details:t?.details,logId:"string"==typeof t?.logId?t.logId:void 0})}}async function eE(e,t,r={}){let n,o,a=(o=!!(n=e.optsWithGlobals()).json,{verbose:!!(n.verbose||eS().enabled("doubao-dev")),json:o,error(e){throw new ey(e)},log(e=""){o||process.stdout.write(`${e}
|
|
3
|
-
`)},warn(e,t={}){if(o)return;let r="label"===t.style?function(e,t="警告".padEnd(5)){let[r="",...n]=e.split("\n");return[`${t} ${r}`,...n.map(e=>`${"".padEnd(8)}${e}`)].join("\n")}(e,g.bold.yellow("警告".padEnd(5))):`警告:${e}`;process.stderr.write(`${r}
|
|
3
|
+
`)},warn(e,t={}){if(o)return;let r="raw"===t.style?e:"label"===t.style?function(e,t="警告".padEnd(5)){let[r="",...n]=e.split("\n");return[`${t} ${r}`,...n.map(e=>`${"".padEnd(8)}${e}`)].join("\n")}(e,g.bold.yellow("警告".padEnd(5))):`警告:${e}`;process.stderr.write(`${r}
|
|
4
4
|
`)}}),i=function(e){let t=[];for(let r=e;r?.parent;r=r.parent)t.unshift(r.name());return t.join("_").replace(/-/g,"_")}(e),s=!1!==r.reportEvent&&"dev"!==i,c=performance.now(),l=ev(a.verbose&&!a.json);try{let e=await t(a);a.json&&void 0!==e&&process.stdout.write(`${JSON.stringify(e,null,2)}
|
|
5
5
|
`),s&&await L({appId:a.targetAppId,command:i,durationMs:performance.now()-c,outputMode:a.json?"json":"human",status:130===process.exitCode?"cancelled":"success"})}catch(e){throw s&&await L({appId:a.targetAppId,command:i,durationMs:performance.now()-c,error:e,errorStage:"execute",outputMode:a.json?"json":"human",status:q(e)}),e}finally{ev(l)}}function eK(e){if(d(e)){if("string"==typeof e.logId&&e.logId)return e.logId;if("string"==typeof e.log_id&&e.log_id)return e.log_id}return o()}function eN(e){return e instanceof Error&&e.message?e.message:void 0}function eA(e){return async()=>{let t=await e();return"function"==typeof t?t:t.default}}let eM=[{path:["init"],load:eA(()=>import("./init.js").then(e=>e.init_namespaceObject))},{path:["upgrade"],load:eA(()=>import("./upgrade.js"))},{path:["dev"],load:eA(()=>import("./dev.js").then(e=>e.dev_namespaceObject))},{path:["check"],load:eA(()=>import("./check.js").then(e=>e.check_namespaceObject))},{path:["build"],load:eA(()=>import("./build.js").then(e=>e.build_namespaceObject))},{path:["config","sync"],load:eA(()=>import("./sync.js"))},{path:["sandbox","info"],load:eA(()=>import("./info.js"))},{path:["dev","stop"],load:eA(()=>import("./stop.js"))},{path:["auth","login"],load:eA(()=>import("./login.js"))},{path:["auth","status"],load:eA(()=>import("./status.js"))},{path:["mcp","init"],load:eA(()=>import("./8245~0.js").then(e=>e.init_namespaceObject))},{path:["mcp","preview"],load:eA(()=>import("./1677~0.js").then(e=>e.preview_namespaceObject))},{path:["mcp","demo"],load:eA(()=>import("./demo.js"))},{path:["eval","gen-trajectory"],load:eA(()=>import("./gen-trajectory.js"))},{path:["eval","gen-explore"],load:eA(()=>import("./gen-explore.js"))},{path:["eval","run"],load:eA(()=>import("./run.js").then(e=>e.run_namespaceObject))},{path:["eval","server"],load:eA(()=>import("./server.js").then(e=>e.server_namespaceObject))},{path:["eval","report"],load:eA(()=>import("./report.js").then(e=>e.report_namespaceObject))},{path:["eval","skill"],load:eA(()=>import("./skill.js"))},{path:["skills"],load:eA(()=>import("./skills.js").then(e=>e.skills_namespaceObject))}],eR={auth:"认证管理",build:"上传并触发云构建",check:"校验配置文件或检查 Agentic Service Simulator 链路",config:"平台配置","config sync":"同步配置到开发者平台",dev:"开发与调试",eval:"自动化评测",init:"创建一个新的 dbx 项目",mcp:"MCP 工具","mcp init":"初始化 MCP Bridge Skill","mcp preview":"启动本地 MCP Preview","mcp demo":"启动内置 MCP 示例服务",sandbox:"Sandbox 信息","sandbox info":"查看 Sandbox 信息",skills:"管理内置开发 Skill",upgrade:"升级 Doubao Dev CLI"};async function ek(e=process.argv){var t,r,n,o;let a,p,f,g=performance.now(),v=i(e),h=(t=v,(a=l(new c,t).name("dbx").description("Doubao Open CLI").version(s,"-V, --version","显示版本号").option("--json","输出机器可读 JSON").option("--verbose","输出详细日志").showHelpAfterError()).action(()=>a.outputHelp()),a),C=ex(e),S=eu(s)?null:(r=s,n=ep(),p=et(n?.latest_version??""),f=et(r),!er(p)||!er(f)||0>=en(p,f)||et(n?.ignored_version??"")===p?null:{current:f,latest:p,message:`dbx 新版本 ${p} 已可用,当前版本为 ${f},请运行:dbx upgrade`,command:"dbx upgrade"}),w=new Set(u.excludeCommands),y=await eU(C,w),b=new Map;(function(e,t,r,n){for(let o of r){let r=ej(e,t,o.path.slice(0,-1),n),a=eO(o.factory(),n);r.addCommand(a),t.set(o.path.join(" "),a)}})(h,b,y,v),function(e,t,r,n,o,a){for(let i of r){if(eH(i.path,o)||n&&(eP(i.path,n)||function(e,t){return e.length<t.length&&e.every((e,r)=>e===t[r])}(i.path,n)))continue;let r=i.path.join(" ");if(t.has(r))continue;let s=ej(e,t,i.path.slice(0,-1),a),_=l(new c(i.path.at(-1)).description(eR[r]??""),a);_.action(()=>_.outputHelp()),s.addCommand(_),t.set(r,_)}}(h,b,eM,C,w,v);let E=new AbortController;C?.[0]!=="upgrade"&&function(e,t,r=Date.now()){if(eu(e))return;let n=ep();if(function(e,t=Date.now()){let r=e?.attempted_at??e?.checked_at;return!r||t-r>=6e4}(n,r)){e_({...n??{},attempted_at:r});try{t()}catch{}}}(s,()=>{es({cancelSignal:E.signal,currentVersion:s}).catch(()=>void 0)});try{if(S&&function(e,t,r,n=!!(process.stdin.isTTY&&process.stderr.isTTY)){if(r||!n)return!1;let o=e.indexOf("--",2);return!e.slice(2,o<0?void 0:o).some(e=>["-h","--help","-V","--version"].includes(e))&&t?.[0]!=="upgrade"}(e,C,v)){let{promptForUpdate:e}=await import("./prompt.js");if(await e(S))return}await h.parseAsync(e)}catch(e){if(e instanceof _){if(0===e.exitCode)return;C&&await L({command:C.join("_").replace(/-/g,"_"),durationMs:performance.now()-g,error:e,errorStage:"parse_args",outputMode:v?"json":"human",status:"failed"}),v&&(o=e.message.replace(/^error:\s*/i,""),process.stdout.write(`${JSON.stringify({error:{code:"DBX_USAGE_ERROR"},message:o},null,2)}
|
|
6
6
|
`)),process.exitCode=2;return}if(v)process.stdout.write(`${JSON.stringify(function(e){var t;let r=eN(e),n=e instanceof ew&&void 0!==e.json?e.json:{};if(!d(n))return n;let{details:o,...a}=d(n.error)?n.error:{},i=eK(e),s=d(t=e)?t.details:void 0;return{...n,error:{...a,code:e instanceof ew?e.code:"DBX_INTERNAL_ERROR"},...r&&!("message"in n)?{message:r}:{},...i?{log_id:i}:{},...void 0===s?{}:{details:s}}}(e),null,2)}
|
package/dist/4315~0.js
CHANGED
|
@@ -19,4 +19,4 @@ Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[t]?this._life
|
|
|
19
19
|
`):this._showHelpAfterError&&(this._outputConfiguration.writeErr("\n"),this.outputHelp({error:!0}));let i=e||{},r=i.exitCode||1,s=i.code||"commander.error";this._exit(r,s,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in r.env){let e=t.attributeName();(void 0===this.getOptionValue(e)||["default","config","env"].includes(this.getOptionValueSource(e)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,r.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new m(this.options),e=t=>void 0!==this.getOptionValue(t)&&!["default","implied"].includes(this.getOptionValueSource(t));this.options.filter(i=>void 0!==i.implied&&e(i.attributeName())&&t.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach(t=>{Object.keys(t.implied).filter(t=>!e(t)).forEach(e=>{this.setOptionValueWithSource(e,t.implied[e],"implied")})})}missingArgument(t){let e=`error: missing required argument '${t}'`;this.error(e,{code:"commander.missingArgument"})}optionMissingArgument(t){let e=`error: option '${t.flags}' argument missing`;this.error(e,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(t){let e=`error: required option '${t.flags}' not specified`;this.error(e,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(t,e){let i=t=>{let e=t.attributeName(),i=this.getOptionValue(e),r=this.options.find(t=>t.negate&&e===t.attributeName()),s=this.options.find(t=>!t.negate&&e===t.attributeName());return r&&(void 0===r.presetArg&&!1===i||void 0!==r.presetArg&&i===r.presetArg)?r:s||t},r=t=>{let e=i(t),r=e.attributeName();return"env"===this.getOptionValueSource(r)?`environment variable '${e.envVar}'`:`option '${e.flags}'`},s=`error: ${r(t)} cannot be used with ${r(e)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(t){if(this._allowUnknownOption)return;let e="";if(t.startsWith("--")&&this._showSuggestionAfterError){let i=[],r=this;do{let t=r.createHelp().visibleOptions(r).filter(t=>t.long).map(t=>t.long);i=i.concat(t),r=r.parent}while(r&&!r._enablePositionalOptions);e=g(t,i)}let i=`error: unknown option '${t}'${e}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(t){if(this._allowExcessArguments)return;let e=this.registeredArguments.length,i=t.length,r=this.parent?` for '${this.name()}'`:"",s=t.join(", "),n=`error: too many arguments${r}. Expected ${e} argument${1===e?"":"s"} but got ${i}: ${s}.`;this.error(n,{code:"commander.excessArguments"})}unknownCommand(){let t=this.args[0],e="";if(this._showSuggestionAfterError){let i=[];this.createHelp().visibleCommands(this).forEach(t=>{i.push(t.name()),t.alias()&&i.push(t.alias())}),e=g(t,i)}let i=`error: unknown command '${t}'${e}`;this.error(i,{code:"commander.unknownCommand"})}version(t,e,i){if(void 0===t)return this._version;this._version=t,e=e||"-V, --version",i=i||"output the version number";let r=this.createOption(e,i);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on("option:"+r.name(),()=>{this._outputConfiguration.writeOut(`${t}
|
|
20
20
|
`),this._exit(0,"commander.version",t)}),this}description(t,e){return void 0===t&&void 0===e?this._description:(this._description=t,e&&(this._argsDescription=e),this)}summary(t){return void 0===t?this._summary:(this._summary=t,this)}alias(t){if(void 0===t)return this._aliases[0];let e=this;if(0!==this.commands.length&&this.commands[this.commands.length-1]._executableHandler&&(e=this.commands[this.commands.length-1]),t===e._name)throw Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(t);if(i){let e=[i.name()].concat(i.aliases()).join("|");throw Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${e}'`)}return e._aliases.push(t),this}aliases(t){return void 0===t?this._aliases:(t.forEach(t=>this.alias(t)),this)}usage(t){if(void 0===t){if(this._usage)return this._usage;let t=this.registeredArguments.map(t=>h(t));return[].concat(this.options.length||null!==this._helpOption?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=t,this}name(t){return void 0===t?this._name:(this._name=t,this)}helpGroup(t){return void 0===t?this._helpGroupHeading??"":(this._helpGroupHeading=t,this)}commandsGroup(t){return void 0===t?this._defaultCommandGroup??"":(this._defaultCommandGroup=t,this)}optionsGroup(t){return void 0===t?this._defaultOptionGroup??"":(this._defaultOptionGroup=t,this)}_initOptionGroup(t){this._defaultOptionGroup&&!t.helpGroupHeading&&t.helpGroup(this._defaultOptionGroup)}_initCommandGroup(t){this._defaultCommandGroup&&!t.helpGroup()&&t.helpGroup(this._defaultCommandGroup)}nameFromFilename(t){return this._name=_.basename(t,_.extname(t)),this}executableDir(t){return void 0===t?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let e=this.createHelp(),i=this._getOutputContext(t);e.prepareContext({error:i.error,helpWidth:i.helpWidth,outputHasColors:i.hasColors});let r=e.formatHelp(this,e);return i.hasColors?r:this._outputConfiguration.stripColor(r)}_getOutputContext(t){let e,i,r,s=!!(t=t||{}).error;return s?(e=t=>this._outputConfiguration.writeErr(t),i=this._outputConfiguration.getErrHasColors(),r=this._outputConfiguration.getErrHelpWidth()):(e=t=>this._outputConfiguration.writeOut(t),i=this._outputConfiguration.getOutHasColors(),r=this._outputConfiguration.getOutHelpWidth()),{error:s,write:t=>(i||(t=this._outputConfiguration.stripColor(t)),e(t)),hasColors:i,helpWidth:r}}outputHelp(t){let e;"function"==typeof t&&(e=t,t=void 0);let i=this._getOutputContext(t),r={error:i.error,write:i.write,command:this};this._getCommandAndAncestors().reverse().forEach(t=>t.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let s=this.helpInformation({error:i.error});if(e&&"string"!=typeof(s=e(s))&&!Buffer.isBuffer(s))throw Error("outputHelp callback must return a string or a Buffer");i.write(s),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(t=>t.emit("afterAllHelp",r))}helpOption(t,e){return"boolean"==typeof t?t?(null===this._helpOption&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null:(this._helpOption=this.createOption(t??"-h, --help",e??"display help for command"),(t||e)&&this._initOptionGroup(this._helpOption)),this}_getHelpOption(){return void 0===this._helpOption&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(t){return this._helpOption=t,this._initOptionGroup(t),this}help(t){this.outputHelp(t);let e=Number(r.exitCode??0);0===e&&t&&"function"!=typeof t&&t.error&&(e=1),this._exit(e,"commander.help","(outputHelp)")}addHelpText(t,e){let i=["beforeAll","before","after","afterAll"];if(!i.includes(t))throw Error(`Unexpected value for position to addHelpText.
|
|
21
21
|
Expecting one of '${i.join("', '")}'`);let r=`${t}Help`;return this.on(r,t=>{let i;(i="function"==typeof e?e({error:t.error,command:t.command}):e)&&t.write(`${i}
|
|
22
|
-
`)}),this}_outputHelpIfRequested(t){let e=this._getHelpOption();e&&t.find(t=>e.is(t))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}}function v(t){return t.map(t=>{let e,i;if(!t.startsWith("--inspect"))return t;let r="127.0.0.1",s="9229";return(null!==(i=t.match(/^(--inspect(-brk)?)$/))?e=i[1]:null!==(i=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))?(e=i[1],/^\d+$/.test(i[3])?s=i[3]:r=i[3]):null!==(i=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))&&(e=i[1],r=i[3],s=i[4]),e&&"0"!==s)?`${e}=${r}:${parseInt(s)+1}`:t})}function A(){return!r.env.NO_COLOR&&"0"!==r.env.FORCE_COLOR&&"false"!==r.env.FORCE_COLOR&&(!!r.env.FORCE_COLOR||void 0!==r.env.CLICOLOR_FORCE||void 0)}new C;let b={authBaseUrl:"https://developer.doubao.com",apiBaseUrl:"https://developer.doubao.com",authAllowedOrigins:["https://developer.doubao.com"],excludeCommands:[],requestHeaders:{}},E=new Set(["x-tt-env","x-use-ppe"]),y=(V=b,{authBaseUrl:(D=(e=process.env.DBX_BUILD_BASE_DOMAIN?H(function(t){let e=t.trim();if(/^http:\/\//i.test(e))throw Error("DBX 构建配置 baseDomain 必须使用 HTTPS");return/^https:\/\//i.test(e)?e:`https://${e}`}(process.env.DBX_BUILD_BASE_DOMAIN),"baseDomain"):void 0,{authBaseUrl:process.env.DBX_BUILD_AUTH_BASE_URL?H(process.env.DBX_BUILD_AUTH_BASE_URL,"authBaseUrl"):e,apiBaseUrl:process.env.DBX_BUILD_API_BASE_URL?H(process.env.DBX_BUILD_API_BASE_URL,"apiBaseUrl"):e,authAllowedOrigins:process.env.DBX_BUILD_AUTH_ALLOWED_ORIGINS?T(process.env.DBX_BUILD_AUTH_ALLOWED_ORIGINS):void 0,excludeCommands:process.env.DBX_BUILD_EXCLUDE_COMMANDS?T(process.env.DBX_BUILD_EXCLUDE_COMMANDS):void 0,requestHeaders:process.env.DBX_BUILD_REQUEST_HEADERS_JSON?function(t){let e=JSON.parse(t);if("object"!=typeof e||null===e||Array.isArray(e))throw Error("DBX_BUILD_REQUEST_HEADERS_JSON 必须是 JSON 对象");let i={};for(let[t,r]of Object.entries(e)){let e=t.toLowerCase();if(E.has(e)){if("string"!=typeof r)throw Error(`DBX_BUILD_REQUEST_HEADERS_JSON 中请求头 ${e} 的值必须是字符串`);i[e]=r}}return i}(process.env.DBX_BUILD_REQUEST_HEADERS_JSON):void 0})).authBaseUrl??V.authBaseUrl,apiBaseUrl:D.apiBaseUrl??V.apiBaseUrl,authAllowedOrigins:[...V.authAllowedOrigins,...D.authAllowedOrigins??[]],excludeCommands:D.excludeCommands??V.excludeCommands,requestHeaders:{...V.requestHeaders,...D.requestHeaders??{}}});function w(){var t;return{baseUrl:H(y.authBaseUrl,"authBaseUrl"),allowedOrigins:[...new Set([$((t=y).authBaseUrl,"authBaseUrl"),$(t.apiBaseUrl,"apiBaseUrl"),...t.authAllowedOrigins.map(t=>$(t,"authAllowedOrigins"))])],requestHeaders:y.requestHeaders}}function x(){return H(y.apiBaseUrl,"apiBaseUrl")}function S(t){return t.replace(/\/+$/,"")}function H(t,e){let i;try{i=new URL(S(t))}catch{throw Error(`DBX 构建配置 ${e} 必须是完整的 HTTPS 地址`)}if("https:"!==i.protocol)throw Error(`DBX 构建配置 ${e} 必须使用 HTTPS`);return S(i.toString())}function $(t,e){return new URL(H(t,e)).origin}function T(t){return"string"==typeof t?t.split(",").map(t=>t.trim()).filter(Boolean):Array.isArray(t)?t.map(t=>String(t).trim()).filter(Boolean):[]}var V,D,k=JSON.parse('{"rE":"0.0.
|
|
22
|
+
`)}),this}_outputHelpIfRequested(t){let e=this._getHelpOption();e&&t.find(t=>e.is(t))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}}function v(t){return t.map(t=>{let e,i;if(!t.startsWith("--inspect"))return t;let r="127.0.0.1",s="9229";return(null!==(i=t.match(/^(--inspect(-brk)?)$/))?e=i[1]:null!==(i=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))?(e=i[1],/^\d+$/.test(i[3])?s=i[3]:r=i[3]):null!==(i=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))&&(e=i[1],r=i[3],s=i[4]),e&&"0"!==s)?`${e}=${r}:${parseInt(s)+1}`:t})}function A(){return!r.env.NO_COLOR&&"0"!==r.env.FORCE_COLOR&&"false"!==r.env.FORCE_COLOR&&(!!r.env.FORCE_COLOR||void 0!==r.env.CLICOLOR_FORCE||void 0)}new C;let b={authBaseUrl:"https://developer.doubao.com",apiBaseUrl:"https://developer.doubao.com",authAllowedOrigins:["https://developer.doubao.com"],excludeCommands:[],requestHeaders:{}},E=new Set(["x-tt-env","x-use-ppe"]),y=(V=b,{authBaseUrl:(D=(e=process.env.DBX_BUILD_BASE_DOMAIN?H(function(t){let e=t.trim();if(/^http:\/\//i.test(e))throw Error("DBX 构建配置 baseDomain 必须使用 HTTPS");return/^https:\/\//i.test(e)?e:`https://${e}`}(process.env.DBX_BUILD_BASE_DOMAIN),"baseDomain"):void 0,{authBaseUrl:process.env.DBX_BUILD_AUTH_BASE_URL?H(process.env.DBX_BUILD_AUTH_BASE_URL,"authBaseUrl"):e,apiBaseUrl:process.env.DBX_BUILD_API_BASE_URL?H(process.env.DBX_BUILD_API_BASE_URL,"apiBaseUrl"):e,authAllowedOrigins:process.env.DBX_BUILD_AUTH_ALLOWED_ORIGINS?T(process.env.DBX_BUILD_AUTH_ALLOWED_ORIGINS):void 0,excludeCommands:process.env.DBX_BUILD_EXCLUDE_COMMANDS?T(process.env.DBX_BUILD_EXCLUDE_COMMANDS):void 0,requestHeaders:process.env.DBX_BUILD_REQUEST_HEADERS_JSON?function(t){let e=JSON.parse(t);if("object"!=typeof e||null===e||Array.isArray(e))throw Error("DBX_BUILD_REQUEST_HEADERS_JSON 必须是 JSON 对象");let i={};for(let[t,r]of Object.entries(e)){let e=t.toLowerCase();if(E.has(e)){if("string"!=typeof r)throw Error(`DBX_BUILD_REQUEST_HEADERS_JSON 中请求头 ${e} 的值必须是字符串`);i[e]=r}}return i}(process.env.DBX_BUILD_REQUEST_HEADERS_JSON):void 0})).authBaseUrl??V.authBaseUrl,apiBaseUrl:D.apiBaseUrl??V.apiBaseUrl,authAllowedOrigins:[...V.authAllowedOrigins,...D.authAllowedOrigins??[]],excludeCommands:D.excludeCommands??V.excludeCommands,requestHeaders:{...V.requestHeaders,...D.requestHeaders??{}}});function w(){var t;return{baseUrl:H(y.authBaseUrl,"authBaseUrl"),allowedOrigins:[...new Set([$((t=y).authBaseUrl,"authBaseUrl"),$(t.apiBaseUrl,"apiBaseUrl"),...t.authAllowedOrigins.map(t=>$(t,"authAllowedOrigins"))])],requestHeaders:y.requestHeaders}}function x(){return H(y.apiBaseUrl,"apiBaseUrl")}function S(t){return t.replace(/\/+$/,"")}function H(t,e){let i;try{i=new URL(S(t))}catch{throw Error(`DBX 构建配置 ${e} 必须是完整的 HTTPS 地址`)}if("https:"!==i.protocol)throw Error(`DBX 构建配置 ${e} 必须使用 HTTPS`);return S(i.toString())}function $(t,e){return new URL(H(t,e)).origin}function T(t){return"string"==typeof t?t.split(",").map(t=>t.trim()).filter(Boolean):Array.isArray(t)?t.map(t=>String(t).trim()).filter(Boolean):[]}var V,D,k=JSON.parse('{"rE":"0.0.38","XL":"0.4.0"}');function U(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function B(t,e){if(!U(t))return;let i=t[e];return"string"==typeof i&&i?i:void 0}let P=k.rE,I=new(i("node:async_hooks")).AsyncLocalStorage;function N(){return t}function G(e){let i=e.headers.get("x-tt-logid");i&&(t=i)}let L=n(fetch,w()),W=async(t,e)=>{let i=await L(t,e);return G(i),i},F=async(t,e)=>{var i;let r,s=(i=e,r=new Headers(w().requestHeaders),I.getStore()?.forEach((t,e)=>{r.set(e,t)}),i?.headers&&new Headers(i.headers).forEach((t,e)=>r.set(e,t)),{...i,headers:r}),n=await fetch(t,s);return G(n),n};function M(t,e){return I.run(new Headers(t),e)}function j(){return x()}function R(t){return`${j()}${t}`}function q(t){let e=Number(t);if(!/^-?\d+$/.test(t)||!Number.isSafeInteger(e))throw new a("请输入整数");return e}function X(t){let e=q(t);if(e<1)throw new a("请输入大于或等于 1 的整数");return e}function J(t){let e=t.slice(2),i=e.indexOf("--");return(i<0?e:e.slice(0,i)).includes("--json")}function K(t){return(e,i)=>{if(!t.includes(e))throw new a(`可选值为 ${t.join(", ")}`);return[...i,e]}}function Q(t,e){return t.helpOption("-h, --help","显示帮助信息"),t.configureHelp({showGlobalOptions:!0,styleTitle:t=>({"Usage:":"用法:","Arguments:":"参数:","Options:":"选项:","Global Options:":"全局选项:","Commands:":"命令:"})[t]??t}),t.exitOverride(),e&&t.configureOutput({outputError:()=>void 0,writeErr:()=>void 0}),t}export{o as CommanderError,a as InvalidArgumentError,l as argument_Argument,W as authorizedFetch,y as build_DBX_BUILD_CONFIG,K as collectChoiceValues,C as command_Command,Q as configureCommandOutput,F as configuredFetch,x as getApiBaseUrl,R as getApiUrl,w as getAuthOptions,N as getLastHttpResponseLogId,J as hasJsonOption,j as http_getApiBaseUrl,U as isRecord,d as option_Option,k as package_namespaceObject,q as parseInteger,X as parsePositiveInteger,B as stringField,P as version,M as withConfiguredFetchHeaders};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"node:module";import{useKeypress as e,createPrompt as t,useState as l,makeTheme as n,usePrefix as s,isTabKey as i,isEnterKey as r}from"../5641~0.js";function o(e,t){let l=!1!==t;return/^(y|yes)/i.test(e)?l=!0:/^(n|no)/i.test(e)&&(l=!1),l}function d(e){return e?"Yes":"No"}let f=t((t,f)=>{let{transformer:u=d}=t,[a,m]=l("idle"),[y,$]=l(""),_=n(t.theme),c=s({status:a,theme:_});e((e,l)=>{if("idle"===a)if(r(e)){let e=o(y,t.default);$(u(e)),m("done"),f(e)}else if(i(e)){let e=d(!o(y,t.default));l.clearLine(0),l.write(e),$(e)}else $(l.line)});let p=y,w="";"done"===a?p=_.style.answer(y):w=` ${_.style.defaultAnswer(!1===t.default?"y/N":"Y/n")}`;let N=_.style.message(t.message,a);return`${c} ${N}${w} ${p}`});export{f as dist};
|
|
Binary file
|
|
Binary file
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="icon" type="image/svg+xml" href="./favicon.svg" />
|
|
7
7
|
<title>豆包应用插件 Web 调试工具</title>
|
|
8
|
-
<link rel="icon" href="/favicon.svg" type="image/svg+xml"><script type="module" src="/static/js/lib-polyfill.7a78955591.js"></script><script type="module" src="/static/js/lib-react.7b78cf953d.js"></script><script type="module" src="/static/js/200.daf143cd9e.js"></script><script type="module" src="/static/js/
|
|
8
|
+
<link rel="icon" href="/favicon.svg" type="image/svg+xml"><script type="module" src="/static/js/lib-polyfill.7a78955591.js"></script><script type="module" src="/static/js/lib-react.7b78cf953d.js"></script><script type="module" src="/static/js/200.daf143cd9e.js"></script><script type="module" src="/static/js/491.26cad27284.js"></script><script type="module" src="/static/js/index.cefeab0b95.js"></script><link href="/static/css/index.ef5d8bc5ad.css" rel="stylesheet"></head>
|
|
9
9
|
<body>
|
|
10
10
|
<main id="app"></main>
|
|
11
11
|
</body>
|