@christopherlittle51/postclaw 1.0.4 → 1.2.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/README.md +1 -1
- package/dashboard/public/app.js +743 -0
- package/dashboard/public/index.html +350 -0
- package/dashboard/public/styles.css +571 -0
- package/dist/dashboard/helpers.d.ts +32 -0
- package/dist/dashboard/helpers.d.ts.map +1 -0
- package/dist/dashboard/helpers.js +122 -0
- package/dist/dashboard/helpers.js.map +1 -0
- package/dist/dashboard/router.d.ts +39 -0
- package/dist/dashboard/router.d.ts.map +1 -0
- package/dist/dashboard/router.js +94 -0
- package/dist/dashboard/router.js.map +1 -0
- package/dist/dashboard/routes/config.d.ts +3 -0
- package/dist/dashboard/routes/config.d.ts.map +1 -0
- package/dist/dashboard/routes/config.js +53 -0
- package/dist/dashboard/routes/config.js.map +1 -0
- package/dist/dashboard/routes/graph.d.ts +11 -0
- package/dist/dashboard/routes/graph.d.ts.map +1 -0
- package/dist/dashboard/routes/graph.js +131 -0
- package/dist/dashboard/routes/graph.js.map +1 -0
- package/dist/dashboard/routes/memories.d.ts +12 -0
- package/dist/dashboard/routes/memories.d.ts.map +1 -0
- package/dist/dashboard/routes/memories.js +199 -0
- package/dist/dashboard/routes/memories.js.map +1 -0
- package/dist/dashboard/routes/personas.d.ts +11 -0
- package/dist/dashboard/routes/personas.d.ts.map +1 -0
- package/dist/dashboard/routes/personas.js +71 -0
- package/dist/dashboard/routes/personas.js.map +1 -0
- package/dist/dashboard/routes/scripts.d.ts +9 -0
- package/dist/dashboard/routes/scripts.d.ts.map +1 -0
- package/dist/dashboard/routes/scripts.js +62 -0
- package/dist/dashboard/routes/scripts.js.map +1 -0
- package/dist/dashboard/routes/workspace.d.ts +10 -0
- package/dist/dashboard/routes/workspace.d.ts.map +1 -0
- package/dist/dashboard/routes/workspace.js +82 -0
- package/dist/dashboard/routes/workspace.js.map +1 -0
- package/dist/dashboard/server.d.ts +14 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +97 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/index.d.ts +3 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +142 -46
- package/dist/index.js.map +1 -1
- package/dist/schemas/validation.d.ts +406 -0
- package/dist/schemas/validation.d.ts.map +1 -1
- package/dist/schemas/validation.js +231 -4
- package/dist/schemas/validation.js.map +1 -1
- package/dist/scripts/bootstrap_persona.d.ts.map +1 -1
- package/dist/scripts/bootstrap_persona.js +9 -4
- package/dist/scripts/bootstrap_persona.js.map +1 -1
- package/dist/scripts/bootstrap_tools.js +16 -25
- package/dist/scripts/bootstrap_tools.js.map +1 -1
- package/dist/scripts/setup-db.d.ts.map +1 -1
- package/dist/scripts/setup-db.js +40 -33
- package/dist/scripts/setup-db.js.map +1 -1
- package/dist/scripts/sleep_cycle.d.ts +12 -0
- package/dist/scripts/sleep_cycle.d.ts.map +1 -1
- package/dist/scripts/sleep_cycle.js +57 -38
- package/dist/scripts/sleep_cycle.js.map +1 -1
- package/dist/services/config.d.ts +31 -0
- package/dist/services/config.d.ts.map +1 -0
- package/dist/services/config.js +125 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/db.d.ts.map +1 -1
- package/dist/services/db.js +6 -4
- package/dist/services/db.js.map +1 -1
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +13 -6
- package/dist/services/llm.js.map +1 -1
- package/dist/services/memoryService.d.ts +10 -38
- package/dist/services/memoryService.d.ts.map +1 -1
- package/dist/services/memoryService.js +27 -78
- package/dist/services/memoryService.js.map +1 -1
- package/dist/services/personaService.d.ts +22 -0
- package/dist/services/personaService.d.ts.map +1 -0
- package/dist/services/personaService.js +148 -0
- package/dist/services/personaService.js.map +1 -0
- package/dist/tests/dashboard-schemas.test.d.ts +6 -0
- package/dist/tests/dashboard-schemas.test.d.ts.map +1 -0
- package/dist/tests/dashboard-schemas.test.js +171 -0
- package/dist/tests/dashboard-schemas.test.js.map +1 -0
- package/dist/tests/helpers.test.d.ts +5 -0
- package/dist/tests/helpers.test.d.ts.map +1 -0
- package/dist/tests/helpers.test.js +66 -0
- package/dist/tests/helpers.test.js.map +1 -0
- package/dist/tests/router.test.d.ts +5 -0
- package/dist/tests/router.test.d.ts.map +1 -0
- package/dist/tests/router.test.js +125 -0
- package/dist/tests/router.test.js.map +1 -0
- package/openclaw.plugin.json +23 -0
- package/package.json +7 -2
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>PostClaw Dashboard</title>
|
|
7
|
+
<meta name="description" content="PostClaw — PostgreSQL memory, persona, and knowledge graph management dashboard" />
|
|
8
|
+
|
|
9
|
+
<!-- AmbientCSS -->
|
|
10
|
+
<link rel="stylesheet" href="/vendor/ambient/ambient.css" />
|
|
11
|
+
|
|
12
|
+
<!-- D3.js for knowledge graph -->
|
|
13
|
+
<script src="https://d3js.org/d3.v7.min.js"></script>
|
|
14
|
+
|
|
15
|
+
<!-- Custom styles -->
|
|
16
|
+
<link rel="stylesheet" href="/styles.css" />
|
|
17
|
+
</head>
|
|
18
|
+
<body class="amb-light-tl">
|
|
19
|
+
<!-- Header -->
|
|
20
|
+
<header class="dashboard-header ambient amb-surface-darker amb-chamfer amb-elevation-2">
|
|
21
|
+
<div class="header-content">
|
|
22
|
+
<h1>🦐 PostClaw</h1>
|
|
23
|
+
<div class="header-controls">
|
|
24
|
+
<label for="agent-select">Agent:</label>
|
|
25
|
+
<select id="agent-select" class="ambient amb-surface amb-fillet amb-elevation-1">
|
|
26
|
+
<option value="main">main</option>
|
|
27
|
+
</select>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</header>
|
|
31
|
+
|
|
32
|
+
<!-- Tab Navigation -->
|
|
33
|
+
<nav class="tab-nav ambient amb-surface amb-chamfer amb-elevation-1">
|
|
34
|
+
<button class="tab-btn active" data-tab="personas">🎭 Personas</button>
|
|
35
|
+
<button class="tab-btn" data-tab="memories">🧠 Memories</button>
|
|
36
|
+
<button class="tab-btn" data-tab="graph">🕸️ Graph</button>
|
|
37
|
+
<button class="tab-btn" data-tab="scripts">⚡ Scripts</button>
|
|
38
|
+
<button class="tab-btn" data-tab="config">⚙️ Config</button>
|
|
39
|
+
</nav>
|
|
40
|
+
|
|
41
|
+
<!-- Tab Panels -->
|
|
42
|
+
<main class="tab-panels">
|
|
43
|
+
|
|
44
|
+
<!-- ============== PERSONAS TAB ============== -->
|
|
45
|
+
<section id="tab-personas" class="tab-panel active">
|
|
46
|
+
<div class="panel-header">
|
|
47
|
+
<h2>Persona Manager</h2>
|
|
48
|
+
<button id="btn-new-persona" class="btn-primary ambient amb-surface amb-chamfer amb-elevation-1 amb-emit-cyan">
|
|
49
|
+
+ New Persona
|
|
50
|
+
</button>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<!-- Create/Edit form (hidden by default) -->
|
|
54
|
+
<div id="persona-form" class="form-card ambient amb-surface amb-fillet amb-elevation-2" style="display:none;">
|
|
55
|
+
<input type="hidden" id="persona-form-id" />
|
|
56
|
+
<div class="form-row">
|
|
57
|
+
<label for="persona-category">Category</label>
|
|
58
|
+
<input id="persona-category" type="text" placeholder="e.g., communication_style" maxlength="50"
|
|
59
|
+
class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
60
|
+
</div>
|
|
61
|
+
<div class="form-row">
|
|
62
|
+
<label for="persona-content">Content</label>
|
|
63
|
+
<textarea id="persona-content" rows="4" placeholder="Persona rule or instruction..."
|
|
64
|
+
class="ambient amb-surface-darker amb-fillet amb-elevation-0"></textarea>
|
|
65
|
+
</div>
|
|
66
|
+
<div class="form-row form-row-inline">
|
|
67
|
+
<label>
|
|
68
|
+
<input id="persona-always-active" type="checkbox" /> Always Active (injected every prompt)
|
|
69
|
+
</label>
|
|
70
|
+
</div>
|
|
71
|
+
<div class="form-actions">
|
|
72
|
+
<button id="btn-save-persona" class="btn-primary ambient amb-surface amb-chamfer amb-elevation-1 amb-emit-green">
|
|
73
|
+
Save
|
|
74
|
+
</button>
|
|
75
|
+
<button id="btn-cancel-persona" class="btn-secondary ambient amb-surface amb-fillet amb-elevation-1">
|
|
76
|
+
Cancel
|
|
77
|
+
</button>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<div id="persona-list" class="data-table-container"></div>
|
|
82
|
+
|
|
83
|
+
<!-- Workspace files panel -->
|
|
84
|
+
<div class="panel-section">
|
|
85
|
+
<h3>📄 Workspace Files</h3>
|
|
86
|
+
<p class="hint">View .md files from the OpenClaw workspace for copy+paste into persona entries.</p>
|
|
87
|
+
<div id="workspace-files" class="workspace-files"></div>
|
|
88
|
+
<pre id="workspace-content" class="workspace-content ambient amb-surface-darker amb-fillet amb-elevation-0" style="display:none;"></pre>
|
|
89
|
+
</div>
|
|
90
|
+
</section>
|
|
91
|
+
|
|
92
|
+
<!-- ============== MEMORIES TAB ============== -->
|
|
93
|
+
<section id="tab-memories" class="tab-panel">
|
|
94
|
+
<div class="panel-header">
|
|
95
|
+
<h2>Memory Manager</h2>
|
|
96
|
+
<button id="btn-new-memory" class="btn-primary ambient amb-surface amb-chamfer amb-elevation-1 amb-emit-cyan">
|
|
97
|
+
+ New Memory
|
|
98
|
+
</button>
|
|
99
|
+
<button id="btn-import-memory" class="btn-secondary ambient amb-surface amb-fillet amb-elevation-1">
|
|
100
|
+
📥 Import
|
|
101
|
+
</button>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<!-- Filters -->
|
|
105
|
+
<div class="filters ambient amb-surface amb-fillet amb-elevation-1">
|
|
106
|
+
<input id="memory-search" type="text" placeholder="Search memories..."
|
|
107
|
+
class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
108
|
+
<select id="memory-tier-filter" class="ambient amb-surface-darker amb-fillet amb-elevation-0">
|
|
109
|
+
<option value="">All Tiers</option>
|
|
110
|
+
<option value="permanent">Permanent</option>
|
|
111
|
+
<option value="stable">Stable</option>
|
|
112
|
+
<option value="daily">Daily</option>
|
|
113
|
+
<option value="session">Session</option>
|
|
114
|
+
<option value="volatile">Volatile</option>
|
|
115
|
+
</select>
|
|
116
|
+
<select id="memory-archived-filter" class="ambient amb-surface-darker amb-fillet amb-elevation-0">
|
|
117
|
+
<option value="false">Active</option>
|
|
118
|
+
<option value="true">Archived</option>
|
|
119
|
+
<option value="all">All</option>
|
|
120
|
+
</select>
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
<!-- Memory form -->
|
|
124
|
+
<div id="memory-form" class="form-card ambient amb-surface amb-fillet amb-elevation-2" style="display:none;">
|
|
125
|
+
<input type="hidden" id="memory-form-id" />
|
|
126
|
+
<div class="form-row">
|
|
127
|
+
<label for="memory-content">Content</label>
|
|
128
|
+
<textarea id="memory-content" rows="3" placeholder="Memory content..."
|
|
129
|
+
class="ambient amb-surface-darker amb-fillet amb-elevation-0"></textarea>
|
|
130
|
+
</div>
|
|
131
|
+
<div class="form-row form-row-grid">
|
|
132
|
+
<div>
|
|
133
|
+
<label for="memory-category">Category</label>
|
|
134
|
+
<input id="memory-category" type="text" placeholder="e.g., preference"
|
|
135
|
+
class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
136
|
+
</div>
|
|
137
|
+
<div>
|
|
138
|
+
<label for="memory-tier">Tier</label>
|
|
139
|
+
<select id="memory-tier" class="ambient amb-surface-darker amb-fillet amb-elevation-0">
|
|
140
|
+
<option value="daily">Daily</option>
|
|
141
|
+
<option value="stable">Stable</option>
|
|
142
|
+
<option value="permanent">Permanent</option>
|
|
143
|
+
<option value="session">Session</option>
|
|
144
|
+
<option value="volatile">Volatile</option>
|
|
145
|
+
</select>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
<div class="form-actions">
|
|
149
|
+
<button id="btn-save-memory" class="btn-primary ambient amb-surface amb-chamfer amb-elevation-1 amb-emit-green">Save</button>
|
|
150
|
+
<button id="btn-cancel-memory" class="btn-secondary ambient amb-surface amb-fillet amb-elevation-1">Cancel</button>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
|
|
154
|
+
<!-- Import form -->
|
|
155
|
+
<div id="import-form" class="form-card ambient amb-surface amb-fillet amb-elevation-2" style="display:none;">
|
|
156
|
+
<div class="form-row">
|
|
157
|
+
<label for="import-content">Markdown Content</label>
|
|
158
|
+
<textarea id="import-content" rows="8" placeholder="Paste markdown content here..."
|
|
159
|
+
class="ambient amb-surface-darker amb-fillet amb-elevation-0"></textarea>
|
|
160
|
+
</div>
|
|
161
|
+
<div class="form-row">
|
|
162
|
+
<label for="import-filename">Source Filename (optional)</label>
|
|
163
|
+
<input id="import-filename" type="text" placeholder="e.g., memory.md"
|
|
164
|
+
class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
165
|
+
</div>
|
|
166
|
+
<div class="form-actions">
|
|
167
|
+
<button id="btn-run-import" class="btn-primary ambient amb-surface amb-chamfer amb-elevation-1 amb-emit-amber">
|
|
168
|
+
Import
|
|
169
|
+
</button>
|
|
170
|
+
<button id="btn-cancel-import" class="btn-secondary ambient amb-surface amb-fillet amb-elevation-1">Cancel</button>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
|
|
174
|
+
<div id="memory-list" class="data-table-container"></div>
|
|
175
|
+
<div id="memory-pagination" class="pagination"></div>
|
|
176
|
+
</section>
|
|
177
|
+
|
|
178
|
+
<!-- ============== GRAPH TAB ============== -->
|
|
179
|
+
<section id="tab-graph" class="tab-panel">
|
|
180
|
+
<div class="panel-header">
|
|
181
|
+
<h2>Knowledge Graph</h2>
|
|
182
|
+
<div class="graph-controls">
|
|
183
|
+
<button id="btn-fit-graph" class="btn-secondary ambient amb-surface amb-fillet amb-elevation-1">
|
|
184
|
+
📐 Fit
|
|
185
|
+
</button>
|
|
186
|
+
<button id="btn-toggle-labels" class="btn-secondary ambient amb-surface amb-fillet amb-elevation-1">
|
|
187
|
+
🏷️ Labels On
|
|
188
|
+
</button>
|
|
189
|
+
<button id="btn-refresh-graph" class="btn-secondary ambient amb-surface amb-fillet amb-elevation-1">
|
|
190
|
+
🔄 Refresh
|
|
191
|
+
</button>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
<div class="graph-wrapper">
|
|
195
|
+
<div id="graph-container" class="graph-container ambient amb-surface-darker amb-fillet amb-elevation-2">
|
|
196
|
+
<svg id="graph-svg"></svg>
|
|
197
|
+
<div id="graph-legend" class="graph-legend"></div>
|
|
198
|
+
</div>
|
|
199
|
+
<div id="graph-info" class="graph-info ambient amb-surface amb-fillet amb-elevation-1">
|
|
200
|
+
<span id="graph-stats">Scroll to zoom • Drag to pan • Click a node for details</span>
|
|
201
|
+
</div>
|
|
202
|
+
<div id="graph-detail" class="graph-detail-panel ambient amb-surface amb-chamfer amb-elevation-2" style="display:none;"></div>
|
|
203
|
+
</div>
|
|
204
|
+
</section>
|
|
205
|
+
|
|
206
|
+
<!-- ============== SCRIPTS TAB ============== -->
|
|
207
|
+
<section id="tab-scripts" class="tab-panel">
|
|
208
|
+
<div class="panel-header">
|
|
209
|
+
<h2>Run Scripts</h2>
|
|
210
|
+
</div>
|
|
211
|
+
<div class="scripts-grid">
|
|
212
|
+
<div class="script-card ambient amb-surface amb-chamfer amb-elevation-2">
|
|
213
|
+
<h3>💤 Sleep Cycle</h3>
|
|
214
|
+
<p>Run knowledge graph maintenance: episodic consolidation, duplicate detection, low-value cleanup, and link discovery.</p>
|
|
215
|
+
<button id="btn-run-sleep" class="btn-primary ambient amb-surface amb-chamfer amb-elevation-1 amb-emit-blue">
|
|
216
|
+
Run Sleep Cycle
|
|
217
|
+
</button>
|
|
218
|
+
<div id="sleep-status" class="script-status"></div>
|
|
219
|
+
</div>
|
|
220
|
+
<div class="script-card ambient amb-surface amb-chamfer amb-elevation-2">
|
|
221
|
+
<h3>🎭 Persona Import</h3>
|
|
222
|
+
<p>Bootstrap a Markdown persona file into the agent_persona table.</p>
|
|
223
|
+
<div class="form-row">
|
|
224
|
+
<input id="persona-import-file" type="text" placeholder="/path/to/SOUL.md"
|
|
225
|
+
class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
226
|
+
</div>
|
|
227
|
+
<button id="btn-run-persona-import" class="btn-primary ambient amb-surface amb-chamfer amb-elevation-1 amb-emit-amber">
|
|
228
|
+
Import Persona
|
|
229
|
+
</button>
|
|
230
|
+
<div id="persona-import-status" class="script-status"></div>
|
|
231
|
+
</div>
|
|
232
|
+
</div>
|
|
233
|
+
</section>
|
|
234
|
+
|
|
235
|
+
<!-- ============== CONFIG TAB ============== -->
|
|
236
|
+
<section id="tab-config" class="tab-panel">
|
|
237
|
+
<div class="panel-header">
|
|
238
|
+
<h2>Plugin Configuration</h2>
|
|
239
|
+
<div class="header-actions">
|
|
240
|
+
<button id="btn-reset-config" class="btn-secondary ambient amb-surface amb-fillet amb-elevation-1">
|
|
241
|
+
Reset to Defaults
|
|
242
|
+
</button>
|
|
243
|
+
<button id="btn-save-config" class="btn-primary ambient amb-surface amb-chamfer amb-elevation-1 amb-emit-green">
|
|
244
|
+
Save All Settings
|
|
245
|
+
</button>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
|
|
249
|
+
<div class="config-grid">
|
|
250
|
+
<!-- RAG Settings -->
|
|
251
|
+
<div class="config-card ambient amb-surface amb-chamfer amb-elevation-2">
|
|
252
|
+
<h3>🔍 RAG & Search</h3>
|
|
253
|
+
<p class="hint">Fine-tune how memories are retrieved and injected into prompts.</p>
|
|
254
|
+
<div class="form-row">
|
|
255
|
+
<label for="cfg-rag-semantic-limit">Semantic Matches (Direct)</label>
|
|
256
|
+
<input id="cfg-rag-semantic-limit" type="number" min="1" max="50" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
257
|
+
<small>Number of direct vector matches to fetch.</small>
|
|
258
|
+
</div>
|
|
259
|
+
<div class="form-row">
|
|
260
|
+
<label for="cfg-rag-total-limit">Total Matches (Final)</label>
|
|
261
|
+
<input id="cfg-rag-total-limit" type="number" min="1" max="100" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
262
|
+
<small>Max memories after adding linked results.</small>
|
|
263
|
+
</div>
|
|
264
|
+
<div class="form-row">
|
|
265
|
+
<label for="cfg-rag-linked-similarity">Linked Similarity Floor</label>
|
|
266
|
+
<input id="cfg-rag-linked-similarity" type="number" step="0.01" min="0" max="1" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
267
|
+
<small>Boosted similarity score given to linked (traversed) memories.</small>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
|
|
271
|
+
<!-- Persona -->
|
|
272
|
+
<div class="config-card ambient amb-surface amb-chamfer amb-elevation-2">
|
|
273
|
+
<h3>🎭 Persona</h3>
|
|
274
|
+
<p class="hint">Control situational context injection.</p>
|
|
275
|
+
<div class="form-row">
|
|
276
|
+
<label for="cfg-persona-situational-limit">Situational Persona Limit</label>
|
|
277
|
+
<input id="cfg-persona-situational-limit" type="number" min="1" max="20" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
278
|
+
<small>Number of similarity-ranked persona facts to inject.</small>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
<!-- System Prompt Templates -->
|
|
283
|
+
<div class="config-card config-card-full ambient amb-surface amb-chamfer amb-elevation-2">
|
|
284
|
+
<h3>📝 System Prompt Templates</h3>
|
|
285
|
+
<p class="hint">These blocks are injected into the agent's system prompt. Changes take effect on the next user message.</p>
|
|
286
|
+
<div class="form-row">
|
|
287
|
+
<label for="cfg-prompt-memory">Memory Management Rules</label>
|
|
288
|
+
<textarea id="cfg-prompt-memory" rows="8" class="ambient amb-surface-darker amb-fillet amb-elevation-0 code-font"></textarea>
|
|
289
|
+
</div>
|
|
290
|
+
<div class="form-row">
|
|
291
|
+
<label for="cfg-prompt-persona">Persona Management Rules</label>
|
|
292
|
+
<textarea id="cfg-prompt-persona" rows="6" class="ambient amb-surface-darker amb-fillet amb-elevation-0 code-font"></textarea>
|
|
293
|
+
</div>
|
|
294
|
+
<div class="form-row">
|
|
295
|
+
<label for="cfg-prompt-heartbeat">Heartbeat / Autonomous Rules</label>
|
|
296
|
+
<textarea id="cfg-prompt-heartbeat" rows="6" class="ambient amb-surface-darker amb-fillet amb-elevation-0 code-font"></textarea>
|
|
297
|
+
<small>Use {{heartbeatFilePath}} as a placeholder for the path below.</small>
|
|
298
|
+
</div>
|
|
299
|
+
<div class="form-row">
|
|
300
|
+
<label for="cfg-prompt-heartbeat-path">Heartbeat File Path</label>
|
|
301
|
+
<input id="cfg-prompt-heartbeat-path" type="text" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
302
|
+
</div>
|
|
303
|
+
</div>
|
|
304
|
+
|
|
305
|
+
<!-- Sleep Cycle -->
|
|
306
|
+
<div class="config-card config-card-full ambient amb-surface amb-chamfer amb-elevation-2">
|
|
307
|
+
<h3>💤 Sleep & Maintenance</h3>
|
|
308
|
+
<p class="hint">Adjust the thresholds for background knowledge graph optimization.</p>
|
|
309
|
+
<div class="form-row-grid">
|
|
310
|
+
<div class="form-row">
|
|
311
|
+
<label for="cfg-sleep-dedup-threshold">Dedup Similarity</label>
|
|
312
|
+
<input id="cfg-sleep-dedup-threshold" type="number" step="0.01" min="0" max="1" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
313
|
+
<small>Merge memories > this similarity (Default 0.80).</small>
|
|
314
|
+
</div>
|
|
315
|
+
<div class="form-row">
|
|
316
|
+
<label for="cfg-sleep-low-value-age">Cleanup Age (Days)</label>
|
|
317
|
+
<input id="cfg-sleep-low-value-age" type="number" min="1" max="365" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
318
|
+
<small>Archive unused memories older than this.</small>
|
|
319
|
+
</div>
|
|
320
|
+
<div class="form-row">
|
|
321
|
+
<label for="cfg-sleep-link-min">Link Min Similarity</label>
|
|
322
|
+
<input id="cfg-sleep-link-min" type="number" step="0.01" min="0" max="1" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
323
|
+
</div>
|
|
324
|
+
<div class="form-row">
|
|
325
|
+
<label for="cfg-sleep-link-max">Link Max Similarity</label>
|
|
326
|
+
<input id="cfg-sleep-link-max" type="number" step="0.01" min="0" max="1" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
327
|
+
</div>
|
|
328
|
+
</div>
|
|
329
|
+
</div>
|
|
330
|
+
|
|
331
|
+
<!-- Other -->
|
|
332
|
+
<div class="config-card ambient amb-surface amb-chamfer amb-elevation-2">
|
|
333
|
+
<h3>🛠️ Technical</h3>
|
|
334
|
+
<div class="form-row">
|
|
335
|
+
<label for="cfg-dedup-cache">Event Cache Size</label>
|
|
336
|
+
<input id="cfg-dedup-cache" type="number" min="100" max="10000" class="ambient amb-surface-darker amb-fillet amb-elevation-0" />
|
|
337
|
+
<small>Number of event IDs to store to prevent double-processing.</small>
|
|
338
|
+
</div>
|
|
339
|
+
</div>
|
|
340
|
+
</div>
|
|
341
|
+
</section>
|
|
342
|
+
|
|
343
|
+
</main>
|
|
344
|
+
|
|
345
|
+
<!-- Toast container -->
|
|
346
|
+
<div id="toast-container" class="toast-container"></div>
|
|
347
|
+
|
|
348
|
+
<script src="/app.js"></script>
|
|
349
|
+
</body>
|
|
350
|
+
</html>
|