privateboard 0.1.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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/cli.js +10502 -0
  4. package/dist/cli.js.map +1 -0
  5. package/package.json +63 -0
  6. package/public/adjourn-overlay.css +253 -0
  7. package/public/agent-overlay.css +444 -0
  8. package/public/agent-overlay.js +604 -0
  9. package/public/agent-profile.css +3230 -0
  10. package/public/agent-profile.js +3329 -0
  11. package/public/app.js +6629 -0
  12. package/public/auto-hide-scroll.js +90 -0
  13. package/public/avatar-skill.js +793 -0
  14. package/public/avatars/chair.svg +98 -0
  15. package/public/avatars/first-principles.svg +122 -0
  16. package/public/avatars/long-horizon.svg +147 -0
  17. package/public/avatars/open_ai.png +0 -0
  18. package/public/avatars/phenomenologist.svg +130 -0
  19. package/public/avatars/socrates.svg +187 -0
  20. package/public/avatars/user-empathy.svg +117 -0
  21. package/public/avatars/value-investor.svg +117 -0
  22. package/public/favicon.svg +10 -0
  23. package/public/fonts/agent-Italic.woff2 +0 -0
  24. package/public/fonts/human-sans.woff2 +0 -0
  25. package/public/icons.css +103 -0
  26. package/public/models-cache.js +57 -0
  27. package/public/new-agent.css +1359 -0
  28. package/public/new-agent.js +675 -0
  29. package/public/onboarding.css +628 -0
  30. package/public/onboarding.js +782 -0
  31. package/public/prototype-dashboard.html +7596 -0
  32. package/public/report/spines/a16z-thesis.css +1055 -0
  33. package/public/report/spines/anthropic-essay.css +556 -0
  34. package/public/report/spines/boardroom-dark.css +1082 -0
  35. package/public/report/spines/gartner-note.css +538 -0
  36. package/public/report/spines/mckinsey-deck.css +523 -0
  37. package/public/report/spines/openai-paper.css +516 -0
  38. package/public/report.html +1417 -0
  39. package/public/room-settings.css +895 -0
  40. package/public/room-settings.js +1039 -0
  41. package/public/themes.css +338 -0
  42. package/public/user-settings.css +1236 -0
  43. package/public/user-settings.js +1291 -0
@@ -0,0 +1,444 @@
1
+ /* ═══════════════════════════════════════════
2
+ AGENT DETAIL OVERLAY — shared across pages
3
+ ═══════════════════════════════════════════ */
4
+
5
+ [data-agent] { cursor: pointer; }
6
+ img[data-agent] { transition: filter 0.15s, outline 0.15s; }
7
+ img[data-agent]:hover { filter: brightness(1.15); }
8
+
9
+ .agent-overlay {
10
+ position: fixed;
11
+ inset: 0;
12
+ background: rgba(0, 0, 0, 0.72);
13
+ -webkit-backdrop-filter: blur(3px);
14
+ backdrop-filter: blur(3px);
15
+ /* Sits above every other floater · the composer picker (9001),
16
+ agent-profile drawer (9100/9200), adjourn overlay (9400) all
17
+ should disappear behind this when the user opens an agent intro. */
18
+ z-index: 9700;
19
+ display: none;
20
+ align-items: center;
21
+ justify-content: center;
22
+ padding: 24px;
23
+ font-family: var(--mono, "Inter", system-ui, sans-serif);
24
+ }
25
+ .agent-overlay.open {
26
+ display: flex;
27
+ animation: agent-fade 0.14s ease-out;
28
+ }
29
+ @keyframes agent-fade {
30
+ from { opacity: 0; }
31
+ to { opacity: 1; }
32
+ }
33
+
34
+ .agent-card {
35
+ position: relative;
36
+ width: 100%;
37
+ max-width: 560px;
38
+ max-height: calc(100vh - 60px);
39
+ overflow-y: auto;
40
+ background: var(--panel, #131312);
41
+ border: 0.5px solid var(--line-strong, #3A3A35);
42
+ color: var(--text, #C8C5BE);
43
+ animation: agent-rise 0.18s ease-out;
44
+ /* Auto-hide scrollbar: thumb is transparent until the pointer is
45
+ over the card OR the card is actively being scrolled (the
46
+ .is-scrolling class is toggled by agent-overlay.js on each scroll
47
+ event with a short trailing timeout). Reserved gutter avoids
48
+ layout shift when the thumb fades in. */
49
+ scrollbar-width: thin;
50
+ scrollbar-color: transparent transparent;
51
+ scrollbar-gutter: stable;
52
+ transition: scrollbar-color 0.18s;
53
+ }
54
+ .agent-card:hover,
55
+ .agent-card.is-scrolling { scrollbar-color: var(--text-faint, #3A382F) transparent; }
56
+ .agent-card::-webkit-scrollbar { width: 8px; }
57
+ .agent-card::-webkit-scrollbar-track { background: transparent; }
58
+ .agent-card::-webkit-scrollbar-thumb {
59
+ background: transparent;
60
+ border-radius: 4px;
61
+ transition: background 0.18s;
62
+ }
63
+ .agent-card:hover::-webkit-scrollbar-thumb,
64
+ .agent-card.is-scrolling::-webkit-scrollbar-thumb { background: var(--text-faint, #3A382F); }
65
+ .agent-card::-webkit-scrollbar-thumb:hover { background: var(--text-soft, #8E8B83); }
66
+ @keyframes agent-rise {
67
+ from { transform: translateY(8px); opacity: 0; }
68
+ to { transform: translateY(0); opacity: 1; }
69
+ }
70
+ .agent-card::before, .agent-card::after {
71
+ content: "";
72
+ position: absolute;
73
+ width: 14px;
74
+ height: 14px;
75
+ border: 2px solid var(--lime, #6FB572);
76
+ pointer-events: none;
77
+ }
78
+ .agent-card::before { top: -1px; left: -1px; border-right: none; border-bottom: none; }
79
+ .agent-card::after { bottom: -1px; right: -1px; border-left: none; border-top: none; }
80
+
81
+ .agent-classification {
82
+ background: var(--panel-2, #1A1A18);
83
+ border-bottom: 0.5px solid var(--line-bright, #2A2A26);
84
+ padding: 5px 14px;
85
+ font-size: 9px;
86
+ letter-spacing: 0.2em;
87
+ text-transform: uppercase;
88
+ color: var(--lime, #6FB572);
89
+ display: flex;
90
+ justify-content: space-between;
91
+ align-items: center;
92
+ }
93
+ .agent-classification .right { color: var(--text-faint, #3A382F); letter-spacing: 0.12em; }
94
+
95
+ .agent-card-head {
96
+ display: grid;
97
+ grid-template-columns: auto 1fr auto;
98
+ gap: 16px;
99
+ align-items: center;
100
+ padding: 18px 20px 14px;
101
+ border-bottom: 0.5px dashed var(--line-bright, #2A2A26);
102
+ }
103
+ .agent-card-avatar {
104
+ width: 68px;
105
+ height: 68px;
106
+ background: var(--panel-2, #1A1A18);
107
+ border: 0.5px solid var(--line-bright, #2A2A26);
108
+ padding: 5px;
109
+ display: block;
110
+ image-rendering: pixelated;
111
+ }
112
+ .agent-card-id .name {
113
+ font-size: 18px;
114
+ font-weight: 700;
115
+ color: var(--text, #C8C5BE);
116
+ line-height: 1.1;
117
+ margin-bottom: 5px;
118
+ letter-spacing: -0.01em;
119
+ }
120
+ .agent-card-id .role {
121
+ font-size: 9.5px;
122
+ color: var(--lime, #6FB572);
123
+ text-transform: uppercase;
124
+ letter-spacing: 0.16em;
125
+ font-weight: 700;
126
+ }
127
+ .agent-card-id .handle {
128
+ font-size: 10.5px;
129
+ color: var(--text-faint, #3A382F);
130
+ margin-top: 5px;
131
+ letter-spacing: 0.04em;
132
+ font-family: var(--mono);
133
+ }
134
+ .agent-card-close {
135
+ width: 28px; height: 28px;
136
+ background: transparent;
137
+ border: 0.5px solid var(--line-bright, #2A2A26);
138
+ color: var(--text-dim, #5C5A52);
139
+ font-size: 14px;
140
+ cursor: pointer;
141
+ font-family: var(--mono);
142
+ align-self: start;
143
+ transition: all 0.12s;
144
+ }
145
+ .agent-card-close:hover {
146
+ border-color: var(--lime, #6FB572);
147
+ color: var(--lime, #6FB572);
148
+ }
149
+
150
+ .agent-card-body { padding: 16px 20px 8px; }
151
+
152
+ .agent-block { margin-bottom: 16px; }
153
+ .agent-block-label {
154
+ font-size: 9.5px;
155
+ font-weight: 700;
156
+ text-transform: uppercase;
157
+ letter-spacing: 0.16em;
158
+ color: var(--text-dim, #5C5A52);
159
+ margin-bottom: 8px;
160
+ display: flex;
161
+ align-items: center;
162
+ gap: 7px;
163
+ }
164
+ .agent-block-label::before {
165
+ content: "";
166
+ display: inline-block;
167
+ width: 5px;
168
+ height: 5px;
169
+ background: var(--lime, #6FB572);
170
+ }
171
+ .agent-block-label .badge {
172
+ margin-left: auto;
173
+ font-size: 8.5px;
174
+ letter-spacing: 0.12em;
175
+ color: var(--text-faint, #3A382F);
176
+ font-weight: 600;
177
+ border: 0.5px solid var(--line-bright, #2A2A26);
178
+ padding: 1px 6px;
179
+ }
180
+
181
+ .agent-lens {
182
+ font-family: var(--sans);
183
+ font-size: 13px;
184
+ line-height: 1.55;
185
+ color: var(--text-soft, #8E8B83);
186
+ letter-spacing: -0.003em;
187
+ }
188
+
189
+ /* Model · single-line "Name · Provider" using the same trait-tag
190
+ palette so it sits visually adjacent to the surrounding blocks. */
191
+ .agent-model-display {
192
+ display: flex;
193
+ align-items: baseline;
194
+ flex-wrap: wrap;
195
+ gap: 8px;
196
+ font-family: var(--mono);
197
+ font-size: 11.5px;
198
+ color: var(--text, #C8C5BE);
199
+ letter-spacing: 0.02em;
200
+ }
201
+ .agent-model-name {
202
+ font-weight: 700;
203
+ }
204
+ .agent-model-provider {
205
+ font-size: 9.5px;
206
+ letter-spacing: 0.16em;
207
+ text-transform: uppercase;
208
+ color: var(--text-soft, #8E8B83);
209
+ border: 0.5px solid var(--line-bright, #2A2A26);
210
+ padding: 2px 7px;
211
+ }
212
+ .agent-model-provider:empty { display: none; }
213
+
214
+ .agent-traits {
215
+ display: flex;
216
+ flex-wrap: wrap;
217
+ gap: 6px;
218
+ }
219
+ .agent-trait {
220
+ border: 0.5px solid var(--line-bright, #2A2A26);
221
+ padding: 3px 8px;
222
+ font-size: 9.5px;
223
+ font-family: var(--mono);
224
+ text-transform: uppercase;
225
+ letter-spacing: 0.1em;
226
+ color: var(--text-soft, #8E8B83);
227
+ background: rgba(0, 0, 0, 0.2);
228
+ }
229
+
230
+ /* In-room memory · live-notes-style stream of this agent's turns
231
+ in the current room. Each entry: timestamp + tag chip + body.
232
+ Newest entry is highlighted; entries past the 8th fade so the eye
233
+ lands on the most recent. */
234
+ .agent-memory-list {
235
+ display: flex;
236
+ flex-direction: column;
237
+ max-height: 240px;
238
+ overflow-y: auto;
239
+ border: 0.5px solid var(--line-bright, #2A2A26);
240
+ background: var(--bg, #0E0E0D);
241
+ padding: 4px 10px;
242
+ scrollbar-width: thin;
243
+ scrollbar-color: transparent transparent;
244
+ scrollbar-gutter: stable;
245
+ transition: scrollbar-color 0.18s;
246
+ }
247
+ .agent-memory-list:hover,
248
+ .agent-memory-list.is-scrolling { scrollbar-color: var(--text-faint, #3A382F) transparent; }
249
+ .agent-memory-list::-webkit-scrollbar { width: 6px; }
250
+ .agent-memory-list::-webkit-scrollbar-track { background: transparent; }
251
+ .agent-memory-list::-webkit-scrollbar-thumb {
252
+ background: transparent;
253
+ border-radius: 3px;
254
+ transition: background 0.18s;
255
+ }
256
+ .agent-memory-list:hover::-webkit-scrollbar-thumb,
257
+ .agent-memory-list.is-scrolling::-webkit-scrollbar-thumb { background: var(--text-faint, #3A382F); }
258
+ .agent-memory-list::-webkit-scrollbar-thumb:hover { background: var(--text-soft, #8E8B83); }
259
+ .agent-note-entry {
260
+ display: grid;
261
+ grid-template-columns: 36px 1fr;
262
+ gap: 8px;
263
+ padding: 6px 0;
264
+ border-bottom: 0.5px dotted rgba(255, 255, 255, 0.035);
265
+ }
266
+ .agent-note-entry:last-child { border-bottom: none; }
267
+ .agent-note-time {
268
+ font-family: var(--mono);
269
+ font-size: 9.5px;
270
+ color: var(--text-faint, #3A382F);
271
+ letter-spacing: 0.04em;
272
+ padding-top: 3px;
273
+ }
274
+ .agent-note-body {
275
+ font-family: var(--sans);
276
+ font-size: 12.5px;
277
+ line-height: 1.5;
278
+ color: var(--text-soft, #8E8B83);
279
+ letter-spacing: -0.003em;
280
+ }
281
+ .agent-note-tag {
282
+ display: inline-block;
283
+ font-family: var(--mono);
284
+ font-size: 8.5px;
285
+ font-weight: 700;
286
+ letter-spacing: 0.1em;
287
+ text-transform: uppercase;
288
+ padding: 1px 5px;
289
+ margin-right: 6px;
290
+ vertical-align: 1px;
291
+ border: 0.5px solid var(--line-bright, #2A2A26);
292
+ color: var(--text-dim, #5C5A52);
293
+ background: rgba(0, 0, 0, 0.2);
294
+ }
295
+ .agent-note-tag.t-obs { color: var(--text-dim, #5C5A52); border-color: var(--line-bright, #2A2A26); }
296
+ .agent-note-tag.t-insight { color: var(--lime, #6FB572); border-color: var(--lime-deep, #2D5532); }
297
+ .agent-note-tag.t-warn { color: var(--amber, #C99826); border-color: var(--amber-dim, #5A4519); }
298
+ .agent-note-tag.t-open { color: var(--text-dim, #5C5A52); border-color: var(--line-bright, #2A2A26); }
299
+ .agent-note-tag.t-soln { color: var(--lime, #6FB572); border-color: var(--lime, #6FB572); background: rgba(111, 181, 114, 0.10); }
300
+ .agent-note-tag.t-crux { color: var(--amber, #C99826); border-color: var(--amber, #C99826); background: rgba(181, 149, 96, 0.10); }
301
+ .agent-note-tag.t-origin { color: var(--text-dim, #5C5A52); border-color: var(--line-bright, #2A2A26); }
302
+ .agent-note-entry.t-old .agent-note-body { color: var(--text-dim, #5C5A52); }
303
+ .agent-note-entry.t-old .agent-note-time { opacity: 0.55; }
304
+ .agent-note-entry.t-fresh { background: linear-gradient(90deg, rgba(111, 181, 114, 0.06), transparent 60%); }
305
+ .agent-note-entry.t-fresh .agent-note-body { color: var(--text, #C8C5BE); }
306
+ .agent-note-entry.t-fresh .agent-note-time { color: var(--lime, #6FB572); }
307
+
308
+ .agent-memory-empty {
309
+ display: flex;
310
+ flex-direction: column;
311
+ align-items: center;
312
+ justify-content: center;
313
+ gap: 6px;
314
+ padding: 20px 12px;
315
+ text-align: center;
316
+ }
317
+ .agent-memory-empty .lock-icon {
318
+ font-size: 12px;
319
+ color: var(--text-faint, #3A382F);
320
+ line-height: 1;
321
+ }
322
+ .agent-memory-empty .lock-text {
323
+ font-family: var(--sans);
324
+ font-size: 11.5px;
325
+ line-height: 1.5;
326
+ color: var(--text-soft, #8E8B83);
327
+ letter-spacing: -0.003em;
328
+ max-width: 320px;
329
+ }
330
+
331
+ .agent-stats {
332
+ display: grid;
333
+ grid-template-columns: repeat(3, 1fr);
334
+ gap: 1px;
335
+ background: var(--line-bright, #2A2A26);
336
+ border: 0.5px solid var(--line-bright, #2A2A26);
337
+ }
338
+ .agent-stat {
339
+ background: var(--panel, #131312);
340
+ padding: 9px 10px;
341
+ text-align: center;
342
+ }
343
+ .agent-stat .v {
344
+ font-family: var(--mono);
345
+ font-size: 18px;
346
+ color: var(--lime, #6FB572);
347
+ font-weight: 700;
348
+ letter-spacing: -0.01em;
349
+ line-height: 1;
350
+ }
351
+ .agent-stat .l {
352
+ font-size: 8.5px;
353
+ text-transform: uppercase;
354
+ letter-spacing: 0.14em;
355
+ color: var(--text-faint, #3A382F);
356
+ margin-top: 4px;
357
+ }
358
+
359
+ .agent-card-foot {
360
+ border-top: 0.5px solid var(--line-bright, #2A2A26);
361
+ padding: 12px 20px;
362
+ display: flex;
363
+ justify-content: space-between;
364
+ align-items: center;
365
+ background: var(--panel-2, #1A1A18);
366
+ }
367
+ .agent-card-foot .meta {
368
+ font-family: var(--mono);
369
+ font-size: 9.5px;
370
+ color: var(--text-faint, #3A382F);
371
+ text-transform: uppercase;
372
+ letter-spacing: 0.12em;
373
+ }
374
+ .agent-card-foot .meta .lime { color: var(--lime, #6FB572); }
375
+ .agent-card-cta {
376
+ text-decoration: none;
377
+ background: var(--lime, #6FB572);
378
+ color: var(--bg, #0A0A0A);
379
+ padding: 7px 12px;
380
+ font-family: var(--mono);
381
+ font-size: 10px;
382
+ font-weight: 700;
383
+ text-transform: uppercase;
384
+ letter-spacing: 0.1em;
385
+ border: 0.5px solid var(--lime, #6FB572);
386
+ cursor: pointer;
387
+ transition: all 0.12s;
388
+ }
389
+ .agent-card-cta:hover {
390
+ background: transparent;
391
+ color: var(--lime, #6FB572);
392
+ }
393
+
394
+ /* Privacy mode: home / logged-out pages set body[data-agent-mode="public"]
395
+ to hide personal memory + track-record blocks and swap the CTA. */
396
+ .agent-overlay .public-only { display: none; }
397
+ .agent-overlay.public .private-only { display: none; }
398
+ .agent-overlay.public .public-only { display: revert; }
399
+
400
+ .agent-locked {
401
+ display: grid;
402
+ grid-template-columns: auto 1fr;
403
+ gap: 12px;
404
+ align-items: center;
405
+ padding: 12px 14px;
406
+ border: 0.5px dashed var(--lime-dim, #2D5532);
407
+ background: rgba(111, 181, 114, 0.04);
408
+ }
409
+ .agent-locked .lock-icon {
410
+ font-size: 22px;
411
+ color: var(--lime, #6FB572);
412
+ line-height: 1;
413
+ }
414
+ .agent-locked .lock-text {
415
+ font-family: var(--sans);
416
+ font-size: 12px;
417
+ line-height: 1.55;
418
+ color: var(--text-soft, #8E8B83);
419
+ letter-spacing: -0.003em;
420
+ }
421
+ .agent-locked .lock-link {
422
+ color: var(--lime, #6FB572);
423
+ font-weight: 700;
424
+ text-decoration: none;
425
+ font-family: var(--mono);
426
+ text-transform: uppercase;
427
+ letter-spacing: 0.08em;
428
+ font-size: 10.5px;
429
+ margin-right: 4px;
430
+ }
431
+ .agent-locked .lock-link:hover { text-decoration: underline; }
432
+ .agent-block-label .locked-badge {
433
+ color: var(--text-faint, #3A382F);
434
+ border-color: var(--lime-dim, #2D5532);
435
+ }
436
+
437
+ @media (max-width: 600px) {
438
+ .agent-overlay { padding: 12px; }
439
+ .agent-card-head { grid-template-columns: auto 1fr; gap: 12px; padding: 14px 14px 12px; }
440
+ .agent-card-close { grid-column: 1 / -1; justify-self: end; }
441
+ .agent-card-body { padding: 12px 14px 6px; }
442
+ .agent-card-foot { padding: 10px 14px; flex-direction: column; gap: 8px; align-items: stretch; }
443
+ .agent-card-foot .meta { text-align: center; }
444
+ }