@meistrari/chat-nuxt 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +274 -0
- package/dist/module.d.mts +3 -0
- package/dist/module.json +9 -0
- package/dist/module.mjs +250 -0
- package/dist/runtime/assets/css/code-theme.css +1 -0
- package/dist/runtime/assets/css/markstream.css +1 -0
- package/dist/runtime/components/AppStatusToast.d.vue.ts +3 -0
- package/dist/runtime/components/AppStatusToast.vue +42 -0
- package/dist/runtime/components/AppStatusToast.vue.d.ts +3 -0
- package/dist/runtime/components/TelaChat.d.vue.ts +19 -0
- package/dist/runtime/components/TelaChat.vue +25 -0
- package/dist/runtime/components/TelaChat.vue.d.ts +19 -0
- package/dist/runtime/components/app-markdown-render.d.vue.ts +15 -0
- package/dist/runtime/components/app-markdown-render.vue +45 -0
- package/dist/runtime/components/app-markdown-render.vue.d.ts +15 -0
- package/dist/runtime/components/application-card.d.vue.ts +9 -0
- package/dist/runtime/components/application-card.vue +52 -0
- package/dist/runtime/components/application-card.vue.d.ts +9 -0
- package/dist/runtime/components/audio-preview.d.vue.ts +14 -0
- package/dist/runtime/components/audio-preview.vue +52 -0
- package/dist/runtime/components/audio-preview.vue.d.ts +14 -0
- package/dist/runtime/components/chat/bash-widget.d.vue.ts +9 -0
- package/dist/runtime/components/chat/bash-widget.vue +86 -0
- package/dist/runtime/components/chat/bash-widget.vue.d.ts +9 -0
- package/dist/runtime/components/chat/canvas-selector-modal.d.vue.ts +14 -0
- package/dist/runtime/components/chat/canvas-selector-modal.vue +290 -0
- package/dist/runtime/components/chat/canvas-selector-modal.vue.d.ts +14 -0
- package/dist/runtime/components/chat/context-config.d.vue.ts +30 -0
- package/dist/runtime/components/chat/context-config.vue +423 -0
- package/dist/runtime/components/chat/context-config.vue.d.ts +30 -0
- package/dist/runtime/components/chat/conversation-item.d.vue.ts +20 -0
- package/dist/runtime/components/chat/conversation-item.vue +184 -0
- package/dist/runtime/components/chat/conversation-item.vue.d.ts +20 -0
- package/dist/runtime/components/chat/conversation-list.d.vue.ts +10 -0
- package/dist/runtime/components/chat/conversation-list.vue +78 -0
- package/dist/runtime/components/chat/conversation-list.vue.d.ts +10 -0
- package/dist/runtime/components/chat/doc-sdk-widget.d.vue.ts +9 -0
- package/dist/runtime/components/chat/doc-sdk-widget.vue +74 -0
- package/dist/runtime/components/chat/doc-sdk-widget.vue.d.ts +9 -0
- package/dist/runtime/components/chat/file-preview.d.vue.ts +7 -0
- package/dist/runtime/components/chat/file-preview.vue +313 -0
- package/dist/runtime/components/chat/file-preview.vue.d.ts +7 -0
- package/dist/runtime/components/chat/files-view.d.vue.ts +6 -0
- package/dist/runtime/components/chat/files-view.vue +399 -0
- package/dist/runtime/components/chat/files-view.vue.d.ts +6 -0
- package/dist/runtime/components/chat/generic-tool-widget.d.vue.ts +9 -0
- package/dist/runtime/components/chat/generic-tool-widget.vue +334 -0
- package/dist/runtime/components/chat/generic-tool-widget.vue.d.ts +9 -0
- package/dist/runtime/components/chat/grep-widget.d.vue.ts +9 -0
- package/dist/runtime/components/chat/grep-widget.vue +259 -0
- package/dist/runtime/components/chat/grep-widget.vue.d.ts +9 -0
- package/dist/runtime/components/chat/mention-dropdown.d.vue.ts +14 -0
- package/dist/runtime/components/chat/mention-dropdown.vue +90 -0
- package/dist/runtime/components/chat/mention-dropdown.vue.d.ts +14 -0
- package/dist/runtime/components/chat/message-bubble.d.vue.ts +11 -0
- package/dist/runtime/components/chat/message-bubble.vue +288 -0
- package/dist/runtime/components/chat/message-bubble.vue.d.ts +11 -0
- package/dist/runtime/components/chat/message-input.d.vue.ts +34 -0
- package/dist/runtime/components/chat/message-input.vue +428 -0
- package/dist/runtime/components/chat/message-input.vue.d.ts +34 -0
- package/dist/runtime/components/chat/message-list.d.vue.ts +11 -0
- package/dist/runtime/components/chat/message-list.vue +36 -0
- package/dist/runtime/components/chat/message-list.vue.d.ts +11 -0
- package/dist/runtime/components/chat/model-selector.d.vue.ts +15 -0
- package/dist/runtime/components/chat/model-selector.vue +35 -0
- package/dist/runtime/components/chat/model-selector.vue.d.ts +15 -0
- package/dist/runtime/components/chat/new-conversation-modal.d.vue.ts +14 -0
- package/dist/runtime/components/chat/new-conversation-modal.vue +271 -0
- package/dist/runtime/components/chat/new-conversation-modal.vue.d.ts +14 -0
- package/dist/runtime/components/chat/read-widget.d.vue.ts +9 -0
- package/dist/runtime/components/chat/read-widget.vue +195 -0
- package/dist/runtime/components/chat/read-widget.vue.d.ts +9 -0
- package/dist/runtime/components/chat/reasoning-message.d.vue.ts +13 -0
- package/dist/runtime/components/chat/reasoning-message.vue +341 -0
- package/dist/runtime/components/chat/reasoning-message.vue.d.ts +13 -0
- package/dist/runtime/components/chat/reasoning-step-item.d.vue.ts +37 -0
- package/dist/runtime/components/chat/reasoning-step-item.vue +125 -0
- package/dist/runtime/components/chat/reasoning-step-item.vue.d.ts +37 -0
- package/dist/runtime/components/chat/reasoning-steps.d.vue.ts +12 -0
- package/dist/runtime/components/chat/reasoning-steps.vue +47 -0
- package/dist/runtime/components/chat/reasoning-steps.vue.d.ts +12 -0
- package/dist/runtime/components/chat/reasoning-thought.d.vue.ts +11 -0
- package/dist/runtime/components/chat/reasoning-thought.vue +287 -0
- package/dist/runtime/components/chat/reasoning-thought.vue.d.ts +11 -0
- package/dist/runtime/components/chat/tela-skill-widget.d.vue.ts +9 -0
- package/dist/runtime/components/chat/tela-skill-widget.vue +94 -0
- package/dist/runtime/components/chat/tela-skill-widget.vue.d.ts +9 -0
- package/dist/runtime/components/chat/thinking-indicator.d.vue.ts +3 -0
- package/dist/runtime/components/chat/thinking-indicator.vue +52 -0
- package/dist/runtime/components/chat/thinking-indicator.vue.d.ts +3 -0
- package/dist/runtime/components/chat/thinking-widget.d.vue.ts +8 -0
- package/dist/runtime/components/chat/thinking-widget.vue +53 -0
- package/dist/runtime/components/chat/thinking-widget.vue.d.ts +8 -0
- package/dist/runtime/components/chat/topbar.d.vue.ts +43 -0
- package/dist/runtime/components/chat/topbar.vue +223 -0
- package/dist/runtime/components/chat/topbar.vue.d.ts +43 -0
- package/dist/runtime/components/chat/usage-view.d.vue.ts +8 -0
- package/dist/runtime/components/chat/usage-view.vue +393 -0
- package/dist/runtime/components/chat/usage-view.vue.d.ts +8 -0
- package/dist/runtime/components/chat/vault-link.d.vue.ts +20 -0
- package/dist/runtime/components/chat/vault-link.vue +34 -0
- package/dist/runtime/components/chat/vault-link.vue.d.ts +20 -0
- package/dist/runtime/components/chat/web-search-widget.d.vue.ts +9 -0
- package/dist/runtime/components/chat/web-search-widget.vue +121 -0
- package/dist/runtime/components/chat/web-search-widget.vue.d.ts +9 -0
- package/dist/runtime/components/chat/workstation-query-widget.d.vue.ts +10 -0
- package/dist/runtime/components/chat/workstation-query-widget.vue +552 -0
- package/dist/runtime/components/chat/workstation-query-widget.vue.d.ts +10 -0
- package/dist/runtime/components/chat/workstation-selector-modal.d.vue.ts +14 -0
- package/dist/runtime/components/chat/workstation-selector-modal.vue +272 -0
- package/dist/runtime/components/chat/workstation-selector-modal.vue.d.ts +14 -0
- package/dist/runtime/components/chat/write-widget.d.vue.ts +9 -0
- package/dist/runtime/components/chat/write-widget.vue +165 -0
- package/dist/runtime/components/chat/write-widget.vue.d.ts +9 -0
- package/dist/runtime/components/conversation-files-panel.d.vue.ts +3 -0
- package/dist/runtime/components/conversation-files-panel.vue +252 -0
- package/dist/runtime/components/conversation-files-panel.vue.d.ts +3 -0
- package/dist/runtime/components/csv-preview.d.vue.ts +20 -0
- package/dist/runtime/components/csv-preview.vue +157 -0
- package/dist/runtime/components/csv-preview.vue.d.ts +20 -0
- package/dist/runtime/components/file-preview-panel.d.vue.ts +3 -0
- package/dist/runtime/components/file-preview-panel.vue +185 -0
- package/dist/runtime/components/file-preview-panel.vue.d.ts +3 -0
- package/dist/runtime/components/file-uploader.d.vue.ts +16 -0
- package/dist/runtime/components/file-uploader.vue +136 -0
- package/dist/runtime/components/file-uploader.vue.d.ts +16 -0
- package/dist/runtime/components/icons/anthropic.d.vue.ts +3 -0
- package/dist/runtime/components/icons/anthropic.vue +5 -0
- package/dist/runtime/components/icons/anthropic.vue.d.ts +3 -0
- package/dist/runtime/components/image-preview.d.vue.ts +14 -0
- package/dist/runtime/components/image-preview.vue +54 -0
- package/dist/runtime/components/image-preview.vue.d.ts +14 -0
- package/dist/runtime/components/json-tree-node.d.vue.ts +9 -0
- package/dist/runtime/components/json-tree-node.vue +109 -0
- package/dist/runtime/components/json-tree-node.vue.d.ts +9 -0
- package/dist/runtime/components/json-viewer.d.vue.ts +6 -0
- package/dist/runtime/components/json-viewer.vue +88 -0
- package/dist/runtime/components/json-viewer.vue.d.ts +6 -0
- package/dist/runtime/components/pdf-preview.d.vue.ts +20 -0
- package/dist/runtime/components/pdf-preview.vue +89 -0
- package/dist/runtime/components/pdf-preview.vue.d.ts +20 -0
- package/dist/runtime/components/pdf-viewer.d.vue.ts +10 -0
- package/dist/runtime/components/pdf-viewer.vue +265 -0
- package/dist/runtime/components/pdf-viewer.vue.d.ts +10 -0
- package/dist/runtime/components/powered-by-tela.d.vue.ts +3 -0
- package/dist/runtime/components/powered-by-tela.vue +14 -0
- package/dist/runtime/components/powered-by-tela.vue.d.ts +3 -0
- package/dist/runtime/components/renderers/artifact-display.d.vue.ts +15 -0
- package/dist/runtime/components/renderers/artifact-display.vue +105 -0
- package/dist/runtime/components/renderers/artifact-display.vue.d.ts +15 -0
- package/dist/runtime/components/renderers/audio-renderer.d.vue.ts +7 -0
- package/dist/runtime/components/renderers/audio-renderer.vue +52 -0
- package/dist/runtime/components/renderers/audio-renderer.vue.d.ts +7 -0
- package/dist/runtime/components/renderers/csv-renderer.d.vue.ts +6 -0
- package/dist/runtime/components/renderers/csv-renderer.vue +203 -0
- package/dist/runtime/components/renderers/csv-renderer.vue.d.ts +6 -0
- package/dist/runtime/components/renderers/image-renderer.d.vue.ts +7 -0
- package/dist/runtime/components/renderers/image-renderer.vue +44 -0
- package/dist/runtime/components/renderers/image-renderer.vue.d.ts +7 -0
- package/dist/runtime/components/renderers/markdown-renderer.d.vue.ts +6 -0
- package/dist/runtime/components/renderers/markdown-renderer.vue +66 -0
- package/dist/runtime/components/renderers/markdown-renderer.vue.d.ts +6 -0
- package/dist/runtime/components/renderers/mermaid-diagram.d.vue.ts +7 -0
- package/dist/runtime/components/renderers/mermaid-diagram.vue +165 -0
- package/dist/runtime/components/renderers/mermaid-diagram.vue.d.ts +7 -0
- package/dist/runtime/components/renderers/text-renderer.d.vue.ts +7 -0
- package/dist/runtime/components/renderers/text-renderer.vue +70 -0
- package/dist/runtime/components/renderers/text-renderer.vue.d.ts +7 -0
- package/dist/runtime/components/renderers/video-renderer.d.vue.ts +6 -0
- package/dist/runtime/components/renderers/video-renderer.vue +43 -0
- package/dist/runtime/components/renderers/video-renderer.vue.d.ts +6 -0
- package/dist/runtime/components/text-preview.d.vue.ts +19 -0
- package/dist/runtime/components/text-preview.vue +105 -0
- package/dist/runtime/components/text-preview.vue.d.ts +19 -0
- package/dist/runtime/components/video-preview.d.vue.ts +14 -0
- package/dist/runtime/components/video-preview.vue +55 -0
- package/dist/runtime/components/video-preview.vue.d.ts +14 -0
- package/dist/runtime/composables/PageNavigation.d.ts +13 -0
- package/dist/runtime/composables/PageNavigation.js +18 -0
- package/dist/runtime/composables/useChat.d.ts +25 -0
- package/dist/runtime/composables/useChat.js +512 -0
- package/dist/runtime/composables/useChatApi.d.ts +6 -0
- package/dist/runtime/composables/useChatApi.js +28 -0
- package/dist/runtime/composables/useConversationFiles.d.ts +13 -0
- package/dist/runtime/composables/useConversationFiles.js +98 -0
- package/dist/runtime/composables/useConversationFilesPanel.d.ts +11 -0
- package/dist/runtime/composables/useConversationFilesPanel.js +35 -0
- package/dist/runtime/composables/useConversations.d.ts +15 -0
- package/dist/runtime/composables/useConversations.js +191 -0
- package/dist/runtime/composables/useDiagramExport.d.ts +11 -0
- package/dist/runtime/composables/useDiagramExport.js +186 -0
- package/dist/runtime/composables/useEmbedConfig.d.ts +13 -0
- package/dist/runtime/composables/useEmbedConfig.js +11 -0
- package/dist/runtime/composables/useFeatureFlags.d.ts +19 -0
- package/dist/runtime/composables/useFeatureFlags.js +67 -0
- package/dist/runtime/composables/useFileDrop.d.ts +17 -0
- package/dist/runtime/composables/useFileDrop.js +89 -0
- package/dist/runtime/composables/useFilePreviewPanel.d.ts +30 -0
- package/dist/runtime/composables/useFilePreviewPanel.js +42 -0
- package/dist/runtime/composables/useFileUpload.d.ts +7 -0
- package/dist/runtime/composables/useFileUpload.js +39 -0
- package/dist/runtime/composables/useGitHubSkills.d.ts +6 -0
- package/dist/runtime/composables/useGitHubSkills.js +68 -0
- package/dist/runtime/composables/useGitHubSkillsCallback.d.ts +5 -0
- package/dist/runtime/composables/useGitHubSkillsCallback.js +42 -0
- package/dist/runtime/composables/useIDB.d.ts +11 -0
- package/dist/runtime/composables/useIDB.js +57 -0
- package/dist/runtime/composables/useInputHistory.d.ts +7 -0
- package/dist/runtime/composables/useInputHistory.js +36 -0
- package/dist/runtime/composables/useKnowledgeSources.d.ts +6 -0
- package/dist/runtime/composables/useKnowledgeSources.js +15 -0
- package/dist/runtime/composables/useMediaCache.d.ts +13 -0
- package/dist/runtime/composables/useMediaCache.js +92 -0
- package/dist/runtime/composables/useMentionAutocomplete.d.ts +10 -0
- package/dist/runtime/composables/useMentionAutocomplete.js +272 -0
- package/dist/runtime/composables/useMermaidRenderer.d.ts +5 -0
- package/dist/runtime/composables/useMermaidRenderer.js +121 -0
- package/dist/runtime/composables/usePdf.d.ts +21 -0
- package/dist/runtime/composables/usePdf.js +138 -0
- package/dist/runtime/composables/usePolling.d.ts +12 -0
- package/dist/runtime/composables/usePolling.js +55 -0
- package/dist/runtime/composables/useSelectedModel.d.ts +4 -0
- package/dist/runtime/composables/useSelectedModel.js +46 -0
- package/dist/runtime/composables/useSplashScreen.d.ts +3 -0
- package/dist/runtime/composables/useSplashScreen.js +4 -0
- package/dist/runtime/composables/useStatusToast.d.ts +22 -0
- package/dist/runtime/composables/useStatusToast.js +40 -0
- package/dist/runtime/composables/useTela.d.ts +12 -0
- package/dist/runtime/composables/useTela.js +47 -0
- package/dist/runtime/composables/useToolFormatting.d.ts +5 -0
- package/dist/runtime/composables/useToolFormatting.js +61 -0
- package/dist/runtime/composables/useVault.d.ts +13 -0
- package/dist/runtime/composables/useVault.js +35 -0
- package/dist/runtime/composables/useVerbConjugation.d.ts +6 -0
- package/dist/runtime/composables/useVerbConjugation.js +256 -0
- package/dist/runtime/composables/useWorkspaceContextFiles.d.ts +19 -0
- package/dist/runtime/composables/useWorkspaceContextFiles.js +74 -0
- package/dist/runtime/composables/useWorkspaceCredentials.d.ts +34 -0
- package/dist/runtime/composables/useWorkspaceCredentials.js +175 -0
- package/dist/runtime/composables/useWorkspaceExternalSkills.d.ts +22 -0
- package/dist/runtime/composables/useWorkspaceExternalSkills.js +135 -0
- package/dist/runtime/composables/useWorkspaceKnowledgeSources.d.ts +11 -0
- package/dist/runtime/composables/useWorkspaceKnowledgeSources.js +88 -0
- package/dist/runtime/composables/useWorkspaceMembers.d.ts +13 -0
- package/dist/runtime/composables/useWorkspaceMembers.js +37 -0
- package/dist/runtime/composables/useWorkspacePersonalization.d.ts +6 -0
- package/dist/runtime/composables/useWorkspacePersonalization.js +19 -0
- package/dist/runtime/composables/useWorkspaceSettings.d.ts +30 -0
- package/dist/runtime/composables/useWorkspaceSettings.js +135 -0
- package/dist/runtime/composables/useWorkspaceTelaTools.d.ts +13 -0
- package/dist/runtime/composables/useWorkspaceTelaTools.js +91 -0
- package/dist/runtime/composables/useWorkspaces.d.ts +5 -0
- package/dist/runtime/composables/useWorkspaces.js +14 -0
- package/dist/runtime/composables/useZoomPan.d.ts +18 -0
- package/dist/runtime/composables/useZoomPan.js +130 -0
- package/dist/runtime/embed/components/ChatEmbed.d.vue.ts +23 -0
- package/dist/runtime/embed/components/ChatEmbed.vue +27 -0
- package/dist/runtime/embed/components/ChatEmbed.vue.d.ts +23 -0
- package/dist/runtime/embed/components/ChatEmbedInner.d.vue.ts +19 -0
- package/dist/runtime/embed/components/ChatEmbedInner.vue +604 -0
- package/dist/runtime/embed/components/ChatEmbedInner.vue.d.ts +19 -0
- package/dist/runtime/public/favicon.svg +4 -0
- package/dist/runtime/public/files/archive.svg +9 -0
- package/dist/runtime/public/files/audio.svg +4 -0
- package/dist/runtime/public/files/c.svg +4 -0
- package/dist/runtime/public/files/cpp.svg +6 -0
- package/dist/runtime/public/files/css.svg +4 -0
- package/dist/runtime/public/files/doc.svg +5 -0
- package/dist/runtime/public/files/generic.svg +7 -0
- package/dist/runtime/public/files/go.svg +6 -0
- package/dist/runtime/public/files/html.svg +4 -0
- package/dist/runtime/public/files/image.svg +3 -0
- package/dist/runtime/public/files/java.svg +7 -0
- package/dist/runtime/public/files/javascript.svg +4 -0
- package/dist/runtime/public/files/json.svg +5 -0
- package/dist/runtime/public/files/markdown.svg +5 -0
- package/dist/runtime/public/files/pdf.svg +5 -0
- package/dist/runtime/public/files/presentation.svg +5 -0
- package/dist/runtime/public/files/python.svg +5 -0
- package/dist/runtime/public/files/ruby.svg +5 -0
- package/dist/runtime/public/files/rust.svg +13 -0
- package/dist/runtime/public/files/sheet.svg +9 -0
- package/dist/runtime/public/files/shell.svg +5 -0
- package/dist/runtime/public/files/sql.svg +6 -0
- package/dist/runtime/public/files/typescript.svg +5 -0
- package/dist/runtime/public/files/video.svg +5 -0
- package/dist/runtime/public/files/yaml.svg +7 -0
- package/dist/runtime/public/github.svg +3 -0
- package/dist/runtime/public/robots.txt +1 -0
- package/dist/runtime/server/api/admin/trigger-usage-report.post.d.ts +2 -0
- package/dist/runtime/server/api/admin/trigger-usage-report.post.js +15 -0
- package/dist/runtime/server/api/chat/conversations/[id]/cancel.post.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/cancel.post.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/clear.post.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/clear.post.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/duplicate.post.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/duplicate.post.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/files.get.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/files.get.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/index.delete.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/index.delete.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/index.get.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/index.get.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/index.patch.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/index.patch.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/messages/[messageId]/retry.post.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/messages/[messageId]/retry.post.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/messages/index.get.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/messages/index.get.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/messages/index.post.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/messages/index.post.js +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/usage.get.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/[id]/usage.get.js +1 -0
- package/dist/runtime/server/api/chat/conversations/generate-title.post.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/generate-title.post.js +1 -0
- package/dist/runtime/server/api/chat/conversations/index.get.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/index.get.js +1 -0
- package/dist/runtime/server/api/chat/conversations/index.post.d.ts +1 -0
- package/dist/runtime/server/api/chat/conversations/index.post.js +1 -0
- package/dist/runtime/server/api/chat/workspace/settings.get.d.ts +2 -0
- package/dist/runtime/server/api/chat/workspace/settings.get.js +14 -0
- package/dist/runtime/server/api/conversations/[id]/cancel.post.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/cancel.post.js +58 -0
- package/dist/runtime/server/api/conversations/[id]/clear.post.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/clear.post.js +38 -0
- package/dist/runtime/server/api/conversations/[id]/duplicate.post.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/duplicate.post.js +41 -0
- package/dist/runtime/server/api/conversations/[id]/files.get.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/files.get.js +131 -0
- package/dist/runtime/server/api/conversations/[id]/index.delete.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/index.delete.js +35 -0
- package/dist/runtime/server/api/conversations/[id]/index.get.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/index.get.js +34 -0
- package/dist/runtime/server/api/conversations/[id]/index.patch.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/index.patch.js +54 -0
- package/dist/runtime/server/api/conversations/[id]/messages/[messageId]/retry.post.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/messages/[messageId]/retry.post.js +168 -0
- package/dist/runtime/server/api/conversations/[id]/messages/index.get.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/messages/index.get.js +220 -0
- package/dist/runtime/server/api/conversations/[id]/messages/index.post.d.ts +2 -0
- package/dist/runtime/server/api/conversations/[id]/messages/index.post.js +181 -0
- package/dist/runtime/server/api/conversations/[id]/usage.get.d.ts +8 -0
- package/dist/runtime/server/api/conversations/[id]/usage.get.js +96 -0
- package/dist/runtime/server/api/conversations/generate-title.post.d.ts +2 -0
- package/dist/runtime/server/api/conversations/generate-title.post.js +49 -0
- package/dist/runtime/server/api/conversations/index.get.d.ts +2 -0
- package/dist/runtime/server/api/conversations/index.get.js +11 -0
- package/dist/runtime/server/api/conversations/index.post.d.ts +2 -0
- package/dist/runtime/server/api/conversations/index.post.js +41 -0
- package/dist/runtime/server/api/external-skills/discover.post.d.ts +2 -0
- package/dist/runtime/server/api/external-skills/discover.post.js +65 -0
- package/dist/runtime/server/api/github/disconnect.post.d.ts +2 -0
- package/dist/runtime/server/api/github/disconnect.post.js +21 -0
- package/dist/runtime/server/api/github/status.get.d.ts +2 -0
- package/dist/runtime/server/api/github/status.get.js +23 -0
- package/dist/runtime/server/api/tela/canvas.get.d.ts +2 -0
- package/dist/runtime/server/api/tela/canvas.get.js +18 -0
- package/dist/runtime/server/api/tela/projects.get.d.ts +2 -0
- package/dist/runtime/server/api/tela/projects.get.js +9 -0
- package/dist/runtime/server/api/tela/workspaces.get.d.ts +2 -0
- package/dist/runtime/server/api/tela/workspaces.get.js +9 -0
- package/dist/runtime/server/api/tela/workstations.get.d.ts +2 -0
- package/dist/runtime/server/api/tela/workstations.get.js +24 -0
- package/dist/runtime/server/api/vault/permalink-metadata.post.d.ts +2 -0
- package/dist/runtime/server/api/vault/permalink-metadata.post.js +77 -0
- package/dist/runtime/server/api/vault/resolve.post.d.ts +2 -0
- package/dist/runtime/server/api/vault/resolve.post.js +82 -0
- package/dist/runtime/server/api/vault/upload.post.d.ts +2 -0
- package/dist/runtime/server/api/vault/upload.post.js +55 -0
- package/dist/runtime/server/api/workspace/credentials/[id].delete.d.ts +2 -0
- package/dist/runtime/server/api/workspace/credentials/[id].delete.js +18 -0
- package/dist/runtime/server/api/workspace/credentials/[id].put.d.ts +2 -0
- package/dist/runtime/server/api/workspace/credentials/[id].put.js +28 -0
- package/dist/runtime/server/api/workspace/credentials/index.get.d.ts +2 -0
- package/dist/runtime/server/api/workspace/credentials/index.get.js +10 -0
- package/dist/runtime/server/api/workspace/credentials/index.post.d.ts +2 -0
- package/dist/runtime/server/api/workspace/credentials/index.post.js +33 -0
- package/dist/runtime/server/api/workspace/settings.get.d.ts +2 -0
- package/dist/runtime/server/api/workspace/settings.get.js +27 -0
- package/dist/runtime/server/api/workspace/settings.patch.d.ts +2 -0
- package/dist/runtime/server/api/workspace/settings.patch.js +86 -0
- package/dist/runtime/server/api/workspace/usage.get.d.ts +48 -0
- package/dist/runtime/server/api/workspace/usage.get.js +186 -0
- package/dist/runtime/server/db/index.d.ts +6 -0
- package/dist/runtime/server/db/index.js +19 -0
- package/dist/runtime/server/db/schema/conversation-usage.d.ts +438 -0
- package/dist/runtime/server/db/schema/conversation-usage.js +34 -0
- package/dist/runtime/server/db/schema/conversations.d.ts +197 -0
- package/dist/runtime/server/db/schema/conversations.js +18 -0
- package/dist/runtime/server/db/schema/external-skills.d.ts +235 -0
- package/dist/runtime/server/db/schema/external-skills.js +26 -0
- package/dist/runtime/server/db/schema/index.d.ts +5 -0
- package/dist/runtime/server/db/schema/index.js +5 -0
- package/dist/runtime/server/db/schema/messages.d.ts +221 -0
- package/dist/runtime/server/db/schema/messages.js +19 -0
- package/dist/runtime/server/db/schema/workspace-settings.d.ts +164 -0
- package/dist/runtime/server/db/schema/workspace-settings.js +15 -0
- package/dist/runtime/server/db/schema.d.ts +1 -0
- package/dist/runtime/server/db/schema.js +1 -0
- package/dist/runtime/server/middleware/domain-validation.d.ts +2 -0
- package/dist/runtime/server/middleware/domain-validation.js +22 -0
- package/dist/runtime/server/middleware/request-logger.d.ts +2 -0
- package/dist/runtime/server/middleware/request-logger.js +15 -0
- package/dist/runtime/server/prompts/base-system.d.ts +2 -0
- package/dist/runtime/server/prompts/base-system.js +100 -0
- package/dist/runtime/server/prompts/base-system.md +99 -0
- package/dist/runtime/server/prompts/knowledge-sources.d.ts +2 -0
- package/dist/runtime/server/prompts/knowledge-sources.js +37 -0
- package/dist/runtime/server/prompts/knowledge-sources.md +36 -0
- package/dist/runtime/server/tasks/send-daily-usage-report.d.ts +2 -0
- package/dist/runtime/server/tasks/send-daily-usage-report.js +73 -0
- package/dist/runtime/server/tsconfig.json +21 -0
- package/dist/runtime/server/utils/agent-api.d.ts +39 -0
- package/dist/runtime/server/utils/agent-api.js +169 -0
- package/dist/runtime/server/utils/auth-api.d.ts +1 -0
- package/dist/runtime/server/utils/auth-api.js +25 -0
- package/dist/runtime/server/utils/auth.d.ts +17 -0
- package/dist/runtime/server/utils/auth.js +28 -0
- package/dist/runtime/server/utils/billing.d.ts +37 -0
- package/dist/runtime/server/utils/billing.js +68 -0
- package/dist/runtime/server/utils/chat-context.d.ts +9 -0
- package/dist/runtime/server/utils/chat-context.js +24 -0
- package/dist/runtime/server/utils/chat-message-builder.d.ts +4 -0
- package/dist/runtime/server/utils/chat-message-builder.js +39 -0
- package/dist/runtime/server/utils/chat-prompts.d.ts +7 -0
- package/dist/runtime/server/utils/chat-prompts.js +9 -0
- package/dist/runtime/server/utils/chat-workspace-settings.d.ts +16 -0
- package/dist/runtime/server/utils/chat-workspace-settings.js +115 -0
- package/dist/runtime/server/utils/external-skills.d.ts +2 -0
- package/dist/runtime/server/utils/external-skills.js +15 -0
- package/dist/runtime/server/utils/logger.d.ts +2 -0
- package/dist/runtime/server/utils/logger.js +12 -0
- package/dist/runtime/server/utils/slack.d.ts +32 -0
- package/dist/runtime/server/utils/slack.js +102 -0
- package/dist/runtime/server/utils/tela-api.d.ts +2 -0
- package/dist/runtime/server/utils/tela-api.js +29 -0
- package/dist/runtime/server/utils/vault.d.ts +3 -0
- package/dist/runtime/server/utils/vault.js +52 -0
- package/dist/runtime/server/utils/workspace-settings-resolver.stub.d.ts +2 -0
- package/dist/runtime/server/utils/workspace-settings-resolver.stub.js +1 -0
- package/dist/runtime/server/utils/workspace.d.ts +4 -0
- package/dist/runtime/server/utils/workspace.js +21 -0
- package/dist/runtime/types/agent.d.ts +168 -0
- package/dist/runtime/types/agent.js +95 -0
- package/dist/runtime/types/chat-workspace-settings-resolver.d.ts +4 -0
- package/dist/runtime/types/chat.d.ts +81 -0
- package/dist/runtime/types/chat.js +12 -0
- package/dist/runtime/types/credential.d.ts +8 -0
- package/dist/runtime/types/credential.js +0 -0
- package/dist/runtime/types/csv.d.ts +4 -0
- package/dist/runtime/types/csv.js +0 -0
- package/dist/runtime/types/external-skills.d.ts +8 -0
- package/dist/runtime/types/external-skills.js +0 -0
- package/dist/runtime/types/feature-flags.d.ts +7 -0
- package/dist/runtime/types/feature-flags.js +6 -0
- package/dist/runtime/types/reasoning.d.ts +17 -0
- package/dist/runtime/types/reasoning.js +0 -0
- package/dist/runtime/types/tela.d.ts +46 -0
- package/dist/runtime/types/tela.js +0 -0
- package/dist/runtime/types/workspace.d.ts +20 -0
- package/dist/runtime/types/workspace.js +0 -0
- package/dist/runtime/utils/calculate-usage.d.ts +48 -0
- package/dist/runtime/utils/calculate-usage.js +63 -0
- package/dist/runtime/utils/code-detection.d.ts +1 -0
- package/dist/runtime/utils/code-detection.js +24 -0
- package/dist/runtime/utils/export-conversation.d.ts +2 -0
- package/dist/runtime/utils/export-conversation.js +43 -0
- package/dist/runtime/utils/file.d.ts +46 -0
- package/dist/runtime/utils/file.js +500 -0
- package/dist/runtime/utils/format-time.d.ts +22 -0
- package/dist/runtime/utils/format-time.js +96 -0
- package/dist/runtime/utils/markdown-nodes.d.ts +22 -0
- package/dist/runtime/utils/markdown-nodes.js +40 -0
- package/dist/runtime/utils/string.d.ts +4 -0
- package/dist/runtime/utils/string.js +5 -0
- package/dist/runtime/utils/tela-chat.d.ts +19 -0
- package/dist/runtime/utils/tela-chat.js +20 -0
- package/dist/types.d.mts +7 -0
- package/package.json +72 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { H3Event } from 'h3';
|
|
2
|
+
import { type AppSession } from '#chat-runtime/server/utils/auth';
|
|
3
|
+
export type ChatContext = {
|
|
4
|
+
user: AppSession['user'];
|
|
5
|
+
workspaceId: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function resolveRequestedWorkspaceId(requestedWorkspaceId: string | null | undefined): string | null;
|
|
8
|
+
export declare function resolveChatContextFromSession(session: AppSession, requestedWorkspaceId?: string | null): ChatContext;
|
|
9
|
+
export declare function resolveChatContext(event: H3Event): ChatContext;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createError, getHeader } from "h3";
|
|
2
|
+
import { requireUser } from "#chat-runtime/server/utils/auth";
|
|
3
|
+
export function resolveRequestedWorkspaceId(requestedWorkspaceId) {
|
|
4
|
+
const normalized = requestedWorkspaceId?.trim();
|
|
5
|
+
return normalized || null;
|
|
6
|
+
}
|
|
7
|
+
export function resolveChatContextFromSession(session, requestedWorkspaceId) {
|
|
8
|
+
const normalizedRequestedWorkspaceId = resolveRequestedWorkspaceId(requestedWorkspaceId);
|
|
9
|
+
if (normalizedRequestedWorkspaceId && normalizedRequestedWorkspaceId !== session.workspace.id) {
|
|
10
|
+
throw createError({
|
|
11
|
+
statusCode: 403,
|
|
12
|
+
statusMessage: "Forbidden"
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
user: session.user,
|
|
17
|
+
workspaceId: normalizedRequestedWorkspaceId ?? session.workspace.id
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function resolveChatContext(event) {
|
|
21
|
+
const session = requireUser(event);
|
|
22
|
+
const requestedWorkspaceId = getHeader(event, "x-chat-workspace-id");
|
|
23
|
+
return resolveChatContextFromSession(session, requestedWorkspaceId);
|
|
24
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { KnowledgeSource } from '#chat-runtime/types/chat';
|
|
2
|
+
export declare function renderSystemPrompt(vaultUrl: string): string;
|
|
3
|
+
export declare function truncateTitle(content: string, maxLength?: number): string;
|
|
4
|
+
export declare function buildMessageWithContext(content: string, systemMessage: string | null, knowledgeSources: KnowledgeSource[] | null, isFirstMessage: boolean, renderedSystemPrompt: string): string;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { readChatPromptTemplate } from "#chat-runtime/server/utils/chat-prompts";
|
|
2
|
+
import { getVaultHost } from "#chat-runtime/server/utils/vault";
|
|
3
|
+
const BASE_SYSTEM_PROMPT_TEMPLATE = readChatPromptTemplate("base-system.md");
|
|
4
|
+
const KNOWLEDGE_SOURCES_TEMPLATE = readChatPromptTemplate("knowledge-sources.md");
|
|
5
|
+
export function renderSystemPrompt(vaultUrl) {
|
|
6
|
+
return BASE_SYSTEM_PROMPT_TEMPLATE.replaceAll("{{VAULT_HOST}}", getVaultHost(vaultUrl));
|
|
7
|
+
}
|
|
8
|
+
export function truncateTitle(content, maxLength = 50) {
|
|
9
|
+
const firstLine = content.split("\n")[0]?.trim() ?? "";
|
|
10
|
+
if (firstLine.length <= maxLength)
|
|
11
|
+
return firstLine;
|
|
12
|
+
return `${firstLine.slice(0, maxLength)}...`;
|
|
13
|
+
}
|
|
14
|
+
function buildKnowledgeSourcesContext(knowledgeSources) {
|
|
15
|
+
if (!knowledgeSources || knowledgeSources.length === 0)
|
|
16
|
+
return "";
|
|
17
|
+
const sources = knowledgeSources.map((source) => {
|
|
18
|
+
return `- **${source.name}** (ID: \`${source.id}\`)${source.description ? ` - ${source.description}` : ""}${source.taskCount ? ` [${source.taskCount} documentos processados]` : ""}`;
|
|
19
|
+
}).join("\n");
|
|
20
|
+
return KNOWLEDGE_SOURCES_TEMPLATE.replace("{{SOURCES}}", sources);
|
|
21
|
+
}
|
|
22
|
+
export function buildMessageWithContext(content, systemMessage, knowledgeSources, isFirstMessage, renderedSystemPrompt) {
|
|
23
|
+
if (!isFirstMessage)
|
|
24
|
+
return content;
|
|
25
|
+
const knowledgeContext = buildKnowledgeSourcesContext(knowledgeSources);
|
|
26
|
+
const parts = [renderedSystemPrompt];
|
|
27
|
+
if (systemMessage) {
|
|
28
|
+
parts.push(`# Instru\xE7\xF5es do Usu\xE1rio
|
|
29
|
+
${systemMessage}`);
|
|
30
|
+
}
|
|
31
|
+
if (knowledgeContext) {
|
|
32
|
+
parts.push(knowledgeContext);
|
|
33
|
+
}
|
|
34
|
+
return `<system_context>
|
|
35
|
+
${parts.join("\n\n")}
|
|
36
|
+
</system_context>
|
|
37
|
+
|
|
38
|
+
${content}`;
|
|
39
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const chatPromptTemplates: {
|
|
2
|
+
readonly 'base-system.md': any;
|
|
3
|
+
readonly 'knowledge-sources.md': any;
|
|
4
|
+
};
|
|
5
|
+
export type ChatPromptTemplateName = keyof typeof chatPromptTemplates;
|
|
6
|
+
export declare function readChatPromptTemplate(fileName: ChatPromptTemplateName): string;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import baseSystemPromptTemplate from "#chat-runtime/server/prompts/base-system";
|
|
2
|
+
import knowledgeSourcesPromptTemplate from "#chat-runtime/server/prompts/knowledge-sources";
|
|
3
|
+
const chatPromptTemplates = {
|
|
4
|
+
"base-system.md": baseSystemPromptTemplate,
|
|
5
|
+
"knowledge-sources.md": knowledgeSourcesPromptTemplate
|
|
6
|
+
};
|
|
7
|
+
export function readChatPromptTemplate(fileName) {
|
|
8
|
+
return chatPromptTemplates[fileName];
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { H3Event } from 'h3';
|
|
2
|
+
import { type useDb } from '#chat-runtime/server/db';
|
|
3
|
+
import type { ResolvedWorkspaceSettings } from '#chat-runtime/server/db/schema';
|
|
4
|
+
import type { ChatContext } from './chat-context.js';
|
|
5
|
+
export type ResolvedWorkspaceSettingsInput = Partial<ResolvedWorkspaceSettings>;
|
|
6
|
+
type DbInstance = ReturnType<typeof useDb>;
|
|
7
|
+
export declare function normalizeResolvedWorkspaceSettings(settings: ResolvedWorkspaceSettingsInput | null | undefined, fallbackUpdatedAt?: Date | string): ResolvedWorkspaceSettings;
|
|
8
|
+
export declare function serializeResolvedWorkspaceSettings(settings: ResolvedWorkspaceSettings): ResolvedWorkspaceSettings;
|
|
9
|
+
export declare function getConversationAppliedSettings(conversation: {
|
|
10
|
+
appliedSettingsSnapshot?: ResolvedWorkspaceSettingsInput | null;
|
|
11
|
+
}, trustedSettings?: ResolvedWorkspaceSettingsInput | null): ResolvedWorkspaceSettings;
|
|
12
|
+
export declare function hasMaterialWorkspaceSettingsMismatch(currentSettings: ResolvedWorkspaceSettingsInput | null | undefined, trustedSettings: ResolvedWorkspaceSettingsInput | null | undefined): boolean;
|
|
13
|
+
export declare function resolveDefaultWorkspaceSettings(db: DbInstance, workspaceId: string): Promise<ResolvedWorkspaceSettings>;
|
|
14
|
+
export declare function resolveWorkspaceSettings(event: H3Event, context: ChatContext, db: DbInstance): Promise<ResolvedWorkspaceSettings>;
|
|
15
|
+
export declare function getWorkspaceSettingsUpdatedAt(settings: ResolvedWorkspaceSettings): Date;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from "node:util";
|
|
2
|
+
import { createError } from "h3";
|
|
3
|
+
import { eq } from "drizzle-orm";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { schema } from "#chat-runtime/server/db";
|
|
6
|
+
import registeredWorkspaceSettingsResolver from "#chat-workspace-settings-resolver";
|
|
7
|
+
import { rowToExternalSkill } from "#chat-runtime/server/utils/external-skills";
|
|
8
|
+
import { logger } from "#chat-runtime/server/utils/logger";
|
|
9
|
+
const contextFileSchema = z.object({
|
|
10
|
+
url: z.string(),
|
|
11
|
+
name: z.string(),
|
|
12
|
+
mimeType: z.string().optional(),
|
|
13
|
+
vaultReference: z.string().optional()
|
|
14
|
+
});
|
|
15
|
+
const resolvedWorkspaceSettingsSchema = z.object({
|
|
16
|
+
systemMessage: z.string().nullable().optional(),
|
|
17
|
+
contextFiles: z.array(contextFileSchema).nullable().optional(),
|
|
18
|
+
canvasTools: z.array(z.object({ id: z.string() }).passthrough()).nullable().optional(),
|
|
19
|
+
knowledgeSources: z.array(z.object({ id: z.string() }).passthrough()).nullable().optional(),
|
|
20
|
+
externalSkills: z.array(z.object({ ref: z.string(), name: z.string() }).passthrough()).nullable().optional(),
|
|
21
|
+
updatedAt: z.union([z.string(), z.date()]).optional()
|
|
22
|
+
});
|
|
23
|
+
function getRegisteredWorkspaceSettingsResolver() {
|
|
24
|
+
const resolver = registeredWorkspaceSettingsResolver;
|
|
25
|
+
return typeof resolver === "function" ? resolver : null;
|
|
26
|
+
}
|
|
27
|
+
export function normalizeResolvedWorkspaceSettings(settings, fallbackUpdatedAt = /* @__PURE__ */ new Date()) {
|
|
28
|
+
return {
|
|
29
|
+
systemMessage: settings?.systemMessage ?? null,
|
|
30
|
+
contextFiles: settings?.contextFiles ?? null,
|
|
31
|
+
canvasTools: settings?.canvasTools ?? null,
|
|
32
|
+
knowledgeSources: settings?.knowledgeSources ?? null,
|
|
33
|
+
externalSkills: settings?.externalSkills ?? null,
|
|
34
|
+
updatedAt: settings?.updatedAt ?? fallbackUpdatedAt
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function serializeResolvedWorkspaceSettings(settings) {
|
|
38
|
+
return {
|
|
39
|
+
...settings,
|
|
40
|
+
updatedAt: settings.updatedAt instanceof Date ? settings.updatedAt.toISOString() : settings.updatedAt
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function getConversationAppliedSettings(conversation, trustedSettings) {
|
|
44
|
+
if (conversation.appliedSettingsSnapshot) {
|
|
45
|
+
return normalizeResolvedWorkspaceSettings(conversation.appliedSettingsSnapshot);
|
|
46
|
+
}
|
|
47
|
+
return normalizeResolvedWorkspaceSettings(trustedSettings);
|
|
48
|
+
}
|
|
49
|
+
export function hasMaterialWorkspaceSettingsMismatch(currentSettings, trustedSettings) {
|
|
50
|
+
const normalizeForCompare = (settings) => ({
|
|
51
|
+
systemMessage: settings?.systemMessage ?? null,
|
|
52
|
+
contextFiles: settings?.contextFiles ?? null,
|
|
53
|
+
canvasTools: settings?.canvasTools ?? null,
|
|
54
|
+
knowledgeSources: settings?.knowledgeSources ?? null,
|
|
55
|
+
externalSkills: settings?.externalSkills ?? null
|
|
56
|
+
});
|
|
57
|
+
return !isDeepStrictEqual(normalizeForCompare(currentSettings), normalizeForCompare(trustedSettings));
|
|
58
|
+
}
|
|
59
|
+
function parseResolverResult(settings) {
|
|
60
|
+
const parsedSettings = resolvedWorkspaceSettingsSchema.safeParse(settings);
|
|
61
|
+
if (!parsedSettings.success) {
|
|
62
|
+
logger.error({
|
|
63
|
+
issues: parsedSettings.error.issues
|
|
64
|
+
}, "Workspace settings resolver returned an invalid payload");
|
|
65
|
+
throw createError({
|
|
66
|
+
statusCode: 500,
|
|
67
|
+
statusMessage: "Failed to resolve chat workspace settings"
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return normalizeResolvedWorkspaceSettings(parsedSettings.data);
|
|
71
|
+
}
|
|
72
|
+
export async function resolveDefaultWorkspaceSettings(db, workspaceId) {
|
|
73
|
+
const [settings, skillRows] = await Promise.all([
|
|
74
|
+
db.select().from(schema.workspaceSettings).where(eq(schema.workspaceSettings.workspaceId, workspaceId)),
|
|
75
|
+
db.select().from(schema.externalSkills).where(eq(schema.externalSkills.workspaceId, workspaceId))
|
|
76
|
+
]);
|
|
77
|
+
const baseSettings = settings[0];
|
|
78
|
+
const externalSkills = skillRows.map(rowToExternalSkill);
|
|
79
|
+
if (!baseSettings) {
|
|
80
|
+
return normalizeResolvedWorkspaceSettings({
|
|
81
|
+
externalSkills: externalSkills.length > 0 ? externalSkills : null
|
|
82
|
+
}, /* @__PURE__ */ new Date(0));
|
|
83
|
+
}
|
|
84
|
+
return normalizeResolvedWorkspaceSettings({
|
|
85
|
+
systemMessage: baseSettings.systemMessage,
|
|
86
|
+
contextFiles: baseSettings.contextFiles,
|
|
87
|
+
canvasTools: baseSettings.canvasTools,
|
|
88
|
+
knowledgeSources: baseSettings.knowledgeSources,
|
|
89
|
+
externalSkills: externalSkills.length > 0 ? externalSkills : null,
|
|
90
|
+
updatedAt: baseSettings.updatedAt
|
|
91
|
+
}, baseSettings.updatedAt);
|
|
92
|
+
}
|
|
93
|
+
export async function resolveWorkspaceSettings(event, context, db) {
|
|
94
|
+
const resolver = getRegisteredWorkspaceSettingsResolver();
|
|
95
|
+
try {
|
|
96
|
+
const result = resolver ? await resolver(event, context) : await resolveDefaultWorkspaceSettings(db, context.workspaceId);
|
|
97
|
+
return parseResolverResult(result);
|
|
98
|
+
} catch (error) {
|
|
99
|
+
if (error && typeof error === "object" && "statusCode" in error) {
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
logger.error({
|
|
103
|
+
error,
|
|
104
|
+
workspaceId: context.workspaceId,
|
|
105
|
+
userId: context.user.id
|
|
106
|
+
}, "Workspace settings resolution failed");
|
|
107
|
+
throw createError({
|
|
108
|
+
statusCode: 500,
|
|
109
|
+
statusMessage: "Failed to resolve chat workspace settings"
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export function getWorkspaceSettingsUpdatedAt(settings) {
|
|
114
|
+
return settings.updatedAt instanceof Date ? settings.updatedAt : new Date(settings.updatedAt);
|
|
115
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function rowToExternalSkill(row) {
|
|
2
|
+
return {
|
|
3
|
+
ref: row.ref,
|
|
4
|
+
name: row.name,
|
|
5
|
+
description: row.description,
|
|
6
|
+
runtime: row.runtime,
|
|
7
|
+
allowedTools: row.allowedTools,
|
|
8
|
+
isPublic: row.isPublic,
|
|
9
|
+
addedBy: {
|
|
10
|
+
userId: row.addedByUserId,
|
|
11
|
+
username: row.addedByUsername
|
|
12
|
+
},
|
|
13
|
+
addedAt: row.addedAt.toISOString()
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import pino from "@meistrari/logger";
|
|
2
|
+
const isDevelopment = process.env.ENVIRONMENT === "development";
|
|
3
|
+
export const logger = pino({
|
|
4
|
+
level: process.env.LOG_LEVEL || "info",
|
|
5
|
+
transport: isDevelopment ? {
|
|
6
|
+
target: "pino-pretty",
|
|
7
|
+
options: {
|
|
8
|
+
messageKey: "message",
|
|
9
|
+
singleLine: true
|
|
10
|
+
}
|
|
11
|
+
} : void 0
|
|
12
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
interface SlackBlock {
|
|
2
|
+
type: string;
|
|
3
|
+
text?: {
|
|
4
|
+
type: string;
|
|
5
|
+
text: string;
|
|
6
|
+
emoji?: boolean;
|
|
7
|
+
};
|
|
8
|
+
elements?: Array<{
|
|
9
|
+
type: string;
|
|
10
|
+
text: string;
|
|
11
|
+
emoji?: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
interface SlackMessage {
|
|
15
|
+
text?: string;
|
|
16
|
+
blocks?: SlackBlock[];
|
|
17
|
+
}
|
|
18
|
+
export interface WorkspaceUsageData {
|
|
19
|
+
workspaceId: string;
|
|
20
|
+
workspaceName: string;
|
|
21
|
+
totalTokens: number;
|
|
22
|
+
totalCost: number;
|
|
23
|
+
rawCost: number;
|
|
24
|
+
promptTokens: number;
|
|
25
|
+
completionTokens: number;
|
|
26
|
+
conversationCount: number;
|
|
27
|
+
userCount: number;
|
|
28
|
+
billingMode: 'plan' | 'credits';
|
|
29
|
+
}
|
|
30
|
+
export declare function sendSlackMessage(webhookUrl: string, message: SlackMessage): Promise<boolean>;
|
|
31
|
+
export declare function formatUsageReport(workspaceUsage: WorkspaceUsageData[], reportDate: Date): SlackMessage;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { logger } from "#chat-runtime/server/utils/logger";
|
|
2
|
+
export async function sendSlackMessage(webhookUrl, message) {
|
|
3
|
+
try {
|
|
4
|
+
const response = await fetch(webhookUrl, {
|
|
5
|
+
method: "POST",
|
|
6
|
+
headers: {
|
|
7
|
+
"Content-Type": "application/json"
|
|
8
|
+
},
|
|
9
|
+
body: JSON.stringify(message)
|
|
10
|
+
});
|
|
11
|
+
if (!response.ok) {
|
|
12
|
+
logger.error({ status: response.status, text: await response.text() }, "Slack webhook error");
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return true;
|
|
16
|
+
} catch (error) {
|
|
17
|
+
logger.error(error, "Failed to send Slack message");
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function formatNumber(num) {
|
|
22
|
+
return num.toLocaleString("en-US");
|
|
23
|
+
}
|
|
24
|
+
function formatCost(cost, billingMode) {
|
|
25
|
+
if (billingMode === "credits") {
|
|
26
|
+
return `${Math.round(cost)} credits`;
|
|
27
|
+
}
|
|
28
|
+
return `$${cost.toFixed(2)}`;
|
|
29
|
+
}
|
|
30
|
+
function formatDate(date) {
|
|
31
|
+
return date.toLocaleDateString("en-US", {
|
|
32
|
+
weekday: "long",
|
|
33
|
+
year: "numeric",
|
|
34
|
+
month: "long",
|
|
35
|
+
day: "numeric"
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export function formatUsageReport(workspaceUsage, reportDate) {
|
|
39
|
+
const blocks = [];
|
|
40
|
+
blocks.push({
|
|
41
|
+
type: "header",
|
|
42
|
+
text: {
|
|
43
|
+
type: "plain_text",
|
|
44
|
+
text: `\u{1F4CA} Chat Usage Report - ${formatDate(reportDate)}`,
|
|
45
|
+
emoji: true
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
blocks.push({
|
|
49
|
+
type: "divider"
|
|
50
|
+
});
|
|
51
|
+
let totalTokens = 0;
|
|
52
|
+
let totalRawCost = 0;
|
|
53
|
+
let totalConversations = 0;
|
|
54
|
+
for (const usage of workspaceUsage) {
|
|
55
|
+
totalTokens += usage.totalTokens;
|
|
56
|
+
totalRawCost += usage.rawCost;
|
|
57
|
+
totalConversations += usage.conversationCount;
|
|
58
|
+
const costText = `${formatCost(usage.totalCost, usage.billingMode)} ($${usage.rawCost.toFixed(2)})`;
|
|
59
|
+
blocks.push({
|
|
60
|
+
type: "section",
|
|
61
|
+
text: {
|
|
62
|
+
type: "mrkdwn",
|
|
63
|
+
text: [
|
|
64
|
+
`*${usage.workspaceName}*`,
|
|
65
|
+
`\u251C Tokens: ${formatNumber(usage.totalTokens)} (prompt: ${formatNumber(usage.promptTokens)} / completion: ${formatNumber(usage.completionTokens)})`,
|
|
66
|
+
`\u251C Cost: ${costText}`,
|
|
67
|
+
`\u251C Conversations: ${formatNumber(usage.conversationCount)}`,
|
|
68
|
+
`\u2514 Users: ${formatNumber(usage.userCount)}`
|
|
69
|
+
].join("\n")
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
blocks.push({
|
|
74
|
+
type: "divider"
|
|
75
|
+
});
|
|
76
|
+
blocks.push({
|
|
77
|
+
type: "section",
|
|
78
|
+
text: {
|
|
79
|
+
type: "mrkdwn",
|
|
80
|
+
text: [
|
|
81
|
+
"*Totals*",
|
|
82
|
+
`\u251C Total Tokens: ${formatNumber(totalTokens)}`,
|
|
83
|
+
`\u251C Total Raw Cost: $${totalRawCost.toFixed(2)}`,
|
|
84
|
+
`\u251C Total Conversations: ${formatNumber(totalConversations)}`,
|
|
85
|
+
`\u2514 Workspaces: ${workspaceUsage.length}`
|
|
86
|
+
].join("\n")
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
blocks.push({
|
|
90
|
+
type: "context",
|
|
91
|
+
elements: [
|
|
92
|
+
{
|
|
93
|
+
type: "mrkdwn",
|
|
94
|
+
text: `Report generated at ${(/* @__PURE__ */ new Date()).toISOString()}`
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
text: `Daily Usage Report - ${formatDate(reportDate)}`,
|
|
100
|
+
blocks
|
|
101
|
+
};
|
|
102
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { logger } from "#chat-runtime/server/utils/logger";
|
|
2
|
+
export async function telaFetch(event, path, options) {
|
|
3
|
+
const config = useRuntimeConfig();
|
|
4
|
+
const token = event.context.auth?.token;
|
|
5
|
+
if (!token) {
|
|
6
|
+
throw createError({ statusCode: 401, statusMessage: "No auth token" });
|
|
7
|
+
}
|
|
8
|
+
const start = performance.now();
|
|
9
|
+
const response = await fetch(`${config.telaApiUrl}${path}`, {
|
|
10
|
+
...options,
|
|
11
|
+
headers: {
|
|
12
|
+
"Authorization": `Bearer ${token}`,
|
|
13
|
+
"Content-Type": "application/json",
|
|
14
|
+
...options?.headers
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
logger.error({ status: response.status, statusText: response.statusText, path }, "Tela API request failed");
|
|
19
|
+
throw createError({
|
|
20
|
+
statusCode: response.status,
|
|
21
|
+
statusMessage: `Tela API error: ${response.statusText}`
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
logger.debug({ path, durationMs: Math.round(performance.now() - start), status: response.status }, "Tela API request succeeded");
|
|
25
|
+
if (response.status === 204 || response.headers.get("content-length") === "0") {
|
|
26
|
+
return void 0;
|
|
27
|
+
}
|
|
28
|
+
return response.json();
|
|
29
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const KNOWN_VAULT_HOSTS = /* @__PURE__ */ new Set(["vault.tela.com", "api.tela.com", "api.telastaging.com"]);
|
|
2
|
+
const PERMALINK_PATH_RE = /^(?:\/.*)?\/permalinks\/[a-zA-Z0-9_-]+$/;
|
|
3
|
+
export function getVaultHost(vaultUrl) {
|
|
4
|
+
if (!vaultUrl)
|
|
5
|
+
return "vault.tela.com";
|
|
6
|
+
try {
|
|
7
|
+
const url = new URL(vaultUrl);
|
|
8
|
+
const path = url.pathname.replace(/\/+$/, "");
|
|
9
|
+
return path && path !== "/" ? `${url.host}${path}` : url.host;
|
|
10
|
+
} catch {
|
|
11
|
+
return "vault.tela.com";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function parseVaultHost(vaultUrl) {
|
|
15
|
+
if (!vaultUrl)
|
|
16
|
+
return null;
|
|
17
|
+
try {
|
|
18
|
+
return new URL(vaultUrl).host;
|
|
19
|
+
} catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function isAllowedPermalinkUrl(url, vaultUrl) {
|
|
24
|
+
try {
|
|
25
|
+
const parsed = new URL(url);
|
|
26
|
+
if (parsed.protocol !== "https:")
|
|
27
|
+
return false;
|
|
28
|
+
if (!PERMALINK_PATH_RE.test(parsed.pathname))
|
|
29
|
+
return false;
|
|
30
|
+
const allowedHosts = new Set(KNOWN_VAULT_HOSTS);
|
|
31
|
+
const envHost = parseVaultHost(vaultUrl);
|
|
32
|
+
if (envHost)
|
|
33
|
+
allowedHosts.add(envHost);
|
|
34
|
+
return allowedHosts.has(parsed.host);
|
|
35
|
+
} catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function isAllowedRedirectUrl(url, vaultS3Bucket) {
|
|
40
|
+
try {
|
|
41
|
+
const parsed = new URL(url);
|
|
42
|
+
if (parsed.protocol !== "https:")
|
|
43
|
+
return false;
|
|
44
|
+
if (vaultS3Bucket) {
|
|
45
|
+
const escaped = vaultS3Bucket.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
46
|
+
return new RegExp(`^${escaped}\\.s3(\\.[a-z0-9-]+)?\\.amazonaws\\.com$`).test(parsed.host);
|
|
47
|
+
}
|
|
48
|
+
return /\.s3(\.[a-z0-9-]+)?\.amazonaws\.com$/.test(parsed.host);
|
|
49
|
+
} catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default null;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { H3Event } from 'h3';
|
|
2
|
+
import { type useDb } from '#chat-runtime/server/db';
|
|
3
|
+
export declare function getWorkspaceSettings(db: ReturnType<typeof useDb>, workspaceId: string): Promise<any>;
|
|
4
|
+
export declare function resolveWorkspaceCredentials(event: H3Event, workspaceId: string): Promise<Record<string, string>>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { eq } from "drizzle-orm";
|
|
2
|
+
import { schema } from "#chat-runtime/server/db";
|
|
3
|
+
import { telaFetch } from "#chat-runtime/server/utils/tela-api";
|
|
4
|
+
export async function getWorkspaceSettings(db, workspaceId) {
|
|
5
|
+
const [settings] = await db.select().from(schema.workspaceSettings).where(eq(schema.workspaceSettings.workspaceId, workspaceId));
|
|
6
|
+
return settings ?? null;
|
|
7
|
+
}
|
|
8
|
+
export async function resolveWorkspaceCredentials(event, workspaceId) {
|
|
9
|
+
const config = useRuntimeConfig();
|
|
10
|
+
return await telaFetch(
|
|
11
|
+
event,
|
|
12
|
+
`/workspaces/${workspaceId}/credentials/resolve`,
|
|
13
|
+
{
|
|
14
|
+
headers: {
|
|
15
|
+
"X-Service-Name": "chat-app",
|
|
16
|
+
"X-Service-Key": config.chatAppServiceKey,
|
|
17
|
+
"x-data-token": event.context.auth?.token ?? ""
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
) ?? {};
|
|
21
|
+
}
|