@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.
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +19 -19
- package/_standalone/.next/build-manifest.json +3 -3
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- package/_standalone/.next/react-loadable-manifest.json +4 -4
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +1 -1
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +4 -4
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-docx/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/feishu/long-connection/event/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/feishu/long-connection/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/obsidian/compat-report/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/obsidian/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/prewarm/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/capture/history/page.js +1 -1
- package/_standalone/.next/server/app/capture/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/capture/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/capture/page.js +1 -1
- package/_standalone/.next/server/app/capture/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/capture/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +1 -1
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +1 -1
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +1 -1
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/login/page.js +1 -1
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +1 -1
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +1 -1
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/todo/page.js +1 -1
- package/_standalone/.next/server/app/todo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/todo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +2 -2
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js +2 -0
- package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app-paths-manifest.json +19 -19
- package/_standalone/.next/server/chunks/2250.js +1 -1
- package/_standalone/.next/server/chunks/{1057.js → 3861.js} +2 -2
- package/_standalone/.next/server/chunks/4802.js +30 -30
- package/_standalone/.next/server/chunks/8388.js +1 -1
- package/_standalone/.next/server/middleware-build-manifest.js +1 -1
- package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/_standalone/.next/server/pages/500.html +2 -2
- package/_standalone/.next/server/server-reference-manifest.js +1 -1
- package/_standalone/.next/server/server-reference-manifest.json +1 -1
- package/_standalone/.next/static/chunks/{5581-bae715e40d227b5f.js → 5581-beecbc4ca5625aa9.js} +2 -2
- package/_standalone/.next/static/chunks/6762.c871d0bf3f45ba87.js +1 -0
- package/_standalone/.next/static/chunks/{8064-e65acd2762132099.js → 8064-acac37daf946082b.js} +1 -1
- package/_standalone/.next/static/chunks/{3985.695651f6b5cd768c.js → 8984.91fb8cde1983c564.js} +2 -2
- package/_standalone/.next/static/chunks/app/{layout-0cf6f2a65f605a0d.js → layout-20faba3bc0af7cd2.js} +19 -19
- package/_standalone/.next/static/chunks/app/trash/page-0c2c67929b71ef71.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-fd06cc989103ebe7.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-dba70888697ba910.js +12 -0
- package/_standalone/.next/static/chunks/app/wiki/page-9bc1fec84d343290.js +14 -0
- package/_standalone/.next/static/chunks/webpack-3c1d0331f1da64b8.js +1 -0
- package/_standalone/.next/trace +97 -97
- package/_standalone/MINDOS_ARCHITECTURE_DIAGRAM.md +488 -0
- package/_standalone/MINDOS_EXPLORATION_SUMMARY.md +229 -0
- package/_standalone/MINDOS_INFRASTRUCTURE_ANALYSIS.md +732 -0
- package/_standalone/__tests__/api/mcp-install.test.ts +8 -2
- package/_standalone/__tests__/core/embedding-provider.test.ts +78 -0
- package/_standalone/__tests__/skills/mindos-skill-copy-alignment.test.ts +10 -4
- package/_standalone/components/ask/AskHeader.tsx +25 -18
- package/_standalone/components/ask/SessionHistoryPanel.tsx +21 -12
- package/_standalone/components/settings/AiTab.tsx +3 -0
- package/_standalone/data/skills/mindos/SKILL.md +269 -0
- package/_standalone/data/skills/mindos/references/write-supplement.md +119 -0
- package/_standalone/data/skills/mindos-zh/SKILL.md +227 -0
- package/_standalone/data/skills/mindos-zh/references/write-supplement.md +119 -0
- package/app/__tests__/api/mcp-install.test.ts +8 -2
- package/app/__tests__/core/embedding-provider.test.ts +78 -0
- package/app/__tests__/skills/mindos-skill-copy-alignment.test.ts +10 -4
- package/app/app/api/ask/route.ts +14 -9
- package/app/app/view/[...path]/ViewPageClient.tsx +15 -12
- package/app/app/view/[...path]/not-found.tsx +9 -5
- package/app/components/ask/AskHeader.tsx +25 -18
- package/app/components/ask/SessionHistoryPanel.tsx +21 -12
- package/app/components/settings/AiTab.tsx +3 -0
- package/app/eslint.config.mjs +18 -0
- package/app/lib/core/embedding-provider.ts +12 -4
- package/app/lib/i18n/modules/settings.ts +2 -0
- package/app/package-lock.json +20214 -0
- package/app/tsconfig.tsbuildinfo +1 -0
- package/app/vitest.config.ts +14 -0
- package/assets/demo-flow-zh.html +622 -0
- package/assets/images/demo-flow-dark.png +0 -0
- package/assets/images/demo-flow-dark.webp +0 -0
- package/assets/images/demo-flow-light.png +0 -0
- package/assets/images/demo-flow-light.webp +0 -0
- package/assets/images/demo-flow-zh-dark.png +0 -0
- package/assets/images/demo-flow-zh-dark.webp +0 -0
- package/assets/images/demo-flow-zh-light.png +0 -0
- package/assets/images/demo-flow-zh-light.webp +0 -0
- package/assets/images/gui-sync-cv.png +0 -0
- package/assets/images/gui-sync-cv.webp +0 -0
- package/assets/images/mindos-chat.png +0 -0
- package/assets/images/mindos-chat.webp +0 -0
- package/assets/images/mindos-dashboard.png +0 -0
- package/assets/images/mindos-dashboard.webp +0 -0
- package/assets/images/mindos-echo.png +0 -0
- package/assets/images/mindos-echo.webp +0 -0
- package/assets/images/mindos-home.png +0 -0
- package/assets/images/mindos-home.webp +0 -0
- package/assets/images/wechat-qr.png +0 -0
- package/bin/lib/mcp-build.js +8 -0
- package/mcp/package-lock.json +2202 -0
- package/mcp/src/index.ts +783 -0
- package/package.json +13 -1
- package/.env.local.example +0 -38
- package/.playwright-cli/page-2026-04-12T12-26-53-393Z.yml +0 -6
- package/.playwright-cli/page-2026-04-12T12-27-20-256Z.yml +0 -120
- package/.syncinclude +0 -105
- package/MINDOS_SEARCH_DIAGRAM.txt +0 -243
- package/_standalone/.next/static/chunks/576.3cae31209383ddbd.js +0 -1
- package/_standalone/.next/static/chunks/app/trash/page-085f121c0815d542.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-2a6eec67e91eaaf9.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-faeaf8c09c1c6d7c.js +0 -12
- package/_standalone/.next/static/chunks/webpack-a1bb35f2d540e463.js +0 -1
- package/scripts/build-runtime-archive.sh +0 -151
- package/scripts/fix-postcss-deps.cjs +0 -75
- package/scripts/gen-renderer-index.js +0 -64
- package/scripts/hooks/block-public-merge.sh +0 -42
- package/scripts/hooks/pre-merge-commit +0 -4
- package/scripts/hooks/pre-push +0 -37
- package/scripts/hooks/prepare-commit-msg +0 -12
- package/scripts/migrate-agent-audit-log.js +0 -170
- package/scripts/migrate-agent-diff.js +0 -146
- package/scripts/parse-syncinclude.sh +0 -92
- package/scripts/prepare-standalone.mjs +0 -83
- package/scripts/release.sh +0 -145
- package/scripts/setup.js +0 -1427
- package/scripts/test-oss-upload.sh +0 -100
- package/scripts/verify-standalone.mjs +0 -129
- package/scripts/write-build-stamp.js +0 -40
- /package/_standalone/.next/static/{q5RP_Mx8BrCfvVDnLpRRc → 0UlbV2rA2i4B-8YYg41wQ}/_buildManifest.js +0 -0
- /package/_standalone/.next/static/{q5RP_Mx8BrCfvVDnLpRRc → 0UlbV2rA2i4B-8YYg41wQ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# MindOS Exploration Summary
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
This document provides a high-level summary of the MindOS codebase exploration conducted on 2026-04-10. The full detailed analysis is in `MINDOS_INFRASTRUCTURE_ANALYSIS.md`.
|
|
5
|
+
|
|
6
|
+
## Key Findings
|
|
7
|
+
|
|
8
|
+
### 1. Settings System
|
|
9
|
+
- **Location**: `~/.mindos/config.json` (single JSON file per user)
|
|
10
|
+
- **I/O**: `lib/settings.ts` (readSettings/writeSettings)
|
|
11
|
+
- **Pattern**: Atomic writes via temp file + rename (crash-safe)
|
|
12
|
+
- **Extension**: Add new field to `ServerSettings` interface, parse safely, add UI tab
|
|
13
|
+
- **Current size**: Real config observed ~2KB with ~5 providers
|
|
14
|
+
|
|
15
|
+
### 2. LLM API Key Management
|
|
16
|
+
- **Architecture**: Unified `Provider` interface - all LLM providers use same model
|
|
17
|
+
- **Structure**: Each provider has ID (p_*), name, protocol, apiKey, model, baseUrl
|
|
18
|
+
- **Provider Types**: 20+ supported (Anthropic, OpenAI, Google, Groq, DeepSeek, Ollama, etc.)
|
|
19
|
+
- **Resolution Chain**: Config file → Environment variables → Preset defaults
|
|
20
|
+
- **File**: `lib/agent/providers.ts` (PROVIDER_PRESETS registry)
|
|
21
|
+
- **Migration**: Auto-detects old format, transparently migrates to new unified model
|
|
22
|
+
|
|
23
|
+
### 3. Search Infrastructure
|
|
24
|
+
- **Dual System**:
|
|
25
|
+
1. **Core Search (BM25)**: `lib/core/search.ts` - Backend, MCP-friendly, full-text
|
|
26
|
+
2. **App Search (Fuse.js)**: `lib/fs.ts` - Frontend, fuzzy matching, UI overlay
|
|
27
|
+
- **Index**: Inverted index in `lib/core/search-index.ts`, persists to `~/.mindos/search-index.json`
|
|
28
|
+
- **Updates**: Incremental on file changes (O(tokens) not O(all-files))
|
|
29
|
+
- **Features**: CJK support, PDF text extraction, multi-term BM25 scoring
|
|
30
|
+
- **API Route**: `GET /api/search?q=query`
|
|
31
|
+
|
|
32
|
+
### 4. Package Ecosystem
|
|
33
|
+
- **Relevant deps**: fuse.js, pdfjs-dist, @mariozechner/pi-ai, zod, zustand
|
|
34
|
+
- **NO existing**: OpenAI SDK, transformers, vector databases
|
|
35
|
+
- **For RAG**: Would need to add embedding client + lightweight vector store
|
|
36
|
+
|
|
37
|
+
### 5. Feature Organization
|
|
38
|
+
- **Pattern**: Optional features are modular (e.g., web-search in lib/agent/)
|
|
39
|
+
- **Settings Features**: Get UI tab + API route wiring
|
|
40
|
+
- **Example**: KnowledgeTab (git sync settings)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## File Locations Reference
|
|
45
|
+
|
|
46
|
+
### Core Settings
|
|
47
|
+
- `lib/settings.ts` - Main settings I/O
|
|
48
|
+
- `lib/custom-endpoints.ts` - Provider unified interface
|
|
49
|
+
- `app/api/settings/route.ts` - Settings API endpoint
|
|
50
|
+
|
|
51
|
+
### Provider Management
|
|
52
|
+
- `lib/agent/providers.ts` - Provider presets & metadata
|
|
53
|
+
- `lib/settings-ai-client.ts` - Client-side settings mirror
|
|
54
|
+
|
|
55
|
+
### Search
|
|
56
|
+
- `lib/core/search.ts` - BM25 algorithm + core search
|
|
57
|
+
- `lib/core/search-index.ts` - Inverted index class
|
|
58
|
+
- `lib/core/types.ts` - SearchResult interface
|
|
59
|
+
- `lib/fs.ts` - App-level search wrapper, cache management
|
|
60
|
+
- `app/api/search/route.ts` - Search API endpoint
|
|
61
|
+
|
|
62
|
+
### UI
|
|
63
|
+
- `components/settings/AiTab.tsx` - LLM provider UI
|
|
64
|
+
- `components/settings/` - Other setting tabs
|
|
65
|
+
|
|
66
|
+
### Configuration Files
|
|
67
|
+
- `~/.mindos/config.json` - User settings
|
|
68
|
+
- `~/.mindos/search-index.json` - Persisted search index
|
|
69
|
+
- `~/.mindos/sync-state.json` - Git sync state
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Design Patterns Worth Following
|
|
74
|
+
|
|
75
|
+
1. **Atomic Persistence**: Temp file + rename (prevents corruption)
|
|
76
|
+
2. **Lazy Building**: Index built on first use, not at startup
|
|
77
|
+
3. **Incremental Updates**: Mutations update index O(tokens) not O(all-files)
|
|
78
|
+
4. **Safe Type Coercion**: All parsing includes fallbacks to sensible defaults
|
|
79
|
+
5. **Environment Variable Override**: Settings can be overridden by env vars
|
|
80
|
+
6. **Auto-Migration**: Old formats detected and transparently upgraded
|
|
81
|
+
7. **Config Merging**: New writes merge with existing to preserve unknown fields
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## For Adding Embedding-Based RAG
|
|
86
|
+
|
|
87
|
+
### Recommended Structure
|
|
88
|
+
```
|
|
89
|
+
lib/
|
|
90
|
+
├── rag/ (NEW)
|
|
91
|
+
│ ├── config.ts - RAG configuration helpers
|
|
92
|
+
│ ├── search.ts - Unified BM25 + semantic search interface
|
|
93
|
+
│ └── index.ts - Exports
|
|
94
|
+
├── core/
|
|
95
|
+
│ ├── embedding-index.ts (NEW) - Vector storage
|
|
96
|
+
│ ├── embedding-client.ts (NEW) - Embedding API calls
|
|
97
|
+
│ └── ...existing...
|
|
98
|
+
|
|
99
|
+
app/api/
|
|
100
|
+
├── rag/ (NEW)
|
|
101
|
+
│ ├── rebuild/route.ts
|
|
102
|
+
│ ├── search/route.ts
|
|
103
|
+
│ └── status/route.ts
|
|
104
|
+
|
|
105
|
+
components/settings/
|
|
106
|
+
├── RagTab.tsx (NEW) - UI for RAG configuration
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Configuration Pattern
|
|
110
|
+
```typescript
|
|
111
|
+
interface RagConfig {
|
|
112
|
+
enabled: boolean;
|
|
113
|
+
embeddingModel: string; // e.g., "text-embedding-3-small"
|
|
114
|
+
embeddingProvider: ProviderId; // Reuse existing provider system
|
|
115
|
+
embeddingApiKey?: string; // Optional if using env var
|
|
116
|
+
indexType: 'bm25' | 'hybrid' | 'semantic';
|
|
117
|
+
chunkSize: number;
|
|
118
|
+
chunkOverlap: number;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Add to ServerSettings in lib/settings.ts:
|
|
122
|
+
rag?: RagConfig;
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### API Paths
|
|
126
|
+
- `POST /api/rag/rebuild` - Rebuild embedding index
|
|
127
|
+
- `GET /api/rag/status` - Index statistics
|
|
128
|
+
- `GET /api/search?q=...&type=hybrid` - Hybrid search (BM25 + semantic)
|
|
129
|
+
- `POST /api/settings/embedding-models` - List available models
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Quick Reference: How MindOS Extends
|
|
134
|
+
|
|
135
|
+
### Adding a New LLM Provider
|
|
136
|
+
1. Add to `ProviderId` type in `lib/agent/providers.ts`
|
|
137
|
+
2. Add to `PROVIDER_PRESETS` with metadata
|
|
138
|
+
3. Add env var mapping in `getApiKeyEnvVar()`
|
|
139
|
+
4. UI automatically updates (uses PROVIDER_PRESETS registry)
|
|
140
|
+
|
|
141
|
+
### Adding a New Settings Field
|
|
142
|
+
1. Add to `ServerSettings` interface in `lib/settings.ts`
|
|
143
|
+
2. Add parsing function with safe defaults
|
|
144
|
+
3. Add to `DEFAULTS` constant
|
|
145
|
+
4. Create UI tab in `components/settings/NewTab.tsx`
|
|
146
|
+
5. API route handles automatically (it's generic)
|
|
147
|
+
|
|
148
|
+
### Adding a New Search Feature
|
|
149
|
+
1. Create module in `lib/` or `lib/core/`
|
|
150
|
+
2. Implement similar index/query patterns
|
|
151
|
+
3. Add API route in `app/api/`
|
|
152
|
+
4. Wire into main search orchestrator
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Testing Notes
|
|
157
|
+
|
|
158
|
+
- Settings tests: `__tests__/api/settings.test.ts`
|
|
159
|
+
- Search tests: `__tests__/api/search.test.ts`
|
|
160
|
+
- Core search tests: `__tests__/lib/` directory
|
|
161
|
+
- Mock pattern: Use vitest with module mocking
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Environment Variables Supported
|
|
166
|
+
|
|
167
|
+
- `MIND_ROOT` - Override knowledge base location
|
|
168
|
+
- `MINDOS_WEB_PORT` - Web server port
|
|
169
|
+
- `AI_PROVIDER` - Default provider ID
|
|
170
|
+
- `ANTHROPIC_API_KEY` - Anthropic API key
|
|
171
|
+
- `OPENAI_API_KEY` - OpenAI API key
|
|
172
|
+
- (And similar for all supported providers)
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Caching & Invalidation Strategy
|
|
177
|
+
|
|
178
|
+
**Search Index Lifecycle:**
|
|
179
|
+
1. Lazy build on first search
|
|
180
|
+
2. Persisted to `~/.mindos/search-index.json`
|
|
181
|
+
3. TTL: 5 minutes (file watcher invalidates immediately)
|
|
182
|
+
4. On file change: Incremental update (not full rebuild)
|
|
183
|
+
5. On process exit: Flush pending updates (SIGTERM, SIGINT hooks)
|
|
184
|
+
|
|
185
|
+
**File Tree Cache:**
|
|
186
|
+
1. TTL: 30 seconds
|
|
187
|
+
2. File watcher invalidates immediately
|
|
188
|
+
3. Rebuilds on invalidation
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Critical Files for Planning RAG
|
|
193
|
+
|
|
194
|
+
1. **MUST READ**:
|
|
195
|
+
- `lib/settings.ts` - Settings system
|
|
196
|
+
- `lib/agent/providers.ts` - Provider model
|
|
197
|
+
- `lib/core/search.ts` - BM25 implementation
|
|
198
|
+
- `lib/core/search-index.ts` - Index pattern
|
|
199
|
+
|
|
200
|
+
2. **GOOD REFERENCE**:
|
|
201
|
+
- `components/settings/AiTab.tsx` - How to build settings UI
|
|
202
|
+
- `app/api/settings/route.ts` - API pattern
|
|
203
|
+
- `__tests__/api/settings.test.ts` - Testing pattern
|
|
204
|
+
|
|
205
|
+
3. **OPTIONAL**:
|
|
206
|
+
- `lib/agent/web-search.ts` - Example optional feature
|
|
207
|
+
- `lib/sync-config.ts` - Persistence utilities
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Next Steps for Implementation
|
|
212
|
+
|
|
213
|
+
1. ✅ Understand settings system architecture
|
|
214
|
+
2. ✅ Understand provider model and API key resolution
|
|
215
|
+
3. ✅ Understand search infrastructure (BM25 + index)
|
|
216
|
+
4. ⏭️ Plan embedding provider integration
|
|
217
|
+
5. ⏭️ Design RAG configuration schema
|
|
218
|
+
6. ⏭️ Implement EmbeddingClient abstraction
|
|
219
|
+
7. ⏭️ Implement EmbeddingIndex class
|
|
220
|
+
8. ⏭️ Wire up settings UI (RagTab.tsx)
|
|
221
|
+
9. ⏭️ Add API routes for RAG operations
|
|
222
|
+
10. ⏭️ Implement hybrid search combining BM25 + semantic
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
**Generated**: 2026-04-10
|
|
227
|
+
**Repository**: MindOS (sop_note/app)
|
|
228
|
+
**Analysis Scope**: Settings system, LLM API management, search infrastructure
|
|
229
|
+
**Goal**: Planning for embedding-based RAG search integration
|