clay-server 5.2.1-beta.1 → 5.3.0-beta.1

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 (151) hide show
  1. package/lib/clay-control-presentation-binding.js +5 -3
  2. package/lib/clay-product-control-tools.js +3 -3
  3. package/lib/clay-product-control.js +4 -2
  4. package/lib/clay-screen-controls.js +18 -3
  5. package/lib/clay-split-view-awareness.js +35 -0
  6. package/lib/clay-split-view-controls.js +122 -0
  7. package/lib/clay-split-view-input.js +20 -0
  8. package/lib/clay-split-view-render-proof.js +22 -0
  9. package/lib/pane-asset-manifest.js +63 -0
  10. package/lib/project-connection.js +19 -10
  11. package/lib/project-session-actions.js +1 -0
  12. package/lib/project-session-delete.js +2 -2
  13. package/lib/project-session-folders.js +1 -0
  14. package/lib/project-sessions.js +6 -1
  15. package/lib/project-split-view-document.js +33 -0
  16. package/lib/project-split-view-names.js +67 -0
  17. package/lib/project-split-view-organization.js +23 -0
  18. package/lib/project-split-views.js +479 -0
  19. package/lib/project-worker-conversation.js +158 -0
  20. package/lib/project-worker-creation-proposal.js +3 -4
  21. package/lib/project-worker-proposal.js +1 -1
  22. package/lib/project-worker-removal.js +101 -0
  23. package/lib/project.js +28 -1
  24. package/lib/public/app.js +32 -13
  25. package/lib/public/css/base.css +9 -0
  26. package/lib/public/css/filebrowser.css +0 -1
  27. package/lib/public/css/pane-header-controls.css +100 -0
  28. package/lib/public/css/pane.css +24 -5
  29. package/lib/public/css/popup-chat.css +123 -0
  30. package/lib/public/css/right-workbench.css +50 -18
  31. package/lib/public/css/split-view-layout.css +460 -0
  32. package/lib/public/css/split-view-worker-activity.css +97 -0
  33. package/lib/public/css/sticky-notes.css +13 -0
  34. package/lib/public/index.html +3 -3
  35. package/lib/public/modules/app-connection.js +4 -1
  36. package/lib/public/modules/app-messages.js +25 -8
  37. package/lib/public/modules/chat-render-runtime.js +45 -0
  38. package/lib/public/modules/clay-control-copy.js +3 -0
  39. package/lib/public/modules/clay-navigation-render.js +1 -1
  40. package/lib/public/modules/clay-owner-navigation.js +15 -5
  41. package/lib/public/modules/clay-split-view-screen.js +74 -0
  42. package/lib/public/modules/clay-tool-activity.js +5 -0
  43. package/lib/public/modules/command-palette.js +30 -28
  44. package/lib/public/modules/contextual-clay-session.js +26 -2
  45. package/lib/public/modules/contextual-clay.js +5 -2
  46. package/lib/public/modules/contextual-mate-sessions.js +2 -0
  47. package/lib/public/modules/generation-stop.js +7 -1
  48. package/lib/public/modules/knowledge-workbench-entry.js +43 -0
  49. package/lib/public/modules/markdown.js +11 -0
  50. package/lib/public/modules/mate-knowledge-workbench.js +2 -7
  51. package/lib/public/modules/mate-sidebar.js +1 -1
  52. package/lib/public/modules/palette-clay-conversation.js +87 -0
  53. package/lib/public/modules/palette-render-helpers.js +25 -0
  54. package/lib/public/modules/pane-activation.js +46 -7
  55. package/lib/public/modules/pane-binding.js +12 -2
  56. package/lib/public/modules/pane-bridge.js +12 -3
  57. package/lib/public/modules/pane-deferred-bootstrap.js +32 -0
  58. package/lib/public/modules/pane-feature-assets.js +35 -0
  59. package/lib/public/modules/pane-search-receipt.js +12 -0
  60. package/lib/public/modules/permission-control.js +6 -6
  61. package/lib/public/modules/popup-chat-rendering.js +244 -0
  62. package/lib/public/modules/project-activation.js +2 -2
  63. package/lib/public/modules/qrcode.js +12 -1
  64. package/lib/public/modules/right-workbench.js +68 -0
  65. package/lib/public/modules/search-hints.js +79 -0
  66. package/lib/public/modules/session-context-menu.js +35 -2
  67. package/lib/public/modules/session-folder-context.js +24 -13
  68. package/lib/public/modules/session-folder-delete.js +18 -1
  69. package/lib/public/modules/session-folder-layout.js +7 -6
  70. package/lib/public/modules/session-search-pane-state.js +30 -0
  71. package/lib/public/modules/session-search.js +53 -13
  72. package/lib/public/modules/sidebar-mobile.js +3 -3
  73. package/lib/public/modules/sidebar-projects.js +1 -0
  74. package/lib/public/modules/sidebar-session-folders-ui.js +3 -3
  75. package/lib/public/modules/sidebar-sessions.js +57 -24
  76. package/lib/public/modules/sidebar.js +20 -3
  77. package/lib/public/modules/split-group-helpers.js +1 -1
  78. package/lib/public/modules/split-group-restore.js +8 -11
  79. package/lib/public/modules/split-pair-ui.js +18 -0
  80. package/lib/public/modules/split-pane-header-state.js +45 -0
  81. package/lib/public/modules/split-pane-reconciler.js +23 -4
  82. package/lib/public/modules/split-pane-renderer.js +330 -23
  83. package/lib/public/modules/split-pane-retention.js +157 -0
  84. package/lib/public/modules/split-session-boundary.js +21 -0
  85. package/lib/public/modules/split-view-create-action.js +15 -0
  86. package/lib/public/modules/split-view-create-menu.js +83 -0
  87. package/lib/public/modules/split-view-create-request.js +23 -0
  88. package/lib/public/modules/split-view-layout-client.js +198 -0
  89. package/lib/public/modules/split-view-layout-icons.js +37 -0
  90. package/lib/public/modules/split-view-layout-scope.js +38 -0
  91. package/lib/public/modules/split-view-organization.js +73 -0
  92. package/lib/public/modules/split-view-presentation-close.js +35 -0
  93. package/lib/public/modules/split-view-presentation-drag.js +254 -0
  94. package/lib/public/modules/split-view-presentation-drop.js +57 -0
  95. package/lib/public/modules/split-view-presentation-lookup.js +44 -0
  96. package/lib/public/modules/split-view-presentation-renderer.js +494 -0
  97. package/lib/public/modules/split-view-presentations.js +495 -0
  98. package/lib/public/modules/split-view-shell-controls.js +28 -0
  99. package/lib/public/modules/split-view-sidebar-menu.js +42 -0
  100. package/lib/public/modules/split-view-sidebar-renderer.js +30 -0
  101. package/lib/public/modules/split-view-singleton.js +21 -0
  102. package/lib/public/modules/split-view-worker-activity.js +94 -0
  103. package/lib/public/modules/split-view-worker-controls.js +30 -0
  104. package/lib/public/modules/split-view-worker-removal.js +137 -0
  105. package/lib/public/modules/split-view-worker-scroll.js +57 -0
  106. package/lib/public/modules/split-view-worker-transcript.js +46 -0
  107. package/lib/public/modules/split-view-workers.js +352 -0
  108. package/lib/public/modules/split-view.js +61 -22
  109. package/lib/public/modules/sticky-notes.js +9 -2
  110. package/lib/public/modules/tools.js +25 -5
  111. package/lib/public/modules/workbench-layout-preference.js +76 -0
  112. package/lib/public/pane-assets/app-OJEQXBBS.js +1 -0
  113. package/lib/public/pane-assets/chunk-4SMIVAB4.js +1 -0
  114. package/lib/public/pane-assets/chunk-623V5CEO.js +1 -0
  115. package/lib/public/pane-assets/chunk-6SM2WQJX.js +1 -0
  116. package/lib/public/pane-assets/chunk-7H36SUZA.js +2 -0
  117. package/lib/public/pane-assets/chunk-DGOFGEUK.js +1 -0
  118. package/lib/public/pane-assets/chunk-GML2R5JE.js +167 -0
  119. package/lib/public/pane-assets/chunk-I57URYSL.js +1 -0
  120. package/lib/public/pane-assets/chunk-I5P3MWQG.js +1 -0
  121. package/lib/public/pane-assets/chunk-UVGOPFEX.js +2 -0
  122. package/lib/public/pane-assets/manifest.json +551 -0
  123. package/lib/public/pane-assets/style-GN7R6XKV.css +1 -0
  124. package/lib/public/style.css +5 -1
  125. package/lib/sdk-bridge.js +16 -3
  126. package/lib/server-owner-ui.js +6 -2
  127. package/lib/server-owner-view-observation.js +34 -0
  128. package/lib/server-palette.js +1 -0
  129. package/lib/server-pane-bootstrap.js +24 -0
  130. package/lib/server-settings.js +2 -0
  131. package/lib/server-static-assets.js +52 -0
  132. package/lib/server-workbench-layout-settings.js +56 -0
  133. package/lib/server.js +6 -45
  134. package/lib/session-activity-state.js +28 -0
  135. package/lib/session-list-delivery.js +17 -0
  136. package/lib/session-pair-turn-control.js +1 -6
  137. package/lib/session-search.js +3 -0
  138. package/lib/session-split-group-anchors.js +2 -2
  139. package/lib/session-split-group-roles.js +5 -8
  140. package/lib/session-split-group-v2-store.js +0 -3
  141. package/lib/sessions.js +16 -6
  142. package/lib/split-view-layout.js +132 -0
  143. package/lib/users-workbench-layout-preferences.js +33 -0
  144. package/lib/users.js +3 -0
  145. package/lib/workspace-query-service.js +1 -5
  146. package/lib/ws-schema.js +15 -0
  147. package/lib/yoke/adapters/codex.js +1 -0
  148. package/lib/yoke/codex-app-server.js +3 -1
  149. package/lib/yoke/codex-idle-recovery.js +73 -20
  150. package/lib/yoke/codex-recovery-admission.js +65 -4
  151. package/package.json +6 -3
@@ -392,7 +392,7 @@ body.pane-mode #input-area {
392
392
  }
393
393
 
394
394
  .split-pane-header .split-pane-full-access {
395
- height: 24px;
395
+ height: 22px;
396
396
  align-self: center;
397
397
  margin-left: 0;
398
398
  padding: 0;
@@ -404,14 +404,21 @@ body.pane-mode #input-area {
404
404
  }
405
405
 
406
406
  .split-pane-header .session-permission-segmented button {
407
- min-height: 20px;
408
- height: 20px;
409
- font-size: 11px;
407
+ flex: 0 0 auto;
408
+ width: auto;
409
+ min-width: 30px;
410
+ min-height: 18px;
411
+ height: 18px;
412
+ padding: 2px 5px;
413
+ border: 1px solid transparent;
414
+ border-radius: 4px;
415
+ font-size: 10px;
410
416
  }
411
417
 
412
418
  .split-pane-header .session-permission-segmented {
413
- height: 24px;
419
+ height: 22px;
414
420
  padding: 1px;
421
+ border-radius: 5px;
415
422
  }
416
423
 
417
424
  .split-pane-header .session-permission-status {
@@ -424,6 +431,18 @@ body.pane-mode #input-area {
424
431
  font-size: 10px;
425
432
  }
426
433
 
434
+ @media (pointer: coarse) {
435
+ .split-pane-header { height: 36px; min-height: 36px; }
436
+ .split-pane-header .split-pane-full-access,
437
+ .split-pane-header .session-permission-segmented { height: 32px; }
438
+ .split-pane-header .session-permission-segmented button {
439
+ min-width: 36px;
440
+ min-height: 28px;
441
+ height: 28px;
442
+ font-size: 11px;
443
+ }
444
+ }
445
+
427
446
  .split-pane-header .session-full-access-track {
428
447
  width: 16px;
429
448
  height: 9px;
@@ -0,0 +1,123 @@
1
+ /* Popup activity uses the native transcript and its existing interactive pills. */
2
+ body.popup-chat-rendering #messages > :has(> .dm-bubble-content > .dm-bubble-header) {
3
+ display: grid;
4
+ grid-template-columns: 24px minmax(0, 1fr);
5
+ column-gap: 7px;
6
+ row-gap: 4px;
7
+ }
8
+ body.popup-chat-rendering #messages > :has(> .dm-bubble-content > .dm-bubble-header) > .dm-bubble-avatar {
9
+ grid-column: 1;
10
+ grid-row: 1;
11
+ width: 24px;
12
+ height: 24px;
13
+ margin: 0;
14
+ align-self: center;
15
+ }
16
+ body.popup-chat-rendering #messages > :has(> .dm-bubble-content > .dm-bubble-header) > .dm-bubble-content {
17
+ display: contents;
18
+ }
19
+ body.popup-chat-rendering #messages > :has(> .dm-bubble-content > .dm-bubble-header) > .dm-bubble-content > * {
20
+ grid-column: 1 / -1;
21
+ min-width: 0;
22
+ }
23
+ body.popup-chat-rendering #messages > :has(> .dm-bubble-content > .dm-bubble-header) > .dm-bubble-content > .dm-bubble-header {
24
+ grid-column: 2;
25
+ grid-row: 1;
26
+ min-height: 24px;
27
+ align-items: center;
28
+ }
29
+ body.popup-chat-rendering #messages > .grouped > .dm-bubble-avatar {
30
+ display: none;
31
+ }
32
+ body.popup-chat-rendering #messages .popup-chat-activity {
33
+ display: block;
34
+ box-sizing: border-box;
35
+ width: 100%;
36
+ max-width: 100%;
37
+ margin-inline: 0;
38
+ padding-inline: 16px;
39
+ }
40
+ body.popup-chat-rendering #messages .popup-chat-activity > .dm-bubble-avatar {
41
+ display: none;
42
+ }
43
+ body.popup-chat-rendering #messages .popup-chat-activity > .dm-bubble-content {
44
+ display: block;
45
+ width: 100%;
46
+ padding-top: 0;
47
+ }
48
+ body.popup-chat-rendering #messages .msg-assistant .md-content,
49
+ body.popup-chat-rendering #messages .msg-user .bubble {
50
+ font-size: 14px;
51
+ line-height: 1.65;
52
+ }
53
+ body.popup-chat-rendering #messages .popup-chat-activity,
54
+ body.popup-chat-rendering .popup-chat-activity > .dm-bubble-content {
55
+ border: 0;
56
+ border-radius: 0;
57
+ background: transparent;
58
+ box-shadow: none;
59
+ }
60
+ body.popup-chat-rendering .popup-chat-activity .tool-group-header {
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 6px;
64
+ min-height: 24px;
65
+ width: 100%;
66
+ box-sizing: border-box;
67
+ padding: 0;
68
+ border: 0;
69
+ border-radius: 0;
70
+ background: transparent;
71
+ }
72
+ body.popup-chat-rendering .popup-chat-activity .tool-group-header:hover {
73
+ background: transparent;
74
+ }
75
+ body.popup-chat-rendering .popup-chat-activity-icon {
76
+ display: inline-flex;
77
+ flex: none;
78
+ color: var(--accent);
79
+ }
80
+ body.popup-chat-rendering .popup-chat-activity-icon .lucide { width: 13px; height: 13px; }
81
+ body.popup-chat-rendering .popup-chat-activity .tool-group-label {
82
+ color: var(--text-muted);
83
+ font-size: 11px;
84
+ font-weight: 600;
85
+ }
86
+ body.popup-chat-rendering .popup-chat-activity-count {
87
+ color: var(--text-dimmer);
88
+ font-size: 10px;
89
+ }
90
+ body.popup-chat-rendering .popup-chat-activity .tool-group-chevron {
91
+ order: 5;
92
+ margin-left: auto;
93
+ }
94
+ body.popup-chat-rendering .popup-chat-activity .tool-group-bullet { display: none; }
95
+ body.popup-chat-rendering .popup-chat-activity.collapsed .tool-group-items { display: block; }
96
+ body.popup-chat-rendering .popup-chat-activity .tool-item[hidden] { display: none !important; }
97
+ body.popup-chat-rendering .popup-chat-activity .tool-header {
98
+ min-height: 23px;
99
+ padding: 2px 0;
100
+ border: 0;
101
+ border-radius: 0;
102
+ background: transparent;
103
+ gap: 6px;
104
+ }
105
+ body.popup-chat-rendering .popup-chat-activity .tool-name {
106
+ min-width: 0;
107
+ font-size: 11px;
108
+ font-weight: 500;
109
+ color: var(--text-muted);
110
+ }
111
+ body.popup-chat-rendering .popup-chat-activity .tool-desc {
112
+ font-family: var(--font-ui);
113
+ font-size: 10px;
114
+ color: var(--text-dimmer);
115
+ }
116
+ body.popup-chat-rendering .popup-chat-activity .tool-status-icon { order: -1; margin-left: 0; }
117
+ body.popup-chat-rendering .popup-chat-activity .tool-status-icon .lucide { width: 13px; height: 13px; }
118
+ body.popup-chat-rendering .popup-chat-activity .tool-header > .tool-bullet { display: none; }
119
+ body.popup-chat-rendering .popup-chat-activity .tool-header > .tool-chevron { order: 5; margin-left: auto; }
120
+ @media (pointer: coarse) {
121
+ body.popup-chat-rendering .popup-chat-activity .tool-group-header,
122
+ body.popup-chat-rendering .popup-chat-activity .tool-header { min-height: 32px; }
123
+ }
@@ -5,51 +5,83 @@
5
5
  }
6
6
 
7
7
  @media (min-width: 1024px) {
8
- :is(#file-viewer, #terminal-container, #project-logs-panel, #you-panel, #issues-panel, #linear-panel, #notes-browser, #scheduled-tasks-panel, #debates-workbench, #shared-browser-panel, #mcp-skills-workbench, #mate-knowledge-workbench):not(.panel-fullscreen) {
8
+ :is(#file-viewer, #terminal-container, #project-logs-panel, #you-panel, #issues-panel, #linear-panel, #notes-browser, #scheduled-tasks-panel, #debates-workbench, #shared-browser-panel, #mcp-skills-workbench, #mate-knowledge-workbench, #wireframe-panel):not(.panel-fullscreen) {
9
9
  box-shadow:
10
- 4px 8px 18px rgba(var(--shadow-rgb), 0.14),
11
- 2px 2px 4px rgba(var(--shadow-rgb), 0.08),
10
+ 0 12px 24px rgba(var(--shadow-rgb), 0.20),
11
+ 0 3px 6px rgba(var(--shadow-rgb), 0.12),
12
12
  inset 0 1px 0 rgba(255, 255, 255, 0.04);
13
13
  animation: workbench-panel-in 0.18s cubic-bezier(0.2, 0.8, 0.2, 1);
14
14
  transition: max-width 0.2s ease, width 0.2s ease, box-shadow 0.2s ease;
15
15
  }
16
16
  }
17
17
 
18
- :is(#file-viewer, #terminal-container, #project-logs-panel, #you-panel, #issues-panel, #linear-panel, #notes-browser, #scheduled-tasks-panel, #debates-workbench, #shared-browser-panel, #mcp-skills-workbench, #mate-knowledge-workbench).panel-fullscreen {
18
+ :is(#file-viewer, #terminal-container, #project-logs-panel, #you-panel, #issues-panel, #linear-panel, #notes-browser, #scheduled-tasks-panel, #debates-workbench, #shared-browser-panel, #mcp-skills-workbench, #mate-knowledge-workbench, #wireframe-panel).panel-fullscreen {
19
19
  box-shadow: none;
20
20
  animation: none;
21
21
  }
22
22
 
23
- /* Desktop expansion of Browser, Terminal and Files shares one region: the
24
- area below the session title (the title and its right tools stay visible).
25
- Chat (#app) is hidden by filebrowser.css; the split host is a sibling whose
26
- pane headers overflow its collapsed width, so lift it out of flow and make it
27
- unpaintable and unclickable while expanded, including descendants that force visibility. Its frames keep their size and
28
- state, and modals keep their own stacking above this region. */
23
+ /* Workbench panels float above the canvas. Opening or expanding a panel must
24
+ leave mounted conversations and their layout measurements unchanged. */
29
25
  @media (min-width: 1024px) {
30
- :is(#file-viewer, #terminal-container, #shared-browser-panel).panel-fullscreen {
31
- align-self: stretch;
26
+ #main-panels { position: relative; }
27
+ #main-panels > :is(#file-viewer, #terminal-container, #project-logs-panel, #you-panel, #issues-panel, #linear-panel, #notes-browser, #scheduled-tasks-panel, #debates-workbench, #shared-browser-panel, #mcp-skills-workbench, #mate-knowledge-workbench, #wireframe-panel) {
28
+ position: absolute;
29
+ top: 8px;
30
+ right: 8px;
31
+ z-index: 30;
32
+ height: calc(100% - 16px);
33
+ max-height: calc(100% - 16px);
34
+ margin: 0;
35
+ }
36
+ #main-panels > :is(#file-viewer, #terminal-container, #project-logs-panel, #you-panel, #issues-panel, #linear-panel, #notes-browser, #scheduled-tasks-panel, #debates-workbench, #shared-browser-panel, #mcp-skills-workbench, #mate-knowledge-workbench, #wireframe-panel).panel-fullscreen {
37
+ inset: 0;
32
38
  width: 100%;
33
39
  max-width: none;
34
40
  min-width: 0;
35
41
  height: 100%;
42
+ max-height: none;
36
43
  margin: 0;
37
44
  border: 0;
38
45
  border-radius: 0;
39
46
  }
40
- #main-panels:has(> :is(#file-viewer, #terminal-container, #shared-browser-panel).panel-fullscreen:not(.hidden)) > #split-host {
41
- position: absolute;
42
- inset: 0;
47
+ #main-panels:has(> .panel-fullscreen:not(.hidden)) > :is(#app, #split-host) {
43
48
  visibility: hidden;
44
49
  pointer-events: none;
45
- /* Some descendants set visibility:visible themselves (for example the
46
- pending permission spinner); the clip keeps all of them unpainted. */
47
50
  clip-path: inset(100%);
48
51
  }
52
+ #main-panels[data-workbench-mode="docked"] > :is(#file-viewer, #terminal-container, #project-logs-panel, #you-panel, #issues-panel, #linear-panel, #notes-browser, #scheduled-tasks-panel, #debates-workbench, #shared-browser-panel, #mcp-skills-workbench, #mate-knowledge-workbench, #wireframe-panel):not(.panel-fullscreen) {
53
+ position: relative;
54
+ inset: auto;
55
+ margin: 8px 8px 8px 0;
56
+ box-shadow: 0 2px 5px rgba(var(--shadow-rgb), .08);
57
+ animation: none;
58
+ }
59
+ }
60
+
61
+ #main-panels .workbench-layout-toggle {
62
+ display: inline-flex;
63
+ align-items: center;
64
+ justify-content: center;
65
+ flex: 0 0 28px;
66
+ width: 28px;
67
+ height: 28px;
68
+ padding: 5px;
69
+ border: 0;
70
+ border-radius: 6px;
71
+ background: transparent;
72
+ color: var(--text-muted);
73
+ cursor: pointer;
74
+ }
75
+ #main-panels .workbench-layout-toggle svg { width: 15px; height: 15px; }
76
+ #main-panels .workbench-layout-toggle:hover { background: var(--sidebar-hover); color: var(--text); }
77
+ #main-panels .workbench-layout-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
78
+ #main-panels .workbench-layout-toggle:disabled { opacity: .45; cursor: wait; }
79
+ @media (max-width: 1023px) {
80
+ #main-panels .workbench-layout-toggle { display: none; }
49
81
  }
50
82
 
51
83
  @media (prefers-reduced-motion: reduce) {
52
- :is(#file-viewer, #terminal-container, #project-logs-panel, #you-panel, #issues-panel, #linear-panel, #notes-browser, #scheduled-tasks-panel, #debates-workbench, #shared-browser-panel, #mcp-skills-workbench, #mate-knowledge-workbench):not(.panel-fullscreen) {
84
+ :is(#file-viewer, #terminal-container, #project-logs-panel, #you-panel, #issues-panel, #linear-panel, #notes-browser, #scheduled-tasks-panel, #debates-workbench, #shared-browser-panel, #mcp-skills-workbench, #mate-knowledge-workbench, #wireframe-panel):not(.panel-fullscreen) {
53
85
  animation: none;
54
86
  transition: none;
55
87
  }