jfl 0.2.2 → 0.2.4

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.
Files changed (153) hide show
  1. package/README.md +399 -423
  2. package/clawdbot-plugin/clawdbot.plugin.json +12 -1
  3. package/clawdbot-plugin/index.js +5 -5
  4. package/clawdbot-plugin/index.ts +5 -5
  5. package/dist/commands/context-hub.d.ts +4 -0
  6. package/dist/commands/context-hub.d.ts.map +1 -1
  7. package/dist/commands/context-hub.js +704 -83
  8. package/dist/commands/context-hub.js.map +1 -1
  9. package/dist/commands/digest.d.ts +6 -0
  10. package/dist/commands/digest.d.ts.map +1 -0
  11. package/dist/commands/digest.js +81 -0
  12. package/dist/commands/digest.js.map +1 -0
  13. package/dist/commands/flows.d.ts +7 -0
  14. package/dist/commands/flows.d.ts.map +1 -0
  15. package/dist/commands/flows.js +264 -0
  16. package/dist/commands/flows.js.map +1 -0
  17. package/dist/commands/hooks.d.ts +11 -0
  18. package/dist/commands/hooks.d.ts.map +1 -0
  19. package/dist/commands/hooks.js +303 -0
  20. package/dist/commands/hooks.js.map +1 -0
  21. package/dist/commands/improve.d.ts +11 -0
  22. package/dist/commands/improve.d.ts.map +1 -0
  23. package/dist/commands/improve.js +77 -0
  24. package/dist/commands/improve.js.map +1 -0
  25. package/dist/commands/init.d.ts.map +1 -1
  26. package/dist/commands/init.js +42 -11
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/commands/peter.d.ts +15 -0
  29. package/dist/commands/peter.d.ts.map +1 -0
  30. package/dist/commands/peter.js +198 -0
  31. package/dist/commands/peter.js.map +1 -0
  32. package/dist/commands/ralph.d.ts +3 -1
  33. package/dist/commands/ralph.d.ts.map +1 -1
  34. package/dist/commands/ralph.js +40 -5
  35. package/dist/commands/ralph.js.map +1 -1
  36. package/dist/commands/scope.d.ts +7 -0
  37. package/dist/commands/scope.d.ts.map +1 -0
  38. package/dist/commands/scope.js +227 -0
  39. package/dist/commands/scope.js.map +1 -0
  40. package/dist/commands/service-validate.js +7 -1
  41. package/dist/commands/service-validate.js.map +1 -1
  42. package/dist/commands/session.d.ts +2 -1
  43. package/dist/commands/session.d.ts.map +1 -1
  44. package/dist/commands/session.js +519 -49
  45. package/dist/commands/session.js.map +1 -1
  46. package/dist/commands/update.d.ts.map +1 -1
  47. package/dist/commands/update.js +25 -6
  48. package/dist/commands/update.js.map +1 -1
  49. package/dist/dashboard/components.d.ts +7 -0
  50. package/dist/dashboard/components.d.ts.map +1 -0
  51. package/dist/dashboard/components.js +163 -0
  52. package/dist/dashboard/components.js.map +1 -0
  53. package/dist/dashboard/index.d.ts +12 -0
  54. package/dist/dashboard/index.d.ts.map +1 -0
  55. package/dist/dashboard/index.js +132 -0
  56. package/dist/dashboard/index.js.map +1 -0
  57. package/dist/dashboard/pages.d.ts +7 -0
  58. package/dist/dashboard/pages.d.ts.map +1 -0
  59. package/dist/dashboard/pages.js +742 -0
  60. package/dist/dashboard/pages.js.map +1 -0
  61. package/dist/dashboard/styles.d.ts +7 -0
  62. package/dist/dashboard/styles.d.ts.map +1 -0
  63. package/dist/dashboard/styles.js +497 -0
  64. package/dist/dashboard/styles.js.map +1 -0
  65. package/dist/index.js +196 -8
  66. package/dist/index.js.map +1 -1
  67. package/dist/lib/flow-engine.d.ts +34 -0
  68. package/dist/lib/flow-engine.d.ts.map +1 -0
  69. package/dist/lib/flow-engine.js +321 -0
  70. package/dist/lib/flow-engine.js.map +1 -0
  71. package/dist/lib/hook-transformer.d.ts +11 -0
  72. package/dist/lib/hook-transformer.d.ts.map +1 -0
  73. package/dist/lib/hook-transformer.js +74 -0
  74. package/dist/lib/hook-transformer.js.map +1 -0
  75. package/dist/lib/map-event-bus.d.ts +50 -0
  76. package/dist/lib/map-event-bus.d.ts.map +1 -0
  77. package/dist/lib/map-event-bus.js +366 -0
  78. package/dist/lib/map-event-bus.js.map +1 -0
  79. package/dist/lib/memory-indexer.d.ts.map +1 -1
  80. package/dist/lib/memory-indexer.js +26 -2
  81. package/dist/lib/memory-indexer.js.map +1 -1
  82. package/dist/lib/model-pricing.d.ts +11 -0
  83. package/dist/lib/model-pricing.d.ts.map +1 -0
  84. package/dist/lib/model-pricing.js +27 -0
  85. package/dist/lib/model-pricing.js.map +1 -0
  86. package/dist/lib/peter-parker-bridge.d.ts +34 -0
  87. package/dist/lib/peter-parker-bridge.d.ts.map +1 -0
  88. package/dist/lib/peter-parker-bridge.js +145 -0
  89. package/dist/lib/peter-parker-bridge.js.map +1 -0
  90. package/dist/lib/peter-parker-config.d.ts +13 -0
  91. package/dist/lib/peter-parker-config.d.ts.map +1 -0
  92. package/dist/lib/peter-parker-config.js +86 -0
  93. package/dist/lib/peter-parker-config.js.map +1 -0
  94. package/dist/lib/service-gtm.d.ts +7 -0
  95. package/dist/lib/service-gtm.d.ts.map +1 -1
  96. package/dist/lib/service-gtm.js.map +1 -1
  97. package/dist/lib/service-utils.d.ts.map +1 -1
  98. package/dist/lib/service-utils.js +33 -17
  99. package/dist/lib/service-utils.js.map +1 -1
  100. package/dist/lib/stratus-client.d.ts +1 -0
  101. package/dist/lib/stratus-client.d.ts.map +1 -1
  102. package/dist/lib/stratus-client.js +33 -2
  103. package/dist/lib/stratus-client.js.map +1 -1
  104. package/dist/lib/stratus-rollout-test.d.ts +10 -0
  105. package/dist/lib/stratus-rollout-test.d.ts.map +1 -0
  106. package/dist/lib/stratus-rollout-test.js +412 -0
  107. package/dist/lib/stratus-rollout-test.js.map +1 -0
  108. package/dist/lib/telemetry-digest.d.ts +10 -0
  109. package/dist/lib/telemetry-digest.d.ts.map +1 -0
  110. package/dist/lib/telemetry-digest.js +359 -0
  111. package/dist/lib/telemetry-digest.js.map +1 -0
  112. package/dist/lib/telemetry.d.ts +35 -0
  113. package/dist/lib/telemetry.d.ts.map +1 -0
  114. package/dist/lib/telemetry.js +320 -0
  115. package/dist/lib/telemetry.js.map +1 -0
  116. package/dist/lib/training-tuples.d.ts +33 -0
  117. package/dist/lib/training-tuples.d.ts.map +1 -0
  118. package/dist/lib/training-tuples.js +273 -0
  119. package/dist/lib/training-tuples.js.map +1 -0
  120. package/dist/mcp/context-hub-mcp.js +139 -22
  121. package/dist/mcp/context-hub-mcp.js.map +1 -1
  122. package/dist/types/flows.d.ts +62 -0
  123. package/dist/types/flows.d.ts.map +1 -0
  124. package/dist/types/flows.js +10 -0
  125. package/dist/types/flows.js.map +1 -0
  126. package/dist/types/map.d.ts +42 -0
  127. package/dist/types/map.d.ts.map +1 -0
  128. package/dist/types/map.js +39 -0
  129. package/dist/types/map.js.map +1 -0
  130. package/dist/types/telemetry-digest.d.ts +73 -0
  131. package/dist/types/telemetry-digest.d.ts.map +1 -0
  132. package/dist/types/telemetry-digest.js +5 -0
  133. package/dist/types/telemetry-digest.js.map +1 -0
  134. package/dist/types/telemetry.d.ts +69 -0
  135. package/dist/types/telemetry.d.ts.map +1 -0
  136. package/dist/types/telemetry.js +5 -0
  137. package/dist/types/telemetry.js.map +1 -0
  138. package/dist/ui/event-dashboard.d.ts +12 -0
  139. package/dist/ui/event-dashboard.d.ts.map +1 -0
  140. package/dist/ui/event-dashboard.js +342 -0
  141. package/dist/ui/event-dashboard.js.map +1 -0
  142. package/dist/utils/jfl-paths.d.ts +1 -0
  143. package/dist/utils/jfl-paths.d.ts.map +1 -1
  144. package/dist/utils/jfl-paths.js +1 -0
  145. package/dist/utils/jfl-paths.js.map +1 -1
  146. package/dist/utils/settings-validator.d.ts +3 -2
  147. package/dist/utils/settings-validator.d.ts.map +1 -1
  148. package/dist/utils/settings-validator.js +25 -6
  149. package/dist/utils/settings-validator.js.map +1 -1
  150. package/package.json +3 -2
  151. package/scripts/session/session-end.sh +10 -0
  152. package/scripts/session/session-init.sh +16 -0
  153. package/scripts/test-map-eventbus.sh +357 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/dashboard/pages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6tBN,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Dashboard CSS styles
3
+ *
4
+ * @purpose CSS string with brand colors from theme.ts for the web dashboard
5
+ */
6
+ export declare function getDashboardStyles(): string;
7
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/dashboard/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,kBAAkB,IAAI,MAAM,CA0e3C"}
@@ -0,0 +1,497 @@
1
+ /**
2
+ * Dashboard CSS styles
3
+ *
4
+ * @purpose CSS string with brand colors from theme.ts for the web dashboard
5
+ */
6
+ export function getDashboardStyles() {
7
+ return `
8
+ :root {
9
+ --accent: #FFD700;
10
+ --accent-soft: #FFA500;
11
+ --accent-dim: #B8860B;
12
+ --success: #00FF88;
13
+ --error: #FF4444;
14
+ --warning: #FFAA00;
15
+ --info: #4FC3F7;
16
+ --bg: #0f172a;
17
+ --bg-card: #1e293b;
18
+ --bg-card-hover: #334155;
19
+ --text: #f8fafc;
20
+ --text-soft: #94a3b8;
21
+ --text-dim: #64748b;
22
+ --border: #334155;
23
+ }
24
+
25
+ * { box-sizing: border-box; margin: 0; padding: 0; }
26
+
27
+ body {
28
+ background: var(--bg);
29
+ color: var(--text);
30
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
31
+ min-height: 100vh;
32
+ }
33
+
34
+ #app { display: flex; min-height: 100vh; }
35
+
36
+ .sidebar {
37
+ width: 220px;
38
+ background: var(--bg-card);
39
+ border-right: 1px solid var(--border);
40
+ padding: 1.5rem 0;
41
+ display: flex;
42
+ flex-direction: column;
43
+ position: fixed;
44
+ top: 0;
45
+ left: 0;
46
+ bottom: 0;
47
+ z-index: 10;
48
+ }
49
+
50
+ .sidebar-brand {
51
+ padding: 0 1.25rem 1.5rem;
52
+ border-bottom: 1px solid var(--border);
53
+ margin-bottom: 1rem;
54
+ }
55
+
56
+ .sidebar-brand h1 {
57
+ font-size: 1.125rem;
58
+ font-weight: 700;
59
+ color: var(--accent);
60
+ letter-spacing: -0.02em;
61
+ }
62
+
63
+ .sidebar-brand .port-badge {
64
+ font-size: 0.75rem;
65
+ color: var(--text-soft);
66
+ margin-top: 0.25rem;
67
+ }
68
+
69
+ .nav-items { list-style: none; }
70
+
71
+ .nav-item {
72
+ display: block;
73
+ padding: 0.625rem 1.25rem;
74
+ color: var(--text-soft);
75
+ text-decoration: none;
76
+ cursor: pointer;
77
+ font-size: 0.875rem;
78
+ transition: all 0.15s;
79
+ border-left: 3px solid transparent;
80
+ }
81
+
82
+ .nav-item:hover {
83
+ color: var(--text);
84
+ background: rgba(255, 255, 255, 0.04);
85
+ }
86
+
87
+ .nav-item.active {
88
+ color: var(--accent);
89
+ background: rgba(255, 215, 0, 0.06);
90
+ border-left-color: var(--accent);
91
+ font-weight: 600;
92
+ }
93
+
94
+ .main-content {
95
+ flex: 1;
96
+ margin-left: 220px;
97
+ padding: 2rem;
98
+ max-width: 1200px;
99
+ }
100
+
101
+ .page-title {
102
+ font-size: 1.5rem;
103
+ font-weight: 700;
104
+ margin-bottom: 1.5rem;
105
+ letter-spacing: -0.02em;
106
+ }
107
+
108
+ .card {
109
+ background: var(--bg-card);
110
+ border: 1px solid var(--border);
111
+ border-radius: 0.75rem;
112
+ padding: 1.25rem;
113
+ margin-bottom: 1rem;
114
+ }
115
+
116
+ .card-title {
117
+ font-size: 0.875rem;
118
+ font-weight: 600;
119
+ color: var(--text-soft);
120
+ text-transform: uppercase;
121
+ letter-spacing: 0.05em;
122
+ margin-bottom: 0.75rem;
123
+ }
124
+
125
+ .card-value {
126
+ font-size: 2rem;
127
+ font-weight: 700;
128
+ letter-spacing: -0.02em;
129
+ }
130
+
131
+ .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
132
+ .grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 1rem; }
133
+ .grid-4 { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 1rem; }
134
+
135
+ .badge {
136
+ display: inline-block;
137
+ padding: 0.125rem 0.5rem;
138
+ border-radius: 9999px;
139
+ font-size: 0.75rem;
140
+ font-weight: 600;
141
+ text-transform: uppercase;
142
+ letter-spacing: 0.05em;
143
+ }
144
+
145
+ .badge-ok { background: rgba(0, 255, 136, 0.15); color: var(--success); }
146
+ .badge-down { background: rgba(255, 68, 68, 0.15); color: var(--error); }
147
+ .badge-zombie { background: rgba(255, 68, 68, 0.15); color: var(--error); }
148
+ .badge-stale { background: rgba(255, 170, 0, 0.15); color: var(--warning); }
149
+ .badge-unknown { background: rgba(148, 163, 184, 0.15); color: var(--text-soft); }
150
+
151
+ .badge-feature { background: rgba(79, 195, 247, 0.15); color: var(--info); }
152
+ .badge-fix { background: rgba(255, 68, 68, 0.15); color: var(--error); }
153
+ .badge-decision { background: rgba(255, 215, 0, 0.15); color: var(--accent); }
154
+ .badge-discovery { background: rgba(0, 255, 136, 0.15); color: var(--success); }
155
+ .badge-milestone { background: rgba(255, 170, 0, 0.15); color: var(--warning); }
156
+
157
+ .badge-peter { background: rgba(79, 195, 247, 0.15); color: var(--info); }
158
+ .badge-task { background: rgba(0, 255, 136, 0.15); color: var(--success); }
159
+ .badge-session { background: rgba(255, 215, 0, 0.15); color: var(--accent); }
160
+ .badge-system { background: rgba(148, 163, 184, 0.15); color: var(--text-soft); }
161
+
162
+ table {
163
+ width: 100%;
164
+ border-collapse: collapse;
165
+ font-size: 0.875rem;
166
+ }
167
+
168
+ th {
169
+ text-align: left;
170
+ padding: 0.625rem 0.75rem;
171
+ color: var(--text-soft);
172
+ font-weight: 600;
173
+ border-bottom: 1px solid var(--border);
174
+ font-size: 0.75rem;
175
+ text-transform: uppercase;
176
+ letter-spacing: 0.05em;
177
+ }
178
+
179
+ td {
180
+ padding: 0.625rem 0.75rem;
181
+ border-bottom: 1px solid rgba(51, 65, 85, 0.5);
182
+ color: var(--text);
183
+ }
184
+
185
+ tr:hover td { background: rgba(255, 255, 255, 0.02); }
186
+
187
+ .search-input {
188
+ width: 100%;
189
+ padding: 0.625rem 0.875rem;
190
+ background: var(--bg);
191
+ border: 1px solid var(--border);
192
+ border-radius: 0.5rem;
193
+ color: var(--text);
194
+ font-size: 0.875rem;
195
+ outline: none;
196
+ transition: border-color 0.15s;
197
+ }
198
+
199
+ .search-input:focus { border-color: var(--accent); }
200
+
201
+ .search-input::placeholder { color: var(--text-dim); }
202
+
203
+ .live-dot {
204
+ display: inline-block;
205
+ width: 8px;
206
+ height: 8px;
207
+ border-radius: 50%;
208
+ background: var(--success);
209
+ animation: pulse 2s infinite;
210
+ margin-right: 0.5rem;
211
+ }
212
+
213
+ @keyframes pulse {
214
+ 0%, 100% { opacity: 1; }
215
+ 50% { opacity: 0.4; }
216
+ }
217
+
218
+ .event-row {
219
+ font-family: 'JetBrains Mono', 'Fira Code', monospace;
220
+ font-size: 0.8rem;
221
+ }
222
+
223
+ .event-time { color: var(--text-dim); white-space: nowrap; }
224
+
225
+ .event-payload {
226
+ color: var(--text-soft);
227
+ max-width: 400px;
228
+ overflow: hidden;
229
+ text-overflow: ellipsis;
230
+ white-space: nowrap;
231
+ }
232
+
233
+ .stat-row {
234
+ display: flex;
235
+ justify-content: space-between;
236
+ padding: 0.375rem 0;
237
+ font-size: 0.875rem;
238
+ }
239
+
240
+ .stat-label { color: var(--text-soft); }
241
+ .stat-value { color: var(--text); font-weight: 600; }
242
+
243
+ /* Agent status dots */
244
+ .agent-dot {
245
+ width: 10px;
246
+ height: 10px;
247
+ border-radius: 50%;
248
+ display: inline-block;
249
+ flex-shrink: 0;
250
+ }
251
+
252
+ .agent-dot-active {
253
+ background: var(--success);
254
+ box-shadow: 0 0 6px var(--success);
255
+ animation: pulse 2s infinite;
256
+ }
257
+
258
+ .agent-dot-idle {
259
+ background: var(--text-dim);
260
+ }
261
+
262
+ .agent-dot-error {
263
+ background: var(--error);
264
+ box-shadow: 0 0 6px var(--error);
265
+ }
266
+
267
+ /* Model tier badges */
268
+ .model-badge {
269
+ font-size: 0.65rem;
270
+ font-weight: 700;
271
+ padding: 0.1rem 0.375rem;
272
+ border-radius: 4px;
273
+ text-transform: uppercase;
274
+ letter-spacing: 0.05em;
275
+ background: rgba(255, 215, 0, 0.12);
276
+ color: var(--accent);
277
+ }
278
+
279
+ /* Runtime badges (fly, local) */
280
+ .runtime-badge {
281
+ font-size: 0.6rem;
282
+ font-weight: 600;
283
+ padding: 0.1rem 0.375rem;
284
+ border-radius: 4px;
285
+ background: rgba(79, 195, 247, 0.12);
286
+ color: var(--info);
287
+ text-transform: lowercase;
288
+ }
289
+
290
+ .empty-state {
291
+ text-align: center;
292
+ padding: 3rem 1rem;
293
+ color: var(--text-dim);
294
+ }
295
+
296
+ .empty-state-icon { font-size: 2rem; margin-bottom: 0.75rem; }
297
+
298
+ .btn {
299
+ padding: 0.5rem 1rem;
300
+ border-radius: 0.5rem;
301
+ font-size: 0.875rem;
302
+ font-weight: 600;
303
+ border: none;
304
+ cursor: pointer;
305
+ transition: all 0.15s;
306
+ }
307
+
308
+ .btn-primary {
309
+ background: var(--accent);
310
+ color: var(--bg);
311
+ }
312
+
313
+ .btn-primary:hover { background: var(--accent-soft); }
314
+
315
+ .btn-secondary {
316
+ background: var(--bg-card);
317
+ color: var(--text);
318
+ border: 1px solid var(--border);
319
+ }
320
+
321
+ .btn-secondary:hover { background: var(--bg-card-hover); }
322
+
323
+ .form-group { margin-bottom: 0.75rem; }
324
+
325
+ .form-label {
326
+ display: block;
327
+ font-size: 0.75rem;
328
+ font-weight: 600;
329
+ color: var(--text-soft);
330
+ margin-bottom: 0.375rem;
331
+ }
332
+
333
+ textarea.search-input {
334
+ min-height: 80px;
335
+ resize: vertical;
336
+ }
337
+
338
+ .tag-input {
339
+ display: flex;
340
+ gap: 0.375rem;
341
+ flex-wrap: wrap;
342
+ }
343
+
344
+ .relevance-bar {
345
+ height: 4px;
346
+ border-radius: 2px;
347
+ background: var(--border);
348
+ overflow: hidden;
349
+ }
350
+
351
+ .relevance-fill {
352
+ height: 100%;
353
+ border-radius: 2px;
354
+ background: var(--accent);
355
+ transition: width 0.3s;
356
+ }
357
+
358
+ .loading {
359
+ display: flex;
360
+ align-items: center;
361
+ justify-content: center;
362
+ padding: 2rem;
363
+ color: var(--text-dim);
364
+ }
365
+
366
+ .loading::after {
367
+ content: '';
368
+ width: 20px;
369
+ height: 20px;
370
+ border: 2px solid var(--border);
371
+ border-top-color: var(--accent);
372
+ border-radius: 50%;
373
+ animation: spin 0.8s linear infinite;
374
+ margin-left: 0.5rem;
375
+ }
376
+
377
+ @keyframes spin {
378
+ to { transform: rotate(360deg); }
379
+ }
380
+
381
+ /* Journal entries */
382
+ .journal-entry {
383
+ padding: 0.625rem 0;
384
+ border-bottom: 1px solid rgba(51, 65, 85, 0.4);
385
+ }
386
+
387
+ .journal-entry:last-child { border-bottom: none; }
388
+
389
+ .journal-entry-header {
390
+ display: flex;
391
+ align-items: center;
392
+ gap: 0.5rem;
393
+ }
394
+
395
+ .journal-entry-title {
396
+ font-size: 0.85rem;
397
+ font-weight: 600;
398
+ color: var(--text);
399
+ flex: 1;
400
+ overflow: hidden;
401
+ text-overflow: ellipsis;
402
+ white-space: nowrap;
403
+ }
404
+
405
+ .journal-entry-time {
406
+ font-size: 0.7rem;
407
+ color: var(--text-dim);
408
+ white-space: nowrap;
409
+ flex-shrink: 0;
410
+ }
411
+
412
+ .journal-entry-content {
413
+ font-size: 0.75rem;
414
+ color: var(--text-soft);
415
+ margin-top: 0.25rem;
416
+ padding-left: calc(0.5rem + 60px);
417
+ line-height: 1.5;
418
+ }
419
+
420
+ /* Knowledge status rows */
421
+ .knowledge-row {
422
+ display: flex;
423
+ align-items: center;
424
+ gap: 0.5rem;
425
+ padding: 0.375rem 0;
426
+ border-bottom: 1px solid rgba(51, 65, 85, 0.3);
427
+ }
428
+
429
+ .knowledge-row:last-child { border-bottom: none; }
430
+
431
+ .knowledge-indicator {
432
+ font-size: 0.85rem;
433
+ width: 1.25rem;
434
+ text-align: center;
435
+ flex-shrink: 0;
436
+ }
437
+
438
+ .knowledge-name {
439
+ font-size: 0.8rem;
440
+ font-weight: 500;
441
+ color: var(--text);
442
+ flex: 1;
443
+ }
444
+
445
+ .knowledge-words {
446
+ font-size: 0.7rem;
447
+ color: var(--text-dim);
448
+ font-family: monospace;
449
+ }
450
+
451
+ /* Decision rows */
452
+ .decision-row {
453
+ padding: 0.5rem 0;
454
+ border-bottom: 1px solid rgba(51, 65, 85, 0.3);
455
+ }
456
+
457
+ .decision-row:last-child { border-bottom: none; }
458
+
459
+ .decision-title {
460
+ font-size: 0.8rem;
461
+ font-weight: 600;
462
+ color: var(--accent);
463
+ }
464
+
465
+ .decision-meta {
466
+ font-size: 0.65rem;
467
+ color: var(--text-dim);
468
+ margin-top: 0.125rem;
469
+ }
470
+
471
+ .decision-summary {
472
+ font-size: 0.7rem;
473
+ color: var(--text-soft);
474
+ margin-top: 0.25rem;
475
+ line-height: 1.4;
476
+ }
477
+
478
+ /* Memory search results */
479
+ .memory-result {
480
+ padding: 0.5rem 0;
481
+ border-bottom: 1px solid rgba(51, 65, 85, 0.3);
482
+ }
483
+
484
+ .memory-result:last-child { border-bottom: none; }
485
+
486
+ @media (max-width: 768px) {
487
+ .sidebar { width: 60px; padding: 1rem 0; }
488
+ .sidebar-brand h1 { display: none; }
489
+ .sidebar-brand .port-badge { display: none; }
490
+ .nav-item { padding: 0.625rem; text-align: center; font-size: 0; }
491
+ .nav-item::before { font-size: 1rem; }
492
+ .main-content { margin-left: 60px; padding: 1rem; }
493
+ .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
494
+ }
495
+ `;
496
+ }
497
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/dashboard/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAweN,CAAA;AACH,CAAC"}