@jungjaehoon/mama-os 0.33.0 → 0.34.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 +15 -17
- package/dist/agent/os-agent-capabilities.md +2 -2
- package/dist/api/graph-api.d.ts +4 -4
- package/dist/api/graph-api.d.ts.map +1 -1
- package/dist/api/graph-api.js +47 -78
- package/dist/api/graph-api.js.map +1 -1
- package/dist/api/index.d.ts +10 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +9 -2
- package/dist/api/index.js.map +1 -1
- package/dist/api/operator-handler.d.ts +1 -1
- package/dist/api/operator-handler.js +1 -1
- package/dist/api/runtime-status-handler.d.ts +41 -0
- package/dist/api/runtime-status-handler.d.ts.map +1 -0
- package/dist/api/runtime-status-handler.js +55 -0
- package/dist/api/runtime-status-handler.js.map +1 -0
- package/dist/cli/commands/start.js +1 -1
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/runtime/api-routes-init.js +1 -1
- package/dist/cli/runtime/api-routes-init.js.map +1 -1
- package/dist/cli/runtime/api-server-init.d.ts +12 -1
- package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-server-init.js +54 -0
- package/dist/cli/runtime/api-server-init.js.map +1 -1
- package/dist/cli/runtime/utilities.d.ts +1 -1
- package/dist/cli/runtime/utilities.d.ts.map +1 -1
- package/dist/cli/runtime/utilities.js +3 -1
- package/dist/cli/runtime/utilities.js.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.js +2 -2
- package/dist/operator/board-slot-instructions.d.ts +1 -1
- package/dist/operator/board-slot-instructions.js +1 -1
- package/package.json +1 -2
- package/public/viewer/js/modules/system.js +183 -0
- package/public/viewer/js/utils/ui-commands.js +4 -9
- package/public/viewer/log-viewer.html +2 -192
- package/public/viewer/operator/operator.css +1 -0
- package/public/viewer/operator/operator.js +14830 -0
- package/public/viewer/src/modules/system.ts +242 -0
- package/public/viewer/src/utils/ui-commands.ts +4 -8
- package/public/viewer/sw.js +44 -10
- package/public/viewer/viewer.css +338 -331
- package/public/viewer/viewer.html +388 -1472
- package/public/ui/assets/index-BDXDGEV6.js +0 -62
- package/public/ui/assets/index-po2tN0xq.css +0 -1
- package/public/ui/index.html +0 -14
- package/public/ui/theme-init.js +0 -20
- package/public/viewer/js/modules/agents.js +0 -1153
- package/public/viewer/js/modules/chat.js +0 -1993
- package/public/viewer/js/modules/connector-feed.js +0 -352
- package/public/viewer/js/modules/dashboard.js +0 -456
- package/public/viewer/js/modules/entity-audit.js +0 -106
- package/public/viewer/js/modules/entity-review.js +0 -66
- package/public/viewer/js/modules/settings.js +0 -1257
- package/public/viewer/src/modules/agents.ts +0 -1302
- package/public/viewer/src/modules/chat.ts +0 -2426
- package/public/viewer/src/modules/connector-feed.ts +0 -391
- package/public/viewer/src/modules/dashboard.ts +0 -498
- package/public/viewer/src/modules/entity-audit.ts +0 -154
- package/public/viewer/src/modules/entity-review.ts +0 -175
- package/public/viewer/src/modules/settings.ts +0 -1547
package/public/viewer/viewer.css
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* ============================================================================
|
|
2
2
|
MAMA Viewer - Brand-Aligned CSS
|
|
3
3
|
Color Palette: Yellow #FFCE00, Lavender #EDDBF7, Black #131313, Blush #FF9999
|
|
4
|
-
Typography: Inter (UI) + Fredoka (markdown headings) + Nunito (
|
|
4
|
+
Typography: Inter (UI) + Fredoka (markdown headings) + Nunito (body)
|
|
5
5
|
CJK Fallback: Noto Sans KR, Noto Sans JP
|
|
6
6
|
============================================================================ */
|
|
7
7
|
|
|
@@ -76,106 +76,16 @@ button:not([class*="p-"]):not([class*="px-"]):not([class*="py-"]) { padding: 6px
|
|
|
76
76
|
[data-tab] { min-height: 44px; }
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
/* Floating Chat */
|
|
80
79
|
.animate-slide-up {
|
|
81
80
|
animation: slide-up 0.2s ease-out;
|
|
82
81
|
}
|
|
83
|
-
|
|
84
|
-
#chat-bubble {
|
|
85
|
-
transition: transform 0.2s ease, opacity 0.2s ease;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
#chat-bubble.scale-0 {
|
|
89
|
-
transform: scale(0);
|
|
90
|
-
opacity: 0;
|
|
91
|
-
pointer-events: none;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
#chat-panel .chat-message {
|
|
95
|
-
font-size: 0.875rem;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
#chat-panel .chat-message .message-content {
|
|
99
|
-
font-size: 0.875rem;
|
|
100
|
-
line-height: 1.4;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/* Chat panel sizing + scroll behavior fixes */
|
|
104
|
-
#chat-panel {
|
|
105
|
-
width: min(92vw, 420px);
|
|
106
|
-
height: min(75vh, 560px);
|
|
107
|
-
resize: both;
|
|
108
|
-
overflow: auto;
|
|
109
|
-
box-sizing: border-box;
|
|
110
|
-
min-width: 280px;
|
|
111
|
-
min-height: 320px;
|
|
112
|
-
max-width: 96vw;
|
|
113
|
-
max-height: 85vh;
|
|
114
|
-
/* GPU compositing for smooth toggle */
|
|
115
|
-
transform: translateZ(0);
|
|
116
|
-
will-change: opacity;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
82
|
/* Right panel mode (SmartStore pattern) — override floating panel sizing */
|
|
120
|
-
|
|
121
|
-
transition: width 0.15s ease;
|
|
122
|
-
height: 100%;
|
|
123
|
-
overflow: hidden;
|
|
124
|
-
min-width: 280px;
|
|
125
|
-
}
|
|
126
|
-
#chat-panel-wrapper #chat-panel {
|
|
127
|
-
width: 100%;
|
|
128
|
-
height: 100%;
|
|
129
|
-
min-width: 0;
|
|
130
|
-
min-height: 0;
|
|
131
|
-
max-width: none;
|
|
132
|
-
max-height: none;
|
|
133
|
-
resize: none;
|
|
134
|
-
overflow: hidden;
|
|
135
|
-
transform: none;
|
|
136
|
-
will-change: auto;
|
|
137
|
-
}
|
|
138
|
-
#chat-resize-handle-bar {
|
|
139
|
-
display: none;
|
|
140
|
-
}
|
|
141
|
-
#chat-resize-handle-bar.chat-resize-visible {
|
|
142
|
-
display: block;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/* Legacy bubble styles (kept for backward compat) */
|
|
146
|
-
#chat-panel.chat-panel-closed {
|
|
147
|
-
opacity: 0;
|
|
148
|
-
pointer-events: none;
|
|
149
|
-
}
|
|
150
|
-
#chat-panel.chat-panel-open {
|
|
151
|
-
opacity: 1;
|
|
152
|
-
pointer-events: auto;
|
|
153
|
-
}
|
|
154
|
-
.chat-panel-draggable {
|
|
155
|
-
position: fixed !important;
|
|
156
|
-
right: auto !important;
|
|
157
|
-
bottom: auto !important;
|
|
158
|
-
}
|
|
159
|
-
.no-scroll {
|
|
83
|
+
/* Legacy bubble styles (kept for backward compat) */.no-scroll {
|
|
160
84
|
overflow: hidden !important;
|
|
161
85
|
touch-action: none !important;
|
|
162
86
|
}
|
|
163
87
|
|
|
164
88
|
/* Custom resize handle (works on mobile) */
|
|
165
|
-
.chat-resize-handle {
|
|
166
|
-
position: absolute;
|
|
167
|
-
right: 8px;
|
|
168
|
-
bottom: 8px;
|
|
169
|
-
width: 18px;
|
|
170
|
-
height: 18px;
|
|
171
|
-
background:
|
|
172
|
-
linear-gradient(135deg, transparent 50%, #D4C4E0 50%) 0 0/100% 100% no-repeat;
|
|
173
|
-
border-radius: 3px;
|
|
174
|
-
cursor: nwse-resize;
|
|
175
|
-
touch-action: none;
|
|
176
|
-
opacity: 0.8;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
89
|
/* Sidebar resize handle (mobile row-resize) */
|
|
180
90
|
#sidebar-resize-handle.sidebar-resize-handle--row {
|
|
181
91
|
width: 100%;
|
|
@@ -193,56 +103,7 @@ button:not([class*="p-"]):not([class*="px-"]):not([class*="py-"]) { padding: 6px
|
|
|
193
103
|
background: #D4C4E0;
|
|
194
104
|
}
|
|
195
105
|
|
|
196
|
-
/* Mobile
|
|
197
|
-
@media (max-width: 767px) {
|
|
198
|
-
#chat-panel-wrapper {
|
|
199
|
-
height: auto;
|
|
200
|
-
}
|
|
201
|
-
#chat-panel-wrapper #chat-panel {
|
|
202
|
-
overflow: visible;
|
|
203
|
-
}
|
|
204
|
-
/* Mobile chat header — compact + brand aligned */
|
|
205
|
-
#chat-panel-wrapper.mobile-chat-active #chat-header {
|
|
206
|
-
padding: 12px 16px;
|
|
207
|
-
background: linear-gradient(180deg, #fff 0%, #FAFAF8 100%);
|
|
208
|
-
border-bottom: 1px solid #EDE9E1;
|
|
209
|
-
}
|
|
210
|
-
/* Mobile chat input — larger targets, brand colors */
|
|
211
|
-
#chat-panel-wrapper.mobile-chat-active .p-3 {
|
|
212
|
-
padding: 12px 16px;
|
|
213
|
-
background: #FAFAF8;
|
|
214
|
-
border-top: 1px solid #EDE9E1;
|
|
215
|
-
}
|
|
216
|
-
#chat-panel-wrapper.mobile-chat-active #chat-input {
|
|
217
|
-
background: #fff;
|
|
218
|
-
border: 1.5px solid #D4C4E0;
|
|
219
|
-
border-radius: 20px;
|
|
220
|
-
padding: 10px 16px;
|
|
221
|
-
font-size: 15px;
|
|
222
|
-
min-height: 44px;
|
|
223
|
-
}
|
|
224
|
-
#chat-panel-wrapper.mobile-chat-active #chat-input:focus {
|
|
225
|
-
border-color: #FFCE00;
|
|
226
|
-
box-shadow: 0 0 0 3px rgba(255, 206, 0, 0.15);
|
|
227
|
-
}
|
|
228
|
-
/* Mobile action buttons — 44px touch targets */
|
|
229
|
-
#chat-panel-wrapper.mobile-chat-active #chat-attach,
|
|
230
|
-
#chat-panel-wrapper.mobile-chat-active #chat-mic,
|
|
231
|
-
#chat-panel-wrapper.mobile-chat-active #chat-send {
|
|
232
|
-
width: 44px;
|
|
233
|
-
height: 44px;
|
|
234
|
-
border-radius: 50%;
|
|
235
|
-
}
|
|
236
|
-
#chat-panel-wrapper.mobile-chat-active #chat-send {
|
|
237
|
-
background: #FFCE00;
|
|
238
|
-
box-shadow: 0 2px 8px rgba(255, 206, 0, 0.3);
|
|
239
|
-
}
|
|
240
|
-
/* Mobile message bubbles — slightly larger text */
|
|
241
|
-
#chat-panel-wrapper.mobile-chat-active .chat-message .message-content {
|
|
242
|
-
font-size: 15px;
|
|
243
|
-
line-height: 1.5;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
106
|
+
@media (max-width: 767px) { /* Mobile action buttons — 44px touch targets */ /* Mobile message bubbles — slightly larger text */}
|
|
246
107
|
|
|
247
108
|
/* Memory viewer mobile layout */
|
|
248
109
|
@media (max-width: 768px) {
|
|
@@ -266,18 +127,6 @@ button:not([class*="p-"]):not([class*="px-"]):not([class*="py-"]) { padding: 6px
|
|
|
266
127
|
min-height: 45vh;
|
|
267
128
|
}
|
|
268
129
|
}
|
|
269
|
-
#chat-messages {
|
|
270
|
-
overflow-x: hidden;
|
|
271
|
-
overscroll-behavior: contain;
|
|
272
|
-
touch-action: pan-y;
|
|
273
|
-
}
|
|
274
|
-
.chat-message,
|
|
275
|
-
.chat-message .message-content {
|
|
276
|
-
max-width: 100%;
|
|
277
|
-
overflow-wrap: anywhere;
|
|
278
|
-
word-break: break-word;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
130
|
@keyframes float {
|
|
282
131
|
0%, 100% { transform: translate(0, 0) scale(1); }
|
|
283
132
|
33% { transform: translate(30px, -30px) scale(1.05); }
|
|
@@ -293,7 +142,6 @@ button:not([class*="p-"]):not([class*="px-"]):not([class*="py-"]) { padding: 6px
|
|
|
293
142
|
STATE CLASSES (Used by JavaScript)
|
|
294
143
|
============================================================================ */
|
|
295
144
|
|
|
296
|
-
/* Chat status indicator */
|
|
297
145
|
.status-indicator {
|
|
298
146
|
transition: background-color 200ms ease;
|
|
299
147
|
}
|
|
@@ -394,6 +242,29 @@ button:not([class*="p-"]):not([class*="px-"]):not([class*="py-"]) { padding: 6px
|
|
|
394
242
|
border-top: 1px solid #E8DFF0;
|
|
395
243
|
}
|
|
396
244
|
|
|
245
|
+
/* ============================================================================
|
|
246
|
+
MEMORY CONTROL BAR - wraps instead of overflowing
|
|
247
|
+
============================================================================
|
|
248
|
+
The Knowledge > Memory filter bar used to be three fixed-width inputs on one
|
|
249
|
+
non-wrapping row, so on a narrow viewport the Clear button and Export menu
|
|
250
|
+
were pushed off-screen. The row wraps and the search field is the elastic
|
|
251
|
+
one; `min-width: 0` is what lets a flex input shrink below its intrinsic
|
|
252
|
+
size at all. */
|
|
253
|
+
|
|
254
|
+
.memory-controls {
|
|
255
|
+
flex-wrap: wrap;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.memory-controls #topic-filter {
|
|
259
|
+
min-width: 0;
|
|
260
|
+
flex: 0 1 10rem;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.memory-controls #search-input {
|
|
264
|
+
min-width: 0;
|
|
265
|
+
flex: 1 1 12rem;
|
|
266
|
+
}
|
|
267
|
+
|
|
397
268
|
/* ============================================================================
|
|
398
269
|
CHECKPOINT SIDEBAR - Collapsible & Resizable
|
|
399
270
|
============================================================================ */
|
|
@@ -447,124 +318,9 @@ button:not([class*="p-"]):not([class*="px-"]):not([class*="py-"]) { padding: 6px
|
|
|
447
318
|
}
|
|
448
319
|
|
|
449
320
|
/* ============================================================================
|
|
450
|
-
|
|
321
|
+
RICH MESSAGE CONTENT - Brand Colors
|
|
451
322
|
============================================================================ */
|
|
452
323
|
|
|
453
|
-
/* Chat message base */
|
|
454
|
-
.chat-message {
|
|
455
|
-
display: flex;
|
|
456
|
-
flex-direction: column;
|
|
457
|
-
max-width: 100%;
|
|
458
|
-
animation: message-appear 0.2s ease-out;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/* User messages - right aligned, yellow bubble */
|
|
462
|
-
.chat-message.user {
|
|
463
|
-
align-self: flex-end;
|
|
464
|
-
align-items: flex-end;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
.chat-message.user .message-content {
|
|
468
|
-
background: linear-gradient(135deg, #FFCE00 0%, #E6B800 100%);
|
|
469
|
-
color: #131313;
|
|
470
|
-
padding: 12px 16px;
|
|
471
|
-
border-radius: 20px 20px 4px 20px;
|
|
472
|
-
font-size: 15px;
|
|
473
|
-
line-height: 1.5;
|
|
474
|
-
word-break: break-word;
|
|
475
|
-
box-shadow: 0 4px 12px rgba(255, 206, 0, 0.3);
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
/* Assistant messages - left aligned, white bubble */
|
|
479
|
-
.chat-message.assistant {
|
|
480
|
-
align-self: flex-start;
|
|
481
|
-
align-items: flex-start;
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
.chat-message.assistant .message-content {
|
|
485
|
-
background: #FFFFFF;
|
|
486
|
-
color: #131313;
|
|
487
|
-
padding: 12px 16px;
|
|
488
|
-
border-radius: 20px 20px 20px 4px;
|
|
489
|
-
font-size: 15px;
|
|
490
|
-
line-height: 1.5;
|
|
491
|
-
word-break: break-word;
|
|
492
|
-
box-shadow: 0 1px 4px rgba(19, 19, 19, 0.06);
|
|
493
|
-
border: 1px solid #EDE9E1;
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
/* System messages - centered, subtle */
|
|
497
|
-
.chat-message.system {
|
|
498
|
-
align-self: center;
|
|
499
|
-
max-width: 90%;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
.chat-message.system .message-content {
|
|
503
|
-
background: transparent;
|
|
504
|
-
color: #888888;
|
|
505
|
-
font-size: 13px;
|
|
506
|
-
text-align: center;
|
|
507
|
-
padding: 8px 16px;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
.chat-message.system.error .message-content {
|
|
511
|
-
color: #ef4444;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
.chat-message.system.warning .message-content {
|
|
515
|
-
color: #f59e0b;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
/* Message timestamp */
|
|
519
|
-
.message-time {
|
|
520
|
-
font-size: 11px;
|
|
521
|
-
color: #888888;
|
|
522
|
-
margin-top: 4px;
|
|
523
|
-
padding: 0 4px;
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
/* Streaming indicator */
|
|
527
|
-
.chat-message.streaming .message-content::after {
|
|
528
|
-
content: '▋';
|
|
529
|
-
animation: cursor-blink 1s step-end infinite;
|
|
530
|
-
margin-left: 2px;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
/* Markdown in messages */
|
|
534
|
-
.chat-message .message-content p {
|
|
535
|
-
margin: 0 0 8px 0;
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
.chat-message .message-content p:last-child {
|
|
539
|
-
margin-bottom: 0;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
.chat-message .message-content code {
|
|
543
|
-
background: rgba(19, 19, 19, 0.08);
|
|
544
|
-
padding: 2px 6px;
|
|
545
|
-
border-radius: 4px;
|
|
546
|
-
font-family: 'JetBrains Mono', 'Fira Code', monospace;
|
|
547
|
-
font-size: 13px;
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
.chat-message.user .message-content code {
|
|
551
|
-
background: rgba(19, 19, 19, 0.15);
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
.chat-message .message-content pre {
|
|
555
|
-
background: #131313;
|
|
556
|
-
color: #f3f4f6;
|
|
557
|
-
padding: 12px;
|
|
558
|
-
border-radius: 12px;
|
|
559
|
-
overflow-x: auto;
|
|
560
|
-
margin: 8px 0;
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
.chat-message .message-content pre code {
|
|
564
|
-
background: transparent;
|
|
565
|
-
padding: 0;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
324
|
/* Quiz choice buttons - Brand style */
|
|
569
325
|
.quiz-choice-btn {
|
|
570
326
|
display: block;
|
|
@@ -610,6 +366,115 @@ button:not([class*="p-"]):not([class*="px-"]):not([class*="py-"]) { padding: 6px
|
|
|
610
366
|
content-visibility: visible;
|
|
611
367
|
}
|
|
612
368
|
|
|
369
|
+
/* The operator bundle stays mounted for the page lifetime; when its route is
|
|
370
|
+
not active the region is simply display:none via .tab-content above. */
|
|
371
|
+
#tab-operator.active > #operator-mount {
|
|
372
|
+
display: flex;
|
|
373
|
+
flex-direction: column;
|
|
374
|
+
flex: 1;
|
|
375
|
+
min-height: 0;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/* ── Mobile sub-view chips ──────────────────────────────────────────────────
|
|
379
|
+
Same hash routes as the desktop rail's sub-entries. Desktop hides the row;
|
|
380
|
+
the rail already shows the group's views. */
|
|
381
|
+
.mama-subviews {
|
|
382
|
+
display: none;
|
|
383
|
+
}
|
|
384
|
+
@media (max-width: 767px) {
|
|
385
|
+
.mama-subviews {
|
|
386
|
+
display: flex;
|
|
387
|
+
gap: 8px;
|
|
388
|
+
align-items: center;
|
|
389
|
+
flex-shrink: 0;
|
|
390
|
+
padding: 8px 12px;
|
|
391
|
+
background: #ffffff;
|
|
392
|
+
border-bottom: 1px solid #ede9e1;
|
|
393
|
+
overflow-x: auto;
|
|
394
|
+
-webkit-overflow-scrolling: touch;
|
|
395
|
+
scrollbar-width: none;
|
|
396
|
+
}
|
|
397
|
+
.mama-subviews::-webkit-scrollbar {
|
|
398
|
+
display: none;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
.mama-subview-chip {
|
|
402
|
+
display: inline-flex;
|
|
403
|
+
align-items: center;
|
|
404
|
+
flex-shrink: 0;
|
|
405
|
+
min-height: 44px;
|
|
406
|
+
padding: 0 16px;
|
|
407
|
+
border-radius: 9999px;
|
|
408
|
+
background: #f5f2ed;
|
|
409
|
+
color: #6b6560;
|
|
410
|
+
font-family: Inter, 'Noto Sans KR', sans-serif;
|
|
411
|
+
font-size: 13px;
|
|
412
|
+
font-weight: 600;
|
|
413
|
+
text-decoration: none;
|
|
414
|
+
white-space: nowrap;
|
|
415
|
+
transition:
|
|
416
|
+
background 0.15s ease,
|
|
417
|
+
color 0.15s ease;
|
|
418
|
+
}
|
|
419
|
+
.mama-subview-chip[hidden] {
|
|
420
|
+
display: none;
|
|
421
|
+
}
|
|
422
|
+
.mama-subview-chip.mama-nav-active {
|
|
423
|
+
background: #ffce00;
|
|
424
|
+
color: #131313;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/* ── Mobile group bar ── */
|
|
428
|
+
#mama-mobile-tabs {
|
|
429
|
+
display: none;
|
|
430
|
+
position: fixed;
|
|
431
|
+
bottom: 0;
|
|
432
|
+
left: 0;
|
|
433
|
+
right: 0;
|
|
434
|
+
height: 64px;
|
|
435
|
+
background: #ffffff;
|
|
436
|
+
border-top: 1px solid #ede9e1;
|
|
437
|
+
z-index: 100;
|
|
438
|
+
padding: 0 8px;
|
|
439
|
+
align-items: stretch;
|
|
440
|
+
justify-content: space-around;
|
|
441
|
+
}
|
|
442
|
+
.mama-mobile-tab {
|
|
443
|
+
display: flex;
|
|
444
|
+
flex: 1;
|
|
445
|
+
flex-direction: column;
|
|
446
|
+
align-items: center;
|
|
447
|
+
justify-content: center;
|
|
448
|
+
gap: 2px;
|
|
449
|
+
min-height: 44px;
|
|
450
|
+
padding: 8px 12px;
|
|
451
|
+
border: none;
|
|
452
|
+
background: transparent;
|
|
453
|
+
color: #6b6560;
|
|
454
|
+
font-size: 10px;
|
|
455
|
+
font-weight: 600;
|
|
456
|
+
text-decoration: none;
|
|
457
|
+
font-family: 'Inter', 'Noto Sans KR', sans-serif;
|
|
458
|
+
cursor: pointer;
|
|
459
|
+
transition: color 0.15s ease;
|
|
460
|
+
}
|
|
461
|
+
.mama-mobile-tab i,
|
|
462
|
+
.mama-mobile-tab svg {
|
|
463
|
+
width: 20px;
|
|
464
|
+
height: 20px;
|
|
465
|
+
}
|
|
466
|
+
.mama-mobile-tab.mama-nav-active {
|
|
467
|
+
position: relative;
|
|
468
|
+
background: #ffce00;
|
|
469
|
+
color: #131313;
|
|
470
|
+
border-radius: 8px;
|
|
471
|
+
}
|
|
472
|
+
@media (max-width: 767px) {
|
|
473
|
+
#mama-mobile-tabs {
|
|
474
|
+
display: flex;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
|
|
613
478
|
/* Modal visibility */
|
|
614
479
|
.modal-overlay {
|
|
615
480
|
opacity: 0;
|
|
@@ -724,29 +589,6 @@ button:not([class*="p-"]):not([class*="px-"]):not([class*="py-"]) { padding: 6px
|
|
|
724
589
|
.typing-dot:nth-child(2) { animation-delay: 0.2s; }
|
|
725
590
|
.typing-dot:nth-child(3) { animation-delay: 0.4s; }
|
|
726
591
|
|
|
727
|
-
/* Chat typing indicator */
|
|
728
|
-
.chat-typing-indicator {
|
|
729
|
-
display: flex;
|
|
730
|
-
align-items: center;
|
|
731
|
-
gap: 8px;
|
|
732
|
-
padding: 8px 16px;
|
|
733
|
-
color: var(--text-secondary, #888);
|
|
734
|
-
font-size: 13px;
|
|
735
|
-
}
|
|
736
|
-
.chat-typing-indicator .typing-dots {
|
|
737
|
-
display: flex;
|
|
738
|
-
gap: 4px;
|
|
739
|
-
}
|
|
740
|
-
.chat-typing-indicator .typing-dots span {
|
|
741
|
-
width: 6px;
|
|
742
|
-
height: 6px;
|
|
743
|
-
border-radius: 50%;
|
|
744
|
-
background: var(--text-secondary, #888);
|
|
745
|
-
animation: typing-bounce 1.4s ease-in-out infinite;
|
|
746
|
-
}
|
|
747
|
-
.chat-typing-indicator .typing-dots span:nth-child(2) { animation-delay: 0.2s; }
|
|
748
|
-
.chat-typing-indicator .typing-dots span:nth-child(3) { animation-delay: 0.4s; }
|
|
749
|
-
|
|
750
592
|
/* ============================================================================
|
|
751
593
|
VIS-NETWORK OVERRIDES
|
|
752
594
|
============================================================================ */
|
|
@@ -775,11 +617,7 @@ button:not([class*="p-"]):not([class*="px-"]):not([class*="py-"]) { padding: 6px
|
|
|
775
617
|
}
|
|
776
618
|
|
|
777
619
|
/* Firefox scrollbar - scoped to scrollable containers */
|
|
778
|
-
body,
|
|
779
|
-
.tab-content,
|
|
780
|
-
#chat-messages,
|
|
781
|
-
.overflow-y-auto,
|
|
782
|
-
.overflow-auto {
|
|
620
|
+
body, .tab-content, .overflow-y-auto, .overflow-auto {
|
|
783
621
|
scrollbar-width: thin;
|
|
784
622
|
scrollbar-color: #D4C4E0 transparent;
|
|
785
623
|
}
|
|
@@ -915,7 +753,7 @@ body,
|
|
|
915
753
|
transform: translateY(-1px);
|
|
916
754
|
}
|
|
917
755
|
|
|
918
|
-
/* Agent form inputs — focus
|
|
756
|
+
/* Agent form inputs — brand focus ring */
|
|
919
757
|
.agent-input:focus {
|
|
920
758
|
outline: none;
|
|
921
759
|
border-color: #FFCE00;
|
|
@@ -924,42 +762,13 @@ body,
|
|
|
924
762
|
|
|
925
763
|
/* ============================================================================
|
|
926
764
|
INPUT STYLES - Brand aligned
|
|
927
|
-
============================================================================
|
|
928
|
-
|
|
929
|
-
.chat-input-area {
|
|
930
|
-
padding: 16px;
|
|
931
|
-
border-top: 1px solid #D4C4E0;
|
|
932
|
-
background: white;
|
|
933
|
-
}
|
|
934
|
-
.input-row {
|
|
765
|
+
============================================================================ */.input-row {
|
|
935
766
|
display: flex;
|
|
936
767
|
gap: 8px;
|
|
937
768
|
}
|
|
938
769
|
.input-wrapper {
|
|
939
770
|
flex: 1;
|
|
940
|
-
}
|
|
941
|
-
.chat-input {
|
|
942
|
-
width: 100%;
|
|
943
|
-
padding: 12px 16px;
|
|
944
|
-
border: 2px solid #D4C4E0;
|
|
945
|
-
border-radius: 20px;
|
|
946
|
-
background: white;
|
|
947
|
-
color: #131313;
|
|
948
|
-
font-size: 14px;
|
|
949
|
-
font-family: 'Nunito', sans-serif;
|
|
950
|
-
resize: none;
|
|
951
|
-
transition: border-color 0.2s, box-shadow 0.2s;
|
|
952
|
-
}
|
|
953
|
-
.chat-input:focus {
|
|
954
|
-
outline: none;
|
|
955
|
-
border-color: #FFCE00;
|
|
956
|
-
box-shadow: 0 0 0 3px rgba(255, 206, 0, 0.2);
|
|
957
|
-
}
|
|
958
|
-
.chat-input:disabled {
|
|
959
|
-
opacity: 0.5;
|
|
960
|
-
cursor: not-allowed;
|
|
961
|
-
}
|
|
962
|
-
.btn-send {
|
|
771
|
+
}.btn-send {
|
|
963
772
|
display: flex;
|
|
964
773
|
align-items: center;
|
|
965
774
|
gap: 6px;
|
|
@@ -1034,3 +843,201 @@ div.vis-tooltip {
|
|
|
1034
843
|
max-width: 320px;
|
|
1035
844
|
pointer-events: none;
|
|
1036
845
|
}
|
|
846
|
+
|
|
847
|
+
/* ============================================================================
|
|
848
|
+
SYSTEM VIEWS (Runtime / Connectors) — read-only runtime truth
|
|
849
|
+
============================================================================ */
|
|
850
|
+
|
|
851
|
+
.mama-system-panel {
|
|
852
|
+
max-width: 880px;
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
.mama-system-heading {
|
|
856
|
+
font-family: Inter, 'Noto Sans KR', sans-serif;
|
|
857
|
+
font-size: 15px;
|
|
858
|
+
font-weight: 700;
|
|
859
|
+
color: #131313;
|
|
860
|
+
margin: 0 0 4px;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
.mama-system-note {
|
|
864
|
+
font-size: 12px;
|
|
865
|
+
color: #6b6560;
|
|
866
|
+
margin: 0 0 14px;
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
.mama-system-note code,
|
|
870
|
+
.mama-system-code {
|
|
871
|
+
font-family: 'SF Mono', ui-monospace, Menlo, monospace;
|
|
872
|
+
font-size: 12px;
|
|
873
|
+
background: #f5f2ed;
|
|
874
|
+
border: 1px solid #ede9e1;
|
|
875
|
+
border-radius: var(--radius-button, 6px);
|
|
876
|
+
padding: 2px 6px;
|
|
877
|
+
color: #131313;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
.mama-system-tiles {
|
|
881
|
+
display: grid;
|
|
882
|
+
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
|
883
|
+
gap: 10px;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
.mama-system-tile {
|
|
887
|
+
background: #fff;
|
|
888
|
+
border: 1px solid #ede9e1;
|
|
889
|
+
border-radius: var(--radius-inner, 8px);
|
|
890
|
+
padding: 10px 12px;
|
|
891
|
+
display: flex;
|
|
892
|
+
flex-direction: column;
|
|
893
|
+
gap: 4px;
|
|
894
|
+
border-left: 3px solid #ede9e1;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
.mama-system-tile[data-tone='ok'] {
|
|
898
|
+
border-left-color: #3a9e7e;
|
|
899
|
+
}
|
|
900
|
+
.mama-system-tile[data-tone='warn'] {
|
|
901
|
+
border-left-color: #e8a040;
|
|
902
|
+
}
|
|
903
|
+
.mama-system-tile[data-tone='bad'] {
|
|
904
|
+
border-left-color: #ff9999;
|
|
905
|
+
}
|
|
906
|
+
.mama-system-tile[data-tone='neutral'] {
|
|
907
|
+
border-left-color: #ffce00;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
.mama-system-tile-label {
|
|
911
|
+
font-size: 10px;
|
|
912
|
+
text-transform: uppercase;
|
|
913
|
+
letter-spacing: 0.5px;
|
|
914
|
+
/* #9e9891 was ~2.6:1 on white -- below AA for this 10px label. */
|
|
915
|
+
color: #6b6560;
|
|
916
|
+
font-weight: 600;
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
.mama-system-tile-value {
|
|
920
|
+
font-size: 13px;
|
|
921
|
+
font-weight: 600;
|
|
922
|
+
color: #131313;
|
|
923
|
+
overflow-wrap: anywhere;
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
.mama-system-list {
|
|
927
|
+
list-style: none;
|
|
928
|
+
margin: 0;
|
|
929
|
+
padding: 0;
|
|
930
|
+
display: flex;
|
|
931
|
+
flex-direction: column;
|
|
932
|
+
gap: 6px;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
.mama-system-row {
|
|
936
|
+
display: flex;
|
|
937
|
+
align-items: center;
|
|
938
|
+
gap: 8px;
|
|
939
|
+
background: #fff;
|
|
940
|
+
border: 1px solid #ede9e1;
|
|
941
|
+
border-radius: var(--radius-button, 6px);
|
|
942
|
+
padding: 8px 10px;
|
|
943
|
+
font-size: 12px;
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
.mama-system-dot {
|
|
947
|
+
width: 6px;
|
|
948
|
+
height: 6px;
|
|
949
|
+
border-radius: 1px;
|
|
950
|
+
background: #9e9891;
|
|
951
|
+
flex-shrink: 0;
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
.mama-system-row[data-tone='ok'] .mama-system-dot {
|
|
955
|
+
background: #3a9e7e;
|
|
956
|
+
}
|
|
957
|
+
.mama-system-row[data-tone='warn'] .mama-system-dot {
|
|
958
|
+
background: #e8a040;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
.mama-system-row-name {
|
|
962
|
+
font-weight: 600;
|
|
963
|
+
color: #131313;
|
|
964
|
+
flex: 1;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
.mama-system-row-state {
|
|
968
|
+
font-size: 11px;
|
|
969
|
+
color: #6b6560;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
.mama-system-badge {
|
|
973
|
+
font-size: 9px;
|
|
974
|
+
/* #9e9891 was ~2.5:1 on the #f5f2ed chip -- below AA at 9px. */
|
|
975
|
+
color: #6b6560;
|
|
976
|
+
background: #f5f2ed;
|
|
977
|
+
padding: 1px 4px;
|
|
978
|
+
border-radius: 2px;
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
.mama-system-skeleton {
|
|
982
|
+
display: flex;
|
|
983
|
+
flex-direction: column;
|
|
984
|
+
gap: 8px;
|
|
985
|
+
max-width: 880px;
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
.mama-system-skeleton-row {
|
|
989
|
+
height: 44px;
|
|
990
|
+
border-radius: var(--radius-inner, 8px);
|
|
991
|
+
background: linear-gradient(90deg, #f5f2ed 25%, #ede9e1 50%, #f5f2ed 75%);
|
|
992
|
+
background-size: 200% 100%;
|
|
993
|
+
animation: mama-system-shimmer 1.4s ease-in-out infinite;
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
@keyframes mama-system-shimmer {
|
|
997
|
+
0% {
|
|
998
|
+
background-position: 200% 0;
|
|
999
|
+
}
|
|
1000
|
+
100% {
|
|
1001
|
+
background-position: -200% 0;
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
.mama-system-error,
|
|
1006
|
+
.mama-system-empty {
|
|
1007
|
+
max-width: 440px;
|
|
1008
|
+
background: #fff;
|
|
1009
|
+
border: 1px solid #ede9e1;
|
|
1010
|
+
border-radius: var(--radius-card, 12px);
|
|
1011
|
+
padding: 16px;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
.mama-system-error-title,
|
|
1015
|
+
.mama-system-empty-title {
|
|
1016
|
+
margin: 0 0 4px;
|
|
1017
|
+
font-size: 13px;
|
|
1018
|
+
font-weight: 700;
|
|
1019
|
+
color: #131313;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
.mama-system-error-detail,
|
|
1023
|
+
.mama-system-empty-detail {
|
|
1024
|
+
margin: 0 0 12px;
|
|
1025
|
+
font-size: 12px;
|
|
1026
|
+
color: #6b6560;
|
|
1027
|
+
overflow-wrap: anywhere;
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
.mama-system-retry {
|
|
1031
|
+
background: #ffce00;
|
|
1032
|
+
color: #131313;
|
|
1033
|
+
border: none;
|
|
1034
|
+
border-radius: var(--radius-button, 6px);
|
|
1035
|
+
padding: 6px 12px;
|
|
1036
|
+
font-size: 12px;
|
|
1037
|
+
font-weight: 600;
|
|
1038
|
+
cursor: pointer;
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
.mama-system-retry:hover {
|
|
1042
|
+
background: #e6b800;
|
|
1043
|
+
}
|