ruflo 3.5.1 → 3.5.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/dist/rvf.manifest.json +295 -0
- package/package.json +16 -2
- package/src/chat-ui/Dockerfile +25 -0
- package/src/chat-ui/patch-mcp-url-safety.sh +28 -0
- package/src/chat-ui/static/chatui/icon-144x144.png +0 -0
- package/src/chat-ui/static/chatui/omni-welcome.gif +0 -0
- package/src/config/config.example.json +76 -0
- package/src/mcp-bridge/Dockerfile +45 -0
- package/src/mcp-bridge/index.js +1668 -0
- package/src/mcp-bridge/mcp-stdio-kernel.js +159 -0
- package/src/mcp-bridge/package.json +17 -0
- package/src/mcp-bridge/test-harness.js +470 -0
- package/src/nginx/Dockerfile +10 -0
- package/src/nginx/nginx.conf +67 -0
- package/src/nginx/static/favicon-dark.svg +4 -0
- package/src/nginx/static/favicon.svg +4 -0
- package/src/nginx/static/icon.svg +5 -0
- package/src/nginx/static/logo.svg +9 -0
- package/src/nginx/static/manifest.json +22 -0
- package/src/nginx/static/welcome.js +184 -0
- package/src/ruvocal/.claude/skills/add-model-descriptions/SKILL.md +73 -0
- package/src/ruvocal/.devcontainer/Dockerfile +9 -0
- package/src/ruvocal/.devcontainer/devcontainer.json +36 -0
- package/src/ruvocal/.dockerignore +13 -0
- package/src/ruvocal/.env +194 -0
- package/src/ruvocal/.env.ci +1 -0
- package/src/ruvocal/.eslintignore +13 -0
- package/src/ruvocal/.eslintrc.cjs +45 -0
- package/src/ruvocal/.github/ISSUE_TEMPLATE/bug-report--chat-ui-.md +43 -0
- package/src/ruvocal/.github/ISSUE_TEMPLATE/config-support.md +9 -0
- package/src/ruvocal/.github/ISSUE_TEMPLATE/feature-request--chat-ui-.md +17 -0
- package/src/ruvocal/.github/ISSUE_TEMPLATE/huggingchat.md +11 -0
- package/src/ruvocal/.github/release.yml +16 -0
- package/src/ruvocal/.github/workflows/build-docs.yml +18 -0
- package/src/ruvocal/.github/workflows/build-image.yml +142 -0
- package/src/ruvocal/.github/workflows/build-pr-docs.yml +20 -0
- package/src/ruvocal/.github/workflows/deploy-dev.yml +63 -0
- package/src/ruvocal/.github/workflows/deploy-prod.yml +78 -0
- package/src/ruvocal/.github/workflows/lint-and-test.yml +84 -0
- package/src/ruvocal/.github/workflows/slugify.yaml +72 -0
- package/src/ruvocal/.github/workflows/trufflehog.yml +17 -0
- package/src/ruvocal/.github/workflows/upload-pr-documentation.yml +16 -0
- package/src/ruvocal/.husky/lint-stage-config.js +4 -0
- package/src/ruvocal/.husky/pre-commit +2 -0
- package/src/ruvocal/.prettierignore +14 -0
- package/src/ruvocal/.prettierrc +7 -0
- package/src/ruvocal/.vscode/launch.json +11 -0
- package/src/ruvocal/.vscode/settings.json +14 -0
- package/src/ruvocal/CLAUDE.md +126 -0
- package/src/ruvocal/Dockerfile +93 -0
- package/src/ruvocal/LICENSE +203 -0
- package/src/ruvocal/PRIVACY.md +41 -0
- package/src/ruvocal/README.md +190 -0
- package/src/ruvocal/chart/Chart.yaml +5 -0
- package/src/ruvocal/chart/env/dev.yaml +260 -0
- package/src/ruvocal/chart/env/prod.yaml +273 -0
- package/src/ruvocal/chart/templates/_helpers.tpl +22 -0
- package/src/ruvocal/chart/templates/config.yaml +10 -0
- package/src/ruvocal/chart/templates/deployment.yaml +81 -0
- package/src/ruvocal/chart/templates/hpa.yaml +45 -0
- package/src/ruvocal/chart/templates/infisical.yaml +24 -0
- package/src/ruvocal/chart/templates/ingress-internal.yaml +32 -0
- package/src/ruvocal/chart/templates/ingress.yaml +32 -0
- package/src/ruvocal/chart/templates/network-policy.yaml +36 -0
- package/src/ruvocal/chart/templates/service-account.yaml +13 -0
- package/src/ruvocal/chart/templates/service-monitor.yaml +17 -0
- package/src/ruvocal/chart/templates/service.yaml +21 -0
- package/src/ruvocal/chart/values.yaml +73 -0
- package/src/ruvocal/docker-compose.yml +21 -0
- package/src/ruvocal/docs/adr/ADR-029-HUGGINGFACE-CHAT-UI-CLOUD-RUN.md +1236 -0
- package/src/ruvocal/docs/adr/ADR-033-RUVECTOR-RUFLO-MCP-INTEGRATION.md +111 -0
- package/src/ruvocal/docs/adr/ADR-034-OPTIONAL-MCP-BACKENDS.md +117 -0
- package/src/ruvocal/docs/adr/ADR-035-MCP-TOOL-GROUPS.md +186 -0
- package/src/ruvocal/docs/adr/ADR-037-AUTOPILOT-CHAT-MODE.md +1500 -0
- package/src/ruvocal/docs/adr/ADR-038-RUVOCAL-FORK.md +286 -0
- package/src/ruvocal/docs/source/_toctree.yml +30 -0
- package/src/ruvocal/docs/source/configuration/common-issues.md +38 -0
- package/src/ruvocal/docs/source/configuration/llm-router.md +105 -0
- package/src/ruvocal/docs/source/configuration/mcp-tools.md +84 -0
- package/src/ruvocal/docs/source/configuration/metrics.md +9 -0
- package/src/ruvocal/docs/source/configuration/open-id.md +57 -0
- package/src/ruvocal/docs/source/configuration/overview.md +89 -0
- package/src/ruvocal/docs/source/configuration/theming.md +20 -0
- package/src/ruvocal/docs/source/developing/architecture.md +48 -0
- package/src/ruvocal/docs/source/index.md +53 -0
- package/src/ruvocal/docs/source/installation/docker.md +43 -0
- package/src/ruvocal/docs/source/installation/helm.md +43 -0
- package/src/ruvocal/docs/source/installation/local.md +62 -0
- package/src/ruvocal/entrypoint.sh +19 -0
- package/src/ruvocal/mcp-bridge/.claude-flow/agents/store.json +27 -0
- package/src/ruvocal/mcp-bridge/.claude-flow/daemon-state.json +130 -0
- package/src/ruvocal/mcp-bridge/.claude-flow/daemon.log +0 -0
- package/src/ruvocal/mcp-bridge/.claude-flow/daemon.pid +1 -0
- package/src/ruvocal/mcp-bridge/.claude-flow/tasks/store.json +21 -0
- package/src/ruvocal/mcp-bridge/.swarm/hnsw.index +0 -0
- package/src/ruvocal/mcp-bridge/.swarm/hnsw.metadata.json +1 -0
- package/src/ruvocal/mcp-bridge/.swarm/memory.db +0 -0
- package/src/ruvocal/mcp-bridge/.swarm/model-router-state.json +14 -0
- package/src/ruvocal/mcp-bridge/.swarm/schema.sql +305 -0
- package/src/ruvocal/mcp-bridge/Dockerfile +45 -0
- package/src/ruvocal/mcp-bridge/cloudbuild.yaml +49 -0
- package/src/ruvocal/mcp-bridge/index.js +1864 -0
- package/src/ruvocal/mcp-bridge/mcp-stdio-kernel.js +159 -0
- package/src/ruvocal/mcp-bridge/package-lock.json +762 -0
- package/src/ruvocal/mcp-bridge/package.json +17 -0
- package/src/ruvocal/mcp-bridge/test-harness.js +470 -0
- package/src/ruvocal/models/add-your-models-here.txt +1 -0
- package/src/ruvocal/package-lock.json +11741 -0
- package/src/ruvocal/package.json +121 -0
- package/src/ruvocal/postcss.config.js +6 -0
- package/src/ruvocal/rvf.manifest.json +204 -0
- package/src/ruvocal/scripts/config.ts +64 -0
- package/src/ruvocal/scripts/generate-welcome.mjs +181 -0
- package/src/ruvocal/scripts/populate.ts +288 -0
- package/src/ruvocal/scripts/samples.txt +194 -0
- package/src/ruvocal/scripts/setups/vitest-setup-client.ts +0 -0
- package/src/ruvocal/scripts/setups/vitest-setup-server.ts +44 -0
- package/src/ruvocal/scripts/updateLocalEnv.ts +48 -0
- package/src/ruvocal/src/ambient.d.ts +7 -0
- package/src/ruvocal/src/app.d.ts +29 -0
- package/src/ruvocal/src/app.html +53 -0
- package/src/ruvocal/src/hooks.server.ts +32 -0
- package/src/ruvocal/src/hooks.ts +6 -0
- package/src/ruvocal/src/lib/APIClient.ts +148 -0
- package/src/ruvocal/src/lib/actions/clickOutside.ts +18 -0
- package/src/ruvocal/src/lib/actions/snapScrollToBottom.ts +346 -0
- package/src/ruvocal/src/lib/buildPrompt.ts +33 -0
- package/src/ruvocal/src/lib/components/AnnouncementBanner.svelte +20 -0
- package/src/ruvocal/src/lib/components/BackgroundGenerationPoller.svelte +168 -0
- package/src/ruvocal/src/lib/components/CodeBlock.svelte +73 -0
- package/src/ruvocal/src/lib/components/CopyToClipBoardBtn.svelte +92 -0
- package/src/ruvocal/src/lib/components/DeleteConversationModal.svelte +75 -0
- package/src/ruvocal/src/lib/components/EditConversationModal.svelte +100 -0
- package/src/ruvocal/src/lib/components/ExpandNavigation.svelte +22 -0
- package/src/ruvocal/src/lib/components/HoverTooltip.svelte +44 -0
- package/src/ruvocal/src/lib/components/HtmlPreviewModal.svelte +143 -0
- package/src/ruvocal/src/lib/components/InfiniteScroll.svelte +50 -0
- package/src/ruvocal/src/lib/components/MobileNav.svelte +300 -0
- package/src/ruvocal/src/lib/components/Modal.svelte +115 -0
- package/src/ruvocal/src/lib/components/ModelCardMetadata.svelte +71 -0
- package/src/ruvocal/src/lib/components/NavConversationItem.svelte +151 -0
- package/src/ruvocal/src/lib/components/NavMenu.svelte +295 -0
- package/src/ruvocal/src/lib/components/Pagination.svelte +97 -0
- package/src/ruvocal/src/lib/components/PaginationArrow.svelte +27 -0
- package/src/ruvocal/src/lib/components/Portal.svelte +24 -0
- package/src/ruvocal/src/lib/components/RetryBtn.svelte +18 -0
- package/src/ruvocal/src/lib/components/RuFloUniverse.svelte +185 -0
- package/src/ruvocal/src/lib/components/ScrollToBottomBtn.svelte +47 -0
- package/src/ruvocal/src/lib/components/ScrollToPreviousBtn.svelte +77 -0
- package/src/ruvocal/src/lib/components/ShareConversationModal.svelte +182 -0
- package/src/ruvocal/src/lib/components/StopGeneratingBtn.svelte +69 -0
- package/src/ruvocal/src/lib/components/SubscribeModal.svelte +87 -0
- package/src/ruvocal/src/lib/components/Switch.svelte +36 -0
- package/src/ruvocal/src/lib/components/SystemPromptModal.svelte +44 -0
- package/src/ruvocal/src/lib/components/Toast.svelte +27 -0
- package/src/ruvocal/src/lib/components/Tooltip.svelte +30 -0
- package/src/ruvocal/src/lib/components/WelcomeModal.svelte +46 -0
- package/src/ruvocal/src/lib/components/chat/Alternatives.svelte +77 -0
- package/src/ruvocal/src/lib/components/chat/BlockWrapper.svelte +72 -0
- package/src/ruvocal/src/lib/components/chat/ChatInput.svelte +490 -0
- package/src/ruvocal/src/lib/components/chat/ChatIntroduction.svelte +123 -0
- package/src/ruvocal/src/lib/components/chat/ChatMessage.svelte +548 -0
- package/src/ruvocal/src/lib/components/chat/ChatWindow.svelte +939 -0
- package/src/ruvocal/src/lib/components/chat/FileDropzone.svelte +92 -0
- package/src/ruvocal/src/lib/components/chat/ImageLightbox.svelte +66 -0
- package/src/ruvocal/src/lib/components/chat/MarkdownBlock.svelte +23 -0
- package/src/ruvocal/src/lib/components/chat/MarkdownRenderer.svelte +69 -0
- package/src/ruvocal/src/lib/components/chat/MarkdownRenderer.svelte.test.ts +58 -0
- package/src/ruvocal/src/lib/components/chat/MessageAvatar.svelte +103 -0
- package/src/ruvocal/src/lib/components/chat/ModelSwitch.svelte +64 -0
- package/src/ruvocal/src/lib/components/chat/OpenReasoningResults.svelte +81 -0
- package/src/ruvocal/src/lib/components/chat/TaskGroup.svelte +88 -0
- package/src/ruvocal/src/lib/components/chat/ToolUpdate.svelte +273 -0
- package/src/ruvocal/src/lib/components/chat/UploadedFile.svelte +253 -0
- package/src/ruvocal/src/lib/components/chat/UrlFetchModal.svelte +203 -0
- package/src/ruvocal/src/lib/components/chat/VoiceRecorder.svelte +214 -0
- package/src/ruvocal/src/lib/components/icons/IconBurger.svelte +20 -0
- package/src/ruvocal/src/lib/components/icons/IconCheap.svelte +20 -0
- package/src/ruvocal/src/lib/components/icons/IconChevron.svelte +24 -0
- package/src/ruvocal/src/lib/components/icons/IconDazzled.svelte +40 -0
- package/src/ruvocal/src/lib/components/icons/IconFast.svelte +20 -0
- package/src/ruvocal/src/lib/components/icons/IconLoading.svelte +22 -0
- package/src/ruvocal/src/lib/components/icons/IconMCP.svelte +28 -0
- package/src/ruvocal/src/lib/components/icons/IconMoon.svelte +21 -0
- package/src/ruvocal/src/lib/components/icons/IconNew.svelte +20 -0
- package/src/ruvocal/src/lib/components/icons/IconOmni.svelte +90 -0
- package/src/ruvocal/src/lib/components/icons/IconPaperclip.svelte +24 -0
- package/src/ruvocal/src/lib/components/icons/IconPro.svelte +37 -0
- package/src/ruvocal/src/lib/components/icons/IconShare.svelte +21 -0
- package/src/ruvocal/src/lib/components/icons/IconSun.svelte +93 -0
- package/src/ruvocal/src/lib/components/icons/Logo.svelte +68 -0
- package/src/ruvocal/src/lib/components/icons/LogoHuggingFaceBorderless.svelte +54 -0
- package/src/ruvocal/src/lib/components/mcp/AddServerForm.svelte +250 -0
- package/src/ruvocal/src/lib/components/mcp/MCPServerManager.svelte +185 -0
- package/src/ruvocal/src/lib/components/mcp/ServerCard.svelte +203 -0
- package/src/ruvocal/src/lib/components/players/AudioPlayer.svelte +82 -0
- package/src/ruvocal/src/lib/components/voice/AudioWaveform.svelte +96 -0
- package/src/ruvocal/src/lib/constants/mcpExamples.ts +135 -0
- package/src/ruvocal/src/lib/constants/mime.ts +11 -0
- package/src/ruvocal/src/lib/constants/pagination.ts +1 -0
- package/src/ruvocal/src/lib/constants/publicSepToken.ts +1 -0
- package/src/ruvocal/src/lib/constants/routerExamples.ts +209 -0
- package/src/ruvocal/src/lib/createShareLink.ts +27 -0
- package/src/ruvocal/src/lib/jobs/refresh-conversation-stats.ts +297 -0
- package/src/ruvocal/src/lib/migrations/lock.ts +56 -0
- package/src/ruvocal/src/lib/migrations/migrations.spec.ts +74 -0
- package/src/ruvocal/src/lib/migrations/migrations.ts +109 -0
- package/src/ruvocal/src/lib/migrations/routines/01-update-search-assistants.ts +50 -0
- package/src/ruvocal/src/lib/migrations/routines/02-update-assistants-models.ts +48 -0
- package/src/ruvocal/src/lib/migrations/routines/04-update-message-updates.ts +151 -0
- package/src/ruvocal/src/lib/migrations/routines/05-update-message-files.ts +56 -0
- package/src/ruvocal/src/lib/migrations/routines/06-trim-message-updates.ts +56 -0
- package/src/ruvocal/src/lib/migrations/routines/08-update-featured-to-review.ts +32 -0
- package/src/ruvocal/src/lib/migrations/routines/09-delete-empty-conversations.spec.ts +214 -0
- package/src/ruvocal/src/lib/migrations/routines/09-delete-empty-conversations.ts +88 -0
- package/src/ruvocal/src/lib/migrations/routines/10-update-reports-assistantid.ts +29 -0
- package/src/ruvocal/src/lib/migrations/routines/index.ts +15 -0
- package/src/ruvocal/src/lib/server/__tests__/conversation-stop-generating.spec.ts +103 -0
- package/src/ruvocal/src/lib/server/abortRegistry.ts +57 -0
- package/src/ruvocal/src/lib/server/abortedGenerations.ts +43 -0
- package/src/ruvocal/src/lib/server/adminToken.ts +62 -0
- package/src/ruvocal/src/lib/server/api/__tests__/conversations-id.spec.ts +296 -0
- package/src/ruvocal/src/lib/server/api/__tests__/conversations-message.spec.ts +216 -0
- package/src/ruvocal/src/lib/server/api/__tests__/conversations.spec.ts +235 -0
- package/src/ruvocal/src/lib/server/api/__tests__/misc.spec.ts +72 -0
- package/src/ruvocal/src/lib/server/api/__tests__/testHelpers.ts +86 -0
- package/src/ruvocal/src/lib/server/api/__tests__/user-reports.spec.ts +78 -0
- package/src/ruvocal/src/lib/server/api/__tests__/user.spec.ts +239 -0
- package/src/ruvocal/src/lib/server/api/types.ts +37 -0
- package/src/ruvocal/src/lib/server/api/utils/requireAuth.ts +22 -0
- package/src/ruvocal/src/lib/server/api/utils/resolveConversation.ts +69 -0
- package/src/ruvocal/src/lib/server/api/utils/resolveModel.ts +27 -0
- package/src/ruvocal/src/lib/server/api/utils/superjsonResponse.ts +15 -0
- package/src/ruvocal/src/lib/server/apiToken.ts +11 -0
- package/src/ruvocal/src/lib/server/auth.ts +554 -0
- package/src/ruvocal/src/lib/server/config.ts +187 -0
- package/src/ruvocal/src/lib/server/conversation.ts +83 -0
- package/src/ruvocal/src/lib/server/database/__tests__/rvf.spec.ts +709 -0
- package/src/ruvocal/src/lib/server/database/postgres.ts +700 -0
- package/src/ruvocal/src/lib/server/database/rvf.ts +1078 -0
- package/src/ruvocal/src/lib/server/database.ts +145 -0
- package/src/ruvocal/src/lib/server/endpoints/document.ts +68 -0
- package/src/ruvocal/src/lib/server/endpoints/endpoints.ts +43 -0
- package/src/ruvocal/src/lib/server/endpoints/images.ts +211 -0
- package/src/ruvocal/src/lib/server/endpoints/openai/endpointOai.ts +266 -0
- package/src/ruvocal/src/lib/server/endpoints/openai/openAIChatToTextGenerationStream.ts +212 -0
- package/src/ruvocal/src/lib/server/endpoints/openai/openAICompletionToTextGenerationStream.ts +32 -0
- package/src/ruvocal/src/lib/server/endpoints/preprocessMessages.ts +61 -0
- package/src/ruvocal/src/lib/server/exitHandler.ts +59 -0
- package/src/ruvocal/src/lib/server/files/downloadFile.ts +34 -0
- package/src/ruvocal/src/lib/server/files/uploadFile.ts +29 -0
- package/src/ruvocal/src/lib/server/findRepoRoot.ts +13 -0
- package/src/ruvocal/src/lib/server/fonts/Inter-Black.ttf +0 -0
- package/src/ruvocal/src/lib/server/fonts/Inter-Bold.ttf +0 -0
- package/src/ruvocal/src/lib/server/fonts/Inter-ExtraBold.ttf +0 -0
- package/src/ruvocal/src/lib/server/fonts/Inter-ExtraLight.ttf +0 -0
- package/src/ruvocal/src/lib/server/fonts/Inter-Light.ttf +0 -0
- package/src/ruvocal/src/lib/server/fonts/Inter-Medium.ttf +0 -0
- package/src/ruvocal/src/lib/server/fonts/Inter-Regular.ttf +0 -0
- package/src/ruvocal/src/lib/server/fonts/Inter-SemiBold.ttf +0 -0
- package/src/ruvocal/src/lib/server/fonts/Inter-Thin.ttf +0 -0
- package/src/ruvocal/src/lib/server/generateFromDefaultEndpoint.ts +46 -0
- package/src/ruvocal/src/lib/server/hooks/error.ts +37 -0
- package/src/ruvocal/src/lib/server/hooks/fetch.ts +22 -0
- package/src/ruvocal/src/lib/server/hooks/handle.ts +250 -0
- package/src/ruvocal/src/lib/server/hooks/init.ts +51 -0
- package/src/ruvocal/src/lib/server/isURLLocal.spec.ts +31 -0
- package/src/ruvocal/src/lib/server/isURLLocal.ts +74 -0
- package/src/ruvocal/src/lib/server/logger.ts +42 -0
- package/src/ruvocal/src/lib/server/mcp/clientPool.ts +70 -0
- package/src/ruvocal/src/lib/server/mcp/hf.ts +32 -0
- package/src/ruvocal/src/lib/server/mcp/httpClient.ts +122 -0
- package/src/ruvocal/src/lib/server/mcp/registry.ts +76 -0
- package/src/ruvocal/src/lib/server/mcp/tools.ts +196 -0
- package/src/ruvocal/src/lib/server/metrics.ts +255 -0
- package/src/ruvocal/src/lib/server/models.ts +518 -0
- package/src/ruvocal/src/lib/server/requestContext.ts +55 -0
- package/src/ruvocal/src/lib/server/router/arch.ts +230 -0
- package/src/ruvocal/src/lib/server/router/endpoint.ts +316 -0
- package/src/ruvocal/src/lib/server/router/multimodal.ts +28 -0
- package/src/ruvocal/src/lib/server/router/policy.ts +49 -0
- package/src/ruvocal/src/lib/server/router/toolsRoute.ts +51 -0
- package/src/ruvocal/src/lib/server/router/types.ts +21 -0
- package/src/ruvocal/src/lib/server/sendSlack.ts +23 -0
- package/src/ruvocal/src/lib/server/textGeneration/generate.ts +258 -0
- package/src/ruvocal/src/lib/server/textGeneration/index.ts +95 -0
- package/src/ruvocal/src/lib/server/textGeneration/mcp/fileRefs.ts +155 -0
- package/src/ruvocal/src/lib/server/textGeneration/mcp/routerResolution.ts +108 -0
- package/src/ruvocal/src/lib/server/textGeneration/mcp/runMcpFlow.ts +822 -0
- package/src/ruvocal/src/lib/server/textGeneration/mcp/toolInvocation.ts +349 -0
- package/src/ruvocal/src/lib/server/textGeneration/reasoning.ts +23 -0
- package/src/ruvocal/src/lib/server/textGeneration/title.ts +83 -0
- package/src/ruvocal/src/lib/server/textGeneration/types.ts +26 -0
- package/src/ruvocal/src/lib/server/textGeneration/utils/prepareFiles.ts +88 -0
- package/src/ruvocal/src/lib/server/textGeneration/utils/routing.ts +21 -0
- package/src/ruvocal/src/lib/server/textGeneration/utils/toolPrompt.ts +49 -0
- package/src/ruvocal/src/lib/server/urlSafety.ts +72 -0
- package/src/ruvocal/src/lib/server/usageLimits.ts +30 -0
- package/src/ruvocal/src/lib/stores/autopilotStore.svelte.ts +175 -0
- package/src/ruvocal/src/lib/stores/backgroundGenerations.svelte.ts +32 -0
- package/src/ruvocal/src/lib/stores/backgroundGenerations.ts +1 -0
- package/src/ruvocal/src/lib/stores/errors.ts +9 -0
- package/src/ruvocal/src/lib/stores/isAborted.ts +3 -0
- package/src/ruvocal/src/lib/stores/isPro.ts +4 -0
- package/src/ruvocal/src/lib/stores/loading.ts +3 -0
- package/src/ruvocal/src/lib/stores/mcpServers.ts +345 -0
- package/src/ruvocal/src/lib/stores/pendingChatInput.ts +3 -0
- package/src/ruvocal/src/lib/stores/pendingMessage.ts +9 -0
- package/src/ruvocal/src/lib/stores/settings.ts +182 -0
- package/src/ruvocal/src/lib/stores/shareModal.ts +13 -0
- package/src/ruvocal/src/lib/stores/titleUpdate.ts +8 -0
- package/src/ruvocal/src/lib/switchTheme.ts +124 -0
- package/src/ruvocal/src/lib/types/AbortedGeneration.ts +8 -0
- package/src/ruvocal/src/lib/types/Assistant.ts +31 -0
- package/src/ruvocal/src/lib/types/AssistantStats.ts +11 -0
- package/src/ruvocal/src/lib/types/ConfigKey.ts +4 -0
- package/src/ruvocal/src/lib/types/ConvSidebar.ts +9 -0
- package/src/ruvocal/src/lib/types/Conversation.ts +27 -0
- package/src/ruvocal/src/lib/types/ConversationStats.ts +13 -0
- package/src/ruvocal/src/lib/types/Message.ts +41 -0
- package/src/ruvocal/src/lib/types/MessageEvent.ts +10 -0
- package/src/ruvocal/src/lib/types/MessageUpdate.ts +139 -0
- package/src/ruvocal/src/lib/types/MigrationResult.ts +7 -0
- package/src/ruvocal/src/lib/types/Model.ts +23 -0
- package/src/ruvocal/src/lib/types/Report.ts +12 -0
- package/src/ruvocal/src/lib/types/Review.ts +6 -0
- package/src/ruvocal/src/lib/types/Semaphore.ts +19 -0
- package/src/ruvocal/src/lib/types/Session.ts +22 -0
- package/src/ruvocal/src/lib/types/Settings.ts +86 -0
- package/src/ruvocal/src/lib/types/SharedConversation.ts +9 -0
- package/src/ruvocal/src/lib/types/Template.ts +6 -0
- package/src/ruvocal/src/lib/types/Timestamps.ts +4 -0
- package/src/ruvocal/src/lib/types/TokenCache.ts +6 -0
- package/src/ruvocal/src/lib/types/Tool.ts +74 -0
- package/src/ruvocal/src/lib/types/UrlDependency.ts +5 -0
- package/src/ruvocal/src/lib/types/User.ts +14 -0
- package/src/ruvocal/src/lib/utils/PublicConfig.svelte.ts +75 -0
- package/src/ruvocal/src/lib/utils/auth.ts +17 -0
- package/src/ruvocal/src/lib/utils/chunk.ts +33 -0
- package/src/ruvocal/src/lib/utils/cookiesAreEnabled.ts +13 -0
- package/src/ruvocal/src/lib/utils/debounce.ts +17 -0
- package/src/ruvocal/src/lib/utils/deepestChild.ts +6 -0
- package/src/ruvocal/src/lib/utils/favicon.ts +21 -0
- package/src/ruvocal/src/lib/utils/fetchJSON.ts +23 -0
- package/src/ruvocal/src/lib/utils/file2base64.ts +14 -0
- package/src/ruvocal/src/lib/utils/formatUserCount.ts +37 -0
- package/src/ruvocal/src/lib/utils/generationState.spec.ts +75 -0
- package/src/ruvocal/src/lib/utils/generationState.ts +26 -0
- package/src/ruvocal/src/lib/utils/getHref.ts +41 -0
- package/src/ruvocal/src/lib/utils/getReturnFromGenerator.ts +7 -0
- package/src/ruvocal/src/lib/utils/haptics.ts +64 -0
- package/src/ruvocal/src/lib/utils/hashConv.ts +12 -0
- package/src/ruvocal/src/lib/utils/hf.ts +17 -0
- package/src/ruvocal/src/lib/utils/isDesktop.ts +7 -0
- package/src/ruvocal/src/lib/utils/isUrl.ts +8 -0
- package/src/ruvocal/src/lib/utils/isVirtualKeyboard.ts +16 -0
- package/src/ruvocal/src/lib/utils/loadAttachmentsFromUrls.ts +115 -0
- package/src/ruvocal/src/lib/utils/marked.spec.ts +96 -0
- package/src/ruvocal/src/lib/utils/marked.ts +531 -0
- package/src/ruvocal/src/lib/utils/mcpValidation.ts +147 -0
- package/src/ruvocal/src/lib/utils/mergeAsyncGenerators.ts +38 -0
- package/src/ruvocal/src/lib/utils/messageUpdates.spec.ts +262 -0
- package/src/ruvocal/src/lib/utils/messageUpdates.ts +324 -0
- package/src/ruvocal/src/lib/utils/mime.ts +56 -0
- package/src/ruvocal/src/lib/utils/models.ts +14 -0
- package/src/ruvocal/src/lib/utils/parseBlocks.ts +120 -0
- package/src/ruvocal/src/lib/utils/parseIncompleteMarkdown.ts +644 -0
- package/src/ruvocal/src/lib/utils/parseStringToList.ts +10 -0
- package/src/ruvocal/src/lib/utils/randomUuid.ts +14 -0
- package/src/ruvocal/src/lib/utils/searchTokens.ts +33 -0
- package/src/ruvocal/src/lib/utils/sha256.ts +7 -0
- package/src/ruvocal/src/lib/utils/stringifyError.ts +12 -0
- package/src/ruvocal/src/lib/utils/sum.ts +3 -0
- package/src/ruvocal/src/lib/utils/template.spec.ts +59 -0
- package/src/ruvocal/src/lib/utils/template.ts +53 -0
- package/src/ruvocal/src/lib/utils/timeout.ts +9 -0
- package/src/ruvocal/src/lib/utils/toolProgress.spec.ts +46 -0
- package/src/ruvocal/src/lib/utils/toolProgress.ts +11 -0
- package/src/ruvocal/src/lib/utils/tree/addChildren.spec.ts +102 -0
- package/src/ruvocal/src/lib/utils/tree/addChildren.ts +48 -0
- package/src/ruvocal/src/lib/utils/tree/addSibling.spec.ts +81 -0
- package/src/ruvocal/src/lib/utils/tree/addSibling.ts +41 -0
- package/src/ruvocal/src/lib/utils/tree/buildSubtree.spec.ts +110 -0
- package/src/ruvocal/src/lib/utils/tree/buildSubtree.ts +24 -0
- package/src/ruvocal/src/lib/utils/tree/convertLegacyConversation.spec.ts +31 -0
- package/src/ruvocal/src/lib/utils/tree/convertLegacyConversation.ts +36 -0
- package/src/ruvocal/src/lib/utils/tree/isMessageId.spec.ts +15 -0
- package/src/ruvocal/src/lib/utils/tree/isMessageId.ts +5 -0
- package/src/ruvocal/src/lib/utils/tree/tree.d.ts +14 -0
- package/src/ruvocal/src/lib/utils/tree/treeHelpers.spec.ts +167 -0
- package/src/ruvocal/src/lib/utils/updates.ts +39 -0
- package/src/ruvocal/src/lib/utils/urlParams.ts +13 -0
- package/src/ruvocal/src/lib/workers/autopilotWorker.ts +221 -0
- package/src/ruvocal/src/lib/workers/detailFetchWorker.ts +100 -0
- package/src/ruvocal/src/lib/workers/markdownWorker.ts +61 -0
- package/src/ruvocal/src/routes/+error.svelte +20 -0
- package/src/ruvocal/src/routes/+layout.svelte +324 -0
- package/src/ruvocal/src/routes/+layout.ts +91 -0
- package/src/ruvocal/src/routes/+page.svelte +168 -0
- package/src/ruvocal/src/routes/.well-known/oauth-cimd/+server.ts +37 -0
- package/src/ruvocal/src/routes/__debug/openai/+server.ts +21 -0
- package/src/ruvocal/src/routes/admin/export/+server.ts +159 -0
- package/src/ruvocal/src/routes/admin/stats/compute/+server.ts +16 -0
- package/src/ruvocal/src/routes/api/conversation/[id]/+server.ts +40 -0
- package/src/ruvocal/src/routes/api/conversation/[id]/message/[messageId]/+server.ts +42 -0
- package/src/ruvocal/src/routes/api/conversations/+server.ts +48 -0
- package/src/ruvocal/src/routes/api/fetch-url/+server.ts +147 -0
- package/src/ruvocal/src/routes/api/mcp/health/+server.ts +292 -0
- package/src/ruvocal/src/routes/api/mcp/servers/+server.ts +32 -0
- package/src/ruvocal/src/routes/api/models/+server.ts +25 -0
- package/src/ruvocal/src/routes/api/transcribe/+server.ts +104 -0
- package/src/ruvocal/src/routes/api/user/+server.ts +15 -0
- package/src/ruvocal/src/routes/api/user/validate-token/+server.ts +20 -0
- package/src/ruvocal/src/routes/api/v2/conversations/+server.ts +48 -0
- package/src/ruvocal/src/routes/api/v2/conversations/[id]/+server.ts +94 -0
- package/src/ruvocal/src/routes/api/v2/conversations/[id]/message/[messageId]/+server.ts +43 -0
- package/src/ruvocal/src/routes/api/v2/conversations/import-share/+server.ts +23 -0
- package/src/ruvocal/src/routes/api/v2/debug/config/+server.ts +16 -0
- package/src/ruvocal/src/routes/api/v2/debug/refresh/+server.ts +30 -0
- package/src/ruvocal/src/routes/api/v2/export/+server.ts +196 -0
- package/src/ruvocal/src/routes/api/v2/feature-flags/+server.ts +14 -0
- package/src/ruvocal/src/routes/api/v2/models/+server.ts +38 -0
- package/src/ruvocal/src/routes/api/v2/models/[namespace]/+server.ts +8 -0
- package/src/ruvocal/src/routes/api/v2/models/[namespace]/[model]/+server.ts +8 -0
- package/src/ruvocal/src/routes/api/v2/models/[namespace]/[model]/subscribe/+server.ts +28 -0
- package/src/ruvocal/src/routes/api/v2/models/[namespace]/subscribe/+server.ts +28 -0
- package/src/ruvocal/src/routes/api/v2/models/old/+server.ts +7 -0
- package/src/ruvocal/src/routes/api/v2/models/refresh/+server.ts +33 -0
- package/src/ruvocal/src/routes/api/v2/public-config/+server.ts +7 -0
- package/src/ruvocal/src/routes/api/v2/user/+server.ts +17 -0
- package/src/ruvocal/src/routes/api/v2/user/billing-orgs/+server.ts +73 -0
- package/src/ruvocal/src/routes/api/v2/user/reports/+server.ts +17 -0
- package/src/ruvocal/src/routes/api/v2/user/settings/+server.ts +103 -0
- package/src/ruvocal/src/routes/conversation/+server.ts +115 -0
- package/src/ruvocal/src/routes/conversation/[id]/+page.svelte +582 -0
- package/src/ruvocal/src/routes/conversation/[id]/+page.ts +60 -0
- package/src/ruvocal/src/routes/conversation/[id]/+server.ts +736 -0
- package/src/ruvocal/src/routes/conversation/[id]/message/[messageId]/prompt/+server.ts +66 -0
- package/src/ruvocal/src/routes/conversation/[id]/output/[sha256]/+server.ts +58 -0
- package/src/ruvocal/src/routes/conversation/[id]/share/+server.ts +69 -0
- package/src/ruvocal/src/routes/conversation/[id]/stop-generating/+server.ts +35 -0
- package/src/ruvocal/src/routes/healthcheck/+server.ts +3 -0
- package/src/ruvocal/src/routes/login/+server.ts +5 -0
- package/src/ruvocal/src/routes/login/callback/+server.ts +103 -0
- package/src/ruvocal/src/routes/login/callback/updateUser.spec.ts +157 -0
- package/src/ruvocal/src/routes/login/callback/updateUser.ts +215 -0
- package/src/ruvocal/src/routes/logout/+server.ts +18 -0
- package/src/ruvocal/src/routes/metrics/+server.ts +18 -0
- package/src/ruvocal/src/routes/models/+page.svelte +233 -0
- package/src/ruvocal/src/routes/models/[...model]/+page.svelte +161 -0
- package/src/ruvocal/src/routes/models/[...model]/+page.ts +14 -0
- package/src/ruvocal/src/routes/models/[...model]/thumbnail.png/+server.ts +64 -0
- package/src/ruvocal/src/routes/models/[...model]/thumbnail.png/ModelThumbnail.svelte +28 -0
- package/src/ruvocal/src/routes/privacy/+page.svelte +11 -0
- package/src/ruvocal/src/routes/r/[id]/+page.ts +34 -0
- package/src/ruvocal/src/routes/settings/(nav)/+layout.svelte +282 -0
- package/src/ruvocal/src/routes/settings/(nav)/+layout.ts +1 -0
- package/src/ruvocal/src/routes/settings/(nav)/+page.svelte +0 -0
- package/src/ruvocal/src/routes/settings/(nav)/+server.ts +53 -0
- package/src/ruvocal/src/routes/settings/(nav)/[...model]/+page.svelte +464 -0
- package/src/ruvocal/src/routes/settings/(nav)/[...model]/+page.ts +14 -0
- package/src/ruvocal/src/routes/settings/(nav)/application/+page.svelte +362 -0
- package/src/ruvocal/src/routes/settings/+layout.svelte +40 -0
- package/src/ruvocal/src/styles/highlight-js.css +195 -0
- package/src/ruvocal/src/styles/main.css +144 -0
- package/src/ruvocal/static/chatui/apple-touch-icon.png +0 -0
- package/src/ruvocal/static/chatui/favicon-dark.svg +3 -0
- package/src/ruvocal/static/chatui/favicon-dev.svg +3 -0
- package/src/ruvocal/static/chatui/favicon.ico +0 -0
- package/src/ruvocal/static/chatui/favicon.svg +3 -0
- package/src/ruvocal/static/chatui/icon-128x128.png +0 -0
- package/src/ruvocal/static/chatui/icon-144x144.png +0 -0
- package/src/ruvocal/static/chatui/icon-192x192.png +0 -0
- package/src/ruvocal/static/chatui/icon-256x256.png +0 -0
- package/src/ruvocal/static/chatui/icon-36x36.png +0 -0
- package/src/ruvocal/static/chatui/icon-48x48.png +0 -0
- package/src/ruvocal/static/chatui/icon-512x512.png +0 -0
- package/src/ruvocal/static/chatui/icon-72x72.png +0 -0
- package/src/ruvocal/static/chatui/icon-96x96.png +0 -0
- package/src/ruvocal/static/chatui/icon.svg +3 -0
- package/src/ruvocal/static/chatui/logo.svg +7 -0
- package/src/ruvocal/static/chatui/manifest.json +54 -0
- package/src/ruvocal/static/chatui/omni-welcome.gif +0 -0
- package/src/ruvocal/static/chatui/omni-welcome.png +0 -0
- package/src/ruvocal/static/chatui/welcome.js +184 -0
- package/src/ruvocal/static/chatui/welcome.svg +1 -0
- package/src/ruvocal/static/huggingchat/apple-touch-icon.png +0 -0
- package/src/ruvocal/static/huggingchat/assistants-thumbnail.png +0 -0
- package/src/ruvocal/static/huggingchat/castle-example.jpg +0 -0
- package/src/ruvocal/static/huggingchat/favicon-dark.svg +4 -0
- package/src/ruvocal/static/huggingchat/favicon-dev.svg +4 -0
- package/src/ruvocal/static/huggingchat/favicon.ico +0 -0
- package/src/ruvocal/static/huggingchat/favicon.svg +4 -0
- package/src/ruvocal/static/huggingchat/fulltext-logo.svg +2 -0
- package/src/ruvocal/static/huggingchat/icon-128x128.png +0 -0
- package/src/ruvocal/static/huggingchat/icon-144x144.png +0 -0
- package/src/ruvocal/static/huggingchat/icon-192x192.png +0 -0
- package/src/ruvocal/static/huggingchat/icon-256x256.png +0 -0
- package/src/ruvocal/static/huggingchat/icon-36x36.png +0 -0
- package/src/ruvocal/static/huggingchat/icon-48x48.png +0 -0
- package/src/ruvocal/static/huggingchat/icon-512x512.png +0 -0
- package/src/ruvocal/static/huggingchat/icon-72x72.png +0 -0
- package/src/ruvocal/static/huggingchat/icon-96x96.png +0 -0
- package/src/ruvocal/static/huggingchat/icon.svg +4 -0
- package/src/ruvocal/static/huggingchat/logo.svg +4 -0
- package/src/ruvocal/static/huggingchat/manifest.json +54 -0
- package/src/ruvocal/static/huggingchat/omni-welcome.gif +0 -0
- package/src/ruvocal/static/huggingchat/routes.chat.json +226 -0
- package/src/ruvocal/static/huggingchat/thumbnail.png +0 -0
- package/src/ruvocal/static/huggingchat/tools-thumbnail.png +0 -0
- package/src/ruvocal/static/robots.txt +10 -0
- package/src/ruvocal/stub/@reflink/reflink/index.js +0 -0
- package/src/ruvocal/stub/@reflink/reflink/package.json +5 -0
- package/src/ruvocal/svelte.config.js +53 -0
- package/src/ruvocal/tailwind.config.cjs +30 -0
- package/src/ruvocal/tsconfig.json +19 -0
- package/src/ruvocal/vite.config.ts +87 -0
- package/src/scripts/deploy.sh +116 -0
- package/src/scripts/generate-config.js +245 -0
- package/src/scripts/generate-welcome.js +187 -0
- package/src/scripts/package-rvf.sh +116 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
{
|
|
2
|
+
"rvf_version": "2.0",
|
|
3
|
+
"format": "rvf-package",
|
|
4
|
+
"name": "chat-ui-mcp",
|
|
5
|
+
"version": "2.0.0",
|
|
6
|
+
"description": "White-label AI Chat UI with MCP tool groups \u2014 per-group toggleable MCP servers, multi-provider AI proxy, deployable to Google Cloud Run or Docker Compose",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"segments": {
|
|
9
|
+
"MANIFEST": {
|
|
10
|
+
"type": "root",
|
|
11
|
+
"uuid": "a7384d49-19c6-4943-949c-b12897ea3887",
|
|
12
|
+
"created": "2026-03-05T02:55:15Z",
|
|
13
|
+
"parent": null
|
|
14
|
+
},
|
|
15
|
+
"PROFILE": {
|
|
16
|
+
"type": "domain-config",
|
|
17
|
+
"description": "Deployment configuration \u2014 all secrets via environment variables",
|
|
18
|
+
"config_schema": "config/config.example.json",
|
|
19
|
+
"env_schema": ".env.example"
|
|
20
|
+
},
|
|
21
|
+
"WASM": {
|
|
22
|
+
"type": "runtime",
|
|
23
|
+
"description": "MCP Bridge v2.0 \u2014 per-group MCP endpoints, multi-provider AI proxy, error normalization",
|
|
24
|
+
"entrypoint": "mcp-bridge/index.js",
|
|
25
|
+
"runtime": "node:20",
|
|
26
|
+
"port": 3001
|
|
27
|
+
},
|
|
28
|
+
"META_IDX": {
|
|
29
|
+
"type": "metadata",
|
|
30
|
+
"components": [
|
|
31
|
+
{
|
|
32
|
+
"name": "mcp-bridge",
|
|
33
|
+
"type": "service",
|
|
34
|
+
"description": "Per-group MCP JSON-RPC server + OpenAI-compatible chat proxy with upstream error normalization",
|
|
35
|
+
"dockerfile": "mcp-bridge/Dockerfile",
|
|
36
|
+
"port": 3001,
|
|
37
|
+
"env_vars": [
|
|
38
|
+
"OPENAI_API_KEY",
|
|
39
|
+
"GOOGLE_API_KEY",
|
|
40
|
+
"OPENROUTER_API_KEY",
|
|
41
|
+
"ANTHROPIC_API_KEY",
|
|
42
|
+
"SEARCH_API_URL",
|
|
43
|
+
"RESEARCH_API_URL",
|
|
44
|
+
"MCP_GROUP_INTELLIGENCE",
|
|
45
|
+
"MCP_GROUP_AGENTS",
|
|
46
|
+
"MCP_GROUP_MEMORY",
|
|
47
|
+
"MCP_GROUP_DEVTOOLS",
|
|
48
|
+
"MCP_GROUP_SECURITY",
|
|
49
|
+
"MCP_GROUP_BROWSER",
|
|
50
|
+
"MCP_GROUP_NEURAL",
|
|
51
|
+
"MCP_GROUP_AGENTIC_FLOW",
|
|
52
|
+
"MCP_GROUP_CLAUDE_CODE",
|
|
53
|
+
"MCP_GROUP_GEMINI",
|
|
54
|
+
"MCP_GROUP_CODEX"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "chat-ui",
|
|
59
|
+
"type": "service",
|
|
60
|
+
"description": "HuggingFace Chat UI with branded assets, OIDC auth, and per-group MCP server toggles",
|
|
61
|
+
"dockerfile": "chat-ui/Dockerfile",
|
|
62
|
+
"base_image": "ghcr.io/huggingface/chat-ui-db:latest",
|
|
63
|
+
"port": 3000,
|
|
64
|
+
"env_vars": [
|
|
65
|
+
"MONGODB_URL",
|
|
66
|
+
"PUBLIC_APP_NAME",
|
|
67
|
+
"PUBLIC_ORIGIN",
|
|
68
|
+
"OPENID_PROVIDER_URL",
|
|
69
|
+
"OPENID_CLIENT_ID",
|
|
70
|
+
"OPENID_CLIENT_SECRET",
|
|
71
|
+
"MCP_SERVERS"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "mongodb",
|
|
76
|
+
"type": "datastore",
|
|
77
|
+
"description": "MongoDB for conversation persistence",
|
|
78
|
+
"image": "mongo:7",
|
|
79
|
+
"port": 27017
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"TOOL_GROUPS": {
|
|
84
|
+
"type": "mcp-groups",
|
|
85
|
+
"description": "Each group exposes a separate MCP endpoint at /mcp/{group} \u2014 toggleable in Chat UI",
|
|
86
|
+
"groups": {
|
|
87
|
+
"core": {
|
|
88
|
+
"enabled_by_default": true,
|
|
89
|
+
"display_name": "Core Tools",
|
|
90
|
+
"endpoint": "/mcp/core",
|
|
91
|
+
"description": "Built-in guidance, help, and utility tools",
|
|
92
|
+
"source": "builtin"
|
|
93
|
+
},
|
|
94
|
+
"intelligence": {
|
|
95
|
+
"enabled_by_default": true,
|
|
96
|
+
"display_name": "Intelligence & Learning",
|
|
97
|
+
"endpoint": "/mcp/intelligence",
|
|
98
|
+
"description": "Hooks, learning, trajectory, neural pattern tools",
|
|
99
|
+
"source": "ruvector",
|
|
100
|
+
"prefixes": [
|
|
101
|
+
"hooks_"
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
"agents": {
|
|
105
|
+
"enabled_by_default": true,
|
|
106
|
+
"display_name": "Agents & Orchestration",
|
|
107
|
+
"endpoint": "/mcp/agents",
|
|
108
|
+
"description": "Agent spawn, swarm, hive-mind, task orchestration",
|
|
109
|
+
"source": "ruflo",
|
|
110
|
+
"prefixes": [
|
|
111
|
+
"agent_",
|
|
112
|
+
"swarm_",
|
|
113
|
+
"hive_",
|
|
114
|
+
"task_"
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"memory": {
|
|
118
|
+
"enabled_by_default": true,
|
|
119
|
+
"display_name": "Memory & Knowledge",
|
|
120
|
+
"endpoint": "/mcp/memory",
|
|
121
|
+
"description": "Memory store/search/retrieve, embeddings, session",
|
|
122
|
+
"source": "ruflo",
|
|
123
|
+
"prefixes": [
|
|
124
|
+
"memory_",
|
|
125
|
+
"embedding_",
|
|
126
|
+
"session_"
|
|
127
|
+
]
|
|
128
|
+
},
|
|
129
|
+
"devtools": {
|
|
130
|
+
"enabled_by_default": true,
|
|
131
|
+
"display_name": "Dev Tools & Analysis",
|
|
132
|
+
"endpoint": "/mcp/devtools",
|
|
133
|
+
"description": "Performance, security, deployment, config, doctor tools",
|
|
134
|
+
"source": "ruflo",
|
|
135
|
+
"prefixes": [
|
|
136
|
+
"perf_",
|
|
137
|
+
"security_",
|
|
138
|
+
"deploy_",
|
|
139
|
+
"config_",
|
|
140
|
+
"doctor_",
|
|
141
|
+
"plugin_",
|
|
142
|
+
"workflow_",
|
|
143
|
+
"provider_"
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
"security": {
|
|
147
|
+
"enabled_by_default": false,
|
|
148
|
+
"display_name": "Security & Safety",
|
|
149
|
+
"endpoint": "/mcp/security",
|
|
150
|
+
"description": "Security scanning, CVE detection, threat analysis",
|
|
151
|
+
"source": "ruflo",
|
|
152
|
+
"prefixes": [
|
|
153
|
+
"security_"
|
|
154
|
+
]
|
|
155
|
+
},
|
|
156
|
+
"browser": {
|
|
157
|
+
"enabled_by_default": false,
|
|
158
|
+
"display_name": "Browser Automation",
|
|
159
|
+
"endpoint": "/mcp/browser",
|
|
160
|
+
"description": "Headless browser \u2014 navigate, click, fill, screenshot",
|
|
161
|
+
"source": "ruflo",
|
|
162
|
+
"prefixes": [
|
|
163
|
+
"browser_"
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
"neural": {
|
|
167
|
+
"enabled_by_default": false,
|
|
168
|
+
"display_name": "Neural & DAA",
|
|
169
|
+
"endpoint": "/mcp/neural",
|
|
170
|
+
"description": "Neural training, DAA autonomous agents",
|
|
171
|
+
"source": "ruflo",
|
|
172
|
+
"prefixes": [
|
|
173
|
+
"neural_",
|
|
174
|
+
"daa_"
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
"agentic-flow": {
|
|
178
|
+
"enabled_by_default": false,
|
|
179
|
+
"display_name": "Agentic Flow",
|
|
180
|
+
"endpoint": "/mcp/agentic-flow",
|
|
181
|
+
"description": "agentic-flow alpha integration",
|
|
182
|
+
"source": "agentic-flow"
|
|
183
|
+
},
|
|
184
|
+
"claude-code": {
|
|
185
|
+
"enabled_by_default": false,
|
|
186
|
+
"display_name": "Claude Code",
|
|
187
|
+
"endpoint": "/mcp/claude-code",
|
|
188
|
+
"description": "Claude Code CLI tools",
|
|
189
|
+
"source": "claude-code"
|
|
190
|
+
},
|
|
191
|
+
"gemini": {
|
|
192
|
+
"enabled_by_default": false,
|
|
193
|
+
"display_name": "Gemini",
|
|
194
|
+
"endpoint": "/mcp/gemini",
|
|
195
|
+
"description": "Google Gemini native tools",
|
|
196
|
+
"source": "gemini"
|
|
197
|
+
},
|
|
198
|
+
"codex": {
|
|
199
|
+
"enabled_by_default": false,
|
|
200
|
+
"display_name": "Codex",
|
|
201
|
+
"endpoint": "/mcp/codex",
|
|
202
|
+
"description": "OpenAI Codex tools",
|
|
203
|
+
"source": "codex"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"OVERLAY": {
|
|
208
|
+
"type": "customization",
|
|
209
|
+
"description": "Brand-specific overlays",
|
|
210
|
+
"assets": [
|
|
211
|
+
"chat-ui/static/chatui/omni-welcome.gif",
|
|
212
|
+
"chat-ui/static/chatui/icon-144x144.png"
|
|
213
|
+
],
|
|
214
|
+
"generators": [
|
|
215
|
+
{
|
|
216
|
+
"name": "welcome-gif",
|
|
217
|
+
"script": "scripts/generate-welcome.js",
|
|
218
|
+
"config_key": "brand.welcomeColors",
|
|
219
|
+
"output": "chat-ui/static/chatui/omni-welcome.gif"
|
|
220
|
+
}
|
|
221
|
+
]
|
|
222
|
+
},
|
|
223
|
+
"CRYPTO": {
|
|
224
|
+
"type": "security",
|
|
225
|
+
"description": "Security configuration with private network MCP tunnel",
|
|
226
|
+
"secrets_management": "gcp-secret-manager",
|
|
227
|
+
"auth_protocol": "openid-connect",
|
|
228
|
+
"no_embedded_secrets": true,
|
|
229
|
+
"private_tunnel": {
|
|
230
|
+
"protocol": "http",
|
|
231
|
+
"scope": "docker-network-only",
|
|
232
|
+
"patch": "chat-ui/patch-mcp-url-safety.sh",
|
|
233
|
+
"adr": "docs/adr/ADR-032-RVF-PRIVATE-MCP-TUNNEL.md"
|
|
234
|
+
},
|
|
235
|
+
"env_only_keys": [
|
|
236
|
+
"OPENAI_API_KEY",
|
|
237
|
+
"GOOGLE_API_KEY",
|
|
238
|
+
"OPENROUTER_API_KEY",
|
|
239
|
+
"ANTHROPIC_API_KEY",
|
|
240
|
+
"OPENID_CLIENT_SECRET"
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"deployment": {
|
|
245
|
+
"platforms": [
|
|
246
|
+
"google-cloud-run",
|
|
247
|
+
"docker-compose",
|
|
248
|
+
"kubernetes"
|
|
249
|
+
],
|
|
250
|
+
"infrastructure": {
|
|
251
|
+
"mcp_bridge": {
|
|
252
|
+
"memory": "512Mi",
|
|
253
|
+
"cpu": 1,
|
|
254
|
+
"min_instances": 0,
|
|
255
|
+
"max_instances": 5,
|
|
256
|
+
"timeout": 300
|
|
257
|
+
},
|
|
258
|
+
"chat_ui": {
|
|
259
|
+
"memory": "2Gi",
|
|
260
|
+
"cpu": 2,
|
|
261
|
+
"min_instances": 1,
|
|
262
|
+
"max_instances": 10,
|
|
263
|
+
"timeout": 300
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"capabilities": {
|
|
268
|
+
"mcp_protocol": "2024-11-05",
|
|
269
|
+
"mcp_tool_groups": true,
|
|
270
|
+
"per_group_mcp_endpoints": true,
|
|
271
|
+
"chat_completions_proxy": true,
|
|
272
|
+
"upstream_error_normalization": true,
|
|
273
|
+
"goap_search_pipeline": true,
|
|
274
|
+
"multi_provider_routing": [
|
|
275
|
+
"openai",
|
|
276
|
+
"gemini",
|
|
277
|
+
"openrouter"
|
|
278
|
+
],
|
|
279
|
+
"oidc_auth": true,
|
|
280
|
+
"branded_assets": true,
|
|
281
|
+
"tool_extensibility": true,
|
|
282
|
+
"ruvector_integration": true,
|
|
283
|
+
"ruflo_integration": true,
|
|
284
|
+
"agentic_flow_integration": true,
|
|
285
|
+
"external_mcp_backends": [
|
|
286
|
+
"ruvector",
|
|
287
|
+
"ruflo",
|
|
288
|
+
"agentic-flow",
|
|
289
|
+
"claude-code",
|
|
290
|
+
"gemini",
|
|
291
|
+
"codex"
|
|
292
|
+
],
|
|
293
|
+
"test_harness": true
|
|
294
|
+
}
|
|
295
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ruflo",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.3",
|
|
4
4
|
"description": "Ruflo - Enterprise AI agent orchestration platform. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration",
|
|
5
5
|
"main": "bin/ruflo.js",
|
|
6
6
|
"type": "module",
|
|
@@ -18,11 +18,25 @@
|
|
|
18
18
|
},
|
|
19
19
|
"files": [
|
|
20
20
|
"bin/**",
|
|
21
|
+
"src/**",
|
|
22
|
+
"dist/**",
|
|
21
23
|
"README.md",
|
|
22
24
|
"LICENSE"
|
|
23
25
|
],
|
|
24
26
|
"scripts": {
|
|
25
|
-
"
|
|
27
|
+
"dev": "node src/mcp-bridge/index.js",
|
|
28
|
+
"dev:bridge": "node --watch src/mcp-bridge/index.js",
|
|
29
|
+
"dev:test": "node src/mcp-bridge/test-harness.js",
|
|
30
|
+
"start": "node src/mcp-bridge/index.js",
|
|
31
|
+
"docker:up": "docker compose up -d",
|
|
32
|
+
"docker:down": "docker compose down",
|
|
33
|
+
"docker:build": "docker compose build",
|
|
34
|
+
"docker:logs": "docker compose logs -f",
|
|
35
|
+
"install:bridge": "cd src/mcp-bridge && npm install",
|
|
36
|
+
"generate:config": "node src/scripts/generate-config.js",
|
|
37
|
+
"generate:welcome": "node src/scripts/generate-welcome.js",
|
|
38
|
+
"deploy": "bash src/scripts/deploy.sh",
|
|
39
|
+
"package:rvf": "bash src/scripts/package-rvf.sh"
|
|
26
40
|
},
|
|
27
41
|
"dependencies": {
|
|
28
42
|
"@claude-flow/cli": ">=3.0.0-alpha.1"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
FROM ghcr.io/huggingface/chat-ui-db:latest
|
|
2
|
+
|
|
3
|
+
# Switch to root for patching and file operations
|
|
4
|
+
USER root
|
|
5
|
+
|
|
6
|
+
# Bake .env.local with MODELS config (too large for Cloud Run env vars)
|
|
7
|
+
COPY dotenv-local.txt /app/.env.local
|
|
8
|
+
|
|
9
|
+
# RVF Security Patch — allow private Docker network MCP connections.
|
|
10
|
+
# HF Chat UI enforces HTTPS for MCP URLs (SSRF protection).
|
|
11
|
+
# In containerized deployments, MCP bridge runs on private Docker network.
|
|
12
|
+
# This patch allows HTTP for admin-configured MCP_SERVERS only.
|
|
13
|
+
COPY patch-mcp-url-safety.sh /tmp/patch-mcp-url-safety.sh
|
|
14
|
+
RUN sh /tmp/patch-mcp-url-safety.sh && rm /tmp/patch-mcp-url-safety.sh
|
|
15
|
+
|
|
16
|
+
# Copy branded welcome GIF into the SvelteKit static asset directory.
|
|
17
|
+
COPY static/chatui/omni-welcome.gif /app/build/client/chatui/omni-welcome.gif
|
|
18
|
+
COPY static/chatui/omni-welcome.gif /app/static/chatui/omni-welcome.gif
|
|
19
|
+
|
|
20
|
+
# Copy PWA icon (fixes 404 for /chat/chatui/icon-144x144.png)
|
|
21
|
+
COPY static/chatui/icon-144x144.png /app/build/client/chatui/icon-144x144.png
|
|
22
|
+
COPY static/chatui/icon-144x144.png /app/static/chatui/icon-144x144.png
|
|
23
|
+
|
|
24
|
+
# Switch back to non-root user
|
|
25
|
+
USER 1000
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# RVF Security Patch — Allow private network MCP connections
|
|
3
|
+
#
|
|
4
|
+
# HF Chat UI enforces HTTPS-only for MCP server URLs to prevent SSRF.
|
|
5
|
+
# In containerized deployments, MCP servers run on the private Docker
|
|
6
|
+
# network (not exposed to the internet). This patch allows HTTP for
|
|
7
|
+
# admin-configured MCP_SERVERS URLs while maintaining SSRF protection
|
|
8
|
+
# for user-provided URLs.
|
|
9
|
+
#
|
|
10
|
+
# Security model:
|
|
11
|
+
# - MCP_SERVERS is set by the deployment admin (env var / .env.local)
|
|
12
|
+
# - Private Docker network is not accessible from the internet
|
|
13
|
+
# - The patch only relaxes protocol check, not IP safety checks
|
|
14
|
+
|
|
15
|
+
URLSAFETY_FILE=$(find /app/build/server -name "urlSafety-*.js" | head -1)
|
|
16
|
+
|
|
17
|
+
if [ -z "$URLSAFETY_FILE" ]; then
|
|
18
|
+
echo "[rvf-patch] urlSafety file not found, skipping"
|
|
19
|
+
exit 0
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Allow http: protocol in addition to https:
|
|
23
|
+
sed -i 's/if (url\.protocol !== "https:")/if (url.protocol !== "https:" \&\& url.protocol !== "http:")/' "$URLSAFETY_FILE"
|
|
24
|
+
|
|
25
|
+
# Allow localhost for container-internal MCP servers
|
|
26
|
+
sed -i 's/if (hostname === "localhost")/if (false \&\& hostname === "localhost")/' "$URLSAFETY_FILE"
|
|
27
|
+
|
|
28
|
+
echo "[rvf-patch] Patched $URLSAFETY_FILE for private network MCP"
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"brand": {
|
|
3
|
+
"name": "My AI Assistant",
|
|
4
|
+
"description": "AI-powered assistant for your business",
|
|
5
|
+
"domain": "chat.example.com",
|
|
6
|
+
"welcomeColors": {
|
|
7
|
+
"background": "#0d0d1a",
|
|
8
|
+
"primary": "#06b6d4",
|
|
9
|
+
"secondary": "#3b82f6",
|
|
10
|
+
"accent": "#6366f1"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"gcp": {
|
|
14
|
+
"projectId": "my-gcp-project",
|
|
15
|
+
"region": "us-central1",
|
|
16
|
+
"vpcConnector": "",
|
|
17
|
+
"serviceName": {
|
|
18
|
+
"chatUi": "chat-ui",
|
|
19
|
+
"mcpBridge": "mcp-bridge"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"auth": {
|
|
23
|
+
"enabled": true,
|
|
24
|
+
"provider": "google",
|
|
25
|
+
"clientId": "",
|
|
26
|
+
"clientSecretName": "google-client-secret",
|
|
27
|
+
"scopes": "openid profile email",
|
|
28
|
+
"nameClaim": "name"
|
|
29
|
+
},
|
|
30
|
+
"models": [
|
|
31
|
+
{
|
|
32
|
+
"name": "gemini-2.5-pro",
|
|
33
|
+
"displayName": "Gemini 2.5 Pro (Default)",
|
|
34
|
+
"description": "Google's most capable deep thinking model",
|
|
35
|
+
"provider": "gemini",
|
|
36
|
+
"supportsTools": true
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "gemini-2.5-flash",
|
|
40
|
+
"displayName": "Gemini 2.5 Flash",
|
|
41
|
+
"description": "Fast Google model with thinking",
|
|
42
|
+
"provider": "gemini",
|
|
43
|
+
"supportsTools": true
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "gpt-4.1",
|
|
47
|
+
"displayName": "GPT-4.1",
|
|
48
|
+
"description": "OpenAI's latest flagship model (2026)",
|
|
49
|
+
"provider": "openai",
|
|
50
|
+
"multimodal": true,
|
|
51
|
+
"supportsTools": true
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "gpt-4.1-mini",
|
|
55
|
+
"displayName": "GPT-4.1 Mini",
|
|
56
|
+
"description": "Fast and affordable OpenAI model",
|
|
57
|
+
"provider": "openai",
|
|
58
|
+
"supportsTools": true
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "o3-mini",
|
|
62
|
+
"displayName": "o3-mini (Reasoning)",
|
|
63
|
+
"description": "OpenAI reasoning model for complex tasks",
|
|
64
|
+
"provider": "openai",
|
|
65
|
+
"supportsTools": true
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"secrets": {
|
|
69
|
+
"openaiApiKey": "openai-api-key",
|
|
70
|
+
"googleApiKey": "google-api-key",
|
|
71
|
+
"openrouterApiKey": "openrouter-api-key"
|
|
72
|
+
},
|
|
73
|
+
"tools": [],
|
|
74
|
+
"cloudFunctions": {},
|
|
75
|
+
"systemPrompt": "You are an intelligent AI assistant with powerful tools organized into 5 groups. You MUST use tools proactively — never ask permission, never guess answers from general knowledge.\n\nIMPORTANT: Call `guidance` with topic='overview' if you are ever unsure which tool to use. It will tell you exactly what is available and how to use it.\n\n# Tool Groups\n\nYour tools are organized into groups. Each tool name is prefixed with its backend (e.g., `ruflo__agent_spawn`, `ruvector__hooks_route`). Always use the full prefixed name.\n\n## Group 1: Core Tools\nBuilt-in tools always available.\n\n- **search** — Search the knowledge base for documents, procedures, how-tos. ALWAYS search before answering knowledge questions.\n- **web_research** — Web search, deep research, comparisons, fact-checking.\n - Actions: `search` (quick), `research` (deep report), `compare` (side-by-side), `fact_check` (verify), `goap` (comprehensive multi-step — BEST for important questions)\n- **guidance** — Get help on any tool group, specific tool usage, or capabilities overview.\n - Topics: `overview`, `groups`, `agents`, `memory`, `intelligence`, `devtools`\n - For specific tool: `guidance(topic='tool', tool_name='ruflo__agent_spawn')`\n\n## Group 2: Intelligence & Learning (ruvector)\nPattern learning, routing, code analysis, and trajectory tracking.\n\n### Key tools:\n- **ruvector__hooks_route** — Route a task to the optimal agent type. Call this FIRST for complex tasks to get agent recommendations.\n - `{\"task\": \"describe what needs to be done\", \"context\": [\"relevant info\"]}`\n- **ruvector__hooks_remember** — Store a key-value pair in persistent memory for cross-session recall.\n - `{\"key\": \"pattern-name\", \"value\": \"what to remember\", \"namespace\": \"patterns\"}`\n- **ruvector__hooks_recall** — Retrieve a previously stored memory by key.\n - `{\"key\": \"pattern-name\", \"namespace\": \"patterns\"}`\n- **ruvector__hooks_trajectory_begin** — Start tracking a multi-step task for learning.\n- **ruvector__hooks_trajectory_step** — Record a step in the current trajectory.\n- **ruvector__hooks_trajectory_end** — End trajectory, triggering pattern extraction.\n- **ruvector__hooks_ast_analyze** — Analyze code structure (AST) of a file.\n- **ruvector__hooks_ast_complexity** — Get complexity metrics for code.\n- **ruvector__hooks_diff_analyze** — Analyze a code diff for risk and impact.\n- **ruvector__hooks_security_scan** — Scan code for security vulnerabilities.\n- **ruvector__hooks_rag_context** — Get RAG context for a query from stored knowledge.\n- **ruvector__hooks_learn** — Force the system to learn from provided examples.\n- **ruvector__hooks_compress** — Compress/summarize long text for efficient storage.\n- **ruvector__hooks_swarm_recommend** — Get swarm topology recommendation for a task.\n- **ruvector__hooks_suggest_context** — Get contextual suggestions based on current work.\n- **ruvector__hooks_capabilities** — List all intelligence system capabilities.\n- **ruvector__hooks_stats** — View learning statistics and metrics.\n- **ruvector__hooks_doctor** — Run diagnostics on the intelligence system.\n\n### When to use Intelligence tools:\n- Before starting complex work → `ruvector__hooks_route` to find the best approach\n- To remember solutions for later → `ruvector__hooks_remember`\n- For code analysis → `ruvector__hooks_ast_analyze`, `ruvector__hooks_security_scan`\n- To track multi-step work → trajectory_begin/step/end\n\n## Group 3: Agents & Orchestration (ruflo)\nSpawn agents, coordinate swarms, manage tasks and workflows.\n\n### Agent Management:\n- **ruflo__agent_spawn** — Create a new specialized agent.\n - `{\"type\": \"coder|researcher|tester|reviewer|architect|security\", \"name\": \"optional-name\"}`\n - Agent types: `coder` (writes code), `researcher` (finds information), `tester` (writes tests), `reviewer` (reviews code), `architect` (designs systems), `security` (audits security)\n- **ruflo__agent_status** — Check an agent's current state. `{\"agentId\": \"agent-xxx\"}`\n- **ruflo__agent_list** — List all active agents.\n- **ruflo__agent_terminate** — Stop an agent. `{\"agentId\": \"agent-xxx\"}`\n- **ruflo__agent_health** — Health check across all agents.\n\n### Swarm Coordination:\n- **ruflo__swarm_init** — Initialize a multi-agent swarm.\n - `{\"topology\": \"hierarchical|mesh|ring|star\", \"maxAgents\": 8, \"strategy\": \"balanced|specialized|adaptive\"}`\n - Use `hierarchical` for coordinated teams, `mesh` for peer-to-peer collaboration\n- **ruflo__swarm_status** — Get swarm health and agent states.\n- **ruflo__swarm_shutdown** — Tear down a swarm.\n\n### Task Management:\n- **ruflo__task_create** — Create a tracked task.\n - `{\"description\": \"what needs to be done\", \"priority\": \"low|normal|high|critical\"}`\n- **ruflo__task_status** — Check task progress. `{\"taskId\": \"task-xxx\"}`\n- **ruflo__task_list** — List all tasks with their statuses.\n- **ruflo__task_complete** — Mark a task as done. `{\"taskId\": \"task-xxx\"}`\n- **ruflo__task_update** — Update task details or status.\n\n### Workflow Orchestration:\n- **ruflo__workflow_create** — Define a multi-step workflow.\n - `{\"name\": \"workflow-name\", \"steps\": [{\"name\": \"step1\", \"tool\": \"tool-name\", \"args\": {}}]}`\n- **ruflo__workflow_execute** — Run a workflow. `{\"workflowId\": \"wf-xxx\"}`\n- **ruflo__workflow_status** — Check workflow progress.\n- **ruflo__workflow_template** — Use a pre-built workflow template.\n\n### Hive-Mind (Multi-Agent Consensus):\n- **ruflo__hive-mind_init** — Start distributed consensus system.\n- **ruflo__hive-mind_spawn** — Add an agent to the hive.\n- **ruflo__hive-mind_consensus** — Run consensus vote across agents.\n- **ruflo__hive-mind_broadcast** — Send message to all hive agents.\n\n### Coordination:\n- **ruflo__coordination_topology** — View/change coordination topology.\n- **ruflo__coordination_load_balance** — Distribute work across agents.\n- **ruflo__coordination_orchestrate** — Orchestrate complex multi-agent tasks.\n\n### When to use Agent tools:\n- Complex tasks needing multiple perspectives → spawn a swarm\n- Code implementation → `ruflo__agent_spawn({\"type\": \"coder\"})`\n- Research tasks → `ruflo__agent_spawn({\"type\": \"researcher\"})`\n- Track progress → create tasks, update status\n- Multi-step processes → create and execute workflows\n\n## Group 4: Memory & Knowledge (ruflo)\nPersistent memory, vector search, embeddings, and pattern storage.\n\n### Memory Operations:\n- **ruflo__memory_store** — Store data in persistent memory.\n - `{\"key\": \"my-key\", \"value\": \"data to store\", \"namespace\": \"default\", \"tags\": [\"tag1\"]}`\n- **ruflo__memory_retrieve** — Get stored data by key.\n - `{\"key\": \"my-key\", \"namespace\": \"default\"}`\n- **ruflo__memory_search** — Semantic vector search across all stored memories.\n - `{\"query\": \"what to search for\", \"limit\": 5, \"namespace\": \"default\"}`\n- **ruflo__memory_list** — List all stored keys in a namespace.\n- **ruflo__memory_delete** — Remove a stored memory.\n- **ruflo__memory_stats** — View memory usage statistics.\n\n### Embeddings:\n- **ruflo__embeddings_generate** — Generate vector embeddings for text.\n- **ruflo__embeddings_compare** — Compare semantic similarity of two texts.\n- **ruflo__embeddings_search** — Search embeddings database.\n\n### AgentDB (Advanced Pattern Storage):\n- **ruflo__agentdb_pattern-store** — Store a learned pattern with metadata.\n - `{\"pattern\": \"description\", \"category\": \"code|debug|architecture\", \"confidence\": 0.9}`\n- **ruflo__agentdb_pattern-search** — Search patterns by similarity.\n - `{\"query\": \"search terms\", \"limit\": 5}`\n- **ruflo__agentdb_route** — Route a query to the most relevant stored pattern.\n- **ruflo__agentdb_feedback** — Provide feedback on a pattern (reinforcement learning).\n- **ruflo__agentdb_context-synthesize** — Synthesize context from multiple sources.\n- **ruflo__agentdb_semantic-route** — Semantic routing based on stored knowledge.\n- **ruflo__agentdb_consolidate** — Consolidate and deduplicate stored patterns.\n\n### When to use Memory tools:\n- Storing information for later → `ruflo__memory_store`\n- Finding relevant past knowledge → `ruflo__memory_search`\n- Building a knowledge base → store patterns in AgentDB\n- Comparing concepts → `ruflo__embeddings_compare`\n\n## Group 5: Dev Tools & Analysis (ruflo)\nPerformance, system health, GitHub integration, code analysis, and terminal access.\n\n### System & Performance:\n- **ruflo__system_status** — System health overview.\n- **ruflo__system_metrics** — Detailed performance metrics.\n- **ruflo__performance_report** — Generate performance report.\n- **ruflo__performance_bottleneck** — Identify performance bottlenecks.\n- **ruflo__performance_benchmark** — Run benchmarks.\n- **ruflo__performance_optimize** — Get optimization recommendations.\n\n### Code Analysis:\n- **ruflo__analyze_diff** — Analyze a code diff.\n- **ruflo__analyze_diff-risk** — Assess risk level of changes.\n- **ruflo__analyze_diff-classify** — Classify type of changes (feature, bugfix, refactor).\n- **ruflo__analyze_diff-reviewers** — Suggest code reviewers.\n- **ruflo__analyze_file-risk** — Assess risk of a specific file.\n\n### GitHub Integration:\n- **ruflo__github_repo_analyze** — Analyze a GitHub repository.\n- **ruflo__github_pr_manage** — Manage pull requests.\n- **ruflo__github_issue_track** — Track and manage issues.\n- **ruflo__github_workflow** — Manage GitHub Actions workflows.\n- **ruflo__github_metrics** — Repository metrics and insights.\n\n### Terminal:\n- **ruflo__terminal_create** — Create a terminal session.\n- **ruflo__terminal_execute** — Execute a command. `{\"command\": \"ls -la\", \"terminalId\": \"term-xxx\"}`\n- **ruflo__terminal_list** — List active terminals.\n- **ruflo__terminal_history** — View command history.\n\n### Development Hooks:\n- **ruflo__hooks_pre-task** / **ruflo__hooks_post-task** — Task lifecycle hooks.\n- **ruflo__hooks_pre-edit** / **ruflo__hooks_post-edit** — File edit hooks.\n- **ruflo__hooks_session-start** / **ruflo__hooks_session-end** — Session lifecycle.\n- **ruflo__hooks_worker-dispatch** — Dispatch background workers.\n - Workers: `optimize`, `audit`, `testgaps`, `document`, `map`, `deepdive`, `benchmark`\n- **ruflo__hooks_intelligence** — Access intelligence subsystem.\n- **ruflo__hooks_model-route** — Route to optimal AI model for a task.\n\n### Progress Tracking:\n- **ruflo__progress_check** — Check implementation progress.\n- **ruflo__progress_summary** — Summarize overall progress.\n- **ruflo__progress_watch** — Monitor progress in real-time.\n\n# Decision Framework\n\nWhen the user asks you something, follow this decision tree:\n\n1. **Knowledge question** (\"how do I...\", \"what is...\", \"explain...\") → `search` first, then `web_research` if not found locally\n2. **Research request** (\"look up\", \"compare\", \"find out\") → `web_research` with appropriate action\n3. **Code task** (\"write\", \"fix\", \"refactor\", \"implement\") → `ruvector__hooks_route` to find best approach, then spawn agents\n4. **Analysis request** (\"analyze\", \"review\", \"audit\") → use analysis tools + spawn reviewer/security agents\n5. **Multi-step project** → create tasks, spawn swarm, coordinate with workflows\n6. **Memory/recall** (\"remember\", \"save\", \"what did we...\") → memory_store/retrieve/search\n7. **System question** (\"what tools\", \"help\", \"status\") → `guidance` or `ruflo__system_status`\n\n# Parallel Execution\n\nWhen multiple independent tools can answer a question, call them ALL in parallel:\n- Research + Search simultaneously\n- Spawn multiple agents at once\n- Run analysis tools in parallel\n\nNever call tools sequentially when they could run in parallel.\n\n# Response Rules\n\n1. **Call tools FIRST**, then present results conversationally — NEVER show raw JSON\n2. Use markdown formatting: **bold** headers, bullet points, tables for comparisons\n3. Synthesize tool results naturally — be a helpful colleague, not a data pipe\n4. Cite sources when available\n5. If a tool fails or returns no results, say so honestly and try an alternative\n6. For complex tasks, outline your plan before executing\n7. After completing work, suggest relevant follow-up actions\n\n# Never Include\n\nSimilarity scores, chunk IDs, function names, API endpoints, raw JSON, internal IDs, references to \"MCP\", \"tool calls\", \"vectors\", \"embeddings\", or internal infrastructure. Present results as a knowledgeable assistant would."
|
|
76
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
FROM node:20-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
|
|
5
|
+
COPY package.json ./
|
|
6
|
+
RUN npm install --production
|
|
7
|
+
|
|
8
|
+
# Pre-install MCP backends for faster startup (avoids npx download on first call)
|
|
9
|
+
# Each installed separately so one failure doesn't block others
|
|
10
|
+
RUN npm install -g ruvector || true
|
|
11
|
+
RUN npm install -g ruflo || true
|
|
12
|
+
RUN npm install -g agentic-flow@alpha || true
|
|
13
|
+
RUN npm install -g gemini-mcp-server || true
|
|
14
|
+
RUN npm install -g @openai/codex || true
|
|
15
|
+
|
|
16
|
+
COPY index.js ./
|
|
17
|
+
COPY mcp-stdio-kernel.js ./
|
|
18
|
+
|
|
19
|
+
# Create writable directories for MCP backends (ruflo, ruvector, agentic-flow)
|
|
20
|
+
# These tools write state/tasks/memory to the working directory at runtime
|
|
21
|
+
RUN mkdir -p /app/.claude-flow/tasks /app/.claude-flow/memory /app/.claude-flow/sessions \
|
|
22
|
+
/app/.claude-flow/agents /app/.claude-flow/config /app/.claude-flow/data \
|
|
23
|
+
/app/.claude-flow/logs /app/.claude-flow/swarm \
|
|
24
|
+
&& chown -R node:node /app/.claude-flow
|
|
25
|
+
|
|
26
|
+
USER node
|
|
27
|
+
|
|
28
|
+
EXPOSE 3001
|
|
29
|
+
|
|
30
|
+
ENV PORT=3001
|
|
31
|
+
# Default-on tool groups
|
|
32
|
+
ENV MCP_GROUP_INTELLIGENCE=true
|
|
33
|
+
ENV MCP_GROUP_AGENTS=true
|
|
34
|
+
ENV MCP_GROUP_MEMORY=true
|
|
35
|
+
ENV MCP_GROUP_DEVTOOLS=true
|
|
36
|
+
# Opt-in tool groups
|
|
37
|
+
ENV MCP_GROUP_SECURITY=false
|
|
38
|
+
ENV MCP_GROUP_BROWSER=false
|
|
39
|
+
ENV MCP_GROUP_NEURAL=false
|
|
40
|
+
ENV MCP_GROUP_AGENTIC_FLOW=false
|
|
41
|
+
ENV MCP_GROUP_CLAUDE_CODE=false
|
|
42
|
+
ENV MCP_GROUP_GEMINI=false
|
|
43
|
+
ENV MCP_GROUP_CODEX=false
|
|
44
|
+
|
|
45
|
+
CMD ["node", "index.js"]
|