@webskill/chatbot 0.12.0 → 0.14.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/chatbot.css CHANGED
@@ -349,6 +349,12 @@
349
349
  max-width: 96rem;
350
350
  }
351
351
  }
352
+ .m-1 {
353
+ margin: var(--spacing);
354
+ }
355
+ .m-2 {
356
+ margin: calc(var(--spacing) * 2);
357
+ }
352
358
  .m-3 {
353
359
  margin: calc(var(--spacing) * 3);
354
360
  }
@@ -1068,6 +1074,9 @@
1068
1074
  .fill-ink {
1069
1075
  fill: var(--foreground);
1070
1076
  }
1077
+ .object-contain {
1078
+ object-fit: contain;
1079
+ }
1071
1080
  .object-cover {
1072
1081
  object-fit: cover;
1073
1082
  }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { AgentLoopConfig, ApprovalScope, BridgeCapabilities, DataSourceInfo, DocumentSurfaceHost, DocxTextExtractor, ExternalSkillProvider, ExternalToolSource, FileSystemProvider, HookRunner, InteractionRequest, InteractionResponse, LifecycleEventInit, LinkedDocumentReader, LlmClient, NetworkPolicy, Page, PageQuery, PdfTextExtractor, RenderBlock, RenderResultRequest, RunSnapshot, RunSnapshotListEntry, RuntimePhase, RuntimeRun, ScriptExecutor, SessionStore, SkillCandidateMarker, SkillCatalogEntry, SkillIntegrityGuard, SkillOutcomeReporter, SkillStateGuard, UiBridge, UiSpecDrafts, UiSpecEvent, UiSpecSnapshot, UiSurfaceActionRequest, UiSurfaceActionResponse, UserProfile, UserProfileExport, WebSkillErrorCode, XlsxTextExtractor, 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 { DownloadedFileConsent, DownloadedFileReader, PageActionPolicy, PagePerceptionPolicy, PerceptionPagingBudget, PerceptionRecord, SkillCandidateSink, TodoItem } from "@webskill/sdk/agent";
4
+ import { DownloadedFileConsent, DownloadedFileReader, PageActionPolicy, PagePerceptionPolicy, PerceptionPagingBudget, PerceptionRecord, SkillCandidateSink, TabWorksetPolicy, 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
@@ -506,6 +506,15 @@ interface ChatbotHostAdapter {
506
506
  * @experimental
507
507
  */
508
508
  pageActions?: PageActionPolicy;
509
+ /**
510
+ * 模型侧标签页控制(0.16.0 分册 12)。**不注入即三个工具不存在**。
511
+ *
512
+ * 与 `pageActions` 分开给,是因为它们的实现依赖不同:前者只需一条页面通道,
513
+ * 后者需要宿主真的能枚举与关闭标签页。但它们的**开关**是同一个:
514
+ * 策略自己以 `pageActions.enabled` 为前提,不能操作页面的会话里切页没有意义。
515
+ * @experimental
516
+ */
517
+ pageTabs?: TabWorksetPolicy;
509
518
  /**
510
519
  * 读页面链接指向的文档(分册 22)。实现住在 `@webskill/browser`,
511
520
  * 而 chatbot 不依赖它 —— 与 `pagePerception` 同一条装配规矩:宿主注入。
@@ -1483,17 +1492,28 @@ declare const chatbotDictionary: {
1483
1492
  'interaction.pageAction.select': string;
1484
1493
  'interaction.pageAction.set': string;
1485
1494
  'interaction.pageAction.attach': string;
1495
+ 'interaction.pageAction.back': string;
1486
1496
  'interaction.pageAction.role.click': string;
1487
1497
  'interaction.pageAction.role.fill': string;
1488
1498
  'interaction.pageAction.role.submit': string;
1489
1499
  'interaction.pageAction.role.select': string;
1490
1500
  'interaction.pageAction.role.set': string;
1491
1501
  'interaction.pageAction.role.attach': string;
1502
+ 'interaction.pageAction.role.back': string;
1492
1503
  'interaction.pageAction.remember': string;
1493
1504
  'interaction.pageAction.frame': string;
1494
1505
  'interaction.pageAction.elevated': string;
1506
+ 'interaction.downloadedFile.list': string;
1507
+ 'interaction.downloadedFile.read': string;
1495
1508
  'interaction.downloadedFile.file': string;
1496
1509
  'interaction.downloadedFile.remember': string;
1510
+ 'interaction.uploadFile.read': string;
1511
+ 'interaction.uploadFile.file': string;
1512
+ 'interaction.sandbox.readReference': string;
1513
+ 'interaction.sandbox.readAsset': string;
1514
+ 'interaction.sandbox.fetchData': string;
1515
+ 'interaction.sandbox.writeArtifact': string;
1516
+ 'interaction.sandbox.confirm': string;
1497
1517
  'interaction.traceEvidence.title': string;
1498
1518
  'interaction.traceEvidence.columnDraft': string;
1499
1519
  'interaction.traceEvidence.columnTrace': string;
@@ -1567,6 +1587,20 @@ declare const chatbotDictionary: {
1567
1587
  'composer.dictate.recording': string;
1568
1588
  'composer.dictate.api-missing': string;
1569
1589
  'composer.dictate.insecure-context': string;
1590
+ 'composer.dictate.denied': string;
1591
+ 'composer.dictate.denied.handoff': string;
1592
+ 'composer.dictate.failed': string;
1593
+ 'composer.camera': string;
1594
+ 'composer.camera.title': string;
1595
+ 'composer.camera.description': string;
1596
+ 'composer.camera.preview': string;
1597
+ 'composer.camera.shutter': string;
1598
+ 'composer.camera.noStorage': string;
1599
+ 'composer.camera.api-missing': string;
1600
+ 'composer.camera.insecure-context': string;
1601
+ 'composer.camera.denied': string;
1602
+ 'composer.camera.denied.handoff': string;
1603
+ 'composer.camera.failed': string;
1570
1604
  'settings.title': string;
1571
1605
  'settings.group.general': string;
1572
1606
  'settings.group.models': string;
@@ -1845,17 +1879,28 @@ declare const chatbotDictionary: {
1845
1879
  'interaction.pageAction.select': string;
1846
1880
  'interaction.pageAction.set': string;
1847
1881
  'interaction.pageAction.attach': string;
1882
+ 'interaction.pageAction.back': string;
1848
1883
  'interaction.pageAction.role.click': string;
1849
1884
  'interaction.pageAction.role.fill': string;
1850
1885
  'interaction.pageAction.role.submit': string;
1851
1886
  'interaction.pageAction.role.select': string;
1852
1887
  'interaction.pageAction.role.set': string;
1853
1888
  'interaction.pageAction.role.attach': string;
1889
+ 'interaction.pageAction.role.back': string;
1854
1890
  'interaction.pageAction.remember': string;
1855
1891
  'interaction.pageAction.frame': string;
1856
1892
  'interaction.pageAction.elevated': string;
1893
+ 'interaction.downloadedFile.list': string;
1894
+ 'interaction.downloadedFile.read': string;
1857
1895
  'interaction.downloadedFile.file': string;
1858
1896
  'interaction.downloadedFile.remember': string;
1897
+ 'interaction.uploadFile.read': string;
1898
+ 'interaction.uploadFile.file': string;
1899
+ 'interaction.sandbox.readReference': string;
1900
+ 'interaction.sandbox.readAsset': string;
1901
+ 'interaction.sandbox.fetchData': string;
1902
+ 'interaction.sandbox.writeArtifact': string;
1903
+ 'interaction.sandbox.confirm': string;
1859
1904
  'interaction.traceEvidence.title': string;
1860
1905
  'interaction.traceEvidence.columnDraft': string;
1861
1906
  'interaction.traceEvidence.columnTrace': string;
@@ -1929,6 +1974,20 @@ declare const chatbotDictionary: {
1929
1974
  'composer.dictate.recording': string;
1930
1975
  'composer.dictate.api-missing': string;
1931
1976
  'composer.dictate.insecure-context': string;
1977
+ 'composer.dictate.denied': string;
1978
+ 'composer.dictate.denied.handoff': string;
1979
+ 'composer.dictate.failed': string;
1980
+ 'composer.camera': string;
1981
+ 'composer.camera.title': string;
1982
+ 'composer.camera.description': string;
1983
+ 'composer.camera.preview': string;
1984
+ 'composer.camera.shutter': string;
1985
+ 'composer.camera.noStorage': string;
1986
+ 'composer.camera.api-missing': string;
1987
+ 'composer.camera.insecure-context': string;
1988
+ 'composer.camera.denied': string;
1989
+ 'composer.camera.denied.handoff': string;
1990
+ 'composer.camera.failed': string;
1932
1991
  'settings.title': string;
1933
1992
  'settings.group.general': string;
1934
1993
  'settings.group.models': string;
@@ -2210,17 +2269,28 @@ declare const useT: () => TranslateFn<{
2210
2269
  'interaction.pageAction.select': string;
2211
2270
  'interaction.pageAction.set': string;
2212
2271
  'interaction.pageAction.attach': string;
2272
+ 'interaction.pageAction.back': string;
2213
2273
  'interaction.pageAction.role.click': string;
2214
2274
  'interaction.pageAction.role.fill': string;
2215
2275
  'interaction.pageAction.role.submit': string;
2216
2276
  'interaction.pageAction.role.select': string;
2217
2277
  'interaction.pageAction.role.set': string;
2218
2278
  'interaction.pageAction.role.attach': string;
2279
+ 'interaction.pageAction.role.back': string;
2219
2280
  'interaction.pageAction.remember': string;
2220
2281
  'interaction.pageAction.frame': string;
2221
2282
  'interaction.pageAction.elevated': string;
2283
+ 'interaction.downloadedFile.list': string;
2284
+ 'interaction.downloadedFile.read': string;
2222
2285
  'interaction.downloadedFile.file': string;
2223
2286
  'interaction.downloadedFile.remember': string;
2287
+ 'interaction.uploadFile.read': string;
2288
+ 'interaction.uploadFile.file': string;
2289
+ 'interaction.sandbox.readReference': string;
2290
+ 'interaction.sandbox.readAsset': string;
2291
+ 'interaction.sandbox.fetchData': string;
2292
+ 'interaction.sandbox.writeArtifact': string;
2293
+ 'interaction.sandbox.confirm': string;
2224
2294
  'interaction.traceEvidence.title': string;
2225
2295
  'interaction.traceEvidence.columnDraft': string;
2226
2296
  'interaction.traceEvidence.columnTrace': string;
@@ -2294,6 +2364,20 @@ declare const useT: () => TranslateFn<{
2294
2364
  'composer.dictate.recording': string;
2295
2365
  'composer.dictate.api-missing': string;
2296
2366
  'composer.dictate.insecure-context': string;
2367
+ 'composer.dictate.denied': string;
2368
+ 'composer.dictate.denied.handoff': string;
2369
+ 'composer.dictate.failed': string;
2370
+ 'composer.camera': string;
2371
+ 'composer.camera.title': string;
2372
+ 'composer.camera.description': string;
2373
+ 'composer.camera.preview': string;
2374
+ 'composer.camera.shutter': string;
2375
+ 'composer.camera.noStorage': string;
2376
+ 'composer.camera.api-missing': string;
2377
+ 'composer.camera.insecure-context': string;
2378
+ 'composer.camera.denied': string;
2379
+ 'composer.camera.denied.handoff': string;
2380
+ 'composer.camera.failed': string;
2297
2381
  'settings.title': string;
2298
2382
  'settings.group.general': string;
2299
2383
  'settings.group.models': string;
@@ -2572,17 +2656,28 @@ declare const useT: () => TranslateFn<{
2572
2656
  'interaction.pageAction.select': string;
2573
2657
  'interaction.pageAction.set': string;
2574
2658
  'interaction.pageAction.attach': string;
2659
+ 'interaction.pageAction.back': string;
2575
2660
  'interaction.pageAction.role.click': string;
2576
2661
  'interaction.pageAction.role.fill': string;
2577
2662
  'interaction.pageAction.role.submit': string;
2578
2663
  'interaction.pageAction.role.select': string;
2579
2664
  'interaction.pageAction.role.set': string;
2580
2665
  'interaction.pageAction.role.attach': string;
2666
+ 'interaction.pageAction.role.back': string;
2581
2667
  'interaction.pageAction.remember': string;
2582
2668
  'interaction.pageAction.frame': string;
2583
2669
  'interaction.pageAction.elevated': string;
2670
+ 'interaction.downloadedFile.list': string;
2671
+ 'interaction.downloadedFile.read': string;
2584
2672
  'interaction.downloadedFile.file': string;
2585
2673
  'interaction.downloadedFile.remember': string;
2674
+ 'interaction.uploadFile.read': string;
2675
+ 'interaction.uploadFile.file': string;
2676
+ 'interaction.sandbox.readReference': string;
2677
+ 'interaction.sandbox.readAsset': string;
2678
+ 'interaction.sandbox.fetchData': string;
2679
+ 'interaction.sandbox.writeArtifact': string;
2680
+ 'interaction.sandbox.confirm': string;
2586
2681
  'interaction.traceEvidence.title': string;
2587
2682
  'interaction.traceEvidence.columnDraft': string;
2588
2683
  'interaction.traceEvidence.columnTrace': string;
@@ -2656,6 +2751,20 @@ declare const useT: () => TranslateFn<{
2656
2751
  'composer.dictate.recording': string;
2657
2752
  'composer.dictate.api-missing': string;
2658
2753
  'composer.dictate.insecure-context': string;
2754
+ 'composer.dictate.denied': string;
2755
+ 'composer.dictate.denied.handoff': string;
2756
+ 'composer.dictate.failed': string;
2757
+ 'composer.camera': string;
2758
+ 'composer.camera.title': string;
2759
+ 'composer.camera.description': string;
2760
+ 'composer.camera.preview': string;
2761
+ 'composer.camera.shutter': string;
2762
+ 'composer.camera.noStorage': string;
2763
+ 'composer.camera.api-missing': string;
2764
+ 'composer.camera.insecure-context': string;
2765
+ 'composer.camera.denied': string;
2766
+ 'composer.camera.denied.handoff': string;
2767
+ 'composer.camera.failed': string;
2659
2768
  'settings.title': string;
2660
2769
  'settings.group.general': string;
2661
2770
  'settings.group.models': string;
@@ -2849,6 +2958,18 @@ interface ChatbotProps {
2849
2958
  renderer?: RendererKind;
2850
2959
  /** 语音识别语言(BCP-47);缺省跟随界面语言(FR-7.7) */
2851
2960
  dictationLang?: string;
2961
+ /**
2962
+ * 麦克风授权被拒时的宿主出口(0.17.0 FR-10.1)。
2963
+ * 侧栏 / popup 这类页面没地方错权限气泡,只有宿主知道该把用户带到哪儿去。
2964
+ * 不接就只给一句「去浏览器权限设置里允许」的提示,行为与以往一致。
2965
+ */
2966
+ onDictationPermissionDenied?(): void;
2967
+ /**
2968
+ * 摄像头授权被拒时的宿主出口(0.17.0 FR-14.7)。
2969
+ * 机制与 `onDictationPermissionDenied` 完全一致:侧栏 / popup 弹不出浏览器的授权气泡。
2970
+ * 不接就只给一句「去浏览器权限设置里允许」的提示。
2971
+ */
2972
+ onCameraPermissionDenied?(): void;
2852
2973
  /** Native custom surface 的显式 renderer/schema allowlist。 */
2853
2974
  surfaceRegistry?: SurfaceRegistry;
2854
2975
  /** 布局档(默认 'auto':按容器尺寸在 fullscreen / embedded / mobile 之间判定) */
@@ -2887,7 +3008,7 @@ interface ChatbotProps {
2887
3008
  * presentation shell and accessible thread primitives.
2888
3009
  * @stable
2889
3010
  */
2890
- declare function Chatbot({ adapter, config, locale: localeProp, theme: themeProp, renderer: rendererProp, dictationLang: dictationLangProp, surfaceRegistry, layout, sessionList, onOpenSettings, docked, onDock, onClose, onEngineReady }: ChatbotProps): import("react").JSX.Element;
3011
+ declare function Chatbot({ adapter, config, locale: localeProp, theme: themeProp, renderer: rendererProp, dictationLang: dictationLangProp, onDictationPermissionDenied, onCameraPermissionDenied, surfaceRegistry, layout, sessionList, onOpenSettings, docked, onDock, onClose, onEngineReady }: ChatbotProps): import("react").JSX.Element;
2891
3012
  //#endregion
2892
3013
  //#region src/react/A2uiSurfaceHost.d.ts
2893
3014
  /** @experimental */
@@ -3071,6 +3192,6 @@ declare function ErrorCard({ code, message, loopLimits, onOpenSettings, onDismis
3071
3192
  * Version of the published `@webskill/chatbot` package, injected at build time.
3072
3193
  * @stable
3073
3194
  */
3074
- declare const CHATBOT_VERSION = "0.12.0";
3195
+ declare const CHATBOT_VERSION = "0.14.0";
3075
3196
  //#endregion
3076
3197
  export { A2uiSurfaceHost, type A2uiSurfaceHostProps, A2uiSurfaceSnapshotHost, type A2uiSurfaceSnapshotHostProps, type AppearanceChange, CHATBOT_VERSION, type ChatAttachmentInput, type ChatAttachmentMeta, type ChatContentPart, ChatEngine, type ChatEngineOptions, type ChatEvent, type ChatInteractionRecord, type ChatLayout, type ChatMessage, type ChatRunPhase, type ChatSessionListResult, type ChatSessionMeta, type ChatTheme, type ChatThinking, type ChatTokenUsage, 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, type LocalizedText, OpenUiSurfaceHost, type OpenUiSurfaceHostProps, OpenUiSurfaceSnapshotHost, type OpenUiSurfaceSnapshotHostProps, type QuickPrompt, type QuickPromptIconName, type RendererCapability, type RendererKind, type ResolvedChatLayout, ResultBlockList, type ResultBlockListProps, ResultBlocksPro, type ResultBlocksProProps, type RunSnapshot, type RuntimeAppearanceConfig, type RuntimeConfig, type RuntimeConfigStore, type RuntimeQuickPrompt, type RuntimeRendererId, type SandboxExecutorDeps, type SettingsSectionId, SkillBadges, SpecInteraction, type SpecInteractionProps, VercelPayloadPreview, type VercelPayloadPreviewProps, VercelSurfaceHost, type VercelSurfaceHostProps, VercelSurfaceSnapshotHost, type VercelSurfaceSnapshotHostProps, chatbotDictionary, configureA2uiMarkdown, createLocalStorageRuntimeConfigStore, createMemoryRuntimeConfigStore, isLlmEntryUsable, pickUsableLlmEntry, probeA2uiAvailability, probeOpenUiAvailability, sandboxExecutorDeps, useT };