@gotcos/glasses-server 6.99.20 → 6.99.29

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 (65) hide show
  1. package/CHANGELOG.md +257 -0
  2. package/docs/work-orchestrator.md +20 -0
  3. package/package.json +1 -1
  4. package/server/index.ts +48 -5
  5. package/server/lib/agent-session-output-images.ts +280 -0
  6. package/server/lib/agent-session-store.ts +3 -1
  7. package/server/lib/agent-session-turns.ts +18 -7
  8. package/server/lib/client-liveness.ts +38 -3
  9. package/server/lib/codex-subagent-activity.ts +36 -0
  10. package/server/lib/g2-turn-provenance.ts +679 -0
  11. package/server/lib/media-store.ts +41 -2
  12. package/server/lib/permission-broker.ts +94 -17
  13. package/server/lib/queue-turn-evidence.ts +19 -2
  14. package/server/lib/session-halt.ts +15 -1
  15. package/server/lib/session-stream-events.ts +4 -0
  16. package/server/lib/session-subagents.ts +155 -0
  17. package/server/lib/session-turn-attachments.ts +245 -0
  18. package/server/lib/thread-turn-queue-deliver.ts +17 -2
  19. package/server/lib/thread-turn-queue.ts +10 -0
  20. package/server/lib/today-brief.ts +731 -0
  21. package/server/lib/turn-file-store.ts +202 -0
  22. package/server/lib/turn-footer.ts +81 -0
  23. package/server/lib/web-control-static.ts +226 -0
  24. package/server/lib/web-memories-bridge.ts +9 -8
  25. package/server/lib/web-pet-choice.ts +225 -0
  26. package/server/lib/web-pet.ts +226 -0
  27. package/server/lib/work-lens-rounds.ts +29 -4
  28. package/server/routes/agent-session-bindings.ts +164 -16
  29. package/server/routes/agent-sessions.ts +77 -8
  30. package/server/routes/client-instance.ts +12 -1
  31. package/server/routes/cursor-stop-followup.ts +30 -1
  32. package/server/routes/g2-turns.ts +46 -0
  33. package/server/routes/health.ts +9 -0
  34. package/server/routes/media.ts +32 -8
  35. package/server/routes/permission-broker.ts +47 -4
  36. package/server/routes/thread-turn-queue.ts +148 -8
  37. package/server/routes/today-brief.ts +148 -0
  38. package/server/routes/web-control.ts +110 -7
  39. package/server/routes/work-lens-rounds.ts +19 -5
  40. package/server/web-control/app.css +26 -5
  41. package/server/web-control/app.js +1351 -177
  42. package/server/web-control/control.css +1 -1
  43. package/server/web-control/index.html +31 -13
  44. package/server/web-control/memories/memory-workspace.js +1 -1
  45. package/server/web-control/panes/cos-chat.css +22 -0
  46. package/server/web-control/panes/cos-chat.js +264 -48
  47. package/server/web-control/panes/meetings.css +15 -2
  48. package/server/web-control/panes/meetings.js +20 -9
  49. package/server/web-control/panes/memories.css +291 -0
  50. package/server/web-control/panes/memories.js +2208 -0
  51. package/server/web-control/panes/questions.css +39 -1
  52. package/server/web-control/panes/questions.js +419 -64
  53. package/server/web-control/panes/reader-media.js +154 -0
  54. package/server/web-control/panes/sessions.css +2 -0
  55. package/server/web-control/panes/settings.js +136 -6
  56. package/server/web-control/panes/today-actions.css +167 -0
  57. package/server/web-control/panes/today-actions.js +1303 -0
  58. package/server/web-control/panes/work.css +54 -0
  59. package/server/web-control/panes/work.js +1037 -18
  60. package/server/web-control/shell.js +6 -2
  61. package/server/web-control/theme.js +0 -2
  62. package/server/web-control/memories/memories-app.js +0 -1561
  63. package/server/web-control/memories/memories-theme.css +0 -73
  64. package/server/web-control/memories/memories.html +0 -72
  65. package/server/web-control/memories/memory-stewardship.js +0 -63
@@ -259,3 +259,57 @@
259
259
  .wk-more-body { display: flex; flex-direction: column; gap: 10px; padding-top: 8px; }
260
260
  .wk-edit-foot { display: flex; flex-direction: column; gap: 8px; padding-top: 12px; border-top: 1px solid var(--hairline); }
261
261
  .wk-edit-foot .wk-confirm { margin: 0; }
262
+
263
+ /* ── Work chat (Control's WorkTaskChatView) ─────────────── */
264
+ /* The detail repaints these parts around the composer; display: contents keeps the column's own gaps. */
265
+ .wk-part { display: contents; }
266
+ .wk-chat { padding-top: 14px; border-top: 1px solid var(--hairline); }
267
+ .wk-rounds { display: flex; flex-direction: column; gap: 12px; }
268
+ .wk-round { padding: 14px; border-radius: 10px; background: var(--panel); border: 1px solid var(--panel-border); display: flex; flex-direction: column; gap: 8px; min-width: 0; }
269
+ .wk-round p { margin: 0; }
270
+ .wk-round-q { font: 600 14.5px/1.45 var(--body); color: var(--ink); white-space: pre-wrap; overflow-wrap: anywhere; }
271
+ .wk-round-from { margin: -4px 0 0; }
272
+ .wk-round-answer { font-size: 14px; }
273
+ .wk-round-state { margin: 2px 0 0; }
274
+ .wk-round-actions { gap: 10px; }
275
+ .wk-pre { white-space: pre-wrap; }
276
+ .wk-warn { color: var(--amber); }
277
+ .wk-assign { padding: 12px; border-radius: 8px; background: var(--qopen); border: 1px solid var(--panel-border); display: flex; flex-direction: column; gap: 6px; min-width: 0; }
278
+ .wk-assign strong { font-size: 13.5px; line-height: 1.35; overflow-wrap: anywhere; }
279
+ .wk-updates { display: flex; flex-direction: column; gap: 4px; }
280
+ .wk-updates h3 { margin: 0; font: 600 13px/1.3 var(--body); color: var(--ink); }
281
+ .wk-updates ul { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.5; color: var(--ink); }
282
+ .wk-cmp { display: flex; flex-direction: column; gap: 8px; padding: 12px; border-radius: 10px; background: var(--panel); border: 1px solid var(--panel-border); min-width: 0; }
283
+ .wk-cmp p { margin: 0; }
284
+ .wk-cmp-status:empty { display: none; }
285
+ .wk-cmp-status { display: flex; flex-direction: column; gap: 4px; }
286
+ .wk-cmp-phase { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ink); }
287
+ .wk-spin { width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--panel-border); border-top-color: var(--accent); animation: wk-spin 0.9s linear infinite; flex: none; }
288
+ @keyframes wk-spin { to { transform: rotate(360deg); } }
289
+ @media (prefers-reduced-motion: reduce) { .wk-spin { animation: none; border-top-color: var(--panel-border); background: var(--accent); } }
290
+ .wk-cmp-files { color: var(--sub); }
291
+ .wk-cmp-files strong { color: var(--ink); font-weight: 600; }
292
+ .wk-cmp-picks { display: flex; flex-wrap: wrap; gap: 8px 14px; }
293
+ .wk-cmp-picks p { margin: 0; }
294
+ .wk-cmp-text.field { width: 100%; min-height: 96px; resize: none; font-size: 16px; line-height: 1.45; padding: 10px 12px; border-radius: 9px; overflow-y: hidden; }
295
+ .wk-cmp-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
296
+ .wk-cmp-count { flex: none; }
297
+ .wk-cmp-count.over { color: var(--danger); font-weight: 600; }
298
+ .wk-cmp-size { flex: 1 1 140px; min-width: 0; }
299
+ .wk-cmp-hint { margin: 0; flex: 1 1 auto; text-align: right; }
300
+ .wk-cmp-plan { flex: none; margin-left: auto; min-width: 88px; justify-content: center; }
301
+ @media (pointer: coarse), (max-width: 599px) {
302
+ .wk-cmp-plan, .wk-round-actions .cx-btn, .wk-round .cx-btn { min-height: 44px; height: auto; padding: 0 18px; font-size: 15px; }
303
+ }
304
+ @media (max-width: 599px) { .wk-cmp-picks .wk-pick { flex: 1 1 130px; } }
305
+ .wk-preview summary { cursor: pointer; font: 600 12.5px/1.3 var(--body); color: var(--accent); min-height: 32px; display: flex; align-items: center; }
306
+ .wk-preview-text { margin: 6px 0; padding: 10px; border-radius: 8px; background: var(--panel); border: 1px solid var(--panel-border); font: 400 11.5px/1.5 var(--mono); color: var(--ink);
307
+ white-space: pre-wrap; overflow-wrap: anywhere; max-height: 260px; overflow-y: auto; }
308
+ .wk-send-confirm { display: flex; flex-direction: column; gap: 8px; padding: 12px; border-radius: 9px; background: var(--qopen); border: 1px solid var(--accent); }
309
+ .wk-send-confirm p { margin: 0; }
310
+ .wk-picker { display: flex; flex-direction: column; gap: 8px; padding: 10px; border-radius: 9px; border: 1px solid var(--panel-border); background: var(--panel); }
311
+ .wk-picker .field { min-height: 40px; font-size: 15px; padding: 7px 10px; border-radius: 8px; }
312
+ .wk-pick-list { display: flex; flex-direction: column; max-height: 320px; overflow-y: auto; overscroll-behavior: contain; }
313
+ .wk-pick-row { display: flex; align-items: center; gap: 10px; padding: 8px 2px; border-top: 1px solid var(--hairline); }
314
+ .wk-pick-row > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
315
+ .wk-pick-row strong { font-size: 13.5px; }