@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.
- package/dist/2168.js +16 -16
- package/dist/275.js +12 -14
- package/dist/2932.js +1 -1
- package/dist/318.js +1 -1
- package/dist/3974.js +22 -22
- package/dist/4525.js +1 -1
- package/dist/4880.js +1 -1
- package/dist/4931.js +2 -2
- package/dist/7410.js +1 -1
- package/dist/7417.js +204 -0
- package/dist/7417.js.LICENSE.txt +107 -0
- package/dist/7945.js +1 -0
- package/dist/8079.js +126 -0
- package/dist/{1560.js → 9091.js} +2 -2
- package/dist/9667.js +78 -0
- package/dist/{8891.js.LICENSE.txt → 9667.js.LICENSE.txt} +0 -108
- package/dist/@byted-doubao-apps/create.js +1 -1
- package/dist/@byted-doubao-apps/kit.js +1 -0
- package/dist/@byted-doubao-apps/login.js +1 -1
- package/dist/@byted-doubao-apps/login~1.js +1 -1
- package/dist/@byted-doubao-apps/template-empty/package.json +3 -3
- package/dist/@byted-doubao-apps/template-starter/package.json +3 -3
- package/dist/@byted-hdt/cli.js +1 -1
- package/dist/@inquirer/select.js +1 -1
- package/dist/app.js +1 -1
- package/dist/assets/web-sdk-debugger/__doubao_web_sdk_native_modules/applet-bridge-module-core.js +1 -1
- package/dist/assets/web-sdk-debugger/index.html +1 -1
- package/dist/assets/web-sdk-debugger/static/js/index.d1bb36b355.js +44 -0
- package/dist/assets/web-sdk-debugger/wsd/doubao-apps-api.template.js +0 -0
- package/dist/assets/web-sdk-debugger/wsd/doubao-apps-framework.template.js +0 -0
- package/dist/build.js +1 -1
- package/dist/build~1.js +6 -6
- package/dist/check.js +1 -1
- package/dist/demo-server.js +1 -1
- package/dist/dev-config.js +1 -1
- package/dist/dev-shell.js +1 -1
- package/dist/dev.js +10 -10
- package/dist/devtools.js +1 -1
- package/dist/gen-explore.js +1 -1
- package/dist/gen-trajectory.js +1 -1
- package/dist/init.js +4 -4
- package/dist/ink.js +1 -1
- package/dist/inquirer.js +1 -0
- package/dist/json-file.js +1 -1
- package/dist/kit-dev-options.js +1 -1
- package/dist/legacy-upload.js +1 -1
- package/dist/lepus.js +1 -1
- package/dist/ora.js +1 -1
- package/dist/project-layout.js +1 -1
- package/dist/prompt.js +1 -1
- package/dist/prompts.js +1 -1
- package/dist/report.js +1 -1
- package/dist/run-registry.js +1 -1
- package/dist/run.js +44 -44
- package/dist/sandbox.js +1 -1
- package/dist/scan.js +1 -1
- package/dist/sdk.js +63 -188
- package/dist/sdk~1.js +50 -50
- package/dist/server.js +1 -1
- package/dist/skill.js +1 -1
- package/dist/skills.js +1 -1
- package/dist/skills~1.js +2 -1
- package/dist/static/assets/web-view-proxy-bootstrap.js +1 -0
- package/dist/static/assets/web-view-proxy-page-client.js +1 -1
- package/dist/static/assets/web-view-proxy-service-worker.js +1 -1
- package/dist/status~1.js +1 -1
- package/dist/stop.js +1 -1
- package/dist/sync.js +1 -1
- package/dist/templates/README.md +0 -1
- package/dist/update.js +1 -1
- package/dist/workspace.js +1 -1
- package/dist/wrapper.js +1 -0
- package/dist/yaml.js +1 -1
- package/package.json +2 -2
- package/skills/dbx-eval/SKILL.md +15 -7
- package/skills/doubao-agentic-service-development/SKILL.md +1 -1
- package/skills/doubao-agentic-service-development/references/auth.md +1 -1
- package/skills/doubao-agentic-service-development/references/dev-debug.md +3 -3
- package/skills/doubao-agentic-service-development/references/frontend/components/map-canvas.md +1 -1
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/07-/347/225/214/351/235/242.md +0 -6
- package/skills/doubao-agentic-service-development/references/frontend/guides/debugger-mcp.md +2 -2
- package/skills/doubao-agentic-service-development/references/frontend/widget-templates/props.md +1 -1
- package/skills/doubao-agentic-service-development/references/frontend-dev.md +3 -3
- package/skills/doubao-agentic-service-development/references/local-debug/overview.md +2 -2
- package/skills/doubao-agentic-service-development/references/overview.md +16 -31
- package/skills/doubao-agentic-service-development/scripts/workspace.py +6 -89
- package/dist/180.js +0 -1
- package/dist/8891.js +0 -280
- package/dist/9635.js +0 -1
- package/dist/assets/web-sdk-debugger/static/js/index.75528d6de7.js +0 -26
- package/dist/dbx.js +0 -3
- package/dist/skills~2.js +0 -2
|
@@ -1,43 +1,3 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Tmp
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>
|
|
5
|
-
*
|
|
6
|
-
* MIT Licensed
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/*!
|
|
10
|
-
* depd
|
|
11
|
-
* Copyright(c) 2014-2018 Douglas Christopher Wilson
|
|
12
|
-
* MIT Licensed
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
/*!
|
|
16
|
-
* ee-first
|
|
17
|
-
* Copyright(c) 2014 Jonathan Ong
|
|
18
|
-
* MIT Licensed
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/*!
|
|
22
|
-
* encodeurl
|
|
23
|
-
* Copyright(c) 2016 Douglas Christopher Wilson
|
|
24
|
-
* MIT Licensed
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
|
-
/*!
|
|
28
|
-
* escape-html
|
|
29
|
-
* Copyright(c) 2012-2013 TJ Holowaychuk
|
|
30
|
-
* Copyright(c) 2015 Andreas Lubbe
|
|
31
|
-
* Copyright(c) 2015 Tiancheng "Timothy" Gu
|
|
32
|
-
* MIT Licensed
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
/*!
|
|
36
|
-
* etag
|
|
37
|
-
* Copyright(c) 2014-2016 Douglas Christopher Wilson
|
|
38
|
-
* MIT Licensed
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
1
|
/*!
|
|
42
2
|
* fill-range <https://github.com/jonschlinkert/fill-range>
|
|
43
3
|
*
|
|
@@ -45,20 +5,6 @@
|
|
|
45
5
|
* Licensed under the MIT License.
|
|
46
6
|
*/
|
|
47
7
|
|
|
48
|
-
/*!
|
|
49
|
-
* fresh
|
|
50
|
-
* Copyright(c) 2012 TJ Holowaychuk
|
|
51
|
-
* Copyright(c) 2016-2017 Douglas Christopher Wilson
|
|
52
|
-
* MIT Licensed
|
|
53
|
-
*/
|
|
54
|
-
|
|
55
|
-
/*!
|
|
56
|
-
* http-errors
|
|
57
|
-
* Copyright(c) 2014 Jonathan Ong
|
|
58
|
-
* Copyright(c) 2016 Douglas Christopher Wilson
|
|
59
|
-
* MIT Licensed
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
8
|
/*!
|
|
63
9
|
* is-extglob <https://github.com/jonschlinkert/is-extglob>
|
|
64
10
|
*
|
|
@@ -80,20 +26,6 @@
|
|
|
80
26
|
* Released under the MIT License.
|
|
81
27
|
*/
|
|
82
28
|
|
|
83
|
-
/*!
|
|
84
|
-
* mime-db
|
|
85
|
-
* Copyright(c) 2014 Jonathan Ong
|
|
86
|
-
* Copyright(c) 2015-2022 Douglas Christopher Wilson
|
|
87
|
-
* MIT Licensed
|
|
88
|
-
*/
|
|
89
|
-
|
|
90
|
-
/*!
|
|
91
|
-
* mime-types
|
|
92
|
-
* Copyright(c) 2014 Jonathan Ong
|
|
93
|
-
* Copyright(c) 2015 Douglas Christopher Wilson
|
|
94
|
-
* MIT Licensed
|
|
95
|
-
*/
|
|
96
|
-
|
|
97
29
|
/*!
|
|
98
30
|
* normalize-path <https://github.com/jonschlinkert/normalize-path>
|
|
99
31
|
*
|
|
@@ -101,34 +33,6 @@
|
|
|
101
33
|
* Released under the MIT License.
|
|
102
34
|
*/
|
|
103
35
|
|
|
104
|
-
/*!
|
|
105
|
-
* on-finished
|
|
106
|
-
* Copyright(c) 2013 Jonathan Ong
|
|
107
|
-
* Copyright(c) 2014 Douglas Christopher Wilson
|
|
108
|
-
* MIT Licensed
|
|
109
|
-
*/
|
|
110
|
-
|
|
111
|
-
/*!
|
|
112
|
-
* range-parser
|
|
113
|
-
* Copyright(c) 2012-2014 TJ Holowaychuk
|
|
114
|
-
* Copyright(c) 2015-2016 Douglas Christopher Wilson
|
|
115
|
-
* MIT Licensed
|
|
116
|
-
*/
|
|
117
|
-
|
|
118
|
-
/*!
|
|
119
|
-
* send
|
|
120
|
-
* Copyright(c) 2012 TJ Holowaychuk
|
|
121
|
-
* Copyright(c) 2014-2022 Douglas Christopher Wilson
|
|
122
|
-
* MIT Licensed
|
|
123
|
-
*/
|
|
124
|
-
|
|
125
|
-
/*!
|
|
126
|
-
* statuses
|
|
127
|
-
* Copyright(c) 2014 Jonathan Ong
|
|
128
|
-
* Copyright(c) 2016 Douglas Christopher Wilson
|
|
129
|
-
* MIT Licensed
|
|
130
|
-
*/
|
|
131
|
-
|
|
132
36
|
/*!
|
|
133
37
|
* to-regex-range <https://github.com/micromatch/to-regex-range>
|
|
134
38
|
*
|
|
@@ -136,18 +40,6 @@
|
|
|
136
40
|
* Released under the MIT License.
|
|
137
41
|
*/
|
|
138
42
|
|
|
139
|
-
/*!
|
|
140
|
-
* toidentifier
|
|
141
|
-
* Copyright(c) 2016 Douglas Christopher Wilson
|
|
142
|
-
* MIT Licensed
|
|
143
|
-
*/
|
|
144
|
-
|
|
145
|
-
/*!
|
|
146
|
-
* content-type
|
|
147
|
-
* Copyright(c) 2015 Douglas Christopher Wilson
|
|
148
|
-
* MIT Licensed
|
|
149
|
-
*/
|
|
150
|
-
|
|
151
43
|
/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */
|
|
152
44
|
|
|
153
45
|
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"node:module";import{__webpack_require__ as e}from"../rslib-runtime.js";import"../
|
|
1
|
+
import"node:module";import{__webpack_require__ as e}from"../rslib-runtime.js";import"../7945.js";let t=e("node:path"),r=e("node:fs"),o=t.join("src","app.config.ts"),i=t.join("src","app.ts");function a(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}async function s(e,n,c=""){for(let s of[o,i].map(r=>t.join(e,r))){let e;try{e=await r.promises.readFile(s,"utf8")}catch(e){if(e?.code==="ENOENT")continue;throw e}let t=e.replace("<%= appId %>",a(n)).replace("<%= name %>",a(c));t!==e&&await r.promises.writeFile(s,t,"utf8")}}let n=new Set(["node_modules","dist",".git"]);async function c(e,o){let i=async(e,o)=>{for(let a of(await r.promises.mkdir(o,{recursive:!0}),await r.promises.readdir(e,{withFileTypes:!0}))){let s=t.join(e,a.name),c=t.join(o,a.name);if(a.isDirectory()){if(n.has(a.name))continue;await i(s,c)}else await r.promises.copyFile(s,c)}};await i(e,o)}let p=new Set([".js",".cjs",".mjs",".ts",".tsx",".jsx",".json",".md",".txt",".scss",".css",".less",".html",".yml",".yaml"]),l=[["@byted-doubao-apps/framework","@doubao-dev/framework"],["@byted-doubao-apps/template","@doubao-dev/template"],["@byted-doubao-apps/taro-runtime","@doubao-dev/taro-runtime"]],d=["doubao.config.ts"],u=["@byted-doubao-apps/deploy","@byted-doubao-apps/kit","@byted-doubao-apps/ai","@byted-doubao-apps/create","@doubao-dev/deploy","@doubao-dev/kit","@doubao-dev/ai","@doubao-dev/create"],f=["dev","build","deploy"],m=["# Start development server","pnpm dev","pnpm run dev","pnpm run build","pnpm run deploy","开发服务器启动后","## 构建","doubao.config.ts","部署到豆包平台"];function w(e){let t=e;for(let[e,r]of l)t=t.replace(RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),r);return t}async function y(e,o){for(let a of(await r.promises.readdir(e,{withFileTypes:!0}))){var i;let s=t.join(e,a.name);if(function(e){return d.some(t=>t===e)}(a.name)){await r.promises.rm(s,{recursive:!0,force:!0});continue}if(a.isDirectory()){await y(s,o);continue}if(i=a.name,!p.has(t.extname(i))&&"package.json"!==i&&"tsconfig.json"!==i)continue;let n=await r.promises.readFile(s,"utf-8");await r.promises.writeFile(s,function(e,t,r){if("package.json"===e){let e=JSON.parse(w(t));if(e.scripts&&"object"==typeof e.scripts){for(let t of f)delete e.scripts[t];0===Object.keys(e.scripts).length&&delete e.scripts}for(let t of["dependencies","devDependencies","peerDependencies"])if(e[t]&&"object"==typeof e[t]){for(let o of Object.keys(e[t]))u.some(e=>e===o)?delete e[t][o]:o.startsWith("@doubao-dev/")&&(e[t][o]="latest"===r?r:`^${r}`);0===Object.keys(e[t]).length&&delete e[t]}return`${JSON.stringify(e,null,2)}
|
|
2
2
|
`}return"README.md"===e||"AGENTS.md"===e?w(t).replace(/\n## AI 开发支持\n[\s\S]*?(?=\n## |\s*$)/,"").split("\n").filter(e=>!m.some(t=>e.includes(t))).join("\n").replace(/```bash\n```/g,"").replace(/\n{3,}/g,"\n\n"):w(t)}(a.name,n,o))}}async function b(e,o){let i=t.join(e,"package.json");if(!r.existsSync(i))throw Error("模板中未找到 package.json");let a=JSON.parse(r.readFileSync(i,"utf-8"));a.name=o,r.writeFileSync(i,`${JSON.stringify(a,null,2)}
|
|
3
3
|
`)}let g=["starter","empty"],h=e("node:child_process"),j=(0,e("node:url").fileURLToPath)(import.meta.url),E=t.dirname(j),$={".gitignore":["dist","node_modules",".DS_Store"]};async function v(e){for(let[o,i]of Object.entries($))await r.promises.writeFile(t.join(e,o),`${i.join("\n")}
|
|
4
4
|
`)}async function S(e){let o=t.join(e,".git");if(!await r.promises.stat(o).then(e=>e.isDirectory()).catch(e=>{if(e?.code==="ENOENT")return!1;throw e}))try{(0,h.execFileSync)("git",["init"],{cwd:e,stdio:"ignore"})}catch(t){if(t?.code==="ENOENT")return;throw Error(`初始化 git 仓库失败:${e}`,{cause:t})}}async function _(e,t){let o;try{o=await r.promises.stat(e)}catch(r){if(r?.code==="ENOENT")throw Error(`未找到${t}目录:${e}`,{cause:r});throw Error(`无法访问${t}目录:${e}`,{cause:r})}if(!o.isDirectory())throw Error(`${t}路径不是目录:${e}`)}async function N({template:e,projectDir:o,public:i=!0,git:a=!0,appId:n,name:p,packageName:l,overwrite:d,login:u=!1}){if(!t.isAbsolute(o))throw Error(`项目目录必须是绝对路径:${o}`);if(!g.includes(e))throw Error(`模板无效:${e}。可选项:${g.join(", ")}`);let f=t.resolve(E,`template-${e}`),m=u?t.resolve(E,"template-login"):null;if(await _(f,"模板"),m&&await _(m,"登录模板"),await r.promises.stat(o).then(e=>{if(!e.isDirectory())throw Error(`项目路径不是目录:${o}`);return!0}).catch(e=>{if(e?.code==="ENOENT")return!1;throw Error(`无法访问项目目录:${o}`,{cause:e})})){if((await r.promises.readdir(o)).length>0&&!d)throw Error(`项目目录不为空:${o}`)}else await r.promises.mkdir(o,{recursive:!0});await c(f,o),m&&await c(m,o),i&&await y(o,"latest"),await v(o),a&&await S(o);let w=l??t.basename(o).trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z0-9-~._]+/g,"-");await b(o,w),await s(o,n??"db_app_xxxxxxx",p??"")}export{N as create};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"node:module";import"../3551.js";let e=e=>e,r=e=>e;export{CloudBuildLauncher,DEBUG_DRIVER_NAMES,DebugDriverType,isDebugDriverName,selectDevServerHost}from"../8079.js";export{r as defineAppConfig,e as defineConfig};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let e,t;import"node:module";import{__webpack_require__ as o}from"../rslib-runtime.js";import"../
|
|
1
|
+
let e,t;import"node:module";import{__webpack_require__ as o}from"../rslib-runtime.js";import"../7945.js";import{getErrorMessage as r}from"../8079.js";let i="pnpm --filter @byted-doubao-apps/login exec playwright-core install chromium";async function n(){try{let{chromium:e}=await import("node:module").then(function(e){return o.t(e.createRequire(import.meta.url)("playwright-core"),18)});return e}catch(e){throw Error(`Unable to load Playwright Core for CLI login. It is installed through @byted-doubao-apps/kit -> @byted-doubao-apps/login, so users should not install playwright-core separately. Reinstall or upgrade @byted-doubao-apps/kit; when developing inside this repo, run pnpm install once to refresh workspace links. Cause: ${r(e)}`)}}function a(e,t){return"Playwright Chromium"===e.label&&/Executable doesn't exist|Looks like Playwright was just installed|playwright install|ms-playwright|chromium_headless_shell/i.test(r(t))?`${e.label}: optional fallback browser is not installed. Prefer installing Google Chrome or Microsoft Edge. If you still need this fallback, run \`${i}\`.`:`${e.label}: ${r(t).split("\n").find(Boolean)??"Unknown error"}`}let s="doubao-apps-sdk",l=Function("specifier","return import(specifier)");function u(e){"applet0930"===process.env.DEBUG&&console.warn(e)}async function c(){try{let e=await l("@napi-rs/keyring"),t=e.default??e;if("object"==typeof t&&null!==t&&"function"==typeof t.Entry)return function({Entry:e}){return{getPassword:async(t,o)=>await Promise.resolve(new e(t,o).getPassword()),async setPassword(t,o,r){await Promise.resolve(new e(t,o).setPassword(r))},deletePassword:async(t,o)=>await Promise.resolve(new e(t,o).deletePassword())}}(t);u("[login] System credential store is unavailable: invalid @napi-rs/keyring module.")}catch(e){u(`[login] System credential store is unavailable. Cause: ${r(e)}`)}}function d({route:e,targetUrl:t}){return`login-cookie:${e}:${t}`}function p(){return void 0!==t?Promise.resolve(t??void 0):(e??(e=c()),e)}let f={"sso-internal":{route:"sso",targetUrl:"https://doubao-developer.bytedance.net",loginUrl:"https://doubao-developer.bytedance.net",cookieNames:["sso_sessionid","sso_sessionid_ss","sessionid","sessionid_ss","sid_guard","sid_tt"],cookieNamePrefixes:["bd_sso_"]},"sms-internal":{route:"sms",targetUrl:"https://doubao-developer-open.bytedance.net",loginUrl:"https://doubao-developer-open.bytedance.net",cookieNames:["sessionid","sessionid_ss","sid_guard","sid_tt","sid_ucp_v1","ssid_ucp_v1"]},"sms-external":{route:"sms",targetUrl:"https://hello.doubao-dev.com",loginUrl:"https://hello.doubao-dev.com",cookieNames:["sessionid_doubao_open","sessionid_ss_doubao_open","sid_guard_doubao_open","sid_tt_doubao_open","sid_ucp_v1_doubao_open","ssid_ucp_v1_doubao_open"]}},m={sso:f["sso-internal"],sms:f["sms-external"]};function h(e){if(!e||"sso"===e)return"sso";if("sms"===e)return"sms";throw Error(`Unsupported login route "${e}". Expected "sso" or "sms".`)}let w=["sso_sessionid","sso_uid","passport_csrf_token","XSRF-TOKEN"];function g(e){let t=w.indexOf(e.name);return -1===t?w.length:t}function y(e,t){let{cookieNames:o,cookieNamePrefixes:r=[]}=m[h(e)];return o.includes(t)||r.some(e=>t.startsWith(e))}function b(e,t){return!!t&&t.split(";").some(t=>{let o=t.trim(),r=o.indexOf("=");if(r<=0||r===o.length-1)return!1;let i=o.slice(0,r);return!!o.slice(r+1).trim()&&y(e,i)})}async function _(e,t,o){var r;let i,n=await e.cookies([o,`${o}/`]);return{cookies:n,cookieHeader:(r=n,i=new Map,r.forEach(e=>{e.name&&e.value&&i.set(`${e.name};${e.domain??""};${e.path??""}`,e)}),[...Array.from(i.values())].sort((e,t)=>{let o=g(e)-g(t);if(0!==o)return o;let r=e.path?.length??0,i=t.path?.length??0;return r!==i?i-r:e.name.localeCompare(t.name)}).map(e=>`${e.name}=${e.value}`).join("; ")),expiresAt:function(e,t){let o=t.filter(t=>t.name&&t.value&&y(e,t.name)).map(e=>e.expires).filter(e=>Number.isFinite(e)&&e>0).map(e=>1e3*e);if(o.length)return Math.min(...o)}(t,n)}}async function k({route:e,targetUrl:t}){let o=await p();if(!o)return"";try{let r=await o.getPassword(s,d({route:e,targetUrl:t}));if(!r)return"";let i=function(e){try{let t=JSON.parse(e);if(t?.version!==1||"string"!=typeof t.cookieHeader||"number"!=typeof t.expiresAt||!Number.isFinite(t.expiresAt))return;return{version:1,cookieHeader:t.cookieHeader,expiresAt:t.expiresAt}}catch{return}}(r);if(!i||i.expiresAt<=Date.now()||!b(e,i.cookieHeader))return"";return i.cookieHeader}catch(e){return u(`[login] Failed to read login cookie from system credential store. Cause: ${r(e)}`),""}}async function v({route:e,targetUrl:t,cookieHeader:o,expiresAt:i}){if(!b(e,o)||!i||!Number.isFinite(i)||i<=Date.now())return;let n=await p();if(n)try{await n.setPassword(s,d({route:e,targetUrl:t}),JSON.stringify({version:1,cookieHeader:o,expiresAt:i}))}catch(e){u(`[login] Failed to write login cookie to system credential store. Cause: ${r(e)}`)}}async function C(){let e=await p();if(!e?.deletePassword)return 0;let t=0;for(let o of Array.from(new Set(Object.values(f).map(({route:e,targetUrl:t})=>d({route:e,targetUrl:t})))))try{let r=await e.deletePassword(s,o);!1!==r&&(t+=1)}catch(e){if(function(e){let t=r(e).toLowerCase();return t.includes("noentry")||t.includes("no entry")||t.includes("no matching")||t.includes("no credential")||t.includes("not found")||t.includes("not exist")||t.includes("could not be found")}(e))continue;throw u(`[login] Failed to delete login cookie from system credential store. Cause: ${r(e)}`),e}return t}let P=o("node:fs/promises"),x=o("node:os"),$=o("node:path");function E(e){return $.join(x.homedir(),".doubao-apps","login-profiles",e)}async function H(e=["sso","sms"].map(e=>E(e))){let t=[];for(let o of e)await P.rm(o,{recursive:!0,force:!0}),t.push(o);return t}async function A({chromium:e,candidate:t,route:o,profileDir:r,targetUrl:i}){let n=await e.launchPersistentContext(r,{...t.launchOptions,headless:!0});try{let e=await _(n,o,i);return b(o,e.cookieHeader)?e:void 0}finally{await n.close()}}async function U(e,t){let o=e.pages()[0]??await e.newPage();await o.goto(t,{waitUntil:"domcontentloaded"})}async function N({context:e,route:t,targetUrl:o,timeoutMs:r,pollIntervalMs:i}){let n=Date.now()+r;for(;Date.now()<=n;){let r=await _(e,t,o);if(b(t,r.cookieHeader))return r;await function(e){return new Promise(t=>setTimeout(t,e))}(i)}throw Error(`Timed out waiting for ${t} login cookie after ${r}ms`)}async function O(e,t={}){let o=h(t.route),{targetUrl:r,loginUrl:n}=m[h(o)],s=t.profileDir??E(o),l=t.timeoutMs??3e5,u=t.pollIntervalMs??1e3,c=function(e){if(e.browserPath)return[{label:`custom browser at ${e.browserPath}`,launchOptions:{executablePath:e.browserPath}}];let t={label:"Google Chrome",launchOptions:{channel:"chrome"}},o={label:"Microsoft Edge",launchOptions:{channel:"msedge"}},r={label:"Playwright Chromium",launchOptions:{}};switch(function(e){if(!e||"auto"===e)return"auto";if("chrome"===e||"msedge"===e||"chromium"===e)return e;throw Error(`Unsupported login browser "${e}". Expected "auto", "chrome", "msedge", or "chromium".`)}(e.browser)){case"chrome":return[t];case"msedge":return[o];case"chromium":return[r];case"auto":return[t,o,r]}}(t),d=[];if(!t.force){if(!t.skipCachedCookie){let e=await k({route:o,targetUrl:r});if(e)return e}for(let t of c)try{let i=await A({chromium:e,candidate:t,route:o,profileDir:s,targetUrl:r});if(i)return await v({route:o,targetUrl:r,cookieHeader:i.cookieHeader,expiresAt:i.expiresAt}),i.cookieHeader;break}catch(e){d.push(a(t,e))}}for(let i of c){let c;try{c=await e.launchPersistentContext(s,{...i.launchOptions,headless:!1,viewport:{width:1120,height:820}})}catch(e){d.push(a(i,e));continue}try{t.force&&await c.clearCookies(),await U(c,n);let e=await N({context:c,route:o,targetUrl:r,timeoutMs:l,pollIntervalMs:u});return await v({route:o,targetUrl:r,cookieHeader:e.cookieHeader,expiresAt:e.expiresAt}),e.cookieHeader}finally{await c.close()}}throw Error(["Unable to launch a browser for CLI login.",d.some(e=>e.includes("optional fallback browser is not installed"))?"Optional Playwright Chromium fallback browser is not installed.":"","Recommended: install Google Chrome or Microsoft Edge and retry.","Alternative: pass --login-browser-path to a Chromium-based browser executable.","Fallback: if you cannot install Chrome or Edge, install Playwright Chromium with:",` ${i}`,d.length?`Launch failures:
|
|
2
2
|
${d.map(e=>`- ${e}`).join("\n")}`:""].filter(Boolean).join("\n"))}async function S(e={}){let t=h(e.route),{targetUrl:o}=m[h(t)];return await k({route:t,targetUrl:o})||void 0}async function M(e={}){let t=h(e.route),{targetUrl:o}=m[h(t)],r=e.profileDir??E(t);if(!e.force){let e=await k({route:t,targetUrl:o});if(e)return e}return O(await n(),{...e,route:t,profileDir:r,skipCachedCookie:!0})}async function F(){let e=await H();return{credentialEntriesDeleted:await C(),profileDirsDeleted:e}}export{F as clearLoginState,M as ensureLoginCookie,S as getCachedLoginCookie};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let e,t;import"node:module";import{__webpack_require__ as o}from"../rslib-runtime.js";import"../
|
|
1
|
+
let e,t;import"node:module";import{__webpack_require__ as o}from"../rslib-runtime.js";import"../7945.js";import{error_getErrorMessage as r}from"../sdk~1.js";let i="pnpm --filter @byted-doubao-apps/login exec playwright-core install chromium";async function n(){try{let{chromium:e}=await import("node:module").then(function(e){return o.t(e.createRequire(import.meta.url)("playwright-core"),18)});return e}catch(e){throw Error(`Unable to load Playwright Core for CLI login. It is installed through @byted-doubao-apps/kit -> @byted-doubao-apps/login, so users should not install playwright-core separately. Reinstall or upgrade @byted-doubao-apps/kit; when developing inside this repo, run pnpm install once to refresh workspace links. Cause: ${r(e)}`)}}function a(e,t){return"Playwright Chromium"===e.label&&/Executable doesn't exist|Looks like Playwright was just installed|playwright install|ms-playwright|chromium_headless_shell/i.test(r(t))?`${e.label}: optional fallback browser is not installed. Prefer installing Google Chrome or Microsoft Edge. If you still need this fallback, run \`${i}\`.`:`${e.label}: ${r(t).split("\n").find(Boolean)??"Unknown error"}`}let s="doubao-apps-sdk",l=Function("specifier","return import(specifier)");function u(e){"applet0930"===process.env.DEBUG&&console.warn(e)}async function c(){try{let e=await l("@napi-rs/keyring"),t=e.default??e;if("object"==typeof t&&null!==t&&"function"==typeof t.Entry)return function({Entry:e}){return{getPassword:async(t,o)=>await Promise.resolve(new e(t,o).getPassword()),async setPassword(t,o,r){await Promise.resolve(new e(t,o).setPassword(r))},deletePassword:async(t,o)=>await Promise.resolve(new e(t,o).deletePassword())}}(t);u("[login] System credential store is unavailable: invalid @napi-rs/keyring module.")}catch(e){u(`[login] System credential store is unavailable. Cause: ${r(e)}`)}}function d({route:e,targetUrl:t}){return`login-cookie:${e}:${t}`}function p(){return void 0!==t?Promise.resolve(t??void 0):(e??(e=c()),e)}let f={"sso-internal":{route:"sso",targetUrl:"https://doubao-developer.bytedance.net",loginUrl:"https://doubao-developer.bytedance.net",cookieNames:["sso_sessionid","sso_sessionid_ss","sessionid","sessionid_ss","sid_guard","sid_tt"],cookieNamePrefixes:["bd_sso_"]},"sms-internal":{route:"sms",targetUrl:"https://doubao-developer-open.bytedance.net",loginUrl:"https://doubao-developer-open.bytedance.net",cookieNames:["sessionid","sessionid_ss","sid_guard","sid_tt","sid_ucp_v1","ssid_ucp_v1"]},"sms-external":{route:"sms",targetUrl:"https://hello.doubao-dev.com",loginUrl:"https://hello.doubao-dev.com",cookieNames:["sessionid_doubao_open","sessionid_ss_doubao_open","sid_guard_doubao_open","sid_tt_doubao_open","sid_ucp_v1_doubao_open","ssid_ucp_v1_doubao_open"]}},m={sso:f["sso-internal"],sms:f["sms-external"]};function h(e){if(!e||"sso"===e)return"sso";if("sms"===e)return"sms";throw Error(`Unsupported login route "${e}". Expected "sso" or "sms".`)}let w=["sso_sessionid","sso_uid","passport_csrf_token","XSRF-TOKEN"];function g(e){let t=w.indexOf(e.name);return -1===t?w.length:t}function y(e,t){let{cookieNames:o,cookieNamePrefixes:r=[]}=m[h(e)];return o.includes(t)||r.some(e=>t.startsWith(e))}function b(e,t){return!!t&&t.split(";").some(t=>{let o=t.trim(),r=o.indexOf("=");if(r<=0||r===o.length-1)return!1;let i=o.slice(0,r);return!!o.slice(r+1).trim()&&y(e,i)})}async function _(e,t,o){var r;let i,n=await e.cookies([o,`${o}/`]);return{cookies:n,cookieHeader:(r=n,i=new Map,r.forEach(e=>{e.name&&e.value&&i.set(`${e.name};${e.domain??""};${e.path??""}`,e)}),[...Array.from(i.values())].sort((e,t)=>{let o=g(e)-g(t);if(0!==o)return o;let r=e.path?.length??0,i=t.path?.length??0;return r!==i?i-r:e.name.localeCompare(t.name)}).map(e=>`${e.name}=${e.value}`).join("; ")),expiresAt:function(e,t){let o=t.filter(t=>t.name&&t.value&&y(e,t.name)).map(e=>e.expires).filter(e=>Number.isFinite(e)&&e>0).map(e=>1e3*e);if(o.length)return Math.min(...o)}(t,n)}}async function k({route:e,targetUrl:t}){let o=await p();if(!o)return"";try{let r=await o.getPassword(s,d({route:e,targetUrl:t}));if(!r)return"";let i=function(e){try{let t=JSON.parse(e);if(t?.version!==1||"string"!=typeof t.cookieHeader||"number"!=typeof t.expiresAt||!Number.isFinite(t.expiresAt))return;return{version:1,cookieHeader:t.cookieHeader,expiresAt:t.expiresAt}}catch{return}}(r);if(!i||i.expiresAt<=Date.now()||!b(e,i.cookieHeader))return"";return i.cookieHeader}catch(e){return u(`[login] Failed to read login cookie from system credential store. Cause: ${r(e)}`),""}}async function v({route:e,targetUrl:t,cookieHeader:o,expiresAt:i}){if(!b(e,o)||!i||!Number.isFinite(i)||i<=Date.now())return;let n=await p();if(n)try{await n.setPassword(s,d({route:e,targetUrl:t}),JSON.stringify({version:1,cookieHeader:o,expiresAt:i}))}catch(e){u(`[login] Failed to write login cookie to system credential store. Cause: ${r(e)}`)}}async function C(){let e=await p();if(!e?.deletePassword)return 0;let t=0;for(let o of Array.from(new Set(Object.values(f).map(({route:e,targetUrl:t})=>d({route:e,targetUrl:t})))))try{let r=await e.deletePassword(s,o);!1!==r&&(t+=1)}catch(e){if(function(e){let t=r(e).toLowerCase();return t.includes("noentry")||t.includes("no entry")||t.includes("no matching")||t.includes("no credential")||t.includes("not found")||t.includes("not exist")||t.includes("could not be found")}(e))continue;throw u(`[login] Failed to delete login cookie from system credential store. Cause: ${r(e)}`),e}return t}let P=o("node:fs/promises"),x=o("node:os"),$=o("node:path");function E(e){return $.join(x.homedir(),".doubao-apps","login-profiles",e)}async function H(e=["sso","sms"].map(e=>E(e))){let t=[];for(let o of e)await P.rm(o,{recursive:!0,force:!0}),t.push(o);return t}async function A({chromium:e,candidate:t,route:o,profileDir:r,targetUrl:i}){let n=await e.launchPersistentContext(r,{...t.launchOptions,headless:!0});try{let e=await _(n,o,i);return b(o,e.cookieHeader)?e:void 0}finally{await n.close()}}async function U(e,t){let o=e.pages()[0]??await e.newPage();await o.goto(t,{waitUntil:"domcontentloaded"})}async function N({context:e,route:t,targetUrl:o,timeoutMs:r,pollIntervalMs:i}){let n=Date.now()+r;for(;Date.now()<=n;){let r=await _(e,t,o);if(b(t,r.cookieHeader))return r;await function(e){return new Promise(t=>setTimeout(t,e))}(i)}throw Error(`Timed out waiting for ${t} login cookie after ${r}ms`)}async function O(e,t={}){let o=h(t.route),{targetUrl:r,loginUrl:n}=m[h(o)],s=t.profileDir??E(o),l=t.timeoutMs??3e5,u=t.pollIntervalMs??1e3,c=function(e){if(e.browserPath)return[{label:`custom browser at ${e.browserPath}`,launchOptions:{executablePath:e.browserPath}}];let t={label:"Google Chrome",launchOptions:{channel:"chrome"}},o={label:"Microsoft Edge",launchOptions:{channel:"msedge"}},r={label:"Playwright Chromium",launchOptions:{}};switch(function(e){if(!e||"auto"===e)return"auto";if("chrome"===e||"msedge"===e||"chromium"===e)return e;throw Error(`Unsupported login browser "${e}". Expected "auto", "chrome", "msedge", or "chromium".`)}(e.browser)){case"chrome":return[t];case"msedge":return[o];case"chromium":return[r];case"auto":return[t,o,r]}}(t),d=[];if(!t.force){if(!t.skipCachedCookie){let e=await k({route:o,targetUrl:r});if(e)return e}for(let t of c)try{let i=await A({chromium:e,candidate:t,route:o,profileDir:s,targetUrl:r});if(i)return await v({route:o,targetUrl:r,cookieHeader:i.cookieHeader,expiresAt:i.expiresAt}),i.cookieHeader;break}catch(e){d.push(a(t,e))}}for(let i of c){let c;try{c=await e.launchPersistentContext(s,{...i.launchOptions,headless:!1,viewport:{width:1120,height:820}})}catch(e){d.push(a(i,e));continue}try{t.force&&await c.clearCookies(),await U(c,n);let e=await N({context:c,route:o,targetUrl:r,timeoutMs:l,pollIntervalMs:u});return await v({route:o,targetUrl:r,cookieHeader:e.cookieHeader,expiresAt:e.expiresAt}),e.cookieHeader}finally{await c.close()}}throw Error(["Unable to launch a browser for CLI login.",d.some(e=>e.includes("optional fallback browser is not installed"))?"Optional Playwright Chromium fallback browser is not installed.":"","Recommended: install Google Chrome or Microsoft Edge and retry.","Alternative: pass --login-browser-path to a Chromium-based browser executable.","Fallback: if you cannot install Chrome or Edge, install Playwright Chromium with:",` ${i}`,d.length?`Launch failures:
|
|
2
2
|
${d.map(e=>`- ${e}`).join("\n")}`:""].filter(Boolean).join("\n"))}async function S(e={}){let t=h(e.route),{targetUrl:o}=m[h(t)];return await k({route:t,targetUrl:o})||void 0}async function M(e={}){let t=h(e.route),{targetUrl:o}=m[h(t)],r=e.profileDir??E(t);if(!e.force){let e=await k({route:t,targetUrl:o});if(e)return e}return O(await n(),{...e,route:t,profileDir:r,skipCachedCookie:!0})}async function F(){let e=await H();return{credentialEntriesDeleted:await C(),profileDirsDeleted:e}}export{F as clearLoginState,M as ensureLoginCookie,S as getCachedLoginCookie};
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
"build": "doubao build"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@byted-doubao-apps/framework": "0.
|
|
10
|
-
"@byted-doubao-apps/template": "0.
|
|
9
|
+
"@byted-doubao-apps/framework": "0.3.0-rc.2",
|
|
10
|
+
"@byted-doubao-apps/template": "0.3.0-rc.2"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"@byted-doubao-apps/kit": "0.
|
|
13
|
+
"@byted-doubao-apps/kit": "0.3.0-rc.2",
|
|
14
14
|
"typescript": "6.0.3"
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"test": "rstest"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@byted-doubao-apps/framework": "0.
|
|
13
|
-
"@byted-doubao-apps/template": "0.
|
|
12
|
+
"@byted-doubao-apps/framework": "0.3.0-rc.2",
|
|
13
|
+
"@byted-doubao-apps/template": "0.3.0-rc.2"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@byted-doubao-apps/kit": "0.
|
|
16
|
+
"@byted-doubao-apps/kit": "0.3.0-rc.2",
|
|
17
17
|
"@rstest/core": "^0.11.0",
|
|
18
18
|
"typescript": "6.0.3"
|
|
19
19
|
}
|