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

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 (552) hide show
  1. package/lib/account-auth-socket.js +1 -0
  2. package/lib/builtin-mates.js +19 -16
  3. package/lib/bundled-skills/clay-agent-browser/SKILL.md +6 -2
  4. package/lib/canonical-clay-record-authority.js +15 -0
  5. package/lib/canonical-clay-scheduling-authority.js +19 -0
  6. package/lib/claude-hook-installer.js +1 -239
  7. package/lib/claude-jsonl-watcher.js +1 -204
  8. package/lib/clay-control-presentation-binding.js +96 -0
  9. package/lib/clay-control-presentation.js +128 -0
  10. package/lib/clay-control-target-projection.js +26 -0
  11. package/lib/clay-mate-chat-receipts.js +26 -0
  12. package/lib/clay-mate-chat.js +88 -0
  13. package/lib/clay-mate-knowledge-input.js +26 -0
  14. package/lib/clay-mate-knowledge.js +95 -0
  15. package/lib/clay-mate-lifecycle.js +95 -0
  16. package/lib/clay-product-control-input.js +33 -0
  17. package/lib/clay-product-control-tools.js +51 -0
  18. package/lib/clay-product-control.js +247 -0
  19. package/lib/clay-project-lifecycle.js +154 -0
  20. package/lib/clay-project-record-input.js +44 -0
  21. package/lib/clay-project-records.js +84 -0
  22. package/lib/clay-scheduling-input.js +21 -0
  23. package/lib/clay-scheduling-receipts.js +26 -0
  24. package/lib/clay-scheduling.js +119 -0
  25. package/lib/clay-screen-controls.js +104 -0
  26. package/lib/clay-skill-install.js +1 -33
  27. package/lib/clay-workspace-controls.js +84 -0
  28. package/lib/clay-workspace-input.js +17 -0
  29. package/lib/clay-workspace-receipts.js +26 -0
  30. package/lib/cli-sessions.js +1 -300
  31. package/lib/codex-defaults.js +1 -28
  32. package/lib/context-usage.js +3 -2
  33. package/lib/contextual-screen-snapshot.js +38 -0
  34. package/lib/daemon-project-access.js +11 -0
  35. package/lib/daemon-project-lifecycle-callbacks.js +15 -0
  36. package/lib/daemon-project-lifecycle.js +262 -0
  37. package/lib/daemon-projects.js +1 -1
  38. package/lib/daemon.js +78 -276
  39. package/lib/default-ai-runtime.js +4 -8
  40. package/lib/dm-digest-cursor.js +120 -0
  41. package/lib/email-mcp-server.js +1 -1
  42. package/lib/issues-service.js +29 -15
  43. package/lib/kiro-defaults.js +1 -22
  44. package/lib/knowledge-db-import-validation.js +46 -0
  45. package/lib/knowledge-db-import.js +99 -0
  46. package/lib/knowledge-db-service.js +24 -33
  47. package/lib/knowledge-db-storage-nedb-maintenance.js +99 -0
  48. package/lib/knowledge-db-storage-nedb.js +66 -0
  49. package/lib/knowledge-db-storage.js +72 -0
  50. package/lib/knowledge-db-validation.js +0 -0
  51. package/lib/knowledge-document-index.js +2 -1
  52. package/lib/knowledge-file-store.js +7 -1
  53. package/lib/knowledge-product-operations.js +46 -0
  54. package/lib/mate-avatar-catalog.js +12 -0
  55. package/lib/mate-avatar-migration.js +41 -0
  56. package/lib/mate-context-service.js +138 -0
  57. package/lib/mate-context-tools.js +21 -0
  58. package/lib/mate-creation-mcp-server.js +2 -0
  59. package/lib/mate-knowledge-canonical-access.js +10 -0
  60. package/lib/mate-knowledge-mate-bound.js +53 -0
  61. package/lib/mate-knowledge-mcp-server.js +55 -8
  62. package/lib/mate-knowledge-service.js +16 -34
  63. package/lib/mate-knowledge-text-tools.js +106 -0
  64. package/lib/mate-lifecycle-service.js +94 -0
  65. package/lib/mate-message-delivery.js +43 -0
  66. package/lib/mate-ready-creation.js +9 -1
  67. package/lib/mate-schedule-input.js +29 -0
  68. package/lib/mate-schedule-lifecycle.js +151 -0
  69. package/lib/mate-scheduling.js +103 -0
  70. package/lib/mates.js +18 -6
  71. package/lib/mcp-agent-tools.js +117 -0
  72. package/lib/mcp-connection-store.js +119 -15
  73. package/lib/mcp-import-credentials.js +31 -0
  74. package/lib/mcp-local-transport.js +13 -0
  75. package/lib/mcp-oauth.js +8 -6
  76. package/lib/mcp-proxy.js +2 -32
  77. package/lib/mcp-query-bridge.js +30 -0
  78. package/lib/mcp-remote-connections.js +74 -20
  79. package/lib/mcp-source-adapters.js +1 -0
  80. package/lib/mcp-source-context.js +1 -0
  81. package/lib/mcp-source-discovery.js +1 -0
  82. package/lib/mcp-source-plugins.js +1 -0
  83. package/lib/mcp-source-restrictions.js +1 -0
  84. package/lib/mcp-tool-policy.js +9 -0
  85. package/lib/notes-checklist.js +50 -0
  86. package/lib/notes.js +49 -3
  87. package/lib/os-user-diagnostics.js +2 -4
  88. package/lib/os-users.js +24 -70
  89. package/lib/pane-pending-interactions.js +20 -0
  90. package/lib/pane-session-activation.js +114 -0
  91. package/lib/pane-session-transport.js +26 -0
  92. package/lib/project-admin-overview.js +51 -0
  93. package/lib/project-ask-user.js +8 -4
  94. package/lib/project-connection.js +14 -10
  95. package/lib/project-control-git-view.js +12 -0
  96. package/lib/project-debate.js +1 -0
  97. package/lib/project-delegated-follow-up.js +2 -1
  98. package/lib/project-directory-claim.js +65 -0
  99. package/lib/project-file-operations.js +61 -0
  100. package/lib/project-filesystem.js +15 -85
  101. package/lib/project-full-access.js +23 -2
  102. package/lib/project-http.js +7 -4
  103. package/lib/project-knowledge.js +32 -18
  104. package/lib/project-lifecycle-operations.js +98 -0
  105. package/lib/project-lifecycle-process-witness.js +32 -0
  106. package/lib/project-lifecycle-runtime.js +50 -0
  107. package/lib/project-linux-access.js +22 -0
  108. package/lib/project-logs-canonical-clay.js +27 -0
  109. package/lib/project-logs-clay-query.js +16 -0
  110. package/lib/project-logs-schema.js +4 -2
  111. package/lib/project-logs-service.js +8 -7
  112. package/lib/project-logs.js +1 -0
  113. package/lib/project-loop.js +1 -0
  114. package/lib/project-mate-chat-control.js +55 -0
  115. package/lib/project-mate-creation-proposal.js +18 -3
  116. package/lib/project-mate-interaction.js +40 -62
  117. package/lib/project-mcp.js +54 -16
  118. package/lib/project-models.js +14 -31
  119. package/lib/project-notifications.js +76 -17
  120. package/lib/project-ownership.js +77 -0
  121. package/lib/project-pair-result-delivery.js +14 -3
  122. package/lib/project-pair-usage.js +12 -13
  123. package/lib/project-pending-message-queue.js +4 -1
  124. package/lib/project-product-control.js +89 -0
  125. package/lib/project-product-session-queue.js +46 -0
  126. package/lib/project-push-access.js +28 -0
  127. package/lib/project-scheduled-message-queue.js +30 -0
  128. package/lib/project-scheduled-messages.js +67 -68
  129. package/lib/project-scheduled-task-control.js +83 -0
  130. package/lib/project-scheduled-tasks.js +13 -2
  131. package/lib/project-scheduling-access.js +10 -0
  132. package/lib/project-session-actions.js +65 -0
  133. package/lib/project-session-delete.js +8 -1
  134. package/lib/project-session-document.js +27 -7
  135. package/lib/project-session-github.js +63 -19
  136. package/lib/project-session-history-actions.js +167 -0
  137. package/lib/project-session-linear.js +14 -6
  138. package/lib/project-session-notes.js +7 -3
  139. package/lib/project-session-pair.js +1 -1
  140. package/lib/project-session-runtime-actions.js +64 -0
  141. package/lib/project-session-spawn.js +2 -3
  142. package/lib/project-session-vendor.js +55 -0
  143. package/lib/project-sessions.js +103 -272
  144. package/lib/project-shared-browser.js +78 -17
  145. package/lib/project-studio-presentation.js +58 -0
  146. package/lib/project-user-message.js +67 -1
  147. package/lib/project-vendor-login.js +6 -36
  148. package/lib/project-workspace-operations.js +126 -0
  149. package/lib/project-workspace-query.js +19 -2
  150. package/lib/project.js +178 -45
  151. package/lib/public/app.js +46 -0
  152. package/lib/public/appearance-bootstrap.js +16 -0
  153. package/lib/public/css/clay-tool-activity.css +51 -0
  154. package/lib/public/css/clay-workspace.css +29 -0
  155. package/lib/public/css/command-palette.css +12 -33
  156. package/lib/public/css/contextual-clay.css +240 -0
  157. package/lib/public/css/home-debate-planning.css +2 -0
  158. package/lib/public/css/home-mate-creation.css +5 -0
  159. package/lib/public/css/input.css +6 -0
  160. package/lib/public/css/mate-avatar-gallery.css +12 -0
  161. package/lib/public/css/mate-conversation.css +10 -5
  162. package/lib/public/css/messages.css +6 -2
  163. package/lib/public/css/overlays.css +4 -2
  164. package/lib/public/css/project-admin-overview.css +13 -0
  165. package/lib/public/css/session-folders.css +11 -0
  166. package/lib/public/css/session-github.css +46 -1
  167. package/lib/public/css/shared-browser.css +35 -1
  168. package/lib/public/css/sticky-notes.css +87 -1
  169. package/lib/public/index.html +11 -5
  170. package/lib/public/mate-avatars/B01.png +0 -0
  171. package/lib/public/mate-avatars/B02.png +0 -0
  172. package/lib/public/mate-avatars/B03.png +0 -0
  173. package/lib/public/mate-avatars/B04.png +0 -0
  174. package/lib/public/mate-avatars/B05.png +0 -0
  175. package/lib/public/mate-avatars/B06.png +0 -0
  176. package/lib/public/mate-avatars/B07.png +0 -0
  177. package/lib/public/mate-avatars/B08.png +0 -0
  178. package/lib/public/mate-avatars/B09.png +0 -0
  179. package/lib/public/mate-avatars/B10.png +0 -0
  180. package/lib/public/mate-avatars/B11.png +0 -0
  181. package/lib/public/mate-avatars/B12.png +0 -0
  182. package/lib/public/mate-avatars/B13.png +0 -0
  183. package/lib/public/mate-avatars/B14.png +0 -0
  184. package/lib/public/mate-avatars/B15.png +0 -0
  185. package/lib/public/mate-avatars/B16.png +0 -0
  186. package/lib/public/mate-avatars/B17.png +0 -0
  187. package/lib/public/mate-avatars/B18.png +0 -0
  188. package/lib/public/mate-avatars/B19.png +0 -0
  189. package/lib/public/mate-avatars/B20.png +0 -0
  190. package/lib/public/mate-avatars/B21.png +0 -0
  191. package/lib/public/mate-avatars/B22.png +0 -0
  192. package/lib/public/mate-avatars/B23.png +0 -0
  193. package/lib/public/mate-avatars/B24.png +0 -0
  194. package/lib/public/mate-avatars/B25.png +0 -0
  195. package/lib/public/mate-avatars/B26.png +0 -0
  196. package/lib/public/mate-avatars/B27.png +0 -0
  197. package/lib/public/mate-avatars/B28.png +0 -0
  198. package/lib/public/mate-avatars/B29.png +0 -0
  199. package/lib/public/mate-avatars/B30.png +0 -0
  200. package/lib/public/mate-avatars/B31.png +0 -0
  201. package/lib/public/mate-avatars/B32.png +0 -0
  202. package/lib/public/mate-avatars/B33.png +0 -0
  203. package/lib/public/mate-avatars/B34.png +0 -0
  204. package/lib/public/mate-avatars/B35.png +0 -0
  205. package/lib/public/mate-avatars/B36.png +0 -0
  206. package/lib/public/mate-avatars/B37.png +0 -0
  207. package/lib/public/mate-avatars/B38.png +0 -0
  208. package/lib/public/mate-avatars/B39.png +0 -0
  209. package/lib/public/mate-avatars/B40.png +0 -0
  210. package/lib/public/mate-avatars/B41.png +0 -0
  211. package/lib/public/mate-avatars/B42.png +0 -0
  212. package/lib/public/mate-avatars/B43.png +0 -0
  213. package/lib/public/mate-avatars/B44.png +0 -0
  214. package/lib/public/mate-avatars/B45.png +0 -0
  215. package/lib/public/mate-avatars/B46.png +0 -0
  216. package/lib/public/mate-avatars/B47.png +0 -0
  217. package/lib/public/mate-avatars/B48.png +0 -0
  218. package/lib/public/mate-avatars/C01.png +0 -0
  219. package/lib/public/mate-avatars/C02.png +0 -0
  220. package/lib/public/mate-avatars/C03.png +0 -0
  221. package/lib/public/mate-avatars/C04.png +0 -0
  222. package/lib/public/mate-avatars/C05.png +0 -0
  223. package/lib/public/mate-avatars/C06.png +0 -0
  224. package/lib/public/mate-avatars/C07.png +0 -0
  225. package/lib/public/mate-avatars/C08.png +0 -0
  226. package/lib/public/mate-avatars/C09.png +0 -0
  227. package/lib/public/mate-avatars/C10.png +0 -0
  228. package/lib/public/mate-avatars/C11.png +0 -0
  229. package/lib/public/mate-avatars/C12.png +0 -0
  230. package/lib/public/mate-avatars/C13.png +0 -0
  231. package/lib/public/mate-avatars/C14.png +0 -0
  232. package/lib/public/mate-avatars/C15.png +0 -0
  233. package/lib/public/mate-avatars/C16.png +0 -0
  234. package/lib/public/mate-avatars/C17.png +0 -0
  235. package/lib/public/mate-avatars/C18.png +0 -0
  236. package/lib/public/mate-avatars/C19.png +0 -0
  237. package/lib/public/mate-avatars/C20.png +0 -0
  238. package/lib/public/mate-avatars/C21.png +0 -0
  239. package/lib/public/mate-avatars/C22.png +0 -0
  240. package/lib/public/mate-avatars/C23.png +0 -0
  241. package/lib/public/mate-avatars/C24.png +0 -0
  242. package/lib/public/mate-avatars/C25.png +0 -0
  243. package/lib/public/mate-avatars/C26.png +0 -0
  244. package/lib/public/mate-avatars/C27.png +0 -0
  245. package/lib/public/mate-avatars/C28.png +0 -0
  246. package/lib/public/mate-avatars/C29.png +0 -0
  247. package/lib/public/mate-avatars/C30.png +0 -0
  248. package/lib/public/mate-avatars/C31.png +0 -0
  249. package/lib/public/mate-avatars/C32.png +0 -0
  250. package/lib/public/mate-avatars/C33.png +0 -0
  251. package/lib/public/mate-avatars/C34.png +0 -0
  252. package/lib/public/mate-avatars/C35.png +0 -0
  253. package/lib/public/mate-avatars/C36.png +0 -0
  254. package/lib/public/mate-avatars/C37.png +0 -0
  255. package/lib/public/mate-avatars/C38.png +0 -0
  256. package/lib/public/mate-avatars/C39.png +0 -0
  257. package/lib/public/mate-avatars/C40.png +0 -0
  258. package/lib/public/mate-avatars/C41.png +0 -0
  259. package/lib/public/mate-avatars/C42.png +0 -0
  260. package/lib/public/mate-avatars/C43.png +0 -0
  261. package/lib/public/mate-avatars/C44.png +0 -0
  262. package/lib/public/mate-avatars/C45.png +0 -0
  263. package/lib/public/mate-avatars/C46.png +0 -0
  264. package/lib/public/mate-avatars/C47.png +0 -0
  265. package/lib/public/mate-avatars/C48.png +0 -0
  266. package/lib/public/mate-avatars/catalog.json +482 -0
  267. package/lib/public/mate-avatars/lead-clay.png +0 -0
  268. package/lib/public/modules/admin-settings-projects.js +6 -2
  269. package/lib/public/modules/app-connection.js +11 -1
  270. package/lib/public/modules/app-favicon.js +18 -9
  271. package/lib/public/modules/app-header.js +7 -4
  272. package/lib/public/modules/app-loop-ui.js +2 -0
  273. package/lib/public/modules/app-message-router.js +22 -1
  274. package/lib/public/modules/app-messages.js +115 -17
  275. package/lib/public/modules/app-misc.js +3 -1
  276. package/lib/public/modules/app-notifications.js +11 -5
  277. package/lib/public/modules/app-panels.js +61 -123
  278. package/lib/public/modules/app-projects.js +13 -0
  279. package/lib/public/modules/app-rate-limit.js +7 -27
  280. package/lib/public/modules/app-rendering.js +4 -3
  281. package/lib/public/modules/avatar.js +15 -41
  282. package/lib/public/modules/chat-render-runtime.js +20 -0
  283. package/lib/public/modules/clay-browser-links.js +47 -0
  284. package/lib/public/modules/clay-control-activity.js +214 -0
  285. package/lib/public/modules/clay-control-copy.js +36 -0
  286. package/lib/public/modules/clay-control-detail-targets.js +44 -0
  287. package/lib/public/modules/clay-control-object-targets.js +52 -0
  288. package/lib/public/modules/clay-control-target-visibility.js +12 -0
  289. package/lib/public/modules/clay-control-targets.js +44 -0
  290. package/lib/public/modules/clay-log-links.js +23 -0
  291. package/lib/public/modules/clay-navigation-render.js +52 -0
  292. package/lib/public/modules/clay-owner-navigation.js +33 -0
  293. package/lib/public/modules/clay-session-links.js +31 -0
  294. package/lib/public/modules/clay-studio-bridge.js +20 -0
  295. package/lib/public/modules/clay-studio-document.js +67 -0
  296. package/lib/public/modules/clay-studio-render.js +146 -0
  297. package/lib/public/modules/clay-tool-activity.js +140 -0
  298. package/lib/public/modules/clay-tool-presentation.js +342 -0
  299. package/lib/public/modules/command-palette.js +162 -40
  300. package/lib/public/modules/contextual-ask-session.js +26 -0
  301. package/lib/public/modules/contextual-clay-geometry.js +155 -0
  302. package/lib/public/modules/contextual-clay-session.js +130 -0
  303. package/lib/public/modules/contextual-clay-workspace.js +169 -0
  304. package/lib/public/modules/contextual-clay.js +250 -0
  305. package/lib/public/modules/contextual-composer.js +91 -0
  306. package/lib/public/modules/contextual-mate-context.js +117 -0
  307. package/lib/public/modules/contextual-mate-hint.js +40 -0
  308. package/lib/public/modules/contextual-mate-identity.js +23 -0
  309. package/lib/public/modules/contextual-mate-sessions.js +134 -0
  310. package/lib/public/modules/contextual-search.js +137 -0
  311. package/lib/public/modules/contextual-session-citations.js +58 -0
  312. package/lib/public/modules/debate.js +1 -0
  313. package/lib/public/modules/default-ai.js +11 -3
  314. package/lib/public/modules/elicitation-form.js +5 -0
  315. package/lib/public/modules/filebrowser.js +20 -1
  316. package/lib/public/modules/generation-stop.js +8 -5
  317. package/lib/public/modules/git-panel.js +3 -1
  318. package/lib/public/modules/history-replay-batch.js +13 -1
  319. package/lib/public/modules/home-debate-live.js +2 -0
  320. package/lib/public/modules/home-debate-planning.js +7 -7
  321. package/lib/public/modules/home-mate-avatar-editor.js +127 -208
  322. package/lib/public/modules/home-mate-chat.js +8 -6
  323. package/lib/public/modules/home-mate-creation.js +73 -1
  324. package/lib/public/modules/home-mate-settings.js +19 -12
  325. package/lib/public/modules/icon-strip-tooltip.js +2 -1
  326. package/lib/public/modules/input.js +88 -10
  327. package/lib/public/modules/issues-render.js +3 -2
  328. package/lib/public/modules/knowledge-db-workbench.js +4 -4
  329. package/lib/public/modules/markdown.js +6 -34
  330. package/lib/public/modules/mate-avatar-catalog.js +97 -0
  331. package/lib/public/modules/mate-knowledge-workbench.js +1 -1
  332. package/lib/public/modules/mate-management.js +40 -7
  333. package/lib/public/modules/mcp-connection-view.js +31 -13
  334. package/lib/public/modules/mcp-discovery-view.js +31 -0
  335. package/lib/public/modules/mcp-ui.js +23 -4
  336. package/lib/public/modules/mention.js +3 -0
  337. package/lib/public/modules/message-delivery.js +20 -2
  338. package/lib/public/modules/model-picker.js +2 -0
  339. package/lib/public/modules/pane-activation.js +214 -0
  340. package/lib/public/modules/pane-binding.js +82 -0
  341. package/lib/public/modules/pane-bridge.js +7 -4
  342. package/lib/public/modules/pane-browser-bridge.js +22 -0
  343. package/lib/public/modules/pane-file-bridge.js +4 -0
  344. package/lib/public/modules/pane-issue-bridge.js +4 -1
  345. package/lib/public/modules/pending-message-queue.js +1 -0
  346. package/lib/public/modules/permission-control.js +5 -4
  347. package/lib/public/modules/personal-settings-dialog.js +7 -1
  348. package/lib/public/modules/product-review.js +26 -0
  349. package/lib/public/modules/profile.js +1 -238
  350. package/lib/public/modules/project-access-recovery.js +17 -0
  351. package/lib/public/modules/project-admin-overview.js +21 -0
  352. package/lib/public/modules/project-chat-identity.js +13 -4
  353. package/lib/public/modules/project-logs-render.js +3 -0
  354. package/lib/public/modules/project-mate-navigation.js +144 -22
  355. package/lib/public/modules/rewind.js +5 -0
  356. package/lib/public/modules/scheduled-tasks.js +2 -0
  357. package/lib/public/modules/scheduler.js +2 -0
  358. package/lib/public/modules/search-clay-chat.js +5 -440
  359. package/lib/public/modules/session-actions.js +5 -2
  360. package/lib/public/modules/session-context-menu.js +5 -0
  361. package/lib/public/modules/session-create-form.js +10 -10
  362. package/lib/public/modules/session-folder-layout.js +1 -1
  363. package/lib/public/modules/session-folder-view-menu.js +9 -0
  364. package/lib/public/modules/session-github.js +85 -14
  365. package/lib/public/modules/session-rich-drafts.js +21 -0
  366. package/lib/public/modules/session-switch-defer.js +67 -0
  367. package/lib/public/modules/session-work-primary.js +51 -0
  368. package/lib/public/modules/settings-defaults.js +27 -28
  369. package/lib/public/modules/shared-browser-settings.js +112 -0
  370. package/lib/public/modules/shared-browser-tabs.js +13 -3
  371. package/lib/public/modules/shared-browser.js +29 -6
  372. package/lib/public/modules/sidebar-mobile.js +4 -3
  373. package/lib/public/modules/sidebar-projects.js +1 -0
  374. package/lib/public/modules/sidebar-session-folders-ui.js +1 -1
  375. package/lib/public/modules/sidebar-sessions.js +1 -0
  376. package/lib/public/modules/split-group-restore.js +68 -0
  377. package/lib/public/modules/split-pair-ui.js +1 -0
  378. package/lib/public/modules/split-pane-reconciler.js +15 -0
  379. package/lib/public/modules/split-pane-renderer.js +87 -6
  380. package/lib/public/modules/split-session-boundary.js +1 -1
  381. package/lib/public/modules/split-view.js +60 -68
  382. package/lib/public/modules/sticky-note-markdown.js +72 -6
  383. package/lib/public/modules/sticky-notes-actions.js +30 -0
  384. package/lib/public/modules/sticky-notes-browser.js +9 -2
  385. package/lib/public/modules/sticky-notes-card.js +23 -7
  386. package/lib/public/modules/sticky-notes-checklist.js +116 -0
  387. package/lib/public/modules/sticky-notes-editor.js +108 -44
  388. package/lib/public/modules/sticky-notes-shared.js +50 -2
  389. package/lib/public/modules/sticky-notes-state.js +66 -0
  390. package/lib/public/modules/sticky-notes.js +34 -51
  391. package/lib/public/modules/stt-controller.js +4 -1
  392. package/lib/public/modules/stt-recording.js +1 -1
  393. package/lib/public/modules/stt.js +7 -2
  394. package/lib/public/modules/terminal.js +9 -0
  395. package/lib/public/modules/theme.js +8 -1
  396. package/lib/public/modules/thinking-lifecycle.js +33 -3
  397. package/lib/public/modules/thinking-view.js +23 -1
  398. package/lib/public/modules/tools.js +60 -11
  399. package/lib/public/modules/tui-grab.js +1 -2
  400. package/lib/public/modules/user-settings-appearance.js +10 -3
  401. package/lib/public/modules/user-settings-editors.js +1 -1
  402. package/lib/public/modules/user-settings-layout.js +11 -2
  403. package/lib/public/modules/user-settings-preferences.js +6 -2
  404. package/lib/public/modules/user-settings-profile.js +12 -2
  405. package/lib/public/modules/user-settings.js +3 -2
  406. package/lib/public/modules/vendor-login-browser.js +5 -3
  407. package/lib/public/modules/vendor-login.js +2 -2
  408. package/lib/public/modules/vendor-priority.js +15 -1
  409. package/lib/public/modules/wireframe-workbench.js +5 -2
  410. package/lib/public/muse-avatar.svg +4 -0
  411. package/lib/public/style.css +5 -0
  412. package/lib/public/sw.js +3 -1
  413. package/lib/safe-bash-commands.js +3 -45
  414. package/lib/scheduled-task-records.js +3 -1
  415. package/lib/scheduler.js +2 -0
  416. package/lib/sdk-bridge.js +342 -401
  417. package/lib/sdk-foreground-admission.js +16 -0
  418. package/lib/sdk-mcp-descriptors.js +2 -37
  419. package/lib/sdk-message-processor.js +52 -17
  420. package/lib/sdk-quota-snapshot.js +1 -1
  421. package/lib/sdk-response-recovery.js +1 -0
  422. package/lib/sdk-worker.js +2 -677
  423. package/lib/server-admin.js +63 -16
  424. package/lib/server-appearance-settings.js +13 -1
  425. package/lib/server-contextual-clay-settings.js +40 -0
  426. package/lib/server-contextual-mate-sessions.js +70 -0
  427. package/lib/server-dm.js +2 -1
  428. package/lib/server-global-ws.js +10 -20
  429. package/lib/server-home-chat-events.js +18 -4
  430. package/lib/server-home-chat.js +22 -20
  431. package/lib/server-home-clay-entry.js +23 -4
  432. package/lib/server-home-clay-session-links.js +29 -9
  433. package/lib/server-home-mate-creation.js +1 -0
  434. package/lib/server-home-mcp-consent.js +14 -0
  435. package/lib/server-mates.js +25 -62
  436. package/lib/server-owner-ui.js +118 -0
  437. package/lib/server-path-access.js +38 -0
  438. package/lib/server-project-removal.js +22 -0
  439. package/lib/server-settings.js +6 -1
  440. package/lib/server.js +163 -43
  441. package/lib/session-config-transition.js +45 -0
  442. package/lib/session-folders.js +7 -2
  443. package/lib/session-fork-history.js +21 -0
  444. package/lib/session-github.js +9 -2
  445. package/lib/session-hygiene.js +3 -35
  446. package/lib/session-permission-mode.js +4 -3
  447. package/lib/session-skill-scope.js +11 -0
  448. package/lib/session-visibility.js +5 -2
  449. package/lib/session-work-primary.js +50 -0
  450. package/lib/sessions.js +64 -99
  451. package/lib/shared-browser-cookie-sync.js +32 -0
  452. package/lib/shared-browser-cookies.js +79 -0
  453. package/lib/shared-browser-runtime.js +25 -9
  454. package/lib/shared-browser-storage-sync.js +43 -0
  455. package/lib/shared-browser-storage.js +101 -0
  456. package/lib/shared-browser-tools.js +2 -1
  457. package/lib/shared-browser-worker.js +46 -10
  458. package/lib/terminal-manager.js +65 -6
  459. package/lib/tool-llm.js +1 -1
  460. package/lib/tui-transcript-index.js +1 -132
  461. package/lib/users-contextual-clay-preferences.js +31 -0
  462. package/lib/users-permissions.js +2 -8
  463. package/lib/users.js +7 -0
  464. package/lib/vendor-login-browser.js +1 -11
  465. package/lib/workspace-assignment-service.js +25 -0
  466. package/lib/workspace-query-access.js +4 -1
  467. package/lib/workspace-query-mcp-server.js +1 -1
  468. package/lib/workspace-query-service.js +13 -2
  469. package/lib/ws-request.js +1 -0
  470. package/lib/ws-schema.js +18 -2
  471. package/lib/yoke/acp-agent-profiles.js +7 -5
  472. package/lib/yoke/adapters/antigravity.js +3 -14
  473. package/lib/yoke/adapters/claude-query-contract.js +9 -0
  474. package/lib/yoke/adapters/claude.js +54 -50
  475. package/lib/yoke/adapters/codex-query-contract.js +24 -0
  476. package/lib/yoke/adapters/codex.js +53 -111
  477. package/lib/yoke/adapters/kiro.js +3 -1
  478. package/lib/yoke/adapters/muse-query-contract.js +7 -0
  479. package/lib/yoke/adapters/muse.js +122 -0
  480. package/lib/yoke/auth-events.js +17 -0
  481. package/lib/yoke/claude-hook-installer.js +271 -0
  482. package/lib/yoke/claude-jsonl-watcher.js +204 -0
  483. package/lib/yoke/claude-maintenance.js +55 -0
  484. package/lib/yoke/claude-permission-patterns.js +53 -0
  485. package/lib/yoke/claude-response-recovery.js +155 -0
  486. package/lib/yoke/claude-transcript-hygiene.js +34 -0
  487. package/lib/yoke/claude-worker-startup.js +28 -0
  488. package/lib/yoke/clay-skill-install.js +33 -0
  489. package/lib/yoke/cli-sessions.js +300 -0
  490. package/lib/yoke/codex-app-server.js +7 -12
  491. package/lib/yoke/codex-idle-recovery.js +81 -1
  492. package/lib/yoke/codex-recovery-admission.js +164 -0
  493. package/lib/yoke/configuration.js +13 -0
  494. package/lib/yoke/discovery.js +70 -0
  495. package/lib/yoke/errors.js +8 -0
  496. package/lib/yoke/host-environment.js +7 -0
  497. package/lib/yoke/index.js +9 -51
  498. package/lib/yoke/interface.js +116 -0
  499. package/lib/yoke/kiro-acp-server.js +5 -5
  500. package/lib/yoke/legacy-sessions.js +89 -0
  501. package/lib/yoke/login-protocol.js +25 -0
  502. package/lib/yoke/maintenance.js +12 -0
  503. package/lib/yoke/mcp-proxy.js +32 -0
  504. package/lib/yoke/mcp-source-adapters.js +91 -0
  505. package/lib/yoke/mcp-source-context.js +42 -0
  506. package/lib/yoke/mcp-source-discovery.js +169 -0
  507. package/lib/yoke/mcp-source-plugins.js +68 -0
  508. package/lib/yoke/mcp-source-restrictions.js +47 -0
  509. package/lib/yoke/mcp-tool-policy-normalize.js +28 -0
  510. package/lib/yoke/model-preferences.js +6 -0
  511. package/lib/yoke/muse-artifacts.js +36 -0
  512. package/lib/yoke/muse-controls.js +50 -0
  513. package/lib/yoke/muse-input.js +64 -0
  514. package/lib/yoke/muse-items.js +157 -0
  515. package/lib/yoke/muse-policy.js +52 -0
  516. package/lib/yoke/muse-query.js +428 -0
  517. package/lib/yoke/muse-runtime.js +211 -0
  518. package/lib/yoke/muse-services.js +79 -0
  519. package/lib/yoke/muse-skills.js +79 -0
  520. package/lib/yoke/muse-turns.js +71 -0
  521. package/lib/yoke/options/acp.js +2 -0
  522. package/lib/yoke/options/antigravity.js +2 -0
  523. package/lib/yoke/options/claude.js +21 -0
  524. package/lib/yoke/options/codex-defaults.js +29 -0
  525. package/lib/yoke/options/codex-settings.js +21 -0
  526. package/lib/yoke/options/codex.js +6 -0
  527. package/lib/yoke/options/kiro-defaults.js +22 -0
  528. package/lib/yoke/options/kiro.js +5 -0
  529. package/lib/yoke/options/muse.js +5 -0
  530. package/lib/yoke/provider-contract.js +5 -0
  531. package/lib/yoke/providers/antigravity-executable.js +8 -0
  532. package/lib/yoke/providers/claude-executable.js +40 -0
  533. package/lib/yoke/providers/claude-model-descriptions.js +14 -0
  534. package/lib/yoke/providers/claude-process.js +97 -0
  535. package/lib/yoke/providers/claude-provision.js +75 -0
  536. package/lib/yoke/providers/codex-errors.js +8 -0
  537. package/lib/yoke/providers/muse-executable.js +17 -0
  538. package/lib/yoke/provisioning.js +6 -0
  539. package/lib/yoke/query-options.js +10 -0
  540. package/lib/yoke/response-recovery.js +41 -0
  541. package/lib/yoke/sdk-mcp-descriptors.js +37 -0
  542. package/lib/yoke/sdk-server-factory.js +7 -0
  543. package/lib/yoke/session-history.js +8 -0
  544. package/lib/yoke/session-tool-transport.js +34 -13
  545. package/lib/yoke/settings.js +23 -0
  546. package/lib/yoke/source-locations.js +4 -0
  547. package/lib/yoke/title-query.js +18 -7
  548. package/lib/yoke/tui-transcript-index.js +132 -0
  549. package/lib/yoke/usage.js +48 -0
  550. package/lib/yoke/user-input.js +13 -0
  551. package/lib/yoke/vendor-registry.js +81 -1
  552. package/package.json +10 -4
@@ -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
+ ]
@@ -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' : '';
@@ -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();
@@ -5,8 +5,9 @@ import { refreshIcons } from './icons.js';
5
5
  import { store } from './store.js';
6
6
  import { getSendBtn, getStatusDot } from './dom-refs.js';
7
7
  import { onThemeChange } from './theme.js';
8
- import { getActivityEl, setActivityEl, addToMessages, scrollToBottom, VENDOR_AVATARS } from './app-rendering.js';
8
+ import { getActivityEl, setActivityEl, addToMessages, scrollToBottom } from './app-rendering.js';
9
9
  import { escapeHtml } from './utils.js';
10
+ import { resolveProjectAssistantIdentity, applyProjectAssistantIdentity } from './project-chat-identity.js';
10
11
 
11
12
  // --- Module-owned state ---
12
13
  var faviconLink, faviconOrigHref, faviconCanvas, faviconCtx, faviconImg, faviconImgReady;
@@ -197,7 +198,7 @@ export function stopUrgentBlink() {
197
198
 
198
199
  export function setActivity(text) {
199
200
  var thinkingState = store.get('thinkingState');
200
- if (text === "thinking" && thinkingState && thinkingState.active) {
201
+ if ((text === "thinking" || text === "running") && thinkingState && thinkingState.active) {
201
202
  // Live Thinking already owns the tail progress UI. Compaction and tool
202
203
  // activity intentionally continue through so their distinct states show.
203
204
  if (getActivityEl()) {
@@ -210,14 +211,12 @@ export function setActivity(text) {
210
211
  if (!getActivityEl()) {
211
212
  var _actEl = document.createElement("div");
212
213
  _actEl.className = "activity-inline";
213
- // In channel mode (Claude Code / Codex sessions), include the vendor
214
- // avatar so the user can see who is responding while the dots are
215
- // animating. DM mode handles its own avatar via mate-thinking
216
- // elements and shouldn't pick up a vendor avatar here.
214
+ // The same session-bound identity owns waiting, thoughts and replies.
215
+ // DM mode retains its own Mate-thinking row.
217
216
  var _isDm = !!(store.get('dmMode') && store.get('dmTargetUser') && store.get('dmTargetUser').isMate);
218
217
  if (!_isDm) {
219
- var _vendor = store.get('currentVendor') || 'claude';
220
- var _avatarUrl = VENDOR_AVATARS[_vendor] || VENDOR_AVATARS.claude;
218
+ var _identity = resolveProjectAssistantIdentity(store.snap(), store.get('currentVendor'));
219
+ var _avatarUrl = _identity.avatarUrl;
221
220
  _actEl.innerHTML =
222
221
  '<img class="activity-inline-avatar" src="' + escapeHtml(_avatarUrl) + '" alt="">' +
223
222
  '<div class="mate-thinking-dots"><span></span><span></span><span></span></div>';
@@ -225,9 +224,19 @@ export function setActivity(text) {
225
224
  _actEl.innerHTML =
226
225
  '<div class="mate-thinking-dots"><span></span><span></span><span></span></div>';
227
226
  }
227
+ _actEl.setAttribute("role", "status");
228
+ _actEl.setAttribute("aria-live", "polite");
228
229
  setActivityEl(_actEl);
229
- addToMessages(_actEl);
230
230
  }
231
+ var activity = getActivityEl();
232
+ var labels = { waiting: "Waiting for provider", running: "Working", background: "Background work pending" };
233
+ var label = activity.querySelector(".activity-state-label");
234
+ if (labels[text]) {
235
+ if (!label) { label = document.createElement("span"); label.className = "activity-state-label activity-text"; activity.appendChild(label); }
236
+ label.textContent = labels[text];
237
+ } else if (label) label.remove();
238
+ applyProjectAssistantIdentity(activity, resolveProjectAssistantIdentity(store.snap(), store.get('currentVendor')));
239
+ addToMessages(activity);
231
240
  scrollToBottom();
232
241
  } else {
233
242
  if (getActivityEl()) {
@@ -267,14 +267,16 @@ export function initHeader() {
267
267
  addRow("Local ID", split.panes[pi].sessionId);
268
268
  if (member && member.cliSessionId) {
269
269
  addRow("Session ID", member.cliSessionId);
270
- addRow("Resume", "claude --resume " + member.cliSessionId);
270
+ var memberResume = ((store.get("vendorInfo") || {})[member.vendor || "claude"] || {}).terminalResumeCommand;
271
+ if (memberResume) addRow("Resume", memberResume + " " + member.cliSessionId);
271
272
  }
272
273
  }
273
274
  } else {
274
275
  var s = store.snap();
275
276
  if (s.cliSessionId) addRow("Session ID", s.cliSessionId);
276
277
  if (s.activeSessionId) addRow("Local ID", s.activeSessionId);
277
- if (s.cliSessionId) addRow("Resume", "claude --resume " + s.cliSessionId);
278
+ var resume = ((s.vendorInfo || {})[s.currentVendor] || {}).terminalResumeCommand;
279
+ if (s.cliSessionId && resume) addRow("Resume", resume + " " + s.cliSessionId);
278
280
  }
279
281
 
280
282
  document.body.appendChild(pop);
@@ -350,6 +352,7 @@ export function prependOlderHistory(items, meta) {
350
352
 
351
353
  // Save current rendering state
352
354
  var savedMsgEl = store.get('currentMsgEl');
355
+ var savedReplayingHistory = store.get('replayingHistory');
353
356
  var savedActivity = getActivityEl();
354
357
  var savedFullText = store.get('currentFullText');
355
358
  var savedTurnCounter = getTurnCounter();
@@ -359,7 +362,7 @@ export function prependOlderHistory(items, meta) {
359
362
  var savedUsage = JSON.parse(JSON.stringify(getSessionUsage()));
360
363
 
361
364
  // Reset to initial values for clean rendering
362
- store.set({ currentMsgEl: null, currentFullText: "" });
365
+ store.set({ currentMsgEl: null, currentFullText: "", replayingHistory: true });
363
366
  setActivityEl(null);
364
367
  setTurnCounter(0);
365
368
  resetToolState();
@@ -387,7 +390,7 @@ export function prependOlderHistory(items, meta) {
387
390
  setPrependAnchor(null);
388
391
 
389
392
  // Restore saved state
390
- store.set({ currentMsgEl: savedMsgEl, currentFullText: savedFullText });
393
+ store.set({ currentMsgEl: savedMsgEl, currentFullText: savedFullText, replayingHistory: savedReplayingHistory });
391
394
  setActivityEl(savedActivity);
392
395
  setTurnCounter(savedTurnCounter);
393
396
  restoreToolState(savedToolsState);
@@ -657,6 +657,8 @@ function renderPreviewModelTab(bodyEl) {
657
657
  }
658
658
 
659
659
  var opts = {
660
+ effortLevels: ((store.get("vendorInfo") || {})[store.get("currentVendor")] || {}).effortLevels || [],
661
+ configuration: ((store.get("vendorInfo") || {})[store.get("currentVendor")] || {}).configuration || {},
660
662
  models: s.currentModels || [],
661
663
  currentModel: _previewLoopSettings.model || "",
662
664
  currentMode: _previewLoopSettings.permissionMode || "default",