superlocalmemory 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATTRIBUTION.md +140 -0
- package/CHANGELOG.md +1749 -0
- package/LICENSE +21 -0
- package/README.md +600 -0
- package/bin/aider-smart +72 -0
- package/bin/slm +202 -0
- package/bin/slm-npm +73 -0
- package/bin/slm.bat +195 -0
- package/bin/slm.cmd +10 -0
- package/bin/superlocalmemoryv2:list +3 -0
- package/bin/superlocalmemoryv2:profile +3 -0
- package/bin/superlocalmemoryv2:recall +3 -0
- package/bin/superlocalmemoryv2:remember +3 -0
- package/bin/superlocalmemoryv2:reset +3 -0
- package/bin/superlocalmemoryv2:status +3 -0
- package/completions/slm.bash +58 -0
- package/completions/slm.zsh +76 -0
- package/configs/antigravity-mcp.json +13 -0
- package/configs/chatgpt-desktop-mcp.json +7 -0
- package/configs/claude-desktop-mcp.json +15 -0
- package/configs/codex-mcp.toml +13 -0
- package/configs/cody-commands.json +29 -0
- package/configs/continue-mcp.yaml +14 -0
- package/configs/continue-skills.yaml +26 -0
- package/configs/cursor-mcp.json +15 -0
- package/configs/gemini-cli-mcp.json +11 -0
- package/configs/jetbrains-mcp.json +11 -0
- package/configs/opencode-mcp.json +12 -0
- package/configs/perplexity-mcp.json +9 -0
- package/configs/vscode-copilot-mcp.json +12 -0
- package/configs/windsurf-mcp.json +16 -0
- package/configs/zed-mcp.json +12 -0
- package/docs/ARCHITECTURE.md +877 -0
- package/docs/CLI-COMMANDS-REFERENCE.md +425 -0
- package/docs/COMPETITIVE-ANALYSIS.md +210 -0
- package/docs/COMPRESSION-README.md +390 -0
- package/docs/GRAPH-ENGINE.md +503 -0
- package/docs/MCP-MANUAL-SETUP.md +720 -0
- package/docs/MCP-TROUBLESHOOTING.md +787 -0
- package/docs/PATTERN-LEARNING.md +363 -0
- package/docs/PROFILES-GUIDE.md +453 -0
- package/docs/RESET-GUIDE.md +353 -0
- package/docs/SEARCH-ENGINE-V2.2.0.md +748 -0
- package/docs/SEARCH-INTEGRATION-GUIDE.md +502 -0
- package/docs/UI-SERVER.md +254 -0
- package/docs/UNIVERSAL-INTEGRATION.md +432 -0
- package/docs/V2.2.0-OPTIONAL-SEARCH.md +666 -0
- package/docs/WINDOWS-INSTALL-README.txt +34 -0
- package/docs/WINDOWS-POST-INSTALL.txt +45 -0
- package/docs/example_graph_usage.py +148 -0
- package/hooks/memory-list-skill.js +130 -0
- package/hooks/memory-profile-skill.js +284 -0
- package/hooks/memory-recall-skill.js +109 -0
- package/hooks/memory-remember-skill.js +127 -0
- package/hooks/memory-reset-skill.js +274 -0
- package/install-skills.sh +436 -0
- package/install.ps1 +417 -0
- package/install.sh +755 -0
- package/mcp_server.py +585 -0
- package/package.json +94 -0
- package/requirements-core.txt +24 -0
- package/requirements.txt +10 -0
- package/scripts/postinstall.js +126 -0
- package/scripts/preuninstall.js +57 -0
- package/skills/slm-build-graph/SKILL.md +423 -0
- package/skills/slm-list-recent/SKILL.md +348 -0
- package/skills/slm-recall/SKILL.md +325 -0
- package/skills/slm-remember/SKILL.md +194 -0
- package/skills/slm-status/SKILL.md +363 -0
- package/skills/slm-switch-profile/SKILL.md +442 -0
- package/src/__pycache__/cache_manager.cpython-312.pyc +0 -0
- package/src/__pycache__/embedding_engine.cpython-312.pyc +0 -0
- package/src/__pycache__/graph_engine.cpython-312.pyc +0 -0
- package/src/__pycache__/hnsw_index.cpython-312.pyc +0 -0
- package/src/__pycache__/hybrid_search.cpython-312.pyc +0 -0
- package/src/__pycache__/memory-profiles.cpython-312.pyc +0 -0
- package/src/__pycache__/memory-reset.cpython-312.pyc +0 -0
- package/src/__pycache__/memory_compression.cpython-312.pyc +0 -0
- package/src/__pycache__/memory_store_v2.cpython-312.pyc +0 -0
- package/src/__pycache__/migrate_v1_to_v2.cpython-312.pyc +0 -0
- package/src/__pycache__/pattern_learner.cpython-312.pyc +0 -0
- package/src/__pycache__/query_optimizer.cpython-312.pyc +0 -0
- package/src/__pycache__/search_engine_v2.cpython-312.pyc +0 -0
- package/src/__pycache__/setup_validator.cpython-312.pyc +0 -0
- package/src/__pycache__/tree_manager.cpython-312.pyc +0 -0
- package/src/cache_manager.py +520 -0
- package/src/embedding_engine.py +671 -0
- package/src/graph_engine.py +970 -0
- package/src/hnsw_index.py +626 -0
- package/src/hybrid_search.py +693 -0
- package/src/memory-profiles.py +518 -0
- package/src/memory-reset.py +485 -0
- package/src/memory_compression.py +999 -0
- package/src/memory_store_v2.py +1088 -0
- package/src/migrate_v1_to_v2.py +638 -0
- package/src/pattern_learner.py +898 -0
- package/src/query_optimizer.py +513 -0
- package/src/search_engine_v2.py +403 -0
- package/src/setup_validator.py +479 -0
- package/src/tree_manager.py +720 -0
package/install.ps1
ADDED
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
# ============================================================================
|
|
2
|
+
# SuperLocalMemory V2.2.0 - Windows Installation Script (PowerShell)
|
|
3
|
+
# Copyright (c) 2026 Varun Pratap Bhardwaj
|
|
4
|
+
# Licensed under MIT License
|
|
5
|
+
# Repository: https://github.com/varun369/SuperLocalMemoryV2
|
|
6
|
+
# ============================================================================
|
|
7
|
+
|
|
8
|
+
$ErrorActionPreference = "Stop"
|
|
9
|
+
|
|
10
|
+
$INSTALL_DIR = Join-Path $env:USERPROFILE ".claude-memory"
|
|
11
|
+
$REPO_DIR = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
12
|
+
|
|
13
|
+
# Auto-detect non-interactive environment
|
|
14
|
+
$NON_INTERACTIVE = $false
|
|
15
|
+
if (-not [Environment]::UserInteractive) {
|
|
16
|
+
$NON_INTERACTIVE = $true
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
# Parse command line arguments
|
|
20
|
+
param(
|
|
21
|
+
[switch]$NonInteractive,
|
|
22
|
+
[switch]$Auto,
|
|
23
|
+
[switch]$Yes,
|
|
24
|
+
[switch]$y
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
if ($NonInteractive -or $Auto -or $Yes -or $y) {
|
|
28
|
+
$NON_INTERACTIVE = $true
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
# Print banner
|
|
32
|
+
Write-Host ""
|
|
33
|
+
Write-Host "=================================================================="
|
|
34
|
+
Write-Host " SuperLocalMemory V2.2.0 - Windows Installation "
|
|
35
|
+
Write-Host " by Varun Pratap Bhardwaj "
|
|
36
|
+
Write-Host " https://github.com/varun369/SuperLocalMemoryV2 "
|
|
37
|
+
Write-Host "=================================================================="
|
|
38
|
+
Write-Host ""
|
|
39
|
+
|
|
40
|
+
# Show mode if non-interactive
|
|
41
|
+
if ($NON_INTERACTIVE) {
|
|
42
|
+
Write-Host "🤖 Running in non-interactive mode" -ForegroundColor Cyan
|
|
43
|
+
Write-Host " Skipping optional prompts, using defaults" -ForegroundColor Cyan
|
|
44
|
+
Write-Host ""
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
# Check Python version
|
|
48
|
+
Write-Host "Checking Python version..."
|
|
49
|
+
try {
|
|
50
|
+
$PYTHON_VERSION = & python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" 2>&1
|
|
51
|
+
$PYTHON_MAJOR = & python -c "import sys; print(sys.version_info.major)" 2>&1
|
|
52
|
+
$PYTHON_MINOR = & python -c "import sys; print(sys.version_info.minor)" 2>&1
|
|
53
|
+
|
|
54
|
+
if ([int]$PYTHON_MAJOR -lt 3 -or ([int]$PYTHON_MAJOR -eq 3 -and [int]$PYTHON_MINOR -lt 8)) {
|
|
55
|
+
Write-Host "ERROR: Python 3.8+ required (found $PYTHON_VERSION)" -ForegroundColor Red
|
|
56
|
+
exit 1
|
|
57
|
+
}
|
|
58
|
+
Write-Host "OK Python $PYTHON_VERSION" -ForegroundColor Green
|
|
59
|
+
} catch {
|
|
60
|
+
Write-Host "ERROR: Python not found in PATH" -ForegroundColor Red
|
|
61
|
+
Write-Host "Install Python 3.8+ from https://www.python.org/downloads/" -ForegroundColor Yellow
|
|
62
|
+
Write-Host "Make sure to check 'Add Python to PATH' during installation" -ForegroundColor Yellow
|
|
63
|
+
exit 1
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
# Create installation directory
|
|
67
|
+
Write-Host ""
|
|
68
|
+
Write-Host "Creating installation directory..."
|
|
69
|
+
if (-not (Test-Path $INSTALL_DIR)) {
|
|
70
|
+
New-Item -ItemType Directory -Path $INSTALL_DIR -Force | Out-Null
|
|
71
|
+
}
|
|
72
|
+
Write-Host "OK Directory: $INSTALL_DIR" -ForegroundColor Green
|
|
73
|
+
|
|
74
|
+
# Copy source files
|
|
75
|
+
Write-Host ""
|
|
76
|
+
Write-Host "Copying source files..."
|
|
77
|
+
$srcDir = Join-Path $REPO_DIR "src"
|
|
78
|
+
if (Test-Path $srcDir) {
|
|
79
|
+
Copy-Item -Path (Join-Path $srcDir "*") -Destination $INSTALL_DIR -Recurse -Force
|
|
80
|
+
Write-Host "OK Source files copied" -ForegroundColor Green
|
|
81
|
+
} else {
|
|
82
|
+
Write-Host "WARNING: Source directory not found, skipping" -ForegroundColor Yellow
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
# Copy hooks
|
|
86
|
+
Write-Host "Copying hooks..."
|
|
87
|
+
$hooksDir = Join-Path $REPO_DIR "hooks"
|
|
88
|
+
$installHooksDir = Join-Path $INSTALL_DIR "hooks"
|
|
89
|
+
if (-not (Test-Path $installHooksDir)) {
|
|
90
|
+
New-Item -ItemType Directory -Path $installHooksDir -Force | Out-Null
|
|
91
|
+
}
|
|
92
|
+
if (Test-Path $hooksDir) {
|
|
93
|
+
Copy-Item -Path (Join-Path $hooksDir "*") -Destination $installHooksDir -Recurse -Force
|
|
94
|
+
Write-Host "OK Hooks copied" -ForegroundColor Green
|
|
95
|
+
} else {
|
|
96
|
+
Write-Host "INFO: No hooks to copy" -ForegroundColor Yellow
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
# Copy CLI wrappers
|
|
100
|
+
Write-Host "Copying CLI wrappers..."
|
|
101
|
+
$binDir = Join-Path $REPO_DIR "bin"
|
|
102
|
+
$installBinDir = Join-Path $INSTALL_DIR "bin"
|
|
103
|
+
if (-not (Test-Path $installBinDir)) {
|
|
104
|
+
New-Item -ItemType Directory -Path $installBinDir -Force | Out-Null
|
|
105
|
+
}
|
|
106
|
+
if (Test-Path $binDir) {
|
|
107
|
+
Copy-Item -Path (Join-Path $binDir "*") -Destination $installBinDir -Recurse -Force
|
|
108
|
+
Write-Host "OK CLI wrappers installed" -ForegroundColor Green
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
# Copy API server
|
|
112
|
+
$apiServerPath = Join-Path $REPO_DIR "api_server.py"
|
|
113
|
+
if (Test-Path $apiServerPath) {
|
|
114
|
+
Copy-Item -Path $apiServerPath -Destination $INSTALL_DIR -Force
|
|
115
|
+
Write-Host "OK API server copied" -ForegroundColor Green
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
# Copy UI server
|
|
119
|
+
$uiServerPath = Join-Path $REPO_DIR "ui_server.py"
|
|
120
|
+
if (Test-Path $uiServerPath) {
|
|
121
|
+
Copy-Item -Path $uiServerPath -Destination $INSTALL_DIR -Force
|
|
122
|
+
Write-Host "OK UI server copied" -ForegroundColor Green
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
# Copy MCP server
|
|
126
|
+
$mcpServerPath = Join-Path $REPO_DIR "mcp_server.py"
|
|
127
|
+
if (Test-Path $mcpServerPath) {
|
|
128
|
+
Copy-Item -Path $mcpServerPath -Destination $INSTALL_DIR -Force
|
|
129
|
+
Write-Host "OK MCP Server installed" -ForegroundColor Green
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
# Copy config if not exists
|
|
133
|
+
$configPath = Join-Path $INSTALL_DIR "config.json"
|
|
134
|
+
if (-not (Test-Path $configPath)) {
|
|
135
|
+
Write-Host "Creating default config..."
|
|
136
|
+
$repoConfigPath = Join-Path $REPO_DIR "config.json"
|
|
137
|
+
if (Test-Path $repoConfigPath) {
|
|
138
|
+
Copy-Item -Path $repoConfigPath -Destination $configPath -Force
|
|
139
|
+
Write-Host "OK Config created" -ForegroundColor Green
|
|
140
|
+
} else {
|
|
141
|
+
Write-Host "WARNING: config.json not found, using defaults" -ForegroundColor Yellow
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
Write-Host "INFO: Config exists (keeping existing)" -ForegroundColor Yellow
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
# Create necessary directories
|
|
148
|
+
Write-Host ""
|
|
149
|
+
Write-Host "Creating directories..."
|
|
150
|
+
$directories = @("backups", "profiles", "vectors", "cold-storage", "jobs")
|
|
151
|
+
foreach ($dir in $directories) {
|
|
152
|
+
$dirPath = Join-Path $INSTALL_DIR $dir
|
|
153
|
+
if (-not (Test-Path $dirPath)) {
|
|
154
|
+
New-Item -ItemType Directory -Path $dirPath -Force | Out-Null
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
Write-Host "OK Directories created" -ForegroundColor Green
|
|
158
|
+
|
|
159
|
+
# Initialize database
|
|
160
|
+
Write-Host ""
|
|
161
|
+
Write-Host "Initializing database..."
|
|
162
|
+
$setupValidatorPath = Join-Path $INSTALL_DIR "setup_validator.py"
|
|
163
|
+
if (Test-Path $setupValidatorPath) {
|
|
164
|
+
try {
|
|
165
|
+
& python $setupValidatorPath --init 2>$null | Out-Null
|
|
166
|
+
Write-Host "OK Database initialized" -ForegroundColor Green
|
|
167
|
+
} catch {
|
|
168
|
+
Write-Host "WARNING: Database init failed, creating basic schema..." -ForegroundColor Yellow
|
|
169
|
+
# Fallback: create basic database
|
|
170
|
+
& python -c @"
|
|
171
|
+
import sqlite3
|
|
172
|
+
from pathlib import Path
|
|
173
|
+
db_path = Path.home() / '.claude-memory' / 'memory.db'
|
|
174
|
+
conn = sqlite3.connect(db_path)
|
|
175
|
+
cursor = conn.cursor()
|
|
176
|
+
cursor.execute('''CREATE TABLE IF NOT EXISTS memories (
|
|
177
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
178
|
+
content TEXT NOT NULL,
|
|
179
|
+
summary TEXT,
|
|
180
|
+
project_path TEXT,
|
|
181
|
+
project_name TEXT,
|
|
182
|
+
tags TEXT DEFAULT '[]',
|
|
183
|
+
category TEXT,
|
|
184
|
+
parent_id INTEGER,
|
|
185
|
+
tree_path TEXT DEFAULT '/',
|
|
186
|
+
depth INTEGER DEFAULT 0,
|
|
187
|
+
memory_type TEXT DEFAULT 'session',
|
|
188
|
+
importance INTEGER DEFAULT 5,
|
|
189
|
+
content_hash TEXT,
|
|
190
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
191
|
+
last_accessed TIMESTAMP,
|
|
192
|
+
access_count INTEGER DEFAULT 0,
|
|
193
|
+
cluster_id INTEGER
|
|
194
|
+
)''')
|
|
195
|
+
cursor.execute('CREATE TABLE IF NOT EXISTS sessions (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT UNIQUE, project_path TEXT, started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, ended_at TIMESTAMP, summary TEXT)')
|
|
196
|
+
conn.commit()
|
|
197
|
+
conn.close()
|
|
198
|
+
print('Database ready')
|
|
199
|
+
"@
|
|
200
|
+
Write-Host "OK Database initialized (fallback)" -ForegroundColor Green
|
|
201
|
+
}
|
|
202
|
+
} else {
|
|
203
|
+
Write-Host "WARNING: setup_validator.py not found, skipping database init" -ForegroundColor Yellow
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
# Install core dependencies (required for graph & dashboard)
|
|
207
|
+
Write-Host ""
|
|
208
|
+
Write-Host "Installing core dependencies..."
|
|
209
|
+
Write-Host "INFO: This ensures graph visualization and patterns work out-of-box" -ForegroundColor Yellow
|
|
210
|
+
|
|
211
|
+
$coreRequirements = Join-Path $REPO_DIR "requirements-core.txt"
|
|
212
|
+
if (Test-Path $coreRequirements) {
|
|
213
|
+
try {
|
|
214
|
+
& python -m pip install -q -r $coreRequirements 2>$null
|
|
215
|
+
Write-Host "OK Core dependencies installed (graph, dashboard, patterns)" -ForegroundColor Green
|
|
216
|
+
} catch {
|
|
217
|
+
Write-Host "WARNING: Core dependency installation failed. Some features may not work." -ForegroundColor Yellow
|
|
218
|
+
Write-Host " Install manually: python -m pip install -r $coreRequirements" -ForegroundColor Yellow
|
|
219
|
+
}
|
|
220
|
+
} else {
|
|
221
|
+
Write-Host "WARNING: requirements-core.txt not found, skipping dependency installation" -ForegroundColor Yellow
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
# Initialize knowledge graph and pattern learning
|
|
225
|
+
Write-Host ""
|
|
226
|
+
Write-Host "Initializing advanced features..."
|
|
227
|
+
|
|
228
|
+
# Add sample memories if database is empty (for first-time users)
|
|
229
|
+
$memoryCount = & python -c @"
|
|
230
|
+
import sqlite3
|
|
231
|
+
from pathlib import Path
|
|
232
|
+
db_path = Path.home() / '.claude-memory' / 'memory.db'
|
|
233
|
+
conn = sqlite3.connect(db_path)
|
|
234
|
+
cursor = conn.cursor()
|
|
235
|
+
cursor.execute('SELECT COUNT(*) FROM memories')
|
|
236
|
+
print(cursor.fetchone()[0])
|
|
237
|
+
conn.close()
|
|
238
|
+
"@ 2>$null
|
|
239
|
+
|
|
240
|
+
if (-not $memoryCount) { $memoryCount = 0 }
|
|
241
|
+
|
|
242
|
+
if ([int]$memoryCount -eq 0) {
|
|
243
|
+
Write-Host "INFO: Adding sample memories for demonstration..." -ForegroundColor Yellow
|
|
244
|
+
& python "$INSTALL_DIR\memory_store_v2.py" add "SuperLocalMemory V2 is a local-first, privacy-focused memory system for AI assistants. All data stays on your machine." --tags "supermemory,system,intro" --importance 8 2>$null | Out-Null
|
|
245
|
+
& python "$INSTALL_DIR\memory_store_v2.py" add "Knowledge graph uses TF-IDF for entity extraction and Leiden clustering for community detection." --tags "architecture,graph" --importance 7 2>$null | Out-Null
|
|
246
|
+
& python "$INSTALL_DIR\memory_store_v2.py" add "Pattern learning analyzes your coding preferences, style, and terminology to provide better context." --tags "architecture,patterns" --importance 7 2>$null | Out-Null
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
# Build knowledge graph (Layer 3)
|
|
250
|
+
Write-Host "INFO: Building knowledge graph..." -ForegroundColor Yellow
|
|
251
|
+
try {
|
|
252
|
+
& python "$INSTALL_DIR\graph_engine.py" build 2>$null | Out-Null
|
|
253
|
+
Write-Host " OK Knowledge graph initialized" -ForegroundColor Green
|
|
254
|
+
} catch {
|
|
255
|
+
Write-Host " WARNING: Graph build skipped (dependencies not installed)" -ForegroundColor Yellow
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
# Run pattern learning (Layer 4)
|
|
259
|
+
Write-Host "INFO: Learning patterns..." -ForegroundColor Yellow
|
|
260
|
+
try {
|
|
261
|
+
& python "$INSTALL_DIR\pattern_learner.py" update 2>$null | Out-Null
|
|
262
|
+
$patternCount = & python -c @"
|
|
263
|
+
import sqlite3
|
|
264
|
+
from pathlib import Path
|
|
265
|
+
db_path = Path.home() / '.claude-memory' / 'memory.db'
|
|
266
|
+
conn = sqlite3.connect(db_path)
|
|
267
|
+
cursor = conn.cursor()
|
|
268
|
+
cursor.execute('SELECT COUNT(*) FROM identity_patterns')
|
|
269
|
+
count = cursor.fetchone()[0]
|
|
270
|
+
conn.close()
|
|
271
|
+
print(count)
|
|
272
|
+
"@ 2>$null
|
|
273
|
+
if (-not $patternCount) { $patternCount = 0 }
|
|
274
|
+
Write-Host " OK Pattern learning complete ($patternCount patterns found)" -ForegroundColor Green
|
|
275
|
+
} catch {
|
|
276
|
+
Write-Host " WARNING: Pattern learning skipped (dependencies not installed)" -ForegroundColor Yellow
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
# Check optional dependencies
|
|
280
|
+
Write-Host ""
|
|
281
|
+
Write-Host "Checking optional dependencies..."
|
|
282
|
+
$dependencies = @{
|
|
283
|
+
"sklearn" = "scikit-learn (Knowledge Graph)"
|
|
284
|
+
"numpy" = "numpy (Vector Operations)"
|
|
285
|
+
"igraph" = "python-igraph (Clustering)"
|
|
286
|
+
"fastapi" = "fastapi (UI Server)"
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
foreach ($module in $dependencies.Keys) {
|
|
290
|
+
try {
|
|
291
|
+
& python -c "import $module" 2>$null
|
|
292
|
+
Write-Host "OK $($dependencies[$module])" -ForegroundColor Green
|
|
293
|
+
} catch {
|
|
294
|
+
Write-Host "INFO: $($dependencies[$module]) not installed (optional)" -ForegroundColor Yellow
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
# Configure PATH
|
|
299
|
+
Write-Host ""
|
|
300
|
+
Write-Host "Configuring PATH..."
|
|
301
|
+
$userPath = [Environment]::GetEnvironmentVariable("PATH", "User")
|
|
302
|
+
if ($userPath -notlike "*$installBinDir*") {
|
|
303
|
+
$newPath = "$installBinDir;$userPath"
|
|
304
|
+
[Environment]::SetEnvironmentVariable("PATH", $newPath, "User")
|
|
305
|
+
Write-Host "OK PATH configured (restart terminal to use commands)" -ForegroundColor Green
|
|
306
|
+
$env:PATH = "$installBinDir;$env:PATH"
|
|
307
|
+
} else {
|
|
308
|
+
Write-Host "INFO: PATH already configured" -ForegroundColor Yellow
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
# Summary
|
|
312
|
+
Write-Host ""
|
|
313
|
+
Write-Host "=================================================================="
|
|
314
|
+
Write-Host " Installation Complete! "
|
|
315
|
+
Write-Host "=================================================================="
|
|
316
|
+
Write-Host ""
|
|
317
|
+
Write-Host "OK Commands available after terminal restart!" -ForegroundColor Green
|
|
318
|
+
Write-Host ""
|
|
319
|
+
Write-Host "Quick start (restart terminal first):"
|
|
320
|
+
Write-Host " python $INSTALL_DIR\memory_store_v2.py"
|
|
321
|
+
Write-Host ""
|
|
322
|
+
|
|
323
|
+
# Optional: Offer to install optional features
|
|
324
|
+
Write-Host ""
|
|
325
|
+
Write-Host "=================================================================="
|
|
326
|
+
Write-Host " Optional Features Available "
|
|
327
|
+
Write-Host "=================================================================="
|
|
328
|
+
Write-Host ""
|
|
329
|
+
Write-Host "SuperLocalMemory V2.2.0 includes optional features:"
|
|
330
|
+
Write-Host ""
|
|
331
|
+
Write-Host " 1) Advanced Search (~1.5GB, 5-10 min)"
|
|
332
|
+
Write-Host " - Semantic search with sentence transformers"
|
|
333
|
+
Write-Host " - Vector similarity with HNSWLIB"
|
|
334
|
+
Write-Host ""
|
|
335
|
+
Write-Host " 2) Web Dashboard (~50MB, 1-2 min)"
|
|
336
|
+
Write-Host " - Graph visualization"
|
|
337
|
+
Write-Host " - API server (FastAPI)"
|
|
338
|
+
Write-Host ""
|
|
339
|
+
Write-Host " 3) Full Package (~1.5GB, 5-10 min)"
|
|
340
|
+
Write-Host " - Everything: Search + Dashboard"
|
|
341
|
+
Write-Host ""
|
|
342
|
+
Write-Host " N) Skip (install later)"
|
|
343
|
+
Write-Host ""
|
|
344
|
+
|
|
345
|
+
# Handle interactive vs non-interactive mode
|
|
346
|
+
if ($NON_INTERACTIVE) {
|
|
347
|
+
$INSTALL_CHOICE = "N"
|
|
348
|
+
Write-Host "Auto-selecting: N (Skip)" -ForegroundColor Cyan
|
|
349
|
+
} else {
|
|
350
|
+
$INSTALL_CHOICE = Read-Host "Choose option [1/2/3/N]"
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
$requirementsDir = $REPO_DIR
|
|
354
|
+
switch ($INSTALL_CHOICE) {
|
|
355
|
+
"1" {
|
|
356
|
+
Write-Host ""
|
|
357
|
+
Write-Host "Installing Advanced Search features..."
|
|
358
|
+
Write-Host "Downloading ~1.5GB (ML models)..." -ForegroundColor Yellow
|
|
359
|
+
$searchReqPath = Join-Path $requirementsDir "requirements-search.txt"
|
|
360
|
+
if (Test-Path $searchReqPath) {
|
|
361
|
+
& pip install -r $searchReqPath
|
|
362
|
+
Write-Host "OK Advanced Search installed successfully" -ForegroundColor Green
|
|
363
|
+
} else {
|
|
364
|
+
Write-Host "ERROR: requirements-search.txt not found" -ForegroundColor Red
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
"2" {
|
|
368
|
+
Write-Host ""
|
|
369
|
+
Write-Host "Installing Web Dashboard..."
|
|
370
|
+
Write-Host "Downloading ~50MB..." -ForegroundColor Yellow
|
|
371
|
+
$uiReqPath = Join-Path $requirementsDir "requirements-ui.txt"
|
|
372
|
+
if (Test-Path $uiReqPath) {
|
|
373
|
+
& pip install -r $uiReqPath
|
|
374
|
+
Write-Host "OK Web Dashboard installed successfully" -ForegroundColor Green
|
|
375
|
+
Write-Host ""
|
|
376
|
+
Write-Host "Start Web UI:"
|
|
377
|
+
Write-Host " python $INSTALL_DIR\api_server.py"
|
|
378
|
+
Write-Host " Then open: http://127.0.0.1:8000"
|
|
379
|
+
} else {
|
|
380
|
+
Write-Host "ERROR: requirements-ui.txt not found" -ForegroundColor Red
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
"3" {
|
|
384
|
+
Write-Host ""
|
|
385
|
+
Write-Host "Installing Full Package (Search + Dashboard)..."
|
|
386
|
+
Write-Host "Downloading ~1.5GB..." -ForegroundColor Yellow
|
|
387
|
+
$fullReqPath = Join-Path $requirementsDir "requirements-full.txt"
|
|
388
|
+
if (Test-Path $fullReqPath) {
|
|
389
|
+
& pip install -r $fullReqPath
|
|
390
|
+
Write-Host "OK Full package installed successfully" -ForegroundColor Green
|
|
391
|
+
Write-Host ""
|
|
392
|
+
Write-Host "All features enabled!"
|
|
393
|
+
} else {
|
|
394
|
+
Write-Host "ERROR: requirements-full.txt not found" -ForegroundColor Red
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
default {
|
|
398
|
+
Write-Host ""
|
|
399
|
+
Write-Host "Skipping optional features."
|
|
400
|
+
Write-Host ""
|
|
401
|
+
Write-Host "To install later:"
|
|
402
|
+
Write-Host " Advanced Search: pip install -r requirements-search.txt"
|
|
403
|
+
Write-Host " Web Dashboard: pip install -r requirements-ui.txt"
|
|
404
|
+
Write-Host " Full Package: pip install -r requirements-full.txt"
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
Write-Host ""
|
|
409
|
+
Write-Host "=================================================================="
|
|
410
|
+
Write-Host " ATTRIBUTION NOTICE (REQUIRED BY MIT LICENSE) "
|
|
411
|
+
Write-Host "=================================================================="
|
|
412
|
+
Write-Host " Created by: Varun Pratap Bhardwaj "
|
|
413
|
+
Write-Host " Role: Solution Architect & Original Creator "
|
|
414
|
+
Write-Host " Repository: github.com/varun369/SuperLocalMemoryV2 "
|
|
415
|
+
Write-Host " License: MIT (attribution must be preserved) "
|
|
416
|
+
Write-Host "=================================================================="
|
|
417
|
+
Write-Host ""
|