superlocalmemory 3.4.17 → 3.4.18

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 (78) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +1 -3
  3. package/pyproject.toml +10 -1
  4. package/src/superlocalmemory/cli/setup_wizard.py +30 -0
  5. package/src/superlocalmemory.egg-info/PKG-INFO +4 -1
  6. package/src/superlocalmemory.egg-info/requires.txt +3 -0
  7. package/docs/ARCHITECTURE.md +0 -149
  8. package/docs/api-reference.md +0 -284
  9. package/docs/auto-memory.md +0 -150
  10. package/docs/cli-reference.md +0 -327
  11. package/docs/cloud-backup.md +0 -174
  12. package/docs/compliance.md +0 -191
  13. package/docs/configuration.md +0 -182
  14. package/docs/getting-started.md +0 -102
  15. package/docs/ide-setup.md +0 -261
  16. package/docs/mcp-tools.md +0 -220
  17. package/docs/migration-from-v2.md +0 -170
  18. package/docs/profiles.md +0 -173
  19. package/docs/screenshots/01-dashboard-main.png +0 -0
  20. package/docs/screenshots/02-knowledge-graph.png +0 -0
  21. package/docs/screenshots/03-math-health.png +0 -0
  22. package/docs/screenshots/03-patterns-learning.png +0 -0
  23. package/docs/screenshots/04-learning-dashboard.png +0 -0
  24. package/docs/screenshots/04-recall-lab.png +0 -0
  25. package/docs/screenshots/05-behavioral-analysis.png +0 -0
  26. package/docs/screenshots/05-trust-dashboard.png +0 -0
  27. package/docs/screenshots/06-graph-communities.png +0 -0
  28. package/docs/screenshots/06-settings.png +0 -0
  29. package/docs/screenshots/07-memories-blurred.png +0 -0
  30. package/docs/skill-evolution.md +0 -256
  31. package/docs/troubleshooting.md +0 -310
  32. package/docs/v2-archive/ACCESSIBILITY.md +0 -291
  33. package/docs/v2-archive/ARCHITECTURE.md +0 -886
  34. package/docs/v2-archive/CLI-COMMANDS-REFERENCE.md +0 -425
  35. package/docs/v2-archive/COMPRESSION-README.md +0 -390
  36. package/docs/v2-archive/FRAMEWORK-INTEGRATIONS.md +0 -300
  37. package/docs/v2-archive/MCP-MANUAL-SETUP.md +0 -775
  38. package/docs/v2-archive/MCP-TROUBLESHOOTING.md +0 -787
  39. package/docs/v2-archive/PATTERN-LEARNING.md +0 -228
  40. package/docs/v2-archive/PROFILES-GUIDE.md +0 -453
  41. package/docs/v2-archive/RESET-GUIDE.md +0 -353
  42. package/docs/v2-archive/SEARCH-ENGINE-V2.2.0.md +0 -749
  43. package/docs/v2-archive/SEARCH-INTEGRATION-GUIDE.md +0 -502
  44. package/docs/v2-archive/UI-SERVER.md +0 -262
  45. package/docs/v2-archive/UNIVERSAL-INTEGRATION.md +0 -488
  46. package/docs/v2-archive/V2.2.0-OPTIONAL-SEARCH.md +0 -666
  47. package/docs/v2-archive/WINDOWS-INSTALL-README.txt +0 -34
  48. package/docs/v2-archive/WINDOWS-POST-INSTALL.txt +0 -45
  49. package/docs/v2-archive/example_graph_usage.py +0 -146
  50. package/ui/index.html +0 -1879
  51. package/ui/js/agents.js +0 -192
  52. package/ui/js/auto-settings.js +0 -399
  53. package/ui/js/behavioral.js +0 -276
  54. package/ui/js/clusters.js +0 -206
  55. package/ui/js/compliance.js +0 -252
  56. package/ui/js/core.js +0 -246
  57. package/ui/js/dashboard.js +0 -110
  58. package/ui/js/events.js +0 -178
  59. package/ui/js/fact-detail.js +0 -92
  60. package/ui/js/feedback.js +0 -333
  61. package/ui/js/graph-core.js +0 -447
  62. package/ui/js/graph-filters.js +0 -220
  63. package/ui/js/graph-interactions.js +0 -351
  64. package/ui/js/graph-ui.js +0 -214
  65. package/ui/js/ide-status.js +0 -102
  66. package/ui/js/init.js +0 -45
  67. package/ui/js/learning.js +0 -435
  68. package/ui/js/lifecycle.js +0 -298
  69. package/ui/js/math-health.js +0 -98
  70. package/ui/js/memories.js +0 -264
  71. package/ui/js/modal.js +0 -357
  72. package/ui/js/patterns.js +0 -93
  73. package/ui/js/profiles.js +0 -236
  74. package/ui/js/recall-lab.js +0 -292
  75. package/ui/js/search.js +0 -59
  76. package/ui/js/settings.js +0 -224
  77. package/ui/js/timeline.js +0 -32
  78. package/ui/js/trust-dashboard.js +0 -73
@@ -1,310 +0,0 @@
1
- # Troubleshooting
2
- > SuperLocalMemory V3 Documentation
3
- > https://superlocalmemory.com | Part of Qualixar
4
-
5
- Solutions for common issues. If your problem is not listed here, run `slm status --verbose` and check the output for clues.
6
-
7
- ---
8
-
9
- ## Installation Issues
10
-
11
- ### "slm: command not found"
12
-
13
- The npm global bin directory is not in your shell's PATH.
14
-
15
- **Fix:**
16
-
17
- ```bash
18
- # Find where npm puts global binaries
19
- npm root -g
20
- # Example output: /usr/local/lib/node_modules
21
-
22
- # The bin directory is one level up
23
- # Add to your shell profile (~/.zshrc, ~/.bashrc, or ~/.bash_profile):
24
- export PATH="$(npm prefix -g)/bin:$PATH"
25
-
26
- # Reload your shell
27
- source ~/.zshrc # or source ~/.bashrc
28
- ```
29
-
30
- **Alternative — use npx:**
31
-
32
- ```bash
33
- npx superlocalmemory status
34
- ```
35
-
36
- ### "Python not found" during setup
37
-
38
- SLM V3 requires Python 3.10 or later for the math engine.
39
-
40
- ```bash
41
- # Check Python version
42
- python3 --version
43
-
44
- # Install if missing
45
- # macOS:
46
- brew install python@3.12
47
-
48
- # Ubuntu/Debian:
49
- sudo apt install python3.12
50
-
51
- # Windows:
52
- winget install Python.Python.3.12
53
- ```
54
-
55
- ### "Permission denied" during install
56
-
57
- ```bash
58
- # Option 1: Fix npm permissions (recommended)
59
- mkdir -p ~/.npm-global
60
- npm config set prefix '~/.npm-global'
61
- export PATH=~/.npm-global/bin:$PATH
62
- npm install -g superlocalmemory
63
-
64
- # Option 2: Use sudo (not recommended)
65
- sudo npm install -g superlocalmemory
66
- ```
67
-
68
- ## Recall Issues
69
-
70
- ### "No memories found" when you know they exist
71
-
72
- **Check your active profile:**
73
-
74
- ```bash
75
- slm profile list
76
- ```
77
-
78
- Memories are profile-scoped. If you stored a memory in the `work` profile but are currently in `default`, it will not appear.
79
-
80
- ```bash
81
- slm profile switch work
82
- slm recall "your query"
83
- ```
84
-
85
- **Check your mode:**
86
-
87
- ```bash
88
- slm mode
89
- ```
90
-
91
- Mode A uses math-based retrieval. If you recently switched from Mode C, the retrieval behavior changes. Both modes search the same memories, but ranking differs.
92
-
93
- **Try a broader query:**
94
-
95
- ```bash
96
- slm recall "database" # Instead of "PostgreSQL 16 configuration on staging"
97
- slm list --limit 20 # Browse recent memories directly
98
- ```
99
-
100
- ### Recall returns irrelevant results
101
-
102
- **Lower your result count:**
103
-
104
- ```bash
105
- slm recall "your query" --limit 3
106
- ```
107
-
108
- Fewer results means only the highest-confidence matches are returned.
109
-
110
- **Use trace to debug:**
111
-
112
- ```bash
113
- slm trace "your query"
114
- ```
115
-
116
- This shows which channels contributed what. If BM25 is dominating with weak keyword matches, the query may need different terms.
117
-
118
- **Rebuild the graph:**
119
-
120
- ```bash
121
- slm build_graph
122
- ```
123
-
124
- If entity relationships seem wrong, rebuilding the graph can fix ranking issues.
125
-
126
- ## Mode C Issues
127
-
128
- ### "API key not set" or authentication errors
129
-
130
- ```bash
131
- # Check your provider configuration
132
- slm provider
133
-
134
- # Reset your provider and key
135
- slm provider set openai
136
- # Enter your API key when prompted
137
-
138
- # Or set via environment variable
139
- export OPENAI_API_KEY="sk-..."
140
- ```
141
-
142
- ### "Connection timeout" or network errors
143
-
144
- ```bash
145
- # Test connectivity to your provider
146
- slm status --verbose
147
-
148
- # Check if you're behind a proxy
149
- echo $HTTP_PROXY
150
- echo $HTTPS_PROXY
151
- ```
152
-
153
- If behind a corporate proxy, set the proxy variables:
154
-
155
- ```bash
156
- export HTTPS_PROXY="http://proxy.company.com:8080"
157
- ```
158
-
159
- ### Mode C is slow
160
-
161
- Cloud LLM calls add latency. If speed matters more than maximum recall quality:
162
-
163
- ```bash
164
- slm mode b # Local LLM (fast, no network)
165
- slm mode a # Math-only (fastest)
166
- ```
167
-
168
- ## Migration Issues
169
-
170
- ### Migration failed or was interrupted
171
-
172
- ```bash
173
- # Check if backup exists
174
- ls ~/.superlocalmemory/backups/
175
-
176
- # Roll back to V2
177
- slm migrate --rollback
178
-
179
- # Try migration again
180
- slm migrate
181
- ```
182
-
183
- ### "Database is locked"
184
-
185
- Close all IDE sessions that might be accessing SLM, then retry:
186
-
187
- ```bash
188
- # Check for processes using the database
189
- lsof ~/.superlocalmemory/memory.db
190
-
191
- # Close IDEs, then retry
192
- slm migrate
193
- ```
194
-
195
- ### Migration succeeded but recall quality seems worse
196
-
197
- After migration, the entity graph and BM25 index are rebuilt from existing data. This process is automatic but can take a moment for large databases.
198
-
199
- ```bash
200
- # Force a full re-index
201
- slm build_graph
202
- slm compact
203
- ```
204
-
205
- ## IDE Connection Issues
206
-
207
- ### IDE does not show SLM tools
208
-
209
- 1. **Verify SLM is installed:**
210
-
211
- ```bash
212
- npm list -g superlocalmemory
213
- ```
214
-
215
- 2. **Check the IDE config file has correct JSON:**
216
-
217
- ```bash
218
- slm connect <your-ide> # Regenerates the config
219
- ```
220
-
221
- 3. **Restart the IDE completely** (not just reload the window).
222
-
223
- 4. **Test the MCP server directly:**
224
-
225
- ```bash
226
- npx superlocalmemory mcp --test
227
- ```
228
-
229
- ### "Connection refused" in IDE
230
-
231
- The MCP server failed to start. Common causes:
232
-
233
- - Node.js version too old (need 18+)
234
- - Port conflict with another service
235
- - Corrupted installation
236
-
237
- ```bash
238
- # Reinstall
239
- npm uninstall -g superlocalmemory
240
- npm install -g superlocalmemory
241
-
242
- # Verify
243
- slm status
244
- ```
245
-
246
- ### Multiple IDEs conflicting
247
-
248
- Each IDE has its own MCP config file. They do not conflict. All IDEs share the same underlying database. Concurrent access is safe (SQLite WAL mode handles this).
249
-
250
- ## Database Issues
251
-
252
- ### Database corruption
253
-
254
- Extremely rare with SQLite WAL mode, but if it happens:
255
-
256
- ```bash
257
- # Check integrity
258
- slm status --verbose
259
-
260
- # Restore from automatic backup
261
- ls ~/.superlocalmemory/backups/
262
- cp ~/.superlocalmemory/backups/memory-2026-03-15.db ~/.superlocalmemory/memory.db
263
- ```
264
-
265
- ### Database is too large
266
-
267
- ```bash
268
- # Check size
269
- slm memory_used
270
-
271
- # Compact (merges redundant memories, reclaims space)
272
- slm compact
273
-
274
- # Apply a retention policy to auto-delete old memories
275
- slm retention set custom --days 180
276
- ```
277
-
278
- ## Health Check
279
-
280
- Run a full diagnostic:
281
-
282
- ```bash
283
- slm health
284
- ```
285
-
286
- This reports the status of:
287
-
288
- | Component | What it checks |
289
- |-----------|---------------|
290
- | Database | Integrity, size, table counts |
291
- | Embedding model | Loaded, version, dimension |
292
- | Fisher-Rao | Similarity layer active |
293
- | Sheaf | Consistency layer active |
294
- | Langevin | Lifecycle layer active |
295
- | BM25 index | Token count, index health |
296
- | Entity graph | Node count, edge count |
297
-
298
- If any component shows an error, the output includes a suggested fix.
299
-
300
- ## Getting Help
301
-
302
- If none of the above resolves your issue:
303
-
304
- 1. Run `slm status --verbose` and note the output
305
- 2. Check the [GitHub Issues](https://github.com/qualixar/superlocalmemory/issues)
306
- 3. Open a new issue with your `slm status --verbose` output
307
-
308
- ---
309
-
310
- *SuperLocalMemory V3 — Copyright 2026 Varun Pratap Bhardwaj. Elastic License 2.0. Part of Qualixar.*
@@ -1,291 +0,0 @@
1
- # Accessibility Features - SuperLocalMemory V2.6.5
2
-
3
- **Last Updated:** February 16, 2026
4
- **Author:** Varun Pratap Bhardwaj
5
-
6
- ---
7
-
8
- ## Overview
9
-
10
- SuperLocalMemory V2.6.5 includes comprehensive keyboard navigation and screen reader support for the interactive knowledge graph, making it fully accessible to users with disabilities.
11
-
12
- ## Keyboard Navigation
13
-
14
- ### Graph Container Focus
15
-
16
- The graph container (`#graph-container`) is focusable via keyboard:
17
-
18
- - **Focus method:** Click graph OR press `Tab` from controls above
19
- - **Visual indicator:** Browser native focus outline + first node highlighted with blue border
20
- - **ARIA role:** `role="application"` signals custom keyboard handling
21
-
22
- ### Node Navigation
23
-
24
- | Key | Action |
25
- |-----|--------|
26
- | **Tab** | Move to next node (cycles through all nodes) |
27
- | **Shift+Tab** | Move to previous node |
28
- | **→** (Right Arrow) | Move to nearest node on the right |
29
- | **←** (Left Arrow) | Move to nearest node on the left |
30
- | **↓** (Down Arrow) | Move to nearest node below |
31
- | **↑** (Up Arrow) | Move to nearest node above |
32
- | **Home** | Jump to first node |
33
- | **End** | Jump to last node |
34
-
35
- **Arrow Key Algorithm:**
36
- - Finds nodes in specified direction (based on X/Y coordinates)
37
- - Prioritizes nodes closer to current position
38
- - Combines Euclidean distance with directional score
39
- - Ensures no "stuck" states (always finds a valid next node)
40
-
41
- ### Actions
42
-
43
- | Key | Action |
44
- |-----|--------|
45
- | **Enter** or **Space** | Open modal for focused node |
46
- | **Escape** | Clear active filter OR blur graph (if no filter) |
47
-
48
- ### Visual Focus Indicator
49
-
50
- Focused nodes have the CSS class `.keyboard-focused` with:
51
-
52
- ```css
53
- border-width: 5px;
54
- border-color: #0066ff;
55
- border-style: solid;
56
- box-shadow: 0 0 15px #0066ff;
57
- ```
58
-
59
- The graph smoothly animates to center the focused node in the viewport.
60
-
61
- ---
62
-
63
- ## Screen Reader Support
64
-
65
- ### ARIA Attributes
66
-
67
- #### Graph Container
68
-
69
- ```html
70
- <div id="graph-container"
71
- role="application"
72
- aria-label="Interactive knowledge graph - use Tab to navigate nodes, Enter to view details, Arrow keys to move between adjacent nodes, Escape to clear filters"
73
- aria-describedby="graph-stats">
74
- </div>
75
- ```
76
-
77
- - **`role="application"`** - Signals custom keyboard handling
78
- - **`aria-label`** - Provides usage instructions
79
- - **`aria-describedby`** - Links to graph statistics (node/edge count)
80
-
81
- #### Status Regions
82
-
83
- ```html
84
- <div id="graph-status-full" role="status" aria-live="polite">
85
- Showing all memories
86
- </div>
87
-
88
- <div id="graph-status-filtered" role="status" aria-live="polite">
89
- Viewing Cluster X (Y memories)
90
- </div>
91
- ```
92
-
93
- - **`role="status"`** - Semantic status information
94
- - **`aria-live="polite"`** - Announces changes when user is idle
95
-
96
- #### Hidden Status Region
97
-
98
- An off-screen status region announces keyboard navigation events:
99
-
100
- ```html
101
- <div id="graph-sr-status"
102
- role="status"
103
- aria-live="polite"
104
- aria-atomic="true"
105
- style="position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden;">
106
- </div>
107
- ```
108
-
109
- This element is invisible but screen readers announce its content changes.
110
-
111
- #### Buttons
112
-
113
- All interactive buttons have `aria-label` attributes:
114
-
115
- ```html
116
- <button aria-label="Refresh graph data">...</button>
117
- <button aria-label="Clear filter and show all memories">...</button>
118
- <button aria-label="Toggle dark mode">...</button>
119
- ```
120
-
121
- #### Dropdowns
122
-
123
- Form controls have proper labels:
124
-
125
- ```html
126
- <label for="graph-layout-selector">Layout Algorithm:</label>
127
- <select id="graph-layout-selector" aria-label="Select graph layout algorithm">
128
- ```
129
-
130
- ### Screen Reader Announcements
131
-
132
- The `updateScreenReaderStatus()` function announces:
133
-
134
- 1. **Graph load:** "Graph loaded with X memories and Y connections"
135
- 2. **Node navigation:** "Memory 123: SuperLocalMemory Project, Cluster 2, Importance 8 out of 10"
136
- 3. **Filter cleared:** "Filters cleared, showing all memories"
137
-
138
- These announcements are sent to the hidden `#graph-sr-status` region.
139
-
140
- ---
141
-
142
- ## Modal Focus Management
143
-
144
- ### Opening Modal
145
-
146
- When `openMemoryModal()` is called:
147
-
148
- 1. **Store last focused element:** `window.lastFocusedElement = document.activeElement`
149
- 2. **Bootstrap modal shown event:** Focus moves to first button in modal
150
- 3. **Tab order:** Close button → Modal content → Action buttons → Footer buttons
151
-
152
- ### Closing Modal
153
-
154
- When modal closes (via Bootstrap `hidden.bs.modal` event):
155
-
156
- 1. **Restore focus:** `window.lastFocusedElement.focus()`
157
- 2. **Clear stored element:** `window.lastFocusedElement = null`
158
- 3. **User can continue:** Keyboard navigation resumes from same node
159
-
160
- This ensures users don't lose their place in the graph when opening/closing modals.
161
-
162
- ---
163
-
164
- ## Skip Links
165
-
166
- A skip link is provided for keyboard users:
167
-
168
- ```html
169
- <a href="#memories-pane" class="visually-hidden-focusable">Skip to Memories list</a>
170
- ```
171
-
172
- This link is invisible until focused (via Tab), allowing users to bypass the graph and jump directly to the Memories tab.
173
-
174
- ---
175
-
176
- ## Testing with Screen Readers
177
-
178
- ### macOS VoiceOver
179
-
180
- 1. **Enable:** Press `Cmd+F5`
181
- 2. **Navigate:** `Control+Option+Arrow keys`
182
- 3. **Read current element:** `Control+Option+A`
183
- 4. **Test focus:** Tab through graph → Verify announcements
184
-
185
- ### Windows NVDA
186
-
187
- 1. **Install:** Download from [nvaccess.org](https://www.nvaccess.org/)
188
- 2. **Start:** `Control+Alt+N`
189
- 3. **Navigate:** Arrow keys
190
- 4. **Browse mode:** Press `Insert+Space` to toggle
191
-
192
- ### Windows JAWS
193
-
194
- 1. **Commercial software:** Most widely used screen reader
195
- 2. **Navigate:** Arrow keys + Tab
196
- 3. **Read mode:** Virtual cursor navigation
197
-
198
- ### Linux Orca
199
-
200
- 1. **Enable:** `Alt+F2`, type "orca"
201
- 2. **Configure:** `orca --setup`
202
- 3. **Navigate:** Arrow keys
203
-
204
- ---
205
-
206
- ## Compliance
207
-
208
- ### WCAG 2.1 AA Compliance
209
-
210
- | Criterion | Status | Implementation |
211
- |-----------|--------|----------------|
212
- | **1.3.1 Info and Relationships** | ✅ Pass | Semantic HTML, ARIA roles |
213
- | **2.1.1 Keyboard** | ✅ Pass | Full keyboard navigation |
214
- | **2.1.2 No Keyboard Trap** | ✅ Pass | Escape key blurs graph |
215
- | **2.4.3 Focus Order** | ✅ Pass | Logical tab order |
216
- | **2.4.7 Focus Visible** | ✅ Pass | Blue outline on focused nodes |
217
- | **3.2.1 On Focus** | ✅ Pass | No unexpected context changes |
218
- | **4.1.2 Name, Role, Value** | ✅ Pass | ARIA labels on all controls |
219
- | **4.1.3 Status Messages** | ✅ Pass | aria-live regions |
220
-
221
- ### Section 508 Compliance
222
-
223
- - ✅ **(a) Keyboard access** - All graph functions accessible via keyboard
224
- - ✅ **(c) Color contrast** - Blue focus indicator meets 4.5:1 contrast ratio
225
- - ✅ **(d) Screen reader compatible** - ARIA labels and live regions
226
-
227
- ---
228
-
229
- ## Developer Notes
230
-
231
- ### Code Location
232
-
233
- - **Keyboard navigation:** `/ui/js/graph-cytoscape.js` (lines 950-1150)
234
- - **Modal focus management:** `/ui/js/modal.js` (lines 10-18, 142-160)
235
- - **ARIA attributes:** `/ui/index.html` (graph-pane section)
236
-
237
- ### Key Functions
238
-
239
- | Function | Purpose |
240
- |----------|---------|
241
- | `setupKeyboardNavigation()` | Attaches keyboard event handlers to graph container |
242
- | `focusNodeAtIndex(index)` | Highlights node and centers viewport |
243
- | `moveToAdjacentNode(direction, currentNode)` | Finds nearest node in specified direction |
244
- | `announceNode(node)` | Sends node info to screen reader |
245
- | `updateScreenReaderStatus(message)` | Updates hidden status region |
246
-
247
- ### Global State Variables
248
-
249
- ```javascript
250
- var focusedNodeIndex = 0; // Currently focused node index
251
- var keyboardNavigationEnabled = false; // Is keyboard nav active?
252
- var lastFocusedElement = null; // For modal focus return
253
- ```
254
-
255
- ### Cytoscape.js Style Class
256
-
257
- ```javascript
258
- {
259
- selector: 'node.keyboard-focused',
260
- style: {
261
- 'border-width': 5,
262
- 'border-color': '#0066ff',
263
- 'border-style': 'solid',
264
- 'box-shadow': '0 0 15px #0066ff'
265
- }
266
- }
267
- ```
268
-
269
- ---
270
-
271
- ## Future Enhancements (v2.7+)
272
-
273
- 1. **Voice commands:** Integrate Web Speech API for voice navigation
274
- 2. **Braille support:** Test with refreshable Braille displays
275
- 3. **High contrast mode:** Additional theme for low vision users
276
- 4. **Keyboard shortcuts help:** Press `?` to show keyboard shortcuts overlay
277
- 5. **Focus trapping in modal:** Prevent Tab from leaving modal when open
278
-
279
- ---
280
-
281
- ## Feedback
282
-
283
- If you encounter accessibility issues, please report them:
284
-
285
- - **GitHub Issues:** https://github.com/qualixar/superlocalmemory/issues
286
- - **Label:** Use `accessibility` tag
287
- - **Include:** Browser, screen reader (if applicable), and steps to reproduce
288
-
289
- ---
290
-
291
- **Copyright © 2026 Varun Pratap Bhardwaj - AGPL-3.0**