@doubao-dev/cli 0.0.19 → 0.0.20
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/2514.js +8 -8
- package/dist/2932.js +1 -1
- package/dist/318.js +1 -1
- package/dist/3494.js +284 -0
- package/dist/{1122.js.LICENSE.txt → 3494.js.LICENSE.txt} +6 -0
- package/dist/4931.js +1 -1
- package/dist/7410.js +1 -1
- package/dist/{1664.js → 8713.js} +3 -3
- package/dist/@byted-doubao-apps/create.js +1 -1
- 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/README.md +0 -2
- package/dist/@byted-doubao-apps/template-empty/package.json +3 -3
- package/dist/@byted-doubao-apps/template-starter/README.md +1 -1
- 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/@lynx-js/web-core-canary.js +2 -13
- package/dist/@lynx-js/web-core-canary~1.js +2 -0
- package/dist/app.js +1 -1
- package/dist/assets/web-sdk-debugger/chrome-devtools/entrypoints/devtools_app/devtools_app.js +9 -7
- package/dist/assets/web-sdk-debugger/chrome-devtools/panels/wsd-debug/WsdDebug.js +9 -7
- package/dist/assets/web-sdk-debugger/chrome-devtools/panels/wsd-debug/WsdDebugMeta.js +79 -77
- package/dist/assets/web-sdk-debugger/index.html +1 -1
- package/dist/assets/web-sdk-debugger/static/css/index.9952f4197c.css +1 -0
- package/dist/assets/web-sdk-debugger/static/js/{741.ece428827e.js → 48.8c158322ee.js} +60 -67
- package/dist/assets/web-sdk-debugger/static/js/48.8c158322ee.js.LICENSE.txt +5 -0
- package/dist/assets/web-sdk-debugger/static/js/async/257.4d55bd5ce8.js +1 -0
- package/dist/assets/web-sdk-debugger/static/js/async/{web-core-template-loader-thread.f9f3ef68b1.js → web-core-template-loader-thread.20d5b2a451.js} +2 -2
- package/dist/assets/web-sdk-debugger/static/js/async/{web-core-worker-chunk.002a4f7b9d.js → web-core-worker-chunk.71b9323071.js} +1 -1
- package/dist/assets/web-sdk-debugger/static/js/index.e5bc5f1bbd.js +26 -0
- package/dist/assets/web-sdk-debugger/static/js/{lib-polyfill.8cf763c414.js → lib-polyfill.4f00df8f2a.js} +1 -1
- 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/auth.js +1 -1
- package/dist/browser.js +1 -1
- package/dist/csstree.esm.js +12 -0
- package/dist/dbx-demo.js +1 -1
- package/dist/dbx.js +1 -1
- package/dist/demo-server.js +1 -1
- package/dist/dev-config.js +1 -1
- package/dist/dev-service-client.js +6 -6
- package/dist/dev-shell.js +1 -1
- package/dist/dev.js +7 -7
- package/dist/eval.js +1 -1
- package/dist/gen-explore.js +1 -1
- package/dist/gen-trajectory.js +1 -1
- package/dist/get.js +1 -1
- package/dist/init.js +2 -2
- package/dist/ink.js +1 -1
- package/dist/json-file.js +1 -1
- package/dist/login.js +1 -1
- package/dist/main.js +1 -1
- package/dist/manifest-mcp-config.js +1 -1
- package/dist/ora.js +1 -1
- package/dist/portal.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 +1 -1
- package/dist/sandbox.js +1 -1
- package/dist/sdk.js +67 -133
- package/dist/sdk~1.js +67 -133
- package/dist/server.js +1 -1
- package/dist/shared.js +1 -1
- package/dist/simulator-client.js +1 -1
- package/dist/skill.js +1 -1
- package/dist/skills~1.js +1 -1
- package/dist/static/assets/web-view-proxy-page-client.js +1 -0
- package/dist/static/assets/web-view-proxy-service-worker.js +1 -0
- package/dist/status.js +1 -1
- package/dist/status~1.js +1 -1
- package/dist/stop.js +1 -1
- package/dist/update.js +1 -1
- package/dist/upgrade.js +1 -1
- package/dist/upload.js +1 -1
- package/dist/validate.js +1 -1
- package/dist/workspace.js +1 -1
- package/dist/yaml.js +1 -1
- package/package.json +2 -2
- package/skills/doubao-agentic-service-development/references/dev-debug.md +6 -6
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/01-/345/237/272/347/241/200.md +105 -25
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/02-/347/263/273/347/273/237.md +118 -6
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/06-/344/272/244/344/272/222.md +18 -8
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/quick-reference.md +3 -3
- package/skills/doubao-agentic-service-development/references/frontend/examples/page-widget-basics.md +2 -3
- package/skills/doubao-agentic-service-development/references/frontend/guides/component-development.md +2 -1
- package/skills/doubao-agentic-service-development/references/frontend/guides/debugger-mcp.md +7 -1
- package/skills/doubao-agentic-service-development/references/frontend/rules/dos-and-donts.md +4 -7
- package/skills/doubao-agentic-service-development/references/frontend-dev.md +0 -1
- package/skills/doubao-agentic-service-development/references/manifest-guide.md +5 -4
- package/skills/doubao-agentic-service-development/references/mcp-protocol.md +4 -3
- package/dist/1122.js +0 -277
- package/dist/assets/web-sdk-debugger/static/css/index.fe34ed7927.css +0 -1
- package/dist/assets/web-sdk-debugger/static/js/index.da81c37197.js +0 -26
- package/dist/push-page.js +0 -1
- package/dist/push-widget.js +0 -1
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
| [getAccountInfo](#getaccountinfo) | 异步获取账号信息。 |
|
|
12
12
|
| [getAccountInfoSync](#getaccountinfosync) | 同步获取账号信息。<br><br>同步 API。 |
|
|
13
13
|
| [authorize](#authorize) | 提前向用户发起指定 scope 的应用授权。 |
|
|
14
|
-
| [
|
|
14
|
+
| [getPerformance](#getperformance) | 获取当前智能服务应用的性能数据。 Entry 由客户端保存;getEntries*() 同步查询当前快照,observer 只接收新完成的 Entry。 |
|
|
15
15
|
| [getSetting](#getsetting) | 获取用户当前的应用授权设置。 |
|
|
16
16
|
| [openSetting](#opensetting) | 打开智能服务授权设置页面。 |
|
|
17
17
|
|
|
@@ -353,16 +353,18 @@ await authorize({ scope: 'scope.userLocation' });
|
|
|
353
353
|
|
|
354
354
|
- **iOS**:网络类失败会细分为 301/302/303/305,并可能返回 112;Android 的网络类失败统一返回 305。
|
|
355
355
|
|
|
356
|
-
<a id="
|
|
357
|
-
###
|
|
356
|
+
<a id="getperformance"></a>
|
|
357
|
+
### getPerformance()
|
|
358
358
|
|
|
359
|
-
#
|
|
359
|
+
# getPerformance
|
|
360
360
|
|
|
361
|
-
|
|
361
|
+
获取当前智能服务应用的性能数据。
|
|
362
|
+
|
|
363
|
+
Entry 由客户端保存;`getEntries*()` 同步查询当前快照,observer 只接收新完成的 Entry。
|
|
362
364
|
|
|
363
365
|
## 支持版本
|
|
364
366
|
|
|
365
|
-
前端库版本不低于 `0.0.
|
|
367
|
+
前端库版本不低于 `0.0.42`。
|
|
366
368
|
|
|
367
369
|
## 支持平台
|
|
368
370
|
|
|
@@ -372,18 +374,22 @@ await authorize({ scope: 'scope.userLocation' });
|
|
|
372
374
|
</thead>
|
|
373
375
|
<tbody>
|
|
374
376
|
<tr><td>Android</td><td>支持</td></tr>
|
|
375
|
-
<tr><td>iOS</td><td
|
|
377
|
+
<tr><td>iOS</td><td>不支持</td></tr>
|
|
376
378
|
<tr><td>PC</td><td>不支持</td></tr>
|
|
377
379
|
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
378
380
|
</tbody>
|
|
379
381
|
</table>
|
|
380
382
|
|
|
383
|
+
## 使用说明
|
|
384
|
+
|
|
385
|
+
- 仅在需要接收后续新完成的 Entry 时创建 observer;不再需要时调用 disconnect。
|
|
386
|
+
|
|
381
387
|
## 调用方式
|
|
382
388
|
|
|
383
389
|
### 同步 API
|
|
384
390
|
|
|
385
391
|
```typescript
|
|
386
|
-
|
|
392
|
+
getPerformance(): Performance
|
|
387
393
|
```
|
|
388
394
|
|
|
389
395
|
## 入参
|
|
@@ -393,11 +399,17 @@ getPackageInfoSync(): GetPackageInfoResult
|
|
|
393
399
|
## 调用示例
|
|
394
400
|
|
|
395
401
|
```typescript
|
|
396
|
-
import {
|
|
402
|
+
import { getPerformance } from '@doubao-dev/framework/api';
|
|
397
403
|
|
|
398
|
-
const
|
|
404
|
+
const performance = getPerformance();
|
|
405
|
+
const observer = performance.createObserver((entryList) => {
|
|
406
|
+
console.log(entryList.getEntries());
|
|
407
|
+
});
|
|
399
408
|
|
|
400
|
-
|
|
409
|
+
performance.setBufferSize(100);
|
|
410
|
+
observer.observe({ entryTypes: ['render'] });
|
|
411
|
+
console.log(performance.getEntriesByType('render'));
|
|
412
|
+
observer.disconnect();
|
|
401
413
|
```
|
|
402
414
|
|
|
403
415
|
## 返回值
|
|
@@ -407,20 +419,27 @@ console.log(result.appId, result.name, result.iconSrc);
|
|
|
407
419
|
<tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
|
|
408
420
|
</thead>
|
|
409
421
|
<tbody>
|
|
410
|
-
<tr><td><code>
|
|
411
|
-
<tr><td><code>
|
|
412
|
-
<tr><td><code>
|
|
422
|
+
<tr><td><code>createObserver</code></td><td><code>(callback: PerformanceObserverCallback) => PerformanceObserver</code></td><td>是</td><td>创建性能观察者。调用返回对象的 `observe` 后,回调会接收之后新完成且匹配的 Entry。</td></tr>
|
|
423
|
+
<tr><td><code>getEntries</code></td><td><code>() => PerformanceEntry[]</code></td><td>是</td><td>返回当前智能服务已记录的全部性能 Entry。</td></tr>
|
|
424
|
+
<tr><td><code>getEntriesByName</code></td><td><code>(name: string, entryType?: string) => PerformanceEntry[]</code></td><td>是</td><td>返回指定名称的性能 Entry;传入 entryType 时同时按类型筛选。</td></tr>
|
|
425
|
+
<tr><td><code>getEntriesByType</code></td><td><code>(entryType: string) => PerformanceEntry[]</code></td><td>是</td><td>返回指定 entryType 的性能 Entry。</td></tr>
|
|
426
|
+
<tr><td><code>setBufferSize</code></td><td><code>(size: number) => void</code></td><td>是</td><td>设置客户端最多保留的性能 Entry 数量。</td></tr>
|
|
413
427
|
</tbody>
|
|
414
428
|
</table>
|
|
415
429
|
|
|
416
430
|
### 返回示例
|
|
417
431
|
|
|
418
432
|
```json
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
433
|
+
[
|
|
434
|
+
{
|
|
435
|
+
"entryType": "render",
|
|
436
|
+
"name": "firstRender",
|
|
437
|
+
"startTime": 1730000000000,
|
|
438
|
+
"duration": 42,
|
|
439
|
+
"path": "pages/index/index",
|
|
440
|
+
"pageId": 1
|
|
441
|
+
}
|
|
442
|
+
]
|
|
424
443
|
```
|
|
425
444
|
|
|
426
445
|
<a id="getsetting"></a>
|
|
@@ -703,16 +722,77 @@ try {
|
|
|
703
722
|
|
|
704
723
|
• **scope**: `Scope` - 授权范围
|
|
705
724
|
|
|
706
|
-
<a id="
|
|
707
|
-
###
|
|
725
|
+
<a id="performanceentry"></a>
|
|
726
|
+
### PerformanceEntry
|
|
727
|
+
|
|
728
|
+
#### Properties
|
|
729
|
+
|
|
730
|
+
• **entryType**: `PerformanceEntryType` - 性能指标所属类别
|
|
731
|
+
• **name**: `string` - 性能指标名称,例如 appLaunch、route、evaluateScript 或 firstRender
|
|
732
|
+
• **startTime**: `number` - 指标开始或发生时刻的 Unix 时间戳,单位为毫秒
|
|
733
|
+
• **duration?**: `number` - 指标持续时间,单位为毫秒;仅耗时类指标提供
|
|
734
|
+
• **path?**: `string` - 页面路径;仅页面的 navigation 和 render 类型指标提供
|
|
735
|
+
• **pageId?**: `number` - path 对应的页面实例 Id(随机生成,不保证递增);仅页面相关指标提供
|
|
736
|
+
• **referrerPath?**: `string` - 路由来源页面的路径;仅 navigation / route 指标提供
|
|
737
|
+
• **referrerPageId?**: `number` - 路由来源页面的实例 ID;仅 navigation / route 指标提供
|
|
738
|
+
• **navigationStart?**: `number` - 路由开始被渲染层处理的 Unix 时间戳,单位为毫秒;仅 navigation 类型指标提供
|
|
739
|
+
• **navigationType?**: `string` - 路由类型。仅 navigation 类型的 Entry 有效
|
|
740
|
+
• **moduleName?**: `string` - 被执行脚本的模块名称;仅 script / evaluateScript 指标提供
|
|
741
|
+
• **viewLayerReadyTime?**: `number` - 视图层准备完成的 Unix 时间戳,单位为毫秒;仅 render / firstRender 指标提供
|
|
742
|
+
• **viewLayerRenderStartTime?**: `number` - 视图层首次渲染开始的 Unix 时间戳,单位为毫秒;仅 render / firstRender 指标提供
|
|
743
|
+
• **viewLayerRenderEndTime?**: `number` - 视图层首次渲染结束的 Unix 时间戳,单位为毫秒;仅 render / firstRender 指标提供
|
|
744
|
+
• **widgetId?**: `string` - Widget 标识;仅 Widget 的 render 类型指标提供
|
|
745
|
+
• **widgetInstanceId?**: `string` - Widget 实例 Id(随机生成,不保证递增);仅 Widget 的 render 类型指标提供
|
|
746
|
+
• **isAppColdLaunch?**: `boolean` - Widget 关联的应用是否冷启动;仅 Widget 的 render 类型指标提供
|
|
747
|
+
|
|
748
|
+
<a id="performanceobservercallback"></a>
|
|
749
|
+
### PerformanceObserverCallback
|
|
750
|
+
|
|
751
|
+
#### Type
|
|
752
|
+
|
|
753
|
+
`(entryList: PerformanceObserverEntryList) => void`
|
|
754
|
+
|
|
755
|
+
<a id="performanceobserver"></a>
|
|
756
|
+
### PerformanceObserver
|
|
757
|
+
|
|
758
|
+
#### Properties
|
|
759
|
+
|
|
760
|
+
• **observe**: `(options: PerformanceObserverOptions) => void`
|
|
761
|
+
• **disconnect**: `() => void`
|
|
762
|
+
|
|
763
|
+
<a id="performance"></a>
|
|
764
|
+
### Performance
|
|
765
|
+
|
|
766
|
+
#### Properties
|
|
767
|
+
|
|
768
|
+
• **createObserver**: `(callback: PerformanceObserverCallback) => PerformanceObserver` - 创建性能观察者。调用返回对象的 observe 后,回调会接收之后新完成且匹配的 Entry
|
|
769
|
+
• **setBufferSize**: `(size: number) => void` - 设置客户端最多保留的性能 Entry 数量
|
|
770
|
+
• **getEntries**: `() => PerformanceEntry[]` - 返回当前智能服务已记录的全部性能 Entry
|
|
771
|
+
• **getEntriesByType**: `(entryType: string) => PerformanceEntry[]` - 返回指定 entryType 的性能 Entry
|
|
772
|
+
• **getEntriesByName**: `(name: string, entryType?: string) => PerformanceEntry[]` - 返回指定名称的性能 Entry;传入 entryType 时同时按类型筛选
|
|
773
|
+
|
|
774
|
+
<a id="performanceentrytype"></a>
|
|
775
|
+
### PerformanceEntryType
|
|
776
|
+
|
|
777
|
+
#### Type
|
|
778
|
+
|
|
779
|
+
`'navigation' | 'script' | 'render'`
|
|
780
|
+
|
|
781
|
+
<a id="performanceobserverentrylist"></a>
|
|
782
|
+
### PerformanceObserverEntryList
|
|
783
|
+
|
|
784
|
+
#### Properties
|
|
785
|
+
|
|
786
|
+
• **getEntries**: `() => PerformanceEntry[]`
|
|
787
|
+
• **getEntriesByType**: `(entryType: string) => PerformanceEntry[]`
|
|
788
|
+
• **getEntriesByName**: `(name: string, entryType?: string) => PerformanceEntry[]`
|
|
708
789
|
|
|
709
|
-
|
|
790
|
+
<a id="performanceobserveroptions"></a>
|
|
791
|
+
### PerformanceObserverOptions
|
|
710
792
|
|
|
711
793
|
#### Properties
|
|
712
794
|
|
|
713
|
-
• **
|
|
714
|
-
• **name**: `string` - 当前 package 的展示名称
|
|
715
|
-
• **iconSrc?**: `string` - 当前 package 的展示图标地址
|
|
795
|
+
• **entryTypes**: `string[]`
|
|
716
796
|
|
|
717
797
|
<a id="getsettingparams"></a>
|
|
718
798
|
### GetSettingParams
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
| --- | --- |
|
|
11
11
|
| [getWindowInfoSync](#getwindowinfosync) | 获取窗口信息。<br><br>同步 API。 |
|
|
12
12
|
| [getSystemSetting](#getsystemsetting) | 获取设备设置。 |
|
|
13
|
-
| [getAppAuthorizeSetting](#getappauthorizesetting) | 获取豆包客户端的系统授权设置。
|
|
13
|
+
| [getAppAuthorizeSetting](#getappauthorizesetting) | 获取豆包客户端的系统授权设置。 调用只读取当前系统授权状态,不会申请权限或触发系统授权弹窗。原有状态字段固定返回 authorized、denied 或 not determined,精细授权字段用于区分部分、只读、只写、前后台等能力。 |
|
|
14
14
|
| [getAppBaseInfoSync](#getappbaseinfosync) | 获取应用基础信息。<br><br>同步 API。 |
|
|
15
15
|
| [getWindowInfo](#getwindowinfo) | 获取窗口信息。 |
|
|
16
16
|
| [getAppBaseInfo](#getappbaseinfo) | 获取应用基础信息。 |
|
|
@@ -222,8 +222,8 @@ console.log(result.wifiEnabled, result.deviceOrientation);
|
|
|
222
222
|
|
|
223
223
|
获取豆包客户端的系统授权设置。
|
|
224
224
|
|
|
225
|
-
|
|
226
|
-
`authorized`、`denied` 或 `not determined
|
|
225
|
+
调用只读取当前系统授权状态,不会申请权限或触发系统授权弹窗。原有状态字段固定返回
|
|
226
|
+
`authorized`、`denied` 或 `not determined`,精细授权字段用于区分部分、只读、只写、前后台等能力。
|
|
227
227
|
|
|
228
228
|
## 扫码预览
|
|
229
229
|

|
|
@@ -269,8 +269,12 @@ getAppAuthorizeSetting(params?: object): GetAppAuthorizeSettingResult
|
|
|
269
269
|
import { getAppAuthorizeSetting } from '@doubao-dev/framework/api';
|
|
270
270
|
|
|
271
271
|
const result = getAppAuthorizeSetting();
|
|
272
|
-
|
|
273
|
-
|
|
272
|
+
const detail = result.phoneCalendarAuthorizationDetail;
|
|
273
|
+
const canWriteCalendar =
|
|
274
|
+
detail === 'full' ||
|
|
275
|
+
detail === 'write only' ||
|
|
276
|
+
(detail == null && result.phoneCalendarAuthorized === 'authorized');
|
|
277
|
+
console.log(canWriteCalendar);
|
|
274
278
|
```
|
|
275
279
|
|
|
276
280
|
## 返回值
|
|
@@ -280,16 +284,23 @@ console.log(result.notificationAuthorized, result.locationReducedAccuracy);
|
|
|
280
284
|
<tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
|
|
281
285
|
</thead>
|
|
282
286
|
<tbody>
|
|
287
|
+
<tr><td><code>albumAuthorizationDetail</code></td><td><code>AlbumAuthorizationDetail | null</code></td><td>否</td><td>相册精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 `null`。<br><br>继承 BasicAuthorizationDetail 的全部取值,并增加:<br>- `limited`:只能访问用户选择的部分照片;支持 iOS 和 Android 14 及以上版本。<br>- `add only`:只能向相册添加照片,不能读取相册内容;仅 iOS 支持。</td></tr>
|
|
283
288
|
<tr><td><code>albumAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>相册授权状态;Android 固定返回 not determined</td></tr>
|
|
289
|
+
<tr><td><code>bluetoothAuthorizationDetail</code></td><td><code>BluetoothAuthorizationDetail | null</code></td><td>否</td><td>蓝牙精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 `null`。<br><br>继承 BasicAuthorizationDetail 的全部取值,并增加:<br>- `partial`:只获得部分已声明的蓝牙子权限;仅 Android 支持。</td></tr>
|
|
284
290
|
<tr><td><code>bluetoothAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>蓝牙授权状态</td></tr>
|
|
291
|
+
<tr><td><code>cameraAuthorizationDetail</code></td><td><code>BasicAuthorizationDetail | null</code></td><td>否</td><td>摄像头精细授权状态,取值与 BasicAuthorizationDetail 一致;旧客户端或无法可靠映射时不返回该字段或返回 `null`。</td></tr>
|
|
285
292
|
<tr><td><code>cameraAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>摄像头授权状态</td></tr>
|
|
293
|
+
<tr><td><code>locationAuthorizationDetail</code></td><td><code>LocationAuthorizationDetail | null</code></td><td>否</td><td>定位精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 `null`。<br><br>继承 UnauthorizedDetail 的全部取值;获得权限时返回:<br>- `foreground approximate`:仅应用在前台时可以获取模糊定位。<br>- `foreground precise`:仅应用在前台时可以获取精确定位。<br>- `background approximate`:应用在前台或后台时均可以获取模糊定位。<br>- `background precise`:应用在前台或后台时均可以获取精确定位。</td></tr>
|
|
286
294
|
<tr><td><code>locationAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>定位授权状态</td></tr>
|
|
287
295
|
<tr><td><code>locationReducedAccuracy</code></td><td><code>boolean</code></td><td>是</td><td>是否只能使用模糊定位;仅在 iOS 且定位已授权时具有精度含义,Android 固定返回 false</td></tr>
|
|
296
|
+
<tr><td><code>microphoneAuthorizationDetail</code></td><td><code>BasicAuthorizationDetail | null</code></td><td>否</td><td>麦克风精细授权状态,取值与 BasicAuthorizationDetail 一致;旧客户端或无法可靠映射时不返回该字段或返回 `null`。</td></tr>
|
|
288
297
|
<tr><td><code>microphoneAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>麦克风授权状态</td></tr>
|
|
289
298
|
<tr><td><code>notificationAlertAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>通知提醒授权状态;Android 固定返回 not determined</td></tr>
|
|
299
|
+
<tr><td><code>notificationAuthorizationDetail</code></td><td><code>NotificationAuthorizationDetail | null</code></td><td>否</td><td>通知精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 `null`。<br><br>继承 BasicAuthorizationDetail 的全部取值,并增加:<br>- `provisional`:iOS 临时静默授权;不会弹出授权框,通知只进入通知中心。</td></tr>
|
|
290
300
|
<tr><td><code>notificationAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>通知总授权状态</td></tr>
|
|
291
301
|
<tr><td><code>notificationBadgeAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>通知角标授权状态;Android 固定返回 not determined</td></tr>
|
|
292
302
|
<tr><td><code>notificationSoundAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>通知声音授权状态;Android 固定返回 not determined</td></tr>
|
|
303
|
+
<tr><td><code>phoneCalendarAuthorizationDetail</code></td><td><code>PhoneCalendarAuthorizationDetail | null</code></td><td>否</td><td>系统日历精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 `null`。<br><br>继承 BasicAuthorizationDetail 的全部取值,并增加:<br>- `read only`:只能读取日历,不能新增、修改或删除日程;仅 Android 支持。<br>- `write only`:只能新增日程,不能读取现有日历数据。</td></tr>
|
|
293
304
|
<tr><td><code>phoneCalendarAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>系统日历授权状态</td></tr>
|
|
294
305
|
</tbody>
|
|
295
306
|
</table>
|
|
@@ -308,7 +319,14 @@ console.log(result.notificationAuthorized, result.locationReducedAccuracy);
|
|
|
308
319
|
"notificationAlertAuthorized": "authorized",
|
|
309
320
|
"notificationBadgeAuthorized": "denied",
|
|
310
321
|
"notificationSoundAuthorized": "authorized",
|
|
311
|
-
"phoneCalendarAuthorized": "
|
|
322
|
+
"phoneCalendarAuthorized": "denied",
|
|
323
|
+
"albumAuthorizationDetail": "limited",
|
|
324
|
+
"bluetoothAuthorizationDetail": "full",
|
|
325
|
+
"cameraAuthorizationDetail": "full",
|
|
326
|
+
"locationAuthorizationDetail": "foreground precise",
|
|
327
|
+
"microphoneAuthorizationDetail": "full",
|
|
328
|
+
"notificationAuthorizationDetail": "provisional",
|
|
329
|
+
"phoneCalendarAuthorizationDetail": "write only"
|
|
312
330
|
}
|
|
313
331
|
```
|
|
314
332
|
|
|
@@ -317,7 +335,9 @@ console.log(result.notificationAuthorized, result.locationReducedAccuracy);
|
|
|
317
335
|
- **Android**:albumAuthorized 和通知分项固定返回 not determined,locationReducedAccuracy 固定返回 false 且不表示实际定位精度
|
|
318
336
|
- **Android**:bluetoothAuthorized、cameraAuthorized、locationAuthorized、microphoneAuthorized、notificationAuthorized 和 phoneCalendarAuthorized 不区分尚未申请和已经拒绝,两种情况均返回 denied
|
|
319
337
|
- **Android**:locationAuthorized 在粗略或精确定位任一权限已授权时返回 authorized;phoneCalendarAuthorized 仅在读、写日历权限均授权时返回 authorized
|
|
338
|
+
- **Android**:精细字段区分 Android 14 部分相册、日历读写、定位前后台和精度,以及蓝牙部分子权限
|
|
320
339
|
- **iOS**:相册 limited 映射为 authorized,通知 provisional 和 ephemeral 映射为 authorized
|
|
340
|
+
- **iOS**:精细字段区分相册 limited/add only、日历 write only、定位前后台和精度,以及通知 provisional;ephemeral 暂不映射
|
|
321
341
|
|
|
322
342
|
<a id="getappbaseinfosync"></a>
|
|
323
343
|
### getAppBaseInfoSync()
|
|
@@ -1012,6 +1032,73 @@ console.log(result.screenWidth, result.screenHeight);
|
|
|
1012
1032
|
|
|
1013
1033
|
`'authorized' | 'denied' | 'not determined'`
|
|
1014
1034
|
|
|
1035
|
+
<a id="unauthorizeddetail"></a>
|
|
1036
|
+
### UnauthorizedDetail
|
|
1037
|
+
|
|
1038
|
+
尚未获得权限时的精细状态。 取值说明: - not determined:系统明确表示用户尚未作出选择 - denied:当前没有权限;可能是用户拒绝、关闭权限,或平台无法进一步区分拒绝原因 - restricted:系统明确表示权限受设备管理、家长控制等策略限制,用户无法直接修改。
|
|
1039
|
+
|
|
1040
|
+
#### Type
|
|
1041
|
+
|
|
1042
|
+
`'not determined' | 'denied' | 'restricted'`
|
|
1043
|
+
|
|
1044
|
+
<a id="basicauthorizationdetail"></a>
|
|
1045
|
+
### BasicAuthorizationDetail
|
|
1046
|
+
|
|
1047
|
+
只有完整授权和未授权状态的权限所使用的通用精细状态。 继承 UnauthorizedDetail 的全部取值,并增加: - full:已获得该权限的完整访问能力。
|
|
1048
|
+
|
|
1049
|
+
#### Type
|
|
1050
|
+
|
|
1051
|
+
`UnauthorizedDetail | 'full'`
|
|
1052
|
+
|
|
1053
|
+
<a id="albumauthorizationdetail"></a>
|
|
1054
|
+
### AlbumAuthorizationDetail
|
|
1055
|
+
|
|
1056
|
+
相册精细授权状态。 继承 BasicAuthorizationDetail 的全部取值,并增加: - limited:只能访问用户选择的部分照片;支持 iOS 和 Android 14 及以上版本。 - add only:只能向相册添加照片,不能读取相册内容;仅 iOS 支持。
|
|
1057
|
+
|
|
1058
|
+
#### Type
|
|
1059
|
+
|
|
1060
|
+
`BasicAuthorizationDetail | 'limited' | 'add only'`
|
|
1061
|
+
|
|
1062
|
+
<a id="phonecalendarauthorizationdetail"></a>
|
|
1063
|
+
### PhoneCalendarAuthorizationDetail
|
|
1064
|
+
|
|
1065
|
+
系统日历精细授权状态。 继承 BasicAuthorizationDetail 的全部取值,并增加: - read only:只能读取日历,不能新增、修改或删除日程;仅 Android 支持。 - write only:只能新增日程,不能读取现有日历数据。
|
|
1066
|
+
|
|
1067
|
+
#### Type
|
|
1068
|
+
|
|
1069
|
+
`BasicAuthorizationDetail | 'read only' | 'write only'`
|
|
1070
|
+
|
|
1071
|
+
<a id="locationauthorizationdetail"></a>
|
|
1072
|
+
### LocationAuthorizationDetail
|
|
1073
|
+
|
|
1074
|
+
定位精细授权状态。 继承 UnauthorizedDetail 的全部取值;获得权限时返回: - foreground approximate:仅应用在前台时可以获取模糊定位。 - foreground precise:仅应用在前台时可以获取精确定位。 - background approximate:应用在前台或后台时均可以获取模糊定位。 - background precise:应用在前台或后台时均可以获取精确定位。
|
|
1075
|
+
|
|
1076
|
+
#### Type
|
|
1077
|
+
|
|
1078
|
+
`| UnauthorizedDetail
|
|
1079
|
+
| 'foreground approximate'
|
|
1080
|
+
| 'foreground precise'
|
|
1081
|
+
| 'background approximate'
|
|
1082
|
+
| 'background precise'`
|
|
1083
|
+
|
|
1084
|
+
<a id="bluetoothauthorizationdetail"></a>
|
|
1085
|
+
### BluetoothAuthorizationDetail
|
|
1086
|
+
|
|
1087
|
+
蓝牙精细授权状态。 继承 BasicAuthorizationDetail 的全部取值,并增加: - partial:只获得部分已声明的蓝牙子权限;仅 Android 支持。
|
|
1088
|
+
|
|
1089
|
+
#### Type
|
|
1090
|
+
|
|
1091
|
+
`BasicAuthorizationDetail | 'partial'`
|
|
1092
|
+
|
|
1093
|
+
<a id="notificationauthorizationdetail"></a>
|
|
1094
|
+
### NotificationAuthorizationDetail
|
|
1095
|
+
|
|
1096
|
+
通知精细授权状态。 继承 BasicAuthorizationDetail 的全部取值,并增加: - provisional:iOS 临时静默授权;不会弹出授权框,通知只进入通知中心。
|
|
1097
|
+
|
|
1098
|
+
#### Type
|
|
1099
|
+
|
|
1100
|
+
`BasicAuthorizationDetail | 'provisional'`
|
|
1101
|
+
|
|
1015
1102
|
<a id="getappauthorizesettingresult"></a>
|
|
1016
1103
|
### GetAppAuthorizeSettingResult
|
|
1017
1104
|
|
|
@@ -1028,6 +1115,31 @@ console.log(result.screenWidth, result.screenHeight);
|
|
|
1028
1115
|
• **notificationBadgeAuthorized**: `AppAuthorizeStatus` - 通知角标授权状态;Android 固定返回 not determined
|
|
1029
1116
|
• **notificationSoundAuthorized**: `AppAuthorizeStatus` - 通知声音授权状态;Android 固定返回 not determined
|
|
1030
1117
|
• **phoneCalendarAuthorized**: `AppAuthorizeStatus` - 系统日历授权状态
|
|
1118
|
+
• **albumAuthorizationDetail?**: `AlbumAuthorizationDetail | null` - 相册精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 null。 继承 BasicAuthorizationDetail 的全部取值,并增加: - limited:只能访问用户选择的部分照片;支持 iOS 和 Android 14 及以上版本。 - add only:只能向相册添加照片,不能读取相册内容;仅 iOS 支持
|
|
1119
|
+
• **bluetoothAuthorizationDetail?**: `BluetoothAuthorizationDetail | null` - 蓝牙精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 null。 继承 BasicAuthorizationDetail 的全部取值,并增加: - partial:只获得部分已声明的蓝牙子权限;仅 Android 支持
|
|
1120
|
+
• **cameraAuthorizationDetail?**: `CameraAuthorizationDetail | null` - 摄像头精细授权状态,取值与 BasicAuthorizationDetail 一致;旧客户端或无法可靠映射时不返回该字段或返回 null
|
|
1121
|
+
• **locationAuthorizationDetail?**: `LocationAuthorizationDetail | null` - 定位精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 null。 继承 UnauthorizedDetail 的全部取值;获得权限时返回: - foreground approximate:仅应用在前台时可以获取模糊定位。 - foreground precise:仅应用在前台时可以获取精确定位。 - background approximate:应用在前台或后台时均可以获取模糊定位。 - background precise:应用在前台或后台时均可以获取精确定位
|
|
1122
|
+
• **microphoneAuthorizationDetail?**: `MicrophoneAuthorizationDetail | null` - 麦克风精细授权状态,取值与 BasicAuthorizationDetail 一致;旧客户端或无法可靠映射时不返回该字段或返回 null
|
|
1123
|
+
• **notificationAuthorizationDetail?**: `NotificationAuthorizationDetail | null` - 通知精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 null。 继承 BasicAuthorizationDetail 的全部取值,并增加: - provisional:iOS 临时静默授权;不会弹出授权框,通知只进入通知中心
|
|
1124
|
+
• **phoneCalendarAuthorizationDetail?**: `PhoneCalendarAuthorizationDetail | null` - 系统日历精细授权状态;旧客户端或无法可靠映射时不返回该字段或返回 null。 继承 BasicAuthorizationDetail 的全部取值,并增加: - read only:只能读取日历,不能新增、修改或删除日程;仅 Android 支持。 - write only:只能新增日程,不能读取现有日历数据
|
|
1125
|
+
|
|
1126
|
+
<a id="cameraauthorizationdetail"></a>
|
|
1127
|
+
### CameraAuthorizationDetail
|
|
1128
|
+
|
|
1129
|
+
摄像头精细授权状态,取值与 BasicAuthorizationDetail 一致。
|
|
1130
|
+
|
|
1131
|
+
#### Type
|
|
1132
|
+
|
|
1133
|
+
`BasicAuthorizationDetail`
|
|
1134
|
+
|
|
1135
|
+
<a id="microphoneauthorizationdetail"></a>
|
|
1136
|
+
### MicrophoneAuthorizationDetail
|
|
1137
|
+
|
|
1138
|
+
麦克风精细授权状态,取值与 BasicAuthorizationDetail 一致。
|
|
1139
|
+
|
|
1140
|
+
#### Type
|
|
1141
|
+
|
|
1142
|
+
`BasicAuthorizationDetail`
|
|
1031
1143
|
|
|
1032
1144
|
<a id="appbaseinfohost"></a>
|
|
1033
1145
|
### AppBaseInfoHost
|
|
@@ -49,14 +49,14 @@ Toast、Loading、Modal、ActionSheet、BottomSheet 和返回前提醒。
|
|
|
49
49
|
|
|
50
50
|
## 使用说明
|
|
51
51
|
|
|
52
|
-
-
|
|
52
|
+
- 仅当 showCancel 为 true 时展示取消按钮;仅当 tapMaskToDismiss 为 true 时点击蒙层可关闭;editable 为 true 且用户确认时返回输入 content。
|
|
53
53
|
|
|
54
54
|
## 调用方式
|
|
55
55
|
|
|
56
56
|
### 异步 API
|
|
57
57
|
|
|
58
58
|
```typescript
|
|
59
|
-
showModal(params
|
|
59
|
+
showModal(params?: ShowModalParams): Promise<ShowModalResult>
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
## 入参
|
|
@@ -66,9 +66,13 @@ showModal(params: ShowModalParams): Promise<ShowModalResult>
|
|
|
66
66
|
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
67
67
|
</thead>
|
|
68
68
|
<tbody>
|
|
69
|
-
<tr><td><code>
|
|
70
|
-
<tr><td><code>
|
|
71
|
-
<tr><td><code>
|
|
69
|
+
<tr><td><code>cancelColor</code></td><td><code>string</code></td><td>否</td><td><code>#000000</code></td><td>必须是 16 进制格式的颜色字符串。</td><td>取消按钮的文字颜色。</td></tr>
|
|
70
|
+
<tr><td><code>cancelText</code></td><td><code>string</code></td><td>否</td><td><code>取消</code></td><td>最多 4 个字符。</td><td>取消按钮的文字。</td></tr>
|
|
71
|
+
<tr><td><code>confirmColor</code></td><td><code>string</code></td><td>否</td><td><code>#F85959</code></td><td>必须是 16 进制格式的颜色字符串。</td><td>确认按钮的文字颜色。</td></tr>
|
|
72
|
+
<tr><td><code>confirmText</code></td><td><code>string</code></td><td>否</td><td><code>确定</code></td><td>最多 4 个字符。</td><td>确认按钮的文字。</td></tr>
|
|
73
|
+
<tr><td><code>content</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>模态对话框的内容。</td></tr>
|
|
74
|
+
<tr><td><code>editable</code></td><td><code>boolean</code></td><td>否</td><td><code>false</code></td><td>-</td><td>是否显示输入框。</td></tr>
|
|
75
|
+
<tr><td><code>placeholderText</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>显示输入框时的提示文本。</td></tr>
|
|
72
76
|
<tr><td><code>showCancel</code></td><td><code>boolean</code></td><td>否</td><td><code>true</code></td><td>-</td><td>是否显示取消按钮。</td></tr>
|
|
73
77
|
<tr><td><code>tapMaskToDismiss</code></td><td><code>boolean</code></td><td>否</td><td><code>true</code></td><td>-</td><td>是否允许点击蒙层关闭对话框。</td></tr>
|
|
74
78
|
<tr><td><code>title</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>模态对话框的标题。</td></tr>
|
|
@@ -100,6 +104,7 @@ if (result.action === 'confirm') {
|
|
|
100
104
|
</thead>
|
|
101
105
|
<tbody>
|
|
102
106
|
<tr><td><code>action</code></td><td><code>"confirm" | "cancel" | "mask"</code></td><td>是</td><td>用户点击的动作。</td></tr>
|
|
107
|
+
<tr><td><code>content</code></td><td><code>string</code></td><td>否</td><td>`editable` 为 true 时,用户点击确认后输入的文本。</td></tr>
|
|
103
108
|
</tbody>
|
|
104
109
|
</table>
|
|
105
110
|
|
|
@@ -831,10 +836,14 @@ showToast({
|
|
|
831
836
|
#### Properties
|
|
832
837
|
|
|
833
838
|
• **title?**: `string` - 模态对话框的标题
|
|
834
|
-
• **content
|
|
839
|
+
• **content?**: `string` - 模态对话框的内容
|
|
835
840
|
• **showCancel?**: `boolean` - 是否显示取消按钮
|
|
836
|
-
• **cancelText?**: `string` -
|
|
837
|
-
• **
|
|
841
|
+
• **cancelText?**: `string` - 取消按钮的文字
|
|
842
|
+
• **cancelColor?**: `string` - 取消按钮的文字颜色
|
|
843
|
+
• **confirmText?**: `string` - 确认按钮的文字
|
|
844
|
+
• **confirmColor?**: `string` - 确认按钮的文字颜色
|
|
845
|
+
• **editable?**: `boolean` - 是否显示输入框
|
|
846
|
+
• **placeholderText?**: `string` - 显示输入框时的提示文本
|
|
838
847
|
• **tapMaskToDismiss?**: `boolean` - 是否允许点击蒙层关闭对话框
|
|
839
848
|
|
|
840
849
|
<a id="showmodalresult"></a>
|
|
@@ -845,6 +854,7 @@ showToast({
|
|
|
845
854
|
#### Properties
|
|
846
855
|
|
|
847
856
|
• **action**: `'confirm' | 'cancel' | 'mask'` - 用户点击的动作
|
|
857
|
+
• **content?**: `string` - editable 为 true 时,用户点击确认后输入的文本
|
|
848
858
|
|
|
849
859
|
<a id="showloadingparams"></a>
|
|
850
860
|
### ShowLoadingParams
|
|
@@ -28,7 +28,7 @@ import { showToast, request, getStorage } from '@doubao-dev/framework/api';
|
|
|
28
28
|
| 位置 | 获取当前位置、选择位置、打开地图、持续监听位置变化 | [getLocation](03-定位.md#getlocation)、[startLocationUpdate](03-定位.md#startlocationupdate)、[onLocationChange](03-定位.md#onlocationchange) |
|
|
29
29
|
| 图片和录音 | 选择、预览、保存、压缩图片,读取图片信息,或获取录音管理器 | [chooseImage](09-媒体.md#chooseimage)、[previewImage](09-媒体.md#previewimage)、[saveImageToPhotosAlbum](09-媒体.md#saveimagetophotosalbum)、[compressImage](09-媒体.md#compressimage)、[getImageInfo](09-媒体.md#getimageinfo)、[getRecorderManager](09-媒体.md#getrecordermanager) |
|
|
30
30
|
| WebSocket | 创建长连接并收发消息、监听连接状态 | [connectSocket](08-网络.md#connectsocket) |
|
|
31
|
-
| 系统、窗口、设备信息 |
|
|
31
|
+
| 系统、窗口、设备信息 | 读取系统信息、窗口信息和设备信息 | [getSystemInfo](02-系统.md#getsysteminfo)、[getWindowInfo](02-系统.md#getwindowinfo)、[getDeviceInfo](24-基础信息.md#getdeviceinfo) |
|
|
32
32
|
| 剪贴板、扫码、电话和短信 | 调用常见系统能力读取/写入剪贴板、扫码、拨号或发短信 | [getClipboardData](26-剪贴板.md#getclipboarddata)、[setClipboardData](26-剪贴板.md#setclipboarddata)、[scanCode](30-扫码.md#scancode)、[makePhoneCall](29-电话.md#makephonecall)、[sendSms](22-短信.md#sendsms) |
|
|
33
33
|
| 蓝牙、Wi-Fi 和传感器 | 打开蓝牙/Wi-Fi、扫描或连接设备,监听加速度计、罗盘、陀螺仪和设备方向 | [openBluetoothAdapter](14-蓝牙.md#openbluetoothadapter)、[startBluetoothDevicesDiscovery](14-蓝牙.md#startbluetoothdevicesdiscovery)、[startWifi](15-wi-fi.md#startwifi)、[connectWifi](15-wi-fi.md#connectwifi)、[startAccelerometer](16-加速度计.md#startaccelerometer)、[startCompass](18-罗盘.md#startcompass)、[startGyroscope](20-陀螺仪.md#startgyroscope)、[startDeviceMotionListening](19-设备方向.md#startdevicemotionlistening) |
|
|
34
34
|
|
|
@@ -41,7 +41,7 @@ import { showToast, request, getStorage } from '@doubao-dev/framework/api';
|
|
|
41
41
|
| [getAccountInfo](01-基础.md#getaccountinfo) | 异步获取账号信息。 |
|
|
42
42
|
| [getAccountInfoSync](01-基础.md#getaccountinfosync) | 同步获取账号信息。<br><br>同步 API。 |
|
|
43
43
|
| [authorize](01-基础.md#authorize) | 提前向用户发起指定 scope 的应用授权。 |
|
|
44
|
-
| [
|
|
44
|
+
| [getPerformance](01-基础.md#getperformance) | 获取当前智能服务应用的性能数据。 Entry 由客户端保存;getEntries*() 同步查询当前快照,observer 只接收新完成的 Entry。 |
|
|
45
45
|
| [getSetting](01-基础.md#getsetting) | 获取用户当前的应用授权设置。 |
|
|
46
46
|
| [openSetting](01-基础.md#opensetting) | 打开智能服务授权设置页面。 |
|
|
47
47
|
|
|
@@ -53,7 +53,7 @@ import { showToast, request, getStorage } from '@doubao-dev/framework/api';
|
|
|
53
53
|
| --- | --- |
|
|
54
54
|
| [getWindowInfoSync](02-系统.md#getwindowinfosync) | 获取窗口信息。<br><br>同步 API。 |
|
|
55
55
|
| [getSystemSetting](02-系统.md#getsystemsetting) | 获取设备设置。 |
|
|
56
|
-
| [getAppAuthorizeSetting](02-系统.md#getappauthorizesetting) | 获取豆包客户端的系统授权设置。
|
|
56
|
+
| [getAppAuthorizeSetting](02-系统.md#getappauthorizesetting) | 获取豆包客户端的系统授权设置。 调用只读取当前系统授权状态,不会申请权限或触发系统授权弹窗。原有状态字段固定返回 authorized、denied 或 not determined,精细授权字段用于区分部分、只读、只写、前后台等能力。 |
|
|
57
57
|
| [getAppBaseInfoSync](02-系统.md#getappbaseinfosync) | 获取应用基础信息。<br><br>同步 API。 |
|
|
58
58
|
| [getWindowInfo](02-系统.md#getwindowinfo) | 获取窗口信息。 |
|
|
59
59
|
| [getAppBaseInfo](02-系统.md#getappbaseinfo) | 获取应用基础信息。 |
|
package/skills/doubao-agentic-service-development/references/frontend/examples/page-widget-basics.md
CHANGED
|
@@ -30,8 +30,8 @@ src/pages/user-profile/
|
|
|
30
30
|
|
|
31
31
|
### app.config.ts
|
|
32
32
|
|
|
33
|
-
`app.config.ts` 需要配置 `appId` 和 `name`。这里额外配置 `pages`
|
|
34
|
-
|
|
33
|
+
`app.config.ts` 需要配置 `appId` 和 `name`。这里额外配置 `pages` 是为了补充标题和描述;页面使用
|
|
34
|
+
`/pages/user-profile/index` 作为完整路径。
|
|
35
35
|
|
|
36
36
|
```ts
|
|
37
37
|
import { defineAppConfig } from '@doubao-dev/framework/config';
|
|
@@ -42,7 +42,6 @@ export default defineAppConfig({
|
|
|
42
42
|
pages: [
|
|
43
43
|
{
|
|
44
44
|
entry: 'pages/user-profile/index',
|
|
45
|
-
id: 'user-profile',
|
|
46
45
|
title: '用户资料',
|
|
47
46
|
description: '显示用户个人信息和统计数据'
|
|
48
47
|
}
|
|
@@ -266,7 +266,8 @@ Widget 时先读模板库的选型指南和 props 参考,选中模板后再回
|
|
|
266
266
|
需要补 metadata 或声明多级目录时,再配置 `widgets` 数组。显式声明入口时,entry 写到 `index`,例如
|
|
267
267
|
`'widgets/my-widget/index'`,不要省略入口文件名。
|
|
268
268
|
多级目录如 `src/widgets/order/detail/index.tsx` 需要显式写 `'widgets/order/detail/index'`。
|
|
269
|
-
如果不配置 `id`,默认 `widgetId` 是最后一级目录名 `detail`。
|
|
269
|
+
如果不配置 `id`,默认 `widgetId` 是最后一级目录名 `detail`。Widget ID 必须在应用内全局唯一;如果多个入口得到
|
|
270
|
+
相同 ID,构建会失败,需要在 `app.config.ts` 中为它们配置不同的 `id`。
|
|
270
271
|
|
|
271
272
|
```ts
|
|
272
273
|
import { defineAppConfig } from '@doubao-dev/framework/config';
|
package/skills/doubao-agentic-service-development/references/frontend/guides/debugger-mcp.md
CHANGED
|
@@ -39,12 +39,18 @@ Page / Widget 运行现场。它不替代用户业务 MCP server,只描述 deb
|
|
|
39
39
|
## Transport
|
|
40
40
|
|
|
41
41
|
- 协议:MCP Streamable HTTP。
|
|
42
|
+
- 协议版本:支持 `2026-07-28` modern era,也接受 2025-era legacy 请求;modern client 通过
|
|
43
|
+
`server/discover` 协商版本。
|
|
42
44
|
- 方法:`POST /__wsd_mcp`。
|
|
43
45
|
- 会话:当前实现不生成 session id,每次请求创建一次 MCP server / transport。
|
|
44
46
|
- CORS 预检:`OPTIONS /__wsd_mcp` 返回 204。
|
|
45
47
|
- 数据来源:调试台 UI 会把运行期快照写回 `/__agent_trace`,查询 tools 从 debugger server 内存中的最新快照读取数据。
|
|
46
48
|
- 浏览器控制:调试台通过内部 SSE 通道接收控制命令;渲染命令会在目标完成渲染且生成匹配命令的新 DOM 快照后回执。
|
|
47
49
|
|
|
50
|
+
Web SDK Debugger 连接用户业务 MCP endpoint 时使用自动版本协商:优先选择 `2026-07-28`,对只支持 2025-era
|
|
51
|
+
的 server 回退到 legacy handshake。每次 `tools/list` 或 `tools/call` 都建立独立 client,因此会重新执行协商,不缓存
|
|
52
|
+
endpoint 的 era 判定。
|
|
53
|
+
|
|
48
54
|
当 debugger server 尚未收到快照,或当前没有 Page / Widget 运行现场时,tools 返回:
|
|
49
55
|
|
|
50
56
|
```json
|
|
@@ -61,7 +67,7 @@ MCP tools 读取 debugger server 内存中的最新 snapshot。
|
|
|
61
67
|
|
|
62
68
|
所有 tools 都返回 MCP tool result:
|
|
63
69
|
|
|
64
|
-
- `structuredContent
|
|
70
|
+
- `structuredContent`:任意 JSON value;当前 debugger 内置 tools 返回对象。
|
|
65
71
|
- `content[0].text`:默认是同一 JSON 的格式化字符串;`take_snapshot` 直接返回 uid 文本树,方便 Agent 阅读。
|
|
66
72
|
|
|
67
73
|
分页类 tools 的通用字段:
|
package/skills/doubao-agentic-service-development/references/frontend/rules/dos-and-donts.md
CHANGED
|
@@ -45,7 +45,6 @@ export default defineAppConfig({
|
|
|
45
45
|
pages: [
|
|
46
46
|
{
|
|
47
47
|
entry: 'pages/home/index',
|
|
48
|
-
id: 'home',
|
|
49
48
|
title: '首页',
|
|
50
49
|
description: '应用默认打开的页面'
|
|
51
50
|
}
|
|
@@ -67,7 +66,6 @@ export default defineAppConfig({
|
|
|
67
66
|
pages: [
|
|
68
67
|
{
|
|
69
68
|
entry: 'pages/user-profile/index',
|
|
70
|
-
id: 'user-profile',
|
|
71
69
|
title: '用户资料',
|
|
72
70
|
description: '展示和编辑用户个人资料'
|
|
73
71
|
}
|
|
@@ -84,8 +82,7 @@ export default defineAppConfig({
|
|
|
84
82
|
name: '我的豆包应用',
|
|
85
83
|
pages: [
|
|
86
84
|
{
|
|
87
|
-
entry: 'pages/user-profile/index'
|
|
88
|
-
id: 'page1'
|
|
85
|
+
entry: 'pages/user-profile/index'
|
|
89
86
|
}
|
|
90
87
|
]
|
|
91
88
|
});
|
|
@@ -105,7 +102,6 @@ export default defineAppConfig({
|
|
|
105
102
|
'pages/account/demo/index',
|
|
106
103
|
{
|
|
107
104
|
entry: 'pages/account/settings/index',
|
|
108
|
-
id: 'account-settings',
|
|
109
105
|
title: '账号设置页'
|
|
110
106
|
}
|
|
111
107
|
],
|
|
@@ -124,8 +120,9 @@ export default defineAppConfig({
|
|
|
124
120
|
});
|
|
125
121
|
```
|
|
126
122
|
|
|
127
|
-
|
|
128
|
-
默认为 `detail
|
|
123
|
+
Page 使用由完整 entry 派生的 URL,例如 `pages/account/demo/index` 对应 `/pages/account/demo/index`。
|
|
124
|
+
Widget 如果不配置 `id`,默认取入口最后一级目录名,例如 `widgets/order/detail/index` 默认为 `detail`;该 ID
|
|
125
|
+
必须在应用内全局唯一。
|
|
129
126
|
|
|
130
127
|
#### ✅ 分离样式文件
|
|
131
128
|
```tsx
|