@mgamadeus/ddd-agents 0.0.1-stage → 0.1.0-alpha.21
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/README.md +11 -3
- package/dist/chat.js +5263 -0
- package/dist/chat.js.map +1 -0
- package/dist/chunks/AgentsConversationClientContext-C4T7g_Qk.js +22 -0
- package/dist/chunks/AgentsConversationClientContext-C4T7g_Qk.js.map +1 -0
- package/dist/chunks/ConversationMarkdown-W7NHglmL.js +399 -0
- package/dist/chunks/ConversationMarkdown-W7NHglmL.js.map +1 -0
- package/dist/chunks/WebSearchResultsConversationWidget-BvnLWHyi.js +5059 -0
- package/dist/chunks/WebSearchResultsConversationWidget-BvnLWHyi.js.map +1 -0
- package/dist/chunks/canvas-behaviours-BRFR1ALE.js +45 -0
- package/dist/chunks/canvas-behaviours-BRFR1ALE.js.map +1 -0
- package/dist/chunks/canvas-feature-flags-BmmxC3bz.js +11 -0
- package/dist/chunks/canvas-feature-flags-BmmxC3bz.js.map +1 -0
- package/dist/chunks/canvasBodies-9SuF6NAB.js +289 -0
- package/dist/chunks/canvasBodies-9SuF6NAB.js.map +1 -0
- package/dist/chunks/d3-7.6.1.min.js-DTmPafrl.js +6 -0
- package/dist/chunks/d3-7.6.1.min.js-DTmPafrl.js.map +1 -0
- package/dist/chunks/decide-canvas-open-Ct-wnNEJ.js +20 -0
- package/dist/chunks/decide-canvas-open-Ct-wnNEJ.js.map +1 -0
- package/dist/chunks/widget-image-readiness-signal-DeOuL89j.js +25 -0
- package/dist/chunks/widget-image-readiness-signal-DeOuL89j.js.map +1 -0
- package/dist/chunks/widget-name-resolver-DyIY6Zu4.js +9736 -0
- package/dist/chunks/widget-name-resolver-DyIY6Zu4.js.map +1 -0
- package/dist/chunks/withPollingChangeSubscription-BLDAWF-o.js +251 -0
- package/dist/chunks/withPollingChangeSubscription-BLDAWF-o.js.map +1 -0
- package/dist/client-testing.js +346 -0
- package/dist/client-testing.js.map +1 -0
- package/dist/client.js +16 -0
- package/dist/client.js.map +1 -0
- package/dist/contract.js +31 -0
- package/dist/contract.js.map +1 -0
- package/dist/image-render.js +334 -0
- package/dist/image-render.js.map +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/kit.js +13 -0
- package/dist/kit.js.map +1 -0
- package/dist/preview.js +733 -0
- package/dist/preview.js.map +1 -0
- package/dist/renderer.js +115 -0
- package/dist/renderer.js.map +1 -0
- package/dist/styles.css +6768 -0
- package/dist/types/chat/AgentChat/AgentChat.d.ts +37 -0
- package/dist/types/chat/AgentChatActivityHistory/AgentChatActivityHistory.d.ts +6 -0
- package/dist/types/chat/AgentChatActivityIndicator/AgentChatActivityIndicator.d.ts +8 -0
- package/dist/types/chat/CanvasPane/CanvasPane.d.ts +15 -0
- package/dist/types/chat/CanvasResizeHandle/CanvasResizeHandle.d.ts +10 -0
- package/dist/types/chat/CanvasResizeHandle/use-canvas-resize.d.ts +43 -0
- package/dist/types/chat/ConversationClosedBar/ConversationClosedBar.d.ts +10 -0
- package/dist/types/chat/ConversationErrorCard/ConversationErrorCard.d.ts +13 -0
- package/dist/types/chat/ConversationIntroCard/ConversationIntroCard.d.ts +10 -0
- package/dist/types/chat/ConversationLoadingStates.d.ts +2 -0
- package/dist/types/chat/ConversationMessage/ConversationCallMarkerChip/ConversationCallMarkerChip.d.ts +14 -0
- package/dist/types/chat/ConversationMessage/ConversationCallMarkerChip/VoiceBarsIcon/VoiceBarsIcon.d.ts +8 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageSystem/ConversationMessageSystem.d.ts +8 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageSystem/ConversationMessageSystemHeader/ConversationMessageSystemHeader.d.ts +9 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageUser/ConversationMessageUser.d.ts +7 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageUser/ConversationMessageUserWidgets.d.ts +14 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/ConversationMessageHeader/ConversationMessageHeader.d.ts +7 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/ConversationMessageThinking/ConversationMessageThinking.d.ts +7 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/ConversationMessageWidgets.d.ts +29 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/copyRichToClipboard.d.ts +1 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/hooks/useFreshMessageBlockReveal.d.ts +14 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/hooks/useStreamingText.d.ts +8 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/hooks/useTypewriter.d.ts +12 -0
- package/dist/types/chat/ConversationMessage/ConversationTaskInstructionDisclosure/ConversationTaskInstructionDisclosure.d.ts +12 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInput.d.ts +111 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputAttachments/ConversationMessageInputAttachmentPreviewCard.d.ts +34 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputAttachments/ConversationMessageInputAttachmentsErrorBox.d.ts +22 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputAttachments/ConversationMessageInputAttachmentsPreviewStrip.d.ts +12 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputAttachments/convert-bytes-to-size-string.d.ts +2 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputComposerWidgets/ConversationMessageInputComposerWidgets.d.ts +12 -0
- package/dist/types/chat/ConversationMessageList/ConversationMessageList.d.ts +75 -0
- package/dist/types/chat/ConversationScrollToLatestMessageButton/ConversationScrollToLatestMessageButton.d.ts +6 -0
- package/dist/types/chat/ConversationSuggestionCard/ConversationSuggestionCard.d.ts +7 -0
- package/dist/types/chat/ConversationView.d.ts +216 -0
- package/dist/types/chat/ConversationViewBody/ConversationViewBody.d.ts +214 -0
- package/dist/types/chat/ConversationViewBody/hooks/useIsMessagesBottomOutOfView.d.ts +2 -0
- package/dist/types/chat/ConversationViewBody/hooks/usePinQuestionOnSend.d.ts +24 -0
- package/dist/types/chat/assistant-message-has-renderable-markdown.d.ts +13 -0
- package/dist/types/chat/chat-assistant-identity.d.ts +24 -0
- package/dist/types/chat/chat-message.d.ts +11 -0
- package/dist/types/chat/controller/AgentChatController.d.ts +97 -0
- package/dist/types/chat/controller/activity-ticker.d.ts +120 -0
- package/dist/types/chat/controller/changed-messages-request.d.ts +12 -0
- package/dist/types/chat/controller/chat-scroll-target.d.ts +10 -0
- package/dist/types/chat/controller/conversation-change-signal-rules.d.ts +64 -0
- package/dist/types/chat/controller/derive-agent-activity.d.ts +31 -0
- package/dist/types/chat/controller/merge-activity-elements.d.ts +25 -0
- package/dist/types/chat/controller/pending-start-request.d.ts +38 -0
- package/dist/types/chat/controller/use-activity-ticker.d.ts +60 -0
- package/dist/types/chat/controller/use-conversation-activity.d.ts +38 -0
- package/dist/types/chat/controller/use-conversation-live-updates.d.ts +30 -0
- package/dist/types/chat/controller/use-conversation-message-pages.d.ts +24 -0
- package/dist/types/chat/controller/use-conversation-scroll-jump.d.ts +47 -0
- package/dist/types/chat/controller/use-conversation-search.d.ts +31 -0
- package/dist/types/chat/controller/use-conversation-signals.d.ts +44 -0
- package/dist/types/chat/controller/use-debounced-semantic-search.d.ts +15 -0
- package/dist/types/chat/conversation-send-message.d.ts +43 -0
- package/dist/types/chat/last-wire-message-is-unanswered-user-message.d.ts +22 -0
- package/dist/types/chat/normalize-server-message-to-markdown.d.ts +23 -0
- package/dist/types/chat/store/agents-chat-state.d.ts +132 -0
- package/dist/types/chat/store/conversation-error-type.d.ts +32 -0
- package/dist/types/chat/store/create-agents-chat-store.d.ts +23 -0
- package/dist/types/chat/store/index.d.ts +5 -0
- package/dist/types/chat/store/merge-chat-messages.d.ts +20 -0
- package/dist/types/chat/store/reduce-agents-chat-state.d.ts +7 -0
- package/dist/types/chat/store/use-agents-chat-store.d.ts +22 -0
- package/dist/types/chat/strip-pre-call-message-marker.d.ts +12 -0
- package/dist/types/chat/use-canvas-shell-transitions.d.ts +25 -0
- package/dist/types/client/AgentsConversationClient.d.ts +93 -0
- package/dist/types/client/AgentsConversationClientContext.d.ts +17 -0
- package/dist/types/client/polling/createPollingConversationChangeSubscription.d.ts +62 -0
- package/dist/types/client/polling/withPollingChangeSubscription.d.ts +11 -0
- package/dist/types/client/testing/createInMemoryAgentsConversationClient.d.ts +139 -0
- package/dist/types/contract/conversation.d.ts +370 -0
- package/dist/types/entries/chat.d.ts +21 -0
- package/dist/types/entries/client-testing.d.ts +1 -0
- package/dist/types/entries/client.d.ts +4 -0
- package/dist/types/entries/contract.d.ts +1 -0
- package/dist/types/entries/image-render.d.ts +9 -0
- package/dist/types/entries/index.d.ts +9 -0
- package/dist/types/entries/kit.d.ts +4 -0
- package/dist/types/entries/preview.d.ts +8 -0
- package/dist/types/entries/renderer.d.ts +15 -0
- package/dist/types/entries/widgets.d.ts +16 -0
- package/dist/types/image-render/ComposedViewEmailDataTimes/ComposedViewEmailDataTimes.d.ts +15 -0
- package/dist/types/image-render/WidgetImageRender.d.ts +55 -0
- package/dist/types/image-render/WidgetImageRenderContext.d.ts +14 -0
- package/dist/types/image-render/composed-view-data-times.d.ts +20 -0
- package/dist/types/image-render/frozen-widget-requests.d.ts +2 -0
- package/dist/types/image-render/live-widget-requests.d.ts +4 -0
- package/dist/types/image-render/widget-image-google-map.d.ts +7 -0
- package/dist/types/image-render/widget-image-readiness-signal.d.ts +16 -0
- package/dist/types/image-render/widget-image-readiness.d.ts +9 -0
- package/dist/types/image-render/widget-image-render.types.d.ts +47 -0
- package/dist/types/kit/ComposedViewConversationWidget.d.ts +14 -0
- package/dist/types/kit/ComposedViewDataSourceLoader.d.ts +20 -0
- package/dist/types/kit/ComposedViewRenderer.d.ts +30 -0
- package/dist/types/kit/ComposedViewSlotErrorBoundary.d.ts +23 -0
- package/dist/types/kit/ModelText/ModelText.d.ts +12 -0
- package/dist/types/kit/components/embedding/EmbeddedConversationWidget.d.ts +26 -0
- package/dist/types/kit/components/map/map-full-screen-instance.d.ts +26 -0
- package/dist/types/kit/components/map/map-presentation-context.d.ts +8 -0
- package/dist/types/kit/components/text/shared/text-node-values.d.ts +39 -0
- package/dist/types/kit/composed-view-component-types.d.ts +61 -0
- package/dist/types/kit/composed-view-components.d.ts +7 -0
- package/dist/types/kit/composed-view-tones.d.ts +20 -0
- package/dist/types/kit/entity-detail/EntityDetailCanvasBody.d.ts +9 -0
- package/dist/types/kit/entity-detail/entity-detail-bodies.d.ts +32 -0
- package/dist/types/kit/entity-detail/entity-detail-name.d.ts +9 -0
- package/dist/types/kit/hooks/use-debounced-value.d.ts +2 -0
- package/dist/types/kit/map-full-screen/MapFullScreenCanvasBody.d.ts +11 -0
- package/dist/types/preview/WidgetPreviewHost.d.ts +20 -0
- package/dist/types/preview/preview-stub-components.d.ts +3 -0
- package/dist/types/preview/widget-preview-fixtures.d.ts +17 -0
- package/dist/types/preview/widget-preview-hydration.d.ts +10 -0
- package/dist/types/preview/widget-preview-readiness.d.ts +27 -0
- package/dist/types/preview/widget-preview-requests.d.ts +16 -0
- package/dist/types/preview/widget-preview-signal.d.ts +10 -0
- package/dist/types/preview/widget-preview.types.d.ts +134 -0
- package/dist/types/provider/AgentsProvider.d.ts +33 -0
- package/dist/types/provider/class-names.d.ts +7 -0
- package/dist/types/provider/components/default-components.d.ts +3 -0
- package/dist/types/provider/components/icon-names.d.ts +9 -0
- package/dist/types/provider/components/index.d.ts +39 -0
- package/dist/types/provider/components/types.d.ts +463 -0
- package/dist/types/provider/environment.d.ts +262 -0
- package/dist/types/provider/index.d.ts +4 -0
- package/dist/types/renderer/ConversationDeepLinkedWidget.d.ts +18 -0
- package/dist/types/renderer/ConversationMarkdown.d.ts +21 -0
- package/dist/types/renderer/ConversationWidgetActions/ConversationWidgetActions.d.ts +7 -0
- package/dist/types/renderer/ConversationWidgetCallbacksContext.d.ts +234 -0
- package/dist/types/renderer/ConversationWidgetContext.d.ts +32 -0
- package/dist/types/renderer/ConversationWidgetErrorBoundary.d.ts +25 -0
- package/dist/types/renderer/ConversationWidgetHost.d.ts +36 -0
- package/dist/types/renderer/ConversationWidgetRenderContext.d.ts +3 -0
- package/dist/types/renderer/MarkdownLink.d.ts +6 -0
- package/dist/types/renderer/WindowedWidget/WindowedWidget.d.ts +16 -0
- package/dist/types/renderer/_access/ConversationWidgetFeatureGate.d.ts +21 -0
- package/dist/types/renderer/_agent-space/ConversationWidgetAgentSpaceFrame.d.ts +12 -0
- package/dist/types/renderer/_agent-space/ConversationWidgetAgentSpaceHeader.d.ts +15 -0
- package/dist/types/renderer/_agent-space/agent-space-name.hydrator.d.ts +7 -0
- package/dist/types/renderer/_agent-space/declared-agent-space-key-field-name.d.ts +8 -0
- package/dist/types/renderer/_agent-space/use-resolved-conversation-widget-agent-space-key.d.ts +16 -0
- package/dist/types/renderer/_agent-space/widget-agent-space-key-attribute.d.ts +13 -0
- package/dist/types/renderer/balanced-json-object.d.ts +12 -0
- package/dist/types/renderer/canvas/CanvasRestoreOnMount.d.ts +19 -0
- package/dist/types/renderer/canvas/canvas-behaviours.d.ts +84 -0
- package/dist/types/renderer/canvas/canvas-body-props.d.ts +18 -0
- package/dist/types/renderer/canvas/canvas-feature-flags.d.ts +11 -0
- package/dist/types/renderer/canvas/canvas-reducers.d.ts +46 -0
- package/dist/types/renderer/canvas/canvas-state.d.ts +107 -0
- package/dist/types/renderer/canvas/canvasBodies.d.ts +19 -0
- package/dist/types/renderer/canvas/canvasStorage.d.ts +25 -0
- package/dist/types/renderer/canvas/decide-canvas-open.d.ts +32 -0
- package/dist/types/renderer/canvas/entity-detail-instance.d.ts +27 -0
- package/dist/types/renderer/canvas/find-widget-fences-in-markdown.d.ts +32 -0
- package/dist/types/renderer/canvas/use-anchor-widget-payload.d.ts +8 -0
- package/dist/types/renderer/composer-widget-fence.d.ts +30 -0
- package/dist/types/renderer/conversation-composer-widget.d.ts +13 -0
- package/dist/types/renderer/conversation-widget-props.d.ts +54 -0
- package/dist/types/renderer/conversation-widget-state-partition.d.ts +31 -0
- package/dist/types/renderer/conversationWidgetAstPlugin.d.ts +11 -0
- package/dist/types/renderer/conversationWidgetRegistry.d.ts +74 -0
- package/dist/types/renderer/detect-unrendered-widgets.d.ts +42 -0
- package/dist/types/renderer/markdown-contains-widget.d.ts +13 -0
- package/dist/types/renderer/reference-naked-widget-json.d.ts +1 -0
- package/dist/types/renderer/remarkWidgetFencePlugin.d.ts +22 -0
- package/dist/types/renderer/render-report/widget-render-report-collector.d.ts +57 -0
- package/dist/types/renderer/render-report/widget-render-report.d.ts +29 -0
- package/dist/types/renderer/repair-malformed-widget-fences.d.ts +11 -0
- package/dist/types/renderer/resolve-deep-linkable-widget.d.ts +25 -0
- package/dist/types/renderer/restoreTextDirectivesPlugin.d.ts +12 -0
- package/dist/types/renderer/widget-click-signal-sources.d.ts +15 -0
- package/dist/types/renderer/widget-fence-json.d.ts +16 -0
- package/dist/types/renderer/widget-fence-syntax.d.ts +25 -0
- package/dist/types/renderer/widget-hydration/index.d.ts +8 -0
- package/dist/types/renderer/widget-hydration/section-hydration.d.ts +41 -0
- package/dist/types/renderer/widget-hydration/use-widget-hydration.d.ts +27 -0
- package/dist/types/renderer/widget-hydration/widget-hydration-state-store.d.ts +27 -0
- package/dist/types/renderer/widget-hydration/widget-hydration.reducer.d.ts +39 -0
- package/dist/types/renderer/widget-hydration/widget-hydration.registry.d.ts +7 -0
- package/dist/types/renderer/widget-hydration/widget-hydration.slice.d.ts +8 -0
- package/dist/types/renderer/widget-hydration/widget-hydration.types.d.ts +27 -0
- package/dist/types/renderer/widget-name-resolver.d.ts +22 -0
- package/dist/types/renderer/widget-tree/bounded-json.d.ts +23 -0
- package/dist/types/renderer/widget-tree/composed-node-schema.d.ts +143 -0
- package/dist/types/renderer/widget-tree/composed-view-data-sources.d.ts +41 -0
- package/dist/types/renderer/widget-tree/composed-view-tree.d.ts +111 -0
- package/dist/types/renderer/widget-tree/expression/evaluate-expression.d.ts +65 -0
- package/dist/types/renderer/widget-tree/expression/parse-expression.d.ts +71 -0
- package/dist/types/renderer/widget-tree/resolve-composed-view-values.d.ts +49 -0
- package/dist/types/renderer/widget-tree/use-composed-view-state.d.ts +16 -0
- package/dist/types/renderer/widget-windowing.d.ts +25 -0
- package/dist/types/widgets/CanvasWidgetCard/CanvasWidgetCard.d.ts +79 -0
- package/dist/types/widgets/CanvasWidgetCard/CanvasWidgetSwitch.d.ts +61 -0
- package/dist/types/widgets/CanvasWidgetCard/canvas-for-message-widget.d.ts +8 -0
- package/dist/types/widgets/CanvasWidgetCard/use-canvas-viable.d.ts +15 -0
- package/dist/types/widgets/ClockConversationWidget/ClockConversationWidget.d.ts +11 -0
- package/dist/types/widgets/ClockConversationWidget/ClockWidget/AnalogClockFace.d.ts +12 -0
- package/dist/types/widgets/ClockConversationWidget/ClockWidget/ClockRow.d.ts +23 -0
- package/dist/types/widgets/ClockConversationWidget/ClockWidget/ClockWidget.d.ts +21 -0
- package/dist/types/widgets/ClockConversationWidget/ClockWidget/DayNightGlyph.d.ts +8 -0
- package/dist/types/widgets/ClockConversationWidget/shared/clock-time.d.ts +52 -0
- package/dist/types/widgets/ClockConversationWidget/shared/clock-widget-payload.d.ts +23 -0
- package/dist/types/widgets/ClockConversationWidget/shared/use-clock-settings.d.ts +18 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/ConceptExplainerConversationWidget.d.ts +14 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/ConceptExplainerWidget/ConceptExplainerWidget.d.ts +27 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/ConceptExplainerTextView.d.ts +11 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/concept-explainer-type.d.ts +89 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/concept-explainer-types.d.ts +17 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/concept-explainer-widget-payload.d.ts +25 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/use-concept-explainer-language.d.ts +8 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/ConversationSearchResultsCanvas.d.ts +9 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/ConversationSearchResultsCanvasBody.d.ts +7 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/ConversationSearchResultsConversationWidget.d.ts +15 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/shared/conversation-search-results-widget-payload.d.ts +42 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/shared/search-hit-excerpt.d.ts +1 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/CurrencyConverterConversationWidget.d.ts +8 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/CurrencyConverterWidget/CurrencyConverterWidget.d.ts +17 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/CurrencyConverterWidget/CurrencyLabel/CurrencyLabel.d.ts +9 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/shared/currency-converter-widget-payload.d.ts +22 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/shared/currency-display.d.ts +30 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/CustomVisualizationConversationWidget.d.ts +11 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/CustomVisualizationWidget/CustomVisualizationFrame.d.ts +14 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/CustomVisualizationWidget/CustomVisualizationWidget.d.ts +15 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/custom-visualization-frame-protocol.d.ts +77 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/custom-visualization-libraries.d.ts +25 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/custom-visualization-sandbox-config.d.ts +21 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/custom-visualization-widget-payload.d.ts +55 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/read-custom-visualization-theme.d.ts +5 -0
- package/dist/types/widgets/EntityMentionConversationWidget/EntityMentionAskButton/EntityMentionAskButton.d.ts +13 -0
- package/dist/types/widgets/EntityMentionConversationWidget/EntityMentionCard/EntityMentionCard.d.ts +11 -0
- package/dist/types/widgets/EntityMentionConversationWidget/EntityMentionConversationWidget.d.ts +9 -0
- package/dist/types/widgets/EntityMentionConversationWidget/shared/entity-mention-presentation.d.ts +4 -0
- package/dist/types/widgets/EntityMentionConversationWidget/shared/entity-mention.d.ts +33 -0
- package/dist/types/widgets/EntityMentionConversationWidget/shared/use-entity-mention-composer.d.ts +17 -0
- package/dist/types/widgets/MultiChoiceConversationWidget/MultiChoiceConversationWidget.d.ts +2 -0
- package/dist/types/widgets/MultiChoiceConversationWidget/shared/multi-choice-widget-payload.d.ts +16 -0
- package/dist/types/widgets/QuickRepliesConversationWidget/QuickRepliesConversationWidget.d.ts +38 -0
- package/dist/types/widgets/QuickRepliesConversationWidget/shared/quick-replies-widget-payload.d.ts +20 -0
- package/dist/types/widgets/SuggestedActions/SuggestedActions.d.ts +10 -0
- package/dist/types/widgets/ToolTraceConversationWidget/ToolTraceConversationWidget.d.ts +8 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/SourceFavicon.d.ts +10 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchAnswer.d.ts +6 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchReferences.d.ts +12 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchResultsCanvas.d.ts +10 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchResultsCanvasBody.d.ts +7 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchResultsConversationWidget.d.ts +14 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchSourcesList.d.ts +10 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/shared/display-hostname.d.ts +9 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/shared/web-search-results-widget-payload.d.ts +30 -0
- package/dist/types/widgets/WritingDraftConversationWidget/WritingDraftConversationWidget.d.ts +14 -0
- package/dist/types/widgets/WritingDraftConversationWidget/WritingDraftWidget/WritingDraftBody.d.ts +9 -0
- package/dist/types/widgets/WritingDraftConversationWidget/WritingDraftWidget/WritingDraftWidget.d.ts +44 -0
- package/dist/types/widgets/WritingDraftConversationWidget/shared/draft-mail-link.d.ts +17 -0
- package/dist/types/widgets/WritingDraftConversationWidget/shared/draft-plain-text.d.ts +7 -0
- package/dist/types/widgets/WritingDraftConversationWidget/shared/remark-draft-line-breaks.d.ts +13 -0
- package/dist/types/widgets/WritingDraftConversationWidget/shared/writing-draft-widget-payload.d.ts +23 -0
- package/dist/types/widgets/_shared/ConversationWidgetButton.d.ts +4 -0
- package/dist/types/widgets/_shared/DonePill.d.ts +14 -0
- package/dist/types/widgets/_shared/modern/WidgetKpiValue.d.ts +24 -0
- package/dist/types/widgets/_shared/modern/WidgetListRow.d.ts +14 -0
- package/dist/types/widgets/_shared/modern/WidgetStatusChip.d.ts +8 -0
- package/dist/types/widgets/_shared/modern/WidgetSurface.d.ts +13 -0
- package/dist/types/widgets/_shared/modern/WidgetSurfaceSkeleton.d.ts +11 -0
- package/dist/types/widgets/_shared/modern/index.d.ts +16 -0
- package/dist/types/widgets/_shared/skeleton-primitives.d.ts +20 -0
- package/dist/types/widgets/_shared/use-stack-when-wrapped.d.ts +6 -0
- package/dist/types/widgets/_shared/widget-payload-validation.d.ts +22 -0
- package/dist/widgets.js +84 -0
- package/dist/widgets.js.map +1 -0
- package/package.json +120 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.js","sources":["../src/preview/preview-stub-components.tsx","../src/renderer/_agent-space/declared-agent-space-key-field-name.ts","../src/preview/widget-preview-fixtures.ts","../src/preview/WidgetPreviewHost.tsx","../src/preview/widget-preview-signal.ts","../src/preview/widget-preview-readiness.ts","../src/preview/widget-preview-requests.ts","../src/preview/widget-preview-hydration.ts"],"sourcesContent":["import { Text } from \"../provider/components\";\nimport type {\n ComposedViewComponentDefinition,\n ComposedViewComponentProps,\n} from \"../kit/composed-view-component-types\";\nimport {\n buildComposedViewComponentRegistry,\n composedViewComponents,\n} from \"../kit/composed-view-components\";\nimport { WidgetSurface } from \"../widgets/_shared/modern\";\nimport styles from \"./WidgetPreview.module.scss\";\n\n/**\n * Stand-ins for kit node types that have a schema but no component yet — only the preview uses\n * them, and only for a fixture that asks (`stubComposedViewComponents`). A real component always wins.\n */\nconst formatDuration = (durationSeconds: unknown): string | null => {\n if (typeof durationSeconds !== \"number\" || !Number.isFinite(durationSeconds) || durationSeconds < 0) return null;\n const minutes = Math.floor(durationSeconds / 60);\n const seconds = Math.floor(durationSeconds % 60);\n return `${minutes}:${String(seconds).padStart(2, \"0\")}`;\n};\n\nconst StubVideo = ({ props }: ComposedViewComponentProps) => {\n const duration = formatDuration(props.durationSeconds);\n return (\n <WidgetSurface level=\"flat\" compact>\n <div className={styles.stubVideo}>\n {typeof props.thumbnail === \"string\" ? (\n <img className={styles.stubVideoThumbnail} src={props.thumbnail} alt=\"\" />\n ) : null}\n <div className={styles.stubVideoText}>\n <Text role=\"body\" weight=\"bold\" translate={false}>\n {typeof props.title === \"string\" ? props.title : \"\"}\n </Text>\n <Text role=\"caption\" color=\"var(--agents-fg-light)\" translate={false}>\n {[typeof props.channel === \"string\" ? props.channel : null, duration].filter(Boolean).join(\" · \")}\n </Text>\n </div>\n </div>\n </WidgetSurface>\n );\n};\n\nconst PREVIEW_STUB_COMPONENTS: ComposedViewComponentDefinition[] = [{ nodeType: \"Video\", component: StubVideo }];\n\n/** The folder registry with a stub for every node type that has no component of its own. */\nexport const buildPreviewComposedViewComponents = () =>\n buildComposedViewComponentRegistry([\n ...Object.values(composedViewComponents),\n ...PREVIEW_STUB_COMPONENTS.filter(\n (stub) => !Object.prototype.hasOwnProperty.call(composedViewComponents, stub.nodeType),\n ),\n ]);\n","import {\n DEFAULT_WIDGET_SELF_HYDRATION_KEY_FIELD_NAME,\n getWidgetSelfHydrationKeyFieldName,\n} from \"../../provider/environment\";\n\nconst DEFAULT_FIELD_NAME_PATTERN = new RegExp(`\\\\b${DEFAULT_WIDGET_SELF_HYDRATION_KEY_FIELD_NAME}\\\\b`, \"g\");\n\n/**\n * A fixture of the package as the app reads it. The package's fixtures name the key of a block's agent space with the\n * package default field (`agentSpaceId`): as a key of an object, as a field in a block's JSON, as an attribute of a\n * block's markdown. An app that declares another field name (`AgentsEnvironment.widgetSelfHydrationKeyFieldName`)\n * reads every occurrence under its own name, so a fixture is mapped once, when it is loaded. Without a declaration\n * the fixture is returned as it is.\n */\nexport const mapFixtureToDeclaredAgentSpaceKeyFieldName = <Fixture>(fixture: Fixture): Fixture => {\n const declaredFieldName = getWidgetSelfHydrationKeyFieldName();\n if (declaredFieldName === DEFAULT_WIDGET_SELF_HYDRATION_KEY_FIELD_NAME || fixture === undefined) return fixture;\n return JSON.parse(JSON.stringify(fixture).replace(DEFAULT_FIELD_NAME_PATTERN, declaredFieldName)) as Fixture;\n};\n","import { mapFixtureToDeclaredAgentSpaceKeyFieldName } from \"../renderer/_agent-space/declared-agent-space-key-field-name\";\nimport type { WidgetPreviewFixture, WidgetPreviewFixtureFile } from \"./widget-preview.types\";\n\n/**\n * Every `*.preview-fixtures.json` below the package's `widgets/` and `kit/`, by wire name — read by folder glob, so the\n * fixtures of a widget are added as one new file next to it; an app adds the fixtures of its widgets with\n * `registerWidgetPreviewFixtureFiles`. Imports nothing from the app, so the preview entry can read it before the\n * request transport is installed.\n */\nconst fixtureModules = import.meta.glob<WidgetPreviewFixtureFile>(\n [\"../widgets/**/*.preview-fixtures.json\", \"../kit/**/*.preview-fixtures.json\"],\n {\n eager: true,\n import: \"default\",\n },\n);\n\nconst sortByWireName = (fixtureFiles: WidgetPreviewFixtureFile[]): WidgetPreviewFixtureFile[] =>\n fixtureFiles.sort((first, second) => first.wireName.localeCompare(second.wireName));\n\n/** Every fixture file, sorted by wire name; filled in place by `registerWidgetPreviewFixtureFiles`. */\nexport const widgetPreviewFixtureFiles: WidgetPreviewFixtureFile[] = sortByWireName(Object.values(fixtureModules));\n\n/** Adds an app's fixture files (its glob stays in its code). Runs before the preview reads a fixture. */\nexport const registerWidgetPreviewFixtureFiles = (fixtureFiles: readonly WidgetPreviewFixtureFile[]): void => {\n widgetPreviewFixtureFiles.push(...fixtureFiles);\n sortByWireName(widgetPreviewFixtureFiles);\n};\n\n/**\n * The fixtures of a widget from EVERY file naming it — a `ComposedView` component can add its own file next to it\n * instead of editing the widget's — or an empty list. A fixture an app registers under the name of a package fixture\n * of the same widget replaces it in place (an app's copy with its own entity types and endpoints). Each is read under\n * the agent space key field the app declares (`mapFixtureToDeclaredAgentSpaceKeyFieldName`; the package's files name\n * `agentSpaceId`), at call time: an app installs its environment after this module is loaded.\n */\nexport const findWidgetPreviewFixtures = (widgetName: string): readonly WidgetPreviewFixture[] => {\n const fixturesByName = new Map<string, WidgetPreviewFixture>();\n for (const fixtureFile of widgetPreviewFixtureFiles) {\n if (fixtureFile.wireName !== widgetName) continue;\n for (const fixture of fixtureFile.fixtures) fixturesByName.set(fixture.name, fixture);\n }\n return [...fixturesByName.values()].map(mapFixtureToDeclaredAgentSpaceKeyFieldName);\n};\n\n/** One named fixture, or undefined. */\nexport const findWidgetPreviewFixture = (widgetName: string, fixtureName: string): WidgetPreviewFixture | undefined =>\n findWidgetPreviewFixtures(widgetName).find((fixture) => fixture.name === fixtureName);\n\n/** The fence the fixture stands for — what a canvas body re-reads as its anchor message. */\nexport const buildWidgetPreviewFence = (widgetName: string, fixture: WidgetPreviewFixture): string =>\n \"```widget\\n\" + JSON.stringify({ type: widgetName, ...fixture.payload }) + \"\\n```\";\n","import { Text } from \"../provider/components\";\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { conversationWidgetRegistry } from \"../renderer/conversationWidgetRegistry\";\nimport { resolveWidgetName } from \"../renderer/widget-name-resolver\";\nimport {\n buildWidgetAgentSpaceKeyProps,\n readWidgetAgentSpaceKeyAttribute,\n} from \"../renderer/_agent-space/widget-agent-space-key-attribute\";\nimport {\n CanvasOpenRequestFromOpener,\n ConversationWidgetCallbacks,\n StandaloneConversationWidgetProvider,\n} from \"../renderer/ConversationWidgetContext\";\nimport { ConversationWidgetRenderContext } from \"../renderer/ConversationWidgetRenderContext\";\nimport { ConversationWidgetErrorBoundary } from \"../renderer/ConversationWidgetErrorBoundary\";\nimport {\n WidgetRenderReporter,\n WidgetRenderReportContext,\n} from \"../renderer/render-report/widget-render-report\";\nimport type { CanvasState } from \"../renderer/canvas/canvas-state\";\nimport { canvasBodies } from \"../renderer/canvas/canvasBodies\";\nimport { canvasBehaviourOf } from \"../renderer/canvas/canvas-behaviours\";\nimport { decideCanvasOpen } from \"../renderer/canvas/decide-canvas-open\";\nimport { CANVAS_VIABLE_MIN_WIDTH } from \"../widgets/CanvasWidgetCard/use-canvas-viable\";\nimport { WidgetImageRenderContext } from \"../image-render/WidgetImageRenderContext\";\nimport { ComposedViewComponentsContext } from \"../kit/composed-view-components\";\nimport { buildPreviewComposedViewComponents } from \"./preview-stub-components\";\nimport { buildWidgetPreviewFence } from \"./widget-preview-fixtures\";\nimport type { WidgetPreviewReadiness } from \"./widget-preview-readiness\";\nimport type { WidgetPreviewBootstrap, WidgetPreviewFixture } from \"./widget-preview.types\";\nimport styles from \"./WidgetPreview.module.scss\";\n\n/**\n * The widget preview host: ONE widget from ONE fixture, outside the chat, in the mode the script\n * asks for. Unlike the e-mail capture host it keeps a working canvas pane (an `openCanvas` request mounts the canvas\n * body beside the widget, its anchor message being the fixture's fence) and a composer log (what the widget sent,\n * prefilled or signalled), so the interactions of the ChatGPT reference can be driven and checked. The app mounts it in\n * its store (the capture's store state); every request is served from the fixture (`widget-preview-requests.ts`). The fixture's\n * `hydration` is the capture's frozen hydration only in `email` mode; `interactive` and `replay` serve it through the\n * preview's hydrators (`widget-preview-hydration.ts`), so the widget runs as in the chat (a canvas auto-opens).\n */\n\n/** The key of the agent space a fixture without its own renders for. */\nexport const PREVIEW_AGENT_SPACE_KEY = 1;\nconst PREVIEW_MESSAGE_ID = 1;\n\ninterface ComposerLogEntry {\n kind: \"message\" | \"prefill\" | \"signal\";\n text: string;\n}\n\nexport interface WidgetPreviewProps {\n bootstrap: WidgetPreviewBootstrap;\n fixture: WidgetPreviewFixture;\n readiness: WidgetPreviewReadiness;\n hasHydrationError: () => boolean;\n}\n\nexport const WidgetPreview = (props: WidgetPreviewProps) => {\n const { bootstrap, fixture, readiness, hasHydrationError } = props;\n const widgetRef = useRef<HTMLDivElement>(null);\n const widgetName = resolveWidgetName(bootstrap.widgetName);\n const entry = conversationWidgetRegistry.widgets.find((widget) => widget.name === widgetName);\n const [canvas, setCanvas] = useState<CanvasState | null>(null);\n const [composerLog, setComposerLog] = useState<ComposerLogEntry[]>([]);\n const agentSpaceKey = Number(readWidgetAgentSpaceKeyAttribute(fixture) ?? PREVIEW_AGENT_SPACE_KEY);\n const fence = useMemo(\n () => buildWidgetPreviewFence(widgetName ?? bootstrap.widgetName, fixture),\n [widgetName, bootstrap.widgetName, fixture],\n );\n const isEmail = bootstrap.mode === \"email\";\n const isInteractive = bootstrap.mode === \"interactive\";\n // The capture context switches every widget to its static e-mail branch (no canvas, no auto-open): e-mail mode only.\n const frozenHydration =\n isEmail && fixture.hydration && Object.keys(fixture.hydration).length > 0 ? fixture.hydration : null;\n\n useEffect(() => {\n if (!entry) readiness.fail(\"UNKNOWN_WIDGET\");\n // The whole page document: the canvas pane and a modal (the lightbox renders into the modal root) settle too.\n else if (widgetRef.current) return readiness.observe(document.body, widgetRef.current, hasHydrationError);\n }, [entry, readiness, hasHydrationError]);\n // The block's render report reaches the readiness as in the chat it reaches the collector.\n const renderReporter = useMemo<WidgetRenderReporter>(() => ({ report: readiness.recordRenderReport }), [readiness]);\n\n const appendComposerLog = useCallback(\n (kind: ComposerLogEntry[\"kind\"], text: string) => setComposerLog((entries) => [...entries, { kind, text }]),\n [],\n );\n // The chat's opening rule decides, as in the conversation slice: a live delivery on a narrow window does not take\n // over for a canvas without an overlay, so the narrow shot shows the inline rows and the \"Open in canvas\" card.\n const openCanvas = useCallback((request: CanvasOpenRequestFromOpener) => {\n setCanvas((current) => {\n const decision = decideCanvasOpen(canvasBehaviourOf(request.canvasId), current, null, {\n ...request,\n viewportViable: window.innerWidth >= CANVAS_VIABLE_MIN_WIDTH,\n hostHasCanvasSurface: true,\n });\n if (decision.kind === \"ignore\") return current;\n return {\n canvasId: request.canvasId,\n instanceId: request.instanceId,\n anchor: request.anchor,\n origin: request.origin,\n mountGeneration: (current?.mountGeneration ?? 0) + 1,\n };\n });\n }, []);\n const callbacks = useMemo<Partial<ConversationWidgetCallbacks>>(\n () => ({\n canvas,\n hostHasCanvasSurface: !isEmail,\n openCanvas: isEmail ? () => {} : openCanvas,\n closeCanvas: () => setCanvas(null),\n chatAgentSpaceKey: agentSpaceKey,\n messages: [],\n sendMessageToChat: (text: string) => appendComposerLog(\"message\", text),\n prefillComposer: (text: string) => appendComposerLog(\"prefill\", text),\n injectSignal: (text: string) => {\n appendComposerLog(\"signal\", text);\n return Promise.resolve(true);\n },\n }),\n [canvas, isEmail, openCanvas, agentSpaceKey, appendComposerLog],\n );\n\n if (!entry) return null;\n const WidgetComponent = entry.component;\n const CanvasBody = canvas ? canvasBodies[canvas.canvasId] : null;\n const widget = (\n <ConversationWidgetErrorBoundary widgetName={entry.name} onCrash={readiness.recordWidgetCrash}>\n <WidgetRenderReportContext.Provider value={renderReporter}>\n <WidgetComponent\n payload={JSON.stringify(fixture.payload)}\n {...buildWidgetAgentSpaceKeyProps(String(agentSpaceKey))}\n interactive={isInteractive}\n fresh={isInteractive}\n justDelivered={isInteractive}\n messageId={String(PREVIEW_MESSAGE_ID)}\n openedByPage={false}\n />\n </WidgetRenderReportContext.Provider>\n </ConversationWidgetErrorBoundary>\n );\n return (\n <StandaloneConversationWidgetProvider callbacks={callbacks}>\n <ConversationWidgetRenderContext.Provider value={isEmail ? \"email\" : \"conversation\"}>\n <WidgetImageRenderContext.Provider value={frozenHydration}>\n <div className={styles.page} data-testid=\"widget-preview-page\">\n <div className={styles.chatColumn} data-testid=\"widget-preview-frame\">\n <div\n ref={widgetRef}\n className={styles.widget}\n data-testid=\"widget-preview-widget\"\n inert={isEmail || undefined}\n >\n {fixture.stubComposedViewComponents ? (\n <ComposedViewComponentsContext.Provider value={buildPreviewComposedViewComponents()}>\n {widget}\n </ComposedViewComponentsContext.Provider>\n ) : (\n widget\n )}\n </div>\n {composerLog.length > 0 ? (\n <div className={styles.composerLog} data-testid=\"widget-preview-composer-log\">\n {composerLog.map((composerEntry, entryIndex) => (\n <Text\n key={entryIndex}\n role=\"caption\"\n translate={false}\n className={styles.composerEntry}\n >\n {`${composerEntry.kind}: ${composerEntry.text}`}\n </Text>\n ))}\n </div>\n ) : null}\n </div>\n {canvas && CanvasBody ? (\n <div className={styles.canvasPane} data-testid=\"widget-preview-canvas\" data-canvas-id={canvas.canvasId}>\n <CanvasBody\n key={`${canvas.instanceId}#${canvas.mountGeneration}`}\n canvas={canvas}\n agentSpaceKey={agentSpaceKey}\n anchorMessageMarkdown={fence}\n />\n </div>\n ) : null}\n </div>\n </WidgetImageRenderContext.Provider>\n </ConversationWidgetRenderContext.Provider>\n </StandaloneConversationWidgetProvider>\n );\n};\n","import { getSandboxLegacyAliases } from \"../provider/environment\";\nimport type { WidgetPreviewSignal } from \"./widget-preview.types\";\n\n/** The `window` property a preview script waits on. */\nexport const WIDGET_PREVIEW_SIGNAL_GLOBAL_NAME = \"__AGENTS_WIDGET_PREVIEW_V1__\";\n\ntype WindowSignals = Record<string, WidgetPreviewSignal | undefined>;\n\n/**\n * Every name the preview signal is published under: the package's own, then each name the app declares\n * (`AgentsEnvironment.sandboxLegacyAliases.previewReadinessGlobalNames`), read at each publish.\n */\nexport const readWidgetPreviewSignalGlobalNames = (): string[] => [\n WIDGET_PREVIEW_SIGNAL_GLOBAL_NAME,\n ...(getSandboxLegacyAliases().previewReadinessGlobalNames ?? []).filter(\n (aliasName) => aliasName !== WIDGET_PREVIEW_SIGNAL_GLOBAL_NAME,\n ),\n];\n\n/** Publishes (or with `undefined` clears) the preview signal under every name. */\nexport const publishWidgetPreviewSignal = (signal: WidgetPreviewSignal | undefined): void => {\n const windowSignals = window as unknown as WindowSignals;\n for (const globalName of readWidgetPreviewSignalGlobalNames()) windowSignals[globalName] = signal;\n};\n","import { publishWidgetImageReadiness } from \"../image-render/widget-image-readiness-signal\";\nimport type { WidgetRenderReportEntry } from \"../renderer/render-report/widget-render-report\";\nimport { publishWidgetPreviewSignal } from \"./widget-preview-signal\";\nimport type { WidgetPreviewExpectedState, WidgetPreviewSignal } from \"./widget-preview.types\";\n\n/** A loading placeholder: the component library's `Skeleton` (its test id; its class is a hashed module name) and the kit's own. */\nconst SKELETON_SELECTOR = '[data-testid=\"Skeleton\"], [class*=\"Skeleton\"], [class*=\"skeleton\"]';\nconst LOADING_SELECTOR = `[aria-busy=\"true\"], [role=\"progressbar\"]:not([aria-valuenow]), ${SKELETON_SELECTOR}`;\n/** The DOM must stay unchanged this long before the preview counts as settled. */\nconst SETTLE_MS = 400;\n\n/**\n * Whether a loading marker is actually rendered: the component library's `ImgWithLoader` keeps its Skeleton in the DOM inside a\n * `display: none` wrapper once the image has loaded, so a marker under a hidden ancestor is no loading state. Without\n * a layout engine (jsdom: no client rects for any element) every marker counts as before.\n */\nconst hasRenderedLoadingMarker = (element: HTMLElement): boolean => {\n const markers = Array.from(element.querySelectorAll(LOADING_SELECTOR));\n if (markers.length === 0) return false;\n const hasLayout = element.getClientRects().length > 0;\n return !hasLayout || markers.some((marker) => marker.getClientRects().length > 0);\n};\n\n/**\n * The state an element shows — the same loading markers the e-mail capture refuses to shoot. `hasError` is true when\n * the widget is known to be in an error: a failed hydration, a crash caught by the error boundary, or a request the\n * fixture failed on purpose — a widget that renders nothing on an error would otherwise read as `empty`.\n * `renderReport` is the block's own render report when the widget sent one: `failed` reads as `error`,\n * `pending` as `loading` and `empty` as `empty` — a widget that shows one muted line (\"No data to show.\") for its empty\n * state is empty, whatever text the line holds.\n */\nexport const observeWidgetPreviewState = (\n element: HTMLElement,\n hasError: boolean,\n renderReport?: WidgetRenderReportEntry,\n): WidgetPreviewExpectedState => {\n if (hasError || renderReport?.status === \"failed\") return \"error\";\n if (renderReport?.status === \"pending\") return \"loading\";\n if (hasRenderedLoadingMarker(element)) return \"loading\";\n if (renderReport?.status === \"empty\") return \"empty\";\n if (!element.textContent?.trim() && !element.querySelector(\"img,svg,canvas,iframe\")) return \"empty\";\n return \"data\";\n};\n\n/**\n * A mutation the settle ignores: a style or attribute change inside a loading placeholder — the component library's `Skeleton`\n * animates its shimmer by rewriting its style every frame, so a loading fixture would never be still otherwise.\n */\nconst isSkeletonAnimation = (mutation: MutationRecord): boolean => {\n if (mutation.type !== \"attributes\") return false;\n const target = mutation.target;\n return target instanceof Element && target.closest(SKELETON_SELECTOR) !== null;\n};\n\n/**\n * The preview's ready signal: after every change it waits until the DOM is still for `SETTLE_MS`, then publishes what\n * it shows — `window.__AGENTS_WIDGET_PREVIEW_V1__` (observed against the fixture's expected state, with every request\n * the fixture had no response for) and the e-mail capture's `window.__AGENTS_WIDGET_IMAGE_V1__` (`ready` when the\n * expected state was reached), so the same script conventions work for both. Both are also published under the names\n * the app declares (`AgentsEnvironment.sandboxLegacyAliases`).\n */\nexport const createWidgetPreviewReadiness = (expectedState: WidgetPreviewExpectedState) => {\n const missingResponses: string[] = [];\n const failedRequests: string[] = [];\n let widgetCrashed = false;\n let renderReport: WidgetRenderReportEntry | undefined;\n let scheduleSettleAgain: () => void = () => {};\n let revision = 0;\n const publish = (\n signal: Omit<\n WidgetPreviewSignal,\n \"version\" | \"missingResponses\" | \"failedRequests\" | \"widgetCrashed\" | \"expectedState\"\n >,\n ) => {\n publishWidgetPreviewSignal({\n version: 1,\n expectedState,\n missingResponses: [...missingResponses],\n failedRequests: [...failedRequests],\n widgetCrashed,\n ...(renderReport ? { renderReport } : {}),\n ...signal,\n });\n document.documentElement.dataset.widgetPreviewState = signal.state;\n };\n publish({ state: \"loading\", revision });\n\n const fail = (errorCode: string) => {\n publish({ state: \"failed\", revision, error_code: errorCode });\n publishWidgetImageReadiness({ version: 1, state: \"failed\", error_code: errorCode });\n };\n\n const recordMissingResponse = (requestKey: string) => {\n if (!missingResponses.includes(requestKey)) missingResponses.push(requestKey);\n };\n\n /** A request (or a preview hydration) the fixture answered with a failing `__status`. */\n const recordFailedRequest = (requestKey: string) => {\n if (!failedRequests.includes(requestKey)) failedRequests.push(requestKey);\n };\n\n /** The error boundary caught the widget (`ConversationWidgetErrorBoundary` `onCrash`). */\n const recordWidgetCrash = () => {\n widgetCrashed = true;\n };\n\n /** The block's render report (`WidgetRenderReportContext` of the host); a new status settles again. */\n const recordRenderReport = (entry: WidgetRenderReportEntry) => {\n renderReport = entry;\n scheduleSettleAgain();\n };\n\n const settle = (element: HTMLElement, hasHydrationError: () => boolean) => {\n const hasError = hasHydrationError() || widgetCrashed || failedRequests.length > 0;\n const observedState = observeWidgetPreviewState(element, hasError, renderReport);\n const { x, y, width, height } = element.getBoundingClientRect();\n const rect = { x, y, width, height };\n revision += 1;\n const expectedStateReached = observedState === expectedState;\n publish({ state: \"settled\", revision, observedState, expectedStateReached, rect });\n publishWidgetImageReadiness(\n expectedStateReached\n ? { version: 1, state: \"ready\", rect }\n : {\n version: 1,\n state: \"failed\",\n error_code: `EXPECTED_${expectedState.toUpperCase()}_SAW_${observedState.toUpperCase()}`,\n rect,\n },\n );\n };\n\n /**\n * Watches `watchedElement` (the whole preview document, so an interaction that changes only the canvas pane or opens\n * a modal settles too)\n * and classifies `widgetElement` (the widget alone, the screenshot); returns the disposer.\n */\n const observe = (watchedElement: HTMLElement, widgetElement: HTMLElement, hasHydrationError: () => boolean) => {\n let settleTimer: ReturnType<typeof setTimeout> | null = null;\n const scheduleSettle = () => {\n if (settleTimer !== null) clearTimeout(settleTimer);\n settleTimer = setTimeout(() => settle(widgetElement, hasHydrationError), SETTLE_MS);\n };\n const mutationObserver = new MutationObserver((mutations) => {\n if (mutations.some((mutation) => !isSkeletonAnimation(mutation))) scheduleSettle();\n });\n mutationObserver.observe(watchedElement, {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true,\n });\n scheduleSettleAgain = scheduleSettle;\n scheduleSettle();\n return () => {\n mutationObserver.disconnect();\n scheduleSettleAgain = () => {};\n if (settleTimer !== null) clearTimeout(settleTimer);\n };\n };\n\n return { observe, fail, recordMissingResponse, recordFailedRequest, recordWidgetCrash, recordRenderReport };\n};\n\nexport type WidgetPreviewReadiness = ReturnType<typeof createWidgetPreviewReadiness>;\n","import axios, { AxiosRequestConfig } from \"axios\";\nimport type { WidgetPreviewResponse } from \"./widget-preview.types\";\n\n/** The key a fixture response is stored under: method, path and the sorted query (`GET /api/example/…?a=1&b=2`). */\nexport const widgetPreviewRequestKey = (method: string, url: URL): string => {\n const sortedUrl = new URL(url.toString());\n sortedUrl.searchParams.sort();\n return `${method.toUpperCase()} ${sortedUrl.pathname}${sortedUrl.search}`;\n};\n\n/** The app's own error log: answered empty and never reported — a fixture's error state must not count as a gap. */\nconst SILENTLY_ANSWERED_PATHS = [\"/rest_api/v1/log\"];\nconst isSilentlyAnswered = (url: URL): boolean => SILENTLY_ANSWERED_PATHS.includes(url.pathname);\n\nexport const isStatusResponse = (response: unknown): response is { __status: number; __body?: unknown } =>\n typeof response === \"object\" &&\n response !== null &&\n typeof (response as { __status?: unknown }).__status === \"number\";\nexport const isPendingResponse = (response: unknown): boolean =>\n typeof response === \"object\" && response !== null && (response as { __pending?: unknown }).__pending === true;\n\n/**\n * Serves every request of the preview — axios and `fetch` — from the fixture: a known request gets its body (a copy), a\n * `__status` entry fails with that status (a status of 400 or more is reported as a failed request — the error state the\n * fixture asked for), a `__pending` entry never answers (the loading state), and anything else — an unknown read, a\n * write the fixture does not answer — fails as a missing response and is reported. A write is answered only when the\n * fixture names it (`\"POST /api/example/…\"`, e.g. a widget's fire-and-forget measurement event). Nothing reaches a server.\n */\nexport const installWidgetPreviewRequests = (\n responses: Record<string, WidgetPreviewResponse>,\n onMissingResponse: (requestKey: string) => void,\n onFailedRequest: (requestKey: string) => void = () => {},\n): (() => void) => {\n const originalAdapter = axios.defaults.adapter;\n axios.defaults.adapter = async (config: AxiosRequestConfig) => {\n const method = (config.method ?? \"get\").toLowerCase();\n const requestUrl = new URL(axios.getUri(config), window.location.origin);\n if (isSilentlyAnswered(requestUrl)) return { data: {}, status: 200, statusText: \"OK\", config, headers: {} };\n const requestKey = widgetPreviewRequestKey(method, requestUrl);\n const response = Object.prototype.hasOwnProperty.call(responses, requestKey) ? responses[requestKey] : undefined;\n if (response === undefined) {\n onMissingResponse(requestKey);\n return Promise.reject(Object.assign(new Error(`no preview response for ${requestKey}`), { config }));\n }\n if (isPendingResponse(response)) return new Promise(() => {});\n if (isStatusResponse(response)) {\n if (response.__status >= 400) onFailedRequest(requestKey);\n return Promise.reject(\n Object.assign(new Error(`preview response ${response.__status}`), {\n config,\n response: { status: response.__status, data: response.__body ?? null, config, headers: {} },\n }),\n );\n }\n return { data: structuredClone(response), status: 200, statusText: \"OK\", config, headers: {} };\n };\n // `fetch` is answered the same way (a few modules bypass axios); a missing response is a 404, reported.\n const originalFetch = window.fetch;\n window.fetch = async (input: RequestInfo | URL, init?: RequestInit) => {\n const method = (init?.method ?? (input instanceof Request ? input.method : \"GET\")).toLowerCase();\n const url = new URL(input instanceof Request ? input.url : String(input), window.location.origin);\n if (isSilentlyAnswered(url)) return new Response(\"{}\", { status: 200 });\n const requestKey = widgetPreviewRequestKey(method, url);\n const response = Object.prototype.hasOwnProperty.call(responses, requestKey) ? responses[requestKey] : undefined;\n if (response === undefined) {\n onMissingResponse(requestKey);\n return new Response(null, { status: 404 });\n }\n if (isPendingResponse(response)) return new Promise<Response>(() => {});\n if (isStatusResponse(response)) {\n if (response.__status >= 400) onFailedRequest(requestKey);\n return new Response(JSON.stringify(response.__body ?? null), { status: response.__status });\n }\n return new Response(JSON.stringify(response), { status: 200, headers: { \"Content-Type\": \"application/json\" } });\n };\n return () => {\n axios.defaults.adapter = originalAdapter;\n window.fetch = originalFetch;\n };\n};\n","import {\n getWidgetHydrator,\n listWidgetHydratorTypes,\n registerWidgetHydrator,\n unregisterWidgetHydrator,\n} from \"../renderer/widget-hydration/widget-hydration.registry\";\nimport type { RegisteredWidget } from \"../renderer/widget-hydration/widget-hydration.types\";\nimport { isPendingResponse, isStatusResponse } from \"./widget-preview-requests\";\nimport type { WidgetPreviewResponse } from \"./widget-preview.types\";\n\n/** The fixture's entry for one hydration: the exact derived key first, then the hydrator type (as the capture reads). */\nconst findFixtureHydration = (\n hydration: Record<string, WidgetPreviewResponse>,\n type: string,\n key: string,\n): { found: boolean; value?: WidgetPreviewResponse; hydrationKey: string } => {\n if (Object.prototype.hasOwnProperty.call(hydration, key))\n return { found: true, value: hydration[key], hydrationKey: key };\n if (Object.prototype.hasOwnProperty.call(hydration, type))\n return { found: true, value: hydration[type], hydrationKey: type };\n return { found: false, hydrationKey: key };\n};\n\n/** One fixture value as a hydrator result: a copy of the body, a failing `__status`, or a `__pending` that never ends. */\nconst answerFromFixture = (\n value: WidgetPreviewResponse,\n hydrationKey: string,\n onFailedRequest: (requestKey: string) => void,\n): Promise<unknown> => {\n if (isPendingResponse(value)) return new Promise(() => {});\n if (isStatusResponse(value)) {\n onFailedRequest(`HYDRATION ${hydrationKey}`);\n return Promise.reject(new Error(`preview hydration ${value.__status}`));\n }\n return Promise.resolve(structuredClone(value));\n};\n\n/**\n * The preview's hydration transport for the `interactive` and `replay` modes: every registered hydrator is replaced by\n * one that answers from the fixture's `hydration` (by derived key, else by type) and otherwise runs the real hydrator,\n * whose requests the request transport answers from `responses`. The widget therefore runs its live code path —\n * `useWidgetHydration` with the store's hydration slice, no frozen capture context — so a self-hydrating canvas widget\n * auto-opens its canvas like in the chat (`CanvasWidgetCard`). The `email` mode keeps the capture's frozen hydration.\n * Returns the disposer that puts the real hydrators back.\n */\nexport const installWidgetPreviewHydration = (\n hydration: Record<string, WidgetPreviewResponse>,\n onFailedRequest: (requestKey: string) => void,\n): (() => void) => {\n const replacedHydrators = new Map<string, RegisteredWidget<unknown, unknown>>();\n for (const type of listWidgetHydratorTypes()) {\n const registered = getWidgetHydrator<unknown, unknown>(type);\n if (!registered) continue;\n replacedHydrators.set(type, registered);\n unregisterWidgetHydrator(type);\n registerWidgetHydrator<unknown, unknown>(type, {\n ...registered,\n hydrator: (payload, context) => {\n const fixtureHydration = findFixtureHydration(hydration, type, registered.deriveKey(type, payload));\n return fixtureHydration.found\n ? answerFromFixture(fixtureHydration.value, fixtureHydration.hydrationKey, onFailedRequest)\n : registered.hydrator(payload, context);\n },\n });\n }\n return () => {\n for (const [type, registered] of replacedHydrators) {\n unregisterWidgetHydrator(type);\n registerWidgetHydrator(type, registered);\n }\n };\n};\n"],"names":["widget","composerLog","composerEntry"],"mappings":"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"}
|
package/dist/renderer.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { C, a } from "./chunks/ConversationMarkdown-W7NHglmL.js";
|
|
3
|
+
import { j, k, l, m, n, o, p, q, s, t, u, v } from "./chunks/widget-name-resolver-DyIY6Zu4.js";
|
|
4
|
+
import { ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, Z, ay, ab, az, aA, aB, aC, aD, aE } from "./chunks/WebSearchResultsConversationWidget-BvnLWHyi.js";
|
|
5
|
+
import { C as C2, a as a2, b, c, D, d, e, g, i, p as p2 } from "./chunks/canvas-behaviours-BRFR1ALE.js";
|
|
6
|
+
import { c as c2 } from "./chunks/canvasBodies-9SuF6NAB.js";
|
|
7
|
+
import { c as c3 } from "./chunks/canvas-feature-flags-BmmxC3bz.js";
|
|
8
|
+
const pickSection = (payloadValue, fallback) => {
|
|
9
|
+
return payloadValue ?? fallback.data ?? void 0;
|
|
10
|
+
};
|
|
11
|
+
const isSectionLoading = (payloadValue, fallback) => {
|
|
12
|
+
return payloadValue === void 0 && fallback.isLoading;
|
|
13
|
+
};
|
|
14
|
+
const mergeSectionValues = (payloadValue, hydratedValue) => {
|
|
15
|
+
if (!hydratedValue) {
|
|
16
|
+
return payloadValue;
|
|
17
|
+
}
|
|
18
|
+
if (!payloadValue) {
|
|
19
|
+
return hydratedValue;
|
|
20
|
+
}
|
|
21
|
+
const defined = {};
|
|
22
|
+
for (const key of Object.keys(payloadValue)) {
|
|
23
|
+
const v2 = payloadValue[key];
|
|
24
|
+
if (v2 !== void 0) {
|
|
25
|
+
defined[key] = v2;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return { ...hydratedValue, ...defined };
|
|
29
|
+
};
|
|
30
|
+
const mergeSection = (payloadValue, fallback) => {
|
|
31
|
+
return mergeSectionValues(payloadValue, fallback.data ?? void 0);
|
|
32
|
+
};
|
|
33
|
+
const sectionCoversKeys = (payloadValue, requiredKeys) => {
|
|
34
|
+
if (!payloadValue) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return requiredKeys.every((k2) => payloadValue[k2] !== void 0);
|
|
38
|
+
};
|
|
39
|
+
const isSectionIncomplete = (payloadValue, fallback, requiredKeys) => {
|
|
40
|
+
if (!fallback.isLoading) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
if (!payloadValue) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
return requiredKeys.some((k2) => {
|
|
47
|
+
return payloadValue[k2] === void 0;
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
export {
|
|
51
|
+
ac as AgentsWidgetHydrationStateContainer,
|
|
52
|
+
C2 as CANVAS_BOXED_INSET_PX,
|
|
53
|
+
a2 as CANVAS_FILLS_SCREEN_WIDTH_PERCENT,
|
|
54
|
+
b as CANVAS_MIN_WIDTH_PX,
|
|
55
|
+
c as CHAT_COLUMN_MIN_WIDTH_PX,
|
|
56
|
+
C as ConversationMarkdown,
|
|
57
|
+
ad as ConversationWidgetContext,
|
|
58
|
+
j as ConversationWidgetErrorBoundary,
|
|
59
|
+
k as ConversationWidgetFeatureGate,
|
|
60
|
+
a as ConversationWidgetHost,
|
|
61
|
+
D as DEFAULT_CANVAS_WIDTH_PERCENT,
|
|
62
|
+
ae as ReadOnlyConversationWidgetProvider,
|
|
63
|
+
af as StandaloneConversationWidgetProvider,
|
|
64
|
+
ag as WidgetHydrationReducer,
|
|
65
|
+
ah as WidgetHydrationSlice,
|
|
66
|
+
ai as WidgetRenderReportContext,
|
|
67
|
+
l as addComposedNodeSchemaApplicationPart,
|
|
68
|
+
d as canvasBehaviourOf,
|
|
69
|
+
c2 as canvasBodies,
|
|
70
|
+
c3 as canvasFeatureFlagOf,
|
|
71
|
+
aj as canvasInstanceIdForActiveAgentSpace,
|
|
72
|
+
ak as canvasInstanceIdForAgentSpace,
|
|
73
|
+
al as canvasInstanceIdForEntity,
|
|
74
|
+
am as canvasInstanceIdForMessage,
|
|
75
|
+
an as canvasInstanceIdForMessagePayload,
|
|
76
|
+
e as canvasWidthPercentOf,
|
|
77
|
+
m as closestWidgetNames,
|
|
78
|
+
n as composedNodeSchema,
|
|
79
|
+
o as conversationWidgetRegistry,
|
|
80
|
+
ao as createAgentsWidgetHydrationStateStore,
|
|
81
|
+
ap as defaultConversationWidgetCallbacks,
|
|
82
|
+
aq as entityIdOfInstanceId,
|
|
83
|
+
p as getComposedNodeSchema,
|
|
84
|
+
q as getConversationWidgetRegistryRevision,
|
|
85
|
+
g as getDeclaredCanvasIds,
|
|
86
|
+
ar as getDefaultAgentsStateStore,
|
|
87
|
+
as as getWidgetHydrator,
|
|
88
|
+
at as hasWidgetHydrator,
|
|
89
|
+
au as isCanvasAnchorLoaded,
|
|
90
|
+
i as isCanvasId,
|
|
91
|
+
isSectionIncomplete,
|
|
92
|
+
isSectionLoading,
|
|
93
|
+
mergeSection,
|
|
94
|
+
mergeSectionValues,
|
|
95
|
+
av as messageAnchor,
|
|
96
|
+
p2 as packageCanvasBehaviours,
|
|
97
|
+
aw as pageAnchor,
|
|
98
|
+
ax as payloadHashOfInstanceId,
|
|
99
|
+
pickSection,
|
|
100
|
+
s as readComposedViewTree,
|
|
101
|
+
t as readConversationWidgetRegistrations,
|
|
102
|
+
Z as registerWidgetHydrator,
|
|
103
|
+
u as resolveCanonicalWidgetName,
|
|
104
|
+
v as resolveWidgetName,
|
|
105
|
+
ay as sameCanvasAnchor,
|
|
106
|
+
ab as sameCanvasIdentity,
|
|
107
|
+
sectionCoversKeys,
|
|
108
|
+
az as shortStringHash,
|
|
109
|
+
aA as useConversationWidgetContext,
|
|
110
|
+
aB as useReportWidgetRenderStatus,
|
|
111
|
+
aC as useWidgetHydration,
|
|
112
|
+
aD as useWidgetMemory,
|
|
113
|
+
aE as useWidgetRenderReporter
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sources":["../src/renderer/widget-hydration/section-hydration.ts"],"sourcesContent":["export interface SectionHydrationResult<T> {\n data: T | null;\n isLoading: boolean;\n error?: string | null;\n}\n\nexport type SectionHydrator<T> = () => SectionHydrationResult<T>;\n\n/**\n * Prefer payload-provided value; fall back to a hydrator result; undefined otherwise.\n * Callers should call the fallback hook unconditionally (React hook rules) and pass\n * its result here.\n */\nexport const pickSection = <T>(payloadValue: T | undefined, fallback: SectionHydrationResult<T>): T | undefined => {\n return payloadValue ?? fallback.data ?? undefined;\n};\n\n/**\n * True when payload is missing the value AND the fallback is still loading.\n */\nexport const isSectionLoading = <T>(payloadValue: T | undefined, fallback: SectionHydrationResult<T>): boolean => {\n return payloadValue === undefined && fallback.isLoading;\n};\n\n/**\n * Field-level merge of two section values. Payload fields (when defined) win\n * over hydrated fields; undefined payload fields are filled from the hydrated\n * value. Use when the agent sends partial section data (e.g. only a CTA) and\n * the client hydrates the remaining fields.\n */\nexport const mergeSectionValues = <T extends object>(\n payloadValue: T | undefined,\n hydratedValue: T | undefined,\n): T | undefined => {\n if (!hydratedValue) {\n return payloadValue;\n }\n if (!payloadValue) {\n return hydratedValue;\n }\n\n const defined: Partial<T> = {};\n for (const key of Object.keys(payloadValue) as Array<keyof T>) {\n const v = payloadValue[key];\n if (v !== undefined) {\n defined[key] = v;\n }\n }\n return { ...hydratedValue, ...defined } as T;\n};\n\n/**\n * Field-level merge for object sections. Payload fields (when defined) win over\n * fallback fields. Undefined payload fields are filled from the fallback. Use\n * this when the agent sends partial section data (e.g. only a CTA) and the\n * client needs to hydrate the remaining fields from app state.\n */\nexport const mergeSection = <T extends object>(\n payloadValue: T | undefined,\n fallback: SectionHydrationResult<T>,\n): T | undefined => {\n return mergeSectionValues(payloadValue, fallback.data ?? undefined);\n};\n\n/**\n * True when the payload provides every field in `requiredKeys` — the section\n * can render straight from the agent payload without waiting for hydration.\n */\nexport const sectionCoversKeys = <T extends object>(\n payloadValue: T | undefined,\n requiredKeys: ReadonlyArray<keyof T>,\n): boolean => {\n if (!payloadValue) {\n return false;\n }\n return requiredKeys.every((k) => payloadValue[k] !== undefined);\n};\n\n/**\n * True when the fallback is still loading AND the payload has not provided\n * every expected field (listed in `requiredKeys`). Use together with\n * `mergeSection` to decide whether to show a skeleton for the section.\n */\nexport const isSectionIncomplete = <T extends object>(\n payloadValue: T | undefined,\n fallback: SectionHydrationResult<T>,\n requiredKeys: ReadonlyArray<keyof T>,\n): boolean => {\n if (!fallback.isLoading) {\n return false;\n }\n if (!payloadValue) {\n return true;\n }\n return requiredKeys.some((k) => {\n return (payloadValue as T)[k] === undefined;\n });\n};\n"],"names":["v","k"],"mappings":";;;;;;;AAaO,MAAM,cAAc,CAAI,cAA6B,aAAuD;AACjH,SAAO,gBAAgB,SAAS,QAAQ;AAC1C;AAKO,MAAM,mBAAmB,CAAI,cAA6B,aAAiD;AAChH,SAAO,iBAAiB,UAAa,SAAS;AAChD;AAQO,MAAM,qBAAqB,CAChC,cACA,kBACkB;AAClB,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA,EACT;AACA,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,UAAsB,CAAA;AAC5B,aAAW,OAAO,OAAO,KAAK,YAAY,GAAqB;AAC7D,UAAMA,KAAI,aAAa,GAAG;AAC1B,QAAIA,OAAM,QAAW;AACnB,cAAQ,GAAG,IAAIA;AAAA,IACjB;AAAA,EACF;AACA,SAAO,EAAE,GAAG,eAAe,GAAG,QAAA;AAChC;AAQO,MAAM,eAAe,CAC1B,cACA,aACkB;AAClB,SAAO,mBAAmB,cAAc,SAAS,QAAQ,MAAS;AACpE;AAMO,MAAM,oBAAoB,CAC/B,cACA,iBACY;AACZ,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AACA,SAAO,aAAa,MAAM,CAACC,OAAM,aAAaA,EAAC,MAAM,MAAS;AAChE;AAOO,MAAM,sBAAsB,CACjC,cACA,UACA,iBACY;AACZ,MAAI,CAAC,SAAS,WAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AACA,SAAO,aAAa,KAAK,CAACA,OAAM;AAC9B,WAAQ,aAAmBA,EAAC,MAAM;AAAA,EACpC,CAAC;AACH;"}
|