@geminilight/mindos 0.7.2 → 0.7.4

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 (254) hide show
  1. package/_standalone/.mindos-build-version +1 -1
  2. package/_standalone/.next/BUILD_ID +1 -1
  3. package/_standalone/.next/app-path-routes-manifest.json +19 -19
  4. package/_standalone/.next/build-manifest.json +3 -3
  5. package/_standalone/.next/cache/.previewinfo +1 -1
  6. package/_standalone/.next/cache/.rscinfo +1 -1
  7. package/_standalone/.next/cache/config.json +3 -3
  8. package/_standalone/.next/prerender-manifest.json +3 -3
  9. package/_standalone/.next/react-loadable-manifest.json +4 -4
  10. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  11. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  12. package/_standalone/.next/server/app/_global-error.html +2 -2
  13. package/_standalone/.next/server/app/_global-error.rsc +1 -1
  14. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  16. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  17. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  21. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
  24. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  25. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  26. package/_standalone/.next/server/app/agents/page.js +1 -1
  27. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  28. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  29. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  30. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  31. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  32. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
  40. package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
  41. package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/ask/route.js +4 -4
  43. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  44. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  45. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  46. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  48. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  49. package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
  50. package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -1
  51. package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
  52. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  53. package/_standalone/.next/server/app/api/extract-docx/route_client-reference-manifest.js +1 -1
  54. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  55. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  56. package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
  57. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  59. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  61. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  62. package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
  63. package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
  64. package/_standalone/.next/server/app/api/im/feishu/long-connection/event/route_client-reference-manifest.js +1 -1
  65. package/_standalone/.next/server/app/api/im/feishu/long-connection/route_client-reference-manifest.js +1 -1
  66. package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
  67. package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
  68. package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
  69. package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
  70. package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
  71. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  72. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -1
  74. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  75. package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
  76. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  77. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  79. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  81. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/obsidian/compat-report/route_client-reference-manifest.js +1 -1
  84. package/_standalone/.next/server/app/api/obsidian/import/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  86. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  87. package/_standalone/.next/server/app/api/search/prewarm/route_client-reference-manifest.js +1 -1
  88. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  89. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  91. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  92. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  94. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  96. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  97. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  99. package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  101. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  102. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  103. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  104. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  105. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  106. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  107. package/_standalone/.next/server/app/capture/history/page.js +1 -1
  108. package/_standalone/.next/server/app/capture/history/page.js.nft.json +1 -1
  109. package/_standalone/.next/server/app/capture/history/page_client-reference-manifest.js +1 -1
  110. package/_standalone/.next/server/app/capture/page.js +1 -1
  111. package/_standalone/.next/server/app/capture/page.js.nft.json +1 -1
  112. package/_standalone/.next/server/app/capture/page_client-reference-manifest.js +1 -1
  113. package/_standalone/.next/server/app/changelog/page.js +1 -1
  114. package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
  115. package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
  116. package/_standalone/.next/server/app/changes/page.js +1 -1
  117. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  118. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  119. package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
  120. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  121. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  122. package/_standalone/.next/server/app/echo/page.js +1 -1
  123. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  124. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  125. package/_standalone/.next/server/app/explore/page.js +1 -1
  126. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  127. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  128. package/_standalone/.next/server/app/help/page.js +1 -1
  129. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  130. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  131. package/_standalone/.next/server/app/inbox/history/page.js +1 -1
  132. package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
  133. package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
  134. package/_standalone/.next/server/app/login/page.js +1 -1
  135. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  136. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  137. package/_standalone/.next/server/app/page.js +1 -1
  138. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  139. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  140. package/_standalone/.next/server/app/setup/page.js +1 -1
  141. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  142. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  143. package/_standalone/.next/server/app/todo/page.js +1 -1
  144. package/_standalone/.next/server/app/todo/page.js.nft.json +1 -1
  145. package/_standalone/.next/server/app/todo/page_client-reference-manifest.js +1 -1
  146. package/_standalone/.next/server/app/trash/page.js +2 -2
  147. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  148. package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
  149. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  150. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  151. package/_standalone/.next/server/app/wiki/page.js +2 -0
  152. package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -0
  153. package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -0
  154. package/_standalone/.next/server/app-paths-manifest.json +19 -19
  155. package/_standalone/.next/server/chunks/2250.js +1 -1
  156. package/_standalone/.next/server/chunks/{1057.js → 3861.js} +2 -2
  157. package/_standalone/.next/server/chunks/4802.js +30 -30
  158. package/_standalone/.next/server/chunks/8388.js +1 -1
  159. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  160. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  161. package/_standalone/.next/server/pages/500.html +2 -2
  162. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  163. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  164. package/_standalone/.next/static/chunks/{5581-bae715e40d227b5f.js → 5581-beecbc4ca5625aa9.js} +2 -2
  165. package/_standalone/.next/static/chunks/6762.c871d0bf3f45ba87.js +1 -0
  166. package/_standalone/.next/static/chunks/{8064-e65acd2762132099.js → 8064-acac37daf946082b.js} +1 -1
  167. package/_standalone/.next/static/chunks/{3985.695651f6b5cd768c.js → 8984.91fb8cde1983c564.js} +2 -2
  168. package/_standalone/.next/static/chunks/app/{layout-0cf6f2a65f605a0d.js → layout-20faba3bc0af7cd2.js} +19 -19
  169. package/_standalone/.next/static/chunks/app/trash/page-0c2c67929b71ef71.js +1 -0
  170. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-fd06cc989103ebe7.js +1 -0
  171. package/_standalone/.next/static/chunks/app/view/[...path]/page-dba70888697ba910.js +12 -0
  172. package/_standalone/.next/static/chunks/app/wiki/page-9bc1fec84d343290.js +14 -0
  173. package/_standalone/.next/static/chunks/webpack-3c1d0331f1da64b8.js +1 -0
  174. package/_standalone/.next/trace +97 -97
  175. package/_standalone/MINDOS_ARCHITECTURE_DIAGRAM.md +488 -0
  176. package/_standalone/MINDOS_EXPLORATION_SUMMARY.md +229 -0
  177. package/_standalone/MINDOS_INFRASTRUCTURE_ANALYSIS.md +732 -0
  178. package/_standalone/__tests__/api/mcp-install.test.ts +8 -2
  179. package/_standalone/__tests__/core/embedding-provider.test.ts +78 -0
  180. package/_standalone/__tests__/skills/mindos-skill-copy-alignment.test.ts +10 -4
  181. package/_standalone/components/ask/AskHeader.tsx +25 -18
  182. package/_standalone/components/ask/SessionHistoryPanel.tsx +21 -12
  183. package/_standalone/components/settings/AiTab.tsx +3 -0
  184. package/_standalone/data/skills/mindos/SKILL.md +269 -0
  185. package/_standalone/data/skills/mindos/references/write-supplement.md +119 -0
  186. package/_standalone/data/skills/mindos-zh/SKILL.md +227 -0
  187. package/_standalone/data/skills/mindos-zh/references/write-supplement.md +119 -0
  188. package/app/__tests__/api/mcp-install.test.ts +8 -2
  189. package/app/__tests__/core/embedding-provider.test.ts +78 -0
  190. package/app/__tests__/skills/mindos-skill-copy-alignment.test.ts +10 -4
  191. package/app/app/api/ask/route.ts +14 -9
  192. package/app/app/view/[...path]/ViewPageClient.tsx +15 -12
  193. package/app/app/view/[...path]/not-found.tsx +9 -5
  194. package/app/components/ask/AskHeader.tsx +25 -18
  195. package/app/components/ask/SessionHistoryPanel.tsx +21 -12
  196. package/app/components/settings/AiTab.tsx +3 -0
  197. package/app/eslint.config.mjs +18 -0
  198. package/app/lib/core/embedding-provider.ts +12 -4
  199. package/app/lib/i18n/modules/settings.ts +2 -0
  200. package/app/package-lock.json +20214 -0
  201. package/app/tsconfig.tsbuildinfo +1 -0
  202. package/app/vitest.config.ts +14 -0
  203. package/assets/demo-flow-zh.html +622 -0
  204. package/assets/images/demo-flow-dark.png +0 -0
  205. package/assets/images/demo-flow-dark.webp +0 -0
  206. package/assets/images/demo-flow-light.png +0 -0
  207. package/assets/images/demo-flow-light.webp +0 -0
  208. package/assets/images/demo-flow-zh-dark.png +0 -0
  209. package/assets/images/demo-flow-zh-dark.webp +0 -0
  210. package/assets/images/demo-flow-zh-light.png +0 -0
  211. package/assets/images/demo-flow-zh-light.webp +0 -0
  212. package/assets/images/gui-sync-cv.png +0 -0
  213. package/assets/images/gui-sync-cv.webp +0 -0
  214. package/assets/images/mindos-chat.png +0 -0
  215. package/assets/images/mindos-chat.webp +0 -0
  216. package/assets/images/mindos-dashboard.png +0 -0
  217. package/assets/images/mindos-dashboard.webp +0 -0
  218. package/assets/images/mindos-echo.png +0 -0
  219. package/assets/images/mindos-echo.webp +0 -0
  220. package/assets/images/mindos-home.png +0 -0
  221. package/assets/images/mindos-home.webp +0 -0
  222. package/assets/images/wechat-qr.png +0 -0
  223. package/bin/lib/mcp-build.js +8 -0
  224. package/mcp/package-lock.json +2202 -0
  225. package/mcp/src/index.ts +783 -0
  226. package/package.json +13 -1
  227. package/.env.local.example +0 -38
  228. package/.playwright-cli/page-2026-04-12T12-26-53-393Z.yml +0 -6
  229. package/.playwright-cli/page-2026-04-12T12-27-20-256Z.yml +0 -120
  230. package/.syncinclude +0 -105
  231. package/MINDOS_SEARCH_DIAGRAM.txt +0 -243
  232. package/_standalone/.next/static/chunks/576.3cae31209383ddbd.js +0 -1
  233. package/_standalone/.next/static/chunks/app/trash/page-085f121c0815d542.js +0 -1
  234. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-2a6eec67e91eaaf9.js +0 -1
  235. package/_standalone/.next/static/chunks/app/view/[...path]/page-faeaf8c09c1c6d7c.js +0 -12
  236. package/_standalone/.next/static/chunks/webpack-a1bb35f2d540e463.js +0 -1
  237. package/scripts/build-runtime-archive.sh +0 -151
  238. package/scripts/fix-postcss-deps.cjs +0 -75
  239. package/scripts/gen-renderer-index.js +0 -64
  240. package/scripts/hooks/block-public-merge.sh +0 -42
  241. package/scripts/hooks/pre-merge-commit +0 -4
  242. package/scripts/hooks/pre-push +0 -37
  243. package/scripts/hooks/prepare-commit-msg +0 -12
  244. package/scripts/migrate-agent-audit-log.js +0 -170
  245. package/scripts/migrate-agent-diff.js +0 -146
  246. package/scripts/parse-syncinclude.sh +0 -92
  247. package/scripts/prepare-standalone.mjs +0 -83
  248. package/scripts/release.sh +0 -145
  249. package/scripts/setup.js +0 -1427
  250. package/scripts/test-oss-upload.sh +0 -100
  251. package/scripts/verify-standalone.mjs +0 -129
  252. package/scripts/write-build-stamp.js +0 -40
  253. /package/_standalone/.next/static/{q5RP_Mx8BrCfvVDnLpRRc → 0UlbV2rA2i4B-8YYg41wQ}/_buildManifest.js +0 -0
  254. /package/_standalone/.next/static/{q5RP_Mx8BrCfvVDnLpRRc → 0UlbV2rA2i4B-8YYg41wQ}/_ssgManifest.js +0 -0
@@ -0,0 +1,488 @@
1
+ # MindOS Architecture Diagram
2
+
3
+ ## System Overview
4
+
5
+ ```
6
+ ┌─────────────────────────────────────────────────────────────────┐
7
+ │ MindOS Platform │
8
+ ├─────────────────────────────────────────────────────────────────┤
9
+ │ │
10
+ │ FRONTEND (React) BACKEND (Next.js) │
11
+ │ ┌────────────────┐ ┌──────────────────────────┐ │
12
+ │ │ Settings UI │ │ API Routes │ │
13
+ │ │ ⌘K Search │◄──────────►│ /api/settings │ │
14
+ │ │ File Browser │ │ /api/search │ │
15
+ │ └────────────────┘ │ /api/rag/* (NEW) │ │
16
+ │ └──────────────────────────┘ │
17
+ │ │
18
+ └─────────────────────────────────────────────────────────────────┘
19
+
20
+ │ Reads/Writes
21
+
22
+ ┌─────────────────────────────────────────────────────────────────┐
23
+ │ ~/.mindos/config.json (Persistent) │
24
+ ├─────────────────────────────────────────────────────────────────┤
25
+ │ │
26
+ │ { │
27
+ │ "mindRoot": "/path/to/mind", │
28
+ │ "ai": { │
29
+ │ "activeProvider": "p_esc9eiuh", │
30
+ │ "providers": [ │
31
+ │ {"id":"p_*","name":"...","protocol":"openai",...} │
32
+ │ ] │
33
+ │ }, │
34
+ │ "rag": { "enabled":true, "embeddingModel":"..." } (NEW) │
35
+ │ } │
36
+ │ │
37
+ └─────────────────────────────────────────────────────────────────┘
38
+
39
+ │ Contains provider references
40
+
41
+ ┌─────────────────────────────────────────────────────────────────┐
42
+ │ Settings System (lib/settings.ts) │
43
+ ├─────────────────────────────────────────────────────────────────┤
44
+ │ │
45
+ │ readSettings() ┌─────────────────────────────────┐ │
46
+ │ writeSettings() │ ServerSettings { │ │
47
+ │ effectiveAiConfig() │ ai: AiConfig; │ │
48
+ │ │ agent?: AgentConfig; │ │
49
+ │ Parsing functions: │ rag?: RagConfig; (NEW) │ │
50
+ │ - parseAgent() │ mindRoot: string; │ │
51
+ │ - parseGuideState() │ port?: number; │ │
52
+ │ - parseNewField() │ ... │ │
53
+ │ │ } │ │
54
+ │ └─────────────────────────────────┘ │
55
+ │ │
56
+ └─────────────────────────────────────────────────────────────────┘
57
+
58
+ │ Manages LLM credentials
59
+
60
+ ┌─────────────────────────────────────────────────────────────────┐
61
+ │ Provider System (lib/agent/providers.ts) │
62
+ ├─────────────────────────────────────────────────────────────────┤
63
+ │ │
64
+ │ interface Provider { │
65
+ │ id: string; // "p_" prefix (unique per entry) │
66
+ │ name: string; // User-visible name │
67
+ │ protocol: ProviderId; // "openai" | "anthropic" | ... │
68
+ │ apiKey: string; │
69
+ │ model: string; │
70
+ │ baseUrl: string; // Custom endpoint URL │
71
+ │ } │
72
+ │ │
73
+ │ PROVIDER_PRESETS = { │
74
+ │ anthropic: {...preset metadata...}, │
75
+ │ openai: {...}, │
76
+ │ ollama: {...}, │
77
+ │ ... │
78
+ │ } │
79
+ │ │
80
+ │ Resolution Chain: │
81
+ │ Config file → Environment variables → Preset defaults │
82
+ │ │
83
+ └─────────────────────────────────────────────────────────────────┘
84
+
85
+ │ Calls AI APIs for embeddings (NEW)
86
+
87
+ ┌─────────────────────────────────────────────────────────────────┐
88
+ │ RAG System (lib/rag/* NEW) │
89
+ ├─────────────────────────────────────────────────────────────────┤
90
+ │ │
91
+ │ ┌────────────────────────────┐ │
92
+ │ │ EmbeddingClient │ │
93
+ │ │ (lib/rag/embedding-client) │ │
94
+ │ │ │ │
95
+ │ │ embed(text) → number[] │ │
96
+ │ │ Uses provider from config │ │
97
+ │ └────────────────────────────┘ │
98
+ │ │ │
99
+ │ │ Calls external embedding API │
100
+ │ ▼ │
101
+ │ ┌────────────────────────────┐ │
102
+ │ │ EmbeddingIndex │ │
103
+ │ │ (lib/core/embedding-index) │ │
104
+ │ │ │ │
105
+ │ │ rebuild(mindRoot) │ │
106
+ │ │ search(query) → results │ │
107
+ │ │ persist/load │ │
108
+ │ └────────────────────────────┘ │
109
+ │ │
110
+ └─────────────────────────────────────────────────────────────────┘
111
+
112
+ │ Coordinates searches
113
+
114
+ ┌─────────────────────────────────────────────────────────────────┐
115
+ │ Search System │
116
+ ├─────────────────────────────────────────────────────────────────┤
117
+ │ │
118
+ │ ┌──────────────────────┐ ┌──────────────────────┐ │
119
+ │ │ BM25 Search │ │ EmbeddingIndex │ │
120
+ │ │ (lib/core/search.ts) │ │ (lib/core/*.ts) │ │
121
+ │ │ │ │ │ │
122
+ │ │ searchFiles(query) │ │ search(query) │ │
123
+ │ │ → BM25 ranking │ │ → Semantic ranking │ │
124
+ │ │ │ │ │ │
125
+ │ └──────────────────────┘ └──────────────────────┘ │
126
+ │ │ │ │
127
+ │ │ │ │
128
+ │ └────────────┬───────────────┘ │
129
+ │ │ │
130
+ │ ┌─────▼──────┐ │
131
+ │ │ Hybrid │ │
132
+ │ │ Search │ │
133
+ │ │ Combines │ │
134
+ │ │ results │ │
135
+ │ └─────┬──────┘ │
136
+ │ │ │
137
+ │ ┌─────▼──────────────┐ │
138
+ │ │ API Response │ │
139
+ │ │ {path, snippet, │ │
140
+ │ │ score, ...} │ │
141
+ │ └────────────────────┘ │
142
+ │ │
143
+ └─────────────────────────────────────────────────────────────────┘
144
+
145
+ │ Returns
146
+
147
+ ┌─────────────────────────────────────────────────────────────────┐
148
+ │ Frontend Search UI (React) │
149
+ ├─────────────────────────────────────────────────────────────────┤
150
+ │ ⌘K Search → Results displayed with snippets & relevance scores │
151
+ └─────────────────────────────────────────────────────────────────┘
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Settings & Configuration Flow
157
+
158
+ ```
159
+ ┌─────────────────┐
160
+ │ User Updates │
161
+ │ Settings UI │
162
+ └────────┬────────┘
163
+
164
+ │ POST /api/settings
165
+
166
+ ┌──────────────────────────────┐
167
+ │ API Handler │
168
+ │ (app/api/settings/route.ts) │
169
+ ├──────────────────────────────┤
170
+ │ • Validate input │
171
+ │ • Parse providers[] │
172
+ │ • Merge with existing config │
173
+ │ • Clear proxy compat cache │
174
+ └────────┬─────────────────────┘
175
+
176
+ │ writeSettings()
177
+
178
+ ┌──────────────────────────────┐
179
+ │ lib/settings.ts │
180
+ ├──────────────────────────────┤
181
+ │ • Temp file write │
182
+ │ • Atomic rename │
183
+ │ • Merge to preserve fields │
184
+ └────────┬─────────────────────┘
185
+
186
+
187
+ ┌──────────────────────────────┐
188
+ │ ~/.mindos/config.json │
189
+ │ (persistent storage) │
190
+ └──────────────────────────────┘
191
+
192
+ ├─────────► invalidateCache()
193
+
194
+ └─────────► File watchers invalidate
195
+ search & tree index
196
+ ```
197
+
198
+ ---
199
+
200
+ ## Search Index Lifecycle
201
+
202
+ ```
203
+ ┌──────────────────────────────────────────────────────┐
204
+ │ User performs search query │
205
+ │ GET /api/search?q=query │
206
+ └────────────────────┬─────────────────────────────────┘
207
+
208
+
209
+ ┌────────────────────────┐
210
+ │ Is index built? │
211
+ └────────────┬───────────┘
212
+
213
+ ┌───────────┴────────────┐
214
+ │ No Yes │
215
+ ▼ ▼
216
+ ┌────────────┐ ┌──────────────────┐
217
+ │ Try load │ │ Use existing │
218
+ │ from disk │ │ index │
219
+ └────┬───────┘ └────────┬─────────┘
220
+ │ │
221
+ ┌────▼──────────┐ │
222
+ │ Stale? │ │
223
+ └──┬───────┬────┘ │
224
+ Yes │ │ No │
225
+ ▼ │ │
226
+ ┌───┐ │ │
227
+ │ │ Rebuild │
228
+ │ │ │ │
229
+ └───┘ └────┬───────────┘
230
+ │ │
231
+ │ ┌──────▼────────────┐
232
+ │ │ SearchIndex │
233
+ │ │ (in memory) │
234
+ │ └──────┬────────────┘
235
+ │ │
236
+ │ │ query
237
+ │ ▼
238
+ │ ┌──────────────────┐
239
+ │ │ BM25 Scoring │
240
+ │ │ (O(candidates)) │
241
+ │ └──────┬───────────┘
242
+ │ │
243
+ │ ┌──────▼────────────┐
244
+ │ │ Return Results │
245
+ │ └──────┬────────────┘
246
+ │ │
247
+ └──────┬────┘
248
+
249
+ ┌─────▼─────────┐
250
+ │ Lazy Persist │
251
+ │ (5s debounce) │
252
+ └─────┬─────────┘
253
+
254
+ ┌─────▼──────────────────┐
255
+ │ ~/.mindos/ │
256
+ │ search-index.json │
257
+ └───────────────────────┘
258
+ ```
259
+
260
+ ---
261
+
262
+ ## Provider Resolution Chain
263
+
264
+ ```
265
+ REQUEST: effectiveAiConfig(providerOverride)
266
+
267
+ ├─► providerOverride specified?
268
+ │ │
269
+ │ ├─► Yes: Use that provider ID
270
+ │ │ Find in providers[]
271
+ │ │
272
+ │ └─► No: Use activeProvider
273
+
274
+
275
+ ┌─────────────────────────────────┐
276
+ │ Provider found in config.json? │
277
+ └────────┬────────────────────────┘
278
+
279
+ ┌────┴────┐
280
+ │ Yes │ No
281
+ ▼ ▼
282
+ ┌────────┐ ┌──────────────────┐
283
+ │ Use │ │ Try env var: │
284
+ │ config │ │ e.g., OPENAI_ │
285
+ │ value │ │ API_KEY │
286
+ └────┬───┘ └────────┬─────────┘
287
+ │ │
288
+ │ ┌────┴────────┐
289
+ │ │ Set? │
290
+ │ │ │
291
+ │ ├─► Yes: Use env var
292
+ │ │
293
+ │ └─► No: Check preset default
294
+ │ (e.g., Ollama has fallback)
295
+
296
+ └──────────┬──────────────────┘
297
+
298
+ ┌──────▼──────────┐
299
+ │ Return: │
300
+ │ {provider, key, │
301
+ │ model, url} │
302
+ └─────────────────┘
303
+ ```
304
+
305
+ ---
306
+
307
+ ## File Organization for RAG Extension
308
+
309
+ ```
310
+ Current Structure:
311
+ lib/
312
+ ├── core/
313
+ │ ├── search.ts ← BM25 algorithm
314
+ │ ├── search-index.ts ← Inverted index
315
+ │ └── types.ts ← SearchResult interface
316
+
317
+ ├── settings.ts
318
+ ├── agent/
319
+ │ └── providers.ts
320
+
321
+ app/api/
322
+ └── search/
323
+ └── route.ts
324
+
325
+
326
+ Proposed RAG Extension:
327
+ lib/
328
+ ├── core/
329
+ │ ├── search.ts (unchanged)
330
+ │ ├── search-index.ts (unchanged)
331
+ │ ├── embedding-index.ts ← NEW: Vector storage
332
+ │ ├── embedding-client.ts ← NEW: Embedding API
333
+ │ └── types.ts (add RagResult type)
334
+
335
+ ├── rag/ ← NEW module
336
+ │ ├── config.ts ← Config helpers
337
+ │ ├── search.ts ← Unified search API
338
+ │ ├── index.ts ← Exports
339
+ │ └── types.ts ← RagConfig interface
340
+
341
+ ├── settings.ts (add rag field)
342
+ └── agent/
343
+ ├── providers.ts (optional: embedding providers)
344
+ └── embedding-provider.ts ← NEW: Abstraction
345
+
346
+ app/api/
347
+ ├── search/
348
+ │ └── route.ts (add ?type=hybrid param)
349
+
350
+ ├── rag/ ← NEW routes
351
+ │ ├── rebuild/route.ts
352
+ │ ├── search/route.ts
353
+ │ └── status/route.ts
354
+
355
+ components/settings/
356
+ ├── RagTab.tsx ← NEW: RAG settings UI
357
+ └── AiTab.tsx (possibly reuse for embedding provider selection)
358
+ ```
359
+
360
+ ---
361
+
362
+ ## Settings Tab Wiring Pattern
363
+
364
+ ```
365
+ RagTab.tsx (Component)
366
+
367
+ ├─► GET /api/settings
368
+ │ │
369
+ │ └─► Returns: SettingsData
370
+ │ {
371
+ │ ai: {...current LLM providers...},
372
+ │ rag: {...RAG config...},
373
+ │ envOverrides: {RAG_EMBEDDING_API_KEY: boolean, ...}
374
+ │ }
375
+
376
+ ├─► User changes setting
377
+ │ │
378
+ │ └─► POST /api/settings
379
+ │ {
380
+ │ rag: {
381
+ │ enabled: true,
382
+ │ embeddingProvider: "p_abc123",
383
+ │ ...
384
+ │ }
385
+ │ }
386
+
387
+ └─► API validates + persists
388
+
389
+ ├─► parseRagConfig() safe parsing
390
+
391
+ └─► writeSettings() atomic write
392
+ ```
393
+
394
+ ---
395
+
396
+ ## Key Interfaces (TypeScript)
397
+
398
+ ```typescript
399
+ // Settings
400
+ interface ServerSettings {
401
+ ai: AiConfig;
402
+ agent?: AgentConfig;
403
+ rag?: RagConfig; // NEW
404
+ mindRoot: string;
405
+ // ... others
406
+ }
407
+
408
+ // Provider
409
+ interface Provider {
410
+ id: string; // p_*
411
+ name: string;
412
+ protocol: ProviderId; // "openai" | "anthropic" | ...
413
+ apiKey: string;
414
+ model: string;
415
+ baseUrl: string;
416
+ }
417
+
418
+ // Search Results (existing)
419
+ interface SearchResult {
420
+ path: string;
421
+ snippet: string;
422
+ score: number;
423
+ occurrences: number;
424
+ }
425
+
426
+ // RAG Config (NEW)
427
+ interface RagConfig {
428
+ enabled: boolean;
429
+ embeddingProvider: string; // provider ID from ai.providers
430
+ embeddingModel: string; // e.g., "text-embedding-3-small"
431
+ embeddingApiKey?: string; // optional if using env var
432
+ indexType: 'bm25' | 'hybrid' | 'semantic';
433
+ chunkSize: number; // chars per chunk
434
+ chunkOverlap: number; // overlap between chunks
435
+ }
436
+
437
+ // Hybrid Search Result (NEW)
438
+ interface HybridSearchResult extends SearchResult {
439
+ type: 'bm25' | 'semantic';
440
+ semanticScore?: number;
441
+ }
442
+ ```
443
+
444
+ ---
445
+
446
+ ## Summary: Data Flow for RAG Query
447
+
448
+ ```
449
+ User Query
450
+
451
+
452
+ ⌘K Search or /api/search?q=...
453
+
454
+ ├─► BM25 Search
455
+ │ ├─► Tokenize query
456
+ │ ├─► Index lookup → candidates
457
+ │ ├─► BM25 scoring → results
458
+ │ └─► Top 10
459
+
460
+ ├─► EmbeddingIndex Search (if enabled)
461
+ │ ├─► Get embedding config from settings
462
+ │ ├─► EmbeddingClient.embed(query)
463
+ │ │ └─► Call external API (OpenAI, etc.)
464
+ │ ├─► Vector similarity search
465
+ │ └─► Top 10
466
+
467
+ └─► Combine Results (if hybrid)
468
+ ├─► Merge scores (normalize + weight)
469
+ ├─► Deduplicate
470
+ ├─► Sort by combined score
471
+ └─► Return Top N results
472
+
473
+ ├─► path: string
474
+ ├─► snippet: string
475
+ ├─► score: number
476
+ ├─► type: 'bm25' | 'semantic'
477
+ └─► semanticScore?: number
478
+ ```
479
+
480
+ ---
481
+
482
+ This architecture diagram shows:
483
+ 1. How settings flow through the system
484
+ 2. How providers are managed and resolved
485
+ 3. How search indices are built, cached, and invalidated
486
+ 4. How RAG would integrate alongside existing search
487
+ 5. The modular, extensible design patterns used throughout
488
+