@athenaintel/react 0.19.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +171 -11
- package/dist/assets/AssetPanel.cjs +277 -0
- package/dist/assets/AssetPanel.cjs.map +1 -0
- package/dist/assets/AssetPanel.js +277 -0
- package/dist/assets/AssetPanel.js.map +1 -0
- package/dist/assets/AthenaAssetEmbed.cjs +151 -0
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -0
- package/dist/assets/AthenaAssetEmbed.js +151 -0
- package/dist/assets/AthenaAssetEmbed.js.map +1 -0
- package/dist/assets/AthenaLayout.cjs +69 -0
- package/dist/assets/AthenaLayout.cjs.map +1 -0
- package/dist/assets/AthenaLayout.js +69 -0
- package/dist/assets/AthenaLayout.js.map +1 -0
- package/dist/assets/asset-embed-messages.cjs +39 -0
- package/dist/assets/asset-embed-messages.cjs.map +1 -0
- package/dist/assets/asset-embed-messages.js +39 -0
- package/dist/assets/asset-embed-messages.js.map +1 -0
- package/dist/assets/asset-panel-store.cjs +124 -0
- package/dist/assets/asset-panel-store.cjs.map +1 -0
- package/dist/assets/asset-panel-store.js +124 -0
- package/dist/assets/asset-panel-store.js.map +1 -0
- package/dist/assets/asset-panel-url.cjs +40 -0
- package/dist/assets/asset-panel-url.cjs.map +1 -0
- package/dist/assets/asset-panel-url.js +40 -0
- package/dist/assets/asset-panel-url.js.map +1 -0
- package/dist/assets/use-asset-embed.cjs +370 -0
- package/dist/assets/use-asset-embed.cjs.map +1 -0
- package/dist/assets/use-asset-embed.js +370 -0
- package/dist/assets/use-asset-embed.js.map +1 -0
- package/dist/{AthenaAuthContext-B3AwLA5Z.cjs → auth/AthenaAuthContext.cjs} +5 -4
- package/dist/auth/AthenaAuthContext.cjs.map +1 -0
- package/dist/{AthenaAuthContext-DQsdayH2.js → auth/AthenaAuthContext.js} +3 -3
- package/dist/auth/AthenaAuthContext.js.map +1 -0
- package/dist/auth/AthenaAuthProvider.cjs +141 -0
- package/dist/auth/AthenaAuthProvider.cjs.map +1 -0
- package/dist/auth/AthenaAuthProvider.js +141 -0
- package/dist/auth/AthenaAuthProvider.js.map +1 -0
- package/dist/{auth.cjs → auth/AthenaSSOProvider.cjs} +14 -151
- package/dist/auth/AthenaSSOProvider.cjs.map +1 -0
- package/dist/{auth.js → auth/AthenaSSOProvider.js} +4 -142
- package/dist/auth/AthenaSSOProvider.js.map +1 -0
- package/dist/auth/index.cjs +10 -0
- package/dist/auth/index.cjs.map +1 -0
- package/dist/auth/index.js +10 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/chat/AthenaChat.cjs +753 -0
- package/dist/chat/AthenaChat.cjs.map +1 -0
- package/dist/chat/AthenaChat.d.ts +3 -2
- package/dist/chat/AthenaChat.js +753 -0
- package/dist/chat/AthenaChat.js.map +1 -0
- package/dist/chat/AthenaChatErrorBoundary.cjs +53 -0
- package/dist/chat/AthenaChatErrorBoundary.cjs.map +1 -0
- package/dist/chat/AthenaChatErrorBoundary.js +53 -0
- package/dist/chat/AthenaChatErrorBoundary.js.map +1 -0
- package/dist/chat/StatewireApprovalCard.cjs +189 -0
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -0
- package/dist/chat/StatewireApprovalCard.d.ts +14 -0
- package/dist/chat/StatewireApprovalCard.js +189 -0
- package/dist/chat/StatewireApprovalCard.js.map +1 -0
- package/dist/chat/StatewireClientToolBridge.cjs +51 -0
- package/dist/chat/StatewireClientToolBridge.cjs.map +1 -0
- package/dist/chat/StatewireClientToolBridge.js +51 -0
- package/dist/chat/StatewireClientToolBridge.js.map +1 -0
- package/dist/chat/StatewireQueuedMessages.cjs +433 -0
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -0
- package/dist/chat/StatewireQueuedMessages.d.ts +3 -4
- package/dist/chat/StatewireQueuedMessages.js +433 -0
- package/dist/chat/StatewireQueuedMessages.js.map +1 -0
- package/dist/chat/athena-citation-links.cjs +342 -0
- package/dist/chat/athena-citation-links.cjs.map +1 -0
- package/dist/chat/athena-citation-links.js +342 -0
- package/dist/chat/athena-citation-links.js.map +1 -0
- package/dist/chat/run-activity.cjs +28 -0
- package/dist/chat/run-activity.cjs.map +1 -0
- package/dist/chat/run-activity.js +28 -0
- package/dist/chat/run-activity.js.map +1 -0
- package/dist/chat/statewire-banners.cjs +83 -0
- package/dist/chat/statewire-banners.cjs.map +1 -0
- package/dist/chat/statewire-banners.js +83 -0
- package/dist/chat/statewire-banners.js.map +1 -0
- package/dist/chat/statewire-client-tools.cjs +74 -0
- package/dist/chat/statewire-client-tools.cjs.map +1 -0
- package/dist/chat/statewire-client-tools.js +74 -0
- package/dist/chat/statewire-client-tools.js.map +1 -0
- package/dist/chat/super-grouping/CollapsibleGroup.cjs +158 -0
- package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -0
- package/dist/chat/super-grouping/CollapsibleGroup.js +158 -0
- package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +243 -0
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +14 -7
- package/dist/chat/super-grouping/SuperGroupingCard.js +243 -0
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +131 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.d.ts +16 -0
- package/dist/chat/super-grouping/ToolTimeline.js +131 -0
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.cjs +157 -0
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.d.ts +6 -3
- package/dist/chat/super-grouping/activity-timeline.js +157 -0
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -0
- package/dist/chat/super-grouping/grouping-function.cjs +55 -0
- package/dist/chat/super-grouping/grouping-function.cjs.map +1 -0
- package/dist/chat/super-grouping/grouping-function.js +55 -0
- package/dist/chat/super-grouping/grouping-function.js.map +1 -0
- package/dist/chat/super-grouping/index.cjs +26 -0
- package/dist/chat/super-grouping/index.cjs.map +1 -0
- package/dist/chat/super-grouping/index.js +26 -0
- package/dist/chat/super-grouping/index.js.map +1 -0
- package/dist/chat/super-grouping/timeline-step.cjs +65 -0
- package/dist/chat/super-grouping/timeline-step.cjs.map +1 -0
- package/dist/chat/super-grouping/timeline-step.d.ts +17 -0
- package/dist/chat/super-grouping/timeline-step.js +65 -0
- package/dist/chat/super-grouping/timeline-step.js.map +1 -0
- package/dist/chat/super-grouping/toolkit-map.cjs +96 -0
- package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -0
- package/dist/chat/super-grouping/toolkit-map.js +96 -0
- package/dist/chat/super-grouping/toolkit-map.js.map +1 -0
- package/dist/chat/tiptap-text.cjs +101 -0
- package/dist/chat/tiptap-text.cjs.map +1 -0
- package/dist/chat/tiptap-text.js +101 -0
- package/dist/chat/tiptap-text.js.map +1 -0
- package/dist/chat/tooltip-icon-button.cjs +32 -0
- package/dist/chat/tooltip-icon-button.cjs.map +1 -0
- package/dist/chat/tooltip-icon-button.js +32 -0
- package/dist/chat/tooltip-icon-button.js.map +1 -0
- package/dist/chat/use-athena-run-live.cjs +24 -0
- package/dist/chat/use-athena-run-live.cjs.map +1 -0
- package/dist/chat/use-athena-run-live.d.ts +10 -0
- package/dist/chat/use-athena-run-live.js +24 -0
- package/dist/chat/use-athena-run-live.js.map +1 -0
- package/dist/chat/use-statewire-approval-request.cjs +51 -0
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -0
- package/dist/chat/use-statewire-approval-request.d.ts +12 -2
- package/dist/chat/use-statewire-approval-request.js +51 -0
- package/dist/chat/use-statewire-approval-request.js.map +1 -0
- package/dist/chat-ui/auth/sign-in-card.cjs +128 -0
- package/dist/chat-ui/auth/sign-in-card.cjs.map +1 -0
- package/dist/chat-ui/auth/sign-in-card.js +128 -0
- package/dist/chat-ui/auth/sign-in-card.js.map +1 -0
- package/dist/chat-ui/composer/composer-action.cjs +11 -0
- package/dist/chat-ui/composer/composer-action.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-action.d.ts +5 -8
- package/dist/chat-ui/composer/composer-action.js +11 -0
- package/dist/chat-ui/composer/composer-action.js.map +1 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.cjs +25 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.cjs.map +1 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.js +25 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +549 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.d.ts +44 -7
- package/dist/chat-ui/composer/tiptap-composer.js +549 -0
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -0
- package/dist/chat-ui/header/chat-header.cjs +33 -0
- package/dist/chat-ui/header/chat-header.cjs.map +1 -0
- package/dist/chat-ui/header/chat-header.js +33 -0
- package/dist/chat-ui/header/chat-header.js.map +1 -0
- package/dist/chat-ui/header/conversation-history-panel.cjs +369 -0
- package/dist/chat-ui/header/conversation-history-panel.cjs.map +1 -0
- package/dist/chat-ui/header/conversation-history-panel.js +369 -0
- package/dist/chat-ui/header/conversation-history-panel.js.map +1 -0
- package/dist/chat-ui/index.cjs +140 -0
- package/dist/chat-ui/index.cjs.map +1 -0
- package/dist/chat-ui/index.d.ts +4 -3
- package/dist/chat-ui/index.js +140 -0
- package/dist/chat-ui/index.js.map +1 -0
- package/dist/chat-ui/lib/asset-urls.cjs +18 -0
- package/dist/chat-ui/lib/asset-urls.cjs.map +1 -0
- package/dist/chat-ui/lib/asset-urls.js +18 -0
- package/dist/chat-ui/lib/asset-urls.js.map +1 -0
- package/dist/chat-ui/mentions/mention-chip.cjs +253 -0
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-chip.d.ts +11 -0
- package/dist/chat-ui/mentions/mention-chip.js +253 -0
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.cjs +196 -0
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.d.ts +26 -2
- package/dist/chat-ui/mentions/mention-extension.js +196 -0
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +35 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +35 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +95 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.d.ts +5 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +95 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs +116 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js +116 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +31 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +31 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs +27 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js +27 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +65 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.d.ts +2 -2
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +65 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs +63 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.d.ts +2 -2
- package/dist/chat-ui/mentions/suggestions/components/menu-list.js +63 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs +11 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js +11 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs +33 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.js +33 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs +58 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js +58 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs +81 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js +81 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.cjs +18 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.js +18 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +124 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +13 -2
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +124 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs +37 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.js +37 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs +134 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.js +134 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs +91 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.js +91 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +137 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +137 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +375 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +16 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +375 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/types.cjs +9 -0
- package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/types.d.ts +14 -0
- package/dist/chat-ui/mentions/suggestions/data/types.js +9 -0
- package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +173 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +14 -4
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +173 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs +45 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js +45 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs +43 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js +43 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs +14 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js +14 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs +48 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js +48 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +71 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +71 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -0
- package/dist/chat-ui/messages/continue-pill.cjs +54 -0
- package/dist/chat-ui/messages/continue-pill.cjs.map +1 -0
- package/dist/chat-ui/messages/continue-pill.js +54 -0
- package/dist/chat-ui/messages/continue-pill.js.map +1 -0
- package/dist/chat-ui/messages/message-actions-config.cjs +12 -0
- package/dist/chat-ui/messages/message-actions-config.cjs.map +1 -0
- package/dist/chat-ui/messages/message-actions-config.js +12 -0
- package/dist/chat-ui/messages/message-actions-config.js.map +1 -0
- package/dist/chat-ui/messages/message-components.cjs +320 -0
- package/dist/chat-ui/messages/message-components.cjs.map +1 -0
- package/dist/chat-ui/messages/message-components.d.ts +1 -1
- package/dist/chat-ui/messages/message-components.js +320 -0
- package/dist/chat-ui/messages/message-components.js.map +1 -0
- package/dist/chat-ui/messages/running-indicator.cjs +49 -0
- package/dist/chat-ui/messages/running-indicator.cjs.map +1 -0
- package/dist/chat-ui/messages/running-indicator.js +49 -0
- package/dist/chat-ui/messages/running-indicator.js.map +1 -0
- package/dist/chat-ui/messages/runtime-message.cjs +66 -0
- package/dist/chat-ui/messages/runtime-message.cjs.map +1 -0
- package/dist/chat-ui/messages/runtime-message.js +66 -0
- package/dist/chat-ui/messages/runtime-message.js.map +1 -0
- package/dist/{statewire-continue-run-nE9VCKUh.cjs → chat-ui/messages/statewire-continue-run.cjs} +61 -23
- package/dist/chat-ui/messages/statewire-continue-run.cjs.map +1 -0
- package/dist/chat-ui/messages/statewire-continue-run.d.ts +19 -5
- package/dist/{statewire-continue-run-D34gS7_1.js → chat-ui/messages/statewire-continue-run.js} +51 -14
- package/dist/chat-ui/messages/statewire-continue-run.js.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs +62 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.js +62 -0
- package/dist/chat-ui/messages/user-edit-composer.js.map +1 -0
- package/dist/chat-ui/messages/voice-delegation-card.cjs +51 -0
- package/dist/chat-ui/messages/voice-delegation-card.cjs.map +1 -0
- package/dist/chat-ui/messages/voice-delegation-card.d.ts +26 -0
- package/dist/chat-ui/messages/voice-delegation-card.js +51 -0
- package/dist/chat-ui/messages/voice-delegation-card.js.map +1 -0
- package/dist/chat-ui/rich-text/chat-message-body.cjs +76 -0
- package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -0
- package/dist/chat-ui/rich-text/chat-message-body.d.ts +5 -0
- package/dist/chat-ui/rich-text/chat-message-body.js +76 -0
- package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -0
- package/dist/chat-ui/rich-text/chat-node-views.cjs +51 -0
- package/dist/chat-ui/rich-text/chat-node-views.cjs.map +1 -0
- package/dist/chat-ui/rich-text/chat-node-views.d.ts +13 -0
- package/dist/chat-ui/rich-text/chat-node-views.js +51 -0
- package/dist/chat-ui/rich-text/chat-node-views.js.map +1 -0
- package/dist/chat-ui/rich-text/chat-text-schema.cjs +70 -0
- package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -0
- package/dist/chat-ui/rich-text/chat-text-schema.d.ts +7 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js +70 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -0
- package/dist/chat-ui/rich-text/dom-output-spec.cjs +83 -0
- package/dist/chat-ui/rich-text/dom-output-spec.cjs.map +1 -0
- package/dist/chat-ui/rich-text/dom-output-spec.d.ts +11 -0
- package/dist/chat-ui/rich-text/dom-output-spec.js +83 -0
- package/dist/chat-ui/rich-text/dom-output-spec.js.map +1 -0
- package/dist/chat-ui/statewire.cjs +40 -0
- package/dist/chat-ui/statewire.cjs.map +1 -0
- package/dist/chat-ui/statewire.js +40 -0
- package/dist/chat-ui/statewire.js.map +1 -0
- package/dist/chat-ui/thread/chat-composer-dock.cjs +37 -0
- package/dist/chat-ui/thread/chat-composer-dock.cjs.map +1 -0
- package/dist/chat-ui/thread/chat-composer-dock.js +37 -0
- package/dist/chat-ui/thread/chat-composer-dock.js.map +1 -0
- package/dist/chat-ui/thread/chat-thread-shell.cjs +102 -0
- package/dist/chat-ui/thread/chat-thread-shell.cjs.map +1 -0
- package/dist/chat-ui/thread/chat-thread-shell.js +102 -0
- package/dist/chat-ui/thread/chat-thread-shell.js.map +1 -0
- package/dist/chat-ui/thread/composer-send-or-stop.cjs +75 -0
- package/dist/chat-ui/thread/composer-send-or-stop.cjs.map +1 -0
- package/dist/chat-ui/thread/composer-send-or-stop.d.ts +0 -6
- package/dist/chat-ui/thread/composer-send-or-stop.js +75 -0
- package/dist/chat-ui/thread/composer-send-or-stop.js.map +1 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs +135 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -0
- package/dist/chat-ui/thread/statewire-history-edge.js +135 -0
- package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -0
- package/dist/{collab.cjs → collab/client.cjs} +6 -166
- package/dist/collab/client.cjs.map +1 -0
- package/dist/{collab.js → collab/client.js} +5 -164
- package/dist/collab/client.js.map +1 -0
- package/dist/collab/close-policy.cjs +14 -0
- package/dist/collab/close-policy.cjs.map +1 -0
- package/dist/collab/close-policy.js +14 -0
- package/dist/collab/close-policy.js.map +1 -0
- package/dist/collab/index.cjs +17 -0
- package/dist/collab/index.cjs.map +1 -0
- package/dist/collab/index.js +17 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/collab/mint.cjs +59 -0
- package/dist/collab/mint.cjs.map +1 -0
- package/dist/collab/mint.js +59 -0
- package/dist/collab/mint.js.map +1 -0
- package/dist/collab/react.cjs +58 -0
- package/dist/collab/react.cjs.map +1 -0
- package/dist/collab/react.js +58 -0
- package/dist/collab/react.js.map +1 -0
- package/dist/collab/shape.cjs +45 -0
- package/dist/collab/shape.cjs.map +1 -0
- package/dist/collab/shape.js +45 -0
- package/dist/collab/shape.js.map +1 -0
- package/dist/composer/AttachmentContext.cjs +40 -0
- package/dist/composer/AttachmentContext.cjs.map +1 -0
- package/dist/composer/AttachmentContext.js +40 -0
- package/dist/composer/AttachmentContext.js.map +1 -0
- package/dist/composer/ComposerAttachmentPreview.cjs +39 -0
- package/dist/composer/ComposerAttachmentPreview.cjs.map +1 -0
- package/dist/composer/ComposerAttachmentPreview.js +39 -0
- package/dist/composer/ComposerAttachmentPreview.js.map +1 -0
- package/dist/composer/ComposerDropZone.cjs +61 -0
- package/dist/composer/ComposerDropZone.cjs.map +1 -0
- package/dist/composer/ComposerDropZone.d.ts +1 -1
- package/dist/composer/ComposerDropZone.js +61 -0
- package/dist/composer/ComposerDropZone.js.map +1 -0
- package/dist/composer/ComposerQuotePreview.cjs +42 -0
- package/dist/composer/ComposerQuotePreview.cjs.map +1 -0
- package/dist/composer/ComposerQuotePreview.js +42 -0
- package/dist/composer/ComposerQuotePreview.js.map +1 -0
- package/dist/composer/FileUploadButton.cjs +65 -0
- package/dist/composer/FileUploadButton.cjs.map +1 -0
- package/dist/composer/FileUploadButton.d.ts +1 -1
- package/dist/composer/FileUploadButton.js +65 -0
- package/dist/composer/FileUploadButton.js.map +1 -0
- package/dist/composer/QuoteContext.cjs +68 -0
- package/dist/composer/QuoteContext.cjs.map +1 -0
- package/dist/composer/QuoteContext.js +68 -0
- package/dist/composer/QuoteContext.js.map +1 -0
- package/dist/composer/build-composed-message.cjs +25 -0
- package/dist/composer/build-composed-message.cjs.map +1 -0
- package/dist/composer/build-composed-message.js +25 -0
- package/dist/composer/build-composed-message.js.map +1 -0
- package/dist/composer/clipboard.cjs +62 -0
- package/dist/composer/clipboard.cjs.map +1 -0
- package/dist/composer/clipboard.d.ts +27 -3
- package/dist/composer/clipboard.js +62 -0
- package/dist/composer/clipboard.js.map +1 -0
- package/dist/composer/useAppendToComposer.cjs +21 -0
- package/dist/composer/useAppendToComposer.cjs.map +1 -0
- package/dist/composer/useAppendToComposer.js +21 -0
- package/dist/composer/useAppendToComposer.js.map +1 -0
- package/dist/composer/useAttachFiles.cjs +40 -0
- package/dist/composer/useAttachFiles.cjs.map +1 -0
- package/dist/composer/useAttachFiles.d.ts +24 -0
- package/dist/composer/useAttachFiles.js +40 -0
- package/dist/composer/useAttachFiles.js.map +1 -0
- package/dist/composer/useComposerAttachment.cjs +25 -0
- package/dist/composer/useComposerAttachment.cjs.map +1 -0
- package/dist/composer/useComposerAttachment.js +25 -0
- package/dist/composer/useComposerAttachment.js.map +1 -0
- package/dist/composer/useFileUpload.cjs +123 -0
- package/dist/composer/useFileUpload.cjs.map +1 -0
- package/dist/composer/useFileUpload.js +123 -0
- package/dist/composer/useFileUpload.js.map +1 -0
- package/dist/composer/useSendMessage.cjs +22 -0
- package/dist/composer/useSendMessage.cjs.map +1 -0
- package/dist/composer/useSendMessage.js +22 -0
- package/dist/composer/useSendMessage.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs +329 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -0
- package/dist/diagnostics/athena-diagnostics.js +329 -0
- package/dist/diagnostics/athena-diagnostics.js.map +1 -0
- package/dist/diagnostics/errors.cjs +89 -0
- package/dist/diagnostics/errors.cjs.map +1 -0
- package/dist/diagnostics/errors.js +89 -0
- package/dist/diagnostics/errors.js.map +1 -0
- package/dist/diagnostics/useAthenaDiagnostics.cjs +16 -0
- package/dist/diagnostics/useAthenaDiagnostics.cjs.map +1 -0
- package/dist/diagnostics/useAthenaDiagnostics.js +16 -0
- package/dist/diagnostics/useAthenaDiagnostics.js.map +1 -0
- package/dist/index.cjs +275 -27882
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +162 -27759
- package/dist/index.js.map +1 -1
- package/dist/lib/athena-urls.cjs +194 -0
- package/dist/lib/athena-urls.cjs.map +1 -0
- package/dist/lib/athena-urls.d.ts +20 -5
- package/dist/lib/athena-urls.js +194 -0
- package/dist/lib/athena-urls.js.map +1 -0
- package/dist/lib/posthog/before-send.cjs +58 -0
- package/dist/lib/posthog/before-send.cjs.map +1 -0
- package/dist/lib/posthog/before-send.js +58 -0
- package/dist/lib/posthog/before-send.js.map +1 -0
- package/dist/lib/posthog/capture-gate.cjs +322 -0
- package/dist/lib/posthog/capture-gate.cjs.map +1 -0
- package/dist/lib/posthog/capture-gate.js +322 -0
- package/dist/lib/posthog/capture-gate.js.map +1 -0
- package/dist/lib/posthog/wrap-posthog-client.cjs +163 -0
- package/dist/lib/posthog/wrap-posthog-client.cjs.map +1 -0
- package/dist/lib/posthog/wrap-posthog-client.js +163 -0
- package/dist/lib/posthog/wrap-posthog-client.js.map +1 -0
- package/dist/lib/utils.cjs +12 -0
- package/dist/lib/utils.cjs.map +1 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +77 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +77 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +181 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +181 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +1 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.cjs +32 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.cjs.map +1 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.js +31 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.cjs +44 -0
- package/dist/node_modules/zod/v4/classic/errors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.js +44 -0
- package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.cjs +43 -0
- package/dist/node_modules/zod/v4/classic/iso.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.js +43 -0
- package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.cjs +29 -0
- package/dist/node_modules/zod/v4/classic/parse.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.js +29 -0
- package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.cjs +871 -0
- package/dist/node_modules/zod/v4/classic/schemas.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.js +871 -0
- package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/api.cjs +570 -0
- package/dist/node_modules/zod/v4/core/api.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/api.js +570 -0
- package/dist/node_modules/zod/v4/core/api.js.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.cjs +411 -0
- package/dist/node_modules/zod/v4/core/checks.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.js +411 -0
- package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
- package/dist/node_modules/zod/v4/core/core.cjs +77 -0
- package/dist/node_modules/zod/v4/core/core.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/core.js +77 -0
- package/dist/node_modules/zod/v4/core/core.js.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.cjs +38 -0
- package/dist/node_modules/zod/v4/core/doc.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.js +38 -0
- package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.cjs +76 -0
- package/dist/node_modules/zod/v4/core/errors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.js +76 -0
- package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.cjs +312 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.js +312 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.cjs +96 -0
- package/dist/node_modules/zod/v4/core/parse.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.js +96 -0
- package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.cjs +86 -0
- package/dist/node_modules/zod/v4/core/regexes.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.js +86 -0
- package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.cjs +52 -0
- package/dist/node_modules/zod/v4/core/registries.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.js +52 -0
- package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.cjs +1412 -0
- package/dist/node_modules/zod/v4/core/schemas.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.js +1413 -0
- package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.cjs +370 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.js +370 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
- package/dist/node_modules/zod/v4/core/util.cjs +444 -0
- package/dist/node_modules/zod/v4/core/util.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/util.js +444 -0
- package/dist/node_modules/zod/v4/core/util.js.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.cjs +9 -0
- package/dist/node_modules/zod/v4/core/versions.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.js +9 -0
- package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
- package/dist/packages/agent-runtime/src/asset-attachment.cjs +19 -0
- package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/asset-attachment.js +19 -0
- package/dist/packages/agent-runtime/src/asset-attachment.js.map +1 -0
- package/dist/packages/agent-runtime/src/auth-denial.cjs +28 -0
- package/dist/packages/agent-runtime/src/auth-denial.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/auth-denial.js +28 -0
- package/dist/packages/agent-runtime/src/auth-denial.js.map +1 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs +276 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.js +276 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +1 -0
- package/dist/packages/agent-runtime/src/client-tools.cjs +137 -0
- package/dist/packages/agent-runtime/src/client-tools.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/client-tools.js +137 -0
- package/dist/packages/agent-runtime/src/client-tools.js.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-index.cjs +80 -0
- package/dist/packages/agent-runtime/src/conversation-index.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-index.js +80 -0
- package/dist/packages/agent-runtime/src/conversation-index.js.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-list.cjs +90 -0
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-list.js +90 -0
- package/dist/packages/agent-runtime/src/conversation-list.js.map +1 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs +55 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js +55 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
- package/dist/packages/agent-runtime/src/edit-command.cjs +89 -0
- package/dist/packages/agent-runtime/src/edit-command.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/edit-command.js +89 -0
- package/dist/packages/agent-runtime/src/edit-command.js.map +1 -0
- package/dist/packages/agent-runtime/src/errors.cjs +95 -0
- package/dist/packages/agent-runtime/src/errors.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/errors.js +95 -0
- package/dist/packages/agent-runtime/src/errors.js.map +1 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs +238 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +238 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs +141 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.js +141 -0
- package/dist/packages/agent-runtime/src/interrupts.js.map +1 -0
- package/dist/packages/agent-runtime/src/message-author.cjs +31 -0
- package/dist/packages/agent-runtime/src/message-author.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/message-author.js +31 -0
- package/dist/packages/agent-runtime/src/message-author.js.map +1 -0
- package/dist/packages/agent-runtime/src/message-window.cjs +85 -0
- package/dist/packages/agent-runtime/src/message-window.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/message-window.js +85 -0
- package/dist/packages/agent-runtime/src/message-window.js.map +1 -0
- package/dist/packages/agent-runtime/src/messages.cjs +463 -0
- package/dist/packages/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/messages.js +463 -0
- package/dist/packages/agent-runtime/src/messages.js.map +1 -0
- package/dist/packages/agent-runtime/src/model-context.cjs +13 -0
- package/dist/packages/agent-runtime/src/model-context.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/model-context.js +13 -0
- package/dist/packages/agent-runtime/src/model-context.js.map +1 -0
- package/dist/packages/agent-runtime/src/optimistic-content.cjs +17 -0
- package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/optimistic-content.js +17 -0
- package/dist/packages/agent-runtime/src/optimistic-content.js.map +1 -0
- package/dist/packages/agent-runtime/src/protocol.cjs +31 -0
- package/dist/packages/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/protocol.js +31 -0
- package/dist/packages/agent-runtime/src/protocol.js.map +1 -0
- package/dist/packages/agent-runtime/src/queue.cjs +67 -0
- package/dist/packages/agent-runtime/src/queue.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/queue.js +67 -0
- package/dist/packages/agent-runtime/src/queue.js.map +1 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs +329 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js +329 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
- package/dist/packages/agent-runtime/src/runtime-messages.cjs +187 -0
- package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/runtime-messages.js +187 -0
- package/dist/packages/agent-runtime/src/runtime-messages.js.map +1 -0
- package/dist/packages/agent-runtime/src/screen-point.cjs +68 -0
- package/dist/packages/agent-runtime/src/screen-point.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/screen-point.js +68 -0
- package/dist/packages/agent-runtime/src/screen-point.js.map +1 -0
- package/dist/packages/agent-runtime/src/send-recovery.cjs +128 -0
- package/dist/packages/agent-runtime/src/send-recovery.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/send-recovery.js +128 -0
- package/dist/packages/agent-runtime/src/send-recovery.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs +249 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js +249 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-state.cjs +16 -0
- package/dist/packages/agent-runtime/src/statewire-state.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-state.js +16 -0
- package/dist/packages/agent-runtime/src/statewire-state.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs +41 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.js +41 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-transport.cjs +11 -0
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-transport.js +11 -0
- package/dist/packages/agent-runtime/src/statewire-transport.js.map +1 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs +214 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.js +214 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-extras.cjs +38 -0
- package/dist/packages/agent-runtime/src/thread-extras.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-extras.js +38 -0
- package/dist/packages/agent-runtime/src/thread-extras.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-handoff.cjs +85 -0
- package/dist/packages/agent-runtime/src/thread-handoff.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-handoff.js +85 -0
- package/dist/packages/agent-runtime/src/thread-handoff.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs +90 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js +90 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-status.cjs +49 -0
- package/dist/packages/agent-runtime/src/thread-status.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-status.js +49 -0
- package/dist/packages/agent-runtime/src/thread-status.js.map +1 -0
- package/dist/packages/agent-runtime/src/tool-metadata.cjs +1794 -0
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-metadata.js +1794 -0
- package/dist/packages/agent-runtime/src/tool-metadata.js.map +1 -0
- package/dist/packages/agent-runtime/src/tool-outputs.cjs +46 -0
- package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-outputs.js +46 -0
- package/dist/packages/agent-runtime/src/tool-outputs.js.map +1 -0
- package/dist/packages/agent-runtime/src/tool-result.cjs +151 -0
- package/dist/packages/agent-runtime/src/tool-result.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-result.js +151 -0
- package/dist/packages/agent-runtime/src/tool-result.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs +139 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.js +139 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs +14 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js +14 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs +44 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js +44 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs +148 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js +148 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs +407 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js +407 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs +133 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js +133 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
- package/dist/packages/agent-runtime/src/voice-presentation.cjs +37 -0
- package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/voice-presentation.js +37 -0
- package/dist/packages/agent-runtime/src/voice-presentation.js.map +1 -0
- package/dist/packages/react/package.json.cjs +9 -0
- package/dist/packages/react/package.json.cjs.map +1 -0
- package/dist/packages/react/package.json.js +9 -0
- package/dist/packages/react/package.json.js.map +1 -0
- package/dist/{AthenaContext-B1QMhIP-.cjs → provider/AthenaContext.cjs} +5 -4
- package/dist/provider/AthenaContext.cjs.map +1 -0
- package/dist/{AthenaContext-MOslgOmE.js → provider/AthenaContext.js} +3 -3
- package/dist/provider/AthenaContext.js.map +1 -0
- package/dist/provider/AthenaProvider.cjs +404 -0
- package/dist/provider/AthenaProvider.cjs.map +1 -0
- package/dist/provider/AthenaProvider.js +404 -0
- package/dist/provider/AthenaProvider.js.map +1 -0
- package/dist/provider/PostHogProvider.cjs +81 -0
- package/dist/provider/PostHogProvider.cjs.map +1 -0
- package/dist/provider/PostHogProvider.js +59 -0
- package/dist/provider/PostHogProvider.js.map +1 -0
- package/dist/provider/config.d.ts +8 -7
- package/dist/provider/statewire-lifecycle-context.cjs +10 -0
- package/dist/provider/statewire-lifecycle-context.cjs.map +1 -0
- package/dist/provider/statewire-lifecycle-context.js +10 -0
- package/dist/provider/statewire-lifecycle-context.js.map +1 -0
- package/dist/provider/statewire-window-context.cjs +10 -0
- package/dist/provider/statewire-window-context.cjs.map +1 -0
- package/dist/provider/statewire-window-context.js +10 -0
- package/dist/provider/statewire-window-context.js.map +1 -0
- package/dist/runtime/auth.cjs +309 -0
- package/dist/runtime/auth.cjs.map +1 -0
- package/dist/runtime/auth.d.ts +19 -18
- package/dist/runtime/auth.js +309 -0
- package/dist/runtime/auth.js.map +1 -0
- package/dist/runtime/statewire-auth-headers.cjs +18 -0
- package/dist/runtime/statewire-auth-headers.cjs.map +1 -0
- package/dist/runtime/statewire-auth-headers.js +18 -0
- package/dist/runtime/statewire-auth-headers.js.map +1 -0
- package/dist/runtime/statewire-lifecycle.cjs +68 -0
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -0
- package/dist/runtime/statewire-lifecycle.js +68 -0
- package/dist/runtime/statewire-lifecycle.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +68 -0
- package/dist/runtime/statewire-run-config.cjs.map +1 -0
- package/dist/runtime/statewire-run-config.js +68 -0
- package/dist/runtime/statewire-run-config.js.map +1 -0
- package/dist/runtime/statewire-session-key.cjs +11 -0
- package/dist/runtime/statewire-session-key.cjs.map +1 -0
- package/dist/runtime/statewire-session-key.js +11 -0
- package/dist/runtime/statewire-session-key.js.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs +180 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.js +181 -0
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/theme/index.cjs +182 -0
- package/dist/theme/index.cjs.map +1 -0
- package/dist/theme/index.js +182 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/threads/ThreadList.cjs +55 -0
- package/dist/threads/ThreadList.cjs.map +1 -0
- package/dist/threads/ThreadList.js +55 -0
- package/dist/threads/ThreadList.js.map +1 -0
- package/dist/threads/api.cjs +208 -0
- package/dist/threads/api.cjs.map +1 -0
- package/dist/threads/api.js +208 -0
- package/dist/threads/api.js.map +1 -0
- package/dist/threads/conversation-list-fetcher.cjs +74 -0
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -0
- package/dist/threads/conversation-list-fetcher.js +74 -0
- package/dist/threads/conversation-list-fetcher.js.map +1 -0
- package/dist/threads/mint-thread-id.cjs +7 -0
- package/dist/threads/mint-thread-id.cjs.map +1 -0
- package/dist/threads/mint-thread-id.js +7 -0
- package/dist/threads/mint-thread-id.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +232 -0
- package/dist/threads/statewire-thread-list.cjs.map +1 -0
- package/dist/threads/statewire-thread-list.js +232 -0
- package/dist/threads/statewire-thread-list.js.map +1 -0
- package/dist/threads/thread-id-context.cjs +22 -0
- package/dist/threads/thread-id-context.cjs.map +1 -0
- package/dist/threads/thread-id-context.d.ts +9 -0
- package/dist/threads/thread-id-context.js +22 -0
- package/dist/threads/thread-id-context.js.map +1 -0
- package/dist/threads/title.cjs +95 -0
- package/dist/threads/title.cjs.map +1 -0
- package/dist/threads/title.js +95 -0
- package/dist/threads/title.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.cjs +80 -0
- package/dist/threads/use-rest-conversation-history.cjs.map +1 -0
- package/dist/threads/use-rest-conversation-history.js +80 -0
- package/dist/threads/use-rest-conversation-history.js.map +1 -0
- package/dist/threads/use-statewire-conversation-history.cjs +244 -0
- package/dist/threads/use-statewire-conversation-history.cjs.map +1 -0
- package/dist/threads/use-statewire-conversation-history.d.ts +1 -0
- package/dist/threads/use-statewire-conversation-history.js +244 -0
- package/dist/threads/use-statewire-conversation-history.js.map +1 -0
- package/dist/threads/useAthenaThreadManager.cjs +24 -0
- package/dist/threads/useAthenaThreadManager.cjs.map +1 -0
- package/dist/threads/useAthenaThreadManager.js +24 -0
- package/dist/threads/useAthenaThreadManager.js.map +1 -0
- package/dist/toolkits/index.cjs +279 -0
- package/dist/toolkits/index.cjs.map +1 -0
- package/dist/toolkits/index.js +279 -0
- package/dist/toolkits/index.js.map +1 -0
- package/dist/tools/NestedPtcMessages.cjs +46 -0
- package/dist/tools/NestedPtcMessages.cjs.map +1 -0
- package/dist/tools/NestedPtcMessages.js +46 -0
- package/dist/tools/NestedPtcMessages.js.map +1 -0
- package/dist/tools/append-document-tool-ui.cjs +145 -0
- package/dist/tools/append-document-tool-ui.cjs.map +1 -0
- package/dist/tools/append-document-tool-ui.js +145 -0
- package/dist/tools/append-document-tool-ui.js.map +1 -0
- package/dist/tools/asset-utils.cjs +16 -0
- package/dist/tools/asset-utils.cjs.map +1 -0
- package/dist/tools/asset-utils.js +16 -0
- package/dist/tools/asset-utils.js.map +1 -0
- package/dist/tools/auto-open-tools.cjs +121 -0
- package/dist/tools/auto-open-tools.cjs.map +1 -0
- package/dist/tools/auto-open-tools.js +121 -0
- package/dist/tools/auto-open-tools.js.map +1 -0
- package/dist/tools/file-tool-uis.cjs +108 -0
- package/dist/tools/file-tool-uis.cjs.map +1 -0
- package/dist/tools/file-tool-uis.js +108 -0
- package/dist/tools/file-tool-uis.js.map +1 -0
- package/dist/tools/index.cjs +57 -0
- package/dist/tools/index.cjs.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +57 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/misc-tool-uis.cjs +55 -0
- package/dist/tools/misc-tool-uis.cjs.map +1 -0
- package/dist/{misc-tool-uis-gAiQw0Yl.js → tools/misc-tool-uis.js} +18 -7
- package/dist/tools/misc-tool-uis.js.map +1 -0
- package/dist/tools/primitives.cjs +167 -0
- package/dist/tools/primitives.cjs.map +1 -0
- package/dist/tools/primitives.js +167 -0
- package/dist/tools/primitives.js.map +1 -0
- package/dist/tools/read-asset-tool-ui.cjs +284 -0
- package/dist/tools/read-asset-tool-ui.cjs.map +1 -0
- package/dist/tools/read-asset-tool-ui.js +284 -0
- package/dist/tools/read-asset-tool-ui.js.map +1 -0
- package/dist/tools/todo-plan-store.cjs +88 -0
- package/dist/tools/todo-plan-store.cjs.map +1 -0
- package/dist/tools/todo-plan-store.js +88 -0
- package/dist/tools/todo-plan-store.js.map +1 -0
- package/dist/tools/tool-fallback.cjs +668 -0
- package/dist/tools/tool-fallback.cjs.map +1 -0
- package/dist/tools/tool-fallback.js +668 -0
- package/dist/tools/tool-fallback.js.map +1 -0
- package/dist/tools/tool-icons.cjs +61 -0
- package/dist/tools/tool-icons.cjs.map +1 -0
- package/dist/tools/tool-icons.js +61 -0
- package/dist/tools/tool-icons.js.map +1 -0
- package/dist/tools/tool-uis.cjs +3049 -0
- package/dist/tools/tool-uis.cjs.map +1 -0
- package/dist/tools/tool-uis.js +3049 -0
- package/dist/tools/tool-uis.js.map +1 -0
- package/dist/tools/voice-update-tool-ui.cjs +90 -0
- package/dist/tools/voice-update-tool-ui.cjs.map +1 -0
- package/dist/tools/voice-update-tool-ui.d.ts +27 -0
- package/dist/tools/voice-update-tool-ui.js +90 -0
- package/dist/tools/voice-update-tool-ui.js.map +1 -0
- package/dist/tools/write-todos-tool-ui.cjs +270 -0
- package/dist/tools/write-todos-tool-ui.cjs.map +1 -0
- package/dist/tools/write-todos-tool-ui.js +270 -0
- package/dist/tools/write-todos-tool-ui.js.map +1 -0
- package/dist/ui/button.cjs +57 -0
- package/dist/ui/button.cjs.map +1 -0
- package/dist/ui/button.js +57 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/collapsible.cjs +17 -0
- package/dist/ui/collapsible.cjs.map +1 -0
- package/dist/ui/collapsible.js +17 -0
- package/dist/ui/collapsible.js.map +1 -0
- package/dist/ui/tooltip.cjs +48 -0
- package/dist/ui/tooltip.cjs.map +1 -0
- package/dist/ui/tooltip.js +48 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/version.cjs +6 -0
- package/dist/version.cjs.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/dist/voice/index.cjs +6 -0
- package/dist/voice/index.cjs.map +1 -0
- package/dist/voice/index.d.ts +2 -0
- package/dist/voice/index.js +6 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/use-athena-voice-session.cjs +315 -0
- package/dist/voice/use-athena-voice-session.cjs.map +1 -0
- package/dist/voice/use-athena-voice-session.d.ts +145 -0
- package/dist/voice/use-athena-voice-session.js +315 -0
- package/dist/voice/use-athena-voice-session.js.map +1 -0
- package/package.json +32 -20
- package/dist/AthenaAuthContext-B3AwLA5Z.cjs.map +0 -1
- package/dist/AthenaAuthContext-DQsdayH2.js.map +0 -1
- package/dist/AthenaContext-B1QMhIP-.cjs.map +0 -1
- package/dist/AthenaContext-MOslgOmE.js.map +0 -1
- package/dist/SuperGroupingCard-BsWbHyV_.js +0 -795
- package/dist/SuperGroupingCard-BsWbHyV_.js.map +0 -1
- package/dist/SuperGroupingCard-CRRFUgjN.cjs +0 -794
- package/dist/SuperGroupingCard-CRRFUgjN.cjs.map +0 -1
- package/dist/auth.cjs.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/chat/ComposerEditorContext.d.ts +0 -36
- package/dist/chat/tiptap-composer.d.ts +0 -7
- package/dist/chat-ui-statewire.cjs +0 -25
- package/dist/chat-ui-statewire.cjs.map +0 -1
- package/dist/chat-ui-statewire.js +0 -25
- package/dist/chat-ui-statewire.js.map +0 -1
- package/dist/chat-ui.cjs +0 -2484
- package/dist/chat-ui.cjs.map +0 -1
- package/dist/chat-ui.js +0 -2486
- package/dist/chat-ui.js.map +0 -1
- package/dist/collab.cjs.map +0 -1
- package/dist/collab.js.map +0 -1
- package/dist/mentions/composer-keybinds.d.ts +0 -5
- package/dist/mentions/mention-extension.d.ts +0 -6
- package/dist/mentions/mention-icons.d.ts +0 -4
- package/dist/mentions/mention-node-view.d.ts +0 -2
- package/dist/mentions/mention-suggestion-list.d.ts +0 -14
- package/dist/mentions/mention-suggestion-popup.d.ts +0 -15
- package/dist/mentions/mention-suggestions-extension.d.ts +0 -11
- package/dist/mentions/mention-types.d.ts +0 -21
- package/dist/mentions/mention-utils.d.ts +0 -23
- package/dist/mentions/use-mention-suggestions.d.ts +0 -29
- package/dist/misc-tool-uis-B2e0Okkn.cjs +0 -43
- package/dist/misc-tool-uis-B2e0Okkn.cjs.map +0 -1
- package/dist/misc-tool-uis-gAiQw0Yl.js.map +0 -1
- package/dist/statewire-continue-run-D34gS7_1.js.map +0 -1
- package/dist/statewire-continue-run-nE9VCKUh.cjs.map +0 -1
- package/dist/statewire-history-edge-C8uyTEjX.cjs +0 -1711
- package/dist/statewire-history-edge-C8uyTEjX.cjs.map +0 -1
- package/dist/statewire-history-edge-CPohUKMt.js +0 -1712
- package/dist/statewire-history-edge-CPohUKMt.js.map +0 -1
- package/dist/super-grouping.cjs +0 -22
- package/dist/super-grouping.cjs.map +0 -1
- package/dist/super-grouping.js +0 -22
- package/dist/super-grouping.js.map +0 -1
- package/dist/tool-fallback-DkQ3DLkn.js +0 -4281
- package/dist/tool-fallback-DkQ3DLkn.js.map +0 -1
- package/dist/tool-fallback-kfhpJQZa.cjs +0 -4297
- package/dist/tool-fallback-kfhpJQZa.cjs.map +0 -1
- package/dist/tools.cjs +0 -41
- package/dist/tools.cjs.map +0 -1
- package/dist/tools.js +0 -41
- package/dist/tools.js.map +0 -1
- package/dist/trash-2-B5OaNAL7.cjs +0 -5096
- package/dist/trash-2-B5OaNAL7.cjs.map +0 -1
- package/dist/trash-2-CCwSURL-.js +0 -5081
- package/dist/trash-2-CCwSURL-.js.map +0 -1
- package/dist/use-rest-conversation-history-Cm8qMRxp.cjs +0 -32397
- package/dist/use-rest-conversation-history-Cm8qMRxp.cjs.map +0 -1
- package/dist/use-rest-conversation-history-veDZS-oL.js +0 -32361
- package/dist/use-rest-conversation-history-veDZS-oL.js.map +0 -1
- package/dist/wrench-BEf72cyP.cjs +0 -417
- package/dist/wrench-BEf72cyP.cjs.map +0 -1
- package/dist/wrench-CbrOlVYm.js +0 -418
- package/dist/wrench-CbrOlVYm.js.map +0 -1
- package/dist/x-Dfd2NzK0.cjs +0 -42
- package/dist/x-Dfd2NzK0.cjs.map +0 -1
- package/dist/x-_DntAa_a.js +0 -43
- package/dist/x-_DntAa_a.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiptap-composer.js","sources":["../../../src/chat-ui/composer/tiptap-composer.tsx"],"sourcesContent":["/**\n * Tiptap Composer — Full Olympus mention system integration\n *\n * Uses the ported Olympus infrastructure:\n * - MentionSuggestionList (with scope navigation, breadcrumbs, keyboard nav)\n * - MentionSuggestionPopup (Floating UI positioning)\n * - MentionSuggestionsExtension (Tiptap @ trigger)\n * - MentionExtension (inline mention chips)\n * - useMentionSuggestions (full Olympus categories + async data)\n *\n * Auth credentials for GraphQL are provided via MentionAuthCtx, and the host\n * app (Chrome side panel, Office task pane, the SDK's AthenaChat) supplies any\n * host-only mention items — browser tabs through `webpages`, its own Tools /\n * Toolkits list through `tools`.\n *\n * The draft serializes to Markdown through `tiptap-markdown` — the serializer\n * the Olympus chat composer sends with — so pasted hyperlinks keep their URL,\n * formatting marks survive, paragraphs stay separated, and a mention is the\n * `[@Name](url)` link the message renderer parses back into a chip.\n */\n\nimport { athenaDiagnostics } from \"../../diagnostics/athena-diagnostics\";\nimport {\n clipboardHasMeaningfulText,\n extractPastedImages,\n} from \"../../composer/clipboard\";\nimport {\n useRef,\n useState,\n useCallback,\n useEffect,\n forwardRef,\n useImperativeHandle,\n type DragEvent as ReactDragEvent,\n} from \"react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport { Extension, type Editor } from \"@tiptap/core\";\nimport { unstable_useComposerInput, useAui } from \"@assistant-ui/react\";\nimport { LoaderCircleIcon, XIcon } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { CHAT_TEXT_CLASS, createChatTextExtensions } from \"../rich-text/chat-text-schema\";\nimport {\n MentionSuggestionsExtension,\n type MentionSuggestionCallbacks,\n type MentionSuggestionRenderProps,\n} from \"../mentions/suggestions/mention-suggestions.extension\";\nimport { MentionSuggestionPopup } from \"../mentions/suggestions/components/mention-suggestion-popup\";\nimport {\n MentionSuggestionList,\n} from \"../mentions/suggestions/components/mention-suggestion-list\";\nimport {\n useMentionSuggestions,\n type MentionRootCategory,\n} from \"../mentions/suggestions/data/use-mention-suggestions\";\nimport type {\n MentionTool,\n MenuItem,\n WebpageMention,\n} from \"../mentions/suggestions/data/types\";\nimport type { KeyboardNavigationHandle } from \"../mentions/suggestions/components/use-keyboard-navigation\";\nimport {\n registerChatAssetMentionHandler,\n type UploadedChatAsset,\n} from \"@athenaintel/agent-runtime\";\nimport { PendingAttachmentUploads } from \"./pending-attachment-uploads\";\n\n// ── Submit keybind extension ──\n\nconst SubmitKeybind = Extension.create<{ onSubmit: () => void; isMentionOpen: () => boolean }>({\n name: \"submitKeybind\",\n priority: 1000,\n addOptions() {\n return { onSubmit: () => {}, isMentionOpen: () => false };\n },\n addKeyboardShortcuts() {\n return {\n Enter: () => {\n // Don't submit when the mention popup is open — let it handle Enter\n if (this.options.isMentionOpen()) return false;\n // Let the schema's keymaps continue lists, insert code newlines, and\n // split paragraphs inside structured blocks, as in the web composer.\n if ([\"listItem\", \"taskItem\", \"codeBlock\", \"table\", \"blockquote\"].some(\n (node) => this.editor.isActive(node),\n )) return false;\n this.options.onSubmit();\n return true;\n },\n \"Shift-Enter\": () => {\n return this.editor.commands.newlineInCode() || this.editor.commands.setHardBreak();\n },\n };\n },\n});\n\n// ── CSS for mention chips + editor ──\n\nconst MENTION_STYLES = `\n .image-preview-composer .mention-chip[data-display-as-preview=\"true\"] {\n display: none;\n }\n /* Scoped to this editor: hosts render other ProseMirror instances on the\n same page (AthenaChat's message renderer), which must keep their own\n height and placeholder rules. */\n .athena-chat-composer .ProseMirror {\n outline: none;\n min-height: 36px;\n max-height: 120px;\n overflow-y: auto;\n }\n .athena-chat-composer .ProseMirror p.is-editor-empty:first-child::before {\n content: attr(data-placeholder);\n float: left;\n color: #9ca3af;\n pointer-events: none;\n height: 0;\n }\n`;\n\ninterface MarkdownStorage {\n getMarkdown(): string;\n}\n\n/** The draft as it is sent: Markdown, mentions as `[@Name](url)` links. */\nexport function serializeDraft(editor: Editor): string {\n return (editor.storage as { markdown: MarkdownStorage }).markdown.getMarkdown();\n}\n\n/**\n * A host's own intake for the files pasted into or dropped on the composer\n * (AthenaChat uploads them into its attachment pills). Without `onDrop` the\n * composer leaves drops untouched so an enclosing drop zone receives them.\n */\nexport interface ComposerFileIntake {\n onPaste: (files: readonly File[]) => void;\n onDrop?: (files: readonly File[]) => void;\n}\n\n// ── Main component ──\n\nexport interface TiptapComposerHandle {\n submit: () => Promise<void>;\n addAttachment: (file: File) => Promise<void>;\n insertAssetMention: (asset: UploadedChatAsset) => void;\n}\n\nexport interface TiptapComposerProps {\n placeholder?: string;\n threadId: string;\n disabled?: boolean;\n /** Host-provided browser-tab mentions; empty in hosts without tab access. */\n webpages?: readonly WebpageMention[];\n /**\n * Host-provided Tools / Toolkits mention candidates. When set they replace\n * the server tool catalog for those categories (see `useMentionSuggestions`).\n */\n tools?: readonly MentionTool[];\n rootCategories?: readonly MentionRootCategory[];\n onDraftStateChange?: (hasDraft: boolean) => void;\n /** Show local image thumbnails while mention-backed uploads are in the draft. */\n showImagePreviews?: boolean;\n /** Surface paste/drop attachment failures in host UI as well as diagnostics. */\n onAttachmentError?: (message: string) => void;\n /**\n * Host-owned intake for pasted and dropped files. Without it the composer\n * attaches them itself through `aui.composer.addAttachment`.\n */\n fileIntake?: ComposerFileIntake;\n /**\n * Awaited before every submit (Enter and the imperative handle), after the\n * composer's own pending uploads have settled: a host whose uploads live\n * outside the composer (AthenaChat's attachment pills) resolves once they\n * land, so a send never leaves without its attachment.\n */\n waitForHostUploads?: () => Promise<void> | void;\n /**\n * Optional submit interception: called with the serialized draft — possibly\n * empty, for a host composing its own extras into the send — before the\n * composer-runtime send. Return `true` when the host consumed the draft\n * through another lane (e.g. a live voice session) — the editor clears and\n * the normal send is skipped. Return `false` to fall through unchanged.\n */\n interceptSubmit?: (text: string) => boolean | Promise<boolean>;\n}\n\nconst NO_WEBPAGES: readonly WebpageMention[] = [];\n\ninterface ComposerImagePreview {\n key: string;\n file: File;\n name: string;\n src: string;\n assetId?: string;\n}\n\nfunction revokeImagePreview(src: string): void {\n if (typeof URL.revokeObjectURL === \"function\") URL.revokeObjectURL(src);\n}\n\nfunction ImagePreviewStrip({\n previews,\n onRemove,\n}: {\n previews: readonly ComposerImagePreview[];\n onRemove: (preview: ComposerImagePreview) => void;\n}) {\n if (previews.length === 0) return null;\n\n return (\n <div\n className=\"flex w-full gap-2 overflow-x-auto px-1.5 pb-1 pt-1.5\"\n role=\"list\"\n aria-label=\"Image attachments\"\n >\n {previews.map((preview) => {\n const uploading = preview.assetId === undefined;\n return (\n <div\n key={preview.key}\n className=\"group relative h-16 w-[clamp(76px,30vw,112px)] shrink-0 overflow-hidden rounded-lg border border-neutral-200 bg-neutral-100 shadow-sm\"\n role=\"listitem\"\n >\n <img\n src={preview.src}\n alt={preview.name}\n className=\"size-full object-cover\"\n />\n <div className=\"absolute inset-x-0 bottom-0 truncate bg-gradient-to-t from-black/75 to-transparent px-1.5 pb-1 pt-4 text-[10px] font-medium text-white\">\n {preview.name}\n </div>\n {uploading ? (\n <span\n className=\"absolute left-1 top-1 inline-flex size-5 items-center justify-center rounded-full bg-black/65 text-white\"\n title=\"Uploading image\"\n >\n <LoaderCircleIcon className=\"size-3 animate-spin\" />\n </span>\n ) : (\n <button\n type=\"button\"\n onClick={() => onRemove(preview)}\n className=\"absolute right-1 top-1 inline-flex size-5 items-center justify-center rounded-full bg-black/65 text-white opacity-80 transition-opacity hover:bg-black/80 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white\"\n aria-label={`Remove ${preview.name}`}\n title=\"Remove image\"\n >\n <XIcon className=\"size-3\" />\n </button>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n\nexport const TiptapComposer = forwardRef<\n TiptapComposerHandle,\n TiptapComposerProps\n>(\n (\n {\n placeholder = \"Message Athena... (type @ to mention)\",\n threadId,\n disabled = false,\n webpages = NO_WEBPAGES,\n tools,\n rootCategories,\n onDraftStateChange,\n showImagePreviews = false,\n onAttachmentError,\n fileIntake,\n waitForHostUploads,\n interceptSubmit,\n },\n outerRef,\n ) => {\n const aui = useAui();\n const composerInput = unstable_useComposerInput();\n const applyingRuntimeTextRef = useRef(false);\n // What this editor last mirrored into the composer runtime; a value equal to\n // it is our own echo and needs no re-serialization or restore.\n const lastEmittedMarkdownRef = useRef<string | null>(null);\n const listRef = useRef<KeyboardNavigationHandle>(null);\n const pendingUploadsRef = useRef(new PendingAttachmentUploads());\n const submitInFlightRef = useRef(false);\n const imagePreviewsRef = useRef<ComposerImagePreview[]>([]);\n const [imagePreviews, setImagePreviews] = useState<ComposerImagePreview[]>([]);\n\n const replaceImagePreviews = useCallback((next: ComposerImagePreview[]) => {\n imagePreviewsRef.current = next;\n setImagePreviews(next);\n }, []);\n\n const removeImagePreviews = useCallback(\n (shouldRemove: (preview: ComposerImagePreview) => boolean) => {\n const kept: ComposerImagePreview[] = [];\n let removed = false;\n for (const preview of imagePreviewsRef.current) {\n if (shouldRemove(preview)) {\n revokeImagePreview(preview.src);\n removed = true;\n } else kept.push(preview);\n }\n if (removed) replaceImagePreviews(kept);\n },\n [replaceImagePreviews],\n );\n\n const clearImagePreviews = useCallback(() => {\n removeImagePreviews(() => true);\n }, [removeImagePreviews]);\n\n useEffect(() => clearImagePreviews(), [clearImagePreviews, threadId]);\n useEffect(\n () => () => {\n for (const preview of imagePreviewsRef.current) {\n revokeImagePreview(preview.src);\n }\n imagePreviewsRef.current = [];\n },\n [],\n );\n\n const { store } = useMentionSuggestions({ webpages, tools, rootCategories });\n\n // Popup state\n const [popupOpen, setPopupOpen] = useState(false);\n const popupOpenRef = useRef(false);\n const [popupProps, setPopupProps] = useState<MentionSuggestionRenderProps | null>(null);\n\n // Suggestion callbacks — drive the popup lifecycle\n const callbacksRef = useRef<MentionSuggestionCallbacks>({\n onStart: (props) => {\n setPopupOpen(true);\n popupOpenRef.current = true;\n setPopupProps(props);\n },\n onUpdate: (props) => {\n setPopupProps(props);\n },\n onKeyDown: (event) => {\n // Route keyboard events to the MentionSuggestionList\n return listRef.current?.onKeyDown(event) ?? false;\n },\n onExit: () => {\n setPopupOpen(false);\n popupOpenRef.current = false;\n setPopupProps(null);\n },\n });\n\n // Editor ref — needed because handleSubmit is created before useEditor returns\n const editorRef = useRef<ReturnType<typeof useEditor>>(null);\n\n // Submit via composer runtime so attachments (screenshots, files) are included.\n // aui.composer.setText() + aui.composer.send() bundles text + pending attachments.\n //\n // Statewire turns a send during an active run into a queued command. Do not\n // cancel first: cancellation aborts the shared run for every connected\n // client and turns a normal queued follow-up into a destructive stop.\n const handleSubmit = useCallback(async () => {\n if (disabled) return;\n if (submitInFlightRef.current) return;\n submitInFlightRef.current = true;\n try {\n await pendingUploadsRef.current.waitForIdle();\n await waitForHostUploads?.();\n const ed = editorRef.current;\n if (!ed) return;\n const text = serializeDraft(ed).trim();\n\n // Interception carries TEXT only: a draft with pending attachments\n // (screenshots, files) must ride the composer-runtime send that\n // bundles them, or the attachments would silently vanish. Attachment\n // state is read only when a host actually intercepts. It runs before\n // the empty check because a host may compose extras of its own into\n // an otherwise empty draft (AthenaChat's quote and attachment pills).\n if (interceptSubmit) {\n const hasAttachments =\n (aui.composer.getState().attachments?.length ?? 0) > 0;\n if (!hasAttachments && (await interceptSubmit(text))) {\n ed.commands.clearContent();\n clearImagePreviews();\n onDraftStateChange?.(false);\n return;\n }\n }\n\n if (!text) return;\n if (!composerInput.canSend) return;\n\n composerInput.setText(text);\n composerInput.send({ steer: false });\n\n ed.commands.clearContent();\n clearImagePreviews();\n onDraftStateChange?.(false);\n } finally {\n submitInFlightRef.current = false;\n }\n }, [\n clearImagePreviews,\n composerInput,\n disabled,\n interceptSubmit,\n onDraftStateChange,\n waitForHostUploads,\n ]);\n\n const handleSubmitRef = useRef(handleSubmit);\n handleSubmitRef.current = handleSubmit;\n\n const addAttachment = useCallback(\n (file: File) => {\n let previewKey: string | undefined;\n if (\n showImagePreviews &&\n file.type.startsWith(\"image/\") &&\n typeof URL.createObjectURL === \"function\"\n ) {\n previewKey = crypto.randomUUID();\n replaceImagePreviews([\n ...imagePreviewsRef.current,\n {\n key: previewKey,\n file,\n name: file.name || \"Pasted image\",\n src: URL.createObjectURL(file),\n },\n ]);\n }\n\n return pendingUploadsRef.current\n .track(aui.composer.addAttachment(file))\n .catch((error: unknown) => {\n if (previewKey) {\n removeImagePreviews((preview) => preview.key === previewKey);\n }\n throw error;\n });\n },\n [aui, removeImagePreviews, replaceImagePreviews, showImagePreviews],\n );\n\n // Handle paste events — intercept images from clipboard and add as attachments\n const handlePaste = useCallback(\n (_view: unknown, event: ClipboardEvent) => {\n const clipboardData = event.clipboardData;\n if (!clipboardData) return false;\n\n const images = extractPastedImages({ clipboardData });\n if (images.length === 0) return false;\n // Office and spreadsheet copies put the cells' text beside a bitmap of\n // them: the text is what the user copied, so the editor's native paste\n // keeps it and the incidental screenshot is left alone. A copied image\n // file's own name (Finder, Explorer) is not such text.\n if (\n clipboardHasMeaningfulText({\n clipboardData,\n pastedFileNames: images.map((image) => image.originalName),\n })\n ) {\n return false;\n }\n event.preventDefault();\n\n const files = images.map((image) => image.file);\n if (fileIntake) {\n fileIntake.onPaste(files);\n return true;\n }\n for (const file of files) {\n void addAttachment(file).catch((error: unknown) => {\n onAttachmentError?.(\"Couldn’t paste that image.\");\n athenaDiagnostics.error(\n \"composer.attachment.error\",\n error,\n { code: \"attachment_failed\", message: \"Pasted image upload failed\" },\n { source: \"paste\", type: file.type },\n );\n });\n }\n return true;\n },\n [addAttachment, fileIntake, onAttachmentError],\n );\n\n // Without a host intake the composer attaches dropped images itself; a host\n // intake without `onDrop` leaves drops to the enclosing drop zone.\n const addDroppedImages = useCallback(\n (files: FileList | readonly File[]) => {\n const images = Array.from(files).filter((file) =>\n file.type.startsWith(\"image/\"),\n );\n if (images.length === 0) return false;\n if (fileIntake) {\n if (!fileIntake.onDrop) return false;\n fileIntake.onDrop(images);\n return true;\n }\n for (const file of images) {\n void addAttachment(file).catch((error: unknown) => {\n onAttachmentError?.(\"Couldn’t attach that dropped image.\");\n athenaDiagnostics.error(\n \"composer.attachment.error\",\n error,\n { code: \"attachment_failed\", message: \"Dropped image upload failed\" },\n { source: \"drop\", type: file.type },\n );\n });\n }\n return true;\n },\n [addAttachment, fileIntake, onAttachmentError],\n );\n\n // ProseMirror owns drops that land in the editable surface. The React\n // wrapper below catches the rest of the composer area; defaultPrevented\n // keeps one gesture from being attached twice.\n const handleDrop = useCallback(\n (_view: unknown, event: DragEvent) => {\n const files = event.dataTransfer?.files;\n if (!files?.length) return false;\n const handled = addDroppedImages(files);\n if (handled) event.preventDefault();\n return handled;\n },\n [addDroppedImages],\n );\n\n const handleComposerDrop = useCallback(\n (event: ReactDragEvent<HTMLDivElement>) => {\n if (event.defaultPrevented) return;\n if (addDroppedImages(event.dataTransfer.files)) event.preventDefault();\n },\n [addDroppedImages],\n );\n\n const editor = useEditor({\n editable: !disabled,\n extensions: [\n ...createChatTextExtensions(),\n Placeholder.configure({ placeholder }),\n MentionSuggestionsExtension.configure({\n store,\n callbacks: callbacksRef.current,\n }),\n SubmitKeybind.configure({\n onSubmit: () => void handleSubmitRef.current(),\n isMentionOpen: () => popupOpenRef.current,\n }),\n ],\n editorProps: {\n attributes: {\n class: cn(CHAT_TEXT_CLASS, \"w-full resize-none bg-transparent px-1.5 py-2 outline-none\"),\n \"data-testid\": \"athena-chat-composer\",\n },\n handlePaste,\n handleDrop,\n },\n onUpdate: ({ editor: updatedEditor }) => {\n const nextText = serializeDraft(updatedEditor);\n lastEmittedMarkdownRef.current = nextText;\n if (!applyingRuntimeTextRef.current) {\n composerInput.setText(nextText);\n }\n onDraftStateChange?.(nextText.trim().length > 0);\n\n if (showImagePreviews) {\n const mentionedAssetIds = new Set<string>();\n updatedEditor.state.doc.descendants((node) => {\n if (\n node.type.name === \"mention\" &&\n node.attrs.type === \"asset\" &&\n typeof node.attrs.id === \"string\"\n ) {\n mentionedAssetIds.add(node.attrs.id);\n }\n });\n removeImagePreviews(\n (preview) =>\n preview.assetId !== undefined &&\n !mentionedAssetIds.has(preview.assetId),\n );\n }\n },\n immediatelyRender: false,\n });\n\n // Keep ref in sync so handleSubmit always has the editor\n editorRef.current = editor;\n\n useEffect(() => {\n editor?.setEditable(!disabled);\n }, [disabled, editor]);\n\n // This rich editor replaces ComposerPrimitive.Input, so it must mirror its\n // draft into assistant-ui's composer state. Statewire restores that state\n // when a send is rejected during reconnect, and a host may write to it\n // (`useAppendToComposer`); mirroring it back into Tiptap — parsed as the\n // Markdown it was serialized to, mention links included — preserves the\n // user's message instead of leaving an empty composer. Our own echo is\n // skipped on the ref; a restore's re-serialization may differ from the\n // value byte-for-byte, so the ref takes that form to stop a second pass.\n useEffect(() => {\n if (!editor) return;\n const value = composerInput.value;\n if (value === lastEmittedMarkdownRef.current) return;\n const currentMarkdown = serializeDraft(editor);\n lastEmittedMarkdownRef.current = currentMarkdown;\n if (value === currentMarkdown) return;\n // React node views flush their mounts synchronously. Restore outside\n // React's effect phase, and cancel a restore superseded by a newer draft.\n let cancelled = false;\n queueMicrotask(() => {\n if (cancelled || editor.isDestroyed) return;\n applyingRuntimeTextRef.current = true;\n try {\n editor.commands.setContent(value);\n lastEmittedMarkdownRef.current = serializeDraft(editor);\n } finally {\n applyingRuntimeTextRef.current = false;\n }\n onDraftStateChange?.(value.trim().length > 0);\n });\n return () => { cancelled = true; };\n }, [composerInput.value, editor, onDraftStateChange]);\n\n const insertAssetMention = useCallback(\n (asset: UploadedChatAsset, sourceFile?: File) => {\n const currentEditor = editorRef.current;\n if (!currentEditor) throw new Error(\"The chat composer is not ready.\");\n currentEditor\n .chain()\n .focus()\n .insertContent({\n type: \"mention\",\n attrs: {\n type: \"asset\",\n name: asset.title,\n id: asset.id,\n assetType: asset.assetType,\n displayAsPreview:\n showImagePreviews && sourceFile?.type.startsWith(\"image/\"),\n },\n })\n // A text node, not a string: the Markdown extension parses string\n // content as Markdown, which would drop a lone space.\n .insertContent({ type: \"text\", text: \" \" })\n .run();\n\n if (\n showImagePreviews &&\n sourceFile?.type.startsWith(\"image/\") &&\n typeof URL.createObjectURL === \"function\"\n ) {\n const existing = imagePreviewsRef.current.find(\n (preview) => preview.file === sourceFile,\n );\n if (existing) {\n replaceImagePreviews(\n imagePreviewsRef.current.map((preview) =>\n preview.key === existing.key\n ? { ...preview, assetId: asset.id, name: asset.title }\n : preview,\n ),\n );\n } else {\n replaceImagePreviews([\n ...imagePreviewsRef.current,\n {\n key: crypto.randomUUID(),\n file: sourceFile,\n name: asset.title,\n src: URL.createObjectURL(sourceFile),\n assetId: asset.id,\n },\n ]);\n }\n }\n },\n [replaceImagePreviews, showImagePreviews],\n );\n\n const removeImagePreview = useCallback(\n (preview: ComposerImagePreview) => {\n if (!preview.assetId) return;\n const currentEditor = editorRef.current;\n if (!currentEditor) return;\n const positions: Array<{ from: number; to: number }> = [];\n currentEditor.state.doc.descendants((node, position) => {\n if (\n node.type.name === \"mention\" &&\n node.attrs.type === \"asset\" &&\n node.attrs.id === preview.assetId\n ) {\n positions.push({ from: position, to: position + node.nodeSize });\n }\n });\n let transaction = currentEditor.state.tr;\n for (const position of positions.reverse()) {\n transaction = transaction.delete(position.from, position.to);\n }\n if (transaction.docChanged) currentEditor.view.dispatch(transaction);\n removeImagePreviews((candidate) => candidate.key === preview.key);\n currentEditor.commands.focus();\n },\n [removeImagePreviews],\n );\n\n useEffect(\n () => registerChatAssetMentionHandler(threadId, insertAssetMention),\n [insertAssetMention, threadId],\n );\n\n useImperativeHandle(\n outerRef,\n () => ({ submit: handleSubmit, addAttachment, insertAssetMention }),\n [addAttachment, handleSubmit, insertAssetMention],\n );\n\n return (\n <>\n <style>{MENTION_STYLES}</style>\n <div\n className={cn(\n \"athena-chat-composer flex-1 min-w-0\",\n showImagePreviews && \"image-preview-composer\",\n )}\n aria-label=\"Message composer\"\n aria-disabled={disabled}\n onDragOver={(event) => {\n if (Array.from(event.dataTransfer.types).includes(\"Files\")) {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"copy\";\n }\n }}\n onDrop={handleComposerDrop}\n >\n <ImagePreviewStrip\n previews={imagePreviews}\n onRemove={removeImagePreview}\n />\n <EditorContent editor={editor} />\n </div>\n\n {/* Olympus-style mention popup */}\n {popupOpen && popupProps && editor && (\n <MentionSuggestionPopup clientRect={popupProps.clientRect}>\n <MentionSuggestionList\n ref={listRef}\n store={store}\n editor={editor}\n query={popupProps.query}\n command={(item: MenuItem) => popupProps.command(item)}\n closeMenu={() => {\n setPopupOpen(false);\n editor.commands.focus();\n }}\n />\n </MentionSuggestionPopup>\n )}\n </>\n );\n },\n);\n\nTiptapComposer.displayName = \"TiptapComposer\";\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const messageComponents = require("../messages/message-components.cjs");
|
|
5
|
+
const cnfast = require("cnfast");
|
|
6
|
+
function ChatHeaderRoot({
|
|
7
|
+
children,
|
|
8
|
+
className
|
|
9
|
+
}) {
|
|
10
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cnfast.cn(messageComponents.THREAD_HEADER_CLASS, className), children });
|
|
11
|
+
}
|
|
12
|
+
function ChatHeaderIdentity({
|
|
13
|
+
children,
|
|
14
|
+
className
|
|
15
|
+
}) {
|
|
16
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cnfast.cn(messageComponents.THREAD_HEADER_PILL_CLASS, className), children });
|
|
17
|
+
}
|
|
18
|
+
function ChatHeaderActions({
|
|
19
|
+
children,
|
|
20
|
+
className
|
|
21
|
+
}) {
|
|
22
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cnfast.cn(messageComponents.THREAD_HEADER_ACTIONS_CLASS, className), children });
|
|
23
|
+
}
|
|
24
|
+
const ChatHeader = {
|
|
25
|
+
Root: ChatHeaderRoot,
|
|
26
|
+
Identity: ChatHeaderIdentity,
|
|
27
|
+
Actions: ChatHeaderActions
|
|
28
|
+
};
|
|
29
|
+
exports.ChatHeader = ChatHeader;
|
|
30
|
+
exports.ChatHeaderActions = ChatHeaderActions;
|
|
31
|
+
exports.ChatHeaderIdentity = ChatHeaderIdentity;
|
|
32
|
+
exports.ChatHeaderRoot = ChatHeaderRoot;
|
|
33
|
+
//# sourceMappingURL=chat-header.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-header.cjs","sources":["../../../src/chat-ui/header/chat-header.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n THREAD_HEADER_ACTIONS_CLASS,\n THREAD_HEADER_CLASS,\n THREAD_HEADER_PILL_CLASS,\n} from '../messages/message-components';\n\nexport function ChatHeaderRoot({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return <div className={cn(THREAD_HEADER_CLASS, className)}>{children}</div>;\n}\n\nexport function ChatHeaderIdentity({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return <div className={cn(THREAD_HEADER_PILL_CLASS, className)}>{children}</div>;\n}\n\nexport function ChatHeaderActions({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return <div className={cn(THREAD_HEADER_ACTIONS_CLASS, className)}>{children}</div>;\n}\n\n/** Composition API keeps each host's exact action order visible at call sites. */\nexport const ChatHeader = {\n Root: ChatHeaderRoot,\n Identity: ChatHeaderIdentity,\n Actions: ChatHeaderActions,\n};\n"],"names":["cn","THREAD_HEADER_CLASS","THREAD_HEADER_PILL_CLASS","THREAD_HEADER_ACTIONS_CLASS"],"mappings":";;;;;AAQO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AACF,GAGG;AACD,wCAAQ,OAAA,EAAI,WAAWA,OAAAA,GAAGC,uCAAqB,SAAS,GAAI,UAAS;AACvE;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AACF,GAGG;AACD,wCAAQ,OAAA,EAAI,WAAWD,OAAAA,GAAGE,4CAA0B,SAAS,GAAI,UAAS;AAC5E;AAEO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAGG;AACD,wCAAQ,OAAA,EAAI,WAAWF,OAAAA,GAAGG,+CAA6B,SAAS,GAAI,UAAS;AAC/E;AAGO,MAAM,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AACX;;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { THREAD_HEADER_ACTIONS_CLASS, THREAD_HEADER_PILL_CLASS, THREAD_HEADER_CLASS } from "../messages/message-components.js";
|
|
3
|
+
import { cn } from "cnfast";
|
|
4
|
+
function ChatHeaderRoot({
|
|
5
|
+
children,
|
|
6
|
+
className
|
|
7
|
+
}) {
|
|
8
|
+
return /* @__PURE__ */ jsx("div", { className: cn(THREAD_HEADER_CLASS, className), children });
|
|
9
|
+
}
|
|
10
|
+
function ChatHeaderIdentity({
|
|
11
|
+
children,
|
|
12
|
+
className
|
|
13
|
+
}) {
|
|
14
|
+
return /* @__PURE__ */ jsx("div", { className: cn(THREAD_HEADER_PILL_CLASS, className), children });
|
|
15
|
+
}
|
|
16
|
+
function ChatHeaderActions({
|
|
17
|
+
children,
|
|
18
|
+
className
|
|
19
|
+
}) {
|
|
20
|
+
return /* @__PURE__ */ jsx("div", { className: cn(THREAD_HEADER_ACTIONS_CLASS, className), children });
|
|
21
|
+
}
|
|
22
|
+
const ChatHeader = {
|
|
23
|
+
Root: ChatHeaderRoot,
|
|
24
|
+
Identity: ChatHeaderIdentity,
|
|
25
|
+
Actions: ChatHeaderActions
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
ChatHeader,
|
|
29
|
+
ChatHeaderActions,
|
|
30
|
+
ChatHeaderIdentity,
|
|
31
|
+
ChatHeaderRoot
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=chat-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-header.js","sources":["../../../src/chat-ui/header/chat-header.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n THREAD_HEADER_ACTIONS_CLASS,\n THREAD_HEADER_CLASS,\n THREAD_HEADER_PILL_CLASS,\n} from '../messages/message-components';\n\nexport function ChatHeaderRoot({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return <div className={cn(THREAD_HEADER_CLASS, className)}>{children}</div>;\n}\n\nexport function ChatHeaderIdentity({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return <div className={cn(THREAD_HEADER_PILL_CLASS, className)}>{children}</div>;\n}\n\nexport function ChatHeaderActions({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return <div className={cn(THREAD_HEADER_ACTIONS_CLASS, className)}>{children}</div>;\n}\n\n/** Composition API keeps each host's exact action order visible at call sites. */\nexport const ChatHeader = {\n Root: ChatHeaderRoot,\n Identity: ChatHeaderIdentity,\n Actions: ChatHeaderActions,\n};\n"],"names":[],"mappings":";;;AAQO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AACF,GAGG;AACD,6BAAQ,OAAA,EAAI,WAAW,GAAG,qBAAqB,SAAS,GAAI,UAAS;AACvE;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AACF,GAGG;AACD,6BAAQ,OAAA,EAAI,WAAW,GAAG,0BAA0B,SAAS,GAAI,UAAS;AAC5E;AAEO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAGG;AACD,6BAAQ,OAAA,EAAI,WAAW,GAAG,6BAA6B,SAAS,GAAI,UAAS;AAC/E;AAGO,MAAM,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AACX;"}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const lucideReact = require("lucide-react");
|
|
5
|
+
const react = require("react");
|
|
6
|
+
const useRestConversationHistory = require("../../threads/use-rest-conversation-history.cjs");
|
|
7
|
+
const assetTypeIcons = require("../mentions/suggestions/data/sources/asset-type-icons.cjs");
|
|
8
|
+
const cnfast = require("cnfast");
|
|
9
|
+
const TIME_GROUPS = [
|
|
10
|
+
"Today",
|
|
11
|
+
"Yesterday",
|
|
12
|
+
"This Week",
|
|
13
|
+
"This Month",
|
|
14
|
+
"Older"
|
|
15
|
+
];
|
|
16
|
+
const AUTOMATED_SOURCE_CHANNELS = /* @__PURE__ */ new Set([
|
|
17
|
+
"api",
|
|
18
|
+
"email",
|
|
19
|
+
"orchestration",
|
|
20
|
+
"slack",
|
|
21
|
+
"sms",
|
|
22
|
+
"task",
|
|
23
|
+
"teams"
|
|
24
|
+
]);
|
|
25
|
+
function isAutomatedConversation(conversation) {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
const sourceChannel = (_a = conversation.sourceChannel) == null ? void 0 : _a.trim().toLowerCase();
|
|
28
|
+
if (sourceChannel && AUTOMATED_SOURCE_CHANNELS.has(sourceChannel))
|
|
29
|
+
return true;
|
|
30
|
+
const triggerType = (_b = conversation.triggerType) == null ? void 0 : _b.trim().toLowerCase();
|
|
31
|
+
return Boolean(triggerType && triggerType !== "manual");
|
|
32
|
+
}
|
|
33
|
+
function conversationTimeGroup(value, now = /* @__PURE__ */ new Date()) {
|
|
34
|
+
const date = new Date(value);
|
|
35
|
+
if (Number.isNaN(date.getTime())) return "Older";
|
|
36
|
+
const startOfToday = new Date(
|
|
37
|
+
now.getFullYear(),
|
|
38
|
+
now.getMonth(),
|
|
39
|
+
now.getDate()
|
|
40
|
+
);
|
|
41
|
+
const startOfYesterday = new Date(startOfToday.getTime() - 864e5);
|
|
42
|
+
const startOfWeek = new Date(
|
|
43
|
+
startOfToday.getTime() - startOfToday.getDay() * 864e5
|
|
44
|
+
);
|
|
45
|
+
const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);
|
|
46
|
+
if (date >= startOfToday) return "Today";
|
|
47
|
+
if (date >= startOfYesterday) return "Yesterday";
|
|
48
|
+
if (date >= startOfWeek) return "This Week";
|
|
49
|
+
if (date >= startOfMonth) return "This Month";
|
|
50
|
+
return "Older";
|
|
51
|
+
}
|
|
52
|
+
function originKey(conversation) {
|
|
53
|
+
return conversation.appId ?? conversation.sourceChannel ?? "unknown";
|
|
54
|
+
}
|
|
55
|
+
function originLabel(value) {
|
|
56
|
+
const normalized = value.toLowerCase();
|
|
57
|
+
if (normalized.includes("chrome")) return "Chrome";
|
|
58
|
+
if (normalized.includes("powerpoint")) return "PowerPoint";
|
|
59
|
+
if (normalized.includes("word")) return "Word";
|
|
60
|
+
if (normalized.includes("excel")) return "Excel";
|
|
61
|
+
if (normalized.includes("office")) return "Office";
|
|
62
|
+
if (normalized === "web" || normalized.includes("olympus")) return "Athena";
|
|
63
|
+
if (normalized.includes("mobile")) return "Mobile";
|
|
64
|
+
if (value === "unknown") return "Legacy";
|
|
65
|
+
return value.replace(/^athena[-_]/, "").replaceAll("_", " ");
|
|
66
|
+
}
|
|
67
|
+
function relativeTime(value) {
|
|
68
|
+
const timestamp = Date.parse(value);
|
|
69
|
+
if (!Number.isFinite(timestamp)) return "";
|
|
70
|
+
const elapsed = Math.max(0, Date.now() - timestamp);
|
|
71
|
+
const minutes = Math.floor(elapsed / 6e4);
|
|
72
|
+
if (minutes < 1) return "<1m ago";
|
|
73
|
+
if (minutes < 60) return `${minutes}m ago`;
|
|
74
|
+
const hours = Math.floor(minutes / 60);
|
|
75
|
+
if (hours < 24) return `${hours}h ${minutes % 60}m ago`;
|
|
76
|
+
const days = Math.floor(hours / 24);
|
|
77
|
+
return days < 7 ? `${days}d ago` : new Date(timestamp).toLocaleDateString();
|
|
78
|
+
}
|
|
79
|
+
function ConversationTypeIcon({
|
|
80
|
+
conversation,
|
|
81
|
+
automated
|
|
82
|
+
}) {
|
|
83
|
+
if (conversation.state === "running") {
|
|
84
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
85
|
+
lucideReact.LoaderCircleIcon,
|
|
86
|
+
{
|
|
87
|
+
"aria-label": "Conversation running",
|
|
88
|
+
className: "mt-0.5 size-4 shrink-0 animate-spin text-primary"
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
const thumbnail = assetTypeIcons.assetTypeToThumb(conversation.assetType ?? "session");
|
|
93
|
+
if (thumbnail) {
|
|
94
|
+
return /* @__PURE__ */ jsxRuntime.jsx("img", { src: thumbnail, alt: "", className: "mt-0.5 size-4 shrink-0" });
|
|
95
|
+
}
|
|
96
|
+
return automated ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.BotIcon, { className: "mt-0.5 size-4 shrink-0 text-primary" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageSquareIcon, { className: "mt-0.5 size-4 shrink-0 text-emerald-500" });
|
|
97
|
+
}
|
|
98
|
+
function ConversationHistoryPanel({
|
|
99
|
+
conversations,
|
|
100
|
+
activeThreadId,
|
|
101
|
+
search,
|
|
102
|
+
onSearchChange,
|
|
103
|
+
activityFilter,
|
|
104
|
+
onActivityFilterChange,
|
|
105
|
+
originFilter,
|
|
106
|
+
onOriginFilterChange,
|
|
107
|
+
onSelect,
|
|
108
|
+
onNewChat,
|
|
109
|
+
onRefresh,
|
|
110
|
+
onArchive,
|
|
111
|
+
onSetReadState,
|
|
112
|
+
isLoading = false,
|
|
113
|
+
isRefreshing = false,
|
|
114
|
+
hasNextPage = false,
|
|
115
|
+
isFetchingNextPage = false,
|
|
116
|
+
onLoadMore,
|
|
117
|
+
onHoverIntent,
|
|
118
|
+
onHoverIntentEnd,
|
|
119
|
+
hoverIntentDelayMs = 150
|
|
120
|
+
}) {
|
|
121
|
+
const hoverTimer = react.useRef(null);
|
|
122
|
+
const hoverIntentThreadId = react.useRef(null);
|
|
123
|
+
const onHoverIntentRef = react.useRef(onHoverIntent);
|
|
124
|
+
onHoverIntentRef.current = onHoverIntent;
|
|
125
|
+
const onHoverIntentEndRef = react.useRef(onHoverIntentEnd);
|
|
126
|
+
onHoverIntentEndRef.current = onHoverIntentEnd;
|
|
127
|
+
const cancelHoverTimer = react.useCallback(() => {
|
|
128
|
+
if (hoverTimer.current === null) return;
|
|
129
|
+
clearTimeout(hoverTimer.current);
|
|
130
|
+
hoverTimer.current = null;
|
|
131
|
+
}, []);
|
|
132
|
+
const endHoverIntent = react.useCallback(() => {
|
|
133
|
+
var _a;
|
|
134
|
+
const threadId = hoverIntentThreadId.current;
|
|
135
|
+
if (threadId === null) return;
|
|
136
|
+
hoverIntentThreadId.current = null;
|
|
137
|
+
(_a = onHoverIntentEndRef.current) == null ? void 0 : _a.call(onHoverIntentEndRef, threadId);
|
|
138
|
+
}, []);
|
|
139
|
+
react.useEffect(
|
|
140
|
+
() => () => {
|
|
141
|
+
cancelHoverTimer();
|
|
142
|
+
endHoverIntent();
|
|
143
|
+
},
|
|
144
|
+
[cancelHoverTimer, endHoverIntent]
|
|
145
|
+
);
|
|
146
|
+
const handleRowEnter = (threadId) => {
|
|
147
|
+
if (!onHoverIntentRef.current) return;
|
|
148
|
+
cancelHoverTimer();
|
|
149
|
+
hoverTimer.current = setTimeout(() => {
|
|
150
|
+
var _a;
|
|
151
|
+
hoverTimer.current = null;
|
|
152
|
+
hoverIntentThreadId.current = threadId;
|
|
153
|
+
(_a = onHoverIntentRef.current) == null ? void 0 : _a.call(onHoverIntentRef, threadId);
|
|
154
|
+
}, hoverIntentDelayMs);
|
|
155
|
+
};
|
|
156
|
+
const handleRowLeave = (threadId) => {
|
|
157
|
+
cancelHoverTimer();
|
|
158
|
+
if (hoverIntentThreadId.current !== threadId) return;
|
|
159
|
+
endHoverIntent();
|
|
160
|
+
};
|
|
161
|
+
const origins = react.useMemo(
|
|
162
|
+
() => [...new Set(conversations.map(originKey))].sort(),
|
|
163
|
+
[conversations]
|
|
164
|
+
);
|
|
165
|
+
const grouped = react.useMemo(() => {
|
|
166
|
+
const visible = conversations.filter((conversation) => {
|
|
167
|
+
const automated = isAutomatedConversation(conversation);
|
|
168
|
+
if (activityFilter === "chat" && automated) return false;
|
|
169
|
+
if (activityFilter === "automated" && !automated) return false;
|
|
170
|
+
return originFilter === "all" || originKey(conversation) === originFilter;
|
|
171
|
+
});
|
|
172
|
+
const byGroup = /* @__PURE__ */ new Map();
|
|
173
|
+
for (const conversation of visible) {
|
|
174
|
+
const group = conversationTimeGroup(conversation.updatedAt);
|
|
175
|
+
const items = byGroup.get(group) ?? [];
|
|
176
|
+
items.push(conversation);
|
|
177
|
+
byGroup.set(group, items);
|
|
178
|
+
}
|
|
179
|
+
return TIME_GROUPS.flatMap((group) => {
|
|
180
|
+
const items = byGroup.get(group);
|
|
181
|
+
return items ? [{ group, items }] : [];
|
|
182
|
+
});
|
|
183
|
+
}, [activityFilter, conversations, originFilter]);
|
|
184
|
+
react.useEffect(() => {
|
|
185
|
+
const threadId = hoverIntentThreadId.current;
|
|
186
|
+
if (threadId === null) return;
|
|
187
|
+
const stillVisible = grouped.some(
|
|
188
|
+
({ items }) => items.some((conversation) => conversation.threadId === threadId)
|
|
189
|
+
);
|
|
190
|
+
if (!stillVisible) endHoverIntent();
|
|
191
|
+
}, [grouped, endHoverIntent]);
|
|
192
|
+
const visibleCount = grouped.reduce(
|
|
193
|
+
(count, group) => count + group.items.length,
|
|
194
|
+
0
|
|
195
|
+
);
|
|
196
|
+
const handleSearch = (event) => onSearchChange(event.target.value);
|
|
197
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
198
|
+
"section",
|
|
199
|
+
{
|
|
200
|
+
"aria-label": "Conversation history",
|
|
201
|
+
className: "border-b border-border bg-background px-2 pb-2",
|
|
202
|
+
"data-testid": "conversation-history-panel",
|
|
203
|
+
children: [
|
|
204
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-10 items-center gap-1.5 px-1", children: [
|
|
205
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground", children: "Sessions" }),
|
|
206
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
207
|
+
"button",
|
|
208
|
+
{
|
|
209
|
+
type: "button",
|
|
210
|
+
"aria-label": "Refresh sessions",
|
|
211
|
+
title: "Refresh sessions",
|
|
212
|
+
disabled: isRefreshing,
|
|
213
|
+
onClick: onRefresh,
|
|
214
|
+
className: "ml-auto rounded-md p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-50",
|
|
215
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
216
|
+
lucideReact.RefreshCwIcon,
|
|
217
|
+
{
|
|
218
|
+
className: cnfast.cn("size-3.5", isRefreshing && "animate-spin")
|
|
219
|
+
}
|
|
220
|
+
)
|
|
221
|
+
}
|
|
222
|
+
),
|
|
223
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
224
|
+
"button",
|
|
225
|
+
{
|
|
226
|
+
type: "button",
|
|
227
|
+
onClick: onNewChat,
|
|
228
|
+
className: "flex h-7 shrink-0 items-center gap-1 rounded-md bg-primary px-2 text-[11px] font-medium text-primary-foreground",
|
|
229
|
+
children: [
|
|
230
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.PlusIcon, { className: "size-3" }),
|
|
231
|
+
" New"
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
)
|
|
235
|
+
] }),
|
|
236
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "relative block min-w-0 px-1 pb-2", children: [
|
|
237
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.SearchIcon, { className: "pointer-events-none absolute left-3 top-1/2 size-3.5 -translate-y-[calc(50%+0.25rem)] text-muted-foreground" }),
|
|
238
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Search sessions" }),
|
|
239
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
240
|
+
"input",
|
|
241
|
+
{
|
|
242
|
+
value: search,
|
|
243
|
+
onChange: handleSearch,
|
|
244
|
+
placeholder: "Search sessions...",
|
|
245
|
+
className: "h-8 w-full rounded-md border border-border bg-muted/40 pl-7 pr-2 text-xs outline-none focus:border-primary focus:bg-background"
|
|
246
|
+
}
|
|
247
|
+
)
|
|
248
|
+
] }),
|
|
249
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1 overflow-x-auto px-1 pb-2 text-[11px]", children: [
|
|
250
|
+
["all", "chat", "automated"].map((filter) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
251
|
+
"button",
|
|
252
|
+
{
|
|
253
|
+
type: "button",
|
|
254
|
+
onClick: () => onActivityFilterChange(filter),
|
|
255
|
+
className: cnfast.cn(
|
|
256
|
+
"rounded-full border px-2 py-1 capitalize",
|
|
257
|
+
activityFilter === filter ? "border-primary bg-primary/10 text-primary" : "border-border text-muted-foreground"
|
|
258
|
+
),
|
|
259
|
+
children: filter === "chat" ? "Chats" : filter === "automated" ? "Automations" : "All"
|
|
260
|
+
},
|
|
261
|
+
filter
|
|
262
|
+
)),
|
|
263
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
264
|
+
"select",
|
|
265
|
+
{
|
|
266
|
+
"aria-label": "Filter by origin",
|
|
267
|
+
value: originFilter,
|
|
268
|
+
onChange: (event) => onOriginFilterChange(event.target.value),
|
|
269
|
+
className: "ml-auto rounded-full border border-border bg-background px-2 text-[11px] text-muted-foreground",
|
|
270
|
+
children: [
|
|
271
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "all", children: "All origins" }),
|
|
272
|
+
origins.map((origin) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: origin, children: originLabel(origin) }, origin))
|
|
273
|
+
]
|
|
274
|
+
}
|
|
275
|
+
)
|
|
276
|
+
] }),
|
|
277
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-h-[min(60vh,28rem)] overflow-y-auto px-0.5", children: [
|
|
278
|
+
isLoading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 px-2 py-4 text-xs text-muted-foreground", children: [
|
|
279
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.LoaderCircleIcon, { className: "size-3.5 animate-spin" }),
|
|
280
|
+
" Loading sessions…"
|
|
281
|
+
] }) : visibleCount === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-2 py-4 text-xs text-muted-foreground", children: "No matching sessions." }) : grouped.map(({ group, items }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
282
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "px-2 pb-1 pt-2 text-[10px] font-semibold uppercase tracking-[0.08em] text-muted-foreground/75", children: group }),
|
|
283
|
+
items.map((conversation) => {
|
|
284
|
+
const automated = isAutomatedConversation(conversation);
|
|
285
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
286
|
+
"div",
|
|
287
|
+
{
|
|
288
|
+
className: cnfast.cn(
|
|
289
|
+
"group flex items-start gap-2 rounded-md px-2 py-2 hover:bg-accent",
|
|
290
|
+
conversation.threadId === activeThreadId && "bg-primary/10 text-primary"
|
|
291
|
+
),
|
|
292
|
+
onMouseEnter: () => handleRowEnter(conversation.threadId),
|
|
293
|
+
onMouseLeave: () => handleRowLeave(conversation.threadId),
|
|
294
|
+
children: [
|
|
295
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
296
|
+
"button",
|
|
297
|
+
{
|
|
298
|
+
type: "button",
|
|
299
|
+
onClick: () => {
|
|
300
|
+
onSelect(conversation.threadId);
|
|
301
|
+
if (conversation.isUnread) {
|
|
302
|
+
onSetReadState(conversation.threadId, false);
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
className: "flex min-w-0 flex-1 items-start gap-2 text-left",
|
|
306
|
+
children: [
|
|
307
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
308
|
+
ConversationTypeIcon,
|
|
309
|
+
{
|
|
310
|
+
conversation,
|
|
311
|
+
automated
|
|
312
|
+
}
|
|
313
|
+
),
|
|
314
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
315
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-start gap-1", children: [
|
|
316
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "line-clamp-2 flex-1 text-xs font-medium leading-snug", children: useRestConversationHistory.conversationDisplayTitle(conversation) }),
|
|
317
|
+
conversation.isUnread ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
318
|
+
"span",
|
|
319
|
+
{
|
|
320
|
+
"aria-label": "Unread",
|
|
321
|
+
className: "mt-1 size-1.5 shrink-0 rounded-full bg-primary"
|
|
322
|
+
}
|
|
323
|
+
) : null
|
|
324
|
+
] }),
|
|
325
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "mt-0.5 flex items-center gap-1.5 text-[10px] text-muted-foreground", children: [
|
|
326
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: relativeTime(conversation.updatedAt) }),
|
|
327
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: "·" }),
|
|
328
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: originLabel(originKey(conversation)) })
|
|
329
|
+
] })
|
|
330
|
+
] })
|
|
331
|
+
]
|
|
332
|
+
}
|
|
333
|
+
),
|
|
334
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
335
|
+
"button",
|
|
336
|
+
{
|
|
337
|
+
type: "button",
|
|
338
|
+
"aria-label": `Archive ${useRestConversationHistory.conversationDisplayTitle(conversation)}`,
|
|
339
|
+
title: "Archive conversation",
|
|
340
|
+
onClick: () => onArchive(conversation.threadId),
|
|
341
|
+
className: "invisible rounded p-1 text-muted-foreground hover:bg-background hover:text-foreground group-hover:visible focus:visible",
|
|
342
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArchiveIcon, { className: "size-3.5" })
|
|
343
|
+
}
|
|
344
|
+
)
|
|
345
|
+
]
|
|
346
|
+
},
|
|
347
|
+
conversation.threadId
|
|
348
|
+
);
|
|
349
|
+
})
|
|
350
|
+
] }, group)),
|
|
351
|
+
hasNextPage ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
352
|
+
"button",
|
|
353
|
+
{
|
|
354
|
+
type: "button",
|
|
355
|
+
disabled: isFetchingNextPage,
|
|
356
|
+
onClick: onLoadMore,
|
|
357
|
+
className: "mt-1 w-full rounded-lg py-2 text-xs text-muted-foreground hover:bg-accent disabled:opacity-50",
|
|
358
|
+
children: isFetchingNextPage ? "Loading…" : "Load older sessions"
|
|
359
|
+
}
|
|
360
|
+
) : visibleCount > 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "py-2 text-center text-[10px] text-muted-foreground/70", children: "No more sessions" }) : null
|
|
361
|
+
] })
|
|
362
|
+
]
|
|
363
|
+
}
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
exports.ConversationHistoryPanel = ConversationHistoryPanel;
|
|
367
|
+
exports.conversationTimeGroup = conversationTimeGroup;
|
|
368
|
+
exports.isAutomatedConversation = isAutomatedConversation;
|
|
369
|
+
//# sourceMappingURL=conversation-history-panel.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-history-panel.cjs","sources":["../../../src/chat-ui/header/conversation-history-panel.tsx"],"sourcesContent":["import type { ConversationSummary } from \"@athenaintel/agent-runtime\";\nimport {\n ArchiveIcon,\n BotIcon,\n LoaderCircleIcon,\n MessageSquareIcon,\n PlusIcon,\n RefreshCwIcon,\n SearchIcon,\n} from \"lucide-react\";\nimport {\n type ChangeEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { conversationDisplayTitle } from \"../../threads/use-rest-conversation-history\";\nimport { assetTypeToThumb } from \"../mentions/suggestions/data/sources/asset-type-icons\";\n\nexport type ConversationActivityFilter = \"all\" | \"chat\" | \"automated\";\nexport type ConversationTimeGroup =\n | \"Today\"\n | \"Yesterday\"\n | \"This Week\"\n | \"This Month\"\n | \"Older\";\n\nconst TIME_GROUPS: readonly ConversationTimeGroup[] = [\n \"Today\",\n \"Yesterday\",\n \"This Week\",\n \"This Month\",\n \"Older\",\n];\n\nconst AUTOMATED_SOURCE_CHANNELS = new Set([\n \"api\",\n \"email\",\n \"orchestration\",\n \"slack\",\n \"sms\",\n \"task\",\n \"teams\",\n]);\n\n/** Mirrors Agora's persisted background-run classification for list metadata. */\nexport function isAutomatedConversation(\n conversation: Pick<ConversationSummary, \"sourceChannel\" | \"triggerType\">,\n): boolean {\n const sourceChannel = conversation.sourceChannel?.trim().toLowerCase();\n if (sourceChannel && AUTOMATED_SOURCE_CHANNELS.has(sourceChannel))\n return true;\n const triggerType = conversation.triggerType?.trim().toLowerCase();\n return Boolean(triggerType && triggerType !== \"manual\");\n}\n\nexport function conversationTimeGroup(\n value: string,\n now: Date = new Date(),\n): ConversationTimeGroup {\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return \"Older\";\n const startOfToday = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n );\n const startOfYesterday = new Date(startOfToday.getTime() - 86_400_000);\n const startOfWeek = new Date(\n startOfToday.getTime() - startOfToday.getDay() * 86_400_000,\n );\n const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);\n if (date >= startOfToday) return \"Today\";\n if (date >= startOfYesterday) return \"Yesterday\";\n if (date >= startOfWeek) return \"This Week\";\n if (date >= startOfMonth) return \"This Month\";\n return \"Older\";\n}\n\nexport interface ConversationHistoryPanelProps {\n conversations: readonly ConversationSummary[];\n activeThreadId: string;\n search: string;\n onSearchChange: (search: string) => void;\n activityFilter: ConversationActivityFilter;\n onActivityFilterChange: (filter: ConversationActivityFilter) => void;\n originFilter: string;\n onOriginFilterChange: (origin: string) => void;\n onSelect: (threadId: string) => void;\n onNewChat: () => void;\n onRefresh: () => void;\n onArchive: (threadId: string) => void;\n onSetReadState: (threadId: string, isUnread: boolean) => void;\n isLoading?: boolean;\n isRefreshing?: boolean;\n hasNextPage?: boolean;\n isFetchingNextPage?: boolean;\n onLoadMore?: () => void;\n /**\n * The pointer has rested on a conversation row for `hoverIntentDelayMs`:\n * the user is likely to open it next. Hosts wake and pre-dial the thread\n * here so the click lands on a warm instance with its hello in hand.\n */\n onHoverIntent?: (threadId: string) => void;\n /** The pointer left a row whose intent had fired. */\n onHoverIntentEnd?: (threadId: string) => void;\n /** Dwell before a hover counts as intent; a pass-through never fires. */\n hoverIntentDelayMs?: number;\n}\n\nfunction originKey(conversation: ConversationSummary): string {\n return conversation.appId ?? conversation.sourceChannel ?? \"unknown\";\n}\n\nfunction originLabel(value: string): string {\n const normalized = value.toLowerCase();\n if (normalized.includes(\"chrome\")) return \"Chrome\";\n if (normalized.includes(\"powerpoint\")) return \"PowerPoint\";\n if (normalized.includes(\"word\")) return \"Word\";\n if (normalized.includes(\"excel\")) return \"Excel\";\n if (normalized.includes(\"office\")) return \"Office\";\n if (normalized === \"web\" || normalized.includes(\"olympus\")) return \"Athena\";\n if (normalized.includes(\"mobile\")) return \"Mobile\";\n if (value === \"unknown\") return \"Legacy\";\n return value.replace(/^athena[-_]/, \"\").replaceAll(\"_\", \" \");\n}\n\nfunction relativeTime(value: string): string {\n const timestamp = Date.parse(value);\n if (!Number.isFinite(timestamp)) return \"\";\n const elapsed = Math.max(0, Date.now() - timestamp);\n const minutes = Math.floor(elapsed / 60_000);\n if (minutes < 1) return \"<1m ago\";\n if (minutes < 60) return `${minutes}m ago`;\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return `${hours}h ${minutes % 60}m ago`;\n const days = Math.floor(hours / 24);\n return days < 7 ? `${days}d ago` : new Date(timestamp).toLocaleDateString();\n}\n\nfunction ConversationTypeIcon({\n conversation,\n automated,\n}: {\n conversation: ConversationSummary;\n automated: boolean;\n}) {\n if (conversation.state === \"running\") {\n return (\n <LoaderCircleIcon\n aria-label=\"Conversation running\"\n className=\"mt-0.5 size-4 shrink-0 animate-spin text-primary\"\n />\n );\n }\n const thumbnail = assetTypeToThumb(conversation.assetType ?? \"session\");\n if (thumbnail) {\n return <img src={thumbnail} alt=\"\" className=\"mt-0.5 size-4 shrink-0\" />;\n }\n return automated ? (\n <BotIcon className=\"mt-0.5 size-4 shrink-0 text-primary\" />\n ) : (\n <MessageSquareIcon className=\"mt-0.5 size-4 shrink-0 text-emerald-500\" />\n );\n}\n\nexport function ConversationHistoryPanel({\n conversations,\n activeThreadId,\n search,\n onSearchChange,\n activityFilter,\n onActivityFilterChange,\n originFilter,\n onOriginFilterChange,\n onSelect,\n onNewChat,\n onRefresh,\n onArchive,\n onSetReadState,\n isLoading = false,\n isRefreshing = false,\n hasNextPage = false,\n isFetchingNextPage = false,\n onLoadMore,\n onHoverIntent,\n onHoverIntentEnd,\n hoverIntentDelayMs = 150,\n}: ConversationHistoryPanelProps) {\n // Hover intent: one dwell timer for the row under the pointer; a row the\n // pointer merely crosses never fires. The id whose intent fired is kept so\n // its end is reported exactly once — on leave, when the row disappears\n // (filter, archive, refresh) or when the panel closes under the pointer.\n // The callbacks are read through refs so an inline handler's identity\n // changing on a parent re-render neither re-arms nor ends anything.\n const hoverTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const hoverIntentThreadId = useRef<string | null>(null);\n const onHoverIntentRef = useRef(onHoverIntent);\n onHoverIntentRef.current = onHoverIntent;\n const onHoverIntentEndRef = useRef(onHoverIntentEnd);\n onHoverIntentEndRef.current = onHoverIntentEnd;\n const cancelHoverTimer = useCallback(() => {\n if (hoverTimer.current === null) return;\n clearTimeout(hoverTimer.current);\n hoverTimer.current = null;\n }, []);\n const endHoverIntent = useCallback(() => {\n const threadId = hoverIntentThreadId.current;\n if (threadId === null) return;\n hoverIntentThreadId.current = null;\n onHoverIntentEndRef.current?.(threadId);\n }, []);\n useEffect(\n () => () => {\n cancelHoverTimer();\n endHoverIntent();\n },\n [cancelHoverTimer, endHoverIntent],\n );\n const handleRowEnter = (threadId: string) => {\n if (!onHoverIntentRef.current) return;\n cancelHoverTimer();\n hoverTimer.current = setTimeout(() => {\n hoverTimer.current = null;\n hoverIntentThreadId.current = threadId;\n onHoverIntentRef.current?.(threadId);\n }, hoverIntentDelayMs);\n };\n const handleRowLeave = (threadId: string) => {\n cancelHoverTimer();\n if (hoverIntentThreadId.current !== threadId) return;\n endHoverIntent();\n };\n const origins = useMemo(\n () => [...new Set(conversations.map(originKey))].sort(),\n [conversations],\n );\n const grouped = useMemo(() => {\n const visible = conversations.filter((conversation) => {\n const automated = isAutomatedConversation(conversation);\n if (activityFilter === \"chat\" && automated) return false;\n if (activityFilter === \"automated\" && !automated) return false;\n return originFilter === \"all\" || originKey(conversation) === originFilter;\n });\n const byGroup = new Map<ConversationTimeGroup, ConversationSummary[]>();\n for (const conversation of visible) {\n const group = conversationTimeGroup(conversation.updatedAt);\n const items = byGroup.get(group) ?? [];\n items.push(conversation);\n byGroup.set(group, items);\n }\n return TIME_GROUPS.flatMap((group) => {\n const items = byGroup.get(group);\n return items ? [{ group, items }] : [];\n });\n }, [activityFilter, conversations, originFilter]);\n // The hovered row left the list (filter, archive, refresh): no leave event\n // will come for it, so its intent ends here.\n useEffect(() => {\n const threadId = hoverIntentThreadId.current;\n if (threadId === null) return;\n const stillVisible = grouped.some(({ items }) =>\n items.some((conversation) => conversation.threadId === threadId),\n );\n if (!stillVisible) endHoverIntent();\n }, [grouped, endHoverIntent]);\n const visibleCount = grouped.reduce(\n (count, group) => count + group.items.length,\n 0,\n );\n const handleSearch = (event: ChangeEvent<HTMLInputElement>) =>\n onSearchChange(event.target.value);\n\n return (\n <section\n aria-label=\"Conversation history\"\n className=\"border-b border-border bg-background px-2 pb-2\"\n data-testid=\"conversation-history-panel\"\n >\n <div className=\"flex h-10 items-center gap-1.5 px-1\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground\">\n Sessions\n </h2>\n <button\n type=\"button\"\n aria-label=\"Refresh sessions\"\n title=\"Refresh sessions\"\n disabled={isRefreshing}\n onClick={onRefresh}\n className=\"ml-auto rounded-md p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-50\"\n >\n <RefreshCwIcon\n className={cn(\"size-3.5\", isRefreshing && \"animate-spin\")}\n />\n </button>\n <button\n type=\"button\"\n onClick={onNewChat}\n className=\"flex h-7 shrink-0 items-center gap-1 rounded-md bg-primary px-2 text-[11px] font-medium text-primary-foreground\"\n >\n <PlusIcon className=\"size-3\" /> New\n </button>\n </div>\n <label className=\"relative block min-w-0 px-1 pb-2\">\n <SearchIcon className=\"pointer-events-none absolute left-3 top-1/2 size-3.5 -translate-y-[calc(50%+0.25rem)] text-muted-foreground\" />\n <span className=\"sr-only\">Search sessions</span>\n <input\n value={search}\n onChange={handleSearch}\n placeholder=\"Search sessions...\"\n className=\"h-8 w-full rounded-md border border-border bg-muted/40 pl-7 pr-2 text-xs outline-none focus:border-primary focus:bg-background\"\n />\n </label>\n <div className=\"flex gap-1 overflow-x-auto px-1 pb-2 text-[11px]\">\n {([\"all\", \"chat\", \"automated\"] as const).map((filter) => (\n <button\n key={filter}\n type=\"button\"\n onClick={() => onActivityFilterChange(filter)}\n className={cn(\n \"rounded-full border px-2 py-1 capitalize\",\n activityFilter === filter\n ? \"border-primary bg-primary/10 text-primary\"\n : \"border-border text-muted-foreground\",\n )}\n >\n {filter === \"chat\"\n ? \"Chats\"\n : filter === \"automated\"\n ? \"Automations\"\n : \"All\"}\n </button>\n ))}\n <select\n aria-label=\"Filter by origin\"\n value={originFilter}\n onChange={(event) => onOriginFilterChange(event.target.value)}\n className=\"ml-auto rounded-full border border-border bg-background px-2 text-[11px] text-muted-foreground\"\n >\n <option value=\"all\">All origins</option>\n {origins.map((origin) => (\n <option key={origin} value={origin}>\n {originLabel(origin)}\n </option>\n ))}\n </select>\n </div>\n <div className=\"max-h-[min(60vh,28rem)] overflow-y-auto px-0.5\">\n {isLoading ? (\n <div className=\"flex items-center gap-2 px-2 py-4 text-xs text-muted-foreground\">\n <LoaderCircleIcon className=\"size-3.5 animate-spin\" /> Loading\n sessions…\n </div>\n ) : visibleCount === 0 ? (\n <p className=\"px-2 py-4 text-xs text-muted-foreground\">\n No matching sessions.\n </p>\n ) : (\n grouped.map(({ group, items }) => (\n <div key={group}>\n <h3 className=\"px-2 pb-1 pt-2 text-[10px] font-semibold uppercase tracking-[0.08em] text-muted-foreground/75\">\n {group}\n </h3>\n {items.map((conversation) => {\n const automated = isAutomatedConversation(conversation);\n return (\n <div\n key={conversation.threadId}\n className={cn(\n \"group flex items-start gap-2 rounded-md px-2 py-2 hover:bg-accent\",\n conversation.threadId === activeThreadId &&\n \"bg-primary/10 text-primary\",\n )}\n onMouseEnter={() => handleRowEnter(conversation.threadId)}\n onMouseLeave={() => handleRowLeave(conversation.threadId)}\n >\n <button\n type=\"button\"\n onClick={() => {\n onSelect(conversation.threadId);\n if (conversation.isUnread) {\n onSetReadState(conversation.threadId, false);\n }\n }}\n className=\"flex min-w-0 flex-1 items-start gap-2 text-left\"\n >\n <ConversationTypeIcon\n conversation={conversation}\n automated={automated}\n />\n <span className=\"min-w-0 flex-1\">\n <span className=\"flex items-start gap-1\">\n <span className=\"line-clamp-2 flex-1 text-xs font-medium leading-snug\">\n {conversationDisplayTitle(conversation)}\n </span>\n {conversation.isUnread ? (\n <span\n aria-label=\"Unread\"\n className=\"mt-1 size-1.5 shrink-0 rounded-full bg-primary\"\n />\n ) : null}\n </span>\n <span className=\"mt-0.5 flex items-center gap-1.5 text-[10px] text-muted-foreground\">\n <span>{relativeTime(conversation.updatedAt)}</span>\n <span aria-hidden=\"true\">·</span>\n <span className=\"truncate\">\n {originLabel(originKey(conversation))}\n </span>\n </span>\n </span>\n </button>\n <button\n type=\"button\"\n aria-label={`Archive ${conversationDisplayTitle(conversation)}`}\n title=\"Archive conversation\"\n onClick={() => onArchive(conversation.threadId)}\n className=\"invisible rounded p-1 text-muted-foreground hover:bg-background hover:text-foreground group-hover:visible focus:visible\"\n >\n <ArchiveIcon className=\"size-3.5\" />\n </button>\n </div>\n );\n })}\n </div>\n ))\n )}\n {hasNextPage ? (\n <button\n type=\"button\"\n disabled={isFetchingNextPage}\n onClick={onLoadMore}\n className=\"mt-1 w-full rounded-lg py-2 text-xs text-muted-foreground hover:bg-accent disabled:opacity-50\"\n >\n {isFetchingNextPage ? \"Loading…\" : \"Load older sessions\"}\n </button>\n ) : visibleCount > 0 ? (\n <p className=\"py-2 text-center text-[10px] text-muted-foreground/70\">\n No more sessions\n </p>\n ) : null}\n </div>\n </section>\n );\n}\n"],"names":["jsx","LoaderCircleIcon","assetTypeToThumb","BotIcon","MessageSquareIcon","useRef","useCallback","useEffect","useMemo","jsxs","RefreshCwIcon","cn","PlusIcon","SearchIcon","conversationDisplayTitle","ArchiveIcon"],"mappings":"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"}
|