@mndrk/agx 2.0.23 → 2.0.25

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 (373) hide show
  1. package/cloud-runtime/standalone/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/.next/app-path-routes-manifest.json +1 -0
  3. package/cloud-runtime/standalone/.next/build-manifest.json +6 -6
  4. package/cloud-runtime/standalone/.next/prerender-manifest.json +3 -3
  5. package/cloud-runtime/standalone/.next/routes-manifest.json +6 -0
  6. package/cloud-runtime/standalone/.next/server/app/_global-error/page/build-manifest.json +4 -4
  7. package/cloud-runtime/standalone/.next/server/app/_global-error/page.js +2 -2
  8. package/cloud-runtime/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/cloud-runtime/standalone/.next/server/app/_global-error.html +2 -2
  10. package/cloud-runtime/standalone/.next/server/app/_global-error.rsc +1 -1
  11. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/.next/server/app/_not-found/page/build-manifest.json +4 -4
  17. package/cloud-runtime/standalone/.next/server/app/_not-found/page.js +6 -5
  18. package/cloud-runtime/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/cloud-runtime/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/cloud-runtime/standalone/.next/server/app/_not-found.html +14 -2
  21. package/cloud-runtime/standalone/.next/server/app/_not-found.rsc +11 -11
  22. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
  23. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  24. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +7 -7
  25. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  26. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  27. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page/build-manifest.json +4 -4
  29. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page.js +5 -5
  30. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  31. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  32. package/cloud-runtime/standalone/.next/server/app/agents/page/build-manifest.json +4 -4
  33. package/cloud-runtime/standalone/.next/server/app/agents/page.js +5 -5
  34. package/cloud-runtime/standalone/.next/server/app/agents/page.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  36. package/cloud-runtime/standalone/.next/server/app/agents.html +14 -2
  37. package/cloud-runtime/standalone/.next/server/app/agents.rsc +10 -10
  38. package/cloud-runtime/standalone/.next/server/app/agents.segments/_full.segment.rsc +10 -10
  39. package/cloud-runtime/standalone/.next/server/app/agents.segments/_head.segment.rsc +3 -3
  40. package/cloud-runtime/standalone/.next/server/app/agents.segments/_index.segment.rsc +4 -4
  41. package/cloud-runtime/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  42. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +4 -4
  43. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents.segment.rsc +3 -3
  44. package/cloud-runtime/standalone/.next/server/app/api/file-search/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route/app-paths-manifest.json +3 -0
  46. package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route/build-manifest.json +11 -0
  47. package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route/server-reference-manifest.json +4 -0
  48. package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route.js +7 -0
  49. package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route.js.map +5 -0
  50. package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route.js.nft.json +1 -0
  51. package/cloud-runtime/standalone/.next/server/app/api/filesystem/browse/route_client-reference-manifest.js +2 -0
  52. package/cloud-runtime/standalone/.next/server/app/api/providers/route.js +1 -1
  53. package/cloud-runtime/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/.next/server/app/api/status/route.js +1 -1
  55. package/cloud-runtime/standalone/.next/server/app/api/status/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/.next/server/app/automations/page/build-manifest.json +4 -4
  57. package/cloud-runtime/standalone/.next/server/app/automations/page.js +5 -5
  58. package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  60. package/cloud-runtime/standalone/.next/server/app/automations.html +14 -2
  61. package/cloud-runtime/standalone/.next/server/app/automations.rsc +11 -11
  62. package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +11 -11
  63. package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +3 -3
  64. package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +4 -4
  65. package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
  66. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +5 -5
  67. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +3 -3
  68. package/cloud-runtime/standalone/.next/server/app/board/page/build-manifest.json +4 -4
  69. package/cloud-runtime/standalone/.next/server/app/board/page.js +6 -6
  70. package/cloud-runtime/standalone/.next/server/app/board/page.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
  72. package/cloud-runtime/standalone/.next/server/app/board.html +14 -2
  73. package/cloud-runtime/standalone/.next/server/app/board.rsc +8 -8
  74. package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +8 -8
  75. package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +3 -3
  76. package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +4 -4
  77. package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  78. package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +2 -2
  79. package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +3 -3
  80. package/cloud-runtime/standalone/.next/server/app/execution-graph/page/build-manifest.json +4 -4
  81. package/cloud-runtime/standalone/.next/server/app/execution-graph/page.js +5 -5
  82. package/cloud-runtime/standalone/.next/server/app/execution-graph/page.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  84. package/cloud-runtime/standalone/.next/server/app/execution-graph.html +14 -2
  85. package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +10 -10
  86. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +10 -10
  87. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +3 -3
  88. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +4 -4
  89. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  90. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +4 -4
  91. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +3 -3
  92. package/cloud-runtime/standalone/.next/server/app/index.html +14 -2
  93. package/cloud-runtime/standalone/.next/server/app/index.rsc +10 -10
  94. package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  95. package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +10 -10
  96. package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +3 -3
  97. package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  98. package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +3 -3
  99. package/cloud-runtime/standalone/.next/server/app/page/build-manifest.json +4 -4
  100. package/cloud-runtime/standalone/.next/server/app/page.js +5 -5
  101. package/cloud-runtime/standalone/.next/server/app/page.js.nft.json +1 -1
  102. package/cloud-runtime/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  103. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page/build-manifest.json +4 -4
  104. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js +5 -5
  105. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  106. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  107. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page/build-manifest.json +4 -4
  108. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js +5 -5
  109. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  110. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  111. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page/build-manifest.json +4 -4
  112. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page.js +5 -5
  113. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  114. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  115. package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +13 -1
  116. package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +10 -10
  117. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +10 -10
  118. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +3 -3
  119. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +4 -4
  120. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  121. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +4 -4
  122. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +3 -3
  123. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +3 -3
  124. package/cloud-runtime/standalone/.next/server/app/projects/page/build-manifest.json +4 -4
  125. package/cloud-runtime/standalone/.next/server/app/projects/page.js +5 -5
  126. package/cloud-runtime/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  128. package/cloud-runtime/standalone/.next/server/app/projects.html +14 -2
  129. package/cloud-runtime/standalone/.next/server/app/projects.rsc +10 -10
  130. package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +10 -10
  131. package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +3 -3
  132. package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +4 -4
  133. package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  134. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +4 -4
  135. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +3 -3
  136. package/cloud-runtime/standalone/.next/server/app/settings/page/build-manifest.json +4 -4
  137. package/cloud-runtime/standalone/.next/server/app/settings/page.js +5 -5
  138. package/cloud-runtime/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  140. package/cloud-runtime/standalone/.next/server/app/settings.html +14 -2
  141. package/cloud-runtime/standalone/.next/server/app/settings.rsc +9 -9
  142. package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +9 -9
  143. package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +3 -3
  144. package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +4 -4
  145. package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  146. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
  147. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  148. package/cloud-runtime/standalone/.next/server/app/status/page/build-manifest.json +4 -4
  149. package/cloud-runtime/standalone/.next/server/app/status/page.js +5 -5
  150. package/cloud-runtime/standalone/.next/server/app/status/page.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
  152. package/cloud-runtime/standalone/.next/server/app/status.html +14 -2
  153. package/cloud-runtime/standalone/.next/server/app/status.rsc +10 -10
  154. package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +10 -10
  155. package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +3 -3
  156. package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +4 -4
  157. package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  158. package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +4 -4
  159. package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +3 -3
  160. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page/build-manifest.json +4 -4
  161. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js +5 -5
  162. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  164. package/cloud-runtime/standalone/.next/server/app/welcome/page/build-manifest.json +4 -4
  165. package/cloud-runtime/standalone/.next/server/app/welcome/page.js +5 -5
  166. package/cloud-runtime/standalone/.next/server/app/welcome/page.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  168. package/cloud-runtime/standalone/.next/server/app/welcome.html +14 -2
  169. package/cloud-runtime/standalone/.next/server/app/welcome.rsc +10 -10
  170. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +10 -10
  171. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +3 -3
  172. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +4 -4
  173. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
  174. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +4 -4
  175. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +3 -3
  176. package/cloud-runtime/standalone/.next/server/app-paths-manifest.json +1 -0
  177. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__60ba5058._.js +1 -1
  178. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__621dcb4a._.js +3 -0
  179. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__babd2675._.js → [root-of-the-server]__82d76712._.js} +2 -2
  180. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d36da34d._.js → [root-of-the-server]__c2767ca5._.js} +2 -2
  181. package/cloud-runtime/standalone/.next/server/chunks/_next-internal_server_app_api_filesystem_browse_route_actions_8e268170.js +3 -0
  182. package/cloud-runtime/standalone/.next/server/chunks/lib_history-store_ts_2e721df2._.js +4 -4
  183. package/cloud-runtime/standalone/.next/server/chunks/lib_history-store_ts_74d1c060._.js +6 -6
  184. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__fb05a385._.js → [root-of-the-server]__056cdf7d._.js} +2 -2
  185. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__113d6767._.js +3 -0
  186. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__8d1af2c9._.js → [root-of-the-server]__11e33b9b._.js} +2 -2
  187. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__296a25b5._.js → [root-of-the-server]__19cd257e._.js} +2 -2
  188. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__226f8a19._.js +13 -1
  189. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__51980630._.js → [root-of-the-server]__26d669c2._.js} +2 -2
  190. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__47caef59._.js +1 -1
  191. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0a103abc._.js → [root-of-the-server]__4ebf5947._.js} +2 -2
  192. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ffa2883._.js +1 -1
  193. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__6a9d3855._.js +1 -1
  194. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__942ca438._.js +3 -0
  195. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__c45c7360._.js → [root-of-the-server]__a667191a._.js} +2 -2
  196. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1cfbd715._.js → [root-of-the-server]__aa28d46f._.js} +2 -2
  197. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__bd4d5430._.js +3 -0
  198. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ab36b420._.js → [root-of-the-server]__bde5bc78._.js} +2 -2
  199. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__cde88183._.js +3 -0
  200. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__ce3b51aa._.js +3 -0
  201. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__2503b467._.js → [root-of-the-server]__d36dd8bc._.js} +2 -2
  202. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__b77ae83d._.js → [root-of-the-server]__dac5ab29._.js} +2 -2
  203. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__3405b8e4._.js → [root-of-the-server]__e87ba2b0._.js} +2 -2
  204. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__b9356576._.js → [root-of-the-server]__f62d412e._.js} +2 -2
  205. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__756711b8._.js → [root-of-the-server]__f63d6594._.js} +2 -2
  206. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__46de03a9._.js → [root-of-the-server]__febbd0b8._.js} +2 -2
  207. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__89c70d6f._.js → [root-of-the-server]__ff22a10e._.js} +2 -2
  208. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_a88b4884._.js → _02c78cac._.js} +3 -3
  209. package/cloud-runtime/standalone/.next/server/chunks/ssr/{node_modules_next_dist_08570d7f._.js → _0b36c9d6._.js} +3 -3
  210. package/cloud-runtime/standalone/.next/server/chunks/ssr/_0ff7c687._.js +3 -3
  211. package/cloud-runtime/standalone/.next/server/chunks/ssr/_0ffd2660._.js +2 -2
  212. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_37435df3._.js → _173da79d._.js} +3 -3
  213. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_4fe611fe._.js → _1c58ab2d._.js} +3 -3
  214. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_a19a362a._.js → _222af282._.js} +3 -3
  215. package/cloud-runtime/standalone/.next/server/chunks/ssr/_27cb3359._.js +95 -0
  216. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_8ebf36f6._.js → _3aa32c11._.js} +3 -3
  217. package/cloud-runtime/standalone/.next/server/chunks/ssr/_43472af3._.js +3 -0
  218. package/cloud-runtime/standalone/.next/server/chunks/ssr/_4b5d7c9b._.js +95 -0
  219. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_c52176ad._.js → _4d4ba84b._.js} +3 -3
  220. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_194cda6c._.js → _50d04b8f._.js} +3 -3
  221. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_a8eaf6bc._.js → _629dc55c._.js} +3 -3
  222. package/cloud-runtime/standalone/.next/server/chunks/ssr/_6a367524._.js +1 -1
  223. package/cloud-runtime/standalone/.next/server/chunks/ssr/_93914ecd._.js +2 -2
  224. package/cloud-runtime/standalone/.next/server/chunks/ssr/_94effa0f._.js +1 -1
  225. package/cloud-runtime/standalone/.next/server/chunks/ssr/_a696e9b3._.js +95 -0
  226. package/cloud-runtime/standalone/.next/server/chunks/ssr/_ae20456d._.js +4 -0
  227. package/cloud-runtime/standalone/.next/server/chunks/ssr/_c838f593._.js +95 -0
  228. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cd5e154b._.js +1 -1
  229. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_fc18d7b5._.js → _e04b4053._.js} +3 -3
  230. package/cloud-runtime/standalone/.next/server/chunks/ssr/_e1769638._.js +3 -3
  231. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_b9d3574c._.js → _f1465cc8._.js} +3 -3
  232. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_d4878ef1._.js → _f2a7beb1._.js} +3 -3
  233. package/cloud-runtime/standalone/.next/server/chunks/ssr/_fbced30b._.js +3 -0
  234. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_8d8836a8._.js → _fc1aaf9e._.js} +3 -3
  235. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_agents_[id]_page_tsx_9c49d8c8._.js +1 -1
  236. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_agents_page_tsx_f5f08ed8._.js +1 -1
  237. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_automations_page_tsx_3d732184._.js +1 -1
  238. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_execution-graph_page_tsx_f854185a._.js +2 -2
  239. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_global-error_tsx_9170b7a0._.js +3 -0
  240. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_projects_[slug]_page_tsx_e0fabf6e._.js +2 -2
  241. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_chat-ui_bfeda794._.js +5 -5
  242. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_thread_WorkspaceSidebar_tsx_e660301b._.js +1 -1
  243. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_next_dist_03ec2107._.js +4 -0
  244. package/cloud-runtime/standalone/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_d92e159d.js → node_modules_next_dist_esm_build_templates_app-page_61c49327.js} +3 -3
  245. package/cloud-runtime/standalone/.next/server/middleware-build-manifest.js +4 -4
  246. package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
  247. package/cloud-runtime/standalone/.next/server/pages/404.html +13 -1
  248. package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
  249. package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
  250. package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
  251. package/cloud-runtime/standalone/.next/static/chunks/{785cb91c31bb3303.js → 09f9eeea393db0fd.js} +3 -3
  252. package/cloud-runtime/standalone/.next/static/chunks/1184bf1bfdf97666.js +1 -0
  253. package/cloud-runtime/standalone/.next/static/chunks/2acd153dc5252e88.js +30 -0
  254. package/cloud-runtime/standalone/.next/static/chunks/2deeba875ec50761.js +1 -0
  255. package/cloud-runtime/standalone/.next/static/chunks/45b4d0ee5c92d45b.js +93 -0
  256. package/cloud-runtime/standalone/.next/static/chunks/5ace4b4f4475962a.js +1 -0
  257. package/cloud-runtime/standalone/.next/static/chunks/616d66dbec9e4b8b.js +93 -0
  258. package/cloud-runtime/standalone/.next/static/chunks/64f812259cf8c243.js +18 -0
  259. package/cloud-runtime/standalone/.next/static/chunks/6dbf5940e30fa9c7.js +1 -0
  260. package/cloud-runtime/standalone/.next/static/chunks/7d4c1d97169c8522.js +1 -0
  261. package/cloud-runtime/standalone/.next/static/chunks/7f13efe9329d3f97.js +1 -0
  262. package/cloud-runtime/standalone/.next/static/chunks/80219bbddcf65109.js +1 -0
  263. package/cloud-runtime/standalone/.next/static/chunks/{47ef8bb2118ea917.js → 86ace6febb11ad71.js} +1 -1
  264. package/cloud-runtime/standalone/.next/static/chunks/{90c7dbc004f59a42.js → 88e24940a5d5d386.js} +1 -1
  265. package/cloud-runtime/standalone/.next/static/chunks/9d50c2514f72d926.css +1 -0
  266. package/cloud-runtime/standalone/.next/static/chunks/b079c677d9b39f98.js +5 -0
  267. package/cloud-runtime/standalone/.next/static/chunks/b4e298542d366e31.js +93 -0
  268. package/cloud-runtime/standalone/.next/static/chunks/b88352740262931f.js +6 -0
  269. package/cloud-runtime/standalone/.next/static/chunks/bd6c5b5b4fbd6413.css +2 -0
  270. package/cloud-runtime/standalone/.next/static/chunks/c5609fd2abb65850.js +1 -0
  271. package/cloud-runtime/standalone/.next/static/chunks/{7ca3e4f9ed7425a8.js → d95cd010361834be.js} +1 -1
  272. package/cloud-runtime/standalone/.next/static/chunks/da434b1ad885d636.js +30 -0
  273. package/cloud-runtime/standalone/.next/static/chunks/e44264686aa5ecbf.js +93 -0
  274. package/cloud-runtime/standalone/.next/static/chunks/eab1c7d0246592f8.js +8 -0
  275. package/cloud-runtime/standalone/.next/static/chunks/f7bbf5cfcfed8ba9.js +1 -0
  276. package/cloud-runtime/standalone/.next/static/chunks/{turbopack-92401168917c21f2.js → turbopack-5b5918f610666d2d.js} +1 -1
  277. package/cloud-runtime/standalone/README.md +15 -3
  278. package/cloud-runtime/standalone/app/agents/[id]/page.tsx +147 -147
  279. package/cloud-runtime/standalone/app/agents/page.tsx +101 -101
  280. package/cloud-runtime/standalone/app/api/filesystem/browse/route.ts +39 -0
  281. package/cloud-runtime/standalone/app/api/status/route.ts +1 -1
  282. package/cloud-runtime/standalone/app/api/threads/route.ts +4 -5
  283. package/cloud-runtime/standalone/app/automations/page.tsx +1 -1
  284. package/cloud-runtime/standalone/app/execution-graph/page.tsx +86 -86
  285. package/cloud-runtime/standalone/app/global-error.tsx +54 -0
  286. package/cloud-runtime/standalone/app/globals.css +165 -59
  287. package/cloud-runtime/standalone/app/layout.tsx +17 -0
  288. package/cloud-runtime/standalone/app/projects/[slug]/layout.tsx +1 -1
  289. package/cloud-runtime/standalone/app/projects/[slug]/page.tsx +58 -58
  290. package/cloud-runtime/standalone/app/status/page.tsx +20 -20
  291. package/cloud-runtime/standalone/app/welcome/page.tsx +20 -15
  292. package/cloud-runtime/standalone/components/AutomationsBoard.tsx +1 -1
  293. package/cloud-runtime/standalone/components/ClientOnly.tsx +17 -0
  294. package/cloud-runtime/standalone/components/ConsentToggle/index.tsx +3 -3
  295. package/cloud-runtime/standalone/components/ContextMenu.tsx +123 -0
  296. package/cloud-runtime/standalone/components/DaemonBar.tsx +9 -9
  297. package/cloud-runtime/standalone/components/DirectoryBrowser.tsx +140 -0
  298. package/cloud-runtime/standalone/components/FirstRunModal/index.tsx +10 -10
  299. package/cloud-runtime/standalone/components/KanbanBoard.tsx +9 -9
  300. package/cloud-runtime/standalone/components/OfflineIndicator.tsx +149 -0
  301. package/cloud-runtime/standalone/components/ProjectModal.tsx +32 -8
  302. package/cloud-runtime/standalone/components/TaskCard.tsx +3 -3
  303. package/cloud-runtime/standalone/components/WorkspaceRootsList/index.tsx +57 -35
  304. package/cloud-runtime/standalone/components/chat-ui/AttachmentTray.tsx +7 -7
  305. package/cloud-runtime/standalone/components/chat-ui/ChatContainer.tsx +218 -121
  306. package/cloud-runtime/standalone/components/chat-ui/ChatPreview.tsx +4 -4
  307. package/cloud-runtime/standalone/components/chat-ui/CommandPopover.tsx +4 -4
  308. package/cloud-runtime/standalone/components/chat-ui/Composer.tsx +65 -29
  309. package/cloud-runtime/standalone/components/chat-ui/FileMentionPopover.tsx +4 -4
  310. package/cloud-runtime/standalone/components/chat-ui/FileMentionPopoverItem.tsx +9 -9
  311. package/cloud-runtime/standalone/components/chat-ui/LogPanel.tsx +5 -5
  312. package/cloud-runtime/standalone/components/chat-ui/Markdown.tsx +11 -11
  313. package/cloud-runtime/standalone/components/chat-ui/MentionPopover.tsx +11 -11
  314. package/cloud-runtime/standalone/components/chat-ui/MessageAttachments.tsx +5 -5
  315. package/cloud-runtime/standalone/components/chat-ui/MessageBubble.tsx +6 -6
  316. package/cloud-runtime/standalone/components/chat-ui/MessageList.tsx +60 -135
  317. package/cloud-runtime/standalone/components/chat-ui/ParticipantBar.tsx +507 -263
  318. package/cloud-runtime/standalone/components/chat-ui/ProjectPicker.tsx +17 -17
  319. package/cloud-runtime/standalone/components/chat-ui/ReactionChip.tsx +1 -1
  320. package/cloud-runtime/standalone/components/chat-ui/SearchResults.tsx +14 -14
  321. package/cloud-runtime/standalone/components/chat-ui/StatusIndicator.tsx +7 -7
  322. package/cloud-runtime/standalone/components/chat-ui/TaskDraftCard.tsx +14 -14
  323. package/cloud-runtime/standalone/components/chat-ui/TaskStatusCard.tsx +10 -10
  324. package/cloud-runtime/standalone/components/chat-ui/ThreadMentionPopover.tsx +8 -8
  325. package/cloud-runtime/standalone/components/chat-ui/ThreadView.tsx +36 -33
  326. package/cloud-runtime/standalone/components/chat-ui/TypingIndicator.tsx +7 -7
  327. package/cloud-runtime/standalone/components/errors/StartupGuardWrapper.tsx +96 -0
  328. package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +83 -111
  329. package/cloud-runtime/standalone/fix-primary.js +30 -0
  330. package/cloud-runtime/standalone/fix-theme.js +78 -0
  331. package/cloud-runtime/standalone/hooks/useKeyboardShortcuts.ts +131 -0
  332. package/cloud-runtime/standalone/lib/history-store.ts +6 -1
  333. package/cloud-runtime/standalone/lib/storage/thread-adapter.ts +3 -3
  334. package/cloud-runtime/standalone/state/windowState.ts +179 -0
  335. package/cloud-runtime/standalone/styles/workspaceSidebar.css +89 -94
  336. package/cloud-runtime/standalone/tsconfig.tsbuildinfo +1 -1
  337. package/package.json +5 -1
  338. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ea3dff5._.js +0 -3
  339. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__931817d6._.js +0 -3
  340. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__d2c48923._.js +0 -3
  341. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__e68a6e30._.js +0 -3
  342. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__fad8b80a._.js +0 -3
  343. package/cloud-runtime/standalone/.next/server/chunks/ssr/_181427d4._.js +0 -95
  344. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7dbc349d._.js +0 -95
  345. package/cloud-runtime/standalone/.next/server/chunks/ssr/_8bbe2ac1._.js +0 -3
  346. package/cloud-runtime/standalone/.next/server/chunks/ssr/_a17cabe8._.js +0 -95
  347. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cf5fdbfb._.js +0 -3
  348. package/cloud-runtime/standalone/.next/server/chunks/ssr/_e05b04a5._.js +0 -4
  349. package/cloud-runtime/standalone/.next/server/chunks/ssr/_f2970e5f._.js +0 -4
  350. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js +0 -3
  351. package/cloud-runtime/standalone/.next/static/chunks/047593c886feba72.css +0 -2
  352. package/cloud-runtime/standalone/.next/static/chunks/0c589ec8063c3a1f.js +0 -30
  353. package/cloud-runtime/standalone/.next/static/chunks/1826707bd2f73ca6.js +0 -8
  354. package/cloud-runtime/standalone/.next/static/chunks/2a3594d4cb2efe79.css +0 -1
  355. package/cloud-runtime/standalone/.next/static/chunks/32f13ace6661115d.js +0 -93
  356. package/cloud-runtime/standalone/.next/static/chunks/3b0a3b913dd15028.js +0 -30
  357. package/cloud-runtime/standalone/.next/static/chunks/4ee6151684568990.js +0 -93
  358. package/cloud-runtime/standalone/.next/static/chunks/5aad4adabb65cd20.js +0 -1
  359. package/cloud-runtime/standalone/.next/static/chunks/5f5ae2ea4fa2b8f0.js +0 -12
  360. package/cloud-runtime/standalone/.next/static/chunks/6bb1ecbc3b80922c.js +0 -1
  361. package/cloud-runtime/standalone/.next/static/chunks/7657d70cc0c40c81.js +0 -6
  362. package/cloud-runtime/standalone/.next/static/chunks/78f6cef7d2129d30.js +0 -1
  363. package/cloud-runtime/standalone/.next/static/chunks/7f2513325b592f25.js +0 -18
  364. package/cloud-runtime/standalone/.next/static/chunks/81704a1c525bf2ee.js +0 -1
  365. package/cloud-runtime/standalone/.next/static/chunks/8b658ccf17b771b9.js +0 -1
  366. package/cloud-runtime/standalone/.next/static/chunks/b39122b85655e5b0.js +0 -1
  367. package/cloud-runtime/standalone/.next/static/chunks/b8ca4cb386211980.js +0 -5
  368. package/cloud-runtime/standalone/.next/static/chunks/e103488c85a7b445.js +0 -1
  369. package/cloud-runtime/standalone/.next/static/chunks/e355ac901e70f43d.js +0 -1
  370. package/cloud-runtime/standalone/.next/static/chunks/ebebe08434070698.js +0 -93
  371. /package/cloud-runtime/standalone/.next/static/{R2CPNTvy5domQF90j_DYV → HOfhTqGoYN6GjsW9CCf3t}/_buildManifest.js +0 -0
  372. /package/cloud-runtime/standalone/.next/static/{R2CPNTvy5domQF90j_DYV → HOfhTqGoYN6GjsW9CCf3t}/_clientMiddlewareManifest.json +0 -0
  373. /package/cloud-runtime/standalone/.next/static/{R2CPNTvy5domQF90j_DYV → HOfhTqGoYN6GjsW9CCf3t}/_ssgManifest.js +0 -0
@@ -46,7 +46,13 @@ const THREAD_MENTION_LISTBOX_ID = "composer-thread-mention-listbox";
46
46
  const THREAD_MENTION_OPTION_ID_PREFIX = "composer-thread-mention-option";
47
47
 
48
48
  interface Props {
49
- onSend: (message: string, maxRounds: number, attachmentIds?: string[], attachments?: Attachment[]) => void;
49
+ onSend: (
50
+ message: string,
51
+ maxRounds: number,
52
+ attachmentIds?: string[],
53
+ attachments?: Attachment[],
54
+ pinnedParticipantId?: string
55
+ ) => void;
50
56
  onStop: () => void;
51
57
  loading: boolean;
52
58
  /** Whether autonomous mode is currently active */
@@ -112,6 +118,7 @@ export function Composer({
112
118
  onAutoModeChange,
113
119
  }: Props) {
114
120
  const [maxRounds, setMaxRounds] = useState(10);
121
+ const [pinnedParticipantId, setPinnedParticipantId] = useState<string | null>(null);
115
122
  const fileInputRef = useRef<HTMLInputElement>(null);
116
123
  const isComposingRef = useRef(false);
117
124
 
@@ -128,6 +135,12 @@ export function Composer({
128
135
  const attachments = useAttachments();
129
136
  const fileAttachments = useComposerAttachments();
130
137
 
138
+ useEffect(() => {
139
+ if (pinnedParticipantId && !participants.some((participant) => participant.id === pinnedParticipantId)) {
140
+ setPinnedParticipantId(null);
141
+ }
142
+ }, [participants, pinnedParticipantId]);
143
+
131
144
  // ─── Tiptap editor ─────────────────────────────────────────────────────────
132
145
 
133
146
  const editor = useEditor({
@@ -469,9 +482,10 @@ export function Composer({
469
482
 
470
483
  const ids = attachments.attachmentIds.length > 0 ? attachments.attachmentIds : undefined;
471
484
  const metas = ids ? attachments.getAttachmentMetas() : undefined;
472
- onSend(messageText, maxRounds, ids, metas);
485
+ onSend(messageText, maxRounds, ids, metas, pinnedParticipantId ?? undefined);
473
486
 
474
487
  editor.commands.clearContent();
488
+ setPinnedParticipantId(null);
475
489
  setThreadRefs([]);
476
490
  attachments.clear();
477
491
  fileAttachments.clearFilePaths();
@@ -495,20 +509,22 @@ export function Composer({
495
509
 
496
510
  // Compute whether editor has content for disabled state
497
511
  const editorIsEmpty = !editor || editor.isEmpty;
512
+ const turnsMeterWidth = `${Math.max(12, Math.min(100, Math.round((maxRounds / 50) * 100)))}%`;
513
+ const pinnedParticipant = participants.find((participant) => participant.id === pinnedParticipantId) ?? null;
498
514
 
499
515
  return (
500
516
  <div className="pb-6">
501
517
  <div className="max-w-3xl mx-auto">
502
518
  <ComposerDropZone onDrop={attachments.stageFiles}>
503
- <div className={`bg-white rounded-2xl border border-slate-200 shadow-xl shadow-slate-200/50 transition-all duration-300`}>
519
+ <div className={`bg-[var(--app-shell-elevated)] rounded-2xl border border-[var(--app-shell-border)] shadow-[0_8px_30px_rgb(0,0,0,0.12)] dark:shadow-[0_8px_30px_rgb(0,0,0,0.5)] transition-all duration-300`}>
504
520
  {/* Ship Mode header */}
505
521
  {onAutoModeChange && (
506
- <div className={`relative overflow-hidden border-b transition-all duration-500 ${autoMode ? "border-orange-200/50" : "border-slate-100"}`}>
522
+ <div className={`relative overflow-hidden border-b transition-all duration-500 ${autoMode ? "border-orange-200/50 dark:border-orange-500/30" : "border-[var(--app-shell-border)]"}`}>
507
523
  {/* Animated gradient background when active */}
508
524
  <div
509
525
  className={`absolute inset-0 transition-opacity duration-700 ${autoMode ? "opacity-100" : "opacity-0"}`}
510
526
  style={{
511
- background: "linear-gradient(120deg, #fff7ed 0%, #ffedd5 25%, #fed7aa 50%, #ffedd5 75%, #fff7ed 100%)",
527
+ background: "linear-gradient(120deg, var(--warning-muted) 0%, transparent 50%, var(--warning-muted) 100%)",
512
528
  backgroundSize: "200% 100%",
513
529
  animation: autoMode ? "shipBgSweep 4s ease-in-out infinite" : "none",
514
530
  }}
@@ -524,7 +540,8 @@ export function Composer({
524
540
  top: `${12 + i * 10}%`,
525
541
  right: "-10%",
526
542
  width: `${20 + (i % 3) * 15}%`,
527
- background: `linear-gradient(to left, transparent, rgba(251, 146, 60, ${0.15 + (i % 3) * 0.1}))`,
543
+ background: `linear-gradient(to left, transparent, var(--warning))`,
544
+ opacity: 0.3 + (i % 3) * 0.1,
528
545
  animation: `shipSpeedLine ${0.8 + (i % 4) * 0.3}s ${i * 0.1}s ease-in-out infinite`,
529
546
  }}
530
547
  />
@@ -535,31 +552,31 @@ export function Composer({
535
552
  <div className="flex items-center justify-between">
536
553
  <div className="flex items-center gap-2">
537
554
  <div
538
- className={`p-1 rounded-md transition-all duration-300 ${autoMode ? "bg-indigo-500 text-white shadow-md shadow-indigo-500/30" : "bg-slate-100 text-slate-400"}`}
555
+ className={`p-1 rounded-md transition-all duration-300 ${autoMode ? "bg-[var(--warning)] text-[var(--warning-muted)] shadow-md" : "bg-[var(--app-shell-subtle)] text-[var(--app-shell-muted)]"}`}
539
556
  style={autoMode ? { animation: "shipPulse 2s ease-in-out infinite" } : {}}
540
557
  >
541
558
  <Rocket size={14} />
542
559
  </div>
543
- <span className={`text-sm font-semibold transition-colors duration-300 ${autoMode ? "text-indigo-900" : "text-slate-800"}`}>Ship Mode</span>
544
- <span className={`text-xs transition-colors duration-300 ${autoMode ? "text-indigo-600/60" : "text-slate-400"}`}>|</span>
545
- <span className={`text-xs font-medium transition-colors duration-300 ${autoMode ? "text-indigo-700/70" : "text-slate-500"}`}>
560
+ <span className={`text-sm font-semibold transition-colors duration-300 ${autoMode ? "text-[var(--warning)]" : "text-[var(--foreground)]"}`}>Ship Mode</span>
561
+ <span className={`text-xs transition-colors duration-300 ${autoMode ? "text-[var(--warning)] opacity-60" : "text-[var(--app-shell-muted)] opacity-60"}`}>|</span>
562
+ <span className={`text-xs font-medium transition-colors duration-300 ${autoMode ? "text-[var(--warning)] opacity-80" : "text-[var(--app-shell-muted)]"}`}>
546
563
  {autoMode
547
- ? "Agents work continuously until this thread ships"
548
- : "Agents work continuously until this thread ships"}
564
+ ? "Continuous execution is active for this thread"
565
+ : "Continuous execution stays off until you enable it"}
549
566
  </span>
550
567
  </div>
551
568
  <button
552
569
  type="button"
553
570
  onClick={() => onAutoModeChange(!autoMode)}
554
- className={`relative inline-flex h-6 w-11 items-center rounded-full transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-orange-500 focus:ring-offset-2 ${autoMode ? "bg-orange-500" : "bg-slate-200"}`}
571
+ className={`relative inline-flex h-6 w-11 items-center rounded-full transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-[var(--warning)] focus:ring-offset-2 focus:ring-offset-[var(--background)] ${autoMode ? "bg-[var(--warning)]" : "bg-[var(--app-shell-border-strong)]"}`}
555
572
  >
556
- <span className={`inline-block h-4 w-4 transform rounded-full bg-white shadow-sm transition-transform duration-200 ${autoMode ? "translate-x-6" : "translate-x-1"}`} />
573
+ <span className={`inline-block h-4 w-4 transform rounded-full bg-[var(--app-shell-elevated)] shadow-sm transition-transform duration-200 ${autoMode ? "translate-x-6" : "translate-x-1"}`} />
557
574
  </button>
558
575
  </div>
559
576
  </div>
560
577
  </div>
561
578
  )}
562
- <div className="p-1.5 focus-within:ring-4 focus-within:ring-slate-900/5 transition-all">
579
+ <div className="p-1.5 focus-within:ring-4 focus-within:ring-[var(--app-shell-border-strong)] transition-all">
563
580
 
564
581
  {attachments.staged.length > 0 && (
565
582
  <div className="mx-2 mt-2 mb-1">
@@ -575,7 +592,7 @@ export function Composer({
575
592
  <button
576
593
  type="button"
577
594
  onClick={handleAttachClick}
578
- className="p-2.5 text-slate-400 hover:bg-slate-50 hover:text-slate-600 rounded-xl transition-all shrink-0"
595
+ className="p-2.5 text-[var(--app-shell-muted)] hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)] rounded-xl transition-all shrink-0"
579
596
  aria-label="Attach file"
580
597
  title="Attach file"
581
598
  >
@@ -643,7 +660,7 @@ export function Composer({
643
660
  <button
644
661
  type="button"
645
662
  onClick={onStop}
646
- className="h-10 px-4 bg-red-50 text-red-600 border border-red-200 rounded-xl font-bold text-sm hover:bg-red-100 shadow-sm flex items-center gap-2 transition-all shrink-0"
663
+ className="h-10 px-4 bg-[var(--destructive-muted)] text-[var(--destructive)] border border-[var(--status-failed-border)] rounded-xl font-bold text-sm hover:opacity-90 shadow-sm flex items-center gap-2 transition-all shrink-0"
647
664
  >
648
665
  Stop
649
666
  </button>
@@ -652,7 +669,7 @@ export function Composer({
652
669
  type="button"
653
670
  onClick={handleSubmit}
654
671
  disabled={(editorIsEmpty && !attachments.hasUploaded && !fileAttachments.hasFilePaths) || uploadsInProgress}
655
- className="h-10 px-4 bg-slate-900 text-white rounded-xl font-bold text-sm hover:bg-slate-800 disabled:opacity-50 disabled:hover:bg-slate-900 disabled:cursor-not-allowed shadow-md flex items-center gap-2 transition-all shrink-0"
672
+ className="h-10 px-4 bg-[var(--primary)] text-[var(--primary-foreground)] rounded-xl font-bold text-sm hover:bg-[var(--primary-hover)] disabled:opacity-50 disabled:cursor-not-allowed shadow-md flex items-center gap-2 transition-all shrink-0"
656
673
  >
657
674
  Send
658
675
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>
@@ -661,22 +678,22 @@ export function Composer({
661
678
  </div>
662
679
 
663
680
  {/* Meta Footer */}
664
- <div className="px-4 pb-2.5 pt-1 flex items-center justify-between border-t border-slate-100 mt-1">
681
+ <div className="px-4 pb-2.5 pt-1 flex items-center justify-between border-t border-[var(--app-shell-border)] mt-1">
665
682
  <div className="flex items-center gap-4">
666
683
  {/* Turn Limit — progress bar + selector */}
667
684
  <div className="flex items-center gap-2">
668
- <span className="text-[10px] font-bold text-slate-400 uppercase tracking-wider">Turns</span>
685
+ <span className="text-[10px] font-bold text-[var(--app-shell-muted)] uppercase tracking-wider">Turns</span>
669
686
  <div className="flex items-center gap-1.5">
670
- <div className="h-1.5 w-14 bg-slate-100 rounded-full overflow-hidden">
687
+ <div className="h-1.5 w-14 bg-[var(--app-shell-border)] rounded-full overflow-hidden">
671
688
  <div
672
- className="h-full rounded-full transition-all duration-500 bg-indigo-500"
673
- style={{ width: "0%" }}
689
+ className="h-full rounded-full transition-all duration-500 bg-[var(--primary)]"
690
+ style={{ width: turnsMeterWidth }}
674
691
  />
675
692
  </div>
676
693
  <select
677
694
  value={maxRounds}
678
695
  onChange={(e) => setMaxRounds(Number(e.target.value))}
679
- className="bg-transparent border-none outline-none text-xs font-semibold text-slate-600 cursor-pointer appearance-none hover:text-indigo-600 transition-colors"
696
+ className="bg-transparent border-none outline-none text-xs font-semibold text-[var(--app-shell-muted)] cursor-pointer appearance-none hover:text-[var(--primary)] transition-colors"
680
697
  >
681
698
  {[1, 3, 5, 10, 20, 50].map((n) => (
682
699
  <option key={n} value={n}>{n}</option>
@@ -685,17 +702,31 @@ export function Composer({
685
702
  </div>
686
703
  </div>
687
704
 
688
- <div className="w-px h-4 bg-slate-100" />
705
+ <div className="w-px h-4 bg-[var(--app-shell-border)]" />
689
706
 
690
707
  {/* Agent Status — overlapping avatars with activity dots */}
691
708
  <div className="flex items-center -space-x-1.5">
692
709
  {participants.length === 0 ? (
693
- <span className="text-[10px] font-medium text-slate-400">No agents</span>
710
+ <span className="text-[10px] font-medium text-[var(--app-shell-muted)]">No agents</span>
694
711
  ) : (
695
712
  participants.map(p => (
696
713
  <div
697
714
  key={p.id}
698
- className="relative w-6 h-6 rounded-full bg-slate-100 border-2 border-white shadow-sm flex items-center justify-center overflow-visible shrink-0 hover:-translate-y-0.5 transition-transform cursor-pointer"
715
+ role="button"
716
+ tabIndex={0}
717
+ aria-pressed={pinnedParticipantId === p.id}
718
+ onClick={() => setPinnedParticipantId((current) => current === p.id ? null : p.id)}
719
+ onKeyDown={(event) => {
720
+ if (event.key === "Enter" || event.key === " ") {
721
+ event.preventDefault();
722
+ setPinnedParticipantId((current) => current === p.id ? null : p.id);
723
+ }
724
+ }}
725
+ className={`relative w-6 h-6 rounded-full bg-[var(--app-shell-subtle)] border-2 border-[var(--app-shell-elevated)] shadow-sm flex items-center justify-center overflow-visible shrink-0 transition-all cursor-pointer ${
726
+ pinnedParticipantId === p.id
727
+ ? "-translate-y-0.5 ring-2 ring-[var(--ring)] ring-offset-1 ring-offset-[var(--background)]"
728
+ : "hover:-translate-y-0.5"
729
+ }`}
699
730
  title={p.name}
700
731
  >
701
732
  <img
@@ -704,7 +735,7 @@ export function Composer({
704
735
  className="w-full h-full rounded-full object-cover"
705
736
  />
706
737
  {loading && (
707
- <span className="absolute -bottom-0.5 -right-0.5 w-2 h-2 bg-emerald-400 border border-white rounded-full" />
738
+ <span className="absolute -bottom-0.5 -right-0.5 w-2 h-2 bg-emerald-400 border border-[var(--app-shell-elevated)] rounded-full" />
708
739
  )}
709
740
  </div>
710
741
  ))
@@ -713,7 +744,12 @@ export function Composer({
713
744
  </div>
714
745
 
715
746
  {/* Status indicator */}
716
- <div className="flex items-center gap-1.5 text-slate-400">
747
+ <div className="flex items-center gap-2 text-[var(--app-shell-muted)]">
748
+ {pinnedParticipant && (
749
+ <span className="text-[10px] font-medium text-[var(--app-shell-muted)]">
750
+ Pinned: <span className="text-[var(--foreground)]">{pinnedParticipant.name}</span>
751
+ </span>
752
+ )}
717
753
  <span className="text-[10px] font-medium uppercase tracking-tight">
718
754
  {loading ? "Working" : "Ready"}
719
755
  </span>
@@ -67,7 +67,7 @@ export function FileMentionPopover({
67
67
  id={listboxId}
68
68
  aria-label="File suggestions"
69
69
  aria-activedescendant={activeOptionId}
70
- className="max-h-64 overflow-y-auto rounded-xl border border-zinc-200 bg-white shadow-lg"
70
+ className="max-h-64 overflow-y-auto rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg"
71
71
  >
72
72
  {/* Error state */}
73
73
  {error && !isLoading && (
@@ -80,7 +80,7 @@ export function FileMentionPopover({
80
80
  {/* Loading state — no stale results yet */}
81
81
  {!error && isLoading && suggestions.length === 0 && (
82
82
  <div
83
- className="flex items-center gap-2 px-3 py-3 text-sm text-zinc-400"
83
+ className="flex items-center gap-2 px-3 py-3 text-sm text-[var(--muted-foreground)]"
84
84
  aria-live="polite"
85
85
  aria-label="Searching for files"
86
86
  >
@@ -91,14 +91,14 @@ export function FileMentionPopover({
91
91
 
92
92
  {/* Empty state (done loading, no results) */}
93
93
  {!error && !isLoading && suggestions.length === 0 && (
94
- <div className="px-3 py-3 text-sm text-zinc-400" aria-live="polite">
94
+ <div className="px-3 py-3 text-sm text-[var(--muted-foreground)]" aria-live="polite">
95
95
  No results
96
96
  </div>
97
97
  )}
98
98
 
99
99
  {/* Stale-results loading indicator */}
100
100
  {!error && isLoading && suggestions.length > 0 && (
101
- <div className="flex items-center gap-1.5 px-3 py-1 text-xs text-zinc-400 border-b border-zinc-100">
101
+ <div className="flex items-center gap-1.5 px-3 py-1 text-xs text-[var(--muted-foreground)] border-b border-[var(--border)]">
102
102
  <Loader2 className="h-3 w-3 animate-spin" aria-hidden />
103
103
  <span aria-live="polite" aria-label="Updating results">Updating…</span>
104
104
  </div>
@@ -48,11 +48,11 @@ export function FileMentionPopoverItem({
48
48
  return (
49
49
  <div
50
50
  className={`flex items-center gap-2 px-3 py-2 text-sm transition-colors ${
51
- isActive ? "bg-blue-50" : "hover:bg-zinc-50"
51
+ isActive ? "bg-[var(--primary-muted)]" : "hover:bg-[var(--app-shell-subtle)]"
52
52
  }`}
53
53
  >
54
54
  {/* File/folder icon */}
55
- <span className="shrink-0 text-zinc-400" aria-hidden>
55
+ <span className="shrink-0 text-[var(--muted-foreground)]" aria-hidden>
56
56
  {isFolder ? (
57
57
  isActive ? (
58
58
  <FolderOpen className="h-4 w-4 text-amber-500" />
@@ -79,7 +79,7 @@ export function FileMentionPopoverItem({
79
79
  <span className="flex items-baseline gap-2">
80
80
  <span
81
81
  className={`block truncate font-mono text-xs ${
82
- isActive ? "text-zinc-900" : "text-zinc-700"
82
+ isActive ? "text-[var(--foreground)]" : "text-[var(--foreground)]"
83
83
  }`}
84
84
  >
85
85
  {displayPath}
@@ -87,19 +87,19 @@ export function FileMentionPopoverItem({
87
87
 
88
88
  {/* Recency badge */}
89
89
  {recency && (
90
- <span className="shrink-0 text-xs text-zinc-400">{recency}</span>
90
+ <span className="shrink-0 text-xs text-[var(--muted-foreground)]">{recency}</span>
91
91
  )}
92
92
  </span>
93
93
 
94
94
  {/* Folder manifest sub-line */}
95
95
  {isFolder && suggestion.manifest && (
96
- <span className="block text-xs text-zinc-400">
96
+ <span className="block text-xs text-[var(--muted-foreground)]">
97
97
  {suggestion.manifest.childCount} items ·{" "}
98
98
  {suggestion.manifest.sizeSummary}
99
99
  {isContentsMode ? (
100
- <span className="ml-1 font-medium text-blue-500">full tree</span>
100
+ <span className="ml-1 font-medium text-[var(--primary)]">full tree</span>
101
101
  ) : (
102
- <span className="ml-1 text-zinc-400">manifest</span>
102
+ <span className="ml-1 text-[var(--muted-foreground)]">manifest</span>
103
103
  )}
104
104
  </span>
105
105
  )}
@@ -109,7 +109,7 @@ export function FileMentionPopoverItem({
109
109
  {isFolder && !isContentsMode && (
110
110
  <button
111
111
  type="button"
112
- className="shrink-0 rounded px-1.5 py-0.5 text-xs text-zinc-400 hover:bg-zinc-100 hover:text-zinc-700 transition-colors"
112
+ className="shrink-0 rounded px-1.5 py-0.5 text-xs text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)] transition-colors"
113
113
  title="Attach full directory contents instead of manifest"
114
114
  aria-label={`Attach full contents of ${displayPath}`}
115
115
  onMouseDown={(e) => e.preventDefault()}
@@ -120,7 +120,7 @@ export function FileMentionPopoverItem({
120
120
  </button>
121
121
  )}
122
122
  {isFolder && isContentsMode && (
123
- <span className="shrink-0 rounded bg-blue-50 px-1.5 py-0.5 text-xs font-medium text-blue-600">
123
+ <span className="shrink-0 rounded bg-[var(--primary-muted)] px-1.5 py-0.5 text-xs font-medium text-[var(--primary)]">
124
124
  full tree
125
125
  </span>
126
126
  )}
@@ -59,7 +59,7 @@ export function LogPanel({ logs, participants, onClear, open, onToggle }: Props)
59
59
  </div>
60
60
  <div className="flex flex-col bg-zinc-950 h-full" style={{ width }}>
61
61
  <div className="flex items-center gap-2 px-3 py-1.5 border-b border-zinc-800 shrink-0">
62
- <span className="text-[11px] text-zinc-400 font-mono">Logs</span>
62
+ <span className="text-[11px] text-[var(--muted-foreground)] font-mono">Logs</span>
63
63
  <select
64
64
  value={filter || ""}
65
65
  onChange={(e) => setFilter(e.target.value || null)}
@@ -73,13 +73,13 @@ export function LogPanel({ logs, participants, onClear, open, onToggle }: Props)
73
73
  <div className="ml-auto flex items-center gap-2">
74
74
  <button
75
75
  onClick={onClear}
76
- className="text-[11px] text-zinc-500 hover:text-zinc-300"
76
+ className="text-[11px] text-[var(--muted-foreground)] hover:text-zinc-300"
77
77
  >
78
78
  Clear
79
79
  </button>
80
80
  <button
81
81
  onClick={onToggle}
82
- className="text-[11px] text-zinc-500 hover:text-zinc-300"
82
+ className="text-[11px] text-[var(--muted-foreground)] hover:text-zinc-300"
83
83
  >
84
84
 
85
85
  </button>
@@ -92,11 +92,11 @@ export function LogPanel({ logs, participants, onClear, open, onToggle }: Props)
92
92
  const isErr = entry.stream === "stderr";
93
93
  return (
94
94
  <div key={i} className="flex gap-2 whitespace-pre-wrap break-all">
95
- <span className="text-zinc-600 shrink-0 select-none">
95
+ <span className="text-[var(--muted-foreground)] shrink-0 select-none">
96
96
  {new Date(entry.timestamp).toLocaleTimeString([], { hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit" })}
97
97
  </span>
98
98
  <span className="shrink-0" style={{ color }}>{name}</span>
99
- <span className={isErr ? "text-red-400" : "text-zinc-400"}>
99
+ <span className={isErr ? "text-red-400" : "text-[var(--muted-foreground)]"}>
100
100
  {entry.line}
101
101
  </span>
102
102
  </div>
@@ -46,11 +46,11 @@ const components: Components = {
46
46
  },
47
47
  pre: ({ children }) => <>{children}</>,
48
48
  blockquote: ({ children }) => (
49
- <blockquote className="border-l-[3px] border-zinc-300 pl-3 my-3 text-zinc-600">
49
+ <blockquote className="border-l-[3px] border-[var(--border)] pl-3 my-3 text-[var(--muted-foreground)]">
50
50
  {children}
51
51
  </blockquote>
52
52
  ),
53
- hr: () => <hr className="my-4 border-zinc-200" />,
53
+ hr: () => <hr className="my-4 border-[var(--border)]" />,
54
54
  a: ({ children, href }) => (
55
55
  <a href={href} className="text-blue-600 underline underline-offset-2" target="_blank" rel="noopener noreferrer">
56
56
  {children}
@@ -61,12 +61,12 @@ const components: Components = {
61
61
  <table className="min-w-full text-sm border-collapse">{children}</table>
62
62
  </div>
63
63
  ),
64
- thead: ({ children }) => <thead className="bg-zinc-100">{children}</thead>,
64
+ thead: ({ children }) => <thead className="bg-[var(--muted)]">{children}</thead>,
65
65
  th: ({ children }) => (
66
- <th className="border border-zinc-200 px-3 py-1.5 text-left text-xs font-semibold text-zinc-600">{children}</th>
66
+ <th className="border border-[var(--border)] px-3 py-1.5 text-left text-xs font-semibold text-[var(--muted-foreground)]">{children}</th>
67
67
  ),
68
68
  td: ({ children }) => (
69
- <td className="border border-zinc-200 px-3 py-1.5">{children}</td>
69
+ <td className="border border-[var(--border)] px-3 py-1.5">{children}</td>
70
70
  ),
71
71
  };
72
72
 
@@ -83,13 +83,13 @@ const userComponents: Components = {
83
83
  const isBlock = className?.includes("language-");
84
84
  if (isBlock) {
85
85
  return (
86
- <pre className="bg-white/[0.12] rounded-lg p-3 my-3 overflow-x-auto border border-white/[0.08]">
86
+ <pre className="bg-[var(--card-bg)]/[0.12] rounded-lg p-3 my-3 overflow-x-auto border border-white/[0.08]">
87
87
  <code className="text-[13px] leading-relaxed font-mono">{children}</code>
88
88
  </pre>
89
89
  );
90
90
  }
91
91
  return (
92
- <code className="bg-white/[0.15] rounded-md px-1.5 py-0.5 text-[13px] font-mono">
92
+ <code className="bg-[var(--card-bg)]/[0.15] rounded-md px-1.5 py-0.5 text-[13px] font-mono">
93
93
  {children}
94
94
  </code>
95
95
  );
@@ -110,7 +110,7 @@ const userComponents: Components = {
110
110
  <table className="min-w-full text-sm border-collapse">{children}</table>
111
111
  </div>
112
112
  ),
113
- thead: ({ children }) => <thead className="bg-white/[0.08]">{children}</thead>,
113
+ thead: ({ children }) => <thead className="bg-[var(--card-bg)]/[0.08]">{children}</thead>,
114
114
  th: ({ children }) => (
115
115
  <th className="border border-white/20 px-3 py-1.5 text-left text-xs font-semibold">{children}</th>
116
116
  ),
@@ -170,12 +170,12 @@ export function Markdown({ content, isUser }: Props) {
170
170
  return (
171
171
  <details
172
172
  key={i}
173
- className="my-2 rounded-lg bg-zinc-500/[0.06] border border-zinc-200/60"
173
+ className="my-2 rounded-lg bg-[var(--muted)] border border-[var(--border)]/60"
174
174
  >
175
- <summary className="cursor-pointer select-none px-3 py-1.5 text-[11px] font-medium text-zinc-400 hover:text-zinc-500 transition-colors">
175
+ <summary className="cursor-pointer select-none px-3 py-1.5 text-[11px] font-medium text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)] transition-colors">
176
176
  Thought process
177
177
  </summary>
178
- <div className="px-3 pb-2.5 text-[12px] leading-relaxed text-zinc-400">
178
+ <div className="px-3 pb-2.5 text-[12px] leading-relaxed text-[var(--muted-foreground)]">
179
179
  <ReactMarkdown remarkPlugins={[remarkGfm]} components={comps}>{seg.content}</ReactMarkdown>
180
180
  </div>
181
181
  </details>
@@ -46,7 +46,7 @@ export function MentionPopover({
46
46
  role="listbox"
47
47
  id={listboxId}
48
48
  aria-label="Mention suggestions"
49
- className="max-h-56 overflow-y-auto rounded-xl border border-zinc-200 bg-white shadow-lg"
49
+ className="max-h-56 overflow-y-auto rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg"
50
50
  >
51
51
  {suggestions.map((suggestion, index) => {
52
52
  const isActive = index === activeIndex;
@@ -63,7 +63,7 @@ export function MentionPopover({
63
63
  if (group && !renderedGroups.has(group)) {
64
64
  renderedGroups.add(group);
65
65
  groupHeader = (
66
- <div className="px-3 py-1.5 text-[10px] font-bold uppercase tracking-wider text-zinc-400 bg-zinc-50 border-t border-zinc-100 first:border-t-0">
66
+ <div className="px-3 py-1.5 text-[10px] font-bold uppercase tracking-wider text-[var(--muted-foreground)] bg-[var(--app-shell-subtle)] border-t border-[var(--border)] first:border-t-0">
67
67
  {group}
68
68
  </div>
69
69
  );
@@ -82,7 +82,7 @@ export function MentionPopover({
82
82
  optionRefs.current[index] = element;
83
83
  }}
84
84
  className={`w-full px-3 py-2 text-left text-sm transition-colors ${
85
- isActive ? "bg-blue-50 text-zinc-900" : "text-zinc-700 hover:bg-zinc-50"
85
+ isActive ? "bg-[var(--primary-muted)] text-[var(--foreground)]" : "text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"
86
86
  }`}
87
87
  onMouseDown={(e) => {
88
88
  e.preventDefault();
@@ -90,9 +90,9 @@ export function MentionPopover({
90
90
  onClick={() => onSelect(suggestion)}
91
91
  >
92
92
  <span className="inline-flex items-center gap-2">
93
- <Users className="h-3.5 w-3.5 text-zinc-500" aria-hidden />
93
+ <Users className="h-3.5 w-3.5 text-[var(--muted-foreground)]" aria-hidden />
94
94
  <span className="font-medium">{suggestion.project.name}</span>
95
- <span className="text-xs text-zinc-400">
95
+ <span className="text-xs text-[var(--muted-foreground)]">
96
96
  {suggestion.project.agents.length} agent{suggestion.project.agents.length !== 1 ? "s" : ""}
97
97
  </span>
98
98
  </span>
@@ -114,7 +114,7 @@ export function MentionPopover({
114
114
  optionRefs.current[index] = element;
115
115
  }}
116
116
  className={`w-full px-3 py-2 text-left text-sm transition-colors ${
117
- isActive ? "bg-blue-50 text-zinc-900" : "text-zinc-700 hover:bg-zinc-50"
117
+ isActive ? "bg-[var(--primary-muted)] text-[var(--foreground)]" : "text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"
118
118
  }`}
119
119
  onMouseDown={(e) => {
120
120
  e.preventDefault();
@@ -122,9 +122,9 @@ export function MentionPopover({
122
122
  onClick={() => onSelect(suggestion)}
123
123
  >
124
124
  <span className="inline-flex items-center gap-2">
125
- <FolderKanban className="h-3.5 w-3.5 text-zinc-500" aria-hidden />
125
+ <FolderKanban className="h-3.5 w-3.5 text-[var(--muted-foreground)]" aria-hidden />
126
126
  <span className="font-medium">{suggestion.project.name}</span>
127
- <span className="text-xs text-zinc-400">{suggestion.project.slug}</span>
127
+ <span className="text-xs text-[var(--muted-foreground)]">{suggestion.project.slug}</span>
128
128
  </span>
129
129
  </button>
130
130
  </div>
@@ -144,7 +144,7 @@ export function MentionPopover({
144
144
  optionRefs.current[index] = element;
145
145
  }}
146
146
  className={`w-full px-3 py-2 text-left text-sm transition-colors ${
147
- isActive ? "bg-blue-50 text-zinc-900" : "text-zinc-700 hover:bg-zinc-50"
147
+ isActive ? "bg-[var(--primary-muted)] text-[var(--foreground)]" : "text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"
148
148
  }${group ? " pl-6" : ""}`}
149
149
  onMouseDown={(e) => {
150
150
  e.preventDefault();
@@ -159,9 +159,9 @@ export function MentionPopover({
159
159
  />
160
160
  <span className="font-medium">{participant.name}</span>
161
161
  {participant.id === "all" ? (
162
- <span className="text-xs text-zinc-400">All participants</span>
162
+ <span className="text-xs text-[var(--muted-foreground)]">All participants</span>
163
163
  ) : participant.model && (
164
- <span className="text-xs text-zinc-400">{participant.model}</span>
164
+ <span className="text-xs text-[var(--muted-foreground)]">{participant.model}</span>
165
165
  )}
166
166
  </span>
167
167
  </button>
@@ -34,7 +34,7 @@ export function MessageAttachments({ attachments, compact = false }: Props) {
34
34
  href={att.url}
35
35
  target="_blank"
36
36
  rel="noopener noreferrer"
37
- className="block rounded-lg overflow-hidden border border-slate-200 hover:border-slate-300 transition-colors"
37
+ className="block rounded-lg overflow-hidden border border-[var(--border)] hover:border-[var(--border)] transition-colors"
38
38
  >
39
39
  <img
40
40
  src={att.url}
@@ -55,14 +55,14 @@ export function MessageAttachments({ attachments, compact = false }: Props) {
55
55
  key={att.id}
56
56
  href={att.url}
57
57
  download={att.filename}
58
- className={`inline-flex items-center gap-1.5 rounded-md border border-slate-200 bg-slate-50 text-slate-600 hover:bg-slate-100 hover:border-slate-300 transition-colors ${
58
+ className={`inline-flex items-center gap-1.5 rounded-md border border-[var(--border)] bg-[var(--app-shell-subtle)] text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:border-[var(--border)] transition-colors ${
59
59
  compact ? "px-2 py-0.5 text-[11px]" : "px-2.5 py-1 text-xs"
60
60
  }`}
61
61
  >
62
- <FileText className={`text-slate-400 shrink-0 ${compact ? "w-3 h-3" : "w-3.5 h-3.5"}`} />
62
+ <FileText className={`text-[var(--muted-foreground)] shrink-0 ${compact ? "w-3 h-3" : "w-3.5 h-3.5"}`} />
63
63
  <span className={`truncate ${compact ? "max-w-[100px]" : "max-w-[150px]"}`}>{att.filename}</span>
64
- <span className="text-slate-400 shrink-0">{formatSize(att.size)}</span>
65
- <Download className={`text-slate-400 shrink-0 ${compact ? "w-2.5 h-2.5" : "w-3 h-3"}`} />
64
+ <span className="text-[var(--muted-foreground)] shrink-0">{formatSize(att.size)}</span>
65
+ <Download className={`text-[var(--muted-foreground)] shrink-0 ${compact ? "w-2.5 h-2.5" : "w-3 h-3"}`} />
66
66
  </a>
67
67
  ))}
68
68
  </div>
@@ -58,11 +58,11 @@ export function MessageBubble({
58
58
  >
59
59
  {!(isUser && hideUserAvatarAndName) && (
60
60
  participantId && !isUser ? (
61
- <Link href={`/agents/${participantId}`} className={`w-9 h-9 rounded-full flex items-center justify-center shrink-0 bg-slate-100 overflow-hidden hover:ring-2 hover:ring-blue-300 transition-shadow`}>
61
+ <Link href={`/agents/${participantId}`} className={`w-9 h-9 rounded-full flex items-center justify-center shrink-0 bg-[var(--muted)] overflow-hidden hover:ring-2 hover:ring-blue-300 transition-shadow`}>
62
62
  <img src={agentAvatarUrl(participantId, 36, participantColor)} alt="" className="w-full h-full object-cover" />
63
63
  </Link>
64
64
  ) : (
65
- <div className={`w-9 h-9 rounded-full flex items-center justify-center shrink-0 ${isUser ? 'bg-slate-200 text-slate-600' : 'bg-slate-100 overflow-hidden'}`}>
65
+ <div className={`w-9 h-9 rounded-full flex items-center justify-center shrink-0 ${isUser ? 'bg-[var(--muted)] text-[var(--muted-foreground)]' : 'bg-[var(--muted)] overflow-hidden'}`}>
66
66
  <User className="w-5 h-5" />
67
67
  </div>
68
68
  )
@@ -85,13 +85,13 @@ export function MessageBubble({
85
85
  </span>
86
86
  )
87
87
  )}
88
- <span className="text-xs text-slate-400 font-medium">
88
+ <span className="text-xs text-[var(--muted-foreground)] font-medium">
89
89
  {formatTimestamp(message.timestamp)}
90
90
  </span>
91
91
  </div>
92
92
 
93
93
  <div
94
- className={`text-[15px] text-slate-800 leading-relaxed ${isUser ? "cursor-pointer hover:bg-slate-50/50 transition-colors rounded p-1 -mx-1" : ""}`}
94
+ className={`text-[15px] text-[var(--foreground)] leading-relaxed ${isUser ? "cursor-pointer hover:bg-[var(--app-shell-subtle)]/50 transition-colors rounded p-1 -mx-1" : ""}`}
95
95
  onClick={() => {
96
96
  if (isUser && onOpenThread) {
97
97
  onOpenThread(message.id);
@@ -112,7 +112,7 @@ export function MessageBubble({
112
112
  <button
113
113
  type="button"
114
114
  onClick={() => onReply(message.id)}
115
- className="flex items-center gap-1.5 px-2.5 py-1 text-slate-500 hover:text-slate-800 rounded-full hover:bg-slate-50 transition-colors text-xs font-semibold"
115
+ className="flex items-center gap-1.5 px-2.5 py-1 text-[var(--muted-foreground)] hover:text-[var(--foreground)] rounded-full hover:bg-[var(--app-shell-subtle)] transition-colors text-xs font-semibold"
116
116
  >
117
117
  <MessageSquare className="w-3 h-3" />
118
118
  Reply
@@ -123,7 +123,7 @@ export function MessageBubble({
123
123
  type="button"
124
124
  onClick={() => onSummarize(message.id)}
125
125
  disabled={summarizing}
126
- className="flex items-center gap-1.5 px-2.5 py-1 text-slate-500 hover:text-slate-800 rounded-full hover:bg-slate-50 transition-colors text-xs font-semibold disabled:opacity-50 disabled:cursor-not-allowed"
126
+ className="flex items-center gap-1.5 px-2.5 py-1 text-[var(--muted-foreground)] hover:text-[var(--foreground)] rounded-full hover:bg-[var(--app-shell-subtle)] transition-colors text-xs font-semibold disabled:opacity-50 disabled:cursor-not-allowed"
127
127
  >
128
128
  {summarizing ? <Loader2 className="w-3 h-3 animate-spin" /> : <FileText className="w-3 h-3" />}
129
129
  {summarizing ? "Summarizing…" : "Summarize"}