@webskill/chatbot 0.3.0 → 0.4.0

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/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { AgentLoopConfig, ApprovalScope, BridgeCapabilities, ExternalSkillProvider, ExternalToolSource, FileSystemProvider, HookRunner, InteractionRequest, InteractionResponse, LifecycleEventInit, LlmClient, NetworkPolicy, Page, PageQuery, RenderBlock, RenderResultRequest, RunSnapshot, RunSnapshotListEntry, RuntimePhase, ScriptExecutor, SessionStore, SkillCatalogEntry, SkillIntegrityGuard, SkillOutcomeReporter, SkillStateGuard, UiBridge, UiSpecDrafts, UiSpecEvent, UiSpecSnapshot, UiSurfaceActionRequest, UiSurfaceActionResponse, UserProfile, UserProfileEntry, UserProfileExport, WebSkillErrorCode, diffUserProfile } from "@webskill/sdk";
1
+ import { AgentLoopConfig, ApprovalScope, BridgeCapabilities, ExternalSkillProvider, ExternalToolSource, FileSystemProvider, HookRunner, InteractionRequest, InteractionResponse, LifecycleEventInit, LlmClient, NetworkPolicy, Page, PageQuery, RenderBlock, RenderResultRequest, RunSnapshot, RunSnapshotListEntry, RuntimePhase, ScriptExecutor, SessionStore, SkillCandidateMarker, SkillCatalogEntry, SkillIntegrityGuard, SkillOutcomeReporter, SkillStateGuard, UiBridge, UiSpecDrafts, UiSpecEvent, UiSpecSnapshot, UiSurfaceActionRequest, UiSurfaceActionResponse, UserProfile, UserProfileEntry, UserProfileExport, WebSkillErrorCode, diffUserProfile } from "@webskill/sdk";
2
2
  import { SandboxMode, TypeScriptSupportOptions } from "@webskill/sdk/browser";
3
3
  import { CustomSurfaceActionEvent, ReactBridgeState, SpecInteractionChannel, SurfaceRegistry, UiSurfaceActionEvent } from "@webskill/sdk/ui-react";
4
- import { PagePerceptionPolicy, PerceptionRecord, SkillCandidateSink, TodoItem } from "@webskill/sdk/agent";
4
+ import { PageActionPolicy, PagePerceptionPolicy, PerceptionRecord, SkillCandidateSink, TodoItem } from "@webskill/sdk/agent";
5
5
  import "react";
6
6
  import "react/jsx-runtime";
7
7
  //#region ../ui-kit/src/i18n/types.d.ts
@@ -365,7 +365,11 @@ interface ChatInteractionRecord {
365
365
  interface ChatMessage {
366
366
  id: string;
367
367
  role: 'user' | 'assistant';
368
- text: string;
368
+ /**
369
+ * 消息正文。本 run 一个字也没产出时(例如模型开口前就被中止)**缺省**,
370
+ * 与「产出了空串」区分开——写空串会渲染出一个空白气泡(FR-20.4)。
371
+ */
372
+ text?: string;
369
373
  ts: string;
370
374
  /** user 消息携带的附件(旧会话文件无该字段) */
371
375
  attachments?: ChatAttachmentMeta[];
@@ -413,6 +417,12 @@ interface ChatMessage {
413
417
  * @experimental
414
418
  */
415
419
  interactions?: ChatInteractionRecord[];
420
+ /**
421
+ * 该轮提交的技能候选(FR-24.1)。数据来自 `$skillCandidate` 载荷,
422
+ * 不从模型复述的自然语言里解析。
423
+ * @experimental
424
+ */
425
+ candidates?: SkillCandidateMarker[];
416
426
  }
417
427
  /** @stable */
418
428
  interface ChatSessionMeta {
@@ -579,6 +589,8 @@ interface ChatbotHostAdapter {
579
589
  openConsole(): void;
580
590
  /** 跳 console Traces 面板并定位该 run(v1.1;缺省时消息不渲染 View trace 入口) */
581
591
  openConsoleTrace?(runId: string): void;
592
+ /** 打开治理面的审批队列并定位该候选(FR-24.2);宿主未接治理面时不提供,入口随之不渲染 */
593
+ openConsoleCandidate?(candidateId: string): void;
582
594
  };
583
595
  /** 缺省 BrowserWorkerScriptExecutor(@webskill/browser);Node 宿主可注入自己的执行器 */
584
596
  executor?: ScriptExecutor;
@@ -589,6 +601,13 @@ interface ChatbotHostAdapter {
589
601
  * @experimental
590
602
  */
591
603
  pagePerception?: PagePerceptionPolicy;
604
+ /**
605
+ * 页面操作能力(需求 23)。**不注入即完全关闭**,与 `pagePerception` 分开:
606
+ * 可读不等于可操作。同样只能在这里注入——给终端用户一个「打开代操作」的开关
607
+ * 等于把安全边界交给最不了解它的人。
608
+ * @experimental
609
+ */
610
+ pageActions?: PageActionPolicy;
592
611
  }
593
612
  //#endregion
594
613
  //#region src/core/chatEngine.d.ts
@@ -824,6 +843,12 @@ interface CompositeUiBridgeDeps {
824
843
  * @experimental
825
844
  */
826
845
  onResolved?(request: InteractionRequest, response: InteractionResponse): void;
846
+ /**
847
+ * 工具返回值里的技能候选(FR-24.1)。它不经任何渲染层,
848
+ * 直接给引擎收集到本 run 的终态消息上。
849
+ * @experimental
850
+ */
851
+ onSkillCandidate?(runId: string, candidate: SkillCandidateMarker): void;
827
852
  emit(event: ChatEvent): void;
828
853
  }
829
854
  /**
@@ -849,6 +874,7 @@ declare class CompositeUiBridge implements UiBridge {
849
874
  requestSurfaceAction(input: UiSurfaceActionRequest): Promise<UiSurfaceActionResponse>;
850
875
  cancelSurfaceAction(nonce: string): void;
851
876
  onTextDelta(runId: string, delta: string): Promise<void>;
877
+ onSkillCandidate(runId: string, candidate: SkillCandidateMarker): void;
852
878
  }
853
879
  //#endregion
854
880
  //#region src/i18n.d.ts
@@ -869,6 +895,7 @@ declare const chatbotDictionary: {
869
895
  'session.title': string;
870
896
  'session.new': string;
871
897
  'session.searchPlaceholder': string;
898
+ 'session.searchClear': string;
872
899
  'session.empty': string;
873
900
  'session.missingRoot': string;
874
901
  'session.skipped': string;
@@ -909,6 +936,13 @@ declare const chatbotDictionary: {
909
936
  'message.delete': string;
910
937
  'message.viewTrace': string;
911
938
  'message.skillsUsed': string;
939
+ 'message.edit': string;
940
+ 'message.editSend': string;
941
+ 'message.editCancel': string;
942
+ 'capability.tools.on': string;
943
+ 'capability.tools.off': string;
944
+ 'capability.images.on': string;
945
+ 'capability.images.off': string;
912
946
  'tool.summary.one': string;
913
947
  'tool.summary.other': string;
914
948
  'tool.status.running': string;
@@ -927,6 +961,13 @@ declare const chatbotDictionary: {
927
961
  'cot.reasoning': string;
928
962
  'cot.working': string;
929
963
  'trace.title': string;
964
+ 'trace.runId': string;
965
+ 'trace.runId.copy': string;
966
+ 'trace.runId.copied': string;
967
+ 'candidate.submitted': string;
968
+ 'candidate.id.copy': string;
969
+ 'candidate.id.copied': string;
970
+ 'candidate.review': string;
930
971
  'trace.skill': string;
931
972
  'perception.reading': string;
932
973
  'perception.excluded': string;
@@ -939,6 +980,14 @@ declare const chatbotDictionary: {
939
980
  'trace.phase.interact': string;
940
981
  'trace.phase.complete': string;
941
982
  'trace.phase.fail': string;
983
+ 'run.terminated.userCancelled': string;
984
+ 'run.terminated.maxTurns': string;
985
+ 'run.terminated.timeout': string;
986
+ 'run.terminated.llmError': string;
987
+ 'run.terminated.interactionTimeout': string;
988
+ 'run.terminated.hookError': string;
989
+ 'run.terminated.toolResolutionExhausted': string;
990
+ 'run.terminated.unknown': string;
942
991
  'todo.title': string;
943
992
  'todo.progress': string;
944
993
  'todo.status.pending': string;
@@ -957,6 +1006,12 @@ declare const chatbotDictionary: {
957
1006
  'interaction.authorize.description': string;
958
1007
  'interaction.authorize.capability': string;
959
1008
  'interaction.authorize.details': string;
1009
+ 'interaction.pageAction.click': string;
1010
+ 'interaction.pageAction.fill': string;
1011
+ 'interaction.pageAction.submit': string;
1012
+ 'interaction.pageAction.role.click': string;
1013
+ 'interaction.pageAction.role.fill': string;
1014
+ 'interaction.pageAction.role.submit': string;
960
1015
  'interaction.origin': string;
961
1016
  'interaction.submitted': string;
962
1017
  'interaction.submit': string;
@@ -996,7 +1051,6 @@ declare const chatbotDictionary: {
996
1051
  'composer.attachment.compressed': string;
997
1052
  'composer.model': string;
998
1053
  'composer.model.demo': string;
999
- 'composer.plainChatOnly': string;
1000
1054
  'composer.menu': string;
1001
1055
  'composer.pageCapture': string;
1002
1056
  'composer.pageCapture.disabled.setting': string;
@@ -1070,10 +1124,18 @@ declare const chatbotDictionary: {
1070
1124
  'settings.agent.todoNote': string;
1071
1125
  'settings.agent.generativeUi': string;
1072
1126
  'settings.agent.generativeUiNote': string;
1127
+ 'settings.agent.generativeUiUnaffected': string;
1073
1128
  'settings.agent.skillGeneration': string;
1074
1129
  'settings.agent.skillGenerationNote': string;
1075
1130
  'settings.agent.delegation': string;
1076
1131
  'settings.agent.delegationNote': string;
1132
+ 'settings.agent.limits': string;
1133
+ 'settings.agent.limitsNote': string;
1134
+ 'settings.agent.totalTimeout': string;
1135
+ 'settings.agent.maxTurns': string;
1136
+ 'settings.agent.toolTimeout': string;
1137
+ 'settings.agent.limits.invalid': string;
1138
+ 'settings.agent.limits.reset': string;
1077
1139
  'settings.privacy.enabled': string;
1078
1140
  'settings.privacy.enabledRisk': string;
1079
1141
  'settings.privacy.encrypted': string;
@@ -1130,6 +1192,9 @@ declare const chatbotDictionary: {
1130
1192
  'error.suggestion.RUN_INTERACTION_TIMEOUT': string;
1131
1193
  'error.suggestion.RUN_MAX_TURNS_EXCEEDED': string;
1132
1194
  'error.suggestion.TOOL_RESOLUTION_EXHAUSTED': string;
1195
+ 'error.limit.totalTimeoutMs': string;
1196
+ 'error.limit.maxTurns': string;
1197
+ 'error.openSettings': string;
1133
1198
  'error.dismiss': string;
1134
1199
  };
1135
1200
  zh: {
@@ -1142,6 +1207,7 @@ declare const chatbotDictionary: {
1142
1207
  'session.title': string;
1143
1208
  'session.new': string;
1144
1209
  'session.searchPlaceholder': string;
1210
+ 'session.searchClear': string;
1145
1211
  'session.empty': string;
1146
1212
  'session.missingRoot': string;
1147
1213
  'session.skipped': string;
@@ -1178,10 +1244,17 @@ declare const chatbotDictionary: {
1178
1244
  'welcome.prompt.4': string;
1179
1245
  'message.copy': string;
1180
1246
  'message.copied': string;
1247
+ 'message.edit': string;
1248
+ 'message.editSend': string;
1249
+ 'message.editCancel': string;
1181
1250
  'message.retry': string;
1182
1251
  'message.delete': string;
1183
1252
  'message.viewTrace': string;
1184
1253
  'message.skillsUsed': string;
1254
+ 'capability.tools.on': string;
1255
+ 'capability.tools.off': string;
1256
+ 'capability.images.on': string;
1257
+ 'capability.images.off': string;
1185
1258
  'tool.summary.one': string;
1186
1259
  'tool.summary.other': string;
1187
1260
  'tool.status.running': string;
@@ -1200,6 +1273,13 @@ declare const chatbotDictionary: {
1200
1273
  'cot.reasoning': string;
1201
1274
  'cot.working': string;
1202
1275
  'trace.title': string;
1276
+ 'trace.runId': string;
1277
+ 'trace.runId.copy': string;
1278
+ 'trace.runId.copied': string;
1279
+ 'candidate.submitted': string;
1280
+ 'candidate.id.copy': string;
1281
+ 'candidate.id.copied': string;
1282
+ 'candidate.review': string;
1203
1283
  'trace.skill': string;
1204
1284
  'perception.reading': string;
1205
1285
  'perception.excluded': string;
@@ -1212,6 +1292,14 @@ declare const chatbotDictionary: {
1212
1292
  'trace.phase.interact': string;
1213
1293
  'trace.phase.complete': string;
1214
1294
  'trace.phase.fail': string;
1295
+ 'run.terminated.userCancelled': string;
1296
+ 'run.terminated.maxTurns': string;
1297
+ 'run.terminated.timeout': string;
1298
+ 'run.terminated.llmError': string;
1299
+ 'run.terminated.interactionTimeout': string;
1300
+ 'run.terminated.hookError': string;
1301
+ 'run.terminated.toolResolutionExhausted': string;
1302
+ 'run.terminated.unknown': string;
1215
1303
  'todo.title': string;
1216
1304
  'todo.progress': string;
1217
1305
  'todo.status.pending': string;
@@ -1230,6 +1318,12 @@ declare const chatbotDictionary: {
1230
1318
  'interaction.authorize.description': string;
1231
1319
  'interaction.authorize.capability': string;
1232
1320
  'interaction.authorize.details': string;
1321
+ 'interaction.pageAction.click': string;
1322
+ 'interaction.pageAction.fill': string;
1323
+ 'interaction.pageAction.submit': string;
1324
+ 'interaction.pageAction.role.click': string;
1325
+ 'interaction.pageAction.role.fill': string;
1326
+ 'interaction.pageAction.role.submit': string;
1233
1327
  'interaction.origin': string;
1234
1328
  'interaction.submitted': string;
1235
1329
  'interaction.submit': string;
@@ -1269,7 +1363,6 @@ declare const chatbotDictionary: {
1269
1363
  'composer.attachment.compressed': string;
1270
1364
  'composer.model': string;
1271
1365
  'composer.model.demo': string;
1272
- 'composer.plainChatOnly': string;
1273
1366
  'composer.menu': string;
1274
1367
  'composer.pageCapture': string;
1275
1368
  'composer.pageCapture.disabled.setting': string;
@@ -1343,10 +1436,18 @@ declare const chatbotDictionary: {
1343
1436
  'settings.agent.todoNote': string;
1344
1437
  'settings.agent.generativeUi': string;
1345
1438
  'settings.agent.generativeUiNote': string;
1439
+ 'settings.agent.generativeUiUnaffected': string;
1346
1440
  'settings.agent.skillGeneration': string;
1347
1441
  'settings.agent.skillGenerationNote': string;
1348
1442
  'settings.agent.delegation': string;
1349
1443
  'settings.agent.delegationNote': string;
1444
+ 'settings.agent.limits': string;
1445
+ 'settings.agent.limitsNote': string;
1446
+ 'settings.agent.totalTimeout': string;
1447
+ 'settings.agent.maxTurns': string;
1448
+ 'settings.agent.toolTimeout': string;
1449
+ 'settings.agent.limits.invalid': string;
1450
+ 'settings.agent.limits.reset': string;
1350
1451
  'settings.privacy.enabled': string;
1351
1452
  'settings.privacy.enabledRisk': string;
1352
1453
  'settings.privacy.encrypted': string;
@@ -1403,6 +1504,9 @@ declare const chatbotDictionary: {
1403
1504
  'error.suggestion.RUN_INTERACTION_TIMEOUT': string;
1404
1505
  'error.suggestion.RUN_MAX_TURNS_EXCEEDED': string;
1405
1506
  'error.suggestion.TOOL_RESOLUTION_EXHAUSTED': string;
1507
+ 'error.limit.totalTimeoutMs': string;
1508
+ 'error.limit.maxTurns': string;
1509
+ 'error.openSettings': string;
1406
1510
  'error.dismiss': string;
1407
1511
  };
1408
1512
  };
@@ -1418,6 +1522,7 @@ declare const useT: () => TranslateFn<{
1418
1522
  'session.title': string;
1419
1523
  'session.new': string;
1420
1524
  'session.searchPlaceholder': string;
1525
+ 'session.searchClear': string;
1421
1526
  'session.empty': string;
1422
1527
  'session.missingRoot': string;
1423
1528
  'session.skipped': string;
@@ -1458,6 +1563,13 @@ declare const useT: () => TranslateFn<{
1458
1563
  'message.delete': string;
1459
1564
  'message.viewTrace': string;
1460
1565
  'message.skillsUsed': string;
1566
+ 'message.edit': string;
1567
+ 'message.editSend': string;
1568
+ 'message.editCancel': string;
1569
+ 'capability.tools.on': string;
1570
+ 'capability.tools.off': string;
1571
+ 'capability.images.on': string;
1572
+ 'capability.images.off': string;
1461
1573
  'tool.summary.one': string;
1462
1574
  'tool.summary.other': string;
1463
1575
  'tool.status.running': string;
@@ -1476,6 +1588,13 @@ declare const useT: () => TranslateFn<{
1476
1588
  'cot.reasoning': string;
1477
1589
  'cot.working': string;
1478
1590
  'trace.title': string;
1591
+ 'trace.runId': string;
1592
+ 'trace.runId.copy': string;
1593
+ 'trace.runId.copied': string;
1594
+ 'candidate.submitted': string;
1595
+ 'candidate.id.copy': string;
1596
+ 'candidate.id.copied': string;
1597
+ 'candidate.review': string;
1479
1598
  'trace.skill': string;
1480
1599
  'perception.reading': string;
1481
1600
  'perception.excluded': string;
@@ -1488,6 +1607,14 @@ declare const useT: () => TranslateFn<{
1488
1607
  'trace.phase.interact': string;
1489
1608
  'trace.phase.complete': string;
1490
1609
  'trace.phase.fail': string;
1610
+ 'run.terminated.userCancelled': string;
1611
+ 'run.terminated.maxTurns': string;
1612
+ 'run.terminated.timeout': string;
1613
+ 'run.terminated.llmError': string;
1614
+ 'run.terminated.interactionTimeout': string;
1615
+ 'run.terminated.hookError': string;
1616
+ 'run.terminated.toolResolutionExhausted': string;
1617
+ 'run.terminated.unknown': string;
1491
1618
  'todo.title': string;
1492
1619
  'todo.progress': string;
1493
1620
  'todo.status.pending': string;
@@ -1506,6 +1633,12 @@ declare const useT: () => TranslateFn<{
1506
1633
  'interaction.authorize.description': string;
1507
1634
  'interaction.authorize.capability': string;
1508
1635
  'interaction.authorize.details': string;
1636
+ 'interaction.pageAction.click': string;
1637
+ 'interaction.pageAction.fill': string;
1638
+ 'interaction.pageAction.submit': string;
1639
+ 'interaction.pageAction.role.click': string;
1640
+ 'interaction.pageAction.role.fill': string;
1641
+ 'interaction.pageAction.role.submit': string;
1509
1642
  'interaction.origin': string;
1510
1643
  'interaction.submitted': string;
1511
1644
  'interaction.submit': string;
@@ -1545,7 +1678,6 @@ declare const useT: () => TranslateFn<{
1545
1678
  'composer.attachment.compressed': string;
1546
1679
  'composer.model': string;
1547
1680
  'composer.model.demo': string;
1548
- 'composer.plainChatOnly': string;
1549
1681
  'composer.menu': string;
1550
1682
  'composer.pageCapture': string;
1551
1683
  'composer.pageCapture.disabled.setting': string;
@@ -1619,10 +1751,18 @@ declare const useT: () => TranslateFn<{
1619
1751
  'settings.agent.todoNote': string;
1620
1752
  'settings.agent.generativeUi': string;
1621
1753
  'settings.agent.generativeUiNote': string;
1754
+ 'settings.agent.generativeUiUnaffected': string;
1622
1755
  'settings.agent.skillGeneration': string;
1623
1756
  'settings.agent.skillGenerationNote': string;
1624
1757
  'settings.agent.delegation': string;
1625
1758
  'settings.agent.delegationNote': string;
1759
+ 'settings.agent.limits': string;
1760
+ 'settings.agent.limitsNote': string;
1761
+ 'settings.agent.totalTimeout': string;
1762
+ 'settings.agent.maxTurns': string;
1763
+ 'settings.agent.toolTimeout': string;
1764
+ 'settings.agent.limits.invalid': string;
1765
+ 'settings.agent.limits.reset': string;
1626
1766
  'settings.privacy.enabled': string;
1627
1767
  'settings.privacy.enabledRisk': string;
1628
1768
  'settings.privacy.encrypted': string;
@@ -1679,6 +1819,9 @@ declare const useT: () => TranslateFn<{
1679
1819
  'error.suggestion.RUN_INTERACTION_TIMEOUT': string;
1680
1820
  'error.suggestion.RUN_MAX_TURNS_EXCEEDED': string;
1681
1821
  'error.suggestion.TOOL_RESOLUTION_EXHAUSTED': string;
1822
+ 'error.limit.totalTimeoutMs': string;
1823
+ 'error.limit.maxTurns': string;
1824
+ 'error.openSettings': string;
1682
1825
  'error.dismiss': string;
1683
1826
  };
1684
1827
  zh: {
@@ -1691,6 +1834,7 @@ declare const useT: () => TranslateFn<{
1691
1834
  'session.title': string;
1692
1835
  'session.new': string;
1693
1836
  'session.searchPlaceholder': string;
1837
+ 'session.searchClear': string;
1694
1838
  'session.empty': string;
1695
1839
  'session.missingRoot': string;
1696
1840
  'session.skipped': string;
@@ -1727,10 +1871,17 @@ declare const useT: () => TranslateFn<{
1727
1871
  'welcome.prompt.4': string;
1728
1872
  'message.copy': string;
1729
1873
  'message.copied': string;
1874
+ 'message.edit': string;
1875
+ 'message.editSend': string;
1876
+ 'message.editCancel': string;
1730
1877
  'message.retry': string;
1731
1878
  'message.delete': string;
1732
1879
  'message.viewTrace': string;
1733
1880
  'message.skillsUsed': string;
1881
+ 'capability.tools.on': string;
1882
+ 'capability.tools.off': string;
1883
+ 'capability.images.on': string;
1884
+ 'capability.images.off': string;
1734
1885
  'tool.summary.one': string;
1735
1886
  'tool.summary.other': string;
1736
1887
  'tool.status.running': string;
@@ -1749,6 +1900,13 @@ declare const useT: () => TranslateFn<{
1749
1900
  'cot.reasoning': string;
1750
1901
  'cot.working': string;
1751
1902
  'trace.title': string;
1903
+ 'trace.runId': string;
1904
+ 'trace.runId.copy': string;
1905
+ 'trace.runId.copied': string;
1906
+ 'candidate.submitted': string;
1907
+ 'candidate.id.copy': string;
1908
+ 'candidate.id.copied': string;
1909
+ 'candidate.review': string;
1752
1910
  'trace.skill': string;
1753
1911
  'perception.reading': string;
1754
1912
  'perception.excluded': string;
@@ -1761,6 +1919,14 @@ declare const useT: () => TranslateFn<{
1761
1919
  'trace.phase.interact': string;
1762
1920
  'trace.phase.complete': string;
1763
1921
  'trace.phase.fail': string;
1922
+ 'run.terminated.userCancelled': string;
1923
+ 'run.terminated.maxTurns': string;
1924
+ 'run.terminated.timeout': string;
1925
+ 'run.terminated.llmError': string;
1926
+ 'run.terminated.interactionTimeout': string;
1927
+ 'run.terminated.hookError': string;
1928
+ 'run.terminated.toolResolutionExhausted': string;
1929
+ 'run.terminated.unknown': string;
1764
1930
  'todo.title': string;
1765
1931
  'todo.progress': string;
1766
1932
  'todo.status.pending': string;
@@ -1779,6 +1945,12 @@ declare const useT: () => TranslateFn<{
1779
1945
  'interaction.authorize.description': string;
1780
1946
  'interaction.authorize.capability': string;
1781
1947
  'interaction.authorize.details': string;
1948
+ 'interaction.pageAction.click': string;
1949
+ 'interaction.pageAction.fill': string;
1950
+ 'interaction.pageAction.submit': string;
1951
+ 'interaction.pageAction.role.click': string;
1952
+ 'interaction.pageAction.role.fill': string;
1953
+ 'interaction.pageAction.role.submit': string;
1782
1954
  'interaction.origin': string;
1783
1955
  'interaction.submitted': string;
1784
1956
  'interaction.submit': string;
@@ -1818,7 +1990,6 @@ declare const useT: () => TranslateFn<{
1818
1990
  'composer.attachment.compressed': string;
1819
1991
  'composer.model': string;
1820
1992
  'composer.model.demo': string;
1821
- 'composer.plainChatOnly': string;
1822
1993
  'composer.menu': string;
1823
1994
  'composer.pageCapture': string;
1824
1995
  'composer.pageCapture.disabled.setting': string;
@@ -1892,10 +2063,18 @@ declare const useT: () => TranslateFn<{
1892
2063
  'settings.agent.todoNote': string;
1893
2064
  'settings.agent.generativeUi': string;
1894
2065
  'settings.agent.generativeUiNote': string;
2066
+ 'settings.agent.generativeUiUnaffected': string;
1895
2067
  'settings.agent.skillGeneration': string;
1896
2068
  'settings.agent.skillGenerationNote': string;
1897
2069
  'settings.agent.delegation': string;
1898
2070
  'settings.agent.delegationNote': string;
2071
+ 'settings.agent.limits': string;
2072
+ 'settings.agent.limitsNote': string;
2073
+ 'settings.agent.totalTimeout': string;
2074
+ 'settings.agent.maxTurns': string;
2075
+ 'settings.agent.toolTimeout': string;
2076
+ 'settings.agent.limits.invalid': string;
2077
+ 'settings.agent.limits.reset': string;
1899
2078
  'settings.privacy.enabled': string;
1900
2079
  'settings.privacy.enabledRisk': string;
1901
2080
  'settings.privacy.encrypted': string;
@@ -1952,6 +2131,9 @@ declare const useT: () => TranslateFn<{
1952
2131
  'error.suggestion.RUN_INTERACTION_TIMEOUT': string;
1953
2132
  'error.suggestion.RUN_MAX_TURNS_EXCEEDED': string;
1954
2133
  'error.suggestion.TOOL_RESOLUTION_EXHAUSTED': string;
2134
+ 'error.limit.totalTimeoutMs': string;
2135
+ 'error.limit.maxTurns': string;
2136
+ 'error.openSettings': string;
1955
2137
  'error.dismiss': string;
1956
2138
  };
1957
2139
  }>;
@@ -2145,7 +2327,9 @@ interface ResultBlockListProps {
2145
2327
  declare function ResultBlockList({ blocks, runId, onDownload }: ResultBlockListProps): import("react").JSX.Element;
2146
2328
  /**
2147
2329
  * run 完成结果块渐进挂载(AnimatePresence 逐块入场):
2148
- * markdown / json / table / chart / image / file + artifact 下载卡。
2330
+ * markdown / json / table / chart / image / file
2331
+ * 产物只由 blocks 中的 file block 承载——历史消息也只持久化 blocks,
2332
+ * 走同一路渲染,刷新前后的卡片计数才一致。
2149
2333
  * @stable
2150
2334
  */
2151
2335
  declare function ResultBlocksPro({ bridge, activeRunId, onDownload }: ResultBlocksProProps): import("react").JSX.Element | null;
@@ -2193,6 +2377,12 @@ interface SettingsDrawerProps {
2193
2377
  * @experimental
2194
2378
  */
2195
2379
  userProfileApi?: UserProfileApi;
2380
+ /**
2381
+ * 打开时定位到哪个分区(缺省 `'general'`)。触顶报错的「打开设置」按此直达 Agent 区,
2382
+ * 让用户少找一步(FR-21.2)。传了不存在的 id 则回落到 `'general'`。
2383
+ * @experimental
2384
+ */
2385
+ initialSectionId?: string;
2196
2386
  onClose(): void;
2197
2387
  }
2198
2388
  /** 设置面板对画像数据的最小依赖面;实现由 Chatbot 用 ChatEngine 装配 @experimental */
@@ -2216,7 +2406,7 @@ interface UserProfileImportDiff {
2216
2406
  origin: string;
2217
2407
  }
2218
2408
  /** 设置抽屉:模型列表(增删改 / 设默认 / 逐条探测)+ 流式与 temperature + Agent 能力 + 语音语言 @stable */
2219
- declare function SettingsDrawer({ open, runtimeConfig, dictationLang, selectedModelId, onAppearanceChange, onSaved, userProfileApi: profileApi, onClose }: SettingsDrawerProps): import("react").JSX.Element;
2409
+ declare function SettingsDrawer({ open, runtimeConfig, dictationLang, selectedModelId, onAppearanceChange, onSaved, userProfileApi: profileApi, initialSectionId, onClose }: SettingsDrawerProps): import("react").JSX.Element;
2220
2410
  //#endregion
2221
2411
  //#region src/react/ErrorCard.d.ts
2222
2412
  /** @stable */
@@ -2224,9 +2414,20 @@ interface ErrorCardProps {
2224
2414
  /** 稳定错误码(WebSkillError.code / RUN_FAILED;缺省不渲染徽章) */
2225
2415
  code?: string;
2226
2416
  message: string;
2417
+ /**
2418
+ * 触顶类错误的生效上限值:`totalTimeoutMs` 为毫秒、`maxTurns` 为轮数。
2419
+ * 给了才渲染「哪个上限 / 当前值 / 去哪改」,否则退回英文 message(FR-21.2)。
2420
+ * @experimental
2421
+ */
2422
+ loopLimits?: {
2423
+ totalTimeoutMs: number;
2424
+ maxTurns: number;
2425
+ };
2426
+ /** 提供时,触顶类错误下多一个直达设置的按钮 @experimental */
2427
+ onOpenSettings?(): void;
2227
2428
  onDismiss?(): void;
2228
2429
  }
2229
2430
  /** 结构化错误卡:错误码徽章 + 描述 + 建议(engine error 事件 / 失败 run) @stable */
2230
- declare function ErrorCard({ code, message, onDismiss }: ErrorCardProps): import("react").JSX.Element;
2431
+ declare function ErrorCard({ code, message, loopLimits, onOpenSettings, onDismiss }: ErrorCardProps): import("react").JSX.Element;
2231
2432
  //#endregion
2232
2433
  export { A2uiSurfaceHost, type A2uiSurfaceHostProps, A2uiSurfaceSnapshotHost, type A2uiSurfaceSnapshotHostProps, type AppearanceChange, type ChatAttachmentInput, type ChatAttachmentMeta, ChatEngine, type ChatEngineOptions, type ChatEvent, type ChatInteractionRecord, type ChatLayout, type ChatMessage, type ChatRunPhase, type ChatSessionListResult, type ChatSessionMeta, type ChatTheme, type ChatToolCall, Chatbot, type ChatbotConfig, type ChatbotGovernancePorts, type ChatbotHostAdapter, type ChatbotProps, CompositeUiBridge, type CompositeUiBridgeDeps, DEFAULT_RENDERER_CAPABILITIES, DEFAULT_RUNTIME_CONFIG_STORAGE_KEY, type DownloadableFile, ErrorCard, type ErrorCardProps, InteractionCard, type InteractionCardProps, InterruptedBanner, type InterruptedBannerProps, type Locale, OpenUiSurfaceHost, type OpenUiSurfaceHostProps, OpenUiSurfaceSnapshotHost, type OpenUiSurfaceSnapshotHostProps, type RendererCapability, type RendererKind, type ResolvedChatLayout, ResultBlockList, type ResultBlockListProps, ResultBlocksPro, type ResultBlocksProProps, type RunSnapshot, type RuntimeAppearanceConfig, type RuntimeConfig, type RuntimeConfigStore, type RuntimeRendererId, type SandboxExecutorDeps, SettingsDrawer, type SettingsDrawerProps, SkillBadges, SpecInteraction, type SpecInteractionProps, type UserProfileApi, type UserProfileImportDiff, VercelPayloadPreview, type VercelPayloadPreviewProps, VercelSurfaceHost, type VercelSurfaceHostProps, VercelSurfaceSnapshotHost, type VercelSurfaceSnapshotHostProps, chatbotDictionary, configureA2uiMarkdown, createLocalStorageRuntimeConfigStore, createMemoryRuntimeConfigStore, probeA2uiAvailability, probeOpenUiAvailability, useT };