@doubao-dev/cli 0.0.31 → 0.0.33

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 (92) hide show
  1. package/dist/2168.js +16 -16
  2. package/dist/275.js +12 -14
  3. package/dist/2932.js +1 -1
  4. package/dist/318.js +1 -1
  5. package/dist/3974.js +22 -22
  6. package/dist/4525.js +1 -1
  7. package/dist/4880.js +1 -1
  8. package/dist/4931.js +2 -2
  9. package/dist/7410.js +1 -1
  10. package/dist/7417.js +204 -0
  11. package/dist/7417.js.LICENSE.txt +107 -0
  12. package/dist/7945.js +1 -0
  13. package/dist/8079.js +126 -0
  14. package/dist/{1560.js → 9091.js} +2 -2
  15. package/dist/9667.js +78 -0
  16. package/dist/{8891.js.LICENSE.txt → 9667.js.LICENSE.txt} +0 -108
  17. package/dist/@byted-doubao-apps/create.js +1 -1
  18. package/dist/@byted-doubao-apps/kit.js +1 -0
  19. package/dist/@byted-doubao-apps/login.js +1 -1
  20. package/dist/@byted-doubao-apps/login~1.js +1 -1
  21. package/dist/@byted-doubao-apps/template-empty/package.json +3 -3
  22. package/dist/@byted-doubao-apps/template-starter/package.json +3 -3
  23. package/dist/@byted-hdt/cli.js +1 -1
  24. package/dist/@inquirer/select.js +1 -1
  25. package/dist/app.js +1 -1
  26. package/dist/assets/web-sdk-debugger/__doubao_web_sdk_native_modules/applet-bridge-module-core.js +1 -1
  27. package/dist/assets/web-sdk-debugger/index.html +1 -1
  28. package/dist/assets/web-sdk-debugger/static/js/index.d1bb36b355.js +44 -0
  29. package/dist/assets/web-sdk-debugger/wsd/doubao-apps-api.template.js +0 -0
  30. package/dist/assets/web-sdk-debugger/wsd/doubao-apps-framework.template.js +0 -0
  31. package/dist/build.js +1 -1
  32. package/dist/build~1.js +6 -6
  33. package/dist/check.js +1 -1
  34. package/dist/demo-server.js +1 -1
  35. package/dist/dev-config.js +1 -1
  36. package/dist/dev-shell.js +1 -1
  37. package/dist/dev.js +10 -10
  38. package/dist/devtools.js +1 -1
  39. package/dist/gen-explore.js +1 -1
  40. package/dist/gen-trajectory.js +1 -1
  41. package/dist/init.js +4 -4
  42. package/dist/ink.js +1 -1
  43. package/dist/inquirer.js +1 -0
  44. package/dist/json-file.js +1 -1
  45. package/dist/kit-dev-options.js +1 -1
  46. package/dist/legacy-upload.js +1 -1
  47. package/dist/lepus.js +1 -1
  48. package/dist/ora.js +1 -1
  49. package/dist/project-layout.js +1 -1
  50. package/dist/prompt.js +1 -1
  51. package/dist/prompts.js +1 -1
  52. package/dist/report.js +1 -1
  53. package/dist/run-registry.js +1 -1
  54. package/dist/run.js +44 -44
  55. package/dist/sandbox.js +1 -1
  56. package/dist/scan.js +1 -1
  57. package/dist/sdk.js +63 -188
  58. package/dist/sdk~1.js +50 -50
  59. package/dist/server.js +1 -1
  60. package/dist/skill.js +1 -1
  61. package/dist/skills.js +1 -1
  62. package/dist/skills~1.js +2 -1
  63. package/dist/static/assets/web-view-proxy-bootstrap.js +1 -0
  64. package/dist/static/assets/web-view-proxy-page-client.js +1 -1
  65. package/dist/static/assets/web-view-proxy-service-worker.js +1 -1
  66. package/dist/status~1.js +1 -1
  67. package/dist/stop.js +1 -1
  68. package/dist/sync.js +1 -1
  69. package/dist/templates/README.md +0 -1
  70. package/dist/update.js +1 -1
  71. package/dist/workspace.js +1 -1
  72. package/dist/wrapper.js +1 -0
  73. package/dist/yaml.js +1 -1
  74. package/package.json +2 -2
  75. package/skills/dbx-eval/SKILL.md +15 -7
  76. package/skills/doubao-agentic-service-development/SKILL.md +1 -1
  77. package/skills/doubao-agentic-service-development/references/auth.md +1 -1
  78. package/skills/doubao-agentic-service-development/references/dev-debug.md +3 -3
  79. package/skills/doubao-agentic-service-development/references/frontend/components/map-canvas.md +1 -1
  80. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/07-/347/225/214/351/235/242.md +0 -6
  81. package/skills/doubao-agentic-service-development/references/frontend/guides/debugger-mcp.md +2 -2
  82. package/skills/doubao-agentic-service-development/references/frontend/widget-templates/props.md +1 -1
  83. package/skills/doubao-agentic-service-development/references/frontend-dev.md +3 -3
  84. package/skills/doubao-agentic-service-development/references/local-debug/overview.md +2 -2
  85. package/skills/doubao-agentic-service-development/references/overview.md +16 -31
  86. package/skills/doubao-agentic-service-development/scripts/workspace.py +6 -89
  87. package/dist/180.js +0 -1
  88. package/dist/8891.js +0 -280
  89. package/dist/9635.js +0 -1
  90. package/dist/assets/web-sdk-debugger/static/js/index.75528d6de7.js +0 -26
  91. package/dist/dbx.js +0 -3
  92. package/dist/skills~2.js +0 -2
@@ -1 +1 @@
1
- import"node:module";import{__webpack_require__ as e}from"../rslib-runtime.js";import"../9635.js";import{useEffect as t,ValidationError as i,makeTheme as r,useState as l,useKeypress as n,createPrompt as o,isUpKey as s,figures_dist as d,useMemo as a,isBackspaceKey as u,isEnterKey as c,usePagination as f,usePrefix as m,isNumberKey as p,Separator as b,useRef as h,isDownKey as y}from"../4931.js";let S=e("node:util"),_={icon:{cursor:d.pointer},style:{disabled:e=>(0,S.styleText)("dim",e),description:e=>(0,S.styleText)("cyan",e),keysHelpTip:e=>e.map(([e,t])=>`${(0,S.styleText)("bold",e)} ${(0,S.styleText)("dim",t)}`).join((0,S.styleText)("dim"," • "))},i18n:{disabledError:"This option is disabled and cannot be selected."},indexMode:"hidden"};function x(e){return!b.isSeparator(e)&&!e.disabled}function T(e){return!b.isSeparator(e)}let $=o((e,o)=>{let{loop:d=!0,pageSize:S=7}=e,$=r(_,e.theme),{keybindings:v}=$,[g,N]=l("idle"),C=m({status:g,theme:$}),w=h(),E=!v.includes("vim"),L=a(()=>e.choices.map(e=>{if(b.isSeparator(e))return e;if("object"!=typeof e||null===e||!("value"in e)){let t=String(e);return{value:e,name:t,short:t,disabled:!1}}let t=e.name??String(e.value),i={value:e.value,name:t,short:e.short??t,disabled:e.disabled??!1};return e.description&&(i.description=e.description),i}),[e.choices]),I=a(()=>{let e=L.findIndex(T),t=L.findLastIndex(T);if(-1===e)throw new i("[select prompt] No selectable choices. All choices are disabled.");return{first:e,last:t}},[L]),K=a(()=>"default"in e?L.findIndex(t=>x(t)&&t.value===e.default):-1,[e.default,L]),[j,A]=l(-1===K?I.first:K),H=L[j];if(null==H||b.isSeparator(H))throw Error("Active index does not point to a choice");let[M,B]=l();n((e,t)=>{if(clearTimeout(w.current),M&&B(void 0),c(e))H.disabled?B($.i18n.disabledError):(N("done"),o(H.value));else if(s(e,v)||y(e,v)){if(t.clearLine(0),d||s(e,v)&&j!==I.first||y(e,v)&&j!==I.last){let t=s(e,v)?-1:1,i=j;do i=(i+t+L.length)%L.length;while(!T(L[i]));A(i)}}else if(p(e)&&!Number.isNaN(Number(t.line))){let e=Number(t.line)-1,i=-1,r=L.findIndex(t=>!b.isSeparator(t)&&++i===e),l=L[r];null!=l&&x(l)&&A(r),w.current=setTimeout(()=>{t.clearLine(0)},700)}else if(u(e))t.clearLine(0);else if(E){let e=t.line.toLowerCase(),i=L.findIndex(t=>!b.isSeparator(t)&&!!x(t)&&t.name.toLowerCase().startsWith(e));-1!==i&&A(i),w.current=setTimeout(()=>{t.clearLine(0)},700)}}),t(()=>()=>{clearTimeout(w.current)},[]);let P=$.style.message(e.message,g),R=$.style.keysHelpTip([["↑↓","navigate"],["⏎","select"]]),U=0,k=f({items:L,active:j,renderItem({item:e,isActive:t,index:i}){if(b.isSeparator(e))return U++,` ${e.separator}`;let r=t?$.icon.cursor:" ",l="number"===$.indexMode?`${i+1-U}. `:"";if(e.disabled){let i="string"==typeof e.disabled?e.disabled:"(disabled)",r=t?$.icon.cursor:"-";return $.style.disabled(`${r} ${l}${e.name} ${i}`)}return(t?$.style.highlight:e=>e)(`${r} ${l}${e.name}`)},pageSize:S,loop:d});if("done"===g)return[C,P,$.style.answer(H.short)].filter(Boolean).join(" ");let{description:W}=H,q=[[C,P].filter(Boolean).join(" "),k," ",W?$.style.description(W):"",M?$.style.error(M):"",R].filter(Boolean).join("\n").trimEnd();return`${q}\u001b[?25l`});export{$ as dist};
1
+ import"node:module";import{__webpack_require__ as e}from"../rslib-runtime.js";import"../7945.js";import{useEffect as t,ValidationError as i,makeTheme as r,useState as l,useKeypress as n,createPrompt as o,isUpKey as s,figures_dist as d,useMemo as a,isBackspaceKey as u,isEnterKey as c,usePagination as f,usePrefix as m,isNumberKey as p,Separator as b,useRef as h,isDownKey as y}from"../4931.js";let S=e("node:util"),_={icon:{cursor:d.pointer},style:{disabled:e=>(0,S.styleText)("dim",e),description:e=>(0,S.styleText)("cyan",e),keysHelpTip:e=>e.map(([e,t])=>`${(0,S.styleText)("bold",e)} ${(0,S.styleText)("dim",t)}`).join((0,S.styleText)("dim"," • "))},i18n:{disabledError:"This option is disabled and cannot be selected."},indexMode:"hidden"};function x(e){return!b.isSeparator(e)&&!e.disabled}function T(e){return!b.isSeparator(e)}let $=o((e,o)=>{let{loop:d=!0,pageSize:S=7}=e,$=r(_,e.theme),{keybindings:v}=$,[g,N]=l("idle"),C=m({status:g,theme:$}),w=h(),E=!v.includes("vim"),L=a(()=>e.choices.map(e=>{if(b.isSeparator(e))return e;if("object"!=typeof e||null===e||!("value"in e)){let t=String(e);return{value:e,name:t,short:t,disabled:!1}}let t=e.name??String(e.value),i={value:e.value,name:t,short:e.short??t,disabled:e.disabled??!1};return e.description&&(i.description=e.description),i}),[e.choices]),I=a(()=>{let e=L.findIndex(T),t=L.findLastIndex(T);if(-1===e)throw new i("[select prompt] No selectable choices. All choices are disabled.");return{first:e,last:t}},[L]),K=a(()=>"default"in e?L.findIndex(t=>x(t)&&t.value===e.default):-1,[e.default,L]),[j,A]=l(-1===K?I.first:K),H=L[j];if(null==H||b.isSeparator(H))throw Error("Active index does not point to a choice");let[M,B]=l();n((e,t)=>{if(clearTimeout(w.current),M&&B(void 0),c(e))H.disabled?B($.i18n.disabledError):(N("done"),o(H.value));else if(s(e,v)||y(e,v)){if(t.clearLine(0),d||s(e,v)&&j!==I.first||y(e,v)&&j!==I.last){let t=s(e,v)?-1:1,i=j;do i=(i+t+L.length)%L.length;while(!T(L[i]));A(i)}}else if(p(e)&&!Number.isNaN(Number(t.line))){let e=Number(t.line)-1,i=-1,r=L.findIndex(t=>!b.isSeparator(t)&&++i===e),l=L[r];null!=l&&x(l)&&A(r),w.current=setTimeout(()=>{t.clearLine(0)},700)}else if(u(e))t.clearLine(0);else if(E){let e=t.line.toLowerCase(),i=L.findIndex(t=>!b.isSeparator(t)&&!!x(t)&&t.name.toLowerCase().startsWith(e));-1!==i&&A(i),w.current=setTimeout(()=>{t.clearLine(0)},700)}}),t(()=>()=>{clearTimeout(w.current)},[]);let P=$.style.message(e.message,g),R=$.style.keysHelpTip([["↑↓","navigate"],["⏎","select"]]),U=0,k=f({items:L,active:j,renderItem({item:e,isActive:t,index:i}){if(b.isSeparator(e))return U++,` ${e.separator}`;let r=t?$.icon.cursor:" ",l="number"===$.indexMode?`${i+1-U}. `:"";if(e.disabled){let i="string"==typeof e.disabled?e.disabled:"(disabled)",r=t?$.icon.cursor:"-";return $.style.disabled(`${r} ${l}${e.name} ${i}`)}return(t?$.style.highlight:e=>e)(`${r} ${l}${e.name}`)},pageSize:S,loop:d});if("done"===g)return[C,P,$.style.answer(H.short)].filter(Boolean).join(" ");let{description:W}=H,q=[[C,P].filter(Boolean).join(" "),k," ",W?$.style.description(W):"",M?$.style.error(M):"",R].filter(Boolean).join("\n").trimEnd();return`${q}\u001b[?25l`});export{$ as dist};
package/dist/app.js CHANGED
@@ -1 +1 @@
1
- import"node:module";import{__webpack_require__ as e}from"./rslib-runtime.js";import{authorizedFetch as t,getApiUrl as o,configuredFetch as a}from"./2168.js";let i="Doubao Agentic Service",n="doubao-agentic-service-development",r="doubao-agentic-service",p="doubao-agentic-service.zip";class s extends Error{operation;serviceCode;serviceMessage;httpStatus;logId;constructor(e){var t;super(void 0!==(t=e).httpStatus?`${t.operation} failed: HTTP ${t.httpStatus} ${t.httpStatusText??""}`.trim():void 0!==t.serviceCode?`${t.operation} failed: [${t.serviceCode}] ${t.serviceMessage??"unknown error"}`:`${t.operation} failed: ${t.serviceMessage??"unknown error"}`),this.name="GatewayResponseError",this.operation=e.operation,this.serviceCode=e.serviceCode,this.serviceMessage=e.serviceMessage,this.httpStatus=e.httpStatus,this.logId=e.logId}}async function d(e,t){let o=e.headers.get("x-tt-logid")??void 0;if(!e.ok)throw new s({operation:t,httpStatus:e.status,httpStatusText:e.statusText,logId:o});let a=await e.json();if("number"!=typeof a.code)throw new s({operation:t,serviceMessage:"invalid gateway response: missing numeric code",logId:a.log_id??o});if(0!==a.code)throw new s({operation:t,serviceCode:a.code,serviceMessage:a.message??"unknown error",logId:a.log_id??o});return a}let c=/^\d+\.\d+\.\d+$/;function u(e){let t=e?.trim();if(t){if(!c.test(t))throw Error(`--app-version-tag 的值 ${JSON.stringify(t)} 格式不正确。请使用三段由点分隔的纯数字,例如 1.2.3;不要添加 v 前缀或 -beta 等预发布后缀。`);return t}}async function l(e){return d(await t(o(`/app_developer/api/sandbox/app/get?sandbox_project_id=${encodeURIComponent(e)}`),{method:"GET"}),"Get sandbox app")}async function f(e,a,i="manifest"){return d(await t(o("/app_developer/api/yaml/verify"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({yaml:e,mode:a,yaml_type:i})}),"Verify YAML")}async function v(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e)}/app_versions`);return d(await t(a,{method:"GET"}),"List mini app versions")}async function m(a){let{readFile:i}=await import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:fs/promises"),22)}),n=await i(a.filePath),r=o(`/app_developer/api/apps/${encodeURIComponent(a.appKey)}/draft/upload?source_type=${a.sourceType}`);return d(await t(r,{method:"POST",headers:{"Content-Type":a.contentType??"application/zip","Content-Length":String(n.byteLength)},body:new Blob([n],{type:a.contentType??"application/zip"})}),"Upload agentic service version draft package")}async function g(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e.appKey)}/draft/source_code/upload/start`);return d(await t(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sha256:e.sha256})}),"Start agentic service version draft source code uploading")}async function h(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e.appKey)}/draft/source_code/upload/finish`);return d(await t(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({upload_token:e.uploadToken,size:e.size,sha256:e.sha256})}),"Finish agentic service version draft source code uploading")}async function y(t){let[{readFile:o},{createHash:i}]=await Promise.all([import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:fs/promises"),22)}),import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:crypto"),22)})]),n=await o(t.filePath),r=i("sha256").update(n).digest("hex"),p=(await g({appKey:t.appKey,sha256:r})).data;if(!p?.upload_url||!p.upload_token)throw Error("Start agentic service version draft source code uploading failed: missing upload session");let s=await a(p.upload_url,{method:"PUT",headers:p.upload_headers??{},body:new Blob([n])});if(!s.ok)throw Error(`Upload agentic service version draft source code to TOS failed: HTTP ${s.status} ${s.statusText}`);return h({appKey:t.appKey,uploadToken:p.upload_token,size:n.byteLength,sha256:r})}async function _(e,a={}){let i=u(a.appVersionTag),n=o(`/app_developer/api/apps/${encodeURIComponent(e)}/draft/submit`);return d(await t(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_config_version:process.env.PROJECT_CONFIG_VERSION,version_type:a.release?"release":void 0,app_version_tag:i,dbx_version:"miniapp-version-v2"})}),"Submit agentic service version draft")}async function T(e,a){let i=o(`/app_developer/api/apps/${encodeURIComponent(e)}/app_versions/${encodeURIComponent(a)}/artifact`);return d(await t(i,{method:"GET"}),"Get agentic service version artifact")}export{i as AGENTIC_SERVICE_DISPLAY_NAME,n as AGENTIC_SERVICE_SKILL_NAME,r as DEFAULT_FRONTEND_DIRECTORY,p as FRONTEND_ARCHIVE_FILENAME,s as GatewayResponseError,T as getMiniAppVersionArtifact,l as getSandboxApp,v as listMiniAppVersions,u as normalizeAppVersionTag,d as readGatewayJson,_ as submitMiniAppVersionDraft,m as uploadMiniAppVersionDraftPackage,y as uploadMiniAppVersionDraftSourceCode,f as verifyYAML};
1
+ import"node:module";import{__webpack_require__ as e}from"./rslib-runtime.js";import{authorizedFetch as t,getApiUrl as o,configuredFetch as a}from"./2168.js";let i="Doubao Agentic Service",n="doubao-agentic-service-development",r="doubao-agentic-service",s="doubao-agentic-service.zip";class p extends Error{operation;serviceCode;serviceMessage;httpStatus;logId;constructor(e){var t;super(void 0!==(t=e).httpStatus?`${t.operation} failed: HTTP ${t.httpStatus} ${t.httpStatusText??""}`.trim():void 0!==t.serviceCode?`${t.operation} failed: [${t.serviceCode}] ${t.serviceMessage??"unknown error"}`:`${t.operation} failed: ${t.serviceMessage??"unknown error"}`),this.name="GatewayResponseError",this.operation=e.operation,this.serviceCode=e.serviceCode,this.serviceMessage=e.serviceMessage,this.httpStatus=e.httpStatus,this.logId=e.logId}}async function d(e,t){let o=e.headers.get("x-tt-logid")??void 0;if(!e.ok)throw new p({operation:t,httpStatus:e.status,httpStatusText:e.statusText,logId:o});let a=await e.json();if("number"!=typeof a.code)throw new p({operation:t,serviceMessage:"invalid gateway response: missing numeric code",logId:a.log_id??o});if(0!==a.code)throw new p({operation:t,serviceCode:a.code,serviceMessage:a.message??"unknown error",logId:a.log_id??o});return a}let c=/^\d+\.\d+\.\d+$/;function u(e){let t=e?.trim();if(t){if(!c.test(t))throw Error(`--app-version-tag 的值 ${JSON.stringify(t)} 格式不正确。请使用三段由点分隔的纯数字,例如 1.2.3;不要添加 v 前缀或 -beta 等预发布后缀。`);return t}}async function l(e){return d(await t(o(`/app_developer/api/sandbox/app/get?sandbox_project_id=${encodeURIComponent(e)}`),{method:"GET"}),"Get sandbox app")}async function v(e,a,i="manifest"){return d(await t(o("/app_developer/api/yaml/verify"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({yaml:e,mode:a,yaml_type:i})}),"Verify YAML")}async function f(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e)}/app_versions`);return d(await t(a,{method:"GET"}),"List mini app versions")}async function g(a){let{readFile:i}=await import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:fs/promises"),22)}),n=await i(a.filePath),r=o(`/app_developer/api/apps/${encodeURIComponent(a.appKey)}/draft/upload?source_type=${a.sourceType}`);return d(await t(r,{method:"POST",headers:{"Content-Type":a.contentType??"application/zip","Content-Length":String(n.byteLength)},body:new Blob([n],{type:a.contentType??"application/zip"})}),"Upload agentic service version draft package")}async function m(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e.appKey)}/draft/source_code/upload/start`);return d(await t(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sha256:e.sha256})}),"Start agentic service version draft source code uploading")}async function h(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e.appKey)}/draft/source_code/upload/finish`);return d(await t(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({upload_token:e.uploadToken,size:e.size,sha256:e.sha256})}),"Finish agentic service version draft source code uploading")}async function y(t){let[{readFile:o},{createHash:i}]=await Promise.all([import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:fs/promises"),22)}),import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:crypto"),22)})]),n=await o(t.filePath),r=i("sha256").update(n).digest("hex"),s=(await m({appKey:t.appKey,sha256:r})).data;if(!s?.upload_url||!s.upload_token)throw Error("Start agentic service version draft source code uploading failed: missing upload session");let p=await a(s.upload_url,{method:"PUT",headers:s.upload_headers??{},body:new Blob([n])});if(!p.ok)throw Error(`Upload agentic service version draft source code to TOS failed: HTTP ${p.status} ${p.statusText}`);return h({appKey:t.appKey,uploadToken:s.upload_token,size:n.byteLength,sha256:r})}async function _(e,a={}){let i=u(a.appVersionTag),n=o(`/app_developer/api/apps/${encodeURIComponent(e)}/draft/submit`);return d(await t(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_config_version:process.env.PROJECT_CONFIG_VERSION,version_type:a.release?"release":void 0,app_version_tag:i,dbx_version:"miniapp-version-v2",...a.variables?.length?{variables:a.variables}:{}})}),"Submit agentic service version draft")}async function T(e,a){let i=o(`/app_developer/api/apps/${encodeURIComponent(e)}/app_versions/${encodeURIComponent(a)}/artifact`);return d(await t(i,{method:"GET"}),"Get agentic service version artifact")}export{i as AGENTIC_SERVICE_DISPLAY_NAME,n as AGENTIC_SERVICE_SKILL_NAME,r as DEFAULT_FRONTEND_DIRECTORY,s as FRONTEND_ARCHIVE_FILENAME,p as GatewayResponseError,T as getMiniAppVersionArtifact,l as getSandboxApp,f as listMiniAppVersions,u as normalizeAppVersionTag,d as readGatewayJson,_ as submitMiniAppVersionDraft,g as uploadMiniAppVersionDraftPackage,y as uploadMiniAppVersionDraftSourceCode,v as verifyYAML};
@@ -1 +1 @@
1
- let runtimeBridgeController;function utils_isRecord(e){return"object"==typeof e&&null!==e}function _define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let RESULT_CODE_SUCCESS=1,RESULT_CODE_FAILED=0;class BridgeAPIError extends Error{constructor(e,t,r=e){super(e),_define_property(this,"errNo",void 0),_define_property(this,"errMsg",void 0),this.errNo=t,this.errMsg=r,Object.setPrototypeOf(this,new.target.prototype),this.name="BridgeAPIError"}}function isBridgeCallMessage(e){return utils_isRecord(e)&&"call"===e.type&&"string"==typeof e.name&&"number"==typeof e.callbackId}function bridge_api_createSuccessCallback(e,t){return{type:"callback",callbackId:e.callbackId,params:{code:1,data:t}}}function createFailedCallback(e,t,r=-1,n=t){return{type:"callback",callbackId:e.callbackId,params:{code:0,msg:t,errNo:r,errMsg:n}}}function getErrorMessage(e){return e instanceof Error?e.message:String(e)}function createFailedCallbackFromError(e,t){return t instanceof BridgeAPIError?createFailedCallback(e,t.message,t.errNo,t.errMsg):createFailedCallback(e,getErrorMessage(t))}function dispatchBridgeAPI(e,t,r={}){if(!isBridgeCallMessage(e))return;let n=t[e.name];if(!n)return createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`);try{let t=n(e,r);if(t instanceof Promise)return t.catch(t=>createFailedCallbackFromError(e,t));return null!=t?t:createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`)}catch(t){return createFailedCallbackFromError(e,t)}}function setRuntimeBridgeController(e){return runtimeBridgeController=e,()=>{runtimeBridgeController===e&&(runtimeBridgeController=void 0)}}function getCurrentPageStack(){var e;return null!=(e=null==runtimeBridgeController?void 0:runtimeBridgeController.getCurrentPages())?e:[]}function page_stack_getRuntimePackageInfo(){return null==runtimeBridgeController?void 0:runtimeBridgeController.getPackageInfo()}function navigateRuntimeTo(e){return null==runtimeBridgeController||runtimeBridgeController.navigateTo(e),!!runtimeBridgeController}function redirectRuntimeTo(e){return null==runtimeBridgeController||runtimeBridgeController.redirectTo(e),!!runtimeBridgeController}function reLaunchRuntime(e){return null==runtimeBridgeController||runtimeBridgeController.reLaunch(e),!!runtimeBridgeController}function navigateRuntimeBack(e){return null==runtimeBridgeController||runtimeBridgeController.navigateBack(e),!!runtimeBridgeController}function exitRuntimeApp(){return null==runtimeBridgeController||runtimeBridgeController.exitApp(),!!runtimeBridgeController}function closeRuntimePage(e){return null==runtimeBridgeController||runtimeBridgeController.close(e),!!runtimeBridgeController}let MENU_BUTTON_WIDTH=84,MENU_BUTTON_HEIGHT=36,MENU_BUTTON_RIGHT=12,MENU_BUTTON_TOP=4;function getMenuButtonGlobalProps(e){var t;return null!=e?e:null==(t=globalThis.lynx)?void 0:t.__globalProps}function menu_button_getMenuButtonBoundingClientRect(e){let{screenWidth:t,statusBarHeight:r}=getMenuButtonGlobalProps(e),n=Math.round(r)+4,i=Math.round(t)-12;return{bottom:n+36,height:36,left:i-84,right:i,top:n,width:84}}function registry_define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function normalizeRegistration(e){var t;return"function"==typeof e?{handler:e,canIUse:!0}:{...e,canIUse:null==(t=e.canIUse)||t}}class BridgeAPIRegistry{register(e,t,r={}){if(!r.override&&this.registry.has(e))throw Error(`Bridge API handler ${e} is already registered`);let n=this.registry.get(e),i=normalizeRegistration(t);return this.registry.set(e,i),this.handlers[e]=i.handler,()=>{if(this.registry.get(e)===i){if(n){this.registry.set(e,n),this.handlers[e]=n.handler;return}this.registry.delete(e),delete this.handlers[e]}}}registerMany(e,t={}){let r=[];try{for(let[n,i]of Object.entries(e))r.push(this.register(n,i,t))}catch(e){for(let e of r.reverse())e();throw e}return()=>{for(let e of r.reverse())e()}}get(e){var t;return null==(t=this.registry.get(e))?void 0:t.handler}getSyncResults(e){let t={};for(let[r,n]of this.registry)n.syncResult&&this.canIUse(r,e)&&(t[r]="function"==typeof n.syncResult?n.syncResult({...e,apiRegistry:this}):n.syncResult);return t}registerEventSource(e,t,r={}){var n;if(!r.override&&this.eventSources.has(e))throw Error(`Bridge event source ${e} is already registered`);let i=this.eventSources.get(e),o="function"==typeof t?{source:t}:t;return this.stopEventSource(e),this.eventSources.set(e,o),(null!=(n=this.eventSourceRetainCounts.get(e))?n:0)>0&&this.startEventSource(e,o),()=>{if(this.eventSources.get(e)===o){if(this.stopEventSource(e),i){var t;this.eventSources.set(e,i),(null!=(t=this.eventSourceRetainCounts.get(e))?t:0)>0&&this.startEventSource(e,i);return}this.eventSources.delete(e)}}}registerEventSources(e,t={}){let r=[];try{for(let[n,i]of Object.entries(e))r.push(this.registerEventSource(n,i,t))}catch(e){for(let e of r.reverse())e();throw e}return()=>{for(let e of r.reverse())e()}}canIUse(e,t){var r;let n=this.registry.get(e);if(n)return"function"==typeof n.canIUse?n.canIUse({...t,apiRegistry:this}):n.canIUse;let i=this.eventSources.get(e);return!!i&&("function"==typeof i.canIUse?i.canIUse({...t,apiRegistry:this}):null==(r=i.canIUse)||r)}getSupportedNames(e){return[...new Set([...this.registry.keys(),...this.eventSources.keys()])].filter(t=>this.canIUse(t,e))}emitEvent(e,t){let r=!1;for(let n of this.eventControllers)r=n.emit(e,t)||r;return r}createEventController(e){return new BridgeEventController(this,e)}fork(){let e=new BridgeAPIRegistry(this.getRegistrations());return e.registerEventSources(this.getEventSources()),e}getRegistrations(){return Object.fromEntries(this.registry)}getEventSources(){return Object.fromEntries(this.eventSources)}attachEventController(e){return this.eventControllers.add(e),()=>{this.eventControllers.delete(e)}}retainEventSource(e){var t;let r=null!=(t=this.eventSourceRetainCounts.get(e))?t:0;if(this.eventSourceRetainCounts.set(e,r+1),r>0)return;let n=this.eventSources.get(e);n&&this.startEventSource(e,n)}releaseEventSource(e){var t;let r=null!=(t=this.eventSourceRetainCounts.get(e))?t:0;if(r<=1){this.eventSourceRetainCounts.delete(e),this.stopEventSource(e);return}this.eventSourceRetainCounts.set(e,r-1)}startEventSource(e,t){this.stopEventSource(e);let r=t.source(t=>{this.emitEvent(e,t)});"function"==typeof r&&this.eventSourceCleanups.set(e,r)}stopEventSource(e){var t;null==(t=this.eventSourceCleanups.get(e))||t(),this.eventSourceCleanups.delete(e)}constructor(e){registry_define_property(this,"registry",new Map),registry_define_property(this,"eventSources",new Map),registry_define_property(this,"eventSourceCleanups",new Map),registry_define_property(this,"eventSourceRetainCounts",new Map),registry_define_property(this,"eventControllers",new Set),registry_define_property(this,"handlers",{}),e&&this.registerMany(e)}}class BridgeEventController{subscribe(e){this.subscribedEventNames.has(e)||(this.subscribedEventNames.add(e),this.apiRegistry.retainEventSource(e))}unsubscribe(e){this.subscribedEventNames.delete(e)&&this.apiRegistry.releaseEventSource(e)}emit(e,t){return!!this.subscribedEventNames.has(e)&&(this.dispatch(e,t),!0)}destroy(){for(let e of this.subscribedEventNames)this.apiRegistry.releaseEventSource(e);this.subscribedEventNames.clear(),this.cleanupRegistry()}constructor(e,t){registry_define_property(this,"apiRegistry",void 0),registry_define_property(this,"dispatch",void 0),registry_define_property(this,"cleanupRegistry",void 0),registry_define_property(this,"subscribedEventNames",void 0),this.apiRegistry=e,this.dispatch=t,this.subscribedEventNames=new Set,this.cleanupRegistry=this.apiRegistry.attachEventController(this)}}let registry_defaultBridgeAPIRegistry=new BridgeAPIRegistry,bridgeAPIHandlers=registry_defaultBridgeAPIRegistry.handlers;function registerBridgeAPIHandler(e,t,r={}){return registry_defaultBridgeAPIRegistry.register(e,t,r)}function registerBridgeAPIHandlers(e,t={}){return registry_defaultBridgeAPIRegistry.registerMany(e,t)}function canUseRegisteredBridgeAPI(e,t){return registry_defaultBridgeAPIRegistry.canIUse(e,t)}function getRegisteredBridgeAPINames(e){return registry_defaultBridgeAPIRegistry.getSupportedNames(e)}function registerBridgeEventSource(e,t,r={}){return registry_defaultBridgeAPIRegistry.registerEventSource(e,t,r)}function registerBridgeEventSources(e,t={}){return registry_defaultBridgeAPIRegistry.registerEventSources(e,t)}function createBridgeAPIRegistry(e){return new BridgeAPIRegistry(e)}function system_getSupportedWebBridgeAPINames(e=registry_defaultBridgeAPIRegistry){return e.getSupportedNames({apiRegistry:e})}function canUseWebBridgeAPI(e,t=defaultBridgeAPIRegistry){return t.canIUse(e,{apiRegistry:t})}function getLanguage(){return(navigator.language||"zh-CN").replace("-","_")}function getTheme(){var e,t,r;return(null==(t=(r=window).matchMedia)||null==(e=t.call(r,"(prefers-color-scheme: dark)"))?void 0:e.matches)?"dark":"light"}function getSDKVersion(){return"u"<typeof DoubaoAppsSDKVersion?void 0:DoubaoAppsSDKVersion}function getUserAgentData(){return navigator.userAgentData}function getBrowserBrand(){var e,t;let r=null==(t=getUserAgentData())?void 0:t.brands,n=null==r?void 0:r.find(({brand:e})=>!/not.a.brand/i.test(e));if(null==n?void 0:n.brand)return n.brand;let i=null!=(e=navigator.userAgent)?e:"";return/edg\//i.test(i)?"Microsoft Edge":/chrome|crios/i.test(i)?"Chrome":/firefox|fxios/i.test(i)?"Firefox":/safari/i.test(i)?"Safari":"Browser"}function getBrowserVersion(){var e,t,r,n;let i=null==(r=getUserAgentData())?void 0:r.brands,o=null==i?void 0:i.find(({brand:e})=>!/not.a.brand/i.test(e));if(null==o?void 0:o.version)return o.version;let a=null!=(e=navigator.userAgent)?e:"";return null!=(t=null==(n=/(?:edg|chrome|crios|firefox|fxios|version)\/([\d.]+)/i.exec(a))?void 0:n[1])?t:void 0}function getPlatformInfo(){var e,t,r,n,i;let o=null!=(e=navigator.userAgent)?e:"",a=null!=(t=navigator.platform)?t:"",s=null!=(r=null==(i=getUserAgentData())?void 0:i.platform)?r:"",l=`${s} ${a} ${o}`,u=null!=(n=navigator.maxTouchPoints)?n:0;return/android/i.test(l)?{platform:"android",brand:"Android"}:/iphone/i.test(l)?{platform:"ios",brand:"iPhone"}:/ipad/i.test(l)||/mac/i.test(a)&&u>1?{platform:"ios",brand:"iPad"}:/mac/i.test(l)?{platform:"mac",brand:"Mac"}:/win/i.test(l)?{platform:"windows",brand:"Windows"}:/linux/i.test(l)?{platform:"linux",brand:"Linux"}:{platform:"web",brand:"Browser"}}function getPackageInfo(e=getRuntimePackageInfo()){var t,r;return{appId:null!=(t=null==e?void 0:e.appId)?t:"",name:null!=(r=null==e?void 0:e.name)?r:"",iconSrc:null==e?void 0:e.iconSrc}}function getViewportWidth(){var e,t,r;return Math.round(null!=(e=null!=(t=null==(r=window.visualViewport)?void 0:r.width)?t:window.innerWidth)?e:0)}function getViewportHeight(){var e,t,r;return Math.round(null!=(e=null!=(t=null==(r=window.visualViewport)?void 0:r.height)?t:window.innerHeight)?e:0)}function getWindowInfo(){var e,t,r,n,i,o,a;let s=getViewportWidth(),l=getViewportHeight(),u=null!=(e=window.devicePixelRatio)?e:1,g=Math.round(null!=(t=null==(i=window.screen)?void 0:i.width)?t:s),c=Math.round(null!=(r=null==(o=window.screen)?void 0:o.height)?r:l),d=Math.round(null!=(n=null==(a=window.visualViewport)?void 0:a.offsetTop)?n:0);return{pixelRatio:u,screenWidth:g,screenHeight:c,windowWidth:s,windowHeight:l,statusBarHeight:d,safeArea:{left:0,right:s,top:d,bottom:l,width:s,height:Math.max(0,l-d)},screenTop:d}}function getPlatform(){return getPlatformInfo().platform}function getSystemVersion(){var e,t,r,n,i,o;let a=null!=(e=navigator.userAgent)?e:"",s=getPlatform();return"android"===s?null==(t=/android\s+([\d.]+)/i.exec(a))?void 0:t[1]:"ios"===s?null==(n=/(?:iphone os|cpu os)\s+([\d_]+)/i.exec(a))||null==(r=n[1])?void 0:r.replace(/_/g,"."):"mac"===s?null==(o=/mac os x\s+([\d_]+)/i.exec(a))||null==(i=o[1])?void 0:i.replace(/_/g,"."):void 0}function getSystemNameAndVersion(){let e=getPlatform(),t=getSystemVersion();if("android"===e)return t?`Android ${t}`:"Android";if("ios"===e)return t?`iOS ${t}`:"iOS";if("mac"===e)return t?`macOS ${t}`:"macOS";if("windows"===e)return"Windows";if("linux"===e)return"Linux";let r=getBrowserVersion(),n=getBrowserBrand();return r?`${n} ${r}`:"Web"}function getDeviceModel(){var e,t,r;let n=null!=(e=navigator.userAgent)?e:"",i=getPlatform();return"android"===i?(null==(r=/android\s+[\d.]+;\s*([^;)]+)/i.exec(n))||null==(t=r[1])?void 0:t.trim())||"Android":"ios"===i?getPlatformInfo().brand:"mac"===i||"windows"===i||"linux"===i?navigator.platform||getPlatformInfo().brand:getBrowserBrand()}function getMemorySize(){let e=navigator.deviceMemory;return"number"==typeof e&&Number.isFinite(e)?String(Math.round(1024*e)):""}function getCpuType(){return navigator.platform||getPlatform()}function getDefaultNetworkStatus(){return{isConnected:!0,networkType:"unknown",hasSystemProxy:!1,weakNet:!1}}function getDeviceInfo(){let e=getPlatformInfo(),t=getCpuType();return{abi:t,deviceAbi:t,benchmarkLevel:-1,brand:e.brand,model:getDeviceModel(),system:getSystemNameAndVersion(),platform:e.platform,cpuType:t,memorySize:getMemorySize()}}function getWebSystemGlobalProps(){let e=getDeviceInfo(),t=getWindowInfo(),r=t.windowWidth>t.windowHeight;return{os:e.platform,osVersion:getSystemVersion(),deviceBrand:e.brand,deviceModel:e.model,deviceType:e.model,channel:"debug",screenOrientation:+!!r,isLandscape:+!!r,abi:e.abi}}function getSystemInfo(){let e=getWindowInfo(),t=getDeviceInfo();return{...e,brand:t.brand,model:t.model,language:getLanguage(),version:getBrowserVersion(),system:t.system,platform:t.platform,SDKVersion:getSDKVersion(),theme:getTheme(),benchmarkLevel:-1,enableDebug:!0,deviceOrientation:e.windowWidth>e.windowHeight?"landscape":"portrait",abi:t.abi}}function getSystemSetting(){let e=getWindowInfo();return{bluetoothEnabled:!1,locationEnabled:!0,wifiEnabled:getDefaultNetworkStatus().isConnected,deviceOrientation:e.windowWidth>e.windowHeight?"landscape":"portrait"}}function getNetworkType(){var e,t;let r=getDefaultNetworkStatus();return{networkType:r.networkType,signalStrength:r.signalStrength,hasSystemProxy:null!=(e=r.hasSystemProxy)&&e,weakNet:null!=(t=r.weakNet)&&t}}function getAppBaseInfo(e=getRuntimePackageInfo()){return{SDKVersion:getSDKVersion(),enableDebug:!0,host:{appId:getPackageInfo(e).appId},language:getLanguage(),version:getBrowserVersion(),theme:getTheme()}}function getAccountInfo(e=getRuntimePackageInfo()){var t;return{miniProgram:{appId:getPackageInfo(e).appId,envVersion:"develop",version:null!=(t=null==e?void 0:e.versionName)?t:""}}}function system_getSystemSyncBridgeAPIResults(e,t,r){return(null!=t?t:defaultBridgeAPIRegistry).getSyncResults({apiRegistry:t,globalProps:r,packageInfo:e})}function getSyncPackageInfo(e){return null==e?void 0:e.packageInfo}let systemHandlers=null,storage_core_WEB_STORAGE_PREFIX="doubao-web-sdk:storage:",WEB_STORAGE_LIMIT_KB=10240,WEB_STORAGE_MAX_KEY_LENGTH=1024,WEB_STORAGE_MAX_ITEM_SIZE_BYTES=1048576,WEB_STORAGE_LIMIT_BYTES=0xa00000,WEB_STORAGE_TOTAL_SIZE_EXCEEDED_ERROR=1600002;function storage_core_getWebStorageKey(e){return`${storage_core_WEB_STORAGE_PREFIX}${e}`}function validateWebStorageKey(e){if("string"!=typeof e)throw Error("key must be a string");if(0===e.length)throw Error("key must not be empty");if(e.length>1024)throw Error("key length must be less than or equal to 1024");return e}function validateWebStorageData(e){if(getWebStorageDataSize(e)>1048576)throw Error("data size must be less than or equal to 1048576 bytes")}function getWebStorageDataSize(e){return new TextEncoder().encode(e).byteLength}function getWebStorageSnapshotSize(e){return Object.values(e).reduce((e,t)=>e+getWebStorageDataSize(t),0)}function validateWebStorageTotalSize(e){if(e>WEB_STORAGE_LIMIT_BYTES)throw new BridgeAPIError("total storage size exceeded",1600002)}function validateWebStorageWrite(e,t,r){let n=validateWebStorageKey(t);validateWebStorageData(r);let i=Object.prototype.hasOwnProperty.call(e,n)?e[n]:void 0;return validateWebStorageTotalSize(getWebStorageSnapshotSize(e)-(void 0===i?0:getWebStorageDataSize(i))+getWebStorageDataSize(r)),n}function getWebStorageItemFromSnapshot(e,t){return e[validateWebStorageKey(t)]}function storage_core_validateWebStorageSnapshot(e){for(let[t,r]of Object.entries(e))validateWebStorageKey(t),validateWebStorageData(r);validateWebStorageTotalSize(getWebStorageSnapshotSize(e))}function storage_core_getWebStorageSnapshotFromStorage(e){let t={};for(let n=0;n<e.length;n+=1){let i=e.key(n);if(null==i?void 0:i.startsWith(storage_core_WEB_STORAGE_PREFIX)){var r;t[i.slice(storage_core_WEB_STORAGE_PREFIX.length)]=null!=(r=e.getItem(i))?r:""}}return t}function getWebStorageInfoFromSnapshot(e){return{keys:Object.keys(e),currentSize:Math.ceil(getWebStorageSnapshotSize(e)/1024),limitSize:10240}}let WEB_SYNC_BRIDGE_GLOBAL_PROP="__DOUBAO_WEB_SDK_SYNC_BRIDGE__",WEB_SYNC_BRIDGE_PERSIST_API="doubao.__webSyncBridgePersist",WEB_FILE_SYSTEM_STORAGE_KEY="doubao-web-sdk:file-system",WEB_SYNC_BRIDGE_URL_PARAM="__doubao_sync_bridge";function getStringProperty(e,t){if(!utils_isRecord(e))return;let r=e[t];return"string"==typeof r&&r.length>0?r:void 0}function getPackageInfoFromGlobalProps(e){if(!utils_isRecord(e)||!utils_isRecord(e.packageInfo))return;let{appId:t,iconSrc:r,name:n,versionName:i}=e.packageInfo;return{appId:"string"==typeof t?t:void 0,iconSrc:"string"==typeof r?r:void 0,name:"string"==typeof n?n:void 0,versionName:"string"==typeof i?i:void 0}}function getWebFileSystemNamespace(e){var t,r,n,i;let o=getPackageInfoFromGlobalProps(e),a=null!=(t=null!=(r=null==o?void 0:o.appId)?r:getStringProperty(e,"appName"))?t:"unknown-app",s=null!=(n=null!=(i=getStringProperty(e,"userId"))?i:getStringProperty(e,"userID"))?n:"anonymous";return`${encodeURIComponent(a)}:${encodeURIComponent(s)}`}function createEmptyWebFileSystemSnapshot(){let e=Date.now();return{entries:{"/":{type:"directory",createTime:e,lastModifiedTime:e},"/temp":{type:"directory",createTime:e,lastModifiedTime:e},"/user":{type:"directory",createTime:e,lastModifiedTime:e}}}}function getStorageSnapshot(){return getWebStorageSnapshotFromStorage(localStorage)}function getWebFileSystemStorageKey(e){return`doubao-web-sdk:file-system:${encodeURIComponent(e)}`}function getFileSystemSnapshot(e){let t=localStorage.getItem(getWebFileSystemStorageKey(e));if(!t)return createEmptyWebFileSystemSnapshot();try{let e=JSON.parse(t);if(isRecord(e)&&isRecord(e.entries))return e}catch(e){}return createEmptyWebFileSystemSnapshot()}function createWebSyncBridgeGlobalValue(e,t,r=getWebFileSystemNamespace(e)){return{fileSystemNamespace:r,fileSystemSnapshot:getFileSystemSnapshot(r),apiResults:getSystemSyncBridgeAPIResults(getPackageInfoFromGlobalProps(e),t,e),storageSnapshot:getStorageSnapshot(),supportedAPIs:getSupportedWebBridgeAPINames(t)}}function isWebSyncBridgeGlobalValue(e){return utils_isRecord(e)&&"string"==typeof e.fileSystemNamespace&&utils_isRecord(e.fileSystemSnapshot)&&utils_isRecord(e.apiResults)&&utils_isRecord(e.storageSnapshot)&&Array.isArray(e.supportedAPIs)}function addWebSyncBridgeDataToUrl(e,t){let r=new URL(e),n=new URLSearchParams(r.hash.slice(1));return n.set(WEB_SYNC_BRIDGE_URL_PARAM,JSON.stringify({...t,fileSystemSnapshot:createEmptyWebFileSystemSnapshot()})),r.hash=n.toString(),r.href}function getWebSyncBridgeDataFromUrl(e){try{let t=new URLSearchParams(new URL(e).hash.slice(1)).get(WEB_SYNC_BRIDGE_URL_PARAM);if(!t)return;let r=JSON.parse(t);return isWebSyncBridgeGlobalValue(r)?r:void 0}catch(e){return}}function persistWebStorageSnapshot(e){let t=[];validateWebStorageSnapshot(e);for(let e=0;e<localStorage.length;e+=1){let r=localStorage.key(e);(null==r?void 0:r.startsWith(WEB_STORAGE_PREFIX))&&t.push(r)}for(let e of t)localStorage.removeItem(e);for(let[t,r]of Object.entries(e))localStorage.setItem(getWebStorageKey(t),r)}function persistWebFileSystemSnapshot(e,t){localStorage.setItem(getWebFileSystemStorageKey(e),JSON.stringify(t))}function sync_file_system_getFileSystemSnapshot(e){utils_isRecord(e.fileSystemSnapshot)||(e.fileSystemSnapshot={entries:{}}),utils_isRecord(e.fileSystemSnapshot.entries)||(e.fileSystemSnapshot.entries={});let t=Date.now();for(let n of["/","/temp","/user"]){var r;(null==(r=e.fileSystemSnapshot.entries[n])?void 0:r.type)!=="directory"&&(e.fileSystemSnapshot.entries[n]={type:"directory",createTime:t,lastModifiedTime:t})}return e.fileSystemSnapshot}function getStringParam(e,t){let r=e[t];if("string"!=typeof r)throw Error(`${t} must be a string`);return r}function getOptionalStringParam(e,t){let r=e[t];return"string"==typeof r?r:void 0}function decodePathSegment(e){let t;if(0===e.length||e.includes("?")||e.includes("#")||/%(?![0-9a-f]{2})/i.test(e))throw Error("invalid applet file path");try{t=decodeURIComponent(e)}catch(e){throw Error("invalid applet file path")}if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw Error("invalid applet file path");return t}function normalizePath(e){let t=/^appletfile:\/\/(user|temp)(?:\/(.*))?$/.exec(e);if(!t)throw Error("path must use appletfile://user or appletfile://temp");let r=t[1],n=t[2];if(void 0===n||0===n.length)return`/${r}`;let i=n.split("/").map(decodePathSegment);return`/${r}/${i.join("/")}`}function getParentPath(e){let t=normalizePath(e);if("/temp"===t||"/user"===t)return"";let r=t.lastIndexOf("/");return t.slice(0,r)}function getBaseName(e){let t=normalizePath(e);return"/temp"===t||"/user"===t?"":t.slice(t.lastIndexOf("/")+1)}function encodePathSegment(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function toAppletFilePath(e){let t=e.split("/").filter(Boolean),r=t.shift();if("temp"!==r&&"user"!==r)throw Error(`invalid applet file path: ${e}`);let n=t.map(encodePathSegment).join("/");return n.length>0?`appletfile://${r}/${n}`:`appletfile://${r}`}function getEntry(e,t){return e.entries[normalizePath(t)]}function assertFile(e,t){let r=normalizePath(t),n=e.entries[r];if(!n||"file"!==n.type)throw Error(`file not found: ${r}`);return n}function assertDirectory(e,t){let r=normalizePath(t),n=e.entries[r];if(!n||"directory"!==n.type)throw Error(`directory not found: ${r}`);return n}function assertParentDirectory(e,t){var r;let n=getParentPath(t);if(!n)throw Error(`invalid parent directory: ${t}`);if((null==(r=e.entries[n])?void 0:r.type)!=="directory")throw Error(`directory not found: ${n}`)}function createParentDirectories(e,t){let r=getParentPath(t);if(!r)throw Error(`invalid parent directory: ${t}`);let n=Date.now(),i="";for(let t of r.split("/").filter(Boolean)){i+=`/${t}`;let r=e.entries[i];if((null==r?void 0:r.type)==="file")throw Error(`path is not a directory: ${i}`);r||(e.entries[i]={type:"directory",createTime:n,lastModifiedTime:n})}}function bytesToBase64(e){let t="";for(let r=0;r<e.length;r+=1)t+=String.fromCharCode(e[r]);return btoa(t)}function base64ToBytes(e){let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e+=1)r[e]=t.charCodeAt(e);return r}function encodeFileData(e,t){let r="string"==typeof e?e:String(null!=e?e:"");return"base64"===t?base64ToBytes(r):new TextEncoder().encode(r)}function decodeFileData(e,t){return"utf-8"===t?new TextDecoder().decode(base64ToBytes(e)):e}function getChildNames(e,t){let r=normalizePath(t),n="/"===r?"/":`${r}/`,i=new Set;for(let t of Object.keys(e.entries)){if(t===r||!t.startsWith(n))continue;let e=t.slice(n.length).split("/")[0];e&&i.add(e)}return[...i]}function writeFileEntry(e,t,r){var n;let i=normalizePath(t);createParentDirectories(e,t);let o=Date.now(),a=e.entries[i];if((null==a?void 0:a.type)==="directory")throw Error(`path is a directory: ${i}`);e.entries[i]={type:"file",data:bytesToBase64(r),createTime:null!=(n=null==a?void 0:a.createTime)?n:o,lastModifiedTime:o}}function readFile(e,t){return{data:decodeFileData(assertFile(sync_file_system_getFileSystemSnapshot(e),getStringParam(t,"filePath")).data,getOptionalStringParam(t,"encoding"))}}function writeFile(e,t,r){return writeFileEntry(sync_file_system_getFileSystemSnapshot(e),getStringParam(t,"filePath"),encodeFileData(t.data,getOptionalStringParam(t,"encoding"))),r(),{}}function appendFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=normalizePath(i),a=n.entries[o];if((null==a?void 0:a.type)==="directory")throw Error(`path is a directory: ${o}`);let s=(null==a?void 0:a.type)==="file"?base64ToBytes(a.data):new Uint8Array,l=encodeFileData(t.data,getOptionalStringParam(t,"encoding")),u=new Uint8Array(s.length+l.length);return u.set(s),u.set(l,s.length),writeFileEntry(n,i,u),r(),{}}function accessPath(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=getStringParam(t,"path");if(!getEntry(r,n))throw Error(`path not found: ${n}`);return{}}function mkdir(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"dirPath"),o=normalizePath(i),a=Date.now(),s=n.entries[o];if((null==s?void 0:s.type)==="directory")return{};if(s)throw Error(`path is not a directory: ${o}`);if(!0===t.recursive){let e="";for(let t of o.split("/").filter(Boolean))if(e+=`/${t}`,n.entries[e]||(n.entries[e]={type:"directory",createTime:a,lastModifiedTime:a}),"directory"!==n.entries[e].type)throw Error(`path is not a directory: ${e}`)}else assertParentDirectory(n,i),n.entries[o]={type:"directory",createTime:a,lastModifiedTime:a};return r(),{}}function rmdir(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"dirPath"),o=normalizePath(i);if("/temp"===o||"/user"===o)throw Error("cannot remove root directory");assertDirectory(n,i);let a=`${o}/`,s=Object.keys(n.entries).filter(e=>e.startsWith(a));if(!0!==t.recursive&&s.length>0)throw Error(`directory is not empty: ${o}`);for(let e of s)delete n.entries[e];return delete n.entries[o],r(),{}}function readdir(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=getStringParam(t,"dirPath");return assertDirectory(r,n),{files:getChildNames(r,n)}}function unlink(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=normalizePath(i);return assertFile(n,i),delete n.entries[o],r(),{}}function stat(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=normalizePath(getStringParam(t,"path")),i=r.entries[n];if(!i)throw Error(`path not found: ${n}`);return{size:"file"===i.type?base64ToBytes(i.data).length:0,lastModifiedTime:i.lastModifiedTime,isDirectory:"directory"===i.type}}function copyFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=assertFile(n,getStringParam(t,"srcPath"));return writeFileEntry(n,getStringParam(t,"destPath"),base64ToBytes(i.data)),r(),{}}function rename(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"oldPath"),o=getStringParam(t,"newPath"),a=normalizePath(i),s=normalizePath(o);if(!n.entries[a])throw Error(`path not found: ${a}`);if("/temp"===a||"/user"===a)throw Error("cannot rename root directory");for(let e of(createParentDirectories(n,o),Object.keys(n.entries)))if(e===a||e.startsWith(`${a}/`)){let t=s+e.slice(a.length);n.entries[t]=n.entries[e],delete n.entries[e]}return r(),{}}function truncate(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=assertFile(n,i),a="number"==typeof t.length?t.length:0,s=base64ToBytes(o.data),l=new Uint8Array(a);return l.set(s.slice(0,a)),writeFileEntry(n,i,l),r(),{}}function saveFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"tempFilePath"),o=assertFile(n,i),a=getOptionalStringParam(t,"filePath"),s=a&&a.length>0?a:toAppletFilePath(`/user/${Date.now()}_${getBaseName(i)}`);return writeFileEntry(n,s,base64ToBytes(o.data)),delete n.entries[normalizePath(i)],r(),{savedFilePath:s}}let fileSystemBridgeHandlers={"doubao.readFile":readFile,"doubao.writeFile":writeFile,"doubao.appendFile":appendFile,"doubao.access":accessPath,"doubao.mkdir":mkdir,"doubao.rmdir":rmdir,"doubao.readdir":readdir,"doubao.unlink":unlink,"doubao.stat":stat,"doubao.copyFile":copyFile,"doubao.rename":rename,"doubao.truncate":truncate,"doubao.saveFile":saveFile},nextInternalCallbackId=Date.now();function isPromise(e){return utils_isRecord(e)&&"function"==typeof e.then}function sync_bridge_runtime_getPackageInfoFromGlobalProps(e){var t,r,n,i,o,a,s;let l=null!=(t=e.packageInfo)?t:{};return{appId:null!=(r=null!=(n=l.appId)?n:e.appName)?r:"",iconSrc:l.iconSrc,name:null!=(i=null!=(o=l.name)?o:e.appName)?i:"",versionName:null!=(a=null!=(s=l.versionName)?s:e.appVersion)?a:""}}function createFallbackWindowInfo(){return{pixelRatio:1,screenWidth:0,screenHeight:0,windowWidth:0,windowHeight:0,statusBarHeight:0,safeArea:{left:0,right:0,top:0,bottom:0,width:0,height:0},screenTop:0}}function createFallbackDeviceInfo(){return{abi:"web",deviceAbi:"web",benchmarkLevel:-1,brand:"Browser",model:"Browser",system:"Web",platform:"web",cpuType:"web",memorySize:""}}function createFallbackSyncBridgeData(e){var t,r;let n=sync_bridge_runtime_getPackageInfoFromGlobalProps(e),i=createFallbackWindowInfo(),o=createFallbackDeviceInfo(),a=null!=(t=e.language)?t:"zh_CN",s=null!=(r=e.appTheme)?r:"light",l=e.appVersion,u="string"==typeof DoubaoAppsSDKVersion?DoubaoAppsSDKVersion:"";return{fileSystemNamespace:getWebFileSystemNamespace(e),fileSystemSnapshot:createEmptyWebFileSystemSnapshot(),apiResults:{"doubao.authorize":{},"doubao.getAccountInfo":{miniProgram:{appId:n.appId,envVersion:"develop",version:n.versionName}},"doubao.getAppBaseInfo":{SDKVersion:u,enableDebug:!0,host:{appId:n.appId},language:a,version:l,theme:s},"doubao.getMenuButtonBoundingClientRect":menu_button_getMenuButtonBoundingClientRect(e),"doubao.getPackageInfo":{appId:n.appId,name:n.name,iconSrc:n.iconSrc},"doubao.getSystemInfo":{...i,brand:o.brand,model:o.model,language:a,version:l,system:o.system,platform:o.platform,SDKVersion:u,theme:s,benchmarkLevel:-1,enableDebug:!0,deviceOrientation:"portrait",abi:o.abi},"doubao.getSystemSetting":{bluetoothEnabled:!1,locationEnabled:!0,wifiEnabled:!0,deviceOrientation:"portrait"},"doubao.getWindowInfo":i,"doubao.getDeviceInfo":o,"doubao.getNetworkType":{networkType:"unknown",hasSystemProxy:!1,weakNet:!1}},storageSnapshot:{},supportedAPIs:system_getSupportedWebBridgeAPINames()}}function resolveSyncBridgeData(e){var t;let r=null==(t=globalThis.lynx)?void 0:t.__globalProps;if(!r)return e;let n=r[WEB_SYNC_BRIDGE_GLOBAL_PROP];if(n)return n;let i=createFallbackSyncBridgeData(r);return r[WEB_SYNC_BRIDGE_GLOBAL_PROP]=i,i}function sync_bridge_runtime_getStorageSnapshot(e){return utils_isRecord(e.storageSnapshot)||(e.storageSnapshot={}),e.storageSnapshot}function createPersistMessage(e){return{type:"call",name:"doubao.__webSyncBridgePersist",params:{fileSystemNamespace:e.fileSystemNamespace,fileSystemSnapshot:e.fileSystemSnapshot,storageSnapshot:e.storageSnapshot},callbackId:nextInternalCallbackId++}}function persistSyncBridgeState(e,t){let r=e("postMessage",createPersistMessage(t));isPromise(r)&&r.catch(()=>{})}function getLocalStorage(){try{return globalThis.localStorage}catch(e){return}}function setLocalStorageItem(e,t){var r;null==(r=getLocalStorage())||r.setItem(storage_core_getWebStorageKey(e),t)}function removeLocalStorageItem(e){var t;null==(t=getLocalStorage())||t.removeItem(storage_core_getWebStorageKey(e))}function clearLocalStorageItems(e){let t=getLocalStorage();if(t)for(let r of Object.keys(e))t.removeItem(storage_core_getWebStorageKey(r))}function setStorage(e,t,r){let n=sync_bridge_runtime_getStorageSnapshot(e),i=String(t.data),o=validateWebStorageWrite(n,t.key,i);return setLocalStorageItem(o,i),n[o]=i,r(),{}}function getStorage(e,t){return{data:getWebStorageItemFromSnapshot(sync_bridge_runtime_getStorageSnapshot(e),t.key)}}function removeStorage(e,t,r){let n=sync_bridge_runtime_getStorageSnapshot(e),i=validateWebStorageKey(t.key);return delete n[i],removeLocalStorageItem(i),r(),{}}function clearStorage(e,t,r){return clearLocalStorageItems(sync_bridge_runtime_getStorageSnapshot(e)),e.storageSnapshot={},r(),{}}function getStorageInfo(e){return getWebStorageInfoFromSnapshot(sync_bridge_runtime_getStorageSnapshot(e))}let localBridgeHandlers={"doubao.setStorage":setStorage,"doubao.getStorage":getStorage,"doubao.removeStorage":removeStorage,"doubao.clearStorage":clearStorage,"doubao.getStorageInfo":getStorageInfo,...fileSystemBridgeHandlers};function canDispatchLocalBridgeAPI(e){return isBridgeCallMessage(e)&&Object.prototype.hasOwnProperty.call(localBridgeHandlers,e.name)}function dispatchSyncBridgeAPI(e,t,r){if(!isBridgeCallMessage(e))return;let n=resolveSyncBridgeData(r);if(!n)return createFailedCallback(e,"Sync bridge data is not available in Doubao Web SDK");if("doubao.canIUse"===e.name){let t=utils_isRecord(e.params)&&"string"==typeof e.params.schema?e.params.schema:"";return bridge_api_createSuccessCallback(e,{result:(Array.isArray(n.supportedAPIs)?n.supportedAPIs:[]).includes(t)})}let i=n.apiResults;if(utils_isRecord(i)&&Object.prototype.hasOwnProperty.call(i,e.name))return bridge_api_createSuccessCallback(e,i[e.name]);let o=localBridgeHandlers[e.name];if(o)try{let r=utils_isRecord(e.params)?e.params:{};return bridge_api_createSuccessCallback(e,o(n,r,()=>persistSyncBridgeState(t,n)))}catch(t){return createFailedCallbackFromError(e,t)}}function emitAppletBridgeMessage(e){var t,r;if(!utils_isRecord(e)||"callback"!==e.type)return!1;let n=null==(r=globalThis.lynx)||null==(t=r.getJSModule)?void 0:t.call(r,"GlobalEventEmitter");return"function"==typeof(null==n?void 0:n.emit)?(n.emit("__APPLET_BRIDGE__",[e]),!0):"function"==typeof(null==n?void 0:n.trigger)&&(n.trigger("__APPLET_BRIDGE__",e),!0)}function createAppletBridgeModule(e,t,r){return{async postMessage(e,n){let i;if(canDispatchLocalBridgeAPI(e)){let i=dispatchSyncBridgeAPI(e,t,r);if(i)return null==n||n(i),emitAppletBridgeMessage(i)||n||await t("postMessage",i),i}try{i=await t("postMessage",e)}catch(t){i=isBridgeCallMessage(e)?createFailedCallbackFromError(e,t):void 0}return null==n||n(i),emitAppletBridgeMessage(i),i},postMessageSync(e){let n=dispatchSyncBridgeAPI(e,t,r);return n||!isBridgeCallMessage(e)?n:createFailedCallback(e,`Sync API ${e.name} is not implemented in Doubao Web SDK`)}}}export{createAppletBridgeModule,getWebSyncBridgeDataFromUrl};
1
+ let runtimeBridgeController;function utils_isRecord(e){return"object"==typeof e&&null!==e}function isBridgeCallMessage(e){return(null==e?void 0:e.type)==="call"}function isBridgeCallbackMessage(e){return(null==e?void 0:e.type)==="callback"}function isBridgeEventMessage(e){return(null==e?void 0:e.type)==="event"}function _define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let RESULT_CODE_SUCCESS=1,RESULT_CODE_FAILED=0;class BridgeAPIError extends Error{constructor(e,t,r=e){super(e),_define_property(this,"errNo",void 0),_define_property(this,"errMsg",void 0),this.errNo=t,this.errMsg=r,Object.setPrototypeOf(this,new.target.prototype),this.name="BridgeAPIError"}}function bridge_api_createSuccessCallback(e,t){return{type:"callback",callbackId:e.callbackId,params:{code:1,data:t}}}function createFailedCallback(e,t,r=-1,n=t){return{type:"callback",callbackId:e.callbackId,params:{code:0,msg:t,errNo:r,errMsg:n}}}function getErrorMessage(e){return e instanceof Error?e.message:String(e)}function createFailedCallbackFromError(e,t){return t instanceof BridgeAPIError?createFailedCallback(e,t.message,t.errNo,t.errMsg):createFailedCallback(e,getErrorMessage(t))}function dispatchBridgeAPI(e,t,r={}){if(!isBridgeCallMessage(e))return;let n=t[e.name];if(!n)return createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`);try{let t=n(e,r);if(t instanceof Promise)return t.catch(t=>createFailedCallbackFromError(e,t));return null!=t?t:createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`)}catch(t){return createFailedCallbackFromError(e,t)}}function setRuntimeBridgeController(e){return runtimeBridgeController=e,()=>{runtimeBridgeController===e&&(runtimeBridgeController=void 0)}}function getCurrentPageStack(){var e;return null!=(e=null==runtimeBridgeController?void 0:runtimeBridgeController.getCurrentPages())?e:[]}function page_stack_getRuntimePackageInfo(){return null==runtimeBridgeController?void 0:runtimeBridgeController.getPackageInfo()}function navigateRuntimeTo(e){return null==runtimeBridgeController||runtimeBridgeController.navigateTo(e),!!runtimeBridgeController}function redirectRuntimeTo(e){return null==runtimeBridgeController||runtimeBridgeController.redirectTo(e),!!runtimeBridgeController}function reLaunchRuntime(e){return null==runtimeBridgeController||runtimeBridgeController.reLaunch(e),!!runtimeBridgeController}function navigateRuntimeBack(e){return null==runtimeBridgeController||runtimeBridgeController.navigateBack(e),!!runtimeBridgeController}function exitRuntimeApp(){return null==runtimeBridgeController||runtimeBridgeController.exitApp(),!!runtimeBridgeController}function closeRuntimePage(e){return null==runtimeBridgeController||runtimeBridgeController.close(e),!!runtimeBridgeController}let MENU_BUTTON_WIDTH=84,MENU_BUTTON_HEIGHT=36,MENU_BUTTON_RIGHT=12,MENU_BUTTON_TOP=4;function getMenuButtonGlobalProps(e){var t;return null!=e?e:null==(t=globalThis.lynx)?void 0:t.__globalProps}function menu_button_getMenuButtonBoundingClientRect(e){let{screenWidth:t,statusBarHeight:r}=getMenuButtonGlobalProps(e),n=Math.round(r)+4,i=Math.round(t)-12;return{bottom:n+36,height:36,left:i-84,right:i,top:n,width:84}}function registry_define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function normalizeRegistration(e){var t;return"function"==typeof e?{handler:e,canIUse:!0}:{...e,canIUse:null==(t=e.canIUse)||t}}class BridgeAPIRegistry{register(e,t,r={}){if(!r.override&&this.registry.has(e))throw Error(`Bridge API handler ${e} is already registered`);let n=this.registry.get(e),i=normalizeRegistration(t);return this.registry.set(e,i),this.handlers[e]=i.handler,()=>{if(this.registry.get(e)===i){if(n){this.registry.set(e,n),this.handlers[e]=n.handler;return}this.registry.delete(e),delete this.handlers[e]}}}registerMany(e,t={}){let r=[];try{for(let[n,i]of Object.entries(e))r.push(this.register(n,i,t))}catch(e){for(let e of r.reverse())e();throw e}return()=>{for(let e of r.reverse())e()}}get(e){var t;return null==(t=this.registry.get(e))?void 0:t.handler}getSyncResults(e){let t={};for(let[r,n]of this.registry)n.syncResult&&this.canIUse(r,e)&&(t[r]="function"==typeof n.syncResult?n.syncResult({...e,apiRegistry:this}):n.syncResult);return t}registerEventSource(e,t,r={}){var n;if(!r.override&&this.eventSources.has(e))throw Error(`Bridge event source ${e} is already registered`);let i=this.eventSources.get(e),o="function"==typeof t?{source:t}:t;return this.stopEventSource(e),this.eventSources.set(e,o),(null!=(n=this.eventSourceRetainCounts.get(e))?n:0)>0&&this.startEventSource(e,o),()=>{if(this.eventSources.get(e)===o){if(this.stopEventSource(e),i){var t;this.eventSources.set(e,i),(null!=(t=this.eventSourceRetainCounts.get(e))?t:0)>0&&this.startEventSource(e,i);return}this.eventSources.delete(e)}}}registerEventSources(e,t={}){let r=[];try{for(let[n,i]of Object.entries(e))r.push(this.registerEventSource(n,i,t))}catch(e){for(let e of r.reverse())e();throw e}return()=>{for(let e of r.reverse())e()}}canIUse(e,t){var r;let n=this.registry.get(e);if(n)return"function"==typeof n.canIUse?n.canIUse({...t,apiRegistry:this}):n.canIUse;let i=this.eventSources.get(e);return!!i&&("function"==typeof i.canIUse?i.canIUse({...t,apiRegistry:this}):null==(r=i.canIUse)||r)}dispatch(e,t={}){if(!isBridgeCallMessage(e))return;let r={...t,apiRegistry:this};if(this.canIUse(e.name,r))return dispatchBridgeAPI(e,this.handlers,r);let n=r.onUnsupportedAPI;if(!n)return createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`);try{let t=n(e.name);return t instanceof Promise?t.then(()=>bridge_api_createSuccessCallback(e,{})).catch(t=>createFailedCallbackFromError(e,t)):bridge_api_createSuccessCallback(e,{})}catch(t){return createFailedCallbackFromError(e,t)}}getSupportedNames(e){return[...new Set([...this.registry.keys(),...this.eventSources.keys()])].filter(t=>this.canIUse(t,e))}emitEvent(e,t){let r=!1;for(let n of this.eventControllers)r=n.emit(e,t)||r;return r}createEventController(e){return new BridgeEventController(this,e)}fork(){let e=new BridgeAPIRegistry(this.getRegistrations());return e.registerEventSources(this.getEventSources()),e}getRegistrations(){return Object.fromEntries(this.registry)}getEventSources(){return Object.fromEntries(this.eventSources)}attachEventController(e){return this.eventControllers.add(e),()=>{this.eventControllers.delete(e)}}retainEventSource(e){var t;let r=null!=(t=this.eventSourceRetainCounts.get(e))?t:0;if(this.eventSourceRetainCounts.set(e,r+1),r>0)return;let n=this.eventSources.get(e);n&&this.startEventSource(e,n)}releaseEventSource(e){var t;let r=null!=(t=this.eventSourceRetainCounts.get(e))?t:0;if(r<=1){this.eventSourceRetainCounts.delete(e),this.stopEventSource(e);return}this.eventSourceRetainCounts.set(e,r-1)}startEventSource(e,t){this.stopEventSource(e);let r=t.source(t=>{this.emitEvent(e,t)});"function"==typeof r&&this.eventSourceCleanups.set(e,r)}stopEventSource(e){var t;null==(t=this.eventSourceCleanups.get(e))||t(),this.eventSourceCleanups.delete(e)}constructor(e){registry_define_property(this,"registry",new Map),registry_define_property(this,"eventSources",new Map),registry_define_property(this,"eventSourceCleanups",new Map),registry_define_property(this,"eventSourceRetainCounts",new Map),registry_define_property(this,"eventControllers",new Set),registry_define_property(this,"handlers",{}),e&&this.registerMany(e)}}class BridgeEventController{subscribe(e){this.subscribedEventNames.has(e)||(this.subscribedEventNames.add(e),this.apiRegistry.retainEventSource(e))}unsubscribe(e){this.subscribedEventNames.delete(e)&&this.apiRegistry.releaseEventSource(e)}emit(e,t){return!!this.subscribedEventNames.has(e)&&(this.dispatch(e,t),!0)}destroy(){for(let e of this.subscribedEventNames)this.apiRegistry.releaseEventSource(e);this.subscribedEventNames.clear(),this.cleanupRegistry()}constructor(e,t){registry_define_property(this,"apiRegistry",void 0),registry_define_property(this,"dispatch",void 0),registry_define_property(this,"cleanupRegistry",void 0),registry_define_property(this,"subscribedEventNames",void 0),this.apiRegistry=e,this.dispatch=t,this.subscribedEventNames=new Set,this.cleanupRegistry=this.apiRegistry.attachEventController(this)}}let registry_defaultBridgeAPIRegistry=new BridgeAPIRegistry,bridgeAPIHandlers=registry_defaultBridgeAPIRegistry.handlers;function registerBridgeAPIHandler(e,t,r={}){return registry_defaultBridgeAPIRegistry.register(e,t,r)}function registerBridgeAPIHandlers(e,t={}){return registry_defaultBridgeAPIRegistry.registerMany(e,t)}function canUseRegisteredBridgeAPI(e,t){return registry_defaultBridgeAPIRegistry.canIUse(e,t)}function getRegisteredBridgeAPINames(e){return registry_defaultBridgeAPIRegistry.getSupportedNames(e)}function registerBridgeEventSource(e,t,r={}){return registry_defaultBridgeAPIRegistry.registerEventSource(e,t,r)}function registerBridgeEventSources(e,t={}){return registry_defaultBridgeAPIRegistry.registerEventSources(e,t)}function createBridgeAPIRegistry(e){return new BridgeAPIRegistry(e)}function system_getSupportedWebBridgeAPINames(e=registry_defaultBridgeAPIRegistry){return e.getSupportedNames({apiRegistry:e})}function canUseWebBridgeAPI(e,t=defaultBridgeAPIRegistry){return t.canIUse(e,{apiRegistry:t})}function getLanguage(){return(navigator.language||"zh-CN").replace("-","_")}function getTheme(){var e,t,r;return(null==(t=(r=window).matchMedia)||null==(e=t.call(r,"(prefers-color-scheme: dark)"))?void 0:e.matches)?"dark":"light"}function getSDKVersion(){return"u"<typeof DoubaoAppsSDKVersion?void 0:DoubaoAppsSDKVersion}function getUserAgentData(){return navigator.userAgentData}function getBrowserBrand(){var e,t;let r=null==(t=getUserAgentData())?void 0:t.brands,n=null==r?void 0:r.find(({brand:e})=>!/not.a.brand/i.test(e));if(null==n?void 0:n.brand)return n.brand;let i=null!=(e=navigator.userAgent)?e:"";return/edg\//i.test(i)?"Microsoft Edge":/chrome|crios/i.test(i)?"Chrome":/firefox|fxios/i.test(i)?"Firefox":/safari/i.test(i)?"Safari":"Browser"}function getBrowserVersion(){var e,t,r,n;let i=null==(r=getUserAgentData())?void 0:r.brands,o=null==i?void 0:i.find(({brand:e})=>!/not.a.brand/i.test(e));if(null==o?void 0:o.version)return o.version;let a=null!=(e=navigator.userAgent)?e:"";return null!=(t=null==(n=/(?:edg|chrome|crios|firefox|fxios|version)\/([\d.]+)/i.exec(a))?void 0:n[1])?t:void 0}function getPlatformInfo(){var e,t,r,n,i;let o=null!=(e=navigator.userAgent)?e:"",a=null!=(t=navigator.platform)?t:"",s=null!=(r=null==(i=getUserAgentData())?void 0:i.platform)?r:"",l=`${s} ${a} ${o}`,u=null!=(n=navigator.maxTouchPoints)?n:0;return/android/i.test(l)?{platform:"android",brand:"Android"}:/iphone/i.test(l)?{platform:"ios",brand:"iPhone"}:/ipad/i.test(l)||/mac/i.test(a)&&u>1?{platform:"ios",brand:"iPad"}:/mac/i.test(l)?{platform:"mac",brand:"Mac"}:/win/i.test(l)?{platform:"windows",brand:"Windows"}:/linux/i.test(l)?{platform:"linux",brand:"Linux"}:{platform:"web",brand:"Browser"}}function getPackageInfo(e=getRuntimePackageInfo()){var t,r;return{appId:null!=(t=null==e?void 0:e.appId)?t:"",name:null!=(r=null==e?void 0:e.name)?r:"",iconSrc:null==e?void 0:e.iconSrc}}function getViewportWidth(){var e,t,r;return Math.round(null!=(e=null!=(t=null==(r=window.visualViewport)?void 0:r.width)?t:window.innerWidth)?e:0)}function getViewportHeight(){var e,t,r;return Math.round(null!=(e=null!=(t=null==(r=window.visualViewport)?void 0:r.height)?t:window.innerHeight)?e:0)}function getWindowInfo(){var e,t,r,n,i,o,a;let s=getViewportWidth(),l=getViewportHeight(),u=null!=(e=window.devicePixelRatio)?e:1,c=Math.round(null!=(t=null==(i=window.screen)?void 0:i.width)?t:s),g=Math.round(null!=(r=null==(o=window.screen)?void 0:o.height)?r:l),d=Math.round(null!=(n=null==(a=window.visualViewport)?void 0:a.offsetTop)?n:0);return{pixelRatio:u,screenWidth:c,screenHeight:g,windowWidth:s,windowHeight:l,statusBarHeight:d,safeArea:{left:0,right:s,top:d,bottom:l,width:s,height:Math.max(0,l-d)},screenTop:d}}function getPlatform(){return getPlatformInfo().platform}function getSystemVersion(){var e,t,r,n,i,o;let a=null!=(e=navigator.userAgent)?e:"",s=getPlatform();return"android"===s?null==(t=/android\s+([\d.]+)/i.exec(a))?void 0:t[1]:"ios"===s?null==(n=/(?:iphone os|cpu os)\s+([\d_]+)/i.exec(a))||null==(r=n[1])?void 0:r.replace(/_/g,"."):"mac"===s?null==(o=/mac os x\s+([\d_]+)/i.exec(a))||null==(i=o[1])?void 0:i.replace(/_/g,"."):void 0}function getSystemNameAndVersion(){let e=getPlatform(),t=getSystemVersion();if("android"===e)return t?`Android ${t}`:"Android";if("ios"===e)return t?`iOS ${t}`:"iOS";if("mac"===e)return t?`macOS ${t}`:"macOS";if("windows"===e)return"Windows";if("linux"===e)return"Linux";let r=getBrowserVersion(),n=getBrowserBrand();return r?`${n} ${r}`:"Web"}function getDeviceModel(){var e,t,r;let n=null!=(e=navigator.userAgent)?e:"",i=getPlatform();return"android"===i?(null==(r=/android\s+[\d.]+;\s*([^;)]+)/i.exec(n))||null==(t=r[1])?void 0:t.trim())||"Android":"ios"===i?getPlatformInfo().brand:"mac"===i||"windows"===i||"linux"===i?navigator.platform||getPlatformInfo().brand:getBrowserBrand()}function getMemorySize(){let e=navigator.deviceMemory;return"number"==typeof e&&Number.isFinite(e)?String(Math.round(1024*e)):""}function getCpuType(){return navigator.platform||getPlatform()}function getDefaultNetworkStatus(){return{isConnected:!0,networkType:"unknown",hasSystemProxy:!1,weakNet:!1}}function getDeviceInfo(){let e=getPlatformInfo(),t=getCpuType();return{abi:t,deviceAbi:t,benchmarkLevel:-1,brand:e.brand,model:getDeviceModel(),system:getSystemNameAndVersion(),platform:e.platform,cpuType:t,memorySize:getMemorySize()}}function getWebSystemGlobalProps(){let e=getDeviceInfo(),t=getWindowInfo(),r=t.windowWidth>t.windowHeight;return{os:e.platform,osVersion:getSystemVersion(),deviceBrand:e.brand,deviceModel:e.model,deviceType:e.model,channel:"debug",screenOrientation:+!!r,isLandscape:+!!r,abi:e.abi}}function getSystemInfo(){let e=getWindowInfo(),t=getDeviceInfo();return{...e,brand:t.brand,model:t.model,language:getLanguage(),version:getBrowserVersion(),system:t.system,platform:t.platform,SDKVersion:getSDKVersion(),theme:getTheme(),benchmarkLevel:-1,enableDebug:!0,deviceOrientation:e.windowWidth>e.windowHeight?"landscape":"portrait",abi:t.abi}}function getSystemSetting(){let e=getWindowInfo();return{bluetoothEnabled:!1,locationEnabled:!0,wifiEnabled:getDefaultNetworkStatus().isConnected,deviceOrientation:e.windowWidth>e.windowHeight?"landscape":"portrait"}}function getNetworkType(){var e,t;let r=getDefaultNetworkStatus();return{networkType:r.networkType,signalStrength:r.signalStrength,hasSystemProxy:null!=(e=r.hasSystemProxy)&&e,weakNet:null!=(t=r.weakNet)&&t}}function getAppBaseInfo(e=getRuntimePackageInfo()){return{SDKVersion:getSDKVersion(),enableDebug:!0,host:{appId:getPackageInfo(e).appId},language:getLanguage(),version:getBrowserVersion(),theme:getTheme()}}function getAccountInfo(e=getRuntimePackageInfo()){var t;return{miniProgram:{appId:getPackageInfo(e).appId,envVersion:"develop",version:null!=(t=null==e?void 0:e.versionName)?t:""}}}function system_getSystemSyncBridgeAPIResults(e,t,r){return(null!=t?t:defaultBridgeAPIRegistry).getSyncResults({globalProps:r,packageInfo:e})}function getSyncPackageInfo(e){return null==e?void 0:e.packageInfo}let systemHandlers=null,storage_core_WEB_STORAGE_PREFIX="doubao-web-sdk:storage:",WEB_STORAGE_LIMIT_KB=10240,WEB_STORAGE_MAX_KEY_LENGTH=1024,WEB_STORAGE_MAX_ITEM_SIZE_BYTES=1048576,WEB_STORAGE_LIMIT_BYTES=0xa00000,WEB_STORAGE_TOTAL_SIZE_EXCEEDED_ERROR=1600002;function storage_core_getWebStorageKey(e){return`${storage_core_WEB_STORAGE_PREFIX}${e}`}function validateWebStorageKey(e){if("string"!=typeof e)throw Error("key must be a string");if(0===e.length)throw Error("key must not be empty");if(e.length>1024)throw Error("key length must be less than or equal to 1024");return e}function validateWebStorageData(e){if(getWebStorageDataSize(e)>1048576)throw Error("data size must be less than or equal to 1048576 bytes")}function getWebStorageDataSize(e){return new TextEncoder().encode(e).byteLength}function getWebStorageSnapshotSize(e){return Object.values(e).reduce((e,t)=>e+getWebStorageDataSize(t),0)}function validateWebStorageTotalSize(e){if(e>WEB_STORAGE_LIMIT_BYTES)throw new BridgeAPIError("total storage size exceeded",1600002)}function validateWebStorageWrite(e,t,r){let n=validateWebStorageKey(t);validateWebStorageData(r);let i=Object.prototype.hasOwnProperty.call(e,n)?e[n]:void 0;return validateWebStorageTotalSize(getWebStorageSnapshotSize(e)-(void 0===i?0:getWebStorageDataSize(i))+getWebStorageDataSize(r)),n}function getWebStorageItemFromSnapshot(e,t){return e[validateWebStorageKey(t)]}function storage_core_validateWebStorageSnapshot(e){for(let[t,r]of Object.entries(e))validateWebStorageKey(t),validateWebStorageData(r);validateWebStorageTotalSize(getWebStorageSnapshotSize(e))}function storage_core_getWebStorageSnapshotFromStorage(e){let t={};for(let n=0;n<e.length;n+=1){let i=e.key(n);if(null==i?void 0:i.startsWith(storage_core_WEB_STORAGE_PREFIX)){var r;t[i.slice(storage_core_WEB_STORAGE_PREFIX.length)]=null!=(r=e.getItem(i))?r:""}}return t}function getWebStorageInfoFromSnapshot(e){return{keys:Object.keys(e),currentSize:Math.ceil(getWebStorageSnapshotSize(e)/1024),limitSize:10240}}let WEB_SYNC_BRIDGE_GLOBAL_PROP="__DOUBAO_WEB_SDK_SYNC_BRIDGE__",WEB_SYNC_BRIDGE_PERSIST_API="doubao.__webSyncBridgePersist",WEB_FILE_SYSTEM_STORAGE_KEY="doubao-web-sdk:file-system",WEB_SYNC_BRIDGE_URL_PARAM="__doubao_sync_bridge";function getStringProperty(e,t){if(!utils_isRecord(e))return;let r=e[t];return"string"==typeof r&&r.length>0?r:void 0}function getPackageInfoFromGlobalProps(e){if(!utils_isRecord(e)||!utils_isRecord(e.packageInfo))return;let{appId:t,iconSrc:r,name:n,versionName:i}=e.packageInfo;return{appId:"string"==typeof t?t:void 0,iconSrc:"string"==typeof r?r:void 0,name:"string"==typeof n?n:void 0,versionName:"string"==typeof i?i:void 0}}function getWebFileSystemNamespace(e){var t,r,n,i;let o=getPackageInfoFromGlobalProps(e),a=null!=(t=null!=(r=null==o?void 0:o.appId)?r:getStringProperty(e,"appName"))?t:"unknown-app",s=null!=(n=null!=(i=getStringProperty(e,"userId"))?i:getStringProperty(e,"userID"))?n:"anonymous";return`${encodeURIComponent(a)}:${encodeURIComponent(s)}`}function createEmptyWebFileSystemSnapshot(){let e=Date.now();return{entries:{"/":{type:"directory",createTime:e,lastModifiedTime:e},"/temp":{type:"directory",createTime:e,lastModifiedTime:e},"/user":{type:"directory",createTime:e,lastModifiedTime:e}}}}function getStorageSnapshot(){return getWebStorageSnapshotFromStorage(localStorage)}function getWebFileSystemStorageKey(e){return`doubao-web-sdk:file-system:${encodeURIComponent(e)}`}function getFileSystemSnapshot(e){let t=localStorage.getItem(getWebFileSystemStorageKey(e));if(!t)return createEmptyWebFileSystemSnapshot();try{let e=JSON.parse(t);if(isRecord(e)&&isRecord(e.entries))return e}catch(e){}return createEmptyWebFileSystemSnapshot()}function createWebSyncBridgeGlobalValue(e,t,r=getWebFileSystemNamespace(e)){let n=getSupportedWebBridgeAPINames(t);return{fileSystemNamespace:r,fileSystemSnapshot:getFileSystemSnapshot(r),apiResults:getSystemSyncBridgeAPIResults(getPackageInfoFromGlobalProps(e),t,e),storageSnapshot:getStorageSnapshot(),supportedAPIs:n}}function isWebSyncBridgeGlobalValue(e){return utils_isRecord(e)&&"string"==typeof e.fileSystemNamespace&&utils_isRecord(e.fileSystemSnapshot)&&utils_isRecord(e.apiResults)&&utils_isRecord(e.storageSnapshot)&&Array.isArray(e.supportedAPIs)}function addWebSyncBridgeDataToUrl(e,t){let r=new URL(e),n=new URLSearchParams(r.hash.slice(1));return n.set(WEB_SYNC_BRIDGE_URL_PARAM,JSON.stringify({...t,fileSystemSnapshot:createEmptyWebFileSystemSnapshot()})),r.hash=n.toString(),r.href}function getWebSyncBridgeDataFromUrl(e){try{let t=new URLSearchParams(new URL(e).hash.slice(1)).get(WEB_SYNC_BRIDGE_URL_PARAM);if(!t)return;let r=JSON.parse(t);return isWebSyncBridgeGlobalValue(r)?r:void 0}catch(e){return}}function persistWebStorageSnapshot(e){let t=[];validateWebStorageSnapshot(e);for(let e=0;e<localStorage.length;e+=1){let r=localStorage.key(e);(null==r?void 0:r.startsWith(WEB_STORAGE_PREFIX))&&t.push(r)}for(let e of t)localStorage.removeItem(e);for(let[t,r]of Object.entries(e))localStorage.setItem(getWebStorageKey(t),r)}function persistWebFileSystemSnapshot(e,t){localStorage.setItem(getWebFileSystemStorageKey(e),JSON.stringify(t))}function sync_file_system_getFileSystemSnapshot(e){utils_isRecord(e.fileSystemSnapshot)||(e.fileSystemSnapshot={entries:{}}),utils_isRecord(e.fileSystemSnapshot.entries)||(e.fileSystemSnapshot.entries={});let t=Date.now();for(let n of["/","/temp","/user"]){var r;(null==(r=e.fileSystemSnapshot.entries[n])?void 0:r.type)!=="directory"&&(e.fileSystemSnapshot.entries[n]={type:"directory",createTime:t,lastModifiedTime:t})}return e.fileSystemSnapshot}function getStringParam(e,t){let r=e[t];if("string"!=typeof r)throw Error(`${t} must be a string`);return r}function getOptionalStringParam(e,t){let r=e[t];return"string"==typeof r?r:void 0}function decodePathSegment(e){let t;if(0===e.length||e.includes("?")||e.includes("#")||/%(?![0-9a-f]{2})/i.test(e))throw Error("invalid applet file path");try{t=decodeURIComponent(e)}catch(e){throw Error("invalid applet file path")}if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw Error("invalid applet file path");return t}function normalizePath(e){let t=/^appletfile:\/\/(user|temp)(?:\/(.*))?$/.exec(e);if(!t)throw Error("path must use appletfile://user or appletfile://temp");let r=t[1],n=t[2];if(void 0===n||0===n.length)return`/${r}`;let i=n.split("/").map(decodePathSegment);return`/${r}/${i.join("/")}`}function getParentPath(e){let t=normalizePath(e);if("/temp"===t||"/user"===t)return"";let r=t.lastIndexOf("/");return t.slice(0,r)}function getBaseName(e){let t=normalizePath(e);return"/temp"===t||"/user"===t?"":t.slice(t.lastIndexOf("/")+1)}function encodePathSegment(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function toAppletFilePath(e){let t=e.split("/").filter(Boolean),r=t.shift();if("temp"!==r&&"user"!==r)throw Error(`invalid applet file path: ${e}`);let n=t.map(encodePathSegment).join("/");return n.length>0?`appletfile://${r}/${n}`:`appletfile://${r}`}function getEntry(e,t){return e.entries[normalizePath(t)]}function assertFile(e,t){let r=normalizePath(t),n=e.entries[r];if(!n||"file"!==n.type)throw Error(`file not found: ${r}`);return n}function assertDirectory(e,t){let r=normalizePath(t),n=e.entries[r];if(!n||"directory"!==n.type)throw Error(`directory not found: ${r}`);return n}function assertParentDirectory(e,t){var r;let n=getParentPath(t);if(!n)throw Error(`invalid parent directory: ${t}`);if((null==(r=e.entries[n])?void 0:r.type)!=="directory")throw Error(`directory not found: ${n}`)}function createParentDirectories(e,t){let r=getParentPath(t);if(!r)throw Error(`invalid parent directory: ${t}`);let n=Date.now(),i="";for(let t of r.split("/").filter(Boolean)){i+=`/${t}`;let r=e.entries[i];if((null==r?void 0:r.type)==="file")throw Error(`path is not a directory: ${i}`);r||(e.entries[i]={type:"directory",createTime:n,lastModifiedTime:n})}}function bytesToBase64(e){let t="";for(let r=0;r<e.length;r+=1)t+=String.fromCharCode(e[r]);return btoa(t)}function base64ToBytes(e){let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e+=1)r[e]=t.charCodeAt(e);return r}function encodeFileData(e,t){let r="string"==typeof e?e:String(null!=e?e:"");return"base64"===t?base64ToBytes(r):new TextEncoder().encode(r)}function decodeFileData(e,t){return"utf-8"===t?new TextDecoder().decode(base64ToBytes(e)):e}function getChildNames(e,t){let r=normalizePath(t),n="/"===r?"/":`${r}/`,i=new Set;for(let t of Object.keys(e.entries)){if(t===r||!t.startsWith(n))continue;let e=t.slice(n.length).split("/")[0];e&&i.add(e)}return[...i]}function writeFileEntry(e,t,r){var n;let i=normalizePath(t);createParentDirectories(e,t);let o=Date.now(),a=e.entries[i];if((null==a?void 0:a.type)==="directory")throw Error(`path is a directory: ${i}`);e.entries[i]={type:"file",data:bytesToBase64(r),createTime:null!=(n=null==a?void 0:a.createTime)?n:o,lastModifiedTime:o}}function readFile(e,t){return{data:decodeFileData(assertFile(sync_file_system_getFileSystemSnapshot(e),getStringParam(t,"filePath")).data,getOptionalStringParam(t,"encoding"))}}function writeFile(e,t,r){return writeFileEntry(sync_file_system_getFileSystemSnapshot(e),getStringParam(t,"filePath"),encodeFileData(t.data,getOptionalStringParam(t,"encoding"))),r(),{}}function appendFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=normalizePath(i),a=n.entries[o];if((null==a?void 0:a.type)==="directory")throw Error(`path is a directory: ${o}`);let s=(null==a?void 0:a.type)==="file"?base64ToBytes(a.data):new Uint8Array,l=encodeFileData(t.data,getOptionalStringParam(t,"encoding")),u=new Uint8Array(s.length+l.length);return u.set(s),u.set(l,s.length),writeFileEntry(n,i,u),r(),{}}function accessPath(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=getStringParam(t,"path");if(!getEntry(r,n))throw Error(`path not found: ${n}`);return{}}function mkdir(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"dirPath"),o=normalizePath(i),a=Date.now(),s=n.entries[o];if((null==s?void 0:s.type)==="directory")return{};if(s)throw Error(`path is not a directory: ${o}`);if(!0===t.recursive){let e="";for(let t of o.split("/").filter(Boolean))if(e+=`/${t}`,n.entries[e]||(n.entries[e]={type:"directory",createTime:a,lastModifiedTime:a}),"directory"!==n.entries[e].type)throw Error(`path is not a directory: ${e}`)}else assertParentDirectory(n,i),n.entries[o]={type:"directory",createTime:a,lastModifiedTime:a};return r(),{}}function rmdir(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"dirPath"),o=normalizePath(i);if("/temp"===o||"/user"===o)throw Error("cannot remove root directory");assertDirectory(n,i);let a=`${o}/`,s=Object.keys(n.entries).filter(e=>e.startsWith(a));if(!0!==t.recursive&&s.length>0)throw Error(`directory is not empty: ${o}`);for(let e of s)delete n.entries[e];return delete n.entries[o],r(),{}}function readdir(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=getStringParam(t,"dirPath");return assertDirectory(r,n),{files:getChildNames(r,n)}}function unlink(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=normalizePath(i);return assertFile(n,i),delete n.entries[o],r(),{}}function stat(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=normalizePath(getStringParam(t,"path")),i=r.entries[n];if(!i)throw Error(`path not found: ${n}`);return{size:"file"===i.type?base64ToBytes(i.data).length:0,lastModifiedTime:i.lastModifiedTime,isDirectory:"directory"===i.type}}function copyFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=assertFile(n,getStringParam(t,"srcPath"));return writeFileEntry(n,getStringParam(t,"destPath"),base64ToBytes(i.data)),r(),{}}function rename(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"oldPath"),o=getStringParam(t,"newPath"),a=normalizePath(i),s=normalizePath(o);if(!n.entries[a])throw Error(`path not found: ${a}`);if("/temp"===a||"/user"===a)throw Error("cannot rename root directory");for(let e of(createParentDirectories(n,o),Object.keys(n.entries)))if(e===a||e.startsWith(`${a}/`)){let t=s+e.slice(a.length);n.entries[t]=n.entries[e],delete n.entries[e]}return r(),{}}function truncate(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=assertFile(n,i),a="number"==typeof t.length?t.length:0,s=base64ToBytes(o.data),l=new Uint8Array(a);return l.set(s.slice(0,a)),writeFileEntry(n,i,l),r(),{}}function saveFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"tempFilePath"),o=assertFile(n,i),a=getOptionalStringParam(t,"filePath"),s=a&&a.length>0?a:toAppletFilePath(`/user/${Date.now()}_${getBaseName(i)}`);return writeFileEntry(n,s,base64ToBytes(o.data)),delete n.entries[normalizePath(i)],r(),{savedFilePath:s}}let fileSystemBridgeHandlers={"doubao.readFile":readFile,"doubao.writeFile":writeFile,"doubao.appendFile":appendFile,"doubao.access":accessPath,"doubao.mkdir":mkdir,"doubao.rmdir":rmdir,"doubao.readdir":readdir,"doubao.unlink":unlink,"doubao.stat":stat,"doubao.copyFile":copyFile,"doubao.rename":rename,"doubao.truncate":truncate,"doubao.saveFile":saveFile},nextInternalCallbackId=Date.now();function isPromise(e){return utils_isRecord(e)&&"function"==typeof e.then}function sync_bridge_runtime_getPackageInfoFromGlobalProps(e){var t,r,n,i,o,a,s;let l=null!=(t=e.packageInfo)?t:{};return{appId:null!=(r=null!=(n=l.appId)?n:e.appName)?r:"",iconSrc:l.iconSrc,name:null!=(i=null!=(o=l.name)?o:e.appName)?i:"",versionName:null!=(a=null!=(s=l.versionName)?s:e.appVersion)?a:""}}function createFallbackWindowInfo(){return{pixelRatio:1,screenWidth:0,screenHeight:0,windowWidth:0,windowHeight:0,statusBarHeight:0,safeArea:{left:0,right:0,top:0,bottom:0,width:0,height:0},screenTop:0}}function createFallbackDeviceInfo(){return{abi:"web",deviceAbi:"web",benchmarkLevel:-1,brand:"Browser",model:"Browser",system:"Web",platform:"web",cpuType:"web",memorySize:""}}function createFallbackSyncBridgeData(e){var t,r;let n=sync_bridge_runtime_getPackageInfoFromGlobalProps(e),i=createFallbackWindowInfo(),o=createFallbackDeviceInfo(),a=null!=(t=e.language)?t:"zh_CN",s=null!=(r=e.appTheme)?r:"light",l=e.appVersion,u="string"==typeof DoubaoAppsSDKVersion?DoubaoAppsSDKVersion:"";return{fileSystemNamespace:getWebFileSystemNamespace(e),fileSystemSnapshot:createEmptyWebFileSystemSnapshot(),apiResults:{"doubao.authorize":{},"doubao.getAccountInfo":{miniProgram:{appId:n.appId,envVersion:"develop",version:n.versionName}},"doubao.getAppBaseInfo":{SDKVersion:u,enableDebug:!0,host:{appId:n.appId},language:a,version:l,theme:s},"doubao.getMenuButtonBoundingClientRect":menu_button_getMenuButtonBoundingClientRect(e),"doubao.getPackageInfo":{appId:n.appId,name:n.name,iconSrc:n.iconSrc},"doubao.getSystemInfo":{...i,brand:o.brand,model:o.model,language:a,version:l,system:o.system,platform:o.platform,SDKVersion:u,theme:s,benchmarkLevel:-1,enableDebug:!0,deviceOrientation:"portrait",abi:o.abi},"doubao.getSystemSetting":{bluetoothEnabled:!1,locationEnabled:!0,wifiEnabled:!0,deviceOrientation:"portrait"},"doubao.getWindowInfo":i,"doubao.getDeviceInfo":o,"doubao.getNetworkType":{networkType:"unknown",hasSystemProxy:!1,weakNet:!1}},storageSnapshot:{},supportedAPIs:system_getSupportedWebBridgeAPINames()}}function resolveSyncBridgeData(e){var t;let r=null==(t=globalThis.lynx)?void 0:t.__globalProps;if(!r)return e;let n=r[WEB_SYNC_BRIDGE_GLOBAL_PROP];if(n)return n;let i=createFallbackSyncBridgeData(r);return r[WEB_SYNC_BRIDGE_GLOBAL_PROP]=i,i}function sync_bridge_runtime_getStorageSnapshot(e){return utils_isRecord(e.storageSnapshot)||(e.storageSnapshot={}),e.storageSnapshot}function createPersistMessage(e){return{type:"call",name:"doubao.__webSyncBridgePersist",params:{fileSystemNamespace:e.fileSystemNamespace,fileSystemSnapshot:e.fileSystemSnapshot,storageSnapshot:e.storageSnapshot},callbackId:nextInternalCallbackId++}}function persistSyncBridgeState(e,t){let r=e("postMessage",createPersistMessage(t));isPromise(r)&&r.catch(()=>{})}function getLocalStorage(){try{return globalThis.localStorage}catch(e){return}}function setLocalStorageItem(e,t){var r;null==(r=getLocalStorage())||r.setItem(storage_core_getWebStorageKey(e),t)}function removeLocalStorageItem(e){var t;null==(t=getLocalStorage())||t.removeItem(storage_core_getWebStorageKey(e))}function clearLocalStorageItems(e){let t=getLocalStorage();if(t)for(let r of Object.keys(e))t.removeItem(storage_core_getWebStorageKey(r))}function setStorage(e,t,r){let n=sync_bridge_runtime_getStorageSnapshot(e),i=String(t.data),o=validateWebStorageWrite(n,t.key,i);return setLocalStorageItem(o,i),n[o]=i,r(),{}}function getStorage(e,t){return{data:getWebStorageItemFromSnapshot(sync_bridge_runtime_getStorageSnapshot(e),t.key)}}function removeStorage(e,t,r){let n=sync_bridge_runtime_getStorageSnapshot(e),i=validateWebStorageKey(t.key);return delete n[i],removeLocalStorageItem(i),r(),{}}function clearStorage(e,t,r){return clearLocalStorageItems(sync_bridge_runtime_getStorageSnapshot(e)),e.storageSnapshot={},r(),{}}function getStorageInfo(e){return getWebStorageInfoFromSnapshot(sync_bridge_runtime_getStorageSnapshot(e))}let localBridgeHandlers={"doubao.setStorage":setStorage,"doubao.getStorage":getStorage,"doubao.removeStorage":removeStorage,"doubao.clearStorage":clearStorage,"doubao.getStorageInfo":getStorageInfo,...fileSystemBridgeHandlers};function canDispatchLocalBridgeAPI(e){return isBridgeCallMessage(e)&&Object.prototype.hasOwnProperty.call(localBridgeHandlers,e.name)}function dispatchSyncBridgeAPI(e,t,r){if(!isBridgeCallMessage(e))return;let n=resolveSyncBridgeData(r);if(!n)return createFailedCallback(e,"Sync bridge data is not available in Doubao Web SDK");if("doubao.canIUse"===e.name){let t=utils_isRecord(e.params)&&"string"==typeof e.params.schema?e.params.schema:"";return bridge_api_createSuccessCallback(e,{result:(Array.isArray(n.supportedAPIs)?n.supportedAPIs:[]).includes(t)})}let i=n.apiResults;if(utils_isRecord(i)&&Object.prototype.hasOwnProperty.call(i,e.name))return bridge_api_createSuccessCallback(e,i[e.name]);let o=localBridgeHandlers[e.name];if(o)try{let r=utils_isRecord(e.params)?e.params:{};return bridge_api_createSuccessCallback(e,o(n,r,()=>persistSyncBridgeState(t,n)))}catch(t){return createFailedCallbackFromError(e,t)}}function emitAppletBridgeMessage(e){var t,r;if(!utils_isRecord(e)||"callback"!==e.type)return!1;let n=null==(r=globalThis.lynx)||null==(t=r.getJSModule)?void 0:t.call(r,"GlobalEventEmitter");return"function"==typeof(null==n?void 0:n.emit)?(n.emit("__APPLET_BRIDGE__",[e]),!0):"function"==typeof(null==n?void 0:n.trigger)&&(n.trigger("__APPLET_BRIDGE__",e),!0)}function createAppletBridgeModule(e,t,r){return{async postMessage(e,n){let i;if(canDispatchLocalBridgeAPI(e)){let i=dispatchSyncBridgeAPI(e,t,r);if(i)return null==n||n(i),emitAppletBridgeMessage(i)||n||await t("postMessage",i),i}try{i=await t("postMessage",e)}catch(t){i=isBridgeCallMessage(e)?createFailedCallbackFromError(e,t):void 0}return null==n||n(i),emitAppletBridgeMessage(i),i},postMessageSync(e){let n=dispatchSyncBridgeAPI(e,t,r);return n||!isBridgeCallMessage(e)?n:createFailedCallback(e,`Sync API ${e.name} is not implemented in Doubao Web SDK`)}}}export{createAppletBridgeModule,getWebSyncBridgeDataFromUrl};
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <link rel="icon" type="image/svg+xml" href="./favicon.svg" />
7
7
  <title>豆包智能服务 Web 调试工具</title>
8
- <link rel="icon" href="/favicon.svg" type="image/svg+xml"><script type="module" src="/static/js/lib-polyfill.9daa7c863e.js"></script><script type="module" src="/static/js/lib-react.6b5c1c8899.js"></script><script type="module" src="/static/js/682.de47e82f6b.js"></script><script type="module" src="/static/js/670.8a8f0f7d57.js"></script><script type="module" src="/static/js/index.75528d6de7.js"></script><link href="/static/css/index.7c65607402.css" rel="stylesheet"></head>
8
+ <link rel="icon" href="/favicon.svg" type="image/svg+xml"><script type="module" src="/static/js/lib-polyfill.9daa7c863e.js"></script><script type="module" src="/static/js/lib-react.6b5c1c8899.js"></script><script type="module" src="/static/js/682.de47e82f6b.js"></script><script type="module" src="/static/js/670.8a8f0f7d57.js"></script><script type="module" src="/static/js/index.d1bb36b355.js"></script><link href="/static/css/index.7c65607402.css" rel="stylesheet"></head>
9
9
  <body>
10
10
  <main id="app"></main>
11
11
  </body>