clay-server 5.2.0-beta.1 → 5.2.0-beta.11

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 (608) hide show
  1. package/README.md +0 -4
  2. package/lib/account-auth-socket.js +1 -0
  3. package/lib/builtin-mates.js +19 -16
  4. package/lib/bundled-skills/clay-agent-browser/SKILL.md +6 -2
  5. package/lib/canonical-clay-record-authority.js +15 -0
  6. package/lib/canonical-clay-scheduling-authority.js +19 -0
  7. package/lib/claude-hook-installer.js +1 -239
  8. package/lib/claude-jsonl-watcher.js +1 -204
  9. package/lib/clay-control-presentation-binding.js +96 -0
  10. package/lib/clay-control-presentation.js +128 -0
  11. package/lib/clay-control-target-projection.js +26 -0
  12. package/lib/clay-mate-chat-receipts.js +26 -0
  13. package/lib/clay-mate-chat.js +88 -0
  14. package/lib/clay-mate-knowledge-input.js +26 -0
  15. package/lib/clay-mate-knowledge.js +95 -0
  16. package/lib/clay-mate-lifecycle.js +95 -0
  17. package/lib/clay-product-control-input.js +33 -0
  18. package/lib/clay-product-control-tools.js +52 -0
  19. package/lib/clay-product-control.js +250 -0
  20. package/lib/clay-project-lifecycle.js +154 -0
  21. package/lib/clay-project-record-input.js +44 -0
  22. package/lib/clay-project-records.js +84 -0
  23. package/lib/clay-scheduling-input.js +21 -0
  24. package/lib/clay-scheduling-receipts.js +26 -0
  25. package/lib/clay-scheduling.js +119 -0
  26. package/lib/clay-screen-controls.js +104 -0
  27. package/lib/clay-skill-install.js +1 -33
  28. package/lib/clay-vendor-usage.js +44 -0
  29. package/lib/clay-workspace-controls.js +84 -0
  30. package/lib/clay-workspace-input.js +17 -0
  31. package/lib/clay-workspace-receipts.js +26 -0
  32. package/lib/cli-sessions.js +1 -300
  33. package/lib/codex-defaults.js +1 -28
  34. package/lib/context-usage.js +3 -2
  35. package/lib/contextual-screen-snapshot.js +38 -0
  36. package/lib/daemon-project-access.js +11 -0
  37. package/lib/daemon-project-lifecycle-callbacks.js +15 -0
  38. package/lib/daemon-project-lifecycle.js +262 -0
  39. package/lib/daemon-projects.js +1 -1
  40. package/lib/daemon.js +78 -276
  41. package/lib/default-ai-runtime.js +4 -8
  42. package/lib/dm-digest-cursor.js +120 -0
  43. package/lib/email-mcp-server.js +1 -1
  44. package/lib/github-star-count.js +147 -0
  45. package/lib/issues-service.js +29 -15
  46. package/lib/kiro-defaults.js +1 -22
  47. package/lib/knowledge-db-import-validation.js +46 -0
  48. package/lib/knowledge-db-import.js +99 -0
  49. package/lib/knowledge-db-service.js +24 -33
  50. package/lib/knowledge-db-storage-nedb-maintenance.js +99 -0
  51. package/lib/knowledge-db-storage-nedb.js +66 -0
  52. package/lib/knowledge-db-storage.js +72 -0
  53. package/lib/knowledge-db-validation.js +0 -0
  54. package/lib/knowledge-document-index.js +2 -1
  55. package/lib/knowledge-file-store.js +7 -1
  56. package/lib/knowledge-product-operations.js +46 -0
  57. package/lib/mate-avatar-catalog.js +12 -0
  58. package/lib/mate-avatar-migration.js +41 -0
  59. package/lib/mate-context-service.js +138 -0
  60. package/lib/mate-context-tools.js +21 -0
  61. package/lib/mate-creation-mcp-server.js +2 -0
  62. package/lib/mate-knowledge-canonical-access.js +10 -0
  63. package/lib/mate-knowledge-mate-bound.js +53 -0
  64. package/lib/mate-knowledge-mcp-server.js +55 -8
  65. package/lib/mate-knowledge-service.js +16 -34
  66. package/lib/mate-knowledge-text-tools.js +106 -0
  67. package/lib/mate-lifecycle-service.js +94 -0
  68. package/lib/mate-message-delivery.js +43 -0
  69. package/lib/mate-ready-creation.js +9 -1
  70. package/lib/mate-schedule-input.js +29 -0
  71. package/lib/mate-schedule-lifecycle.js +151 -0
  72. package/lib/mate-scheduling.js +103 -0
  73. package/lib/mates.js +18 -6
  74. package/lib/mcp-agent-tools.js +117 -0
  75. package/lib/mcp-connection-store.js +119 -15
  76. package/lib/mcp-import-credentials.js +31 -0
  77. package/lib/mcp-local-transport.js +13 -0
  78. package/lib/mcp-oauth.js +8 -6
  79. package/lib/mcp-proxy.js +2 -32
  80. package/lib/mcp-query-bridge.js +30 -0
  81. package/lib/mcp-remote-connections.js +74 -20
  82. package/lib/mcp-source-adapters.js +1 -0
  83. package/lib/mcp-source-context.js +1 -0
  84. package/lib/mcp-source-discovery.js +1 -0
  85. package/lib/mcp-source-plugins.js +1 -0
  86. package/lib/mcp-source-restrictions.js +1 -0
  87. package/lib/mcp-tool-policy.js +9 -0
  88. package/lib/notes-checklist.js +92 -0
  89. package/lib/notes.js +51 -4
  90. package/lib/os-user-diagnostics.js +2 -4
  91. package/lib/os-users.js +24 -70
  92. package/lib/pane-pending-interactions.js +20 -0
  93. package/lib/pane-session-activation.js +114 -0
  94. package/lib/pane-session-transport.js +26 -0
  95. package/lib/project-admin-overview.js +51 -0
  96. package/lib/project-ask-user.js +8 -4
  97. package/lib/project-connection.js +14 -10
  98. package/lib/project-control-git-view.js +12 -0
  99. package/lib/project-debate.js +1 -0
  100. package/lib/project-delegated-follow-up.js +2 -1
  101. package/lib/project-directory-claim.js +65 -0
  102. package/lib/project-file-operations.js +61 -0
  103. package/lib/project-filesystem.js +15 -85
  104. package/lib/project-full-access.js +23 -2
  105. package/lib/project-http.js +7 -4
  106. package/lib/project-knowledge.js +32 -18
  107. package/lib/project-lifecycle-operations.js +98 -0
  108. package/lib/project-lifecycle-process-witness.js +32 -0
  109. package/lib/project-lifecycle-runtime.js +50 -0
  110. package/lib/project-linux-access.js +22 -0
  111. package/lib/project-logs-canonical-clay.js +27 -0
  112. package/lib/project-logs-clay-query.js +16 -0
  113. package/lib/project-logs-schema.js +4 -2
  114. package/lib/project-logs-service.js +8 -7
  115. package/lib/project-logs.js +1 -0
  116. package/lib/project-loop.js +1 -0
  117. package/lib/project-mate-chat-control.js +55 -0
  118. package/lib/project-mate-creation-proposal.js +18 -3
  119. package/lib/project-mate-interaction.js +40 -62
  120. package/lib/project-mcp.js +54 -16
  121. package/lib/project-models.js +14 -31
  122. package/lib/project-notifications.js +76 -17
  123. package/lib/project-ownership.js +77 -0
  124. package/lib/project-pair-result-delivery.js +14 -3
  125. package/lib/project-pair-usage.js +12 -13
  126. package/lib/project-pending-message-queue.js +4 -1
  127. package/lib/project-product-control.js +89 -0
  128. package/lib/project-product-session-queue.js +46 -0
  129. package/lib/project-push-access.js +28 -0
  130. package/lib/project-scheduled-message-queue.js +30 -0
  131. package/lib/project-scheduled-messages.js +67 -68
  132. package/lib/project-scheduled-task-control.js +83 -0
  133. package/lib/project-scheduled-tasks.js +13 -2
  134. package/lib/project-scheduling-access.js +10 -0
  135. package/lib/project-session-actions.js +65 -0
  136. package/lib/project-session-delete.js +8 -1
  137. package/lib/project-session-document.js +27 -7
  138. package/lib/project-session-github.js +63 -19
  139. package/lib/project-session-history-actions.js +167 -0
  140. package/lib/project-session-linear.js +14 -6
  141. package/lib/project-session-notes.js +40 -11
  142. package/lib/project-session-pair.js +1 -1
  143. package/lib/project-session-runtime-actions.js +64 -0
  144. package/lib/project-session-spawn.js +2 -3
  145. package/lib/project-session-vendor.js +55 -0
  146. package/lib/project-sessions.js +160 -290
  147. package/lib/project-shared-browser.js +78 -17
  148. package/lib/project-start-protocol.js +29 -0
  149. package/lib/project-studio-presentation.js +58 -0
  150. package/lib/project-user-message.js +67 -1
  151. package/lib/project-vendor-login.js +8 -36
  152. package/lib/project-workspace-operations.js +126 -0
  153. package/lib/project-workspace-query.js +19 -2
  154. package/lib/project.js +181 -45
  155. package/lib/public/app.js +71 -17
  156. package/lib/public/appearance-bootstrap.js +16 -0
  157. package/lib/public/css/clay-tool-activity.css +51 -0
  158. package/lib/public/css/clay-workspace.css +29 -0
  159. package/lib/public/css/command-palette.css +12 -33
  160. package/lib/public/css/contextual-clay.css +240 -0
  161. package/lib/public/css/filebrowser.css +1 -1
  162. package/lib/public/css/home-debate-planning.css +2 -0
  163. package/lib/public/css/home-mate-creation.css +5 -0
  164. package/lib/public/css/input.css +6 -0
  165. package/lib/public/css/mate-avatar-gallery.css +12 -0
  166. package/lib/public/css/mate-conversation.css +10 -5
  167. package/lib/public/css/mate-loading-scene.css +21 -0
  168. package/lib/public/css/messages.css +6 -2
  169. package/lib/public/css/overlays.css +68 -258
  170. package/lib/public/css/project-admin-overview.css +13 -0
  171. package/lib/public/css/project-mate-creation.css +5 -6
  172. package/lib/public/css/project-start.css +108 -0
  173. package/lib/public/css/projects-hub.css +53 -14
  174. package/lib/public/css/session-folders.css +11 -0
  175. package/lib/public/css/session-github.css +46 -1
  176. package/lib/public/css/settings-shell.css +103 -0
  177. package/lib/public/css/shared-browser.css +35 -1
  178. package/lib/public/css/sidebar.css +7 -0
  179. package/lib/public/css/sticky-notes.css +87 -1
  180. package/lib/public/css/title-bar.css +79 -0
  181. package/lib/public/index.html +61 -68
  182. package/lib/public/mate-avatars/B01.png +0 -0
  183. package/lib/public/mate-avatars/B02.png +0 -0
  184. package/lib/public/mate-avatars/B03.png +0 -0
  185. package/lib/public/mate-avatars/B04.png +0 -0
  186. package/lib/public/mate-avatars/B05.png +0 -0
  187. package/lib/public/mate-avatars/B06.png +0 -0
  188. package/lib/public/mate-avatars/B07.png +0 -0
  189. package/lib/public/mate-avatars/B08.png +0 -0
  190. package/lib/public/mate-avatars/B09.png +0 -0
  191. package/lib/public/mate-avatars/B10.png +0 -0
  192. package/lib/public/mate-avatars/B11.png +0 -0
  193. package/lib/public/mate-avatars/B12.png +0 -0
  194. package/lib/public/mate-avatars/B13.png +0 -0
  195. package/lib/public/mate-avatars/B14.png +0 -0
  196. package/lib/public/mate-avatars/B15.png +0 -0
  197. package/lib/public/mate-avatars/B16.png +0 -0
  198. package/lib/public/mate-avatars/B17.png +0 -0
  199. package/lib/public/mate-avatars/B18.png +0 -0
  200. package/lib/public/mate-avatars/B19.png +0 -0
  201. package/lib/public/mate-avatars/B20.png +0 -0
  202. package/lib/public/mate-avatars/B21.png +0 -0
  203. package/lib/public/mate-avatars/B22.png +0 -0
  204. package/lib/public/mate-avatars/B23.png +0 -0
  205. package/lib/public/mate-avatars/B24.png +0 -0
  206. package/lib/public/mate-avatars/B25.png +0 -0
  207. package/lib/public/mate-avatars/B26.png +0 -0
  208. package/lib/public/mate-avatars/B27.png +0 -0
  209. package/lib/public/mate-avatars/B28.png +0 -0
  210. package/lib/public/mate-avatars/B29.png +0 -0
  211. package/lib/public/mate-avatars/B30.png +0 -0
  212. package/lib/public/mate-avatars/B31.png +0 -0
  213. package/lib/public/mate-avatars/B32.png +0 -0
  214. package/lib/public/mate-avatars/B33.png +0 -0
  215. package/lib/public/mate-avatars/B34.png +0 -0
  216. package/lib/public/mate-avatars/B35.png +0 -0
  217. package/lib/public/mate-avatars/B36.png +0 -0
  218. package/lib/public/mate-avatars/B37.png +0 -0
  219. package/lib/public/mate-avatars/B38.png +0 -0
  220. package/lib/public/mate-avatars/B39.png +0 -0
  221. package/lib/public/mate-avatars/B40.png +0 -0
  222. package/lib/public/mate-avatars/B41.png +0 -0
  223. package/lib/public/mate-avatars/B42.png +0 -0
  224. package/lib/public/mate-avatars/B43.png +0 -0
  225. package/lib/public/mate-avatars/B44.png +0 -0
  226. package/lib/public/mate-avatars/B45.png +0 -0
  227. package/lib/public/mate-avatars/B46.png +0 -0
  228. package/lib/public/mate-avatars/B47.png +0 -0
  229. package/lib/public/mate-avatars/B48.png +0 -0
  230. package/lib/public/mate-avatars/C01.png +0 -0
  231. package/lib/public/mate-avatars/C02.png +0 -0
  232. package/lib/public/mate-avatars/C03.png +0 -0
  233. package/lib/public/mate-avatars/C04.png +0 -0
  234. package/lib/public/mate-avatars/C05.png +0 -0
  235. package/lib/public/mate-avatars/C06.png +0 -0
  236. package/lib/public/mate-avatars/C07.png +0 -0
  237. package/lib/public/mate-avatars/C08.png +0 -0
  238. package/lib/public/mate-avatars/C09.png +0 -0
  239. package/lib/public/mate-avatars/C10.png +0 -0
  240. package/lib/public/mate-avatars/C11.png +0 -0
  241. package/lib/public/mate-avatars/C12.png +0 -0
  242. package/lib/public/mate-avatars/C13.png +0 -0
  243. package/lib/public/mate-avatars/C14.png +0 -0
  244. package/lib/public/mate-avatars/C15.png +0 -0
  245. package/lib/public/mate-avatars/C16.png +0 -0
  246. package/lib/public/mate-avatars/C17.png +0 -0
  247. package/lib/public/mate-avatars/C18.png +0 -0
  248. package/lib/public/mate-avatars/C19.png +0 -0
  249. package/lib/public/mate-avatars/C20.png +0 -0
  250. package/lib/public/mate-avatars/C21.png +0 -0
  251. package/lib/public/mate-avatars/C22.png +0 -0
  252. package/lib/public/mate-avatars/C23.png +0 -0
  253. package/lib/public/mate-avatars/C24.png +0 -0
  254. package/lib/public/mate-avatars/C25.png +0 -0
  255. package/lib/public/mate-avatars/C26.png +0 -0
  256. package/lib/public/mate-avatars/C27.png +0 -0
  257. package/lib/public/mate-avatars/C28.png +0 -0
  258. package/lib/public/mate-avatars/C29.png +0 -0
  259. package/lib/public/mate-avatars/C30.png +0 -0
  260. package/lib/public/mate-avatars/C31.png +0 -0
  261. package/lib/public/mate-avatars/C32.png +0 -0
  262. package/lib/public/mate-avatars/C33.png +0 -0
  263. package/lib/public/mate-avatars/C34.png +0 -0
  264. package/lib/public/mate-avatars/C35.png +0 -0
  265. package/lib/public/mate-avatars/C36.png +0 -0
  266. package/lib/public/mate-avatars/C37.png +0 -0
  267. package/lib/public/mate-avatars/C38.png +0 -0
  268. package/lib/public/mate-avatars/C39.png +0 -0
  269. package/lib/public/mate-avatars/C40.png +0 -0
  270. package/lib/public/mate-avatars/C41.png +0 -0
  271. package/lib/public/mate-avatars/C42.png +0 -0
  272. package/lib/public/mate-avatars/C43.png +0 -0
  273. package/lib/public/mate-avatars/C44.png +0 -0
  274. package/lib/public/mate-avatars/C45.png +0 -0
  275. package/lib/public/mate-avatars/C46.png +0 -0
  276. package/lib/public/mate-avatars/C47.png +0 -0
  277. package/lib/public/mate-avatars/C48.png +0 -0
  278. package/lib/public/mate-avatars/catalog.json +482 -0
  279. package/lib/public/mate-avatars/lead-clay.png +0 -0
  280. package/lib/public/modules/admin-settings-invitations.js +2 -2
  281. package/lib/public/modules/admin-settings-projects.js +8 -4
  282. package/lib/public/modules/admin-settings-ui.js +20 -4
  283. package/lib/public/modules/admin-settings-users.js +4 -4
  284. package/lib/public/modules/app-connection.js +11 -1
  285. package/lib/public/modules/app-favicon.js +18 -9
  286. package/lib/public/modules/app-header.js +7 -4
  287. package/lib/public/modules/app-home-hub.js +2 -1
  288. package/lib/public/modules/app-loop-ui.js +2 -0
  289. package/lib/public/modules/app-message-router.js +22 -1
  290. package/lib/public/modules/app-messages.js +125 -19
  291. package/lib/public/modules/app-misc.js +3 -1
  292. package/lib/public/modules/app-notifications.js +11 -5
  293. package/lib/public/modules/app-panels.js +61 -123
  294. package/lib/public/modules/app-projects.js +14 -407
  295. package/lib/public/modules/app-rate-limit.js +19 -28
  296. package/lib/public/modules/app-rendering.js +4 -3
  297. package/lib/public/modules/avatar.js +15 -41
  298. package/lib/public/modules/chat-render-runtime.js +20 -0
  299. package/lib/public/modules/clay-browser-links.js +47 -0
  300. package/lib/public/modules/clay-control-activity.js +214 -0
  301. package/lib/public/modules/clay-control-copy.js +36 -0
  302. package/lib/public/modules/clay-control-detail-targets.js +44 -0
  303. package/lib/public/modules/clay-control-object-targets.js +52 -0
  304. package/lib/public/modules/clay-control-target-visibility.js +12 -0
  305. package/lib/public/modules/clay-control-targets.js +44 -0
  306. package/lib/public/modules/clay-log-links.js +23 -0
  307. package/lib/public/modules/clay-navigation-render.js +52 -0
  308. package/lib/public/modules/clay-owner-navigation.js +33 -0
  309. package/lib/public/modules/clay-session-links.js +31 -0
  310. package/lib/public/modules/clay-studio-bridge.js +20 -0
  311. package/lib/public/modules/clay-studio-document.js +67 -0
  312. package/lib/public/modules/clay-studio-render.js +146 -0
  313. package/lib/public/modules/clay-tool-activity.js +140 -0
  314. package/lib/public/modules/clay-tool-presentation.js +343 -0
  315. package/lib/public/modules/command-palette.js +162 -40
  316. package/lib/public/modules/contextual-ask-session.js +26 -0
  317. package/lib/public/modules/contextual-clay-geometry.js +155 -0
  318. package/lib/public/modules/contextual-clay-session.js +130 -0
  319. package/lib/public/modules/contextual-clay-workspace.js +169 -0
  320. package/lib/public/modules/contextual-clay.js +252 -0
  321. package/lib/public/modules/contextual-composer.js +91 -0
  322. package/lib/public/modules/contextual-mate-context.js +117 -0
  323. package/lib/public/modules/contextual-mate-hint.js +40 -0
  324. package/lib/public/modules/contextual-mate-identity.js +23 -0
  325. package/lib/public/modules/contextual-mate-sessions.js +134 -0
  326. package/lib/public/modules/contextual-search.js +137 -0
  327. package/lib/public/modules/contextual-session-citations.js +58 -0
  328. package/lib/public/modules/debate.js +1 -0
  329. package/lib/public/modules/default-ai.js +11 -3
  330. package/lib/public/modules/elicitation-form.js +5 -0
  331. package/lib/public/modules/filebrowser.js +20 -1
  332. package/lib/public/modules/generation-stop.js +8 -5
  333. package/lib/public/modules/git-panel.js +3 -1
  334. package/lib/public/modules/github-star.js +66 -0
  335. package/lib/public/modules/history-replay-batch.js +13 -1
  336. package/lib/public/modules/home-debate-live.js +2 -0
  337. package/lib/public/modules/home-debate-planning.js +7 -7
  338. package/lib/public/modules/home-mate-avatar-editor.js +127 -208
  339. package/lib/public/modules/home-mate-chat.js +8 -6
  340. package/lib/public/modules/home-mate-creation.js +73 -1
  341. package/lib/public/modules/home-mate-settings.js +19 -12
  342. package/lib/public/modules/icon-strip-tooltip.js +2 -1
  343. package/lib/public/modules/input.js +88 -10
  344. package/lib/public/modules/issues-render.js +3 -2
  345. package/lib/public/modules/knowledge-db-workbench.js +4 -4
  346. package/lib/public/modules/markdown.js +6 -34
  347. package/lib/public/modules/mate-avatar-catalog.js +97 -0
  348. package/lib/public/modules/mate-knowledge-workbench.js +1 -1
  349. package/lib/public/modules/mate-loading-scene.js +17 -0
  350. package/lib/public/modules/mate-management.js +40 -7
  351. package/lib/public/modules/mcp-connection-view.js +31 -13
  352. package/lib/public/modules/mcp-discovery-view.js +31 -0
  353. package/lib/public/modules/mcp-ui.js +23 -4
  354. package/lib/public/modules/mention.js +3 -0
  355. package/lib/public/modules/message-delivery.js +20 -2
  356. package/lib/public/modules/model-picker.js +2 -0
  357. package/lib/public/modules/pane-activation.js +214 -0
  358. package/lib/public/modules/pane-binding.js +82 -0
  359. package/lib/public/modules/pane-bridge.js +7 -4
  360. package/lib/public/modules/pane-browser-bridge.js +22 -0
  361. package/lib/public/modules/pane-file-bridge.js +4 -0
  362. package/lib/public/modules/pane-issue-bridge.js +4 -1
  363. package/lib/public/modules/pending-message-queue.js +1 -0
  364. package/lib/public/modules/permission-control.js +5 -4
  365. package/lib/public/modules/personal-settings-dialog.js +7 -1
  366. package/lib/public/modules/product-review.js +26 -0
  367. package/lib/public/modules/profile.js +12 -241
  368. package/lib/public/modules/project-access-recovery.js +17 -0
  369. package/lib/public/modules/project-admin-overview.js +21 -0
  370. package/lib/public/modules/project-chat-identity.js +13 -4
  371. package/lib/public/modules/project-logs-render.js +3 -0
  372. package/lib/public/modules/project-mate-creation-workspace.js +13 -4
  373. package/lib/public/modules/project-mate-navigation.js +144 -22
  374. package/lib/public/modules/project-session-visibility-settings.js +19 -16
  375. package/lib/public/modules/project-settings.js +119 -129
  376. package/lib/public/modules/project-start-dialog.js +130 -0
  377. package/lib/public/modules/project-start-folder-state.js +78 -0
  378. package/lib/public/modules/project-start-folder-view.js +190 -0
  379. package/lib/public/modules/project-start-forms.js +66 -0
  380. package/lib/public/modules/project-start-path.js +60 -0
  381. package/lib/public/modules/project-start-state.js +54 -0
  382. package/lib/public/modules/project-start-submit.js +67 -0
  383. package/lib/public/modules/projects-hub-view.js +33 -14
  384. package/lib/public/modules/projects-hub.js +10 -6
  385. package/lib/public/modules/rewind.js +5 -0
  386. package/lib/public/modules/scheduled-tasks.js +2 -0
  387. package/lib/public/modules/scheduler.js +2 -0
  388. package/lib/public/modules/search-clay-chat.js +5 -440
  389. package/lib/public/modules/server-settings.js +36 -91
  390. package/lib/public/modules/session-actions.js +5 -2
  391. package/lib/public/modules/session-context-menu.js +5 -0
  392. package/lib/public/modules/session-create-form.js +10 -10
  393. package/lib/public/modules/session-folder-layout.js +1 -1
  394. package/lib/public/modules/session-folder-view-menu.js +9 -0
  395. package/lib/public/modules/session-github.js +85 -14
  396. package/lib/public/modules/session-rich-drafts.js +21 -0
  397. package/lib/public/modules/session-switch-defer.js +67 -0
  398. package/lib/public/modules/session-work-primary.js +51 -0
  399. package/lib/public/modules/settings-defaults.js +27 -28
  400. package/lib/public/modules/settings-project-target.js +56 -0
  401. package/lib/public/modules/settings-select.js +1 -1
  402. package/lib/public/modules/settings-shell-registry.js +88 -0
  403. package/lib/public/modules/settings-shell-view.js +104 -0
  404. package/lib/public/modules/settings-shell.js +342 -0
  405. package/lib/public/modules/shared-browser-settings.js +112 -0
  406. package/lib/public/modules/shared-browser-tabs.js +13 -3
  407. package/lib/public/modules/shared-browser.js +29 -6
  408. package/lib/public/modules/sidebar-mobile.js +12 -33
  409. package/lib/public/modules/sidebar-projects.js +3 -1
  410. package/lib/public/modules/sidebar-session-folders-ui.js +1 -1
  411. package/lib/public/modules/sidebar-sessions.js +1 -0
  412. package/lib/public/modules/split-group-restore.js +68 -0
  413. package/lib/public/modules/split-pair-ui.js +1 -0
  414. package/lib/public/modules/split-pane-reconciler.js +15 -0
  415. package/lib/public/modules/split-pane-renderer.js +87 -6
  416. package/lib/public/modules/split-session-boundary.js +1 -1
  417. package/lib/public/modules/split-view.js +60 -68
  418. package/lib/public/modules/sticky-note-markdown.js +72 -6
  419. package/lib/public/modules/sticky-notes-actions.js +30 -0
  420. package/lib/public/modules/sticky-notes-browser.js +9 -2
  421. package/lib/public/modules/sticky-notes-card.js +23 -7
  422. package/lib/public/modules/sticky-notes-checklist.js +116 -0
  423. package/lib/public/modules/sticky-notes-editor.js +108 -44
  424. package/lib/public/modules/sticky-notes-shared.js +50 -2
  425. package/lib/public/modules/sticky-notes-state.js +66 -0
  426. package/lib/public/modules/sticky-notes.js +34 -51
  427. package/lib/public/modules/stt-controller.js +4 -1
  428. package/lib/public/modules/stt-recording.js +1 -1
  429. package/lib/public/modules/stt.js +7 -2
  430. package/lib/public/modules/terminal.js +9 -0
  431. package/lib/public/modules/theme.js +18 -3
  432. package/lib/public/modules/thinking-lifecycle.js +33 -3
  433. package/lib/public/modules/thinking-view.js +23 -1
  434. package/lib/public/modules/tools.js +60 -11
  435. package/lib/public/modules/tui-grab.js +1 -2
  436. package/lib/public/modules/user-settings-appearance.js +10 -3
  437. package/lib/public/modules/user-settings-editors.js +1 -1
  438. package/lib/public/modules/user-settings-layout.js +14 -30
  439. package/lib/public/modules/user-settings-preferences.js +6 -2
  440. package/lib/public/modules/user-settings-profile.js +13 -3
  441. package/lib/public/modules/user-settings.js +18 -84
  442. package/lib/public/modules/vendor-login-browser.js +5 -3
  443. package/lib/public/modules/vendor-login.js +2 -2
  444. package/lib/public/modules/vendor-priority.js +15 -1
  445. package/lib/public/modules/vendor-usage-format.js +93 -0
  446. package/lib/public/modules/vendor-usage-list.js +45 -0
  447. package/lib/public/modules/vendor-usage-model.js +215 -0
  448. package/lib/public/modules/vendor-usage-overview.js +312 -0
  449. package/lib/public/modules/wireframe-workbench.js +5 -2
  450. package/lib/public/muse-avatar.svg +4 -0
  451. package/lib/public/style.css +14 -6
  452. package/lib/public/sw.js +3 -1
  453. package/lib/public/welcome-art/conversation-desk.png +0 -0
  454. package/lib/public/welcome-art/mate-clay.png +0 -0
  455. package/lib/public/welcome-art/project-clay.png +0 -0
  456. package/lib/safe-bash-commands.js +3 -45
  457. package/lib/scheduled-task-records.js +3 -1
  458. package/lib/scheduler.js +2 -0
  459. package/lib/sdk-bridge.js +348 -402
  460. package/lib/sdk-foreground-admission.js +16 -0
  461. package/lib/sdk-mcp-descriptors.js +2 -37
  462. package/lib/sdk-message-processor.js +61 -18
  463. package/lib/sdk-quota-snapshot.js +21 -3
  464. package/lib/sdk-response-recovery.js +1 -0
  465. package/lib/sdk-worker.js +2 -677
  466. package/lib/server-admin.js +63 -16
  467. package/lib/server-appearance-settings.js +13 -1
  468. package/lib/server-contextual-clay-settings.js +40 -0
  469. package/lib/server-contextual-mate-sessions.js +70 -0
  470. package/lib/server-dm.js +2 -1
  471. package/lib/server-github-stars.js +39 -0
  472. package/lib/server-global-ws.js +26 -32
  473. package/lib/server-home-chat-events.js +18 -4
  474. package/lib/server-home-chat.js +22 -20
  475. package/lib/server-home-clay-entry.js +23 -4
  476. package/lib/server-home-clay-session-links.js +29 -9
  477. package/lib/server-home-mate-creation.js +1 -0
  478. package/lib/server-home-mcp-consent.js +14 -0
  479. package/lib/server-mates.js +25 -62
  480. package/lib/server-owner-ui.js +118 -0
  481. package/lib/server-path-access.js +38 -0
  482. package/lib/server-project-removal.js +22 -0
  483. package/lib/server-settings.js +6 -1
  484. package/lib/server.js +167 -43
  485. package/lib/session-config-transition.js +45 -0
  486. package/lib/session-folders.js +7 -2
  487. package/lib/session-fork-history.js +21 -0
  488. package/lib/session-github.js +9 -2
  489. package/lib/session-hygiene.js +3 -35
  490. package/lib/session-notes-mcp-server.js +26 -4
  491. package/lib/session-notes-writes.js +88 -0
  492. package/lib/session-permission-mode.js +4 -3
  493. package/lib/session-skill-scope.js +11 -0
  494. package/lib/session-visibility.js +25 -10
  495. package/lib/session-work-primary.js +50 -0
  496. package/lib/sessions.js +66 -99
  497. package/lib/shared-browser-cookie-sync.js +32 -0
  498. package/lib/shared-browser-cookies.js +79 -0
  499. package/lib/shared-browser-runtime.js +25 -9
  500. package/lib/shared-browser-storage-sync.js +43 -0
  501. package/lib/shared-browser-storage.js +101 -0
  502. package/lib/shared-browser-tools.js +2 -1
  503. package/lib/shared-browser-worker.js +46 -10
  504. package/lib/terminal-manager.js +65 -6
  505. package/lib/tool-llm.js +1 -1
  506. package/lib/tui-transcript-index.js +1 -132
  507. package/lib/users-contextual-clay-preferences.js +31 -0
  508. package/lib/users-permissions.js +2 -8
  509. package/lib/users.js +7 -0
  510. package/lib/vendor-login-browser.js +1 -11
  511. package/lib/vendor-usage-acp-readers.js +97 -0
  512. package/lib/vendor-usage-capabilities.js +88 -0
  513. package/lib/vendor-usage-http-readers.js +214 -0
  514. package/lib/vendor-usage-metrics.js +47 -0
  515. package/lib/vendor-usage-native-readers.js +106 -0
  516. package/lib/vendor-usage-overview.js +406 -0
  517. package/lib/vendor-usage-service.js +281 -0
  518. package/lib/workspace-assignment-service.js +25 -0
  519. package/lib/workspace-query-access.js +4 -1
  520. package/lib/workspace-query-mcp-server.js +1 -1
  521. package/lib/workspace-query-service.js +13 -2
  522. package/lib/ws-request.js +1 -0
  523. package/lib/ws-schema.js +22 -4
  524. package/lib/yoke/acp-agent-profiles.js +7 -5
  525. package/lib/yoke/adapters/antigravity.js +3 -14
  526. package/lib/yoke/adapters/claude-query-contract.js +9 -0
  527. package/lib/yoke/adapters/claude.js +66 -50
  528. package/lib/yoke/adapters/codex-query-contract.js +25 -0
  529. package/lib/yoke/adapters/codex.js +98 -123
  530. package/lib/yoke/adapters/kiro.js +3 -1
  531. package/lib/yoke/adapters/muse-query-contract.js +7 -0
  532. package/lib/yoke/adapters/muse.js +122 -0
  533. package/lib/yoke/auth-events.js +17 -0
  534. package/lib/yoke/claude-hook-installer.js +272 -0
  535. package/lib/yoke/claude-jsonl-watcher.js +204 -0
  536. package/lib/yoke/claude-maintenance.js +55 -0
  537. package/lib/yoke/claude-permission-patterns.js +53 -0
  538. package/lib/yoke/claude-response-recovery.js +155 -0
  539. package/lib/yoke/claude-transcript-hygiene.js +34 -0
  540. package/lib/yoke/claude-worker-startup.js +28 -0
  541. package/lib/yoke/clay-skill-install.js +33 -0
  542. package/lib/yoke/cli-sessions.js +300 -0
  543. package/lib/yoke/codex-app-server.js +7 -12
  544. package/lib/yoke/codex-dynamic-tool-names.js +80 -0
  545. package/lib/yoke/codex-idle-recovery.js +81 -1
  546. package/lib/yoke/codex-model-catalog.js +37 -3
  547. package/lib/yoke/codex-recovery-admission.js +164 -0
  548. package/lib/yoke/configuration.js +13 -0
  549. package/lib/yoke/discovery.js +70 -0
  550. package/lib/yoke/errors.js +8 -0
  551. package/lib/yoke/host-environment.js +7 -0
  552. package/lib/yoke/index.js +9 -51
  553. package/lib/yoke/interface.js +116 -0
  554. package/lib/yoke/kiro-acp-server.js +5 -5
  555. package/lib/yoke/legacy-sessions.js +89 -0
  556. package/lib/yoke/login-protocol.js +25 -0
  557. package/lib/yoke/maintenance.js +12 -0
  558. package/lib/yoke/mcp-proxy.js +32 -0
  559. package/lib/yoke/mcp-source-adapters.js +91 -0
  560. package/lib/yoke/mcp-source-context.js +42 -0
  561. package/lib/yoke/mcp-source-discovery.js +169 -0
  562. package/lib/yoke/mcp-source-plugins.js +68 -0
  563. package/lib/yoke/mcp-source-restrictions.js +47 -0
  564. package/lib/yoke/mcp-tool-policy-normalize.js +28 -0
  565. package/lib/yoke/model-preferences.js +6 -0
  566. package/lib/yoke/muse-artifacts.js +36 -0
  567. package/lib/yoke/muse-controls.js +50 -0
  568. package/lib/yoke/muse-input.js +64 -0
  569. package/lib/yoke/muse-items.js +157 -0
  570. package/lib/yoke/muse-policy.js +52 -0
  571. package/lib/yoke/muse-query.js +428 -0
  572. package/lib/yoke/muse-runtime.js +211 -0
  573. package/lib/yoke/muse-services.js +92 -0
  574. package/lib/yoke/muse-skills.js +79 -0
  575. package/lib/yoke/muse-turns.js +71 -0
  576. package/lib/yoke/options/acp.js +2 -0
  577. package/lib/yoke/options/antigravity.js +2 -0
  578. package/lib/yoke/options/claude.js +21 -0
  579. package/lib/yoke/options/codex-defaults.js +29 -0
  580. package/lib/yoke/options/codex-settings.js +21 -0
  581. package/lib/yoke/options/codex.js +6 -0
  582. package/lib/yoke/options/kiro-defaults.js +22 -0
  583. package/lib/yoke/options/kiro.js +5 -0
  584. package/lib/yoke/options/muse.js +5 -0
  585. package/lib/yoke/provider-contract.js +5 -0
  586. package/lib/yoke/providers/antigravity-executable.js +8 -0
  587. package/lib/yoke/providers/claude-executable.js +40 -0
  588. package/lib/yoke/providers/claude-model-descriptions.js +34 -0
  589. package/lib/yoke/providers/claude-process.js +97 -0
  590. package/lib/yoke/providers/claude-provision.js +75 -0
  591. package/lib/yoke/providers/codex-errors.js +8 -0
  592. package/lib/yoke/providers/muse-executable.js +17 -0
  593. package/lib/yoke/provisioning.js +6 -0
  594. package/lib/yoke/query-options.js +10 -0
  595. package/lib/yoke/response-recovery.js +41 -0
  596. package/lib/yoke/sdk-mcp-descriptors.js +37 -0
  597. package/lib/yoke/sdk-server-factory.js +7 -0
  598. package/lib/yoke/session-history.js +8 -0
  599. package/lib/yoke/session-tool-transport.js +34 -13
  600. package/lib/yoke/settings.js +23 -0
  601. package/lib/yoke/source-locations.js +4 -0
  602. package/lib/yoke/title-query.js +18 -7
  603. package/lib/yoke/tui-transcript-index.js +132 -0
  604. package/lib/yoke/usage.js +48 -0
  605. package/lib/yoke/user-input.js +13 -0
  606. package/lib/yoke/vendor-registry.js +87 -3
  607. package/package.json +11 -4
  608. package/lib/public/modules/server-settings-navigation.js +0 -39
@@ -0,0 +1,482 @@
1
+ [
2
+ {
3
+ "id": "B01",
4
+ "family": "B",
5
+ "name": "Indigo Cyclops"
6
+ },
7
+ {
8
+ "id": "B02",
9
+ "family": "B",
10
+ "name": "Coral Sentinel"
11
+ },
12
+ {
13
+ "id": "B03",
14
+ "family": "B",
15
+ "name": "Golden Visor"
16
+ },
17
+ {
18
+ "id": "B04",
19
+ "family": "B",
20
+ "name": "Mint Wide Eyes"
21
+ },
22
+ {
23
+ "id": "B05",
24
+ "family": "B",
25
+ "name": "Ivory Grin"
26
+ },
27
+ {
28
+ "id": "B06",
29
+ "family": "B",
30
+ "name": "Blue Teardrop"
31
+ },
32
+ {
33
+ "id": "B07",
34
+ "family": "B",
35
+ "name": "Peach Orbit"
36
+ },
37
+ {
38
+ "id": "B08",
39
+ "family": "B",
40
+ "name": "Lilac Sleeper"
41
+ },
42
+ {
43
+ "id": "B09",
44
+ "family": "B",
45
+ "name": "Coral Prism"
46
+ },
47
+ {
48
+ "id": "B10",
49
+ "family": "B",
50
+ "name": "Mint Spring"
51
+ },
52
+ {
53
+ "id": "B11",
54
+ "family": "B",
55
+ "name": "Golden Pebbles"
56
+ },
57
+ {
58
+ "id": "B12",
59
+ "family": "B",
60
+ "name": "Periwinkle Orbit"
61
+ },
62
+ {
63
+ "id": "B13",
64
+ "family": "B",
65
+ "name": "Coral Horizon"
66
+ },
67
+ {
68
+ "id": "B14",
69
+ "family": "B",
70
+ "name": "Indigo Stack"
71
+ },
72
+ {
73
+ "id": "B15",
74
+ "family": "B",
75
+ "name": "Mint Button Box"
76
+ },
77
+ {
78
+ "id": "B16",
79
+ "family": "B",
80
+ "name": "Golden Curve"
81
+ },
82
+ {
83
+ "id": "B17",
84
+ "family": "B",
85
+ "name": "Loop Listener"
86
+ },
87
+ {
88
+ "id": "B18",
89
+ "family": "B",
90
+ "name": "Blue Twin Antenna"
91
+ },
92
+ {
93
+ "id": "B19",
94
+ "family": "B",
95
+ "name": "Lilac Daydream"
96
+ },
97
+ {
98
+ "id": "B20",
99
+ "family": "B",
100
+ "name": "Coral Toothsome"
101
+ },
102
+ {
103
+ "id": "B21",
104
+ "family": "B",
105
+ "name": "Ivory Satellite"
106
+ },
107
+ {
108
+ "id": "B22",
109
+ "family": "B",
110
+ "name": "Mint Coil"
111
+ },
112
+ {
113
+ "id": "B23",
114
+ "family": "B",
115
+ "name": "Golden Wonder"
116
+ },
117
+ {
118
+ "id": "B24",
119
+ "family": "B",
120
+ "name": "Slate Smile"
121
+ },
122
+ {
123
+ "id": "B25",
124
+ "family": "B",
125
+ "name": "Lilac Shield"
126
+ },
127
+ {
128
+ "id": "B26",
129
+ "family": "B",
130
+ "name": "Mint Diamond"
131
+ },
132
+ {
133
+ "id": "B27",
134
+ "family": "B",
135
+ "name": "Coral Pebble"
136
+ },
137
+ {
138
+ "id": "B28",
139
+ "family": "B",
140
+ "name": "Golden Horns"
141
+ },
142
+ {
143
+ "id": "B29",
144
+ "family": "B",
145
+ "name": "Blue Trio"
146
+ },
147
+ {
148
+ "id": "B30",
149
+ "family": "B",
150
+ "name": "Ivory Tower"
151
+ },
152
+ {
153
+ "id": "B31",
154
+ "family": "B",
155
+ "name": "Charcoal Grin"
156
+ },
157
+ {
158
+ "id": "B32",
159
+ "family": "B",
160
+ "name": "Teal Cheer"
161
+ },
162
+ {
163
+ "id": "B33",
164
+ "family": "B",
165
+ "name": "Rose Satellite"
166
+ },
167
+ {
168
+ "id": "B34",
169
+ "family": "B",
170
+ "name": "Blue Spool"
171
+ },
172
+ {
173
+ "id": "B35",
174
+ "family": "B",
175
+ "name": "Golden Band"
176
+ },
177
+ {
178
+ "id": "B36",
179
+ "family": "B",
180
+ "name": "Mint Beacon"
181
+ },
182
+ {
183
+ "id": "B37",
184
+ "family": "B",
185
+ "name": "Charcoal Crescent"
186
+ },
187
+ {
188
+ "id": "B38",
189
+ "family": "B",
190
+ "name": "Coral Cyclops"
191
+ },
192
+ {
193
+ "id": "B39",
194
+ "family": "B",
195
+ "name": "Blue Scout"
196
+ },
197
+ {
198
+ "id": "B40",
199
+ "family": "B",
200
+ "name": "Ivory Navigator"
201
+ },
202
+ {
203
+ "id": "B41",
204
+ "family": "B",
205
+ "name": "Golden Porthole"
206
+ },
207
+ {
208
+ "id": "B42",
209
+ "family": "B",
210
+ "name": "Lilac Windup"
211
+ },
212
+ {
213
+ "id": "B43",
214
+ "family": "B",
215
+ "name": "Mint Receiver"
216
+ },
217
+ {
218
+ "id": "B44",
219
+ "family": "B",
220
+ "name": "Coral Stack"
221
+ },
222
+ {
223
+ "id": "B45",
224
+ "family": "B",
225
+ "name": "Indigo Porthole"
226
+ },
227
+ {
228
+ "id": "B46",
229
+ "family": "B",
230
+ "name": "Stone Sprout"
231
+ },
232
+ {
233
+ "id": "B47",
234
+ "family": "B",
235
+ "name": "Mint Sunbeam"
236
+ },
237
+ {
238
+ "id": "B48",
239
+ "family": "B",
240
+ "name": "Golden Cubby"
241
+ },
242
+ {
243
+ "id": "C01",
244
+ "family": "C",
245
+ "name": "Violet Smile"
246
+ },
247
+ {
248
+ "id": "C02",
249
+ "family": "C",
250
+ "name": "Apricot Joy"
251
+ },
252
+ {
253
+ "id": "C03",
254
+ "family": "C",
255
+ "name": "Sage Curious"
256
+ },
257
+ {
258
+ "id": "C04",
259
+ "family": "C",
260
+ "name": "Golden Wink"
261
+ },
262
+ {
263
+ "id": "C05",
264
+ "family": "C",
265
+ "name": "Blue Sideglance"
266
+ },
267
+ {
268
+ "id": "C06",
269
+ "family": "C",
270
+ "name": "Charcoal Wonder"
271
+ },
272
+ {
273
+ "id": "C07",
274
+ "family": "C",
275
+ "name": "Lilac Specs"
276
+ },
277
+ {
278
+ "id": "C08",
279
+ "family": "C",
280
+ "name": "Coral Giggle"
281
+ },
282
+ {
283
+ "id": "C09",
284
+ "family": "C",
285
+ "name": "Mint Blush"
286
+ },
287
+ {
288
+ "id": "C10",
289
+ "family": "C",
290
+ "name": "Golden Button"
291
+ },
292
+ {
293
+ "id": "C11",
294
+ "family": "C",
295
+ "name": "Sky Smile"
296
+ },
297
+ {
298
+ "id": "C12",
299
+ "family": "C",
300
+ "name": "Plum Joy"
301
+ },
302
+ {
303
+ "id": "C13",
304
+ "family": "C",
305
+ "name": "Teal Diamond"
306
+ },
307
+ {
308
+ "id": "C14",
309
+ "family": "C",
310
+ "name": "Peach Dimple"
311
+ },
312
+ {
313
+ "id": "C15",
314
+ "family": "C",
315
+ "name": "Indigo Delight"
316
+ },
317
+ {
318
+ "id": "C16",
319
+ "family": "C",
320
+ "name": "Sage Sprout"
321
+ },
322
+ {
323
+ "id": "C17",
324
+ "family": "C",
325
+ "name": "Golden Specs"
326
+ },
327
+ {
328
+ "id": "C18",
329
+ "family": "C",
330
+ "name": "Lilac Stargaze"
331
+ },
332
+ {
333
+ "id": "C19",
334
+ "family": "C",
335
+ "name": "Blue Curiosity"
336
+ },
337
+ {
338
+ "id": "C20",
339
+ "family": "C",
340
+ "name": "Coral Heart"
341
+ },
342
+ {
343
+ "id": "C21",
344
+ "family": "C",
345
+ "name": "Mint Bud"
346
+ },
347
+ {
348
+ "id": "C22",
349
+ "family": "C",
350
+ "name": "Ivory Surprise"
351
+ },
352
+ {
353
+ "id": "C23",
354
+ "family": "C",
355
+ "name": "Rose Wink"
356
+ },
357
+ {
358
+ "id": "C24",
359
+ "family": "C",
360
+ "name": "Sky Giggle"
361
+ },
362
+ {
363
+ "id": "C25",
364
+ "family": "C",
365
+ "name": "Ivory Dreamer"
366
+ },
367
+ {
368
+ "id": "C26",
369
+ "family": "C",
370
+ "name": "Mint Loop"
371
+ },
372
+ {
373
+ "id": "C27",
374
+ "family": "C",
375
+ "name": "Violet Glasses"
376
+ },
377
+ {
378
+ "id": "C28",
379
+ "family": "C",
380
+ "name": "Coral Sunshine"
381
+ },
382
+ {
383
+ "id": "C29",
384
+ "family": "C",
385
+ "name": "Slate Sideglance"
386
+ },
387
+ {
388
+ "id": "C30",
389
+ "family": "C",
390
+ "name": "Golden Dimple"
391
+ },
392
+ {
393
+ "id": "C31",
394
+ "family": "C",
395
+ "name": "Teal Listener"
396
+ },
397
+ {
398
+ "id": "C32",
399
+ "family": "C",
400
+ "name": "Peach Cheer"
401
+ },
402
+ {
403
+ "id": "C33",
404
+ "family": "C",
405
+ "name": "Indigo Blush"
406
+ },
407
+ {
408
+ "id": "C34",
409
+ "family": "C",
410
+ "name": "Sage Daydream"
411
+ },
412
+ {
413
+ "id": "C35",
414
+ "family": "C",
415
+ "name": "Rose Wonder"
416
+ },
417
+ {
418
+ "id": "C36",
419
+ "family": "C",
420
+ "name": "Sky Blush"
421
+ },
422
+ {
423
+ "id": "C37",
424
+ "family": "C",
425
+ "name": "Peach Heart"
426
+ },
427
+ {
428
+ "id": "C38",
429
+ "family": "C",
430
+ "name": "Blue Button"
431
+ },
432
+ {
433
+ "id": "C39",
434
+ "family": "C",
435
+ "name": "Lilac Wink"
436
+ },
437
+ {
438
+ "id": "C40",
439
+ "family": "C",
440
+ "name": "Mint Dish"
441
+ },
442
+ {
443
+ "id": "C41",
444
+ "family": "C",
445
+ "name": "Ivory Wonder"
446
+ },
447
+ {
448
+ "id": "C42",
449
+ "family": "C",
450
+ "name": "Violet Cheer"
451
+ },
452
+ {
453
+ "id": "C43",
454
+ "family": "C",
455
+ "name": "Rose Specs"
456
+ },
457
+ {
458
+ "id": "C44",
459
+ "family": "C",
460
+ "name": "Teal Delight"
461
+ },
462
+ {
463
+ "id": "C45",
464
+ "family": "C",
465
+ "name": "Golden Diamond"
466
+ },
467
+ {
468
+ "id": "C46",
469
+ "family": "C",
470
+ "name": "Lilac Surprise"
471
+ },
472
+ {
473
+ "id": "C47",
474
+ "family": "C",
475
+ "name": "Sage Listener"
476
+ },
477
+ {
478
+ "id": "C48",
479
+ "family": "C",
480
+ "name": "Coral Crown"
481
+ }
482
+ ]
@@ -1,7 +1,7 @@
1
1
  import { store } from './store.js';
2
2
  import { iconHtml, refreshIcons } from './icons.js';
3
3
  import { showToast, copyToClipboard, escapeHtml } from './utils.js';
4
- import { apiGet, apiPost, apiPut, apiDelete, showConfirmDialog, showConfirmResetPin, prepareAdminModal } from './admin-settings-ui.js';
4
+ import { apiGet, apiPost, apiPut, apiDelete, showConfirmDialog, showConfirmResetPin, prepareAdminModal, mountAdminSubview } from './admin-settings-ui.js';
5
5
  // --- Invites ---
6
6
  export function loadInvitesTab(body) {
7
7
  apiGet("/api/admin/invites").then(function (data) {
@@ -138,7 +138,7 @@ function showEmailInvitePrompt(body) {
138
138
  '<button class="admin-modal-cancel">Cancel</button>' +
139
139
  '</div></div>';
140
140
  modal.innerHTML = html;
141
- document.body.appendChild(modal);
141
+ mountAdminSubview(modal);
142
142
  prepareAdminModal(modal);
143
143
  refreshIcons(modal);
144
144
 
@@ -1,7 +1,7 @@
1
1
  import { store } from './store.js';
2
2
  import { iconHtml, refreshIcons } from './icons.js';
3
3
  import { showToast, copyToClipboard, escapeHtml } from './utils.js';
4
- import { apiGet, apiPost, apiPut, apiDelete, showConfirmDialog, showConfirmResetPin, prepareAdminModal } from './admin-settings-ui.js';
4
+ import { apiGet, apiPost, apiPut, apiDelete, showConfirmDialog, showConfirmResetPin, prepareAdminModal, mountAdminSubview } from './admin-settings-ui.js';
5
5
  // --- Projects ---
6
6
  export function loadProjectsTab(body) {
7
7
  var projectList = store.get('projectsHubList') || [];
@@ -16,7 +16,7 @@ export function loadProjectsTab(body) {
16
16
 
17
17
  var accessPromises = projectList.map(function (p) {
18
18
  return apiGet("/api/admin/projects/" + p.slug + "/access").then(function (access) {
19
- return { slug: p.slug, title: p.title || p.project || p.slug, projectOwnerId: p.projectOwnerId || null, visibility: access.visibility || "public", allowedUsers: access.allowedUsers || [] };
19
+ return { slug: p.slug, title: p.title || p.project || p.slug, projectOwnerId: p.projectOwnerId || null, visibility: access.visibility || "public", allowedUsers: access.allowedUsers || [], readOnly: access.contentAccess === false || p.projectOwnerId !== store.get("myUserId") };
20
20
  });
21
21
  });
22
22
 
@@ -39,9 +39,13 @@ function renderProjectsTab(body, projectAccessList, allUsers) {
39
39
  html += '<div class="admin-project-slug">' + escapeHtml(p.slug) + '</div>';
40
40
  html += '</div>';
41
41
  html += '<div class="admin-project-controls">';
42
+ if (p.readOnly) {
43
+ html += '<span class="admin-project-access-readonly">Administrative metadata only</span></div></div>';
44
+ continue;
45
+ }
42
46
  // Owner select
43
47
  html += '<select aria-label="Project owner" class="admin-owner-select" data-slug="' + escapeHtml(p.slug) + '">';
44
- html += '<option value=""' + (!p.projectOwnerId ? ' selected' : '') + '>No owner</option>';
48
+ if (!p.projectOwnerId) html += '<option value="" selected disabled>Ownership needs recovery</option>';
45
49
  for (var u = 0; u < allUsers.length; u++) {
46
50
  var user = allUsers[u];
47
51
  var sel = p.projectOwnerId === user.id ? ' selected' : '';
@@ -164,7 +168,7 @@ function showProjectUsersModal(slug, parentBody) {
164
168
  html += '</div>';
165
169
 
166
170
  modal.innerHTML = html;
167
- document.body.appendChild(modal);
171
+ mountAdminSubview(modal);
168
172
  prepareAdminModal(modal);
169
173
  refreshIcons(modal);
170
174
 
@@ -14,13 +14,29 @@ export function apiPost(url, body) { return request(url, 'POST', body || {}); }
14
14
  export function apiPut(url, body) { return request(url, 'PUT', body); }
15
15
  export function apiDelete(url) { return request(url, 'DELETE'); }
16
16
 
17
+ // Editors open inline in the active Server settings page (a subview with its
18
+ // own Back/Cancel path) instead of over the page. Only destructive
19
+ // confirmations remain overlay dialogs.
20
+ export function mountAdminSubview(modal) {
21
+ var host = document.querySelector('#server-settings .server-settings-section.active');
22
+ if (!host) { document.body.appendChild(modal); return; }
23
+ modal.className = 'admin-subview settings-subview';
24
+ host.classList.add('has-subview');
25
+ host.appendChild(modal);
26
+ var observer = new MutationObserver(function () {
27
+ if (!host.querySelector('.settings-subview')) { host.classList.remove('has-subview'); observer.disconnect(); }
28
+ });
29
+ observer.observe(host, { childList: true });
30
+ }
31
+
17
32
  export function prepareAdminModal(modal) {
18
33
  if (modal.dataset.prepared) return;
19
34
  modal.dataset.prepared = 'true';
20
35
  var previous = document.activeElement;
21
- var restore = isolateSettingsDialog(modal);
36
+ var inline = modal.classList.contains('settings-subview');
37
+ var restore = inline ? function () {} : isolateSettingsDialog(modal);
22
38
  var dialog = modal.querySelector('.admin-modal');
23
- dialog.setAttribute('role', 'dialog'); dialog.setAttribute('aria-modal', 'true');
39
+ dialog.setAttribute('role', inline ? 'region' : 'dialog'); if (!inline) dialog.setAttribute('aria-modal', 'true');
24
40
  var title = dialog.querySelector('h3'); dialog.setAttribute('aria-label', title ? title.textContent : 'Confirm action');
25
41
  var dirty = false;
26
42
  modal.addEventListener('input', function () { dirty = true; });
@@ -37,7 +53,7 @@ export function prepareAdminModal(modal) {
37
53
  modal.addEventListener('keydown', function (event) {
38
54
  event.stopPropagation();
39
55
  if (event.key === 'Escape') { event.preventDefault(); if (dirty) cancel(event); else modal.remove(); }
40
- trapSettingsFocus(event, modal);
56
+ if (!inline) trapSettingsFocus(event, modal);
41
57
  });
42
58
  modal.querySelectorAll('.admin-smtp-row').forEach(function (row) {
43
59
  var label = row.querySelector('label'); var input = row.querySelector('input, select');
@@ -49,7 +65,7 @@ export function prepareAdminModal(modal) {
49
65
  var closeObserver = new MutationObserver(function () {
50
66
  if (!modal.isConnected) { closeObserver.disconnect(); restore(); if (previous && previous.isConnected) previous.focus(); }
51
67
  });
52
- closeObserver.observe(document.body, { childList: true });
68
+ closeObserver.observe(inline ? modal.parentElement : document.body, { childList: true });
53
69
  var focus = modal.querySelector('input:not([type=hidden]), .admin-modal-cancel, button');
54
70
  if (focus) focus.focus();
55
71
  }
@@ -1,7 +1,7 @@
1
1
  import { store } from './store.js';
2
2
  import { iconHtml, refreshIcons } from './icons.js';
3
3
  import { showToast, copyToClipboard, escapeHtml } from './utils.js';
4
- import { apiGet, apiPost, apiPut, apiDelete, showConfirmDialog, showConfirmResetPin, prepareAdminModal } from './admin-settings-ui.js';
4
+ import { apiGet, apiPost, apiPut, apiDelete, showConfirmDialog, showConfirmResetPin, prepareAdminModal, mountAdminSubview } from './admin-settings-ui.js';
5
5
  // --- Users ---
6
6
  export function loadUsersTab(body) {
7
7
  apiGet("/api/admin/users").then(function (data) {
@@ -163,7 +163,7 @@ function showPermissionsModal(user, body) {
163
163
  '</div></div>';
164
164
 
165
165
  modal.innerHTML = html;
166
- document.body.appendChild(modal);
166
+ mountAdminSubview(modal);
167
167
  prepareAdminModal(modal);
168
168
  refreshIcons(modal);
169
169
 
@@ -222,7 +222,7 @@ function showAddUserModal(body) {
222
222
  '<button class="admin-modal-cancel">Cancel</button>' +
223
223
  '</div></div>';
224
224
  modal.innerHTML = html;
225
- document.body.appendChild(modal);
225
+ mountAdminSubview(modal);
226
226
  prepareAdminModal(modal);
227
227
  refreshIcons(modal);
228
228
 
@@ -299,7 +299,7 @@ function showTempPinModal(user, tempPin) {
299
299
  '<button class="admin-modal-cancel">Close</button>' +
300
300
  '</div></div>';
301
301
  modal.innerHTML = html;
302
- document.body.appendChild(modal);
302
+ mountAdminSubview(modal);
303
303
  prepareAdminModal(modal);
304
304
  refreshIcons(modal);
305
305
 
@@ -1,3 +1,4 @@
1
+ import { leaveRevokedProject, reconnectDestination } from './project-access-recovery.js';
1
2
  // app-connection.js - WebSocket connection, reconnect, status
2
3
  // Extracted from app.js (PR-22)
3
4
 
@@ -25,6 +26,7 @@ import { clearMcpPermissionModePending } from './mcp-ui.js';
25
26
  import { createWebSocketLifecycle } from './websocket-lifecycle.js';
26
27
  import { createWebSocketWatchdog } from './websocket-watchdog.js';
27
28
  import { resetHistoryReplayBatch } from './history-replay-batch.js';
29
+ import { paneOutgoing } from './pane-activation.js';
28
30
 
29
31
  var connectOverlay = null;
30
32
  var hasConnectedOnce = false;
@@ -355,6 +357,7 @@ export function connect() {
355
357
  console.log("[clay] WebSocket reconnected after " + (Date.now() - disconnectedAt) + "ms");
356
358
  }
357
359
  disconnectedAt = 0;
360
+ newWs.send(JSON.stringify({ type: "clay_ui_ready", version: 1 }));
358
361
  setStatus("connected");
359
362
  startHeartbeat(newWs, attemptEpoch);
360
363
  lifecycle.clearRetry();
@@ -369,6 +372,8 @@ export function connect() {
369
372
  var currentWs = getWs();
370
373
  var _origSend = currentWs.send.bind(currentWs);
371
374
  currentWs.send = function (data) {
375
+ data = paneOutgoing(data);
376
+ if (data === null) return false;
372
377
  blinkIO();
373
378
  return _origSend(data);
374
379
  };
@@ -460,7 +465,12 @@ export function scheduleReconnect(reason) {
460
465
  location.reload();
461
466
  return;
462
467
  }
463
- connect();
468
+ return res.json().then(function (info) {
469
+ if (!lifecycle.canProceed(authEpoch)) return;
470
+ var destination = reconnectDestination(info, store.get('currentSlug'));
471
+ if (destination) { leaveRevokedProject(destination); return; }
472
+ connect();
473
+ });
464
474
  }).catch(function () {
465
475
  var authFinished = lifecycle.finishAuth(authEpoch, authToken);
466
476
  if (authFinished && lifecycle.canProceed(authEpoch)) connect();