ruflo 3.42.2 → 3.42.3
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 +422 -422
- package/bin/ruflo.js +77 -77
- package/package.json +117 -117
- package/src/chat-ui/Dockerfile +25 -25
- package/src/chat-ui/patch-mcp-url-safety.sh +28 -28
- package/src/config/config.example.json +76 -76
- package/src/mcp-bridge/Dockerfile +47 -47
- package/src/mcp-bridge/index.js +1780 -1780
- package/src/mcp-bridge/mcp-stdio-kernel.js +159 -159
- package/src/mcp-bridge/package.json +17 -17
- package/src/mcp-bridge/test-harness.js +470 -470
- package/src/mcp-bridge/test-runtime-security.mjs +208 -208
- package/src/mcp-bridge/test-security-lock.js +121 -121
- package/src/nginx/Dockerfile +10 -10
- package/src/nginx/nginx.conf +67 -67
- package/src/nginx/static/favicon-dark.svg +4 -4
- package/src/nginx/static/favicon.svg +4 -4
- package/src/nginx/static/icon.svg +5 -5
- package/src/nginx/static/logo.svg +9 -9
- package/src/nginx/static/manifest.json +22 -22
- package/src/nginx/static/welcome.js +184 -184
- package/src/ruvocal/.claude/skills/add-model-descriptions/SKILL.md +73 -73
- package/src/ruvocal/.devcontainer/Dockerfile +9 -9
- package/src/ruvocal/.devcontainer/devcontainer.json +36 -36
- package/src/ruvocal/.dockerignore +16 -16
- package/src/ruvocal/.eslintignore +13 -13
- package/src/ruvocal/.eslintrc.cjs +45 -45
- package/src/ruvocal/.gcloudignore +18 -18
- package/src/ruvocal/.github/ISSUE_TEMPLATE/bug-report--chat-ui-.md +43 -43
- package/src/ruvocal/.github/ISSUE_TEMPLATE/config-support.md +9 -9
- package/src/ruvocal/.github/ISSUE_TEMPLATE/feature-request--chat-ui-.md +17 -17
- package/src/ruvocal/.github/ISSUE_TEMPLATE/huggingchat.md +11 -11
- package/src/ruvocal/.github/release.yml +16 -16
- package/src/ruvocal/.github/workflows/build-docs.yml +18 -18
- package/src/ruvocal/.github/workflows/build-image.yml +142 -142
- package/src/ruvocal/.github/workflows/build-pr-docs.yml +20 -20
- package/src/ruvocal/.github/workflows/deploy-dev.yml +63 -63
- package/src/ruvocal/.github/workflows/deploy-prod.yml +78 -78
- package/src/ruvocal/.github/workflows/lint-and-test.yml +84 -84
- package/src/ruvocal/.github/workflows/slugify.yaml +72 -72
- package/src/ruvocal/.github/workflows/trufflehog.yml +17 -17
- package/src/ruvocal/.github/workflows/upload-pr-documentation.yml +16 -16
- package/src/ruvocal/.husky/lint-stage-config.js +4 -4
- package/src/ruvocal/.husky/pre-commit +2 -2
- package/src/ruvocal/.prettierignore +14 -14
- package/src/ruvocal/.prettierrc +7 -7
- package/src/ruvocal/CLAUDE.md +126 -126
- package/src/ruvocal/Dockerfile +96 -96
- package/src/ruvocal/LICENSE +202 -202
- package/src/ruvocal/PRIVACY.md +41 -41
- package/src/ruvocal/README.md +164 -164
- package/src/ruvocal/chart/Chart.yaml +5 -5
- package/src/ruvocal/chart/env/dev.yaml +260 -260
- package/src/ruvocal/chart/env/prod.yaml +273 -273
- package/src/ruvocal/chart/templates/_helpers.tpl +22 -22
- package/src/ruvocal/chart/templates/config.yaml +10 -10
- package/src/ruvocal/chart/templates/deployment.yaml +81 -81
- package/src/ruvocal/chart/templates/hpa.yaml +45 -45
- package/src/ruvocal/chart/templates/infisical.yaml +24 -24
- package/src/ruvocal/chart/templates/ingress-internal.yaml +32 -32
- package/src/ruvocal/chart/templates/ingress.yaml +32 -32
- package/src/ruvocal/chart/templates/network-policy.yaml +36 -36
- package/src/ruvocal/chart/templates/service-account.yaml +13 -13
- package/src/ruvocal/chart/templates/service-monitor.yaml +17 -17
- package/src/ruvocal/chart/templates/service.yaml +21 -21
- package/src/ruvocal/chart/values.yaml +73 -73
- package/src/ruvocal/cloudbuild.yaml +68 -68
- package/src/ruvocal/config/branding.env.example +19 -19
- package/src/ruvocal/docker-compose.yml +21 -21
- package/src/ruvocal/docs/adr/ADR-029-HUGGINGFACE-CHAT-UI-CLOUD-RUN.md +1236 -1236
- package/src/ruvocal/docs/adr/ADR-033-RUVECTOR-RUFLO-MCP-INTEGRATION.md +111 -111
- package/src/ruvocal/docs/adr/ADR-034-OPTIONAL-MCP-BACKENDS.md +117 -117
- package/src/ruvocal/docs/adr/ADR-035-MCP-TOOL-GROUPS.md +186 -186
- package/src/ruvocal/docs/adr/ADR-037-AUTOPILOT-CHAT-MODE.md +1500 -1500
- package/src/ruvocal/docs/adr/ADR-038-RUVOCAL-FORK.md +286 -286
- package/src/ruvocal/docs/source/_toctree.yml +30 -30
- package/src/ruvocal/docs/source/configuration/common-issues.md +38 -38
- package/src/ruvocal/docs/source/configuration/llm-router.md +105 -105
- package/src/ruvocal/docs/source/configuration/mcp-tools.md +84 -84
- package/src/ruvocal/docs/source/configuration/metrics.md +9 -9
- package/src/ruvocal/docs/source/configuration/open-id.md +57 -57
- package/src/ruvocal/docs/source/configuration/overview.md +89 -89
- package/src/ruvocal/docs/source/configuration/theming.md +20 -20
- package/src/ruvocal/docs/source/developing/architecture.md +48 -48
- package/src/ruvocal/docs/source/index.md +53 -53
- package/src/ruvocal/docs/source/installation/docker.md +43 -43
- package/src/ruvocal/docs/source/installation/helm.md +43 -43
- package/src/ruvocal/docs/source/installation/local.md +62 -62
- package/src/ruvocal/entrypoint.sh +18 -18
- package/src/ruvocal/mcp-bridge/Dockerfile +47 -47
- package/src/ruvocal/mcp-bridge/cloudbuild.yaml +49 -49
- package/src/ruvocal/mcp-bridge/index.js +1995 -1995
- package/src/ruvocal/mcp-bridge/mcp-stdio-kernel.js +159 -159
- package/src/ruvocal/mcp-bridge/package-lock.json +762 -762
- package/src/ruvocal/mcp-bridge/package.json +17 -17
- package/src/ruvocal/mcp-bridge/test-harness.js +470 -470
- package/src/ruvocal/package-lock.json +11741 -11741
- package/src/ruvocal/package.json +121 -121
- package/src/ruvocal/postcss.config.js +6 -6
- package/src/ruvocal/rvf.manifest.json +204 -204
- package/src/ruvocal/scripts/config.ts +64 -64
- package/src/ruvocal/scripts/generate-welcome.mjs +181 -181
- package/src/ruvocal/scripts/populate.ts +288 -288
- package/src/ruvocal/scripts/samples.txt +194 -194
- package/src/ruvocal/scripts/setups/vitest-setup-server.ts +44 -44
- package/src/ruvocal/scripts/updateLocalEnv.ts +48 -48
- package/src/ruvocal/src/ambient.d.ts +7 -7
- package/src/ruvocal/src/app.d.ts +29 -29
- package/src/ruvocal/src/app.html +53 -53
- package/src/ruvocal/src/hooks.server.ts +32 -32
- package/src/ruvocal/src/hooks.ts +6 -6
- package/src/ruvocal/src/lib/APIClient.ts +148 -148
- package/src/ruvocal/src/lib/actions/clickOutside.ts +18 -18
- package/src/ruvocal/src/lib/actions/snapScrollToBottom.ts +346 -346
- package/src/ruvocal/src/lib/buildPrompt.ts +33 -33
- package/src/ruvocal/src/lib/components/AnnouncementBanner.svelte +20 -20
- package/src/ruvocal/src/lib/components/BackgroundGenerationPoller.svelte +168 -168
- package/src/ruvocal/src/lib/components/CodeBlock.svelte +73 -73
- package/src/ruvocal/src/lib/components/CopyToClipBoardBtn.svelte +92 -92
- package/src/ruvocal/src/lib/components/DeleteConversationModal.svelte +75 -75
- package/src/ruvocal/src/lib/components/EditConversationModal.svelte +100 -100
- package/src/ruvocal/src/lib/components/ExpandNavigation.svelte +22 -22
- package/src/ruvocal/src/lib/components/FoundationBackground.svelte +242 -242
- package/src/ruvocal/src/lib/components/HoverTooltip.svelte +44 -44
- package/src/ruvocal/src/lib/components/HtmlPreviewModal.svelte +143 -143
- package/src/ruvocal/src/lib/components/InfiniteScroll.svelte +50 -50
- package/src/ruvocal/src/lib/components/MobileNav.svelte +300 -300
- package/src/ruvocal/src/lib/components/Modal.svelte +115 -115
- package/src/ruvocal/src/lib/components/ModelCardMetadata.svelte +71 -71
- package/src/ruvocal/src/lib/components/NavConversationItem.svelte +151 -151
- package/src/ruvocal/src/lib/components/NavMenu.svelte +313 -313
- package/src/ruvocal/src/lib/components/Pagination.svelte +97 -97
- package/src/ruvocal/src/lib/components/PaginationArrow.svelte +27 -27
- package/src/ruvocal/src/lib/components/Portal.svelte +24 -24
- package/src/ruvocal/src/lib/components/RetryBtn.svelte +18 -18
- package/src/ruvocal/src/lib/components/RuFloUniverse.svelte +185 -185
- package/src/ruvocal/src/lib/components/RufloHelpModal.svelte +411 -411
- package/src/ruvocal/src/lib/components/ScrollToBottomBtn.svelte +47 -47
- package/src/ruvocal/src/lib/components/ScrollToPreviousBtn.svelte +77 -77
- package/src/ruvocal/src/lib/components/ShareConversationModal.svelte +182 -182
- package/src/ruvocal/src/lib/components/StopGeneratingBtn.svelte +69 -69
- package/src/ruvocal/src/lib/components/SubscribeModal.svelte +87 -87
- package/src/ruvocal/src/lib/components/Switch.svelte +36 -36
- package/src/ruvocal/src/lib/components/SystemPromptModal.svelte +44 -44
- package/src/ruvocal/src/lib/components/Toast.svelte +27 -27
- package/src/ruvocal/src/lib/components/Tooltip.svelte +30 -30
- package/src/ruvocal/src/lib/components/WelcomeModal.svelte +46 -46
- package/src/ruvocal/src/lib/components/chat/Alternatives.svelte +77 -77
- package/src/ruvocal/src/lib/components/chat/BlockWrapper.svelte +72 -72
- package/src/ruvocal/src/lib/components/chat/ChatInput.svelte +490 -490
- package/src/ruvocal/src/lib/components/chat/ChatIntroduction.svelte +123 -123
- package/src/ruvocal/src/lib/components/chat/ChatMessage.svelte +548 -548
- package/src/ruvocal/src/lib/components/chat/ChatWindow.svelte +1057 -1057
- package/src/ruvocal/src/lib/components/chat/FileDropzone.svelte +92 -92
- package/src/ruvocal/src/lib/components/chat/ImageLightbox.svelte +66 -66
- package/src/ruvocal/src/lib/components/chat/MarkdownBlock.svelte +23 -23
- package/src/ruvocal/src/lib/components/chat/MarkdownRenderer.svelte +69 -69
- package/src/ruvocal/src/lib/components/chat/MarkdownRenderer.svelte.test.ts +58 -58
- package/src/ruvocal/src/lib/components/chat/MessageAvatar.svelte +103 -103
- package/src/ruvocal/src/lib/components/chat/ModelSwitch.svelte +64 -64
- package/src/ruvocal/src/lib/components/chat/OpenReasoningResults.svelte +81 -81
- package/src/ruvocal/src/lib/components/chat/TaskGroup.svelte +88 -88
- package/src/ruvocal/src/lib/components/chat/ToolUpdate.svelte +273 -273
- package/src/ruvocal/src/lib/components/chat/UploadedFile.svelte +253 -253
- package/src/ruvocal/src/lib/components/chat/UrlFetchModal.svelte +203 -203
- package/src/ruvocal/src/lib/components/chat/VoiceRecorder.svelte +214 -214
- package/src/ruvocal/src/lib/components/icons/IconBurger.svelte +20 -20
- package/src/ruvocal/src/lib/components/icons/IconCheap.svelte +20 -20
- package/src/ruvocal/src/lib/components/icons/IconChevron.svelte +24 -24
- package/src/ruvocal/src/lib/components/icons/IconDazzled.svelte +40 -40
- package/src/ruvocal/src/lib/components/icons/IconFast.svelte +20 -20
- package/src/ruvocal/src/lib/components/icons/IconLoading.svelte +22 -22
- package/src/ruvocal/src/lib/components/icons/IconMCP.svelte +28 -28
- package/src/ruvocal/src/lib/components/icons/IconMoon.svelte +21 -21
- package/src/ruvocal/src/lib/components/icons/IconNew.svelte +20 -20
- package/src/ruvocal/src/lib/components/icons/IconOmni.svelte +90 -90
- package/src/ruvocal/src/lib/components/icons/IconPaperclip.svelte +24 -24
- package/src/ruvocal/src/lib/components/icons/IconPro.svelte +37 -37
- package/src/ruvocal/src/lib/components/icons/IconShare.svelte +21 -21
- package/src/ruvocal/src/lib/components/icons/IconSun.svelte +93 -93
- package/src/ruvocal/src/lib/components/icons/Logo.svelte +68 -68
- package/src/ruvocal/src/lib/components/icons/LogoHuggingFaceBorderless.svelte +54 -54
- package/src/ruvocal/src/lib/components/mcp/AddServerForm.svelte +250 -250
- package/src/ruvocal/src/lib/components/mcp/MCPServerManager.svelte +185 -185
- package/src/ruvocal/src/lib/components/mcp/ServerCard.svelte +203 -203
- package/src/ruvocal/src/lib/components/players/AudioPlayer.svelte +82 -82
- package/src/ruvocal/src/lib/components/voice/AudioWaveform.svelte +96 -96
- package/src/ruvocal/src/lib/components/wasm/GalleryPanel.svelte +357 -357
- package/src/ruvocal/src/lib/constants/mcpExamples.ts +114 -114
- package/src/ruvocal/src/lib/constants/mime.ts +11 -11
- package/src/ruvocal/src/lib/constants/pagination.ts +1 -1
- package/src/ruvocal/src/lib/constants/publicSepToken.ts +1 -1
- package/src/ruvocal/src/lib/constants/routerExamples.ts +133 -133
- package/src/ruvocal/src/lib/constants/rvagentPresets.ts +206 -206
- package/src/ruvocal/src/lib/createShareLink.ts +27 -27
- package/src/ruvocal/src/lib/jobs/refresh-conversation-stats.ts +297 -297
- package/src/ruvocal/src/lib/migrations/lock.ts +56 -56
- package/src/ruvocal/src/lib/migrations/migrations.spec.ts +74 -74
- package/src/ruvocal/src/lib/migrations/migrations.ts +109 -109
- package/src/ruvocal/src/lib/migrations/routines/01-update-search-assistants.ts +50 -50
- package/src/ruvocal/src/lib/migrations/routines/02-update-assistants-models.ts +48 -48
- package/src/ruvocal/src/lib/migrations/routines/04-update-message-updates.ts +151 -151
- package/src/ruvocal/src/lib/migrations/routines/05-update-message-files.ts +56 -56
- package/src/ruvocal/src/lib/migrations/routines/06-trim-message-updates.ts +56 -56
- package/src/ruvocal/src/lib/migrations/routines/08-update-featured-to-review.ts +32 -32
- package/src/ruvocal/src/lib/migrations/routines/09-delete-empty-conversations.spec.ts +214 -214
- package/src/ruvocal/src/lib/migrations/routines/09-delete-empty-conversations.ts +88 -88
- package/src/ruvocal/src/lib/migrations/routines/10-update-reports-assistantid.ts +29 -29
- package/src/ruvocal/src/lib/migrations/routines/index.ts +15 -15
- package/src/ruvocal/src/lib/server/__tests__/conversation-stop-generating.spec.ts +103 -103
- package/src/ruvocal/src/lib/server/abortRegistry.ts +57 -57
- package/src/ruvocal/src/lib/server/abortedGenerations.ts +43 -43
- package/src/ruvocal/src/lib/server/adminToken.ts +62 -62
- package/src/ruvocal/src/lib/server/api/__tests__/conversations-id.spec.ts +296 -296
- package/src/ruvocal/src/lib/server/api/__tests__/conversations-message.spec.ts +216 -216
- package/src/ruvocal/src/lib/server/api/__tests__/conversations.spec.ts +235 -235
- package/src/ruvocal/src/lib/server/api/__tests__/misc.spec.ts +72 -72
- package/src/ruvocal/src/lib/server/api/__tests__/testHelpers.ts +86 -86
- package/src/ruvocal/src/lib/server/api/__tests__/user-reports.spec.ts +78 -78
- package/src/ruvocal/src/lib/server/api/__tests__/user.spec.ts +239 -239
- package/src/ruvocal/src/lib/server/api/types.ts +37 -37
- package/src/ruvocal/src/lib/server/api/utils/requireAuth.ts +22 -22
- package/src/ruvocal/src/lib/server/api/utils/resolveConversation.ts +69 -69
- package/src/ruvocal/src/lib/server/api/utils/resolveModel.ts +27 -27
- package/src/ruvocal/src/lib/server/api/utils/superjsonResponse.ts +15 -15
- package/src/ruvocal/src/lib/server/apiToken.ts +11 -11
- package/src/ruvocal/src/lib/server/auth.ts +554 -554
- package/src/ruvocal/src/lib/server/config.ts +187 -187
- package/src/ruvocal/src/lib/server/conversation.ts +83 -83
- package/src/ruvocal/src/lib/server/database/__tests__/rvf.spec.ts +709 -709
- package/src/ruvocal/src/lib/server/database/postgres.ts +700 -700
- package/src/ruvocal/src/lib/server/database/rvf.ts +1078 -1078
- package/src/ruvocal/src/lib/server/database.ts +145 -145
- package/src/ruvocal/src/lib/server/endpoints/document.ts +68 -68
- package/src/ruvocal/src/lib/server/endpoints/endpoints.ts +43 -43
- package/src/ruvocal/src/lib/server/endpoints/images.ts +211 -211
- package/src/ruvocal/src/lib/server/endpoints/openai/endpointOai.ts +266 -266
- package/src/ruvocal/src/lib/server/endpoints/openai/openAIChatToTextGenerationStream.ts +212 -212
- package/src/ruvocal/src/lib/server/endpoints/openai/openAICompletionToTextGenerationStream.ts +32 -32
- package/src/ruvocal/src/lib/server/endpoints/preprocessMessages.ts +61 -61
- package/src/ruvocal/src/lib/server/exitHandler.ts +59 -59
- package/src/ruvocal/src/lib/server/files/downloadFile.ts +34 -34
- package/src/ruvocal/src/lib/server/files/uploadFile.ts +29 -29
- package/src/ruvocal/src/lib/server/findRepoRoot.ts +13 -13
- package/src/ruvocal/src/lib/server/generateFromDefaultEndpoint.ts +46 -46
- package/src/ruvocal/src/lib/server/hooks/error.ts +37 -37
- package/src/ruvocal/src/lib/server/hooks/fetch.ts +22 -22
- package/src/ruvocal/src/lib/server/hooks/handle.ts +250 -250
- package/src/ruvocal/src/lib/server/hooks/init.ts +51 -51
- package/src/ruvocal/src/lib/server/isURLLocal.spec.ts +31 -31
- package/src/ruvocal/src/lib/server/isURLLocal.ts +74 -74
- package/src/ruvocal/src/lib/server/logger.ts +42 -42
- package/src/ruvocal/src/lib/server/mcp/clientPool.spec.ts +175 -175
- package/src/ruvocal/src/lib/server/mcp/hf.ts +32 -32
- package/src/ruvocal/src/lib/server/mcp/httpClient.ts +122 -122
- package/src/ruvocal/src/lib/server/mcp/registry.ts +76 -76
- package/src/ruvocal/src/lib/server/mcp/tools.ts +196 -196
- package/src/ruvocal/src/lib/server/metrics.ts +255 -255
- package/src/ruvocal/src/lib/server/models.ts +518 -518
- package/src/ruvocal/src/lib/server/requestContext.ts +55 -55
- package/src/ruvocal/src/lib/server/router/arch.ts +230 -230
- package/src/ruvocal/src/lib/server/router/endpoint.ts +316 -316
- package/src/ruvocal/src/lib/server/router/multimodal.ts +28 -28
- package/src/ruvocal/src/lib/server/router/policy.ts +49 -49
- package/src/ruvocal/src/lib/server/router/toolsRoute.ts +51 -51
- package/src/ruvocal/src/lib/server/router/types.ts +21 -21
- package/src/ruvocal/src/lib/server/sendSlack.ts +23 -23
- package/src/ruvocal/src/lib/server/textGeneration/generate.ts +258 -258
- package/src/ruvocal/src/lib/server/textGeneration/index.ts +96 -96
- package/src/ruvocal/src/lib/server/textGeneration/mcp/fileRefs.ts +155 -155
- package/src/ruvocal/src/lib/server/textGeneration/mcp/routerResolution.ts +108 -108
- package/src/ruvocal/src/lib/server/textGeneration/mcp/runMcpFlow.ts +831 -831
- package/src/ruvocal/src/lib/server/textGeneration/mcp/toolInvocation.ts +349 -349
- package/src/ruvocal/src/lib/server/textGeneration/mcp/wasmTools.test.ts +633 -633
- package/src/ruvocal/src/lib/server/textGeneration/reasoning.ts +23 -23
- package/src/ruvocal/src/lib/server/textGeneration/title.ts +83 -83
- package/src/ruvocal/src/lib/server/textGeneration/types.ts +28 -28
- package/src/ruvocal/src/lib/server/textGeneration/utils/prepareFiles.ts +88 -88
- package/src/ruvocal/src/lib/server/textGeneration/utils/routing.ts +21 -21
- package/src/ruvocal/src/lib/server/textGeneration/utils/toolPrompt.ts +49 -49
- package/src/ruvocal/src/lib/server/urlSafety.ts +77 -77
- package/src/ruvocal/src/lib/server/usageLimits.ts +30 -30
- package/src/ruvocal/src/lib/stores/autopilotStore.svelte.ts +175 -175
- package/src/ruvocal/src/lib/stores/backgroundGenerations.svelte.ts +32 -32
- package/src/ruvocal/src/lib/stores/backgroundGenerations.ts +1 -1
- package/src/ruvocal/src/lib/stores/errors.ts +9 -9
- package/src/ruvocal/src/lib/stores/isAborted.ts +3 -3
- package/src/ruvocal/src/lib/stores/isPro.ts +4 -4
- package/src/ruvocal/src/lib/stores/loading.ts +3 -3
- package/src/ruvocal/src/lib/stores/mcpServers.ts +534 -534
- package/src/ruvocal/src/lib/stores/pendingChatInput.ts +3 -3
- package/src/ruvocal/src/lib/stores/pendingMessage.ts +9 -9
- package/src/ruvocal/src/lib/stores/settings.ts +182 -182
- package/src/ruvocal/src/lib/stores/shareModal.ts +13 -13
- package/src/ruvocal/src/lib/stores/titleUpdate.ts +8 -8
- package/src/ruvocal/src/lib/stores/wasmMcp.ts +472 -472
- package/src/ruvocal/src/lib/switchTheme.ts +124 -124
- package/src/ruvocal/src/lib/types/AbortedGeneration.ts +8 -8
- package/src/ruvocal/src/lib/types/Assistant.ts +31 -31
- package/src/ruvocal/src/lib/types/AssistantStats.ts +11 -11
- package/src/ruvocal/src/lib/types/ConfigKey.ts +4 -4
- package/src/ruvocal/src/lib/types/ConvSidebar.ts +9 -9
- package/src/ruvocal/src/lib/types/Conversation.ts +27 -27
- package/src/ruvocal/src/lib/types/ConversationStats.ts +13 -13
- package/src/ruvocal/src/lib/types/Message.ts +41 -41
- package/src/ruvocal/src/lib/types/MessageEvent.ts +10 -10
- package/src/ruvocal/src/lib/types/MessageUpdate.ts +139 -139
- package/src/ruvocal/src/lib/types/MigrationResult.ts +7 -7
- package/src/ruvocal/src/lib/types/Model.ts +23 -23
- package/src/ruvocal/src/lib/types/Report.ts +12 -12
- package/src/ruvocal/src/lib/types/Review.ts +6 -6
- package/src/ruvocal/src/lib/types/Semaphore.ts +19 -19
- package/src/ruvocal/src/lib/types/Session.ts +22 -22
- package/src/ruvocal/src/lib/types/Settings.ts +93 -93
- package/src/ruvocal/src/lib/types/SharedConversation.ts +9 -9
- package/src/ruvocal/src/lib/types/Template.ts +6 -6
- package/src/ruvocal/src/lib/types/Timestamps.ts +4 -4
- package/src/ruvocal/src/lib/types/TokenCache.ts +6 -6
- package/src/ruvocal/src/lib/types/Tool.ts +77 -77
- package/src/ruvocal/src/lib/types/UrlDependency.ts +5 -5
- package/src/ruvocal/src/lib/types/User.ts +14 -14
- package/src/ruvocal/src/lib/utils/PublicConfig.svelte.ts +75 -75
- package/src/ruvocal/src/lib/utils/auth.ts +17 -17
- package/src/ruvocal/src/lib/utils/chunk.ts +33 -33
- package/src/ruvocal/src/lib/utils/cookiesAreEnabled.ts +13 -13
- package/src/ruvocal/src/lib/utils/debounce.ts +17 -17
- package/src/ruvocal/src/lib/utils/deepestChild.ts +6 -6
- package/src/ruvocal/src/lib/utils/favicon.ts +21 -21
- package/src/ruvocal/src/lib/utils/fetchJSON.ts +23 -23
- package/src/ruvocal/src/lib/utils/file2base64.ts +14 -14
- package/src/ruvocal/src/lib/utils/formatUserCount.ts +37 -37
- package/src/ruvocal/src/lib/utils/generationState.spec.ts +75 -75
- package/src/ruvocal/src/lib/utils/generationState.ts +26 -26
- package/src/ruvocal/src/lib/utils/getHref.ts +41 -41
- package/src/ruvocal/src/lib/utils/getReturnFromGenerator.ts +7 -7
- package/src/ruvocal/src/lib/utils/haptics.ts +64 -64
- package/src/ruvocal/src/lib/utils/hashConv.ts +12 -12
- package/src/ruvocal/src/lib/utils/hf.ts +17 -17
- package/src/ruvocal/src/lib/utils/isDesktop.ts +7 -7
- package/src/ruvocal/src/lib/utils/isUrl.ts +8 -8
- package/src/ruvocal/src/lib/utils/isVirtualKeyboard.ts +16 -16
- package/src/ruvocal/src/lib/utils/loadAttachmentsFromUrls.ts +115 -115
- package/src/ruvocal/src/lib/utils/marked.spec.ts +96 -96
- package/src/ruvocal/src/lib/utils/marked.ts +531 -531
- package/src/ruvocal/src/lib/utils/mcpValidation.ts +147 -147
- package/src/ruvocal/src/lib/utils/mergeAsyncGenerators.ts +38 -38
- package/src/ruvocal/src/lib/utils/messageUpdates.spec.ts +286 -286
- package/src/ruvocal/src/lib/utils/messageUpdates.ts +332 -332
- package/src/ruvocal/src/lib/utils/mime.ts +56 -56
- package/src/ruvocal/src/lib/utils/models.ts +14 -14
- package/src/ruvocal/src/lib/utils/parseBlocks.ts +120 -120
- package/src/ruvocal/src/lib/utils/parseIncompleteMarkdown.ts +644 -644
- package/src/ruvocal/src/lib/utils/parseStringToList.ts +10 -10
- package/src/ruvocal/src/lib/utils/randomUuid.ts +14 -14
- package/src/ruvocal/src/lib/utils/searchTokens.ts +33 -33
- package/src/ruvocal/src/lib/utils/sha256.ts +7 -7
- package/src/ruvocal/src/lib/utils/stringifyError.ts +12 -12
- package/src/ruvocal/src/lib/utils/sum.ts +3 -3
- package/src/ruvocal/src/lib/utils/template.spec.ts +59 -59
- package/src/ruvocal/src/lib/utils/template.ts +53 -53
- package/src/ruvocal/src/lib/utils/timeout.ts +9 -9
- package/src/ruvocal/src/lib/utils/toolProgress.spec.ts +46 -46
- package/src/ruvocal/src/lib/utils/toolProgress.ts +11 -11
- package/src/ruvocal/src/lib/utils/tree/addChildren.spec.ts +102 -102
- package/src/ruvocal/src/lib/utils/tree/addChildren.ts +48 -48
- package/src/ruvocal/src/lib/utils/tree/addSibling.spec.ts +81 -81
- package/src/ruvocal/src/lib/utils/tree/addSibling.ts +41 -41
- package/src/ruvocal/src/lib/utils/tree/buildSubtree.spec.ts +110 -110
- package/src/ruvocal/src/lib/utils/tree/buildSubtree.ts +24 -24
- package/src/ruvocal/src/lib/utils/tree/convertLegacyConversation.spec.ts +31 -31
- package/src/ruvocal/src/lib/utils/tree/convertLegacyConversation.ts +36 -36
- package/src/ruvocal/src/lib/utils/tree/isMessageId.spec.ts +15 -15
- package/src/ruvocal/src/lib/utils/tree/isMessageId.ts +5 -5
- package/src/ruvocal/src/lib/utils/tree/tree.d.ts +14 -14
- package/src/ruvocal/src/lib/utils/tree/treeHelpers.spec.ts +167 -167
- package/src/ruvocal/src/lib/utils/updates.ts +39 -39
- package/src/ruvocal/src/lib/utils/urlParams.ts +13 -13
- package/src/ruvocal/src/lib/wasm/idb.ts +438 -438
- package/src/ruvocal/src/lib/wasm/index.ts +1213 -1213
- package/src/ruvocal/src/lib/wasm/tests/wasm-capabilities.test.ts +565 -565
- package/src/ruvocal/src/lib/wasm/wasm.worker.ts +332 -332
- package/src/ruvocal/src/lib/wasm/workerClient.ts +166 -166
- package/src/ruvocal/src/lib/workers/autopilotWorker.ts +221 -221
- package/src/ruvocal/src/lib/workers/detailFetchWorker.ts +100 -100
- package/src/ruvocal/src/lib/workers/markdownWorker.ts +61 -61
- package/src/ruvocal/src/routes/+error.svelte +20 -20
- package/src/ruvocal/src/routes/+layout.svelte +324 -324
- package/src/ruvocal/src/routes/+layout.ts +91 -91
- package/src/ruvocal/src/routes/+page.svelte +168 -168
- package/src/ruvocal/src/routes/.well-known/oauth-cimd/+server.ts +37 -37
- package/src/ruvocal/src/routes/__debug/openai/+server.ts +21 -21
- package/src/ruvocal/src/routes/admin/export/+server.ts +159 -159
- package/src/ruvocal/src/routes/admin/stats/compute/+server.ts +16 -16
- package/src/ruvocal/src/routes/api/conversation/[id]/+server.ts +40 -40
- package/src/ruvocal/src/routes/api/conversation/[id]/message/[messageId]/+server.ts +42 -42
- package/src/ruvocal/src/routes/api/conversations/+server.ts +48 -48
- package/src/ruvocal/src/routes/api/fetch-url/+server.ts +147 -147
- package/src/ruvocal/src/routes/api/mcp/health/+server.ts +292 -292
- package/src/ruvocal/src/routes/api/mcp/servers/+server.ts +32 -32
- package/src/ruvocal/src/routes/api/models/+server.ts +25 -25
- package/src/ruvocal/src/routes/api/transcribe/+server.ts +104 -104
- package/src/ruvocal/src/routes/api/user/+server.ts +15 -15
- package/src/ruvocal/src/routes/api/user/validate-token/+server.ts +20 -20
- package/src/ruvocal/src/routes/api/v2/conversations/+server.ts +48 -48
- package/src/ruvocal/src/routes/api/v2/conversations/[id]/+server.ts +94 -94
- package/src/ruvocal/src/routes/api/v2/conversations/[id]/message/[messageId]/+server.ts +43 -43
- package/src/ruvocal/src/routes/api/v2/conversations/import-share/+server.ts +23 -23
- package/src/ruvocal/src/routes/api/v2/debug/config/+server.ts +16 -16
- package/src/ruvocal/src/routes/api/v2/debug/refresh/+server.ts +30 -30
- package/src/ruvocal/src/routes/api/v2/export/+server.ts +196 -196
- package/src/ruvocal/src/routes/api/v2/feature-flags/+server.ts +14 -14
- package/src/ruvocal/src/routes/api/v2/models/+server.ts +38 -38
- package/src/ruvocal/src/routes/api/v2/models/[namespace]/+server.ts +8 -8
- package/src/ruvocal/src/routes/api/v2/models/[namespace]/[model]/+server.ts +8 -8
- package/src/ruvocal/src/routes/api/v2/models/[namespace]/[model]/subscribe/+server.ts +28 -28
- package/src/ruvocal/src/routes/api/v2/models/[namespace]/subscribe/+server.ts +28 -28
- package/src/ruvocal/src/routes/api/v2/models/old/+server.ts +7 -7
- package/src/ruvocal/src/routes/api/v2/models/refresh/+server.ts +33 -33
- package/src/ruvocal/src/routes/api/v2/public-config/+server.ts +7 -7
- package/src/ruvocal/src/routes/api/v2/user/+server.ts +17 -17
- package/src/ruvocal/src/routes/api/v2/user/billing-orgs/+server.ts +73 -73
- package/src/ruvocal/src/routes/api/v2/user/reports/+server.ts +17 -17
- package/src/ruvocal/src/routes/api/v2/user/settings/+server.ts +110 -110
- package/src/ruvocal/src/routes/conversation/+server.ts +115 -115
- package/src/ruvocal/src/routes/conversation/[id]/+page.svelte +593 -593
- package/src/ruvocal/src/routes/conversation/[id]/+page.ts +60 -60
- package/src/ruvocal/src/routes/conversation/[id]/+server.ts +740 -740
- package/src/ruvocal/src/routes/conversation/[id]/message/[messageId]/prompt/+server.ts +66 -66
- package/src/ruvocal/src/routes/conversation/[id]/share/+server.ts +69 -69
- package/src/ruvocal/src/routes/conversation/[id]/stop-generating/+server.ts +35 -35
- package/src/ruvocal/src/routes/healthcheck/+server.ts +3 -3
- package/src/ruvocal/src/routes/login/+server.ts +5 -5
- package/src/ruvocal/src/routes/login/callback/+server.ts +103 -103
- package/src/ruvocal/src/routes/login/callback/updateUser.spec.ts +157 -157
- package/src/ruvocal/src/routes/login/callback/updateUser.ts +215 -215
- package/src/ruvocal/src/routes/logout/+server.ts +18 -18
- package/src/ruvocal/src/routes/metrics/+server.ts +18 -18
- package/src/ruvocal/src/routes/models/+page.svelte +233 -233
- package/src/ruvocal/src/routes/models/[...model]/+page.svelte +161 -161
- package/src/ruvocal/src/routes/models/[...model]/+page.ts +14 -14
- package/src/ruvocal/src/routes/models/[...model]/thumbnail.png/+server.ts +64 -64
- package/src/ruvocal/src/routes/models/[...model]/thumbnail.png/ModelThumbnail.svelte +28 -28
- package/src/ruvocal/src/routes/privacy/+page.svelte +11 -11
- package/src/ruvocal/src/routes/r/[id]/+page.ts +34 -34
- package/src/ruvocal/src/routes/settings/(nav)/+layout.svelte +282 -282
- package/src/ruvocal/src/routes/settings/(nav)/+layout.ts +1 -1
- package/src/ruvocal/src/routes/settings/(nav)/+server.ts +59 -59
- package/src/ruvocal/src/routes/settings/(nav)/[...model]/+page.svelte +464 -464
- package/src/ruvocal/src/routes/settings/(nav)/[...model]/+page.ts +14 -14
- package/src/ruvocal/src/routes/settings/(nav)/application/+page.svelte +362 -362
- package/src/ruvocal/src/routes/settings/+layout.svelte +40 -40
- package/src/ruvocal/src/styles/highlight-js.css +195 -195
- package/src/ruvocal/src/styles/main.css +144 -144
- package/src/ruvocal/static/chatui/favicon-dark.svg +3 -3
- package/src/ruvocal/static/chatui/favicon-dev.svg +3 -3
- package/src/ruvocal/static/chatui/favicon.svg +3 -3
- package/src/ruvocal/static/chatui/icon.svg +3 -3
- package/src/ruvocal/static/chatui/logo.svg +7 -7
- package/src/ruvocal/static/chatui/manifest.json +54 -54
- package/src/ruvocal/static/chatui/welcome.js +184 -184
- package/src/ruvocal/static/huggingchat/favicon-dark.svg +4 -4
- package/src/ruvocal/static/huggingchat/favicon-dev.svg +4 -4
- package/src/ruvocal/static/huggingchat/favicon.svg +4 -4
- package/src/ruvocal/static/huggingchat/fulltext-logo.svg +1 -1
- package/src/ruvocal/static/huggingchat/icon.svg +4 -4
- package/src/ruvocal/static/huggingchat/logo.svg +4 -4
- package/src/ruvocal/static/huggingchat/manifest.json +54 -54
- package/src/ruvocal/static/huggingchat/routes.chat.json +226 -226
- package/src/ruvocal/static/robots.txt +10 -10
- package/src/ruvocal/static/wasm/rvagent_wasm.js +1539 -1539
- package/src/ruvocal/stub/@reflink/reflink/package.json +5 -5
- package/src/ruvocal/svelte.config.js +53 -53
- package/src/ruvocal/tailwind.config.cjs +30 -30
- package/src/ruvocal/tsconfig.json +19 -19
- package/src/ruvocal/vite.config.ts +87 -87
- package/src/scripts/deploy.sh +116 -116
- package/src/scripts/generate-config.js +245 -245
- package/src/scripts/generate-welcome.js +187 -187
- package/src/scripts/package-rvf.sh +116 -116
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import CarbonStopFilledAlt from "~icons/carbon/stop-filled-alt";
|
|
3
|
-
|
|
4
|
-
interface Props {
|
|
5
|
-
classNames?: string;
|
|
6
|
-
onClick?: () => void;
|
|
7
|
-
showBorder?: boolean;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
let { classNames = "", onClick, showBorder = false }: Props = $props();
|
|
11
|
-
</script>
|
|
12
|
-
|
|
13
|
-
<button
|
|
14
|
-
type="button"
|
|
15
|
-
onclick={onClick}
|
|
16
|
-
class={`btn stop-generating-btn ${showBorder ? "stop-generating-btn--spinning" : ""} ${classNames}`}
|
|
17
|
-
aria-label="Stop generating"
|
|
18
|
-
>
|
|
19
|
-
<span class="sr-only">Stop generating</span>
|
|
20
|
-
<CarbonStopFilledAlt class="size-3.5 text-gray-500" />
|
|
21
|
-
</button>
|
|
22
|
-
|
|
23
|
-
<style lang="postcss">
|
|
24
|
-
.stop-generating-btn {
|
|
25
|
-
position: relative;
|
|
26
|
-
display: inline-flex;
|
|
27
|
-
align-items: center;
|
|
28
|
-
justify-content: center;
|
|
29
|
-
border-radius: 9999px;
|
|
30
|
-
--stop-generating-ring-color: rgba(31, 41, 55, 0.35);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.stop-generating-btn :global(svg) {
|
|
34
|
-
display: block;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.stop-generating-btn::after {
|
|
38
|
-
content: "";
|
|
39
|
-
position: absolute;
|
|
40
|
-
inset: -2px;
|
|
41
|
-
border-radius: inherit;
|
|
42
|
-
pointer-events: none;
|
|
43
|
-
background: transparent;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.stop-generating-btn--spinning::after {
|
|
47
|
-
background: conic-gradient(
|
|
48
|
-
from 0deg,
|
|
49
|
-
transparent 0deg 240deg,
|
|
50
|
-
var(--stop-generating-ring-color) 240deg 360deg
|
|
51
|
-
);
|
|
52
|
-
mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 1px));
|
|
53
|
-
animation: stop-generating-rotate 1.2s linear infinite;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
:global(.dark) .stop-generating-btn {
|
|
57
|
-
--stop-generating-ring-color: rgba(255, 255, 255, 0.2);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
@keyframes stop-generating-rotate {
|
|
61
|
-
from {
|
|
62
|
-
transform: rotate(0deg);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
to {
|
|
66
|
-
transform: rotate(360deg);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
</style>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import CarbonStopFilledAlt from "~icons/carbon/stop-filled-alt";
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
classNames?: string;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
showBorder?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { classNames = "", onClick, showBorder = false }: Props = $props();
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<button
|
|
14
|
+
type="button"
|
|
15
|
+
onclick={onClick}
|
|
16
|
+
class={`btn stop-generating-btn ${showBorder ? "stop-generating-btn--spinning" : ""} ${classNames}`}
|
|
17
|
+
aria-label="Stop generating"
|
|
18
|
+
>
|
|
19
|
+
<span class="sr-only">Stop generating</span>
|
|
20
|
+
<CarbonStopFilledAlt class="size-3.5 text-gray-500" />
|
|
21
|
+
</button>
|
|
22
|
+
|
|
23
|
+
<style lang="postcss">
|
|
24
|
+
.stop-generating-btn {
|
|
25
|
+
position: relative;
|
|
26
|
+
display: inline-flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
justify-content: center;
|
|
29
|
+
border-radius: 9999px;
|
|
30
|
+
--stop-generating-ring-color: rgba(31, 41, 55, 0.35);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.stop-generating-btn :global(svg) {
|
|
34
|
+
display: block;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.stop-generating-btn::after {
|
|
38
|
+
content: "";
|
|
39
|
+
position: absolute;
|
|
40
|
+
inset: -2px;
|
|
41
|
+
border-radius: inherit;
|
|
42
|
+
pointer-events: none;
|
|
43
|
+
background: transparent;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.stop-generating-btn--spinning::after {
|
|
47
|
+
background: conic-gradient(
|
|
48
|
+
from 0deg,
|
|
49
|
+
transparent 0deg 240deg,
|
|
50
|
+
var(--stop-generating-ring-color) 240deg 360deg
|
|
51
|
+
);
|
|
52
|
+
mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 1px));
|
|
53
|
+
animation: stop-generating-rotate 1.2s linear infinite;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:global(.dark) .stop-generating-btn {
|
|
57
|
+
--stop-generating-ring-color: rgba(255, 255, 255, 0.2);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@keyframes stop-generating-rotate {
|
|
61
|
+
from {
|
|
62
|
+
transform: rotate(0deg);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
to {
|
|
66
|
+
transform: rotate(360deg);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
</style>
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Modal from "$lib/components/Modal.svelte";
|
|
3
|
-
import { isPro } from "$lib/stores/isPro";
|
|
4
|
-
import IconPro from "$lib/components/icons/IconPro.svelte";
|
|
5
|
-
import IconDazzled from "$lib/components/icons/IconDazzled.svelte";
|
|
6
|
-
|
|
7
|
-
interface Props {
|
|
8
|
-
close: () => void;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
let { close }: Props = $props();
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
<Modal closeOnBackdrop={false} onclose={close} width="!max-w-[420px] !m-4">
|
|
15
|
-
<div
|
|
16
|
-
class="flex w-full flex-col gap-8 bg-white bg-gradient-to-b to-transparent px-6 pb-7 dark:bg-black dark:from-white/10 dark:to-white/5"
|
|
17
|
-
>
|
|
18
|
-
<div
|
|
19
|
-
class="-mx-6 grid h-48 select-none place-items-center bg-gradient-to-t from-black/5 dark:from-white/10"
|
|
20
|
-
>
|
|
21
|
-
<div class="flex flex-col items-center justify-center gap-2.5 px-8 text-center">
|
|
22
|
-
<div
|
|
23
|
-
class="flex size-14 items-center justify-center rounded-full text-3xl {$isPro
|
|
24
|
-
? 'bg-gradient-to-br from-yellow-500/15 via-orange-500/15 to-red-500/15'
|
|
25
|
-
: 'bg-gradient-to-br from-pink-500/15 from-15% via-green-500/15 to-yellow-500/15'}"
|
|
26
|
-
>
|
|
27
|
-
{#if $isPro}
|
|
28
|
-
<IconDazzled />
|
|
29
|
-
{:else}
|
|
30
|
-
<IconPro classNames="!mr-0" />
|
|
31
|
-
{/if}
|
|
32
|
-
</div>
|
|
33
|
-
<h2 class="text-2xl font-semibold text-gray-900 dark:text-gray-100">
|
|
34
|
-
{$isPro ? "Out of Credits" : "Upgrade Required"}
|
|
35
|
-
</h2>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
<div class="text-gray-700 dark:text-gray-200">
|
|
40
|
-
{#if $isPro}
|
|
41
|
-
<p class="text-[15px] leading-relaxed">
|
|
42
|
-
You've used all your available credits. Purchase additional credits to continue using
|
|
43
|
-
HuggingChat.
|
|
44
|
-
</p>
|
|
45
|
-
<p class="mt-3 text-[15px] italic leading-relaxed opacity-75">
|
|
46
|
-
Your credits can be used in other HF services and external apps via Inference Providers.
|
|
47
|
-
</p>
|
|
48
|
-
{:else}
|
|
49
|
-
<p class="text-[15px] leading-relaxed">
|
|
50
|
-
You've reached your message limit. Upgrade to Hugging Face PRO to continue using
|
|
51
|
-
HuggingChat.
|
|
52
|
-
</p>
|
|
53
|
-
<p class="mt-3 text-[15px] italic leading-relaxed opacity-75">
|
|
54
|
-
It's also possible to use your PRO credits in your favorite AI tools.
|
|
55
|
-
</p>
|
|
56
|
-
{/if}
|
|
57
|
-
</div>
|
|
58
|
-
|
|
59
|
-
<div class="flex flex-col gap-2.5">
|
|
60
|
-
{#if $isPro}
|
|
61
|
-
<a
|
|
62
|
-
href="https://huggingface.co/settings/billing?add-credits=true"
|
|
63
|
-
target="_blank"
|
|
64
|
-
rel="noopener noreferrer"
|
|
65
|
-
class="w-full rounded-xl bg-black px-5 py-2.5 text-center text-base font-medium text-white hover:bg-gray-800 dark:bg-white dark:text-black dark:hover:bg-gray-200"
|
|
66
|
-
>
|
|
67
|
-
Purchase Credits
|
|
68
|
-
</a>
|
|
69
|
-
{:else}
|
|
70
|
-
<a
|
|
71
|
-
href="https://huggingface.co/subscribe/pro?from=HuggingChat"
|
|
72
|
-
target="_blank"
|
|
73
|
-
rel="noopener noreferrer"
|
|
74
|
-
class="w-full rounded-xl bg-black px-5 py-2.5 text-center text-base font-medium text-white hover:bg-gray-800 dark:bg-white dark:text-black dark:hover:bg-gray-200"
|
|
75
|
-
>
|
|
76
|
-
Upgrade to Pro
|
|
77
|
-
</a>
|
|
78
|
-
{/if}
|
|
79
|
-
<button
|
|
80
|
-
class="w-full rounded-xl bg-gray-200 px-5 py-2.5 text-base font-medium text-gray-700 hover:bg-gray-300/80 dark:bg-white/5 dark:text-gray-200 dark:hover:bg-white/10"
|
|
81
|
-
onclick={close}
|
|
82
|
-
>
|
|
83
|
-
Maybe later
|
|
84
|
-
</button>
|
|
85
|
-
</div>
|
|
86
|
-
</div>
|
|
87
|
-
</Modal>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Modal from "$lib/components/Modal.svelte";
|
|
3
|
+
import { isPro } from "$lib/stores/isPro";
|
|
4
|
+
import IconPro from "$lib/components/icons/IconPro.svelte";
|
|
5
|
+
import IconDazzled from "$lib/components/icons/IconDazzled.svelte";
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
close: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let { close }: Props = $props();
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<Modal closeOnBackdrop={false} onclose={close} width="!max-w-[420px] !m-4">
|
|
15
|
+
<div
|
|
16
|
+
class="flex w-full flex-col gap-8 bg-white bg-gradient-to-b to-transparent px-6 pb-7 dark:bg-black dark:from-white/10 dark:to-white/5"
|
|
17
|
+
>
|
|
18
|
+
<div
|
|
19
|
+
class="-mx-6 grid h-48 select-none place-items-center bg-gradient-to-t from-black/5 dark:from-white/10"
|
|
20
|
+
>
|
|
21
|
+
<div class="flex flex-col items-center justify-center gap-2.5 px-8 text-center">
|
|
22
|
+
<div
|
|
23
|
+
class="flex size-14 items-center justify-center rounded-full text-3xl {$isPro
|
|
24
|
+
? 'bg-gradient-to-br from-yellow-500/15 via-orange-500/15 to-red-500/15'
|
|
25
|
+
: 'bg-gradient-to-br from-pink-500/15 from-15% via-green-500/15 to-yellow-500/15'}"
|
|
26
|
+
>
|
|
27
|
+
{#if $isPro}
|
|
28
|
+
<IconDazzled />
|
|
29
|
+
{:else}
|
|
30
|
+
<IconPro classNames="!mr-0" />
|
|
31
|
+
{/if}
|
|
32
|
+
</div>
|
|
33
|
+
<h2 class="text-2xl font-semibold text-gray-900 dark:text-gray-100">
|
|
34
|
+
{$isPro ? "Out of Credits" : "Upgrade Required"}
|
|
35
|
+
</h2>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div class="text-gray-700 dark:text-gray-200">
|
|
40
|
+
{#if $isPro}
|
|
41
|
+
<p class="text-[15px] leading-relaxed">
|
|
42
|
+
You've used all your available credits. Purchase additional credits to continue using
|
|
43
|
+
HuggingChat.
|
|
44
|
+
</p>
|
|
45
|
+
<p class="mt-3 text-[15px] italic leading-relaxed opacity-75">
|
|
46
|
+
Your credits can be used in other HF services and external apps via Inference Providers.
|
|
47
|
+
</p>
|
|
48
|
+
{:else}
|
|
49
|
+
<p class="text-[15px] leading-relaxed">
|
|
50
|
+
You've reached your message limit. Upgrade to Hugging Face PRO to continue using
|
|
51
|
+
HuggingChat.
|
|
52
|
+
</p>
|
|
53
|
+
<p class="mt-3 text-[15px] italic leading-relaxed opacity-75">
|
|
54
|
+
It's also possible to use your PRO credits in your favorite AI tools.
|
|
55
|
+
</p>
|
|
56
|
+
{/if}
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div class="flex flex-col gap-2.5">
|
|
60
|
+
{#if $isPro}
|
|
61
|
+
<a
|
|
62
|
+
href="https://huggingface.co/settings/billing?add-credits=true"
|
|
63
|
+
target="_blank"
|
|
64
|
+
rel="noopener noreferrer"
|
|
65
|
+
class="w-full rounded-xl bg-black px-5 py-2.5 text-center text-base font-medium text-white hover:bg-gray-800 dark:bg-white dark:text-black dark:hover:bg-gray-200"
|
|
66
|
+
>
|
|
67
|
+
Purchase Credits
|
|
68
|
+
</a>
|
|
69
|
+
{:else}
|
|
70
|
+
<a
|
|
71
|
+
href="https://huggingface.co/subscribe/pro?from=HuggingChat"
|
|
72
|
+
target="_blank"
|
|
73
|
+
rel="noopener noreferrer"
|
|
74
|
+
class="w-full rounded-xl bg-black px-5 py-2.5 text-center text-base font-medium text-white hover:bg-gray-800 dark:bg-white dark:text-black dark:hover:bg-gray-200"
|
|
75
|
+
>
|
|
76
|
+
Upgrade to Pro
|
|
77
|
+
</a>
|
|
78
|
+
{/if}
|
|
79
|
+
<button
|
|
80
|
+
class="w-full rounded-xl bg-gray-200 px-5 py-2.5 text-base font-medium text-gray-700 hover:bg-gray-300/80 dark:bg-white/5 dark:text-gray-200 dark:hover:bg-white/10"
|
|
81
|
+
onclick={close}
|
|
82
|
+
>
|
|
83
|
+
Maybe later
|
|
84
|
+
</button>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</Modal>
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { tap } from "$lib/utils/haptics";
|
|
3
|
-
|
|
4
|
-
interface Props {
|
|
5
|
-
checked: boolean;
|
|
6
|
-
name: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
let { checked = $bindable(), name }: Props = $props();
|
|
10
|
-
|
|
11
|
-
function toggle() {
|
|
12
|
-
checked = !checked;
|
|
13
|
-
tap();
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function onKeydown(e: KeyboardEvent) {
|
|
17
|
-
if (e.key === " " || e.key === "Enter") {
|
|
18
|
-
e.preventDefault();
|
|
19
|
-
toggle();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
</script>
|
|
23
|
-
|
|
24
|
-
<input bind:checked type="checkbox" {name} class="peer pointer-events-none absolute opacity-0" />
|
|
25
|
-
<div
|
|
26
|
-
aria-checked={checked}
|
|
27
|
-
aria-roledescription="switch"
|
|
28
|
-
aria-label="switch"
|
|
29
|
-
role="switch"
|
|
30
|
-
tabindex="0"
|
|
31
|
-
onclick={toggle}
|
|
32
|
-
onkeydown={onKeydown}
|
|
33
|
-
class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full bg-gray-300 p-1 shadow-inner ring-gray-400 peer-checked:bg-blue-600 hover:bg-gray-400 peer-checked:hover:bg-blue-600 focus-visible:ring focus-visible:ring-offset-1 dark:bg-gray-600 dark:ring-gray-700 dark:hover:bg-gray-500 dark:peer-checked:hover:bg-blue-600 peer-checked:[&>div]:translate-x-3.5"
|
|
34
|
-
>
|
|
35
|
-
<div class="h-3.5 w-3.5 rounded-full bg-white shadow-sm transition-transform"></div>
|
|
36
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { tap } from "$lib/utils/haptics";
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
checked: boolean;
|
|
6
|
+
name: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let { checked = $bindable(), name }: Props = $props();
|
|
10
|
+
|
|
11
|
+
function toggle() {
|
|
12
|
+
checked = !checked;
|
|
13
|
+
tap();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function onKeydown(e: KeyboardEvent) {
|
|
17
|
+
if (e.key === " " || e.key === "Enter") {
|
|
18
|
+
e.preventDefault();
|
|
19
|
+
toggle();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<input bind:checked type="checkbox" {name} class="peer pointer-events-none absolute opacity-0" />
|
|
25
|
+
<div
|
|
26
|
+
aria-checked={checked}
|
|
27
|
+
aria-roledescription="switch"
|
|
28
|
+
aria-label="switch"
|
|
29
|
+
role="switch"
|
|
30
|
+
tabindex="0"
|
|
31
|
+
onclick={toggle}
|
|
32
|
+
onkeydown={onKeydown}
|
|
33
|
+
class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full bg-gray-300 p-1 shadow-inner ring-gray-400 peer-checked:bg-blue-600 hover:bg-gray-400 peer-checked:hover:bg-blue-600 focus-visible:ring focus-visible:ring-offset-1 dark:bg-gray-600 dark:ring-gray-700 dark:hover:bg-gray-500 dark:peer-checked:hover:bg-blue-600 peer-checked:[&>div]:translate-x-3.5"
|
|
34
|
+
>
|
|
35
|
+
<div class="h-3.5 w-3.5 rounded-full bg-white shadow-sm transition-transform"></div>
|
|
36
|
+
</div>
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Modal from "./Modal.svelte";
|
|
3
|
-
import CarbonClose from "~icons/carbon/close";
|
|
4
|
-
import CarbonBlockchain from "~icons/carbon/blockchain";
|
|
5
|
-
|
|
6
|
-
interface Props {
|
|
7
|
-
preprompt: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
let { preprompt }: Props = $props();
|
|
11
|
-
|
|
12
|
-
let isOpen = $state(false);
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<button
|
|
16
|
-
type="button"
|
|
17
|
-
class="mx-auto flex items-center gap-1.5 rounded-full border border-gray-100 bg-gray-50 px-3 py-1 text-xs text-gray-500 hover:bg-gray-100 dark:border-gray-800 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700"
|
|
18
|
-
onclick={() => (isOpen = !isOpen)}
|
|
19
|
-
onkeydown={(e) => e.key === "Enter" && (isOpen = !isOpen)}
|
|
20
|
-
>
|
|
21
|
-
<CarbonBlockchain class="text-xxs" /> Using Custom System Prompt
|
|
22
|
-
</button>
|
|
23
|
-
|
|
24
|
-
{#if isOpen}
|
|
25
|
-
<Modal onclose={() => (isOpen = false)} width="w-full !max-w-xl">
|
|
26
|
-
<div class="flex w-full flex-col gap-5 p-6">
|
|
27
|
-
<div
|
|
28
|
-
class="flex items-start justify-between text-xl font-semibold text-gray-800 dark:text-gray-200"
|
|
29
|
-
>
|
|
30
|
-
<h2>System Prompt</h2>
|
|
31
|
-
<button type="button" class="group" onclick={() => (isOpen = false)}>
|
|
32
|
-
<CarbonClose
|
|
33
|
-
class="mt-auto text-gray-900 group-hover:text-gray-500 dark:text-gray-200 dark:group-hover:text-gray-400"
|
|
34
|
-
/>
|
|
35
|
-
</button>
|
|
36
|
-
</div>
|
|
37
|
-
<textarea
|
|
38
|
-
disabled
|
|
39
|
-
value={preprompt}
|
|
40
|
-
class="min-h-[420px] w-full resize-none rounded-lg border bg-gray-50 p-2.5 text-gray-600 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 max-sm:text-sm"
|
|
41
|
-
></textarea>
|
|
42
|
-
</div>
|
|
43
|
-
</Modal>
|
|
44
|
-
{/if}
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Modal from "./Modal.svelte";
|
|
3
|
+
import CarbonClose from "~icons/carbon/close";
|
|
4
|
+
import CarbonBlockchain from "~icons/carbon/blockchain";
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
preprompt: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { preprompt }: Props = $props();
|
|
11
|
+
|
|
12
|
+
let isOpen = $state(false);
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<button
|
|
16
|
+
type="button"
|
|
17
|
+
class="mx-auto flex items-center gap-1.5 rounded-full border border-gray-100 bg-gray-50 px-3 py-1 text-xs text-gray-500 hover:bg-gray-100 dark:border-gray-800 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700"
|
|
18
|
+
onclick={() => (isOpen = !isOpen)}
|
|
19
|
+
onkeydown={(e) => e.key === "Enter" && (isOpen = !isOpen)}
|
|
20
|
+
>
|
|
21
|
+
<CarbonBlockchain class="text-xxs" /> Using Custom System Prompt
|
|
22
|
+
</button>
|
|
23
|
+
|
|
24
|
+
{#if isOpen}
|
|
25
|
+
<Modal onclose={() => (isOpen = false)} width="w-full !max-w-xl">
|
|
26
|
+
<div class="flex w-full flex-col gap-5 p-6">
|
|
27
|
+
<div
|
|
28
|
+
class="flex items-start justify-between text-xl font-semibold text-gray-800 dark:text-gray-200"
|
|
29
|
+
>
|
|
30
|
+
<h2>System Prompt</h2>
|
|
31
|
+
<button type="button" class="group" onclick={() => (isOpen = false)}>
|
|
32
|
+
<CarbonClose
|
|
33
|
+
class="mt-auto text-gray-900 group-hover:text-gray-500 dark:text-gray-200 dark:group-hover:text-gray-400"
|
|
34
|
+
/>
|
|
35
|
+
</button>
|
|
36
|
+
</div>
|
|
37
|
+
<textarea
|
|
38
|
+
disabled
|
|
39
|
+
value={preprompt}
|
|
40
|
+
class="min-h-[420px] w-full resize-none rounded-lg border bg-gray-50 p-2.5 text-gray-600 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 max-sm:text-sm"
|
|
41
|
+
></textarea>
|
|
42
|
+
</div>
|
|
43
|
+
</Modal>
|
|
44
|
+
{/if}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { fade } from "svelte/transition";
|
|
3
|
-
import Portal from "./Portal.svelte";
|
|
4
|
-
import IconDazzled from "$lib/components/icons/IconDazzled.svelte";
|
|
5
|
-
|
|
6
|
-
interface Props {
|
|
7
|
-
message?: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
let { message = "" }: Props = $props();
|
|
11
|
-
</script>
|
|
12
|
-
|
|
13
|
-
<Portal>
|
|
14
|
-
<div
|
|
15
|
-
transition:fade|global={{ duration: 300 }}
|
|
16
|
-
class="pointer-events-none fixed right-0 top-12 z-50 bg-gradient-to-bl from-red-500/20 via-red-500/0 to-red-500/0 pb-36 pl-36 pr-2 pt-2 max-sm:text-sm md:top-0 md:pr-8 md:pt-5"
|
|
17
|
-
>
|
|
18
|
-
<div
|
|
19
|
-
class="pointer-events-auto flex items-center rounded-full bg-white/90 px-3 py-1 shadow-sm dark:bg-gray-900/80"
|
|
20
|
-
>
|
|
21
|
-
<IconDazzled classNames="text-2xl mr-2 flex-none" />
|
|
22
|
-
<h2 class="line-clamp-2 max-w-2xl font-semibold text-gray-800 dark:text-gray-200">
|
|
23
|
-
{message}
|
|
24
|
-
</h2>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
</Portal>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { fade } from "svelte/transition";
|
|
3
|
+
import Portal from "./Portal.svelte";
|
|
4
|
+
import IconDazzled from "$lib/components/icons/IconDazzled.svelte";
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
message?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { message = "" }: Props = $props();
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<Portal>
|
|
14
|
+
<div
|
|
15
|
+
transition:fade|global={{ duration: 300 }}
|
|
16
|
+
class="pointer-events-none fixed right-0 top-12 z-50 bg-gradient-to-bl from-red-500/20 via-red-500/0 to-red-500/0 pb-36 pl-36 pr-2 pt-2 max-sm:text-sm md:top-0 md:pr-8 md:pt-5"
|
|
17
|
+
>
|
|
18
|
+
<div
|
|
19
|
+
class="pointer-events-auto flex items-center rounded-full bg-white/90 px-3 py-1 shadow-sm dark:bg-gray-900/80"
|
|
20
|
+
>
|
|
21
|
+
<IconDazzled classNames="text-2xl mr-2 flex-none" />
|
|
22
|
+
<h2 class="line-clamp-2 max-w-2xl font-semibold text-gray-800 dark:text-gray-200">
|
|
23
|
+
{message}
|
|
24
|
+
</h2>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</Portal>
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
interface Props {
|
|
3
|
-
classNames?: string;
|
|
4
|
-
label?: string;
|
|
5
|
-
position?: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
let {
|
|
9
|
-
classNames = "",
|
|
10
|
-
label = "Copied",
|
|
11
|
-
position = "left-1/2 top-full transform -translate-x-1/2 translate-y-2",
|
|
12
|
-
}: Props = $props();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<div
|
|
16
|
-
class="
|
|
17
|
-
pointer-events-none absolute rounded bg-black px-2 py-1 font-normal leading-tight text-white shadow transition-opacity
|
|
18
|
-
{position}
|
|
19
|
-
{classNames}
|
|
20
|
-
"
|
|
21
|
-
>
|
|
22
|
-
<div
|
|
23
|
-
class="absolute bottom-full left-1/2 h-0 w-0 -translate-x-1/2 transform border-4 border-t-0 border-black"
|
|
24
|
-
style="
|
|
25
|
-
border-left-color: transparent;
|
|
26
|
-
border-right-color: transparent;
|
|
27
|
-
"
|
|
28
|
-
></div>
|
|
29
|
-
{label}
|
|
30
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
classNames?: string;
|
|
4
|
+
label?: string;
|
|
5
|
+
position?: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
let {
|
|
9
|
+
classNames = "",
|
|
10
|
+
label = "Copied",
|
|
11
|
+
position = "left-1/2 top-full transform -translate-x-1/2 translate-y-2",
|
|
12
|
+
}: Props = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<div
|
|
16
|
+
class="
|
|
17
|
+
pointer-events-none absolute rounded bg-black px-2 py-1 font-normal leading-tight text-white shadow transition-opacity
|
|
18
|
+
{position}
|
|
19
|
+
{classNames}
|
|
20
|
+
"
|
|
21
|
+
>
|
|
22
|
+
<div
|
|
23
|
+
class="absolute bottom-full left-1/2 h-0 w-0 -translate-x-1/2 transform border-4 border-t-0 border-black"
|
|
24
|
+
style="
|
|
25
|
+
border-left-color: transparent;
|
|
26
|
+
border-right-color: transparent;
|
|
27
|
+
"
|
|
28
|
+
></div>
|
|
29
|
+
{label}
|
|
30
|
+
</div>
|