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.
Files changed (498) hide show
  1. package/README.md +412 -412
  2. package/bin/ruflo.js +77 -77
  3. package/package.json +118 -113
  4. package/src/chat-ui/Dockerfile +25 -25
  5. package/src/chat-ui/patch-mcp-url-safety.sh +28 -28
  6. package/src/config/config.example.json +76 -76
  7. package/src/mcp-bridge/Dockerfile +45 -45
  8. package/src/mcp-bridge/index.js +1692 -1692
  9. package/src/mcp-bridge/mcp-stdio-kernel.js +159 -159
  10. package/src/mcp-bridge/package.json +17 -17
  11. package/src/mcp-bridge/test-harness.js +470 -470
  12. package/src/nginx/Dockerfile +10 -10
  13. package/src/nginx/nginx.conf +67 -67
  14. package/src/nginx/static/favicon-dark.svg +4 -4
  15. package/src/nginx/static/favicon.svg +4 -4
  16. package/src/nginx/static/icon.svg +5 -5
  17. package/src/nginx/static/logo.svg +9 -9
  18. package/src/nginx/static/manifest.json +22 -22
  19. package/src/nginx/static/welcome.js +184 -184
  20. package/src/ruvocal/.claude/skills/add-model-descriptions/SKILL.md +73 -73
  21. package/src/ruvocal/.claude-flow/daemon-state.json +135 -0
  22. package/src/ruvocal/.claude-flow/data/pending-insights.jsonl +0 -0
  23. package/src/ruvocal/.claude-flow/data/ranked-context.json +5 -0
  24. package/src/ruvocal/.claude-flow/logs/daemon.log +31 -0
  25. package/src/ruvocal/.claude-flow/logs/headless/audit_1777949411822_juxau0_prompt.log +989 -0
  26. package/src/ruvocal/.claude-flow/logs/headless/audit_1777949411822_juxau0_result.log +67 -0
  27. package/src/ruvocal/.claude-flow/logs/headless/audit_1777950042278_jvj5xq_prompt.log +989 -0
  28. package/src/ruvocal/.claude-flow/logs/headless/audit_1777950042278_jvj5xq_result.log +93 -0
  29. package/src/ruvocal/.claude-flow/logs/headless/optimize_1777949531823_yt5yc2_prompt.log +1498 -0
  30. package/src/ruvocal/.claude-flow/logs/headless/optimize_1777949531823_yt5yc2_result.log +93 -0
  31. package/src/ruvocal/.claude-flow/logs/headless/testgaps_1777949771821_elw1j4_prompt.log +1498 -0
  32. package/src/ruvocal/.claude-flow/logs/headless/testgaps_1777949771821_elw1j4_result.log +100 -0
  33. package/src/ruvocal/.claude-flow/metrics/codebase-map.json +11 -0
  34. package/src/ruvocal/.claude-flow/metrics/consolidation.json +6 -0
  35. package/src/ruvocal/.claude-flow/neural/stats.json +6 -0
  36. package/src/ruvocal/.claude-flow/sessions/current.json +13 -0
  37. package/src/ruvocal/.devcontainer/Dockerfile +9 -9
  38. package/src/ruvocal/.devcontainer/devcontainer.json +36 -36
  39. package/src/ruvocal/.dockerignore +16 -16
  40. package/src/ruvocal/.eslintignore +13 -13
  41. package/src/ruvocal/.eslintrc.cjs +45 -45
  42. package/src/ruvocal/.gcloudignore +18 -18
  43. package/src/ruvocal/.github/ISSUE_TEMPLATE/bug-report--chat-ui-.md +43 -43
  44. package/src/ruvocal/.github/ISSUE_TEMPLATE/config-support.md +9 -9
  45. package/src/ruvocal/.github/ISSUE_TEMPLATE/feature-request--chat-ui-.md +17 -17
  46. package/src/ruvocal/.github/ISSUE_TEMPLATE/huggingchat.md +11 -11
  47. package/src/ruvocal/.github/release.yml +16 -16
  48. package/src/ruvocal/.github/workflows/build-docs.yml +18 -18
  49. package/src/ruvocal/.github/workflows/build-image.yml +142 -142
  50. package/src/ruvocal/.github/workflows/build-pr-docs.yml +20 -20
  51. package/src/ruvocal/.github/workflows/deploy-dev.yml +63 -63
  52. package/src/ruvocal/.github/workflows/deploy-prod.yml +78 -78
  53. package/src/ruvocal/.github/workflows/lint-and-test.yml +84 -84
  54. package/src/ruvocal/.github/workflows/slugify.yaml +72 -72
  55. package/src/ruvocal/.github/workflows/trufflehog.yml +17 -17
  56. package/src/ruvocal/.github/workflows/upload-pr-documentation.yml +16 -16
  57. package/src/ruvocal/.husky/lint-stage-config.js +4 -4
  58. package/src/ruvocal/.husky/pre-commit +2 -2
  59. package/src/ruvocal/.prettierignore +14 -14
  60. package/src/ruvocal/.prettierrc +7 -7
  61. package/src/ruvocal/.swarm/attestation.db +0 -0
  62. package/src/ruvocal/.swarm/hnsw.index +0 -0
  63. package/src/ruvocal/.swarm/hnsw.metadata.json +1 -0
  64. package/src/ruvocal/.swarm/memory.db +0 -0
  65. package/src/ruvocal/.swarm/schema.sql +305 -0
  66. package/src/ruvocal/CLAUDE.md +126 -126
  67. package/src/ruvocal/Dockerfile +96 -96
  68. package/src/ruvocal/LICENSE +202 -202
  69. package/src/ruvocal/PRIVACY.md +41 -41
  70. package/src/ruvocal/README.md +164 -164
  71. package/src/ruvocal/chart/Chart.yaml +5 -5
  72. package/src/ruvocal/chart/env/dev.yaml +260 -260
  73. package/src/ruvocal/chart/env/prod.yaml +273 -273
  74. package/src/ruvocal/chart/templates/_helpers.tpl +22 -22
  75. package/src/ruvocal/chart/templates/config.yaml +10 -10
  76. package/src/ruvocal/chart/templates/deployment.yaml +81 -81
  77. package/src/ruvocal/chart/templates/hpa.yaml +45 -45
  78. package/src/ruvocal/chart/templates/infisical.yaml +24 -24
  79. package/src/ruvocal/chart/templates/ingress-internal.yaml +32 -32
  80. package/src/ruvocal/chart/templates/ingress.yaml +32 -32
  81. package/src/ruvocal/chart/templates/network-policy.yaml +36 -36
  82. package/src/ruvocal/chart/templates/service-account.yaml +13 -13
  83. package/src/ruvocal/chart/templates/service-monitor.yaml +17 -17
  84. package/src/ruvocal/chart/templates/service.yaml +21 -21
  85. package/src/ruvocal/chart/values.yaml +73 -73
  86. package/src/ruvocal/cloudbuild.yaml +68 -68
  87. package/src/ruvocal/config/branding.env.example +19 -19
  88. package/src/ruvocal/docker-compose.yml +21 -21
  89. package/src/ruvocal/docs/adr/ADR-029-HUGGINGFACE-CHAT-UI-CLOUD-RUN.md +1236 -1236
  90. package/src/ruvocal/docs/adr/ADR-033-RUVECTOR-RUFLO-MCP-INTEGRATION.md +111 -111
  91. package/src/ruvocal/docs/adr/ADR-034-OPTIONAL-MCP-BACKENDS.md +117 -117
  92. package/src/ruvocal/docs/adr/ADR-035-MCP-TOOL-GROUPS.md +186 -186
  93. package/src/ruvocal/docs/adr/ADR-037-AUTOPILOT-CHAT-MODE.md +1500 -1500
  94. package/src/ruvocal/docs/adr/ADR-038-RUVOCAL-FORK.md +286 -286
  95. package/src/ruvocal/docs/source/_toctree.yml +30 -30
  96. package/src/ruvocal/docs/source/configuration/common-issues.md +38 -38
  97. package/src/ruvocal/docs/source/configuration/llm-router.md +105 -105
  98. package/src/ruvocal/docs/source/configuration/mcp-tools.md +84 -84
  99. package/src/ruvocal/docs/source/configuration/metrics.md +9 -9
  100. package/src/ruvocal/docs/source/configuration/open-id.md +57 -57
  101. package/src/ruvocal/docs/source/configuration/overview.md +89 -89
  102. package/src/ruvocal/docs/source/configuration/theming.md +20 -20
  103. package/src/ruvocal/docs/source/developing/architecture.md +48 -48
  104. package/src/ruvocal/docs/source/index.md +53 -53
  105. package/src/ruvocal/docs/source/installation/docker.md +43 -43
  106. package/src/ruvocal/docs/source/installation/helm.md +43 -43
  107. package/src/ruvocal/docs/source/installation/local.md +62 -62
  108. package/src/ruvocal/entrypoint.sh +18 -18
  109. package/src/ruvocal/mcp-bridge/Dockerfile +45 -45
  110. package/src/ruvocal/mcp-bridge/cloudbuild.yaml +49 -49
  111. package/src/ruvocal/mcp-bridge/index.js +1902 -1902
  112. package/src/ruvocal/mcp-bridge/mcp-stdio-kernel.js +159 -159
  113. package/src/ruvocal/mcp-bridge/package-lock.json +762 -762
  114. package/src/ruvocal/mcp-bridge/package.json +17 -17
  115. package/src/ruvocal/mcp-bridge/test-harness.js +470 -470
  116. package/src/ruvocal/package-lock.json +11741 -11741
  117. package/src/ruvocal/package.json +121 -121
  118. package/src/ruvocal/postcss.config.js +6 -6
  119. package/src/ruvocal/rvf.manifest.json +204 -204
  120. package/src/ruvocal/scripts/config.ts +64 -64
  121. package/src/ruvocal/scripts/generate-welcome.mjs +181 -181
  122. package/src/ruvocal/scripts/populate.ts +288 -288
  123. package/src/ruvocal/scripts/samples.txt +194 -194
  124. package/src/ruvocal/scripts/setups/vitest-setup-server.ts +44 -44
  125. package/src/ruvocal/scripts/updateLocalEnv.ts +48 -48
  126. package/src/ruvocal/src/ambient.d.ts +7 -7
  127. package/src/ruvocal/src/app.d.ts +29 -29
  128. package/src/ruvocal/src/app.html +53 -53
  129. package/src/ruvocal/src/hooks.server.ts +32 -32
  130. package/src/ruvocal/src/hooks.ts +6 -6
  131. package/src/ruvocal/src/lib/APIClient.ts +148 -148
  132. package/src/ruvocal/src/lib/actions/clickOutside.ts +18 -18
  133. package/src/ruvocal/src/lib/actions/snapScrollToBottom.ts +346 -346
  134. package/src/ruvocal/src/lib/buildPrompt.ts +33 -33
  135. package/src/ruvocal/src/lib/components/AnnouncementBanner.svelte +20 -20
  136. package/src/ruvocal/src/lib/components/BackgroundGenerationPoller.svelte +168 -168
  137. package/src/ruvocal/src/lib/components/CodeBlock.svelte +73 -73
  138. package/src/ruvocal/src/lib/components/CopyToClipBoardBtn.svelte +92 -92
  139. package/src/ruvocal/src/lib/components/DeleteConversationModal.svelte +75 -75
  140. package/src/ruvocal/src/lib/components/EditConversationModal.svelte +100 -100
  141. package/src/ruvocal/src/lib/components/ExpandNavigation.svelte +22 -22
  142. package/src/ruvocal/src/lib/components/FoundationBackground.svelte +242 -242
  143. package/src/ruvocal/src/lib/components/HoverTooltip.svelte +44 -44
  144. package/src/ruvocal/src/lib/components/HtmlPreviewModal.svelte +143 -143
  145. package/src/ruvocal/src/lib/components/InfiniteScroll.svelte +50 -50
  146. package/src/ruvocal/src/lib/components/MobileNav.svelte +300 -300
  147. package/src/ruvocal/src/lib/components/Modal.svelte +115 -115
  148. package/src/ruvocal/src/lib/components/ModelCardMetadata.svelte +71 -71
  149. package/src/ruvocal/src/lib/components/NavConversationItem.svelte +151 -151
  150. package/src/ruvocal/src/lib/components/NavMenu.svelte +313 -313
  151. package/src/ruvocal/src/lib/components/Pagination.svelte +97 -97
  152. package/src/ruvocal/src/lib/components/PaginationArrow.svelte +27 -27
  153. package/src/ruvocal/src/lib/components/Portal.svelte +24 -24
  154. package/src/ruvocal/src/lib/components/RetryBtn.svelte +18 -18
  155. package/src/ruvocal/src/lib/components/RuFloUniverse.svelte +185 -185
  156. package/src/ruvocal/src/lib/components/RufloHelpModal.svelte +411 -411
  157. package/src/ruvocal/src/lib/components/ScrollToBottomBtn.svelte +47 -47
  158. package/src/ruvocal/src/lib/components/ScrollToPreviousBtn.svelte +77 -77
  159. package/src/ruvocal/src/lib/components/ShareConversationModal.svelte +182 -182
  160. package/src/ruvocal/src/lib/components/StopGeneratingBtn.svelte +69 -69
  161. package/src/ruvocal/src/lib/components/SubscribeModal.svelte +87 -87
  162. package/src/ruvocal/src/lib/components/Switch.svelte +36 -36
  163. package/src/ruvocal/src/lib/components/SystemPromptModal.svelte +44 -44
  164. package/src/ruvocal/src/lib/components/Toast.svelte +27 -27
  165. package/src/ruvocal/src/lib/components/Tooltip.svelte +30 -30
  166. package/src/ruvocal/src/lib/components/WelcomeModal.svelte +46 -46
  167. package/src/ruvocal/src/lib/components/chat/Alternatives.svelte +77 -77
  168. package/src/ruvocal/src/lib/components/chat/BlockWrapper.svelte +72 -72
  169. package/src/ruvocal/src/lib/components/chat/ChatInput.svelte +490 -490
  170. package/src/ruvocal/src/lib/components/chat/ChatIntroduction.svelte +123 -123
  171. package/src/ruvocal/src/lib/components/chat/ChatMessage.svelte +548 -548
  172. package/src/ruvocal/src/lib/components/chat/ChatWindow.svelte +1057 -1057
  173. package/src/ruvocal/src/lib/components/chat/FileDropzone.svelte +92 -92
  174. package/src/ruvocal/src/lib/components/chat/ImageLightbox.svelte +66 -66
  175. package/src/ruvocal/src/lib/components/chat/MarkdownBlock.svelte +23 -23
  176. package/src/ruvocal/src/lib/components/chat/MarkdownRenderer.svelte +69 -69
  177. package/src/ruvocal/src/lib/components/chat/MarkdownRenderer.svelte.test.ts +58 -58
  178. package/src/ruvocal/src/lib/components/chat/MessageAvatar.svelte +103 -103
  179. package/src/ruvocal/src/lib/components/chat/ModelSwitch.svelte +64 -64
  180. package/src/ruvocal/src/lib/components/chat/OpenReasoningResults.svelte +81 -81
  181. package/src/ruvocal/src/lib/components/chat/TaskGroup.svelte +88 -88
  182. package/src/ruvocal/src/lib/components/chat/ToolUpdate.svelte +273 -273
  183. package/src/ruvocal/src/lib/components/chat/UploadedFile.svelte +253 -253
  184. package/src/ruvocal/src/lib/components/chat/UrlFetchModal.svelte +203 -203
  185. package/src/ruvocal/src/lib/components/chat/VoiceRecorder.svelte +214 -214
  186. package/src/ruvocal/src/lib/components/icons/IconBurger.svelte +20 -20
  187. package/src/ruvocal/src/lib/components/icons/IconCheap.svelte +20 -20
  188. package/src/ruvocal/src/lib/components/icons/IconChevron.svelte +24 -24
  189. package/src/ruvocal/src/lib/components/icons/IconDazzled.svelte +40 -40
  190. package/src/ruvocal/src/lib/components/icons/IconFast.svelte +20 -20
  191. package/src/ruvocal/src/lib/components/icons/IconLoading.svelte +22 -22
  192. package/src/ruvocal/src/lib/components/icons/IconMCP.svelte +28 -28
  193. package/src/ruvocal/src/lib/components/icons/IconMoon.svelte +21 -21
  194. package/src/ruvocal/src/lib/components/icons/IconNew.svelte +20 -20
  195. package/src/ruvocal/src/lib/components/icons/IconOmni.svelte +90 -90
  196. package/src/ruvocal/src/lib/components/icons/IconPaperclip.svelte +24 -24
  197. package/src/ruvocal/src/lib/components/icons/IconPro.svelte +37 -37
  198. package/src/ruvocal/src/lib/components/icons/IconShare.svelte +21 -21
  199. package/src/ruvocal/src/lib/components/icons/IconSun.svelte +93 -93
  200. package/src/ruvocal/src/lib/components/icons/Logo.svelte +68 -68
  201. package/src/ruvocal/src/lib/components/icons/LogoHuggingFaceBorderless.svelte +54 -54
  202. package/src/ruvocal/src/lib/components/mcp/AddServerForm.svelte +250 -250
  203. package/src/ruvocal/src/lib/components/mcp/MCPServerManager.svelte +185 -185
  204. package/src/ruvocal/src/lib/components/mcp/ServerCard.svelte +203 -203
  205. package/src/ruvocal/src/lib/components/players/AudioPlayer.svelte +82 -82
  206. package/src/ruvocal/src/lib/components/voice/AudioWaveform.svelte +96 -96
  207. package/src/ruvocal/src/lib/components/wasm/GalleryPanel.svelte +357 -357
  208. package/src/ruvocal/src/lib/constants/mcpExamples.ts +114 -114
  209. package/src/ruvocal/src/lib/constants/mime.ts +11 -11
  210. package/src/ruvocal/src/lib/constants/pagination.ts +1 -1
  211. package/src/ruvocal/src/lib/constants/publicSepToken.ts +1 -1
  212. package/src/ruvocal/src/lib/constants/routerExamples.ts +133 -133
  213. package/src/ruvocal/src/lib/constants/rvagentPresets.ts +206 -206
  214. package/src/ruvocal/src/lib/createShareLink.ts +27 -27
  215. package/src/ruvocal/src/lib/jobs/refresh-conversation-stats.ts +297 -297
  216. package/src/ruvocal/src/lib/migrations/lock.ts +56 -56
  217. package/src/ruvocal/src/lib/migrations/migrations.spec.ts +74 -74
  218. package/src/ruvocal/src/lib/migrations/migrations.ts +109 -109
  219. package/src/ruvocal/src/lib/migrations/routines/01-update-search-assistants.ts +50 -50
  220. package/src/ruvocal/src/lib/migrations/routines/02-update-assistants-models.ts +48 -48
  221. package/src/ruvocal/src/lib/migrations/routines/04-update-message-updates.ts +151 -151
  222. package/src/ruvocal/src/lib/migrations/routines/05-update-message-files.ts +56 -56
  223. package/src/ruvocal/src/lib/migrations/routines/06-trim-message-updates.ts +56 -56
  224. package/src/ruvocal/src/lib/migrations/routines/08-update-featured-to-review.ts +32 -32
  225. package/src/ruvocal/src/lib/migrations/routines/09-delete-empty-conversations.spec.ts +214 -214
  226. package/src/ruvocal/src/lib/migrations/routines/09-delete-empty-conversations.ts +88 -88
  227. package/src/ruvocal/src/lib/migrations/routines/10-update-reports-assistantid.ts +29 -29
  228. package/src/ruvocal/src/lib/migrations/routines/index.ts +15 -15
  229. package/src/ruvocal/src/lib/server/__tests__/conversation-stop-generating.spec.ts +103 -103
  230. package/src/ruvocal/src/lib/server/abortRegistry.ts +57 -57
  231. package/src/ruvocal/src/lib/server/abortedGenerations.ts +43 -43
  232. package/src/ruvocal/src/lib/server/adminToken.ts +62 -62
  233. package/src/ruvocal/src/lib/server/api/__tests__/conversations-id.spec.ts +296 -296
  234. package/src/ruvocal/src/lib/server/api/__tests__/conversations-message.spec.ts +216 -216
  235. package/src/ruvocal/src/lib/server/api/__tests__/conversations.spec.ts +235 -235
  236. package/src/ruvocal/src/lib/server/api/__tests__/misc.spec.ts +72 -72
  237. package/src/ruvocal/src/lib/server/api/__tests__/testHelpers.ts +86 -86
  238. package/src/ruvocal/src/lib/server/api/__tests__/user-reports.spec.ts +78 -78
  239. package/src/ruvocal/src/lib/server/api/__tests__/user.spec.ts +239 -239
  240. package/src/ruvocal/src/lib/server/api/types.ts +37 -37
  241. package/src/ruvocal/src/lib/server/api/utils/requireAuth.ts +22 -22
  242. package/src/ruvocal/src/lib/server/api/utils/resolveConversation.ts +69 -69
  243. package/src/ruvocal/src/lib/server/api/utils/resolveModel.ts +27 -27
  244. package/src/ruvocal/src/lib/server/api/utils/superjsonResponse.ts +15 -15
  245. package/src/ruvocal/src/lib/server/apiToken.ts +11 -11
  246. package/src/ruvocal/src/lib/server/auth.ts +554 -554
  247. package/src/ruvocal/src/lib/server/config.ts +187 -187
  248. package/src/ruvocal/src/lib/server/conversation.ts +83 -83
  249. package/src/ruvocal/src/lib/server/database/__tests__/rvf.spec.ts +709 -709
  250. package/src/ruvocal/src/lib/server/database/postgres.ts +700 -700
  251. package/src/ruvocal/src/lib/server/database/rvf.ts +1078 -1078
  252. package/src/ruvocal/src/lib/server/database.ts +145 -145
  253. package/src/ruvocal/src/lib/server/endpoints/document.ts +68 -68
  254. package/src/ruvocal/src/lib/server/endpoints/endpoints.ts +43 -43
  255. package/src/ruvocal/src/lib/server/endpoints/images.ts +211 -211
  256. package/src/ruvocal/src/lib/server/endpoints/openai/endpointOai.ts +266 -266
  257. package/src/ruvocal/src/lib/server/endpoints/openai/openAIChatToTextGenerationStream.ts +212 -212
  258. package/src/ruvocal/src/lib/server/endpoints/openai/openAICompletionToTextGenerationStream.ts +32 -32
  259. package/src/ruvocal/src/lib/server/endpoints/preprocessMessages.ts +61 -61
  260. package/src/ruvocal/src/lib/server/exitHandler.ts +59 -59
  261. package/src/ruvocal/src/lib/server/files/downloadFile.ts +34 -34
  262. package/src/ruvocal/src/lib/server/files/uploadFile.ts +29 -29
  263. package/src/ruvocal/src/lib/server/findRepoRoot.ts +13 -13
  264. package/src/ruvocal/src/lib/server/generateFromDefaultEndpoint.ts +46 -46
  265. package/src/ruvocal/src/lib/server/hooks/error.ts +37 -37
  266. package/src/ruvocal/src/lib/server/hooks/fetch.ts +22 -22
  267. package/src/ruvocal/src/lib/server/hooks/handle.ts +250 -250
  268. package/src/ruvocal/src/lib/server/hooks/init.ts +51 -51
  269. package/src/ruvocal/src/lib/server/isURLLocal.spec.ts +31 -31
  270. package/src/ruvocal/src/lib/server/isURLLocal.ts +74 -74
  271. package/src/ruvocal/src/lib/server/logger.ts +42 -42
  272. package/src/ruvocal/src/lib/server/mcp/clientPool.spec.ts +175 -175
  273. package/src/ruvocal/src/lib/server/mcp/hf.ts +32 -32
  274. package/src/ruvocal/src/lib/server/mcp/httpClient.ts +122 -122
  275. package/src/ruvocal/src/lib/server/mcp/registry.ts +76 -76
  276. package/src/ruvocal/src/lib/server/mcp/tools.ts +196 -196
  277. package/src/ruvocal/src/lib/server/metrics.ts +255 -255
  278. package/src/ruvocal/src/lib/server/models.ts +518 -518
  279. package/src/ruvocal/src/lib/server/requestContext.ts +55 -55
  280. package/src/ruvocal/src/lib/server/router/arch.ts +230 -230
  281. package/src/ruvocal/src/lib/server/router/endpoint.ts +316 -316
  282. package/src/ruvocal/src/lib/server/router/multimodal.ts +28 -28
  283. package/src/ruvocal/src/lib/server/router/policy.ts +49 -49
  284. package/src/ruvocal/src/lib/server/router/toolsRoute.ts +51 -51
  285. package/src/ruvocal/src/lib/server/router/types.ts +21 -21
  286. package/src/ruvocal/src/lib/server/sendSlack.ts +23 -23
  287. package/src/ruvocal/src/lib/server/textGeneration/generate.ts +258 -258
  288. package/src/ruvocal/src/lib/server/textGeneration/index.ts +96 -96
  289. package/src/ruvocal/src/lib/server/textGeneration/mcp/fileRefs.ts +155 -155
  290. package/src/ruvocal/src/lib/server/textGeneration/mcp/routerResolution.ts +108 -108
  291. package/src/ruvocal/src/lib/server/textGeneration/mcp/runMcpFlow.ts +831 -831
  292. package/src/ruvocal/src/lib/server/textGeneration/mcp/toolInvocation.ts +349 -349
  293. package/src/ruvocal/src/lib/server/textGeneration/mcp/wasmTools.test.ts +633 -633
  294. package/src/ruvocal/src/lib/server/textGeneration/reasoning.ts +23 -23
  295. package/src/ruvocal/src/lib/server/textGeneration/title.ts +83 -83
  296. package/src/ruvocal/src/lib/server/textGeneration/types.ts +28 -28
  297. package/src/ruvocal/src/lib/server/textGeneration/utils/prepareFiles.ts +88 -88
  298. package/src/ruvocal/src/lib/server/textGeneration/utils/routing.ts +21 -21
  299. package/src/ruvocal/src/lib/server/textGeneration/utils/toolPrompt.ts +49 -49
  300. package/src/ruvocal/src/lib/server/urlSafety.ts +77 -77
  301. package/src/ruvocal/src/lib/server/usageLimits.ts +30 -30
  302. package/src/ruvocal/src/lib/stores/autopilotStore.svelte.ts +175 -175
  303. package/src/ruvocal/src/lib/stores/backgroundGenerations.svelte.ts +32 -32
  304. package/src/ruvocal/src/lib/stores/backgroundGenerations.ts +1 -1
  305. package/src/ruvocal/src/lib/stores/errors.ts +9 -9
  306. package/src/ruvocal/src/lib/stores/isAborted.ts +3 -3
  307. package/src/ruvocal/src/lib/stores/isPro.ts +4 -4
  308. package/src/ruvocal/src/lib/stores/loading.ts +3 -3
  309. package/src/ruvocal/src/lib/stores/mcpServers.ts +534 -534
  310. package/src/ruvocal/src/lib/stores/pendingChatInput.ts +3 -3
  311. package/src/ruvocal/src/lib/stores/pendingMessage.ts +9 -9
  312. package/src/ruvocal/src/lib/stores/settings.ts +182 -182
  313. package/src/ruvocal/src/lib/stores/shareModal.ts +13 -13
  314. package/src/ruvocal/src/lib/stores/titleUpdate.ts +8 -8
  315. package/src/ruvocal/src/lib/stores/wasmMcp.ts +472 -472
  316. package/src/ruvocal/src/lib/switchTheme.ts +124 -124
  317. package/src/ruvocal/src/lib/types/AbortedGeneration.ts +8 -8
  318. package/src/ruvocal/src/lib/types/Assistant.ts +31 -31
  319. package/src/ruvocal/src/lib/types/AssistantStats.ts +11 -11
  320. package/src/ruvocal/src/lib/types/ConfigKey.ts +4 -4
  321. package/src/ruvocal/src/lib/types/ConvSidebar.ts +9 -9
  322. package/src/ruvocal/src/lib/types/Conversation.ts +27 -27
  323. package/src/ruvocal/src/lib/types/ConversationStats.ts +13 -13
  324. package/src/ruvocal/src/lib/types/Message.ts +41 -41
  325. package/src/ruvocal/src/lib/types/MessageEvent.ts +10 -10
  326. package/src/ruvocal/src/lib/types/MessageUpdate.ts +139 -139
  327. package/src/ruvocal/src/lib/types/MigrationResult.ts +7 -7
  328. package/src/ruvocal/src/lib/types/Model.ts +23 -23
  329. package/src/ruvocal/src/lib/types/Report.ts +12 -12
  330. package/src/ruvocal/src/lib/types/Review.ts +6 -6
  331. package/src/ruvocal/src/lib/types/Semaphore.ts +19 -19
  332. package/src/ruvocal/src/lib/types/Session.ts +22 -22
  333. package/src/ruvocal/src/lib/types/Settings.ts +93 -93
  334. package/src/ruvocal/src/lib/types/SharedConversation.ts +9 -9
  335. package/src/ruvocal/src/lib/types/Template.ts +6 -6
  336. package/src/ruvocal/src/lib/types/Timestamps.ts +4 -4
  337. package/src/ruvocal/src/lib/types/TokenCache.ts +6 -6
  338. package/src/ruvocal/src/lib/types/Tool.ts +77 -77
  339. package/src/ruvocal/src/lib/types/UrlDependency.ts +5 -5
  340. package/src/ruvocal/src/lib/types/User.ts +14 -14
  341. package/src/ruvocal/src/lib/utils/PublicConfig.svelte.ts +75 -75
  342. package/src/ruvocal/src/lib/utils/auth.ts +17 -17
  343. package/src/ruvocal/src/lib/utils/chunk.ts +33 -33
  344. package/src/ruvocal/src/lib/utils/cookiesAreEnabled.ts +13 -13
  345. package/src/ruvocal/src/lib/utils/debounce.ts +17 -17
  346. package/src/ruvocal/src/lib/utils/deepestChild.ts +6 -6
  347. package/src/ruvocal/src/lib/utils/favicon.ts +21 -21
  348. package/src/ruvocal/src/lib/utils/fetchJSON.ts +23 -23
  349. package/src/ruvocal/src/lib/utils/file2base64.ts +14 -14
  350. package/src/ruvocal/src/lib/utils/formatUserCount.ts +37 -37
  351. package/src/ruvocal/src/lib/utils/generationState.spec.ts +75 -75
  352. package/src/ruvocal/src/lib/utils/generationState.ts +26 -26
  353. package/src/ruvocal/src/lib/utils/getHref.ts +41 -41
  354. package/src/ruvocal/src/lib/utils/getReturnFromGenerator.ts +7 -7
  355. package/src/ruvocal/src/lib/utils/haptics.ts +64 -64
  356. package/src/ruvocal/src/lib/utils/hashConv.ts +12 -12
  357. package/src/ruvocal/src/lib/utils/hf.ts +17 -17
  358. package/src/ruvocal/src/lib/utils/isDesktop.ts +7 -7
  359. package/src/ruvocal/src/lib/utils/isUrl.ts +8 -8
  360. package/src/ruvocal/src/lib/utils/isVirtualKeyboard.ts +16 -16
  361. package/src/ruvocal/src/lib/utils/loadAttachmentsFromUrls.ts +115 -115
  362. package/src/ruvocal/src/lib/utils/marked.spec.ts +96 -96
  363. package/src/ruvocal/src/lib/utils/marked.ts +531 -531
  364. package/src/ruvocal/src/lib/utils/mcpValidation.ts +147 -147
  365. package/src/ruvocal/src/lib/utils/mergeAsyncGenerators.ts +38 -38
  366. package/src/ruvocal/src/lib/utils/messageUpdates.spec.ts +262 -262
  367. package/src/ruvocal/src/lib/utils/messageUpdates.ts +324 -324
  368. package/src/ruvocal/src/lib/utils/mime.ts +56 -56
  369. package/src/ruvocal/src/lib/utils/models.ts +14 -14
  370. package/src/ruvocal/src/lib/utils/parseBlocks.ts +120 -120
  371. package/src/ruvocal/src/lib/utils/parseIncompleteMarkdown.ts +644 -644
  372. package/src/ruvocal/src/lib/utils/parseStringToList.ts +10 -10
  373. package/src/ruvocal/src/lib/utils/randomUuid.ts +14 -14
  374. package/src/ruvocal/src/lib/utils/searchTokens.ts +33 -33
  375. package/src/ruvocal/src/lib/utils/sha256.ts +7 -7
  376. package/src/ruvocal/src/lib/utils/stringifyError.ts +12 -12
  377. package/src/ruvocal/src/lib/utils/sum.ts +3 -3
  378. package/src/ruvocal/src/lib/utils/template.spec.ts +59 -59
  379. package/src/ruvocal/src/lib/utils/template.ts +53 -53
  380. package/src/ruvocal/src/lib/utils/timeout.ts +9 -9
  381. package/src/ruvocal/src/lib/utils/toolProgress.spec.ts +46 -46
  382. package/src/ruvocal/src/lib/utils/toolProgress.ts +11 -11
  383. package/src/ruvocal/src/lib/utils/tree/addChildren.spec.ts +102 -102
  384. package/src/ruvocal/src/lib/utils/tree/addChildren.ts +48 -48
  385. package/src/ruvocal/src/lib/utils/tree/addSibling.spec.ts +81 -81
  386. package/src/ruvocal/src/lib/utils/tree/addSibling.ts +41 -41
  387. package/src/ruvocal/src/lib/utils/tree/buildSubtree.spec.ts +110 -110
  388. package/src/ruvocal/src/lib/utils/tree/buildSubtree.ts +24 -24
  389. package/src/ruvocal/src/lib/utils/tree/convertLegacyConversation.spec.ts +31 -31
  390. package/src/ruvocal/src/lib/utils/tree/convertLegacyConversation.ts +36 -36
  391. package/src/ruvocal/src/lib/utils/tree/isMessageId.spec.ts +15 -15
  392. package/src/ruvocal/src/lib/utils/tree/isMessageId.ts +5 -5
  393. package/src/ruvocal/src/lib/utils/tree/tree.d.ts +14 -14
  394. package/src/ruvocal/src/lib/utils/tree/treeHelpers.spec.ts +167 -167
  395. package/src/ruvocal/src/lib/utils/updates.ts +39 -39
  396. package/src/ruvocal/src/lib/utils/urlParams.ts +13 -13
  397. package/src/ruvocal/src/lib/wasm/idb.ts +438 -438
  398. package/src/ruvocal/src/lib/wasm/index.ts +1213 -1213
  399. package/src/ruvocal/src/lib/wasm/tests/wasm-capabilities.test.ts +565 -565
  400. package/src/ruvocal/src/lib/wasm/wasm.worker.ts +332 -332
  401. package/src/ruvocal/src/lib/wasm/workerClient.ts +166 -166
  402. package/src/ruvocal/src/lib/workers/autopilotWorker.ts +221 -221
  403. package/src/ruvocal/src/lib/workers/detailFetchWorker.ts +100 -100
  404. package/src/ruvocal/src/lib/workers/markdownWorker.ts +61 -61
  405. package/src/ruvocal/src/routes/+error.svelte +20 -20
  406. package/src/ruvocal/src/routes/+layout.svelte +324 -324
  407. package/src/ruvocal/src/routes/+layout.ts +91 -91
  408. package/src/ruvocal/src/routes/+page.svelte +168 -168
  409. package/src/ruvocal/src/routes/.well-known/oauth-cimd/+server.ts +37 -37
  410. package/src/ruvocal/src/routes/__debug/openai/+server.ts +21 -21
  411. package/src/ruvocal/src/routes/admin/export/+server.ts +159 -159
  412. package/src/ruvocal/src/routes/admin/stats/compute/+server.ts +16 -16
  413. package/src/ruvocal/src/routes/api/conversation/[id]/+server.ts +40 -40
  414. package/src/ruvocal/src/routes/api/conversation/[id]/message/[messageId]/+server.ts +42 -42
  415. package/src/ruvocal/src/routes/api/conversations/+server.ts +48 -48
  416. package/src/ruvocal/src/routes/api/fetch-url/+server.ts +147 -147
  417. package/src/ruvocal/src/routes/api/mcp/health/+server.ts +292 -292
  418. package/src/ruvocal/src/routes/api/mcp/servers/+server.ts +32 -32
  419. package/src/ruvocal/src/routes/api/models/+server.ts +25 -25
  420. package/src/ruvocal/src/routes/api/transcribe/+server.ts +104 -104
  421. package/src/ruvocal/src/routes/api/user/+server.ts +15 -15
  422. package/src/ruvocal/src/routes/api/user/validate-token/+server.ts +20 -20
  423. package/src/ruvocal/src/routes/api/v2/conversations/+server.ts +48 -48
  424. package/src/ruvocal/src/routes/api/v2/conversations/[id]/+server.ts +94 -94
  425. package/src/ruvocal/src/routes/api/v2/conversations/[id]/message/[messageId]/+server.ts +43 -43
  426. package/src/ruvocal/src/routes/api/v2/conversations/import-share/+server.ts +23 -23
  427. package/src/ruvocal/src/routes/api/v2/debug/config/+server.ts +16 -16
  428. package/src/ruvocal/src/routes/api/v2/debug/refresh/+server.ts +30 -30
  429. package/src/ruvocal/src/routes/api/v2/export/+server.ts +196 -196
  430. package/src/ruvocal/src/routes/api/v2/feature-flags/+server.ts +14 -14
  431. package/src/ruvocal/src/routes/api/v2/models/+server.ts +38 -38
  432. package/src/ruvocal/src/routes/api/v2/models/[namespace]/+server.ts +8 -8
  433. package/src/ruvocal/src/routes/api/v2/models/[namespace]/[model]/+server.ts +8 -8
  434. package/src/ruvocal/src/routes/api/v2/models/[namespace]/[model]/subscribe/+server.ts +28 -28
  435. package/src/ruvocal/src/routes/api/v2/models/[namespace]/subscribe/+server.ts +28 -28
  436. package/src/ruvocal/src/routes/api/v2/models/old/+server.ts +7 -7
  437. package/src/ruvocal/src/routes/api/v2/models/refresh/+server.ts +33 -33
  438. package/src/ruvocal/src/routes/api/v2/public-config/+server.ts +7 -7
  439. package/src/ruvocal/src/routes/api/v2/user/+server.ts +17 -17
  440. package/src/ruvocal/src/routes/api/v2/user/billing-orgs/+server.ts +73 -73
  441. package/src/ruvocal/src/routes/api/v2/user/reports/+server.ts +17 -17
  442. package/src/ruvocal/src/routes/api/v2/user/settings/+server.ts +110 -110
  443. package/src/ruvocal/src/routes/conversation/+server.ts +115 -115
  444. package/src/ruvocal/src/routes/conversation/[id]/+page.svelte +586 -586
  445. package/src/ruvocal/src/routes/conversation/[id]/+page.ts +60 -60
  446. package/src/ruvocal/src/routes/conversation/[id]/+server.ts +740 -740
  447. package/src/ruvocal/src/routes/conversation/[id]/message/[messageId]/prompt/+server.ts +66 -66
  448. package/src/ruvocal/src/routes/conversation/[id]/share/+server.ts +69 -69
  449. package/src/ruvocal/src/routes/conversation/[id]/stop-generating/+server.ts +35 -35
  450. package/src/ruvocal/src/routes/healthcheck/+server.ts +3 -3
  451. package/src/ruvocal/src/routes/login/+server.ts +5 -5
  452. package/src/ruvocal/src/routes/login/callback/+server.ts +103 -103
  453. package/src/ruvocal/src/routes/login/callback/updateUser.spec.ts +157 -157
  454. package/src/ruvocal/src/routes/login/callback/updateUser.ts +215 -215
  455. package/src/ruvocal/src/routes/logout/+server.ts +18 -18
  456. package/src/ruvocal/src/routes/metrics/+server.ts +18 -18
  457. package/src/ruvocal/src/routes/models/+page.svelte +233 -233
  458. package/src/ruvocal/src/routes/models/[...model]/+page.svelte +161 -161
  459. package/src/ruvocal/src/routes/models/[...model]/+page.ts +14 -14
  460. package/src/ruvocal/src/routes/models/[...model]/thumbnail.png/+server.ts +64 -64
  461. package/src/ruvocal/src/routes/models/[...model]/thumbnail.png/ModelThumbnail.svelte +28 -28
  462. package/src/ruvocal/src/routes/privacy/+page.svelte +11 -11
  463. package/src/ruvocal/src/routes/r/[id]/+page.ts +34 -34
  464. package/src/ruvocal/src/routes/settings/(nav)/+layout.svelte +282 -282
  465. package/src/ruvocal/src/routes/settings/(nav)/+layout.ts +1 -1
  466. package/src/ruvocal/src/routes/settings/(nav)/+server.ts +59 -59
  467. package/src/ruvocal/src/routes/settings/(nav)/[...model]/+page.svelte +464 -464
  468. package/src/ruvocal/src/routes/settings/(nav)/[...model]/+page.ts +14 -14
  469. package/src/ruvocal/src/routes/settings/(nav)/application/+page.svelte +362 -362
  470. package/src/ruvocal/src/routes/settings/+layout.svelte +40 -40
  471. package/src/ruvocal/src/styles/highlight-js.css +195 -195
  472. package/src/ruvocal/src/styles/main.css +144 -144
  473. package/src/ruvocal/static/chatui/favicon-dark.svg +3 -3
  474. package/src/ruvocal/static/chatui/favicon-dev.svg +3 -3
  475. package/src/ruvocal/static/chatui/favicon.svg +3 -3
  476. package/src/ruvocal/static/chatui/icon.svg +3 -3
  477. package/src/ruvocal/static/chatui/logo.svg +7 -7
  478. package/src/ruvocal/static/chatui/manifest.json +54 -54
  479. package/src/ruvocal/static/chatui/welcome.js +184 -184
  480. package/src/ruvocal/static/huggingchat/favicon-dark.svg +4 -4
  481. package/src/ruvocal/static/huggingchat/favicon-dev.svg +4 -4
  482. package/src/ruvocal/static/huggingchat/favicon.svg +4 -4
  483. package/src/ruvocal/static/huggingchat/fulltext-logo.svg +1 -1
  484. package/src/ruvocal/static/huggingchat/icon.svg +4 -4
  485. package/src/ruvocal/static/huggingchat/logo.svg +4 -4
  486. package/src/ruvocal/static/huggingchat/manifest.json +54 -54
  487. package/src/ruvocal/static/huggingchat/routes.chat.json +226 -226
  488. package/src/ruvocal/static/robots.txt +10 -10
  489. package/src/ruvocal/static/wasm/rvagent_wasm.js +1539 -1539
  490. package/src/ruvocal/stub/@reflink/reflink/package.json +5 -5
  491. package/src/ruvocal/svelte.config.js +53 -53
  492. package/src/ruvocal/tailwind.config.cjs +30 -30
  493. package/src/ruvocal/tsconfig.json +19 -19
  494. package/src/ruvocal/vite.config.ts +87 -87
  495. package/src/scripts/deploy.sh +116 -116
  496. package/src/scripts/generate-config.js +245 -245
  497. package/src/scripts/generate-welcome.js +187 -187
  498. package/src/scripts/package-rvf.sh +116 -116
@@ -1,2 +1,2 @@
1
- set -e
2
- npx lint-staged --config ./.husky/lint-stage-config.js
1
+ set -e
2
+ npx lint-staged --config ./.husky/lint-stage-config.js
@@ -1,14 +1,14 @@
1
- .DS_Store
2
- node_modules
3
- /build
4
- /.svelte-kit
5
- /package
6
- /chart
7
- .env
8
- .env.*
9
- !.env.example
10
-
11
- # Ignore files for PNPM, NPM and YARN
12
- pnpm-lock.yaml
13
- package-lock.json
14
- yarn.lock
1
+ .DS_Store
2
+ node_modules
3
+ /build
4
+ /.svelte-kit
5
+ /package
6
+ /chart
7
+ .env
8
+ .env.*
9
+ !.env.example
10
+
11
+ # Ignore files for PNPM, NPM and YARN
12
+ pnpm-lock.yaml
13
+ package-lock.json
14
+ yarn.lock
@@ -1,7 +1,7 @@
1
- {
2
- "useTabs": true,
3
- "trailingComma": "es5",
4
- "printWidth": 100,
5
- "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
6
- "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
7
- }
1
+ {
2
+ "useTabs": true,
3
+ "trailingComma": "es5",
4
+ "printWidth": 100,
5
+ "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
6
+ "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
7
+ }
File without changes
Binary file
@@ -0,0 +1 @@
1
+ [["entry_1777949290707_anh69v",{"id":"entry_1777949290707_anh69v","key":"-","namespace":"security_analysis","content":"name: RuVector Security Analysis\ndescription: Completed security audit of ruvector codebase\ntype: project\n---"}],["entry_1777949290871_wdj3j",{"id":"entry_1777949290871_wdj3j","key":"date-2026-04-02","namespace":"security_analysis","content":"Completed comprehensive security analysis of the ruvector npm package codebase across all critical components including CLI, MCP server, and core modules.\n\n**Key Findings:**\n- No hardcoded secrets or API keys detected\n- Good input validation in place for shell commands\n- Path validation is implemented with comprehensive checks\n- Most critical vulnerabilities mitigated through sanitization\n\n**Critical Issues:** 0\n**High Issues:** 2 \n**Medium Issues:** 3\n**Low Issues:** 2\n**Risk Score:** 28/100\n\n"}],["entry_1777949290886_afbl64",{"id":"entry_1777949290886_afbl64","key":"regtest","namespace":"sessions","content":"Session started: regtest"}],["entry_1777949290893_kfjdu",{"id":"entry_1777949290893_kfjdu","key":"test-123","namespace":"tasks","content":"Task completed: test-123"}],["entry_1777949290900_soy8c9",{"id":"entry_1777949290900_soy8c9","key":"test-fix-1","namespace":"tasks","content":"Task completed: test-fix-1"}],["entry_1777949290907_ardoho",{"id":"entry_1777949290907_ardoho","key":"verify-1686-fix","namespace":"tasks","content":"Task completed: Verify dbPath persistence fix increments metrics counts (agent: hooks-tester)"}],["entry_1777949290915_o6ppnq",{"id":"entry_1777949290915_o6ppnq","key":"verify-test-session","namespace":"sessions","content":"Session started: verify-test-session"}],["entry_1777949290922_kdxhgs",{"id":"entry_1777949290922_kdxhgs","key":"test-verify-001","namespace":"tasks","content":"Task completed: test-verify-001"}]]
Binary file
@@ -0,0 +1,305 @@
1
+
2
+ -- RuFlo V3 Memory Database
3
+ -- Version: 3.0.0
4
+ -- Features: Pattern learning, vector embeddings, temporal decay, migration tracking
5
+
6
+ PRAGMA journal_mode = WAL;
7
+ PRAGMA synchronous = NORMAL;
8
+ PRAGMA foreign_keys = ON;
9
+
10
+ -- ============================================
11
+ -- CORE MEMORY TABLES
12
+ -- ============================================
13
+
14
+ -- Memory entries (main storage)
15
+ CREATE TABLE IF NOT EXISTS memory_entries (
16
+ id TEXT PRIMARY KEY,
17
+ key TEXT NOT NULL,
18
+ namespace TEXT DEFAULT 'default',
19
+ content TEXT NOT NULL,
20
+ type TEXT DEFAULT 'semantic' CHECK(type IN ('semantic', 'episodic', 'procedural', 'working', 'pattern')),
21
+
22
+ -- Vector embedding for semantic search (stored as JSON array)
23
+ embedding TEXT,
24
+ embedding_model TEXT DEFAULT 'local',
25
+ embedding_dimensions INTEGER,
26
+
27
+ -- Metadata
28
+ tags TEXT, -- JSON array
29
+ metadata TEXT, -- JSON object
30
+ owner_id TEXT,
31
+
32
+ -- Timestamps
33
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
34
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
35
+ expires_at INTEGER,
36
+ last_accessed_at INTEGER,
37
+
38
+ -- Access tracking for hot/cold detection
39
+ access_count INTEGER DEFAULT 0,
40
+
41
+ -- Status
42
+ status TEXT DEFAULT 'active' CHECK(status IN ('active', 'archived', 'deleted')),
43
+
44
+ UNIQUE(namespace, key)
45
+ );
46
+
47
+ -- Indexes for memory entries
48
+ CREATE INDEX IF NOT EXISTS idx_memory_namespace ON memory_entries(namespace);
49
+ CREATE INDEX IF NOT EXISTS idx_memory_key ON memory_entries(key);
50
+ CREATE INDEX IF NOT EXISTS idx_memory_type ON memory_entries(type);
51
+ CREATE INDEX IF NOT EXISTS idx_memory_status ON memory_entries(status);
52
+ CREATE INDEX IF NOT EXISTS idx_memory_created ON memory_entries(created_at);
53
+ CREATE INDEX IF NOT EXISTS idx_memory_accessed ON memory_entries(last_accessed_at);
54
+ CREATE INDEX IF NOT EXISTS idx_memory_owner ON memory_entries(owner_id);
55
+
56
+ -- ============================================
57
+ -- PATTERN LEARNING TABLES
58
+ -- ============================================
59
+
60
+ -- Learned patterns with confidence scoring and versioning
61
+ CREATE TABLE IF NOT EXISTS patterns (
62
+ id TEXT PRIMARY KEY,
63
+
64
+ -- Pattern identification
65
+ name TEXT NOT NULL,
66
+ pattern_type TEXT NOT NULL CHECK(pattern_type IN (
67
+ 'task-routing', 'error-recovery', 'optimization', 'learning',
68
+ 'coordination', 'prediction', 'code-pattern', 'workflow'
69
+ )),
70
+
71
+ -- Pattern definition
72
+ condition TEXT NOT NULL, -- Regex or semantic match
73
+ action TEXT NOT NULL, -- What to do when pattern matches
74
+ description TEXT,
75
+
76
+ -- Confidence scoring (0.0 - 1.0)
77
+ confidence REAL DEFAULT 0.5,
78
+ success_count INTEGER DEFAULT 0,
79
+ failure_count INTEGER DEFAULT 0,
80
+
81
+ -- Temporal decay
82
+ decay_rate REAL DEFAULT 0.01, -- How fast confidence decays
83
+ half_life_days INTEGER DEFAULT 30, -- Days until confidence halves without use
84
+
85
+ -- Vector embedding for semantic pattern matching
86
+ embedding TEXT,
87
+ embedding_dimensions INTEGER,
88
+
89
+ -- Versioning
90
+ version INTEGER DEFAULT 1,
91
+ parent_id TEXT REFERENCES patterns(id),
92
+
93
+ -- Metadata
94
+ tags TEXT, -- JSON array
95
+ metadata TEXT, -- JSON object
96
+ source TEXT, -- Where the pattern was learned from
97
+
98
+ -- Timestamps
99
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
100
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
101
+ last_matched_at INTEGER,
102
+ last_success_at INTEGER,
103
+ last_failure_at INTEGER,
104
+
105
+ -- Status
106
+ status TEXT DEFAULT 'active' CHECK(status IN ('active', 'archived', 'deprecated', 'experimental'))
107
+ );
108
+
109
+ -- Indexes for patterns
110
+ CREATE INDEX IF NOT EXISTS idx_patterns_type ON patterns(pattern_type);
111
+ CREATE INDEX IF NOT EXISTS idx_patterns_confidence ON patterns(confidence DESC);
112
+ CREATE INDEX IF NOT EXISTS idx_patterns_status ON patterns(status);
113
+ CREATE INDEX IF NOT EXISTS idx_patterns_last_matched ON patterns(last_matched_at);
114
+
115
+ -- Pattern evolution history (for versioning)
116
+ CREATE TABLE IF NOT EXISTS pattern_history (
117
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
118
+ pattern_id TEXT NOT NULL REFERENCES patterns(id),
119
+ version INTEGER NOT NULL,
120
+
121
+ -- Snapshot of pattern state
122
+ confidence REAL,
123
+ success_count INTEGER,
124
+ failure_count INTEGER,
125
+ condition TEXT,
126
+ action TEXT,
127
+
128
+ -- What changed
129
+ change_type TEXT CHECK(change_type IN ('created', 'updated', 'success', 'failure', 'decay', 'merged', 'split')),
130
+ change_reason TEXT,
131
+
132
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
133
+ );
134
+
135
+ CREATE INDEX IF NOT EXISTS idx_pattern_history_pattern ON pattern_history(pattern_id);
136
+
137
+ -- ============================================
138
+ -- LEARNING & TRAJECTORY TABLES
139
+ -- ============================================
140
+
141
+ -- Learning trajectories (SONA integration)
142
+ CREATE TABLE IF NOT EXISTS trajectories (
143
+ id TEXT PRIMARY KEY,
144
+ session_id TEXT,
145
+
146
+ -- Trajectory state
147
+ status TEXT DEFAULT 'active' CHECK(status IN ('active', 'completed', 'failed', 'abandoned')),
148
+ verdict TEXT CHECK(verdict IN ('success', 'failure', 'partial', NULL)),
149
+
150
+ -- Context
151
+ task TEXT,
152
+ context TEXT, -- JSON object
153
+
154
+ -- Metrics
155
+ total_steps INTEGER DEFAULT 0,
156
+ total_reward REAL DEFAULT 0,
157
+
158
+ -- Timestamps
159
+ started_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
160
+ ended_at INTEGER,
161
+
162
+ -- Reference to extracted pattern (if any)
163
+ extracted_pattern_id TEXT REFERENCES patterns(id)
164
+ );
165
+
166
+ -- Trajectory steps
167
+ CREATE TABLE IF NOT EXISTS trajectory_steps (
168
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
169
+ trajectory_id TEXT NOT NULL REFERENCES trajectories(id),
170
+ step_number INTEGER NOT NULL,
171
+
172
+ -- Step data
173
+ action TEXT NOT NULL,
174
+ observation TEXT,
175
+ reward REAL DEFAULT 0,
176
+
177
+ -- Metadata
178
+ metadata TEXT, -- JSON object
179
+
180
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
181
+ );
182
+
183
+ CREATE INDEX IF NOT EXISTS idx_steps_trajectory ON trajectory_steps(trajectory_id);
184
+
185
+ -- ============================================
186
+ -- MIGRATION STATE TRACKING
187
+ -- ============================================
188
+
189
+ -- Migration state (for resume capability)
190
+ CREATE TABLE IF NOT EXISTS migration_state (
191
+ id TEXT PRIMARY KEY,
192
+ migration_type TEXT NOT NULL, -- 'v2-to-v3', 'pattern', 'memory', etc.
193
+
194
+ -- Progress tracking
195
+ status TEXT DEFAULT 'pending' CHECK(status IN ('pending', 'in_progress', 'completed', 'failed', 'rolled_back')),
196
+ total_items INTEGER DEFAULT 0,
197
+ processed_items INTEGER DEFAULT 0,
198
+ failed_items INTEGER DEFAULT 0,
199
+ skipped_items INTEGER DEFAULT 0,
200
+
201
+ -- Current position (for resume)
202
+ current_batch INTEGER DEFAULT 0,
203
+ last_processed_id TEXT,
204
+
205
+ -- Source/destination info
206
+ source_path TEXT,
207
+ source_type TEXT,
208
+ destination_path TEXT,
209
+
210
+ -- Backup info
211
+ backup_path TEXT,
212
+ backup_created_at INTEGER,
213
+
214
+ -- Error tracking
215
+ last_error TEXT,
216
+ errors TEXT, -- JSON array of errors
217
+
218
+ -- Timestamps
219
+ started_at INTEGER,
220
+ completed_at INTEGER,
221
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
222
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
223
+ );
224
+
225
+ -- ============================================
226
+ -- SESSION MANAGEMENT
227
+ -- ============================================
228
+
229
+ -- Sessions for context persistence
230
+ CREATE TABLE IF NOT EXISTS sessions (
231
+ id TEXT PRIMARY KEY,
232
+
233
+ -- Session state
234
+ state TEXT NOT NULL, -- JSON object with full session state
235
+ status TEXT DEFAULT 'active' CHECK(status IN ('active', 'paused', 'completed', 'expired')),
236
+
237
+ -- Context
238
+ project_path TEXT,
239
+ branch TEXT,
240
+
241
+ -- Metrics
242
+ tasks_completed INTEGER DEFAULT 0,
243
+ patterns_learned INTEGER DEFAULT 0,
244
+
245
+ -- Timestamps
246
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
247
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
248
+ expires_at INTEGER
249
+ );
250
+
251
+ -- ============================================
252
+ -- VECTOR INDEX METADATA (for HNSW)
253
+ -- ============================================
254
+
255
+ -- Track HNSW index state
256
+ CREATE TABLE IF NOT EXISTS vector_indexes (
257
+ id TEXT PRIMARY KEY,
258
+ name TEXT NOT NULL UNIQUE,
259
+
260
+ -- Index configuration
261
+ dimensions INTEGER NOT NULL,
262
+ metric TEXT DEFAULT 'cosine' CHECK(metric IN ('cosine', 'euclidean', 'dot')),
263
+
264
+ -- HNSW parameters
265
+ hnsw_m INTEGER DEFAULT 16,
266
+ hnsw_ef_construction INTEGER DEFAULT 200,
267
+ hnsw_ef_search INTEGER DEFAULT 100,
268
+
269
+ -- Quantization
270
+ quantization_type TEXT CHECK(quantization_type IN ('none', 'scalar', 'product')),
271
+ quantization_bits INTEGER DEFAULT 8,
272
+
273
+ -- Statistics
274
+ total_vectors INTEGER DEFAULT 0,
275
+ last_rebuild_at INTEGER,
276
+
277
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
278
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
279
+ );
280
+
281
+ -- ============================================
282
+ -- SYSTEM METADATA
283
+ -- ============================================
284
+
285
+ CREATE TABLE IF NOT EXISTS metadata (
286
+ key TEXT PRIMARY KEY,
287
+ value TEXT NOT NULL,
288
+ updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)
289
+ );
290
+
291
+
292
+ INSERT OR REPLACE INTO metadata (key, value) VALUES
293
+ ('schema_version', '3.0.0'),
294
+ ('backend', 'hybrid'),
295
+ ('created_at', '2026-05-05T02:48:10.665Z'),
296
+ ('sql_js', 'true'),
297
+ ('vector_embeddings', 'enabled'),
298
+ ('pattern_learning', 'enabled'),
299
+ ('temporal_decay', 'enabled'),
300
+ ('hnsw_indexing', 'enabled');
301
+
302
+ -- Create default vector index configuration
303
+ INSERT OR IGNORE INTO vector_indexes (id, name, dimensions) VALUES
304
+ ('default', 'default', 384),
305
+ ('patterns', 'patterns', 384);
@@ -1,126 +1,126 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Overview
6
-
7
- Chat UI is a SvelteKit application that provides a chat interface for LLMs. It powers HuggingChat (hf.co/chat). The app speaks exclusively to OpenAI-compatible APIs via `OPENAI_BASE_URL`.
8
-
9
- ## Commands
10
-
11
- ```bash
12
- npm run dev # Start dev server on localhost:5173
13
- npm run build # Production build
14
- npm run preview # Preview production build
15
- npm run check # TypeScript validation (svelte-kit sync + svelte-check)
16
- npm run lint # Check formatting (Prettier) and linting (ESLint)
17
- npm run format # Auto-format with Prettier
18
- npm run test # Run all tests (Vitest)
19
- ```
20
-
21
- ### Running a Single Test
22
-
23
- ```bash
24
- npx vitest run path/to/file.spec.ts # Run specific test file
25
- npx vitest run -t "test name" # Run test by name
26
- npx vitest --watch path/to/file.spec.ts # Watch mode for single file
27
- ```
28
-
29
- ### Test Environments
30
-
31
- Tests are split into three workspaces (configured in vite.config.ts):
32
-
33
- - **Client tests** (`*.svelte.test.ts`): Browser environment with Playwright
34
- - **SSR tests** (`*.ssr.test.ts`): Node environment for server-side rendering
35
- - **Server tests** (`*.test.ts`, `*.spec.ts`): Node environment for utilities
36
-
37
- ## Architecture
38
-
39
- ### Stack
40
-
41
- - **SvelteKit 2** with Svelte 5 (uses runes: `$state`, `$effect`, `$bindable`)
42
- - **MongoDB** for persistence (auto-fallback to in-memory with MongoMemoryServer when `MONGODB_URL` not set)
43
- - **TailwindCSS** for styling
44
-
45
- ### Key Directories
46
-
47
- ```
48
- src/
49
- ├── lib/
50
- │ ├── components/ # Svelte components (chat/, mcp/, voice/, icons/)
51
- │ ├── server/
52
- │ │ ├── api/utils/ # Shared API helpers (auth, superjson, model/conversation resolvers)
53
- │ │ ├── textGeneration/ # LLM streaming pipeline
54
- │ │ ├── mcp/ # Model Context Protocol integration
55
- │ │ ├── router/ # Smart model routing (Omni)
56
- │ │ ├── database.ts # MongoDB collections
57
- │ │ ├── models.ts # Model registry from OPENAI_BASE_URL/models
58
- │ │ └── auth.ts # OpenID Connect authentication
59
- │ ├── types/ # TypeScript interfaces (Conversation, Message, User, Model, etc.)
60
- │ ├── stores/ # Svelte stores for reactive state
61
- │ └── utils/ # Helpers (tree/, marked.ts, auth.ts, etc.)
62
- ├── routes/ # SvelteKit file-based routing
63
- │ ├── conversation/[id]/ # Chat page + streaming endpoint
64
- │ ├── settings/ # User settings pages
65
- │ ├── api/ # Legacy v1 API endpoints (mcp, transcribe, fetch-url)
66
- │ ├── api/v2/ # REST API endpoints (+server.ts)
67
- │ └── r/[id]/ # Shared conversation view
68
- ```
69
-
70
- ### Text Generation Flow
71
-
72
- 1. User sends message via `POST /conversation/[id]`
73
- 2. Server validates user, fetches conversation history
74
- 3. Builds message tree structure (see `src/lib/utils/tree/`)
75
- 4. Calls LLM endpoint via OpenAI client
76
- 5. Streams response back, stores in MongoDB
77
-
78
- ### Model Context Protocol (MCP)
79
-
80
- MCP servers are configured via `MCP_SERVERS` env var. When enabled, tools are exposed as OpenAI function calls. The router can auto-select tools-capable models when `LLM_ROUTER_ENABLE_TOOLS=true`.
81
-
82
- ### LLM Router (Omni)
83
-
84
- Smart routing via Arch-Router model. Configured with:
85
-
86
- - `LLM_ROUTER_ROUTES_PATH`: JSON file defining routes
87
- - `LLM_ROUTER_ARCH_BASE_URL`: Router endpoint
88
- - Shortcuts: multimodal routes bypass router if `LLM_ROUTER_ENABLE_MULTIMODAL=true`
89
-
90
- ### Database Collections
91
-
92
- - `conversations` - Chat sessions with nested messages
93
- - `users` - User accounts (OIDC-backed)
94
- - `sessions` - Session data
95
- - `sharedConversations` - Public share links
96
- - `settings` - User preferences
97
-
98
- ## Environment Setup
99
-
100
- Copy `.env` to `.env.local` and configure:
101
-
102
- ```env
103
- OPENAI_BASE_URL=https://router.huggingface.co/v1
104
- OPENAI_API_KEY=hf_***
105
- # MONGODB_URL is optional; omit for in-memory DB persisted to ./db
106
- ```
107
-
108
- See `.env` for full list of variables including router config, MCP servers, auth, and feature flags.
109
-
110
- ## Code Conventions
111
-
112
- - TypeScript strict mode enabled
113
- - ESLint: no `any`, no non-null assertions
114
- - Prettier: tabs, 100 char width, Tailwind class sorting
115
- - Server vs client separation via SvelteKit conventions (`+page.server.ts` vs `+page.ts`)
116
-
117
- ## Feature Development Checklist
118
-
119
- When building new features, consider:
120
-
121
- 1. **HuggingChat vs self-hosted**: Wrap HuggingChat-specific features with `publicConfig.isHuggingChat`
122
- 2. **Settings persistence**: Add new fields to `src/lib/types/Settings.ts`, update API endpoint at `src/routes/api/v2/user/settings/+server.ts`
123
- 3. **Rich dropdowns**: Use `bits-ui` (Select, DropdownMenu) instead of native elements when you need icons/images in options
124
- 4. **Scrollbars**: Use `scrollbar-custom` class for styled scrollbars
125
- 5. **Icons**: Custom icons in `$lib/components/icons/`, use Carbon (`~icons/carbon/*`) or Lucide (`~icons/lucide/*`) for standard icons
126
- 6. **Provider avatars**: Use `PROVIDERS_HUB_ORGS` from `@huggingface/inference` for HF provider avatar URLs
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Overview
6
+
7
+ Chat UI is a SvelteKit application that provides a chat interface for LLMs. It powers HuggingChat (hf.co/chat). The app speaks exclusively to OpenAI-compatible APIs via `OPENAI_BASE_URL`.
8
+
9
+ ## Commands
10
+
11
+ ```bash
12
+ npm run dev # Start dev server on localhost:5173
13
+ npm run build # Production build
14
+ npm run preview # Preview production build
15
+ npm run check # TypeScript validation (svelte-kit sync + svelte-check)
16
+ npm run lint # Check formatting (Prettier) and linting (ESLint)
17
+ npm run format # Auto-format with Prettier
18
+ npm run test # Run all tests (Vitest)
19
+ ```
20
+
21
+ ### Running a Single Test
22
+
23
+ ```bash
24
+ npx vitest run path/to/file.spec.ts # Run specific test file
25
+ npx vitest run -t "test name" # Run test by name
26
+ npx vitest --watch path/to/file.spec.ts # Watch mode for single file
27
+ ```
28
+
29
+ ### Test Environments
30
+
31
+ Tests are split into three workspaces (configured in vite.config.ts):
32
+
33
+ - **Client tests** (`*.svelte.test.ts`): Browser environment with Playwright
34
+ - **SSR tests** (`*.ssr.test.ts`): Node environment for server-side rendering
35
+ - **Server tests** (`*.test.ts`, `*.spec.ts`): Node environment for utilities
36
+
37
+ ## Architecture
38
+
39
+ ### Stack
40
+
41
+ - **SvelteKit 2** with Svelte 5 (uses runes: `$state`, `$effect`, `$bindable`)
42
+ - **MongoDB** for persistence (auto-fallback to in-memory with MongoMemoryServer when `MONGODB_URL` not set)
43
+ - **TailwindCSS** for styling
44
+
45
+ ### Key Directories
46
+
47
+ ```
48
+ src/
49
+ ├── lib/
50
+ │ ├── components/ # Svelte components (chat/, mcp/, voice/, icons/)
51
+ │ ├── server/
52
+ │ │ ├── api/utils/ # Shared API helpers (auth, superjson, model/conversation resolvers)
53
+ │ │ ├── textGeneration/ # LLM streaming pipeline
54
+ │ │ ├── mcp/ # Model Context Protocol integration
55
+ │ │ ├── router/ # Smart model routing (Omni)
56
+ │ │ ├── database.ts # MongoDB collections
57
+ │ │ ├── models.ts # Model registry from OPENAI_BASE_URL/models
58
+ │ │ └── auth.ts # OpenID Connect authentication
59
+ │ ├── types/ # TypeScript interfaces (Conversation, Message, User, Model, etc.)
60
+ │ ├── stores/ # Svelte stores for reactive state
61
+ │ └── utils/ # Helpers (tree/, marked.ts, auth.ts, etc.)
62
+ ├── routes/ # SvelteKit file-based routing
63
+ │ ├── conversation/[id]/ # Chat page + streaming endpoint
64
+ │ ├── settings/ # User settings pages
65
+ │ ├── api/ # Legacy v1 API endpoints (mcp, transcribe, fetch-url)
66
+ │ ├── api/v2/ # REST API endpoints (+server.ts)
67
+ │ └── r/[id]/ # Shared conversation view
68
+ ```
69
+
70
+ ### Text Generation Flow
71
+
72
+ 1. User sends message via `POST /conversation/[id]`
73
+ 2. Server validates user, fetches conversation history
74
+ 3. Builds message tree structure (see `src/lib/utils/tree/`)
75
+ 4. Calls LLM endpoint via OpenAI client
76
+ 5. Streams response back, stores in MongoDB
77
+
78
+ ### Model Context Protocol (MCP)
79
+
80
+ MCP servers are configured via `MCP_SERVERS` env var. When enabled, tools are exposed as OpenAI function calls. The router can auto-select tools-capable models when `LLM_ROUTER_ENABLE_TOOLS=true`.
81
+
82
+ ### LLM Router (Omni)
83
+
84
+ Smart routing via Arch-Router model. Configured with:
85
+
86
+ - `LLM_ROUTER_ROUTES_PATH`: JSON file defining routes
87
+ - `LLM_ROUTER_ARCH_BASE_URL`: Router endpoint
88
+ - Shortcuts: multimodal routes bypass router if `LLM_ROUTER_ENABLE_MULTIMODAL=true`
89
+
90
+ ### Database Collections
91
+
92
+ - `conversations` - Chat sessions with nested messages
93
+ - `users` - User accounts (OIDC-backed)
94
+ - `sessions` - Session data
95
+ - `sharedConversations` - Public share links
96
+ - `settings` - User preferences
97
+
98
+ ## Environment Setup
99
+
100
+ Copy `.env` to `.env.local` and configure:
101
+
102
+ ```env
103
+ OPENAI_BASE_URL=https://router.huggingface.co/v1
104
+ OPENAI_API_KEY=hf_***
105
+ # MONGODB_URL is optional; omit for in-memory DB persisted to ./db
106
+ ```
107
+
108
+ See `.env` for full list of variables including router config, MCP servers, auth, and feature flags.
109
+
110
+ ## Code Conventions
111
+
112
+ - TypeScript strict mode enabled
113
+ - ESLint: no `any`, no non-null assertions
114
+ - Prettier: tabs, 100 char width, Tailwind class sorting
115
+ - Server vs client separation via SvelteKit conventions (`+page.server.ts` vs `+page.ts`)
116
+
117
+ ## Feature Development Checklist
118
+
119
+ When building new features, consider:
120
+
121
+ 1. **HuggingChat vs self-hosted**: Wrap HuggingChat-specific features with `publicConfig.isHuggingChat`
122
+ 2. **Settings persistence**: Add new fields to `src/lib/types/Settings.ts`, update API endpoint at `src/routes/api/v2/user/settings/+server.ts`
123
+ 3. **Rich dropdowns**: Use `bits-ui` (Select, DropdownMenu) instead of native elements when you need icons/images in options
124
+ 4. **Scrollbars**: Use `scrollbar-custom` class for styled scrollbars
125
+ 5. **Icons**: Custom icons in `$lib/components/icons/`, use Carbon (`~icons/carbon/*`) or Lucide (`~icons/lucide/*`) for standard icons
126
+ 6. **Provider avatars**: Use `PROVIDERS_HUB_ORGS` from `@huggingface/inference` for HF provider avatar URLs