feat(FN-1771): add dashboard memory settings UX with backend selector and capability-aware editing

- Add /api/memory/backend endpoint returning current backend, capabilities, and available backends
- Create useMemoryBackendStatus hook with polling and frontend-friendly interface
- Add MemorySettingsSection to SettingsModal with backend selector dropdown
- Implement capability-aware UI: readonly backends disable save, fallback on unknown types
- Add comprehensive tests for API endpoints and hook behavior
- Update architecture docs with memory backend architecture section
This commit is contained in:
gsxdsm
2026-04-13 22:32:31 -07:00
parent f6ae0e2e82
commit f72a3a39db
11 changed files with 750 additions and 6 deletions

View File

@@ -704,6 +704,17 @@ Fusion supports pluggable memory backends, allowing you to choose how project me
|---------|-------------|--------------|
| `file` (default) | File-based storage in `.fusion/memory.md` | Read/Write, Atomic, Persistent |
| `readonly` | Read-only access (external memory management) | Read only, Non-persistent |
| `qmd` | QMD (Quantized Memory Distillation) CLI backend | Read/Write, Persistent |
**QMD Backend**
The QMD backend (`memoryBackendType: "qmd"`) routes memory operations through a QMD CLI tool, enabling advanced features like automatic summarization and structured querying. When QMD is unavailable (binary not found or command fails), it falls back to file-based storage automatically.
**Fallback Behavior:**
- QMD binary not found (exit code 127): Falls back to file backend
- QMD command timeout (30 seconds): Falls back to file backend
- QMD command fails with exit code 1: Falls back to file backend
- QMD output malformed: Returns error, does not fall back
**Using the dashboard API:**
@@ -721,7 +732,7 @@ curl http://localhost:4040/api/memory/backend
"hasConflictResolution": false,
"persistent": true
},
"availableBackends": ["file", "readonly"]
"availableBackends": ["file", "readonly", "qmd"]
}
```