ruflo 3.10.46 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +412 -412
- package/bin/ruflo.js +77 -77
- package/package.json +118 -113
- 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 +45 -45
- package/src/mcp-bridge/index.js +1692 -1692
- 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/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/.claude-flow/daemon-state.json +135 -0
- package/src/ruvocal/.claude-flow/data/pending-insights.jsonl +0 -0
- package/src/ruvocal/.claude-flow/data/ranked-context.json +5 -0
- package/src/ruvocal/.claude-flow/logs/daemon.log +31 -0
- package/src/ruvocal/.claude-flow/logs/headless/audit_1777949411822_juxau0_prompt.log +989 -0
- package/src/ruvocal/.claude-flow/logs/headless/audit_1777949411822_juxau0_result.log +67 -0
- package/src/ruvocal/.claude-flow/logs/headless/audit_1777950042278_jvj5xq_prompt.log +989 -0
- package/src/ruvocal/.claude-flow/logs/headless/audit_1777950042278_jvj5xq_result.log +93 -0
- package/src/ruvocal/.claude-flow/logs/headless/optimize_1777949531823_yt5yc2_prompt.log +1498 -0
- package/src/ruvocal/.claude-flow/logs/headless/optimize_1777949531823_yt5yc2_result.log +93 -0
- package/src/ruvocal/.claude-flow/logs/headless/testgaps_1777949771821_elw1j4_prompt.log +1498 -0
- package/src/ruvocal/.claude-flow/logs/headless/testgaps_1777949771821_elw1j4_result.log +100 -0
- package/src/ruvocal/.claude-flow/metrics/codebase-map.json +11 -0
- package/src/ruvocal/.claude-flow/metrics/consolidation.json +6 -0
- package/src/ruvocal/.claude-flow/neural/stats.json +6 -0
- package/src/ruvocal/.claude-flow/sessions/current.json +13 -0
- 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/.swarm/attestation.db +0 -0
- package/src/ruvocal/.swarm/hnsw.index +0 -0
- package/src/ruvocal/.swarm/hnsw.metadata.json +1 -0
- package/src/ruvocal/.swarm/memory.db +0 -0
- package/src/ruvocal/.swarm/schema.sql +305 -0
- 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 +45 -45
- package/src/ruvocal/mcp-bridge/cloudbuild.yaml +49 -49
- package/src/ruvocal/mcp-bridge/index.js +1902 -1902
- 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 +262 -262
- package/src/ruvocal/src/lib/utils/messageUpdates.ts +324 -324
- 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 +586 -586
- 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
package/bin/ruflo.js
CHANGED
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// Ruflo CLI - thin wrapper around @claude-flow/cli with ruflo branding
|
|
3
|
-
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
4
|
-
import { dirname, resolve, join } from 'node:path';
|
|
5
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
6
|
-
|
|
7
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
-
|
|
9
|
-
// #2256 fast path: --version / -V must NOT trigger heavy imports (the
|
|
10
|
-
// downstream @claude-flow/cli dist eagerly loads ruvector + a 23 MB ONNX
|
|
11
|
-
// model on cold cache, blocking 60+ s and causing SIGTERM under common
|
|
12
|
-
// timeout windows: npx default, MCP stdio 30s window). Resolve version
|
|
13
|
-
// from this wrapper's own package.json and exit before any heavy import.
|
|
14
|
-
// (bin/cli.js has the same guard for the direct path; needed here too
|
|
15
|
-
// because the wrapper imports dist/src/index.js, bypassing bin/cli.js.)
|
|
16
|
-
{
|
|
17
|
-
const _argv = process.argv.slice(2);
|
|
18
|
-
if (_argv.length === 1 && (_argv[0] === '--version' || _argv[0] === '-V')) {
|
|
19
|
-
try {
|
|
20
|
-
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
21
|
-
process.stdout.write(`ruflo v${pkg.version || '0.0.0'}\n`);
|
|
22
|
-
} catch {
|
|
23
|
-
process.stdout.write('ruflo v0.0.0\n');
|
|
24
|
-
}
|
|
25
|
-
process.exit(0);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Walk up from ruflo/bin/ to find @claude-flow/cli in node_modules
|
|
30
|
-
function findCliPath() {
|
|
31
|
-
let dir = resolve(__dirname, '..');
|
|
32
|
-
for (let i = 0; i < 10; i++) {
|
|
33
|
-
const candidate = join(dir, 'node_modules', '@claude-flow', 'cli', 'bin', 'cli.js');
|
|
34
|
-
if (existsSync(candidate)) return dir;
|
|
35
|
-
const parent = dirname(dir);
|
|
36
|
-
if (parent === dir) break;
|
|
37
|
-
dir = parent;
|
|
38
|
-
}
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Convert path to file:// URL for cross-platform ESM import (Windows requires this)
|
|
43
|
-
function toImportURL(filePath) {
|
|
44
|
-
return pathToFileURL(filePath).href;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const pkgDir = findCliPath();
|
|
48
|
-
const cliBase = pkgDir
|
|
49
|
-
? join(pkgDir, 'node_modules', '@claude-flow', 'cli')
|
|
50
|
-
: resolve(__dirname, '../../v3/@claude-flow/cli');
|
|
51
|
-
|
|
52
|
-
// MCP mode: delegate to cli.js directly (branding irrelevant for JSON-RPC)
|
|
53
|
-
const cliArgs = process.argv.slice(2);
|
|
54
|
-
const isExplicitMCP = cliArgs.length >= 1 && cliArgs[0] === 'mcp' && (cliArgs.length === 1 || cliArgs[1] === 'start');
|
|
55
|
-
const isMCPMode = !process.stdin.isTTY && (process.argv.length === 2 || isExplicitMCP);
|
|
56
|
-
|
|
57
|
-
if (isMCPMode) {
|
|
58
|
-
await import(toImportURL(join(cliBase, 'bin', 'cli.js')));
|
|
59
|
-
} else {
|
|
60
|
-
// CLI mode: use ruflo branding
|
|
61
|
-
const { CLI } = await import(toImportURL(join(cliBase, 'dist', 'src', 'index.js')));
|
|
62
|
-
const cli = new CLI({
|
|
63
|
-
name: 'ruflo',
|
|
64
|
-
description: 'Ruflo - AI Agent Orchestration Platform',
|
|
65
|
-
});
|
|
66
|
-
cli.run()
|
|
67
|
-
.then(() => {
|
|
68
|
-
// #1641/#1653: Exit cleanly after one-shot commands.
|
|
69
|
-
// HNSW VectorDb, sql.js WASM, and ONNX worker threads keep the
|
|
70
|
-
// event loop alive after the command handler returns.
|
|
71
|
-
process.exit(0);
|
|
72
|
-
})
|
|
73
|
-
.catch((error) => {
|
|
74
|
-
console.error('Fatal error:', error.message);
|
|
75
|
-
process.exit(1);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Ruflo CLI - thin wrapper around @claude-flow/cli with ruflo branding
|
|
3
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
4
|
+
import { dirname, resolve, join } from 'node:path';
|
|
5
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
6
|
+
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
|
|
9
|
+
// #2256 fast path: --version / -V must NOT trigger heavy imports (the
|
|
10
|
+
// downstream @claude-flow/cli dist eagerly loads ruvector + a 23 MB ONNX
|
|
11
|
+
// model on cold cache, blocking 60+ s and causing SIGTERM under common
|
|
12
|
+
// timeout windows: npx default, MCP stdio 30s window). Resolve version
|
|
13
|
+
// from this wrapper's own package.json and exit before any heavy import.
|
|
14
|
+
// (bin/cli.js has the same guard for the direct path; needed here too
|
|
15
|
+
// because the wrapper imports dist/src/index.js, bypassing bin/cli.js.)
|
|
16
|
+
{
|
|
17
|
+
const _argv = process.argv.slice(2);
|
|
18
|
+
if (_argv.length === 1 && (_argv[0] === '--version' || _argv[0] === '-V')) {
|
|
19
|
+
try {
|
|
20
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
21
|
+
process.stdout.write(`ruflo v${pkg.version || '0.0.0'}\n`);
|
|
22
|
+
} catch {
|
|
23
|
+
process.stdout.write('ruflo v0.0.0\n');
|
|
24
|
+
}
|
|
25
|
+
process.exit(0);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Walk up from ruflo/bin/ to find @claude-flow/cli in node_modules
|
|
30
|
+
function findCliPath() {
|
|
31
|
+
let dir = resolve(__dirname, '..');
|
|
32
|
+
for (let i = 0; i < 10; i++) {
|
|
33
|
+
const candidate = join(dir, 'node_modules', '@claude-flow', 'cli', 'bin', 'cli.js');
|
|
34
|
+
if (existsSync(candidate)) return dir;
|
|
35
|
+
const parent = dirname(dir);
|
|
36
|
+
if (parent === dir) break;
|
|
37
|
+
dir = parent;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Convert path to file:// URL for cross-platform ESM import (Windows requires this)
|
|
43
|
+
function toImportURL(filePath) {
|
|
44
|
+
return pathToFileURL(filePath).href;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const pkgDir = findCliPath();
|
|
48
|
+
const cliBase = pkgDir
|
|
49
|
+
? join(pkgDir, 'node_modules', '@claude-flow', 'cli')
|
|
50
|
+
: resolve(__dirname, '../../v3/@claude-flow/cli');
|
|
51
|
+
|
|
52
|
+
// MCP mode: delegate to cli.js directly (branding irrelevant for JSON-RPC)
|
|
53
|
+
const cliArgs = process.argv.slice(2);
|
|
54
|
+
const isExplicitMCP = cliArgs.length >= 1 && cliArgs[0] === 'mcp' && (cliArgs.length === 1 || cliArgs[1] === 'start');
|
|
55
|
+
const isMCPMode = !process.stdin.isTTY && (process.argv.length === 2 || isExplicitMCP);
|
|
56
|
+
|
|
57
|
+
if (isMCPMode) {
|
|
58
|
+
await import(toImportURL(join(cliBase, 'bin', 'cli.js')));
|
|
59
|
+
} else {
|
|
60
|
+
// CLI mode: use ruflo branding
|
|
61
|
+
const { CLI } = await import(toImportURL(join(cliBase, 'dist', 'src', 'index.js')));
|
|
62
|
+
const cli = new CLI({
|
|
63
|
+
name: 'ruflo',
|
|
64
|
+
description: 'Ruflo - AI Agent Orchestration Platform',
|
|
65
|
+
});
|
|
66
|
+
cli.run()
|
|
67
|
+
.then(() => {
|
|
68
|
+
// #1641/#1653: Exit cleanly after one-shot commands.
|
|
69
|
+
// HNSW VectorDb, sql.js WASM, and ONNX worker threads keep the
|
|
70
|
+
// event loop alive after the command handler returns.
|
|
71
|
+
process.exit(0);
|
|
72
|
+
})
|
|
73
|
+
.catch((error) => {
|
|
74
|
+
console.error('Fatal error:', error.message);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
});
|
|
77
|
+
}
|
package/package.json
CHANGED
|
@@ -1,113 +1,118 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ruflo",
|
|
3
|
-
"version": "3.
|
|
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
|
-
"main": "bin/ruflo.js",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"bin": {
|
|
8
|
-
"ruflo": "./bin/ruflo.js"
|
|
9
|
-
},
|
|
10
|
-
"homepage": "https://github.com/ruvnet/claude-flow#readme",
|
|
11
|
-
"bugs": {
|
|
12
|
-
"url": "https://github.com/ruvnet/claude-flow/issues",
|
|
13
|
-
"email": "support@ruv.io"
|
|
14
|
-
},
|
|
15
|
-
"funding": {
|
|
16
|
-
"type": "github",
|
|
17
|
-
"url": "https://github.com/sponsors/ruvnet"
|
|
18
|
-
},
|
|
19
|
-
"files": [
|
|
20
|
-
"bin/**",
|
|
21
|
-
"src/**",
|
|
22
|
-
"dist/**",
|
|
23
|
-
"README.md",
|
|
24
|
-
"LICENSE"
|
|
25
|
-
],
|
|
26
|
-
"scripts": {
|
|
27
|
-
"prepublishOnly": "cp ../README.md ./README.md",
|
|
28
|
-
"dev": "node src/mcp-bridge/index.js",
|
|
29
|
-
"dev:bridge": "node --watch src/mcp-bridge/index.js",
|
|
30
|
-
"dev:test": "node src/mcp-bridge/test-harness.js",
|
|
31
|
-
"start": "node src/mcp-bridge/index.js",
|
|
32
|
-
"docker:up": "docker compose up -d",
|
|
33
|
-
"docker:down": "docker compose down",
|
|
34
|
-
"docker:build": "docker compose build",
|
|
35
|
-
"docker:logs": "docker compose logs -f",
|
|
36
|
-
"install:bridge": "cd src/mcp-bridge && npm install",
|
|
37
|
-
"generate:config": "node src/scripts/generate-config.js",
|
|
38
|
-
"generate:welcome": "node src/scripts/generate-welcome.js",
|
|
39
|
-
"deploy": "bash src/scripts/deploy.sh",
|
|
40
|
-
"package:rvf": "bash src/scripts/package-rvf.sh"
|
|
41
|
-
},
|
|
42
|
-
"dependencies": {
|
|
43
|
-
"@claude-flow/cli": "^3.10.3"
|
|
44
|
-
},
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"@
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"@opentelemetry/
|
|
68
|
-
"@opentelemetry/
|
|
69
|
-
"@opentelemetry/
|
|
70
|
-
"@opentelemetry/
|
|
71
|
-
"@opentelemetry/
|
|
72
|
-
"@opentelemetry/
|
|
73
|
-
"@opentelemetry/otlp-
|
|
74
|
-
"
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
"
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
"
|
|
83
|
-
},
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"claude-flow",
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
|
|
108
|
-
"
|
|
109
|
-
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
}
|
|
113
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "ruflo",
|
|
3
|
+
"version": "3.12.0",
|
|
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
|
+
"main": "bin/ruflo.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"ruflo": "./bin/ruflo.js"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/ruvnet/claude-flow#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/ruvnet/claude-flow/issues",
|
|
13
|
+
"email": "support@ruv.io"
|
|
14
|
+
},
|
|
15
|
+
"funding": {
|
|
16
|
+
"type": "github",
|
|
17
|
+
"url": "https://github.com/sponsors/ruvnet"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"bin/**",
|
|
21
|
+
"src/**",
|
|
22
|
+
"dist/**",
|
|
23
|
+
"README.md",
|
|
24
|
+
"LICENSE"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"prepublishOnly": "cp ../README.md ./README.md",
|
|
28
|
+
"dev": "node src/mcp-bridge/index.js",
|
|
29
|
+
"dev:bridge": "node --watch src/mcp-bridge/index.js",
|
|
30
|
+
"dev:test": "node src/mcp-bridge/test-harness.js",
|
|
31
|
+
"start": "node src/mcp-bridge/index.js",
|
|
32
|
+
"docker:up": "docker compose up -d",
|
|
33
|
+
"docker:down": "docker compose down",
|
|
34
|
+
"docker:build": "docker compose build",
|
|
35
|
+
"docker:logs": "docker compose logs -f",
|
|
36
|
+
"install:bridge": "cd src/mcp-bridge && npm install",
|
|
37
|
+
"generate:config": "node src/scripts/generate-config.js",
|
|
38
|
+
"generate:welcome": "node src/scripts/generate-welcome.js",
|
|
39
|
+
"deploy": "bash src/scripts/deploy.sh",
|
|
40
|
+
"package:rvf": "bash src/scripts/package-rvf.sh"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@claude-flow/cli": "^3.10.3"
|
|
44
|
+
},
|
|
45
|
+
"optionalDependencies": {
|
|
46
|
+
"metaharness": "~0.1.11",
|
|
47
|
+
"@metaharness/router": "~0.3.2",
|
|
48
|
+
"@metaharness/kernel": "~0.1.0"
|
|
49
|
+
},
|
|
50
|
+
"overrides": {
|
|
51
|
+
"ruvector": "^0.2.27",
|
|
52
|
+
"better-sqlite3": ">=12.8.0",
|
|
53
|
+
"@ruvector/rvf-wasm": "0.1.5",
|
|
54
|
+
"@hono/node-server": ">=1.19.10",
|
|
55
|
+
"flatted": ">=3.4.0",
|
|
56
|
+
"tar": ">=7.5.11",
|
|
57
|
+
"picomatch": ">=4.0.3",
|
|
58
|
+
"path-to-regexp": ">=8.2.1",
|
|
59
|
+
"undici": ">=7.18.0",
|
|
60
|
+
"minimatch": ">=10.0.0",
|
|
61
|
+
"@isaacs/brace-expansion": ">=5.0.1",
|
|
62
|
+
"cacache": ">=20.0.0",
|
|
63
|
+
"make-fetch-happen": ">=15.0.0",
|
|
64
|
+
"express-rate-limit": ">=8.4.1",
|
|
65
|
+
"protobufjs": ">=7.5.6",
|
|
66
|
+
"uuid": ">=14.0.0",
|
|
67
|
+
"@opentelemetry/core": "1.25.1",
|
|
68
|
+
"@opentelemetry/resources": "1.25.1",
|
|
69
|
+
"@opentelemetry/sdk-trace-base": "1.25.1",
|
|
70
|
+
"@opentelemetry/sdk-node": ">=0.218.0",
|
|
71
|
+
"@opentelemetry/auto-instrumentations-node": ">=0.75.0",
|
|
72
|
+
"@opentelemetry/exporter-prometheus": ">=0.217.0",
|
|
73
|
+
"@opentelemetry/exporter-trace-otlp-grpc": "0.52.1",
|
|
74
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.52.1",
|
|
75
|
+
"@opentelemetry/exporter-trace-otlp-proto": "0.52.1",
|
|
76
|
+
"@opentelemetry/otlp-exporter-base": "0.52.1",
|
|
77
|
+
"@opentelemetry/otlp-grpc-exporter-base": "0.52.1",
|
|
78
|
+
"@opentelemetry/otlp-transformer": "0.52.1",
|
|
79
|
+
"agentdb": ">=3.0.0-alpha.16"
|
|
80
|
+
},
|
|
81
|
+
"engines": {
|
|
82
|
+
"node": ">=20.0.0"
|
|
83
|
+
},
|
|
84
|
+
"repository": {
|
|
85
|
+
"type": "git",
|
|
86
|
+
"url": "https://github.com/ruvnet/claude-flow.git",
|
|
87
|
+
"directory": "ruflo"
|
|
88
|
+
},
|
|
89
|
+
"keywords": [
|
|
90
|
+
"ruflo",
|
|
91
|
+
"claude-flow",
|
|
92
|
+
"claude",
|
|
93
|
+
"claude-code",
|
|
94
|
+
"anthropic",
|
|
95
|
+
"ai",
|
|
96
|
+
"ai-agents",
|
|
97
|
+
"multi-agent",
|
|
98
|
+
"agent-orchestration",
|
|
99
|
+
"swarm-intelligence",
|
|
100
|
+
"swarm",
|
|
101
|
+
"mcp",
|
|
102
|
+
"model-context-protocol",
|
|
103
|
+
"cli",
|
|
104
|
+
"developer-tools",
|
|
105
|
+
"enterprise",
|
|
106
|
+
"self-learning"
|
|
107
|
+
],
|
|
108
|
+
"author": {
|
|
109
|
+
"name": "RuvNet",
|
|
110
|
+
"email": "ruv@ruv.io",
|
|
111
|
+
"url": "https://ruv.io"
|
|
112
|
+
},
|
|
113
|
+
"license": "MIT",
|
|
114
|
+
"publishConfig": {
|
|
115
|
+
"access": "public",
|
|
116
|
+
"tag": "latest"
|
|
117
|
+
}
|
|
118
|
+
}
|
package/src/chat-ui/Dockerfile
CHANGED
|
@@ -1,25 +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
|
|
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
|
|
@@ -1,28 +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"
|
|
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"
|