@jazzmind/busibox-app 3.0.18 → 3.0.19
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/dist/components/UserDropdown.d.ts +0 -16
- package/dist/components/UserDropdown.d.ts.map +1 -1
- package/dist/components/UserDropdown.js +2 -2
- package/dist/components/UserDropdown.js.map +1 -1
- package/dist/components/auth/PasskeyRequiredWrapper.d.ts +0 -8
- package/dist/components/auth/PasskeyRequiredWrapper.d.ts.map +1 -1
- package/dist/components/auth/PasskeyRequiredWrapper.js +2 -2
- package/dist/components/auth/PasskeyRequiredWrapper.js.map +1 -1
- package/dist/components/auth/ProtectedRoute.d.ts +0 -9
- package/dist/components/auth/ProtectedRoute.d.ts.map +1 -1
- package/dist/components/auth/ProtectedRoute.js +2 -2
- package/dist/components/auth/ProtectedRoute.js.map +1 -1
- package/dist/components/auth/SessionProvider.d.ts +0 -40
- package/dist/components/auth/SessionProvider.d.ts.map +1 -1
- package/dist/components/auth/SessionProvider.js +2 -2
- package/dist/components/auth/SessionProvider.js.map +1 -1
- package/dist/components/chat/AgentBadge.d.ts +0 -5
- package/dist/components/chat/AgentBadge.d.ts.map +1 -1
- package/dist/components/chat/AgentBadge.js +2 -2
- package/dist/components/chat/AgentBadge.js.map +1 -1
- package/dist/components/chat/AgentSelectionPanel.d.ts +0 -6
- package/dist/components/chat/AgentSelectionPanel.d.ts.map +1 -1
- package/dist/components/chat/AgentSelectionPanel.js +2 -2
- package/dist/components/chat/AgentSelectionPanel.js.map +1 -1
- package/dist/components/chat/AgentSelector.d.ts +0 -6
- package/dist/components/chat/AgentSelector.d.ts.map +1 -1
- package/dist/components/chat/AgentSelector.js +2 -2
- package/dist/components/chat/AgentSelector.js.map +1 -1
- package/dist/components/chat/AgentToolSelector.d.ts +0 -7
- package/dist/components/chat/AgentToolSelector.d.ts.map +1 -1
- package/dist/components/chat/AgentToolSelector.js +2 -2
- package/dist/components/chat/AgentToolSelector.js.map +1 -1
- package/dist/components/chat/AttachmentPreview.d.ts.map +1 -1
- package/dist/components/chat/AttachmentPreview.js +0 -5
- package/dist/components/chat/AttachmentPreview.js.map +1 -1
- package/dist/components/chat/AttachmentUploader.d.ts +0 -5
- package/dist/components/chat/AttachmentUploader.d.ts.map +1 -1
- package/dist/components/chat/AttachmentUploader.js +2 -2
- package/dist/components/chat/AttachmentUploader.js.map +1 -1
- package/dist/components/chat/ChatContainer.d.ts +0 -6
- package/dist/components/chat/ChatContainer.d.ts.map +1 -1
- package/dist/components/chat/ChatContainer.js +2 -2
- package/dist/components/chat/ChatContainer.js.map +1 -1
- package/dist/components/chat/ConversationSidebar.d.ts +0 -5
- package/dist/components/chat/ConversationSidebar.d.ts.map +1 -1
- package/dist/components/chat/ConversationSidebar.js +2 -2
- package/dist/components/chat/ConversationSidebar.js.map +1 -1
- package/dist/components/chat/DeleteConversationModal.d.ts +0 -3
- package/dist/components/chat/DeleteConversationModal.d.ts.map +1 -1
- package/dist/components/chat/DeleteConversationModal.js +2 -2
- package/dist/components/chat/DeleteConversationModal.js.map +1 -1
- package/dist/components/chat/FullChatInterface.d.ts +0 -23
- package/dist/components/chat/FullChatInterface.d.ts.map +1 -1
- package/dist/components/chat/FullChatInterface.js +2 -2
- package/dist/components/chat/FullChatInterface.js.map +1 -1
- package/dist/components/chat/InsightEditModal.d.ts +0 -5
- package/dist/components/chat/InsightEditModal.d.ts.map +1 -1
- package/dist/components/chat/InsightEditModal.js +2 -2
- package/dist/components/chat/InsightEditModal.js.map +1 -1
- package/dist/components/chat/LibrarySelector.d.ts +0 -6
- package/dist/components/chat/LibrarySelector.d.ts.map +1 -1
- package/dist/components/chat/LibrarySelector.js +2 -2
- package/dist/components/chat/LibrarySelector.js.map +1 -1
- package/dist/components/chat/MessageInput.d.ts +0 -5
- package/dist/components/chat/MessageInput.d.ts.map +1 -1
- package/dist/components/chat/MessageInput.js +2 -2
- package/dist/components/chat/MessageInput.js.map +1 -1
- package/dist/components/chat/MessageList.d.ts +0 -5
- package/dist/components/chat/MessageList.d.ts.map +1 -1
- package/dist/components/chat/MessageList.js +2 -2
- package/dist/components/chat/MessageList.js.map +1 -1
- package/dist/components/chat/RawContentToggle.d.ts.map +1 -1
- package/dist/components/chat/RawContentToggle.js +0 -6
- package/dist/components/chat/RawContentToggle.js.map +1 -1
- package/dist/components/chat/SearchToggles.d.ts +0 -5
- package/dist/components/chat/SearchToggles.d.ts.map +1 -1
- package/dist/components/chat/SearchToggles.js +2 -2
- package/dist/components/chat/SearchToggles.js.map +1 -1
- package/dist/components/chat/SimpleChatInterface.d.ts +0 -25
- package/dist/components/chat/SimpleChatInterface.d.ts.map +1 -1
- package/dist/components/chat/SimpleChatInterface.js +2 -2
- package/dist/components/chat/SimpleChatInterface.js.map +1 -1
- package/dist/components/chat/ThinkingSection.d.ts +0 -7
- package/dist/components/chat/ThinkingSection.d.ts.map +1 -1
- package/dist/components/chat/ThinkingSection.js +2 -2
- package/dist/components/chat/ThinkingSection.js.map +1 -1
- package/dist/components/chat/ThinkingToggle.d.ts +0 -6
- package/dist/components/chat/ThinkingToggle.d.ts.map +1 -1
- package/dist/components/chat/ThinkingToggle.js +2 -2
- package/dist/components/chat/ThinkingToggle.js.map +1 -1
- package/dist/components/chat/ToolSelector.d.ts +0 -6
- package/dist/components/chat/ToolSelector.d.ts.map +1 -1
- package/dist/components/chat/ToolSelector.js +2 -2
- package/dist/components/chat/ToolSelector.js.map +1 -1
- package/dist/components/shared/AppIcon.d.ts.map +1 -1
- package/dist/components/shared/AppIcon.js +2 -2
- package/dist/components/shared/AppIcon.js.map +1 -1
- package/dist/components/shared/Modal.d.ts.map +1 -1
- package/dist/components/shared/Modal.js +2 -2
- package/dist/components/shared/Modal.js.map +1 -1
- package/dist/components/workflow/WorkflowList.d.ts.map +1 -1
- package/dist/components/workflow/WorkflowList.js +2 -2
- package/dist/components/workflow/WorkflowList.js.map +1 -1
- package/dist/contexts/AuthContext.d.ts.map +1 -1
- package/dist/contexts/AuthContext.js +2 -2
- package/dist/contexts/AuthContext.js.map +1 -1
- package/dist/contexts/CustomizationContext.d.ts.map +1 -1
- package/dist/contexts/CustomizationContext.js +2 -2
- package/dist/contexts/CustomizationContext.js.map +1 -1
- package/dist/contexts/ThemeContext.d.ts.map +1 -1
- package/dist/contexts/ThemeContext.js +2 -2
- package/dist/contexts/ThemeContext.js.map +1 -1
- package/dist/layout/AdminHeader.d.ts +0 -5
- package/dist/layout/AdminHeader.d.ts.map +1 -1
- package/dist/layout/AdminHeader.js +2 -2
- package/dist/layout/AdminHeader.js.map +1 -1
- package/dist/layout/Footer.d.ts +0 -5
- package/dist/layout/Footer.d.ts.map +1 -1
- package/dist/layout/Footer.js +2 -2
- package/dist/layout/Footer.js.map +1 -1
- package/dist/layout/Header.d.ts.map +1 -1
- package/dist/layout/Header.js +2 -2
- package/dist/layout/Header.js.map +1 -1
- package/dist/layout/ThemeToggle.d.ts +0 -5
- package/dist/layout/ThemeToggle.d.ts.map +1 -1
- package/dist/layout/ThemeToggle.js +2 -2
- package/dist/layout/ThemeToggle.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/agent/agent-api-helpers.d.ts +0 -16
- package/dist/lib/agent/agent-api-helpers.d.ts.map +0 -1
- package/dist/lib/agent/agent-api-helpers.js +0 -50
- package/dist/lib/agent/agent-api-helpers.js.map +0 -1
- package/dist/lib/agent/api-helpers.d.ts +0 -16
- package/dist/lib/agent/api-helpers.d.ts.map +0 -1
- package/dist/lib/agent/api-helpers.js +0 -50
- package/dist/lib/agent/api-helpers.js.map +0 -1
- package/dist/lib/agent/chat-cleanup.d.ts +0 -34
- package/dist/lib/agent/chat-cleanup.d.ts.map +0 -1
- package/dist/lib/agent/chat-cleanup.js +0 -133
- package/dist/lib/agent/chat-cleanup.js.map +0 -1
- package/dist/lib/agent/client.d.ts +0 -55
- package/dist/lib/agent/client.d.ts.map +0 -1
- package/dist/lib/agent/client.js +0 -103
- package/dist/lib/agent/client.js.map +0 -1
- package/dist/lib/agent/openai.d.ts +0 -94
- package/dist/lib/agent/openai.d.ts.map +0 -1
- package/dist/lib/agent/openai.js +0 -290
- package/dist/lib/agent/openai.js.map +0 -1
- package/dist/lib/ai/dual-model-router.d.ts +0 -130
- package/dist/lib/ai/dual-model-router.d.ts.map +0 -1
- package/dist/lib/ai/dual-model-router.js +0 -413
- package/dist/lib/ai/dual-model-router.js.map +0 -1
- package/dist/lib/ai/openai.d.ts +0 -94
- package/dist/lib/ai/openai.d.ts.map +0 -1
- package/dist/lib/ai/openai.js +0 -290
- package/dist/lib/ai/openai.js.map +0 -1
- package/dist/lib/ai/tools.d.ts +0 -64
- package/dist/lib/ai/tools.d.ts.map +0 -1
- package/dist/lib/ai/tools.js +0 -159
- package/dist/lib/ai/tools.js.map +0 -1
- package/dist/lib/audit/client.d.ts +0 -138
- package/dist/lib/audit/client.d.ts.map +0 -1
- package/dist/lib/audit/client.js +0 -486
- package/dist/lib/audit/client.js.map +0 -1
- package/dist/lib/audit/index.d.ts +0 -6
- package/dist/lib/audit/index.d.ts.map +0 -1
- package/dist/lib/audit/index.js +0 -6
- package/dist/lib/audit/index.js.map +0 -1
- package/dist/lib/auth/auth-helper.d.ts +0 -167
- package/dist/lib/auth/auth-helper.d.ts.map +0 -1
- package/dist/lib/auth/auth-helper.js +0 -345
- package/dist/lib/auth/auth-helper.js.map +0 -1
- package/dist/lib/auth/auth-state-manager.d.ts +0 -201
- package/dist/lib/auth/auth-state-manager.d.ts.map +0 -1
- package/dist/lib/auth/auth-state-manager.js +0 -597
- package/dist/lib/auth/auth-state-manager.js.map +0 -1
- package/dist/lib/auth/client.d.ts +0 -276
- package/dist/lib/auth/client.d.ts.map +0 -1
- package/dist/lib/auth/client.js +0 -325
- package/dist/lib/auth/client.js.map +0 -1
- package/dist/lib/auth/index.d.ts +0 -10
- package/dist/lib/auth/index.d.ts.map +0 -1
- package/dist/lib/auth/index.js +0 -10
- package/dist/lib/auth/index.js.map +0 -1
- package/dist/lib/auth/sso-route-handler.d.ts +0 -114
- package/dist/lib/auth/sso-route-handler.d.ts.map +0 -1
- package/dist/lib/auth/sso-route-handler.js +0 -199
- package/dist/lib/auth/sso-route-handler.js.map +0 -1
- package/dist/lib/auth/sso.d.ts +0 -162
- package/dist/lib/auth/sso.d.ts.map +0 -1
- package/dist/lib/auth/sso.js +0 -282
- package/dist/lib/auth/sso.js.map +0 -1
- package/dist/lib/authz/email.d.ts +0 -65
- package/dist/lib/authz/email.d.ts.map +0 -1
- package/dist/lib/authz/email.js +0 -112
- package/dist/lib/authz/email.js.map +0 -1
- package/dist/lib/authz/permissions.d.ts +0 -109
- package/dist/lib/authz/permissions.d.ts.map +0 -1
- package/dist/lib/authz/permissions.js +0 -238
- package/dist/lib/authz/permissions.js.map +0 -1
- package/dist/lib/authz/service-audit.d.ts +0 -41
- package/dist/lib/authz/service-audit.d.ts.map +0 -1
- package/dist/lib/authz/service-audit.js +0 -60
- package/dist/lib/authz/service-audit.js.map +0 -1
- package/dist/lib/chat-server/agent-api-client.d.ts +0 -151
- package/dist/lib/chat-server/agent-api-client.d.ts.map +0 -1
- package/dist/lib/chat-server/agent-api-client.js +0 -162
- package/dist/lib/chat-server/agent-api-client.js.map +0 -1
- package/dist/lib/chat-server/attachments.d.ts +0 -118
- package/dist/lib/chat-server/attachments.d.ts.map +0 -1
- package/dist/lib/chat-server/attachments.js +0 -317
- package/dist/lib/chat-server/attachments.js.map +0 -1
- package/dist/lib/chat-server/cleanup.d.ts +0 -34
- package/dist/lib/chat-server/cleanup.d.ts.map +0 -1
- package/dist/lib/chat-server/cleanup.js +0 -133
- package/dist/lib/chat-server/cleanup.js.map +0 -1
- package/dist/lib/chat-server/conversations.d.ts +0 -159
- package/dist/lib/chat-server/conversations.d.ts.map +0 -1
- package/dist/lib/chat-server/conversations.js +0 -278
- package/dist/lib/chat-server/conversations.js.map +0 -1
- package/dist/lib/chat-server/insights.d.ts +0 -84
- package/dist/lib/chat-server/insights.d.ts.map +0 -1
- package/dist/lib/chat-server/insights.js +0 -193
- package/dist/lib/chat-server/insights.js.map +0 -1
- package/dist/lib/chat-server/messages.d.ts +0 -154
- package/dist/lib/chat-server/messages.d.ts.map +0 -1
- package/dist/lib/chat-server/messages.js +0 -282
- package/dist/lib/chat-server/messages.js.map +0 -1
- package/dist/lib/chat-server/middleware.d.ts +0 -119
- package/dist/lib/chat-server/middleware.d.ts.map +0 -1
- package/dist/lib/chat-server/middleware.js +0 -234
- package/dist/lib/chat-server/middleware.js.map +0 -1
- package/dist/lib/chat-server/models.d.ts +0 -60
- package/dist/lib/chat-server/models.d.ts.map +0 -1
- package/dist/lib/chat-server/models.js +0 -205
- package/dist/lib/chat-server/models.js.map +0 -1
- package/dist/lib/chat-server/search.d.ts +0 -89
- package/dist/lib/chat-server/search.d.ts.map +0 -1
- package/dist/lib/chat-server/search.js +0 -203
- package/dist/lib/chat-server/search.js.map +0 -1
- package/dist/lib/chat-server/sharing.d.ts +0 -70
- package/dist/lib/chat-server/sharing.d.ts.map +0 -1
- package/dist/lib/chat-server/sharing.js +0 -146
- package/dist/lib/chat-server/sharing.js.map +0 -1
- package/dist/lib/data/embeddings-app-client.d.ts +0 -37
- package/dist/lib/data/embeddings-app-client.d.ts.map +0 -1
- package/dist/lib/data/embeddings-app-client.js +0 -72
- package/dist/lib/data/embeddings-app-client.js.map +0 -1
- package/dist/lib/deploy/manifest-validator.d.ts +0 -25
- package/dist/lib/deploy/manifest-validator.d.ts.map +0 -1
- package/dist/lib/deploy/manifest-validator.js +0 -142
- package/dist/lib/deploy/manifest-validator.js.map +0 -1
- package/dist/lib/embeddings/data-client.d.ts +0 -37
- package/dist/lib/embeddings/data-client.d.ts.map +0 -1
- package/dist/lib/embeddings/data-client.js +0 -72
- package/dist/lib/embeddings/data-client.js.map +0 -1
- package/dist/lib/hooks/useMediaQuery.d.ts +0 -6
- package/dist/lib/hooks/useMediaQuery.d.ts.map +0 -1
- package/dist/lib/hooks/useMediaQuery.js +0 -18
- package/dist/lib/hooks/useMediaQuery.js.map +0 -1
- package/dist/lib/insights/client.d.ts +0 -131
- package/dist/lib/insights/client.d.ts.map +0 -1
- package/dist/lib/insights/client.js +0 -306
- package/dist/lib/insights/client.js.map +0 -1
- package/dist/lib/insights/index.d.ts +0 -5
- package/dist/lib/insights/index.d.ts.map +0 -1
- package/dist/lib/insights/index.js +0 -5
- package/dist/lib/insights/index.js.map +0 -1
- package/dist/lib/next/authz-client.d.ts +0 -120
- package/dist/lib/next/authz-client.d.ts.map +0 -1
- package/dist/lib/next/authz-client.js +0 -203
- package/dist/lib/next/authz-client.js.map +0 -1
- package/dist/lib/next/passkey.d.ts +0 -78
- package/dist/lib/next/passkey.d.ts.map +0 -1
- package/dist/lib/next/passkey.js +0 -380
- package/dist/lib/next/passkey.js.map +0 -1
- package/dist/lib/next/sso.d.ts +0 -51
- package/dist/lib/next/sso.d.ts.map +0 -1
- package/dist/lib/next/sso.js +0 -167
- package/dist/lib/next/sso.js.map +0 -1
- package/dist/lib/rbac/client.d.ts +0 -320
- package/dist/lib/rbac/client.d.ts.map +0 -1
- package/dist/lib/rbac/client.js +0 -532
- package/dist/lib/rbac/client.js.map +0 -1
- package/dist/lib/rbac/index.d.ts +0 -6
- package/dist/lib/rbac/index.d.ts.map +0 -1
- package/dist/lib/rbac/index.js +0 -6
- package/dist/lib/rbac/index.js.map +0 -1
- package/dist/lib/search/providers.d.ts +0 -105
- package/dist/lib/search/providers.d.ts.map +0 -1
- package/dist/lib/search/providers.js +0 -140
- package/dist/lib/search/providers.js.map +0 -1
- package/dist/lib/services/api-client.d.ts +0 -46
- package/dist/lib/services/api-client.d.ts.map +0 -1
- package/dist/lib/services/api-client.js +0 -80
- package/dist/lib/services/api-client.js.map +0 -1
- package/dist/lib/services/app-library.d.ts +0 -36
- package/dist/lib/services/app-library.d.ts.map +0 -1
- package/dist/lib/services/app-library.js +0 -123
- package/dist/lib/services/app-library.js.map +0 -1
- package/dist/lib/services/app-utils.d.ts +0 -22
- package/dist/lib/services/app-utils.d.ts.map +0 -1
- package/dist/lib/services/app-utils.js +0 -36
- package/dist/lib/services/app-utils.js.map +0 -1
- package/dist/lib/services/audit.d.ts +0 -41
- package/dist/lib/services/audit.d.ts.map +0 -1
- package/dist/lib/services/audit.js +0 -60
- package/dist/lib/services/audit.js.map +0 -1
- package/dist/lib/services/database-cloner.d.ts +0 -28
- package/dist/lib/services/database-cloner.d.ts.map +0 -1
- package/dist/lib/services/database-cloner.js +0 -197
- package/dist/lib/services/database-cloner.js.map +0 -1
- package/dist/lib/services/default-apps.d.ts +0 -31
- package/dist/lib/services/default-apps.d.ts.map +0 -1
- package/dist/lib/services/default-apps.js +0 -121
- package/dist/lib/services/default-apps.js.map +0 -1
- package/dist/lib/services/deploy-api-client.d.ts +0 -184
- package/dist/lib/services/deploy-api-client.d.ts.map +0 -1
- package/dist/lib/services/deploy-api-client.js +0 -208
- package/dist/lib/services/deploy-api-client.js.map +0 -1
- package/dist/lib/services/deployment-service-client.d.ts +0 -122
- package/dist/lib/services/deployment-service-client.d.ts.map +0 -1
- package/dist/lib/services/deployment-service-client.js +0 -245
- package/dist/lib/services/deployment-service-client.js.map +0 -1
- package/dist/lib/services/docs.d.ts +0 -80
- package/dist/lib/services/docs.d.ts.map +0 -1
- package/dist/lib/services/docs.js +0 -160
- package/dist/lib/services/docs.js.map +0 -1
- package/dist/lib/services/email-validation.d.ts +0 -33
- package/dist/lib/services/email-validation.d.ts.map +0 -1
- package/dist/lib/services/email-validation.js +0 -70
- package/dist/lib/services/email-validation.js.map +0 -1
- package/dist/lib/services/email.d.ts +0 -65
- package/dist/lib/services/email.d.ts.map +0 -1
- package/dist/lib/services/email.js +0 -112
- package/dist/lib/services/email.js.map +0 -1
- package/dist/lib/services/github-manifest-fetcher.d.ts +0 -74
- package/dist/lib/services/github-manifest-fetcher.d.ts.map +0 -1
- package/dist/lib/services/github-manifest-fetcher.js +0 -168
- package/dist/lib/services/github-manifest-fetcher.js.map +0 -1
- package/dist/lib/services/libraries.d.ts +0 -124
- package/dist/lib/services/libraries.d.ts.map +0 -1
- package/dist/lib/services/libraries.js +0 -507
- package/dist/lib/services/libraries.js.map +0 -1
- package/dist/lib/services/litellm.d.ts +0 -33
- package/dist/lib/services/litellm.d.ts.map +0 -1
- package/dist/lib/services/litellm.js +0 -222
- package/dist/lib/services/litellm.js.map +0 -1
- package/dist/lib/services/manifest-schema.d.ts +0 -66
- package/dist/lib/services/manifest-schema.d.ts.map +0 -1
- package/dist/lib/services/manifest-schema.js +0 -86
- package/dist/lib/services/manifest-schema.js.map +0 -1
- package/dist/lib/services/manifest-validator.d.ts +0 -25
- package/dist/lib/services/manifest-validator.d.ts.map +0 -1
- package/dist/lib/services/manifest-validator.js +0 -142
- package/dist/lib/services/manifest-validator.js.map +0 -1
- package/dist/lib/services/manifest.d.ts +0 -45
- package/dist/lib/services/manifest.d.ts.map +0 -1
- package/dist/lib/services/manifest.js +0 -137
- package/dist/lib/services/manifest.js.map +0 -1
- package/dist/lib/services/permissions.d.ts +0 -109
- package/dist/lib/services/permissions.d.ts.map +0 -1
- package/dist/lib/services/permissions.js +0 -238
- package/dist/lib/services/permissions.js.map +0 -1
- package/dist/lib/services/service-client.d.ts +0 -99
- package/dist/lib/services/service-client.d.ts.map +0 -1
- package/dist/lib/services/service-client.js +0 -146
- package/dist/lib/services/service-client.js.map +0 -1
- package/dist/lib/services/tags.d.ts +0 -37
- package/dist/lib/services/tags.d.ts.map +0 -1
- package/dist/lib/services/tags.js +0 -189
- package/dist/lib/services/tags.js.map +0 -1
- package/dist/lib/services/url-validation.d.ts +0 -22
- package/dist/lib/services/url-validation.d.ts.map +0 -1
- package/dist/lib/services/url-validation.js +0 -86
- package/dist/lib/services/url-validation.js.map +0 -1
- package/dist/lib/services/user-management.d.ts +0 -81
- package/dist/lib/services/user-management.d.ts.map +0 -1
- package/dist/lib/services/user-management.js +0 -154
- package/dist/lib/services/user-management.js.map +0 -1
- package/dist/lib/storage/index.d.ts +0 -11
- package/dist/lib/storage/index.d.ts.map +0 -1
- package/dist/lib/storage/index.js +0 -12
- package/dist/lib/storage/index.js.map +0 -1
- package/dist/lib/storage/types.d.ts +0 -61
- package/dist/lib/storage/types.d.ts.map +0 -1
- package/dist/lib/storage/types.js +0 -8
- package/dist/lib/storage/types.js.map +0 -1
- package/dist/lib/stores/app-config-store.d.ts +0 -90
- package/dist/lib/stores/app-config-store.d.ts.map +0 -1
- package/dist/lib/stores/app-config-store.js +0 -491
- package/dist/lib/stores/app-config-store.js.map +0 -1
- package/dist/lib/stores/bridge-config-store.d.ts +0 -44
- package/dist/lib/stores/bridge-config-store.d.ts.map +0 -1
- package/dist/lib/stores/bridge-config-store.js +0 -207
- package/dist/lib/stores/bridge-config-store.js.map +0 -1
- package/dist/lib/stores/chat-config-store.d.ts +0 -28
- package/dist/lib/stores/chat-config-store.d.ts.map +0 -1
- package/dist/lib/stores/chat-config-store.js +0 -152
- package/dist/lib/stores/chat-config-store.js.map +0 -1
- package/dist/lib/stores/data-settings-store.d.ts +0 -44
- package/dist/lib/stores/data-settings-store.d.ts.map +0 -1
- package/dist/lib/stores/data-settings-store.js +0 -202
- package/dist/lib/stores/data-settings-store.js.map +0 -1
- package/dist/lib/stores/email-config-store.d.ts +0 -45
- package/dist/lib/stores/email-config-store.d.ts.map +0 -1
- package/dist/lib/stores/email-config-store.js +0 -185
- package/dist/lib/stores/email-config-store.js.map +0 -1
- package/dist/lib/stores/portal-config-store.d.ts +0 -38
- package/dist/lib/stores/portal-config-store.d.ts.map +0 -1
- package/dist/lib/stores/portal-config-store.js +0 -238
- package/dist/lib/stores/portal-config-store.js.map +0 -1
- package/dist/lib/stores/video-store.d.ts +0 -91
- package/dist/lib/stores/video-store.d.ts.map +0 -1
- package/dist/lib/stores/video-store.js +0 -451
- package/dist/lib/stores/video-store.js.map +0 -1
- package/dist/lib/videos/access-control.d.ts +0 -35
- package/dist/lib/videos/access-control.d.ts.map +0 -1
- package/dist/lib/videos/access-control.js +0 -63
- package/dist/lib/videos/access-control.js.map +0 -1
- package/dist/lib/videos/agent-api-client.d.ts +0 -46
- package/dist/lib/videos/agent-api-client.d.ts.map +0 -1
- package/dist/lib/videos/agent-api-client.js +0 -75
- package/dist/lib/videos/agent-api-client.js.map +0 -1
- package/dist/lib/videos/creation.d.ts +0 -24
- package/dist/lib/videos/creation.d.ts.map +0 -1
- package/dist/lib/videos/creation.js +0 -112
- package/dist/lib/videos/creation.js.map +0 -1
- package/dist/lib/videos/expiration.d.ts +0 -13
- package/dist/lib/videos/expiration.d.ts.map +0 -1
- package/dist/lib/videos/expiration.js +0 -95
- package/dist/lib/videos/expiration.js.map +0 -1
- package/dist/lib/videos/image-resize.d.ts +0 -42
- package/dist/lib/videos/image-resize.d.ts.map +0 -1
- package/dist/lib/videos/image-resize.js +0 -106
- package/dist/lib/videos/image-resize.js.map +0 -1
- package/dist/lib/videos/processing.d.ts +0 -35
- package/dist/lib/videos/processing.d.ts.map +0 -1
- package/dist/lib/videos/processing.js +0 -154
- package/dist/lib/videos/processing.js.map +0 -1
- package/dist/lib/videos/status.d.ts +0 -2
- package/dist/lib/videos/status.d.ts.map +0 -1
- package/dist/lib/videos/status.js +0 -141
- package/dist/lib/videos/status.js.map +0 -1
- package/dist/lib/videos/upload.d.ts +0 -41
- package/dist/lib/videos/upload.d.ts.map +0 -1
- package/dist/lib/videos/upload.js +0 -118
- package/dist/lib/videos/upload.js.map +0 -1
- package/dist/lib/videos/url-normalization.d.ts +0 -29
- package/dist/lib/videos/url-normalization.d.ts.map +0 -1
- package/dist/lib/videos/url-normalization.js +0 -61
- package/dist/lib/videos/url-normalization.js.map +0 -1
- package/dist/sso/index.d.ts +0 -3
- package/dist/sso/index.d.ts.map +0 -1
- package/dist/sso/index.js +0 -3
- package/dist/sso/index.js.map +0 -1
- package/dist/sso/token.d.ts +0 -17
- package/dist/sso/token.d.ts.map +0 -1
- package/dist/sso/token.js +0 -57
- package/dist/sso/token.js.map +0 -1
- package/dist/types/sso.d.ts +0 -37
- package/dist/types/sso.d.ts.map +0 -1
- package/dist/types/sso.js +0 -2
- package/dist/types/sso.js.map +0 -1
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent API Video Client
|
|
3
|
-
*
|
|
4
|
-
* Thin client for proxying video operations through the Agent API.
|
|
5
|
-
* The Agent API forwards requests to LiteLLM which holds the OpenAI key --
|
|
6
|
-
* the Busibox Portal never sees or stores the raw API key.
|
|
7
|
-
*
|
|
8
|
-
* Endpoints used:
|
|
9
|
-
* POST /llm/videos/create – create a video generation job
|
|
10
|
-
* GET /llm/videos/{video_id} – retrieve video status
|
|
11
|
-
* GET /llm/videos/{video_id}/content – download video bytes
|
|
12
|
-
*/
|
|
13
|
-
const AGENT_API_URL = process.env.AGENT_API_URL ||
|
|
14
|
-
process.env.NEXT_PUBLIC_AGENT_API_URL ||
|
|
15
|
-
'http://localhost:4111';
|
|
16
|
-
// ---- Client functions ----
|
|
17
|
-
/**
|
|
18
|
-
* Create a video generation job via Agent API -> LiteLLM -> OpenAI.
|
|
19
|
-
*/
|
|
20
|
-
export async function createVideoViaAgent(agentToken, params) {
|
|
21
|
-
const body = {
|
|
22
|
-
model: params.model ?? 'video',
|
|
23
|
-
prompt: params.prompt,
|
|
24
|
-
seconds: params.seconds,
|
|
25
|
-
size: params.size,
|
|
26
|
-
};
|
|
27
|
-
if (params.inputReferenceBase64) {
|
|
28
|
-
body.input_reference_base64 = params.inputReferenceBase64;
|
|
29
|
-
body.input_reference_filename =
|
|
30
|
-
params.inputReferenceFilename ?? `reference-${Date.now()}.jpg`;
|
|
31
|
-
}
|
|
32
|
-
const res = await fetch(`${AGENT_API_URL}/llm/videos/create`, {
|
|
33
|
-
method: 'POST',
|
|
34
|
-
headers: {
|
|
35
|
-
Authorization: `Bearer ${agentToken}`,
|
|
36
|
-
'Content-Type': 'application/json',
|
|
37
|
-
},
|
|
38
|
-
body: JSON.stringify(body),
|
|
39
|
-
});
|
|
40
|
-
if (!res.ok) {
|
|
41
|
-
const text = await res.text();
|
|
42
|
-
throw new Error(`Agent API video creation failed (${res.status}): ${text}`);
|
|
43
|
-
}
|
|
44
|
-
return (await res.json());
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Retrieve video status via Agent API -> LiteLLM -> OpenAI.
|
|
48
|
-
*/
|
|
49
|
-
export async function getVideoStatusViaAgent(agentToken, openaiVideoId) {
|
|
50
|
-
const res = await fetch(`${AGENT_API_URL}/llm/videos/${openaiVideoId}`, {
|
|
51
|
-
headers: { Authorization: `Bearer ${agentToken}` },
|
|
52
|
-
});
|
|
53
|
-
if (!res.ok) {
|
|
54
|
-
const text = await res.text();
|
|
55
|
-
throw new Error(`Agent API video status failed (${res.status}): ${text}`);
|
|
56
|
-
}
|
|
57
|
-
return (await res.json());
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Download video content bytes via Agent API -> LiteLLM -> OpenAI.
|
|
61
|
-
*
|
|
62
|
-
* Returns a Buffer with the full video file.
|
|
63
|
-
*/
|
|
64
|
-
export async function downloadVideoViaAgent(agentToken, openaiVideoId) {
|
|
65
|
-
const res = await fetch(`${AGENT_API_URL}/llm/videos/${openaiVideoId}/content`, {
|
|
66
|
-
headers: { Authorization: `Bearer ${agentToken}` },
|
|
67
|
-
});
|
|
68
|
-
if (!res.ok) {
|
|
69
|
-
const text = await res.text();
|
|
70
|
-
throw new Error(`Agent API video content download failed (${res.status}): ${text}`);
|
|
71
|
-
}
|
|
72
|
-
const arrayBuffer = await res.arrayBuffer();
|
|
73
|
-
return Buffer.from(arrayBuffer);
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=agent-api-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-api-client.js","sourceRoot":"","sources":["../../../src/lib/videos/agent-api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,aAAa;IACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB;IACrC,uBAAuB,CAAC;AAuB1B,6BAA6B;AAE7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,MAAiC;IAEjC,MAAM,IAAI,GAA4B;QACpC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,OAAO;QAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;IAEF,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAC1D,IAAI,CAAC,wBAAwB;YAC3B,MAAM,CAAC,sBAAsB,IAAI,aAAa,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IACnE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,oBAAoB,EAAE;QAC5D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,UAAU,EAAE;YACrC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAC3D,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB,EAClB,aAAqB;IAErB,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,aAAa,eAAe,aAAa,EAAE,EAC9C;QACE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,UAAU,EAAE,EAAE;KACnD,CACF,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,kCAAkC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CACzD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,UAAkB,EAClB,aAAqB;IAErB,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,aAAa,eAAe,aAAa,UAAU,EACtD;QACE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,UAAU,EAAE,EAAE;KACnD,CACF,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,4CAA4C,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ReferenceMediaUpload } from '../../types/video';
|
|
2
|
-
interface CreateVideoJobParams {
|
|
3
|
-
ownerId: string;
|
|
4
|
-
prompt: string;
|
|
5
|
-
durationSeconds: number;
|
|
6
|
-
resolution: string;
|
|
7
|
-
referenceMedia?: ReferenceMediaUpload;
|
|
8
|
-
accessToken: string;
|
|
9
|
-
roleIds: string[];
|
|
10
|
-
/** Token for Agent API (video operations are proxied through Agent API -> LiteLLM) */
|
|
11
|
-
agentAccessToken: string;
|
|
12
|
-
}
|
|
13
|
-
export declare function createVideoJob({ ownerId, prompt, durationSeconds, resolution, referenceMedia, accessToken, roleIds, agentAccessToken, }: CreateVideoJobParams): Promise<{
|
|
14
|
-
id: any;
|
|
15
|
-
openaiVideoId: any;
|
|
16
|
-
status: any;
|
|
17
|
-
prompt: any;
|
|
18
|
-
durationSeconds: any;
|
|
19
|
-
resolution: any;
|
|
20
|
-
createdAt: any;
|
|
21
|
-
hasReferenceMedia: boolean;
|
|
22
|
-
}>;
|
|
23
|
-
export {};
|
|
24
|
-
//# sourceMappingURL=creation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"creation.d.ts","sourceRoot":"","sources":["../../../src/lib/videos/creation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAUzD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sFAAsF;IACtF,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,MAAM,EACN,eAAe,EACf,UAAU,EACV,cAAc,EACd,WAAW,EACX,OAAO,EACP,gBAAgB,GACjB,EAAE,oBAAoB;;;;;;;;;GAmHtB"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { validateBase64ReferenceMedia } from './upload';
|
|
2
|
-
import { resizeReferenceImage } from './image-resize';
|
|
3
|
-
import { VideoStatus, VideoVisibility } from '../../types/video';
|
|
4
|
-
import { createVideo, createVideoReferenceMedia, } from '../stores/video-store';
|
|
5
|
-
import { createVideoViaAgent } from './agent-api-client';
|
|
6
|
-
const ALLOWED_DURATIONS = [4, 8, 12];
|
|
7
|
-
export async function createVideoJob({ ownerId, prompt, durationSeconds, resolution, referenceMedia, accessToken, roleIds, agentAccessToken, }) {
|
|
8
|
-
if (!prompt || typeof prompt !== 'string' || prompt.trim().length === 0) {
|
|
9
|
-
throw new Error('Prompt is required and must be a non-empty string');
|
|
10
|
-
}
|
|
11
|
-
if (!ALLOWED_DURATIONS.includes(durationSeconds)) {
|
|
12
|
-
throw new Error(`Duration must be one of: ${ALLOWED_DURATIONS.join(', ')} seconds`);
|
|
13
|
-
}
|
|
14
|
-
if (referenceMedia) {
|
|
15
|
-
const { base64, fileType, format, fileSizeBytes } = referenceMedia;
|
|
16
|
-
if (!base64 || !fileType || !format || !fileSizeBytes) {
|
|
17
|
-
throw new Error('Invalid reference media: missing required fields');
|
|
18
|
-
}
|
|
19
|
-
const validation = validateBase64ReferenceMedia(base64);
|
|
20
|
-
if (!validation.valid) {
|
|
21
|
-
throw new Error(validation.error || 'Invalid reference media');
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
// Build params for Agent API proxy
|
|
25
|
-
let inputReferenceBase64;
|
|
26
|
-
let inputReferenceFilename;
|
|
27
|
-
// Handle reference media - resize image and send as base64 to Agent API
|
|
28
|
-
if (referenceMedia?.base64 && referenceMedia.fileType === 'image') {
|
|
29
|
-
console.log(`[VIDEO CREATION] Resizing reference image to match video resolution: ${resolution}`);
|
|
30
|
-
inputReferenceBase64 = await resizeReferenceImage(referenceMedia.base64, resolution);
|
|
31
|
-
inputReferenceFilename = `reference-${Date.now()}.jpg`;
|
|
32
|
-
console.log('[VIDEO CREATION] Added resized reference image for video generation');
|
|
33
|
-
}
|
|
34
|
-
else if (referenceMedia?.base64 && referenceMedia.fileType === 'video') {
|
|
35
|
-
console.warn('[VIDEO CREATION] Video reference media provided - video references may not be fully supported');
|
|
36
|
-
}
|
|
37
|
-
console.log('Generating video with params:', {
|
|
38
|
-
model: 'video',
|
|
39
|
-
prompt: prompt.trim(),
|
|
40
|
-
seconds: durationSeconds.toString(),
|
|
41
|
-
size: resolution,
|
|
42
|
-
hasReferenceMedia: !!referenceMedia,
|
|
43
|
-
referenceMediaType: referenceMedia?.fileType,
|
|
44
|
-
});
|
|
45
|
-
// Call Agent API which proxies to LiteLLM -> OpenAI
|
|
46
|
-
// Uses 'video' purpose name which LiteLLM resolves to the configured video model
|
|
47
|
-
const openaiResponse = await createVideoViaAgent(agentAccessToken, {
|
|
48
|
-
model: 'video',
|
|
49
|
-
prompt: prompt.trim(),
|
|
50
|
-
seconds: durationSeconds.toString(),
|
|
51
|
-
size: resolution,
|
|
52
|
-
inputReferenceBase64,
|
|
53
|
-
inputReferenceFilename,
|
|
54
|
-
});
|
|
55
|
-
// Map OpenAI status to our VideoStatus enum
|
|
56
|
-
// OpenAI uses: "queued" | "in_progress" | "completed" | "failed"
|
|
57
|
-
let initialStatus;
|
|
58
|
-
switch (openaiResponse.status) {
|
|
59
|
-
case 'queued':
|
|
60
|
-
initialStatus = VideoStatus.QUEUED;
|
|
61
|
-
break;
|
|
62
|
-
case 'in_progress':
|
|
63
|
-
initialStatus = VideoStatus.PROCESSING;
|
|
64
|
-
break;
|
|
65
|
-
case 'completed':
|
|
66
|
-
initialStatus = VideoStatus.COMPLETED;
|
|
67
|
-
break;
|
|
68
|
-
case 'failed':
|
|
69
|
-
initialStatus = VideoStatus.FAILED;
|
|
70
|
-
break;
|
|
71
|
-
default:
|
|
72
|
-
initialStatus = VideoStatus.QUEUED;
|
|
73
|
-
}
|
|
74
|
-
const videoInput = {
|
|
75
|
-
ownerId,
|
|
76
|
-
openaiVideoId: openaiResponse.id,
|
|
77
|
-
prompt: prompt.trim(),
|
|
78
|
-
durationSeconds,
|
|
79
|
-
resolution,
|
|
80
|
-
status: initialStatus,
|
|
81
|
-
progress: openaiResponse.progress || null,
|
|
82
|
-
visibility: VideoVisibility.PRIVATE,
|
|
83
|
-
openaiModel: 'video',
|
|
84
|
-
completedAt: null,
|
|
85
|
-
expiresAt: null,
|
|
86
|
-
downloadUrl: null,
|
|
87
|
-
posterUrl: null,
|
|
88
|
-
errorMessage: null,
|
|
89
|
-
};
|
|
90
|
-
const video = await createVideo(accessToken, roleIds, videoInput);
|
|
91
|
-
if (referenceMedia) {
|
|
92
|
-
await createVideoReferenceMedia(accessToken, roleIds, {
|
|
93
|
-
videoId: video.id,
|
|
94
|
-
fileType: referenceMedia.fileType,
|
|
95
|
-
format: referenceMedia.format,
|
|
96
|
-
fileSizeBytes: referenceMedia.fileSizeBytes,
|
|
97
|
-
base64Data: referenceMedia.base64,
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
console.log('Created video record:', video.id, 'with status:', video.status);
|
|
101
|
-
return {
|
|
102
|
-
id: video.id,
|
|
103
|
-
openaiVideoId: openaiResponse.id,
|
|
104
|
-
status: video.status,
|
|
105
|
-
prompt: video.prompt,
|
|
106
|
-
durationSeconds: video.durationSeconds,
|
|
107
|
-
resolution: video.resolution,
|
|
108
|
-
createdAt: video.createdAt,
|
|
109
|
-
hasReferenceMedia: !!referenceMedia,
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=creation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"creation.js","sourceRoot":"","sources":["../../../src/lib/videos/creation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Expiration tracking utilities for video content.
|
|
3
|
-
*
|
|
4
|
-
* OpenAI stores videos temporarily (~7 days after completion).
|
|
5
|
-
*/
|
|
6
|
-
import type { VideoExpirationStatus } from '../../types/video';
|
|
7
|
-
export declare function calculateExpirationDate(completedAt: Date): Date;
|
|
8
|
-
export declare function getExpirationStatus(expiresAt: Date | null): VideoExpirationStatus | null;
|
|
9
|
-
export declare function formatExpirationDate(expiresAt: Date): string;
|
|
10
|
-
export declare function isExpiringSoon(expiresAt: Date | null): boolean;
|
|
11
|
-
export declare function hasExpired(expiresAt: Date | null): boolean;
|
|
12
|
-
export declare function getTimeRemaining(expiresAt: Date | null): string;
|
|
13
|
-
//# sourceMappingURL=expiration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expiration.d.ts","sourceRoot":"","sources":["../../../src/lib/videos/expiration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK/D,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAI/D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAgDxF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAK5D;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAK9D;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAI1D;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAmB/D"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Expiration tracking utilities for video content.
|
|
3
|
-
*
|
|
4
|
-
* OpenAI stores videos temporarily (~7 days after completion).
|
|
5
|
-
*/
|
|
6
|
-
import { EXPIRATION_THRESHOLDS } from '../../types/video';
|
|
7
|
-
const OPENAI_RETENTION_PERIOD_DAYS = 7;
|
|
8
|
-
export function calculateExpirationDate(completedAt) {
|
|
9
|
-
const expires = new Date(completedAt);
|
|
10
|
-
expires.setDate(expires.getDate() + OPENAI_RETENTION_PERIOD_DAYS);
|
|
11
|
-
return expires;
|
|
12
|
-
}
|
|
13
|
-
export function getExpirationStatus(expiresAt) {
|
|
14
|
-
if (!expiresAt)
|
|
15
|
-
return null;
|
|
16
|
-
const now = new Date();
|
|
17
|
-
const hoursRemaining = (expiresAt.getTime() - now.getTime()) / (1000 * 60 * 60);
|
|
18
|
-
const daysRemaining = Math.ceil(hoursRemaining / 24);
|
|
19
|
-
if (hoursRemaining <= 0) {
|
|
20
|
-
return {
|
|
21
|
-
status: 'expired',
|
|
22
|
-
severity: 'critical',
|
|
23
|
-
hoursRemaining: null,
|
|
24
|
-
daysRemaining: null,
|
|
25
|
-
label: 'Expired',
|
|
26
|
-
badgeClass: 'bg-gray-100 text-gray-800',
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
if (hoursRemaining <= EXPIRATION_THRESHOLDS.CRITICAL) {
|
|
30
|
-
return {
|
|
31
|
-
status: 'expires-soon',
|
|
32
|
-
severity: 'critical',
|
|
33
|
-
hoursRemaining: Math.ceil(hoursRemaining),
|
|
34
|
-
daysRemaining,
|
|
35
|
-
label: `Expires in ${Math.ceil(hoursRemaining)} hours`,
|
|
36
|
-
badgeClass: 'bg-red-100 text-red-800',
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
if (hoursRemaining <= EXPIRATION_THRESHOLDS.WARNING) {
|
|
40
|
-
return {
|
|
41
|
-
status: 'expires-soon',
|
|
42
|
-
severity: 'warning',
|
|
43
|
-
hoursRemaining: Math.ceil(hoursRemaining),
|
|
44
|
-
daysRemaining,
|
|
45
|
-
label: `Expires in ${daysRemaining} days`,
|
|
46
|
-
badgeClass: 'bg-orange-100 text-orange-800',
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
status: 'active',
|
|
51
|
-
severity: 'normal',
|
|
52
|
-
hoursRemaining: Math.ceil(hoursRemaining),
|
|
53
|
-
daysRemaining,
|
|
54
|
-
label: `Expires in ${daysRemaining} days`,
|
|
55
|
-
badgeClass: 'bg-blue-100 text-blue-800',
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
export function formatExpirationDate(expiresAt) {
|
|
59
|
-
return new Intl.DateTimeFormat('en-US', {
|
|
60
|
-
dateStyle: 'medium',
|
|
61
|
-
timeStyle: 'short',
|
|
62
|
-
}).format(expiresAt);
|
|
63
|
-
}
|
|
64
|
-
export function isExpiringSoon(expiresAt) {
|
|
65
|
-
if (!expiresAt)
|
|
66
|
-
return false;
|
|
67
|
-
const now = new Date();
|
|
68
|
-
const hoursRemaining = (expiresAt.getTime() - now.getTime()) / (1000 * 60 * 60);
|
|
69
|
-
return hoursRemaining > 0 && hoursRemaining <= EXPIRATION_THRESHOLDS.WARNING;
|
|
70
|
-
}
|
|
71
|
-
export function hasExpired(expiresAt) {
|
|
72
|
-
if (!expiresAt)
|
|
73
|
-
return false;
|
|
74
|
-
const now = new Date();
|
|
75
|
-
return expiresAt.getTime() <= now.getTime();
|
|
76
|
-
}
|
|
77
|
-
export function getTimeRemaining(expiresAt) {
|
|
78
|
-
if (!expiresAt)
|
|
79
|
-
return 'Unknown';
|
|
80
|
-
const now = new Date();
|
|
81
|
-
const msRemaining = expiresAt.getTime() - now.getTime();
|
|
82
|
-
if (msRemaining <= 0)
|
|
83
|
-
return 'Expired';
|
|
84
|
-
const hoursRemaining = Math.floor(msRemaining / (1000 * 60 * 60));
|
|
85
|
-
const daysRemaining = Math.floor(hoursRemaining / 24);
|
|
86
|
-
const remainingHours = hoursRemaining % 24;
|
|
87
|
-
if (daysRemaining > 0) {
|
|
88
|
-
if (remainingHours > 0) {
|
|
89
|
-
return `${daysRemaining} day${daysRemaining > 1 ? 's' : ''}, ${remainingHours} hour${remainingHours > 1 ? 's' : ''}`;
|
|
90
|
-
}
|
|
91
|
-
return `${daysRemaining} day${daysRemaining > 1 ? 's' : ''}`;
|
|
92
|
-
}
|
|
93
|
-
return `${hoursRemaining} hour${hoursRemaining > 1 ? 's' : ''}`;
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=expiration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expiration.js","sourceRoot":"","sources":["../../../src/lib/videos/expiration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Image Resizing Utilities for Video Reference Images
|
|
3
|
-
*
|
|
4
|
-
* Resizes reference images to match the video resolution before passing to OpenAI.
|
|
5
|
-
* OpenAI requires reference images to match the video resolution exactly.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Parse video resolution string to width and height
|
|
9
|
-
*
|
|
10
|
-
* @param resolution - Resolution string like "1920x1080" or "1080x1920"
|
|
11
|
-
* @returns Object with width and height, or null if invalid
|
|
12
|
-
*/
|
|
13
|
-
export declare function parseResolution(resolution: string): {
|
|
14
|
-
width: number;
|
|
15
|
-
height: number;
|
|
16
|
-
} | null;
|
|
17
|
-
/**
|
|
18
|
-
* Convert base64 data URL to File object
|
|
19
|
-
*
|
|
20
|
-
* @param base64Data - Base64 data URL (e.g., "data:image/jpeg;base64,...")
|
|
21
|
-
* @param filename - Optional filename for the File object
|
|
22
|
-
* @returns File object
|
|
23
|
-
*/
|
|
24
|
-
export declare function base64ToFile(base64Data: string, filename?: string): File;
|
|
25
|
-
/**
|
|
26
|
-
* Resize a base64 image to match video resolution
|
|
27
|
-
*
|
|
28
|
-
* @param base64Data - Base64 data URL (e.g., "data:image/jpeg;base64,...")
|
|
29
|
-
* @param targetWidth - Target width in pixels
|
|
30
|
-
* @param targetHeight - Target height in pixels
|
|
31
|
-
* @returns Promise resolving to resized base64 data URL
|
|
32
|
-
*/
|
|
33
|
-
export declare function resizeBase64Image(base64Data: string, targetWidth: number, targetHeight: number): Promise<string>;
|
|
34
|
-
/**
|
|
35
|
-
* Resize reference image to match video resolution
|
|
36
|
-
*
|
|
37
|
-
* @param base64Data - Base64 data URL of the reference image
|
|
38
|
-
* @param videoResolution - Video resolution string (e.g., "1920x1080")
|
|
39
|
-
* @returns Promise resolving to resized base64 data URL
|
|
40
|
-
*/
|
|
41
|
-
export declare function resizeReferenceImage(base64Data: string, videoResolution: string): Promise<string>;
|
|
42
|
-
//# sourceMappingURL=image-resize.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-resize.d.ts","sourceRoot":"","sources":["../../../src/lib/videos/image-resize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU5F;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA8B,GAAG,IAAI,CAqB/F;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CASjB"}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Image Resizing Utilities for Video Reference Images
|
|
3
|
-
*
|
|
4
|
-
* Resizes reference images to match the video resolution before passing to OpenAI.
|
|
5
|
-
* OpenAI requires reference images to match the video resolution exactly.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Parse video resolution string to width and height
|
|
9
|
-
*
|
|
10
|
-
* @param resolution - Resolution string like "1920x1080" or "1080x1920"
|
|
11
|
-
* @returns Object with width and height, or null if invalid
|
|
12
|
-
*/
|
|
13
|
-
export function parseResolution(resolution) {
|
|
14
|
-
const match = resolution.match(/^(\d+)x(\d+)$/);
|
|
15
|
-
if (!match) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
return {
|
|
19
|
-
width: parseInt(match[1], 10),
|
|
20
|
-
height: parseInt(match[2], 10),
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Convert base64 data URL to File object
|
|
25
|
-
*
|
|
26
|
-
* @param base64Data - Base64 data URL (e.g., "data:image/jpeg;base64,...")
|
|
27
|
-
* @param filename - Optional filename for the File object
|
|
28
|
-
* @returns File object
|
|
29
|
-
*/
|
|
30
|
-
export function base64ToFile(base64Data, filename = 'reference-image.jpg') {
|
|
31
|
-
// Extract base64 data and mime type
|
|
32
|
-
const base64Match = base64Data.match(/^data:image\/(\w+);base64,(.+)$/);
|
|
33
|
-
if (!base64Match) {
|
|
34
|
-
throw new Error('Invalid base64 data URL format');
|
|
35
|
-
}
|
|
36
|
-
const [, format, base64String] = base64Match;
|
|
37
|
-
const imageBuffer = Buffer.from(base64String, 'base64');
|
|
38
|
-
// Determine MIME type
|
|
39
|
-
const mimeType = format === 'jpg' ? 'image/jpeg' : `image/${format}`;
|
|
40
|
-
// Create File object from buffer
|
|
41
|
-
// Node.js 18+ has File available globally
|
|
42
|
-
// The OpenAI SDK expects a File object (which extends Blob) for multipart/form-data uploads
|
|
43
|
-
if (typeof File === 'undefined') {
|
|
44
|
-
throw new Error('File API not available. Requires Node.js 18+ or newer.');
|
|
45
|
-
}
|
|
46
|
-
return new File([imageBuffer], filename, { type: mimeType });
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Resize a base64 image to match video resolution
|
|
50
|
-
*
|
|
51
|
-
* @param base64Data - Base64 data URL (e.g., "data:image/jpeg;base64,...")
|
|
52
|
-
* @param targetWidth - Target width in pixels
|
|
53
|
-
* @param targetHeight - Target height in pixels
|
|
54
|
-
* @returns Promise resolving to resized base64 data URL
|
|
55
|
-
*/
|
|
56
|
-
export async function resizeBase64Image(base64Data, targetWidth, targetHeight) {
|
|
57
|
-
try {
|
|
58
|
-
// Dynamic import of sharp (may not be available in all environments)
|
|
59
|
-
const sharp = await import('sharp').catch(() => null);
|
|
60
|
-
if (!sharp) {
|
|
61
|
-
console.warn('[IMAGE RESIZE] sharp not available, returning original image');
|
|
62
|
-
return base64Data;
|
|
63
|
-
}
|
|
64
|
-
// Extract base64 data (remove data URL prefix)
|
|
65
|
-
const base64Match = base64Data.match(/^data:image\/(\w+);base64,(.+)$/);
|
|
66
|
-
if (!base64Match) {
|
|
67
|
-
throw new Error('Invalid base64 data URL format');
|
|
68
|
-
}
|
|
69
|
-
const [, format, base64String] = base64Match;
|
|
70
|
-
const imageBuffer = Buffer.from(base64String, 'base64');
|
|
71
|
-
// Resize image to match video resolution
|
|
72
|
-
// Using 'cover' fit to fill the entire area (may crop)
|
|
73
|
-
// Using 'contain' would preserve aspect ratio but may add padding
|
|
74
|
-
const resizedBuffer = await sharp.default(imageBuffer)
|
|
75
|
-
.resize(targetWidth, targetHeight, {
|
|
76
|
-
fit: 'cover', // Fill the entire area, may crop edges
|
|
77
|
-
position: 'center', // Center the image when cropping
|
|
78
|
-
})
|
|
79
|
-
.toBuffer();
|
|
80
|
-
// Convert back to base64 data URL
|
|
81
|
-
const resizedBase64 = resizedBuffer.toString('base64');
|
|
82
|
-
const mimeType = format === 'jpg' ? 'image/jpeg' : `image/${format}`;
|
|
83
|
-
return `data:${mimeType};base64,${resizedBase64}`;
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
console.error('[IMAGE RESIZE] Failed to resize image:', error);
|
|
87
|
-
// Return original if resize fails
|
|
88
|
-
return base64Data;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Resize reference image to match video resolution
|
|
93
|
-
*
|
|
94
|
-
* @param base64Data - Base64 data URL of the reference image
|
|
95
|
-
* @param videoResolution - Video resolution string (e.g., "1920x1080")
|
|
96
|
-
* @returns Promise resolving to resized base64 data URL
|
|
97
|
-
*/
|
|
98
|
-
export async function resizeReferenceImage(base64Data, videoResolution) {
|
|
99
|
-
const resolution = parseResolution(videoResolution);
|
|
100
|
-
if (!resolution) {
|
|
101
|
-
console.warn(`[IMAGE RESIZE] Invalid resolution format: ${videoResolution}, returning original`);
|
|
102
|
-
return base64Data;
|
|
103
|
-
}
|
|
104
|
-
return resizeBase64Image(base64Data, resolution.width, resolution.height);
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=image-resize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-resize.js","sourceRoot":"","sources":["../../../src/lib/videos/image-resize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Video Processing Utilities
|
|
3
|
-
*
|
|
4
|
-
* Functions for downloading videos, extracting poster frames,
|
|
5
|
-
* and storing them using the data service (MinIO).
|
|
6
|
-
*
|
|
7
|
-
* NOTE: Videos are stored but NOT processed. This means:
|
|
8
|
-
* - Videos are uploaded to MinIO and stored permanently
|
|
9
|
-
* - No transcript generation
|
|
10
|
-
* - No frame sampling for descriptions
|
|
11
|
-
* - No analysis or metadata extraction
|
|
12
|
-
*
|
|
13
|
-
* Processing (transcript, frame sampling, description generation) will be added later.
|
|
14
|
-
* For now, videos are simply stored for retrieval/download.
|
|
15
|
-
*/
|
|
16
|
-
export interface VideoStorageResult {
|
|
17
|
-
/** URL to the stored video file */
|
|
18
|
-
videoUrl: string;
|
|
19
|
-
/** URL to the stored poster/thumbnail image */
|
|
20
|
-
posterUrl: string;
|
|
21
|
-
/** Size of the video in bytes */
|
|
22
|
-
videoSize: number;
|
|
23
|
-
/** Size of the poster in bytes */
|
|
24
|
-
posterSize: number;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Download video from OpenAI and store it with a poster image
|
|
28
|
-
*
|
|
29
|
-
* @param videoId - Our internal video ID
|
|
30
|
-
* @param openaiVideoId - OpenAI's video ID
|
|
31
|
-
* @param userId - User ID who owns the video
|
|
32
|
-
* @returns URLs and sizes for the stored video and poster
|
|
33
|
-
*/
|
|
34
|
-
export declare function downloadAndStoreVideo(videoId: string, openaiVideoId: string, userId: string, agentAccessToken?: string): Promise<VideoStorageResult>;
|
|
35
|
-
//# sourceMappingURL=processing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processing.d.ts","sourceRoot":"","sources":["../../../src/lib/videos/processing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAA;CACnB;AA8GD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,kBAAkB,CAAC,CA4D7B"}
|