@doubao-dev/cli 0.0.14 → 0.0.15

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.
Files changed (91) hide show
  1. package/bin/run.js +1 -1
  2. package/dist/1664.js +60 -0
  3. package/dist/180.js +1 -0
  4. package/dist/{bin/win32-x64/security_tasm_codec.exe → 1966.js} +0 -0
  5. package/dist/1966.js.LICENSE.txt +119 -0
  6. package/dist/2585.js +2 -0
  7. package/dist/318.js +1 -0
  8. package/dist/3551.js +1 -0
  9. package/dist/3997.js +2 -0
  10. package/dist/4880.js +1 -0
  11. package/dist/5418.js +3 -0
  12. package/dist/5732.js +1 -0
  13. package/dist/7410.js +2 -0
  14. package/dist/7410.js.LICENSE.txt +1 -0
  15. package/dist/7526.js +1 -0
  16. package/dist/@byted-doubao-apps/create.js +4 -5
  17. package/dist/@byted-doubao-apps/login.js +2 -3
  18. package/dist/@byted-doubao-apps/login~1.js +2 -0
  19. package/dist/@byted-doubao-apps/template-empty/package.json +3 -3
  20. package/dist/@byted-doubao-apps/template-starter/package.json +3 -3
  21. package/dist/@byted-hdt/cli.js +11 -12
  22. package/dist/@inquirer/select.js +1 -0
  23. package/dist/app.js +1 -2
  24. package/dist/assets/web-sdk-debugger/index.html +1 -1
  25. package/dist/assets/web-sdk-debugger/static/css/{index.4b84c01189.css → index.123e72a5bc.css} +1 -1
  26. package/dist/assets/web-sdk-debugger/static/js/index.019ceb233a.js +26 -0
  27. package/dist/assets/web-sdk-debugger/wsd/doubao-apps-api.template.js +0 -0
  28. package/dist/assets/web-sdk-debugger/wsd/doubao-apps-framework.template.js +0 -0
  29. package/dist/auth.js +1 -2
  30. package/dist/browser.js +1 -2
  31. package/dist/components-loader.js +2 -3
  32. package/dist/dbx-demo.js +2 -3
  33. package/dist/demo-server.js +3 -4
  34. package/dist/dev-service-client.js +16 -10
  35. package/dist/dev-service-client.js.LICENSE.txt +89 -0
  36. package/dist/dev-shell.js +5 -2
  37. package/dist/dev-shell.js.LICENSE.txt +59 -0
  38. package/dist/dev.js +18 -19
  39. package/dist/devtools.js +2 -0
  40. package/dist/devtools.js.LICENSE.txt +1 -0
  41. package/dist/environment.js +1 -0
  42. package/dist/eval.js +1 -2
  43. package/dist/get.js +1 -2
  44. package/dist/init.js +6 -7
  45. package/dist/login.js +1 -2
  46. package/dist/main.js +1 -0
  47. package/dist/manifest-mcp-config.js +1 -2
  48. package/dist/project-layout.js +1 -2
  49. package/dist/prompt.js +5 -6
  50. package/dist/push-page.js +1 -2
  51. package/dist/push-widget.js +1 -2
  52. package/dist/rslib-runtime.js +1 -2
  53. package/dist/sandbox.js +1 -2
  54. package/dist/sdk.js +76 -169
  55. package/dist/sdk.js.LICENSE.txt +1 -13
  56. package/dist/sdk~1.js +218 -0
  57. package/dist/sdk~1.js.LICENSE.txt +15 -0
  58. package/dist/skills.js +2 -3
  59. package/dist/static/404/404.html +455 -0
  60. package/dist/static/assets/package.json +137 -0
  61. package/dist/static/home_choose/chooseRegion.html +345 -0
  62. package/dist/static/openChrome.applescript +88 -0
  63. package/dist/status.js +2 -3
  64. package/dist/status~1.js +1 -2
  65. package/dist/stop.js +1 -2
  66. package/dist/update.js +1 -2
  67. package/dist/upgrade.js +1 -2
  68. package/dist/upload.js +7 -8
  69. package/dist/validate.js +1 -2
  70. package/dist/yaml.js +25 -0
  71. package/package.json +34 -35
  72. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/01-/345/237/272/347/241/200.md +114 -7
  73. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/02-/347/263/273/347/273/237.md +126 -0
  74. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/06-/344/272/244/344/272/222.md +71 -0
  75. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/08-/347/275/221/347/273/234.md +222 -0
  76. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/10-/344/270/232/345/212/241/350/203/275/345/212/233.md +122 -0
  77. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/groups.md +5 -5
  78. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/quick-reference.md +7 -2
  79. package/dist/183.js +0 -2
  80. package/dist/564.js +0 -13
  81. package/dist/714.js +0 -1
  82. package/dist/assets/web-sdk-debugger/static/js/index.62b5cae841.js +0 -26
  83. package/dist/bin/darwin-arm64/security_tasm_codec +0 -0
  84. package/dist/bin/darwin-arm64/security_tasm_codec.sha256 +0 -1
  85. package/dist/bin/darwin-x64/security_tasm_codec +0 -0
  86. package/dist/bin/darwin-x64/security_tasm_codec.sha256 +0 -1
  87. package/dist/bin/linux-x64/security_tasm_codec +0 -0
  88. package/dist/bin/linux-x64/security_tasm_codec.sha256 +0 -1
  89. package/dist/bin/win32-x64/security_tasm_codec.exe.sha256 +0 -1
  90. package/dist/index.js +0 -1
  91. package/dist/package.json +0 -56
package/dist/dev.js CHANGED
@@ -1,16 +1,16 @@
1
- import"node:module";import{PassThrough as e,Readable as t,Transform as r}from"node:stream";import o,{resolve as n}from"node:path";import{Command as i,Option as a}from"commander";import s from"yaml";import{spawn as d}from"node:child_process";import c,*as l from"node:crypto";import u,*as p from"node:fs";import{createServer as f}from"node:http";import m,*as h from"node:os";import{pipeline as y}from"node:stream/promises";import{fileURLToPath as g}from"node:url";import{parseArgs as w}from"node:util";import v from"qrcode";import{__webpack_require__ as b}from"./rslib-runtime.js";import{GatewayResponseError as _,verifyYAML as E}from"./app.js";import{resolveProjectLayout as A}from"./project-layout.js";import{getApiBaseUrl as k,getAuthOptions as $,version_version as x,runCommand as S,isRecord as P}from"./564.js";import{startForegroundDevService as D,DEV_ACTIONS as T,parseJsonData as I,ensureDevActionSucceeded as C,connectDevService as j,summarizeData as U,ServiceManager as L}from"./dev-service-client.js";import{openUrlInBrowser as R}from"./browser.js";import{extractMCPHeadersFromManifest as V}from"./manifest-mcp-config.js";import*as O from"node:child_process";import*as N from"node:path";import*as B from"node:util";b.add({"../../../node_modules/.pnpm/@byted-doubao-tools+real-device-debug-auth@0.1.0/node_modules/@byted-doubao-tools/real-device-debug-auth/dist/lib/index.js"(e,t,r){t.Ph=void 0;var o=r("../../../node_modules/.pnpm/@byted-doubao-tools+real-device-debug-auth@0.1.0/node_modules/@byted-doubao-tools/real-device-debug-auth/dist/lib/realDeviceDebugQRCode.js");Object.defineProperty(t,"Ph",{enumerable:!0,get:function(){return o.createRealDeviceDebugQRCodeValue}})},"../../../node_modules/.pnpm/@byted-doubao-tools+real-device-debug-auth@0.1.0/node_modules/@byted-doubao-tools/real-device-debug-auth/dist/lib/realDeviceDebugQRCode.js"(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.createRealDeviceDebugQRCodeValue=t.REAL_DEVICE_DEBUG_QR_ACTION=t.DEFAULT_REAL_DEVICE_DEBUG_BASE_API_URL=void 0;let o=r("../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs"),n=o.__importStar(r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/index.js"));t.DEFAULT_REAL_DEVICE_DEBUG_BASE_API_URL="https://hello.doubao-dev.com",t.REAL_DEVICE_DEBUG_QR_ACTION="start_real_device_debug";class i extends Error{constructor(e,t){super(t),this.name="RealDeviceDebugAuthError",this.code=e}}let a=null;function s(e,t){let r=e.trim();if(!r)throw Error(t);return r}t.createRealDeviceDebugQRCodeValue=function(e){var r,d,c;return o.__awaiter(this,void 0,void 0,function*(){let l={hostUrl:s(e.hostUrl,"hostUrl is required to request real-device debug ticket"),appKey:s(e.appKey,"appKey is required to request real-device debug ticket"),isSigned:e.isSigned,isEncrypted:!!e.isEncrypted,signPublicKeyVersion:null==(r=e.signPublicKeyVersion)?void 0:r.trim(),appletType:e.appletType,baseApiUrl:e.baseApiUrl||t.DEFAULT_REAL_DEVICE_DEBUG_BASE_API_URL},u=yield function(e,r){return o.__awaiter(this,void 0,void 0,function*(){var o;let n,i=(o=e.appKey,n=s(e.baseApiUrl||t.DEFAULT_REAL_DEVICE_DEBUG_BASE_API_URL,"baseApiUrl is required to request real-device debug ticket"),new URL(`/developer/check_api/apps/${encodeURIComponent(o)}/debug/ticket`,n).toString()),a=yield r({method:"POST",url:i,data:{debug_context:JSON.stringify(Object.assign({appletName:e.appKey,appletHost:e.hostUrl,appletType:e.appletType,isSigned:e.isSigned,isEncrypted:e.isEncrypted},e.isSigned&&e.signPublicKeyVersion?{signPublicKeyVersion:e.signPublicKeyVersion}:{}))}});return null==a?void 0:a.data})}(l,function(e){return({method:t,url:r,data:s,headers:d})=>o.__awaiter(this,void 0,void 0,function*(){try{let o,i=Object.entries(Object.assign(Object.assign({},void 0===s?{}:{"Content-Type":"application/json"}),d)).reduce((e,[t,r])=>("string"==typeof r&&(e[t]=r),e),{}),c=yield(e?n.withAuth(fetch,e):(!a&&(a=n.withAuth()),a))(r,{method:t,headers:i,body:void 0===s?void 0:JSON.stringify(s)}),l=yield c.text();if(l)try{o=JSON.parse(l)}catch(e){o=l}if(!c.ok)throw Error(`Authed request failed with HTTP ${c.status}${l?`: ${l}`:""}`);return{data:o,status:c.status,headers:c.headers}}catch(e){throw e instanceof n.NotLoggedInError?new i("NOT_LOGGED_IN","No open-platform login session is available. Please run dbx auth:login first, then retry."):e instanceof n.TokenExpiredError?new i("TOKEN_EXPIRED","The open-platform login session has expired. Please run dbx auth:login again, then retry."):e instanceof n.AuthError?new i("AUTH_FAILED",`Open-platform authentication failed: ${e.message}`):e instanceof Error?e:Error(String(e))}})}(e.authOptions));if(!u||0!==u.code){let e=(null==u?void 0:u.code)===void 0?"unknown":String(u.code);if((null==u?void 0:u.code)===0x2fb1793)throw new i("APP_ROLE_PERMISSION_REQUIRED",`真机调试授权失败:当前账号没有工程所配置小程序的角色权限。
2
- 工程 AppKey:${l.appKey}
3
- 请先检查本地工程的 app_key 是否正确,且不是 mock 或占位值;该 AppKey 应属于你有权限的小程序。
4
- 权限开通:进入豆包开发者平台 → 对应小程序 → 成员管理,请应用管理员邀请你的账号并授予开发或调试权限。
5
- 错误码:${e}`);if((null==u?void 0:u.code)===0x2fb1794)throw new i("APP_WHITELIST_PERMISSION_REQUIRED",`真机调试授权失败:当前小程序未配置真机调试所需的白名单权限。
6
- 工程 AppKey:${l.appKey}
7
- 请先检查本地工程的 app_key 是否正确,且不是 mock 或占位值;该 AppKey 应属于你要调试的小程序。
8
- 权限配置:进入豆包开发者平台 → 对应小程序 → 白名单配置,添加真机调试所需权限后重试。
9
- 错误码:${e}`);let t=(null==u?void 0:u.message)||"Failed to get debug ticket";throw Error(`${t} (code=${e}, appKey=${l.appKey}, baseApiUrl=${l.baseApiUrl})`)}let p=String((null==(d=u.data)?void 0:d.debug_token)||"").trim(),f=String((null==(c=u.data)?void 0:c.encrypted_debug_payload)||"").trim();if(!p||!f)throw Error("Debug ticket response is missing required fields");return{qrCodeValue:JSON.stringify({action:t.REAL_DEVICE_DEBUG_QR_ACTION,debug_token:p,encrypted_debug_payload:f}),debugToken:p,encryptedDebugPayload:f}})}},"node:child_process?a364"(e){e.exports=O},"node:crypto?510c"(e){e.exports=l},"node:fs?c725"(e){e.exports=p},"node:os?f2c9"(e){e.exports=h},"node:path?b623"(e){e.exports=N},"node:util?65b8"(e){e.exports=B},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/config.js"(e,t,r){var o=r("node:os?f2c9"),n=r("node:path?b623");let i=n.default.join(o.default.homedir(),".dbx","token"),a=n.default.join(o.default.homedir(),".doubao","token"),s={};function d(e){Object.assign(s,e)}function c(e={}){let t={...s,...e},r=function(e,t){let r;try{r=new URL(l(e))}catch{throw Error(`${t} must be an absolute HTTPS URL`)}if("https:"!==r.protocol)throw Error(`${t} must use https`);return l(r.toString())}(t.baseUrl??"https://hello.doubao-dev.com","baseUrl"),o=t.tokenPath??i;return{...t,baseUrl:r,allowedOrigins:function(e,t){let r=new Set([new URL(t).origin]);for(let t of e??[]){let e;try{e=new URL(t)}catch{throw Error(`allowedOrigins entries must be absolute HTTPS origins: ${t}`)}if("https:"!==e.protocol)throw Error(`allowedOrigins entries must use https: ${t}`);r.add(e.origin)}return[...r]}(t.allowedOrigins,r),tokenPath:o,legacyTokenPath:t.tokenPath?void 0:a,requestHeaders:new Headers(t.requestHeaders)}}function l(e){return e.replace(/\/+$/,"")}r.d(t,{$i:()=>c,ZI:()=>d},{E:"dbx-cli"})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/credential-store.js"(e,t,r){var o=r("node:child_process?a364"),n=r("node:crypto?510c"),i=r("node:fs?c725"),a=r("node:os?f2c9"),s=r("node:path?b623");let d=(0,r("node:util?65b8").promisify)(o.execFile),c="byted-doubao-open-dbx-cli",l="dbx-cli",u="aes-256-gcm";class p extends Error{constructor(e){super(e),this.name="CredentialStoreError"}}function f(){let e=new h;return"darwin"===process.platform?new m(new y,e):"linux"===process.platform?new m(new g,e):e}class m{constructor(e,t){this.primary=e,this.fallback=t}async get(e){let t;try{let t=await this.primary.get(e);if(t)return t}catch(e){t=e}try{let t=await this.fallback.get(e);if(t)return t}catch(e){if(t)throw new p(`Failed to read token from system credential store (${k(t)}); encrypted-file fallback also failed: ${k(e)}`);throw e}if(t)throw t instanceof Error?t:new p(`Failed to read token from system credential store: ${String(t)}`)}async set(e,t){let r;try{await this.primary.set(e,t)}catch(e){r=e}try{await this.fallback.set(e,t)}catch(e){if(r)throw new p(`Failed to write token to system credential store (${k(r)}) and encrypted-file fallback (${k(e)})`);throw e}}async delete(e){let t;try{await this.primary.delete(e)}catch(e){t=e}try{await this.fallback.delete(e)}catch(e){if(t)throw new p(`Failed to delete token from system credential store (${k(t)}) and encrypted-file fallback (${k(e)})`);throw e}}}class h{constructor(e={}){this.baseDir=e.baseDir??("darwin"===process.platform?s.default.join(a.default.homedir(),"Library","Application Support",l):"win32"===process.platform?s.default.join(process.env.APPDATA||s.default.join(a.default.homedir(),"AppData","Roaming"),l):s.default.join(process.env.XDG_DATA_HOME||s.default.join(a.default.homedir(),".local","share"),l))}async get(e){var t,r;let o,a,s=this.credentialFilePath(e);try{o=await i.promises.readFile(s,"utf8")}catch(e){if(A(e)&&"ENOENT"===e.code)return;throw new p(`Failed to read encrypted token file: ${k(e)}`)}try{a=JSON.parse(o)}catch(e){throw new p(`Encrypted token file is not valid JSON: ${k(e)}`)}if(!((t=a)&&"object"==typeof t&&1===t.version&&t.algorithm===u&&"string"==typeof t.iv&&"string"==typeof t.authTag&&"string"==typeof t.ciphertext))throw new p("Encrypted token file has an unsupported format");let d=await this.readMasterKey();try{let t=n.default.createDecipheriv(u,d,Buffer.from(a.iv,"base64url"));return t.setAAD(Buffer.from((r=e,`${c}:${r}`),"utf8")),t.setAuthTag(Buffer.from(a.authTag,"base64url")),Buffer.concat([t.update(Buffer.from(a.ciphertext,"base64url")),t.final()]).toString("utf8")}catch(e){throw new p(`Failed to decrypt encrypted token file: ${k(e)}`)}}async set(e,t){var r;let o=await this.readOrCreateMasterKey(),i=n.default.randomBytes(12),a=n.default.createCipheriv(u,o,i);a.setAAD(Buffer.from((r=e,`${c}:${r}`),"utf8"));let s=Buffer.concat([a.update(t,"utf8"),a.final()]),d={version:1,algorithm:u,iv:i.toString("base64url"),authTag:a.getAuthTag().toString("base64url"),ciphertext:s.toString("base64url")};await w(this.credentialFilePath(e),`${JSON.stringify(d,null,2)}
10
- `)}async delete(e){try{await i.promises.unlink(this.credentialFilePath(e))}catch(e){if(!A(e)||"ENOENT"!==e.code)throw new p(`Failed to delete encrypted token file: ${k(e)}`)}}masterKeyPath(){return s.default.join(this.baseDir,"master.key")}credentialFilePath(e){let t=n.default.createHash("sha256").update(e).digest("hex");return s.default.join(this.baseDir,"credentials",`${t}.json`)}async readMasterKey(){try{var e=await i.promises.readFile(this.masterKeyPath(),"utf8");let t=Buffer.from(e.trim(),"base64url");if(32!==t.length)throw new p("Encrypted token master key has an unsupported format");return t}catch(e){if(A(e)&&"ENOENT"===e.code)throw new p("Encrypted token master key is missing");if(e instanceof p)throw e;throw new p(`Failed to read encrypted token master key: ${k(e)}`)}}async readOrCreateMasterKey(){try{return await this.readMasterKey()}catch(e){if(!(e instanceof p)||!e.message.includes("master key is missing"))throw e}let e=n.default.randomBytes(32);try{return await w(this.masterKeyPath(),`${e.toString("base64url")}
11
- `),e}catch(e){if(A(e)&&"EEXIST"===e.code)return this.readMasterKey();throw new p(`Failed to write encrypted token master key: ${k(e)}`)}}}class y{async get(e){try{let{stdout:t}=await d("security",["find-generic-password","-a",e,"-s",c,"-w"]);return String(t).replace(/\n$/,"")}catch(e){if(v(e))return;throw new p(`Failed to read token from macOS Keychain: ${k(e)}`)}}async set(e,t){try{await d("security",["add-generic-password","-a",e,"-s",c,"-w",t,"-U"])}catch(e){throw new p(`Failed to write token to macOS Keychain: ${k(e)}`)}}async delete(e){try{await d("security",["delete-generic-password","-a",e,"-s",c])}catch(e){if(v(e))return;throw new p(`Failed to delete token from macOS Keychain: ${k(e)}`)}}}class g{async get(e){try{let{stdout:t}=await d("secret-tool",["lookup","service",c,"account",e]);return String(t).replace(/\n$/,"")}catch(e){if(b(e))return;throw new p(`Failed to read token from Secret Service: ${k(e)}`)}}async set(e,t){try{var r,n,i;await (r="secret-tool",n=["store","--label","Doubao Open CLI token","service",c,"account",e],i=t,new Promise((e,t)=>{let a=(0,o.spawn)(r,n,{stdio:["pipe","ignore","pipe"]}),s="";a.stderr.setEncoding("utf8"),a.stderr.on("data",e=>{s+=String(e)}),a.on("error",t),a.on("close",o=>{0===o?e():t(Error(s.trim()||`${r} exited with code ${o}`))}),a.stdin.end(i)}))}catch(e){throw new p(`Failed to write token to Secret Service: ${k(e)}`)}}async delete(e){try{await d("secret-tool",["clear","service",c,"account",e])}catch(e){if(b(e))return;throw new p(`Failed to delete token from Secret Service: ${k(e)}`)}}}async function w(e,t){let r=s.default.dirname(e);await i.promises.mkdir(r,{recursive:!0,mode:448}),"win32"!==process.platform&&await i.promises.chmod(r,448);let o=s.default.join(r,`.${s.default.basename(e)}.${process.pid}.${Date.now()}.tmp`);try{await i.promises.writeFile(o,t,{mode:384,flag:"wx"}),"win32"!==process.platform&&await i.promises.chmod(o,384),await i.promises.rename(o,e),"win32"!==process.platform&&await i.promises.chmod(e,384)}finally{try{await i.promises.unlink(o)}catch{}}}function v(e){let t=_(e),r=E(e);return(1===t||44===t)&&(r.includes("could not be found")||r.includes("The specified item could not be found"))}function b(e){let t=_(e),r=E(e);return 1===t&&(r.includes("could not be found")||r.includes("No matching items")||""===r.trim())}function _(e){return"object"==typeof e&&null!==e&&"code"in e?e.code:void 0}function E(e){return"object"==typeof e&&null!==e&&"stderr"in e?String(e.stderr??""):""}function A(e){return e instanceof Error&&"code"in e}function k(e){if("object"==typeof e&&null!==e&&"stderr"in e){let t=String(e.stderr??"").trim();if(t)return t}return e instanceof Error&&e.message?e.message:String(e)}r.d(t,{Mj:()=>f,RI:()=>p})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/device-flow.js"(e,t,r){var o=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/config.js"),n=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/errors.js"),i=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/jwt.js"),a=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/store.js"),s=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/types.js");async function d(e={}){let t=(0,o.$i)(e),r=t.fetch??fetch,c=t.sleep??w,l=await u(r,t.baseUrl,t.requestHeaders),f=v(t.baseUrl,l.user_code);t.onVerification?.({userCode:l.user_code,verificationUrl:f,expiresIn:l.expires_in,interval:l.interval});let m=Math.max(1,l.interval),h=Date.now()+1e3*l.expires_in;for(;Date.now()<h;){await c(1e3*m);let e=await p(r,t.baseUrl,l.device_code,t.requestHeaders);if(t.onPoll?.({status:e.status,interval:m}),e.status!==s.A.Pending){if(e.status===s.A.SlowDown){m+=Math.max(1,l.interval);continue}if(e.status===s.A.Expired)throw new n.JC("Device authorization expired","DEVICE_AUTH_EXPIRED");if(e.status===s.A.Invalid)throw new n.JC("Device authorization is invalid","DEVICE_AUTH_INVALID");if(e.status===s.A.Authorized){if(!e.access_token)throw new n.JC("Authorization response did not include an access token");let r=g(e,t.baseUrl);return await (0,a.tK)(t.tokenPath,r,{credentialStore:t.credentialStore}),{accessToken:r.accessToken,tokenType:r.tokenType,expiresAt:r.expiresAt,baseUrl:r.baseUrl,uid:(0,i.m)(r.accessToken),tokenPath:t.tokenPath}}throw new n.JC(`Unexpected authorization status: ${String(e.status)}`)}}throw new n.JC("Device authorization timed out","DEVICE_AUTH_EXPIRED")}async function c(e={}){let t=(0,o.$i)(e),r=t.fetch??fetch,n=await u(r,t.baseUrl,t.requestHeaders),i=v(t.baseUrl,n.user_code);return t.onVerification?.({userCode:n.user_code,verificationUrl:i,expiresIn:n.expires_in,interval:n.interval}),{userCode:n.user_code,deviceCode:n.device_code,verificationUrl:i,expiresIn:n.expires_in,interval:n.interval}}async function l(e,t={}){let r=(0,o.$i)(t),d=r.fetch??fetch,c=r.sleep??w,u=r.baseUrl,f=r.requestHeaders,m=5,h=Date.now()+6e5;for(;Date.now()<h;){await c(1e3*m);let t=await p(d,u,e,f);if(r.onPoll?.({status:t.status,interval:m}),t.status!==s.A.Pending){if(t.status===s.A.SlowDown){m+=5;continue}if(t.status===s.A.Expired)throw new n.JC("Device authorization expired","DEVICE_AUTH_EXPIRED");if(t.status===s.A.Invalid)throw new n.JC("Device authorization is invalid","DEVICE_AUTH_INVALID");if(t.status===s.A.Authorized){if(!t.access_token)throw new n.JC("Authorization response did not include an access token");let e=g(t,u);return await (0,a.tK)(r.tokenPath,e,{credentialStore:r.credentialStore}),{accessToken:e.accessToken,tokenType:e.tokenType,expiresAt:e.expiresAt,baseUrl:e.baseUrl,uid:(0,i.m)(e.accessToken),tokenPath:r.tokenPath}}throw new n.JC(`Unexpected authorization status: ${String(t.status)}`)}}throw new n.JC("Device authorization timed out","DEVICE_AUTH_EXPIRED")}async function u(e,t,r){let i=await e(`${t}/app_developer/oauth/device/code`,{method:"POST",headers:y(r),body:JSON.stringify({client_name:o.E})}),a=await f(i),s=h(a);if(!s||!s.device_code||!s.user_code||"number"!=typeof s.expires_in||"number"!=typeof s.interval)throw new n.JC(`Device code response is malformed (HTTP ${i.status}): ${JSON.stringify(a)}`);return s}async function p(e,t,r,o){let i=await e(`${t}/app_developer/oauth/token`,{method:"POST",headers:y(o),body:JSON.stringify({device_code:r})}),a=await f(i),d=h(a);if(d?.access_token)return{status:s.A.Authorized,access_token:d.access_token,token_type:d.token_type,expires_in:d.expires_in,expires_at:d.expires_at};if(!d||"number"!=typeof d.status)throw new n.JC(`Token response is malformed (HTTP ${i.status}): ${JSON.stringify(a)}`);return d}async function f(e){var t;let r,o=e.headers.get("x-tt-logid")??void 0;try{r=await e.json()}catch{throw new n.JC(`Auth server returned non-JSON response with status ${e.status}${m(o)}`,"DEVICE_AUTH_FAILED",{logId:o})}let i=function(e){if(e&&"object"==typeof e)return"string"==typeof e.log_id&&e.log_id?e.log_id:void 0}(r)??o;if(!e.ok)throw new n.JC(`Auth server returned HTTP ${e.status}: ${JSON.stringify(r)}${m(i)}`,"DEVICE_AUTH_FAILED",{logId:i});let a=(t=r)&&"object"==typeof t&&"number"==typeof t.code&&0!==t.code?{code:t.code,message:"string"==typeof t.message?t.message:"Unknown error",logId:"string"==typeof t.log_id?t.log_id:void 0}:null;if(a)throw new n.JC(`Auth server error (code ${a.code}): ${a.message}${m(a.logId??i)}`,"DEVICE_AUTH_FAILED",{logId:a.logId??i});return r}function m(e){return e?` [log_id: ${e}]`:""}function h(e){return e&&"object"==typeof e&&"data"in e?e.data:e}function y(e){let t=new Headers(e);return t.set("Content-Type","application/json"),t}function g(e,t){let r=Math.floor(Date.now()/1e3);return{accessToken:e.access_token??"",tokenType:e.token_type??"Bearer",expiresAt:"number"==typeof e.expires_at?e.expires_at:r+(e.expires_in??0),baseUrl:t}}function w(e){return new Promise(t=>{setTimeout(t,e)})}function v(e,t){let r=new URL(e).host,o=new URL(`https://${r}/v2/oauth/device`);return o.searchParams.set("user_code",t),o.toString()}r.d(t,{R$:()=>l,c$:()=>c,iD:()=>d})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/errors.js"(e,t,r){class o extends Error{constructor(e,t){super(e),this.code=t,this.name="AuthError"}}class n extends o{constructor(e="Not logged in"){super(e,"NOT_LOGGED_IN"),this.name="NotLoggedInError"}}class i extends o{constructor(e="Login token has expired"){super(e,"TOKEN_EXPIRED"),this.name="TokenExpiredError"}}class a extends o{constructor(e,t="DEVICE_AUTH_FAILED",r={}){super(e,t),this.name="DeviceAuthError",this.logId=r.logId}}r.d(t,{BX:()=>i,JC:()=>a,bG:()=>n,lR:()=>o})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/http.js"(e,t,r){var o=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/errors.js"),n=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/config.js"),i=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/store.js");function a(e=fetch,t={}){return async(r,a={})=>{let s=(0,n.$i)(t);var d=r,c=s.allowedOrigins;let l=function(e){try{if("string"==typeof e)return new URL(e);if(e instanceof URL)return e;return new URL(e.url)}catch{throw Error("Authenticated requests must use an absolute HTTPS URL")}}(d);if("https:"!==l.protocol)throw Error(`Authenticated requests must use https: ${l.toString()}`);if(!c.includes(l.origin))throw Error(`Refusing to attach Authorization header to untrusted origin: ${l.origin}`);let u=await (0,i.AI)(s.tokenPath,{allowExpired:!0,credentialStore:s.credentialStore,legacyTokenPath:s.legacyTokenPath});if(!u)throw new o.bG;if((0,i._d)(u))throw new o.BX;let p=new Headers(a.headers);return s.requestHeaders.forEach((e,t)=>{p.set(t,e)}),p.set("Authorization",`${u.tokenType||"Bearer"} ${u.accessToken}`),e(r,{...a,headers:p})}}r.d(t,{r:()=>a})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/index.js"(e,t,r){r.r(t);var o=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/config.js"),n=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/credential-store.js"),i=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/device-flow.js"),a=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/store.js"),s=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/http.js"),d=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/errors.js"),c=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/types.js");async function l(e={}){let t=(0,o.$i)(e);await (0,a.ni)(t.tokenPath,{credentialStore:t.credentialStore}),t.legacyTokenPath&&await (0,a.ni)(t.legacyTokenPath,{credentialStore:t.credentialStore})}async function u(e={}){let t,r=(0,o.$i)(e);try{t=await (0,a.AI)(r.tokenPath,{credentialStore:r.credentialStore,legacyTokenPath:r.legacyTokenPath})}catch(e){if(e instanceof n.RI)return{loggedIn:!1,tokenPath:r.tokenPath,baseUrl:r.baseUrl,credentialError:{code:"CREDENTIAL_STORE_UNAVAILABLE",message:e.message}};throw e}if(!t)return{loggedIn:!1,tokenPath:r.tokenPath};let i=await p(e.fetch??fetch,r.baseUrl,t,r.requestHeaders);return i?{loggedIn:!0,uid:i.userId,name:i.name,avatar:i.avatar,expiresAt:t.expiresAt,tokenPath:r.tokenPath,baseUrl:r.baseUrl}:{loggedIn:!1,expiresAt:t.expiresAt,tokenPath:r.tokenPath,baseUrl:r.baseUrl}}async function p(e,t,r,o){let n=new Headers(o);n.set("Authorization",`${r.tokenType||"Bearer"} ${r.accessToken}`);let i=await e(`${t.replace(/\/+$/,"")}/app_developer/api/user/basic`,{method:"GET",headers:n});if(!i.ok)return;let a=await i.json();if(0===a.code){var s;return{userId:"string"==typeof(s=a.data?.user_id)&&s.length>0?s:"number"==typeof s&&Number.isFinite(s)?String(s):void 0,name:a.data?.name,avatar:a.data?.avatar}}}r.d(t,{AuthError:()=>d.lR,CredentialStoreError:()=>n.RI,DeviceAuthError:()=>d.JC,NotLoggedInError:()=>d.bG,TokenExpiredError:()=>d.BX,TokenStatus:()=>c.A,completeLogin:()=>i.R$,configureAuth:()=>o.ZI,login:()=>i.iD,logout:()=>l,startLogin:()=>i.c$,whoami:()=>u,withAuth:()=>s.r})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/jwt.js"(e,t,r){function o(e){let t=function(e){let t=e.split(".")[1];if(t)try{let e=t.replace(/-/g,"+").replace(/_/g,"/"),r=e.padEnd(e.length+(4-e.length%4)%4,"="),o=Buffer.from(r,"base64").toString("utf8"),n=JSON.parse(o);return n&&"object"==typeof n?n:void 0}catch{return}}(e),r=t?.uid??t?.sub;return"string"==typeof r&&r.length>0?r:"number"==typeof r&&Number.isFinite(r)?String(r):void 0}r.d(t,{m:()=>o})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/store.js"(e,t,r){var o=r("node:fs?c725"),n=r("node:crypto?510c"),i=r("node:path?b623"),a=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/credential-store.js");async function s(e,t={}){let r,o=await f(e);if(void 0===o)return m(e,t);try{r=JSON.parse(o)}catch(e){return}if(p(r)){if(!t.allowExpired&&l(r))return void await c(e,t);let o=await h(t).get(r.credentialAccount);if(!o)throw new a.RI("Stored login metadata exists, but the token credential is missing or inaccessible. Run dbx auth login again from a terminal that can access the credential store.");return{accessToken:o,tokenType:r.tokenType,expiresAt:r.expiresAt,baseUrl:r.baseUrl}}if(u(r))return!t.allowExpired&&l(r)?void await c(e,t):(await d(e,r,t),r)}async function d(e,t,r={}){let n={version:2,storage:"keychain",credentialAccount:y(e),tokenType:t.tokenType,expiresAt:t.expiresAt,baseUrl:t.baseUrl};await h(r).set(n.credentialAccount,t.accessToken),await o.promises.mkdir(i.default.dirname(e),{recursive:!0,mode:448}),"win32"!==process.platform&&await o.promises.chmod(i.default.dirname(e),448);let a=`${e}.${process.pid}.${Date.now()}.tmp`;await o.promises.writeFile(a,`${JSON.stringify(n,null,2)}
12
- `,{mode:384}),"win32"!==process.platform&&await o.promises.chmod(a,384),await o.promises.rename(a,e),"win32"!==process.platform&&await o.promises.chmod(e,384)}async function c(e,t={}){let r=await f(e);if(void 0!==r)try{let o=JSON.parse(r);p(o)?await h(t).delete(o.credentialAccount):await h(t).delete(y(e))}catch{}try{await o.promises.unlink(e)}catch(e){if(!g(e)||"ENOENT"!==e.code)throw e}}function l(e,t=Math.floor(Date.now()/1e3)){return e.expiresAt<=t}function u(e){return!!e&&"object"==typeof e&&"string"==typeof e.accessToken&&e.accessToken.length>0&&"string"==typeof e.tokenType&&e.tokenType.length>0&&"number"==typeof e.expiresAt&&Number.isFinite(e.expiresAt)&&"string"==typeof e.baseUrl&&e.baseUrl.length>0}function p(e){return!!e&&"object"==typeof e&&2===e.version&&"keychain"===e.storage&&"string"==typeof e.credentialAccount&&e.credentialAccount.length>0&&"string"==typeof e.tokenType&&e.tokenType.length>0&&"number"==typeof e.expiresAt&&Number.isFinite(e.expiresAt)&&"string"==typeof e.baseUrl&&e.baseUrl.length>0}async function f(e){try{return await o.promises.readFile(e,"utf8")}catch(e){g(e)&&e.code;return}}async function m(e,t){let r;if(!t.legacyTokenPath||i.default.resolve(t.legacyTokenPath)===i.default.resolve(e))return;let o=await f(t.legacyTokenPath);if(void 0!==o){try{r=JSON.parse(o)}catch{return}if(u(r))return!t.allowExpired&&l(r)?void await c(t.legacyTokenPath,t):(await d(e,r,t),await c(t.legacyTokenPath,t),r)}}function h(e){return e.credentialStore??(0,a.Mj)()}function y(e){let t=n.default.createHash("sha256").update(i.default.resolve(e)).digest("hex").slice(0,32);return`token:${t}`}function g(e){return e instanceof Error&&"code"in e}r.d(t,{AI:()=>s,_d:()=>l,ni:()=>c,tK:()=>d})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/types.js"(e,t,r){var o,n;(n=o||(o={}))[n.Pending=1]="Pending",n[n.Authorized=2]="Authorized",n[n.Expired=3]="Expired",n[n.Invalid=4]="Invalid",n[n.SlowDown=5]="SlowDown",r.d(t,{A:()=>o})}});var H={};b.r(H),b.d(H,{default:()=>tg,isInteractiveTerminal:()=>tb,withWebDebuggerFallback:()=>t_});class F extends Error{constructor(e){let t,r;super((r=(t=e.errors[0])?`: ${t.message}`:"",`manifest validation failed for dbx dev${r}`)),this.exitCode=1,this.name="DevManifestValidationError",this.logId=e.log_id;let{manifest:o,...n}=e;this.details=n}}let K={"dev.manifest.parse_failed":e=>`Manifest 无法解析:${e.path??"未知路径"};将跳过 simulator manifest 并继续启动`,"dev.manifest.invalid_root":e=>`Manifest 内容必须是对象:${e.path??"未知路径"};将跳过 simulator manifest 并继续启动`,"dev.manifest.app_key_missing":e=>`Manifest 未配置 app_key:${e.path??"未知路径"};将由 Kit 从前端工程配置解析 AppID`,"dev.manifest.not_found":e=>`未找到 Manifest 文件:${e.path??"未知路径"};将跳过 simulator manifest 并继续启动`,"dev.manifest.not_ready":()=>"Manifest 未就绪","dev.manifest.validation_failed":e=>`Manifest 校验未通过${e.message?`:${e.message}`:""}`,"dev.manifest.validation_http_error":e=>{var t,r;return`Manifest 校验服务异常${void 0===(t=e.httpStatus)?"":`(HTTP ${t})`}${(r=e.logId)?`,log_id: ${r}`:""}`},"dev.manifest.validation_service_error":e=>{var t;return`${e.message??"Manifest 校验服务返回错误"}${void 0===(t=e.serviceCode)?"":`(错误码 ${t})`}`},"dev.skill.not_found":e=>`未找到 Skill 文件:${e.path??"未知路径"};将跳过 simulator skill 并继续启动`,"dev.mcp.not_configured":()=>"MCP 未配置服务地址","dev.mcp.confirm_connection":()=>"请确认 MCP 已连接"};function M(e){let t=K[e.code];return t?t(e):e.message?e.message:`${e.source} warning (${e.code})`}let q="DOUBAO_SIMULATOR_MCP_ENDPOINT";async function z(e){let t;try{t=s.parse(p.readFileSync(e,"utf8"))}catch{return{usable:!1,validated:!1,warnings:[{code:"dev.manifest.parse_failed",source:"manifest",path:e}]}}if(!P(t))return{usable:!1,validated:!1,warnings:[{code:"dev.manifest.invalid_root",source:"manifest",path:e}]};let r=[],o="string"==typeof t.app_key?t.app_key.trim():void 0;o||r.push({code:"dev.manifest.app_key_missing",source:"manifest",path:e});let n=t,i=!1;try{let t=await W(e);i=!0,P(t.manifest)&&(n=t.manifest)}catch(e){r.push(function(e){var t;if(e instanceof _)return{code:void 0!==e.httpStatus?"dev.manifest.validation_http_error":"dev.manifest.validation_service_error",source:"manifest",serviceCode:e.serviceCode,httpStatus:e.httpStatus,message:e.serviceMessage,logId:e.logId};let r=e instanceof F?e.details.errors[0]:void 0;return r?{source:"manifest",code:r.code,path:r.path,message:r.message}:{code:"dev.manifest.validation_failed",source:"manifest",message:(t=e)instanceof Error?t.message:String(t)}}(e))}return{...o?{appId:o}:{},manifest:n,usable:!0,validated:i,warnings:r}}async function J(e=process.env,t,r,o){let n=t?.trim();if(n)return X(n,"--mcp-endpoint");let i=e[q]?.trim();return i?X(i,q):r?G(r,o):void 0}async function W(e){let t=await E(p.readFileSync(e,"utf8"),"compatible"),r=t.data,o={file:e,valid:!!r?.success,manifest:r?.manifest,errors:Q(r?.errors??[]),warnings:Q(r?.warnings??[]),log_id:t.log_id??""};if(!o.valid)throw new F(o);return o}async function G(e,t){let r=t??(await W(e)).manifest,o=P(r)&&P(r.mcp_server)?r.mcp_server:void 0,n=o?.end_point;if("string"==typeof n&&n.trim())return X(n.trim(),"manifest.mcp_server.end_point")}function Q(e){return e.map(e=>({code:e.code,path:e.path,message:e.message}))}function X(e,t){try{let t=new URL(e);if("http:"===t.protocol||"https:"===t.protocol)return e}catch{}throw Error(`dbx dev ${t} must be an http(s) URL: ${e}`)}function Z(e,t){let r=t.trim();if(!r)throw Error("path must not be empty");return N.resolve(e,r)}function Y(...e){for(let t of e){let e=t?.trim();if(e)return e}}let ee={schemaVersion:1,cliVersion:x,deviceAppVersion:"1.0.6",packages:{"darwin-arm64":{url:"https://lf3-cdn-tos.bytegoofy.com/obj/tron-demo/7610358476778248474/432592984/1.0.6/darwin-arm64/DoubaoDeveloperTools-v1.0.6-darwin-arm64.zip",sha256:"93b822535f11ed2b8f7a47c43d0dc74b44059f575da59d816f6ce29f0910e6e0",entry:"豆包开发者工具.app",sizeBytes:0x76d2bb4},"win32-x64":{url:"https://lf3-cdn-tos.bytegoofy.com/obj/tron-demo/7610358476778248474/432592984/1.0.6/win32-x64/DoubaoDeveloperTools-v1.0.6-win32-x64.zip",sha256:"7f61d23179c42d1e973138c557c41efe4ab20c7c23c4f4896fb074f945a3f19c",entry:"豆包开发者工具.exe",sizeBytes:0x8398fef}}},et=b("../../../node_modules/.pnpm/@byted-doubao-tools+real-device-debug-auth@0.1.0/node_modules/@byted-doubao-tools/real-device-debug-auth/dist/lib/index.js"),er="DBX_DEVICE_APP_PATH",eo="dbx-device-app.json",en="state.json",ei="versions",ea=o.dirname(g(import.meta.url)),es=[{command:"web",description:"打开 Web 模拟器"},{command:"device",description:"进入真机调试"},{command:"status",description:"查看本地调试服务状态"}],ed=[{command:"qr",description:"重新生成真机调试二维码"},{command:"page [id]",description:"在真机打开页面(省略 id 可选择)"},{command:"pages",description:"列出真机可打开页面"},{command:"widget [id]",description:"向真机推送卡片(省略 id 可选择)"},{command:"widgets",description:"列出真机可推送卡片"},{command:"back",description:"返回主命令"}];function ec(e){if("complete"===e.phase)return`豆包开发者工具已安装:${e.appPath}`;if("install"===e.phase){let t={verify:"验证",extract:"解压",install:"安装"}[e.stage];return`安装豆包开发者工具:${t}`}let t=[void 0===e.percentage?void 0:`${e.percentage}%`,void 0===e.totalBytes?e.downloadedBytes>0?eL(e.downloadedBytes):void 0:`${eL(e.downloadedBytes)} / ${eL(e.totalBytes)}`,`${Math.max(0,Math.round(e.elapsedMs/1e3))}s`].filter(e=>!!e);return`下载豆包开发者工具:${t.join(" \xb7 ")}`}function el(e,t){let r,o=!1;return n=>{if(!n)return void t?.(void 0);if("download"===n.phase){r=n,t?.(n);return}if(r&&!o&&(o=!0,th(e,`✓ ${ec(r)}`)),"complete"===n.phase){t?.(void 0),th(e,`✓ ${ec(n)}`);return}t?.(n)}}async function eu(e){let t,r,o=e.output??process.stderr,n=e.client??await j({projectPath:e.projectPath,appDir:e.appDir,nodeIdPrefix:"dev-shell"}),i=e.closeDeviceApp??ek,a=new AbortController,s=e.openBrowser??R,d=new Set,c=!1,l={runtime:e.runtime,client:n,output:o,openBrowser:s,openQRCodeViewer:e.openQRCodeViewer??((e,t)=>tl(e,s,t,o)),retainQRCodeViewer:e=>d.add(e),signal:a.signal,launchDeviceApp:e.launchDeviceApp??(e=>e_(e,o)),closeDeviceApp:async()=>(c=!0,i()),prepareDeviceApp:e.prepareDeviceApp??(e=>eE(o,e)),...e.onDeviceAppSetupProgress?{onDeviceAppSetupProgress:e.onDeviceAppSetupProgress}:{},openPreparedDeviceApp:e.openPreparedDeviceApp??eA,runRealDeviceAuth:e.runRealDeviceAuth??e9,selectItem:e.selectItem};return{stopped:e.runtime.stopped,getState:()=>e.runtime.getState(),execute(e){let r=ep(e,l);return t=r,r.finally(()=>{t===r&&(t=void 0)})},close:()=>(r??(r=(async()=>{for(let e of(a.abort(new ti),await t?.catch(()=>void 0),d))await e.close().catch(()=>void 0);d.clear(),tc(),await n.stop().catch(()=>void 0),await e.runtime.stop().catch(()=>void 0),c||await em(l)})()),r)}}async function ep(e,t){var r;let o;try{o=function(e){let t,r=[],o="",n=!1,i=()=>{o.length>0&&(r.push(o),o="")};for(let r of e.trim()){if(n){o+=r,n=!1;continue}if("\\"===r&&"'"!==t){n=!0;continue}if("'"===r||'"'===r){if(!t){t=r;continue}if(t===r){t=void 0;continue}}if(!t&&/\s/.test(r)){i();continue}o+=r}if(n&&(o+="\\"),t)throw Error(`unterminated ${t} quote`);return i(),r}(e)}catch(e){return th(t.output,to(ty(e))),"continue"}let n=o[0]?.toLowerCase(),i=o.slice(1);if(!n)return"continue";if((r=i).includes("--help")||r.includes("-h")){let e="device"===n&&i[0]&&!i[0].startsWith("-")?`device ${i[0].toLowerCase()}`:n;if(function(e,t){switch(t){case"device widget":return th(e,"usage: widget [widget-id] [--data <json>] [--bot-id <id>] [--device-id <id>]"),th(e,"推送卡片到已连接真机;省略 widget-id 时从 `widgets` 列表中选择。"),th(e,"需要非交互式 CLI 参数说明时,可运行:dbx dev push-widget --help"),!0;case"device page":return th(e,"usage: page [page-id] [--data <json>] [--settings <value>] [--mode <full|popup|floating>] [--device-id <id>]"),th(e,"打开页面到已连接真机;省略 page-id 时从 `pages` 列表中选择。"),th(e,"需要非交互式 CLI 参数说明时,可运行:dbx dev push-page --help"),!0;case"device":th(e,"usage: device [--timeout <seconds>] [--qr-file <file.png>]"),th(e,"进入真机模式并准备真机工具、打开调试二维码。");for(let t of(th(e,"真机调试命令"),ed))th(e,` ${t.command.padEnd(22)}${t.description}`);return th(e,"进入真机模式后执行 `<命令> --help` 查看参数。"),!0;case"remote-debug":return th(e,"usage: remote-debug [--timeout <seconds>] [--qr-file <file.png>]"),th(e,"准备真机工具后打开临时二维码页面;使用 --qr-file 可额外导出 PNG。"),th(e,"remote-debug 是 device 的同义命令。"),!0;case"device qr":return th(e,"usage: qr [--timeout <seconds>] [--qr-file <file.png>]"),th(e,"重新生成真机调试二维码;超时后使用此命令获取新二维码。"),!0;case"web":return th(e,"usage: web"),th(e,"在默认浏览器打开本地 Web 模拟器。"),!0;case"device pages":case"device widgets":{let r="device pages"===t?"打开的页面":"推送的卡片";return th(e,`usage: ${t.slice(7)}`),th(e,`列出真机可${r}。`),!0}case"status":return th(e,"usage: status"),th(e,"查看本地调试服务状态。"),!0;default:return!1}}(t.output,e))return"continue"}try{switch(n){case"status":return await eh(t),"continue";case"web":return await ey(t),"continue";case"device":return await ef(t,i),"continue";case"remote-debug":return await eg(t,i,{launchDeviceApp:!0}),"continue";default:return th(t.output,`unknown command: ${n}`),["qr","pages","page","widgets","widget"].includes(n)&&th(t.output,`\`${n}\` is only available in device mode; run \`device\` first.`),"continue"}}catch(e){return th(t.output,to(ty(e))),"continue"}}async function ef(e,t){let r=t[0]?.toLowerCase();if(!r||r.startsWith("-"))return void await eg(e,t,{launchDeviceApp:!0});let o=t.slice(1);switch(r){case"qr":await ev(e,o);return;case"pages":await e4(e,"page",T.discoverPages);return;case"page":await e6(e,o);return;case"widgets":await e4(e,"widget",T.discoverWidgets);return;case"widget":await e3(e,o);return;default:th(e.output,`unknown device subcommand: ${r}`)}}async function em(e){try{var t,r;let o=await e.closeDeviceApp();t=e.output,r=o,"closed"===r.status?th(t,`豆包开发者工具已关闭:${r.appPath}`):th(t,`关闭豆包开发者工具失败${r.reason?`:${to(r.reason)}`:""}`)}catch(t){th(e.output,`关闭豆包开发者工具失败:${to(ty(t))}`)}}async function eh(e){let t=await e.client.call(T.getInfo);th(e.output,`status: ${t.status}`),th(e.output,`app_id: ${t.appId??"-"}`),th(e.output,`dev_server: ${t.host??"-"}`),th(e.output,`web_debugger: ${t.webDebuggerUrl??"-"}`)}async function ey(e){let t=e.runtime.getState().webDebuggerUrl;if(!t)throw Error("web debugger URL is not ready");await e.openBrowser(t),th(e.output,`Web 模拟器已打开:${t}`)}async function eg(e,t,r){let n,i,a=w({args:t,allowPositionals:!1,options:{timeout:{type:"string"},"qr-file":{type:"string"}}}),s=function(e){if(void 0===e)return;let t=Number(e);if(!Number.isFinite(t)||t<=0)throw Error("--timeout must be a positive number of seconds");return Math.round(1e3*t)}(a.values.timeout),d=function(e){if(!e)return;let t=o.resolve(e);if(".png"!==o.extname(t).toLowerCase())throw Error("--qr-file must point to a .png file");return t}(a.values["qr-file"]),c=e.runtime.getState(),l={namespace:c.namespace,projectPath:c.projectPath,appDir:c.appDir,appKey:c.appId,hostUrl:c.host},u=!1,p=r.launchDeviceApp?await ew(e):void 0;if(p?.status==="skipped")return void th(e.output,`启动真机调试失败:${to(p.reason??"豆包开发者工具准备失败")}`);tc();let f=new AbortController,m=e.signal?AbortSignal.any([e.signal,f.signal]):f.signal,h=!1;try{h=(i=await e.runRealDeviceAuth({hostUrl:c.host,appKey:c.appId,namespace:c.namespace,timeoutMs:s,output:e.output,signal:m,onQRCodeReady:async t=>{(n=await e.openQRCodeViewer(t,d)).closed.then(()=>{f.abort(new ti)})}})).ok&&"connected"===i.status}finally{h&&n&&e.retainQRCodeViewer?e.retainQRCodeViewer(n):(await n?.close().catch(()=>void 0),tc())}if(function(e,t){let r;if(!t.ok){if("cancelled"===t.status)return th(e,"二维码页面已关闭,已取消等待设备连接。");r="timeout"===t.status?`等待设备连接超时(${Math.max(1,Math.ceil(t.timeoutMs/1e3))} 秒)`:to(t.error??"未知错误"),th(e,`启动真机调试失败:${r}`)}}(e.output,i),i.ok&&"connected"===i.status){let t=i.client?.deviceId??(i.client?.clientId===void 0?void 0:String(i.client.clientId));t&&(e.activeDeviceId=t)}if(r.launchDeviceApp&&i.ok&&"connected"===i.status){var y,g;let t=p?await eb(e,p,l):await e.launchDeviceApp(l);t&&(u||(u=!0,y=e.output,"opened"===(g=t).status?th(y,`豆包开发者工具已启动:${g.appPath}`):th(y,`启动豆包开发者工具失败${g.reason?`:${to(g.reason)}`:""}`)))}}async function ew(e){if(e.prepareDeviceApp){e.onDeviceAppSetupProgress?.(void 0);try{return await e.prepareDeviceApp({onProgress:el(e.output,e.onDeviceAppSetupProgress)})}catch(t){return e.onDeviceAppSetupProgress?.(void 0),{status:"skipped",reason:ty(t)}}}}async function ev(e,t){await eg(e,t,{launchDeviceApp:!0})}async function eb(e,t,r){return"skipped"!==t.status&&t.appPath?e.openPreparedDeviceApp?e.openPreparedDeviceApp(t.appPath,r):e.launchDeviceApp(r):{status:"skipped",reason:t.reason}}async function e_(e,t=process.stderr){let r=await eE(t);return"skipped"!==r.status&&r.appPath?eA(r.appPath,e):{status:"skipped",reason:r.reason}}async function eE(e=process.stderr,t={}){let r=function(e={}){let t=e.env??process.env,r=e.platform??process.platform,o=e.arch??process.arch,n=e.appDir??eD(),i=e.manifest??ee,a=eI(t);if(t[er]?.trim()||!a&&eS({...t,[er]:""},r,n))return;eK(i);let s=eT(r,o);if(!s)return;let d=i.packages[s];if(!d)return;eM(d);let c=eq(i,d),l=eP(t,r);if(!(!a&&eC(l,i,s,d,c)))return{platform:s,version:c,...void 0===d.sizeBytes?{}:{sizeBytes:d.sizeBytes}}}();return r&&!t.onProgress&&(th(e,"真机调试准备:"),th(e,`首次或版本更新需要下载豆包开发者工具${r.sizeBytes?`(${eL(r.sizeBytes)})`:""}。`),th(e,"下载完成后才会生成二维码;下载耗时取决于网络,进度和实际耗时将持续显示。")),await e$({runner:{onProgress:t.onProgress??el(e)}})}async function eA(e,t){return await function(e,t,r=process.platform){var o,n,i;let a,s=(o=e,n=r,a=(i=t)?[["namespace",i.namespace],["project",i.appDir??i.projectPath],["app-key",i.appKey],["host-url",i.hostUrl]].flatMap(([e,t])=>t?[`--${e}=${t}`]:[]):[],"darwin"===n?{command:"open",args:[o,...a.length?["--args",...a]:[]]}:"win32"===n?{command:"cmd",args:["/c","start","",o,...a],windowsVerbatimArguments:!0}:{command:o,args:a});return new Promise((e,t)=>{let r=d(s.command,s.args,{stdio:"ignore",windowsVerbatimArguments:s.windowsVerbatimArguments});r.once("error",t),r.once("spawn",e)})}(e,t),{status:"opened",appPath:e}}async function ek(){let e=function(e=process.env,t=process.platform,r=process.arch,n=eD()){let i=e[er]?.trim();if(i)return o.resolve(i);let a=eS({...e,[er]:""},t,n);if(a)return a;let s=eT(t,r);if(!s)return;let d=eP(e,t),c=eO(d);if(!c||c.platform!==s)return;let l=eW(eH(d,c.activeDeviceAppVersion),c.entry,"device app state entry");return u.existsSync(l)?l:void 0}();return e?(await function(e,t=process.platform){return"darwin"===t?eZ(e):eY(e1(e,t),{rejectOnNonZero:!0}).then(()=>void 0)}(e),{status:"closed",appPath:e}):{status:"skipped",reason:`${er} is not set and no packaged or cached device app was found`}}async function e$(e={}){let t=e.env??process.env,r=e.platform??process.platform,n=e.arch??process.arch,i=e.appDir??eD(),a=eI(t),s=t[er]?.trim();if(s)return{status:"found",appPath:o.resolve(s),source:"env"};if(!a){let e=eS({...t,[er]:""},r,i);if(e)return{status:"found",appPath:e,source:"packaged"}}return ex({env:t,platform:r,arch:n,appDir:i,manifest:e.manifest,runner:e.runner})}async function ex(e={}){let t=e.env??process.env,r=e.platform??process.platform,o=e.arch??process.arch,n=e.manifest??ee;eK(n);let i=eT(r,o);if(!i)return{status:"skipped",reason:`device app download is not supported on ${r}/${o}`};let a=n.packages[i];if(!a)return{status:"skipped",reason:`device app package is not configured for ${i} in CLI ${n.cliVersion}`};let s=eP(t,r),d=eq(n,a);if(!eI(t)){let e=eC(s,n,i,a,d);if(e)return eN(s,d),{status:"found",appPath:e,source:"cache"}}let c=await ej(s,n,i,a,r,e.runner);return eN(s,d),{status:"found",appPath:c,source:"downloaded"}}function eS(e=process.env,t=process.platform,r=eD()){let n=e[er]?.trim();if(n)return o.resolve(n);if(!u.existsSync(r))return;let i=u.readdirSync(r,{withFileTypes:!0}).find(e=>{var r,o;return r=e,"darwin"===(o=t)?r.isDirectory()&&r.name.endsWith(".app"):"win32"===o?r.isFile()&&r.name.toLowerCase().endsWith(".exe"):r.isFile()&&/\.(appimage|AppImage)$/.test(r.name)});return i?o.join(r,i.name):void 0}function eP(e=process.env,t=process.platform){let r=e.DBX_DEVICE_APP_CACHE_DIR?.trim();if(r)return o.resolve(r);if("darwin"===t)return o.join(m.homedir(),"Library","Application Support","dbx","device-app");if("win32"===t){let t=e.LOCALAPPDATA?.trim()||o.join(m.homedir(),"AppData","Local");return o.join(t,"dbx","device-app")}return o.join(m.homedir(),".local","share","dbx","device-app")}function eD(){return o.resolve(ea,"../../..","device-app")}function eT(e,t){if(("darwin"===e||"win32"===e)&&("arm64"===t||"x64"===t))return`${e}-${t}`}function eI(e){let t=e.DBX_DEVICE_APP_FORCE_DOWNLOAD?.trim().toLowerCase();return!!(t&&"0"!==t&&"false"!==t)}function eC(e,t,r,o,n){var i,a,s,d,c;let l,p=eO(e);if(!p||p.activeDeviceAppVersion!==n||p.cliVersion!==t.cliVersion||p.platform!==r||!eJ(p.sha256,o)||p.entry!==o.entry)return;let f=eH(e,n);if(i=f,a=t,s=r,d=o,c=n,!((l=eV(i))&&l.cliVersion===a.cliVersion&&l.deviceAppVersion===c&&l.entry===d.entry&&l.platform===s&&eJ(l.sha256,d)))return;let m=eW(f,o.entry,"device app entry");return u.existsSync(m)?m:void 0}async function ej(e,t,r,n,i,a={}){eM(n);let s=eq(t,n),d=a.now?.()??Date.now(),c=o.join(e,".tmp");u.mkdirSync(c,{recursive:!0}),u.mkdirSync(o.join(e,ei),{recursive:!0});let l=u.mkdtempSync(o.join(c,`${s}-`)),p=o.join(l,"device-app.zip"),f=o.join(l,"extract"),m=eH(e,s);try{var h,y,g,w,v,b,_,E;let c,l;if(a.onProgress?.({phase:"download",downloadedBytes:0,...void 0===n.sizeBytes?{}:{totalBytes:n.sizeBytes,percentage:0},elapsedMs:0}),await eU(n.url,p,a.fetch,a.onProgress),n.sha256&&(a.onProgress?.({phase:"install",stage:"verify"}),(c=await eB(p))!==ez(n.sha256)))throw Error(`device app sha256 mismatch: expected ${n.sha256}, got ${c}`);u.mkdirSync(f,{recursive:!0}),a.onProgress?.({phase:"install",stage:"extract"}),await eR(p,f,i,a);let A=eW(f,n.entry,"device app package entry");(function(e,t){if(!u.existsSync(e))throw Error(`device app entry not found after extraction: ${e}`);let r=u.statSync(e);if("darwin"===t){if(!r.isDirectory()||!e.endsWith(".app"))throw Error(`macOS device app entry must be a .app directory: ${e}`);return}if("win32"===t&&(!r.isFile()||!e.toLowerCase().endsWith(".exe")))throw Error(`Windows device app entry must be an .exe file: ${e}`)})(A,i),function(e,t,r,n,i){let a=eV(e);if(a&&(a.cliVersion!==t.cliVersion||a.deviceAppVersion!==i||a.entry!==n.entry||a.platform!==r||!eJ(a.sha256,n)))throw Error(`device app metadata does not match CLI manifest in ${o.join(e,eo)}`)}(f,t,r,n,s),a.onProgress?.({phase:"install",stage:"install"}),u.rmSync(m,{recursive:!0,force:!0}),u.renameSync(f,m),h=m,y=t,g=r,w=n,v=s,b=d,l={name:"Doubao App V2",cliVersion:y.cliVersion,deviceAppVersion:v,entry:w.entry,platform:g,...w.sha256?{sha256:ez(w.sha256)}:{},installedAt:b},eX(o.join(h,eo),l),_=e,E={activeDeviceAppVersion:s,cliVersion:t.cliVersion,entry:n.entry,platform:r,...n.sha256?{sha256:ez(n.sha256)}:{},installedAt:d},eX(o.join(_,en),E);let k=eW(m,n.entry,"device app entry");return a.onProgress?.({phase:"complete",appPath:k}),k}finally{u.rmSync(l,{recursive:!0,force:!0})}}async function eU(e,o,n=fetch,i){var a,s;let d,c,l,p,f,m,h=new URL(e);if("https:"!==h.protocol&&"http:"!==h.protocol)throw Error(`device app package URL must be http(s): ${e}`);let g=await n(e);if(!g.ok)throw Error(`device app package download failed: HTTP ${g.status} ${g.statusText}`);if(!g.body)throw Error("device app package download failed: empty response body");let w=g.body;await y(t.fromWeb(w),(a=g,s=i,d=function(e){if(!e)return;let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}(a.headers.get("content-length")),c=0,l=-1,p=0,f=Date.now(),(m=e=>{if(!s)return;if(d){let t=Math.min(100,Math.floor(c/d*100));if(!e&&100!==t&&t<l+10||t===l)return;l=t;let r=Date.now()-f;s({phase:"download",downloadedBytes:c,totalBytes:d,percentage:t,elapsedMs:r});return}if(!e&&c-p<0x3200000||c===p)return;p=c;let t=Date.now()-f;s({phase:"download",downloadedBytes:c,elapsedMs:t})})(!1),new r({transform(e,t,r){c+=e.length,m(!1),r(null,e)},flush(e){m(!0),e()}})),u.createWriteStream(o))}function eL(e){let t=["B","KB","MB","GB"],r=e,o=0;for(;r>=1024&&o<t.length-1;)r/=1024,o+=1;return 0===o?`${r} ${t[o]}`:`${r.toFixed(1)} ${t[o]}`}async function eR(e,t,r,o){let n=o.runCommand??(e=>eY(e,{rejectOnNonZero:!0}).then(()=>void 0));if("darwin"===r)return void await n({command:"ditto",args:["-x","-k",e,t]});if("win32"===r)return void await n({command:"powershell.exe",args:["-NoProfile","-ExecutionPolicy","Bypass","-Command",`Expand-Archive -LiteralPath ${eG(e)} -DestinationPath ${eG(t)} -Force`],windowsVerbatimArguments:!0});throw Error(`device app zip extraction is not supported on ${r}`)}function eV(e){let t=eQ(o.join(e,eo));if(!P(t))return;let r=t.cliVersion,n=t.deviceAppVersion,i=t.entry,a=t.platform,s=t.sha256,d=t.installedAt;if("string"==typeof r&&"string"==typeof n&&"string"==typeof i&&"string"==typeof a&&(void 0===s||"string"==typeof s)&&"number"==typeof d)return{name:"string"==typeof t.name?t.name:void 0,cliVersion:r,deviceAppVersion:n,entry:i,platform:a,..."string"==typeof s?{sha256:s}:{},installedAt:d}}function eO(e){let t=eQ(o.join(e,en));if(P(t)&&"string"==typeof t.activeDeviceAppVersion&&"string"==typeof t.cliVersion&&"string"==typeof t.entry&&"string"==typeof t.platform&&(void 0===t.sha256||"string"==typeof t.sha256)&&"number"==typeof t.installedAt)return{activeDeviceAppVersion:t.activeDeviceAppVersion,cliVersion:t.cliVersion,entry:t.entry,platform:t.platform,..."string"==typeof t.sha256?{sha256:t.sha256}:{},installedAt:t.installedAt}}function eN(e,t){let r=o.join(e,ei);if(u.existsSync(r)){for(let e of u.readdirSync(r,{withFileTypes:!0}))if(e.isDirectory()&&e.name!==t)try{u.rmSync(o.join(r,e.name),{recursive:!0,force:!0})}catch{}}}async function eB(e){let t=c.createHash("sha256");return await y(u.createReadStream(e),t),t.digest("hex")}function eH(e,t){return eF(t),o.join(e,ei,t)}function eF(e){if(!/^[0-9A-Za-z._+-]+$/.test(e))throw Error(`device app version contains unsupported path characters: ${e}`)}function eK(e){if(1!==e.schemaVersion)throw Error(`unsupported device app manifest schemaVersion: ${e.schemaVersion}`);if(!e.cliVersion.trim())throw Error("device app manifest cliVersion is required");if(!e.deviceAppVersion.trim())throw Error("device app manifest deviceAppVersion is required");eF(e.deviceAppVersion)}function eM(e){if(!e.url||!e.entry)throw Error("device app package requires url and entry");if(void 0!==e.version){if(!e.version.trim())throw Error("device app package version must not be empty");eF(e.version)}if(e.sha256&&!/^[0-9a-fA-F]{64}$/.test(e.sha256))throw Error(`device app package sha256 must be 64 hex characters: ${e.sha256}`);if(void 0!==e.sizeBytes&&(!Number.isSafeInteger(e.sizeBytes)||e.sizeBytes<=0))throw Error(`device app package sizeBytes must be a positive integer: ${e.sizeBytes}`);if(o.isAbsolute(e.entry)||e.entry.split(/[\\/]+/).includes(".."))throw Error(`device app package entry must be a relative path inside the zip: ${e.entry}`)}function eq(e,t){let r=t.version??e.deviceAppVersion;if(!r.trim())throw Error("device app package version must not be empty");return eF(r),r}function ez(e){return e.toLowerCase()}function eJ(e,t){return!t.sha256||e===ez(t.sha256)}function eW(e,t,r){if(o.isAbsolute(t))throw Error(`${r} must be relative: ${t}`);let n=o.resolve(e),i=o.resolve(e,t);if(i!==n&&!i.startsWith(`${n}${o.sep}`))throw Error(`${r} escapes target directory: ${t}`);return i}function eG(e){return`'${e.replace(/'/g,"''")}'`}function eQ(e){try{return JSON.parse(u.readFileSync(e,"utf8"))}catch{return}}function eX(e,t){u.mkdirSync(o.dirname(e),{recursive:!0}),u.writeFileSync(e,`${JSON.stringify(t,null,2)}
13
- `,"utf8")}async function eZ(e){let t=function(e){if(!e.endsWith(".app"))return;let t=function(e){let t=o.join(e,"Contents","Info.plist");if(!u.existsSync(t))return;let r=u.readFileSync(t,"utf8").match(/<key>CFBundleExecutable<\/key>\s*<string>([^<]+)<\/string>/);return r?.[1]}(e)??o.basename(e,".app");return o.join(e,"Contents","MacOS",t)}(e);await eY(e1(e,"darwin"),{rejectOnNonZero:!1}),!t||await e0(t)&&await eY({command:"pkill",args:["-f",e2(t)]},{rejectOnNonZero:!1})}function eY(e,t){return new Promise((r,o)=>{let n=d(e.command,e.args,{stdio:"ignore",windowsVerbatimArguments:e.windowsVerbatimArguments});n.once("error",o),n.once("exit",n=>{let i=n??0;0!==i&&t.rejectOnNonZero?o(Error(`${e.command} exited with code ${i}`)):r(i)})})}async function e0(e){return 0===await eY({command:"pgrep",args:["-f",e2(e)]},{rejectOnNonZero:!1})}function e1(e,t){return"darwin"===t?{command:"osascript",args:["-e",`tell application (POSIX file "${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}" as alias) to quit`]}:"win32"===t?{command:"cmd",args:["/c","taskkill","/IM",o.basename(e),"/T"],windowsVerbatimArguments:!0}:{command:"pkill",args:["-f",e]}}function e2(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}async function e4(e,t,r){let o=await e.client.call(r);if(!o.length)return void th(e.output,`no ${t}s found`);for(let t of o)th(e.output,`- ${tf(t)}`)}async function e6(e,t){let r=w({args:t,allowPositionals:!0,options:{data:{type:"string"},settings:{type:"string"},mode:{type:"string"},"device-id":{type:"string"}}}),o=r.positionals[0]??await e8(e,"page",T.discoverPages);if(!o)throw Error("page id is required");let n=function(e){if(void 0===e)return"full";if("full"===e||"popup"===e||"floating"===e)return e;throw Error("--mode must be one of: full, popup, floating")}(r.values.mode),i=I(r.values.data,"--data"),a=r.values["device-id"]??e.activeDeviceId;th(e.output,`debug: page push request ${tm({pageId:o,data:i,settings:r.values.settings,mode:n,deviceId:a})}`);let s=C("page",await e.client.call(T.openPage,{pageId:o,pageData:i,pageSettings:r.values.settings,mode:n,deviceId:a}));th(e.output,`page pushed: ${o}`),th(e.output,`status: ${e5(s)}`)}async function e3(e,t){let r=w({args:t,allowPositionals:!0,options:{data:{type:"string"},"bot-id":{type:"string"},"device-id":{type:"string"}}}),o=r.positionals[0]??await e8(e,"widget",T.discoverWidgets);if(!o)throw Error("widget id is required");let n=I(r.values.data,"--data"),i=r.values["device-id"]??e.activeDeviceId;th(e.output,`debug: widget push request ${tm({widgetId:o,data:n,botId:r.values["bot-id"],deviceId:i})}`);let a=C("widget",await e.client.call(T.pushWidget,{widgetId:o,widgetData:n,botId:r.values["bot-id"],deviceId:i}));th(e.output,`widget pushed: ${o}`),th(e.output,`status: ${e5(a)}`)}function e5(e){if(!e.ok)return"failed";let t=function(e){if(!e||"object"!=typeof e)return;let t=e.data;if(!t||"object"!=typeof t)return;let r=t.msg;return"string"==typeof r?r:void 0}(e.result);return"string"==typeof t&&t.trim()?t:"ok"}async function e8(e,t,r){let o=await e.client.call(r);if(o.length)return e.selectItem(t,o,e.output)}function e7(e){return e.map(e=>{let t=tp(e);return t?{label:tf(e),value:t}:void 0}).filter(e=>!!e)}async function e9(e){var t,r;let o,n,i,a,s=e.timeoutMs??6e4;if(!e.hostUrl||!e.appKey)return{ok:!1,status:"skipped",timeoutMs:s,error:"无法生成二维码,缺少 hostUrl 或 appKey。"};let d=e.hostUrl,c=e.appKey,l=(t=e.namespace,r=s,n=new L(t,{nodeId:`dev-auth-${process.pid}-${Math.random().toString(36).slice(2,8)}`,requestTimeout:2e3}),i=!1,a=new Promise(e=>{o=e}),n.createService({name:`devAuthListener${process.pid}`,events:{"connection.newclient"(e){var t;i||(i=!0,o((t=e.params)&&"object"==typeof t?{scope:"string"==typeof t.scope?t.scope:void 0,type:"string"==typeof t.type?t.type:void 0,clientId:"number"==typeof t.clientId?t.clientId:void 0,deviceId:ts(t),app:"string"==typeof t.app?t.app:void 0}:{}))}}}),{start:()=>n.start(),stop:()=>n.stop(),wait:e=>{var t,o,n;return t=a,o=r,n=e,new Promise((e,r)=>{let i=()=>{clearTimeout(a),r(n?.reason instanceof Error?n.reason:new ti)},a=setTimeout(()=>{n?.removeEventListener("abort",i),r(new tn(o))},o);n?.aborted?i():(n?.addEventListener("abort",i,{once:!0}),t.then(t=>{clearTimeout(a),n?.removeEventListener("abort",i),e(t)},e=>{clearTimeout(a),n?.removeEventListener("abort",i),r(e)}))})},async findExistingClient(){let e=await ta(()=>n.call("devtoolConnection.getConnectedClients"),2e3).catch(()=>[]);return function(e){if(!e||"object"!=typeof e)return;let t=e.device,r=t?.info,o="number"==typeof t?.clientId?t.clientId:void 0;return{scope:"all",type:String(r?.network??"").toLowerCase().includes("wifi")?"wifi":"usb",...void 0===o?{}:{clientId:o},deviceId:ts({client:e}),app:"string"==typeof r?.App?r.App:""}}(Array.isArray(e)?e[0]:void 0)}}),u={};await l.start();try{let t,r,o;e.signal?.throwIfAborted();let n=await l.findExistingClient(),i=await te(u,()=>(0,et.Ph)({hostUrl:d,appKey:c,isSigned:!1,appletType:0,baseApiUrl:k(),authOptions:$()}));th(e.output,""),th(e.output,"使用豆包 App 扫码连接调试设备."),th(e.output,`二维码创建成功,请在 ${(t=Math.max(1,Math.round(s/1e3)),r=Math.floor(t/60),o=t%60,r>0?`${r}m ${o}s`:`${o}s`)} 前扫码; 超时可在真机模式执行 \`qr\` 创建新二维码.`),th(e.output,""),await e.onQRCodeReady?.(i.qrCodeValue),e.signal?.throwIfAborted(),th(e.output,`等待设备连接 (${s/1e3}s timeout)...`);let a=n??await l.wait(e.signal);return{ok:!0,status:"connected",timeoutMs:s,qrCodeValue:i.qrCodeValue,debugToken:i.debugToken,encryptedDebugPayload:i.encryptedDebugPayload,client:a}}catch(n){let t=n instanceof tn,r=n instanceof ti||!!e.signal?.aborted,o=function(e){if(e&&"object"==typeof e)return tr(e,"logId")??tr(e,"log_id")}(n)??u.logId;return{ok:!1,status:r?"cancelled":t?"timeout":"skipped",timeoutMs:s,...o?{logId:o}:{},error:n instanceof Error?n.message:String(n)}}finally{await l.stop()}}async function te(e,t){let r=globalThis.fetch;globalThis.fetch=async(t,o)=>{var n;let i,a=await r((i=function(e){try{if("string"==typeof e)return new URL(e);if(e instanceof URL)return new URL(e.toString());return new URL(e.url)}catch{return}}(n=t))&&i.pathname.startsWith("/developer/check_api/apps/")&&i.pathname.endsWith("/debug/ticket")?(i.pathname=i.pathname.replace(/^\/developer\/check_api\//,"/app_developer/check_api/"),"string"==typeof n)?i.toString():n instanceof URL?i:new Request(i,n):n,o);return await tt(e,a),a};try{return await t()}finally{globalThis.fetch=r}}async function tt(e,t){let r=t.headers.get("x-tt-logid");if(r){e.logId=r;return}try{let r=await t.clone().text();if(!r)return;let o=JSON.parse(r),n=tr(o,"log_id")??tr(o,"logId");n&&(e.logId=n)}catch{}}function tr(e,t){if(!e||"object"!=typeof e)return;let r=e[t];return"string"==typeof r&&r?r:void 0}function to(e){return e.replace(/\s*[\[((]log_id:\s*[^\]))]+[\]))]/gi,"").trim()}class tn extends Error{constructor(e){super(`real-device auth timed out after ${e}ms`),this.name="RealDeviceAuthTimeoutError"}}class ti extends Error{constructor(){super("real-device auth cancelled"),this.name="RealDeviceAuthCancelledError"}}async function ta(e,t){let r=Date.now()+t;for(;;)try{return await e()}catch(e){if(Date.now()>=r)throw e;await new Promise(e=>{setTimeout(e,100)})}}function ts(e){let t=e.client?.device,r=t?.info;return r?.usbDeviceId||t?.xdbId||r?.did||r?.debugRouterId}async function td(e,t){let r=o.resolve(t);if(".png"!==o.extname(r).toLowerCase())throw Error("QR file must use the .png extension");return u.mkdirSync(o.dirname(r),{recursive:!0}),await v.toFile(r,e,{errorCorrectionLevel:"L",margin:4,type:"png"}),r}function tc(e=m.tmpdir()){let t;try{t=u.readdirSync(e,{withFileTypes:!0})}catch{return}for(let r of t)if(/^dbx-real-device-qr-.*\.(?:png|svg)$/i.test(r.name)&&(r.isFile()||r.isSymbolicLink()))try{u.unlinkSync(o.join(e,r.name))}catch{}}async function tl(e,t,r,o=process.stderr){let n,i,a;if(r){let t=await td(e,r);th(o,`二维码图片已导出至:${t}`)}let s=await v.toBuffer(e,{errorCorrectionLevel:"L",margin:4,type:"png"}),d=c.randomBytes(18).toString("hex"),l=`/${d}/`,u=new Set,p=!1,m=new Promise(e=>{i=e}),h=()=>{clearTimeout(n),n=void 0,p||i()},y=f((e,t)=>{let r=e.url?.split("?",1)[0];if(t.setHeader("Cache-Control","no-store, no-cache, must-revalidate, max-age=0"),t.setHeader("Expires","0"),t.setHeader("Pragma","no-cache"),"GET"===e.method&&r===l){t.writeHead(200,{"Content-Security-Policy":"default-src 'none'; img-src 'self'; connect-src 'self'; script-src 'unsafe-inline'; style-src 'unsafe-inline'","Content-Type":"text/html; charset=utf-8"}),t.end(`<!doctype html>
1
+ import"node:module";import{__webpack_require__ as e}from"./rslib-runtime.js";import{external_node_stream_promises_namespaceObject as t,getApiBaseUrl as r,getAuthOptions as n,version_version as o,command_Command as i,option_Option as s,runCommand as a,isRecord as d}from"./1664.js";import"./yaml.js";import{GatewayResponseError as l,verifyYAML as c,listMiniAppVersions as u}from"./app.js";import{resolveProjectLayout as p}from"./project-layout.js";import{startForegroundDevService as h,DEV_ACTIONS as f,parseJsonData as m,ensureDevActionSucceeded as g,connectDevService as _,summarizeData as b,ServiceManager as y}from"./dev-service-client.js";import{openUrlInBrowser as w}from"./browser.js";import{extractMCPHeadersFromManifest as v}from"./manifest-mcp-config.js";import"./180.js";import"./3551.js";e.add({"../../../node_modules/.pnpm/@byted-doubao-tools+real-device-debug-auth@0.1.2/node_modules/@byted-doubao-tools/real-device-debug-auth/dist/lib/index.js"(e,t,r){t.Ph=void 0;var n=r("../../../node_modules/.pnpm/@byted-doubao-tools+real-device-debug-auth@0.1.2/node_modules/@byted-doubao-tools/real-device-debug-auth/dist/lib/realDeviceDebugQRCode.js");Object.defineProperty(t,"Ph",{enumerable:!0,get:function(){return n.createRealDeviceDebugQRCodeValue}})},"../../../node_modules/.pnpm/@byted-doubao-tools+real-device-debug-auth@0.1.2/node_modules/@byted-doubao-tools/real-device-debug-auth/dist/lib/realDeviceDebugQRCode.js"(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.createRealDeviceDebugQRCodeValue=t.REAL_DEVICE_DEBUG_QR_ACTION=t.DEFAULT_REAL_DEVICE_DEBUG_BASE_API_URL=void 0;let n=r("../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs"),o=n.__importStar(r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/index.js"));t.DEFAULT_REAL_DEVICE_DEBUG_BASE_API_URL="https://hello.doubao-dev.com",t.REAL_DEVICE_DEBUG_QR_ACTION="start_real_device_debug";class i extends Error{constructor(e,t){super(t),this.name="RealDeviceDebugAuthError",this.code=e}}let s=null;function a(e,t){let r=e.trim();if(!r)throw Error(t);return r}t.createRealDeviceDebugQRCodeValue=function(e){var r,d,l;return n.__awaiter(this,void 0,void 0,function*(){var c;let u={hostUrl:a(e.hostUrl,"hostUrl is required to request real-device debug ticket"),appKey:a(e.appKey,"appKey is required to request real-device debug ticket"),isSigned:e.isSigned,isEncrypted:!!e.isEncrypted,signPublicKeyVersion:null==(r=e.signPublicKeyVersion)?void 0:r.trim(),versionTag:(c=e.versionTag,void 0===c?void 0:a(c,"versionTag must not be empty")),appletType:e.appletType,baseApiUrl:e.baseApiUrl||t.DEFAULT_REAL_DEVICE_DEBUG_BASE_API_URL},p=yield function(e,r){return n.__awaiter(this,void 0,void 0,function*(){var n;let o,i=(n=e.appKey,o=a(e.baseApiUrl||t.DEFAULT_REAL_DEVICE_DEBUG_BASE_API_URL,"baseApiUrl is required to request real-device debug ticket"),new URL(`/developer/check_api/apps/${encodeURIComponent(n)}/debug/ticket`,o).toString()),s=yield r({method:"POST",url:i,data:{debug_context:JSON.stringify(Object.assign(Object.assign({appletName:e.appKey,appletHost:e.hostUrl,appletType:e.appletType,isSigned:e.isSigned,isEncrypted:e.isEncrypted},e.versionTag?{versionTag:e.versionTag}:{}),e.isSigned&&e.signPublicKeyVersion?{signPublicKeyVersion:e.signPublicKeyVersion}:{}))}});return null==s?void 0:s.data})}(u,function(e){return({method:t,url:r,data:a,headers:d})=>n.__awaiter(this,void 0,void 0,function*(){try{let n,i=Object.entries(Object.assign(Object.assign({},void 0===a?{}:{"Content-Type":"application/json"}),d)).reduce((e,[t,r])=>("string"==typeof r&&(e[t]=r),e),{}),l=yield(e?o.withAuth(fetch,e):(!s&&(s=o.withAuth()),s))(r,{method:t,headers:i,body:void 0===a?void 0:JSON.stringify(a)}),c=yield l.text();if(c)try{n=JSON.parse(c)}catch(e){n=c}if(!l.ok)throw Error(`Authed request failed with HTTP ${l.status}${c?`: ${c}`:""}`);return{data:n,status:l.status,headers:l.headers}}catch(e){throw e instanceof o.NotLoggedInError?new i("NOT_LOGGED_IN","No open-platform login session is available. Please run dbx auth:login first, then retry."):e instanceof o.TokenExpiredError?new i("TOKEN_EXPIRED","The open-platform login session has expired. Please run dbx auth:login again, then retry."):e instanceof o.AuthError?new i("AUTH_FAILED",`Open-platform authentication failed: ${e.message}`):e instanceof Error?e:Error(String(e))}})}(e.authOptions));if(!p||0!==p.code){let e=(null==p?void 0:p.code)===void 0?"unknown":String(p.code);if((null==p?void 0:p.code)===0x2fb1793)throw new i("APP_ROLE_PERMISSION_REQUIRED",`真机调试授权失败:当前账号没有工程所配置智能服务的角色权限。
2
+ 工程 AppKey:${u.appKey}
3
+ 请先检查本地工程的 app_key 是否正确,且不是 mock 或占位值;该 AppKey 应属于你有权限的智能服务。
4
+ 权限开通:进入豆包开发者平台 → 对应智能服务 → 成员管理,请应用管理员邀请你的账号并授予开发或调试权限。
5
+ 错误码:${e}`);if((null==p?void 0:p.code)===0x2fb1794)throw new i("APP_WHITELIST_PERMISSION_REQUIRED",`真机调试授权失败:当前智能服务未配置真机调试所需的白名单权限。
6
+ 工程 AppKey:${u.appKey}
7
+ 请先检查本地工程的 app_key 是否正确,且不是 mock 或占位值;该 AppKey 应属于你要调试的智能服务。
8
+ 权限配置:进入豆包开发者平台 → 对应智能服务 → 白名单配置,添加真机调试所需权限后重试。
9
+ 错误码:${e}`);let t=(null==p?void 0:p.message)||"Failed to get debug ticket";throw Error(`${t} (code=${e}, appKey=${u.appKey}, baseApiUrl=${u.baseApiUrl})`)}let h=String((null==(d=p.data)?void 0:d.debug_token)||"").trim(),f=String((null==(l=p.data)?void 0:l.encrypted_debug_payload)||"").trim();if(!h||!f)throw Error("Debug ticket response is missing required fields");return{qrCodeValue:JSON.stringify({action:t.REAL_DEVICE_DEBUG_QR_ACTION,debug_token:h,encrypted_debug_payload:f}),debugToken:h,encryptedDebugPayload:f}})}},"../../../node_modules/.pnpm/dijkstrajs@1.0.3/node_modules/dijkstrajs/dijkstra.js"(e){var t={single_source_shortest_paths:function(e,r,n){var o,i,s,a,d,l,c,u={},p={};p[r]=0;var h=t.PriorityQueue.make();for(h.push(r,0);!h.empty();)for(s in i=(o=h.pop()).value,a=o.cost,d=e[i]||{})d.hasOwnProperty(s)&&(l=a+d[s],c=p[s],(void 0===p[s]||c>l)&&(p[s]=l,h.push(s,l),u[s]=i));if(void 0!==n&&void 0===p[n])throw Error(["Could not find a path from ",r," to ",n,"."].join(""));return u},extract_shortest_path_from_predecessor_list:function(e,t){for(var r=[],n=t;n;)r.push(n),e[n],n=e[n];return r.reverse(),r},find_path:function(e,r,n){var o=t.single_source_shortest_paths(e,r,n);return t.extract_shortest_path_from_predecessor_list(o,n)},PriorityQueue:{make:function(e){var r,n=t.PriorityQueue,o={};for(r in e=e||{},n)n.hasOwnProperty(r)&&(o[r]=n[r]);return o.queue=[],o.sorter=e.sorter||n.default_sorter,o},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){this.queue.push({value:e,cost:t}),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};e.exports=t},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/bitmapper.js"(e,t,r){let n=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/interlace.js"),o=[function(){},function(e,t,r,n){if(n===t.length)throw Error("Ran out of data");let o=t[n];e[r]=o,e[r+1]=o,e[r+2]=o,e[r+3]=255},function(e,t,r,n){if(n+1>=t.length)throw Error("Ran out of data");let o=t[n];e[r]=o,e[r+1]=o,e[r+2]=o,e[r+3]=t[n+1]},function(e,t,r,n){if(n+2>=t.length)throw Error("Ran out of data");e[r]=t[n],e[r+1]=t[n+1],e[r+2]=t[n+2],e[r+3]=255},function(e,t,r,n){if(n+3>=t.length)throw Error("Ran out of data");e[r]=t[n],e[r+1]=t[n+1],e[r+2]=t[n+2],e[r+3]=t[n+3]}],i=[function(){},function(e,t,r,n){let o=t[0];e[r]=o,e[r+1]=o,e[r+2]=o,e[r+3]=n},function(e,t,r){let n=t[0];e[r]=n,e[r+1]=n,e[r+2]=n,e[r+3]=t[1]},function(e,t,r,n){e[r]=t[0],e[r+1]=t[1],e[r+2]=t[2],e[r+3]=n},function(e,t,r){e[r]=t[0],e[r+1]=t[1],e[r+2]=t[2],e[r+3]=t[3]}];t.dataToBitMap=function(e,t){let r,s,a,d,l,c,u=t.width,p=t.height,h=t.depth,f=t.bpp,m=t.interlace;8!==h&&(r=[],s=0,a={get:function(t){for(;r.length<t;)!function(){let t,n,o,i;if(s===e.length)throw Error("Ran out of data");let a=e[s];switch(s++,h){default:throw Error("unrecognised depth");case 16:o=e[s],s++,r.push((a<<8)+o);break;case 4:o=15&a,i=a>>4,r.push(i,o);break;case 2:t=3&a,n=a>>2&3,o=a>>4&3,i=a>>6&3,r.push(i,o,n,t);break;case 1:t=a>>4&1,n=a>>5&1,o=a>>6&1,i=a>>7&1,r.push(i,o,n,t,a>>3&1,a>>2&1,a>>1&1,1&a)}}();let n=r.slice(0,t);return r=r.slice(t),n},resetAfterLine:function(){r.length=0},end:function(){if(s!==e.length)throw Error("extra data found")}}),d=h<=8?Buffer.alloc(u*p*4):new Uint16Array(u*p*4);let g=Math.pow(2,h)-1,_=0;if(m)l=n.getImagePasses(u,p),c=n.getInterlaceIterator(u,p);else{let e=0;c=function(){let t=e;return e+=4,t},l=[{width:u,height:p}]}for(let t=0;t<l.length;t++)8===h?_=function(e,t,r,n,i,s){let a=e.width,d=e.height,l=e.index;for(let e=0;e<d;e++)for(let d=0;d<a;d++){let a=r(d,e,l);o[n](t,i,a,s),s+=n}return s}(l[t],d,c,f,e,_):function(e,t,r,n,o,s){let a=e.width,d=e.height,l=e.index;for(let e=0;e<d;e++){for(let d=0;d<a;d++){let a=o.get(n),c=r(d,e,l);i[n](t,a,c,s)}o.resetAfterLine()}}(l[t],d,c,f,a,g);if(8===h){if(_!==e.length)throw Error("extra data found")}else a.end();return d}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/bitpacker.js"(e,t,r){let n=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/constants.js");e.exports=function(e,t,r,o){let i=-1!==[n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(o.colorType);if(o.colorType===o.inputColorType){let t,r=(new DataView(t=new ArrayBuffer(2)).setInt16(0,256,!0),256!==new Int16Array(t)[0]);if(8===o.bitDepth||16===o.bitDepth&&r)return e}let s=16!==o.bitDepth?e:new Uint16Array(e.buffer),a=255,d=n.COLORTYPE_TO_BPP_MAP[o.inputColorType];4!==d||o.inputHasAlpha||(d=3);let l=n.COLORTYPE_TO_BPP_MAP[o.colorType];16===o.bitDepth&&(a=65535,l*=2);let c=Buffer.alloc(t*r*l),u=0,p=0,h=o.bgColor||{};void 0===h.red&&(h.red=a),void 0===h.green&&(h.green=a),void 0===h.blue&&(h.blue=a);for(let e=0;e<r;e++)for(let e=0;e<t;e++){let e=function(){let e,t,r,d=a;switch(o.inputColorType){case n.COLORTYPE_COLOR_ALPHA:d=s[u+3],e=s[u],t=s[u+1],r=s[u+2];break;case n.COLORTYPE_COLOR:e=s[u],t=s[u+1],r=s[u+2];break;case n.COLORTYPE_ALPHA:d=s[u+1],t=e=s[u],r=e;break;case n.COLORTYPE_GRAYSCALE:t=e=s[u],r=e;break;default:throw Error("input color type:"+o.inputColorType+" is not supported at present")}return o.inputHasAlpha&&!i&&(d/=a,e=Math.min(Math.max(Math.round((1-d)*h.red+d*e),0),a),t=Math.min(Math.max(Math.round((1-d)*h.green+d*t),0),a),r=Math.min(Math.max(Math.round((1-d)*h.blue+d*r),0),a)),{red:e,green:t,blue:r,alpha:d}}();switch(o.colorType){case n.COLORTYPE_COLOR_ALPHA:case n.COLORTYPE_COLOR:8===o.bitDepth?(c[p]=e.red,c[p+1]=e.green,c[p+2]=e.blue,i&&(c[p+3]=e.alpha)):(c.writeUInt16BE(e.red,p),c.writeUInt16BE(e.green,p+2),c.writeUInt16BE(e.blue,p+4),i&&c.writeUInt16BE(e.alpha,p+6));break;case n.COLORTYPE_ALPHA:case n.COLORTYPE_GRAYSCALE:{let t=(e.red+e.green+e.blue)/3;8===o.bitDepth?(c[p]=t,i&&(c[p+1]=e.alpha)):(c.writeUInt16BE(t,p),i&&c.writeUInt16BE(e.alpha,p+2));break}default:throw Error("unrecognised color Type "+o.colorType)}u+=d,p+=l}return c}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/chunkstream.js"(e,t,r){let n=r("util"),o=r("stream"),i=e.exports=function(){o.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};n.inherits(i,o),i.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t}),process.nextTick((function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}).bind(this))},i.prototype.write=function(e,t){let r;return this.writable?(r=Buffer.isBuffer(e)?e:Buffer.from(e,t||this._encoding),this._buffers.push(r),this._buffered+=r.length,this._process(),this._reads&&0===this._reads.length&&(this._paused=!0),this.writable&&!this._paused):(this.emit("error",Error("Stream not writable")),!1)},i.prototype.end=function(e,t){e&&this.write(e,t),this.writable=!1,this._buffers&&(0===this._buffers.length?this._end():(this._buffers.push(null),this._process()))},i.prototype.destroySoon=i.prototype.end,i.prototype._end=function(){this._reads.length>0&&this.emit("error",Error("Unexpected end of input")),this.destroy()},i.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))},i.prototype._processReadAllowingLess=function(e){this._reads.shift();let t=this._buffers[0];t.length>e.length?(this._buffered-=e.length,this._buffers[0]=t.slice(e.length),e.func.call(this,t.slice(0,e.length))):(this._buffered-=t.length,this._buffers.shift(),e.func.call(this,t))},i.prototype._processRead=function(e){this._reads.shift();let t=0,r=0,n=Buffer.alloc(e.length);for(;t<e.length;){let o=this._buffers[r++],i=Math.min(o.length,e.length-t);o.copy(n,t,0,i),t+=i,i!==o.length&&(this._buffers[--r]=o.slice(i))}r>0&&this._buffers.splice(0,r),this._buffered-=e.length,e.func.call(this,n)},i.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let e=this._reads[0];if(e.allowLess)this._processReadAllowingLess(e);else if(this._buffered>=e.length)this._processRead(e);else break}this._buffers&&!this.writable&&this._end()}catch(e){this.emit("error",e)}}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/constants.js"(e){e.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:0x49484452,TYPE_IEND:0x49454e44,TYPE_IDAT:0x49444154,TYPE_PLTE:0x504c5445,TYPE_tRNS:0x74524e53,TYPE_gAMA:0x67414d41,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/crc.js"(e){let t=[];for(let e=0;e<256;e++){let r=e;for(let e=0;e<8;e++)1&r?r=0xedb88320^r>>>1:r>>>=1;t[e]=r}let r=e.exports=function(){this._crc=-1};r.prototype.write=function(e){for(let r=0;r<e.length;r++)this._crc=t[(this._crc^e[r])&255]^this._crc>>>8;return!0},r.prototype.crc32=function(){return -1^this._crc},r.crc32=function(e){let r=-1;for(let n=0;n<e.length;n++)r=t[(r^e[n])&255]^r>>>8;return -1^r}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/filter-pack.js"(e,t,r){let n=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/paeth-predictor.js"),o={0:function(e,t,r,n,o){for(let i=0;i<r;i++)n[o+i]=e[t+i]},1:function(e,t,r,n,o,i){for(let s=0;s<r;s++){let r=s>=i?e[t+s-i]:0,a=e[t+s]-r;n[o+s]=a}},2:function(e,t,r,n,o){for(let i=0;i<r;i++){let s=t>0?e[t+i-r]:0,a=e[t+i]-s;n[o+i]=a}},3:function(e,t,r,n,o,i){for(let s=0;s<r;s++){let a=s>=i?e[t+s-i]:0,d=t>0?e[t+s-r]:0,l=e[t+s]-(a+d>>1);n[o+s]=l}},4:function(e,t,r,o,i,s){for(let a=0;a<r;a++){let d=a>=s?e[t+a-s]:0,l=t>0?e[t+a-r]:0,c=t>0&&a>=s?e[t+a-(r+s)]:0,u=e[t+a]-n(d,l,c);o[i+a]=u}}},i={0:function(e,t,r){let n=0,o=t+r;for(let r=t;r<o;r++)n+=Math.abs(e[r]);return n},1:function(e,t,r,n){let o=0;for(let i=0;i<r;i++){let r=i>=n?e[t+i-n]:0;o+=Math.abs(e[t+i]-r)}return o},2:function(e,t,r){let n=0,o=t+r;for(let i=t;i<o;i++){let o=t>0?e[i-r]:0;n+=Math.abs(e[i]-o)}return n},3:function(e,t,r,n){let o=0;for(let i=0;i<r;i++){let s=i>=n?e[t+i-n]:0,a=t>0?e[t+i-r]:0;o+=Math.abs(e[t+i]-(s+a>>1))}return o},4:function(e,t,r,o){let i=0;for(let s=0;s<r;s++){let a=s>=o?e[t+s-o]:0,d=t>0?e[t+s-r]:0,l=t>0&&s>=o?e[t+s-(r+o)]:0;i+=Math.abs(e[t+s]-n(a,d,l))}return i}};e.exports=function(e,t,r,n,s){let a;if("filterType"in n&&-1!==n.filterType)if("number"==typeof n.filterType)a=[n.filterType];else throw Error("unrecognised filter types");else a=[0,1,2,3,4];16===n.bitDepth&&(s*=2);let d=t*s,l=0,c=0,u=Buffer.alloc((d+1)*r),p=a[0];for(let t=0;t<r;t++){if(a.length>1){let t=1/0;for(let r=0;r<a.length;r++){let n=i[a[r]](e,c,d,s);n<t&&(p=a[r],t=n)}}u[l]=p,l++,o[p](e,c,d,u,l,s),l+=d,c+=d}return u}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse-async.js"(e,t,r){let n=r("util"),o=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/chunkstream.js"),i=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse.js"),s=e.exports=function(e){o.call(this);let t=[],r=this;this._filter=new i(e,{read:this.read.bind(this),write:function(e){t.push(e)},complete:function(){r.emit("complete",Buffer.concat(t))}}),this._filter.start()};n.inherits(s,o)},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse-sync.js"(e,t,r){let n=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/sync-reader.js"),o=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse.js");t.process=function(e,t){let r=[],i=new n(e);return new o(t,{read:i.read.bind(i),write:function(e){r.push(e)},complete:function(){}}).start(),i.process(),Buffer.concat(r)}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse.js"(e,t,r){let n=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/interlace.js"),o=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/paeth-predictor.js");function i(e,t,r){let n=e*t;return 8!==r&&(n=Math.ceil(n/(8/r))),n}let s=e.exports=function(e,t){let r=e.width,o=e.height,s=e.interlace,a=e.bpp,d=e.depth;if(this.read=t.read,this.write=t.write,this.complete=t.complete,this._imageIndex=0,this._images=[],s){let e=n.getImagePasses(r,o);for(let t=0;t<e.length;t++)this._images.push({byteWidth:i(e[t].width,a,d),height:e[t].height,lineIndex:0})}else this._images.push({byteWidth:i(r,a,d),height:o,lineIndex:0});8===d?this._xComparison=a:16===d?this._xComparison=2*a:this._xComparison=1};s.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))},s.prototype._unFilterType1=function(e,t,r){let n=this._xComparison,o=n-1;for(let i=0;i<r;i++){let r=e[1+i],s=i>o?t[i-n]:0;t[i]=r+s}},s.prototype._unFilterType2=function(e,t,r){let n=this._lastLine;for(let o=0;o<r;o++){let r=e[1+o],i=n?n[o]:0;t[o]=r+i}},s.prototype._unFilterType3=function(e,t,r){let n=this._xComparison,o=n-1,i=this._lastLine;for(let s=0;s<r;s++){let r=e[1+s],a=i?i[s]:0,d=Math.floor(((s>o?t[s-n]:0)+a)/2);t[s]=r+d}},s.prototype._unFilterType4=function(e,t,r){let n=this._xComparison,i=n-1,s=this._lastLine;for(let a=0;a<r;a++){let r=e[1+a],d=s?s[a]:0,l=o(a>i?t[a-n]:0,d,a>i&&s?s[a-n]:0);t[a]=r+l}},s.prototype._reverseFilterLine=function(e){let t,r=e[0],n=this._images[this._imageIndex],o=n.byteWidth;if(0===r)t=e.slice(1,o+1);else switch(t=Buffer.alloc(o),r){case 1:this._unFilterType1(e,t,o);break;case 2:this._unFilterType2(e,t,o);break;case 3:this._unFilterType3(e,t,o);break;case 4:this._unFilterType4(e,t,o);break;default:throw Error("Unrecognised filter type - "+r)}this.write(t),n.lineIndex++,n.lineIndex>=n.height?(this._lastLine=null,this._imageIndex++,n=this._images[this._imageIndex]):this._lastLine=t,n?this.read(n.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/format-normaliser.js"(e){e.exports=function(e,t){let r=t.depth,n=t.width,o=t.height,i=t.colorType,s=t.transColor,a=t.palette,d=e;return 3===i?!function(e,t,r,n,o){let i=0;for(let s=0;s<n;s++)for(let n=0;n<r;n++){let r=o[e[i]];if(!r)throw Error("index "+e[i]+" not in palette");for(let e=0;e<4;e++)t[i+e]=r[e];i+=4}}(e,d,n,o,a):(s&&function(e,t,r,n,o){let i=0;for(let s=0;s<n;s++)for(let n=0;n<r;n++){let r=!1;if(1===o.length?o[0]===e[i]&&(r=!0):o[0]===e[i]&&o[1]===e[i+1]&&o[2]===e[i+2]&&(r=!0),r)for(let e=0;e<4;e++)t[i+e]=0;i+=4}}(e,d,n,o,s),8!==r&&(16===r&&(d=Buffer.alloc(n*o*4)),!function(e,t,r,n,o){let i=Math.pow(2,o)-1,s=0;for(let o=0;o<n;o++)for(let n=0;n<r;n++){for(let r=0;r<4;r++)t[s+r]=Math.floor(255*e[s+r]/i+.5);s+=4}}(e,d,n,o,r))),d}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/interlace.js"(e,t){let r=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];t.getImagePasses=function(e,t){let n=[],o=e%8,i=t%8,s=(e-o)/8,a=(t-i)/8;for(let e=0;e<r.length;e++){let t=r[e],d=s*t.x.length,l=a*t.y.length;for(let e=0;e<t.x.length;e++)if(t.x[e]<o)d++;else break;for(let e=0;e<t.y.length;e++)if(t.y[e]<i)l++;else break;d>0&&l>0&&n.push({width:d,height:l,index:e})}return n},t.getInterlaceIterator=function(e){return function(t,n,o){let i=t%r[o].x.length,s=(t-i)/r[o].x.length*8+r[o].x[i],a=n%r[o].y.length;return 4*s+((n-a)/r[o].y.length*8+r[o].y[a])*e*4}}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/packer-async.js"(e,t,r){let n=r("util"),o=r("stream"),i=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/constants.js"),s=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/packer.js"),a=e.exports=function(e){o.call(this),this._packer=new s(e||{}),this._deflate=this._packer.createDeflate(),this.readable=!0};n.inherits(a,o),a.prototype.pack=function(e,t,r,n){this.emit("data",Buffer.from(i.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(t,r)),n&&this.emit("data",this._packer.packGAMA(n));let o=this._packer.filterData(e,t,r);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",(function(e){this.emit("data",this._packer.packIDAT(e))}).bind(this)),this._deflate.on("end",(function(){this.emit("data",this._packer.packIEND()),this.emit("end")}).bind(this)),this._deflate.end(o)}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/packer-sync.js"(e,t,r){let n=!0,o=r("zlib");o.deflateSync||(n=!1);let i=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/constants.js"),s=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/packer.js");e.exports=function(e,t){if(!n)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=new s(t||{}),a=[];a.push(Buffer.from(i.PNG_SIGNATURE)),a.push(r.packIHDR(e.width,e.height)),e.gamma&&a.push(r.packGAMA(e.gamma));let d=r.filterData(e.data,e.width,e.height),l=o.deflateSync(d,r.getDeflateOptions());if(d=null,!l||!l.length)throw Error("bad png - invalid compressed data response");return a.push(r.packIDAT(l)),a.push(r.packIEND()),Buffer.concat(a)}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/packer.js"(e,t,r){let n=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/constants.js"),o=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/crc.js"),i=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/bitpacker.js"),s=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/filter-pack.js"),a=r("zlib"),d=e.exports=function(e){if(this._options=e,e.deflateChunkSize=e.deflateChunkSize||32768,e.deflateLevel=null!=e.deflateLevel?e.deflateLevel:9,e.deflateStrategy=null!=e.deflateStrategy?e.deflateStrategy:3,e.inputHasAlpha=null==e.inputHasAlpha||e.inputHasAlpha,e.deflateFactory=e.deflateFactory||a.createDeflate,e.bitDepth=e.bitDepth||8,e.colorType="number"==typeof e.colorType?e.colorType:n.COLORTYPE_COLOR_ALPHA,e.inputColorType="number"==typeof e.inputColorType?e.inputColorType:n.COLORTYPE_COLOR_ALPHA,-1===[n.COLORTYPE_GRAYSCALE,n.COLORTYPE_COLOR,n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(e.colorType))throw Error("option color type:"+e.colorType+" is not supported at present");if(-1===[n.COLORTYPE_GRAYSCALE,n.COLORTYPE_COLOR,n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(e.inputColorType))throw Error("option input color type:"+e.inputColorType+" is not supported at present");if(8!==e.bitDepth&&16!==e.bitDepth)throw Error("option bit depth:"+e.bitDepth+" is not supported at present")};d.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}},d.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())},d.prototype.filterData=function(e,t,r){let o=i(e,t,r,this._options),a=n.COLORTYPE_TO_BPP_MAP[this._options.colorType];return s(o,t,r,this._options,a)},d.prototype._packChunk=function(e,t){let r=t?t.length:0,n=Buffer.alloc(r+12);return n.writeUInt32BE(r,0),n.writeUInt32BE(e,4),t&&t.copy(n,8),n.writeInt32BE(o.crc32(n.slice(4,n.length-4)),n.length-4),n},d.prototype.packGAMA=function(e){let t=Buffer.alloc(4);return t.writeUInt32BE(Math.floor(e*n.GAMMA_DIVISION),0),this._packChunk(n.TYPE_gAMA,t)},d.prototype.packIHDR=function(e,t){let r=Buffer.alloc(13);return r.writeUInt32BE(e,0),r.writeUInt32BE(t,4),r[8]=this._options.bitDepth,r[9]=this._options.colorType,r[10]=0,r[11]=0,r[12]=0,this._packChunk(n.TYPE_IHDR,r)},d.prototype.packIDAT=function(e){return this._packChunk(n.TYPE_IDAT,e)},d.prototype.packIEND=function(){return this._packChunk(n.TYPE_IEND,null)}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/paeth-predictor.js"(e){e.exports=function(e,t,r){let n=e+t-r,o=Math.abs(n-e),i=Math.abs(n-t),s=Math.abs(n-r);return o<=i&&o<=s?e:i<=s?t:r}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/parser-async.js"(e,t,r){let n=r("util"),o=r("zlib"),i=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/chunkstream.js"),s=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse-async.js"),a=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/parser.js"),d=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/bitmapper.js"),l=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/format-normaliser.js"),c=e.exports=function(e){i.call(this),this._parser=new a(e,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=e,this.writable=!0,this._parser.start()};n.inherits(c,i),c.prototype._handleError=function(e){this.emit("error",e),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0},c.prototype._inflateData=function(e){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=o.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let e=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,t=Math.max(e,o.Z_MIN_CHUNK);this._inflate=o.createInflate({chunkSize:t});let r=e,n=this.emit.bind(this,"error");this._inflate.on("error",function(e){r&&n(e)}),this._filter.on("complete",this._complete.bind(this));let i=this._filter.write.bind(this._filter);this._inflate.on("data",function(e){r&&(e.length>r&&(e=e.slice(0,r)),r-=e.length,i(e))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(e)},c.prototype._handleMetaData=function(e){this._metaData=e,this._bitmapInfo=Object.create(e),this._filter=new s(this._bitmapInfo)},c.prototype._handleTransColor=function(e){this._bitmapInfo.transColor=e},c.prototype._handlePalette=function(e){this._bitmapInfo.palette=e},c.prototype._simpleTransparency=function(){this._metaData.alpha=!0},c.prototype._headersFinished=function(){this.emit("metadata",this._metaData)},c.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))},c.prototype._complete=function(e){let t;if(!this.errord){try{let r=d.dataToBitMap(e,this._bitmapInfo);t=l(r,this._bitmapInfo),r=null}catch(e){this._handleError(e);return}this.emit("parsed",t)}}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/parser-sync.js"(e,t,r){let n=!0,o=r("zlib"),i=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/sync-inflate.js");o.deflateSync||(n=!1);let s=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/sync-reader.js"),a=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/filter-parse-sync.js"),d=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/parser.js"),l=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/bitmapper.js"),c=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/format-normaliser.js");e.exports=function(e,t){let r,u,p,h;if(!n)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let f=[],m=new s(e);if(new d(t,{read:m.read.bind(m),error:function(e){r=e},metadata:function(e){u=e},gamma:function(e){p=e},palette:function(e){u.palette=e},transColor:function(e){u.transColor=e},inflateData:function(e){f.push(e)},simpleTransparency:function(){u.alpha=!0}}).start(),m.process(),r)throw r;let g=Buffer.concat(f);if(f.length=0,u.interlace)h=o.inflateSync(g);else{let e=((u.width*u.bpp*u.depth+7>>3)+1)*u.height;h=i(g,{chunkSize:e,maxLength:e})}if(g=null,!h||!h.length)throw Error("bad png - invalid inflate data response");let _=a.process(h,u);g=null;let b=l.dataToBitMap(_,u);_=null;let y=c(b,u);return u.data=y,u.gamma=p||0,u}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/parser.js"(e,t,r){let n=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/constants.js"),o=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/crc.js"),i=e.exports=function(e,t){this._options=e,e.checkCRC=!1!==e.checkCRC,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[n.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[n.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[n.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[n.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[n.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[n.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=t.read,this.error=t.error,this.metadata=t.metadata,this.gamma=t.gamma,this.transColor=t.transColor,this.palette=t.palette,this.parsed=t.parsed,this.inflateData=t.inflateData,this.finished=t.finished,this.simpleTransparency=t.simpleTransparency,this.headersFinished=t.headersFinished||function(){}};i.prototype.start=function(){this.read(n.PNG_SIGNATURE.length,this._parseSignature.bind(this))},i.prototype._parseSignature=function(e){let t=n.PNG_SIGNATURE;for(let r=0;r<t.length;r++)if(e[r]!==t[r])return void this.error(Error("Invalid file signature"));this.read(8,this._parseChunkBegin.bind(this))},i.prototype._parseChunkBegin=function(e){let t=e.readUInt32BE(0),r=e.readUInt32BE(4),i="";for(let t=4;t<8;t++)i+=String.fromCharCode(e[t]);let s=!!(32&e[4]);return this._hasIHDR||r===n.TYPE_IHDR?(this._crc=new o,this._crc.write(Buffer.from(i)),this._chunks[r])?this._chunks[r](t):s?void this.read(t+4,this._skipChunk.bind(this)):void this.error(Error("Unsupported critical chunk type "+i)):void this.error(Error("Expected IHDR on beggining"))},i.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))},i.prototype._parseChunkEnd=function(e){let t=e.readInt32BE(0),r=this._crc.crc32();this._options.checkCRC&&r!==t?this.error(Error("Crc error - "+t+" - "+r)):this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleIHDR=function(e){this.read(e,this._parseIHDR.bind(this))},i.prototype._parseIHDR=function(e){this._crc.write(e);let t=e.readUInt32BE(0),r=e.readUInt32BE(4),o=e[8],i=e[9],s=e[10],a=e[11],d=e[12];if(8!==o&&4!==o&&2!==o&&1!==o&&16!==o)return void this.error(Error("Unsupported bit depth "+o));if(!(i in n.COLORTYPE_TO_BPP_MAP))return void this.error(Error("Unsupported color type"));if(0!==s)return void this.error(Error("Unsupported compression method"));if(0!==a)return void this.error(Error("Unsupported filter method"));if(0!==d&&1!==d)return void this.error(Error("Unsupported interlace method"));this._colorType=i;let l=n.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:t,height:r,depth:o,interlace:!!d,palette:!!(i&n.COLORTYPE_PALETTE),color:!!(i&n.COLORTYPE_COLOR),alpha:!!(i&n.COLORTYPE_ALPHA),bpp:l,colorType:i}),this._handleChunkEnd()},i.prototype._handlePLTE=function(e){this.read(e,this._parsePLTE.bind(this))},i.prototype._parsePLTE=function(e){this._crc.write(e);let t=Math.floor(e.length/3);for(let r=0;r<t;r++)this._palette.push([e[3*r],e[3*r+1],e[3*r+2],255]);this.palette(this._palette),this._handleChunkEnd()},i.prototype._handleTRNS=function(e){this.simpleTransparency(),this.read(e,this._parseTRNS.bind(this))},i.prototype._parseTRNS=function(e){if(this._crc.write(e),this._colorType===n.COLORTYPE_PALETTE_COLOR){if(0===this._palette.length)return void this.error(Error("Transparency chunk must be after palette"));if(e.length>this._palette.length)return void this.error(Error("More transparent colors than palette size"));for(let t=0;t<e.length;t++)this._palette[t][3]=e[t];this.palette(this._palette)}this._colorType===n.COLORTYPE_GRAYSCALE&&this.transColor([e.readUInt16BE(0)]),this._colorType===n.COLORTYPE_COLOR&&this.transColor([e.readUInt16BE(0),e.readUInt16BE(2),e.readUInt16BE(4)]),this._handleChunkEnd()},i.prototype._handleGAMA=function(e){this.read(e,this._parseGAMA.bind(this))},i.prototype._parseGAMA=function(e){this._crc.write(e),this.gamma(e.readUInt32BE(0)/n.GAMMA_DIVISION),this._handleChunkEnd()},i.prototype._handleIDAT=function(e){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-e,this._parseIDAT.bind(this,e))},i.prototype._parseIDAT=function(e,t){if(this._crc.write(t),this._colorType===n.COLORTYPE_PALETTE_COLOR&&0===this._palette.length)throw Error("Expected palette not found");this.inflateData(t);let r=e-t.length;r>0?this._handleIDAT(r):this._handleChunkEnd()},i.prototype._handleIEND=function(e){this.read(e,this._parseIEND.bind(this))},i.prototype._parseIEND=function(e){this._crc.write(e),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/png-sync.js"(e,t,r){let n=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/parser-sync.js"),o=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/packer-sync.js");t.read=function(e,t){return n(e,t||{})},t.write=function(e,t){return o(e,t)}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/png.js"(e,t,r){let n=r("util"),o=r("stream"),i=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/parser-async.js"),s=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/packer-async.js"),a=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/png-sync.js"),d=t.O=function(e){o.call(this),e=e||{},this.width=0|e.width,this.height=0|e.height,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,e.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new i(e),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",(function(e){this.data=e,this.emit("parsed",e)}).bind(this)),this._packer=new s(e),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};n.inherits(d,o),d.sync=a,d.prototype.pack=function(){return this.data&&this.data.length?process.nextTick((function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}).bind(this)):this.emit("error","No data provided"),this},d.prototype.parse=function(e,t){if(t){let e,r;e=(function(e){this.removeListener("error",r),this.data=e,t(null,this)}).bind(this),r=(function(r){this.removeListener("parsed",e),t(r,null)}).bind(this),this.once("parsed",e),this.once("error",r)}return this.end(e),this},d.prototype.write=function(e){return this._parser.write(e),!0},d.prototype.end=function(e){this._parser.end(e)},d.prototype._metadata=function(e){this.width=e.width,this.height=e.height,this.emit("metadata",e)},d.prototype._gamma=function(e){this.gamma=e},d.prototype._handleClose=function(){this._parser.writable||this._packer.readable||this.emit("close")},d.bitblt=function(e,t,r,n,o,i,s,a){if(n|=0,o|=0,i|=0,s|=0,a|=0,(r|=0)>e.width||n>e.height||r+o>e.width||n+i>e.height)throw Error("bitblt reading outside image");if(s>t.width||a>t.height||s+o>t.width||a+i>t.height)throw Error("bitblt writing outside image");for(let d=0;d<i;d++)e.data.copy(t.data,(a+d)*t.width+s<<2,(n+d)*e.width+r<<2,(n+d)*e.width+r+o<<2)},d.prototype.bitblt=function(e,t,r,n,o,i,s){return d.bitblt(this,e,t,r,n,o,i,s),this},d.adjustGamma=function(e){if(e.gamma){for(let t=0;t<e.height;t++)for(let r=0;r<e.width;r++){let n=e.width*t+r<<2;for(let t=0;t<3;t++){let r=e.data[n+t]/255;r=Math.pow(r,1/2.2/e.gamma),e.data[n+t]=Math.round(255*r)}}e.gamma=0}},d.prototype.adjustGamma=function(){d.adjustGamma(this)}},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/sync-inflate.js"(e,t,r){let n=r("assert").ok,o=r("zlib"),i=r("util"),s=r("buffer").kMaxLength;function a(e){if(!(this instanceof a))return new a(e);e&&e.chunkSize<o.Z_MIN_CHUNK&&(e.chunkSize=o.Z_MIN_CHUNK),o.Inflate.call(this,e),this._offset=void 0===this._offset?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,e&&null!=e.maxLength&&(this._maxLength=e.maxLength)}function d(e,t){t&&process.nextTick(t),e._handle&&(e._handle.close(),e._handle=null)}function l(e,t){var r=new a(t),n=e;if("string"==typeof n&&(n=Buffer.from(n)),!(n instanceof Buffer))throw TypeError("Not a string or buffer");let i=r._finishFlushFlag;return null==i&&(i=o.Z_FINISH),r._processChunk(n,i)}a.prototype._processChunk=function(e,t,r){let i,a;if("function"==typeof r)return o.Inflate._processChunk.call(this,e,t,r);let l=this,c=e&&e.length,u=this._chunkSize-this._offset,p=this._maxLength,h=0,f=[],m=0;this.on("error",function(e){i=e}),n(this._handle,"zlib binding closed");do a=(a=this._handle.writeSync(t,e,h,c,this._buffer,this._offset,u))||this._writeState;while(!this._hadError&&function(e,t){if(l._hadError)return;let r=u-t;if(n(r>=0,"have should not go down"),r>0){let e=l._buffer.slice(l._offset,l._offset+r);if(l._offset+=r,e.length>p&&(e=e.slice(0,p)),f.push(e),m+=e.length,0==(p-=e.length))return!1}return(0===t||l._offset>=l._chunkSize)&&(u=l._chunkSize,l._offset=0,l._buffer=Buffer.allocUnsafe(l._chunkSize)),0===t&&(h+=c-e,c=e,!0)}(a[0],a[1]));if(this._hadError)throw i;if(m>=s)throw d(this),RangeError("Cannot create final Buffer. It would be larger than 0x"+s.toString(16)+" bytes");let g=Buffer.concat(f,m);return d(this),g},i.inherits(a,o.Inflate),e.exports=t=l,t.Inflate=a,t.createInflate=function(e){return new a(e)},t.inflateSync=l},"../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/sync-reader.js"(e){let t=e.exports=function(e){this._buffer=e,this._reads=[]};t.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t})},t.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let e=this._reads[0];if(this._buffer.length&&(this._buffer.length>=e.length||e.allowLess)){this._reads.shift();let t=this._buffer;this._buffer=t.slice(e.length),e.func.call(this,t.slice(0,e.length))}else break}return this._reads.length>0?Error("There are some read requests waitng on finished stream"):this._buffer.length>0?Error("unrecognised content at end of stream"):void 0}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/browser.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js"),o=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/qrcode.js"),i=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/canvas.js"),s=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg-tag.js");function a(e,t,r,i,s){let a=[].slice.call(arguments,1),d=a.length,l="function"==typeof a[d-1];if(!l&&!n())throw Error("Callback required as last argument");if(l){if(d<2)throw Error("Too few arguments provided");2===d?(s=r,r=t,t=i=void 0):3===d&&(t.getContext&&void 0===s?(s=i,i=void 0):(s=i,i=r,r=t,t=void 0))}else{if(d<1)throw Error("Too few arguments provided");return 1===d?(r=t,t=i=void 0):2!==d||t.getContext||(i=r,r=t,t=void 0),new Promise(function(n,s){try{let s=o.create(r,i);n(e(s,t,i))}catch(e){s(e)}})}try{let n=o.create(r,i);s(null,e(n,t,i))}catch(e){s(e)}}o.create,a.bind(null,i.render),a.bind(null,i.renderToDataURL),a.bind(null,function(e,t,r){return s.render(e,r)})},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js"(e){e.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alignment-pattern.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js").getSymbolSize;t.getRowColCoords=function(e){if(1===e)return[];let t=Math.floor(e/7)+2,r=n(e),o=145===r?26:2*Math.ceil((r-13)/(2*t-2)),i=[r-7];for(let e=1;e<t-1;e++)i[e]=i[e-1]-o;return i.push(6),i.reverse()},t.getPositions=function(e){let r=[],n=t.getRowColCoords(e),o=n.length;for(let e=0;e<o;e++)for(let t=0;t<o;t++)(0!==e||0!==t)&&(0!==e||t!==o-1)&&(e!==o-1||0!==t)&&r.push([n[e],n[t]]);return r}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alphanumeric-data.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js"),o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let r=45*o.indexOf(this.data[t]);r+=o.indexOf(this.data[t+1]),e.put(r,11)}this.data.length%2&&e.put(o.indexOf(this.data[t]),6)},e.exports=i},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-buffer.js"(e){function t(){this.buffer=[],this.length=0}t.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let r=0;r<t;r++)this.putBit((e>>>t-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},e.exports=t},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-matrix.js"(e){function t(e){if(!e||e<1)throw Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}t.prototype.set=function(e,t,r,n){let o=e*this.size+t;this.data[o]=r,n&&(this.reservedBit[o]=!0)},t.prototype.get=function(e,t){return this.data[e*this.size+t]},t.prototype.xor=function(e,t,r){this.data[e*this.size+t]^=r},t.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},e.exports=t},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/byte-data.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js");function o(e){this.mode=n.BYTE,"string"==typeof e?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}o.getBitsLength=function(e){return 8*e},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(e){for(let t=0,r=this.data.length;t<r;t++)e.put(this.data[t],8)},e.exports=o},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-code.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js"),o=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],i=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];t.getBlocksCount=function(e,t){switch(t){case n.L:return o[(e-1)*4+0];case n.M:return o[(e-1)*4+1];case n.Q:return o[(e-1)*4+2];case n.H:return o[(e-1)*4+3];default:return}},t.getTotalCodewordsCount=function(e,t){switch(t){case n.L:return i[(e-1)*4+0];case n.M:return i[(e-1)*4+1];case n.Q:return i[(e-1)*4+2];case n.H:return i[(e-1)*4+3];default:return}}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js"(e,t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2},t.isValid=function(e){return e&&void 0!==e.bit&&e.bit>=0&&e.bit<4},t.from=function(e,r){if(t.isValid(e))return e;try{if("string"!=typeof e)throw Error("Param is not a string");switch(e.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw Error("Unknown EC Level: "+e)}}catch(e){return r}}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/finder-pattern.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js").getSymbolSize;t.getPositions=function(e){let t=n(e);return[[0,0],[t-7,0],[0,t-7]]}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/format-info.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js"),o=n.getBCHDigit(1335);t.getEncodedBits=function(e,t){let r=e.bit<<3|t,i=r<<10;for(;n.getBCHDigit(i)-o>=0;)i^=1335<<n.getBCHDigit(i)-o;return(r<<10|i)^21522}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/galois-field.js"(e,t){let r=new Uint8Array(512),n=new Uint8Array(256),o=1;for(let e=0;e<255;e++)r[e]=o,n[o]=e,256&(o<<=1)&&(o^=285);for(let e=255;e<512;e++)r[e]=r[e-255];t.exp=function(e){return r[e]},t.mul=function(e,t){return 0===e||0===t?0:r[n[e]+n[t]]}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/kanji-data.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js"),o=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js");function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return 13*e},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let r=o.toSJIS(this.data[t]);if(r>=33088&&r<=40956)r-=33088;else if(r>=57408&&r<=60351)r-=49472;else throw Error("Invalid SJIS character: "+this.data[t]+"\nMake sure your charset is UTF-8");r=(r>>>8&255)*192+(255&r),e.put(r,13)}},e.exports=i},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mask-pattern.js"(e,t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};t.isValid=function(e){return null!=e&&""!==e&&!isNaN(e)&&e>=0&&e<=7},t.from=function(e){return t.isValid(e)?parseInt(e,10):void 0},t.getPenaltyN1=function(e){let t=e.size,r=0,n=0,o=0,i=null,s=null;for(let a=0;a<t;a++){n=o=0,i=s=null;for(let d=0;d<t;d++){let t=e.get(a,d);t===i?n++:(n>=5&&(r+=3+(n-5)),i=t,n=1),(t=e.get(d,a))===s?o++:(o>=5&&(r+=3+(o-5)),s=t,o=1)}n>=5&&(r+=3+(n-5)),o>=5&&(r+=3+(o-5))}return r},t.getPenaltyN2=function(e){let t=e.size,r=0;for(let n=0;n<t-1;n++)for(let o=0;o<t-1;o++){let t=e.get(n,o)+e.get(n,o+1)+e.get(n+1,o)+e.get(n+1,o+1);(4===t||0===t)&&r++}return 3*r},t.getPenaltyN3=function(e){let t=e.size,r=0,n=0,o=0;for(let i=0;i<t;i++){n=o=0;for(let s=0;s<t;s++)n=n<<1&2047|e.get(i,s),s>=10&&(1488===n||93===n)&&r++,o=o<<1&2047|e.get(s,i),s>=10&&(1488===o||93===o)&&r++}return 40*r},t.getPenaltyN4=function(e){let t=0,r=e.data.length;for(let n=0;n<r;n++)t+=e.data[n];return 10*Math.abs(Math.ceil(100*t/r/5)-10)},t.applyMask=function(e,r){let n=r.size;for(let o=0;o<n;o++)for(let i=0;i<n;i++)r.isReserved(i,o)||r.xor(i,o,function(e,r,n){switch(e){case t.Patterns.PATTERN000:return(r+n)%2==0;case t.Patterns.PATTERN001:return r%2==0;case t.Patterns.PATTERN010:return n%3==0;case t.Patterns.PATTERN011:return(r+n)%3==0;case t.Patterns.PATTERN100:return(Math.floor(r/2)+Math.floor(n/3))%2==0;case t.Patterns.PATTERN101:return r*n%2+r*n%3==0;case t.Patterns.PATTERN110:return(r*n%2+r*n%3)%2==0;case t.Patterns.PATTERN111:return(r*n%3+(r+n)%2)%2==0;default:throw Error("bad maskPattern:"+e)}}(e,i,o))},t.getBestMask=function(e,r){let n=Object.keys(t.Patterns).length,o=0,i=1/0;for(let s=0;s<n;s++){r(s),t.applyMask(s,e);let n=t.getPenaltyN1(e)+t.getPenaltyN2(e)+t.getPenaltyN3(e)+t.getPenaltyN4(e);t.applyMask(s,e),n<i&&(i=n,o=s)}return o}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version-check.js"),o=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/regex.js");t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(e,t){if(!e.ccBits)throw Error("Invalid mode: "+e);if(!n.isValid(t))throw Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]},t.getBestModeForData=function(e){return o.testNumeric(e)?t.NUMERIC:o.testAlphanumeric(e)?t.ALPHANUMERIC:o.testKanji(e)?t.KANJI:t.BYTE},t.toString=function(e){if(e&&e.id)return e.id;throw Error("Invalid mode")},t.isValid=function(e){return e&&e.bit&&e.ccBits},t.from=function(e,r){if(t.isValid(e))return e;try{if("string"!=typeof e)throw Error("Param is not a string");switch(e.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw Error("Unknown mode: "+e)}}catch(e){return r}}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/numeric-data.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js");function o(e){this.mode=n.NUMERIC,this.data=e.toString()}o.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(e){let t,r;for(t=0;t+3<=this.data.length;t+=3)r=parseInt(this.data.substr(t,3),10),e.put(r,10);let n=this.data.length-t;n>0&&(r=parseInt(this.data.substr(t),10),e.put(r,3*n+1))},e.exports=o},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/polynomial.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/galois-field.js");t.mul=function(e,t){let r=new Uint8Array(e.length+t.length-1);for(let o=0;o<e.length;o++)for(let i=0;i<t.length;i++)r[o+i]^=n.mul(e[o],t[i]);return r},t.mod=function(e,t){let r=new Uint8Array(e);for(;r.length-t.length>=0;){let e=r[0];for(let o=0;o<t.length;o++)r[o]^=n.mul(t[o],e);let o=0;for(;o<r.length&&0===r[o];)o++;r=r.slice(o)}return r},t.generateECPolynomial=function(e){let r=new Uint8Array([1]);for(let o=0;o<e;o++)r=t.mul(r,new Uint8Array([1,n.exp(o)]));return r}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/qrcode.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js"),o=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js"),i=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-buffer.js"),s=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-matrix.js"),a=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alignment-pattern.js"),d=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/finder-pattern.js"),l=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mask-pattern.js"),c=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-code.js"),u=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/reed-solomon-encoder.js"),p=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version.js"),h=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/format-info.js"),f=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js"),m=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/segments.js");function g(e,t,r){let n,o,i=e.size,s=h.getEncodedBits(t,r);for(n=0;n<15;n++)o=(s>>n&1)==1,n<6?e.set(n,8,o,!0):n<8?e.set(n+1,8,o,!0):e.set(i-15+n,8,o,!0),n<8?e.set(8,i-n-1,o,!0):n<9?e.set(8,15-n-1+1,o,!0):e.set(8,15-n-1,o,!0);e.set(i-8,8,1,!0)}t.create=function(e,t){let r,h;if(void 0===e||""===e)throw Error("No input text");let _=o.M;return void 0!==t&&(_=o.from(t.errorCorrectionLevel,o.M),r=p.from(t.version),h=l.from(t.maskPattern),t.toSJISFunc&&n.setToSJISFunction(t.toSJISFunc)),function(e,t,r,o){let h;if(Array.isArray(e))h=m.fromArray(e);else if("string"==typeof e){let n=t;if(!n){let t=m.rawSplit(e);n=p.getBestVersionForData(t,r)}h=m.fromString(e,n||40)}else throw Error("Invalid data");let _=p.getBestVersionForData(h,r);if(!_)throw Error("The amount of data is too big to be stored in a QR Code");if(t){if(t<_)throw Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+_+".\n")}else t=_;let b=function(e,t,r){let o=new i;r.forEach(function(t){o.put(t.mode.bit,4),o.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(o)});let s=(n.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,t))*8;for(o.getLengthInBits()+4<=s&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(0);let a=(s-o.getLengthInBits())/8;for(let e=0;e<a;e++)o.put(e%2?17:236,8);return function(e,t,r){let o,i,s=n.getSymbolTotalCodewords(t),a=s-c.getTotalCodewordsCount(t,r),d=c.getBlocksCount(t,r),l=s%d,p=d-l,h=Math.floor(s/d),f=Math.floor(a/d),m=f+1,g=h-f,_=new u(g),b=0,y=Array(d),w=Array(d),v=0,E=new Uint8Array(e.buffer);for(let e=0;e<d;e++){let t=e<p?f:m;y[e]=E.slice(b,b+t),w[e]=_.encode(y[e]),b+=t,v=Math.max(v,t)}let A=new Uint8Array(s),j=0;for(o=0;o<v;o++)for(i=0;i<d;i++)o<y[i].length&&(A[j++]=y[i][o]);for(o=0;o<g;o++)for(i=0;i<d;i++)A[j++]=w[i][o];return A}(o,e,t)}(t,r,h),y=new s(n.getSymbolSize(t));!function(e,t){let r=e.size,n=d.getPositions(t);for(let t=0;t<n.length;t++){let o=n[t][0],i=n[t][1];for(let t=-1;t<=7;t++)if(!(o+t<=-1)&&!(r<=o+t))for(let n=-1;n<=7;n++)i+n<=-1||r<=i+n||(t>=0&&t<=6&&(0===n||6===n)||n>=0&&n<=6&&(0===t||6===t)||t>=2&&t<=4&&n>=2&&n<=4?e.set(o+t,i+n,!0,!0):e.set(o+t,i+n,!1,!0))}}(y,t);let w=y.size;for(let e=8;e<w-8;e++){let t=e%2==0;y.set(e,6,t,!0),y.set(6,e,t,!0)}return!function(e,t){let r=a.getPositions(t);for(let t=0;t<r.length;t++){let n=r[t][0],o=r[t][1];for(let t=-2;t<=2;t++)for(let r=-2;r<=2;r++)-2===t||2===t||-2===r||2===r||0===t&&0===r?e.set(n+t,o+r,!0,!0):e.set(n+t,o+r,!1,!0)}}(y,t),g(y,r,0),t>=7&&function(e,t){let r,n,o,i=e.size,s=p.getEncodedBits(t);for(let t=0;t<18;t++)r=Math.floor(t/3),n=t%3+i-8-3,o=(s>>t&1)==1,e.set(r,n,o,!0),e.set(n,r,o,!0)}(y,t),!function(e,t){let r=e.size,n=-1,o=r-1,i=7,s=0;for(let a=r-1;a>0;a-=2)for(6===a&&a--;;){for(let r=0;r<2;r++)if(!e.isReserved(o,a-r)){let n=!1;s<t.length&&(n=(t[s]>>>i&1)==1),e.set(o,a-r,n),-1==--i&&(s++,i=7)}if((o+=n)<0||r<=o){o-=n,n=-n;break}}}(y,b),isNaN(o)&&(o=l.getBestMask(y,g.bind(null,y,r))),l.applyMask(o,y),g(y,r,o),{modules:y,version:t,errorCorrectionLevel:r,maskPattern:o,segments:h}}(e,r,_,h)}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/reed-solomon-encoder.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/polynomial.js");function o(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}o.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},o.prototype.encode=function(e){if(!this.genPoly)throw Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),o=this.degree-r.length;if(o>0){let e=new Uint8Array(this.degree);return e.set(r,o),e}return r},e.exports=o},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/regex.js"(e,t){let r="[0-9]+",n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+",o="(?:(?![A-Z0-9 $%*+\\-./:]|"+(n=n.replace(/u/g,"\\u"))+")(?:.|[\r\n]))+";t.KANJI=RegExp(n,"g"),t.BYTE_KANJI=RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),t.BYTE=RegExp(o,"g"),t.NUMERIC=RegExp(r,"g"),t.ALPHANUMERIC=RegExp("[A-Z $%*+\\-./:]+","g");let i=RegExp("^"+n+"$"),s=RegExp("^"+r+"$"),a=RegExp("^[A-Z0-9 $%*+\\-./:]+$");t.testKanji=function(e){return i.test(e)},t.testNumeric=function(e){return s.test(e)},t.testAlphanumeric=function(e){return a.test(e)}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/segments.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js"),o=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/numeric-data.js"),i=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alphanumeric-data.js"),s=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/byte-data.js"),a=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/kanji-data.js"),d=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/regex.js"),l=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js"),c=r("../../../node_modules/.pnpm/dijkstrajs@1.0.3/node_modules/dijkstrajs/dijkstra.js");function u(e){return unescape(encodeURIComponent(e)).length}function p(e,t,r){let n,o=[];for(;null!==(n=e.exec(r));)o.push({data:n[0],index:n.index,mode:t,length:n[0].length});return o}function h(e){let t,r,o=p(d.NUMERIC,n.NUMERIC,e),i=p(d.ALPHANUMERIC,n.ALPHANUMERIC,e);return l.isKanjiModeEnabled()?(t=p(d.BYTE,n.BYTE,e),r=p(d.KANJI,n.KANJI,e)):(t=p(d.BYTE_KANJI,n.BYTE,e),r=[]),o.concat(i,t,r).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,t){switch(t){case n.NUMERIC:return o.getBitsLength(e);case n.ALPHANUMERIC:return i.getBitsLength(e);case n.KANJI:return a.getBitsLength(e);case n.BYTE:return s.getBitsLength(e)}}function m(e,t){let r,d=n.getBestModeForData(e);if((r=n.from(t,d))!==n.BYTE&&r.bit<d.bit)throw Error('"'+e+'" cannot be encoded with mode '+n.toString(r)+".\n Suggested mode is: "+n.toString(d));switch(r===n.KANJI&&!l.isKanjiModeEnabled()&&(r=n.BYTE),r){case n.NUMERIC:return new o(e);case n.ALPHANUMERIC:return new i(e);case n.KANJI:return new a(e);case n.BYTE:return new s(e)}}t.fromArray=function(e){return e.reduce(function(e,t){return"string"==typeof t?e.push(m(t,null)):t.data&&e.push(m(t.data,t.mode)),e},[])},t.fromString=function(e,r){let o=function(e,t){let r={},o={start:{}},i=["start"];for(let s=0;s<e.length;s++){let a=e[s],d=[];for(let e=0;e<a.length;e++){let l=a[e],c=""+s+e;d.push(c),r[c]={node:l,lastCount:0},o[c]={};for(let e=0;e<i.length;e++){let s=i[e];r[s]&&r[s].node.mode===l.mode?(o[s][c]=f(r[s].lastCount+l.length,l.mode)-f(r[s].lastCount,l.mode),r[s].lastCount+=l.length):(r[s]&&(r[s].lastCount=l.length),o[s][c]=f(l.length,l.mode)+4+n.getCharCountIndicator(l.mode,t))}}i=d}for(let e=0;e<i.length;e++)o[i[e]].end=0;return{map:o,table:r}}(function(e){let t=[];for(let r=0;r<e.length;r++){let o=e[r];switch(o.mode){case n.NUMERIC:t.push([o,{data:o.data,mode:n.ALPHANUMERIC,length:o.length},{data:o.data,mode:n.BYTE,length:o.length}]);break;case n.ALPHANUMERIC:t.push([o,{data:o.data,mode:n.BYTE,length:o.length}]);break;case n.KANJI:t.push([o,{data:o.data,mode:n.BYTE,length:u(o.data)}]);break;case n.BYTE:t.push([{data:o.data,mode:n.BYTE,length:u(o.data)}])}}return t}(h(e,l.isKanjiModeEnabled())),r),i=c.find_path(o.map,"start","end"),s=[];for(let e=1;e<i.length-1;e++)s.push(o.table[i[e]].node);return t.fromArray(s.reduce(function(e,t){let r=e.length-1>=0?e[e.length-1]:null;return r&&r.mode===t.mode?e[e.length-1].data+=t.data:e.push(t),e},[]))},t.rawSplit=function(e){return t.fromArray(h(e,l.isKanjiModeEnabled()))}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js"(e,t){let r,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];t.getSymbolSize=function(e){if(!e)throw Error('"version" cannot be null or undefined');if(e<1||e>40)throw Error('"version" should be in range from 1 to 40');return 4*e+17},t.getSymbolTotalCodewords=function(e){return n[e]},t.getBCHDigit=function(e){let t=0;for(;0!==e;)t++,e>>>=1;return t},t.setToSJISFunction=function(e){if("function"!=typeof e)throw Error('"toSJISFunc" is not a valid function.');r=e},t.isKanjiModeEnabled=function(){return void 0!==r},t.toSJIS=function(e){return r(e)}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version-check.js"(e,t){t.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js"),o=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-code.js"),i=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js"),s=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js"),a=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version-check.js"),d=n.getBCHDigit(7973);function l(e,t){return s.getCharCountIndicator(e,t)+4}t.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},t.getCapacity=function(e,t,r){if(!a.isValid(e))throw Error("Invalid QR Code version");void 0===r&&(r=s.BYTE);let i=(n.getSymbolTotalCodewords(e)-o.getTotalCodewordsCount(e,t))*8;if(r===s.MIXED)return i;let d=i-l(r,e);switch(r){case s.NUMERIC:return Math.floor(d/10*3);case s.ALPHANUMERIC:return Math.floor(d/11*2);case s.KANJI:return Math.floor(d/13);case s.BYTE:default:return Math.floor(d/8)}},t.getBestVersionForData=function(e,r){let n,o=i.from(r,i.M);if(Array.isArray(e)){if(e.length>1){for(let r=1;r<=40;r++)if(function(e,t){let r=0;return e.forEach(function(e){let n=l(e.mode,t);r+=n+e.getBitsLength()}),r}(e,r)<=t.getCapacity(r,o,s.MIXED))return r;return}if(0===e.length)return 1;n=e[0]}else n=e;return function(e,r,n){for(let o=1;o<=40;o++)if(r<=t.getCapacity(o,n,e))return o}(n.mode,n.getLength(),o)},t.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error("Invalid QR Code version");let t=e<<12;for(;n.getBCHDigit(t)-d>=0;)t^=7973<<n.getBCHDigit(t)-d;return e<<12|t}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/index.js"(e,t,r){e.exports=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/server.js")},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/canvas.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js");t.render=function(e,t,r){var o;let i=r,s=t;void 0!==i||t&&t.getContext||(i=t,t=void 0),t||(s=function(){try{return document.createElement("canvas")}catch(e){throw Error("You need to specify a canvas element")}}()),i=n.getOptions(i);let a=n.getImageWidth(e.modules.size,i),d=s.getContext("2d"),l=d.createImageData(a,a);return n.qrToImageData(l.data,e,i),o=s,d.clearRect(0,0,o.width,o.height),o.style||(o.style={}),o.height=a,o.width=a,o.style.height=a+"px",o.style.width=a+"px",d.putImageData(l,0,0),s},t.renderToDataURL=function(e,r,n){let o=n;void 0!==o||r&&r.getContext||(o=r,r=void 0),o||(o={});let i=t.render(e,r,o),s=o.type||"image/png",a=o.rendererOpts||{};return i.toDataURL(s,a.quality)}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/png.js"(e,t,r){let n=r("fs"),o=r("../../../node_modules/.pnpm/pngjs@5.0.0/node_modules/pngjs/lib/png.js").O,i=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js");t.render=function(e,t){let r=i.getOptions(t),n=r.rendererOpts,s=i.getImageWidth(e.modules.size,r);n.width=s,n.height=s;let a=new o(n);return i.qrToImageData(a.data,e,r),a},t.renderToDataURL=function(e,r,n){void 0===n&&(n=r,r=void 0),t.renderToBuffer(e,r,function(e,t){e&&n(e);let r="data:image/png;base64,";r+=t.toString("base64"),n(null,r)})},t.renderToBuffer=function(e,r,n){void 0===n&&(n=r,r=void 0);let o=t.render(e,r),i=[];o.on("error",n),o.on("data",function(e){i.push(e)}),o.on("end",function(){n(null,Buffer.concat(i))}),o.pack()},t.renderToFile=function(e,r,o,i){void 0===i&&(i=o,o=void 0);let s=!1,a=(...e)=>{s||(s=!0,i.apply(null,e))},d=n.createWriteStream(e);d.on("error",a),d.on("close",a),t.renderToFileStream(d,r,o)},t.renderToFileStream=function(e,r,n){t.render(r,n).pack().pipe(e)}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg-tag.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js");function o(e,t){let r=e.a/255,n=t+'="'+e.hex+'"';return r<1?n+" "+t+'-opacity="'+r.toFixed(2).slice(1)+'"':n}function i(e,t,r){let n=e+t;return void 0!==r&&(n+=" "+r),n}t.render=function(e,t,r){let s=n.getOptions(t),a=e.modules.size,d=e.modules.data,l=a+2*s.margin,c=s.color.light.a?"<path "+o(s.color.light,"fill")+' d="M0 0h'+l+"v"+l+'H0z"/>':"",u="<path "+o(s.color.dark,"stroke")+' d="'+function(e,t,r){let n="",o=0,s=!1,a=0;for(let d=0;d<e.length;d++){let l=Math.floor(d%t),c=Math.floor(d/t);l||s||(s=!0),e[d]?(a++,d>0&&l>0&&e[d-1]||(n+=s?i("M",l+r,.5+c+r):i("m",o,0),o=0,s=!1),l+1<t&&e[d+1]||(n+=i("h",a),a=0)):o++}return n}(d,a,s.margin)+'"/>',p='<svg xmlns="http://www.w3.org/2000/svg" '+(s.width?'width="'+s.width+'" height="'+s.width+'" ':"")+('viewBox="0 0 '+l+" ")+l+'" shape-rendering="crispEdges">'+c+u+"</svg>\n";return"function"==typeof r&&r(null,p),p}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg.js"(e,t,r){t.render=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg-tag.js").render,t.renderToFile=function(e,n,o,i){void 0===i&&(i=o,o=void 0);let s=r("fs"),a=t.render(n,o);s.writeFile(e,'<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+a,i)}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal/terminal.js"),o=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal/terminal-small.js");t.render=function(e,t,r){return t&&t.small?o.render(e,t,r):n.render(e,t,r)}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal/terminal-small.js"(e,t){let r="\x1b[37m",n="\x1b[30m",o="\x1b[0m",i="\x1b[47m"+n,s="\x1b[40m"+r,a=function(e,t,r,n){let o=t+1;return r>=o||n>=o||n<-1||r<-1?"0":r>=t||n>=t||n<0||r<0?"1":e[n*t+r]?"2":"1"},d=function(e,t,r,n){return a(e,t,r,n)+a(e,t,r,n+1)};t.render=function(e,t,a){var l,c;let u=e.modules.size,p=e.modules.data,h=!!(t&&t.inverse),f=t&&t.inverse?s:i,m={"00":o+" "+f,"01":o+(l=h?n:r)+"▄"+f,"02":o+(c=h?r:n)+"▄"+f,10:o+l+"▀"+f,11:" ",12:"▄",20:o+c+"▀"+f,21:"▀",22:"█"},g=o+"\n"+f,_=f;for(let e=-1;e<u+1;e+=2){for(let t=-1;t<u;t++)_+=m[d(p,u,t,e)];_+=m[d(p,u,u,e)]+g}return _+=o,"function"==typeof a&&a(null,_),_}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal/terminal.js"(e,t){t.render=function(e,t,r){let n=e.modules.size,o=e.modules.data,i="\x1b[47m \x1b[0m",s="",a=Array(n+3).join(i),d=[,,].join(i);s+=a+"\n";for(let e=0;e<n;++e){s+=i;for(let t=0;t<n;t++)s+=o[e*n+t]?"\x1b[40m \x1b[0m":i;s+=d+"\n"}return s+=a+"\n","function"==typeof r&&r(null,s),s}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utf8.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js"),o={WW:" ",WB:"▄",BB:"█",BW:"▀"},i={BB:" ",BW:"▄",WW:"█",WB:"▀"};t.render=function(e,t,r){let s=n.getOptions(t),a=o;("#ffffff"===s.color.dark.hex||"#000000"===s.color.light.hex)&&(a=i);let d=e.modules.size,l=e.modules.data,c="",u=Array(d+2*s.margin+1).join(a.WW);u=Array(s.margin/2+1).join(u+"\n");let p=Array(s.margin+1).join(a.WW);c+=u;for(let e=0;e<d;e+=2){c+=p;for(let t=0;t<d;t++){var h;let r=l[e*d+t],n=l[(e+1)*d+t];c+=(h=a,r&&n?h.BB:r&&!n?h.BW:!r&&n?h.WB:h.WW)}c+=p+"\n"}return c+=u.slice(0,-1),"function"==typeof r&&r(null,c),c},t.renderToFile=function(e,n,o,i){void 0===i&&(i=o,o=void 0);let s=r("fs"),a=t.render(n,o);s.writeFile(e,a,i)}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js"(e,t){function r(e){if("number"==typeof e&&(e=e.toString()),"string"!=typeof e)throw Error("Color should be defined as hex string");let t=e.slice().replace("#","").split("");if(t.length<3||5===t.length||t.length>8)throw Error("Invalid hex color: "+e);(3===t.length||4===t.length)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),6===t.length&&t.push("F","F");let r=parseInt(t.join(""),16);return{r:r>>24&255,g:r>>16&255,b:r>>8&255,a:255&r,hex:"#"+t.slice(0,6).join("")}}t.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=void 0===e.margin||null===e.margin||e.margin<0?4:e.margin,n=e.width&&e.width>=21?e.width:void 0,o=e.scale||4;return{width:n,scale:n?4:o,margin:t,color:{dark:r(e.color.dark||"#000000ff"),light:r(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}},t.getScale=function(e,t){return t.width&&t.width>=e+2*t.margin?t.width/(e+2*t.margin):t.scale},t.getImageWidth=function(e,r){let n=t.getScale(e,r);return Math.floor((e+2*r.margin)*n)},t.qrToImageData=function(e,r,n){let o=r.modules.size,i=r.modules.data,s=t.getScale(o,n),a=Math.floor((o+2*n.margin)*s),d=n.margin*s,l=[n.color.light,n.color.dark];for(let t=0;t<a;t++)for(let r=0;r<a;r++){let c=(t*a+r)*4,u=n.color.light;t>=d&&r>=d&&t<a-d&&r<a-d&&(u=l[+!!i[Math.floor((t-d)/s)*o+Math.floor((r-d)/s)]]),e[c++]=u.r,e[c++]=u.g,e[c++]=u.b,e[c]=u.a}}},"../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/server.js"(e,t,r){let n=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js"),o=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/qrcode.js"),i=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/png.js"),s=r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utf8.js"),a=(r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/terminal.js"),r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg.js"));function d(e,t,r){if(void 0===e)throw Error("String required as first argument");if(void 0===r&&(r=t,t={}),"function"!=typeof r)if(n())t=r||{},r=null;else throw Error("Callback required as last argument");return{opts:t,cb:r}}function l(e){switch(e){case"svg":return a;case"txt":case"utf8":return s;default:return i}}function c(e,t,r){if(!r.cb)return new Promise(function(n,i){try{let s=o.create(t,r.opts);return e(s,r.opts,function(e,t){return e?i(e):n(t)})}catch(e){i(e)}});try{let n=o.create(t,r.opts);return e(n,r.opts,r.cb)}catch(e){r.cb(e)}}o.create,r("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/browser.js"),t.toBuffer=function(e,t,r){let n=d(e,t,r);return c(l(n.opts.type).renderToBuffer,e,n)},t.toFile=function(e,t,r,o){if("string"!=typeof e||"string"!=typeof t&&"object"!=typeof t)throw Error("Invalid argument");if(arguments.length<3&&!n())throw Error("Too few arguments provided");let i=d(t,r,o);return c(l(i.opts.type||e.slice((e.lastIndexOf(".")-1>>>0)+2).toLowerCase()).renderToFile.bind(null,e),t,i)}},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/config.js"(e,t,r){var n=r("node:os"),o=r("node:path");let i=o.join(n.homedir(),".dbx","token"),s=o.join(n.homedir(),".doubao","token"),a={};function d(e){Object.assign(a,e)}function l(e={}){let t={...a,...e},r=function(e,t){let r;try{r=new URL(c(e))}catch{throw Error(`${t} must be an absolute HTTPS URL`)}if("https:"!==r.protocol)throw Error(`${t} must use https`);return c(r.toString())}(t.baseUrl??"https://hello.doubao-dev.com","baseUrl"),n=t.tokenPath??i;return{...t,baseUrl:r,allowedOrigins:function(e,t){let r=new Set([new URL(t).origin]);for(let t of e??[]){let e;try{e=new URL(t)}catch{throw Error(`allowedOrigins entries must be absolute HTTPS origins: ${t}`)}if("https:"!==e.protocol)throw Error(`allowedOrigins entries must use https: ${t}`);r.add(e.origin)}return[...r]}(t.allowedOrigins,r),tokenPath:n,legacyTokenPath:t.tokenPath?void 0:s,requestHeaders:new Headers(t.requestHeaders)}}function c(e){return e.replace(/\/+$/,"")}r.d(t,{$i:()=>l,ZI:()=>d},{E:"dbx-cli"})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/credential-store.js"(e,t,r){var n=r("node:child_process"),o=r("node:crypto"),i=r("node:fs"),s=r("node:os"),a=r("node:path");let d=(0,r("node:util").promisify)(n.execFile),l="byted-doubao-open-dbx-cli",c="dbx-cli",u="aes-256-gcm";class p extends Error{constructor(e){super(e),this.name="CredentialStoreError"}}function h(){let e=new m;return"darwin"===process.platform?new f(new g,e):"linux"===process.platform?new f(new _,e):e}class f{constructor(e,t){this.primary=e,this.fallback=t}async get(e){let t;try{let t=await this.primary.get(e);if(t)return t}catch(e){t=e}try{let t=await this.fallback.get(e);if(t)return t}catch(e){if(t)throw new p(`Failed to read token from system credential store (${j(t)}); encrypted-file fallback also failed: ${j(e)}`);throw e}if(t)throw t instanceof Error?t:new p(`Failed to read token from system credential store: ${String(t)}`)}async set(e,t){let r;try{await this.primary.set(e,t)}catch(e){r=e}try{await this.fallback.set(e,t)}catch(e){if(r)throw new p(`Failed to write token to system credential store (${j(r)}) and encrypted-file fallback (${j(e)})`);throw e}}async delete(e){let t;try{await this.primary.delete(e)}catch(e){t=e}try{await this.fallback.delete(e)}catch(e){if(t)throw new p(`Failed to delete token from system credential store (${j(t)}) and encrypted-file fallback (${j(e)})`);throw e}}}class m{constructor(e={}){this.baseDir=e.baseDir??("darwin"===process.platform?a.join(s.homedir(),"Library","Application Support",c):"win32"===process.platform?a.join(process.env.APPDATA||a.join(s.homedir(),"AppData","Roaming"),c):a.join(process.env.XDG_DATA_HOME||a.join(s.homedir(),".local","share"),c))}async get(e){var t,r;let n,s,a=this.credentialFilePath(e);try{n=await i.promises.readFile(a,"utf8")}catch(e){if(A(e)&&"ENOENT"===e.code)return;throw new p(`Failed to read encrypted token file: ${j(e)}`)}try{s=JSON.parse(n)}catch(e){throw new p(`Encrypted token file is not valid JSON: ${j(e)}`)}if(!((t=s)&&"object"==typeof t&&1===t.version&&t.algorithm===u&&"string"==typeof t.iv&&"string"==typeof t.authTag&&"string"==typeof t.ciphertext))throw new p("Encrypted token file has an unsupported format");let d=await this.readMasterKey();try{let t=o.createDecipheriv(u,d,Buffer.from(s.iv,"base64url"));return t.setAAD(Buffer.from((r=e,`${l}:${r}`),"utf8")),t.setAuthTag(Buffer.from(s.authTag,"base64url")),Buffer.concat([t.update(Buffer.from(s.ciphertext,"base64url")),t.final()]).toString("utf8")}catch(e){throw new p(`Failed to decrypt encrypted token file: ${j(e)}`)}}async set(e,t){var r;let n=await this.readOrCreateMasterKey(),i=o.randomBytes(12),s=o.createCipheriv(u,n,i);s.setAAD(Buffer.from((r=e,`${l}:${r}`),"utf8"));let a=Buffer.concat([s.update(t,"utf8"),s.final()]),d={version:1,algorithm:u,iv:i.toString("base64url"),authTag:s.getAuthTag().toString("base64url"),ciphertext:a.toString("base64url")};await b(this.credentialFilePath(e),`${JSON.stringify(d,null,2)}
10
+ `)}async delete(e){try{await i.promises.unlink(this.credentialFilePath(e))}catch(e){if(!A(e)||"ENOENT"!==e.code)throw new p(`Failed to delete encrypted token file: ${j(e)}`)}}masterKeyPath(){return a.join(this.baseDir,"master.key")}credentialFilePath(e){let t=o.createHash("sha256").update(e).digest("hex");return a.join(this.baseDir,"credentials",`${t}.json`)}async readMasterKey(){try{var e=await i.promises.readFile(this.masterKeyPath(),"utf8");let t=Buffer.from(e.trim(),"base64url");if(32!==t.length)throw new p("Encrypted token master key has an unsupported format");return t}catch(e){if(A(e)&&"ENOENT"===e.code)throw new p("Encrypted token master key is missing");if(e instanceof p)throw e;throw new p(`Failed to read encrypted token master key: ${j(e)}`)}}async readOrCreateMasterKey(){try{return await this.readMasterKey()}catch(e){if(!(e instanceof p)||!e.message.includes("master key is missing"))throw e}let e=o.randomBytes(32);try{return await b(this.masterKeyPath(),`${e.toString("base64url")}
11
+ `),e}catch(e){if(A(e)&&"EEXIST"===e.code)return this.readMasterKey();throw new p(`Failed to write encrypted token master key: ${j(e)}`)}}}class g{async get(e){try{let{stdout:t}=await d("security",["find-generic-password","-a",e,"-s",l,"-w"]);return String(t).replace(/\n$/,"")}catch(e){if(y(e))return;throw new p(`Failed to read token from macOS Keychain: ${j(e)}`)}}async set(e,t){try{await d("security",["add-generic-password","-a",e,"-s",l,"-w",t,"-U"])}catch(e){throw new p(`Failed to write token to macOS Keychain: ${j(e)}`)}}async delete(e){try{await d("security",["delete-generic-password","-a",e,"-s",l])}catch(e){if(y(e))return;throw new p(`Failed to delete token from macOS Keychain: ${j(e)}`)}}}class _{async get(e){try{let{stdout:t}=await d("secret-tool",["lookup","service",l,"account",e]);return String(t).replace(/\n$/,"")}catch(e){if(w(e))return;throw new p(`Failed to read token from Secret Service: ${j(e)}`)}}async set(e,t){try{var r,o,i;await (r="secret-tool",o=["store","--label","Doubao Open CLI token","service",l,"account",e],i=t,new Promise((e,t)=>{let s=(0,n.spawn)(r,o,{stdio:["pipe","ignore","pipe"]}),a="";s.stderr.setEncoding("utf8"),s.stderr.on("data",e=>{a+=String(e)}),s.on("error",t),s.on("close",n=>{0===n?e():t(Error(a.trim()||`${r} exited with code ${n}`))}),s.stdin.end(i)}))}catch(e){throw new p(`Failed to write token to Secret Service: ${j(e)}`)}}async delete(e){try{await d("secret-tool",["clear","service",l,"account",e])}catch(e){if(w(e))return;throw new p(`Failed to delete token from Secret Service: ${j(e)}`)}}}async function b(e,t){let r=a.dirname(e);await i.promises.mkdir(r,{recursive:!0,mode:448}),"win32"!==process.platform&&await i.promises.chmod(r,448);let n=a.join(r,`.${a.basename(e)}.${process.pid}.${Date.now()}.tmp`);try{await i.promises.writeFile(n,t,{mode:384,flag:"wx"}),"win32"!==process.platform&&await i.promises.chmod(n,384),await i.promises.rename(n,e),"win32"!==process.platform&&await i.promises.chmod(e,384)}finally{try{await i.promises.unlink(n)}catch{}}}function y(e){let t=v(e),r=E(e);return(1===t||44===t)&&(r.includes("could not be found")||r.includes("The specified item could not be found"))}function w(e){let t=v(e),r=E(e);return 1===t&&(r.includes("could not be found")||r.includes("No matching items")||""===r.trim())}function v(e){return"object"==typeof e&&null!==e&&"code"in e?e.code:void 0}function E(e){return"object"==typeof e&&null!==e&&"stderr"in e?String(e.stderr??""):""}function A(e){return e instanceof Error&&"code"in e}function j(e){if("object"==typeof e&&null!==e&&"stderr"in e){let t=String(e.stderr??"").trim();if(t)return t}return e instanceof Error&&e.message?e.message:String(e)}r.d(t,{Mj:()=>h,RI:()=>p})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/device-flow.js"(e,t,r){var n=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/config.js"),o=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/errors.js"),i=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/jwt.js"),s=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/store.js"),a=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/types.js");async function d(e={}){let t=(0,n.$i)(e),r=t.fetch??fetch,l=t.sleep??b,c=await u(r,t.baseUrl,t.requestHeaders),h=y(t.baseUrl,c.user_code);t.onVerification?.({userCode:c.user_code,verificationUrl:h,expiresIn:c.expires_in,interval:c.interval});let f=Math.max(1,c.interval),m=Date.now()+1e3*c.expires_in;for(;Date.now()<m;){await l(1e3*f);let e=await p(r,t.baseUrl,c.device_code,t.requestHeaders);if(t.onPoll?.({status:e.status,interval:f}),e.status!==a.A.Pending){if(e.status===a.A.SlowDown){f+=Math.max(1,c.interval);continue}if(e.status===a.A.Expired)throw new o.JC("Device authorization expired","DEVICE_AUTH_EXPIRED");if(e.status===a.A.Invalid)throw new o.JC("Device authorization is invalid","DEVICE_AUTH_INVALID");if(e.status===a.A.Authorized){if(!e.access_token)throw new o.JC("Authorization response did not include an access token");let r=_(e,t.baseUrl);return await (0,s.tK)(t.tokenPath,r,{credentialStore:t.credentialStore}),{accessToken:r.accessToken,tokenType:r.tokenType,expiresAt:r.expiresAt,baseUrl:r.baseUrl,uid:(0,i.m)(r.accessToken),tokenPath:t.tokenPath}}throw new o.JC(`Unexpected authorization status: ${String(e.status)}`)}}throw new o.JC("Device authorization timed out","DEVICE_AUTH_EXPIRED")}async function l(e={}){let t=(0,n.$i)(e),r=t.fetch??fetch,o=await u(r,t.baseUrl,t.requestHeaders),i=y(t.baseUrl,o.user_code);return t.onVerification?.({userCode:o.user_code,verificationUrl:i,expiresIn:o.expires_in,interval:o.interval}),{userCode:o.user_code,deviceCode:o.device_code,verificationUrl:i,expiresIn:o.expires_in,interval:o.interval}}async function c(e,t={}){let r=(0,n.$i)(t),d=r.fetch??fetch,l=r.sleep??b,u=r.baseUrl,h=r.requestHeaders,f=5,m=Date.now()+6e5;for(;Date.now()<m;){await l(1e3*f);let t=await p(d,u,e,h);if(r.onPoll?.({status:t.status,interval:f}),t.status!==a.A.Pending){if(t.status===a.A.SlowDown){f+=5;continue}if(t.status===a.A.Expired)throw new o.JC("Device authorization expired","DEVICE_AUTH_EXPIRED");if(t.status===a.A.Invalid)throw new o.JC("Device authorization is invalid","DEVICE_AUTH_INVALID");if(t.status===a.A.Authorized){if(!t.access_token)throw new o.JC("Authorization response did not include an access token");let e=_(t,u);return await (0,s.tK)(r.tokenPath,e,{credentialStore:r.credentialStore}),{accessToken:e.accessToken,tokenType:e.tokenType,expiresAt:e.expiresAt,baseUrl:e.baseUrl,uid:(0,i.m)(e.accessToken),tokenPath:r.tokenPath}}throw new o.JC(`Unexpected authorization status: ${String(t.status)}`)}}throw new o.JC("Device authorization timed out","DEVICE_AUTH_EXPIRED")}async function u(e,t,r){let i=await e(`${t}/app_developer/oauth/device/code`,{method:"POST",headers:g(r),body:JSON.stringify({client_name:n.E})}),s=await h(i),a=m(s);if(!a||!a.device_code||!a.user_code||"number"!=typeof a.expires_in||"number"!=typeof a.interval)throw new o.JC(`Device code response is malformed (HTTP ${i.status}): ${JSON.stringify(s)}`);return a}async function p(e,t,r,n){let i=await e(`${t}/app_developer/oauth/token`,{method:"POST",headers:g(n),body:JSON.stringify({device_code:r})}),s=await h(i),d=m(s);if(d?.access_token)return{status:a.A.Authorized,access_token:d.access_token,token_type:d.token_type,expires_in:d.expires_in,expires_at:d.expires_at};if(!d||"number"!=typeof d.status)throw new o.JC(`Token response is malformed (HTTP ${i.status}): ${JSON.stringify(s)}`);return d}async function h(e){var t;let r,n=e.headers.get("x-tt-logid")??void 0;try{r=await e.json()}catch{throw new o.JC(`Auth server returned non-JSON response with status ${e.status}${f(n)}`,"DEVICE_AUTH_FAILED",{logId:n})}let i=function(e){if(e&&"object"==typeof e)return"string"==typeof e.log_id&&e.log_id?e.log_id:void 0}(r)??n;if(!e.ok)throw new o.JC(`Auth server returned HTTP ${e.status}: ${JSON.stringify(r)}${f(i)}`,"DEVICE_AUTH_FAILED",{logId:i});let s=(t=r)&&"object"==typeof t&&"number"==typeof t.code&&0!==t.code?{code:t.code,message:"string"==typeof t.message?t.message:"Unknown error",logId:"string"==typeof t.log_id?t.log_id:void 0}:null;if(s)throw new o.JC(`Auth server error (code ${s.code}): ${s.message}${f(s.logId??i)}`,"DEVICE_AUTH_FAILED",{logId:s.logId??i});return r}function f(e){return e?` [log_id: ${e}]`:""}function m(e){return e&&"object"==typeof e&&"data"in e?e.data:e}function g(e){let t=new Headers(e);return t.set("Content-Type","application/json"),t}function _(e,t){let r=Math.floor(Date.now()/1e3);return{accessToken:e.access_token??"",tokenType:e.token_type??"Bearer",expiresAt:"number"==typeof e.expires_at?e.expires_at:r+(e.expires_in??0),baseUrl:t}}function b(e){return new Promise(t=>{setTimeout(t,e)})}function y(e,t){let r=new URL(e).host,n=new URL(`https://${r}/v2/oauth/device`);return n.searchParams.set("user_code",t),n.toString()}r.d(t,{R$:()=>c,c$:()=>l,iD:()=>d})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/errors.js"(e,t,r){class n extends Error{constructor(e,t){super(e),this.code=t,this.name="AuthError"}}class o extends n{constructor(e="Not logged in"){super(e,"NOT_LOGGED_IN"),this.name="NotLoggedInError"}}class i extends n{constructor(e="Login token has expired"){super(e,"TOKEN_EXPIRED"),this.name="TokenExpiredError"}}class s extends n{constructor(e,t="DEVICE_AUTH_FAILED",r={}){super(e,t),this.name="DeviceAuthError",this.logId=r.logId}}r.d(t,{BX:()=>i,JC:()=>s,bG:()=>o,lR:()=>n})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/http.js"(e,t,r){var n=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/errors.js"),o=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/config.js"),i=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/store.js");function s(e=fetch,t={}){return async(r,s={})=>{let a=(0,o.$i)(t);var d=r,l=a.allowedOrigins;let c=function(e){try{if("string"==typeof e)return new URL(e);if(e instanceof URL)return e;return new URL(e.url)}catch{throw Error("Authenticated requests must use an absolute HTTPS URL")}}(d);if("https:"!==c.protocol)throw Error(`Authenticated requests must use https: ${c.toString()}`);if(!l.includes(c.origin))throw Error(`Refusing to attach Authorization header to untrusted origin: ${c.origin}`);let u=await (0,i.AI)(a.tokenPath,{allowExpired:!0,credentialStore:a.credentialStore,legacyTokenPath:a.legacyTokenPath});if(!u)throw new n.bG;if((0,i._d)(u))throw new n.BX;let p=new Headers(s.headers);return a.requestHeaders.forEach((e,t)=>{p.set(t,e)}),p.set("Authorization",`${u.tokenType||"Bearer"} ${u.accessToken}`),e(r,{...s,headers:p})}}r.d(t,{r:()=>s})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/index.js"(e,t,r){r.r(t);var n=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/config.js"),o=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/credential-store.js"),i=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/device-flow.js"),s=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/store.js"),a=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/http.js"),d=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/errors.js"),l=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/types.js");async function c(e={}){let t=(0,n.$i)(e);await (0,s.ni)(t.tokenPath,{credentialStore:t.credentialStore}),t.legacyTokenPath&&await (0,s.ni)(t.legacyTokenPath,{credentialStore:t.credentialStore})}async function u(e={}){let t,r=(0,n.$i)(e);try{t=await (0,s.AI)(r.tokenPath,{credentialStore:r.credentialStore,legacyTokenPath:r.legacyTokenPath})}catch(e){if(e instanceof o.RI)return{loggedIn:!1,tokenPath:r.tokenPath,baseUrl:r.baseUrl,credentialError:{code:"CREDENTIAL_STORE_UNAVAILABLE",message:e.message}};throw e}if(!t)return{loggedIn:!1,tokenPath:r.tokenPath};let i=await p(e.fetch??fetch,r.baseUrl,t,r.requestHeaders);return i?{loggedIn:!0,uid:i.userId,name:i.name,avatar:i.avatar,expiresAt:t.expiresAt,tokenPath:r.tokenPath,baseUrl:r.baseUrl}:{loggedIn:!1,expiresAt:t.expiresAt,tokenPath:r.tokenPath,baseUrl:r.baseUrl}}async function p(e,t,r,n){let o=new Headers(n);o.set("Authorization",`${r.tokenType||"Bearer"} ${r.accessToken}`);let i=await e(`${t.replace(/\/+$/,"")}/app_developer/api/user/basic`,{method:"GET",headers:o});if(!i.ok)return;let s=await i.json();if(0===s.code){var a;return{userId:"string"==typeof(a=s.data?.user_id)&&a.length>0?a:"number"==typeof a&&Number.isFinite(a)?String(a):void 0,name:s.data?.name,avatar:s.data?.avatar}}}r.d(t,{AuthError:()=>d.lR,CredentialStoreError:()=>o.RI,DeviceAuthError:()=>d.JC,NotLoggedInError:()=>d.bG,TokenExpiredError:()=>d.BX,TokenStatus:()=>l.A,completeLogin:()=>i.R$,configureAuth:()=>n.ZI,login:()=>i.iD,logout:()=>c,startLogin:()=>i.c$,whoami:()=>u,withAuth:()=>a.r})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/jwt.js"(e,t,r){function n(e){let t=function(e){let t=e.split(".")[1];if(t)try{let e=t.replace(/-/g,"+").replace(/_/g,"/"),r=e.padEnd(e.length+(4-e.length%4)%4,"="),n=Buffer.from(r,"base64").toString("utf8"),o=JSON.parse(n);return o&&"object"==typeof o?o:void 0}catch{return}}(e),r=t?.uid??t?.sub;return"string"==typeof r&&r.length>0?r:"number"==typeof r&&Number.isFinite(r)?String(r):void 0}r.d(t,{m:()=>n})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/store.js"(e,t,r){var n=r("node:fs"),o=r("node:crypto"),i=r("node:path"),s=r("../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/credential-store.js");async function a(e,t={}){let r,n=await h(e);if(void 0===n)return f(e,t);try{r=JSON.parse(n)}catch(e){return}if(p(r)){if(!t.allowExpired&&c(r))return void await l(e,t);let n=await m(t).get(r.credentialAccount);if(!n)throw new s.RI("Stored login metadata exists, but the token credential is missing or inaccessible. Run dbx auth login again from a terminal that can access the credential store.");return{accessToken:n,tokenType:r.tokenType,expiresAt:r.expiresAt,baseUrl:r.baseUrl}}if(u(r))return!t.allowExpired&&c(r)?void await l(e,t):(await d(e,r,t),r)}async function d(e,t,r={}){let o={version:2,storage:"keychain",credentialAccount:g(e),tokenType:t.tokenType,expiresAt:t.expiresAt,baseUrl:t.baseUrl};await m(r).set(o.credentialAccount,t.accessToken),await n.promises.mkdir(i.dirname(e),{recursive:!0,mode:448}),"win32"!==process.platform&&await n.promises.chmod(i.dirname(e),448);let s=`${e}.${process.pid}.${Date.now()}.tmp`;await n.promises.writeFile(s,`${JSON.stringify(o,null,2)}
12
+ `,{mode:384}),"win32"!==process.platform&&await n.promises.chmod(s,384),await n.promises.rename(s,e),"win32"!==process.platform&&await n.promises.chmod(e,384)}async function l(e,t={}){let r=await h(e);if(void 0!==r)try{let n=JSON.parse(r);p(n)?await m(t).delete(n.credentialAccount):await m(t).delete(g(e))}catch{}try{await n.promises.unlink(e)}catch(e){if(!_(e)||"ENOENT"!==e.code)throw e}}function c(e,t=Math.floor(Date.now()/1e3)){return e.expiresAt<=t}function u(e){return!!e&&"object"==typeof e&&"string"==typeof e.accessToken&&e.accessToken.length>0&&"string"==typeof e.tokenType&&e.tokenType.length>0&&"number"==typeof e.expiresAt&&Number.isFinite(e.expiresAt)&&"string"==typeof e.baseUrl&&e.baseUrl.length>0}function p(e){return!!e&&"object"==typeof e&&2===e.version&&"keychain"===e.storage&&"string"==typeof e.credentialAccount&&e.credentialAccount.length>0&&"string"==typeof e.tokenType&&e.tokenType.length>0&&"number"==typeof e.expiresAt&&Number.isFinite(e.expiresAt)&&"string"==typeof e.baseUrl&&e.baseUrl.length>0}async function h(e){try{return await n.promises.readFile(e,"utf8")}catch(e){_(e)&&e.code;return}}async function f(e,t){let r;if(!t.legacyTokenPath||i.resolve(t.legacyTokenPath)===i.resolve(e))return;let n=await h(t.legacyTokenPath);if(void 0!==n){try{r=JSON.parse(n)}catch{return}if(u(r))return!t.allowExpired&&c(r)?void await l(t.legacyTokenPath,t):(await d(e,r,t),await l(t.legacyTokenPath,t),r)}}function m(e){return e.credentialStore??(0,s.Mj)()}function g(e){let t=o.createHash("sha256").update(i.resolve(e)).digest("hex").slice(0,32);return`token:${t}`}function _(e){return e instanceof Error&&"code"in e}r.d(t,{AI:()=>a,_d:()=>c,ni:()=>l,tK:()=>d})},"../../../node_modules/.pnpm/@byted-doubao-open+dbx-auth-cli@1.0.4/node_modules/@byted-doubao-open/dbx-auth-cli/dist/types.js"(e,t,r){var n,o;(o=n||(n={}))[o.Pending=1]="Pending",o[o.Authorized=2]="Authorized",o[o.Expired=3]="Expired",o[o.Invalid=4]="Invalid",o[o.SlowDown=5]="SlowDown",r.d(t,{A:()=>n})}});var E={};e.r(E),e.d(E,{default:()=>tf,isInteractiveTerminal:()=>t_,withWebDebuggerFallback:()=>tb});class A extends Error{exitCode=1;logId;details;constructor(e){let t,r;super((r=(t=e.errors[0])?`: ${t.message}`:"",`manifest validation failed for dbx dev${r}`)),this.name="DevManifestValidationError",this.logId=e.log_id;let{manifest:n,...o}=e;this.details=o}}let j={"dev.manifest.parse_failed":e=>`Manifest 无法解析:${e.path??"未知路径"};将跳过 simulator manifest 并继续启动`,"dev.manifest.invalid_root":e=>`Manifest 内容必须是对象:${e.path??"未知路径"};将跳过 simulator manifest 并继续启动`,"dev.manifest.app_key_missing":e=>`Manifest 未配置 app_key:${e.path??"未知路径"};将由 Kit 从前端工程配置解析 AppID`,"dev.manifest.not_found":e=>`未找到 Manifest 文件:${e.path??"未知路径"};将跳过 simulator manifest 并继续启动`,"dev.manifest.not_ready":()=>"Manifest 未就绪","dev.manifest.validation_failed":e=>`Manifest 校验未通过${e.message?`:${e.message}`:""}`,"dev.manifest.validation_http_error":e=>{var t,r;return`Manifest 校验服务异常${void 0===(t=e.httpStatus)?"":`(HTTP ${t})`}${(r=e.logId)?`,log_id: ${r}`:""}`},"dev.manifest.validation_service_error":e=>{var t;return`${e.message??"Manifest 校验服务返回错误"}${void 0===(t=e.serviceCode)?"":`(错误码 ${t})`}`},"dev.skill.not_found":e=>`未找到 Skill 文件:${e.path??"未知路径"};将跳过 simulator skill 并继续启动`,"dev.mcp.not_configured":()=>"MCP 未配置服务地址","dev.mcp.confirm_connection":()=>"请确认 MCP 已连接"};function T(e){let t=j[e.code];return t?t(e):e.message?e.message:`${e.source} warning (${e.code})`}let k=e("node:fs");var P=e.n(k);let C=e("node:path");var x=e.n(C);let I=e("../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/index.js"),S="DOUBAO_SIMULATOR_MCP_ENDPOINT";async function D(e){let t;try{t=I.qg(k.readFileSync(e,"utf8"))}catch{return{usable:!1,validated:!1,warnings:[{code:"dev.manifest.parse_failed",source:"manifest",path:e}]}}if(!d(t))return{usable:!1,validated:!1,warnings:[{code:"dev.manifest.invalid_root",source:"manifest",path:e}]};let r=[],n="string"==typeof t.app_key?t.app_key.trim():void 0;n||r.push({code:"dev.manifest.app_key_missing",source:"manifest",path:e});let o=t,i=!1;try{let t=await R(e);i=!0,d(t.manifest)&&(o=t.manifest)}catch(e){r.push(function(e){var t;if(e instanceof l)return{code:void 0!==e.httpStatus?"dev.manifest.validation_http_error":"dev.manifest.validation_service_error",source:"manifest",serviceCode:e.serviceCode,httpStatus:e.httpStatus,message:e.serviceMessage,logId:e.logId};let r=e instanceof A?e.details.errors[0]:void 0;return r?{source:"manifest",code:r.code,path:r.path,message:r.message}:{code:"dev.manifest.validation_failed",source:"manifest",message:(t=e)instanceof Error?t.message:String(t)}}(e))}return{...n?{appId:n}:{},manifest:o,usable:!0,validated:i,warnings:r}}async function L(e=process.env,t,r,n){let o=t?.trim();if(o)return O(o,"--mcp-endpoint");let i=e[S]?.trim();return i?O(i,S):r?q(r,n):void 0}async function R(e){let t=await c(k.readFileSync(e,"utf8"),"compatible"),r=t.data,n={file:e,valid:!!r?.success,manifest:r?.manifest,errors:$(r?.errors??[]),warnings:$(r?.warnings??[]),log_id:t.log_id??""};if(!n.valid)throw new A(n);return n}async function q(e,t){let r=t??(await R(e)).manifest,n=d(r)&&d(r.mcp_server)?r.mcp_server:void 0,o=n?.end_point;if("string"==typeof o&&o.trim())return O(o.trim(),"manifest.mcp_server.end_point")}function $(e){return e.map(e=>({code:e.code,path:e.path,message:e.message}))}function O(e,t){try{let t=new URL(e);if("http:"===t.protocol||"https:"===t.protocol)return e}catch{}throw Error(`dbx dev ${t} must be an http(s) URL: ${e}`)}function B(e,t){let r=t.trim();if(!r)throw Error("path must not be empty");return C.resolve(e,r)}function M(...e){for(let t of e){let e=t?.trim();if(e)return e}}let U={schemaVersion:1,cliVersion:o,deviceAppVersion:"1.0.6",packages:{"darwin-arm64":{url:"https://lf3-cdn-tos.bytegoofy.com/obj/tron-demo/7610358476778248474/432592984/1.0.6/darwin-arm64/DoubaoDeveloperTools-v1.0.6-darwin-arm64.zip",sha256:"93b822535f11ed2b8f7a47c43d0dc74b44059f575da59d816f6ce29f0910e6e0",entry:"豆包开发者工具.app",sizeBytes:0x76d2bb4},"win32-x64":{url:"https://lf3-cdn-tos.bytegoofy.com/obj/tron-demo/7610358476778248474/432592984/1.0.6/win32-x64/DoubaoDeveloperTools-v1.0.6-win32-x64.zip",sha256:"7f61d23179c42d1e973138c557c41efe4ab20c7c23c4f4896fb074f945a3f19c",entry:"豆包开发者工具.exe",sizeBytes:0x8398fef}}},N=e("node:child_process"),H=e("node:crypto");var F=e.n(H);let V=e("node:http"),K=e("node:os");var z=e.n(K);let Y=e("node:stream"),J=e("node:url"),G=e("node:util"),W=e("../../../node_modules/.pnpm/@byted-doubao-tools+real-device-debug-auth@0.1.2/node_modules/@byted-doubao-tools/real-device-debug-auth/dist/lib/index.js"),Q=e("../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/index.js"),X="DBX_DEVICE_APP_PATH",Z="dbx-device-app.json",ee="state.json",et="versions",er=x().dirname((0,J.fileURLToPath)(import.meta.url)),en=[{command:"web",description:"打开 Web 模拟器"},{command:"device",description:"进入真机调试"},{command:"status",description:"查看本地调试服务状态"}],eo=[{command:"qr",description:"重新生成真机调试二维码"},{command:"page [id]",description:"在真机打开页面(省略 id 可选择)"},{command:"pages",description:"列出真机可打开页面"},{command:"widget [id]",description:"向真机推送卡片(省略 id 可选择)"},{command:"widgets",description:"列出真机可推送卡片"},{command:"back",description:"返回主命令"}];function ei(e){if("complete"===e.phase)return`豆包开发者工具已安装:${e.appPath}`;if("install"===e.phase){let t={verify:"验证",extract:"解压",install:"安装"}[e.stage];return`安装豆包开发者工具:${t}`}let t=[void 0===e.percentage?void 0:`${e.percentage}%`,void 0===e.totalBytes?e.downloadedBytes>0?eD(e.downloadedBytes):void 0:`${eD(e.downloadedBytes)} / ${eD(e.totalBytes)}`,`${Math.max(0,Math.round(e.elapsedMs/1e3))}s`].filter(e=>!!e);return`下载豆包开发者工具:${t.join(" \xb7 ")}`}function es(e,t){let r,n=!1;return o=>{if(!o)return void t?.(void 0);if("download"===o.phase){r=o,t?.(o);return}if(r&&!n&&(n=!0,tp(e,`✓ ${ei(r)}`)),"complete"===o.phase){t?.(void 0),tp(e,`✓ ${ei(o)}`);return}t?.(o)}}async function ea(e){let t,r,n=e.output??process.stderr,o=e.client??await _({projectPath:e.projectPath,appDir:e.appDir,nodeIdPrefix:"dev-shell"}),i=e.closeDeviceApp??ev,s=new AbortController,a=e.openBrowser??w,d=new Set,l=!1,c={runtime:e.runtime,client:o,output:n,openBrowser:a,openQRCodeViewer:e.openQRCodeViewer??((e,t)=>ta(e,a,t,n)),retainQRCodeViewer:e=>d.add(e),signal:s.signal,launchDeviceApp:e.launchDeviceApp??(e=>eb(e,n)),closeDeviceApp:async()=>(l=!0,i()),prepareDeviceApp:e.prepareDeviceApp??(e=>ey(n,e)),...e.onDeviceAppSetupProgress?{onDeviceAppSetupProgress:e.onDeviceAppSetupProgress}:{},openPreparedDeviceApp:e.openPreparedDeviceApp??ew,runRealDeviceAuth:e.runRealDeviceAuth??e6,listAppVersions:e.listAppVersions??(async e=>{let t=await u(e);return t.data?.version_list??[]}),selectItem:e.selectItem};return{stopped:e.runtime.stopped,getState:()=>e.runtime.getState(),execute(e){let r=ed(e,c);return t=r,r.finally(()=>{t===r&&(t=void 0)})},close:()=>r??=(async()=>{for(let e of(s.abort(new tr),await t?.catch(()=>void 0),d))await e.close().catch(()=>void 0);d.clear(),ts(),await o.stop().catch(()=>void 0),await e.runtime.stop().catch(()=>void 0),l||await ec(c)})()}}async function ed(e,t){var r;let n;try{n=function(e){let t,r=[],n="",o=!1,i=()=>{n.length>0&&(r.push(n),n="")};for(let r of e.trim()){if(o){n+=r,o=!1;continue}if("\\"===r&&"'"!==t){o=!0;continue}if("'"===r||'"'===r){if(!t){t=r;continue}if(t===r){t=void 0;continue}}if(!t&&/\s/.test(r)){i();continue}n+=r}if(o&&(n+="\\"),t)throw Error(`unterminated ${t} quote`);return i(),r}(e)}catch(e){return tp(t.output,te(th(e))),"continue"}let o=n[0]?.toLowerCase(),i=n.slice(1);if(!o)return"continue";if((r=i).includes("--help")||r.includes("-h")){let e="device"===o&&i[0]&&!i[0].startsWith("-")?`device ${i[0].toLowerCase()}`:o;if(function(e,t){switch(t){case"device widget":return tp(e,"usage: widget [widget-id] [--data <json>] [--bot-id <id>] [--device-id <id>]"),tp(e,"推送卡片到已连接真机;省略 widget-id 时从 `widgets` 列表中选择。"),tp(e,"需要非交互式 CLI 参数说明时,可运行:dbx dev push-widget --help"),!0;case"device page":return tp(e,"usage: page [page-id] [--data <json>] [--settings <value>] [--mode <full|popup|floating>] [--device-id <id>]"),tp(e,"打开页面到已连接真机;省略 page-id 时从 `pages` 列表中选择。"),tp(e,"需要非交互式 CLI 参数说明时,可运行:dbx dev push-page --help"),!0;case"device":tp(e,"usage: device [--mcp] [--timeout <seconds>] [--qr-file <file.png>]"),tp(e,"进入真机模式并准备真机工具、打开调试二维码。"),tp(e,"使用 --mcp 进入 MCP 端到端调试,并从当前 AppID 的版本列表中选择 versionTag。");for(let t of(tp(e,"真机调试命令"),eo))tp(e,` ${t.command.padEnd(22)}${t.description}`);return tp(e,"进入真机模式后执行 `<命令> --help` 查看参数。"),!0;case"remote-debug":return tp(e,"usage: remote-debug [--timeout <seconds>] [--qr-file <file.png>]"),tp(e,"准备真机工具后打开临时二维码页面;使用 --qr-file 可额外导出 PNG。"),tp(e,"remote-debug 是 device 的同义命令。"),!0;case"device qr":return tp(e,"usage: qr [--mcp] [--timeout <seconds>] [--qr-file <file.png>]"),tp(e,"重新生成真机调试二维码;MCP 端到端调试会沿用已选择的 versionTag,也可用 --mcp 重新选择。"),!0;case"web":return tp(e,"usage: web"),tp(e,"在默认浏览器打开本地 Web 模拟器。"),!0;case"device pages":case"device widgets":{let r="device pages"===t?"打开的页面":"推送的卡片";return tp(e,`usage: ${t.slice(7)}`),tp(e,`列出真机可${r}。`),!0}case"status":return tp(e,"usage: status"),tp(e,"查看本地调试服务状态。"),!0;default:return!1}}(t.output,e))return"continue"}try{switch(o){case"status":return await eu(t),"continue";case"web":return await ep(t),"continue";case"device":return await el(t,i)?"enter-device":"continue";case"remote-debug":return await eh(t,i,{allowMcp:!1,launchDeviceApp:!0,reuseVersionTag:!1}),"continue";default:return tp(t.output,`unknown command: ${o}`),["qr","pages","page","widgets","widget"].includes(o)&&tp(t.output,`\`${o}\` is only available in device mode; run \`device\` first.`),"continue"}}catch(e){return tp(t.output,te(th(e))),"continue"}}async function el(e,t){let r=t[0]?.toLowerCase();if(!r||r.startsWith("-"))return await eh(e,t,{allowMcp:!0,launchDeviceApp:!0,reuseVersionTag:!1}),!0;let n=t.slice(1);switch(r){case"qr":return await eg(e,n),!0;case"pages":return await e0(e,"page",f.discoverPages),!0;case"page":return await e1(e,n),!0;case"widgets":return await e0(e,"widget",f.discoverWidgets),!0;case"widget":return await e2(e,n),!0;default:return tp(e.output,`unknown device subcommand: ${r}`),!1}}async function ec(e){try{var t,r;let n=await e.closeDeviceApp();t=e.output,r=n,"closed"===r.status?tp(t,`豆包开发者工具已关闭:${r.appPath}`):tp(t,`关闭豆包开发者工具失败${r.reason?`:${te(r.reason)}`:""}`)}catch(t){tp(e.output,`关闭豆包开发者工具失败:${te(th(t))}`)}}async function eu(e){let t=await e.client.call(f.getInfo);tp(e.output,`status: ${t.status}`),tp(e.output,`app_id: ${t.appId??"-"}`),tp(e.output,`dev_server: ${t.host??"-"}`),tp(e.output,`web_debugger: ${t.webDebuggerUrl??"-"}`)}async function ep(e){let t=e.runtime.getState().webDebuggerUrl;if(!t)throw Error("web debugger URL is not ready");await e.openBrowser(t),tp(e.output,`Web 模拟器已打开:${t}`)}async function eh(e,t,r){let n,o,i=(0,G.parseArgs)({args:t,allowPositionals:!1,options:{timeout:{type:"string"},"qr-file":{type:"string"},mcp:{type:"boolean"}}});if(!r.allowMcp&&i.values.mcp)throw Error("--mcp 仅支持 `device --mcp`,或进入真机模式后执行 `qr --mcp`。");let s=function(e){if(void 0===e)return;let t=Number(e);if(!Number.isFinite(t)||t<=0)throw Error("--timeout must be a positive number of seconds");return Math.round(1e3*t)}(i.values.timeout),a=function(e){if(!e)return;let t=x().resolve(e);if(".png"!==x().extname(t).toLowerCase())throw Error("--qr-file must point to a .png file");return t}(i.values["qr-file"]),d=e.runtime.getState(),l=i.values.mcp?await ef(e,d.appId):r.reuseVersionTag?e.activeVersionTag:void 0;if(i.values.mcp&&!l)return;e.activeVersionTag=l,l&&!i.values.mcp&&tp(e.output,`沿用 MCP 端到端调试 versionTag:${l}`);let c={namespace:d.namespace,projectPath:d.projectPath,appDir:d.appDir,appKey:d.appId,hostUrl:d.host},u=!1,p=r.launchDeviceApp?await em(e):void 0;if(p?.status==="skipped")return void tp(e.output,`启动真机调试失败:${te(p.reason??"豆包开发者工具准备失败")}`);ts();let h=new AbortController,f=e.signal?AbortSignal.any([e.signal,h.signal]):h.signal,m=!1;try{m=(o=await e.runRealDeviceAuth({hostUrl:d.host,appKey:d.appId,versionTag:l,namespace:d.namespace,timeoutMs:s,output:e.output,signal:f,onQRCodeReady:async t=>{(n=await e.openQRCodeViewer(t,a)).closed.then(()=>{h.abort(new tr)})}})).ok&&"connected"===o.status}finally{m&&n&&e.retainQRCodeViewer?e.retainQRCodeViewer(n):(await n?.close().catch(()=>void 0),ts())}if(function(e,t){let r;if(!t.ok){if("cancelled"===t.status)return tp(e,"二维码页面已关闭,已取消等待设备连接。");r="timeout"===t.status?`等待设备连接超时(${Math.max(1,Math.ceil(t.timeoutMs/1e3))} 秒)`:te(t.error??"未知错误"),tp(e,`启动真机调试失败:${r}`)}}(e.output,o),o.ok&&"connected"===o.status){let t=o.client?.deviceId??(o.client?.clientId===void 0?void 0:String(o.client.clientId));t&&(e.activeDeviceId=t)}if(r.launchDeviceApp&&o.ok&&"connected"===o.status){var g,_;let t=p?await e_(e,p,c):await e.launchDeviceApp(c);t&&(u||(u=!0,g=e.output,"opened"===(_=t).status?tp(g,`豆包开发者工具已启动:${_.appPath}`):tp(g,`启动豆包开发者工具失败${_.reason?`:${te(_.reason)}`:""}`)))}}async function ef(e,t){if(!t)throw Error("无法查询 versionTag,当前工程缺少 AppID。");let r=(await e.listAppVersions(t)).filter(e=>"string"==typeof e.version_tag&&!!e.version_tag.trim());if(!r.length)throw Error(`当前 AppID(${t})没有可选的 versionTag。`);let n=await e.selectItem("versionTag",r,e.output);return n?(tp(e.output,`MCP 端到端调试 versionTag:${n}`),n):void tp(e.output,"已取消 versionTag 选择,未生成二维码。")}async function em(e){if(e.prepareDeviceApp){e.onDeviceAppSetupProgress?.(void 0);try{return await e.prepareDeviceApp({onProgress:es(e.output,e.onDeviceAppSetupProgress)})}catch(t){return e.onDeviceAppSetupProgress?.(void 0),{status:"skipped",reason:th(t)}}}}async function eg(e,t){await eh(e,t,{allowMcp:!0,launchDeviceApp:!0,reuseVersionTag:!0})}async function e_(e,t,r){return"skipped"!==t.status&&t.appPath?e.openPreparedDeviceApp?e.openPreparedDeviceApp(t.appPath,r):e.launchDeviceApp(r):{status:"skipped",reason:t.reason}}async function eb(e,t=process.stderr){let r=await ey(t);return"skipped"!==r.status&&r.appPath?ew(r.appPath,e):{status:"skipped",reason:r.reason}}async function ey(e=process.stderr,t={}){let r=function(e={}){let t=e.env??process.env,r=e.platform??process.platform,n=e.arch??process.arch,o=e.appDir??ek(),i=e.manifest??U,s=eC(t);if(t[X]?.trim()||!s&&ej({...t,[X]:""},r,o))return;eU(i);let a=eP(r,n);if(!a)return;let d=i.packages[a];if(!d)return;eN(d);let l=eH(i,d),c=eT(t,r);if(!(!s&&ex(c,i,a,d,l)))return{platform:a,version:l,...void 0===d.sizeBytes?{}:{sizeBytes:d.sizeBytes}}}();return r&&!t.onProgress&&(tp(e,"真机调试准备:"),tp(e,`首次或版本更新需要下载豆包开发者工具${r.sizeBytes?`(${eD(r.sizeBytes)})`:""}。`),tp(e,"下载完成后才会生成二维码;下载耗时取决于网络,进度和实际耗时将持续显示。")),await eE({runner:{onProgress:t.onProgress??es(e)}})}async function ew(e,t){return await function(e,t,r=process.platform){var n,o,i;let s,a=(n=e,o=r,s=(i=t)?[["namespace",i.namespace],["project",i.appDir??i.projectPath],["app-key",i.appKey],["host-url",i.hostUrl]].flatMap(([e,t])=>t?[`--${e}=${t}`]:[]):[],"darwin"===o?{command:"open",args:[n,...s.length?["--args",...s]:[]]}:"win32"===o?{command:"cmd",args:["/c","start","",n,...s],windowsVerbatimArguments:!0}:{command:n,args:s});return new Promise((e,t)=>{let r=(0,N.spawn)(a.command,a.args,{stdio:"ignore",windowsVerbatimArguments:a.windowsVerbatimArguments});r.once("error",t),r.once("spawn",e)})}(e,t),{status:"opened",appPath:e}}async function ev(){let e=function(e=process.env,t=process.platform,r=process.arch,n=ek()){let o=e[X]?.trim();if(o)return x().resolve(o);let i=ej({...e,[X]:""},t,n);if(i)return i;let s=eP(t,r);if(!s)return;let a=eT(e,t),d=eq(a);if(!d||d.platform!==s)return;let l=eK(eB(a,d.activeDeviceAppVersion),d.entry,"device app state entry");return P().existsSync(l)?l:void 0}();return e?(await function(e,t=process.platform){return"darwin"===t?eG(e):eW(eX(e,t),{rejectOnNonZero:!0}).then(()=>void 0)}(e),{status:"closed",appPath:e}):{status:"skipped",reason:`${X} is not set and no packaged or cached device app was found`}}async function eE(e={}){let t=e.env??process.env,r=e.platform??process.platform,n=e.arch??process.arch,o=e.appDir??ek(),i=eC(t),s=t[X]?.trim();if(s)return{status:"found",appPath:x().resolve(s),source:"env"};if(!i){let e=ej({...t,[X]:""},r,o);if(e)return{status:"found",appPath:e,source:"packaged"}}return eA({env:t,platform:r,arch:n,appDir:o,manifest:e.manifest,runner:e.runner})}async function eA(e={}){let t=e.env??process.env,r=e.platform??process.platform,n=e.arch??process.arch,o=e.manifest??U;eU(o);let i=eP(r,n);if(!i)return{status:"skipped",reason:`device app download is not supported on ${r}/${n}`};let s=o.packages[i];if(!s)return{status:"skipped",reason:`device app package is not configured for ${i} in CLI ${o.cliVersion}`};let a=eT(t,r),d=eH(o,s);if(!eC(t)){let e=ex(a,o,i,s,d);if(e)return e$(a,d),{status:"found",appPath:e,source:"cache"}}let l=await eI(a,o,i,s,r,e.runner);return e$(a,d),{status:"found",appPath:l,source:"downloaded"}}function ej(e=process.env,t=process.platform,r=ek()){let n=e[X]?.trim();if(n)return x().resolve(n);if(!P().existsSync(r))return;let o=P().readdirSync(r,{withFileTypes:!0}).find(e=>{var r,n;return r=e,"darwin"===(n=t)?r.isDirectory()&&r.name.endsWith(".app"):"win32"===n?r.isFile()&&r.name.toLowerCase().endsWith(".exe"):r.isFile()&&/\.(appimage|AppImage)$/.test(r.name)});return o?x().join(r,o.name):void 0}function eT(e=process.env,t=process.platform){let r=e.DBX_DEVICE_APP_CACHE_DIR?.trim();if(r)return x().resolve(r);if("darwin"===t)return x().join(z().homedir(),"Library","Application Support","dbx","device-app");if("win32"===t){let t=e.LOCALAPPDATA?.trim()||x().join(z().homedir(),"AppData","Local");return x().join(t,"dbx","device-app")}return x().join(z().homedir(),".local","share","dbx","device-app")}function ek(){return x().resolve(er,"../../..","device-app")}function eP(e,t){if(("darwin"===e||"win32"===e)&&("arm64"===t||"x64"===t))return`${e}-${t}`}function eC(e){let t=e.DBX_DEVICE_APP_FORCE_DOWNLOAD?.trim().toLowerCase();return!!(t&&"0"!==t&&"false"!==t)}function ex(e,t,r,n,o){var i,s,a,d,l;let c,u=eq(e);if(!u||u.activeDeviceAppVersion!==o||u.cliVersion!==t.cliVersion||u.platform!==r||!eV(u.sha256,n)||u.entry!==n.entry)return;let p=eB(e,o);if(i=p,s=t,a=r,d=n,l=o,!((c=eR(i))&&c.cliVersion===s.cliVersion&&c.deviceAppVersion===l&&c.entry===d.entry&&c.platform===a&&eV(c.sha256,d)))return;let h=eK(p,n.entry,"device app entry");return P().existsSync(h)?h:void 0}async function eI(e,t,r,n,o,i={}){eN(n);let s=eH(t,n),a=i.now?.()??Date.now(),d=x().join(e,".tmp");P().mkdirSync(d,{recursive:!0}),P().mkdirSync(x().join(e,et),{recursive:!0});let l=P().mkdtempSync(x().join(d,`${s}-`)),c=x().join(l,"device-app.zip"),u=x().join(l,"extract"),p=eB(e,s);try{var h,f,m,g,_,b,y,w;let d,l;if(i.onProgress?.({phase:"download",downloadedBytes:0,...void 0===n.sizeBytes?{}:{totalBytes:n.sizeBytes,percentage:0},elapsedMs:0}),await eS(n.url,c,i.fetch,i.onProgress),n.sha256&&(i.onProgress?.({phase:"install",stage:"verify"}),(d=await eO(c))!==eF(n.sha256)))throw Error(`device app sha256 mismatch: expected ${n.sha256}, got ${d}`);P().mkdirSync(u,{recursive:!0}),i.onProgress?.({phase:"install",stage:"extract"}),await eL(c,u,o,i);let v=eK(u,n.entry,"device app package entry");(function(e,t){if(!P().existsSync(e))throw Error(`device app entry not found after extraction: ${e}`);let r=P().statSync(e);if("darwin"===t){if(!r.isDirectory()||!e.endsWith(".app"))throw Error(`macOS device app entry must be a .app directory: ${e}`);return}if("win32"===t&&(!r.isFile()||!e.toLowerCase().endsWith(".exe")))throw Error(`Windows device app entry must be an .exe file: ${e}`)})(v,o),function(e,t,r,n,o){let i=eR(e);if(i&&(i.cliVersion!==t.cliVersion||i.deviceAppVersion!==o||i.entry!==n.entry||i.platform!==r||!eV(i.sha256,n)))throw Error(`device app metadata does not match CLI manifest in ${x().join(e,Z)}`)}(u,t,r,n,s),i.onProgress?.({phase:"install",stage:"install"}),P().rmSync(p,{recursive:!0,force:!0}),P().renameSync(u,p),h=p,f=t,m=r,g=n,_=s,b=a,l={name:"Doubao App V2",cliVersion:f.cliVersion,deviceAppVersion:_,entry:g.entry,platform:m,...g.sha256?{sha256:eF(g.sha256)}:{},installedAt:b},eJ(x().join(h,Z),l),y=e,w={activeDeviceAppVersion:s,cliVersion:t.cliVersion,entry:n.entry,platform:r,...n.sha256?{sha256:eF(n.sha256)}:{},installedAt:a},eJ(x().join(y,ee),w);let E=eK(p,n.entry,"device app entry");return i.onProgress?.({phase:"complete",appPath:E}),E}finally{P().rmSync(l,{recursive:!0,force:!0})}}async function eS(e,r,n=fetch,o){var i,s;let a,d,l,c,u,p,h=new URL(e);if("https:"!==h.protocol&&"http:"!==h.protocol)throw Error(`device app package URL must be http(s): ${e}`);let f=await n(e);if(!f.ok)throw Error(`device app package download failed: HTTP ${f.status} ${f.statusText}`);if(!f.body)throw Error("device app package download failed: empty response body");let m=f.body;await (0,t.pipeline)(Y.Readable.fromWeb(m),(i=f,s=o,a=function(e){if(!e)return;let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}(i.headers.get("content-length")),d=0,l=-1,c=0,u=Date.now(),(p=e=>{if(!s)return;if(a){let t=Math.min(100,Math.floor(d/a*100));if(!e&&100!==t&&t<l+10||t===l)return;l=t;let r=Date.now()-u;s({phase:"download",downloadedBytes:d,totalBytes:a,percentage:t,elapsedMs:r});return}if(!e&&d-c<0x3200000||d===c)return;c=d;let t=Date.now()-u;s({phase:"download",downloadedBytes:d,elapsedMs:t})})(!1),new Y.Transform({transform(e,t,r){d+=e.length,p(!1),r(null,e)},flush(e){p(!0),e()}})),P().createWriteStream(r))}function eD(e){let t=["B","KB","MB","GB"],r=e,n=0;for(;r>=1024&&n<t.length-1;)r/=1024,n+=1;return 0===n?`${r} ${t[n]}`:`${r.toFixed(1)} ${t[n]}`}async function eL(e,t,r,n){let o=n.runCommand??(e=>eW(e,{rejectOnNonZero:!0}).then(()=>void 0));if("darwin"===r)return void await o({command:"ditto",args:["-x","-k",e,t]});if("win32"===r)return void await o({command:"powershell.exe",args:["-NoProfile","-ExecutionPolicy","Bypass","-Command",`Expand-Archive -LiteralPath ${ez(e)} -DestinationPath ${ez(t)} -Force`],windowsVerbatimArguments:!0});throw Error(`device app zip extraction is not supported on ${r}`)}function eR(e){let t=eY(x().join(e,Z));if(!d(t))return;let r=t.cliVersion,n=t.deviceAppVersion,o=t.entry,i=t.platform,s=t.sha256,a=t.installedAt;if("string"==typeof r&&"string"==typeof n&&"string"==typeof o&&"string"==typeof i&&(void 0===s||"string"==typeof s)&&"number"==typeof a)return{name:"string"==typeof t.name?t.name:void 0,cliVersion:r,deviceAppVersion:n,entry:o,platform:i,..."string"==typeof s?{sha256:s}:{},installedAt:a}}function eq(e){let t=eY(x().join(e,ee));if(d(t)&&"string"==typeof t.activeDeviceAppVersion&&"string"==typeof t.cliVersion&&"string"==typeof t.entry&&"string"==typeof t.platform&&(void 0===t.sha256||"string"==typeof t.sha256)&&"number"==typeof t.installedAt)return{activeDeviceAppVersion:t.activeDeviceAppVersion,cliVersion:t.cliVersion,entry:t.entry,platform:t.platform,..."string"==typeof t.sha256?{sha256:t.sha256}:{},installedAt:t.installedAt}}function e$(e,t){let r=x().join(e,et);if(P().existsSync(r)){for(let e of P().readdirSync(r,{withFileTypes:!0}))if(e.isDirectory()&&e.name!==t)try{P().rmSync(x().join(r,e.name),{recursive:!0,force:!0})}catch{}}}async function eO(e){let r=F().createHash("sha256");return await (0,t.pipeline)(P().createReadStream(e),r),r.digest("hex")}function eB(e,t){return eM(t),x().join(e,et,t)}function eM(e){if(!/^[0-9A-Za-z._+-]+$/.test(e))throw Error(`device app version contains unsupported path characters: ${e}`)}function eU(e){if(1!==e.schemaVersion)throw Error(`unsupported device app manifest schemaVersion: ${e.schemaVersion}`);if(!e.cliVersion.trim())throw Error("device app manifest cliVersion is required");if(!e.deviceAppVersion.trim())throw Error("device app manifest deviceAppVersion is required");eM(e.deviceAppVersion)}function eN(e){if(!e.url||!e.entry)throw Error("device app package requires url and entry");if(void 0!==e.version){if(!e.version.trim())throw Error("device app package version must not be empty");eM(e.version)}if(e.sha256&&!/^[0-9a-fA-F]{64}$/.test(e.sha256))throw Error(`device app package sha256 must be 64 hex characters: ${e.sha256}`);if(void 0!==e.sizeBytes&&(!Number.isSafeInteger(e.sizeBytes)||e.sizeBytes<=0))throw Error(`device app package sizeBytes must be a positive integer: ${e.sizeBytes}`);if(x().isAbsolute(e.entry)||e.entry.split(/[\\/]+/).includes(".."))throw Error(`device app package entry must be a relative path inside the zip: ${e.entry}`)}function eH(e,t){let r=t.version??e.deviceAppVersion;if(!r.trim())throw Error("device app package version must not be empty");return eM(r),r}function eF(e){return e.toLowerCase()}function eV(e,t){return!t.sha256||e===eF(t.sha256)}function eK(e,t,r){if(x().isAbsolute(t))throw Error(`${r} must be relative: ${t}`);let n=x().resolve(e),o=x().resolve(e,t);if(o!==n&&!o.startsWith(`${n}${x().sep}`))throw Error(`${r} escapes target directory: ${t}`);return o}function ez(e){return`'${e.replace(/'/g,"''")}'`}function eY(e){try{return JSON.parse(P().readFileSync(e,"utf8"))}catch{return}}function eJ(e,t){P().mkdirSync(x().dirname(e),{recursive:!0}),P().writeFileSync(e,`${JSON.stringify(t,null,2)}
13
+ `,"utf8")}async function eG(e){let t=function(e){if(!e.endsWith(".app"))return;let t=function(e){let t=x().join(e,"Contents","Info.plist");if(!P().existsSync(t))return;let r=P().readFileSync(t,"utf8").match(/<key>CFBundleExecutable<\/key>\s*<string>([^<]+)<\/string>/);return r?.[1]}(e)??x().basename(e,".app");return x().join(e,"Contents","MacOS",t)}(e);await eW(eX(e,"darwin"),{rejectOnNonZero:!1}),!t||await eQ(t)&&await eW({command:"pkill",args:["-f",eZ(t)]},{rejectOnNonZero:!1})}function eW(e,t){return new Promise((r,n)=>{let o=(0,N.spawn)(e.command,e.args,{stdio:"ignore",windowsVerbatimArguments:e.windowsVerbatimArguments});o.once("error",n),o.once("exit",o=>{let i=o??0;0!==i&&t.rejectOnNonZero?n(Error(`${e.command} exited with code ${i}`)):r(i)})})}async function eQ(e){return 0===await eW({command:"pgrep",args:["-f",eZ(e)]},{rejectOnNonZero:!1})}function eX(e,t){return"darwin"===t?{command:"osascript",args:["-e",`tell application (POSIX file "${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}" as alias) to quit`]}:"win32"===t?{command:"cmd",args:["/c","taskkill","/IM",x().basename(e),"/T"],windowsVerbatimArguments:!0}:{command:"pkill",args:["-f",e]}}function eZ(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}async function e0(e,t,r){let n=await e.client.call(r);if(!n.length)return void tp(e.output,`no ${t}s found`);for(let t of n)tp(e.output,`- ${tc(t)}`)}async function e1(e,t){let r=(0,G.parseArgs)({args:t,allowPositionals:!0,options:{data:{type:"string"},settings:{type:"string"},mode:{type:"string"},"device-id":{type:"string"}}}),n=r.positionals[0]??await e5(e,"page",f.discoverPages);if(!n)throw Error("page id is required");let o=function(e){if(void 0===e)return"full";if("full"===e||"popup"===e||"floating"===e)return e;throw Error("--mode must be one of: full, popup, floating")}(r.values.mode),i=m(r.values.data,"--data"),s=r.values["device-id"]??e.activeDeviceId;tp(e.output,`debug: page push request ${tu({pageId:n,data:i,settings:r.values.settings,mode:o,deviceId:s})}`);let a=g("page",await e.client.call(f.openPage,{pageId:n,pageData:i,pageSettings:r.values.settings,mode:o,deviceId:s}));tp(e.output,`page pushed: ${n}`),tp(e.output,`status: ${e4(a)}`)}async function e2(e,t){let r=(0,G.parseArgs)({args:t,allowPositionals:!0,options:{data:{type:"string"},"bot-id":{type:"string"},"device-id":{type:"string"}}}),n=r.positionals[0]??await e5(e,"widget",f.discoverWidgets);if(!n)throw Error("widget id is required");let o=m(r.values.data,"--data"),i=r.values["device-id"]??e.activeDeviceId;tp(e.output,`debug: widget push request ${tu({widgetId:n,data:o,botId:r.values["bot-id"],deviceId:i})}`);let s=g("widget",await e.client.call(f.pushWidget,{widgetId:n,widgetData:o,botId:r.values["bot-id"],deviceId:i}));tp(e.output,`widget pushed: ${n}`),tp(e.output,`status: ${e4(s)}`)}function e4(e){if(!e.ok)return"failed";let t=function(e){if(!e||"object"!=typeof e)return;let t=e.data;if(!t||"object"!=typeof t)return;let r=t.msg;return"string"==typeof r?r:void 0}(e.result);return"string"==typeof t&&t.trim()?t:"ok"}async function e5(e,t,r){let n=await e.client.call(r);if(n.length)return e.selectItem(t,n,e.output)}function e3(e){return e.map(e=>{let t=tl(e);return t?{label:tc(e),value:t}:void 0}).filter(e=>!!e)}async function e6(e){var t,o;let i,s,a,d,l=e.timeoutMs??6e4;if(!e.hostUrl||!e.appKey)return{ok:!1,status:"skipped",timeoutMs:l,error:"无法生成二维码,缺少 hostUrl 或 appKey。"};let c=e.hostUrl,u=e.appKey,p=(t=e.namespace,o=l,s=new y(t,{nodeId:`dev-auth-${process.pid}-${Math.random().toString(36).slice(2,8)}`,requestTimeout:2e3}),a=!1,d=new Promise(e=>{i=e}),s.createService({name:`devAuthListener${process.pid}`,events:{"connection.newclient"(e){var t;a||(a=!0,i((t=e.params)&&"object"==typeof t?{scope:"string"==typeof t.scope?t.scope:void 0,type:"string"==typeof t.type?t.type:void 0,clientId:"number"==typeof t.clientId?t.clientId:void 0,deviceId:to(t),app:"string"==typeof t.app?t.app:void 0}:{}))}}}),{start:()=>s.start(),stop:()=>s.stop(),wait:e=>{var t,r,n;return t=d,r=o,n=e,new Promise((e,o)=>{let i=()=>{clearTimeout(s),o(n?.reason instanceof Error?n.reason:new tr)},s=setTimeout(()=>{n?.removeEventListener("abort",i),o(new tt(r))},r);n?.aborted?i():(n?.addEventListener("abort",i,{once:!0}),t.then(t=>{clearTimeout(s),n?.removeEventListener("abort",i),e(t)},e=>{clearTimeout(s),n?.removeEventListener("abort",i),o(e)}))})},async findExistingClient(){let e=await tn(()=>s.call("devtoolConnection.getConnectedClients"),2e3).catch(()=>[]);return function(e){if(!e||"object"!=typeof e)return;let t=e.device,r=t?.info,n="number"==typeof t?.clientId?t.clientId:void 0;return{scope:"all",type:String(r?.network??"").toLowerCase().includes("wifi")?"wifi":"usb",...void 0===n?{}:{clientId:n},deviceId:to({client:e}),app:"string"==typeof r?.App?r.App:""}}(Array.isArray(e)?e[0]:void 0)}}),h={};await p.start();try{let t,o,i;e.signal?.throwIfAborted();let s=await p.findExistingClient(),a=await e8(h,()=>{var t;return(0,W.Ph)((t=e.versionTag,{hostUrl:c,appKey:u,...void 0===t?{}:{versionTag:t},isSigned:!1,appletType:0,baseApiUrl:r(),authOptions:n()}))});tp(e.output,""),tp(e.output,"使用豆包 App 扫码连接调试设备."),tp(e.output,`二维码创建成功,请在 ${(t=Math.max(1,Math.round(l/1e3)),o=Math.floor(t/60),i=t%60,o>0?`${o}m ${i}s`:`${i}s`)} 前扫码; 超时可在真机模式执行 \`qr\` 创建新二维码.`),tp(e.output,""),await e.onQRCodeReady?.(a.qrCodeValue),e.signal?.throwIfAborted(),tp(e.output,`等待设备连接 (${l/1e3}s timeout)...`);let d=s??await p.wait(e.signal);return{ok:!0,status:"connected",timeoutMs:l,qrCodeValue:a.qrCodeValue,debugToken:a.debugToken,encryptedDebugPayload:a.encryptedDebugPayload,client:d}}catch(o){let t=o instanceof tt,r=o instanceof tr||!!e.signal?.aborted,n=function(e){if(e&&"object"==typeof e)return e9(e,"logId")??e9(e,"log_id")}(o)??h.logId;return{ok:!1,status:r?"cancelled":t?"timeout":"skipped",timeoutMs:l,...n?{logId:n}:{},error:o instanceof Error?o.message:String(o)}}finally{await p.stop()}}async function e8(e,t){let r=globalThis.fetch;globalThis.fetch=async(t,n)=>{var o;let i,s=await r((i=function(e){try{if("string"==typeof e)return new URL(e);if(e instanceof URL)return new URL(e.toString());return new URL(e.url)}catch{return}}(o=t))&&i.pathname.startsWith("/developer/check_api/apps/")&&i.pathname.endsWith("/debug/ticket")?(i.pathname=i.pathname.replace(/^\/developer\/check_api\//,"/app_developer/check_api/"),"string"==typeof o)?i.toString():o instanceof URL?i:new Request(i,o):o,n);return await e7(e,s),s};try{return await t()}finally{globalThis.fetch=r}}async function e7(e,t){let r=t.headers.get("x-tt-logid");if(r){e.logId=r;return}try{let r=await t.clone().text();if(!r)return;let n=JSON.parse(r),o=e9(n,"log_id")??e9(n,"logId");o&&(e.logId=o)}catch{}}function e9(e,t){if(!e||"object"!=typeof e)return;let r=e[t];return"string"==typeof r&&r?r:void 0}function te(e){return e.replace(/\s*[\[((]log_id:\s*[^\]))]+[\]))]/gi,"").trim()}class tt extends Error{constructor(e){super(`real-device auth timed out after ${e}ms`),this.name="RealDeviceAuthTimeoutError"}}class tr extends Error{constructor(){super("real-device auth cancelled"),this.name="RealDeviceAuthCancelledError"}}async function tn(e,t){let r=Date.now()+t;for(;;)try{return await e()}catch(e){if(Date.now()>=r)throw e;await new Promise(e=>{setTimeout(e,100)})}}function to(e){let t=e.client?.device,r=t?.info;return r?.usbDeviceId||t?.xdbId||r?.did||r?.debugRouterId}async function ti(e,t){let r=x().resolve(t);if(".png"!==x().extname(r).toLowerCase())throw Error("QR file must use the .png extension");return P().mkdirSync(x().dirname(r),{recursive:!0}),await Q.toFile(r,e,{errorCorrectionLevel:"L",margin:4,type:"png"}),r}function ts(e=z().tmpdir()){let t;try{t=P().readdirSync(e,{withFileTypes:!0})}catch{return}for(let r of t)if(/^dbx-real-device-qr-.*\.(?:png|svg)$/i.test(r.name)&&(r.isFile()||r.isSymbolicLink()))try{P().unlinkSync(x().join(e,r.name))}catch{}}async function ta(e,t,r,n=process.stderr){let o,i,s;if(r){let t=await ti(e,r);tp(n,`二维码图片已导出至:${t}`)}let a=await Q.toBuffer(e,{errorCorrectionLevel:"L",margin:4,type:"png"}),d=F().randomBytes(18).toString("hex"),l=`/${d}/`,c=new Set,u=!1,p=new Promise(e=>{i=e}),h=()=>{clearTimeout(o),o=void 0,u||i()},f=(0,V.createServer)((e,t)=>{let r=e.url?.split("?",1)[0];if(t.setHeader("Cache-Control","no-store, no-cache, must-revalidate, max-age=0"),t.setHeader("Expires","0"),t.setHeader("Pragma","no-cache"),"GET"===e.method&&r===l){t.writeHead(200,{"Content-Security-Policy":"default-src 'none'; img-src 'self'; connect-src 'self'; script-src 'unsafe-inline'; style-src 'unsafe-inline'","Content-Type":"text/html; charset=utf-8"}),t.end(`<!doctype html>
14
14
  <html lang="zh-CN">
15
15
  <head>
16
16
  <meta charset="utf-8">
@@ -31,9 +31,8 @@ import"node:module";import{PassThrough as e,Readable as t,Transform as r}from"no
31
31
  });
32
32
  </script>
33
33
  </body>
34
- </html>`);return}if("GET"===e.method&&r===`${l}qr.png`){t.writeHead(200,{"Content-Type":"image/png"}),t.end(s);return}if("GET"===e.method&&r===`${l}events`){clearTimeout(n),n=void 0,t.writeHead(200,{Connection:"keep-alive","Content-Type":"text/event-stream"}),t.write("retry: 250\nevent: ready\ndata: ready\n\n"),u.add(t),t.once("close",()=>{u.delete(t),p||0!==u.size||(n=setTimeout(h,750))});return}if("POST"===e.method&&r===`${l}closed`){e.resume(),t.writeHead(204).end(),h();return}t.writeHead(404,{"Content-Type":"text/plain; charset=utf-8"}),t.end("Not found")});await new Promise((e,t)=>{y.once("error",t),y.listen(0,"127.0.0.1",()=>{y.removeListener("error",t),e()})});let g=y.address();if(!g||"string"==typeof g)throw await tu(y),Error("failed to start QR code viewer");let w=`http://127.0.0.1:${g.port}${l}`,b=()=>a??(a=(async()=>{p=!0,clearTimeout(n);try{for(let e of u)try{e.destroyed||e.writableEnded||(e.once("error",()=>void 0),e.end("event: close\ndata: close\n\n"))}catch{}}finally{u.clear(),await tu(y)}})());try{await t(w),th(o,"已在默认浏览器打开二维码。")}catch(e){throw await b(),Error(`二维码页面未能自动打开:${ty(e)}`)}return{closed:m,close:b}}function tu(e){return e.listening?new Promise(t=>{e.close(()=>t()),e.closeAllConnections()}):Promise.resolve()}function tp(e){if(e&&"object"==typeof e)for(let t of["id","pageId","page_id","widgetId","widget_id","name","path"]){let r=e[t];if("string"==typeof r&&r.trim())return r}}function tf(e){let t=tp(e);if(!e||"object"!=typeof e)return t??String(e);let r="";return"string"==typeof e.title?r=e.title:"string"==typeof e.name&&(r=e.name),[t,r&&r!==t?r:""].filter(Boolean).join(" ")}function tm(e){return JSON.stringify(Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,"data"===e?U(t):t])))}function th(e,t=""){e.write(`${t}
35
- `)}function ty(e){return e instanceof Error?e.message:String(e)}function tg(){return new i("dev").description("启动 dev 调试控制台(Web 模拟器、真机调试、页面和卡片推送)").option("--project-path <path>","dbx 项目路径,状态数据会写入该目录下的 .dbx",".").option("--mcp-endpoint <url>","临时覆盖 manifest.mcp_server.end_point;优先级高于环境变量和 manifest").option("--manifest <path>","manifest.yaml 路径;相对路径按当前目录解析,默认按项目布局自动解析").option("--skill <path>","运行态 Skill 目录或 SKILL.md 路径;相对路径按当前目录解析,默认按项目布局自动解析").option("--verbose","输出 dev service 生命周期日志",!1).addOption(new a("--manifest-path <path>","本地调试使用的 simulator manifest 文件路径").hideHelp()).addOption(new a("--skill-path <path>","本地调试使用的 simulator skill 文件路径").hideHelp()).action(async(e,t)=>S(t,t=>tw(t,e)))}async function tw(t,r){let o,i,a,s,d;t.json&&t.error("dbx dev starts an interactive console and does not support --json");let c=tb(),l=n(r.projectPath),{simulatorManifestPath:u,simulatorSkillPath:f,warnings:m}=function(e){var t;let r,o=A(e.projectPath),n=Y(e.manifest,e.manifestPath),i=n?Z(e.projectPath,n):o.manifestPath,a=Y(e.skill,e.skillPath),s=a?(t=e.projectPath,r=Z(t,a),p.existsSync(r)&&p.statSync(r).isDirectory()?N.join(r,"SKILL.md"):r):o.skillPath,d=[],c=[],l=p.existsSync(i),u=p.existsSync(s);if(l?p.statSync(i).isFile()||d.push(`manifest path must be a file: ${i}`):c.push({code:"dev.manifest.not_found",source:"manifest",path:i}),u?p.statSync(s).isFile()||d.push(`skill path must be a file: ${s}`):c.push({code:"dev.skill.not_found",source:"skill",path:s}),d.length>0)throw Error(`dbx dev path check failed:
36
- ${d.join("\n")}`);return{...l?{simulatorManifestPath:i}:{},...u?{simulatorSkillPath:s}:{},warnings:c}}({projectPath:l,manifest:r.manifest,skill:r.skill,manifestPath:r.manifestPath,skillPath:r.skillPath}),h=[...m],y=u,g=!1;if(y){let e=await z(y);h.push(...e.warnings),g=e.validated,e.usable?(o=e.appId,i=e.manifest):y=void 0}let w=await J(process.env,r.mcpEndpoint,y,i),v=V(i),b=A(l).frontendDirectory,_=new e,E=process.stdin,k=new AbortController,$=D({projectPath:l,appDir:b,installSignalHandlers:!0,signal:k.signal,verbose:r.verbose,devOptions:function({appId:e,mcpEndpoint:t,mcpHeaders:r,simulatorManifestPath:o,simulatorSkillPath:n,openBrowser:i,onLog:a,onProgress:s,printLogs:d}){return{...e?{appId:e}:{},...a||s||void 0!==d?{output:{...void 0!==d?{printLogs:d}:{},...s?{progressBar:!1,onProgress:s}:{},...a?{onLog:a}:{}}}:{},debugDriver:"devtools",interactive:!1,simulator:{...t?{mcpEndpoint:t}:{},...r?{mcpHeaders:r}:{},...o?{simulatorManifestPath:o}:{},...n?{simulatorSkillPath:n}:{},openBrowser:i}}}({appId:o,mcpEndpoint:w,mcpHeaders:v,simulatorManifestPath:y,simulatorSkillPath:f,openBrowser:e=>{a=function(e){try{let t=new URL(e);if("localhost"===t.hostname)return t.hostname="127.0.0.1",t.toString()}catch{}return e}(e)},printLogs:c?r.verbose:void 0,onLog:c&&!r.verbose?e=>{("warn"===e.level||"error"===e.level)&&_.write(`${"error"===e.level?"error:":"⚠"} ${e.message}
37
- `)}:void 0,onProgress:c?({percentage:e})=>d?.(e):void 0})}).then(e=>(s=e,d?.(1),e)),x=function(e){let t=!e.manifestReady||!e.mcpEndpointSet,r=[...e.warnings];if(e.manifestReady||r.some(e=>"manifest"===e.source)||r.push({code:"dev.manifest.not_ready",source:"manifest"}),e.mcpEndpointSet?t&&!r.some(e=>"mcp"===e.source)&&r.push({code:"dev.mcp.confirm_connection",source:"mcp"}):r.push({code:"dev.mcp.not_configured",source:"mcp"}),0!==r.length)return`${t?"暂无法调试":"启动提醒"}:${r.map(M).join(";")}`}({manifestReady:g,mcpEndpointSet:!!w,warnings:h});if(!c){let e=await $;x&&t.warn(x,{style:"label"});let r=e.getState();t.log(`Web 模拟器: ${r.webDebuggerUrl??a??"-"}`),t.log(`pid: ${r.pid??process.pid}`),t.log("stop: Ctrl+C or kill the process"),await e.stopped,tv()}x&&_.write(`⚠ ${x}
38
- `);try{let{runInkDevShell:e}=await import("./dev-shell.js");await e({createSession:(e,t,r)=>{let n;_.pipe(e);let i=$.then(o=>{if("running"===o.getState().status)return eu({projectPath:l,appDir:b,runtime:t_(o,l,()=>a),output:e,onDeviceAppSetupProgress:r,selectItem:t})}).then(e=>(n=e,e));return Promise.resolve({stopped:$.then(e=>e.stopped),close:async()=>{k.abort(),await $.then(e=>e.stop()).catch(()=>void 0),await i.then(e=>e?.close()).catch(()=>void 0)},execute:async e=>{let t=await i;return t?.execute(e)??"continue"},getState:()=>n?.getState()??s?.getState()??{projectPath:l,appDir:b??l,appId:o,namespace:"",status:"starting"}})},subscribeCompileProgress:e=>(d=e,()=>{d===e&&(d=void 0)}),stdin:E,toChoices:e7})}finally{k.abort(),await $.then(e=>e.stop()).catch(()=>void 0),_.destroy()}tv()}function tv(){process.exit(process.exitCode??0)}function tb(e=process.stdin,t=process.stderr){return!!(e.isTTY&&t.isTTY)}function t_(e,t,r){return{stopped:e.stopped,stop:()=>e.stop(),getState(){let o=e.getState();return{...o,projectPath:t,webDebuggerUrl:o.webDebuggerUrl??r()}}}}export{ed as DEV_SHELL_DEVICE_HELP_ITEMS,es as DEV_SHELL_HELP_ITEMS,H as dev_namespaceObject,ec as formatDeviceAppSetupStatus};
39
- //# sourceMappingURL=dev.js.map
34
+ </html>`);return}if("GET"===e.method&&r===`${l}qr.png`){t.writeHead(200,{"Content-Type":"image/png"}),t.end(a);return}if("GET"===e.method&&r===`${l}events`){clearTimeout(o),o=void 0,t.writeHead(200,{Connection:"keep-alive","Content-Type":"text/event-stream"}),t.write("retry: 250\nevent: ready\ndata: ready\n\n"),c.add(t),t.once("close",()=>{c.delete(t),u||0!==c.size||(o=setTimeout(h,750))});return}if("POST"===e.method&&r===`${l}closed`){e.resume(),t.writeHead(204).end(),h();return}t.writeHead(404,{"Content-Type":"text/plain; charset=utf-8"}),t.end("Not found")});await new Promise((e,t)=>{f.once("error",t),f.listen(0,"127.0.0.1",()=>{f.removeListener("error",t),e()})});let m=f.address();if(!m||"string"==typeof m)throw await td(f),Error("failed to start QR code viewer");let g=`http://127.0.0.1:${m.port}${l}`,_=()=>s??=(async()=>{u=!0,clearTimeout(o);try{for(let e of c)try{e.destroyed||e.writableEnded||(e.once("error",()=>void 0),e.end("event: close\ndata: close\n\n"))}catch{}}finally{c.clear(),await td(f)}})();try{await t(g),tp(n,"已在默认浏览器打开二维码。")}catch(e){throw await _(),Error(`二维码页面未能自动打开:${th(e)}`)}return{closed:p,close:_}}function td(e){return e.listening?new Promise(t=>{e.close(()=>t()),e.closeAllConnections()}):Promise.resolve()}function tl(e){if(e&&"object"==typeof e)for(let t of["id","pageId","page_id","widgetId","widget_id","versionTag","version_tag","name","path"]){let r=e[t];if("string"==typeof r&&r.trim())return r}}function tc(e){let t=tl(e);if(!e||"object"!=typeof e)return t??String(e);let r="";return"string"==typeof e.title?r=e.title:"string"==typeof e.name&&(r=e.name),[t,r&&r!==t?r:""].filter(Boolean).join(" ")}function tu(e){return JSON.stringify(Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,"data"===e?b(t):t])))}function tp(e,t=""){e.write(`${t}
35
+ `)}function th(e){return e instanceof Error?e.message:String(e)}function tf(){return new i("dev").description("启动 dev 调试控制台(Web 模拟器、真机调试、页面和卡片推送)").option("--project-path <path>","dbx 项目路径,状态数据会写入该目录下的 .dbx",".").option("--mcp-endpoint <url>","临时覆盖 manifest.mcp_server.end_point;优先级高于环境变量和 manifest").option("--manifest <path>","manifest.yaml 路径;相对路径按当前目录解析,默认按项目布局自动解析").option("--skill <path>","运行态 Skill 目录或 SKILL.md 路径;相对路径按当前目录解析,默认按项目布局自动解析").option("--verbose","输出 dev service 生命周期日志",!1).addOption(new s("--manifest-path <path>","本地调试使用的 simulator manifest 文件路径").hideHelp()).addOption(new s("--skill-path <path>","本地调试使用的 simulator skill 文件路径").hideHelp()).action(async(e,t)=>a(t,t=>tm(t,e)))}async function tm(e,t){let r,n,o,i,s;e.json&&e.error("dbx dev starts an interactive console and does not support --json");let a=t_(),d=(0,C.resolve)(t.projectPath),{simulatorManifestPath:l,simulatorSkillPath:c,warnings:u}=function(e){var t;let r,n=p(e.projectPath),o=M(e.manifest,e.manifestPath),i=o?B(e.projectPath,o):n.manifestPath,s=M(e.skill,e.skillPath),a=s?(t=e.projectPath,r=B(t,s),k.existsSync(r)&&k.statSync(r).isDirectory()?C.join(r,"SKILL.md"):r):n.skillPath,d=[],l=[],c=k.existsSync(i),u=k.existsSync(a);if(c?k.statSync(i).isFile()||d.push(`manifest path must be a file: ${i}`):l.push({code:"dev.manifest.not_found",source:"manifest",path:i}),u?k.statSync(a).isFile()||d.push(`skill path must be a file: ${a}`):l.push({code:"dev.skill.not_found",source:"skill",path:a}),d.length>0)throw Error(`dbx dev path check failed:
36
+ ${d.join("\n")}`);return{...c?{simulatorManifestPath:i}:{},...u?{simulatorSkillPath:a}:{},warnings:l}}({projectPath:d,manifest:t.manifest,skill:t.skill,manifestPath:t.manifestPath,skillPath:t.skillPath}),f=[...u],m=l,g=!1;if(m){let e=await D(m);f.push(...e.warnings),g=e.validated,e.usable?(r=e.appId,n=e.manifest):m=void 0}let _=await L(process.env,t.mcpEndpoint,m,n),b=v(n),y=p(d).frontendDirectory,w=new Y.PassThrough,E=process.stdin,A=new AbortController,j=h({projectPath:d,appDir:y,installSignalHandlers:!0,signal:A.signal,verbose:t.verbose,devOptions:function({appId:e,mcpEndpoint:t,mcpHeaders:r,simulatorManifestPath:n,simulatorSkillPath:o,openBrowser:i,onLog:s,onProgress:a,printLogs:d}){return{...e?{appId:e}:{},...s||a||void 0!==d?{output:{...void 0!==d?{printLogs:d}:{},...a?{progressBar:!1,onProgress:a}:{},...s?{onLog:s}:{}}}:{},debugDriver:"devtools",interactive:!1,simulator:{...t?{mcpEndpoint:t}:{},...r?{mcpHeaders:r}:{},...n?{simulatorManifestPath:n}:{},...o?{simulatorSkillPath:o}:{},openBrowser:i}}}({appId:r,mcpEndpoint:_,mcpHeaders:b,simulatorManifestPath:m,simulatorSkillPath:c,openBrowser:e=>{o=function(e){try{let t=new URL(e);if("localhost"===t.hostname)return t.hostname="127.0.0.1",t.toString()}catch{}return e}(e)},printLogs:a?t.verbose:void 0,onLog:a&&!t.verbose?e=>{("warn"===e.level||"error"===e.level)&&w.write(`${"error"===e.level?"error:":"⚠"} ${e.message}
37
+ `)}:void 0,onProgress:a?({percentage:e})=>s?.(e):void 0})}).then(e=>(i=e,s?.(1),e)),P=function(e){let t=!e.manifestReady||!e.mcpEndpointSet,r=[...e.warnings];if(e.manifestReady||r.some(e=>"manifest"===e.source)||r.push({code:"dev.manifest.not_ready",source:"manifest"}),e.mcpEndpointSet?t&&!r.some(e=>"mcp"===e.source)&&r.push({code:"dev.mcp.confirm_connection",source:"mcp"}):r.push({code:"dev.mcp.not_configured",source:"mcp"}),0!==r.length)return`${t?"暂无法调试":"启动提醒"}:${r.map(T).join(";")}`}({manifestReady:g,mcpEndpointSet:!!_,warnings:f});if(!a){let t=await j;P&&e.warn(P,{style:"label"});let r=t.getState();e.log(`Web 模拟器: ${r.webDebuggerUrl??o??"-"}`),e.log(`pid: ${r.pid??process.pid}`),e.log("stop: Ctrl+C or kill the process"),await t.stopped,tg()}P&&w.write(`⚠ ${P}
38
+ `);try{let{runInkDevShell:e}=await import("./dev-shell.js");await e({createSession:(e,t,n)=>{let s;w.pipe(e);let a=j.then(r=>{if("running"===r.getState().status)return ea({projectPath:d,appDir:y,runtime:tb(r,d,()=>o),output:e,onDeviceAppSetupProgress:n,selectItem:t})}).then(e=>(s=e,e));return Promise.resolve({stopped:j.then(e=>e.stopped),close:async()=>{A.abort(),await j.then(e=>e.stop()).catch(()=>void 0),await a.then(e=>e?.close()).catch(()=>void 0)},execute:async e=>{let t=await a;return t?.execute(e)??"continue"},getState:()=>s?.getState()??i?.getState()??{projectPath:d,appDir:y??d,appId:r,namespace:"",status:"starting"}})},subscribeCompileProgress:e=>(s=e,()=>{s===e&&(s=void 0)}),stdin:E,toChoices:e3})}finally{A.abort(),await j.then(e=>e.stop()).catch(()=>void 0),w.destroy()}tg()}function tg(){process.exit(process.exitCode??0)}function t_(e=process.stdin,t=process.stderr){return!!(e.isTTY&&t.isTTY)}function tb(e,t,r){return{stopped:e.stopped,stop:()=>e.stop(),getState(){let n=e.getState();return{...n,projectPath:t,webDebuggerUrl:n.webDebuggerUrl??r()}}}}export{eo as DEV_SHELL_DEVICE_HELP_ITEMS,en as DEV_SHELL_HELP_ITEMS,E as dev_namespaceObject,ei as formatDeviceAppSetupStatus};