@athenaintel/react 0.18.0 → 0.20.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 +195 -7
- 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 +362 -0
- package/dist/assets/use-asset-embed.cjs.map +1 -0
- package/dist/assets/use-asset-embed.js +362 -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 +171 -0
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -0
- package/dist/chat/StatewireApprovalCard.d.ts +59 -2
- package/dist/chat/StatewireApprovalCard.js +171 -0
- package/dist/chat/StatewireApprovalCard.js.map +1 -0
- package/dist/chat/StatewireClientToolBridge.cjs +50 -0
- package/dist/chat/StatewireClientToolBridge.cjs.map +1 -0
- package/dist/chat/StatewireClientToolBridge.d.ts +3 -3
- package/dist/chat/StatewireClientToolBridge.js +50 -0
- package/dist/chat/StatewireClientToolBridge.js.map +1 -0
- package/dist/chat/StatewireQueuedMessages.cjs +432 -0
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -0
- package/dist/chat/StatewireQueuedMessages.d.ts +104 -6
- package/dist/chat/StatewireQueuedMessages.js +432 -0
- package/dist/chat/StatewireQueuedMessages.js.map +1 -0
- package/dist/chat/athena-citation-links.cjs +326 -0
- package/dist/chat/athena-citation-links.cjs.map +1 -0
- package/dist/chat/athena-citation-links.js +326 -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-approval.d.ts +1 -1
- 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 +73 -0
- package/dist/chat/statewire-client-tools.cjs.map +1 -0
- package/dist/chat/statewire-client-tools.d.ts +15 -21
- package/dist/chat/statewire-client-tools.js +73 -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.d.ts +52 -11
- 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 +361 -0
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +81 -21
- package/dist/chat/super-grouping/SuperGroupingCard.js +361 -0
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.cjs +151 -0
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.d.ts +91 -0
- package/dist/chat/super-grouping/activity-timeline.js +151 -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.d.ts +13 -10
- 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.d.ts +12 -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/toolkit-map.cjs +96 -0
- package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -0
- package/dist/chat/super-grouping/toolkit-map.d.ts +8 -1
- 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 +23 -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 +23 -0
- package/dist/chat/use-athena-run-live.js.map +1 -0
- package/dist/chat/use-statewire-approval-request.cjs +46 -0
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -0
- package/dist/chat/use-statewire-approval-request.d.ts +44 -0
- package/dist/chat/use-statewire-approval-request.js +46 -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 +590 -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 +590 -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.d.ts +11 -1
- 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 +139 -0
- package/dist/chat-ui/index.cjs.map +1 -0
- package/dist/chat-ui/index.d.ts +11 -4
- package/dist/chat-ui/index.js +139 -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 +208 -0
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-chip.js +208 -0
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.cjs +184 -0
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.d.ts +24 -2
- package/dist/chat-ui/mentions/mention-extension.js +184 -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 +62 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +62 -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.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 +123 -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 +10 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +123 -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/mentions/suggestions/shims.d.ts +0 -4
- 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 +343 -0
- package/dist/chat-ui/messages/message-components.cjs.map +1 -0
- package/dist/chat-ui/messages/message-components.d.ts +13 -1
- package/dist/chat-ui/messages/message-components.js +343 -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 +65 -0
- package/dist/chat-ui/messages/runtime-message.cjs.map +1 -0
- package/dist/chat-ui/messages/runtime-message.d.ts +2 -3
- package/dist/chat-ui/messages/runtime-message.js +65 -0
- package/dist/chat-ui/messages/runtime-message.js.map +1 -0
- package/dist/chat-ui/messages/statewire-continue-run.cjs +154 -0
- package/dist/chat-ui/messages/statewire-continue-run.cjs.map +1 -0
- package/dist/chat-ui/messages/statewire-continue-run.d.ts +52 -7
- package/dist/chat-ui/messages/statewire-continue-run.js +154 -0
- package/dist/chat-ui/messages/statewire-continue-run.js.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs +61 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.d.ts +5 -2
- package/dist/chat-ui/messages/user-edit-composer.js +61 -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/statewire.cjs +39 -0
- package/dist/chat-ui/statewire.cjs.map +1 -0
- package/dist/chat-ui/statewire.d.ts +19 -0
- package/dist/chat-ui/statewire.js +39 -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.d.ts +7 -1
- 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 +134 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -0
- package/dist/chat-ui/thread/statewire-history-edge.d.ts +52 -0
- package/dist/chat-ui/thread/statewire-history-edge.js +134 -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.d.ts +1 -1
- 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.d.ts +4 -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 +283 -30852
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +27 -10
- package/dist/index.js +155 -30711
- 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/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 +270 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.js +270 -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 +86 -0
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-list.js +86 -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 +236 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +236 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs +117 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.js +117 -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 +433 -0
- package/dist/packages/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/messages.js +433 -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 +33 -0
- package/dist/packages/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/protocol.js +33 -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 +47 -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 +47 -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/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 +6 -0
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-transport.js +6 -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-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 +1802 -0
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-metadata.js +1802 -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-edit-submit.cjs +28 -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 +28 -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 +138 -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 +138 -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 +387 -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 +387 -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 +403 -0
- package/dist/provider/AthenaProvider.cjs.map +1 -0
- package/dist/provider/AthenaProvider.d.ts +4 -2
- package/dist/provider/AthenaProvider.js +403 -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 +17 -9
- 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.d.ts +12 -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.d.ts +38 -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 +67 -0
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -0
- package/dist/runtime/statewire-lifecycle.d.ts +25 -0
- package/dist/runtime/statewire-lifecycle.js +67 -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.d.ts +13 -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 +179 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +36 -5
- package/dist/runtime/useAthenaStatewireRuntime.js +180 -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 +70 -0
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -0
- package/dist/threads/conversation-list-fetcher.js +70 -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.d.ts +8 -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 +231 -0
- package/dist/threads/statewire-thread-list.cjs.map +1 -0
- package/dist/threads/statewire-thread-list.d.ts +20 -4
- package/dist/threads/statewire-thread-list.js +231 -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 +79 -0
- package/dist/threads/use-rest-conversation-history.cjs.map +1 -0
- package/dist/threads/use-rest-conversation-history.js +79 -0
- package/dist/threads/use-rest-conversation-history.js.map +1 -0
- package/dist/threads/use-statewire-conversation-history.cjs +243 -0
- package/dist/threads/use-statewire-conversation-history.cjs.map +1 -0
- package/dist/threads/use-statewire-conversation-history.js +243 -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 +56 -0
- package/dist/tools/index.cjs.map +1 -0
- package/dist/tools/index.d.ts +15 -0
- package/dist/tools/index.js +56 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/misc-tool-uis.cjs +54 -0
- package/dist/tools/misc-tool-uis.cjs.map +1 -0
- package/dist/tools/misc-tool-uis.d.ts +2 -0
- package/dist/tools/misc-tool-uis.js +54 -0
- package/dist/tools/misc-tool-uis.js.map +1 -0
- package/dist/tools/primitives.cjs +166 -0
- package/dist/tools/primitives.cjs.map +1 -0
- package/dist/tools/primitives.d.ts +41 -0
- package/dist/tools/primitives.js +166 -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 +667 -0
- package/dist/tools/tool-fallback.cjs.map +1 -0
- package/dist/tools/tool-fallback.d.ts +78 -6
- package/dist/tools/tool-fallback.js +667 -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.d.ts +10 -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.d.ts +1 -23
- 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 +89 -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 +89 -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/package.json +35 -19
- 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/auth.cjs.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/chat/ComposerEditorContext.d.ts +0 -36
- package/dist/chat/super-grouping/tool-status-labels.d.ts +0 -1
- package/dist/chat/tiptap-composer.d.ts +0 -7
- package/dist/chat-ui.cjs +0 -2667
- package/dist/chat-ui.cjs.map +0 -1
- package/dist/chat-ui.js +0 -2668
- 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/use-rest-conversation-history-Bs5qn5G3.js +0 -37322
- package/dist/use-rest-conversation-history-Bs5qn5G3.js.map +0 -1
- package/dist/use-rest-conversation-history-Dm0rdQgT.cjs +0 -37358
- package/dist/use-rest-conversation-history-Dm0rdQgT.cjs.map +0 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const athenaDiagnostics = require("../../../../diagnostics/athena-diagnostics.cjs");
|
|
4
|
+
const itemCache = require("./item-cache.cjs");
|
|
5
|
+
const scopeRegistry = require("./scope-registry.cjs");
|
|
6
|
+
const MAX_ERROR_RETRIES = 3;
|
|
7
|
+
function selectItems(store, scope, query, _targetCount, parentScope) {
|
|
8
|
+
const state = store.state;
|
|
9
|
+
const scopeId = typeof scope === "string" ? scope : scope.id;
|
|
10
|
+
const parentScopeId = parentScope ? typeof parentScope === "string" ? parentScope : parentScope.id : void 0;
|
|
11
|
+
const items = itemCache.getFilteredItems(state.cache, scopeId, query);
|
|
12
|
+
let isFetching = false;
|
|
13
|
+
let hasMore = true;
|
|
14
|
+
try {
|
|
15
|
+
const fetchState = scopeRegistry.getFetchState(state.registry, scopeId, query, parentScopeId);
|
|
16
|
+
isFetching = fetchState.isFetching;
|
|
17
|
+
hasMore = fetchState.hasNextPage;
|
|
18
|
+
} catch {
|
|
19
|
+
hasMore = false;
|
|
20
|
+
}
|
|
21
|
+
return { items, isFetching, hasMore };
|
|
22
|
+
}
|
|
23
|
+
function triggerFetchIfNeeded(store, scope, query, _targetCount, parentScope) {
|
|
24
|
+
const scopeId = typeof scope === "string" ? scope : scope.id;
|
|
25
|
+
const parentScopeId = parentScope ? typeof parentScope === "string" ? parentScope : parentScope.id : void 0;
|
|
26
|
+
const state = store.state;
|
|
27
|
+
let entry;
|
|
28
|
+
try {
|
|
29
|
+
entry = scopeRegistry.getEntry(state.registry, scopeId, parentScopeId);
|
|
30
|
+
} catch {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const fetchState = scopeRegistry.getFetchState(state.registry, scopeId, query, parentScopeId);
|
|
34
|
+
if (fetchState.isFetching || !fetchState.hasNextPage || fetchState.error) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const meta = fetchState.meta || {};
|
|
38
|
+
if ((meta.fetchAttempts || 0) >= 10) return;
|
|
39
|
+
scopeRegistry.updateFetchState(state.registry, scopeId, query, { isFetching: true }, parentScopeId);
|
|
40
|
+
store.setState((prev) => ({ ...prev }));
|
|
41
|
+
const sourceFn = entry.sourceFn;
|
|
42
|
+
const sourceConfig = entry.sourceConfig;
|
|
43
|
+
sourceFn({
|
|
44
|
+
scope: scopeId,
|
|
45
|
+
query,
|
|
46
|
+
fetchState,
|
|
47
|
+
sourceConfig
|
|
48
|
+
}).then((result) => {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
const currentState = store.state;
|
|
51
|
+
itemCache.addItems(currentState.cache, result.items, scopeId);
|
|
52
|
+
if (result.sources) {
|
|
53
|
+
for (const src of result.sources) {
|
|
54
|
+
try {
|
|
55
|
+
scopeRegistry.getEntry(currentState.registry, src.scope);
|
|
56
|
+
} catch {
|
|
57
|
+
scopeRegistry.registerSource(
|
|
58
|
+
currentState.registry,
|
|
59
|
+
src.scope,
|
|
60
|
+
src.sourceFn,
|
|
61
|
+
src.sourceConfig,
|
|
62
|
+
src.isFlat
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (result.bindings) {
|
|
68
|
+
for (const binding of result.bindings) {
|
|
69
|
+
scopeRegistry.bindScopes(currentState.registry, binding.browseScope, binding.searchScope);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const currentMeta = fetchState.meta || {};
|
|
73
|
+
const consumed = ((_a = result.pagination) == null ? void 0 : _a.consumedCount) ?? result.items.length;
|
|
74
|
+
const newValidated = (currentMeta.validatedCount || 0) + consumed;
|
|
75
|
+
scopeRegistry.updateFetchState(
|
|
76
|
+
currentState.registry,
|
|
77
|
+
scopeId,
|
|
78
|
+
query,
|
|
79
|
+
{
|
|
80
|
+
isFetching: false,
|
|
81
|
+
hasNextPage: ((_b = result.pagination) == null ? void 0 : _b.hasMore) ?? false,
|
|
82
|
+
error: null,
|
|
83
|
+
meta: {
|
|
84
|
+
...currentMeta,
|
|
85
|
+
...result.meta,
|
|
86
|
+
validatedCount: newValidated,
|
|
87
|
+
fetchAttempts: (currentMeta.fetchAttempts || 0) + 1,
|
|
88
|
+
errorAttempts: 0
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
parentScopeId
|
|
92
|
+
);
|
|
93
|
+
store.setState((prev) => ({ ...prev }));
|
|
94
|
+
}).catch((error) => {
|
|
95
|
+
const currentState = store.state;
|
|
96
|
+
const currentMeta = fetchState.meta || {};
|
|
97
|
+
const errorAttempts = (currentMeta.errorAttempts || 0) + 1;
|
|
98
|
+
const retriable = errorAttempts < MAX_ERROR_RETRIES;
|
|
99
|
+
if (retriable) {
|
|
100
|
+
athenaDiagnostics.athenaDiagnostics.emit("mentions.fetch.error", {
|
|
101
|
+
level: "warn",
|
|
102
|
+
data: {
|
|
103
|
+
scopeId,
|
|
104
|
+
attempt: errorAttempts,
|
|
105
|
+
retriable,
|
|
106
|
+
error: error instanceof Error ? error.message : String(error)
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
} else {
|
|
110
|
+
athenaDiagnostics.athenaDiagnostics.error(
|
|
111
|
+
"mentions.fetch.error",
|
|
112
|
+
error,
|
|
113
|
+
{ code: "mentions_fetch_failed", message: `Mention suggestions failed for ${scopeId}` },
|
|
114
|
+
{ scopeId, attempt: errorAttempts, retriable }
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
scopeRegistry.updateFetchState(
|
|
118
|
+
currentState.registry,
|
|
119
|
+
scopeId,
|
|
120
|
+
query,
|
|
121
|
+
{
|
|
122
|
+
isFetching: false,
|
|
123
|
+
hasNextPage: retriable,
|
|
124
|
+
error: retriable ? null : error instanceof Error ? error : new Error(String(error)),
|
|
125
|
+
meta: { ...currentMeta, errorAttempts }
|
|
126
|
+
},
|
|
127
|
+
parentScopeId
|
|
128
|
+
);
|
|
129
|
+
store.setState((prev) => ({ ...prev }));
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
exports.selectItems = selectItems;
|
|
133
|
+
exports.triggerFetchIfNeeded = triggerFetchIfNeeded;
|
|
134
|
+
//# sourceMappingURL=orchestrator.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/data/orchestrator.ts"],"sourcesContent":["/**\n * Mention Orchestrator — Async data fetching with registry + cache.\n *\n * selectItems (pure read) + triggerFetchIfNeeded (async fetch).\n */\n\nimport { athenaDiagnostics } from \"../../../../diagnostics/athena-diagnostics\";\nimport type { MenuItem, MenuScope, FetchMetadata, SourceToRegister } from \"./types\";\nimport type { MentionSuggestionsStore, MentionSuggestionsStoreState } from \"./use-mention-suggestions\";\nimport { getFilteredItems, addItems } from \"./item-cache\";\nimport {\n getEntry,\n getFetchState,\n updateFetchState,\n registerSource,\n bindScopes,\n} from \"./scope-registry\";\nimport { filterItems } from \"./utils/filter-items\";\n\n/** Consecutive fetch failures tolerated before a scope+query stops retrying. */\nconst MAX_ERROR_RETRIES = 3;\n\n/**\n * Select items for a given scope + query from the cache.\n * Pure, synchronous read — no side effects.\n */\nexport function selectItems(\n store: MentionSuggestionsStore,\n scope: MenuScope | { id: string },\n query: string,\n _targetCount?: number,\n parentScope?: MenuScope | { id: string },\n): { items: MenuItem[]; isFetching: boolean; hasMore: boolean } {\n const state = store.state;\n const scopeId = typeof scope === \"string\" ? scope : scope.id;\n const parentScopeId = parentScope\n ? typeof parentScope === \"string\" ? parentScope : parentScope.id\n : undefined;\n\n // Read from cache\n const items = getFilteredItems(state.cache, scopeId, query);\n\n // Read fetch state from registry\n let isFetching = false;\n let hasMore = true;\n\n try {\n const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);\n isFetching = fetchState.isFetching;\n hasMore = fetchState.hasNextPage;\n } catch {\n // Scope not registered — no more to fetch\n hasMore = false;\n }\n\n return { items, isFetching, hasMore };\n}\n\n/**\n * Trigger an async fetch if needed.\n * Called by useMenuItems when cache < target AND hasMore AND !fetching.\n */\nexport function triggerFetchIfNeeded(\n store: MentionSuggestionsStore,\n scope: MenuScope | { id: string },\n query: string,\n _targetCount?: number,\n parentScope?: MenuScope | { id: string },\n): void {\n const scopeId = typeof scope === \"string\" ? scope : scope.id;\n const parentScopeId = parentScope\n ? typeof parentScope === \"string\" ? parentScope : parentScope.id\n : undefined;\n\n const state = store.state;\n\n // Check if scope is registered\n let entry;\n try {\n entry = getEntry(state.registry, scopeId, parentScopeId);\n } catch {\n return; // Not registered, nothing to fetch\n }\n\n // Check fetch state\n const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);\n if (fetchState.isFetching || !fetchState.hasNextPage || fetchState.error) {\n return;\n }\n\n // Safety limit\n const meta = (fetchState.meta as FetchMetadata) || {};\n if ((meta.fetchAttempts || 0) >= 10) return;\n\n // Mark as fetching\n updateFetchState(state.registry, scopeId, query, { isFetching: true }, parentScopeId);\n store.setState((prev) => ({ ...prev }));\n\n // Async fetch\n const sourceFn = entry.sourceFn;\n const sourceConfig = entry.sourceConfig;\n\n sourceFn({\n scope: scopeId,\n query,\n fetchState,\n sourceConfig,\n })\n .then((result) => {\n const currentState = store.state;\n\n // Add items to cache with scope tagging\n addItems(currentState.cache, result.items, scopeId);\n\n // Register dynamically discovered sources\n if (result.sources) {\n for (const src of result.sources) {\n try {\n getEntry(currentState.registry, src.scope);\n } catch {\n // Not registered yet — register it\n registerSource(\n currentState.registry,\n src.scope,\n src.sourceFn,\n src.sourceConfig,\n src.isFlat,\n );\n }\n }\n }\n\n // Register dynamically discovered bindings\n if (result.bindings) {\n for (const binding of result.bindings) {\n bindScopes(currentState.registry, binding.browseScope, binding.searchScope);\n }\n }\n\n // Update fetch state\n const currentMeta = (fetchState.meta as FetchMetadata) || {};\n // Advance the server-side offset by the rows the source consumed, which\n // exceeds `items.length` whenever a source drops rows after fetching.\n const consumed = result.pagination?.consumedCount ?? result.items.length;\n const newValidated = (currentMeta.validatedCount || 0) + consumed;\n\n updateFetchState(\n currentState.registry,\n scopeId,\n query,\n {\n isFetching: false,\n hasNextPage: result.pagination?.hasMore ?? false,\n error: null,\n meta: {\n ...currentMeta,\n ...result.meta,\n validatedCount: newValidated,\n fetchAttempts: (currentMeta.fetchAttempts || 0) + 1,\n errorAttempts: 0,\n },\n },\n parentScopeId,\n );\n\n // Trigger re-render\n store.setState((prev) => ({ ...prev }));\n })\n .catch((error) => {\n const currentState = store.state;\n const currentMeta = (fetchState.meta as FetchMetadata) || {};\n const errorAttempts = ((currentMeta.errorAttempts as number) || 0) + 1;\n const retriable = errorAttempts < MAX_ERROR_RETRIES;\n\n // Retriable failures are a warning on the bus; the final one is an\n // error and also lands in the scope's fetch state below.\n if (retriable) {\n athenaDiagnostics.emit(\"mentions.fetch.error\", {\n level: \"warn\",\n data: {\n scopeId,\n attempt: errorAttempts,\n retriable,\n error: error instanceof Error ? error.message : String(error),\n },\n });\n } else {\n athenaDiagnostics.error(\n \"mentions.fetch.error\",\n error,\n { code: \"mentions_fetch_failed\", message: `Mention suggestions failed for ${scopeId}` },\n { scopeId, attempt: errorAttempts, retriable },\n );\n }\n\n updateFetchState(\n currentState.registry,\n scopeId,\n query,\n {\n isFetching: false,\n hasNextPage: retriable,\n error: retriable\n ? null\n : error instanceof Error\n ? error\n : new Error(String(error)),\n meta: { ...currentMeta, errorAttempts },\n },\n parentScopeId,\n );\n\n store.setState((prev) => ({ ...prev }));\n });\n}\n"],"names":["getFilteredItems","getFetchState","getEntry","updateFetchState","addItems","registerSource","bindScopes","athenaDiagnostics"],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { athenaDiagnostics } from "../../../../diagnostics/athena-diagnostics.js";
|
|
2
|
+
import { getFilteredItems, addItems } from "./item-cache.js";
|
|
3
|
+
import { getFetchState, getEntry, updateFetchState, registerSource, bindScopes } from "./scope-registry.js";
|
|
4
|
+
const MAX_ERROR_RETRIES = 3;
|
|
5
|
+
function selectItems(store, scope, query, _targetCount, parentScope) {
|
|
6
|
+
const state = store.state;
|
|
7
|
+
const scopeId = typeof scope === "string" ? scope : scope.id;
|
|
8
|
+
const parentScopeId = parentScope ? typeof parentScope === "string" ? parentScope : parentScope.id : void 0;
|
|
9
|
+
const items = getFilteredItems(state.cache, scopeId, query);
|
|
10
|
+
let isFetching = false;
|
|
11
|
+
let hasMore = true;
|
|
12
|
+
try {
|
|
13
|
+
const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);
|
|
14
|
+
isFetching = fetchState.isFetching;
|
|
15
|
+
hasMore = fetchState.hasNextPage;
|
|
16
|
+
} catch {
|
|
17
|
+
hasMore = false;
|
|
18
|
+
}
|
|
19
|
+
return { items, isFetching, hasMore };
|
|
20
|
+
}
|
|
21
|
+
function triggerFetchIfNeeded(store, scope, query, _targetCount, parentScope) {
|
|
22
|
+
const scopeId = typeof scope === "string" ? scope : scope.id;
|
|
23
|
+
const parentScopeId = parentScope ? typeof parentScope === "string" ? parentScope : parentScope.id : void 0;
|
|
24
|
+
const state = store.state;
|
|
25
|
+
let entry;
|
|
26
|
+
try {
|
|
27
|
+
entry = getEntry(state.registry, scopeId, parentScopeId);
|
|
28
|
+
} catch {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);
|
|
32
|
+
if (fetchState.isFetching || !fetchState.hasNextPage || fetchState.error) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const meta = fetchState.meta || {};
|
|
36
|
+
if ((meta.fetchAttempts || 0) >= 10) return;
|
|
37
|
+
updateFetchState(state.registry, scopeId, query, { isFetching: true }, parentScopeId);
|
|
38
|
+
store.setState((prev) => ({ ...prev }));
|
|
39
|
+
const sourceFn = entry.sourceFn;
|
|
40
|
+
const sourceConfig = entry.sourceConfig;
|
|
41
|
+
sourceFn({
|
|
42
|
+
scope: scopeId,
|
|
43
|
+
query,
|
|
44
|
+
fetchState,
|
|
45
|
+
sourceConfig
|
|
46
|
+
}).then((result) => {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
const currentState = store.state;
|
|
49
|
+
addItems(currentState.cache, result.items, scopeId);
|
|
50
|
+
if (result.sources) {
|
|
51
|
+
for (const src of result.sources) {
|
|
52
|
+
try {
|
|
53
|
+
getEntry(currentState.registry, src.scope);
|
|
54
|
+
} catch {
|
|
55
|
+
registerSource(
|
|
56
|
+
currentState.registry,
|
|
57
|
+
src.scope,
|
|
58
|
+
src.sourceFn,
|
|
59
|
+
src.sourceConfig,
|
|
60
|
+
src.isFlat
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (result.bindings) {
|
|
66
|
+
for (const binding of result.bindings) {
|
|
67
|
+
bindScopes(currentState.registry, binding.browseScope, binding.searchScope);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const currentMeta = fetchState.meta || {};
|
|
71
|
+
const consumed = ((_a = result.pagination) == null ? void 0 : _a.consumedCount) ?? result.items.length;
|
|
72
|
+
const newValidated = (currentMeta.validatedCount || 0) + consumed;
|
|
73
|
+
updateFetchState(
|
|
74
|
+
currentState.registry,
|
|
75
|
+
scopeId,
|
|
76
|
+
query,
|
|
77
|
+
{
|
|
78
|
+
isFetching: false,
|
|
79
|
+
hasNextPage: ((_b = result.pagination) == null ? void 0 : _b.hasMore) ?? false,
|
|
80
|
+
error: null,
|
|
81
|
+
meta: {
|
|
82
|
+
...currentMeta,
|
|
83
|
+
...result.meta,
|
|
84
|
+
validatedCount: newValidated,
|
|
85
|
+
fetchAttempts: (currentMeta.fetchAttempts || 0) + 1,
|
|
86
|
+
errorAttempts: 0
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
parentScopeId
|
|
90
|
+
);
|
|
91
|
+
store.setState((prev) => ({ ...prev }));
|
|
92
|
+
}).catch((error) => {
|
|
93
|
+
const currentState = store.state;
|
|
94
|
+
const currentMeta = fetchState.meta || {};
|
|
95
|
+
const errorAttempts = (currentMeta.errorAttempts || 0) + 1;
|
|
96
|
+
const retriable = errorAttempts < MAX_ERROR_RETRIES;
|
|
97
|
+
if (retriable) {
|
|
98
|
+
athenaDiagnostics.emit("mentions.fetch.error", {
|
|
99
|
+
level: "warn",
|
|
100
|
+
data: {
|
|
101
|
+
scopeId,
|
|
102
|
+
attempt: errorAttempts,
|
|
103
|
+
retriable,
|
|
104
|
+
error: error instanceof Error ? error.message : String(error)
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
} else {
|
|
108
|
+
athenaDiagnostics.error(
|
|
109
|
+
"mentions.fetch.error",
|
|
110
|
+
error,
|
|
111
|
+
{ code: "mentions_fetch_failed", message: `Mention suggestions failed for ${scopeId}` },
|
|
112
|
+
{ scopeId, attempt: errorAttempts, retriable }
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
updateFetchState(
|
|
116
|
+
currentState.registry,
|
|
117
|
+
scopeId,
|
|
118
|
+
query,
|
|
119
|
+
{
|
|
120
|
+
isFetching: false,
|
|
121
|
+
hasNextPage: retriable,
|
|
122
|
+
error: retriable ? null : error instanceof Error ? error : new Error(String(error)),
|
|
123
|
+
meta: { ...currentMeta, errorAttempts }
|
|
124
|
+
},
|
|
125
|
+
parentScopeId
|
|
126
|
+
);
|
|
127
|
+
store.setState((prev) => ({ ...prev }));
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
export {
|
|
131
|
+
selectItems,
|
|
132
|
+
triggerFetchIfNeeded
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sources":["../../../../../src/chat-ui/mentions/suggestions/data/orchestrator.ts"],"sourcesContent":["/**\n * Mention Orchestrator — Async data fetching with registry + cache.\n *\n * selectItems (pure read) + triggerFetchIfNeeded (async fetch).\n */\n\nimport { athenaDiagnostics } from \"../../../../diagnostics/athena-diagnostics\";\nimport type { MenuItem, MenuScope, FetchMetadata, SourceToRegister } from \"./types\";\nimport type { MentionSuggestionsStore, MentionSuggestionsStoreState } from \"./use-mention-suggestions\";\nimport { getFilteredItems, addItems } from \"./item-cache\";\nimport {\n getEntry,\n getFetchState,\n updateFetchState,\n registerSource,\n bindScopes,\n} from \"./scope-registry\";\nimport { filterItems } from \"./utils/filter-items\";\n\n/** Consecutive fetch failures tolerated before a scope+query stops retrying. */\nconst MAX_ERROR_RETRIES = 3;\n\n/**\n * Select items for a given scope + query from the cache.\n * Pure, synchronous read — no side effects.\n */\nexport function selectItems(\n store: MentionSuggestionsStore,\n scope: MenuScope | { id: string },\n query: string,\n _targetCount?: number,\n parentScope?: MenuScope | { id: string },\n): { items: MenuItem[]; isFetching: boolean; hasMore: boolean } {\n const state = store.state;\n const scopeId = typeof scope === \"string\" ? scope : scope.id;\n const parentScopeId = parentScope\n ? typeof parentScope === \"string\" ? parentScope : parentScope.id\n : undefined;\n\n // Read from cache\n const items = getFilteredItems(state.cache, scopeId, query);\n\n // Read fetch state from registry\n let isFetching = false;\n let hasMore = true;\n\n try {\n const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);\n isFetching = fetchState.isFetching;\n hasMore = fetchState.hasNextPage;\n } catch {\n // Scope not registered — no more to fetch\n hasMore = false;\n }\n\n return { items, isFetching, hasMore };\n}\n\n/**\n * Trigger an async fetch if needed.\n * Called by useMenuItems when cache < target AND hasMore AND !fetching.\n */\nexport function triggerFetchIfNeeded(\n store: MentionSuggestionsStore,\n scope: MenuScope | { id: string },\n query: string,\n _targetCount?: number,\n parentScope?: MenuScope | { id: string },\n): void {\n const scopeId = typeof scope === \"string\" ? scope : scope.id;\n const parentScopeId = parentScope\n ? typeof parentScope === \"string\" ? parentScope : parentScope.id\n : undefined;\n\n const state = store.state;\n\n // Check if scope is registered\n let entry;\n try {\n entry = getEntry(state.registry, scopeId, parentScopeId);\n } catch {\n return; // Not registered, nothing to fetch\n }\n\n // Check fetch state\n const fetchState = getFetchState(state.registry, scopeId, query, parentScopeId);\n if (fetchState.isFetching || !fetchState.hasNextPage || fetchState.error) {\n return;\n }\n\n // Safety limit\n const meta = (fetchState.meta as FetchMetadata) || {};\n if ((meta.fetchAttempts || 0) >= 10) return;\n\n // Mark as fetching\n updateFetchState(state.registry, scopeId, query, { isFetching: true }, parentScopeId);\n store.setState((prev) => ({ ...prev }));\n\n // Async fetch\n const sourceFn = entry.sourceFn;\n const sourceConfig = entry.sourceConfig;\n\n sourceFn({\n scope: scopeId,\n query,\n fetchState,\n sourceConfig,\n })\n .then((result) => {\n const currentState = store.state;\n\n // Add items to cache with scope tagging\n addItems(currentState.cache, result.items, scopeId);\n\n // Register dynamically discovered sources\n if (result.sources) {\n for (const src of result.sources) {\n try {\n getEntry(currentState.registry, src.scope);\n } catch {\n // Not registered yet — register it\n registerSource(\n currentState.registry,\n src.scope,\n src.sourceFn,\n src.sourceConfig,\n src.isFlat,\n );\n }\n }\n }\n\n // Register dynamically discovered bindings\n if (result.bindings) {\n for (const binding of result.bindings) {\n bindScopes(currentState.registry, binding.browseScope, binding.searchScope);\n }\n }\n\n // Update fetch state\n const currentMeta = (fetchState.meta as FetchMetadata) || {};\n // Advance the server-side offset by the rows the source consumed, which\n // exceeds `items.length` whenever a source drops rows after fetching.\n const consumed = result.pagination?.consumedCount ?? result.items.length;\n const newValidated = (currentMeta.validatedCount || 0) + consumed;\n\n updateFetchState(\n currentState.registry,\n scopeId,\n query,\n {\n isFetching: false,\n hasNextPage: result.pagination?.hasMore ?? false,\n error: null,\n meta: {\n ...currentMeta,\n ...result.meta,\n validatedCount: newValidated,\n fetchAttempts: (currentMeta.fetchAttempts || 0) + 1,\n errorAttempts: 0,\n },\n },\n parentScopeId,\n );\n\n // Trigger re-render\n store.setState((prev) => ({ ...prev }));\n })\n .catch((error) => {\n const currentState = store.state;\n const currentMeta = (fetchState.meta as FetchMetadata) || {};\n const errorAttempts = ((currentMeta.errorAttempts as number) || 0) + 1;\n const retriable = errorAttempts < MAX_ERROR_RETRIES;\n\n // Retriable failures are a warning on the bus; the final one is an\n // error and also lands in the scope's fetch state below.\n if (retriable) {\n athenaDiagnostics.emit(\"mentions.fetch.error\", {\n level: \"warn\",\n data: {\n scopeId,\n attempt: errorAttempts,\n retriable,\n error: error instanceof Error ? error.message : String(error),\n },\n });\n } else {\n athenaDiagnostics.error(\n \"mentions.fetch.error\",\n error,\n { code: \"mentions_fetch_failed\", message: `Mention suggestions failed for ${scopeId}` },\n { scopeId, attempt: errorAttempts, retriable },\n );\n }\n\n updateFetchState(\n currentState.registry,\n scopeId,\n query,\n {\n isFetching: false,\n hasNextPage: retriable,\n error: retriable\n ? null\n : error instanceof Error\n ? error\n : new Error(String(error)),\n meta: { ...currentMeta, errorAttempts },\n },\n parentScopeId,\n );\n\n store.setState((prev) => ({ ...prev }));\n });\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function createScopeRegistry() {
|
|
4
|
+
return {
|
|
5
|
+
entries: {},
|
|
6
|
+
scopeBindings: /* @__PURE__ */ new Map()
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function registerSource(registry, scope, sourceFn, sourceConfig = {}, isFlat2 = false) {
|
|
10
|
+
registry.entries[scope] = {
|
|
11
|
+
scope,
|
|
12
|
+
sourceFn,
|
|
13
|
+
sourceConfig,
|
|
14
|
+
fetchStates: {},
|
|
15
|
+
// Empty until first query
|
|
16
|
+
isFlat: isFlat2
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function getEntry(registry, scope, parentScope) {
|
|
20
|
+
if (registry.entries[scope]) {
|
|
21
|
+
return registry.entries[scope];
|
|
22
|
+
}
|
|
23
|
+
if (parentScope) {
|
|
24
|
+
const parentEntry = getEntry(registry, parentScope);
|
|
25
|
+
const childEntry = {
|
|
26
|
+
scope,
|
|
27
|
+
sourceFn: parentEntry.sourceFn,
|
|
28
|
+
sourceConfig: parentEntry.sourceConfig,
|
|
29
|
+
// Same config as parent
|
|
30
|
+
fetchStates: {},
|
|
31
|
+
// Fresh fetch states for this scope
|
|
32
|
+
isFlat: parentEntry.isFlat
|
|
33
|
+
// Inherit flat mode
|
|
34
|
+
};
|
|
35
|
+
return childEntry;
|
|
36
|
+
}
|
|
37
|
+
throw new Error(`No Source registered for scope: ${scope} (and no parent to inherit from)`);
|
|
38
|
+
}
|
|
39
|
+
function getFetchState(registry, scope, query, parentScope) {
|
|
40
|
+
const entry = getEntry(registry, scope, parentScope);
|
|
41
|
+
const queryKey = query || "*";
|
|
42
|
+
return entry.fetchStates[queryKey] ?? {
|
|
43
|
+
isFetching: false,
|
|
44
|
+
hasNextPage: true,
|
|
45
|
+
// Assume yes until proven otherwise
|
|
46
|
+
fetchNext: null,
|
|
47
|
+
error: null,
|
|
48
|
+
// No error initially
|
|
49
|
+
meta: null
|
|
50
|
+
// Source will initialize this
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function updateFetchState(registry, scope, query, updates, parentScope) {
|
|
54
|
+
const virtualEntry = getEntry(registry, scope, parentScope);
|
|
55
|
+
if (!registry.entries[scope]) {
|
|
56
|
+
registry.entries[scope] = {
|
|
57
|
+
scope,
|
|
58
|
+
sourceFn: virtualEntry.sourceFn,
|
|
59
|
+
sourceConfig: virtualEntry.sourceConfig,
|
|
60
|
+
fetchStates: {},
|
|
61
|
+
isFlat: virtualEntry.isFlat
|
|
62
|
+
// Inherit flat mode from parent
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const entry = registry.entries[scope];
|
|
66
|
+
const queryKey = query || "*";
|
|
67
|
+
if (!entry.fetchStates[queryKey]) {
|
|
68
|
+
entry.fetchStates[queryKey] = {
|
|
69
|
+
isFetching: false,
|
|
70
|
+
hasNextPage: true,
|
|
71
|
+
fetchNext: null,
|
|
72
|
+
error: null,
|
|
73
|
+
meta: null
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
Object.assign(entry.fetchStates[queryKey], updates);
|
|
77
|
+
}
|
|
78
|
+
function bindScopes(registry, browseScope, searchScope) {
|
|
79
|
+
registry.scopeBindings.set(browseScope, searchScope);
|
|
80
|
+
}
|
|
81
|
+
function getSearchScope(registry, browseScope) {
|
|
82
|
+
return registry.scopeBindings.get(browseScope) || null;
|
|
83
|
+
}
|
|
84
|
+
exports.bindScopes = bindScopes;
|
|
85
|
+
exports.createScopeRegistry = createScopeRegistry;
|
|
86
|
+
exports.getEntry = getEntry;
|
|
87
|
+
exports.getFetchState = getFetchState;
|
|
88
|
+
exports.getSearchScope = getSearchScope;
|
|
89
|
+
exports.registerSource = registerSource;
|
|
90
|
+
exports.updateFetchState = updateFetchState;
|
|
91
|
+
//# sourceMappingURL=scope-registry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-registry.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/data/scope-registry.ts"],"sourcesContent":["import { clearByScope, type ItemCache } from './item-cache';\nimport type { FetchState, MenuScope, SourceFn } from './types';\n\n/**\n * Scope Registry\n *\n * Plain object + pure functions for managing source functions.\n * Each scope has a source function, config, and fetch state per query.\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Scope registry entry - per menu scope\n * Stores source function, config, and fetch state per query\n */\nexport interface ScopeRegistryEntry {\n scope: MenuScope;\n sourceFn: SourceFn;\n sourceConfig: any; // Source-specific configuration (can include getters!)\n\n // Fetch state per query text\n // Key: \"*\" = browsing (no query), \"searchText\" = specific search query\n fetchStates: Record<string, FetchState>;\n\n // Flat list mode: if true, items don't get navigatesToScope\n // Use for scopes that should show all items at once (e.g., Folders)\n isFlat?: boolean;\n}\n\n/**\n * Scope registry - plain object\n * Maps MenuScope → ScopeRegistryEntry\n */\nexport interface ScopeRegistry {\n entries: Record<MenuScope, ScopeRegistryEntry>;\n // Scope bindings: browse scope → search scope\n // When a scope has a query, UI switches to the search scope\n // Example: 'root' + query → 'global_search'\n scopeBindings: Map<MenuScope, MenuScope>;\n}\n\n// ============================================================================\n// Utils\n// ============================================================================\n\n/**\n * Create empty registry\n */\nexport function createScopeRegistry(): ScopeRegistry {\n return {\n entries: {},\n scopeBindings: new Map(),\n };\n}\n\n/**\n * Register a source function for a specific scope\n * Creates full entry immediately with empty fetchStates\n *\n * @param registry - Registry to mutate\n * @param scope - Scope identifier\n * @param sourceFn - Pure function to fetch/transform items\n * @param sourceConfig - Any configuration the source function needs (can include getters!)\n * @param isFlat - If true, items won't get navigatesToScope (flat list, no hierarchy)\n */\nexport function registerSource(\n registry: ScopeRegistry,\n scope: MenuScope,\n sourceFn: SourceFn,\n sourceConfig: any = {},\n isFlat: boolean = false\n): void {\n registry.entries[scope] = {\n scope,\n sourceFn,\n sourceConfig,\n fetchStates: {}, // Empty until first query\n isFlat,\n };\n}\n\n/**\n * Unregister a source (cleanup)\n */\nexport function unregisterSource(registry: ScopeRegistry, scope: MenuScope): void {\n delete registry.entries[scope];\n}\n\n/**\n * Get or create entry for scope\n * Auto-inherits source function from parent if not explicitly registered\n *\n * @param registry - Registry to read/mutate\n * @param scope - Scope to get entry for\n * @param parentScope - Optional parent scope (for inheritance)\n * @returns Entry (may be newly created)\n */\nexport function getEntry(\n registry: ScopeRegistry,\n scope: MenuScope,\n parentScope?: MenuScope\n): ScopeRegistryEntry {\n // Check if already exists\n if (registry.entries[scope]) {\n return registry.entries[scope];\n }\n\n // Not registered - try to inherit from parent\n if (parentScope) {\n const parentEntry = getEntry(registry, parentScope);\n\n // Create child entry with inherited sourceFn + sourceConfig + isFlat\n const childEntry: ScopeRegistryEntry = {\n scope,\n sourceFn: parentEntry.sourceFn,\n sourceConfig: parentEntry.sourceConfig, // Same config as parent\n fetchStates: {}, // Fresh fetch states for this scope\n isFlat: parentEntry.isFlat, // Inherit flat mode\n };\n\n // DON'T store it - return virtual entry (store is frozen during reads!)\n return childEntry;\n }\n\n throw new Error(`No Source registered for scope: ${scope} (and no parent to inherit from)`);\n}\n\n/**\n * Get fetch state for a specific scope + query combination\n * Returns a default FetchState if not found\n */\nexport function getFetchState(\n registry: ScopeRegistry,\n scope: MenuScope,\n query: string,\n parentScope?: MenuScope\n): FetchState {\n const entry = getEntry(registry, scope, parentScope);\n const queryKey = query || '*'; // '*' = browsing (no query)\n\n // Return existing fetch state, or a default one\n return (\n entry.fetchStates[queryKey] ?? {\n isFetching: false,\n hasNextPage: true, // Assume yes until proven otherwise\n fetchNext: null,\n error: null, // No error initially\n meta: null, // Source will initialize this\n }\n );\n}\n\n/**\n * Update fetch state (mutates registry - use inside updateWithImmer!)\n * Ensures the entry exists in the registry before updating\n */\nexport function updateFetchState(\n registry: ScopeRegistry,\n scope: MenuScope,\n query: string,\n updates: Partial<FetchState>,\n parentScope?: MenuScope\n): void {\n // Get entry (may be virtual if inherited)\n const virtualEntry = getEntry(registry, scope, parentScope);\n\n // Ensure the entry is actually stored in the registry\n if (!registry.entries[scope]) {\n registry.entries[scope] = {\n scope,\n sourceFn: virtualEntry.sourceFn,\n sourceConfig: virtualEntry.sourceConfig,\n fetchStates: {},\n isFlat: virtualEntry.isFlat, // Inherit flat mode from parent\n };\n }\n\n const entry = registry.entries[scope];\n const queryKey = query || '*';\n\n // Ensure fetch state entry exists\n if (!entry.fetchStates[queryKey]) {\n entry.fetchStates[queryKey] = {\n isFetching: false,\n hasNextPage: true,\n fetchNext: null,\n error: null,\n meta: null,\n };\n }\n\n // Apply updates\n Object.assign(entry.fetchStates[queryKey], updates);\n}\n\n/**\n * Invalidate a scope - removes scope from items and resets fetch states\n * Use when dynamic data changes (e.g., workspace members updated, tabs closed)\n *\n * Items lose this scope but stay in cache if they have other scopes.\n * Only removes items completely if they have no scopes left.\n *\n * @param registry - Registry to mutate\n * @param cache - Cache to mutate (imported type from item-cache)\n * @param scope - Scope to invalidate\n */\nexport function invalidateScope(registry: ScopeRegistry, cache: ItemCache, scope: MenuScope): void {\n if (cache.items) {\n clearByScope(cache, scope);\n }\n\n // Reset fetch states for this scope (force refetch)\n if (registry.entries[scope]) {\n registry.entries[scope].fetchStates = {}; // Clear all fetch state\n }\n}\n\n/**\n * Bind two scopes: browse scope → search scope\n * When user types a query in the browse scope, UI switches to search scope\n *\n * Example:\n * bindScopes(registry, 'root', 'global_search')\n * → Typing in root scope switches to global_search\n *\n * @param registry - Registry to mutate\n * @param browseScope - The scope shown when browsing (no query)\n * @param searchScope - The scope shown when searching (has query)\n */\nexport function bindScopes(\n registry: ScopeRegistry,\n browseScope: MenuScope,\n searchScope: MenuScope\n): void {\n registry.scopeBindings.set(browseScope, searchScope);\n}\n\n/**\n * Get the search scope for a browse scope (if bound)\n * Returns null if no binding exists\n *\n * @param registry - Registry to read\n * @param browseScope - The scope to check\n * @returns Search scope or null\n */\nexport function getSearchScope(registry: ScopeRegistry, browseScope: MenuScope): MenuScope | null {\n return registry.scopeBindings.get(browseScope) || null;\n}\n\n/**\n * Check if a scope is configured as flat (no hierarchy)\n * Returns false if scope not found (safe default = hierarchical)\n */\nexport function isFlat(registry: ScopeRegistry, scope: MenuScope): boolean {\n const entry = registry.entries[scope];\n return entry?.isFlat || false;\n}\n"],"names":["isFlat"],"mappings":";;AAmDO,SAAS,sBAAqC;AACnD,SAAO;AAAA,IACL,SAAS,CAAA;AAAA,IACT,mCAAmB,IAAA;AAAA,EAAI;AAE3B;AAYO,SAAS,eACd,UACA,OACA,UACA,eAAoB,CAAA,GACpBA,UAAkB,OACZ;AACN,WAAS,QAAQ,KAAK,IAAI;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,CAAA;AAAA;AAAA,IACb,QAAAA;AAAAA,EAAA;AAEJ;AAkBO,SAAS,SACd,UACA,OACA,aACoB;AAEpB,MAAI,SAAS,QAAQ,KAAK,GAAG;AAC3B,WAAO,SAAS,QAAQ,KAAK;AAAA,EAC/B;AAGA,MAAI,aAAa;AACf,UAAM,cAAc,SAAS,UAAU,WAAW;AAGlD,UAAM,aAAiC;AAAA,MACrC;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,cAAc,YAAY;AAAA;AAAA,MAC1B,aAAa,CAAA;AAAA;AAAA,MACb,QAAQ,YAAY;AAAA;AAAA,IAAA;AAItB,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,mCAAmC,KAAK,kCAAkC;AAC5F;AAMO,SAAS,cACd,UACA,OACA,OACA,aACY;AACZ,QAAM,QAAQ,SAAS,UAAU,OAAO,WAAW;AACnD,QAAM,WAAW,SAAS;AAG1B,SACE,MAAM,YAAY,QAAQ,KAAK;AAAA,IAC7B,YAAY;AAAA,IACZ,aAAa;AAAA;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA;AAAA,IACP,MAAM;AAAA;AAAA,EAAA;AAGZ;AAMO,SAAS,iBACd,UACA,OACA,OACA,SACA,aACM;AAEN,QAAM,eAAe,SAAS,UAAU,OAAO,WAAW;AAG1D,MAAI,CAAC,SAAS,QAAQ,KAAK,GAAG;AAC5B,aAAS,QAAQ,KAAK,IAAI;AAAA,MACxB;AAAA,MACA,UAAU,aAAa;AAAA,MACvB,cAAc,aAAa;AAAA,MAC3B,aAAa,CAAA;AAAA,MACb,QAAQ,aAAa;AAAA;AAAA,IAAA;AAAA,EAEzB;AAEA,QAAM,QAAQ,SAAS,QAAQ,KAAK;AACpC,QAAM,WAAW,SAAS;AAG1B,MAAI,CAAC,MAAM,YAAY,QAAQ,GAAG;AAChC,UAAM,YAAY,QAAQ,IAAI;AAAA,MAC5B,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,EAEV;AAGA,SAAO,OAAO,MAAM,YAAY,QAAQ,GAAG,OAAO;AACpD;AAoCO,SAAS,WACd,UACA,aACA,aACM;AACN,WAAS,cAAc,IAAI,aAAa,WAAW;AACrD;AAUO,SAAS,eAAe,UAAyB,aAA0C;AAChG,SAAO,SAAS,cAAc,IAAI,WAAW,KAAK;AACpD;;;;;;;;"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
function createScopeRegistry() {
|
|
2
|
+
return {
|
|
3
|
+
entries: {},
|
|
4
|
+
scopeBindings: /* @__PURE__ */ new Map()
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
function registerSource(registry, scope, sourceFn, sourceConfig = {}, isFlat2 = false) {
|
|
8
|
+
registry.entries[scope] = {
|
|
9
|
+
scope,
|
|
10
|
+
sourceFn,
|
|
11
|
+
sourceConfig,
|
|
12
|
+
fetchStates: {},
|
|
13
|
+
// Empty until first query
|
|
14
|
+
isFlat: isFlat2
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function getEntry(registry, scope, parentScope) {
|
|
18
|
+
if (registry.entries[scope]) {
|
|
19
|
+
return registry.entries[scope];
|
|
20
|
+
}
|
|
21
|
+
if (parentScope) {
|
|
22
|
+
const parentEntry = getEntry(registry, parentScope);
|
|
23
|
+
const childEntry = {
|
|
24
|
+
scope,
|
|
25
|
+
sourceFn: parentEntry.sourceFn,
|
|
26
|
+
sourceConfig: parentEntry.sourceConfig,
|
|
27
|
+
// Same config as parent
|
|
28
|
+
fetchStates: {},
|
|
29
|
+
// Fresh fetch states for this scope
|
|
30
|
+
isFlat: parentEntry.isFlat
|
|
31
|
+
// Inherit flat mode
|
|
32
|
+
};
|
|
33
|
+
return childEntry;
|
|
34
|
+
}
|
|
35
|
+
throw new Error(`No Source registered for scope: ${scope} (and no parent to inherit from)`);
|
|
36
|
+
}
|
|
37
|
+
function getFetchState(registry, scope, query, parentScope) {
|
|
38
|
+
const entry = getEntry(registry, scope, parentScope);
|
|
39
|
+
const queryKey = query || "*";
|
|
40
|
+
return entry.fetchStates[queryKey] ?? {
|
|
41
|
+
isFetching: false,
|
|
42
|
+
hasNextPage: true,
|
|
43
|
+
// Assume yes until proven otherwise
|
|
44
|
+
fetchNext: null,
|
|
45
|
+
error: null,
|
|
46
|
+
// No error initially
|
|
47
|
+
meta: null
|
|
48
|
+
// Source will initialize this
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function updateFetchState(registry, scope, query, updates, parentScope) {
|
|
52
|
+
const virtualEntry = getEntry(registry, scope, parentScope);
|
|
53
|
+
if (!registry.entries[scope]) {
|
|
54
|
+
registry.entries[scope] = {
|
|
55
|
+
scope,
|
|
56
|
+
sourceFn: virtualEntry.sourceFn,
|
|
57
|
+
sourceConfig: virtualEntry.sourceConfig,
|
|
58
|
+
fetchStates: {},
|
|
59
|
+
isFlat: virtualEntry.isFlat
|
|
60
|
+
// Inherit flat mode from parent
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const entry = registry.entries[scope];
|
|
64
|
+
const queryKey = query || "*";
|
|
65
|
+
if (!entry.fetchStates[queryKey]) {
|
|
66
|
+
entry.fetchStates[queryKey] = {
|
|
67
|
+
isFetching: false,
|
|
68
|
+
hasNextPage: true,
|
|
69
|
+
fetchNext: null,
|
|
70
|
+
error: null,
|
|
71
|
+
meta: null
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
Object.assign(entry.fetchStates[queryKey], updates);
|
|
75
|
+
}
|
|
76
|
+
function bindScopes(registry, browseScope, searchScope) {
|
|
77
|
+
registry.scopeBindings.set(browseScope, searchScope);
|
|
78
|
+
}
|
|
79
|
+
function getSearchScope(registry, browseScope) {
|
|
80
|
+
return registry.scopeBindings.get(browseScope) || null;
|
|
81
|
+
}
|
|
82
|
+
export {
|
|
83
|
+
bindScopes,
|
|
84
|
+
createScopeRegistry,
|
|
85
|
+
getEntry,
|
|
86
|
+
getFetchState,
|
|
87
|
+
getSearchScope,
|
|
88
|
+
registerSource,
|
|
89
|
+
updateFetchState
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=scope-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-registry.js","sources":["../../../../../src/chat-ui/mentions/suggestions/data/scope-registry.ts"],"sourcesContent":["import { clearByScope, type ItemCache } from './item-cache';\nimport type { FetchState, MenuScope, SourceFn } from './types';\n\n/**\n * Scope Registry\n *\n * Plain object + pure functions for managing source functions.\n * Each scope has a source function, config, and fetch state per query.\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Scope registry entry - per menu scope\n * Stores source function, config, and fetch state per query\n */\nexport interface ScopeRegistryEntry {\n scope: MenuScope;\n sourceFn: SourceFn;\n sourceConfig: any; // Source-specific configuration (can include getters!)\n\n // Fetch state per query text\n // Key: \"*\" = browsing (no query), \"searchText\" = specific search query\n fetchStates: Record<string, FetchState>;\n\n // Flat list mode: if true, items don't get navigatesToScope\n // Use for scopes that should show all items at once (e.g., Folders)\n isFlat?: boolean;\n}\n\n/**\n * Scope registry - plain object\n * Maps MenuScope → ScopeRegistryEntry\n */\nexport interface ScopeRegistry {\n entries: Record<MenuScope, ScopeRegistryEntry>;\n // Scope bindings: browse scope → search scope\n // When a scope has a query, UI switches to the search scope\n // Example: 'root' + query → 'global_search'\n scopeBindings: Map<MenuScope, MenuScope>;\n}\n\n// ============================================================================\n// Utils\n// ============================================================================\n\n/**\n * Create empty registry\n */\nexport function createScopeRegistry(): ScopeRegistry {\n return {\n entries: {},\n scopeBindings: new Map(),\n };\n}\n\n/**\n * Register a source function for a specific scope\n * Creates full entry immediately with empty fetchStates\n *\n * @param registry - Registry to mutate\n * @param scope - Scope identifier\n * @param sourceFn - Pure function to fetch/transform items\n * @param sourceConfig - Any configuration the source function needs (can include getters!)\n * @param isFlat - If true, items won't get navigatesToScope (flat list, no hierarchy)\n */\nexport function registerSource(\n registry: ScopeRegistry,\n scope: MenuScope,\n sourceFn: SourceFn,\n sourceConfig: any = {},\n isFlat: boolean = false\n): void {\n registry.entries[scope] = {\n scope,\n sourceFn,\n sourceConfig,\n fetchStates: {}, // Empty until first query\n isFlat,\n };\n}\n\n/**\n * Unregister a source (cleanup)\n */\nexport function unregisterSource(registry: ScopeRegistry, scope: MenuScope): void {\n delete registry.entries[scope];\n}\n\n/**\n * Get or create entry for scope\n * Auto-inherits source function from parent if not explicitly registered\n *\n * @param registry - Registry to read/mutate\n * @param scope - Scope to get entry for\n * @param parentScope - Optional parent scope (for inheritance)\n * @returns Entry (may be newly created)\n */\nexport function getEntry(\n registry: ScopeRegistry,\n scope: MenuScope,\n parentScope?: MenuScope\n): ScopeRegistryEntry {\n // Check if already exists\n if (registry.entries[scope]) {\n return registry.entries[scope];\n }\n\n // Not registered - try to inherit from parent\n if (parentScope) {\n const parentEntry = getEntry(registry, parentScope);\n\n // Create child entry with inherited sourceFn + sourceConfig + isFlat\n const childEntry: ScopeRegistryEntry = {\n scope,\n sourceFn: parentEntry.sourceFn,\n sourceConfig: parentEntry.sourceConfig, // Same config as parent\n fetchStates: {}, // Fresh fetch states for this scope\n isFlat: parentEntry.isFlat, // Inherit flat mode\n };\n\n // DON'T store it - return virtual entry (store is frozen during reads!)\n return childEntry;\n }\n\n throw new Error(`No Source registered for scope: ${scope} (and no parent to inherit from)`);\n}\n\n/**\n * Get fetch state for a specific scope + query combination\n * Returns a default FetchState if not found\n */\nexport function getFetchState(\n registry: ScopeRegistry,\n scope: MenuScope,\n query: string,\n parentScope?: MenuScope\n): FetchState {\n const entry = getEntry(registry, scope, parentScope);\n const queryKey = query || '*'; // '*' = browsing (no query)\n\n // Return existing fetch state, or a default one\n return (\n entry.fetchStates[queryKey] ?? {\n isFetching: false,\n hasNextPage: true, // Assume yes until proven otherwise\n fetchNext: null,\n error: null, // No error initially\n meta: null, // Source will initialize this\n }\n );\n}\n\n/**\n * Update fetch state (mutates registry - use inside updateWithImmer!)\n * Ensures the entry exists in the registry before updating\n */\nexport function updateFetchState(\n registry: ScopeRegistry,\n scope: MenuScope,\n query: string,\n updates: Partial<FetchState>,\n parentScope?: MenuScope\n): void {\n // Get entry (may be virtual if inherited)\n const virtualEntry = getEntry(registry, scope, parentScope);\n\n // Ensure the entry is actually stored in the registry\n if (!registry.entries[scope]) {\n registry.entries[scope] = {\n scope,\n sourceFn: virtualEntry.sourceFn,\n sourceConfig: virtualEntry.sourceConfig,\n fetchStates: {},\n isFlat: virtualEntry.isFlat, // Inherit flat mode from parent\n };\n }\n\n const entry = registry.entries[scope];\n const queryKey = query || '*';\n\n // Ensure fetch state entry exists\n if (!entry.fetchStates[queryKey]) {\n entry.fetchStates[queryKey] = {\n isFetching: false,\n hasNextPage: true,\n fetchNext: null,\n error: null,\n meta: null,\n };\n }\n\n // Apply updates\n Object.assign(entry.fetchStates[queryKey], updates);\n}\n\n/**\n * Invalidate a scope - removes scope from items and resets fetch states\n * Use when dynamic data changes (e.g., workspace members updated, tabs closed)\n *\n * Items lose this scope but stay in cache if they have other scopes.\n * Only removes items completely if they have no scopes left.\n *\n * @param registry - Registry to mutate\n * @param cache - Cache to mutate (imported type from item-cache)\n * @param scope - Scope to invalidate\n */\nexport function invalidateScope(registry: ScopeRegistry, cache: ItemCache, scope: MenuScope): void {\n if (cache.items) {\n clearByScope(cache, scope);\n }\n\n // Reset fetch states for this scope (force refetch)\n if (registry.entries[scope]) {\n registry.entries[scope].fetchStates = {}; // Clear all fetch state\n }\n}\n\n/**\n * Bind two scopes: browse scope → search scope\n * When user types a query in the browse scope, UI switches to search scope\n *\n * Example:\n * bindScopes(registry, 'root', 'global_search')\n * → Typing in root scope switches to global_search\n *\n * @param registry - Registry to mutate\n * @param browseScope - The scope shown when browsing (no query)\n * @param searchScope - The scope shown when searching (has query)\n */\nexport function bindScopes(\n registry: ScopeRegistry,\n browseScope: MenuScope,\n searchScope: MenuScope\n): void {\n registry.scopeBindings.set(browseScope, searchScope);\n}\n\n/**\n * Get the search scope for a browse scope (if bound)\n * Returns null if no binding exists\n *\n * @param registry - Registry to read\n * @param browseScope - The scope to check\n * @returns Search scope or null\n */\nexport function getSearchScope(registry: ScopeRegistry, browseScope: MenuScope): MenuScope | null {\n return registry.scopeBindings.get(browseScope) || null;\n}\n\n/**\n * Check if a scope is configured as flat (no hierarchy)\n * Returns false if scope not found (safe default = hierarchical)\n */\nexport function isFlat(registry: ScopeRegistry, scope: MenuScope): boolean {\n const entry = registry.entries[scope];\n return entry?.isFlat || false;\n}\n"],"names":["isFlat"],"mappings":"AAmDO,SAAS,sBAAqC;AACnD,SAAO;AAAA,IACL,SAAS,CAAA;AAAA,IACT,mCAAmB,IAAA;AAAA,EAAI;AAE3B;AAYO,SAAS,eACd,UACA,OACA,UACA,eAAoB,CAAA,GACpBA,UAAkB,OACZ;AACN,WAAS,QAAQ,KAAK,IAAI;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,CAAA;AAAA;AAAA,IACb,QAAAA;AAAAA,EAAA;AAEJ;AAkBO,SAAS,SACd,UACA,OACA,aACoB;AAEpB,MAAI,SAAS,QAAQ,KAAK,GAAG;AAC3B,WAAO,SAAS,QAAQ,KAAK;AAAA,EAC/B;AAGA,MAAI,aAAa;AACf,UAAM,cAAc,SAAS,UAAU,WAAW;AAGlD,UAAM,aAAiC;AAAA,MACrC;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,cAAc,YAAY;AAAA;AAAA,MAC1B,aAAa,CAAA;AAAA;AAAA,MACb,QAAQ,YAAY;AAAA;AAAA,IAAA;AAItB,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,mCAAmC,KAAK,kCAAkC;AAC5F;AAMO,SAAS,cACd,UACA,OACA,OACA,aACY;AACZ,QAAM,QAAQ,SAAS,UAAU,OAAO,WAAW;AACnD,QAAM,WAAW,SAAS;AAG1B,SACE,MAAM,YAAY,QAAQ,KAAK;AAAA,IAC7B,YAAY;AAAA,IACZ,aAAa;AAAA;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA;AAAA,IACP,MAAM;AAAA;AAAA,EAAA;AAGZ;AAMO,SAAS,iBACd,UACA,OACA,OACA,SACA,aACM;AAEN,QAAM,eAAe,SAAS,UAAU,OAAO,WAAW;AAG1D,MAAI,CAAC,SAAS,QAAQ,KAAK,GAAG;AAC5B,aAAS,QAAQ,KAAK,IAAI;AAAA,MACxB;AAAA,MACA,UAAU,aAAa;AAAA,MACvB,cAAc,aAAa;AAAA,MAC3B,aAAa,CAAA;AAAA,MACb,QAAQ,aAAa;AAAA;AAAA,IAAA;AAAA,EAEzB;AAEA,QAAM,QAAQ,SAAS,QAAQ,KAAK;AACpC,QAAM,WAAW,SAAS;AAG1B,MAAI,CAAC,MAAM,YAAY,QAAQ,GAAG;AAChC,UAAM,YAAY,QAAQ,IAAI;AAAA,MAC5B,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA,IAAA;AAAA,EAEV;AAGA,SAAO,OAAO,MAAM,YAAY,QAAQ,GAAG,OAAO;AACpD;AAoCO,SAAS,WACd,UACA,aACA,aACM;AACN,WAAS,cAAc,IAAI,aAAa,WAAW;AACrD;AAUO,SAAS,eAAe,UAAyB,aAA0C;AAChG,SAAO,SAAS,cAAc,IAAI,WAAW,KAAK;AACpD;"}
|