memorix 1.1.7 → 1.1.8
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/CHANGELOG.md +13 -0
- package/CLAUDE.md +6 -1
- package/README.md +21 -0
- package/README.zh-CN.md +21 -0
- package/TEAM.md +86 -86
- package/dist/cli/index.js +730 -150
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/static/index.html +201 -201
- package/dist/dashboard/static/style.css +3584 -3584
- package/dist/index.js +15 -8
- package/dist/index.js.map +1 -1
- package/dist/memcode-runtime/CHANGELOG.md +13 -0
- package/dist/memcode-runtime/package.json +4 -4
- package/dist/sdk.js +15 -8
- package/dist/sdk.js.map +1 -1
- package/docs/AGENT_OPERATOR_PLAYBOOK.md +18 -0
- package/docs/DESIGN_DECISIONS.md +357 -357
- package/docs/SETUP.md +10 -0
- package/docs/dev-log/progress.txt +35 -26
- package/package.json +1 -1
- package/src/audit/index.ts +156 -156
- package/src/cli/commands/agent-integrations.ts +623 -0
- package/src/cli/commands/audit-list.ts +89 -89
- package/src/cli/commands/background.ts +659 -659
- package/src/cli/commands/cleanup.ts +255 -255
- package/src/cli/commands/doctor.ts +23 -0
- package/src/cli/commands/formation.ts +48 -48
- package/src/cli/commands/git-hook-install.ts +111 -111
- package/src/cli/commands/handoff.ts +66 -66
- package/src/cli/commands/hooks-status.ts +63 -63
- package/src/cli/commands/ingest-commit.ts +153 -153
- package/src/cli/commands/ingest-image.ts +73 -73
- package/src/cli/commands/ingest-log.ts +180 -180
- package/src/cli/commands/ingest.ts +44 -44
- package/src/cli/commands/integrate-shared.ts +15 -15
- package/src/cli/commands/lock.ts +96 -96
- package/src/cli/commands/message.ts +121 -121
- package/src/cli/commands/poll.ts +70 -70
- package/src/cli/commands/purge-all-memory.ts +85 -85
- package/src/cli/commands/purge-project-memory.ts +83 -83
- package/src/cli/commands/reasoning.ts +132 -132
- package/src/cli/commands/repair.ts +60 -0
- package/src/cli/commands/retention.ts +108 -108
- package/src/cli/commands/serve-shared.ts +118 -118
- package/src/cli/commands/setup.ts +3 -3
- package/src/cli/commands/skills.ts +123 -123
- package/src/cli/commands/task.ts +192 -192
- package/src/cli/commands/transfer.ts +73 -73
- package/src/cli/commands/uninstall-project-artifacts.ts +85 -85
- package/src/cli/index.ts +3 -1
- package/src/cli/tui/ChatView.tsx +234 -234
- package/src/cli/tui/CommandBar.tsx +312 -312
- package/src/cli/tui/ContextRail.tsx +118 -118
- package/src/cli/tui/HeaderBar.tsx +72 -72
- package/src/cli/tui/LogoBanner.tsx +51 -51
- package/src/cli/tui/Panels.tsx +632 -632
- package/src/cli/tui/Sidebar.tsx +179 -179
- package/src/cli/tui/chat-service.ts +742 -742
- package/src/cli/tui/data.ts +547 -547
- package/src/cli/tui/index.ts +41 -41
- package/src/cli/tui/markdown-render.tsx +371 -371
- package/src/cli/tui/theme.ts +178 -178
- package/src/cli/tui/use-mouse.ts +157 -157
- package/src/cli/tui/useNavigation.ts +56 -56
- package/src/cli/update-checker.ts +211 -211
- package/src/cli/version.ts +7 -7
- package/src/cli/workbench.ts +1 -1
- package/src/codegraph/context-pack.ts +5 -1
- package/src/codegraph/lite-provider.ts +5 -1
- package/src/codegraph/project-context.ts +5 -1
- package/src/compact/token-budget.ts +74 -74
- package/src/config/behavior.ts +59 -59
- package/src/dashboard/project-classification.ts +64 -64
- package/src/dashboard/static/index.html +201 -201
- package/src/dashboard/static/style.css +3584 -3584
- package/src/embedding/fastembed-provider.ts +142 -142
- package/src/embedding/transformers-provider.ts +111 -111
- package/src/git/extractor.ts +209 -209
- package/src/git/hooks-path.ts +85 -85
- package/src/git/noise-filter.ts +210 -210
- package/src/hooks/installers/index.ts +4 -4
- package/src/hooks/official-skills.ts +1 -1
- package/src/hooks/pattern-detector.ts +173 -173
- package/src/hooks/rules/memorix-agent-rules.md +2 -2
- package/src/hooks/significance-filter.ts +250 -250
- package/src/llm/memory-manager.ts +328 -328
- package/src/llm/provider.ts +885 -885
- package/src/llm/quality.ts +248 -248
- package/src/memory/attribution-guard.ts +249 -249
- package/src/memory/auto-relations.ts +107 -107
- package/src/memory/consolidation.ts +302 -302
- package/src/memory/disclosure-policy.ts +141 -141
- package/src/memory/entity-extractor.ts +197 -197
- package/src/memory/formation/evaluate.ts +217 -217
- package/src/memory/formation/extract.ts +361 -361
- package/src/memory/formation/index.ts +417 -417
- package/src/memory/formation/resolve.ts +344 -344
- package/src/memory/formation/types.ts +315 -315
- package/src/memory/freshness.ts +122 -122
- package/src/memory/graph.ts +197 -197
- package/src/memory/refs.ts +94 -94
- package/src/memory/retention.ts +433 -433
- package/src/memory/secret-filter.ts +79 -79
- package/src/memory/session.ts +523 -523
- package/src/multimodal/image-loader.ts +143 -143
- package/src/orchestrate/adapters/claude-stream.ts +192 -192
- package/src/orchestrate/adapters/claude.ts +111 -111
- package/src/orchestrate/adapters/codex-stream.ts +134 -134
- package/src/orchestrate/adapters/codex.ts +41 -41
- package/src/orchestrate/adapters/gemini-stream.ts +166 -166
- package/src/orchestrate/adapters/gemini.ts +42 -42
- package/src/orchestrate/adapters/index.ts +73 -73
- package/src/orchestrate/adapters/opencode-stream.ts +143 -143
- package/src/orchestrate/adapters/opencode.ts +47 -47
- package/src/orchestrate/adapters/spawn-helper.ts +286 -286
- package/src/orchestrate/adapters/types.ts +77 -77
- package/src/orchestrate/capability-router.ts +284 -284
- package/src/orchestrate/context-compact.ts +188 -188
- package/src/orchestrate/cost-tracker.ts +219 -219
- package/src/orchestrate/error-recovery.ts +191 -191
- package/src/orchestrate/evidence.ts +140 -140
- package/src/orchestrate/ledger.ts +110 -110
- package/src/orchestrate/memorix-bridge.ts +380 -380
- package/src/orchestrate/output-budget.ts +80 -80
- package/src/orchestrate/permission.ts +152 -152
- package/src/orchestrate/pipeline-trace.ts +131 -131
- package/src/orchestrate/prompt-builder.ts +155 -155
- package/src/orchestrate/ring-buffer.ts +37 -37
- package/src/orchestrate/task-graph.ts +389 -389
- package/src/orchestrate/verify-gate.ts +219 -219
- package/src/orchestrate/worktree.ts +232 -232
- package/src/project/aliases.ts +374 -374
- package/src/project/detector.ts +268 -268
- package/src/rules/adapters/claude-code.ts +99 -99
- package/src/rules/adapters/codex.ts +97 -97
- package/src/rules/adapters/copilot.ts +124 -124
- package/src/rules/adapters/cursor.ts +114 -114
- package/src/rules/adapters/kiro.ts +126 -126
- package/src/rules/adapters/trae.ts +56 -56
- package/src/rules/adapters/windsurf.ts +83 -83
- package/src/rules/syncer.ts +235 -235
- package/src/sdk.ts +327 -327
- package/src/search/intent-detector.ts +289 -289
- package/src/search/query-expansion.ts +52 -52
- package/src/server/formation-timeout.ts +27 -27
- package/src/skills/mini-skills.ts +386 -386
- package/src/store/chat-store.ts +119 -119
- package/src/store/file-lock.ts +100 -100
- package/src/store/graph-store.ts +249 -249
- package/src/store/mini-skill-store.ts +349 -349
- package/src/store/obs-store.ts +255 -255
- package/src/store/persistence-json.ts +212 -212
- package/src/store/persistence.ts +291 -291
- package/src/store/project-affinity.ts +195 -195
- package/src/store/session-store.ts +259 -259
- package/src/store/sqlite-store.ts +339 -339
- package/src/team/event-bus.ts +76 -76
- package/src/team/file-locks.ts +173 -173
- package/src/team/handoff.ts +167 -167
- package/src/team/messages.ts +203 -203
- package/src/team/poll.ts +132 -132
- package/src/team/tasks.ts +211 -211
- package/src/wiki/generator.ts +237 -237
- package/src/wiki/knowledge-graph.ts +334 -334
- package/src/wiki/types.ts +85 -85
- package/src/workspace/mcp-adapters/codex.ts +191 -191
- package/src/workspace/mcp-adapters/copilot.ts +105 -105
- package/src/workspace/mcp-adapters/cursor.ts +53 -53
- package/src/workspace/mcp-adapters/kiro.ts +64 -64
- package/src/workspace/mcp-adapters/opencode.ts +123 -123
- package/src/workspace/mcp-adapters/trae.ts +134 -134
- package/src/workspace/mcp-adapters/windsurf.ts +91 -91
- package/src/workspace/sanitizer.ts +60 -60
- package/src/workspace/workflow-sync.ts +131 -131
|
@@ -1,201 +1,201 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8">
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
|
8
|
-
<meta http-equiv="Pragma" content="no-cache">
|
|
9
|
-
<meta http-equiv="Expires" content="0">
|
|
10
|
-
<title>Memorix — Memory Control Plane</title>
|
|
11
|
-
<link rel="stylesheet" href="/style.css">
|
|
12
|
-
<script src="https://code.iconify.design/3/3.1.0/iconify.min.js"></script>
|
|
13
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
14
|
-
<link
|
|
15
|
-
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
|
|
16
|
-
rel="stylesheet">
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<!-- Sidebar -->
|
|
21
|
-
<nav id="sidebar">
|
|
22
|
-
<div class="sidebar-brand">
|
|
23
|
-
<img src="/logo.png" alt="Memorix" class="brand-logo" />
|
|
24
|
-
<span class="brand-text">Memorix</span>
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
<!-- Mode Badge — shows standalone vs control-plane, port, MCP endpoint -->
|
|
28
|
-
<div id="mode-badge" class="mode-badge" style="display:none;">
|
|
29
|
-
<span id="mode-badge-label" class="mode-badge-label"></span>
|
|
30
|
-
<span id="mode-badge-port" class="mode-badge-port"></span>
|
|
31
|
-
<span id="mode-badge-mcp" class="mode-badge-mcp" style="display:none;"></span>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
<!-- Project Switcher (custom dropdown) -->
|
|
35
|
-
<div class="project-switcher" id="project-switcher">
|
|
36
|
-
<button class="project-trigger" id="project-trigger" title="Switch project">
|
|
37
|
-
<span class="project-dot"></span>
|
|
38
|
-
<span class="project-name" id="project-name">Loading...</span>
|
|
39
|
-
<span class="project-count" id="project-count"></span>
|
|
40
|
-
<svg class="project-chevron" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
41
|
-
<path d="M6 9l6 6 6-6"/>
|
|
42
|
-
</svg>
|
|
43
|
-
</button>
|
|
44
|
-
<div class="project-dropdown" id="project-dropdown">
|
|
45
|
-
<div class="project-dropdown-header">
|
|
46
|
-
<input type="text" class="project-search" id="project-search" placeholder="Search projects..." autocomplete="off" />
|
|
47
|
-
</div>
|
|
48
|
-
<div class="project-dropdown-list" id="project-list"></div>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
<div class="sidebar-section-label" data-section="core">CORE</div>
|
|
53
|
-
<div class="sidebar-nav">
|
|
54
|
-
<button class="nav-btn active" data-page="dashboard">
|
|
55
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
56
|
-
<rect x="3" y="3" width="7" height="7" rx="1"/>
|
|
57
|
-
<rect x="14" y="3" width="7" height="7" rx="1"/>
|
|
58
|
-
<rect x="3" y="14" width="7" height="7" rx="1"/>
|
|
59
|
-
<rect x="14" y="14" width="7" height="7" rx="1"/>
|
|
60
|
-
</svg>
|
|
61
|
-
<span class="nav-label">Overview</span>
|
|
62
|
-
</button>
|
|
63
|
-
<button class="nav-btn" data-page="git-memory">
|
|
64
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
65
|
-
<circle cx="12" cy="12" r="4"/>
|
|
66
|
-
<line x1="1.05" y1="12" x2="7" y2="12"/>
|
|
67
|
-
<line x1="17.01" y1="12" x2="22.96" y2="12"/>
|
|
68
|
-
</svg>
|
|
69
|
-
<span class="nav-label">Git Memory</span>
|
|
70
|
-
</button>
|
|
71
|
-
<button class="nav-btn" data-page="knowledge">
|
|
72
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
73
|
-
<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/>
|
|
74
|
-
<path d="M4 4.5A2.5 2.5 0 0 1 6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5z"/>
|
|
75
|
-
</svg>
|
|
76
|
-
<span class="nav-label">Knowledge</span>
|
|
77
|
-
</button>
|
|
78
|
-
<button class="nav-btn" data-page="graph">
|
|
79
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
80
|
-
<circle cx="12" cy="5" r="3"/>
|
|
81
|
-
<circle cx="5" cy="19" r="3"/>
|
|
82
|
-
<circle cx="19" cy="19" r="3"/>
|
|
83
|
-
<line x1="12" y1="8" x2="5" y2="16"/>
|
|
84
|
-
<line x1="12" y1="8" x2="19" y2="16"/>
|
|
85
|
-
</svg>
|
|
86
|
-
<span class="nav-label">Graph</span>
|
|
87
|
-
</button>
|
|
88
|
-
<button class="nav-btn" data-page="observations">
|
|
89
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
90
|
-
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/>
|
|
91
|
-
<circle cx="12" cy="12" r="3"/>
|
|
92
|
-
</svg>
|
|
93
|
-
<span class="nav-label">Observations</span>
|
|
94
|
-
</button>
|
|
95
|
-
</div>
|
|
96
|
-
<div class="sidebar-section-label" data-section="health">HEALTH</div>
|
|
97
|
-
<div class="sidebar-nav">
|
|
98
|
-
<button class="nav-btn" data-page="retention">
|
|
99
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
100
|
-
<polyline points="22,12 18,12 15,21 9,3 6,12 2,12"/>
|
|
101
|
-
</svg>
|
|
102
|
-
<span class="nav-label">Retention</span>
|
|
103
|
-
</button>
|
|
104
|
-
<button class="nav-btn" data-page="config">
|
|
105
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
106
|
-
<circle cx="12" cy="12" r="3"/>
|
|
107
|
-
<path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/>
|
|
108
|
-
</svg>
|
|
109
|
-
<span class="nav-label">Config</span>
|
|
110
|
-
</button>
|
|
111
|
-
<button class="nav-btn" data-page="identity">
|
|
112
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
113
|
-
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
|
|
114
|
-
</svg>
|
|
115
|
-
<span class="nav-label">Identity</span>
|
|
116
|
-
</button>
|
|
117
|
-
</div>
|
|
118
|
-
<div class="sidebar-section-label" data-section="collaboration">AGENTS</div>
|
|
119
|
-
<div class="sidebar-nav">
|
|
120
|
-
<button class="nav-btn" data-page="sessions">
|
|
121
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
122
|
-
<rect x="3" y="4" width="18" height="18" rx="2" ry="2"/>
|
|
123
|
-
<line x1="16" y1="2" x2="16" y2="6"/>
|
|
124
|
-
<line x1="8" y1="2" x2="8" y2="6"/>
|
|
125
|
-
<line x1="3" y1="10" x2="21" y2="10"/>
|
|
126
|
-
</svg>
|
|
127
|
-
<span class="nav-label">Sessions</span>
|
|
128
|
-
</button>
|
|
129
|
-
<button class="nav-btn" data-page="team">
|
|
130
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
131
|
-
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/>
|
|
132
|
-
<circle cx="9" cy="7" r="4"/>
|
|
133
|
-
<path d="M23 21v-2a4 4 0 0 0-3-3.87"/>
|
|
134
|
-
<path d="M16 3.13a4 4 0 0 1 0 7.75"/>
|
|
135
|
-
</svg>
|
|
136
|
-
<span class="nav-label">Team</span>
|
|
137
|
-
</button>
|
|
138
|
-
</div>
|
|
139
|
-
<div class="sidebar-spacer"></div>
|
|
140
|
-
<div class="sidebar-footer">
|
|
141
|
-
<button class="sidebar-action-btn" id="theme-toggle" title="Toggle Theme">
|
|
142
|
-
<svg id="theme-icon-sun" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
143
|
-
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:none;">
|
|
144
|
-
<circle cx="12" cy="12" r="5"/>
|
|
145
|
-
<line x1="12" y1="1" x2="12" y2="3"/>
|
|
146
|
-
<line x1="12" y1="21" x2="12" y2="23"/>
|
|
147
|
-
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/>
|
|
148
|
-
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/>
|
|
149
|
-
<line x1="1" y1="12" x2="3" y2="12"/>
|
|
150
|
-
<line x1="21" y1="12" x2="23" y2="12"/>
|
|
151
|
-
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/>
|
|
152
|
-
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
|
|
153
|
-
</svg>
|
|
154
|
-
<svg id="theme-icon-moon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
155
|
-
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
156
|
-
<path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/>
|
|
157
|
-
</svg>
|
|
158
|
-
<span class="action-label" id="theme-label">Dark</span>
|
|
159
|
-
</button>
|
|
160
|
-
<button class="sidebar-action-btn" id="lang-toggle" title="Switch Language / 切换语言">
|
|
161
|
-
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
162
|
-
<circle cx="12" cy="12" r="10"/>
|
|
163
|
-
<line x1="2" y1="12" x2="22" y2="12"/>
|
|
164
|
-
<path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
|
|
165
|
-
</svg>
|
|
166
|
-
<span class="action-label" id="lang-label">EN</span>
|
|
167
|
-
</button>
|
|
168
|
-
</div>
|
|
169
|
-
</nav>
|
|
170
|
-
|
|
171
|
-
<!-- Main Content -->
|
|
172
|
-
<main id="app">
|
|
173
|
-
<div id="page-dashboard" class="page active"></div>
|
|
174
|
-
<div id="page-git-memory" class="page"></div>
|
|
175
|
-
<div id="page-knowledge" class="page"></div>
|
|
176
|
-
<div id="page-graph" class="page"></div>
|
|
177
|
-
<div id="page-observations" class="page"></div>
|
|
178
|
-
<div id="page-retention" class="page"></div>
|
|
179
|
-
<div id="page-config" class="page"></div>
|
|
180
|
-
<div id="page-identity" class="page"></div>
|
|
181
|
-
<div id="page-sessions" class="page"></div>
|
|
182
|
-
<div id="page-team" class="page"></div>
|
|
183
|
-
</main>
|
|
184
|
-
|
|
185
|
-
<!-- Apache ECharts 5 — Knowledge Graph renderer -->
|
|
186
|
-
<script src="https://cdn.jsdelivr.net/npm/echarts@5.5.1/dist/echarts.min.js"></script>
|
|
187
|
-
<!-- Cytoscape.js + Dagre — legacy entity-graph fallback -->
|
|
188
|
-
<script src="https://unpkg.com/cytoscape@3.30.4/dist/cytoscape.min.js"></script>
|
|
189
|
-
<script src="https://unpkg.com/dagre@0.8.5/dist/dagre.min.js"></script>
|
|
190
|
-
<script src="https://unpkg.com/cytoscape-dagre@2.5.0/cytoscape-dagre.js"></script>
|
|
191
|
-
<script>
|
|
192
|
-
// Cache-bust app.js by appending mtime-based version so edits always hit the browser.
|
|
193
|
-
(function () {
|
|
194
|
-
var s = document.createElement('script');
|
|
195
|
-
s.src = '/app.js?v=' + Date.now();
|
|
196
|
-
document.body.appendChild(s);
|
|
197
|
-
})();
|
|
198
|
-
</script>
|
|
199
|
-
</body>
|
|
200
|
-
|
|
201
|
-
</html>
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
|
8
|
+
<meta http-equiv="Pragma" content="no-cache">
|
|
9
|
+
<meta http-equiv="Expires" content="0">
|
|
10
|
+
<title>Memorix — Memory Control Plane</title>
|
|
11
|
+
<link rel="stylesheet" href="/style.css">
|
|
12
|
+
<script src="https://code.iconify.design/3/3.1.0/iconify.min.js"></script>
|
|
13
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
14
|
+
<link
|
|
15
|
+
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
|
|
16
|
+
rel="stylesheet">
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<!-- Sidebar -->
|
|
21
|
+
<nav id="sidebar">
|
|
22
|
+
<div class="sidebar-brand">
|
|
23
|
+
<img src="/logo.png" alt="Memorix" class="brand-logo" />
|
|
24
|
+
<span class="brand-text">Memorix</span>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<!-- Mode Badge — shows standalone vs control-plane, port, MCP endpoint -->
|
|
28
|
+
<div id="mode-badge" class="mode-badge" style="display:none;">
|
|
29
|
+
<span id="mode-badge-label" class="mode-badge-label"></span>
|
|
30
|
+
<span id="mode-badge-port" class="mode-badge-port"></span>
|
|
31
|
+
<span id="mode-badge-mcp" class="mode-badge-mcp" style="display:none;"></span>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<!-- Project Switcher (custom dropdown) -->
|
|
35
|
+
<div class="project-switcher" id="project-switcher">
|
|
36
|
+
<button class="project-trigger" id="project-trigger" title="Switch project">
|
|
37
|
+
<span class="project-dot"></span>
|
|
38
|
+
<span class="project-name" id="project-name">Loading...</span>
|
|
39
|
+
<span class="project-count" id="project-count"></span>
|
|
40
|
+
<svg class="project-chevron" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
41
|
+
<path d="M6 9l6 6 6-6"/>
|
|
42
|
+
</svg>
|
|
43
|
+
</button>
|
|
44
|
+
<div class="project-dropdown" id="project-dropdown">
|
|
45
|
+
<div class="project-dropdown-header">
|
|
46
|
+
<input type="text" class="project-search" id="project-search" placeholder="Search projects..." autocomplete="off" />
|
|
47
|
+
</div>
|
|
48
|
+
<div class="project-dropdown-list" id="project-list"></div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<div class="sidebar-section-label" data-section="core">CORE</div>
|
|
53
|
+
<div class="sidebar-nav">
|
|
54
|
+
<button class="nav-btn active" data-page="dashboard">
|
|
55
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
56
|
+
<rect x="3" y="3" width="7" height="7" rx="1"/>
|
|
57
|
+
<rect x="14" y="3" width="7" height="7" rx="1"/>
|
|
58
|
+
<rect x="3" y="14" width="7" height="7" rx="1"/>
|
|
59
|
+
<rect x="14" y="14" width="7" height="7" rx="1"/>
|
|
60
|
+
</svg>
|
|
61
|
+
<span class="nav-label">Overview</span>
|
|
62
|
+
</button>
|
|
63
|
+
<button class="nav-btn" data-page="git-memory">
|
|
64
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
65
|
+
<circle cx="12" cy="12" r="4"/>
|
|
66
|
+
<line x1="1.05" y1="12" x2="7" y2="12"/>
|
|
67
|
+
<line x1="17.01" y1="12" x2="22.96" y2="12"/>
|
|
68
|
+
</svg>
|
|
69
|
+
<span class="nav-label">Git Memory</span>
|
|
70
|
+
</button>
|
|
71
|
+
<button class="nav-btn" data-page="knowledge">
|
|
72
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
73
|
+
<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/>
|
|
74
|
+
<path d="M4 4.5A2.5 2.5 0 0 1 6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5z"/>
|
|
75
|
+
</svg>
|
|
76
|
+
<span class="nav-label">Knowledge</span>
|
|
77
|
+
</button>
|
|
78
|
+
<button class="nav-btn" data-page="graph">
|
|
79
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
80
|
+
<circle cx="12" cy="5" r="3"/>
|
|
81
|
+
<circle cx="5" cy="19" r="3"/>
|
|
82
|
+
<circle cx="19" cy="19" r="3"/>
|
|
83
|
+
<line x1="12" y1="8" x2="5" y2="16"/>
|
|
84
|
+
<line x1="12" y1="8" x2="19" y2="16"/>
|
|
85
|
+
</svg>
|
|
86
|
+
<span class="nav-label">Graph</span>
|
|
87
|
+
</button>
|
|
88
|
+
<button class="nav-btn" data-page="observations">
|
|
89
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
90
|
+
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/>
|
|
91
|
+
<circle cx="12" cy="12" r="3"/>
|
|
92
|
+
</svg>
|
|
93
|
+
<span class="nav-label">Observations</span>
|
|
94
|
+
</button>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="sidebar-section-label" data-section="health">HEALTH</div>
|
|
97
|
+
<div class="sidebar-nav">
|
|
98
|
+
<button class="nav-btn" data-page="retention">
|
|
99
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
100
|
+
<polyline points="22,12 18,12 15,21 9,3 6,12 2,12"/>
|
|
101
|
+
</svg>
|
|
102
|
+
<span class="nav-label">Retention</span>
|
|
103
|
+
</button>
|
|
104
|
+
<button class="nav-btn" data-page="config">
|
|
105
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
106
|
+
<circle cx="12" cy="12" r="3"/>
|
|
107
|
+
<path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/>
|
|
108
|
+
</svg>
|
|
109
|
+
<span class="nav-label">Config</span>
|
|
110
|
+
</button>
|
|
111
|
+
<button class="nav-btn" data-page="identity">
|
|
112
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
113
|
+
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
|
|
114
|
+
</svg>
|
|
115
|
+
<span class="nav-label">Identity</span>
|
|
116
|
+
</button>
|
|
117
|
+
</div>
|
|
118
|
+
<div class="sidebar-section-label" data-section="collaboration">AGENTS</div>
|
|
119
|
+
<div class="sidebar-nav">
|
|
120
|
+
<button class="nav-btn" data-page="sessions">
|
|
121
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
122
|
+
<rect x="3" y="4" width="18" height="18" rx="2" ry="2"/>
|
|
123
|
+
<line x1="16" y1="2" x2="16" y2="6"/>
|
|
124
|
+
<line x1="8" y1="2" x2="8" y2="6"/>
|
|
125
|
+
<line x1="3" y1="10" x2="21" y2="10"/>
|
|
126
|
+
</svg>
|
|
127
|
+
<span class="nav-label">Sessions</span>
|
|
128
|
+
</button>
|
|
129
|
+
<button class="nav-btn" data-page="team">
|
|
130
|
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
131
|
+
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/>
|
|
132
|
+
<circle cx="9" cy="7" r="4"/>
|
|
133
|
+
<path d="M23 21v-2a4 4 0 0 0-3-3.87"/>
|
|
134
|
+
<path d="M16 3.13a4 4 0 0 1 0 7.75"/>
|
|
135
|
+
</svg>
|
|
136
|
+
<span class="nav-label">Team</span>
|
|
137
|
+
</button>
|
|
138
|
+
</div>
|
|
139
|
+
<div class="sidebar-spacer"></div>
|
|
140
|
+
<div class="sidebar-footer">
|
|
141
|
+
<button class="sidebar-action-btn" id="theme-toggle" title="Toggle Theme">
|
|
142
|
+
<svg id="theme-icon-sun" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
143
|
+
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:none;">
|
|
144
|
+
<circle cx="12" cy="12" r="5"/>
|
|
145
|
+
<line x1="12" y1="1" x2="12" y2="3"/>
|
|
146
|
+
<line x1="12" y1="21" x2="12" y2="23"/>
|
|
147
|
+
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/>
|
|
148
|
+
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/>
|
|
149
|
+
<line x1="1" y1="12" x2="3" y2="12"/>
|
|
150
|
+
<line x1="21" y1="12" x2="23" y2="12"/>
|
|
151
|
+
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/>
|
|
152
|
+
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
|
|
153
|
+
</svg>
|
|
154
|
+
<svg id="theme-icon-moon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
155
|
+
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
156
|
+
<path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/>
|
|
157
|
+
</svg>
|
|
158
|
+
<span class="action-label" id="theme-label">Dark</span>
|
|
159
|
+
</button>
|
|
160
|
+
<button class="sidebar-action-btn" id="lang-toggle" title="Switch Language / 切换语言">
|
|
161
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
162
|
+
<circle cx="12" cy="12" r="10"/>
|
|
163
|
+
<line x1="2" y1="12" x2="22" y2="12"/>
|
|
164
|
+
<path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
|
|
165
|
+
</svg>
|
|
166
|
+
<span class="action-label" id="lang-label">EN</span>
|
|
167
|
+
</button>
|
|
168
|
+
</div>
|
|
169
|
+
</nav>
|
|
170
|
+
|
|
171
|
+
<!-- Main Content -->
|
|
172
|
+
<main id="app">
|
|
173
|
+
<div id="page-dashboard" class="page active"></div>
|
|
174
|
+
<div id="page-git-memory" class="page"></div>
|
|
175
|
+
<div id="page-knowledge" class="page"></div>
|
|
176
|
+
<div id="page-graph" class="page"></div>
|
|
177
|
+
<div id="page-observations" class="page"></div>
|
|
178
|
+
<div id="page-retention" class="page"></div>
|
|
179
|
+
<div id="page-config" class="page"></div>
|
|
180
|
+
<div id="page-identity" class="page"></div>
|
|
181
|
+
<div id="page-sessions" class="page"></div>
|
|
182
|
+
<div id="page-team" class="page"></div>
|
|
183
|
+
</main>
|
|
184
|
+
|
|
185
|
+
<!-- Apache ECharts 5 — Knowledge Graph renderer -->
|
|
186
|
+
<script src="https://cdn.jsdelivr.net/npm/echarts@5.5.1/dist/echarts.min.js"></script>
|
|
187
|
+
<!-- Cytoscape.js + Dagre — legacy entity-graph fallback -->
|
|
188
|
+
<script src="https://unpkg.com/cytoscape@3.30.4/dist/cytoscape.min.js"></script>
|
|
189
|
+
<script src="https://unpkg.com/dagre@0.8.5/dist/dagre.min.js"></script>
|
|
190
|
+
<script src="https://unpkg.com/cytoscape-dagre@2.5.0/cytoscape-dagre.js"></script>
|
|
191
|
+
<script>
|
|
192
|
+
// Cache-bust app.js by appending mtime-based version so edits always hit the browser.
|
|
193
|
+
(function () {
|
|
194
|
+
var s = document.createElement('script');
|
|
195
|
+
s.src = '/app.js?v=' + Date.now();
|
|
196
|
+
document.body.appendChild(s);
|
|
197
|
+
})();
|
|
198
|
+
</script>
|
|
199
|
+
</body>
|
|
200
|
+
|
|
201
|
+
</html>
|