@trinityui/design-system 2.11.1 → 2.13.1
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/CHANGELOG.md +2171 -0
- package/CONTRIBUTING.md +180 -69
- package/LICENSE +21 -0
- package/MIGRATION.md +508 -28
- package/README.md +281 -120
- package/dist/IllustratedMessage.js +546 -1341
- package/dist/accessibility.d.ts +596 -18
- package/dist/accessibility.d.ts.map +1 -1
- package/dist/accessibility.js +458 -0
- package/dist/app-shell.js +17219 -9131
- package/dist/assets/index.d.ts +1 -1
- package/dist/charts.js +8507 -6059
- package/dist/color-contrast.d.ts +35 -0
- package/dist/color-contrast.d.ts.map +1 -0
- package/dist/commonjs-helpers.js +8 -0
- package/dist/component-color-references.d.ts +175 -0
- package/dist/component-color-references.d.ts.map +1 -0
- package/dist/components/AI/AIActions.d.ts +72 -12
- package/dist/components/AI/AIActions.d.ts.map +1 -1
- package/dist/components/AI/AIAvatar.d.ts +31 -3
- package/dist/components/AI/AIAvatar.d.ts.map +1 -1
- package/dist/components/AI/AIChainOfThought.d.ts +159 -77
- package/dist/components/AI/AIChainOfThought.d.ts.map +1 -1
- package/dist/components/AI/AIChainOfThought.types.d.ts +292 -40
- package/dist/components/AI/AIChainOfThought.types.d.ts.map +1 -1
- package/dist/components/AI/AIChainOfThought.utils.d.ts +25 -7
- package/dist/components/AI/AIChainOfThought.utils.d.ts.map +1 -1
- package/dist/components/AI/AIChat.d.ts +12 -0
- package/dist/components/AI/AIChat.d.ts.map +1 -1
- package/dist/components/AI/AIChatWelcome.d.ts +254 -0
- package/dist/components/AI/AIChatWelcome.d.ts.map +1 -0
- package/dist/components/AI/AIClarificationPrompt.d.ts +134 -0
- package/dist/components/AI/AIClarificationPrompt.d.ts.map +1 -0
- package/dist/components/AI/AIConfidenceBadge.d.ts +117 -0
- package/dist/components/AI/AIConfidenceBadge.d.ts.map +1 -0
- package/dist/components/AI/AIConfigContext.d.ts +100 -0
- package/dist/components/AI/AIConfigContext.d.ts.map +1 -0
- package/dist/components/AI/AIConfigProvider.d.ts +66 -0
- package/dist/components/AI/AIConfigProvider.d.ts.map +1 -0
- package/dist/components/AI/AIContainer.d.ts +80 -11
- package/dist/components/AI/AIContainer.d.ts.map +1 -1
- package/dist/components/AI/AIExplainability.d.ts +39 -5
- package/dist/components/AI/AIExplainability.d.ts.map +1 -1
- package/dist/components/AI/AIFeedbackControl.d.ts +113 -0
- package/dist/components/AI/AIFeedbackControl.d.ts.map +1 -0
- package/dist/components/AI/AIFeedbackForm.d.ts +117 -0
- package/dist/components/AI/AIFeedbackForm.d.ts.map +1 -0
- package/dist/components/AI/AIFeedbackHostContext.d.ts +16 -0
- package/dist/components/AI/AIFeedbackHostContext.d.ts.map +1 -0
- package/dist/components/AI/AILabel.d.ts +39 -6
- package/dist/components/AI/AILabel.d.ts.map +1 -1
- package/dist/components/AI/AIMessage.d.ts +337 -42
- package/dist/components/AI/AIMessage.d.ts.map +1 -1
- package/dist/components/AI/AIPlanReview.d.ts +194 -0
- package/dist/components/AI/AIPlanReview.d.ts.map +1 -0
- package/dist/components/AI/AIQueryDisclosure.d.ts +119 -0
- package/dist/components/AI/AIQueryDisclosure.d.ts.map +1 -0
- package/dist/components/AI/AIRelatedQuestions.d.ts +50 -11
- package/dist/components/AI/AIRelatedQuestions.d.ts.map +1 -1
- package/dist/components/AI/AIResponseRenderer.d.ts +133 -21
- package/dist/components/AI/AIResponseRenderer.d.ts.map +1 -1
- package/dist/components/AI/AIResponseSourcesContext.d.ts +83 -0
- package/dist/components/AI/AIResponseSourcesContext.d.ts.map +1 -0
- package/dist/components/AI/AIReviewItem.d.ts +142 -0
- package/dist/components/AI/AIReviewItem.d.ts.map +1 -0
- package/dist/components/AI/AISourceChip.d.ts +135 -0
- package/dist/components/AI/AISourceChip.d.ts.map +1 -0
- package/dist/components/AI/AISources.d.ts +81 -11
- package/dist/components/AI/AISources.d.ts.map +1 -1
- package/dist/components/AI/AISourcesPanel.d.ts +43 -7
- package/dist/components/AI/AISourcesPanel.d.ts.map +1 -1
- package/dist/components/AI/AITextBlock.d.ts +104 -16
- package/dist/components/AI/AITextBlock.d.ts.map +1 -1
- package/dist/components/AI/AITextBlock.parser.d.ts +153 -0
- package/dist/components/AI/AITextBlock.parser.d.ts.map +1 -0
- package/dist/components/AI/AIVerificationBadge.d.ts +94 -0
- package/dist/components/AI/AIVerificationBadge.d.ts.map +1 -0
- package/dist/components/AI/AIVisuals.d.ts +92 -23
- package/dist/components/AI/AIVisuals.d.ts.map +1 -1
- package/dist/components/AI/AIVoiceInput.d.ts +42 -11
- package/dist/components/AI/AIVoiceInput.d.ts.map +1 -1
- package/dist/components/AI/AIVoiceMode.d.ts +16 -2
- package/dist/components/AI/AIVoiceMode.d.ts.map +1 -1
- package/dist/components/AI/BlockErrorBoundary.d.ts +77 -0
- package/dist/components/AI/BlockErrorBoundary.d.ts.map +1 -0
- package/dist/components/AI/ChatHeader.d.ts +41 -4
- package/dist/components/AI/ChatHeader.d.ts.map +1 -1
- package/dist/components/AI/ChatHistoryList.d.ts +25 -12
- package/dist/components/AI/ChatHistoryList.d.ts.map +1 -1
- package/dist/components/AI/ChatThread.d.ts +263 -13
- package/dist/components/AI/ChatThread.d.ts.map +1 -1
- package/dist/components/AI/InThreadContext.d.ts +14 -0
- package/dist/components/AI/InThreadContext.d.ts.map +1 -0
- package/dist/components/AI/InsightEngine.d.ts +270 -46
- package/dist/components/AI/InsightEngine.d.ts.map +1 -1
- package/dist/components/AI/InsightEngineInput.d.ts +47 -4
- package/dist/components/AI/InsightEngineInput.d.ts.map +1 -1
- package/dist/components/AI/MessageActionButton.d.ts +72 -0
- package/dist/components/AI/MessageActionButton.d.ts.map +1 -0
- package/dist/components/AI/QueryInput.d.ts.map +1 -1
- package/dist/components/AI/UserAvatar.d.ts +50 -4
- package/dist/components/AI/UserAvatar.d.ts.map +1 -1
- package/dist/components/AI/UserMessage.d.ts +32 -3
- package/dist/components/AI/UserMessage.d.ts.map +1 -1
- package/dist/components/AI/blockRendererContext.d.ts +64 -0
- package/dist/components/AI/blockRendererContext.d.ts.map +1 -0
- package/dist/components/AI/hitlBlockRenderers.d.ts +48 -0
- package/dist/components/AI/hitlBlockRenderers.d.ts.map +1 -0
- package/dist/components/AI/index.d.ts +23 -6
- package/dist/components/AI/index.d.ts.map +1 -1
- package/dist/components/AI/moleculeBlockRenderers.d.ts +15 -0
- package/dist/components/AI/moleculeBlockRenderers.d.ts.map +1 -0
- package/dist/components/AI/planReviewBlockRenderer.d.ts +8 -0
- package/dist/components/AI/planReviewBlockRenderer.d.ts.map +1 -0
- package/dist/components/AI/strings/defaults.d.ts +31 -0
- package/dist/components/AI/strings/defaults.d.ts.map +1 -0
- package/dist/components/AI/tokens.d.ts +185 -20
- package/dist/components/AI/tokens.d.ts.map +1 -1
- package/dist/components/AI/types/hitl.d.ts +2294 -0
- package/dist/components/AI/types/hitl.d.ts.map +1 -0
- package/dist/components/AI/types/index.d.ts +2 -1
- package/dist/components/AI/types/index.d.ts.map +1 -1
- package/dist/components/AI/types/response.d.ts +428 -40
- package/dist/components/AI/types/response.d.ts.map +1 -1
- package/dist/components/AI/useBlockSources.d.ts +67 -0
- package/dist/components/AI/useBlockSources.d.ts.map +1 -0
- package/dist/components/AI/useBrowserVoiceMode.d.ts +31 -2
- package/dist/components/AI/useBrowserVoiceMode.d.ts.map +1 -1
- package/dist/components/AI/useWelcomeComposerHandoff.d.ts +30 -0
- package/dist/components/AI/useWelcomeComposerHandoff.d.ts.map +1 -0
- package/dist/components/AI/utils/alphaIndex.d.ts +19 -0
- package/dist/components/AI/utils/alphaIndex.d.ts.map +1 -0
- package/dist/components/AI/utils/blockReady.d.ts +54 -0
- package/dist/components/AI/utils/blockReady.d.ts.map +1 -0
- package/dist/components/AI/utils/blocks.d.ts +28 -0
- package/dist/components/AI/utils/blocks.d.ts.map +1 -0
- package/dist/components/AI/utils/confidence.d.ts +182 -0
- package/dist/components/AI/utils/confidence.d.ts.map +1 -0
- package/dist/components/AI/utils/filters.d.ts +31 -0
- package/dist/components/AI/utils/filters.d.ts.map +1 -0
- package/dist/components/AI/utils/responseText.d.ts +8 -0
- package/dist/components/AI/utils/responseText.d.ts.map +1 -0
- package/dist/components/AI/utils/sources.d.ts +110 -0
- package/dist/components/AI/utils/sources.d.ts.map +1 -0
- package/dist/components/AIDigestCard/AIDigestCard.d.ts.map +1 -1
- package/dist/components/AIDigestCard/types.d.ts +42 -5
- package/dist/components/AIDigestCard/types.d.ts.map +1 -1
- package/dist/components/AppLayout/AIFab.d.ts +33 -6
- package/dist/components/AppLayout/AIFab.d.ts.map +1 -1
- package/dist/components/AppLayout/AIFabLayout.deprecated.d.ts.map +1 -1
- package/dist/components/AppLayout/AppLayout.d.ts +143 -8
- package/dist/components/AppLayout/AppLayout.d.ts.map +1 -1
- package/dist/components/AppLayout/InsightEnginePanel.d.ts +315 -21
- package/dist/components/AppLayout/InsightEnginePanel.d.ts.map +1 -1
- package/dist/components/AppLayout/ResizablePanel.d.ts +145 -8
- package/dist/components/AppLayout/ResizablePanel.d.ts.map +1 -1
- package/dist/components/AppLayout/ThreadHistorySidebar.d.ts +6 -0
- package/dist/components/AppLayout/ThreadHistorySidebar.d.ts.map +1 -1
- package/dist/components/AppLayout/index.d.ts +3 -3
- package/dist/components/AppLayout/index.d.ts.map +1 -1
- package/dist/components/AppLayout/insightEnginePanel.demo.d.ts +32 -0
- package/dist/components/AppLayout/insightEnginePanel.demo.d.ts.map +1 -0
- package/dist/components/AppLayout/panelPropsPath.d.ts +26 -0
- package/dist/components/AppLayout/panelPropsPath.d.ts.map +1 -0
- package/dist/components/AppLayout/panelResizeTransition.d.ts +49 -0
- package/dist/components/AppLayout/panelResizeTransition.d.ts.map +1 -0
- package/dist/components/AppLayout/toChatThreadMessage.d.ts +40 -0
- package/dist/components/AppLayout/toChatThreadMessage.d.ts.map +1 -0
- package/dist/components/AssessmentDrawer/AssessmentDrawer.d.ts +5 -1
- package/dist/components/AssessmentDrawer/AssessmentDrawer.d.ts.map +1 -1
- package/dist/components/AuditDrawer/AuditDrawer.d.ts +4 -3
- package/dist/components/AuditDrawer/AuditDrawer.d.ts.map +1 -1
- package/dist/components/AuditDrawer/index.d.ts +1 -1
- package/dist/components/AuditDrawer/index.d.ts.map +1 -1
- package/dist/components/AuditDrawer/types.d.ts +39 -5
- package/dist/components/AuditDrawer/types.d.ts.map +1 -1
- package/dist/components/Autocomplete/Autocomplete.d.ts +6 -1
- package/dist/components/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/components/BulkActionDock/BulkActionDock.d.ts.map +1 -1
- package/dist/components/Carousel/Carousel.d.ts +10 -2
- package/dist/components/Carousel/Carousel.d.ts.map +1 -1
- package/dist/components/Charts/AreaChart.d.ts.map +1 -1
- package/dist/components/Charts/BarChart.d.ts.map +1 -1
- package/dist/components/Charts/ChartWrapper.d.ts.map +1 -1
- package/dist/components/Charts/ComposedChart.d.ts.map +1 -1
- package/dist/components/Charts/CustomLegend.d.ts +11 -2
- package/dist/components/Charts/CustomLegend.d.ts.map +1 -1
- package/dist/components/Charts/LineChart.d.ts.map +1 -1
- package/dist/components/Charts/PieChart.d.ts.map +1 -1
- package/dist/components/Charts/RadialChart.d.ts.map +1 -1
- package/dist/components/Charts/ScatterChart.d.ts.map +1 -1
- package/dist/components/Charts/Sparkline.d.ts.map +1 -1
- package/dist/components/Charts/gaugeGeometry.d.ts +35 -0
- package/dist/components/Charts/gaugeGeometry.d.ts.map +1 -0
- package/dist/components/Charts/highcharts.d.ts +23 -0
- package/dist/components/Charts/highcharts.d.ts.map +1 -0
- package/dist/components/Charts/highchartsUtils.d.ts +101 -6
- package/dist/components/Charts/highchartsUtils.d.ts.map +1 -1
- package/dist/components/Charts/index.d.ts +1 -1
- package/dist/components/Charts/index.d.ts.map +1 -1
- package/dist/components/Charts/tokens.d.ts +21 -0
- package/dist/components/Charts/tokens.d.ts.map +1 -1
- package/dist/components/Charts/types.d.ts +7 -7
- package/dist/components/Charts/types.d.ts.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/components/ChoiceChips/ChoiceChips.d.ts +106 -0
- package/dist/components/ChoiceChips/ChoiceChips.d.ts.map +1 -0
- package/dist/components/ClearableTextField/ClearableTextField.d.ts +23 -2
- package/dist/components/ClearableTextField/ClearableTextField.d.ts.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.d.ts +80 -0
- package/dist/components/CodeBlock/CodeBlock.d.ts.map +1 -0
- package/dist/components/Combobox/Combobox.d.ts +3 -2
- package/dist/components/Combobox/Combobox.d.ts.map +1 -1
- package/dist/components/CommandPalette/CommandPalette.d.ts +54 -3
- package/dist/components/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/components/CommandPalette/index.d.ts +1 -1
- package/dist/components/CommandPalette/index.d.ts.map +1 -1
- package/dist/components/CopyButton/CopyButton.d.ts +80 -0
- package/dist/components/CopyButton/CopyButton.d.ts.map +1 -0
- package/dist/components/DataCard/DataCard.d.ts +11 -1
- package/dist/components/DataCard/DataCard.d.ts.map +1 -1
- package/dist/components/DataTable/CellRenderers.d.ts +8 -11
- package/dist/components/DataTable/CellRenderers.d.ts.map +1 -1
- package/dist/components/DataTable/DataTable.d.ts +1 -1
- package/dist/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/components/DataTable/InlineAddRow.d.ts.map +1 -1
- package/dist/components/DataTable/columnContext.d.ts +8 -0
- package/dist/components/DataTable/columnContext.d.ts.map +1 -0
- package/dist/components/DataTable/index.d.ts +2 -2
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DataTable/labels.d.ts +13 -0
- package/dist/components/DataTable/labels.d.ts.map +1 -0
- package/dist/components/DataTable/types.d.ts +34 -0
- package/dist/components/DataTable/types.d.ts.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/DetailsPopover/DetailsPopover.d.ts +185 -0
- package/dist/components/DetailsPopover/DetailsPopover.d.ts.map +1 -0
- package/dist/components/DiffViewer/DiffViewer.d.ts +3 -2
- package/dist/components/DiffViewer/DiffViewer.d.ts.map +1 -1
- package/dist/components/Disclosure/Disclosure.d.ts +83 -0
- package/dist/components/Disclosure/Disclosure.d.ts.map +1 -0
- package/dist/components/DockLayout/DockLayout.d.ts +58 -0
- package/dist/components/DockLayout/DockLayout.d.ts.map +1 -1
- package/dist/components/DockLayout/index.d.ts +1 -1
- package/dist/components/DockLayout/index.d.ts.map +1 -1
- package/dist/components/DocumentCard/DocumentCard.d.ts +5 -1
- package/dist/components/DocumentCard/DocumentCard.d.ts.map +1 -1
- package/dist/components/EntityDetailPanel/EntityDetailPanel.d.ts +6 -2
- package/dist/components/EntityDetailPanel/EntityDetailPanel.d.ts.map +1 -1
- package/dist/components/FileUpload/FileUpload.d.ts +141 -6
- package/dist/components/FileUpload/FileUpload.d.ts.map +1 -1
- package/dist/components/FileUpload/index.d.ts +1 -1
- package/dist/components/FileUpload/index.d.ts.map +1 -1
- package/dist/components/FilterBar/FilterBar.d.ts +27 -1
- package/dist/components/FilterBar/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar/index.d.ts +1 -1
- package/dist/components/FilterBar/index.d.ts.map +1 -1
- package/dist/components/FlowAutoLayout/useFlowAutoLayout.d.ts.map +1 -1
- package/dist/components/GanttView/GanttView.d.ts +24 -0
- package/dist/components/GanttView/GanttView.d.ts.map +1 -1
- package/dist/components/GanttView/types.d.ts +33 -7
- package/dist/components/GanttView/types.d.ts.map +1 -1
- package/dist/components/GaugeCard/GaugeCard.d.ts +4 -3
- package/dist/components/GaugeCard/GaugeCard.d.ts.map +1 -1
- package/dist/components/GaugeCard/geometry.d.ts +59 -0
- package/dist/components/GaugeCard/geometry.d.ts.map +1 -0
- package/dist/components/GeoStatusMap/GeoStatusMap.d.ts.map +1 -1
- package/dist/components/GeoStatusMap/types.d.ts +8 -5
- package/dist/components/GeoStatusMap/types.d.ts.map +1 -1
- package/dist/components/GoToTop/GoToTop.d.ts +1 -1
- package/dist/components/GoToTop/GoToTop.d.ts.map +1 -1
- package/dist/components/HierarchicalDrillDown/HierarchicalDrillDown.d.ts.map +1 -1
- package/dist/components/HistoricalDataIndicator/HistoricalDataIndicator.d.ts.map +1 -1
- package/dist/components/HtmlToMui/HtmlToMui.d.ts.map +1 -1
- package/dist/components/Icon.d.ts +567 -10
- package/dist/components/Icon.d.ts.map +1 -1
- package/dist/components/IllustratedMessage.d.ts +52 -3
- package/dist/components/IllustratedMessage.d.ts.map +1 -1
- package/dist/components/InlineEditableText/InlineEditableText.d.ts +117 -0
- package/dist/components/InlineEditableText/InlineEditableText.d.ts.map +1 -0
- package/dist/components/InsightCard/InsightCard.d.ts.map +1 -1
- package/dist/components/InsightCard/types.d.ts +10 -3
- package/dist/components/InsightCard/types.d.ts.map +1 -1
- package/dist/components/KeyValueList/KeyValueList.d.ts +94 -0
- package/dist/components/KeyValueList/KeyValueList.d.ts.map +1 -0
- package/dist/components/LandingPage/FeatureCard.d.ts +4 -0
- package/dist/components/LandingPage/FeatureCard.d.ts.map +1 -1
- package/dist/components/LandingPage/LandingPage.d.ts +43 -4
- package/dist/components/LandingPage/LandingPage.d.ts.map +1 -1
- package/dist/components/LandingPage/heroTone.d.ts +54 -0
- package/dist/components/LandingPage/heroTone.d.ts.map +1 -0
- package/dist/components/MentionsInput/MentionsInput.d.ts.map +1 -1
- package/dist/components/MetaChip/MetaChip.d.ts +113 -0
- package/dist/components/MetaChip/MetaChip.d.ts.map +1 -0
- package/dist/components/Modal/Modal.d.ts +222 -20
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/index.d.ts +1 -1
- package/dist/components/Modal/index.d.ts.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.d.ts.map +1 -1
- package/dist/components/OrgChart/OrgChart.d.ts +5 -0
- package/dist/components/OrgChart/OrgChart.d.ts.map +1 -1
- package/dist/components/OrgChart/types.d.ts +31 -7
- package/dist/components/OrgChart/types.d.ts.map +1 -1
- package/dist/components/OverflowTooltip/OverflowTooltip.d.ts +1 -1
- package/dist/components/OverflowTooltip/OverflowTooltip.d.ts.map +1 -1
- package/dist/components/PageHeader/PageHeader.d.ts.map +1 -1
- package/dist/components/PageTOC/PageTOC.d.ts +2 -1
- package/dist/components/PageTOC/PageTOC.d.ts.map +1 -1
- package/dist/components/Popper/Popper.d.ts +80 -9
- package/dist/components/Popper/Popper.d.ts.map +1 -1
- package/dist/components/Popper/index.d.ts +1 -1
- package/dist/components/Popper/index.d.ts.map +1 -1
- package/dist/components/PredictiveTextInput/PredictiveTextInput.d.ts +5 -1
- package/dist/components/PredictiveTextInput/PredictiveTextInput.d.ts.map +1 -1
- package/dist/components/SearchInput/SearchInput.d.ts +49 -0
- package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/components/SearchInput/index.d.ts +1 -1
- package/dist/components/SearchInput/index.d.ts.map +1 -1
- package/dist/components/SimpleTable/SimpleTable.d.ts +11 -2
- package/dist/components/SimpleTable/SimpleTable.d.ts.map +1 -1
- package/dist/components/SplitPane/SplitPane.d.ts +2 -1
- package/dist/components/SplitPane/SplitPane.d.ts.map +1 -1
- package/dist/components/StatusHero/StatusHero.d.ts.map +1 -1
- package/dist/components/StatusIndicator/Badge.d.ts +6 -1
- package/dist/components/StatusIndicator/Badge.d.ts.map +1 -1
- package/dist/components/StatusIndicator/Chip.d.ts +3 -1
- package/dist/components/StatusIndicator/Chip.d.ts.map +1 -1
- package/dist/components/StatusIndicator/Indicators.d.ts +5 -1
- package/dist/components/StatusIndicator/Indicators.d.ts.map +1 -1
- package/dist/components/StatusIndicator/Legend.d.ts.map +1 -1
- package/dist/components/StatusIndicator/StatusIndicator.d.ts +98 -4
- package/dist/components/StatusIndicator/StatusIndicator.d.ts.map +1 -1
- package/dist/components/StatusIndicator/index.d.ts +2 -2
- package/dist/components/StatusIndicator/index.d.ts.map +1 -1
- package/dist/components/StatusIndicator/types.d.ts +48 -1
- package/dist/components/StatusIndicator/types.d.ts.map +1 -1
- package/dist/components/StepList/StepList.d.ts +80 -0
- package/dist/components/StepList/StepList.d.ts.map +1 -0
- package/dist/components/StepList/StepStatusMarker.d.ts +39 -0
- package/dist/components/StepList/StepStatusMarker.d.ts.map +1 -0
- package/dist/components/StepList/stepStatus.d.ts +30 -0
- package/dist/components/StepList/stepStatus.d.ts.map +1 -0
- package/dist/components/SystemBanner/SystemBanner.d.ts.map +1 -1
- package/dist/components/Timeline/Timeline.d.ts +57 -3
- package/dist/components/Timeline/Timeline.d.ts.map +1 -1
- package/dist/components/Timeline/index.d.ts +1 -1
- package/dist/components/Timeline/index.d.ts.map +1 -1
- package/dist/components/Timeline/timelineLabels.d.ts +70 -0
- package/dist/components/Timeline/timelineLabels.d.ts.map +1 -0
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/TopNavHeader.d.ts +18 -1
- package/dist/components/TopNavHeader.d.ts.map +1 -1
- package/dist/components/TopNavWithSidebar.d.ts +61 -2
- package/dist/components/TopNavWithSidebar.d.ts.map +1 -1
- package/dist/components/Tour/Tour.d.ts +18 -1
- package/dist/components/Tour/Tour.d.ts.map +1 -1
- package/dist/components/TransferList/TransferList.d.ts +123 -4
- package/dist/components/TransferList/TransferList.d.ts.map +1 -1
- package/dist/components/TransferList/index.d.ts +1 -1
- package/dist/components/TransferList/index.d.ts.map +1 -1
- package/dist/components/TreeView/TreeView.d.ts +97 -8
- package/dist/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/components/TreeView/index.d.ts +1 -1
- package/dist/components/TreeView/index.d.ts.map +1 -1
- package/dist/components/TrinityLoader.d.ts.map +1 -1
- package/dist/components/icons/featherExtensions.d.ts +55 -0
- package/dist/components/icons/featherExtensions.d.ts.map +1 -0
- package/dist/components/icons/materialExtensions.d.ts +20 -0
- package/dist/components/icons/materialExtensions.d.ts.map +1 -0
- package/dist/components/internal/index.d.ts +87 -0
- package/dist/components/internal/index.d.ts.map +1 -1
- package/dist/components/navigation/MenuListWithHeading.d.ts +33 -0
- package/dist/components/navigation/MenuListWithHeading.d.ts.map +1 -0
- package/dist/components/navigation/clientSelectorLabels.d.ts +13 -0
- package/dist/components/navigation/clientSelectorLabels.d.ts.map +1 -0
- package/dist/components/navigation/components.d.ts +6 -0
- package/dist/components/navigation/components.d.ts.map +1 -1
- package/dist/components/shared/AsyncOutcomeAlert.d.ts +91 -0
- package/dist/components/shared/AsyncOutcomeAlert.d.ts.map +1 -0
- package/dist/components/shared/TrinityIconSvg.d.ts.map +1 -1
- package/dist/components/shared/TrinityLogoSvg.d.ts.map +1 -1
- package/dist/components/shared/bidi.d.ts +44 -0
- package/dist/components/shared/bidi.d.ts.map +1 -0
- package/dist/components/shared/bidiText.d.ts +25 -0
- package/dist/components/shared/bidiText.d.ts.map +1 -0
- package/dist/components/shared/containerQueries.d.ts +73 -0
- package/dist/components/shared/containerQueries.d.ts.map +1 -0
- package/dist/components/shared/createStringsContext.d.ts +69 -0
- package/dist/components/shared/createStringsContext.d.ts.map +1 -0
- package/dist/components/shared/direction.d.ts +46 -0
- package/dist/components/shared/direction.d.ts.map +1 -0
- package/dist/components/shared/focusTrap.d.ts +36 -0
- package/dist/components/shared/focusTrap.d.ts.map +1 -0
- package/dist/components/shared/getInitials.d.ts +29 -0
- package/dist/components/shared/getInitials.d.ts.map +1 -0
- package/dist/components/shared/headingLevel.d.ts +69 -0
- package/dist/components/shared/headingLevel.d.ts.map +1 -0
- package/dist/components/shared/mergeSlotProps.d.ts +50 -0
- package/dist/components/shared/mergeSlotProps.d.ts.map +1 -0
- package/dist/components/shared/mergeSx.d.ts +26 -0
- package/dist/components/shared/mergeSx.d.ts.map +1 -0
- package/dist/components/shared/motion.d.ts +110 -0
- package/dist/components/shared/motion.d.ts.map +1 -0
- package/dist/components/shared/occurrenceKeys.d.ts +23 -0
- package/dist/components/shared/occurrenceKeys.d.ts.map +1 -0
- package/dist/components/shared/primaryAction.d.ts +89 -0
- package/dist/components/shared/primaryAction.d.ts.map +1 -0
- package/dist/components/shared/resizeKeyboard.d.ts +68 -0
- package/dist/components/shared/resizeKeyboard.d.ts.map +1 -0
- package/dist/components/shared/rootProps.d.ts +117 -0
- package/dist/components/shared/rootProps.d.ts.map +1 -0
- package/dist/components/shared/safeContent.d.ts +9 -2
- package/dist/components/shared/safeContent.d.ts.map +1 -1
- package/dist/components/shared/targetSize.d.ts +64 -0
- package/dist/components/shared/targetSize.d.ts.map +1 -0
- package/dist/components/shared/useContainerInlineSize.d.ts +43 -0
- package/dist/components/shared/useContainerInlineSize.d.ts.map +1 -0
- package/dist/components/shared/useCopyAction.d.ts +35 -0
- package/dist/components/shared/useCopyAction.d.ts.map +1 -0
- package/dist/components/shared/useOverflow.d.ts +44 -0
- package/dist/components/shared/useOverflow.d.ts.map +1 -0
- package/dist/components/shared/useResizable.d.ts +106 -7
- package/dist/components/shared/useResizable.d.ts.map +1 -1
- package/dist/components/shared/warnDeprecated.d.ts +89 -15
- package/dist/components/shared/warnDeprecated.d.ts.map +1 -1
- package/dist/components/shared/zIndexRoles.d.ts +62 -0
- package/dist/components/shared/zIndexRoles.d.ts.map +1 -0
- package/dist/components/templates/AIReviewQueue/AIReviewQueueTemplate.d.ts +213 -0
- package/dist/components/templates/AIReviewQueue/AIReviewQueueTemplate.d.ts.map +1 -0
- package/dist/components/templates/AIReviewQueue/index.d.ts +2 -0
- package/dist/components/templates/AIReviewQueue/index.d.ts.map +1 -0
- package/dist/components/templates/Auth/AuthTemplate.d.ts.map +1 -1
- package/dist/components/templates/Auth/types.d.ts +4 -1
- package/dist/components/templates/Auth/types.d.ts.map +1 -1
- package/dist/components/templates/Catalog/CatalogTemplate.d.ts.map +1 -1
- package/dist/components/templates/ConnectorWizard/ConnectorWizardTemplate.d.ts.map +1 -1
- package/dist/components/templates/InsightsCenter/InsightsCenterTemplate.d.ts.map +1 -1
- package/dist/components/templates/IntegrationDetail/IntegrationDetailTemplate.d.ts.map +1 -1
- package/dist/components/templates/ListDetail/ListDetailTemplate.d.ts +168 -10
- package/dist/components/templates/ListDetail/ListDetailTemplate.d.ts.map +1 -1
- package/dist/components/templates/ListDetail/index.d.ts +1 -1
- package/dist/components/templates/ListDetail/index.d.ts.map +1 -1
- package/dist/components/templates/ListDetail/listDetailLabels.d.ts +106 -0
- package/dist/components/templates/ListDetail/listDetailLabels.d.ts.map +1 -0
- package/dist/components/templates/Onboarding/OnboardingTemplate.d.ts.map +1 -1
- package/dist/components/templates/Settings/SettingsTemplate.d.ts +0 -3
- package/dist/components/templates/Settings/SettingsTemplate.d.ts.map +1 -1
- package/dist/components/templates/Wizard/WizardTemplate.d.ts +4 -1
- package/dist/components/templates/Wizard/WizardTemplate.d.ts.map +1 -1
- package/dist/components/templates/index.d.ts +2 -1
- package/dist/components/templates/index.d.ts.map +1 -1
- package/dist/data-table.d.ts +1 -1
- package/dist/data-table.d.ts.map +1 -1
- package/dist/data-table.js +1 -0
- package/dist/data-table2.js +13522 -13465
- package/dist/data.js +213 -194
- package/dist/elk.bundled.js +47371 -0
- package/dist/essentials.d.ts +3 -3
- package/dist/essentials.d.ts.map +1 -1
- package/dist/essentials.js +179 -147
- package/dist/focus-on-replace.js +49 -0
- package/dist/form.d.ts +26 -4
- package/dist/form.d.ts.map +1 -1
- package/dist/forms.js +575 -483
- package/dist/foundation.js +3704 -0
- package/dist/hooks/storageStore.d.ts +51 -0
- package/dist/hooks/storageStore.d.ts.map +1 -0
- package/dist/hooks/useAsyncAction.d.ts +65 -0
- package/dist/hooks/useAsyncAction.d.ts.map +1 -0
- package/dist/hooks/useDisclosure.d.ts +190 -0
- package/dist/hooks/useDisclosure.d.ts.map +1 -0
- package/dist/hooks/useFocusOnReplace.d.ts +95 -0
- package/dist/hooks/useFocusOnReplace.d.ts.map +1 -0
- package/dist/hooks/useTrinityPalette.d.ts +38 -40
- package/dist/hooks/useTrinityPalette.d.ts.map +1 -1
- package/dist/hooks.d.ts +44 -6
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +301 -0
- package/dist/index.d.ts +71 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13925 -60619
- package/dist/patterns/AICopilotPattern/AICopilotPattern.d.ts +203 -0
- package/dist/patterns/AICopilotPattern/AICopilotPattern.d.ts.map +1 -0
- package/dist/patterns/AICopilotPattern/index.d.ts +3 -0
- package/dist/patterns/AICopilotPattern/index.d.ts.map +1 -0
- package/dist/patterns/index.d.ts +15 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/presets/analytics.d.ts +8 -1
- package/dist/presets/analytics.d.ts.map +1 -1
- package/dist/presets/crm.d.ts +8 -1
- package/dist/presets/crm.d.ts.map +1 -1
- package/dist/presets/index.d.ts +1 -1
- package/dist/presets/portal.d.ts +8 -1
- package/dist/presets/portal.d.ts.map +1 -1
- package/dist/safe-content.js +69 -69
- package/dist/theme-augmentation.d.ts +388 -0
- package/dist/theme-augmentation.d.ts.map +1 -0
- package/dist/theme.d.ts +116 -30
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +891 -436
- package/dist/token-color.d.ts +14 -0
- package/dist/token-color.d.ts.map +1 -0
- package/dist/token-merge.d.ts +56 -0
- package/dist/token-merge.d.ts.map +1 -0
- package/dist/token-serialization.d.ts +65 -0
- package/dist/token-serialization.d.ts.map +1 -0
- package/dist/tokens.d.ts +882 -13
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +21 -19
- package/dist/trinity.css +1077 -414
- package/package.json +111 -90
- package/dist/components/index.d.ts +0 -145
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/shared.d.ts +0 -92
- package/dist/components/shared.d.ts.map +0 -1
|
@@ -0,0 +1,2294 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-in-the-loop (HITL) contract types (master plan F-02, ADR-16 (4)).
|
|
3
|
+
*
|
|
4
|
+
* The data an AI backend sends to the HITL components, and the content-free interaction
|
|
5
|
+
* payloads the components report back. Every data type here is plain JSON: strings, numbers,
|
|
6
|
+
* booleans, arrays and objects. No functions, no Date objects and no ReactNode. A component
|
|
7
|
+
* that lets you replace rendered content does that through its own props, never through this
|
|
8
|
+
* data. The one non-data type is `AIStrings`, the strings catalog that `AIConfigProvider`
|
|
9
|
+
* overrides: its count strings are functions (ADR-06 (8)).
|
|
10
|
+
*
|
|
11
|
+
* Contract rules:
|
|
12
|
+
*
|
|
13
|
+
* 1. Confidence is a number from 0 to 1. 0.92 means 92%. Convert 0-100 data once, at the
|
|
14
|
+
* boundary, with `normalizeConfidence(value, 'percent')`.
|
|
15
|
+
* 2. Timestamps are ISO 8601 strings, for example '2026-10-06T09:30:00Z'. Components format
|
|
16
|
+
* them for display; the data never carries display text for a date.
|
|
17
|
+
* 3. Ids are stable strings. The same id names the same item across renders, reloads and
|
|
18
|
+
* sessions, so components can key, restore and report on it.
|
|
19
|
+
* 4. Unions are open. A minor release may add a member to any union here, and never removes
|
|
20
|
+
* one outside a major release. Give every switch over these unions a default branch.
|
|
21
|
+
* 5. Every new field is optional. A field added after a type ships is optional, so older
|
|
22
|
+
* payloads keep type-checking.
|
|
23
|
+
*
|
|
24
|
+
* Plans and revisions (G-02): replanning keeps `AIPlan.id` and increments `AIPlan.revision`
|
|
25
|
+
* (1 for the first proposal, and a missing revision reads as 1). A plan with a new `id` is a
|
|
26
|
+
* different plan. So a client keeps per-plan history, such as which steps the user edited, by
|
|
27
|
+
* `id`, and starts a fresh draft for each `(id, revision)`.
|
|
28
|
+
*
|
|
29
|
+
* Low-confidence plan steps (G-43+): a step whose `confidence` is below the medium threshold
|
|
30
|
+
* (`AIConfidenceThresholds.medium`) must carry `clarification: { reason: 'low-confidence', ... }`,
|
|
31
|
+
* so the user is asked about the step before the plan runs. Confidence alone never blocks the
|
|
32
|
+
* confirm (that would leave the user nothing to do); AIPlanReview warns in development, naming the
|
|
33
|
+
* step id, when a below-threshold step has no clarification.
|
|
34
|
+
*
|
|
35
|
+
* Ownership: Workstream E owns this file (ADR-28 hot file `hot-file:hitl-types`, OD-F17).
|
|
36
|
+
* Workstreams F, G and H add their types to it through serialized changes.
|
|
37
|
+
*
|
|
38
|
+
* @module components/AI/types/hitl
|
|
39
|
+
*/
|
|
40
|
+
import type { AIResponse, AIResponseSource } from './response';
|
|
41
|
+
/**
|
|
42
|
+
* Confidence band of a value from 0 to 1, computed against {@link AIConfidenceThresholds}.
|
|
43
|
+
*
|
|
44
|
+
* Open union (contract rule 4): handle a default branch.
|
|
45
|
+
*
|
|
46
|
+
* @since 2.13.0
|
|
47
|
+
*/
|
|
48
|
+
export type AIConfidenceLevel = 'low' | 'medium' | 'high';
|
|
49
|
+
/**
|
|
50
|
+
* Where the confidence bands start. Both values are on the 0-1 scale, and
|
|
51
|
+
* `0 <= medium <= high <= 1`. A value below `medium` is `'low'`.
|
|
52
|
+
*
|
|
53
|
+
* The defaults are `DEFAULT_AI_CONFIDENCE_THRESHOLDS` ({ medium: 0.6, high: 0.85 }), placeholders
|
|
54
|
+
* owned by product.
|
|
55
|
+
*
|
|
56
|
+
* @since 2.13.0
|
|
57
|
+
*/
|
|
58
|
+
export interface AIConfidenceThresholds {
|
|
59
|
+
/** Lowest value rated `'medium'`, inclusive. 0-1. */
|
|
60
|
+
medium: number;
|
|
61
|
+
/** Lowest value rated `'high'`, inclusive. 0-1. */
|
|
62
|
+
high: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Review state of an answer.
|
|
66
|
+
*
|
|
67
|
+
* - `'verified'`: a person checked this answer.
|
|
68
|
+
* - `'golden'`: the answer matches a curated reference answer.
|
|
69
|
+
* - `'pending-review'`: queued for review, not checked yet.
|
|
70
|
+
* - `'flagged'`: someone reported a problem with it.
|
|
71
|
+
* - `'rejected'`: a reviewer marked it wrong.
|
|
72
|
+
*
|
|
73
|
+
* Answer states only. A plan state such as `'confirmed-plan'` is not assignable here; use
|
|
74
|
+
* {@link AIVerificationStatus} where both apply.
|
|
75
|
+
*
|
|
76
|
+
* Open union (contract rule 4): handle a default branch.
|
|
77
|
+
*
|
|
78
|
+
* @since 2.13.0
|
|
79
|
+
*/
|
|
80
|
+
export type AIAnswerVerificationStatus = 'verified' | 'golden' | 'pending-review' | 'flagged' | 'rejected';
|
|
81
|
+
/**
|
|
82
|
+
* Review state of an answer or a plan: every {@link AIAnswerVerificationStatus}, plus
|
|
83
|
+
* `'confirmed-plan'`, which means a person confirmed the plan before it ran.
|
|
84
|
+
*
|
|
85
|
+
* Open union (contract rule 4): handle a default branch.
|
|
86
|
+
*
|
|
87
|
+
* @since 2.13.0
|
|
88
|
+
*/
|
|
89
|
+
export type AIVerificationStatus = AIAnswerVerificationStatus | 'confirmed-plan';
|
|
90
|
+
/**
|
|
91
|
+
* Comparison in an {@link AIPlanFilter}.
|
|
92
|
+
*
|
|
93
|
+
* `'in'` and `'not-in'` take an array value. `'between'` takes a two-item array
|
|
94
|
+
* `[min, max]`, both ends inclusive. The others take a single value.
|
|
95
|
+
*
|
|
96
|
+
* Open union (contract rule 4): handle a default branch.
|
|
97
|
+
*
|
|
98
|
+
* @since 2.13.0
|
|
99
|
+
*/
|
|
100
|
+
export type AIFilterOperator = 'eq' | 'neq' | 'in' | 'not-in' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'contains';
|
|
101
|
+
/**
|
|
102
|
+
* One filter the AI applied to the data, shared by response sources and plan steps.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* const region: AIPlanFilter = { field: 'region', operator: 'eq', value: 'EMEA', label: 'Region: EMEA' };
|
|
107
|
+
* const quarter: AIPlanFilter = { field: 'month', operator: 'between', value: ['2026-04', '2026-06'] };
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @since 2.13.0
|
|
111
|
+
*/
|
|
112
|
+
export interface AIPlanFilter {
|
|
113
|
+
/** Name of the filtered field, as the backend knows it. */
|
|
114
|
+
field: string;
|
|
115
|
+
/** How `field` compares with `value`. When omitted, read it as `'eq'`, or `'in'` for an array value. */
|
|
116
|
+
operator?: AIFilterOperator;
|
|
117
|
+
/** The value or values compared. An array for `'in'`, `'not-in'` and `'between'` (`[min, max]`). */
|
|
118
|
+
value: string | number | boolean | Array<string | number>;
|
|
119
|
+
/** Display text for the whole filter, for example 'Region: EMEA'. Shown instead of the raw field and value. */
|
|
120
|
+
label?: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Why the AI asks a clarifying question.
|
|
124
|
+
*
|
|
125
|
+
* - `'ambiguous-term'`: a term in the question has more than one meaning.
|
|
126
|
+
* - `'missing-value'`: the question needs a value it did not give (a date range, a region).
|
|
127
|
+
* - `'low-confidence'`: the AI could answer, but not confidently.
|
|
128
|
+
* - `'no-sources'`: no data source covers the question.
|
|
129
|
+
* - `'unfamiliar-term'`: a term in the question is unknown.
|
|
130
|
+
*
|
|
131
|
+
* Open union (contract rule 4): handle a default branch.
|
|
132
|
+
*
|
|
133
|
+
* @since 2.13.0
|
|
134
|
+
*/
|
|
135
|
+
export type AIClarificationReason = 'ambiguous-term' | 'missing-value' | 'low-confidence' | 'no-sources' | 'unfamiliar-term';
|
|
136
|
+
/**
|
|
137
|
+
* One answer the user can pick in an {@link AIClarification}.
|
|
138
|
+
*
|
|
139
|
+
* @since 2.13.0
|
|
140
|
+
*/
|
|
141
|
+
export interface AIClarificationOption {
|
|
142
|
+
/** Stable id, reported in {@link AIClarificationAnswer.optionIds}. */
|
|
143
|
+
id: string;
|
|
144
|
+
/** Text of the option. */
|
|
145
|
+
label: string;
|
|
146
|
+
/** Longer explanation shown with the option. */
|
|
147
|
+
description?: string;
|
|
148
|
+
/** How likely the AI rates this option. 0-1. */
|
|
149
|
+
confidence?: number;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The user's answer to an {@link AIClarification}.
|
|
153
|
+
*
|
|
154
|
+
* @since 2.13.0
|
|
155
|
+
*/
|
|
156
|
+
export interface AIClarificationAnswer {
|
|
157
|
+
/** Ids of the chosen options, in the order chosen. Empty when the user only typed other text. */
|
|
158
|
+
optionIds: string[];
|
|
159
|
+
/** Free text the user typed instead of, or with, an option. Only when the clarification allows it. */
|
|
160
|
+
otherText?: string;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* A clarifying question the AI asks before or instead of answering.
|
|
164
|
+
*
|
|
165
|
+
* `answer` is present when the question is already resolved, so a reloaded thread renders it
|
|
166
|
+
* resolved instead of asking again.
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```ts
|
|
170
|
+
* const clarification: AIClarification = {
|
|
171
|
+
* reason: 'ambiguous-term',
|
|
172
|
+
* term: 'revenue',
|
|
173
|
+
* question: 'Which revenue do you mean?',
|
|
174
|
+
* options: [
|
|
175
|
+
* { id: 'gross', label: 'Gross revenue' },
|
|
176
|
+
* { id: 'net', label: 'Net revenue', confidence: 0.7 },
|
|
177
|
+
* ],
|
|
178
|
+
* };
|
|
179
|
+
* ```
|
|
180
|
+
*
|
|
181
|
+
* @since 2.13.0
|
|
182
|
+
*/
|
|
183
|
+
export interface AIClarification {
|
|
184
|
+
/** Why the AI asks. */
|
|
185
|
+
reason: AIClarificationReason;
|
|
186
|
+
/** The term the question is about, as the user wrote it. */
|
|
187
|
+
term?: string;
|
|
188
|
+
/** The question shown to the user. */
|
|
189
|
+
question?: string;
|
|
190
|
+
/** Answers the user can pick. */
|
|
191
|
+
options?: AIClarificationOption[];
|
|
192
|
+
/** Whether the user picks one option or several. Default `'single'`. */
|
|
193
|
+
selectionMode?: 'single' | 'multiple';
|
|
194
|
+
/** Whether the user may type their own answer. Default `false`. */
|
|
195
|
+
allowOther?: boolean;
|
|
196
|
+
/** The recorded answer, when the question is already resolved. */
|
|
197
|
+
answer?: AIClarificationAnswer;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Thumbs up or down on a response.
|
|
201
|
+
*
|
|
202
|
+
* Open union (contract rule 4): handle a default branch.
|
|
203
|
+
*
|
|
204
|
+
* @since 2.13.0
|
|
205
|
+
*/
|
|
206
|
+
export type AIFeedbackRating = 'positive' | 'negative';
|
|
207
|
+
/**
|
|
208
|
+
* Why a response was rated, usually after a negative rating. The listed ids are the built-in
|
|
209
|
+
* categories; any other string is a product-defined category.
|
|
210
|
+
*
|
|
211
|
+
* - `'wrong-number'`: a figure in the answer is wrong.
|
|
212
|
+
* - `'wrong-interpretation'`: the AI misread the question.
|
|
213
|
+
* - `'synthetic'`: the answer looks made up.
|
|
214
|
+
* - `'sources'`: the sources are wrong or missing.
|
|
215
|
+
* - `'outdated-data'`: the data is stale.
|
|
216
|
+
* - `'formatting'`: the answer is hard to read.
|
|
217
|
+
* - `'other'`: anything else.
|
|
218
|
+
*
|
|
219
|
+
* @since 2.13.0
|
|
220
|
+
*/
|
|
221
|
+
export type AIFeedbackCategory = 'wrong-number' | 'wrong-interpretation' | 'synthetic' | 'sources' | 'outdated-data' | 'formatting' | 'other' | (string & {});
|
|
222
|
+
/**
|
|
223
|
+
* A feedback category offered to the user. A built-in id takes its text from the AI strings
|
|
224
|
+
* when `label` is omitted.
|
|
225
|
+
*
|
|
226
|
+
* @since 2.13.0
|
|
227
|
+
*/
|
|
228
|
+
export interface AIFeedbackCategoryOption {
|
|
229
|
+
/** Stable id: a built-in category or a product-defined one. */
|
|
230
|
+
id: AIFeedbackCategory;
|
|
231
|
+
/** Text of the option. */
|
|
232
|
+
label?: string;
|
|
233
|
+
/** Longer explanation shown with the option. */
|
|
234
|
+
description?: string;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* The feedback form's state while the user fills it in.
|
|
238
|
+
*
|
|
239
|
+
* @since 2.13.0
|
|
240
|
+
*/
|
|
241
|
+
export interface AIFeedbackDraft {
|
|
242
|
+
/** Chosen category ids. */
|
|
243
|
+
categories: AIFeedbackCategory[];
|
|
244
|
+
/** Comment text; an empty string when the user wrote nothing. */
|
|
245
|
+
comment: string;
|
|
246
|
+
/** Whether the user asked for the question to run again. */
|
|
247
|
+
rerun: boolean;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Submitted feedback on a response, as the application receives it.
|
|
251
|
+
*
|
|
252
|
+
* @since 2.13.0
|
|
253
|
+
*/
|
|
254
|
+
export interface AIFeedbackEvent {
|
|
255
|
+
/** Id of the rated response. */
|
|
256
|
+
responseId?: string;
|
|
257
|
+
/** The rating. */
|
|
258
|
+
rating: AIFeedbackRating;
|
|
259
|
+
/** Chosen category ids; empty when none were chosen. */
|
|
260
|
+
categories: AIFeedbackCategory[];
|
|
261
|
+
/** Comment text, when the user wrote one. */
|
|
262
|
+
comment?: string;
|
|
263
|
+
/** Whether the user asked for the question to run again. */
|
|
264
|
+
rerun: boolean;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Facts about the query that produced a response.
|
|
268
|
+
*
|
|
269
|
+
* @since 2.13.0
|
|
270
|
+
*/
|
|
271
|
+
export interface AIQueryMetadata {
|
|
272
|
+
/** Stable id of the query. A response source with the same `queryId` points at this query. */
|
|
273
|
+
queryId?: string;
|
|
274
|
+
/** Rows the query returned. A whole number. */
|
|
275
|
+
rowCount?: number;
|
|
276
|
+
/** How long the query ran, in milliseconds. */
|
|
277
|
+
durationMs?: number;
|
|
278
|
+
/** Name of the dataset the query read. */
|
|
279
|
+
dataset?: string;
|
|
280
|
+
/** Query language, for example 'sql' or 'kql'. */
|
|
281
|
+
dialect?: string;
|
|
282
|
+
/** When the query ran. ISO 8601 date-time. */
|
|
283
|
+
executedAt?: string;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* A query the AI ran or will run. The one query shape: a query block and a review item's
|
|
287
|
+
* `query` both use it.
|
|
288
|
+
*
|
|
289
|
+
* @example
|
|
290
|
+
* ```ts
|
|
291
|
+
* const query: AIQuery = {
|
|
292
|
+
* query: 'SELECT region, SUM(net) FROM revenue GROUP BY region',
|
|
293
|
+
* language: 'sql',
|
|
294
|
+
* metadata: { queryId: 'q-42', rowCount: 4, durationMs: 845 },
|
|
295
|
+
* };
|
|
296
|
+
* ```
|
|
297
|
+
*
|
|
298
|
+
* @since 2.13.0
|
|
299
|
+
*/
|
|
300
|
+
export interface AIQuery {
|
|
301
|
+
/** The query text, as it ran. */
|
|
302
|
+
query: string;
|
|
303
|
+
/** Query language, for example 'sql' or 'kql'. */
|
|
304
|
+
language?: string;
|
|
305
|
+
/** Facts about the run. */
|
|
306
|
+
metadata?: AIQueryMetadata;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* State of one plan step while the user reviews the plan.
|
|
310
|
+
*
|
|
311
|
+
* - `'ready'`: the step can run as written.
|
|
312
|
+
* - `'needs-input'`: the step waits for an answer to its clarification.
|
|
313
|
+
* - `'edited'`: the user changed the step.
|
|
314
|
+
* - `'replanning'`: the AI is rewriting the step after an edit.
|
|
315
|
+
*
|
|
316
|
+
* Open union (contract rule 4): handle a default branch.
|
|
317
|
+
*
|
|
318
|
+
* @since 2.13.0
|
|
319
|
+
*/
|
|
320
|
+
export type AIPlanStepStatus = 'ready' | 'needs-input' | 'edited' | 'replanning';
|
|
321
|
+
/**
|
|
322
|
+
* One step of an {@link AIPlan}: what the AI will look up, and how.
|
|
323
|
+
*
|
|
324
|
+
* @since 2.13.0
|
|
325
|
+
*/
|
|
326
|
+
export interface AIPlanStep {
|
|
327
|
+
/** Stable id. It stays the same across revisions of the plan while the step exists. */
|
|
328
|
+
id: string;
|
|
329
|
+
/** What the step does, in words. */
|
|
330
|
+
text: string;
|
|
331
|
+
/** The measure the step reads, for example 'Net revenue'. Display text. */
|
|
332
|
+
metric?: string;
|
|
333
|
+
/** The field the step reads, as the backend knows it. */
|
|
334
|
+
field?: string;
|
|
335
|
+
/** Filters the step applies, in order. */
|
|
336
|
+
filters?: AIPlanFilter[];
|
|
337
|
+
/** The period the step covers, for example 'Q2 2026'. Display text. */
|
|
338
|
+
period?: string;
|
|
339
|
+
/** How confident the AI is in this step. 0-1. */
|
|
340
|
+
confidence?: number;
|
|
341
|
+
/** Why the AI has that confidence. Plain text. */
|
|
342
|
+
confidenceRationale?: string;
|
|
343
|
+
/** A question the user must answer before the step can run. */
|
|
344
|
+
clarification?: AIClarification;
|
|
345
|
+
/** Whether the user may edit the step. Default `false`. */
|
|
346
|
+
editable?: boolean;
|
|
347
|
+
/** The step's review state. Default `'ready'`. */
|
|
348
|
+
status?: AIPlanStepStatus;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* State of a whole plan.
|
|
352
|
+
*
|
|
353
|
+
* - `'review'`: waiting for the user to confirm, edit or cancel.
|
|
354
|
+
* - `'replanning'`: the AI is writing the next revision.
|
|
355
|
+
* - `'confirmed'`: the user confirmed it; it has not started.
|
|
356
|
+
* - `'running'`: the steps are running.
|
|
357
|
+
* - `'superseded'`: a newer revision replaced it.
|
|
358
|
+
* - `'cancelled'`: the user cancelled it.
|
|
359
|
+
*
|
|
360
|
+
* Open union (contract rule 4): handle a default branch.
|
|
361
|
+
*
|
|
362
|
+
* @since 2.13.0
|
|
363
|
+
*/
|
|
364
|
+
export type AIPlanStatus = 'review' | 'replanning' | 'confirmed' | 'running' | 'superseded' | 'cancelled';
|
|
365
|
+
/**
|
|
366
|
+
* The plan the AI proposes before it answers, for the user to confirm or edit.
|
|
367
|
+
*
|
|
368
|
+
* Replanning keeps `id` and increments `revision`; a plan with a new `id` is a different plan
|
|
369
|
+
* (header, "Plans and revisions").
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* ```ts
|
|
373
|
+
* const plan: AIPlan = {
|
|
374
|
+
* id: 'plan-7',
|
|
375
|
+
* revision: 2,
|
|
376
|
+
* question: 'How did EMEA revenue change in Q2?',
|
|
377
|
+
* steps: [
|
|
378
|
+
* { id: 'step-1', text: 'Sum net revenue by month', metric: 'Net revenue', period: 'Q2 2026' },
|
|
379
|
+
* { id: 'step-2', text: 'Compare with Q1', status: 'edited', editable: true },
|
|
380
|
+
* ],
|
|
381
|
+
* status: 'review',
|
|
382
|
+
* };
|
|
383
|
+
* ```
|
|
384
|
+
*
|
|
385
|
+
* @since 2.13.0
|
|
386
|
+
*/
|
|
387
|
+
export interface AIPlan {
|
|
388
|
+
/** Stable id of the plan. Replanning keeps it. */
|
|
389
|
+
id: string;
|
|
390
|
+
/** Revision number: 1 for the first proposal, one more after each replan. A whole number. Read a missing value as 1. */
|
|
391
|
+
revision?: number;
|
|
392
|
+
/** The user's question the plan answers. */
|
|
393
|
+
question?: string;
|
|
394
|
+
/** A one-line summary of the plan. */
|
|
395
|
+
summary?: string;
|
|
396
|
+
/** The steps, in the order they run. */
|
|
397
|
+
steps: AIPlanStep[];
|
|
398
|
+
/** The plan's state. Default `'review'`. */
|
|
399
|
+
status?: AIPlanStatus;
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* State of an item in the review queue.
|
|
403
|
+
*
|
|
404
|
+
* Open union (contract rule 4): handle a default branch.
|
|
405
|
+
*
|
|
406
|
+
* @since 2.13.0
|
|
407
|
+
*/
|
|
408
|
+
export type AIReviewStatus = 'pending' | 'approved' | 'edited' | 'rejected';
|
|
409
|
+
/**
|
|
410
|
+
* A part of a review item that a reviewer may edit.
|
|
411
|
+
*
|
|
412
|
+
* Open union (contract rule 4): handle a default branch.
|
|
413
|
+
*
|
|
414
|
+
* @since 2.13.0
|
|
415
|
+
*/
|
|
416
|
+
export type AIReviewEditableField = 'question' | 'query' | 'answer';
|
|
417
|
+
/**
|
|
418
|
+
* A reviewer's edits: at least one of the editable fields, so an empty edit (`{}`) does not
|
|
419
|
+
* type-check.
|
|
420
|
+
*
|
|
421
|
+
* @since 2.13.0
|
|
422
|
+
*/
|
|
423
|
+
export type AIReviewEdits = {
|
|
424
|
+
question: string;
|
|
425
|
+
query?: string;
|
|
426
|
+
answer?: string;
|
|
427
|
+
} | {
|
|
428
|
+
question?: string;
|
|
429
|
+
query: string;
|
|
430
|
+
answer?: string;
|
|
431
|
+
} | {
|
|
432
|
+
question?: string;
|
|
433
|
+
query?: string;
|
|
434
|
+
answer: string;
|
|
435
|
+
};
|
|
436
|
+
/**
|
|
437
|
+
* One event in a review item's history. Kinds are past tense: they record what happened.
|
|
438
|
+
*
|
|
439
|
+
* @since 2.13.0
|
|
440
|
+
*/
|
|
441
|
+
export interface AIReviewHistoryEntry {
|
|
442
|
+
/** Stable id of the entry. */
|
|
443
|
+
id: string;
|
|
444
|
+
/** What happened. Open union (contract rule 4): handle a default branch. */
|
|
445
|
+
kind: 'submitted' | 'flagged' | 'approved' | 'edited' | 'rejected';
|
|
446
|
+
/** Who did it, as the application names people. */
|
|
447
|
+
actor?: string;
|
|
448
|
+
/** When it happened. ISO 8601 date-time. */
|
|
449
|
+
at: string;
|
|
450
|
+
/** Why, for example a rejection's reason. Plain text. */
|
|
451
|
+
reason?: string;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* One answer in the review queue, with what produced it and what happened to it.
|
|
455
|
+
*
|
|
456
|
+
* Named `...Data` so the name does not collide with a review item component.
|
|
457
|
+
*
|
|
458
|
+
* @since 2.13.0
|
|
459
|
+
*/
|
|
460
|
+
export interface AIReviewItemData {
|
|
461
|
+
/** Stable id of the item. */
|
|
462
|
+
id: string;
|
|
463
|
+
/** The user's question. */
|
|
464
|
+
question: string;
|
|
465
|
+
/** The plan that ran, when there was one. */
|
|
466
|
+
plan?: AIPlan;
|
|
467
|
+
/** The query that ran, when there was one. */
|
|
468
|
+
query?: AIQuery;
|
|
469
|
+
/** The answer under review: a structured response, or plain text. */
|
|
470
|
+
answer: AIResponse | string;
|
|
471
|
+
/** Feedback users sent on the answer. */
|
|
472
|
+
flags?: AIFeedbackEvent[];
|
|
473
|
+
/** How confident the AI was in the answer. 0-1. */
|
|
474
|
+
confidence?: number;
|
|
475
|
+
/** The answer's verification state. */
|
|
476
|
+
verification?: AIVerificationStatus;
|
|
477
|
+
/** Who asked, as the application names people. */
|
|
478
|
+
submittedBy?: string;
|
|
479
|
+
/** When it was asked. ISO 8601 date-time. */
|
|
480
|
+
submittedAt?: string;
|
|
481
|
+
/** The item's review state. */
|
|
482
|
+
status: AIReviewStatus;
|
|
483
|
+
/** What happened to the item, oldest first. */
|
|
484
|
+
history?: AIReviewHistoryEntry[];
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* A reviewer's decision on one review item. Decisions are imperative: what the reviewer asks
|
|
488
|
+
* for. A rejection needs a reason, and an edit needs at least one edited field.
|
|
489
|
+
*
|
|
490
|
+
* @example
|
|
491
|
+
* ```ts
|
|
492
|
+
* const decisions: AIReviewDecision[] = [
|
|
493
|
+
* { itemId: 'item-1', decision: 'approve' },
|
|
494
|
+
* { itemId: 'item-2', decision: 'edit', edits: { answer: 'EMEA grew 4% in Q2.' } },
|
|
495
|
+
* { itemId: 'item-3', decision: 'reject', reason: 'Uses gross, not net, revenue' },
|
|
496
|
+
* ];
|
|
497
|
+
* ```
|
|
498
|
+
*
|
|
499
|
+
* @since 2.13.0
|
|
500
|
+
*/
|
|
501
|
+
export type AIReviewDecision = {
|
|
502
|
+
itemId: string;
|
|
503
|
+
decision: 'approve';
|
|
504
|
+
} | {
|
|
505
|
+
itemId: string;
|
|
506
|
+
decision: 'edit';
|
|
507
|
+
edits: AIReviewEdits;
|
|
508
|
+
} | {
|
|
509
|
+
itemId: string;
|
|
510
|
+
decision: 'reject';
|
|
511
|
+
reason: string;
|
|
512
|
+
};
|
|
513
|
+
/**
|
|
514
|
+
* Where a failed action came from, passed as the second argument of every AI-family
|
|
515
|
+
* `onActionError(error, context)`. An open object: later releases add fields, and a handler
|
|
516
|
+
* that takes only `(error)` stays assignable, as Modal's and ConfirmDialog's `onActionError`
|
|
517
|
+
* are (ADR-07).
|
|
518
|
+
*
|
|
519
|
+
* @example
|
|
520
|
+
* ```ts
|
|
521
|
+
* const failures: Array<{ message: string; source: AIActionErrorContext['source']; actionId?: string }> = [];
|
|
522
|
+
* const onActionError = (error: unknown, context: AIActionErrorContext) => {
|
|
523
|
+
* failures.push({ message: String(error), source: context.source, actionId: context.actionId });
|
|
524
|
+
* };
|
|
525
|
+
* ```
|
|
526
|
+
*
|
|
527
|
+
* @since 2.13.0
|
|
528
|
+
*/
|
|
529
|
+
export interface AIActionErrorContext {
|
|
530
|
+
/** What kind of action failed. */
|
|
531
|
+
source: 'action' | 'block' | 'task' | 'decision' | 'confirm';
|
|
532
|
+
/** Id of the failed action, for `'action'`. */
|
|
533
|
+
actionId?: string;
|
|
534
|
+
/** Id of the response block involved. */
|
|
535
|
+
blockId?: string;
|
|
536
|
+
/** Id of the message involved. */
|
|
537
|
+
messageId?: string;
|
|
538
|
+
/** Id of the chain-of-thought phase involved. */
|
|
539
|
+
phaseId?: string;
|
|
540
|
+
/** Id of the task involved, for `'task'`. */
|
|
541
|
+
taskId?: string;
|
|
542
|
+
/** Id of the review item involved, for `'decision'`. */
|
|
543
|
+
itemId?: string;
|
|
544
|
+
/** Further ids a later release or a host adds. */
|
|
545
|
+
[key: string]: unknown;
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* The user rated a response, cleared the rating, or used the detailed feedback form.
|
|
549
|
+
*
|
|
550
|
+
* @since 2.13.0
|
|
551
|
+
*/
|
|
552
|
+
export interface AIFeedbackInteraction {
|
|
553
|
+
type: 'feedback';
|
|
554
|
+
/** What happened: `'rate'`, `'clear'`, or the detail form opening, submitting or cancelling. */
|
|
555
|
+
action: 'rate' | 'clear' | 'detail-open' | 'detail-submit' | 'detail-cancel';
|
|
556
|
+
/** The rating, for `'rate'` and `'detail-submit'`. */
|
|
557
|
+
rating?: AIFeedbackRating;
|
|
558
|
+
/** Chosen category ids, for `'detail-submit'`. */
|
|
559
|
+
categoryIds?: AIFeedbackCategory[];
|
|
560
|
+
/** Whether the user wrote a comment. */
|
|
561
|
+
hasComment: boolean;
|
|
562
|
+
/** Whether the user asked for the question to run again. */
|
|
563
|
+
rerun?: boolean;
|
|
564
|
+
/** Id of the rated response. */
|
|
565
|
+
responseId?: string;
|
|
566
|
+
/** Id of the message that holds the rated response, to join this event with later ones (G-26). */
|
|
567
|
+
messageId?: string;
|
|
568
|
+
/** The comment text. includeContent only. */
|
|
569
|
+
comment?: string;
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* The user picked an option in, or submitted, a clarifying question.
|
|
573
|
+
*
|
|
574
|
+
* @since 2.13.0
|
|
575
|
+
*/
|
|
576
|
+
export interface AIClarificationInteraction {
|
|
577
|
+
type: 'clarification';
|
|
578
|
+
/** `'select'` when an option is picked, `'submit'` when the answer is sent. */
|
|
579
|
+
action: 'select' | 'submit';
|
|
580
|
+
/** The clarification's reason. */
|
|
581
|
+
reason: AIClarificationReason;
|
|
582
|
+
/** Options offered. A whole number. */
|
|
583
|
+
optionCount: number;
|
|
584
|
+
/** Options chosen at the time of the event. A whole number. */
|
|
585
|
+
selectedCount: number;
|
|
586
|
+
/** Whether the user typed their own answer. */
|
|
587
|
+
usedOther: boolean;
|
|
588
|
+
/** Id of the response block that holds the clarification. */
|
|
589
|
+
blockId?: string;
|
|
590
|
+
/** The typed answer. includeContent only. */
|
|
591
|
+
otherText?: string;
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* The user copied something from a response.
|
|
595
|
+
*
|
|
596
|
+
* @since 2.13.0
|
|
597
|
+
*/
|
|
598
|
+
export interface AICopyInteraction {
|
|
599
|
+
type: 'copy';
|
|
600
|
+
/** What was copied: a query block's text, or a whole response. */
|
|
601
|
+
target: 'query' | 'response';
|
|
602
|
+
/** Whether the clipboard write succeeded. */
|
|
603
|
+
success: boolean;
|
|
604
|
+
/** Id of the response block copied from. */
|
|
605
|
+
blockId?: string;
|
|
606
|
+
/** Id of the message copied from, to join this event with others (G-26). */
|
|
607
|
+
messageId?: string;
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* The user opened a source's details.
|
|
611
|
+
*
|
|
612
|
+
* @since 2.13.0
|
|
613
|
+
*/
|
|
614
|
+
export interface AISourceOpenInteraction {
|
|
615
|
+
type: 'source-open';
|
|
616
|
+
/** Id of the opened source. */
|
|
617
|
+
sourceId: string;
|
|
618
|
+
/** The source's `type`, when it has one. */
|
|
619
|
+
sourceType?: NonNullable<AIResponseSource['type']>;
|
|
620
|
+
/** The source chip variant that was opened: the numbered chip or the labelled chip. */
|
|
621
|
+
variant: 'number' | 'label';
|
|
622
|
+
/** The source's number in the response, starting at 1. */
|
|
623
|
+
index?: number;
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* The user expanded or collapsed a query view.
|
|
627
|
+
*
|
|
628
|
+
* @since 2.13.0
|
|
629
|
+
*/
|
|
630
|
+
export interface AIQueryViewInteraction {
|
|
631
|
+
type: 'query-view';
|
|
632
|
+
/** `'expand'` or `'collapse'`. */
|
|
633
|
+
action: 'expand' | 'collapse';
|
|
634
|
+
/** Id of the response block that holds the query. */
|
|
635
|
+
blockId?: string;
|
|
636
|
+
}
|
|
637
|
+
/**
|
|
638
|
+
* The user edited, confirmed, cancelled or answered a clarification in a plan review (G-26).
|
|
639
|
+
*
|
|
640
|
+
* `edited` on `'confirm'` drives the plan edit rate: confirms with `edited: true` divided by all
|
|
641
|
+
* confirms. Edits accumulate across revisions of the same `planId`. No text fields: the edited
|
|
642
|
+
* step text is not reported.
|
|
643
|
+
*
|
|
644
|
+
* @since 2.13.0
|
|
645
|
+
*/
|
|
646
|
+
export interface AIPlanInteraction {
|
|
647
|
+
type: 'plan';
|
|
648
|
+
/** What happened: a step edit, the confirm, the cancel, or a clarification answered inside the plan. */
|
|
649
|
+
action: 'step_edit' | 'confirm' | 'cancel' | 'clarify';
|
|
650
|
+
/** Id of the plan. Replanning keeps it. */
|
|
651
|
+
planId: string;
|
|
652
|
+
/** The plan's revision, when it has one. A whole number. */
|
|
653
|
+
revision?: number;
|
|
654
|
+
/** Id of the response block that holds the plan. */
|
|
655
|
+
blockId?: string;
|
|
656
|
+
/** Id of the step, for `'step_edit'` and `'clarify'`. */
|
|
657
|
+
stepId?: string;
|
|
658
|
+
/** Whether any step of the plan was edited, across its revisions, for `'confirm'`. */
|
|
659
|
+
edited?: boolean;
|
|
660
|
+
/** Ids of the edited steps, for `'confirm'`. */
|
|
661
|
+
editedStepIds?: string[];
|
|
662
|
+
/** Steps in the plan. A whole number. */
|
|
663
|
+
stepCount?: number;
|
|
664
|
+
}
|
|
665
|
+
/**
|
|
666
|
+
* The user decided on a review item, or started an edit or a rejection (G-26).
|
|
667
|
+
*
|
|
668
|
+
* No text fields: the edits and the rejection reason are not reported.
|
|
669
|
+
*
|
|
670
|
+
* @since 2.13.0
|
|
671
|
+
*/
|
|
672
|
+
export interface AIReviewInteraction {
|
|
673
|
+
type: 'review';
|
|
674
|
+
/** What happened: a decision, or the edit or reject form opening. */
|
|
675
|
+
action: 'decide' | 'edit_start' | 'reject_start';
|
|
676
|
+
/** Id of the review item. */
|
|
677
|
+
itemId: string;
|
|
678
|
+
/** The decision, for `'decide'`. */
|
|
679
|
+
decision?: AIReviewDecision['decision'];
|
|
680
|
+
/** Feedback flags on the item. A whole number. */
|
|
681
|
+
flagCount?: number;
|
|
682
|
+
/** The fields the reviewer edited, for an `'edit'` decision. */
|
|
683
|
+
editedFields?: AIReviewEditableField[];
|
|
684
|
+
}
|
|
685
|
+
/**
|
|
686
|
+
* The user retried a response or a task (G-26). Each retry is one event: the retry count is the
|
|
687
|
+
* number of these events. AIMessage's Regenerate action (G-04f, `onRegenerate`) is a response
|
|
688
|
+
* retry: the event type stays `'retry'`.
|
|
689
|
+
*
|
|
690
|
+
* @since 2.13.0
|
|
691
|
+
*/
|
|
692
|
+
export interface AIRetryInteraction {
|
|
693
|
+
type: 'retry';
|
|
694
|
+
/** Id of the retried message. */
|
|
695
|
+
messageId?: string;
|
|
696
|
+
/** Id of the chain-of-thought phase that holds the retried task. */
|
|
697
|
+
phaseId?: string;
|
|
698
|
+
/** Id of the retried task. */
|
|
699
|
+
taskId?: string;
|
|
700
|
+
}
|
|
701
|
+
/**
|
|
702
|
+
* The user picked a suggested follow-up question (G-26). A suggestion is not a correction: this
|
|
703
|
+
* event measures suggestion uptake.
|
|
704
|
+
*
|
|
705
|
+
* No text fields: the question text is not reported.
|
|
706
|
+
*
|
|
707
|
+
* @since 2.13.0
|
|
708
|
+
*/
|
|
709
|
+
export interface AIFollowupInteraction {
|
|
710
|
+
type: 'followup';
|
|
711
|
+
/** `'select'` when a suggested question is picked. */
|
|
712
|
+
action: 'select';
|
|
713
|
+
/** Whether the question was a verified suggestion. */
|
|
714
|
+
verified: boolean;
|
|
715
|
+
/** The question's place in the list, starting at 0. */
|
|
716
|
+
index: number;
|
|
717
|
+
/** Id of the question, when it has one. */
|
|
718
|
+
questionId?: string;
|
|
719
|
+
}
|
|
720
|
+
/**
|
|
721
|
+
* The user sent a message from the composer (G-26). A send after a negative rating of the
|
|
722
|
+
* previous answer counts as a correcting follow-up.
|
|
723
|
+
*
|
|
724
|
+
* No text fields: the message text is not reported.
|
|
725
|
+
*
|
|
726
|
+
* @since 2.13.0
|
|
727
|
+
*/
|
|
728
|
+
export interface AIMessageInteraction {
|
|
729
|
+
type: 'message';
|
|
730
|
+
/** `'send'` when the user sends a message. */
|
|
731
|
+
action: 'send';
|
|
732
|
+
/** Id of the latest assistant message when the user sent this one. */
|
|
733
|
+
previousAssistantMessageId?: string;
|
|
734
|
+
}
|
|
735
|
+
/**
|
|
736
|
+
* The user stopped an answer while it was generating (`answer.stopped`, DN-13).
|
|
737
|
+
*
|
|
738
|
+
* @since 2.13.0
|
|
739
|
+
*/
|
|
740
|
+
export interface AIAnswerInteraction {
|
|
741
|
+
type: 'answer';
|
|
742
|
+
/** `'stopped'` when the user stops the answer. */
|
|
743
|
+
action: 'stopped';
|
|
744
|
+
/** Id of the stopped message. */
|
|
745
|
+
messageId?: string;
|
|
746
|
+
}
|
|
747
|
+
/**
|
|
748
|
+
* The user added a message to the golden dataset with AIMessage's built-in action (GA-01,
|
|
749
|
+
* `goldenDataset`), reported once the app's `onAdd` settles: `success` is false when it rejected.
|
|
750
|
+
*
|
|
751
|
+
* No text fields: the message and its response are not reported.
|
|
752
|
+
*
|
|
753
|
+
* @since 2.13.0
|
|
754
|
+
*/
|
|
755
|
+
export interface AIGoldenInteraction {
|
|
756
|
+
type: 'golden';
|
|
757
|
+
/** `'add'` when the user adds the message to the golden dataset. */
|
|
758
|
+
action: 'add';
|
|
759
|
+
/** Whether the app's `onAdd` succeeded. */
|
|
760
|
+
success: boolean;
|
|
761
|
+
/** Id of the added message, to join this event with others (G-26). */
|
|
762
|
+
messageId?: string;
|
|
763
|
+
}
|
|
764
|
+
/**
|
|
765
|
+
* Every interaction the AI components report through `AIConfigProvider`'s `onInteraction`
|
|
766
|
+
* (ADR-06 (11), with G-26's plan, review, retry, followup, message and answer events, and GA-01's
|
|
767
|
+
* golden event). Each
|
|
768
|
+
* member is content-free by type: ids, enums, counts and flags. A field that holds user or model
|
|
769
|
+
* text is present only when the provider sets `includeContent`. Feedback, copy, retry and golden
|
|
770
|
+
* events carry `messageId`, so an application can join them with a later `message` send.
|
|
771
|
+
*
|
|
772
|
+
* Open union (contract rule 4): later minor releases add members. Switch on `type` and keep a
|
|
773
|
+
* default branch.
|
|
774
|
+
*
|
|
775
|
+
* @example
|
|
776
|
+
* ```ts
|
|
777
|
+
* function track(event: AIInteractionEvent): string {
|
|
778
|
+
* switch (event.type) {
|
|
779
|
+
* case 'feedback':
|
|
780
|
+
* return `feedback:${event.action}`;
|
|
781
|
+
* case 'copy':
|
|
782
|
+
* return `copy:${event.success ? 'ok' : 'failed'}`;
|
|
783
|
+
* default:
|
|
784
|
+
* return event.type;
|
|
785
|
+
* }
|
|
786
|
+
* }
|
|
787
|
+
* ```
|
|
788
|
+
*
|
|
789
|
+
* @since 2.13.0
|
|
790
|
+
*/
|
|
791
|
+
export type AIInteractionEvent = AIFeedbackInteraction | AIClarificationInteraction | AICopyInteraction | AISourceOpenInteraction | AIQueryViewInteraction | AIPlanInteraction | AIReviewInteraction | AIRetryInteraction | AIFollowupInteraction | AIMessageInteraction | AIAnswerInteraction | AIGoldenInteraction;
|
|
792
|
+
/**
|
|
793
|
+
* What the user did in an interactive response block, reported through `onBlockEvent`
|
|
794
|
+
* (ADR-05 (3)). Unlike {@link AIInteractionEvent}, a block event is the user's input itself: the
|
|
795
|
+
* application acts on it, so it carries the answer, the confirm state and the edited text.
|
|
796
|
+
*
|
|
797
|
+
* - `'clarification.submit'`: the user answered a clarifying question.
|
|
798
|
+
* - `'plan.confirm'`: the user confirmed a plan. `edited` is `true` when any step was edited,
|
|
799
|
+
* and `editedStepIds` lists those steps. `plan` is the plan as confirmed.
|
|
800
|
+
* `clarificationAnswers` carries the answers to the steps' questions, by step id (G-41+).
|
|
801
|
+
* - `'plan.clarify'`: the user answered the question of one plan step, before confirming, so
|
|
802
|
+
* the backend can replan (a new `revision` of the same plan). Sent once per distinct answer
|
|
803
|
+
* (G-41+, ADR-05 amendment G-OD6, proposed).
|
|
804
|
+
* - `'plan.stepEdit'`: the user changed the text of one plan step.
|
|
805
|
+
* - `'plan.cancel'`: the user cancelled a plan.
|
|
806
|
+
* - `'query.copy'`: the user copied a query block's text.
|
|
807
|
+
*
|
|
808
|
+
* Open union (contract rule 4): later minor releases add members. Switch on `type` and keep a
|
|
809
|
+
* default branch.
|
|
810
|
+
*
|
|
811
|
+
* @example
|
|
812
|
+
* ```ts
|
|
813
|
+
* async function handleBlockEvent(event: AIBlockEvent): Promise<void> {
|
|
814
|
+
* switch (event.type) {
|
|
815
|
+
* case 'clarification.submit':
|
|
816
|
+
* await fetch(`/api/blocks/${event.blockId}/answer`, { method: 'POST', body: JSON.stringify(event.answer) });
|
|
817
|
+
* return;
|
|
818
|
+
* case 'plan.cancel':
|
|
819
|
+
* await fetch(`/api/blocks/${event.blockId}/cancel`, { method: 'POST' });
|
|
820
|
+
* return;
|
|
821
|
+
* default:
|
|
822
|
+
* return;
|
|
823
|
+
* }
|
|
824
|
+
* }
|
|
825
|
+
* ```
|
|
826
|
+
*
|
|
827
|
+
* @since 2.13.0
|
|
828
|
+
*/
|
|
829
|
+
export type AIBlockEvent = {
|
|
830
|
+
type: 'clarification.submit';
|
|
831
|
+
/** Id of the clarification block. */
|
|
832
|
+
blockId: string;
|
|
833
|
+
/** The user's answer. */
|
|
834
|
+
answer: AIClarificationAnswer;
|
|
835
|
+
} | {
|
|
836
|
+
type: 'plan.confirm';
|
|
837
|
+
/** Id of the plan-review block. */
|
|
838
|
+
blockId: string;
|
|
839
|
+
/** Whether the user edited any step before confirming. */
|
|
840
|
+
edited: boolean;
|
|
841
|
+
/** Ids of the steps the user edited; empty when none was. */
|
|
842
|
+
editedStepIds: string[];
|
|
843
|
+
/** The plan as confirmed, with the user's step edits applied. */
|
|
844
|
+
plan: AIPlan;
|
|
845
|
+
/**
|
|
846
|
+
* The answers to the steps' clarifications, by step id (G-41+). Optional, so handlers
|
|
847
|
+
* written before it keep compiling.
|
|
848
|
+
* @since 2.13.0
|
|
849
|
+
*/
|
|
850
|
+
clarificationAnswers?: Record<string, AIClarificationAnswer>;
|
|
851
|
+
} | {
|
|
852
|
+
type: 'plan.clarify';
|
|
853
|
+
/** Id of the plan-review block. */
|
|
854
|
+
blockId: string;
|
|
855
|
+
/** Id of the plan. Replanning keeps it. */
|
|
856
|
+
planId: string;
|
|
857
|
+
/** The plan's revision when the user answered. A whole number. */
|
|
858
|
+
revision?: number;
|
|
859
|
+
/** Id of the step whose question was answered. */
|
|
860
|
+
stepId: string;
|
|
861
|
+
/** The user's answer. */
|
|
862
|
+
answer: AIClarificationAnswer;
|
|
863
|
+
} | {
|
|
864
|
+
type: 'plan.stepEdit';
|
|
865
|
+
/** Id of the plan-review block. */
|
|
866
|
+
blockId: string;
|
|
867
|
+
/** Id of the edited step. */
|
|
868
|
+
stepId: string;
|
|
869
|
+
/** The step's new text. */
|
|
870
|
+
text: string;
|
|
871
|
+
} | {
|
|
872
|
+
type: 'plan.cancel';
|
|
873
|
+
/** Id of the plan-review block. */
|
|
874
|
+
blockId: string;
|
|
875
|
+
} | {
|
|
876
|
+
type: 'query.copy';
|
|
877
|
+
/** Id of the query block. */
|
|
878
|
+
blockId: string;
|
|
879
|
+
};
|
|
880
|
+
/**
|
|
881
|
+
* The AI components' built-in strings, grouped by component. A key's full name is
|
|
882
|
+
* `ai.<group>.<key>`, for example `ai.common.copied`. Override any of them with
|
|
883
|
+
* `AIConfigProvider`'s `strings` prop, which takes a deep partial of this type.
|
|
884
|
+
*
|
|
885
|
+
* A read type: you never build a whole `AIStrings`, so adding keys is a minor change. Renaming
|
|
886
|
+
* or removing a key, or changing a count function's arguments, is a major change. Count strings
|
|
887
|
+
* are functions of `{ count }`, so an override can use `Intl.PluralRules`.
|
|
888
|
+
*
|
|
889
|
+
* One group per component, named after it without the `AI` prefix (ADR-06 (3)): `ai.voiceMode.*`
|
|
890
|
+
* for AIVoiceMode, `ai.insightEngineInput.*` for InsightEngineInput. The catalog holds every
|
|
891
|
+
* English literal of the AI surfaces with its current text (master plan E-25); the map from each
|
|
892
|
+
* source literal to its key is docs/remediation/E-25-ai-strings-map.md. Components read their
|
|
893
|
+
* keys as their owners wire them; until then a key documents the text the component shows.
|
|
894
|
+
*
|
|
895
|
+
* @since 2.13.0
|
|
896
|
+
*/
|
|
897
|
+
export interface AIStrings {
|
|
898
|
+
/** Strings shared by several AI components (`ai.common.*`). */
|
|
899
|
+
common: {
|
|
900
|
+
/** Announced after a copy succeeds. @default 'Copied' */
|
|
901
|
+
copied: string;
|
|
902
|
+
/** Announced when a copy fails. @default "Couldn't copy" */
|
|
903
|
+
copyFailed: string;
|
|
904
|
+
/** Announced when a response has finished streaming. @default 'Response ready' */
|
|
905
|
+
responseReady: string;
|
|
906
|
+
/** Name of the control that retries a failed request. @default 'Try again' */
|
|
907
|
+
tryAgain: string;
|
|
908
|
+
/**
|
|
909
|
+
* Description of a link that opens in a new tab, linked through aria-describedby so the
|
|
910
|
+
* link's name stays the same (WI-56). @default 'Opens in a new tab'
|
|
911
|
+
*/
|
|
912
|
+
opensInNewTab: string;
|
|
913
|
+
};
|
|
914
|
+
/** AppLayout's AI panel strings (`ai.appLayout.*`). Owner: workstream H. */
|
|
915
|
+
appLayout: {
|
|
916
|
+
/** Name of the AI panel's resize handle (ResizablePanel's default today). @default 'Resize panel' */
|
|
917
|
+
resizeHandle: string;
|
|
918
|
+
/**
|
|
919
|
+
* Name of the AI panel landmark (and of the mobile drawer) when AppLayout hosts a custom
|
|
920
|
+
* surface through `renderAiPanel` (H-11, H-13). @default 'AI assistant' @since 2.13.0
|
|
921
|
+
*/
|
|
922
|
+
panelLabel: string;
|
|
923
|
+
};
|
|
924
|
+
/** AIChainOfThought strings (`ai.chainOfThought.*`). Owner: workstream I. */
|
|
925
|
+
chainOfThought: {
|
|
926
|
+
/** Name of a phase header toggle. @default ({ title, status }) => `${title} phase — ${status}` */
|
|
927
|
+
phaseToggle: (args: {
|
|
928
|
+
title: string;
|
|
929
|
+
status: string;
|
|
930
|
+
}) => string;
|
|
931
|
+
/** @default 'Sources consulted' */
|
|
932
|
+
sourcesConsulted: string;
|
|
933
|
+
/** @default 'Run' */
|
|
934
|
+
run: string;
|
|
935
|
+
/** @default 'Generated artifacts' */
|
|
936
|
+
generatedArtifacts: string;
|
|
937
|
+
/** @default 'Insight' */
|
|
938
|
+
insightFallbackTitle: string;
|
|
939
|
+
/** @default 'Confidence' */
|
|
940
|
+
confidence: string;
|
|
941
|
+
/** @default 'Sources & references' */
|
|
942
|
+
sourcesAndReferences: string;
|
|
943
|
+
/** @default 'Toggle thought process' */
|
|
944
|
+
toggleThoughtProcess: string;
|
|
945
|
+
/** @default 'Thought process' */
|
|
946
|
+
thoughtProcess: string;
|
|
947
|
+
/** Name of the chain when it has no query. @default 'AI reasoning chain' */
|
|
948
|
+
reasoningChain: string;
|
|
949
|
+
/** @default 'Generating response…' */
|
|
950
|
+
generatingResponse: string;
|
|
951
|
+
/** Name of the chain, from the query it reasons about (WI-44). @default ({ query }) => `Reasoning for ${query}` */
|
|
952
|
+
reasoningFor: (args: {
|
|
953
|
+
query: string;
|
|
954
|
+
}) => string;
|
|
955
|
+
/** Status of the chain while it is thinking. @default 'Thinking' */
|
|
956
|
+
thinking: string;
|
|
957
|
+
/**
|
|
958
|
+
* The chain's indicator and its one announcement while a plan-review phase waits for the user
|
|
959
|
+
* (G-22). Requirement copy (R9, the same text as `ai.planReview.ready`): change it only with
|
|
960
|
+
* product sign-off. @default "Plan's ready — needs your confirmation" @since 2.13.0
|
|
961
|
+
*/
|
|
962
|
+
planReady: string;
|
|
963
|
+
/**
|
|
964
|
+
* The chain's indicator and announcement while a phase other than a plan review waits for the
|
|
965
|
+
* user, and the status text of an awaiting-input phase or task (G-22, G-43+).
|
|
966
|
+
* @default 'Needs your input' @since 2.13.0
|
|
967
|
+
*/
|
|
968
|
+
awaitingInput: string;
|
|
969
|
+
/**
|
|
970
|
+
* The thought-process bar's progress for assistive technology (WI-13). `locale` is the
|
|
971
|
+
* resolved AI locale, for an override's own plural rules.
|
|
972
|
+
* @default ({ completed, total }) => `${completed} of ${total} step(s) complete` (English plural rules)
|
|
973
|
+
* @since 2.13.0
|
|
974
|
+
*/
|
|
975
|
+
progressSummary: (args: {
|
|
976
|
+
completed: number;
|
|
977
|
+
total: number;
|
|
978
|
+
locale?: string;
|
|
979
|
+
}) => string;
|
|
980
|
+
/** Status text of a retrying task (WI-13). @default 'Retrying' @since 2.13.0 */
|
|
981
|
+
retrying: string;
|
|
982
|
+
/** Name of a failed task's Retry button (WI-13). @default 'Retry' @since 2.13.0 */
|
|
983
|
+
retryTask: string;
|
|
984
|
+
/** Shown when a task retry fails (WI-13). @default "Couldn't retry the task" @since 2.13.0 */
|
|
985
|
+
retryTaskFailed: string;
|
|
986
|
+
/**
|
|
987
|
+
* Announced, assertively, when a task fails after mount (WI-13).
|
|
988
|
+
* @default ({ label, message }) => `${label} failed: ${message}` @since 2.13.0
|
|
989
|
+
*/
|
|
990
|
+
taskFailed: (args: {
|
|
991
|
+
label: string;
|
|
992
|
+
message: string;
|
|
993
|
+
}) => string;
|
|
994
|
+
/** Name of the insight metrics list (WI-13). @default 'Key metrics' @since 2.13.0 */
|
|
995
|
+
metrics: string;
|
|
996
|
+
/**
|
|
997
|
+
* The header's status line while the chain works (owner mockups 2026-10-08).
|
|
998
|
+
* @default 'Reasoning in progress…' @since 2.13.0
|
|
999
|
+
*/
|
|
1000
|
+
reasoningInProgress: string;
|
|
1001
|
+
/** The header's status line once every phase is complete. @default 'Done' @since 2.13.0 */
|
|
1002
|
+
done: string;
|
|
1003
|
+
/** The header's status line when a phase failed and nothing runs. @default 'A step failed' @since 2.13.0 */
|
|
1004
|
+
stepFailed: string;
|
|
1005
|
+
/**
|
|
1006
|
+
* The header's status line with the elapsed time ("Done · 4.2s").
|
|
1007
|
+
* @default ({ status, elapsed }) => `${status} · ${elapsed}` @since 2.13.0
|
|
1008
|
+
*/
|
|
1009
|
+
statusWithElapsed: (args: {
|
|
1010
|
+
status: string;
|
|
1011
|
+
elapsed: string;
|
|
1012
|
+
}) => string;
|
|
1013
|
+
/** The label of the insight confidence bar. @default 'Insight confidence' @since 2.13.0 */
|
|
1014
|
+
insightConfidence: string;
|
|
1015
|
+
/**
|
|
1016
|
+
* An output file card's second line, its format and meta ("CSV · 5 rows").
|
|
1017
|
+
* @default ({ format, meta }) => `${format} · ${meta}` @since 2.13.0
|
|
1018
|
+
*/
|
|
1019
|
+
artifactMeta: (args: {
|
|
1020
|
+
format: string;
|
|
1021
|
+
meta: string;
|
|
1022
|
+
}) => string;
|
|
1023
|
+
/**
|
|
1024
|
+
* Status words of a phase trigger and the thought-process bar (WI-13), so no raw status value
|
|
1025
|
+
* reaches an accessible name. An awaiting-input phase reads `awaitingInput`.
|
|
1026
|
+
* @since 2.13.0
|
|
1027
|
+
*/
|
|
1028
|
+
phaseStatus: {
|
|
1029
|
+
/** @default 'Not started' */
|
|
1030
|
+
pending: string;
|
|
1031
|
+
/** @default 'In progress' */
|
|
1032
|
+
active: string;
|
|
1033
|
+
/** @default 'Completed' */
|
|
1034
|
+
completed: string;
|
|
1035
|
+
/** @default 'Failed' */
|
|
1036
|
+
error: string;
|
|
1037
|
+
};
|
|
1038
|
+
};
|
|
1039
|
+
/** ChatHeader strings (`ai.chatHeader.*`). Owner: workstream I. */
|
|
1040
|
+
chatHeader: {
|
|
1041
|
+
/** @default 'Expand view' */
|
|
1042
|
+
expandView: string;
|
|
1043
|
+
/** @default 'Collapse to sidepanel' */
|
|
1044
|
+
collapseToSidepanel: string;
|
|
1045
|
+
/** Name and tooltip of the close button. @default 'Close panel' */
|
|
1046
|
+
closePanel: string;
|
|
1047
|
+
};
|
|
1048
|
+
/** ChatHistoryList strings (`ai.chatHistoryList.*`). Owner: workstream I. */
|
|
1049
|
+
chatHistoryList: {
|
|
1050
|
+
/** @default 'No conversations yet' */
|
|
1051
|
+
empty: string;
|
|
1052
|
+
/** @default 'Conversation history' */
|
|
1053
|
+
listLabel: string;
|
|
1054
|
+
/** @default 'Chat options' */
|
|
1055
|
+
chatOptions: string;
|
|
1056
|
+
/** @default 'Pin' */
|
|
1057
|
+
pin: string;
|
|
1058
|
+
/** @default 'Unpin' */
|
|
1059
|
+
unpin: string;
|
|
1060
|
+
/** @default 'Rename' */
|
|
1061
|
+
rename: string;
|
|
1062
|
+
/** @default 'Share' */
|
|
1063
|
+
share: string;
|
|
1064
|
+
/** @default 'Add to project' */
|
|
1065
|
+
addToProject: string;
|
|
1066
|
+
/** @default 'Delete' */
|
|
1067
|
+
delete: string;
|
|
1068
|
+
/** Name of a chat's options menu button, unique per chat (WI-23b). @default ({ title }) => `Options for ${title}` */
|
|
1069
|
+
optionsFor: (args: {
|
|
1070
|
+
title: string;
|
|
1071
|
+
}) => string;
|
|
1072
|
+
};
|
|
1073
|
+
/** ChatThread strings (`ai.chatThread.*`). Owner: workstream G. */
|
|
1074
|
+
chatThread: {
|
|
1075
|
+
/** Name of the message log. @default 'Chat messages' */
|
|
1076
|
+
logLabel: string;
|
|
1077
|
+
/** @default 'Start a conversation' */
|
|
1078
|
+
empty: string;
|
|
1079
|
+
};
|
|
1080
|
+
/** AICircularAction strings (`ai.circularAction.*`). Owner: workstream I. */
|
|
1081
|
+
circularAction: {
|
|
1082
|
+
/**
|
|
1083
|
+
* The button's name when its badge adds text: the label, then the badge text (WI-37).
|
|
1084
|
+
* @default ({ label, badge }) => `${label}, ${badge}`
|
|
1085
|
+
*/
|
|
1086
|
+
nameWithBadge: (args: {
|
|
1087
|
+
label: string;
|
|
1088
|
+
badge: string;
|
|
1089
|
+
}) => string;
|
|
1090
|
+
};
|
|
1091
|
+
/** AIDigestCard strings (`ai.digestCard.*`). Owner: workstream I. */
|
|
1092
|
+
digestCard: {
|
|
1093
|
+
cadence: {
|
|
1094
|
+
/** @default 'Daily briefing' */
|
|
1095
|
+
daily: string;
|
|
1096
|
+
/** @default 'Weekly briefing' */
|
|
1097
|
+
weekly: string;
|
|
1098
|
+
/** @default 'Monthly briefing' */
|
|
1099
|
+
monthly: string;
|
|
1100
|
+
/** @default 'Quarterly briefing' */
|
|
1101
|
+
quarterly: string;
|
|
1102
|
+
/** @default 'Briefing' */
|
|
1103
|
+
custom: string;
|
|
1104
|
+
};
|
|
1105
|
+
/** @default 'Dismiss digest' */
|
|
1106
|
+
dismiss: string;
|
|
1107
|
+
/**
|
|
1108
|
+
* The button that shows the hidden highlights; the English default picks the plural form with
|
|
1109
|
+
* `Intl.PluralRules('en-US')`. @default ({ count }) => `Show ${count} more highlight` (one) or `Show ${count} more highlights` (other)
|
|
1110
|
+
*/
|
|
1111
|
+
showMoreHighlights: (args: {
|
|
1112
|
+
count: number;
|
|
1113
|
+
}) => string;
|
|
1114
|
+
};
|
|
1115
|
+
/** AIExplainability strings (`ai.explainability.*`). Owner: workstream I. */
|
|
1116
|
+
explainability: {
|
|
1117
|
+
/** @default 'AI-generated content' */
|
|
1118
|
+
title: string;
|
|
1119
|
+
/** @default 'Model' */
|
|
1120
|
+
model: string;
|
|
1121
|
+
/** @default 'Confidence' */
|
|
1122
|
+
confidence: string;
|
|
1123
|
+
/** @default 'Last updated' */
|
|
1124
|
+
lastUpdated: string;
|
|
1125
|
+
/** The confidence level word with `showConfidenceLevel`, at or above the high threshold (WI-25). @default 'High' */
|
|
1126
|
+
confidenceHigh: string;
|
|
1127
|
+
/** The confidence level word with `showConfidenceLevel`, from the medium threshold (WI-25). @default 'Medium' */
|
|
1128
|
+
confidenceMedium: string;
|
|
1129
|
+
/** The confidence level word with `showConfidenceLevel`, below the medium threshold (WI-25). @default 'Low' */
|
|
1130
|
+
confidenceLow: string;
|
|
1131
|
+
};
|
|
1132
|
+
/** AIFab strings (`ai.fab.*`). Owner: workstream H. */
|
|
1133
|
+
fab: {
|
|
1134
|
+
/** Tooltip and name of the floating action button. @default 'Ask AI' */
|
|
1135
|
+
tooltip: string;
|
|
1136
|
+
};
|
|
1137
|
+
/** InsightEngine strings (`ai.insightEngine.*`). Owner: workstream G. */
|
|
1138
|
+
insightEngine: {
|
|
1139
|
+
/** @default 'Insight Engine' */
|
|
1140
|
+
title: string;
|
|
1141
|
+
/** Upper case on screen from CSS (textTransform). @default 'History' */
|
|
1142
|
+
history: string;
|
|
1143
|
+
/** The history heading with the number of chats. Upper case on screen from CSS. @default ({ count }) => `History (${count})` */
|
|
1144
|
+
historyWithCount: (args: {
|
|
1145
|
+
count: number;
|
|
1146
|
+
}) => string;
|
|
1147
|
+
/** @default 'Ask anything…' */
|
|
1148
|
+
placeholder: string;
|
|
1149
|
+
/**
|
|
1150
|
+
* The inline alert when `onSendMessage` rejects (H-16); 'Try again' (`ai.common.tryAgain`)
|
|
1151
|
+
* sends the same text again. @default "Your message wasn't sent. Check your connection and try again."
|
|
1152
|
+
*/
|
|
1153
|
+
sendFailed: string;
|
|
1154
|
+
};
|
|
1155
|
+
/** InsightEngineInput strings (`ai.insightEngineInput.*`). Owner: workstream I. */
|
|
1156
|
+
insightEngineInput: {
|
|
1157
|
+
/** @default 'Add files and tools' */
|
|
1158
|
+
addFilesAndTools: string;
|
|
1159
|
+
/** @default 'Ask anything. Type @ for mentions and / for shortcuts.' */
|
|
1160
|
+
placeholder: string;
|
|
1161
|
+
/** @default 'Add files or photos' */
|
|
1162
|
+
addFilesOrPhotos: string;
|
|
1163
|
+
/** @default 'Web search' */
|
|
1164
|
+
webSearch: string;
|
|
1165
|
+
/** @default 'Deep thinking' */
|
|
1166
|
+
deepThinking: string;
|
|
1167
|
+
/** @default 'Upload failed' */
|
|
1168
|
+
uploadFailed: string;
|
|
1169
|
+
/** @default 'Insight engine input' */
|
|
1170
|
+
inputLabel: string;
|
|
1171
|
+
/** @default 'Data source toggles' */
|
|
1172
|
+
dataSourceToggles: string;
|
|
1173
|
+
/** @default 'Model' */
|
|
1174
|
+
model: string;
|
|
1175
|
+
/** @default 'AI model selection' */
|
|
1176
|
+
modelSelection: string;
|
|
1177
|
+
/** @default 'Dictate' */
|
|
1178
|
+
dictate: string;
|
|
1179
|
+
/** @default 'Stop dictation' */
|
|
1180
|
+
stopDictation: string;
|
|
1181
|
+
/** @default 'Voice mode' */
|
|
1182
|
+
voiceMode: string;
|
|
1183
|
+
/** Name and tooltip of the Send button (OD-E11 option A: the tooltip is the name, `aria-keyshortcuts="Enter"`). @default 'Send message' */
|
|
1184
|
+
sendMessage: string;
|
|
1185
|
+
/** Name and tooltip of the Stop button shown while an answer is generating (WI-61+). @default 'Stop generating' */
|
|
1186
|
+
stopGenerating: string;
|
|
1187
|
+
/** Upload progress of one attachment. @default ({ progress }) => `Uploading…${progress !== undefined ? ` ${Math.round(progress)}%` : ''}` */
|
|
1188
|
+
uploading: (args: {
|
|
1189
|
+
progress?: number;
|
|
1190
|
+
}) => string;
|
|
1191
|
+
/** Name of the retry button of a failed attachment. @default ({ name }) => `Retry upload of ${name}` */
|
|
1192
|
+
retryUpload: (args: {
|
|
1193
|
+
name: string;
|
|
1194
|
+
}) => string;
|
|
1195
|
+
/** Name of the remove button of an attachment. @default ({ name }) => `Remove ${name}` */
|
|
1196
|
+
removeAttachment: (args: {
|
|
1197
|
+
name: string;
|
|
1198
|
+
}) => string;
|
|
1199
|
+
/** Name of an attachment's upload progress bar (WI-29a). @default ({ name }) => `Uploading ${name}` */
|
|
1200
|
+
uploadingFile: (args: {
|
|
1201
|
+
name: string;
|
|
1202
|
+
}) => string;
|
|
1203
|
+
/** Name of a data source switch. @default ({ label }) => `Toggle ${label}` */
|
|
1204
|
+
toggleSource: (args: {
|
|
1205
|
+
label: string;
|
|
1206
|
+
}) => string;
|
|
1207
|
+
/**
|
|
1208
|
+
* Name of the chip that shows how many sources are selected; the English default picks the
|
|
1209
|
+
* plural form with `Intl.PluralRules('en-US')`. @default ({ count }) => '1 source selected' (one) or `${count} sources selected` (other)
|
|
1210
|
+
*/
|
|
1211
|
+
sourcesSelected: (args: {
|
|
1212
|
+
count: number;
|
|
1213
|
+
}) => string;
|
|
1214
|
+
};
|
|
1215
|
+
/** InsightEnginePanel strings (`ai.insightEnginePanel.*`). Owner: workstream H. */
|
|
1216
|
+
insightEnginePanel: {
|
|
1217
|
+
/** @default 'Ask anything…' */
|
|
1218
|
+
placeholder: string;
|
|
1219
|
+
/** @default 'Insight Engine' */
|
|
1220
|
+
title: string;
|
|
1221
|
+
/** @default 'Show history' */
|
|
1222
|
+
showHistory: string;
|
|
1223
|
+
/** @default 'Hide history' */
|
|
1224
|
+
hideHistory: string;
|
|
1225
|
+
/** @default 'New thread' */
|
|
1226
|
+
newThread: string;
|
|
1227
|
+
/** @default 'Pro' */
|
|
1228
|
+
proBadge: string;
|
|
1229
|
+
/** @default 'Boxed layout' */
|
|
1230
|
+
boxedLayout: string;
|
|
1231
|
+
/** @default 'Full width' */
|
|
1232
|
+
fullWidth: string;
|
|
1233
|
+
/** @default 'Fullscreen' */
|
|
1234
|
+
fullscreen: string;
|
|
1235
|
+
/** @default 'Exit fullscreen' */
|
|
1236
|
+
exitFullscreen: string;
|
|
1237
|
+
/** @default 'Close' */
|
|
1238
|
+
close: string;
|
|
1239
|
+
/** @default 'What do you want to know?' */
|
|
1240
|
+
emptyTitle: string;
|
|
1241
|
+
/** @default "Ask anything and I'll search across your sources to find the answer" */
|
|
1242
|
+
emptyDescription: string;
|
|
1243
|
+
/**
|
|
1244
|
+
* The typing indicator's text before H-08. Since H-08 the panel shows a streaming entry (a
|
|
1245
|
+
* decorative shimmer, never announced) instead, so no component reads it; it stays in the
|
|
1246
|
+
* catalog (removing a key is major).
|
|
1247
|
+
* @default 'Searching…'
|
|
1248
|
+
*/
|
|
1249
|
+
searching: string;
|
|
1250
|
+
/** @default 'Ask anything. Type @ for mentions and / for shortcuts.' */
|
|
1251
|
+
composerPlaceholder: string;
|
|
1252
|
+
/** @default 'Insight Engine can make mistakes. Verify important information.' */
|
|
1253
|
+
disclaimer: string;
|
|
1254
|
+
/** The label that marks demo mode inside the panel heading (H-04). @default 'Demo responses' */
|
|
1255
|
+
demoLabel: string;
|
|
1256
|
+
};
|
|
1257
|
+
/** AILabel strings (`ai.label.*`). Owner: workstream I. */
|
|
1258
|
+
label: {
|
|
1259
|
+
/** The label text. @default 'AI' */
|
|
1260
|
+
text: string;
|
|
1261
|
+
/** The name of the label's popover dialog (WI-16b). @default 'About this AI content' */
|
|
1262
|
+
popoverLabel: string;
|
|
1263
|
+
};
|
|
1264
|
+
/** AIListeningIndicator strings (`ai.listeningIndicator.*`). Owner: workstream I. */
|
|
1265
|
+
listeningIndicator: {
|
|
1266
|
+
/** @default 'Listening… Speak now' */
|
|
1267
|
+
text: string;
|
|
1268
|
+
/** @default 'Stop listening' */
|
|
1269
|
+
stop: string;
|
|
1270
|
+
};
|
|
1271
|
+
/** AIMessage strings (`ai.message.*`). Owner: workstream G. */
|
|
1272
|
+
message: {
|
|
1273
|
+
/** Name of the response region. @default 'AI response' */
|
|
1274
|
+
regionLabel: string;
|
|
1275
|
+
/** Name of the actions group (G-28). @default 'AI response actions' */
|
|
1276
|
+
actionsLabel: string;
|
|
1277
|
+
/** Name and tooltip of the copy action: one string for both (G-28, ADR-13 (3)). @default 'Copy response' */
|
|
1278
|
+
copyResponse: string;
|
|
1279
|
+
/** Name and tooltip of the action. @default 'Mark as good response' */
|
|
1280
|
+
markGood: string;
|
|
1281
|
+
/** Name and tooltip of the action. @default 'Mark as poor response' */
|
|
1282
|
+
markPoor: string;
|
|
1283
|
+
/** Name and tooltip of the share action: one string for both (G-28, ADR-13 (3)). @default 'Share response' */
|
|
1284
|
+
shareResponse: string;
|
|
1285
|
+
/** Name and tooltip of the download action: one string for both (G-28, ADR-13 (3)). @default 'Download response' */
|
|
1286
|
+
downloadResponse: string;
|
|
1287
|
+
/** Why copy is unavailable while the response streams, linked to the copy action (G-04b). @default 'Copy is unavailable while the response is streaming' */
|
|
1288
|
+
copyUnavailableStreaming: string;
|
|
1289
|
+
/**
|
|
1290
|
+
* The short verb of the regenerate action (G-04f). Since G-28 AIMessage's footer button reads
|
|
1291
|
+
* `regenerateResponse` for its tooltip and its name; the key stays for hosts that show the
|
|
1292
|
+
* verb as text. @default 'Regenerate'
|
|
1293
|
+
*/
|
|
1294
|
+
regenerate: string;
|
|
1295
|
+
/** Name and tooltip of the regenerate action: one string for both (G-04f, G-28). @default 'Regenerate response' */
|
|
1296
|
+
regenerateResponse: string;
|
|
1297
|
+
/** Why regenerate is unavailable while the response streams, linked to the regenerate action (G-28). @default 'Regenerate is unavailable while the response is streaming' */
|
|
1298
|
+
regenerateUnavailableStreaming: string;
|
|
1299
|
+
/** Shown when regenerating fails (G-04f). @default "Couldn't regenerate the response" */
|
|
1300
|
+
regenerateFailed: string;
|
|
1301
|
+
/**
|
|
1302
|
+
* Name and tooltip of the golden-dataset action (GA-01): one string for both (ADR-13 (3)).
|
|
1303
|
+
* @default 'Add to golden dataset'
|
|
1304
|
+
*/
|
|
1305
|
+
addToGolden: string;
|
|
1306
|
+
/**
|
|
1307
|
+
* The golden-dataset action's added state (GA-01): the pressed action's reason, the label of
|
|
1308
|
+
* the message's golden verification badge, and the success announcement.
|
|
1309
|
+
* @default 'Added to golden dataset'
|
|
1310
|
+
*/
|
|
1311
|
+
addedToGolden: string;
|
|
1312
|
+
/** Shown when adding to the golden dataset fails (GA-01). @default "Couldn't add to the golden dataset" */
|
|
1313
|
+
addToGoldenFailed: string;
|
|
1314
|
+
/**
|
|
1315
|
+
* Why the golden-dataset action is unavailable while the response streams, linked to the action
|
|
1316
|
+
* (GA-01). @default 'Adding to the golden dataset is unavailable while the response is streaming'
|
|
1317
|
+
*/
|
|
1318
|
+
addToGoldenUnavailableStreaming: string;
|
|
1319
|
+
/** Name of an assistant message without a visible timestamp (G-06). @default 'Assistant response' */
|
|
1320
|
+
assistantResponse: string;
|
|
1321
|
+
/** Name of an assistant message with its formatted time (G-06). @default ({ time }) => `Assistant response, ${time}` */
|
|
1322
|
+
assistantResponseAt: (args: {
|
|
1323
|
+
time: string;
|
|
1324
|
+
}) => string;
|
|
1325
|
+
};
|
|
1326
|
+
/** AIRelatedQuestions strings (`ai.relatedQuestions.*`). Owner: workstream I. */
|
|
1327
|
+
relatedQuestions: {
|
|
1328
|
+
/** @default 'Related questions' */
|
|
1329
|
+
title: string;
|
|
1330
|
+
/** @default 'No related questions' */
|
|
1331
|
+
emptyTitle: string;
|
|
1332
|
+
/** @default 'Questions will appear here based on the conversation context.' */
|
|
1333
|
+
emptyDescription: string;
|
|
1334
|
+
/** @default 'Related questions list' */
|
|
1335
|
+
listLabel: string;
|
|
1336
|
+
};
|
|
1337
|
+
/** AIResponseRenderer strings (`ai.responseRenderer.*`). Owner: workstream G. */
|
|
1338
|
+
responseRenderer: {
|
|
1339
|
+
/** Title of the inline error of a failed response (G-34). @default 'This response failed' */
|
|
1340
|
+
errorTitle: string;
|
|
1341
|
+
/** Shown in place of a block that cannot render (G-39+). @default 'This part of the response is unavailable' */
|
|
1342
|
+
blockUnavailable: string;
|
|
1343
|
+
};
|
|
1344
|
+
/** AISource strings (`ai.source.*`): the text equivalent of each source type (WI-20a). Owner: workstream I. */
|
|
1345
|
+
source: {
|
|
1346
|
+
/** @default 'Web page' */
|
|
1347
|
+
typeWebpage: string;
|
|
1348
|
+
/** @default 'Document' */
|
|
1349
|
+
typeDocument: string;
|
|
1350
|
+
/** @default 'Article' */
|
|
1351
|
+
typeArticle: string;
|
|
1352
|
+
/** @default 'Video' */
|
|
1353
|
+
typeVideo: string;
|
|
1354
|
+
/** @default 'Other source' */
|
|
1355
|
+
typeOther: string;
|
|
1356
|
+
};
|
|
1357
|
+
/** AISourcesPanel strings (`ai.sourcesPanel.*`). Owner: workstream I. */
|
|
1358
|
+
sourcesPanel: {
|
|
1359
|
+
/** @default 'Sources' */
|
|
1360
|
+
title: string;
|
|
1361
|
+
/** @default 'Hide' */
|
|
1362
|
+
hide: string;
|
|
1363
|
+
/** @default 'Show' */
|
|
1364
|
+
show: string;
|
|
1365
|
+
/** The panel's header: the title and the number of sources (WI-37). @default ({ title, count }) => `${title} (${count})` */
|
|
1366
|
+
titleWithCount: (args: {
|
|
1367
|
+
title: string;
|
|
1368
|
+
count: number;
|
|
1369
|
+
}) => string;
|
|
1370
|
+
/** A category's row: its name and its number of sources (WI-37). @default ({ name, count }) => `${name} (${count})` */
|
|
1371
|
+
categoryWithCount: (args: {
|
|
1372
|
+
name: string;
|
|
1373
|
+
count: number;
|
|
1374
|
+
}) => string;
|
|
1375
|
+
};
|
|
1376
|
+
/** AISourcesSection strings (`ai.sourcesSection.*`). Owner: workstream I. */
|
|
1377
|
+
sourcesSection: {
|
|
1378
|
+
/** @default 'Sources' */
|
|
1379
|
+
title: string;
|
|
1380
|
+
/** @default 'Show less' */
|
|
1381
|
+
showLess: string;
|
|
1382
|
+
/** The button that shows the hidden sources. @default ({ count }) => `Show ${count} more` */
|
|
1383
|
+
showMore: (args: {
|
|
1384
|
+
count: number;
|
|
1385
|
+
}) => string;
|
|
1386
|
+
};
|
|
1387
|
+
/** AITextBlock strings (`ai.textBlock.*`). Owner: workstream I. */
|
|
1388
|
+
textBlock: {
|
|
1389
|
+
/** The copy button of a fenced code block: its name and tooltip (D-34). @default 'Copy code' */
|
|
1390
|
+
copyCode: string;
|
|
1391
|
+
/** The name of a fenced code block's scroll region, while it scrolls (D-34). @default 'Code sample' */
|
|
1392
|
+
codeRegion: string;
|
|
1393
|
+
};
|
|
1394
|
+
/** ThreadHistorySidebar strings (`ai.threadHistorySidebar.*`). Owner: workstream H. */
|
|
1395
|
+
threadHistorySidebar: {
|
|
1396
|
+
/** @default 'History' */
|
|
1397
|
+
title: string;
|
|
1398
|
+
/** @default 'New thread' */
|
|
1399
|
+
newThread: string;
|
|
1400
|
+
/** @default 'Close history' */
|
|
1401
|
+
closeHistory: string;
|
|
1402
|
+
/** @default 'Search threads…' */
|
|
1403
|
+
searchPlaceholder: string;
|
|
1404
|
+
/** @default 'Star' */
|
|
1405
|
+
star: string;
|
|
1406
|
+
/** @default 'Unstar' */
|
|
1407
|
+
unstar: string;
|
|
1408
|
+
/** @default 'Rename' */
|
|
1409
|
+
rename: string;
|
|
1410
|
+
/** @default 'Delete' */
|
|
1411
|
+
delete: string;
|
|
1412
|
+
/** @default 'No conversation history' */
|
|
1413
|
+
emptyHistory: string;
|
|
1414
|
+
/** @default 'No threads match your search' */
|
|
1415
|
+
emptySearch: string;
|
|
1416
|
+
/** @default 'More options' */
|
|
1417
|
+
moreOptions: string;
|
|
1418
|
+
/** The number of threads. @default ({ count }) => (count === 1 ? '1 thread' : `${count} threads`) */
|
|
1419
|
+
threadCount: (args: {
|
|
1420
|
+
count: number;
|
|
1421
|
+
}) => string;
|
|
1422
|
+
/** Name of the search field (H-42). @default 'Search threads' */
|
|
1423
|
+
searchLabel: string;
|
|
1424
|
+
/**
|
|
1425
|
+
* The Star toggle's one name and tooltip; `aria-pressed` carries the state (D-40, H-13).
|
|
1426
|
+
* @default 'Star thread' @since 2.13.0
|
|
1427
|
+
*/
|
|
1428
|
+
starThread: string;
|
|
1429
|
+
/** Name of the inline rename field (D-40, H-13). @default 'Thread name' @since 2.13.0 */
|
|
1430
|
+
threadName: string;
|
|
1431
|
+
/** The rename field's error for an empty name (D-40, H-13). @default 'Enter a thread name.' @since 2.13.0 */
|
|
1432
|
+
threadNameRequired: string;
|
|
1433
|
+
};
|
|
1434
|
+
/** UserMessage strings (`ai.userMessage.*`). Owner: workstream G. */
|
|
1435
|
+
userMessage: {
|
|
1436
|
+
/** Name of a user message (G-06). @default 'Your message' */
|
|
1437
|
+
label: string;
|
|
1438
|
+
};
|
|
1439
|
+
/** AIVoiceMode strings (`ai.voiceMode.*`). Owner: workstream I. */
|
|
1440
|
+
voiceMode: {
|
|
1441
|
+
status: {
|
|
1442
|
+
/** @default 'Connecting…' */
|
|
1443
|
+
connecting: string;
|
|
1444
|
+
/** @default 'Listening…' */
|
|
1445
|
+
listening: string;
|
|
1446
|
+
/** @default 'Thinking…' */
|
|
1447
|
+
thinking: string;
|
|
1448
|
+
/** @default 'Speaking…' */
|
|
1449
|
+
speaking: string;
|
|
1450
|
+
/** @default 'Muted' */
|
|
1451
|
+
paused: string;
|
|
1452
|
+
};
|
|
1453
|
+
/** @default 'Voice mode' */
|
|
1454
|
+
title: string;
|
|
1455
|
+
/** @default 'Start speaking…' */
|
|
1456
|
+
startSpeaking: string;
|
|
1457
|
+
/** @default 'Getting things ready…' */
|
|
1458
|
+
gettingReady: string;
|
|
1459
|
+
/** @default 'Microphone is muted' */
|
|
1460
|
+
microphoneMuted: string;
|
|
1461
|
+
/** @default 'Close voice mode' */
|
|
1462
|
+
close: string;
|
|
1463
|
+
/** @default 'Mute microphone' */
|
|
1464
|
+
muteMicrophone: string;
|
|
1465
|
+
/** @default 'End voice mode' */
|
|
1466
|
+
end: string;
|
|
1467
|
+
};
|
|
1468
|
+
/** AIVoiceOverlay strings (`ai.voiceOverlay.*`). Owner: workstream I. */
|
|
1469
|
+
voiceOverlay: {
|
|
1470
|
+
/** @default 'Listening…' */
|
|
1471
|
+
listening: string;
|
|
1472
|
+
/** @default 'Tap to speak' */
|
|
1473
|
+
ready: string;
|
|
1474
|
+
/** @default 'Speak your question clearly' */
|
|
1475
|
+
listeningInstruction: string;
|
|
1476
|
+
/** @default 'Voice mode is ready' */
|
|
1477
|
+
readyInstruction: string;
|
|
1478
|
+
/** @default 'Voice input' */
|
|
1479
|
+
voiceInput: string;
|
|
1480
|
+
/** @default 'Close voice input' */
|
|
1481
|
+
close: string;
|
|
1482
|
+
};
|
|
1483
|
+
/** Source categories and details from the source adapter, `toSourceCategories` (`ai.sources.*`, F-05). Owner: workstream F. */
|
|
1484
|
+
sources: {
|
|
1485
|
+
/** The name of each category when sources are grouped by type. */
|
|
1486
|
+
type: {
|
|
1487
|
+
/** @default 'Documents' */
|
|
1488
|
+
document: string;
|
|
1489
|
+
/** @default 'Web pages' */
|
|
1490
|
+
webpage: string;
|
|
1491
|
+
/** @default 'Databases' */
|
|
1492
|
+
database: string;
|
|
1493
|
+
/** @default 'APIs' */
|
|
1494
|
+
api: string;
|
|
1495
|
+
/** Sources without a type, and any type this version does not know. @default 'Other sources' */
|
|
1496
|
+
other: string;
|
|
1497
|
+
};
|
|
1498
|
+
/** The name of the single category when sources are not grouped (`groupBy: 'none'`). @default 'Sources' */
|
|
1499
|
+
all: string;
|
|
1500
|
+
/**
|
|
1501
|
+
* A numbered source as plain text, `number` being its 1-based place in the response's
|
|
1502
|
+
* `sources`. AISourcesPanel shows the number in the chip itself, so the adapter labels panel
|
|
1503
|
+
* items with the title alone.
|
|
1504
|
+
* @default ({ number, title }) => `[${number}] ${title}`
|
|
1505
|
+
*/
|
|
1506
|
+
itemLabel: (args: {
|
|
1507
|
+
number: number;
|
|
1508
|
+
title: string;
|
|
1509
|
+
}) => string;
|
|
1510
|
+
/** The terms of a source's details, in the order the adapter lists them. */
|
|
1511
|
+
detail: {
|
|
1512
|
+
/** @default 'Metric' */
|
|
1513
|
+
metric: string;
|
|
1514
|
+
/** @default 'Filters' */
|
|
1515
|
+
filters: string;
|
|
1516
|
+
/** @default 'Period' */
|
|
1517
|
+
period: string;
|
|
1518
|
+
/** @default 'Dataset' */
|
|
1519
|
+
dataset: string;
|
|
1520
|
+
/** @default 'As of' */
|
|
1521
|
+
asOf: string;
|
|
1522
|
+
/** @default 'Excerpt' */
|
|
1523
|
+
excerpt: string;
|
|
1524
|
+
};
|
|
1525
|
+
};
|
|
1526
|
+
/**
|
|
1527
|
+
* Filter text from `formatFilter` (`ai.filters.*`, F-05). `field` and `value` arrive formatted
|
|
1528
|
+
* for the locale: numbers through `Intl.NumberFormat`, a list of values through `values`.
|
|
1529
|
+
* Owner: workstream F.
|
|
1530
|
+
*/
|
|
1531
|
+
filters: {
|
|
1532
|
+
/** One function per operator, so a locale can order the words its own way. */
|
|
1533
|
+
operator: {
|
|
1534
|
+
/** @default ({ field, value }) => `${field}: ${value}` */
|
|
1535
|
+
eq: (args: {
|
|
1536
|
+
field: string;
|
|
1537
|
+
value: string;
|
|
1538
|
+
}) => string;
|
|
1539
|
+
/** @default ({ field, value }) => `${field} is not ${value}` */
|
|
1540
|
+
neq: (args: {
|
|
1541
|
+
field: string;
|
|
1542
|
+
value: string;
|
|
1543
|
+
}) => string;
|
|
1544
|
+
/** `value` is the list of values, already joined by `values`. @default ({ field, value }) => `${field}: ${value}` */
|
|
1545
|
+
in: (args: {
|
|
1546
|
+
field: string;
|
|
1547
|
+
value: string;
|
|
1548
|
+
}) => string;
|
|
1549
|
+
/** `value` is the list of values, already joined by `values`. @default ({ field, value }) => `${field} excludes ${value}` */
|
|
1550
|
+
notIn: (args: {
|
|
1551
|
+
field: string;
|
|
1552
|
+
value: string;
|
|
1553
|
+
}) => string;
|
|
1554
|
+
/** @default ({ field, value }) => `${field} greater than ${value}` */
|
|
1555
|
+
gt: (args: {
|
|
1556
|
+
field: string;
|
|
1557
|
+
value: string;
|
|
1558
|
+
}) => string;
|
|
1559
|
+
/** @default ({ field, value }) => `${field} at least ${value}` */
|
|
1560
|
+
gte: (args: {
|
|
1561
|
+
field: string;
|
|
1562
|
+
value: string;
|
|
1563
|
+
}) => string;
|
|
1564
|
+
/** @default ({ field, value }) => `${field} less than ${value}` */
|
|
1565
|
+
lt: (args: {
|
|
1566
|
+
field: string;
|
|
1567
|
+
value: string;
|
|
1568
|
+
}) => string;
|
|
1569
|
+
/** @default ({ field, value }) => `${field} at most ${value}` */
|
|
1570
|
+
lte: (args: {
|
|
1571
|
+
field: string;
|
|
1572
|
+
value: string;
|
|
1573
|
+
}) => string;
|
|
1574
|
+
/** Both ends inclusive. @default ({ field, min, max }) => `${field} from ${min} to ${max}` */
|
|
1575
|
+
between: (args: {
|
|
1576
|
+
field: string;
|
|
1577
|
+
min: string;
|
|
1578
|
+
max: string;
|
|
1579
|
+
}) => string;
|
|
1580
|
+
/** @default ({ field, value }) => `${field} contains ${value}` */
|
|
1581
|
+
contains: (args: {
|
|
1582
|
+
field: string;
|
|
1583
|
+
value: string;
|
|
1584
|
+
}) => string;
|
|
1585
|
+
};
|
|
1586
|
+
/**
|
|
1587
|
+
* Joins several filters into one phrase, as a source's details list them.
|
|
1588
|
+
* @default ({ items, locale }) => new Intl.ListFormat(locale, { style: 'long', type: 'conjunction' }).format(items)
|
|
1589
|
+
*/
|
|
1590
|
+
list: (args: {
|
|
1591
|
+
items: string[];
|
|
1592
|
+
locale: string;
|
|
1593
|
+
}) => string;
|
|
1594
|
+
/**
|
|
1595
|
+
* Joins the values of one filter (`'in'`, `'not-in'`, or an array under another operator), so
|
|
1596
|
+
* they read apart from the words that join filters: 'Region: EMEA, APAC'.
|
|
1597
|
+
* @default ({ items, locale }) => new Intl.ListFormat(locale, { style: 'short', type: 'unit' }).format(items)
|
|
1598
|
+
*/
|
|
1599
|
+
values: (args: {
|
|
1600
|
+
items: string[];
|
|
1601
|
+
locale: string;
|
|
1602
|
+
}) => string;
|
|
1603
|
+
/** A `true` filter value. @default 'Yes' */
|
|
1604
|
+
booleanTrue: string;
|
|
1605
|
+
/** A `false` filter value. @default 'No' */
|
|
1606
|
+
booleanFalse: string;
|
|
1607
|
+
};
|
|
1608
|
+
/** AIConfidenceBadge strings (`ai.confidenceBadge.*`, F-10). Owner: workstream F. */
|
|
1609
|
+
confidenceBadge: {
|
|
1610
|
+
/** The word shown before the level in the bar variant and in the summary. @default 'Confidence' */
|
|
1611
|
+
label: string;
|
|
1612
|
+
level: {
|
|
1613
|
+
/** @default 'Low' */
|
|
1614
|
+
low: string;
|
|
1615
|
+
/** @default 'Medium' */
|
|
1616
|
+
medium: string;
|
|
1617
|
+
/** @default 'High' */
|
|
1618
|
+
high: string;
|
|
1619
|
+
};
|
|
1620
|
+
/**
|
|
1621
|
+
* The visible text: the level word and, when the badge has a valid value, the formatted percentage.
|
|
1622
|
+
* @default ({ level, value }) => (value ? `${level} · ${value}` : level)
|
|
1623
|
+
*/
|
|
1624
|
+
display: (args: {
|
|
1625
|
+
level: string;
|
|
1626
|
+
value?: string;
|
|
1627
|
+
}) => string;
|
|
1628
|
+
/**
|
|
1629
|
+
* The text for assistive technology, and the trigger's name when the badge opens details.
|
|
1630
|
+
* @default ({ label, level, value }) => (value ? `${label}: ${level}, ${value}` : `${label}: ${level}`)
|
|
1631
|
+
*/
|
|
1632
|
+
summary: (args: {
|
|
1633
|
+
label: string;
|
|
1634
|
+
level: string;
|
|
1635
|
+
value?: string;
|
|
1636
|
+
}) => string;
|
|
1637
|
+
/** Shown for a value outside 0-1. @default 'Confidence unavailable' */
|
|
1638
|
+
unavailable: string;
|
|
1639
|
+
/** Read while the confidence loads. @default 'Calculating confidence' */
|
|
1640
|
+
pending: string;
|
|
1641
|
+
/** The heading of the details popover. @default 'Why this confidence' */
|
|
1642
|
+
detailsTitle: string;
|
|
1643
|
+
/** The terms of the details list. */
|
|
1644
|
+
detail: {
|
|
1645
|
+
/** @default 'Level' */
|
|
1646
|
+
level: string;
|
|
1647
|
+
/** @default 'Score' */
|
|
1648
|
+
score: string;
|
|
1649
|
+
/** @default 'Thresholds' */
|
|
1650
|
+
thresholds: string;
|
|
1651
|
+
};
|
|
1652
|
+
/** The thresholds row, each threshold formatted as a percentage. @default ({ medium, high }) => `Medium from ${medium}, high from ${high}` */
|
|
1653
|
+
thresholdsSummary: (args: {
|
|
1654
|
+
medium: string;
|
|
1655
|
+
high: string;
|
|
1656
|
+
}) => string;
|
|
1657
|
+
};
|
|
1658
|
+
/** AIVerificationBadge strings (`ai.verificationBadge.*`, F-11). Owner: workstream F. */
|
|
1659
|
+
verificationBadge: {
|
|
1660
|
+
/** The label of each status. */
|
|
1661
|
+
status: {
|
|
1662
|
+
/** @default 'Verified' */
|
|
1663
|
+
verified: string;
|
|
1664
|
+
/** R26 requirement copy (G-42+, protected: change only with product sign-off). @default 'Answered from the verified dataset' */
|
|
1665
|
+
golden: string;
|
|
1666
|
+
/** @default 'Confirmed plan' */
|
|
1667
|
+
confirmedPlan: string;
|
|
1668
|
+
/** @default 'Pending review' */
|
|
1669
|
+
pendingReview: string;
|
|
1670
|
+
/** @default 'Flagged for review' */
|
|
1671
|
+
flagged: string;
|
|
1672
|
+
/** @default 'Rejected' */
|
|
1673
|
+
rejected: string;
|
|
1674
|
+
};
|
|
1675
|
+
/** Announced when the status changes after mount (`live`). @default ({ label }) => `Verification status: ${label}` */
|
|
1676
|
+
changed: (args: {
|
|
1677
|
+
label: string;
|
|
1678
|
+
}) => string;
|
|
1679
|
+
/** The heading of the details popover. @default 'Verification details' */
|
|
1680
|
+
detailsTitle: string;
|
|
1681
|
+
/** The terms of the details list. */
|
|
1682
|
+
detail: {
|
|
1683
|
+
/** @default 'Verified on' */
|
|
1684
|
+
verifiedAt: string;
|
|
1685
|
+
/** @default 'Dataset' */
|
|
1686
|
+
dataset: string;
|
|
1687
|
+
/** @default 'Note' */
|
|
1688
|
+
note: string;
|
|
1689
|
+
};
|
|
1690
|
+
};
|
|
1691
|
+
/** AISourceChip strings (`ai.sourceChip.*`, F-12). Owner: workstream F. */
|
|
1692
|
+
sourceChip: {
|
|
1693
|
+
/**
|
|
1694
|
+
* The visible text of the label variant: the metric (else the title), then the period.
|
|
1695
|
+
* @default ({ metric, period, title }) => (period ? `${metric ?? title}, ${period}` : (metric ?? title))
|
|
1696
|
+
*/
|
|
1697
|
+
label: (args: {
|
|
1698
|
+
metric?: string;
|
|
1699
|
+
period?: string;
|
|
1700
|
+
title: string;
|
|
1701
|
+
}) => string;
|
|
1702
|
+
/** The name of the number variant. `index` is 1-based. @default ({ index, title }) => `Source ${index}: ${title}` */
|
|
1703
|
+
numberName: (args: {
|
|
1704
|
+
index: number;
|
|
1705
|
+
title: string;
|
|
1706
|
+
}) => string;
|
|
1707
|
+
/**
|
|
1708
|
+
* The name of the label variant. It starts with the visible label (WCAG 2.5.3).
|
|
1709
|
+
* @default ({ label, title }) => (label === title ? `${label}, source` : `${label}, source: ${title}`)
|
|
1710
|
+
*/
|
|
1711
|
+
labelName: (args: {
|
|
1712
|
+
label: string;
|
|
1713
|
+
title: string;
|
|
1714
|
+
}) => string;
|
|
1715
|
+
/** The link to the source. @default 'Open source' */
|
|
1716
|
+
openSource: string;
|
|
1717
|
+
/** Read after the link text. @default '(opens in new tab)' */
|
|
1718
|
+
opensInNewTab: string;
|
|
1719
|
+
/** The action that reveals the query behind the source. @default 'Show query' */
|
|
1720
|
+
showQuery: string;
|
|
1721
|
+
/** Shown when a source has nothing but a title. @default 'No additional details' */
|
|
1722
|
+
noDetails: string;
|
|
1723
|
+
};
|
|
1724
|
+
/** AIQueryDisclosure strings (`ai.queryDisclosure.*`, F-14). Owner: workstream F. */
|
|
1725
|
+
queryDisclosure: {
|
|
1726
|
+
/** The trigger label. It never changes with the state. @default 'Query' */
|
|
1727
|
+
title: string;
|
|
1728
|
+
/** The trigger label when the query language is known. @default ({ language }) => `${language} query` */
|
|
1729
|
+
titleWithLanguage: (args: {
|
|
1730
|
+
language: string;
|
|
1731
|
+
}) => string;
|
|
1732
|
+
/** The name of the code area while it scrolls. @default ({ language }) => (language ? `${language} query text` : 'Query text') */
|
|
1733
|
+
codeLabel: (args: {
|
|
1734
|
+
language?: string;
|
|
1735
|
+
}) => string;
|
|
1736
|
+
/** Why the trigger is unavailable while streaming. @default 'The query is still being generated' */
|
|
1737
|
+
streamingReason: string;
|
|
1738
|
+
/** The copy button's name and tooltip. @default 'Copy query' */
|
|
1739
|
+
copy: string;
|
|
1740
|
+
/** Announced after a copy succeeds. @default 'Query copied' */
|
|
1741
|
+
copied: string;
|
|
1742
|
+
/** Announced when a copy fails. @default 'Copy failed' */
|
|
1743
|
+
copyFailed: string;
|
|
1744
|
+
/** The metadata list: terms, and the row count. */
|
|
1745
|
+
meta: {
|
|
1746
|
+
/** The term of the row count. @default 'Result' */
|
|
1747
|
+
result: string;
|
|
1748
|
+
/** The row count. @default ({ count }) => (count === 1 ? '1 row' : `${count} rows`), the count grouped for en-US */
|
|
1749
|
+
rowCount: (args: {
|
|
1750
|
+
count: number;
|
|
1751
|
+
}) => string;
|
|
1752
|
+
/** @default 'Duration' */
|
|
1753
|
+
duration: string;
|
|
1754
|
+
/** @default 'Dataset' */
|
|
1755
|
+
dataset: string;
|
|
1756
|
+
/** @default 'Dialect' */
|
|
1757
|
+
dialect: string;
|
|
1758
|
+
/** @default 'Executed' */
|
|
1759
|
+
executedAt: string;
|
|
1760
|
+
};
|
|
1761
|
+
};
|
|
1762
|
+
/** AIClarificationPrompt strings (`ai.clarificationPrompt.*`, F-15). Owner: workstream F. */
|
|
1763
|
+
clarificationPrompt: {
|
|
1764
|
+
/** The question by reason, used when the clarification carries no question of its own. */
|
|
1765
|
+
question: {
|
|
1766
|
+
/**
|
|
1767
|
+
* `count` is the number of options, for a locale that pluralizes; the English text does not use it.
|
|
1768
|
+
* R17 requirement copy (G-42+, protected: change only with product sign-off).
|
|
1769
|
+
* @default ({ term }) => `Did you mean ${term}?`
|
|
1770
|
+
*/
|
|
1771
|
+
ambiguousTerm: (args: {
|
|
1772
|
+
count: number;
|
|
1773
|
+
term: string;
|
|
1774
|
+
}) => string;
|
|
1775
|
+
/** R17 requirement copy (G-42+, protected). @default ({ term }) => `What about ${term}?` */
|
|
1776
|
+
missingValue: (args: {
|
|
1777
|
+
term: string;
|
|
1778
|
+
}) => string;
|
|
1779
|
+
/** @default ({ term }) => `Which “${term}” do you mean?` */
|
|
1780
|
+
lowConfidence: (args: {
|
|
1781
|
+
term: string;
|
|
1782
|
+
}) => string;
|
|
1783
|
+
/** @default ({ term }) => `No data source covers “${term}”. Which data do you want to use?` */
|
|
1784
|
+
noSources: (args: {
|
|
1785
|
+
term: string;
|
|
1786
|
+
}) => string;
|
|
1787
|
+
/** R17 requirement copy (G-42+, protected). @default ({ term }) => `What did you mean by ${term}?` */
|
|
1788
|
+
unfamiliarTerm: (args: {
|
|
1789
|
+
term: string;
|
|
1790
|
+
}) => string;
|
|
1791
|
+
/** Without a term, or for a reason this version does not know. @default 'Which of these do you mean?' */
|
|
1792
|
+
generic: string;
|
|
1793
|
+
};
|
|
1794
|
+
/** The free-text option. @default 'Something else' */
|
|
1795
|
+
other: string;
|
|
1796
|
+
/** The free-text field's label. @default 'Describe what you meant' */
|
|
1797
|
+
otherLabel: string;
|
|
1798
|
+
/** The free-text field's helper text. @default 'Use a few words.' */
|
|
1799
|
+
otherHelper: string;
|
|
1800
|
+
/** @default 'Send answer' */
|
|
1801
|
+
submit: string;
|
|
1802
|
+
/** @default 'Sending answer…' */
|
|
1803
|
+
submitting: string;
|
|
1804
|
+
/** Shown when a required answer is missing. @default 'Choose an answer or describe what you meant.' */
|
|
1805
|
+
requiredError: string;
|
|
1806
|
+
/** Announced once when a streamed question becomes answerable. @default 'Question ready for your input' */
|
|
1807
|
+
ready: string;
|
|
1808
|
+
/** Why the controls are unavailable while streaming. @default 'The question is still being generated' */
|
|
1809
|
+
streamingReason: string;
|
|
1810
|
+
/** The summary after answering. @default ({ answer }) => `You answered: ${answer}` */
|
|
1811
|
+
resolved: (args: {
|
|
1812
|
+
answer: string;
|
|
1813
|
+
}) => string;
|
|
1814
|
+
/** @default "Couldn't send your answer." */
|
|
1815
|
+
error: string;
|
|
1816
|
+
/** @default 'Try again' */
|
|
1817
|
+
retry: string;
|
|
1818
|
+
};
|
|
1819
|
+
/** AIFeedbackForm strings (`ai.feedbackForm.*`, F-16). Owner: workstream F. */
|
|
1820
|
+
feedbackForm: {
|
|
1821
|
+
/** @default 'Tell us what went wrong' */
|
|
1822
|
+
title: string;
|
|
1823
|
+
/** @default 'Problem type' */
|
|
1824
|
+
categoriesLegend: string;
|
|
1825
|
+
/** The label of each built-in category. */
|
|
1826
|
+
category: {
|
|
1827
|
+
/** @default 'Wrong number' */
|
|
1828
|
+
wrongNumber: string;
|
|
1829
|
+
/** @default 'Misread the question' */
|
|
1830
|
+
wrongInterpretation: string;
|
|
1831
|
+
/** @default 'Made-up content' */
|
|
1832
|
+
synthetic: string;
|
|
1833
|
+
/** @default 'Wrong or missing sources' */
|
|
1834
|
+
sources: string;
|
|
1835
|
+
/** @default 'Outdated data' */
|
|
1836
|
+
outdatedData: string;
|
|
1837
|
+
/** @default 'Hard to read' */
|
|
1838
|
+
formatting: string;
|
|
1839
|
+
/** @default 'Something else' */
|
|
1840
|
+
other: string;
|
|
1841
|
+
};
|
|
1842
|
+
/** @default 'Details (optional)' */
|
|
1843
|
+
comment: string;
|
|
1844
|
+
/** @default 'Say what the answer should have been.' */
|
|
1845
|
+
commentHelper: string;
|
|
1846
|
+
/** @default 'Rerun with this correction' */
|
|
1847
|
+
rerun: string;
|
|
1848
|
+
/** @default 'Send feedback' */
|
|
1849
|
+
submit: string;
|
|
1850
|
+
/** @default 'Sending feedback…' */
|
|
1851
|
+
submitting: string;
|
|
1852
|
+
/** @default 'Cancel' */
|
|
1853
|
+
cancel: string;
|
|
1854
|
+
/** Shown when `requireCategory` is set and none is chosen. @default 'Choose at least one problem type.' */
|
|
1855
|
+
requiredCategory: string;
|
|
1856
|
+
/** @default "Couldn't send feedback." */
|
|
1857
|
+
error: string;
|
|
1858
|
+
/** @default 'Try again' */
|
|
1859
|
+
retry: string;
|
|
1860
|
+
/** The summary after sending. @default 'Thanks — sent for review' */
|
|
1861
|
+
success: string;
|
|
1862
|
+
};
|
|
1863
|
+
/** AIFeedbackControl strings (`ai.feedbackControl.*`, F-17). Owner: workstream F. */
|
|
1864
|
+
feedbackControl: {
|
|
1865
|
+
/** The group's name. @default 'Rate this response' */
|
|
1866
|
+
groupLabel: string;
|
|
1867
|
+
/** The thumbs-up button's name and tooltip. @default 'Good response' */
|
|
1868
|
+
positive: string;
|
|
1869
|
+
/** The thumbs-down button's name and tooltip. @default 'Poor response' */
|
|
1870
|
+
negative: string;
|
|
1871
|
+
/** The button that opens the detailed feedback form. @default 'Tell us what went wrong' */
|
|
1872
|
+
detailsTrigger: string;
|
|
1873
|
+
/** The heading of the popover or dialog that holds the form. @default 'Tell us what went wrong' */
|
|
1874
|
+
dialogTitle: string;
|
|
1875
|
+
/** Announced, then shown, after detailed feedback is sent. @default 'Feedback sent' */
|
|
1876
|
+
sent: string;
|
|
1877
|
+
/** Why the control is unavailable, for example while the response streams. @default 'You can rate the response once it is complete.' */
|
|
1878
|
+
disabledReason: string;
|
|
1879
|
+
};
|
|
1880
|
+
/**
|
|
1881
|
+
* Strings of the helpers behind the interactive response blocks (`ai.blocks.*`, G-12). Plan
|
|
1882
|
+
* review and clarification keep their own copy (`ai.planReview`, `ai.clarificationPrompt`).
|
|
1883
|
+
* Owner: workstream G.
|
|
1884
|
+
*/
|
|
1885
|
+
blocks: {
|
|
1886
|
+
/**
|
|
1887
|
+
* Announced once when an interactive block finishes streaming and becomes interactive, for a
|
|
1888
|
+
* block with no better text of its own. @default 'Ready for your input'
|
|
1889
|
+
*/
|
|
1890
|
+
ready: string;
|
|
1891
|
+
/**
|
|
1892
|
+
* Why the composer is unavailable while the latest answer asks a required question.
|
|
1893
|
+
* @default 'Answer the question above to continue'
|
|
1894
|
+
*/
|
|
1895
|
+
answerToContinue: string;
|
|
1896
|
+
};
|
|
1897
|
+
/**
|
|
1898
|
+
* AIPlanReview strings (`ai.planReview.*`, G-18, G-42+). Owner: workstream G. `confirm`,
|
|
1899
|
+
* `gatingNote` and `ready` are requirement copy (R5, R9): change them only with product sign-off.
|
|
1900
|
+
*/
|
|
1901
|
+
planReview: {
|
|
1902
|
+
/** The plan's heading, and the dialog's title in the dialog presentation. @default 'Proposed plan' */
|
|
1903
|
+
title: string;
|
|
1904
|
+
/** The plan's revision after a replan. @default ({ revision }) => `Revision ${revision}` */
|
|
1905
|
+
revision: (args: {
|
|
1906
|
+
revision: number;
|
|
1907
|
+
}) => string;
|
|
1908
|
+
/** How many steps the plan has, on the dialog presentation's card. @default ({ count }) => (count === 1 ? '1 step' : `${count} steps`) */
|
|
1909
|
+
stepCount: (args: {
|
|
1910
|
+
count: number;
|
|
1911
|
+
}) => string;
|
|
1912
|
+
/** The confirm button (R5). @default 'Confirm and run' */
|
|
1913
|
+
confirm: string;
|
|
1914
|
+
/** The confirm button while the confirm is pending. @default 'Confirming…' */
|
|
1915
|
+
confirming: string;
|
|
1916
|
+
/** The cancel button. @default 'Cancel' */
|
|
1917
|
+
cancel: string;
|
|
1918
|
+
/** Shown above the confirm button (R5). @default 'No query runs until you confirm the plan.' */
|
|
1919
|
+
gatingNote: string;
|
|
1920
|
+
/** The dialog presentation's trigger. @default 'Review plan' */
|
|
1921
|
+
reviewPlan: string;
|
|
1922
|
+
/** A step's metric chip. @default ({ value }) => `Metric: ${value}` */
|
|
1923
|
+
metric: (args: {
|
|
1924
|
+
value: string;
|
|
1925
|
+
}) => string;
|
|
1926
|
+
/** A step's field chip. @default ({ value }) => `Field: ${value}` */
|
|
1927
|
+
field: (args: {
|
|
1928
|
+
value: string;
|
|
1929
|
+
}) => string;
|
|
1930
|
+
/** A step's period chip. @default ({ value }) => `Period: ${value}` */
|
|
1931
|
+
period: (args: {
|
|
1932
|
+
value: string;
|
|
1933
|
+
}) => string;
|
|
1934
|
+
/** A step's filter chip; `label` is the filter in words. @default ({ label }) => `Filter: ${label}` */
|
|
1935
|
+
filter: (args: {
|
|
1936
|
+
label: string;
|
|
1937
|
+
}) => string;
|
|
1938
|
+
/** The visible text of a step's edit button. @default 'Edit' */
|
|
1939
|
+
edit: string;
|
|
1940
|
+
/** A step's edit button name; it starts with `edit` (WCAG 2.5.3). @default ({ n }) => `Edit step ${n}` */
|
|
1941
|
+
editStep: (args: {
|
|
1942
|
+
n: number;
|
|
1943
|
+
}) => string;
|
|
1944
|
+
/** A step's name: the edit field's label and the details term. @default ({ n }) => `Step ${n}` */
|
|
1945
|
+
step: (args: {
|
|
1946
|
+
n: number;
|
|
1947
|
+
}) => string;
|
|
1948
|
+
/** Saves a step edit. @default 'Save step' */
|
|
1949
|
+
save: string;
|
|
1950
|
+
/** Leaves a step edit without saving. @default 'Discard edit' */
|
|
1951
|
+
discardEdit: string;
|
|
1952
|
+
/** Announced after a step edit is saved. @default 'Step saved' */
|
|
1953
|
+
saved: string;
|
|
1954
|
+
/** Shown and announced when a step edit fails. @default "Couldn't save the step. Try again." */
|
|
1955
|
+
saveError: string;
|
|
1956
|
+
/** Shown when a step edit is empty. @default 'Enter the step.' */
|
|
1957
|
+
required: string;
|
|
1958
|
+
/** A step's status, shown as text beside its icon. */
|
|
1959
|
+
status: {
|
|
1960
|
+
/** @default 'Ready' */
|
|
1961
|
+
ready: string;
|
|
1962
|
+
/** @default 'Needs your input' */
|
|
1963
|
+
needsInput: string;
|
|
1964
|
+
/** @default 'Edited' */
|
|
1965
|
+
edited: string;
|
|
1966
|
+
/** @default 'Updating' */
|
|
1967
|
+
replanning: string;
|
|
1968
|
+
};
|
|
1969
|
+
/** Shown on a step with low confidence; never blocks the confirm. @default 'Low confidence. Check this step.' */
|
|
1970
|
+
lowConfidence: string;
|
|
1971
|
+
/** Why Confirm and run is unavailable, shown and linked to it. */
|
|
1972
|
+
gatingReason: {
|
|
1973
|
+
/** @default 'The plan is still being written.' */
|
|
1974
|
+
streaming: string;
|
|
1975
|
+
/** @default 'The plan is being updated.' */
|
|
1976
|
+
replanning: string;
|
|
1977
|
+
/** @default ({ n }) => `Step ${n} is being updated.` */
|
|
1978
|
+
stepReplanning: (args: {
|
|
1979
|
+
n: number;
|
|
1980
|
+
}) => string;
|
|
1981
|
+
/** @default ({ n }) => `Answer the question in step ${n} to confirm.` */
|
|
1982
|
+
answerStep: (args: {
|
|
1983
|
+
n: number;
|
|
1984
|
+
}) => string;
|
|
1985
|
+
/** @default ({ n }) => `Edit step ${n} to confirm.` */
|
|
1986
|
+
editStep: (args: {
|
|
1987
|
+
n: number;
|
|
1988
|
+
}) => string;
|
|
1989
|
+
};
|
|
1990
|
+
/** The plan's state when it is read-only. */
|
|
1991
|
+
planStatus: {
|
|
1992
|
+
/** @default 'Updating the plan…' */
|
|
1993
|
+
replanning: string;
|
|
1994
|
+
/** @default 'A newer version replaced this plan.' */
|
|
1995
|
+
superseded: string;
|
|
1996
|
+
/** @default 'Plan cancelled.' */
|
|
1997
|
+
cancelled: string;
|
|
1998
|
+
};
|
|
1999
|
+
/** The summary after the plan is confirmed; it takes focus and is announced once. @default 'Plan confirmed. The query runs next.' */
|
|
2000
|
+
resolved: string;
|
|
2001
|
+
/** Announced once when a streamed plan becomes ready to review (R9). @default "Plan's ready — needs your confirmation" */
|
|
2002
|
+
ready: string;
|
|
2003
|
+
/** Shown when the confirm fails. @default "Couldn't confirm the plan." */
|
|
2004
|
+
confirmError: string;
|
|
2005
|
+
/** Shown when the cancel fails. @default "Couldn't cancel the plan." */
|
|
2006
|
+
cancelError: string;
|
|
2007
|
+
/** @default 'Try again' */
|
|
2008
|
+
retry: string;
|
|
2009
|
+
/** The details disclosure. @default 'Details' */
|
|
2010
|
+
details: string;
|
|
2011
|
+
/** Shown when the plan has no steps. @default 'The plan has no steps yet.' */
|
|
2012
|
+
empty: string;
|
|
2013
|
+
};
|
|
2014
|
+
/**
|
|
2015
|
+
* AIReviewItem strings (`ai.reviewItem.*`, G-19, G-42+): the golden-dataset review of one
|
|
2016
|
+
* answer. Owner: workstream G. The reject reason's required message follows ConfirmDialog's
|
|
2017
|
+
* (C-14) and waits for the same MICROCOPY review.
|
|
2018
|
+
*/
|
|
2019
|
+
reviewItem: {
|
|
2020
|
+
/** The item's review state, shown as a chip with an icon. */
|
|
2021
|
+
status: {
|
|
2022
|
+
/** The chip's label. @default 'Status' */
|
|
2023
|
+
label: string;
|
|
2024
|
+
/** @default 'Pending review' */
|
|
2025
|
+
pending: string;
|
|
2026
|
+
/** @default 'Approved' */
|
|
2027
|
+
approved: string;
|
|
2028
|
+
/** @default 'Edited' */
|
|
2029
|
+
edited: string;
|
|
2030
|
+
/** @default 'Rejected' */
|
|
2031
|
+
rejected: string;
|
|
2032
|
+
};
|
|
2033
|
+
/** The terms of the item's details list. */
|
|
2034
|
+
details: {
|
|
2035
|
+
/** @default 'Asked by' */
|
|
2036
|
+
submittedBy: string;
|
|
2037
|
+
/** @default 'Asked' */
|
|
2038
|
+
submittedAt: string;
|
|
2039
|
+
/** @default 'Confidence' */
|
|
2040
|
+
confidence: string;
|
|
2041
|
+
/** @default 'Verification' */
|
|
2042
|
+
verification: string;
|
|
2043
|
+
};
|
|
2044
|
+
/** The headings of the item's sections (the plan and the query bring their own). */
|
|
2045
|
+
sections: {
|
|
2046
|
+
/** @default 'Answer' */
|
|
2047
|
+
answer: string;
|
|
2048
|
+
/** @default 'User feedback' */
|
|
2049
|
+
flags: string;
|
|
2050
|
+
/** @default 'History' */
|
|
2051
|
+
history: string;
|
|
2052
|
+
};
|
|
2053
|
+
/** One piece of user feedback on the answer. */
|
|
2054
|
+
flag: {
|
|
2055
|
+
/** A positive rating, beside its icon. @default 'Rated helpful' */
|
|
2056
|
+
positive: string;
|
|
2057
|
+
/** A negative rating, beside its icon. @default 'Rated not helpful' */
|
|
2058
|
+
negative: string;
|
|
2059
|
+
/** The name of a rating's problem types. @default 'Problems' */
|
|
2060
|
+
categories: string;
|
|
2061
|
+
};
|
|
2062
|
+
/** The decision group's name. @default 'Decision' */
|
|
2063
|
+
decisionsLabel: string;
|
|
2064
|
+
/** The approve button. @default 'Approve' */
|
|
2065
|
+
approve: string;
|
|
2066
|
+
/** The approve button while the approval is pending. @default 'Approving…' */
|
|
2067
|
+
approving: string;
|
|
2068
|
+
/** The edit button. @default 'Edit' */
|
|
2069
|
+
edit: string;
|
|
2070
|
+
/** The reject button, and the reject dialog's confirm button. @default 'Reject' */
|
|
2071
|
+
reject: string;
|
|
2072
|
+
/** The heading of the edit form. @default 'Edit the item' */
|
|
2073
|
+
editTitle: string;
|
|
2074
|
+
/** The edit form's field labels. */
|
|
2075
|
+
field: {
|
|
2076
|
+
/** @default 'Question' */
|
|
2077
|
+
question: string;
|
|
2078
|
+
/** @default 'Query' */
|
|
2079
|
+
query: string;
|
|
2080
|
+
/** @default 'Answer' */
|
|
2081
|
+
answer: string;
|
|
2082
|
+
};
|
|
2083
|
+
/**
|
|
2084
|
+
* Under the answer field: an edited answer is sent as plain text, and the service rebuilds its
|
|
2085
|
+
* structure. @default 'Plain text. Tables and charts are rebuilt after review.'
|
|
2086
|
+
*/
|
|
2087
|
+
answerHelper: string;
|
|
2088
|
+
/** Moves from the edit form to the changes; also the heading of that step. @default 'Review changes' */
|
|
2089
|
+
reviewChanges: string;
|
|
2090
|
+
/** Shown when Review changes finds no change. @default 'Change at least one field to review the changes.' */
|
|
2091
|
+
noChanges: string;
|
|
2092
|
+
/** Sends the edits. @default 'Submit changes' */
|
|
2093
|
+
submitEdits: string;
|
|
2094
|
+
/** The submit button while the edits are pending. @default 'Submitting…' */
|
|
2095
|
+
submitting: string;
|
|
2096
|
+
/** Returns from the changes to the edit form. @default 'Back to editing' */
|
|
2097
|
+
backToEdit: string;
|
|
2098
|
+
/** Leaves the edit without sending, and closes the reject dialog. @default 'Cancel' */
|
|
2099
|
+
cancel: string;
|
|
2100
|
+
/** The diff's title for the text before the edit. @default 'Before' */
|
|
2101
|
+
diffBefore: string;
|
|
2102
|
+
/** The diff's title for the text after the edit. @default 'After' */
|
|
2103
|
+
diffAfter: string;
|
|
2104
|
+
/** The name of one field's diff region. @default ({ field }) => `${field} changes` */
|
|
2105
|
+
diffRegion: (args: {
|
|
2106
|
+
field: string;
|
|
2107
|
+
}) => string;
|
|
2108
|
+
/** The reject dialog's title. @default 'Reject this answer?' */
|
|
2109
|
+
rejectTitle: string;
|
|
2110
|
+
/** The reject dialog's message. @default 'The reason is saved with the item.' */
|
|
2111
|
+
rejectMessage: string;
|
|
2112
|
+
/** The reject dialog's reason field. @default 'Reason' */
|
|
2113
|
+
reasonLabel: string;
|
|
2114
|
+
/** Shown on the reason field when it is empty (C-14). @default 'Enter a reason to continue.' */
|
|
2115
|
+
reasonRequired: string;
|
|
2116
|
+
/** Shown in the dialog when the rejection fails. @default "Couldn't reject the answer. Try again." */
|
|
2117
|
+
rejectError: string;
|
|
2118
|
+
/** Shown when the approval fails. @default "Couldn't approve the answer." */
|
|
2119
|
+
approveError: string;
|
|
2120
|
+
/** Shown when the edits fail. @default "Couldn't submit the changes." */
|
|
2121
|
+
editError: string;
|
|
2122
|
+
/** @default 'Try again' */
|
|
2123
|
+
retry: string;
|
|
2124
|
+
/** The summary after a decision; it is announced, and takes focus unless `focusOnResolve` is 'none'. */
|
|
2125
|
+
resolved: {
|
|
2126
|
+
/** @default 'Answer approved.' */
|
|
2127
|
+
approved: string;
|
|
2128
|
+
/** @default 'Changes submitted.' */
|
|
2129
|
+
edited: string;
|
|
2130
|
+
/** @default 'Answer rejected.' */
|
|
2131
|
+
rejected: string;
|
|
2132
|
+
};
|
|
2133
|
+
/** Shown instead of the decisions when the reviewer cannot decide. @default "You can't decide on this item." */
|
|
2134
|
+
blockedReason: string;
|
|
2135
|
+
/** The history entries' text, beside an icon per kind. */
|
|
2136
|
+
history: {
|
|
2137
|
+
/** @default 'Submitted' */
|
|
2138
|
+
submitted: string;
|
|
2139
|
+
/** @default 'Flagged' */
|
|
2140
|
+
flagged: string;
|
|
2141
|
+
/** @default 'Approved' */
|
|
2142
|
+
approved: string;
|
|
2143
|
+
/** @default 'Edited' */
|
|
2144
|
+
edited: string;
|
|
2145
|
+
/** @default 'Rejected' */
|
|
2146
|
+
rejected: string;
|
|
2147
|
+
/** An entry with who did it. @default ({ action, actor }) => `${action} by ${actor}` */
|
|
2148
|
+
byActor: (args: {
|
|
2149
|
+
action: string;
|
|
2150
|
+
actor: string;
|
|
2151
|
+
}) => string;
|
|
2152
|
+
/** An entry with its reason. @default ({ text, reason }) => `${text}: ${reason}` */
|
|
2153
|
+
withReason: (args: {
|
|
2154
|
+
text: string;
|
|
2155
|
+
reason: string;
|
|
2156
|
+
}) => string;
|
|
2157
|
+
};
|
|
2158
|
+
};
|
|
2159
|
+
/**
|
|
2160
|
+
* AIReviewQueueTemplate strings (`ai.reviewQueue.*`, H-25): the review queue around
|
|
2161
|
+
* AIReviewItem (the status filter, the search, the rows' extra text, the empty, filtered-empty
|
|
2162
|
+
* and error states, the announcements). Owner: workstream H. The item in the detail keeps
|
|
2163
|
+
* `ai.reviewItem`; the status names, the field names and the problem types are read from
|
|
2164
|
+
* `ai.reviewItem` and `ai.feedbackForm`, so one change reaches both.
|
|
2165
|
+
*
|
|
2166
|
+
* @since 2.13.0
|
|
2167
|
+
*/
|
|
2168
|
+
reviewQueue: {
|
|
2169
|
+
/** The status filter's legend. @default 'Status' */
|
|
2170
|
+
filterLabel: string;
|
|
2171
|
+
/**
|
|
2172
|
+
* A status filter option with its count (`statusCounts`, or counted from `items`); without a
|
|
2173
|
+
* count the option shows the status name alone. @default ({ label, count }) => `${label} (${count})`
|
|
2174
|
+
*/
|
|
2175
|
+
statusOption: (args: {
|
|
2176
|
+
label: string;
|
|
2177
|
+
count: number;
|
|
2178
|
+
}) => string;
|
|
2179
|
+
/** The search field's name and placeholder. @default 'Search questions' */
|
|
2180
|
+
search: string;
|
|
2181
|
+
/** Name and tooltip of the button that clears the search. @default 'Clear search' */
|
|
2182
|
+
clearSearch: string;
|
|
2183
|
+
/** Name and tooltip of the button that closes the detail drawer of a narrow queue. @default 'Back to the list' */
|
|
2184
|
+
back: string;
|
|
2185
|
+
/** Visually hidden text of the list while it loads. @default 'Loading answers' */
|
|
2186
|
+
loading: string;
|
|
2187
|
+
/** The name of the detail drawer of a narrow queue, and of the detail while it scrolls. @default 'Answer review' */
|
|
2188
|
+
detail: string;
|
|
2189
|
+
/** The detail while nothing is selected. @default 'Select an answer to review it.' */
|
|
2190
|
+
selectPrompt: string;
|
|
2191
|
+
/**
|
|
2192
|
+
* Announced after the search or the status filter changes: how many answers the list shows;
|
|
2193
|
+
* the English default picks the plural form with `Intl.PluralRules('en-US')`.
|
|
2194
|
+
* @default ({ count }) => 'No answers' (0), '1 answer' (one) or `${count} answers` (other)
|
|
2195
|
+
*/
|
|
2196
|
+
resultsCount: (args: {
|
|
2197
|
+
count: number;
|
|
2198
|
+
}) => string;
|
|
2199
|
+
/** The load-more button. @default 'Load more' */
|
|
2200
|
+
loadMore: string;
|
|
2201
|
+
/** The load-more button while more answers load. @default 'Loading more…' */
|
|
2202
|
+
loadingMore: string;
|
|
2203
|
+
/**
|
|
2204
|
+
* Announced when a load-more adds answers.
|
|
2205
|
+
* @default ({ count }) => '1 more answer loaded' (one) or `${count} more answers loaded` (other)
|
|
2206
|
+
*/
|
|
2207
|
+
moreLoaded: (args: {
|
|
2208
|
+
count: number;
|
|
2209
|
+
}) => string;
|
|
2210
|
+
/**
|
|
2211
|
+
* A row's number of user flags, beside a flag icon.
|
|
2212
|
+
* @default ({ count }) => '1 flag' (one) or `${count} flags` (other)
|
|
2213
|
+
*/
|
|
2214
|
+
flagCount: (args: {
|
|
2215
|
+
count: number;
|
|
2216
|
+
}) => string;
|
|
2217
|
+
/** The heading of the empty queue. @default 'No answers to review' */
|
|
2218
|
+
emptyTitle: string;
|
|
2219
|
+
/** The text of the empty queue. @default 'Flagged answers will appear here.' */
|
|
2220
|
+
emptyDescription: string;
|
|
2221
|
+
/** The heading when the search or the filter matches nothing (MICROCOPY, empty list). @default 'No results' */
|
|
2222
|
+
filteredEmptyTitle: string;
|
|
2223
|
+
/** The text when the search or the filter matches nothing. @default 'Try a different search term or clear filters.' */
|
|
2224
|
+
filteredEmptyDescription: string;
|
|
2225
|
+
/** Clears the search and the status filter. @default 'Clear filters' */
|
|
2226
|
+
clearFilters: string;
|
|
2227
|
+
/** The heading when the queue failed to load. @default "Couldn't load the review queue" */
|
|
2228
|
+
errorTitle: string;
|
|
2229
|
+
/** The text when the queue failed to load. @default 'Check your connection and try again.' */
|
|
2230
|
+
errorDescription: string;
|
|
2231
|
+
/** The retry button while the retry runs (its idle text is `ai.common.tryAgain`). @default 'Trying again…' */
|
|
2232
|
+
retrying: string;
|
|
2233
|
+
/**
|
|
2234
|
+
* Announced after a decision when the queue moves on: the item's summary
|
|
2235
|
+
* (`ai.reviewItem.resolved.*`) and how many answers the list still shows.
|
|
2236
|
+
* @default ({ resolved, count }) => `${resolved} The list is empty.` (0), `${resolved} 1 answer left in the list.` (one) or `${resolved} ${count} answers left in the list.` (other)
|
|
2237
|
+
*/
|
|
2238
|
+
afterDecision: (args: {
|
|
2239
|
+
resolved: string;
|
|
2240
|
+
count: number;
|
|
2241
|
+
}) => string;
|
|
2242
|
+
};
|
|
2243
|
+
/**
|
|
2244
|
+
* AICopilotPattern strings (`ai.copilotPattern.*`, H-29): the names of the regions the pattern
|
|
2245
|
+
* adds around its organisms (ADR-12 (3): region labels come from strings). Owner: workstream H.
|
|
2246
|
+
* The organisms inside keep their own groups (`ai.insightEngine`, `ai.chatThread`, ...).
|
|
2247
|
+
*
|
|
2248
|
+
* @since 2.13.0
|
|
2249
|
+
*/
|
|
2250
|
+
copilotPattern: {
|
|
2251
|
+
/**
|
|
2252
|
+
* The name of the group around the app's controls in the panel header
|
|
2253
|
+
* (`renderHeaderActions`). @default 'Conversation actions'
|
|
2254
|
+
*/
|
|
2255
|
+
headerActions: string;
|
|
2256
|
+
};
|
|
2257
|
+
/**
|
|
2258
|
+
* AIChatWelcome strings (`ai.chatWelcome.*`): the AI start screen shown before the first
|
|
2259
|
+
* message (both variants, `'showcase'` and `'context'`). Owner: workstream G. The component
|
|
2260
|
+
* holds no literal; a per-instance prop (`greeting`, `disclaimer`) wins.
|
|
2261
|
+
*
|
|
2262
|
+
* @since 2.13.0
|
|
2263
|
+
*/
|
|
2264
|
+
chatWelcome: {
|
|
2265
|
+
/** The greeting heading without a user name. @default 'How can I help you today?' */
|
|
2266
|
+
greeting: string;
|
|
2267
|
+
/** The greeting heading with the user's name (`userName`). @default ({ name }) => `Hi ${name}, how can I help you today?` */
|
|
2268
|
+
greetingWithName: (args: {
|
|
2269
|
+
name: string;
|
|
2270
|
+
}) => string;
|
|
2271
|
+
/** The name of the suggestion list (the showcase cards, the docked pills). @default 'Suggestions' */
|
|
2272
|
+
suggestionsLabel: string;
|
|
2273
|
+
/** The heading of the recent threads section (context). @default 'Continue' */
|
|
2274
|
+
continueTitle: string;
|
|
2275
|
+
/** The heading of the proactive updates section (context). @default 'New since yesterday' */
|
|
2276
|
+
updatesTitle: string;
|
|
2277
|
+
/** The heading of the category chips section (context). @default 'Try asking' */
|
|
2278
|
+
tryAskingTitle: string;
|
|
2279
|
+
/** The name of the scope chips' group on the composer (context). @default 'Scope' */
|
|
2280
|
+
scopeLabel: string;
|
|
2281
|
+
/** A scope chip's text: its label and value. @default ({ label, value }) => `${label}: ${value}` */
|
|
2282
|
+
scopeItem: (args: {
|
|
2283
|
+
label: string;
|
|
2284
|
+
value: string;
|
|
2285
|
+
}) => string;
|
|
2286
|
+
/** The disclaimer line of the showcase variant. @default 'AI can make mistakes. Check important information.' */
|
|
2287
|
+
disclaimer: string;
|
|
2288
|
+
/** The trust note of the context variant. @default 'Answers cite your sources. Check important information.' */
|
|
2289
|
+
trustNote: string;
|
|
2290
|
+
/** The usage guidelines link after the disclaimer (with `guidelinesHref`). @default 'Usage guidelines' */
|
|
2291
|
+
guidelinesLink: string;
|
|
2292
|
+
};
|
|
2293
|
+
}
|
|
2294
|
+
//# sourceMappingURL=hitl.d.ts.map
|