@jazzmind/busibox-app 3.0.18
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 +158 -0
- package/dist/components/UserDropdown.d.ts +51 -0
- package/dist/components/UserDropdown.d.ts.map +1 -0
- package/dist/components/UserDropdown.js +88 -0
- package/dist/components/UserDropdown.js.map +1 -0
- package/dist/components/account/ChannelLinkingSettings.d.ts +2 -0
- package/dist/components/account/ChannelLinkingSettings.d.ts.map +1 -0
- package/dist/components/account/ChannelLinkingSettings.js +102 -0
- package/dist/components/account/ChannelLinkingSettings.js.map +1 -0
- package/dist/components/auth/PasskeyRequiredWrapper.d.ts +15 -0
- package/dist/components/auth/PasskeyRequiredWrapper.d.ts.map +1 -0
- package/dist/components/auth/PasskeyRequiredWrapper.js +125 -0
- package/dist/components/auth/PasskeyRequiredWrapper.js.map +1 -0
- package/dist/components/auth/ProtectedRoute.d.ts +21 -0
- package/dist/components/auth/ProtectedRoute.d.ts.map +1 -0
- package/dist/components/auth/ProtectedRoute.js +55 -0
- package/dist/components/auth/ProtectedRoute.js.map +1 -0
- package/dist/components/auth/SessionProvider.d.ts +88 -0
- package/dist/components/auth/SessionProvider.d.ts.map +1 -0
- package/dist/components/auth/SessionProvider.js +417 -0
- package/dist/components/auth/SessionProvider.js.map +1 -0
- package/dist/components/chat/AgentBadge.d.ts +14 -0
- package/dist/components/chat/AgentBadge.d.ts.map +1 -0
- package/dist/components/chat/AgentBadge.js +15 -0
- package/dist/components/chat/AgentBadge.js.map +1 -0
- package/dist/components/chat/AgentSelectionPanel.d.ts +23 -0
- package/dist/components/chat/AgentSelectionPanel.d.ts.map +1 -0
- package/dist/components/chat/AgentSelectionPanel.js +49 -0
- package/dist/components/chat/AgentSelectionPanel.js.map +1 -0
- package/dist/components/chat/AgentSelector.d.ts +23 -0
- package/dist/components/chat/AgentSelector.d.ts.map +1 -0
- package/dist/components/chat/AgentSelector.js +76 -0
- package/dist/components/chat/AgentSelector.js.map +1 -0
- package/dist/components/chat/AgentToolSelector.d.ts +19 -0
- package/dist/components/chat/AgentToolSelector.d.ts.map +1 -0
- package/dist/components/chat/AgentToolSelector.js +62 -0
- package/dist/components/chat/AgentToolSelector.js.map +1 -0
- package/dist/components/chat/AttachmentPreview.d.ts +13 -0
- package/dist/components/chat/AttachmentPreview.d.ts.map +1 -0
- package/dist/components/chat/AttachmentPreview.js +36 -0
- package/dist/components/chat/AttachmentPreview.js.map +1 -0
- package/dist/components/chat/AttachmentUploader.d.ts +25 -0
- package/dist/components/chat/AttachmentUploader.d.ts.map +1 -0
- package/dist/components/chat/AttachmentUploader.js +97 -0
- package/dist/components/chat/AttachmentUploader.js.map +1 -0
- package/dist/components/chat/ChatContainer.d.ts +30 -0
- package/dist/components/chat/ChatContainer.d.ts.map +1 -0
- package/dist/components/chat/ChatContainer.js +1054 -0
- package/dist/components/chat/ChatContainer.js.map +1 -0
- package/dist/components/chat/ChatInterface.d.ts +16 -0
- package/dist/components/chat/ChatInterface.d.ts.map +1 -0
- package/dist/components/chat/ChatInterface.js +129 -0
- package/dist/components/chat/ChatInterface.js.map +1 -0
- package/dist/components/chat/ChatPage.d.ts +46 -0
- package/dist/components/chat/ChatPage.d.ts.map +1 -0
- package/dist/components/chat/ChatPage.js +92 -0
- package/dist/components/chat/ChatPage.js.map +1 -0
- package/dist/components/chat/ChatSkeleton.d.ts +9 -0
- package/dist/components/chat/ChatSkeleton.d.ts.map +1 -0
- package/dist/components/chat/ChatSkeleton.js +12 -0
- package/dist/components/chat/ChatSkeleton.js.map +1 -0
- package/dist/components/chat/ConversationSettings.d.ts +10 -0
- package/dist/components/chat/ConversationSettings.d.ts.map +1 -0
- package/dist/components/chat/ConversationSettings.js +131 -0
- package/dist/components/chat/ConversationSettings.js.map +1 -0
- package/dist/components/chat/ConversationSidebar.d.ts +7 -0
- package/dist/components/chat/ConversationSidebar.d.ts.map +1 -0
- package/dist/components/chat/ConversationSidebar.js +120 -0
- package/dist/components/chat/ConversationSidebar.js.map +1 -0
- package/dist/components/chat/DeleteConversationModal.d.ts +12 -0
- package/dist/components/chat/DeleteConversationModal.d.ts.map +1 -0
- package/dist/components/chat/DeleteConversationModal.js +26 -0
- package/dist/components/chat/DeleteConversationModal.js.map +1 -0
- package/dist/components/chat/FullChatInterface.d.ts +48 -0
- package/dist/components/chat/FullChatInterface.d.ts.map +1 -0
- package/dist/components/chat/FullChatInterface.js +439 -0
- package/dist/components/chat/FullChatInterface.js.map +1 -0
- package/dist/components/chat/InsightEditModal.d.ts +21 -0
- package/dist/components/chat/InsightEditModal.d.ts.map +1 -0
- package/dist/components/chat/InsightEditModal.js +64 -0
- package/dist/components/chat/InsightEditModal.js.map +1 -0
- package/dist/components/chat/LibrarySelector.d.ts +25 -0
- package/dist/components/chat/LibrarySelector.d.ts.map +1 -0
- package/dist/components/chat/LibrarySelector.js +100 -0
- package/dist/components/chat/LibrarySelector.js.map +1 -0
- package/dist/components/chat/MessageInput.d.ts +21 -0
- package/dist/components/chat/MessageInput.d.ts.map +1 -0
- package/dist/components/chat/MessageInput.js +154 -0
- package/dist/components/chat/MessageInput.js.map +1 -0
- package/dist/components/chat/MessageList.d.ts +57 -0
- package/dist/components/chat/MessageList.d.ts.map +1 -0
- package/dist/components/chat/MessageList.js +176 -0
- package/dist/components/chat/MessageList.js.map +1 -0
- package/dist/components/chat/ModelSelector.d.ts +13 -0
- package/dist/components/chat/ModelSelector.d.ts.map +1 -0
- package/dist/components/chat/ModelSelector.js +62 -0
- package/dist/components/chat/ModelSelector.js.map +1 -0
- package/dist/components/chat/RawContentToggle.d.ts +17 -0
- package/dist/components/chat/RawContentToggle.d.ts.map +1 -0
- package/dist/components/chat/RawContentToggle.js +19 -0
- package/dist/components/chat/RawContentToggle.js.map +1 -0
- package/dist/components/chat/SearchToggles.d.ts +25 -0
- package/dist/components/chat/SearchToggles.d.ts.map +1 -0
- package/dist/components/chat/SearchToggles.js +125 -0
- package/dist/components/chat/SearchToggles.js.map +1 -0
- package/dist/components/chat/SimpleChatInterface.d.ts +64 -0
- package/dist/components/chat/SimpleChatInterface.d.ts.map +1 -0
- package/dist/components/chat/SimpleChatInterface.js +585 -0
- package/dist/components/chat/SimpleChatInterface.js.map +1 -0
- package/dist/components/chat/ThinkingSection.d.ts +34 -0
- package/dist/components/chat/ThinkingSection.d.ts.map +1 -0
- package/dist/components/chat/ThinkingSection.js +82 -0
- package/dist/components/chat/ThinkingSection.js.map +1 -0
- package/dist/components/chat/ThinkingToggle.d.ts +31 -0
- package/dist/components/chat/ThinkingToggle.d.ts.map +1 -0
- package/dist/components/chat/ThinkingToggle.js +47 -0
- package/dist/components/chat/ThinkingToggle.js.map +1 -0
- package/dist/components/chat/ToolSelector.d.ts +22 -0
- package/dist/components/chat/ToolSelector.d.ts.map +1 -0
- package/dist/components/chat/ToolSelector.js +72 -0
- package/dist/components/chat/ToolSelector.js.map +1 -0
- package/dist/components/documents/AppDataItemActions.d.ts +18 -0
- package/dist/components/documents/AppDataItemActions.d.ts.map +1 -0
- package/dist/components/documents/AppDataItemActions.js +62 -0
- package/dist/components/documents/AppDataItemActions.js.map +1 -0
- package/dist/components/documents/AppDataList.d.ts +8 -0
- package/dist/components/documents/AppDataList.d.ts.map +1 -0
- package/dist/components/documents/AppDataList.js +166 -0
- package/dist/components/documents/AppDataList.js.map +1 -0
- package/dist/components/documents/ChunksBrowser.d.ts +7 -0
- package/dist/components/documents/ChunksBrowser.d.ts.map +1 -0
- package/dist/components/documents/ChunksBrowser.js +130 -0
- package/dist/components/documents/ChunksBrowser.js.map +1 -0
- package/dist/components/documents/ClassificationSuggestionBadge.d.ts +15 -0
- package/dist/components/documents/ClassificationSuggestionBadge.d.ts.map +1 -0
- package/dist/components/documents/ClassificationSuggestionBadge.js +34 -0
- package/dist/components/documents/ClassificationSuggestionBadge.js.map +1 -0
- package/dist/components/documents/CodeViewer.d.ts +8 -0
- package/dist/components/documents/CodeViewer.d.ts.map +1 -0
- package/dist/components/documents/CodeViewer.js +112 -0
- package/dist/components/documents/CodeViewer.js.map +1 -0
- package/dist/components/documents/CreatePersonalLibraryModal.d.ts +8 -0
- package/dist/components/documents/CreatePersonalLibraryModal.d.ts.map +1 -0
- package/dist/components/documents/CreatePersonalLibraryModal.js +50 -0
- package/dist/components/documents/CreatePersonalLibraryModal.js.map +1 -0
- package/dist/components/documents/DocumentList.d.ts +7 -0
- package/dist/components/documents/DocumentList.d.ts.map +1 -0
- package/dist/components/documents/DocumentList.js +162 -0
- package/dist/components/documents/DocumentList.js.map +1 -0
- package/dist/components/documents/DocumentSearch.d.ts +8 -0
- package/dist/components/documents/DocumentSearch.d.ts.map +1 -0
- package/dist/components/documents/DocumentSearch.js +151 -0
- package/dist/components/documents/DocumentSearch.js.map +1 -0
- package/dist/components/documents/DocumentSearchAdvanced.d.ts +2 -0
- package/dist/components/documents/DocumentSearchAdvanced.d.ts.map +1 -0
- package/dist/components/documents/DocumentSearchAdvanced.js +169 -0
- package/dist/components/documents/DocumentSearchAdvanced.js.map +1 -0
- package/dist/components/documents/DocumentTagView.d.ts +7 -0
- package/dist/components/documents/DocumentTagView.d.ts.map +1 -0
- package/dist/components/documents/DocumentTagView.js +122 -0
- package/dist/components/documents/DocumentTagView.js.map +1 -0
- package/dist/components/documents/DocumentTagsAndGraphSection.d.ts +12 -0
- package/dist/components/documents/DocumentTagsAndGraphSection.d.ts.map +1 -0
- package/dist/components/documents/DocumentTagsAndGraphSection.js +132 -0
- package/dist/components/documents/DocumentTagsAndGraphSection.js.map +1 -0
- package/dist/components/documents/DocumentUpload.d.ts +29 -0
- package/dist/components/documents/DocumentUpload.d.ts.map +1 -0
- package/dist/components/documents/DocumentUpload.js +148 -0
- package/dist/components/documents/DocumentUpload.js.map +1 -0
- package/dist/components/documents/ExtractionSplitView.d.ts +10 -0
- package/dist/components/documents/ExtractionSplitView.d.ts.map +1 -0
- package/dist/components/documents/ExtractionSplitView.js +134 -0
- package/dist/components/documents/ExtractionSplitView.js.map +1 -0
- package/dist/components/documents/HtmlViewer.d.ts +16 -0
- package/dist/components/documents/HtmlViewer.d.ts.map +1 -0
- package/dist/components/documents/HtmlViewer.js +602 -0
- package/dist/components/documents/HtmlViewer.js.map +1 -0
- package/dist/components/documents/KnowledgeGraph.d.ts +7 -0
- package/dist/components/documents/KnowledgeGraph.d.ts.map +1 -0
- package/dist/components/documents/KnowledgeGraph.js +570 -0
- package/dist/components/documents/KnowledgeGraph.js.map +1 -0
- package/dist/components/documents/LibraryClassification.d.ts +9 -0
- package/dist/components/documents/LibraryClassification.d.ts.map +1 -0
- package/dist/components/documents/LibraryClassification.js +124 -0
- package/dist/components/documents/LibraryClassification.js.map +1 -0
- package/dist/components/documents/LibraryDeleteModal.d.ts +12 -0
- package/dist/components/documents/LibraryDeleteModal.d.ts.map +1 -0
- package/dist/components/documents/LibraryDeleteModal.js +54 -0
- package/dist/components/documents/LibraryDeleteModal.js.map +1 -0
- package/dist/components/documents/LibraryTriggers.d.ts +8 -0
- package/dist/components/documents/LibraryTriggers.d.ts.map +1 -0
- package/dist/components/documents/LibraryTriggers.js +294 -0
- package/dist/components/documents/LibraryTriggers.js.map +1 -0
- package/dist/components/documents/PortalDocumentList.d.ts +9 -0
- package/dist/components/documents/PortalDocumentList.d.ts.map +1 -0
- package/dist/components/documents/PortalDocumentList.js +147 -0
- package/dist/components/documents/PortalDocumentList.js.map +1 -0
- package/dist/components/documents/ProcessingHistoryModal.d.ts +32 -0
- package/dist/components/documents/ProcessingHistoryModal.d.ts.map +1 -0
- package/dist/components/documents/ProcessingHistoryModal.js +131 -0
- package/dist/components/documents/ProcessingHistoryModal.js.map +1 -0
- package/dist/components/documents/ProcessingHistoryTab.d.ts +6 -0
- package/dist/components/documents/ProcessingHistoryTab.d.ts.map +1 -0
- package/dist/components/documents/ProcessingHistoryTab.js +161 -0
- package/dist/components/documents/ProcessingHistoryTab.js.map +1 -0
- package/dist/components/documents/ProvenanceHighlighter.d.ts +25 -0
- package/dist/components/documents/ProvenanceHighlighter.d.ts.map +1 -0
- package/dist/components/documents/ProvenanceHighlighter.js +72 -0
- package/dist/components/documents/ProvenanceHighlighter.js.map +1 -0
- package/dist/components/documents/RenamePersonalLibraryModal.d.ts +10 -0
- package/dist/components/documents/RenamePersonalLibraryModal.d.ts.map +1 -0
- package/dist/components/documents/RenamePersonalLibraryModal.js +47 -0
- package/dist/components/documents/RenamePersonalLibraryModal.js.map +1 -0
- package/dist/components/documents/SchemaEditor.d.ts +16 -0
- package/dist/components/documents/SchemaEditor.d.ts.map +1 -0
- package/dist/components/documents/SchemaEditor.js +518 -0
- package/dist/components/documents/SchemaEditor.js.map +1 -0
- package/dist/components/documents/SchemaFieldViewer.d.ts +13 -0
- package/dist/components/documents/SchemaFieldViewer.d.ts.map +1 -0
- package/dist/components/documents/SchemaFieldViewer.js +230 -0
- package/dist/components/documents/SchemaFieldViewer.js.map +1 -0
- package/dist/components/documents/SchemaFormRenderer.d.ts +11 -0
- package/dist/components/documents/SchemaFormRenderer.d.ts.map +1 -0
- package/dist/components/documents/SchemaFormRenderer.js +151 -0
- package/dist/components/documents/SchemaFormRenderer.js.map +1 -0
- package/dist/components/index.d.ts +77 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +61 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/libraries/LibrarySelector.d.ts +8 -0
- package/dist/components/libraries/LibrarySelector.d.ts.map +1 -0
- package/dist/components/libraries/LibrarySelector.js +52 -0
- package/dist/components/libraries/LibrarySelector.js.map +1 -0
- package/dist/components/libraries/LibrarySidebar.d.ts +30 -0
- package/dist/components/libraries/LibrarySidebar.d.ts.map +1 -0
- package/dist/components/libraries/LibrarySidebar.js +260 -0
- package/dist/components/libraries/LibrarySidebar.js.map +1 -0
- package/dist/components/shared/AppIcon.d.ts +15 -0
- package/dist/components/shared/AppIcon.d.ts.map +1 -0
- package/dist/components/shared/AppIcon.js +29 -0
- package/dist/components/shared/AppIcon.js.map +1 -0
- package/dist/components/shared/Button.d.ts +18 -0
- package/dist/components/shared/Button.d.ts.map +1 -0
- package/dist/components/shared/Button.js +18 -0
- package/dist/components/shared/Button.js.map +1 -0
- package/dist/components/shared/ConfirmModal.d.ts +19 -0
- package/dist/components/shared/ConfirmModal.d.ts.map +1 -0
- package/dist/components/shared/ConfirmModal.js +16 -0
- package/dist/components/shared/ConfirmModal.js.map +1 -0
- package/dist/components/shared/DeleteConfirmModal.d.ts +37 -0
- package/dist/components/shared/DeleteConfirmModal.d.ts.map +1 -0
- package/dist/components/shared/DeleteConfirmModal.js +30 -0
- package/dist/components/shared/DeleteConfirmModal.js.map +1 -0
- package/dist/components/shared/DynamicFavicon.d.ts +8 -0
- package/dist/components/shared/DynamicFavicon.d.ts.map +1 -0
- package/dist/components/shared/DynamicFavicon.js +35 -0
- package/dist/components/shared/DynamicFavicon.js.map +1 -0
- package/dist/components/shared/FetchWrapper.d.ts +27 -0
- package/dist/components/shared/FetchWrapper.d.ts.map +1 -0
- package/dist/components/shared/FetchWrapper.js +113 -0
- package/dist/components/shared/FetchWrapper.js.map +1 -0
- package/dist/components/shared/Input.d.ts +26 -0
- package/dist/components/shared/Input.d.ts.map +1 -0
- package/dist/components/shared/Input.js +10 -0
- package/dist/components/shared/Input.js.map +1 -0
- package/dist/components/shared/Modal.d.ts +30 -0
- package/dist/components/shared/Modal.d.ts.map +1 -0
- package/dist/components/shared/Modal.js +51 -0
- package/dist/components/shared/Modal.js.map +1 -0
- package/dist/components/shared/Table.d.ts +35 -0
- package/dist/components/shared/Table.d.ts.map +1 -0
- package/dist/components/shared/Table.js +39 -0
- package/dist/components/shared/Table.js.map +1 -0
- package/dist/components/shared/UserAvatar.d.ts +10 -0
- package/dist/components/shared/UserAvatar.d.ts.map +1 -0
- package/dist/components/shared/UserAvatar.js +90 -0
- package/dist/components/shared/UserAvatar.js.map +1 -0
- package/dist/components/shared/UserPicker.d.ts +10 -0
- package/dist/components/shared/UserPicker.d.ts.map +1 -0
- package/dist/components/shared/UserPicker.js +80 -0
- package/dist/components/shared/UserPicker.js.map +1 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +34 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/card.d.ts +10 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +25 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +37 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/input.d.ts +4 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +7 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +6 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +12 -0
- package/dist/components/ui/scroll-area.js.map +1 -0
- package/dist/components/ui/select.d.ts +16 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +38 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/videos/UserSearchInput.d.ts +14 -0
- package/dist/components/videos/UserSearchInput.d.ts.map +1 -0
- package/dist/components/videos/UserSearchInput.js +119 -0
- package/dist/components/videos/UserSearchInput.js.map +1 -0
- package/dist/components/videos/VideoCard.d.ts +17 -0
- package/dist/components/videos/VideoCard.d.ts.map +1 -0
- package/dist/components/videos/VideoCard.js +203 -0
- package/dist/components/videos/VideoCard.js.map +1 -0
- package/dist/components/videos/VideoExpirationBadge.d.ts +8 -0
- package/dist/components/videos/VideoExpirationBadge.d.ts.map +1 -0
- package/dist/components/videos/VideoExpirationBadge.js +25 -0
- package/dist/components/videos/VideoExpirationBadge.js.map +1 -0
- package/dist/components/videos/VideoPlayerModal.d.ts +9 -0
- package/dist/components/videos/VideoPlayerModal.d.ts.map +1 -0
- package/dist/components/videos/VideoPlayerModal.js +54 -0
- package/dist/components/videos/VideoPlayerModal.js.map +1 -0
- package/dist/components/videos/VideoRemixModal.d.ts +16 -0
- package/dist/components/videos/VideoRemixModal.d.ts.map +1 -0
- package/dist/components/videos/VideoRemixModal.js +48 -0
- package/dist/components/videos/VideoRemixModal.js.map +1 -0
- package/dist/components/videos/VideoShareModal.d.ts +10 -0
- package/dist/components/videos/VideoShareModal.d.ts.map +1 -0
- package/dist/components/videos/VideoShareModal.js +171 -0
- package/dist/components/videos/VideoShareModal.js.map +1 -0
- package/dist/components/videos/VideoStatusModal.d.ts +7 -0
- package/dist/components/videos/VideoStatusModal.d.ts.map +1 -0
- package/dist/components/videos/VideoStatusModal.js +92 -0
- package/dist/components/videos/VideoStatusModal.js.map +1 -0
- package/dist/components/videos/VideoUpload.d.ts +8 -0
- package/dist/components/videos/VideoUpload.d.ts.map +1 -0
- package/dist/components/videos/VideoUpload.js +92 -0
- package/dist/components/videos/VideoUpload.js.map +1 -0
- package/dist/components/workflow/WorkflowList.d.ts +20 -0
- package/dist/components/workflow/WorkflowList.d.ts.map +1 -0
- package/dist/components/workflow/WorkflowList.js +50 -0
- package/dist/components/workflow/WorkflowList.js.map +1 -0
- package/dist/contexts/ApiContext.d.ts +73 -0
- package/dist/contexts/ApiContext.d.ts.map +1 -0
- package/dist/contexts/ApiContext.js +73 -0
- package/dist/contexts/ApiContext.js.map +1 -0
- package/dist/contexts/AuthContext.d.ts +113 -0
- package/dist/contexts/AuthContext.d.ts.map +1 -0
- package/dist/contexts/AuthContext.js +351 -0
- package/dist/contexts/AuthContext.js.map +1 -0
- package/dist/contexts/CustomizationContext.d.ts +44 -0
- package/dist/contexts/CustomizationContext.d.ts.map +1 -0
- package/dist/contexts/CustomizationContext.js +117 -0
- package/dist/contexts/CustomizationContext.js.map +1 -0
- package/dist/contexts/ThemeContext.d.ts +18 -0
- package/dist/contexts/ThemeContext.d.ts.map +1 -0
- package/dist/contexts/ThemeContext.js +54 -0
- package/dist/contexts/ThemeContext.js.map +1 -0
- package/dist/contexts/index.d.ts +8 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/contexts/index.js +5 -0
- package/dist/contexts/index.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/AdminHeader.d.ts +14 -0
- package/dist/layout/AdminHeader.d.ts.map +1 -0
- package/dist/layout/AdminHeader.js +17 -0
- package/dist/layout/AdminHeader.js.map +1 -0
- package/dist/layout/Footer.d.ts +7 -0
- package/dist/layout/Footer.d.ts.map +1 -0
- package/dist/layout/Footer.js +27 -0
- package/dist/layout/Footer.js.map +1 -0
- package/dist/layout/Header.d.ts +32 -0
- package/dist/layout/Header.d.ts.map +1 -0
- package/dist/layout/Header.js +66 -0
- package/dist/layout/Header.js.map +1 -0
- package/dist/layout/ThemeToggle.d.ts +7 -0
- package/dist/layout/ThemeToggle.d.ts.map +1 -0
- package/dist/layout/ThemeToggle.js +33 -0
- package/dist/layout/ThemeToggle.js.map +1 -0
- package/dist/layout/VersionBar.d.ts +2 -0
- package/dist/layout/VersionBar.d.ts.map +1 -0
- package/dist/layout/VersionBar.js +49 -0
- package/dist/layout/VersionBar.js.map +1 -0
- package/dist/layout/index.d.ts +7 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +6 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/lib/agent/agent-api-base.d.ts +41 -0
- package/dist/lib/agent/agent-api-base.d.ts.map +1 -0
- package/dist/lib/agent/agent-api-base.js +152 -0
- package/dist/lib/agent/agent-api-base.js.map +1 -0
- package/dist/lib/agent/agent-api-helpers.d.ts +16 -0
- package/dist/lib/agent/agent-api-helpers.d.ts.map +1 -0
- package/dist/lib/agent/agent-api-helpers.js +50 -0
- package/dist/lib/agent/agent-api-helpers.js.map +1 -0
- package/dist/lib/agent/agent-service-client.d.ts +89 -0
- package/dist/lib/agent/agent-service-client.d.ts.map +1 -0
- package/dist/lib/agent/agent-service-client.js +158 -0
- package/dist/lib/agent/agent-service-client.js.map +1 -0
- package/dist/lib/agent/api-helpers.d.ts +16 -0
- package/dist/lib/agent/api-helpers.d.ts.map +1 -0
- package/dist/lib/agent/api-helpers.js +50 -0
- package/dist/lib/agent/api-helpers.js.map +1 -0
- package/dist/lib/agent/app-client.d.ts +24 -0
- package/dist/lib/agent/app-client.d.ts.map +1 -0
- package/dist/lib/agent/app-client.js +49 -0
- package/dist/lib/agent/app-client.js.map +1 -0
- package/dist/lib/agent/chat-api-client.d.ts +152 -0
- package/dist/lib/agent/chat-api-client.d.ts.map +1 -0
- package/dist/lib/agent/chat-api-client.js +127 -0
- package/dist/lib/agent/chat-api-client.js.map +1 -0
- package/dist/lib/agent/chat-attachments.d.ts +118 -0
- package/dist/lib/agent/chat-attachments.d.ts.map +1 -0
- package/dist/lib/agent/chat-attachments.js +317 -0
- package/dist/lib/agent/chat-attachments.js.map +1 -0
- package/dist/lib/agent/chat-cleanup.d.ts +34 -0
- package/dist/lib/agent/chat-cleanup.d.ts.map +1 -0
- package/dist/lib/agent/chat-cleanup.js +133 -0
- package/dist/lib/agent/chat-cleanup.js.map +1 -0
- package/dist/lib/agent/chat-client.d.ts +142 -0
- package/dist/lib/agent/chat-client.d.ts.map +1 -0
- package/dist/lib/agent/chat-client.js +318 -0
- package/dist/lib/agent/chat-client.js.map +1 -0
- package/dist/lib/agent/chat-config.d.ts +28 -0
- package/dist/lib/agent/chat-config.d.ts.map +1 -0
- package/dist/lib/agent/chat-config.js +152 -0
- package/dist/lib/agent/chat-config.js.map +1 -0
- package/dist/lib/agent/chat-conversations.d.ts +159 -0
- package/dist/lib/agent/chat-conversations.d.ts.map +1 -0
- package/dist/lib/agent/chat-conversations.js +278 -0
- package/dist/lib/agent/chat-conversations.js.map +1 -0
- package/dist/lib/agent/chat-insights.d.ts +84 -0
- package/dist/lib/agent/chat-insights.d.ts.map +1 -0
- package/dist/lib/agent/chat-insights.js +193 -0
- package/dist/lib/agent/chat-insights.js.map +1 -0
- package/dist/lib/agent/chat-messages.d.ts +154 -0
- package/dist/lib/agent/chat-messages.d.ts.map +1 -0
- package/dist/lib/agent/chat-messages.js +282 -0
- package/dist/lib/agent/chat-messages.js.map +1 -0
- package/dist/lib/agent/chat-middleware.d.ts +119 -0
- package/dist/lib/agent/chat-middleware.d.ts.map +1 -0
- package/dist/lib/agent/chat-middleware.js +234 -0
- package/dist/lib/agent/chat-middleware.js.map +1 -0
- package/dist/lib/agent/chat-search.d.ts +89 -0
- package/dist/lib/agent/chat-search.d.ts.map +1 -0
- package/dist/lib/agent/chat-search.js +203 -0
- package/dist/lib/agent/chat-search.js.map +1 -0
- package/dist/lib/agent/chat-sharing.d.ts +70 -0
- package/dist/lib/agent/chat-sharing.d.ts.map +1 -0
- package/dist/lib/agent/chat-sharing.js +133 -0
- package/dist/lib/agent/chat-sharing.js.map +1 -0
- package/dist/lib/agent/client.d.ts +55 -0
- package/dist/lib/agent/client.d.ts.map +1 -0
- package/dist/lib/agent/client.js +103 -0
- package/dist/lib/agent/client.js.map +1 -0
- package/dist/lib/agent/index.d.ts +10 -0
- package/dist/lib/agent/index.d.ts.map +1 -0
- package/dist/lib/agent/index.js +10 -0
- package/dist/lib/agent/index.js.map +1 -0
- package/dist/lib/agent/insights.d.ts +131 -0
- package/dist/lib/agent/insights.d.ts.map +1 -0
- package/dist/lib/agent/insights.js +306 -0
- package/dist/lib/agent/insights.js.map +1 -0
- package/dist/lib/agent/litellm.d.ts +45 -0
- package/dist/lib/agent/litellm.d.ts.map +1 -0
- package/dist/lib/agent/litellm.js +147 -0
- package/dist/lib/agent/litellm.js.map +1 -0
- package/dist/lib/agent/llm-client.d.ts +94 -0
- package/dist/lib/agent/llm-client.d.ts.map +1 -0
- package/dist/lib/agent/llm-client.js +290 -0
- package/dist/lib/agent/llm-client.js.map +1 -0
- package/dist/lib/agent/models.d.ts +46 -0
- package/dist/lib/agent/models.d.ts.map +1 -0
- package/dist/lib/agent/models.js +96 -0
- package/dist/lib/agent/models.js.map +1 -0
- package/dist/lib/agent/openai.d.ts +94 -0
- package/dist/lib/agent/openai.d.ts.map +1 -0
- package/dist/lib/agent/openai.js +290 -0
- package/dist/lib/agent/openai.js.map +1 -0
- package/dist/lib/agent/server-client.d.ts +288 -0
- package/dist/lib/agent/server-client.d.ts.map +1 -0
- package/dist/lib/agent/server-client.js +363 -0
- package/dist/lib/agent/server-client.js.map +1 -0
- package/dist/lib/ai/dual-model-router.d.ts +130 -0
- package/dist/lib/ai/dual-model-router.d.ts.map +1 -0
- package/dist/lib/ai/dual-model-router.js +413 -0
- package/dist/lib/ai/dual-model-router.js.map +1 -0
- package/dist/lib/ai/openai.d.ts +94 -0
- package/dist/lib/ai/openai.d.ts.map +1 -0
- package/dist/lib/ai/openai.js +290 -0
- package/dist/lib/ai/openai.js.map +1 -0
- package/dist/lib/ai/tools.d.ts +64 -0
- package/dist/lib/ai/tools.d.ts.map +1 -0
- package/dist/lib/ai/tools.js +159 -0
- package/dist/lib/ai/tools.js.map +1 -0
- package/dist/lib/audit/client.d.ts +138 -0
- package/dist/lib/audit/client.d.ts.map +1 -0
- package/dist/lib/audit/client.js +486 -0
- package/dist/lib/audit/client.js.map +1 -0
- package/dist/lib/audit/index.d.ts +6 -0
- package/dist/lib/audit/index.d.ts.map +1 -0
- package/dist/lib/audit/index.js +6 -0
- package/dist/lib/audit/index.js.map +1 -0
- package/dist/lib/auth/auth-helper.d.ts +167 -0
- package/dist/lib/auth/auth-helper.d.ts.map +1 -0
- package/dist/lib/auth/auth-helper.js +345 -0
- package/dist/lib/auth/auth-helper.js.map +1 -0
- package/dist/lib/auth/auth-state-manager.d.ts +201 -0
- package/dist/lib/auth/auth-state-manager.d.ts.map +1 -0
- package/dist/lib/auth/auth-state-manager.js +597 -0
- package/dist/lib/auth/auth-state-manager.js.map +1 -0
- package/dist/lib/auth/client.d.ts +276 -0
- package/dist/lib/auth/client.d.ts.map +1 -0
- package/dist/lib/auth/client.js +325 -0
- package/dist/lib/auth/client.js.map +1 -0
- package/dist/lib/auth/index.d.ts +10 -0
- package/dist/lib/auth/index.d.ts.map +1 -0
- package/dist/lib/auth/index.js +10 -0
- package/dist/lib/auth/index.js.map +1 -0
- package/dist/lib/auth/sso-route-handler.d.ts +114 -0
- package/dist/lib/auth/sso-route-handler.d.ts.map +1 -0
- package/dist/lib/auth/sso-route-handler.js +199 -0
- package/dist/lib/auth/sso-route-handler.js.map +1 -0
- package/dist/lib/auth/sso.d.ts +162 -0
- package/dist/lib/auth/sso.d.ts.map +1 -0
- package/dist/lib/auth/sso.js +282 -0
- package/dist/lib/auth/sso.js.map +1 -0
- package/dist/lib/authz/audit.d.ts +167 -0
- package/dist/lib/authz/audit.d.ts.map +1 -0
- package/dist/lib/authz/audit.js +518 -0
- package/dist/lib/authz/audit.js.map +1 -0
- package/dist/lib/authz/auth-helper.d.ts +176 -0
- package/dist/lib/authz/auth-helper.d.ts.map +1 -0
- package/dist/lib/authz/auth-helper.js +354 -0
- package/dist/lib/authz/auth-helper.js.map +1 -0
- package/dist/lib/authz/auth-state-manager.d.ts +204 -0
- package/dist/lib/authz/auth-state-manager.d.ts.map +1 -0
- package/dist/lib/authz/auth-state-manager.js +594 -0
- package/dist/lib/authz/auth-state-manager.js.map +1 -0
- package/dist/lib/authz/authz-url.d.ts +12 -0
- package/dist/lib/authz/authz-url.d.ts.map +1 -0
- package/dist/lib/authz/authz-url.js +14 -0
- package/dist/lib/authz/authz-url.js.map +1 -0
- package/dist/lib/authz/delegation.d.ts +47 -0
- package/dist/lib/authz/delegation.d.ts.map +1 -0
- package/dist/lib/authz/delegation.js +82 -0
- package/dist/lib/authz/delegation.js.map +1 -0
- package/dist/lib/authz/email-validation.d.ts +33 -0
- package/dist/lib/authz/email-validation.d.ts.map +1 -0
- package/dist/lib/authz/email-validation.js +70 -0
- package/dist/lib/authz/email-validation.js.map +1 -0
- package/dist/lib/authz/email.d.ts +65 -0
- package/dist/lib/authz/email.d.ts.map +1 -0
- package/dist/lib/authz/email.js +112 -0
- package/dist/lib/authz/email.js.map +1 -0
- package/dist/lib/authz/index.d.ts +16 -0
- package/dist/lib/authz/index.d.ts.map +1 -0
- package/dist/lib/authz/index.js +24 -0
- package/dist/lib/authz/index.js.map +1 -0
- package/dist/lib/authz/next-client.d.ts +101 -0
- package/dist/lib/authz/next-client.d.ts.map +1 -0
- package/dist/lib/authz/next-client.js +156 -0
- package/dist/lib/authz/next-client.js.map +1 -0
- package/dist/lib/authz/passkey.d.ts +78 -0
- package/dist/lib/authz/passkey.d.ts.map +1 -0
- package/dist/lib/authz/passkey.js +458 -0
- package/dist/lib/authz/passkey.js.map +1 -0
- package/dist/lib/authz/permissions.d.ts +109 -0
- package/dist/lib/authz/permissions.d.ts.map +1 -0
- package/dist/lib/authz/permissions.js +238 -0
- package/dist/lib/authz/permissions.js.map +1 -0
- package/dist/lib/authz/rbac.d.ts +320 -0
- package/dist/lib/authz/rbac.d.ts.map +1 -0
- package/dist/lib/authz/rbac.js +532 -0
- package/dist/lib/authz/rbac.js.map +1 -0
- package/dist/lib/authz/service-audit.d.ts +41 -0
- package/dist/lib/authz/service-audit.d.ts.map +1 -0
- package/dist/lib/authz/service-audit.js +60 -0
- package/dist/lib/authz/service-audit.js.map +1 -0
- package/dist/lib/authz/session-client.d.ts +276 -0
- package/dist/lib/authz/session-client.d.ts.map +1 -0
- package/dist/lib/authz/session-client.js +325 -0
- package/dist/lib/authz/session-client.js.map +1 -0
- package/dist/lib/authz/session-route-handlers.d.ts +70 -0
- package/dist/lib/authz/session-route-handlers.d.ts.map +1 -0
- package/dist/lib/authz/session-route-handlers.js +200 -0
- package/dist/lib/authz/session-route-handlers.js.map +1 -0
- package/dist/lib/authz/sso-generator.d.ts +51 -0
- package/dist/lib/authz/sso-generator.d.ts.map +1 -0
- package/dist/lib/authz/sso-generator.js +167 -0
- package/dist/lib/authz/sso-generator.js.map +1 -0
- package/dist/lib/authz/sso-route-handler.d.ts +117 -0
- package/dist/lib/authz/sso-route-handler.d.ts.map +1 -0
- package/dist/lib/authz/sso-route-handler.js +206 -0
- package/dist/lib/authz/sso-route-handler.js.map +1 -0
- package/dist/lib/authz/sso.d.ts +157 -0
- package/dist/lib/authz/sso.d.ts.map +1 -0
- package/dist/lib/authz/sso.js +275 -0
- package/dist/lib/authz/sso.js.map +1 -0
- package/dist/lib/authz/user-management.d.ts +106 -0
- package/dist/lib/authz/user-management.d.ts.map +1 -0
- package/dist/lib/authz/user-management.js +205 -0
- package/dist/lib/authz/user-management.js.map +1 -0
- package/dist/lib/authz/zero-trust.d.ts +155 -0
- package/dist/lib/authz/zero-trust.d.ts.map +1 -0
- package/dist/lib/authz/zero-trust.js +344 -0
- package/dist/lib/authz/zero-trust.js.map +1 -0
- package/dist/lib/bridge/config.d.ts +44 -0
- package/dist/lib/bridge/config.d.ts.map +1 -0
- package/dist/lib/bridge/config.js +201 -0
- package/dist/lib/bridge/config.js.map +1 -0
- package/dist/lib/bridge/email-config.d.ts +46 -0
- package/dist/lib/bridge/email-config.d.ts.map +1 -0
- package/dist/lib/bridge/email-config.js +199 -0
- package/dist/lib/bridge/email-config.js.map +1 -0
- package/dist/lib/bridge/email.d.ts +69 -0
- package/dist/lib/bridge/email.d.ts.map +1 -0
- package/dist/lib/bridge/email.js +120 -0
- package/dist/lib/bridge/email.js.map +1 -0
- package/dist/lib/bridge/masking.d.ts +7 -0
- package/dist/lib/bridge/masking.d.ts.map +1 -0
- package/dist/lib/bridge/masking.js +13 -0
- package/dist/lib/bridge/masking.js.map +1 -0
- package/dist/lib/chat-server/agent-api-client.d.ts +151 -0
- package/dist/lib/chat-server/agent-api-client.d.ts.map +1 -0
- package/dist/lib/chat-server/agent-api-client.js +162 -0
- package/dist/lib/chat-server/agent-api-client.js.map +1 -0
- package/dist/lib/chat-server/attachments.d.ts +118 -0
- package/dist/lib/chat-server/attachments.d.ts.map +1 -0
- package/dist/lib/chat-server/attachments.js +317 -0
- package/dist/lib/chat-server/attachments.js.map +1 -0
- package/dist/lib/chat-server/cleanup.d.ts +34 -0
- package/dist/lib/chat-server/cleanup.d.ts.map +1 -0
- package/dist/lib/chat-server/cleanup.js +133 -0
- package/dist/lib/chat-server/cleanup.js.map +1 -0
- package/dist/lib/chat-server/conversations.d.ts +159 -0
- package/dist/lib/chat-server/conversations.d.ts.map +1 -0
- package/dist/lib/chat-server/conversations.js +278 -0
- package/dist/lib/chat-server/conversations.js.map +1 -0
- package/dist/lib/chat-server/insights.d.ts +84 -0
- package/dist/lib/chat-server/insights.d.ts.map +1 -0
- package/dist/lib/chat-server/insights.js +193 -0
- package/dist/lib/chat-server/insights.js.map +1 -0
- package/dist/lib/chat-server/messages.d.ts +154 -0
- package/dist/lib/chat-server/messages.d.ts.map +1 -0
- package/dist/lib/chat-server/messages.js +282 -0
- package/dist/lib/chat-server/messages.js.map +1 -0
- package/dist/lib/chat-server/middleware.d.ts +119 -0
- package/dist/lib/chat-server/middleware.d.ts.map +1 -0
- package/dist/lib/chat-server/middleware.js +234 -0
- package/dist/lib/chat-server/middleware.js.map +1 -0
- package/dist/lib/chat-server/models.d.ts +60 -0
- package/dist/lib/chat-server/models.d.ts.map +1 -0
- package/dist/lib/chat-server/models.js +205 -0
- package/dist/lib/chat-server/models.js.map +1 -0
- package/dist/lib/chat-server/search.d.ts +89 -0
- package/dist/lib/chat-server/search.d.ts.map +1 -0
- package/dist/lib/chat-server/search.js +203 -0
- package/dist/lib/chat-server/search.js.map +1 -0
- package/dist/lib/chat-server/sharing.d.ts +70 -0
- package/dist/lib/chat-server/sharing.d.ts.map +1 -0
- package/dist/lib/chat-server/sharing.js +146 -0
- package/dist/lib/chat-server/sharing.js.map +1 -0
- package/dist/lib/config/client.d.ts +111 -0
- package/dist/lib/config/client.d.ts.map +1 -0
- package/dist/lib/config/client.js +147 -0
- package/dist/lib/config/client.js.map +1 -0
- package/dist/lib/config/index.d.ts +2 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +2 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/data/app-client.d.ts +87 -0
- package/dist/lib/data/app-client.d.ts.map +1 -0
- package/dist/lib/data/app-client.js +136 -0
- package/dist/lib/data/app-client.js.map +1 -0
- package/dist/lib/data/client.d.ts +113 -0
- package/dist/lib/data/client.d.ts.map +1 -0
- package/dist/lib/data/client.js +296 -0
- package/dist/lib/data/client.js.map +1 -0
- package/dist/lib/data/documents.d.ts +84 -0
- package/dist/lib/data/documents.d.ts.map +1 -0
- package/dist/lib/data/documents.js +250 -0
- package/dist/lib/data/documents.js.map +1 -0
- package/dist/lib/data/embeddings-app-client.d.ts +37 -0
- package/dist/lib/data/embeddings-app-client.d.ts.map +1 -0
- package/dist/lib/data/embeddings-app-client.js +72 -0
- package/dist/lib/data/embeddings-app-client.js.map +1 -0
- package/dist/lib/data/embeddings-session.d.ts +21 -0
- package/dist/lib/data/embeddings-session.d.ts.map +1 -0
- package/dist/lib/data/embeddings-session.js +47 -0
- package/dist/lib/data/embeddings-session.js.map +1 -0
- package/dist/lib/data/embeddings.d.ts +41 -0
- package/dist/lib/data/embeddings.d.ts.map +1 -0
- package/dist/lib/data/embeddings.js +88 -0
- package/dist/lib/data/embeddings.js.map +1 -0
- package/dist/lib/data/index.d.ts +11 -0
- package/dist/lib/data/index.d.ts.map +1 -0
- package/dist/lib/data/index.js +10 -0
- package/dist/lib/data/index.js.map +1 -0
- package/dist/lib/data/libraries.d.ts +124 -0
- package/dist/lib/data/libraries.d.ts.map +1 -0
- package/dist/lib/data/libraries.js +517 -0
- package/dist/lib/data/libraries.js.map +1 -0
- package/dist/lib/data/portal-config.d.ts +39 -0
- package/dist/lib/data/portal-config.d.ts.map +1 -0
- package/dist/lib/data/portal-config.js +87 -0
- package/dist/lib/data/portal-config.js.map +1 -0
- package/dist/lib/data/settings.d.ts +44 -0
- package/dist/lib/data/settings.d.ts.map +1 -0
- package/dist/lib/data/settings.js +202 -0
- package/dist/lib/data/settings.js.map +1 -0
- package/dist/lib/data/tags.d.ts +33 -0
- package/dist/lib/data/tags.d.ts.map +1 -0
- package/dist/lib/data/tags.js +190 -0
- package/dist/lib/data/tags.js.map +1 -0
- package/dist/lib/date-utils.d.ts +72 -0
- package/dist/lib/date-utils.d.ts.map +1 -0
- package/dist/lib/date-utils.js +278 -0
- package/dist/lib/date-utils.js.map +1 -0
- package/dist/lib/deploy/app-config.d.ts +96 -0
- package/dist/lib/deploy/app-config.d.ts.map +1 -0
- package/dist/lib/deploy/app-config.js +352 -0
- package/dist/lib/deploy/app-config.js.map +1 -0
- package/dist/lib/deploy/app-library.d.ts +32 -0
- package/dist/lib/deploy/app-library.d.ts.map +1 -0
- package/dist/lib/deploy/app-library.js +117 -0
- package/dist/lib/deploy/app-library.js.map +1 -0
- package/dist/lib/deploy/app-permissions.d.ts +43 -0
- package/dist/lib/deploy/app-permissions.d.ts.map +1 -0
- package/dist/lib/deploy/app-permissions.js +96 -0
- package/dist/lib/deploy/app-permissions.js.map +1 -0
- package/dist/lib/deploy/app-utils.d.ts +22 -0
- package/dist/lib/deploy/app-utils.d.ts.map +1 -0
- package/dist/lib/deploy/app-utils.js +36 -0
- package/dist/lib/deploy/app-utils.js.map +1 -0
- package/dist/lib/deploy/client.d.ts +141 -0
- package/dist/lib/deploy/client.d.ts.map +1 -0
- package/dist/lib/deploy/client.js +170 -0
- package/dist/lib/deploy/client.js.map +1 -0
- package/dist/lib/deploy/default-apps.d.ts +31 -0
- package/dist/lib/deploy/default-apps.d.ts.map +1 -0
- package/dist/lib/deploy/default-apps.js +142 -0
- package/dist/lib/deploy/default-apps.js.map +1 -0
- package/dist/lib/deploy/deployment-client.d.ts +122 -0
- package/dist/lib/deploy/deployment-client.d.ts.map +1 -0
- package/dist/lib/deploy/deployment-client.js +245 -0
- package/dist/lib/deploy/deployment-client.js.map +1 -0
- package/dist/lib/deploy/github-manifest.d.ts +52 -0
- package/dist/lib/deploy/github-manifest.d.ts.map +1 -0
- package/dist/lib/deploy/github-manifest.js +168 -0
- package/dist/lib/deploy/github-manifest.js.map +1 -0
- package/dist/lib/deploy/manifest-schema.d.ts +66 -0
- package/dist/lib/deploy/manifest-schema.d.ts.map +1 -0
- package/dist/lib/deploy/manifest-schema.js +86 -0
- package/dist/lib/deploy/manifest-schema.js.map +1 -0
- package/dist/lib/deploy/manifest-validator.d.ts +25 -0
- package/dist/lib/deploy/manifest-validator.d.ts.map +1 -0
- package/dist/lib/deploy/manifest-validator.js +142 -0
- package/dist/lib/deploy/manifest-validator.js.map +1 -0
- package/dist/lib/deploy/manifest.d.ts +45 -0
- package/dist/lib/deploy/manifest.d.ts.map +1 -0
- package/dist/lib/deploy/manifest.js +137 -0
- package/dist/lib/deploy/manifest.js.map +1 -0
- package/dist/lib/deploy/url-validation.d.ts +22 -0
- package/dist/lib/deploy/url-validation.d.ts.map +1 -0
- package/dist/lib/deploy/url-validation.js +86 -0
- package/dist/lib/deploy/url-validation.js.map +1 -0
- package/dist/lib/docs/client.d.ts +80 -0
- package/dist/lib/docs/client.d.ts.map +1 -0
- package/dist/lib/docs/client.js +160 -0
- package/dist/lib/docs/client.js.map +1 -0
- package/dist/lib/embeddings/data-client.d.ts +37 -0
- package/dist/lib/embeddings/data-client.d.ts.map +1 -0
- package/dist/lib/embeddings/data-client.js +72 -0
- package/dist/lib/embeddings/data-client.js.map +1 -0
- package/dist/lib/hooks/useAutosave.d.ts +26 -0
- package/dist/lib/hooks/useAutosave.d.ts.map +1 -0
- package/dist/lib/hooks/useAutosave.js +81 -0
- package/dist/lib/hooks/useAutosave.js.map +1 -0
- package/dist/lib/hooks/useImageUrls.d.ts +16 -0
- package/dist/lib/hooks/useImageUrls.d.ts.map +1 -0
- package/dist/lib/hooks/useImageUrls.js +64 -0
- package/dist/lib/hooks/useImageUrls.js.map +1 -0
- package/dist/lib/hooks/useIsMobile.d.ts +6 -0
- package/dist/lib/hooks/useIsMobile.d.ts.map +1 -0
- package/dist/lib/hooks/useIsMobile.js +18 -0
- package/dist/lib/hooks/useIsMobile.js.map +1 -0
- package/dist/lib/hooks/useMediaQuery.d.ts +6 -0
- package/dist/lib/hooks/useMediaQuery.d.ts.map +1 -0
- package/dist/lib/hooks/useMediaQuery.js +18 -0
- package/dist/lib/hooks/useMediaQuery.js.map +1 -0
- package/dist/lib/http/fetch-with-fallback.d.ts +35 -0
- package/dist/lib/http/fetch-with-fallback.d.ts.map +1 -0
- package/dist/lib/http/fetch-with-fallback.js +53 -0
- package/dist/lib/http/fetch-with-fallback.js.map +1 -0
- package/dist/lib/icons.d.ts +27 -0
- package/dist/lib/icons.d.ts.map +1 -0
- package/dist/lib/icons.js +212 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/index.d.ts +16 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +24 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/insights/client.d.ts +131 -0
- package/dist/lib/insights/client.d.ts.map +1 -0
- package/dist/lib/insights/client.js +306 -0
- package/dist/lib/insights/client.js.map +1 -0
- package/dist/lib/insights/index.d.ts +5 -0
- package/dist/lib/insights/index.d.ts.map +1 -0
- package/dist/lib/insights/index.js +5 -0
- package/dist/lib/insights/index.js.map +1 -0
- package/dist/lib/media/access-control.d.ts +35 -0
- package/dist/lib/media/access-control.d.ts.map +1 -0
- package/dist/lib/media/access-control.js +63 -0
- package/dist/lib/media/access-control.js.map +1 -0
- package/dist/lib/media/agent-api-client.d.ts +46 -0
- package/dist/lib/media/agent-api-client.d.ts.map +1 -0
- package/dist/lib/media/agent-api-client.js +75 -0
- package/dist/lib/media/agent-api-client.js.map +1 -0
- package/dist/lib/media/creation.d.ts +25 -0
- package/dist/lib/media/creation.d.ts.map +1 -0
- package/dist/lib/media/creation.js +112 -0
- package/dist/lib/media/creation.js.map +1 -0
- package/dist/lib/media/expiration.d.ts +13 -0
- package/dist/lib/media/expiration.d.ts.map +1 -0
- package/dist/lib/media/expiration.js +95 -0
- package/dist/lib/media/expiration.js.map +1 -0
- package/dist/lib/media/image-resize.d.ts +42 -0
- package/dist/lib/media/image-resize.d.ts.map +1 -0
- package/dist/lib/media/image-resize.js +106 -0
- package/dist/lib/media/image-resize.js.map +1 -0
- package/dist/lib/media/processing.d.ts +35 -0
- package/dist/lib/media/processing.d.ts.map +1 -0
- package/dist/lib/media/processing.js +154 -0
- package/dist/lib/media/processing.js.map +1 -0
- package/dist/lib/media/status.d.ts +2 -0
- package/dist/lib/media/status.d.ts.map +1 -0
- package/dist/lib/media/status.js +141 -0
- package/dist/lib/media/status.js.map +1 -0
- package/dist/lib/media/store.d.ts +91 -0
- package/dist/lib/media/store.d.ts.map +1 -0
- package/dist/lib/media/store.js +451 -0
- package/dist/lib/media/store.js.map +1 -0
- package/dist/lib/media/upload.d.ts +41 -0
- package/dist/lib/media/upload.d.ts.map +1 -0
- package/dist/lib/media/upload.js +118 -0
- package/dist/lib/media/upload.js.map +1 -0
- package/dist/lib/media/url-normalization.d.ts +29 -0
- package/dist/lib/media/url-normalization.d.ts.map +1 -0
- package/dist/lib/media/url-normalization.js +61 -0
- package/dist/lib/media/url-normalization.js.map +1 -0
- package/dist/lib/next/api-url.d.ts +42 -0
- package/dist/lib/next/api-url.d.ts.map +1 -0
- package/dist/lib/next/api-url.js +128 -0
- package/dist/lib/next/api-url.js.map +1 -0
- package/dist/lib/next/authz-client.d.ts +120 -0
- package/dist/lib/next/authz-client.d.ts.map +1 -0
- package/dist/lib/next/authz-client.js +203 -0
- package/dist/lib/next/authz-client.js.map +1 -0
- package/dist/lib/next/middleware.d.ts +264 -0
- package/dist/lib/next/middleware.d.ts.map +1 -0
- package/dist/lib/next/middleware.js +696 -0
- package/dist/lib/next/middleware.js.map +1 -0
- package/dist/lib/next/passkey.d.ts +78 -0
- package/dist/lib/next/passkey.d.ts.map +1 -0
- package/dist/lib/next/passkey.js +380 -0
- package/dist/lib/next/passkey.js.map +1 -0
- package/dist/lib/next/service-client.d.ts +99 -0
- package/dist/lib/next/service-client.d.ts.map +1 -0
- package/dist/lib/next/service-client.js +146 -0
- package/dist/lib/next/service-client.js.map +1 -0
- package/dist/lib/next/sso.d.ts +51 -0
- package/dist/lib/next/sso.d.ts.map +1 -0
- package/dist/lib/next/sso.js +167 -0
- package/dist/lib/next/sso.js.map +1 -0
- package/dist/lib/rbac/client.d.ts +320 -0
- package/dist/lib/rbac/client.d.ts.map +1 -0
- package/dist/lib/rbac/client.js +532 -0
- package/dist/lib/rbac/client.js.map +1 -0
- package/dist/lib/rbac/index.d.ts +6 -0
- package/dist/lib/rbac/index.d.ts.map +1 -0
- package/dist/lib/rbac/index.js +6 -0
- package/dist/lib/rbac/index.js.map +1 -0
- package/dist/lib/search/app-providers.d.ts +9 -0
- package/dist/lib/search/app-providers.d.ts.map +1 -0
- package/dist/lib/search/app-providers.js +9 -0
- package/dist/lib/search/app-providers.js.map +1 -0
- package/dist/lib/search/client.d.ts +214 -0
- package/dist/lib/search/client.d.ts.map +1 -0
- package/dist/lib/search/client.js +289 -0
- package/dist/lib/search/client.js.map +1 -0
- package/dist/lib/search/config.d.ts +16 -0
- package/dist/lib/search/config.d.ts.map +1 -0
- package/dist/lib/search/config.js +20 -0
- package/dist/lib/search/config.js.map +1 -0
- package/dist/lib/search/index.d.ts +13 -0
- package/dist/lib/search/index.d.ts.map +1 -0
- package/dist/lib/search/index.js +22 -0
- package/dist/lib/search/index.js.map +1 -0
- package/dist/lib/search/providers.d.ts +105 -0
- package/dist/lib/search/providers.d.ts.map +1 -0
- package/dist/lib/search/providers.js +140 -0
- package/dist/lib/search/providers.js.map +1 -0
- package/dist/lib/services/api-client.d.ts +46 -0
- package/dist/lib/services/api-client.d.ts.map +1 -0
- package/dist/lib/services/api-client.js +80 -0
- package/dist/lib/services/api-client.js.map +1 -0
- package/dist/lib/services/app-library.d.ts +36 -0
- package/dist/lib/services/app-library.d.ts.map +1 -0
- package/dist/lib/services/app-library.js +123 -0
- package/dist/lib/services/app-library.js.map +1 -0
- package/dist/lib/services/app-utils.d.ts +22 -0
- package/dist/lib/services/app-utils.d.ts.map +1 -0
- package/dist/lib/services/app-utils.js +36 -0
- package/dist/lib/services/app-utils.js.map +1 -0
- package/dist/lib/services/audit.d.ts +41 -0
- package/dist/lib/services/audit.d.ts.map +1 -0
- package/dist/lib/services/audit.js +60 -0
- package/dist/lib/services/audit.js.map +1 -0
- package/dist/lib/services/database-cloner.d.ts +28 -0
- package/dist/lib/services/database-cloner.d.ts.map +1 -0
- package/dist/lib/services/database-cloner.js +197 -0
- package/dist/lib/services/database-cloner.js.map +1 -0
- package/dist/lib/services/default-apps.d.ts +31 -0
- package/dist/lib/services/default-apps.d.ts.map +1 -0
- package/dist/lib/services/default-apps.js +121 -0
- package/dist/lib/services/default-apps.js.map +1 -0
- package/dist/lib/services/deploy-api-client.d.ts +184 -0
- package/dist/lib/services/deploy-api-client.d.ts.map +1 -0
- package/dist/lib/services/deploy-api-client.js +208 -0
- package/dist/lib/services/deploy-api-client.js.map +1 -0
- package/dist/lib/services/deployment-service-client.d.ts +122 -0
- package/dist/lib/services/deployment-service-client.d.ts.map +1 -0
- package/dist/lib/services/deployment-service-client.js +245 -0
- package/dist/lib/services/deployment-service-client.js.map +1 -0
- package/dist/lib/services/docs.d.ts +80 -0
- package/dist/lib/services/docs.d.ts.map +1 -0
- package/dist/lib/services/docs.js +160 -0
- package/dist/lib/services/docs.js.map +1 -0
- package/dist/lib/services/email-validation.d.ts +33 -0
- package/dist/lib/services/email-validation.d.ts.map +1 -0
- package/dist/lib/services/email-validation.js +70 -0
- package/dist/lib/services/email-validation.js.map +1 -0
- package/dist/lib/services/email.d.ts +65 -0
- package/dist/lib/services/email.d.ts.map +1 -0
- package/dist/lib/services/email.js +112 -0
- package/dist/lib/services/email.js.map +1 -0
- package/dist/lib/services/github-manifest-fetcher.d.ts +74 -0
- package/dist/lib/services/github-manifest-fetcher.d.ts.map +1 -0
- package/dist/lib/services/github-manifest-fetcher.js +168 -0
- package/dist/lib/services/github-manifest-fetcher.js.map +1 -0
- package/dist/lib/services/libraries.d.ts +124 -0
- package/dist/lib/services/libraries.d.ts.map +1 -0
- package/dist/lib/services/libraries.js +507 -0
- package/dist/lib/services/libraries.js.map +1 -0
- package/dist/lib/services/litellm.d.ts +33 -0
- package/dist/lib/services/litellm.d.ts.map +1 -0
- package/dist/lib/services/litellm.js +222 -0
- package/dist/lib/services/litellm.js.map +1 -0
- package/dist/lib/services/manifest-schema.d.ts +66 -0
- package/dist/lib/services/manifest-schema.d.ts.map +1 -0
- package/dist/lib/services/manifest-schema.js +86 -0
- package/dist/lib/services/manifest-schema.js.map +1 -0
- package/dist/lib/services/manifest-validator.d.ts +25 -0
- package/dist/lib/services/manifest-validator.d.ts.map +1 -0
- package/dist/lib/services/manifest-validator.js +142 -0
- package/dist/lib/services/manifest-validator.js.map +1 -0
- package/dist/lib/services/manifest.d.ts +45 -0
- package/dist/lib/services/manifest.d.ts.map +1 -0
- package/dist/lib/services/manifest.js +137 -0
- package/dist/lib/services/manifest.js.map +1 -0
- package/dist/lib/services/permissions.d.ts +109 -0
- package/dist/lib/services/permissions.d.ts.map +1 -0
- package/dist/lib/services/permissions.js +238 -0
- package/dist/lib/services/permissions.js.map +1 -0
- package/dist/lib/services/service-client.d.ts +99 -0
- package/dist/lib/services/service-client.d.ts.map +1 -0
- package/dist/lib/services/service-client.js +146 -0
- package/dist/lib/services/service-client.js.map +1 -0
- package/dist/lib/services/tags.d.ts +37 -0
- package/dist/lib/services/tags.d.ts.map +1 -0
- package/dist/lib/services/tags.js +189 -0
- package/dist/lib/services/tags.js.map +1 -0
- package/dist/lib/services/url-validation.d.ts +22 -0
- package/dist/lib/services/url-validation.d.ts.map +1 -0
- package/dist/lib/services/url-validation.js +86 -0
- package/dist/lib/services/url-validation.js.map +1 -0
- package/dist/lib/services/user-management.d.ts +81 -0
- package/dist/lib/services/user-management.d.ts.map +1 -0
- package/dist/lib/services/user-management.js +154 -0
- package/dist/lib/services/user-management.js.map +1 -0
- package/dist/lib/sse.d.ts +113 -0
- package/dist/lib/sse.d.ts.map +1 -0
- package/dist/lib/sse.js +264 -0
- package/dist/lib/sse.js.map +1 -0
- package/dist/lib/storage/index.d.ts +11 -0
- package/dist/lib/storage/index.d.ts.map +1 -0
- package/dist/lib/storage/index.js +12 -0
- package/dist/lib/storage/index.js.map +1 -0
- package/dist/lib/storage/types.d.ts +61 -0
- package/dist/lib/storage/types.d.ts.map +1 -0
- package/dist/lib/storage/types.js +8 -0
- package/dist/lib/storage/types.js.map +1 -0
- package/dist/lib/stores/app-config-store.d.ts +90 -0
- package/dist/lib/stores/app-config-store.d.ts.map +1 -0
- package/dist/lib/stores/app-config-store.js +491 -0
- package/dist/lib/stores/app-config-store.js.map +1 -0
- package/dist/lib/stores/bridge-config-store.d.ts +44 -0
- package/dist/lib/stores/bridge-config-store.d.ts.map +1 -0
- package/dist/lib/stores/bridge-config-store.js +207 -0
- package/dist/lib/stores/bridge-config-store.js.map +1 -0
- package/dist/lib/stores/chat-config-store.d.ts +28 -0
- package/dist/lib/stores/chat-config-store.d.ts.map +1 -0
- package/dist/lib/stores/chat-config-store.js +152 -0
- package/dist/lib/stores/chat-config-store.js.map +1 -0
- package/dist/lib/stores/data-settings-store.d.ts +44 -0
- package/dist/lib/stores/data-settings-store.d.ts.map +1 -0
- package/dist/lib/stores/data-settings-store.js +202 -0
- package/dist/lib/stores/data-settings-store.js.map +1 -0
- package/dist/lib/stores/email-config-store.d.ts +45 -0
- package/dist/lib/stores/email-config-store.d.ts.map +1 -0
- package/dist/lib/stores/email-config-store.js +185 -0
- package/dist/lib/stores/email-config-store.js.map +1 -0
- package/dist/lib/stores/portal-config-store.d.ts +38 -0
- package/dist/lib/stores/portal-config-store.d.ts.map +1 -0
- package/dist/lib/stores/portal-config-store.js +238 -0
- package/dist/lib/stores/portal-config-store.js.map +1 -0
- package/dist/lib/stores/video-store.d.ts +91 -0
- package/dist/lib/stores/video-store.d.ts.map +1 -0
- package/dist/lib/stores/video-store.js +451 -0
- package/dist/lib/stores/video-store.js.map +1 -0
- package/dist/lib/utils.d.ts +13 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +52 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/videos/access-control.d.ts +35 -0
- package/dist/lib/videos/access-control.d.ts.map +1 -0
- package/dist/lib/videos/access-control.js +63 -0
- package/dist/lib/videos/access-control.js.map +1 -0
- package/dist/lib/videos/agent-api-client.d.ts +46 -0
- package/dist/lib/videos/agent-api-client.d.ts.map +1 -0
- package/dist/lib/videos/agent-api-client.js +75 -0
- package/dist/lib/videos/agent-api-client.js.map +1 -0
- package/dist/lib/videos/creation.d.ts +24 -0
- package/dist/lib/videos/creation.d.ts.map +1 -0
- package/dist/lib/videos/creation.js +112 -0
- package/dist/lib/videos/creation.js.map +1 -0
- package/dist/lib/videos/expiration.d.ts +13 -0
- package/dist/lib/videos/expiration.d.ts.map +1 -0
- package/dist/lib/videos/expiration.js +95 -0
- package/dist/lib/videos/expiration.js.map +1 -0
- package/dist/lib/videos/image-resize.d.ts +42 -0
- package/dist/lib/videos/image-resize.d.ts.map +1 -0
- package/dist/lib/videos/image-resize.js +106 -0
- package/dist/lib/videos/image-resize.js.map +1 -0
- package/dist/lib/videos/processing.d.ts +35 -0
- package/dist/lib/videos/processing.d.ts.map +1 -0
- package/dist/lib/videos/processing.js +154 -0
- package/dist/lib/videos/processing.js.map +1 -0
- package/dist/lib/videos/status.d.ts +2 -0
- package/dist/lib/videos/status.d.ts.map +1 -0
- package/dist/lib/videos/status.js +141 -0
- package/dist/lib/videos/status.js.map +1 -0
- package/dist/lib/videos/upload.d.ts +41 -0
- package/dist/lib/videos/upload.d.ts.map +1 -0
- package/dist/lib/videos/upload.js +118 -0
- package/dist/lib/videos/upload.js.map +1 -0
- package/dist/lib/videos/url-normalization.d.ts +29 -0
- package/dist/lib/videos/url-normalization.d.ts.map +1 -0
- package/dist/lib/videos/url-normalization.js +61 -0
- package/dist/lib/videos/url-normalization.js.map +1 -0
- package/dist/sso/index.d.ts +3 -0
- package/dist/sso/index.d.ts.map +1 -0
- package/dist/sso/index.js +3 -0
- package/dist/sso/index.js.map +1 -0
- package/dist/sso/token.d.ts +17 -0
- package/dist/sso/token.d.ts.map +1 -0
- package/dist/sso/token.js +57 -0
- package/dist/sso/token.js.map +1 -0
- package/dist/types/chat.d.ts +128 -0
- package/dist/types/chat.d.ts.map +1 -0
- package/dist/types/chat.js +2 -0
- package/dist/types/chat.js.map +1 -0
- package/dist/types/data-documents.d.ts +78 -0
- package/dist/types/data-documents.d.ts.map +1 -0
- package/dist/types/data-documents.js +6 -0
- package/dist/types/data-documents.js.map +1 -0
- package/dist/types/documents.d.ts +63 -0
- package/dist/types/documents.d.ts.map +1 -0
- package/dist/types/documents.js +7 -0
- package/dist/types/documents.js.map +1 -0
- package/dist/types/index.d.ts +32 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/library.d.ts +94 -0
- package/dist/types/library.d.ts.map +1 -0
- package/dist/types/library.js +6 -0
- package/dist/types/library.js.map +1 -0
- package/dist/types/next-auth.d.ts +78 -0
- package/dist/types/next-auth.d.ts.map +1 -0
- package/dist/types/next-auth.js +5 -0
- package/dist/types/next-auth.js.map +1 -0
- package/dist/types/processing-history.d.ts +22 -0
- package/dist/types/processing-history.d.ts.map +1 -0
- package/dist/types/processing-history.js +7 -0
- package/dist/types/processing-history.js.map +1 -0
- package/dist/types/sso.d.ts +37 -0
- package/dist/types/sso.d.ts.map +1 -0
- package/dist/types/sso.js +2 -0
- package/dist/types/sso.js.map +1 -0
- package/dist/types/video.d.ts +118 -0
- package/dist/types/video.d.ts.map +1 -0
- package/dist/types/video.js +84 -0
- package/dist/types/video.js.map +1 -0
- package/dist/types/workflow.d.ts +222 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +11 -0
- package/dist/types/workflow.js.map +1 -0
- package/package.json +201 -0
|
@@ -0,0 +1,696 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication Middleware Helpers
|
|
3
|
+
*
|
|
4
|
+
* Zero Trust Authentication Architecture:
|
|
5
|
+
* - Session tokens are RS256-signed JWTs from authz
|
|
6
|
+
* - JWTs can be verified locally or validated against authz for revocation check
|
|
7
|
+
* - Session JWTs are used as subject_token for downstream token exchange
|
|
8
|
+
*
|
|
9
|
+
* Quiet Mode: Set X-Quiet-Logs header to suppress verbose middleware logging.
|
|
10
|
+
* Useful for polling endpoints to reduce log noise.
|
|
11
|
+
*/
|
|
12
|
+
import { NextResponse } from 'next/server';
|
|
13
|
+
import { isInvalidSessionError } from '@jazzmind/busibox-app';
|
|
14
|
+
import { isAdmin as rbacIsAdmin } from '@jazzmind/busibox-app';
|
|
15
|
+
// Re-export the error checker for convenience
|
|
16
|
+
export { isInvalidSessionError };
|
|
17
|
+
// Session cookie name - contains RS256-signed JWT from authz
|
|
18
|
+
const SESSION_COOKIE_NAME = 'busibox-session';
|
|
19
|
+
/**
|
|
20
|
+
* Check if logging should be suppressed for this request
|
|
21
|
+
* Looks for X-Quiet-Logs header (value can be anything truthy like "1" or "true")
|
|
22
|
+
*/
|
|
23
|
+
function shouldQuietLogs(request) {
|
|
24
|
+
const quietHeader = request.headers.get('x-quiet-logs');
|
|
25
|
+
return !!quietHeader;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Conditional logger that respects quiet mode
|
|
29
|
+
*/
|
|
30
|
+
function log(request, ...args) {
|
|
31
|
+
if (!shouldQuietLogs(request)) {
|
|
32
|
+
console.log(...args);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function isNextPrerenderBailout(error) {
|
|
36
|
+
const anyErr = error;
|
|
37
|
+
const digest = typeof anyErr?.digest === 'string' ? anyErr.digest : '';
|
|
38
|
+
if (digest === 'NEXT_PRERENDER_INTERRUPTED' || digest === 'HANGING_PROMISE_REJECTION')
|
|
39
|
+
return true;
|
|
40
|
+
const msg = typeof anyErr?.message === 'string' ? anyErr.message : '';
|
|
41
|
+
return (msg.includes('needs to bail out of prerendering') ||
|
|
42
|
+
msg.includes('cookies() rejects when the prerender is complete') ||
|
|
43
|
+
msg.includes('fetch() rejects when the prerender is complete'));
|
|
44
|
+
}
|
|
45
|
+
// Import shared authz options
|
|
46
|
+
import { getAuthzOptions } from '../authz/next-client';
|
|
47
|
+
function getAuthOptions() {
|
|
48
|
+
return getAuthzOptions();
|
|
49
|
+
}
|
|
50
|
+
// ============================================================================
|
|
51
|
+
// Session Validation
|
|
52
|
+
// ============================================================================
|
|
53
|
+
/**
|
|
54
|
+
* Parse a JWT without verification (to extract claims).
|
|
55
|
+
* Full verification happens at authz during token exchange.
|
|
56
|
+
*/
|
|
57
|
+
function parseJwtClaims(token) {
|
|
58
|
+
try {
|
|
59
|
+
const parts = token.split('.');
|
|
60
|
+
if (parts.length !== 3)
|
|
61
|
+
return null;
|
|
62
|
+
const payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString());
|
|
63
|
+
return payload;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check if a token looks like a JWT (has 3 parts separated by dots)
|
|
71
|
+
*/
|
|
72
|
+
function isJwtFormat(token) {
|
|
73
|
+
const parts = token.split('.');
|
|
74
|
+
return parts.length === 3 && parts.every(p => p.length > 0);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get session JWT from request cookies.
|
|
78
|
+
* Returns the raw JWT string for use in token exchange.
|
|
79
|
+
*
|
|
80
|
+
* @param request - Next.js request object
|
|
81
|
+
* @returns Session JWT string or null
|
|
82
|
+
*/
|
|
83
|
+
export function getSessionJwt(request) {
|
|
84
|
+
return request.cookies.get(SESSION_COOKIE_NAME)?.value || null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get session JWT from cookies (for Server Components)
|
|
88
|
+
*/
|
|
89
|
+
export async function getSessionJwtFromCookies() {
|
|
90
|
+
try {
|
|
91
|
+
const { cookies } = await import('next/headers');
|
|
92
|
+
const cookieStore = await cookies();
|
|
93
|
+
return cookieStore.get(SESSION_COOKIE_NAME)?.value || null;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get current session from request.
|
|
101
|
+
* Zero Trust: All sessions are RS256-signed JWTs from authz.
|
|
102
|
+
* JWT claims are validated locally (signature verification happens at token exchange).
|
|
103
|
+
*
|
|
104
|
+
* @param request - Next.js request object
|
|
105
|
+
* @returns Session object or null if not authenticated
|
|
106
|
+
*/
|
|
107
|
+
export async function getSession(request) {
|
|
108
|
+
try {
|
|
109
|
+
const sessionToken = getSessionJwt(request);
|
|
110
|
+
if (!sessionToken) {
|
|
111
|
+
log(request, '[MIDDLEWARE] No session token found in cookies');
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
// Zero Trust: All sessions must be JWTs
|
|
115
|
+
if (!isJwtFormat(sessionToken)) {
|
|
116
|
+
log(request, '[MIDDLEWARE] Session token is not a JWT - rejecting');
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
const claims = parseJwtClaims(sessionToken);
|
|
120
|
+
if (!claims || claims.typ !== 'session') {
|
|
121
|
+
log(request, '[MIDDLEWARE] Invalid JWT session token format');
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
// Check expiration locally (basic validation)
|
|
125
|
+
if (claims.exp * 1000 < Date.now()) {
|
|
126
|
+
log(request, '[MIDDLEWARE] Session JWT expired');
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
// Extract roles from JWT claims (now embedded in session JWT)
|
|
130
|
+
const roles = claims.roles || [];
|
|
131
|
+
log(request, '[MIDDLEWARE] JWT session token validated locally:', JSON.stringify({
|
|
132
|
+
user_id: claims.sub,
|
|
133
|
+
session_id: claims.jti,
|
|
134
|
+
email: claims.email,
|
|
135
|
+
roles_count: roles.length,
|
|
136
|
+
}));
|
|
137
|
+
// Return session info from JWT claims
|
|
138
|
+
return {
|
|
139
|
+
user: {
|
|
140
|
+
id: claims.sub,
|
|
141
|
+
email: claims.email || '',
|
|
142
|
+
status: 'ACTIVE', // Session JWT means user is active
|
|
143
|
+
roles: roles, // Roles from JWT claims
|
|
144
|
+
},
|
|
145
|
+
session: {
|
|
146
|
+
id: claims.jti,
|
|
147
|
+
token: sessionToken, // The JWT itself
|
|
148
|
+
expiresAt: new Date(claims.exp * 1000),
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
if (!isNextPrerenderBailout(error)) {
|
|
154
|
+
console.error('[MIDDLEWARE] Error getting session:', error);
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get current user from session
|
|
161
|
+
*
|
|
162
|
+
* Uses roles embedded in the session JWT - no additional API calls needed.
|
|
163
|
+
*
|
|
164
|
+
* @param request - Next.js request object
|
|
165
|
+
* @returns Authenticated user with roles or null
|
|
166
|
+
*/
|
|
167
|
+
export async function getCurrentUser(request) {
|
|
168
|
+
const session = await getSession(request);
|
|
169
|
+
if (!session?.user)
|
|
170
|
+
return null;
|
|
171
|
+
const claims = parseJwtClaims(session.session.token);
|
|
172
|
+
// Roles are now embedded in the session JWT as objects {id, name}
|
|
173
|
+
const rawRoles = session.user.roles || [];
|
|
174
|
+
// Handle both formats: array of objects {id, name} or array of strings
|
|
175
|
+
const roleNames = rawRoles.map((r) => {
|
|
176
|
+
if (typeof r === 'string')
|
|
177
|
+
return r;
|
|
178
|
+
return r?.name || '';
|
|
179
|
+
}).filter(Boolean);
|
|
180
|
+
const result = {
|
|
181
|
+
id: session.user.id,
|
|
182
|
+
email: session.user.email,
|
|
183
|
+
status: session.user.status || 'ACTIVE',
|
|
184
|
+
roles: roleNames,
|
|
185
|
+
displayName: claims?.name,
|
|
186
|
+
firstName: claims?.given_name,
|
|
187
|
+
lastName: claims?.family_name,
|
|
188
|
+
avatarUrl: claims?.picture,
|
|
189
|
+
favoriteColor: claims?.favorite_color,
|
|
190
|
+
};
|
|
191
|
+
log(request, '[MIDDLEWARE/getCurrentUser] User from session JWT:', JSON.stringify({
|
|
192
|
+
id: result.id,
|
|
193
|
+
email: result.email,
|
|
194
|
+
status: result.status,
|
|
195
|
+
rolesCount: result.roles.length,
|
|
196
|
+
}));
|
|
197
|
+
return result;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get basic session user (without roles lookup)
|
|
201
|
+
* Useful for endpoints that just need user identity
|
|
202
|
+
*
|
|
203
|
+
* @param request - Next.js request object
|
|
204
|
+
* @returns Basic user info or null
|
|
205
|
+
*/
|
|
206
|
+
export async function getSessionUser(request) {
|
|
207
|
+
const session = await getSession(request);
|
|
208
|
+
if (!session?.user)
|
|
209
|
+
return null;
|
|
210
|
+
return {
|
|
211
|
+
id: session.user.id,
|
|
212
|
+
email: session.user.email,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get current user from cookies (for Server Components)
|
|
217
|
+
*
|
|
218
|
+
* @returns Authenticated user with roles or null
|
|
219
|
+
*/
|
|
220
|
+
export async function getCurrentUserFromCookies() {
|
|
221
|
+
const result = await getCurrentUserWithSessionFromCookies();
|
|
222
|
+
return result
|
|
223
|
+
? {
|
|
224
|
+
id: result.id,
|
|
225
|
+
email: result.email,
|
|
226
|
+
status: result.status,
|
|
227
|
+
roles: result.roles,
|
|
228
|
+
displayName: result.displayName,
|
|
229
|
+
firstName: result.firstName,
|
|
230
|
+
lastName: result.lastName,
|
|
231
|
+
avatarUrl: result.avatarUrl,
|
|
232
|
+
favoriteColor: result.favoriteColor,
|
|
233
|
+
}
|
|
234
|
+
: null;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Get current user with session JWT from cookies (for Server Components that need Zero Trust exchange)
|
|
238
|
+
*
|
|
239
|
+
* User roles are embedded directly in the session JWT - no additional API calls needed.
|
|
240
|
+
*
|
|
241
|
+
* @returns Authenticated user with roles and session JWT, or null
|
|
242
|
+
*/
|
|
243
|
+
export async function getCurrentUserWithSessionFromCookies() {
|
|
244
|
+
try {
|
|
245
|
+
const sessionToken = await getSessionJwtFromCookies();
|
|
246
|
+
if (!sessionToken) {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
// Session must be JWT for Zero Trust
|
|
250
|
+
if (!isJwtFormat(sessionToken)) {
|
|
251
|
+
console.error('[MIDDLEWARE] Session token is not a JWT - Zero Trust requires JWT sessions');
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
const claims = parseJwtClaims(sessionToken);
|
|
255
|
+
if (!claims || claims.typ !== 'session') {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
// Check expiration
|
|
259
|
+
if (claims.exp * 1000 < Date.now()) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
const userId = claims.sub;
|
|
263
|
+
const userEmail = claims.email || '';
|
|
264
|
+
// Roles are now embedded in the session JWT as objects {id, name}
|
|
265
|
+
const rawRoles = claims.roles || [];
|
|
266
|
+
// Handle both formats: array of objects {id, name} or array of strings
|
|
267
|
+
const roleNames = rawRoles.map((r) => {
|
|
268
|
+
if (typeof r === 'string')
|
|
269
|
+
return r;
|
|
270
|
+
return r?.name || '';
|
|
271
|
+
}).filter(Boolean);
|
|
272
|
+
return {
|
|
273
|
+
id: userId,
|
|
274
|
+
email: userEmail,
|
|
275
|
+
status: 'ACTIVE',
|
|
276
|
+
roles: roleNames,
|
|
277
|
+
displayName: claims.name,
|
|
278
|
+
firstName: claims.given_name,
|
|
279
|
+
lastName: claims.family_name,
|
|
280
|
+
avatarUrl: claims.picture,
|
|
281
|
+
favoriteColor: claims.favorite_color,
|
|
282
|
+
sessionJwt: sessionToken,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
if (!isNextPrerenderBailout(error)) {
|
|
287
|
+
console.error('[MIDDLEWARE] Error getting current user from cookies:', error);
|
|
288
|
+
}
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// ============================================================================
|
|
293
|
+
// Route Protection Middleware
|
|
294
|
+
// ============================================================================
|
|
295
|
+
/**
|
|
296
|
+
* Require authentication for a route
|
|
297
|
+
* Returns 401 if not authenticated
|
|
298
|
+
*
|
|
299
|
+
* @param request - Next.js request object
|
|
300
|
+
* @returns User object if authenticated, or error response
|
|
301
|
+
*/
|
|
302
|
+
export async function requireAuth(request) {
|
|
303
|
+
// Get session which may convert opaque token to JWT via authz validation
|
|
304
|
+
const session = await getSession(request);
|
|
305
|
+
if (!session) {
|
|
306
|
+
return NextResponse.json({ success: false, error: 'Unauthorized - Please sign in' }, { status: 401 });
|
|
307
|
+
}
|
|
308
|
+
// session.token is now the JWT (either from cookie or from authz validation)
|
|
309
|
+
const sessionJwt = session.session.token;
|
|
310
|
+
const user = await getCurrentUser(request);
|
|
311
|
+
if (!user) {
|
|
312
|
+
return NextResponse.json({ success: false, error: 'Unauthorized - Please sign in' }, { status: 401 });
|
|
313
|
+
}
|
|
314
|
+
if (user.status !== 'ACTIVE') {
|
|
315
|
+
return NextResponse.json({ success: false, error: 'Unauthorized - Account is not active' }, { status: 403 });
|
|
316
|
+
}
|
|
317
|
+
return { user, sessionJwt };
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Require admin role for a route
|
|
321
|
+
* Returns 401 if not authenticated, 403 if not admin
|
|
322
|
+
*
|
|
323
|
+
* Uses roles from the session JWT first (faster), falls back to authz service.
|
|
324
|
+
*
|
|
325
|
+
* @param request - Next.js request object
|
|
326
|
+
* @returns User object if admin, or error response
|
|
327
|
+
*/
|
|
328
|
+
export async function requireAdminAuth(request) {
|
|
329
|
+
const authResult = await requireAuth(request);
|
|
330
|
+
// If not authenticated, return auth error
|
|
331
|
+
if (authResult instanceof NextResponse) {
|
|
332
|
+
return authResult;
|
|
333
|
+
}
|
|
334
|
+
const { user, sessionJwt } = authResult;
|
|
335
|
+
// Validate user ID is a valid UUID before calling RBAC functions
|
|
336
|
+
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
337
|
+
if (!user.id || !uuidRegex.test(user.id)) {
|
|
338
|
+
console.error(`[MIDDLEWARE] Invalid user ID format: ${user.id}`);
|
|
339
|
+
return NextResponse.json({ success: false, error: 'Invalid user ID format' }, { status: 400 });
|
|
340
|
+
}
|
|
341
|
+
// Check if user has Admin role - use JWT roles first (faster), fallback to authz service
|
|
342
|
+
let isAdmin = user.roles?.includes('Admin') || false;
|
|
343
|
+
// If not found in JWT roles, verify with authz service (in case roles were updated after login)
|
|
344
|
+
if (!isAdmin) {
|
|
345
|
+
log(request, '[MIDDLEWARE] Admin not in JWT roles, checking authz service');
|
|
346
|
+
isAdmin = await rbacIsAdmin(user.id, getAuthzOptions());
|
|
347
|
+
}
|
|
348
|
+
if (!isAdmin) {
|
|
349
|
+
log(request, `[MIDDLEWARE] Admin access denied for user ${user.id}, roles: ${JSON.stringify(user.roles)}`);
|
|
350
|
+
return NextResponse.json({ success: false, error: 'Forbidden - Admin access required' }, { status: 403 });
|
|
351
|
+
}
|
|
352
|
+
return { user, sessionJwt };
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Require authentication AND exchange the session JWT for a downstream API token.
|
|
356
|
+
*
|
|
357
|
+
* Combines session validation with Zero Trust token exchange in a single call.
|
|
358
|
+
* Use this in API routes that need to call downstream services (agent-api, data-api, etc.).
|
|
359
|
+
*
|
|
360
|
+
* Falls back to TEST_SESSION_JWT env var for local development when no token is present.
|
|
361
|
+
*
|
|
362
|
+
* @param request - Next.js request object
|
|
363
|
+
* @param audience - Target service audience (defaults to DEFAULT_API_AUDIENCE env or 'backend-api')
|
|
364
|
+
* @param scopes - Optional scopes to request
|
|
365
|
+
* @returns Auth result with user info and API token, or 401 NextResponse
|
|
366
|
+
*/
|
|
367
|
+
export async function requireAuthWithTokenExchange(request, audience, scopes) {
|
|
368
|
+
const targetAudience = audience || process.env.DEFAULT_API_AUDIENCE || 'backend-api';
|
|
369
|
+
try {
|
|
370
|
+
const ssoToken = getTokenFromRequest(request);
|
|
371
|
+
if (!ssoToken) {
|
|
372
|
+
const testSessionJwt = process.env.TEST_SESSION_JWT;
|
|
373
|
+
if (testSessionJwt) {
|
|
374
|
+
console.log('[AUTH] No SSO token found, using TEST_SESSION_JWT for local development');
|
|
375
|
+
const token = await getApiToken(testSessionJwt, targetAudience, scopes);
|
|
376
|
+
const claims = parseJwtClaims(testSessionJwt);
|
|
377
|
+
return {
|
|
378
|
+
user: {
|
|
379
|
+
id: claims?.sub || 'test-user',
|
|
380
|
+
email: claims?.email || 'test@localhost',
|
|
381
|
+
status: 'ACTIVE',
|
|
382
|
+
roles: (claims?.roles || []).map((r) => typeof r === 'string' ? r : r?.name || '').filter(Boolean),
|
|
383
|
+
},
|
|
384
|
+
sessionJwt: testSessionJwt,
|
|
385
|
+
apiToken: token,
|
|
386
|
+
isTestUser: true,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
return NextResponse.json({
|
|
390
|
+
error: 'Authentication required',
|
|
391
|
+
message: 'Please log in through the Busibox Portal and try again. For local testing, set TEST_SESSION_JWT to a valid session JWT.',
|
|
392
|
+
}, { status: 401 });
|
|
393
|
+
}
|
|
394
|
+
const token = await getApiToken(ssoToken, targetAudience, scopes);
|
|
395
|
+
const claims = parseJwtClaims(ssoToken);
|
|
396
|
+
return {
|
|
397
|
+
user: {
|
|
398
|
+
id: claims?.sub || '',
|
|
399
|
+
email: claims?.email || '',
|
|
400
|
+
status: 'ACTIVE',
|
|
401
|
+
roles: (claims?.roles || []).map((r) => typeof r === 'string' ? r : r?.name || '').filter(Boolean),
|
|
402
|
+
},
|
|
403
|
+
sessionJwt: ssoToken,
|
|
404
|
+
apiToken: token,
|
|
405
|
+
isTestUser: false,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
catch (error) {
|
|
409
|
+
console.error('[AUTH] Token exchange failed:', error);
|
|
410
|
+
if (isInvalidSessionError(error)) {
|
|
411
|
+
return apiErrorRequireLogout('Your session is no longer valid. Please log in again.', error.code);
|
|
412
|
+
}
|
|
413
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
414
|
+
return NextResponse.json({
|
|
415
|
+
error: 'Authentication failed',
|
|
416
|
+
message: 'Failed to authenticate with the backend service. Please return to the Busibox Portal and log in again.',
|
|
417
|
+
details: errorMessage,
|
|
418
|
+
}, { status: 401 });
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Optional authentication with token exchange.
|
|
423
|
+
*
|
|
424
|
+
* Returns auth result if a valid session exists, null otherwise.
|
|
425
|
+
* Use for endpoints that work with or without authentication.
|
|
426
|
+
*
|
|
427
|
+
* @param request - Next.js request object
|
|
428
|
+
* @param audience - Target service audience
|
|
429
|
+
* @param scopes - Optional scopes to request
|
|
430
|
+
* @returns Auth result or null
|
|
431
|
+
*/
|
|
432
|
+
export async function optionalAuthWithTokenExchange(request, audience, scopes) {
|
|
433
|
+
const targetAudience = audience || process.env.DEFAULT_API_AUDIENCE || 'backend-api';
|
|
434
|
+
try {
|
|
435
|
+
const ssoToken = getTokenFromRequest(request);
|
|
436
|
+
if (!ssoToken) {
|
|
437
|
+
const testSessionJwt = process.env.TEST_SESSION_JWT;
|
|
438
|
+
if (testSessionJwt) {
|
|
439
|
+
const token = await getApiToken(testSessionJwt, targetAudience, scopes);
|
|
440
|
+
const claims = parseJwtClaims(testSessionJwt);
|
|
441
|
+
return {
|
|
442
|
+
user: {
|
|
443
|
+
id: claims?.sub || 'test-user',
|
|
444
|
+
email: claims?.email || 'test@localhost',
|
|
445
|
+
status: 'ACTIVE',
|
|
446
|
+
roles: (claims?.roles || []).map((r) => typeof r === 'string' ? r : r?.name || '').filter(Boolean),
|
|
447
|
+
},
|
|
448
|
+
sessionJwt: testSessionJwt,
|
|
449
|
+
apiToken: token,
|
|
450
|
+
isTestUser: true,
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
return null;
|
|
454
|
+
}
|
|
455
|
+
const token = await getApiToken(ssoToken, targetAudience, scopes);
|
|
456
|
+
const claims = parseJwtClaims(ssoToken);
|
|
457
|
+
return {
|
|
458
|
+
user: {
|
|
459
|
+
id: claims?.sub || '',
|
|
460
|
+
email: claims?.email || '',
|
|
461
|
+
status: 'ACTIVE',
|
|
462
|
+
roles: (claims?.roles || []).map((r) => typeof r === 'string' ? r : r?.name || '').filter(Boolean),
|
|
463
|
+
},
|
|
464
|
+
sessionJwt: ssoToken,
|
|
465
|
+
apiToken: token,
|
|
466
|
+
isTestUser: false,
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
catch (error) {
|
|
470
|
+
console.error('[AUTH] Optional auth failed:', error);
|
|
471
|
+
return null;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
// ============================================================================
|
|
475
|
+
// Helper Functions
|
|
476
|
+
// ============================================================================
|
|
477
|
+
/**
|
|
478
|
+
* Simple helper to check if a user has Admin role.
|
|
479
|
+
*
|
|
480
|
+
* Used after getSessionUser() for a simple role check without full authentication.
|
|
481
|
+
* For full admin auth with JWT validation, use requireAdminAuth() instead.
|
|
482
|
+
*
|
|
483
|
+
* @param user - User object with roles array
|
|
484
|
+
* @returns true if user has Admin role
|
|
485
|
+
*/
|
|
486
|
+
export function requireAdmin(user) {
|
|
487
|
+
if (!user)
|
|
488
|
+
return false;
|
|
489
|
+
return user.roles?.includes('Admin') || false;
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Extract IP address from request
|
|
493
|
+
*
|
|
494
|
+
* @param request - Next.js request object
|
|
495
|
+
* @returns IP address string
|
|
496
|
+
*/
|
|
497
|
+
export function getIpAddress(request) {
|
|
498
|
+
return (request.headers.get('x-forwarded-for')?.split(',')[0] ||
|
|
499
|
+
request.headers.get('x-real-ip') ||
|
|
500
|
+
undefined);
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Extract user agent from request
|
|
504
|
+
*
|
|
505
|
+
* @param request - Next.js request object
|
|
506
|
+
* @returns User agent string
|
|
507
|
+
*/
|
|
508
|
+
export function getUserAgent(request) {
|
|
509
|
+
return request.headers.get('user-agent') || undefined;
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Create success API response
|
|
513
|
+
*
|
|
514
|
+
* @param data - Response data
|
|
515
|
+
* @param status - HTTP status code
|
|
516
|
+
* @returns NextResponse
|
|
517
|
+
*/
|
|
518
|
+
export function apiSuccess(data, status = 200) {
|
|
519
|
+
return NextResponse.json({ success: true, data }, { status });
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Create error API response
|
|
523
|
+
*
|
|
524
|
+
* @param error - Error message
|
|
525
|
+
* @param status - HTTP status code
|
|
526
|
+
* @returns NextResponse
|
|
527
|
+
*/
|
|
528
|
+
export function apiError(error, status = 400) {
|
|
529
|
+
return NextResponse.json({ success: false, error }, { status });
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Create error API response that signals the client should logout.
|
|
533
|
+
*
|
|
534
|
+
* Used when the session is permanently invalid (e.g., signing key changed,
|
|
535
|
+
* token expired, token revoked). The client should clear cookies and redirect
|
|
536
|
+
* to login.
|
|
537
|
+
*
|
|
538
|
+
* Response includes `requireLogout: true` flag that client apps should check.
|
|
539
|
+
* Also clears the session cookie to help with immediate logout.
|
|
540
|
+
*
|
|
541
|
+
* @param error - Error message
|
|
542
|
+
* @param errorCode - Machine-readable error code (e.g., 'invalid_subject_token_key')
|
|
543
|
+
* @returns NextResponse with 401 status and logout signal
|
|
544
|
+
*/
|
|
545
|
+
export function apiErrorRequireLogout(error, errorCode) {
|
|
546
|
+
const response = NextResponse.json({
|
|
547
|
+
success: false,
|
|
548
|
+
error,
|
|
549
|
+
errorCode,
|
|
550
|
+
requireLogout: true,
|
|
551
|
+
}, { status: 401 });
|
|
552
|
+
// Clear the session cookie to force logout
|
|
553
|
+
response.cookies.set('busibox-session', '', {
|
|
554
|
+
expires: new Date(0),
|
|
555
|
+
path: '/',
|
|
556
|
+
});
|
|
557
|
+
return response;
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* Handle errors in API routes, with special handling for invalid session errors.
|
|
561
|
+
*
|
|
562
|
+
* If the error is an InvalidSessionError (e.g., token key mismatch), returns
|
|
563
|
+
* a response that signals the client should logout.
|
|
564
|
+
*
|
|
565
|
+
* @param error - The caught error
|
|
566
|
+
* @param defaultMessage - Default error message if not an InvalidSessionError
|
|
567
|
+
* @returns NextResponse
|
|
568
|
+
*/
|
|
569
|
+
export function handleApiError(error, defaultMessage = 'An error occurred') {
|
|
570
|
+
// Check if this is a session error that requires logout
|
|
571
|
+
if (isInvalidSessionError(error)) {
|
|
572
|
+
console.error('[API] Invalid session error - user should be logged out:', error);
|
|
573
|
+
return apiErrorRequireLogout('Your session is no longer valid. Please log in again.', error.code);
|
|
574
|
+
}
|
|
575
|
+
// Regular error handling
|
|
576
|
+
const message = error instanceof Error ? error.message : defaultMessage;
|
|
577
|
+
console.error('[API] Error:', error);
|
|
578
|
+
return apiError(message, 500);
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* Parse JSON body from request safely
|
|
582
|
+
*
|
|
583
|
+
* @param request - Next.js request object
|
|
584
|
+
* @returns Parsed JSON or null if invalid
|
|
585
|
+
*/
|
|
586
|
+
export async function parseJsonBody(request) {
|
|
587
|
+
try {
|
|
588
|
+
return await request.json();
|
|
589
|
+
}
|
|
590
|
+
catch (error) {
|
|
591
|
+
return null;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
/**
|
|
595
|
+
* Validate required fields in request body
|
|
596
|
+
*
|
|
597
|
+
* @param body - Request body object
|
|
598
|
+
* @param requiredFields - Array of required field names
|
|
599
|
+
* @returns Error message if validation fails, null if valid
|
|
600
|
+
*/
|
|
601
|
+
export function validateRequiredFields(body, requiredFields) {
|
|
602
|
+
for (const field of requiredFields) {
|
|
603
|
+
if (!body || !body[field]) {
|
|
604
|
+
return `Missing required field: ${field}`;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
return null;
|
|
608
|
+
}
|
|
609
|
+
// ============================================================================
|
|
610
|
+
// Zero Trust Token Exchange Helpers
|
|
611
|
+
// ============================================================================
|
|
612
|
+
import { getAuthorizationHeaderWithSession, getApiToken, } from '../authz/next-client';
|
|
613
|
+
import { getTokenFromRequest } from '../authz/auth-helper';
|
|
614
|
+
/**
|
|
615
|
+
* Get authorization header for downstream service using session JWT.
|
|
616
|
+
* Uses Zero Trust token exchange (subject_token) - no client credentials required.
|
|
617
|
+
*
|
|
618
|
+
* @param request - Next.js request object
|
|
619
|
+
* @param audience - Target service (e.g., 'data-api', 'search-api')
|
|
620
|
+
* @param scopes - Optional scopes to request
|
|
621
|
+
* @returns Authorization header string or null if not authenticated
|
|
622
|
+
*/
|
|
623
|
+
export async function getDownstreamAuth(request, audience, scopes) {
|
|
624
|
+
const sessionToken = getSessionJwt(request);
|
|
625
|
+
if (!sessionToken) {
|
|
626
|
+
return null;
|
|
627
|
+
}
|
|
628
|
+
// Session must be a JWT for Zero Trust
|
|
629
|
+
if (!isJwtFormat(sessionToken)) {
|
|
630
|
+
console.error('[MIDDLEWARE] Session token is not a JWT - Zero Trust requires JWT sessions');
|
|
631
|
+
return null;
|
|
632
|
+
}
|
|
633
|
+
const claims = parseJwtClaims(sessionToken);
|
|
634
|
+
if (!claims || claims.typ !== 'session') {
|
|
635
|
+
console.error('[MIDDLEWARE] Invalid session JWT: missing or wrong type');
|
|
636
|
+
return null;
|
|
637
|
+
}
|
|
638
|
+
// Check expiration
|
|
639
|
+
if (claims.exp * 1000 < Date.now()) {
|
|
640
|
+
console.error('[MIDDLEWARE] Session JWT expired');
|
|
641
|
+
return null;
|
|
642
|
+
}
|
|
643
|
+
// Use Zero Trust token exchange
|
|
644
|
+
try {
|
|
645
|
+
return await getAuthorizationHeaderWithSession({
|
|
646
|
+
sessionJwt: sessionToken,
|
|
647
|
+
userId: claims.sub,
|
|
648
|
+
audience,
|
|
649
|
+
scopes,
|
|
650
|
+
});
|
|
651
|
+
}
|
|
652
|
+
catch (error) {
|
|
653
|
+
console.error('[MIDDLEWARE] Zero Trust token exchange failed:', error);
|
|
654
|
+
return null;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
/**
|
|
658
|
+
* Get authorization header for downstream service from cookies (for Server Components).
|
|
659
|
+
*
|
|
660
|
+
* @param audience - Target service
|
|
661
|
+
* @param scopes - Optional scopes
|
|
662
|
+
* @returns Authorization header string or null
|
|
663
|
+
*/
|
|
664
|
+
export async function getDownstreamAuthFromCookies(audience, scopes) {
|
|
665
|
+
const sessionToken = await getSessionJwtFromCookies();
|
|
666
|
+
if (!sessionToken) {
|
|
667
|
+
return null;
|
|
668
|
+
}
|
|
669
|
+
// Session must be a JWT for Zero Trust
|
|
670
|
+
if (!isJwtFormat(sessionToken)) {
|
|
671
|
+
console.error('[MIDDLEWARE] Session token is not a JWT - Zero Trust requires JWT sessions');
|
|
672
|
+
return null;
|
|
673
|
+
}
|
|
674
|
+
const claims = parseJwtClaims(sessionToken);
|
|
675
|
+
if (!claims || claims.typ !== 'session') {
|
|
676
|
+
console.error('[MIDDLEWARE] Invalid session JWT: missing or wrong type');
|
|
677
|
+
return null;
|
|
678
|
+
}
|
|
679
|
+
if (claims.exp * 1000 < Date.now()) {
|
|
680
|
+
console.error('[MIDDLEWARE] Session JWT expired');
|
|
681
|
+
return null;
|
|
682
|
+
}
|
|
683
|
+
try {
|
|
684
|
+
return await getAuthorizationHeaderWithSession({
|
|
685
|
+
sessionJwt: sessionToken,
|
|
686
|
+
userId: claims.sub,
|
|
687
|
+
audience,
|
|
688
|
+
scopes,
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
catch (error) {
|
|
692
|
+
console.error('[MIDDLEWARE] Zero Trust token exchange failed:', error);
|
|
693
|
+
return null;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
//# sourceMappingURL=middleware.js.map
|