@christopherlittle51/postclaw 1.3.1 → 1.3.2
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 +69 -695
- package/dashboard/README.md +89 -0
- package/dashboard/public/app.js +903 -542
- package/dashboard/public/index.html +184 -73
- package/dashboard/public/styles.css +583 -126
- package/dist/dashboard/routes/graph.d.ts +2 -2
- package/dist/dashboard/routes/graph.d.ts.map +1 -1
- package/dist/dashboard/routes/graph.js +61 -23
- package/dist/dashboard/routes/graph.js.map +1 -1
- package/dist/dashboard/routes/memories.d.ts.map +1 -1
- package/dist/dashboard/routes/memories.js +66 -0
- package/dist/dashboard/routes/memories.js.map +1 -1
- package/dist/dashboard/routes/workspace.d.ts +4 -3
- package/dist/dashboard/routes/workspace.d.ts.map +1 -1
- package/dist/dashboard/routes/workspace.js +119 -7
- package/dist/dashboard/routes/workspace.js.map +1 -1
- package/dist/dashboard/server.js +1 -1
- package/dist/dashboard/server.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +84 -27
- package/dist/index.js.map +1 -1
- package/dist/schemas/validation.d.ts +32 -3
- package/dist/schemas/validation.d.ts.map +1 -1
- package/dist/schemas/validation.js +22 -4
- package/dist/schemas/validation.js.map +1 -1
- package/dist/scripts/setup-db.d.ts.map +1 -1
- package/dist/scripts/setup-db.js +28 -30
- package/dist/scripts/setup-db.js.map +1 -1
- package/dist/scripts/sleep_cycle.d.ts +1 -0
- package/dist/scripts/sleep_cycle.d.ts.map +1 -1
- package/dist/scripts/sleep_cycle.js +114 -21
- package/dist/scripts/sleep_cycle.js.map +1 -1
- package/dist/services/config.d.ts +1 -0
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +4 -22
- package/dist/services/config.js.map +1 -1
- package/dist/services/memoryService.d.ts +2 -1
- package/dist/services/memoryService.d.ts.map +1 -1
- package/dist/services/memoryService.js +90 -24
- package/dist/services/memoryService.js.map +1 -1
- package/dist/services/personaService.d.ts +25 -0
- package/dist/services/personaService.d.ts.map +1 -1
- package/dist/services/personaService.js +79 -0
- package/dist/services/personaService.js.map +1 -1
- package/dist/tests/dashboard-schemas.test.js +71 -1
- package/dist/tests/dashboard-schemas.test.js.map +1 -1
- package/package.json +1 -1
- package/schemas/README.md +64 -0
|
@@ -1,58 +1,108 @@
|
|
|
1
1
|
/* =============================================================================
|
|
2
|
-
* PostClaw Dashboard —
|
|
2
|
+
* PostClaw Dashboard — AmbientCSS-first design
|
|
3
|
+
*
|
|
4
|
+
* Philosophy: let AmbientCSS own ALL surface colors via its lighting model.
|
|
5
|
+
* We only define text/accent tokens and layout. No hardcoded background hex.
|
|
6
|
+
*
|
|
7
|
+
* AmbientCSS primitives used in the HTML:
|
|
8
|
+
* amb-surface → flat panel at light intensity
|
|
9
|
+
* amb-surface-concave → recessed inputs / filters (gradient inset)
|
|
10
|
+
* amb-surface-convex → raised buttons (gradient outward)
|
|
11
|
+
* amb-surface-darker → deeper recessed areas (30% of key light)
|
|
12
|
+
* amb-chamfer → hard-edged bevel (1px inset highlight/shadow)
|
|
13
|
+
* amb-chamfer-2 → wider bevel
|
|
14
|
+
* amb-fillet → soft rounded bevel (2px blurred inset)
|
|
15
|
+
* amb-elevation-N → drop shadow depth: 0 (flush), 1–3 (raised)
|
|
3
16
|
* ============================================================================= */
|
|
4
17
|
|
|
5
|
-
/* ----------
|
|
18
|
+
/* ---------- AmbientCSS Lighting Configuration ---------- */
|
|
6
19
|
:root {
|
|
7
|
-
|
|
8
|
-
--
|
|
9
|
-
--
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
--
|
|
13
|
-
--
|
|
20
|
+
/* Light from top-left — crisp, canonical */
|
|
21
|
+
--amb-light-x: -0.3;
|
|
22
|
+
--amb-light-y: -0.3;
|
|
23
|
+
|
|
24
|
+
/* Dark theme: low key light, fixed gap (0.15) for subtle edge contrast */
|
|
25
|
+
--amb-key-light-intensity: 0.22;
|
|
26
|
+
--amb-fill-light-intensity: 0.75;
|
|
27
|
+
|
|
28
|
+
/* Cool slate-blue palette */
|
|
29
|
+
--amb-light-hue: 234;
|
|
30
|
+
--amb-light-saturation: 0%;
|
|
31
|
+
|
|
32
|
+
/* ---- Text (neutral, adapted by JS light slider) ---- */
|
|
33
|
+
--text-primary: hsl(0 0% 90%);
|
|
34
|
+
--text-secondary: hsl(0 0% 65%);
|
|
35
|
+
--text-muted: hsl(0 0% 48%);
|
|
36
|
+
|
|
37
|
+
/* ---- Accents (standalone colors, not surfaces) ---- */
|
|
14
38
|
--accent-cyan: #00d4aa;
|
|
15
39
|
--accent-blue: #4f9cf7;
|
|
16
40
|
--accent-amber: #f7b955;
|
|
17
41
|
--accent-red: #f7555a;
|
|
18
42
|
--accent-green: #4ade80;
|
|
19
43
|
--accent-purple: #a78bfa;
|
|
20
|
-
|
|
44
|
+
|
|
45
|
+
/* ---- Spacing / Shape ---- */
|
|
21
46
|
--radius: 12px;
|
|
22
47
|
--radius-sm: 8px;
|
|
23
48
|
--transition: 0.2s ease;
|
|
24
|
-
|
|
25
|
-
/* AmbientCSS light config */
|
|
26
|
-
--amb-light-x: -0.7;
|
|
27
|
-
--amb-light-y: -0.8;
|
|
28
|
-
--amb-key-light-intensity: 0.4;
|
|
29
|
-
--amb-fill-light-intensity: 0.15;
|
|
30
|
-
--amb-surface-color: var(--bg-surface);
|
|
31
|
-
--amb-environment-color: var(--bg-primary);
|
|
32
49
|
}
|
|
33
50
|
|
|
34
|
-
/* ---------- Base ---------- */
|
|
35
|
-
* {
|
|
51
|
+
/* ---------- Base Reset ---------- */
|
|
52
|
+
* {
|
|
53
|
+
box-sizing: border-box;
|
|
54
|
+
margin: 0;
|
|
55
|
+
padding: 0;
|
|
56
|
+
}
|
|
36
57
|
|
|
37
58
|
body {
|
|
38
59
|
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
39
|
-
|
|
60
|
+
/* Body sits just below amb-surface brightness — neutral gray */
|
|
61
|
+
background: hsl(0 0% calc(var(--amb-key-light-intensity) * 100%));
|
|
40
62
|
color: var(--text-primary);
|
|
41
63
|
line-height: 1.5;
|
|
42
64
|
min-height: 100vh;
|
|
43
65
|
}
|
|
44
66
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
67
|
+
/* ---------- Typography ---------- */
|
|
68
|
+
h1 {
|
|
69
|
+
font-size: 1.5rem;
|
|
70
|
+
font-weight: 700;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
h2 {
|
|
74
|
+
font-size: 1.25rem;
|
|
75
|
+
font-weight: 600;
|
|
76
|
+
margin-bottom: 0.5rem;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
h3 {
|
|
80
|
+
font-size: 1.1rem;
|
|
81
|
+
font-weight: 600;
|
|
82
|
+
margin-bottom: 0.5rem;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
h4 {
|
|
86
|
+
font-size: 0.95rem;
|
|
87
|
+
font-weight: 600;
|
|
88
|
+
margin-bottom: 0.4rem;
|
|
89
|
+
color: var(--text-secondary);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
p {
|
|
93
|
+
color: var(--text-secondary);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.hint {
|
|
97
|
+
font-size: 0.85rem;
|
|
98
|
+
color: var(--text-secondary);
|
|
99
|
+
margin-bottom: 0.5rem;
|
|
100
|
+
}
|
|
50
101
|
|
|
51
102
|
/* ---------- Header ---------- */
|
|
52
103
|
.dashboard-header {
|
|
53
104
|
padding: 1rem 1.5rem;
|
|
54
|
-
background
|
|
55
|
-
border-bottom: 1px solid var(--border);
|
|
105
|
+
/* AmbientCSS classes handle background & shadow via HTML */
|
|
56
106
|
}
|
|
57
107
|
|
|
58
108
|
.header-content {
|
|
@@ -77,10 +127,8 @@ p { color: var(--text-secondary); }
|
|
|
77
127
|
/* ---------- Tab Navigation ---------- */
|
|
78
128
|
.tab-nav {
|
|
79
129
|
display: flex;
|
|
80
|
-
gap: 0.
|
|
130
|
+
gap: 0.35rem;
|
|
81
131
|
padding: 0.5rem 1.5rem;
|
|
82
|
-
background: var(--bg-surface);
|
|
83
|
-
border-bottom: 1px solid var(--border);
|
|
84
132
|
max-width: 1400px;
|
|
85
133
|
margin: 0 auto;
|
|
86
134
|
}
|
|
@@ -98,12 +146,10 @@ p { color: var(--text-secondary); }
|
|
|
98
146
|
|
|
99
147
|
.tab-btn:hover {
|
|
100
148
|
color: var(--text-primary);
|
|
101
|
-
background: var(--bg-hover);
|
|
102
149
|
}
|
|
103
150
|
|
|
104
151
|
.tab-btn.active {
|
|
105
|
-
color: var(--
|
|
106
|
-
background: var(--bg-surface-alt);
|
|
152
|
+
color: var(--text-primary);
|
|
107
153
|
font-weight: 600;
|
|
108
154
|
}
|
|
109
155
|
|
|
@@ -114,12 +160,25 @@ p { color: var(--text-secondary); }
|
|
|
114
160
|
padding: 0 1.5rem;
|
|
115
161
|
}
|
|
116
162
|
|
|
117
|
-
.tab-panel {
|
|
118
|
-
|
|
163
|
+
.tab-panel {
|
|
164
|
+
display: none;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.tab-panel.active {
|
|
168
|
+
display: block;
|
|
169
|
+
animation: fadeIn 0.3s ease;
|
|
170
|
+
}
|
|
119
171
|
|
|
120
172
|
@keyframes fadeIn {
|
|
121
|
-
from {
|
|
122
|
-
|
|
173
|
+
from {
|
|
174
|
+
opacity: 0;
|
|
175
|
+
transform: translateY(4px);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
to {
|
|
179
|
+
opacity: 1;
|
|
180
|
+
transform: translateY(0);
|
|
181
|
+
}
|
|
123
182
|
}
|
|
124
183
|
|
|
125
184
|
.panel-header {
|
|
@@ -132,38 +191,40 @@ p { color: var(--text-secondary); }
|
|
|
132
191
|
.panel-section {
|
|
133
192
|
margin-top: 2rem;
|
|
134
193
|
padding-top: 1.5rem;
|
|
135
|
-
border-top: 1px solid var(--
|
|
194
|
+
border-top: 1px solid hsl(var(--amb-light-hue) var(--amb-light-saturation) 15%);
|
|
136
195
|
}
|
|
137
196
|
|
|
138
197
|
/* ---------- Buttons ---------- */
|
|
139
|
-
.btn-primary,
|
|
198
|
+
.btn-primary,
|
|
199
|
+
.btn-secondary {
|
|
140
200
|
padding: 0.5rem 1rem;
|
|
141
201
|
border: none;
|
|
142
202
|
border-radius: var(--radius-sm);
|
|
143
203
|
cursor: pointer;
|
|
144
204
|
font-size: 0.85rem;
|
|
145
205
|
font-weight: 500;
|
|
206
|
+
color: var(--text-primary);
|
|
146
207
|
transition: all var(--transition);
|
|
208
|
+
/* AmbientCSS handles background via amb-surface-convex on these elements */
|
|
147
209
|
}
|
|
148
210
|
|
|
149
|
-
.btn-primary {
|
|
150
|
-
|
|
151
|
-
|
|
211
|
+
.btn-primary:hover {
|
|
212
|
+
transform: translateY(-1px);
|
|
213
|
+
filter: brightness(1.15);
|
|
152
214
|
}
|
|
153
215
|
|
|
154
|
-
.btn-primary:hover { filter: brightness(1.15); transform: translateY(-1px); }
|
|
155
|
-
|
|
156
216
|
.btn-secondary {
|
|
157
|
-
|
|
158
|
-
color: var(--text-primary);
|
|
159
|
-
border: 1px solid var(--border);
|
|
217
|
+
color: var(--text-secondary);
|
|
160
218
|
}
|
|
161
219
|
|
|
162
|
-
.btn-secondary:hover {
|
|
220
|
+
.btn-secondary:hover {
|
|
221
|
+
color: var(--text-primary);
|
|
222
|
+
filter: brightness(1.1);
|
|
223
|
+
}
|
|
163
224
|
|
|
164
225
|
.btn-danger {
|
|
165
|
-
background:
|
|
166
|
-
color:
|
|
226
|
+
background: transparent;
|
|
227
|
+
color: var(--accent-red);
|
|
167
228
|
border: none;
|
|
168
229
|
padding: 0.25rem 0.5rem;
|
|
169
230
|
border-radius: var(--radius-sm);
|
|
@@ -172,7 +233,9 @@ p { color: var(--text-secondary); }
|
|
|
172
233
|
transition: all var(--transition);
|
|
173
234
|
}
|
|
174
235
|
|
|
175
|
-
.btn-danger:hover {
|
|
236
|
+
.btn-danger:hover {
|
|
237
|
+
filter: brightness(1.3);
|
|
238
|
+
}
|
|
176
239
|
|
|
177
240
|
.btn-sm {
|
|
178
241
|
padding: 0.25rem 0.6rem;
|
|
@@ -183,15 +246,33 @@ p { color: var(--text-secondary); }
|
|
|
183
246
|
.form-card {
|
|
184
247
|
padding: 1.25rem;
|
|
185
248
|
margin-bottom: 1rem;
|
|
186
|
-
background: var(--bg-surface);
|
|
187
249
|
border-radius: var(--radius);
|
|
188
|
-
|
|
250
|
+
/* amb-surface amb-chamfer amb-elevation-2 applied via HTML */
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.form-row {
|
|
254
|
+
margin-bottom: 0.75rem;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
.form-row label {
|
|
258
|
+
display: block;
|
|
259
|
+
font-size: 0.85rem;
|
|
260
|
+
margin-bottom: 0.25rem;
|
|
261
|
+
color: var(--text-secondary);
|
|
189
262
|
}
|
|
190
263
|
|
|
191
|
-
.form-row {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
264
|
+
.form-row-inline {
|
|
265
|
+
display: flex;
|
|
266
|
+
align-items: center;
|
|
267
|
+
gap: 0.5rem;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.form-row-inline label {
|
|
271
|
+
display: flex;
|
|
272
|
+
align-items: center;
|
|
273
|
+
gap: 0.5rem;
|
|
274
|
+
margin-bottom: 0;
|
|
275
|
+
}
|
|
195
276
|
|
|
196
277
|
.form-row-grid {
|
|
197
278
|
display: grid;
|
|
@@ -199,58 +280,277 @@ p { color: var(--text-secondary); }
|
|
|
199
280
|
gap: 0.75rem;
|
|
200
281
|
}
|
|
201
282
|
|
|
202
|
-
|
|
283
|
+
/* Inputs: AmbientCSS handles the recessed look via amb-surface-concave.
|
|
284
|
+
Invert fillet direction so bevel reads as inset, not raised. */
|
|
285
|
+
input[type="text"],
|
|
286
|
+
input[type="number"],
|
|
287
|
+
textarea,
|
|
288
|
+
select {
|
|
203
289
|
width: 100%;
|
|
204
290
|
padding: 0.5rem 0.75rem;
|
|
205
|
-
|
|
206
|
-
border: 1px solid var(--border);
|
|
291
|
+
border: none;
|
|
207
292
|
border-radius: var(--radius-sm);
|
|
208
293
|
color: var(--text-primary);
|
|
209
294
|
font-size: 0.9rem;
|
|
210
295
|
font-family: inherit;
|
|
211
|
-
transition:
|
|
296
|
+
transition: all var(--transition);
|
|
297
|
+
--amb-fillet-width: -1;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/* ---------- Light Sliders ---------- */
|
|
301
|
+
.light-slider-group {
|
|
302
|
+
display: flex;
|
|
303
|
+
align-items: center;
|
|
304
|
+
gap: 0.5rem;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.light-slider-group label {
|
|
308
|
+
font-size: 0.75rem;
|
|
309
|
+
color: var(--text-muted);
|
|
310
|
+
white-space: nowrap;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.light-slider-label {
|
|
314
|
+
font-size: 0.7rem;
|
|
315
|
+
color: var(--text-muted);
|
|
316
|
+
text-transform: uppercase;
|
|
317
|
+
letter-spacing: 0.05em;
|
|
212
318
|
}
|
|
213
319
|
|
|
214
|
-
|
|
320
|
+
.light-slider {
|
|
321
|
+
-webkit-appearance: none;
|
|
322
|
+
appearance: none;
|
|
323
|
+
width: 120px;
|
|
324
|
+
height: 4px;
|
|
325
|
+
border-radius: 2px;
|
|
326
|
+
background: linear-gradient(to right,
|
|
327
|
+
hsl(var(--amb-light-hue) var(--amb-light-saturation) 8%),
|
|
328
|
+
hsl(var(--amb-light-hue) var(--amb-light-saturation) 85%));
|
|
215
329
|
outline: none;
|
|
216
|
-
|
|
330
|
+
cursor: pointer;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.light-slider-narrow {
|
|
334
|
+
width: 70px;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.light-slider::-webkit-slider-thumb {
|
|
338
|
+
-webkit-appearance: none;
|
|
339
|
+
appearance: none;
|
|
340
|
+
width: 14px;
|
|
341
|
+
height: 14px;
|
|
342
|
+
border-radius: 50%;
|
|
343
|
+
background: var(--text-primary);
|
|
344
|
+
border: 2px solid hsl(var(--amb-light-hue) var(--amb-light-saturation) 40%);
|
|
345
|
+
cursor: pointer;
|
|
346
|
+
transition: transform 0.1s ease;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.light-slider::-webkit-slider-thumb:hover {
|
|
350
|
+
transform: scale(1.2);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.light-slider::-moz-range-thumb {
|
|
354
|
+
width: 14px;
|
|
355
|
+
height: 14px;
|
|
356
|
+
border-radius: 50%;
|
|
357
|
+
background: var(--text-primary);
|
|
358
|
+
border: 2px solid hsl(var(--amb-light-hue) var(--amb-light-saturation) 40%);
|
|
359
|
+
cursor: pointer;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.light-value {
|
|
363
|
+
font-size: 0.7rem;
|
|
364
|
+
color: var(--text-muted);
|
|
365
|
+
font-family: 'Fira Code', 'Consolas', monospace;
|
|
366
|
+
min-width: 2.5em;
|
|
367
|
+
text-align: right;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
input[type="text"]:focus,
|
|
371
|
+
input[type="number"]:focus,
|
|
372
|
+
textarea:focus,
|
|
373
|
+
select:focus {
|
|
374
|
+
outline: 2px solid hsl(234 30% 55% / 0.5);
|
|
375
|
+
outline-offset: 1px;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.form-actions {
|
|
379
|
+
display: flex;
|
|
380
|
+
gap: 0.5rem;
|
|
381
|
+
margin-top: 0.75rem;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/* ---------- Memory Links Section ---------- */
|
|
385
|
+
.memory-links-section {
|
|
386
|
+
margin-top: 1rem;
|
|
387
|
+
padding-top: 0.75rem;
|
|
388
|
+
border-top: 1px solid hsl(var(--amb-light-hue) var(--amb-light-saturation) 15%);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
.edge-list {
|
|
392
|
+
margin-bottom: 0.5rem;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.edge-item {
|
|
396
|
+
display: flex;
|
|
397
|
+
align-items: center;
|
|
398
|
+
gap: 0.5rem;
|
|
399
|
+
padding: 0.35rem 0.5rem;
|
|
400
|
+
margin-bottom: 0.25rem;
|
|
401
|
+
border-radius: var(--radius-sm);
|
|
402
|
+
font-size: 0.8rem;
|
|
403
|
+
background: hsl(var(--amb-light-hue) var(--amb-light-saturation) calc(var(--amb-key-light-intensity) * 70%));
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.edge-item .edge-rel {
|
|
407
|
+
font-weight: 500;
|
|
408
|
+
color: var(--accent-cyan);
|
|
409
|
+
min-width: 80px;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.edge-item .edge-target {
|
|
413
|
+
flex: 1;
|
|
414
|
+
color: var(--text-secondary);
|
|
415
|
+
overflow: hidden;
|
|
416
|
+
text-overflow: ellipsis;
|
|
417
|
+
white-space: nowrap;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.edge-item .edge-type-badge {
|
|
421
|
+
font-size: 0.65rem;
|
|
422
|
+
padding: 0.1rem 0.35rem;
|
|
423
|
+
border-radius: 4px;
|
|
424
|
+
background: rgba(167, 139, 250, 0.15);
|
|
425
|
+
color: var(--accent-purple);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.edge-item button {
|
|
429
|
+
margin-left: auto;
|
|
430
|
+
flex-shrink: 0;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
.link-form {
|
|
434
|
+
display: flex;
|
|
435
|
+
gap: 0.4rem;
|
|
436
|
+
align-items: flex-end;
|
|
437
|
+
flex-wrap: wrap;
|
|
438
|
+
position: relative;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.link-form input {
|
|
442
|
+
flex: 1;
|
|
443
|
+
min-width: 120px;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
.link-search-results {
|
|
447
|
+
position: absolute;
|
|
448
|
+
top: 100%;
|
|
449
|
+
left: 0;
|
|
450
|
+
right: 0;
|
|
451
|
+
background: hsl(var(--amb-light-hue) var(--amb-light-saturation) calc(var(--amb-key-light-intensity) * 100%));
|
|
452
|
+
border: 1px solid hsl(var(--amb-light-hue) var(--amb-light-saturation) 30%);
|
|
453
|
+
border-radius: var(--radius-sm);
|
|
454
|
+
max-height: 200px;
|
|
455
|
+
overflow-y: auto;
|
|
456
|
+
z-index: 20;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.link-search-item {
|
|
460
|
+
padding: 0.4rem 0.75rem;
|
|
461
|
+
cursor: pointer;
|
|
462
|
+
font-size: 0.8rem;
|
|
463
|
+
display: flex;
|
|
464
|
+
align-items: center;
|
|
465
|
+
gap: 0.5rem;
|
|
466
|
+
border-bottom: 1px solid hsl(var(--amb-light-hue) var(--amb-light-saturation) 18%);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
.link-search-item:hover {
|
|
470
|
+
background: hsl(var(--amb-light-hue) var(--amb-light-saturation) calc(var(--amb-key-light-intensity) * 130%));
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.link-search-item .node-type {
|
|
474
|
+
font-size: 0.65rem;
|
|
475
|
+
padding: 0.05rem 0.3rem;
|
|
476
|
+
border-radius: 3px;
|
|
477
|
+
font-weight: 500;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.link-search-item .node-type.memory {
|
|
481
|
+
background: rgba(79, 156, 247, 0.15);
|
|
482
|
+
color: var(--accent-blue);
|
|
217
483
|
}
|
|
218
484
|
|
|
219
|
-
.
|
|
485
|
+
.link-search-item .node-type.persona {
|
|
486
|
+
background: rgba(247, 185, 85, 0.15);
|
|
487
|
+
color: var(--accent-amber);
|
|
488
|
+
}
|
|
220
489
|
|
|
221
490
|
/* ---------- Data Tables ---------- */
|
|
222
|
-
.data-table-container {
|
|
491
|
+
.data-table-container {
|
|
492
|
+
overflow-x: auto;
|
|
493
|
+
}
|
|
223
494
|
|
|
224
495
|
.data-table {
|
|
225
496
|
width: 100%;
|
|
226
497
|
border-collapse: collapse;
|
|
227
|
-
font-size: 0.
|
|
498
|
+
font-size: 0.82rem;
|
|
228
499
|
}
|
|
229
500
|
|
|
230
501
|
.data-table th {
|
|
231
502
|
text-align: left;
|
|
232
|
-
padding: 0.
|
|
233
|
-
background: var(--bg-surface-alt);
|
|
503
|
+
padding: 0.5rem 0.6rem;
|
|
234
504
|
color: var(--text-secondary);
|
|
235
505
|
font-weight: 500;
|
|
236
|
-
|
|
506
|
+
white-space: nowrap;
|
|
507
|
+
border-bottom: 1px solid hsl(var(--amb-light-hue) var(--amb-light-saturation) 18%);
|
|
508
|
+
background: hsl(var(--amb-light-hue) var(--amb-light-saturation) calc(var(--amb-key-light-intensity) * 70%));
|
|
237
509
|
position: sticky;
|
|
238
510
|
top: 0;
|
|
239
511
|
}
|
|
240
512
|
|
|
241
513
|
.data-table td {
|
|
242
|
-
padding: 0.
|
|
243
|
-
border-bottom: 1px solid var(--
|
|
514
|
+
padding: 0.35rem 0.5rem;
|
|
515
|
+
border-bottom: 1px solid hsl(var(--amb-light-hue) var(--amb-light-saturation) 14%);
|
|
244
516
|
max-width: 400px;
|
|
245
517
|
overflow: hidden;
|
|
246
518
|
text-overflow: ellipsis;
|
|
247
519
|
white-space: nowrap;
|
|
248
520
|
}
|
|
249
521
|
|
|
250
|
-
.data-table
|
|
522
|
+
.data-table td:first-child {
|
|
523
|
+
white-space: normal;
|
|
524
|
+
max-width: 280px;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.data-table tr:hover td {
|
|
528
|
+
background: hsl(var(--amb-light-hue) var(--amb-light-saturation) calc(var(--amb-key-light-intensity) * 130%));
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.data-table .actions {
|
|
532
|
+
white-space: nowrap;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
.data-table .actions button {
|
|
536
|
+
margin-right: 0.25rem;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
.memory-pointer {
|
|
540
|
+
border-left: 3px solid var(--accent-cyan);
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
.vol-low {
|
|
544
|
+
color: var(--accent-green);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
.vol-medium {
|
|
548
|
+
color: var(--accent-amber);
|
|
549
|
+
}
|
|
251
550
|
|
|
252
|
-
.
|
|
253
|
-
|
|
551
|
+
.vol-high {
|
|
552
|
+
color: var(--accent-red);
|
|
553
|
+
}
|
|
254
554
|
|
|
255
555
|
/* ---------- Filters ---------- */
|
|
256
556
|
.filters {
|
|
@@ -258,11 +558,14 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
258
558
|
gap: 0.5rem;
|
|
259
559
|
padding: 0.75rem;
|
|
260
560
|
margin-bottom: 1rem;
|
|
261
|
-
background: var(--bg-surface);
|
|
262
561
|
border-radius: var(--radius);
|
|
562
|
+
/* amb-surface-concave applied via HTML — recessed filter bar */
|
|
263
563
|
}
|
|
264
564
|
|
|
265
|
-
.filters input,
|
|
565
|
+
.filters input,
|
|
566
|
+
.filters select {
|
|
567
|
+
max-width: 250px;
|
|
568
|
+
}
|
|
266
569
|
|
|
267
570
|
/* ---------- Pagination ---------- */
|
|
268
571
|
.pagination {
|
|
@@ -284,11 +587,11 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
284
587
|
width: 100%;
|
|
285
588
|
height: calc(100vh - 280px);
|
|
286
589
|
min-height: 400px;
|
|
287
|
-
background: var(--bg-surface);
|
|
288
590
|
border-radius: var(--radius);
|
|
289
591
|
overflow: hidden;
|
|
290
592
|
position: relative;
|
|
291
593
|
cursor: grab;
|
|
594
|
+
/* amb-surface-concave amb-chamfer — recessed canvas */
|
|
292
595
|
}
|
|
293
596
|
|
|
294
597
|
.graph-container:active {
|
|
@@ -322,9 +625,8 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
322
625
|
flex-wrap: wrap;
|
|
323
626
|
gap: 0.5rem;
|
|
324
627
|
padding: 0.5rem 0.75rem;
|
|
325
|
-
background:
|
|
628
|
+
background: hsl(var(--amb-light-hue) var(--amb-light-saturation) calc(var(--amb-key-light-intensity) * 50%) / 0.85);
|
|
326
629
|
border-radius: var(--radius-sm);
|
|
327
|
-
border: 1px solid var(--border);
|
|
328
630
|
font-size: 0.75rem;
|
|
329
631
|
color: var(--text-secondary);
|
|
330
632
|
z-index: 10;
|
|
@@ -346,14 +648,22 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
346
648
|
flex-shrink: 0;
|
|
347
649
|
}
|
|
348
650
|
|
|
651
|
+
.legend-diamond {
|
|
652
|
+
width: 10px;
|
|
653
|
+
height: 10px;
|
|
654
|
+
display: inline-block;
|
|
655
|
+
flex-shrink: 0;
|
|
656
|
+
transform: rotate(45deg);
|
|
657
|
+
border-radius: 2px;
|
|
658
|
+
}
|
|
659
|
+
|
|
349
660
|
/* Detail panel */
|
|
350
661
|
.graph-detail-panel {
|
|
351
662
|
margin-top: 0.5rem;
|
|
352
663
|
padding: 1rem 1.25rem;
|
|
353
|
-
background: var(--bg-surface);
|
|
354
664
|
border-radius: var(--radius);
|
|
355
|
-
border: 1px solid var(--border);
|
|
356
665
|
animation: fadeIn 0.2s ease;
|
|
666
|
+
/* amb-surface amb-chamfer amb-elevation-2 via HTML */
|
|
357
667
|
}
|
|
358
668
|
|
|
359
669
|
.detail-header {
|
|
@@ -396,14 +706,58 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
396
706
|
}
|
|
397
707
|
|
|
398
708
|
/* Graph node/edge styles */
|
|
399
|
-
.graph-node {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
.graph-node .node-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
709
|
+
.graph-node {
|
|
710
|
+
cursor: pointer;
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
.graph-node .node-circle {
|
|
714
|
+
transition: all 0.15s ease;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
.graph-node:hover .node-circle {
|
|
718
|
+
filter: brightness(1.3);
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
.graph-node:hover .node-glow {
|
|
722
|
+
stroke-opacity: 0.4;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
.graph-node .node-label {
|
|
726
|
+
font-size: 10px;
|
|
727
|
+
fill: var(--text-secondary);
|
|
728
|
+
pointer-events: none;
|
|
729
|
+
font-weight: 500;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
.graph-node .node-diamond {
|
|
733
|
+
transition: all 0.15s ease;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
.graph-node:hover .node-diamond {
|
|
737
|
+
filter: brightness(1.3);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
.graph-edge {
|
|
741
|
+
stroke-opacity: 0.35;
|
|
742
|
+
transition: stroke-opacity 0.15s ease;
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
.graph-edge:hover {
|
|
746
|
+
stroke-opacity: 0.8;
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
.graph-edge-label {
|
|
750
|
+
font-size: 7px;
|
|
751
|
+
fill: var(--text-muted);
|
|
752
|
+
pointer-events: none;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
.graph-link-preview {
|
|
756
|
+
stroke: var(--accent-cyan);
|
|
757
|
+
stroke-width: 2;
|
|
758
|
+
stroke-dasharray: 6 3;
|
|
759
|
+
stroke-opacity: 0.8;
|
|
760
|
+
}
|
|
407
761
|
|
|
408
762
|
/* ---------- Scripts ---------- */
|
|
409
763
|
.scripts-grid {
|
|
@@ -414,14 +768,22 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
414
768
|
|
|
415
769
|
.script-card {
|
|
416
770
|
padding: 1.25rem;
|
|
417
|
-
background: var(--bg-surface);
|
|
418
771
|
border-radius: var(--radius);
|
|
419
|
-
|
|
772
|
+
/* amb-surface amb-chamfer amb-elevation-2 via HTML */
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
.script-card h3 {
|
|
776
|
+
margin-bottom: 0.5rem;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
.script-card p {
|
|
780
|
+
font-size: 0.85rem;
|
|
781
|
+
margin-bottom: 1rem;
|
|
420
782
|
}
|
|
421
783
|
|
|
422
|
-
.script-card
|
|
423
|
-
|
|
424
|
-
|
|
784
|
+
.script-card .form-row {
|
|
785
|
+
margin-bottom: 0.75rem;
|
|
786
|
+
}
|
|
425
787
|
|
|
426
788
|
.script-status {
|
|
427
789
|
margin-top: 0.75rem;
|
|
@@ -429,9 +791,17 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
429
791
|
color: var(--text-secondary);
|
|
430
792
|
}
|
|
431
793
|
|
|
432
|
-
.script-status.running {
|
|
433
|
-
|
|
434
|
-
|
|
794
|
+
.script-status.running {
|
|
795
|
+
color: var(--accent-amber);
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
.script-status.success {
|
|
799
|
+
color: var(--accent-green);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
.script-status.error {
|
|
803
|
+
color: var(--accent-red);
|
|
804
|
+
}
|
|
435
805
|
|
|
436
806
|
/* ---------- Workspace Files ---------- */
|
|
437
807
|
.workspace-files {
|
|
@@ -443,16 +813,41 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
443
813
|
|
|
444
814
|
.workspace-file-btn {
|
|
445
815
|
padding: 0.35rem 0.75rem;
|
|
446
|
-
|
|
447
|
-
border: 1px solid var(--border);
|
|
816
|
+
border: none;
|
|
448
817
|
border-radius: var(--radius-sm);
|
|
449
818
|
color: var(--text-primary);
|
|
450
819
|
cursor: pointer;
|
|
451
820
|
font-size: 0.8rem;
|
|
452
821
|
transition: all var(--transition);
|
|
822
|
+
background: hsl(var(--amb-light-hue) var(--amb-light-saturation) calc(var(--amb-key-light-intensity) * 80%));
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
.workspace-file-btn:hover {
|
|
826
|
+
filter: brightness(1.2);
|
|
827
|
+
color: var(--accent-cyan);
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
.workspace-import-actions {
|
|
831
|
+
display: flex;
|
|
832
|
+
gap: 0.25rem;
|
|
833
|
+
margin-top: 0.35rem;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
.workspace-import-btn {
|
|
837
|
+
padding: 0.2rem 0.5rem;
|
|
838
|
+
border: none;
|
|
839
|
+
border-radius: 4px;
|
|
840
|
+
color: var(--text-secondary);
|
|
841
|
+
cursor: pointer;
|
|
842
|
+
font-size: 0.7rem;
|
|
843
|
+
transition: all var(--transition);
|
|
844
|
+
background: hsl(var(--amb-light-hue) var(--amb-light-saturation) calc(var(--amb-key-light-intensity) * 60%));
|
|
453
845
|
}
|
|
454
846
|
|
|
455
|
-
.workspace-
|
|
847
|
+
.workspace-import-btn:hover {
|
|
848
|
+
color: var(--accent-cyan);
|
|
849
|
+
filter: brightness(1.3);
|
|
850
|
+
}
|
|
456
851
|
|
|
457
852
|
.workspace-content {
|
|
458
853
|
padding: 1rem;
|
|
@@ -463,9 +858,10 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
463
858
|
font-size: 0.8rem;
|
|
464
859
|
color: var(--text-secondary);
|
|
465
860
|
line-height: 1.6;
|
|
861
|
+
/* amb-surface-concave amb-fillet via HTML */
|
|
466
862
|
}
|
|
467
863
|
|
|
468
|
-
/* ----------
|
|
864
|
+
/* ---------- Badges ---------- */
|
|
469
865
|
.badge {
|
|
470
866
|
display: inline-block;
|
|
471
867
|
padding: 0.15rem 0.5rem;
|
|
@@ -474,13 +870,50 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
474
870
|
font-weight: 500;
|
|
475
871
|
}
|
|
476
872
|
|
|
477
|
-
.badge-permanent {
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
.badge-
|
|
483
|
-
|
|
873
|
+
.badge-permanent {
|
|
874
|
+
background: rgba(74, 222, 128, 0.15);
|
|
875
|
+
color: var(--accent-green);
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
.badge-stable {
|
|
879
|
+
background: rgba(79, 156, 247, 0.15);
|
|
880
|
+
color: var(--accent-blue);
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
.badge-daily {
|
|
884
|
+
background: rgba(247, 185, 85, 0.15);
|
|
885
|
+
color: var(--accent-amber);
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
.badge-session {
|
|
889
|
+
background: rgba(167, 139, 250, 0.15);
|
|
890
|
+
color: var(--accent-purple);
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
.badge-volatile {
|
|
894
|
+
background: rgba(247, 85, 90, 0.15);
|
|
895
|
+
color: var(--accent-red);
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
.badge-true {
|
|
899
|
+
background: rgba(0, 212, 170, 0.15);
|
|
900
|
+
color: var(--accent-cyan);
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
.badge-false {
|
|
904
|
+
background: rgba(107, 114, 128, 0.15);
|
|
905
|
+
color: var(--text-muted);
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
.badge-memory {
|
|
909
|
+
background: rgba(79, 156, 247, 0.1);
|
|
910
|
+
color: var(--accent-blue);
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
.badge-persona {
|
|
914
|
+
background: rgba(247, 185, 85, 0.1);
|
|
915
|
+
color: var(--accent-amber);
|
|
916
|
+
}
|
|
484
917
|
|
|
485
918
|
/* ---------- Toast Notifications ---------- */
|
|
486
919
|
.toast-container {
|
|
@@ -502,12 +935,41 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
502
935
|
max-width: 350px;
|
|
503
936
|
}
|
|
504
937
|
|
|
505
|
-
.toast-success {
|
|
506
|
-
|
|
507
|
-
|
|
938
|
+
.toast-success {
|
|
939
|
+
background: rgba(74, 222, 128, 0.9);
|
|
940
|
+
color: #0a0c0f;
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
.toast-error {
|
|
944
|
+
background: rgba(247, 85, 90, 0.9);
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
.toast-info {
|
|
948
|
+
background: rgba(79, 156, 247, 0.9);
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
@keyframes toastIn {
|
|
952
|
+
from {
|
|
953
|
+
opacity: 0;
|
|
954
|
+
transform: translateX(100px);
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
to {
|
|
958
|
+
opacity: 1;
|
|
959
|
+
transform: translateX(0);
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
@keyframes toastOut {
|
|
964
|
+
from {
|
|
965
|
+
opacity: 1;
|
|
966
|
+
}
|
|
508
967
|
|
|
509
|
-
|
|
510
|
-
|
|
968
|
+
to {
|
|
969
|
+
opacity: 0;
|
|
970
|
+
transform: translateY(10px);
|
|
971
|
+
}
|
|
972
|
+
}
|
|
511
973
|
|
|
512
974
|
/* ---------- Config Grid ---------- */
|
|
513
975
|
.config-grid {
|
|
@@ -519,6 +981,8 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
519
981
|
|
|
520
982
|
.config-card {
|
|
521
983
|
padding: 1.5rem;
|
|
984
|
+
border-radius: var(--radius);
|
|
985
|
+
/* amb-surface amb-chamfer amb-elevation-2 via HTML */
|
|
522
986
|
}
|
|
523
987
|
|
|
524
988
|
.config-card-full {
|
|
@@ -528,21 +992,20 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
528
992
|
.config-card h3 {
|
|
529
993
|
margin-bottom: 0.5rem;
|
|
530
994
|
font-size: 1.1rem;
|
|
531
|
-
color: var(--
|
|
995
|
+
color: var(--text-primary);
|
|
532
996
|
}
|
|
533
997
|
|
|
534
998
|
.config-card .hint {
|
|
535
999
|
margin-bottom: 1.25rem;
|
|
536
1000
|
font-size: 0.85rem;
|
|
537
|
-
color: var(--text-
|
|
1001
|
+
color: var(--text-secondary);
|
|
538
1002
|
}
|
|
539
1003
|
|
|
540
1004
|
.config-card small {
|
|
541
1005
|
display: block;
|
|
542
1006
|
margin-top: 0.25rem;
|
|
543
|
-
color: var(--text-
|
|
544
|
-
font-size: 0.
|
|
545
|
-
opacity: 0.8;
|
|
1007
|
+
color: var(--text-secondary);
|
|
1008
|
+
font-size: 0.78rem;
|
|
546
1009
|
}
|
|
547
1010
|
|
|
548
1011
|
.code-font {
|
|
@@ -558,14 +1021,8 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|
|
558
1021
|
}
|
|
559
1022
|
|
|
560
1023
|
/* Responsive grid for internal form rows */
|
|
561
|
-
.form-row-grid {
|
|
562
|
-
display: grid;
|
|
563
|
-
grid-template-columns: 1fr 1fr;
|
|
564
|
-
gap: 1.25rem;
|
|
565
|
-
}
|
|
566
|
-
|
|
567
1024
|
@media (max-width: 600px) {
|
|
568
1025
|
.form-row-grid {
|
|
569
1026
|
grid-template-columns: 1fr;
|
|
570
1027
|
}
|
|
571
|
-
}
|
|
1028
|
+
}
|