@mndrk/agx 2.0.55 → 2.0.56

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 (504) hide show
  1. package/README.md +5 -0
  2. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  3. package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +1 -0
  4. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  6. package/cloud-runtime/standalone/apps/local/.next/required-server-files.json +5 -0
  7. package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +8 -0
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js +2 -2
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +3 -2
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +17 -7
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +13 -13
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js +2 -2
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +4 -4
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +5 -5
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +5 -5
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +2 -2
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/app-paths-manifest.json +3 -0
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/build-manifest.json +18 -0
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/next-font-manifest.json +11 -0
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/react-loadable-manifest.json +1 -0
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/server-reference-manifest.json +4 -0
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js +14 -0
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.map +5 -0
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -0
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +3 -0
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +2 -2
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +3 -3
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  215. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  216. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  217. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  219. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  220. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  221. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  222. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  225. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  226. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  227. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  228. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  229. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  230. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  231. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  232. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  233. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  234. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +1 -0
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__09joc_o._.js +1 -1
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g50c6p._.js +237 -0
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0o315az._.js +1 -1
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0t2jk2r._.js +2 -2
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tdixb0._.js +49 -0
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0gvjvx7._.js → [root-of-the-server]__0xdp_8-._.js} +25 -25
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0y42h_~._.js +2 -2
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~fjhfa._.js +3 -0
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_12yasaj._.js +9 -0
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_022nz2u._.js +3 -0
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_0i1av_r._.js +11 -10
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0yvelwy.js +3 -0
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/02dz_local__next-internal_server_app_projects_[slug]_folders_page_actions_03fg4j9.js +3 -0
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0qzjdog._.js +3 -0
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0a-mbbj._.js +3 -0
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0e2_v_.._.js +3 -0
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0w3hl3p._.js +3 -0
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__07johgg._.js +3 -0
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__08d5c~o._.js +3 -0
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0_n~ybp._.js +3 -0
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0fl7_-o._.js +18 -0
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0h~rb5r._.js +3 -0
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r3w68h._.js +18 -0
  258. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0x7k~pk._.js +3 -0
  259. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0hd2vo4._.js → [root-of-the-server]__0y8j6el._.js} +2 -2
  260. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0yme9fy._.js +3 -0
  261. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~7q5sw._.js +3 -0
  262. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13eqcxp._.js +3 -0
  263. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0s~0ump._.js → _064h43p._.js} +2 -2
  264. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0742x_.._.js +3 -0
  265. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_09b42z9._.js → _09~glsn._.js} +2 -2
  266. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +3 -0
  267. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0fwy5tm._.js +7 -0
  268. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ndrb_0._.js +2 -2
  269. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +3 -0
  270. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ufdu.z._.js +7 -0
  271. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_03rf_sb._.js → _0wk3skw._.js} +2 -2
  272. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yffwm4._.js +2 -2
  273. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +3 -0
  274. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_04hvzn_._.js +3 -0
  275. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_4hk8x._.js +3 -0
  276. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +1 -1
  277. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +3 -0
  278. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0h3mfm7._.js +3 -0
  279. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0nvzo3y._.js +3 -0
  280. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +1 -1
  281. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_execution-graph_page_tsx_0tn2sx9._.js +2 -2
  282. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_0ju618z._.js +3 -0
  283. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_graph_[taskId]_page_tsx_0bctfd-._.js +1 -1
  284. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
  285. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +2 -2
  286. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
  287. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_page_tsx_06czvz-._.js +3 -0
  288. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +12 -12
  289. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_orphans_page_tsx_0sdv.11._.js +4 -4
  290. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TaskCard_tsx_0e35_z5._.js +6 -6
  291. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +3 -3
  292. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +4 -4
  293. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
  294. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mk0s0o.js +4 -0
  295. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  296. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  297. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
  298. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +4 -0
  299. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  300. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  301. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  302. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  303. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-_ukhpeg429c.js +16 -0
  304. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-olq~7zw3wjy.js +1 -0
  305. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0142ce0jj3j7r.js → 0-vo_x2cxmjm3.js} +1 -1
  306. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.4d8rshxivwh.js +20 -0
  307. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 00lise4d-u8d1.js} +1 -1
  308. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0~apd0q5_i88z.js → 02p3n7faotpr9.js} +2 -2
  309. package/cloud-runtime/standalone/apps/local/.next/static/chunks/02zcxdul-1jaf.js +28 -0
  310. package/cloud-runtime/standalone/apps/local/.next/static/chunks/055bzj5jfgzr0.js +1 -0
  311. package/cloud-runtime/standalone/apps/local/.next/static/chunks/05c-~4v_jrblf.css +1 -0
  312. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07646a0h94826.js +3 -0
  313. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08~pgzjb13k_v.js +5 -0
  314. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09wzd7y~tk-3~.js +1 -0
  315. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0px65ynyk3t1d.js → 0bchtyu6m.2yv.js} +7 -7
  316. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0brmd4~76pthy.js +20 -0
  317. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +1 -0
  318. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0.a4-dh~x9sa3.js → 0hudzktaaxr4g.js} +2 -2
  319. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{09-_2lcshmjl5.js → 0hzq698w6f4m6.js} +1 -1
  320. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0i.su2yr26wb6.js +37 -0
  321. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jonp-o8lh-4j.js +1 -0
  322. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jsbvcyub73d9.js +1 -0
  323. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l2pt2td_87wr.js +5 -0
  324. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +1 -0
  325. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lgb.0~i1xvv-.js +1 -0
  326. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lkal3uvr6_~2.js +1 -0
  327. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mvqoz13v0o2a.js +5 -0
  328. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0o9cxba_5mv2c.js +5 -0
  329. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p7s38p3bcffh.js +1 -0
  330. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0q2dgbluvgxf2.js +16 -0
  331. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +1 -0
  332. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0h_bwlg~kk8lz.js → 0rey9zfvm3yhd.js} +2 -2
  333. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ucg8e2wkd8gf.js +1 -0
  334. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0uve8xrt~0a2e.js +1 -0
  335. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0x_pewz9npq~q.js +1 -0
  336. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +1 -0
  337. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0ov5lu0tz2o2e.js → 104xjvrf6y-zq.js} +1 -1
  338. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0rm7v.1y6qcni.js → 11-u35xqxu~i-.js} +1 -1
  339. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +1 -0
  340. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0826uh6nmsi5l.js → 1503vb7lb6.g1.js} +1 -1
  341. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0o0hwfzwwty4b.js → 15jlly_p-g4c8.js} +2 -2
  342. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16nozeadjid9-.js +5 -0
  343. package/cloud-runtime/standalone/apps/local/.next/static/chunks/177-q0wwdi0qe.js +1 -0
  344. package/cloud-runtime/standalone/apps/local/agx-server.js +4055 -0
  345. package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +10 -2
  346. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.ts +16 -0
  347. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +8 -1
  348. package/cloud-runtime/standalone/apps/local/app/globals.css +67 -5
  349. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/folders/page.tsx +25 -0
  350. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +19 -5
  351. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/objectives/[objectiveId]/page.tsx +7 -2
  352. package/cloud-runtime/standalone/apps/local/bundled-server.ts +45 -0
  353. package/cloud-runtime/standalone/apps/local/components/ActionToolbar.tsx +5 -2
  354. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +35 -3
  355. package/cloud-runtime/standalone/apps/local/components/ContextMenu.tsx +2 -2
  356. package/cloud-runtime/standalone/apps/local/components/FloatingPanel.tsx +36 -14
  357. package/cloud-runtime/standalone/apps/local/components/IconButton.tsx +10 -2
  358. package/cloud-runtime/standalone/apps/local/components/KanbanBoard.tsx +84 -3
  359. package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +382 -13
  360. package/cloud-runtime/standalone/apps/local/components/LogTimeline.tsx +4 -1
  361. package/cloud-runtime/standalone/apps/local/components/NowRunningPanel.tsx +3 -1
  362. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +46 -6
  363. package/cloud-runtime/standalone/apps/local/components/SearchCombo.tsx +3 -3
  364. package/cloud-runtime/standalone/apps/local/components/SortableTaskCard.tsx +21 -3
  365. package/cloud-runtime/standalone/apps/local/components/StatusCircle.tsx +3 -3
  366. package/cloud-runtime/standalone/apps/local/components/TaskCard.tsx +51 -1
  367. package/cloud-runtime/standalone/apps/local/components/chat-ui/ChatContainer.tsx +15 -2
  368. package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +3 -3
  369. package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +76 -9
  370. package/cloud-runtime/standalone/apps/local/components/graph/ExecutionGraphPanel.tsx +4 -1
  371. package/cloud-runtime/standalone/apps/local/components/graph/GraphFirstView.tsx +6 -2
  372. package/cloud-runtime/standalone/apps/local/components/graph/NodeDetailPanel.tsx +29 -14
  373. package/cloud-runtime/standalone/apps/local/components/graph/NodeInspector.tsx +9 -6
  374. package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +16 -16
  375. package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +856 -0
  376. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveActivityTimeline.tsx +40 -32
  377. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +172 -49
  378. package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +4 -4
  379. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +347 -168
  380. package/cloud-runtime/standalone/apps/local/components/projects/ProjectSearchBar.tsx +4 -2
  381. package/cloud-runtime/standalone/apps/local/components/projects/ScheduledTasksSummaryCard.tsx +19 -19
  382. package/cloud-runtime/standalone/apps/local/components/projects/TeamsSummaryCard.tsx +10 -10
  383. package/cloud-runtime/standalone/apps/local/components/projects/TeamsView.tsx +50 -50
  384. package/cloud-runtime/standalone/apps/local/components/projects/WorkingNowCard.tsx +12 -12
  385. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectiveCard.tsx +13 -10
  386. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectivesSection.tsx +7 -7
  387. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathCard.tsx +2 -2
  388. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathsSection.tsx +9 -9
  389. package/cloud-runtime/standalone/apps/local/components/scheduling/ScheduleConditionPicker.tsx +3 -3
  390. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +211 -77
  391. package/cloud-runtime/standalone/apps/local/components/terminal/TerminalSessionList.tsx +3 -1
  392. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +72 -21
  393. package/cloud-runtime/standalone/apps/local/hooks/useInputCapabilities.ts +74 -0
  394. package/cloud-runtime/standalone/apps/local/lib/app-config.ts +35 -0
  395. package/cloud-runtime/standalone/apps/local/lib/pty-manager.ts +5 -1
  396. package/cloud-runtime/standalone/apps/local/lib/terminal-server.ts +182 -0
  397. package/cloud-runtime/standalone/apps/local/next.config.ts +2 -1
  398. package/cloud-runtime/standalone/apps/local/package.json +2 -2
  399. package/cloud-runtime/standalone/apps/local/playwright.config.ts +8 -0
  400. package/cloud-runtime/standalone/apps/local/server.js +1 -1
  401. package/cloud-runtime/standalone/apps/local/server.ts +14 -158
  402. package/cloud-runtime/standalone/apps/local/src/graph/types.ts +2 -0
  403. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/cron.ts +11 -0
  404. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +325 -88
  405. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +20 -0
  406. package/cloud-runtime/standalone/apps/local/state/windowState.ts +11 -0
  407. package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +65 -0
  408. package/cloud-runtime/standalone/apps/local/worker/index.js +0 -4
  409. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  410. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  411. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  412. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  413. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  414. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  415. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  416. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  417. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  418. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  419. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.node +0 -0
  420. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.pdb +0 -0
  421. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  422. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  423. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.dll +0 -0
  424. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.pdb +0 -0
  425. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  426. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  427. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  428. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  429. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  430. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  431. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
  432. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.pdb +0 -0
  433. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
  434. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  435. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
  436. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.pdb +0 -0
  437. package/lib/cli/daemon.js +13 -2
  438. package/lib/cli/onboarding.js +5 -6
  439. package/lib/cli/runCli.js +1 -1
  440. package/lib/cloud/client.js +1 -1
  441. package/lib/commands/chat.js +37 -11
  442. package/lib/commands/daemonBoard.js +19 -13
  443. package/lib/config/cloudConfig.js +1 -1
  444. package/lib/orchestrator/httpClient.js +1 -1
  445. package/lib/prompts/templates.js +8 -9
  446. package/package.json +1 -1
  447. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__01ol22y._.js +0 -3
  448. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__088h0r2._.js +0 -3
  449. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__094z9yf._.js +0 -9
  450. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0avz575._.js +0 -49
  451. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0xxf2a0.js +0 -3
  452. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0xd_mxu._.js +0 -3
  453. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__044xm0q._.js +0 -3
  454. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__066ay_e._.js +0 -3
  455. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__09smg3p._.js +0 -18
  456. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0iix1sf._.js +0 -3
  457. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r54zr9._.js +0 -3
  458. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0s8z2_c._.js +0 -18
  459. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w1mm2j._.js +0 -3
  460. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0wq3ukc._.js +0 -3
  461. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13h-0om._.js +0 -3
  462. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03-mlx0._.js +0 -7
  463. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ag3.tl._.js +0 -7
  464. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0dh_hx0._.js +0 -3
  465. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0h8cbsi._.js +0 -3
  466. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0i1ffhz._.js +0 -3
  467. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0nlki7b._.js +0 -3
  468. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_q01av._.js +0 -3
  469. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0eh.4j7._.js +0 -3
  470. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0qaowqy._.js +0 -3
  471. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0s0iy2_._.js +0 -3
  472. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0zr-_na._.js +0 -3
  473. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_10qsqky._.js +0 -3
  474. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.bv3h68wo33z.js +0 -1
  475. package/cloud-runtime/standalone/apps/local/.next/static/chunks/016.x9zt9~rsh.js +0 -16
  476. package/cloud-runtime/standalone/apps/local/.next/static/chunks/027-6dwgpb0cy.js +0 -1
  477. package/cloud-runtime/standalone/apps/local/.next/static/chunks/031720jijg_th.js +0 -1
  478. package/cloud-runtime/standalone/apps/local/.next/static/chunks/03m1xs0rztynh.js +0 -16
  479. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07o~9mm~xds_b.js +0 -1
  480. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08zgoptetnxjj.css +0 -1
  481. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09_yj-9nfh48m.js +0 -1
  482. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09c7ssmgohk7l.js +0 -1
  483. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0awbe2r3qazge.css +0 -1
  484. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0dro-bz6f72z0.js +0 -1
  485. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gbunx8z.~i4x.js +0 -5
  486. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ge81r~ap.u7n.js +0 -28
  487. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ghg5160qeazw.js +0 -5
  488. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gl_8hdxl5qnd.js +0 -37
  489. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0g~v8p6_pc46-.js +0 -1
  490. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jb4f8425s.-2.js +0 -1
  491. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kukkarp4un0o.js +0 -1
  492. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0m.2b-cekea8b.js +0 -1
  493. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pt8_y9asrg~7.js +0 -1
  494. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0wyg4lymaq0hg.js +0 -3
  495. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xl~1ux2f~rcu.js +0 -1
  496. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y7-eze-w7~b4.js +0 -5
  497. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y8e--tok1214.js +0 -5
  498. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0yy~0bgsz~o6-.js +0 -1
  499. package/cloud-runtime/standalone/apps/local/.next/static/chunks/100xrwo-45nrg.js +0 -20
  500. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14h3qxwuo~1q9.js +0 -20
  501. package/cloud-runtime/standalone/apps/local/.next/static/chunks/17oesq5eds3xi.js +0 -1
  502. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_buildManifest.js +0 -0
  503. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_clientMiddlewareManifest.js +0 -0
  504. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_ssgManifest.js +0 -0
@@ -16,6 +16,7 @@ import {
16
16
  Trash2,
17
17
  User,
18
18
  Users,
19
+ Sparkles,
19
20
  X,
20
21
  } from "lucide-react";
21
22
  import { useProjects } from "@/hooks/useProjects";
@@ -31,6 +32,7 @@ import { ObjectiveScheduledTasksPanel } from "@/components/projects/ObjectiveSch
31
32
  import { ObjectiveActivityTimeline } from "@/components/projects/ObjectiveActivityTimeline";
32
33
  import { LinearIcon } from "@/components/linear/LinearIcon";
33
34
  import { usePromptJobs } from "@/hooks/usePromptJobs";
35
+ import { useInputCapabilities } from "@/hooks/useInputCapabilities";
34
36
  import { cronToHuman } from "@/src/graph/nl-schedule";
35
37
  import {
36
38
  DEFAULT_OBJECTIVE_LINEAR_WORKER_NAME,
@@ -39,7 +41,9 @@ import {
39
41
  import { threadService } from "@/services/threadService";
40
42
  import {
41
43
  loadObjectiveChatPanelWidth,
44
+ loadObjectiveListPanelWidth,
42
45
  persistObjectiveChatPanelWidth,
46
+ persistObjectiveListPanelWidth,
43
47
  } from "@/state/windowState";
44
48
  import type { GroupMessage, Participant } from "@/lib/types";
45
49
  import {
@@ -65,6 +69,7 @@ interface ProjectObjectivesWorkspaceProps {
65
69
 
66
70
  interface ProjectObjectiveDetailProps extends ProjectObjectivesWorkspaceProps {
67
71
  objectiveId: string;
72
+ onObjectiveDeleted?: () => void;
68
73
  }
69
74
 
70
75
  interface ObjectiveEditorDraft {
@@ -109,23 +114,23 @@ const HEALTH_META: Record<
109
114
  > = {
110
115
  on_track: {
111
116
  label: "On track",
112
- chipClass: "border-emerald-500/20 bg-emerald-500/10 text-emerald-200",
113
- toneClass: "text-emerald-300",
117
+ chipClass: "border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed-text)]",
118
+ toneClass: "text-[var(--status-completed-text)]",
114
119
  },
115
120
  at_risk: {
116
121
  label: "At risk",
117
- chipClass: "border-amber-500/20 bg-amber-500/10 text-amber-100",
118
- toneClass: "text-amber-300",
122
+ chipClass: "border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked-text)]",
123
+ toneClass: "text-[var(--status-blocked-text)]",
119
124
  },
120
125
  off_track: {
121
126
  label: "Off track",
122
- chipClass: "border-rose-500/20 bg-rose-500/10 text-rose-100",
123
- toneClass: "text-rose-300",
127
+ chipClass: "border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed-text)]",
128
+ toneClass: "text-[var(--status-failed-text)]",
124
129
  },
125
130
  done: {
126
131
  label: "Done",
127
- chipClass: "border-sky-500/20 bg-sky-500/10 text-sky-100",
128
- toneClass: "text-sky-300",
132
+ chipClass: "border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] text-[var(--status-in-progress-text)]",
133
+ toneClass: "text-[var(--status-in-progress-text)]",
129
134
  },
130
135
  };
131
136
 
@@ -138,11 +143,12 @@ function ObjectiveChatResizeHandle({
138
143
  }: {
139
144
  onResize: (delta: number) => void;
140
145
  }) {
146
+ const { isTouchLayout } = useInputCapabilities();
141
147
  const dragging = useRef(false);
142
148
  const lastX = useRef(0);
143
149
 
144
150
  useEffect(() => {
145
- if (!dragging.current) return;
151
+ if (isTouchLayout || !dragging.current) return;
146
152
 
147
153
  const onMouseMove = (event: MouseEvent) => {
148
154
  const delta = lastX.current - event.clientX;
@@ -164,7 +170,11 @@ function ObjectiveChatResizeHandle({
164
170
  window.removeEventListener("mousemove", onMouseMove);
165
171
  window.removeEventListener("mouseup", onMouseUp);
166
172
  };
167
- });
173
+ }, [isTouchLayout, onResize]);
174
+
175
+ if (isTouchLayout) {
176
+ return null;
177
+ }
168
178
 
169
179
  return (
170
180
  <div
@@ -636,24 +646,27 @@ function ObjectiveChatPanel({
636
646
 
637
647
  async function loadParticipants() {
638
648
  try {
639
- const [participantsResponse, projectAgentsResponse] = await Promise.all([
649
+ const agentsUrl = objective.teamId
650
+ ? `/api/projects/${projectId}/teams/${objective.teamId}/agents`
651
+ : `/api/projects/${projectId}/agents`;
652
+ const [participantsResponse, agentsResponse] = await Promise.all([
640
653
  fetch("/api/participants"),
641
- fetch(`/api/projects/${projectId}/agents`),
654
+ fetch(agentsUrl),
642
655
  ]);
643
656
  const rawParticipants = participantsResponse.ok
644
657
  ? await participantsResponse.json()
645
658
  : [];
646
659
  const allParticipants = Array.isArray(rawParticipants) ? (rawParticipants as Participant[]) : [];
647
- const rawProjectAgents = projectAgentsResponse.ok
648
- ? await projectAgentsResponse.json()
660
+ const rawAgents = agentsResponse.ok
661
+ ? await agentsResponse.json()
649
662
  : { agents: [] };
650
- const projectAgentsPayload =
651
- rawProjectAgents && typeof rawProjectAgents === "object"
652
- ? (rawProjectAgents as { agents?: ProjectAgentSummary[] })
663
+ const agentsPayload =
664
+ rawAgents && typeof rawAgents === "object"
665
+ ? (rawAgents as { agents?: ProjectAgentSummary[] })
653
666
  : { agents: [] };
654
667
  if (cancelled) return;
655
668
 
656
- const orderedAgentIds = (projectAgentsPayload.agents ?? [])
669
+ const orderedAgentIds = (agentsPayload.agents ?? [])
657
670
  .slice()
658
671
  .sort((left, right) => left.routing_order - right.routing_order)
659
672
  .map((agent) => agent.agent_id);
@@ -680,7 +693,7 @@ function ObjectiveChatPanel({
680
693
  return () => {
681
694
  cancelled = true;
682
695
  };
683
- }, [projectId]);
696
+ }, [projectId, objective.teamId]);
684
697
 
685
698
  useEffect(() => {
686
699
  if (!objective.threadId) {
@@ -1053,7 +1066,7 @@ function ObjectiveChatPanel({
1053
1066
  <>
1054
1067
  <ObjectiveChatResizeHandle onResize={handleChatPanelResize} />
1055
1068
  <aside
1056
- className="relative flex h-full min-h-[420px] w-full flex-col overflow-hidden border-t border-[var(--border)] bg-[rgba(8,12,18,0.72)] xl:min-h-0 xl:w-[var(--objective-chat-panel-width)] xl:shrink-0 xl:self-stretch xl:border-l xl:border-t-0"
1069
+ className="relative flex h-full min-h-[420px] w-full flex-col overflow-hidden border-t border-[var(--border)] bg-[var(--overlay-panel)] xl:min-h-0 xl:w-[var(--objective-chat-panel-width)] xl:shrink-0 xl:self-stretch xl:border-l xl:border-t-0"
1057
1070
  style={
1058
1071
  {
1059
1072
  "--objective-chat-panel-width": `${chatPanelWidth}px`,
@@ -1068,7 +1081,7 @@ function ObjectiveChatPanel({
1068
1081
  type="button"
1069
1082
  onClick={() => setChatView("list")}
1070
1083
  aria-label="Back to sessions"
1071
- className="inline-flex min-w-0 items-center gap-2 text-left text-sm font-medium text-[var(--foreground)] transition-colors hover:text-sky-100"
1084
+ className="inline-flex min-w-0 items-center gap-2 text-left text-sm font-medium text-[var(--foreground)] transition-colors hover:text-[var(--primary)]"
1072
1085
  >
1073
1086
  <ArrowLeft className="h-3.5 w-3.5" />
1074
1087
  <span className="truncate">
@@ -1118,7 +1131,7 @@ function ObjectiveChatPanel({
1118
1131
  setSelectedSessionId(session.rootMessageId);
1119
1132
  setChatView("detail");
1120
1133
  }}
1121
- className="flex w-full items-start justify-between gap-3 px-4 py-3 text-left transition-colors hover:bg-white/[0.02]"
1134
+ className="flex w-full items-start justify-between gap-3 px-4 py-3 text-left transition-colors hover:bg-[var(--overlay-panel-soft)]"
1122
1135
  >
1123
1136
  <div className="min-w-0 flex-1">
1124
1137
  <p className="truncate text-sm font-medium text-[var(--foreground)]">
@@ -1131,7 +1144,7 @@ function ObjectiveChatPanel({
1131
1144
  </div>
1132
1145
  <div className="flex shrink-0 items-center gap-2">
1133
1146
  {sessionState ? (
1134
- <span className="rounded-full border border-sky-400/30 bg-sky-400/10 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-sky-100">
1147
+ <span className="rounded-full border border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-[var(--status-in-progress-text)]">
1135
1148
  {sessionState === "queued" ? "Queued" : "Working"}
1136
1149
  </span>
1137
1150
  ) : null}
@@ -1160,7 +1173,7 @@ function ObjectiveChatPanel({
1160
1173
  return (
1161
1174
  <div key={message.id} className="flex gap-3">
1162
1175
  {message.role === "user" ? (
1163
- <div className="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[rgba(15,23,42,0.55)] text-[var(--muted-foreground)]">
1176
+ <div className="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--overlay-panel-soft)] text-[var(--muted-foreground)]">
1164
1177
  <User className="h-4 w-4" />
1165
1178
  </div>
1166
1179
  ) : (
@@ -1184,7 +1197,7 @@ function ObjectiveChatPanel({
1184
1197
  })}
1185
1198
  </span>
1186
1199
  </div>
1187
- <div className="mt-2 rounded-2xl border border-[var(--border)] bg-[rgba(15,23,42,0.32)] px-4 py-3 text-sm text-[var(--foreground)]">
1200
+ <div className="mt-2 rounded-2xl border border-[var(--border)] bg-[var(--overlay-panel-muted)] px-4 py-3 text-sm text-[var(--foreground)]">
1188
1201
  <Markdown content={message.content} isUser={message.role === "user"} />
1189
1202
  </div>
1190
1203
  </div>
@@ -1208,7 +1221,7 @@ function ObjectiveChatPanel({
1208
1221
  )}
1209
1222
  </div>
1210
1223
 
1211
- <div className="absolute bottom-0 left-0 right-0 p-3 pb-[calc(0.75rem+env(safe-area-inset-bottom))] bg-[rgba(8,12,18,0.72)]">
1224
+ <div className="absolute bottom-0 left-0 right-0 bg-[var(--overlay-panel)] p-3 pb-[calc(0.75rem+env(safe-area-inset-bottom))]">
1212
1225
  <Composer
1213
1226
  onSend={handleSend}
1214
1227
  onStop={interruptObjectiveChat}
@@ -1265,7 +1278,7 @@ function ObjectiveNotesEditor({
1265
1278
  if (!editable && !hasContent) return null;
1266
1279
 
1267
1280
  return (
1268
- <div className="overflow-hidden border-l-2 border-zinc-700/60 pl-4 transition-all focus-within:border-indigo-500/60">
1281
+ <div className="overflow-hidden border-l-2 border-[var(--border)]/60 pl-4 transition-all focus-within:border-indigo-500/60">
1269
1282
  {editable || hasContent ? (
1270
1283
  <RichTextEditor
1271
1284
  content={content}
@@ -1278,43 +1291,111 @@ function ObjectiveNotesEditor({
1278
1291
  );
1279
1292
  }
1280
1293
 
1294
+ const OBJECTIVE_LIST_MIN_WIDTH = 240;
1295
+ const OBJECTIVE_LIST_MAX_WIDTH = 480;
1296
+
1297
+ function ObjectiveListResizeHandle({
1298
+ onResize,
1299
+ }: {
1300
+ onResize: (delta: number) => void;
1301
+ }) {
1302
+ const { isTouchLayout } = useInputCapabilities();
1303
+ const dragging = useRef(false);
1304
+ const lastX = useRef(0);
1305
+
1306
+ useEffect(() => {
1307
+ if (isTouchLayout || !dragging.current) return;
1308
+
1309
+ const onMouseMove = (event: MouseEvent) => {
1310
+ const delta = event.clientX - lastX.current;
1311
+ lastX.current = event.clientX;
1312
+ onResize(delta);
1313
+ };
1314
+
1315
+ const onMouseUp = () => {
1316
+ dragging.current = false;
1317
+ document.body.style.cursor = "";
1318
+ document.body.style.userSelect = "";
1319
+ window.removeEventListener("mousemove", onMouseMove);
1320
+ window.removeEventListener("mouseup", onMouseUp);
1321
+ };
1322
+
1323
+ window.addEventListener("mousemove", onMouseMove);
1324
+ window.addEventListener("mouseup", onMouseUp);
1325
+ return () => {
1326
+ window.removeEventListener("mousemove", onMouseMove);
1327
+ window.removeEventListener("mouseup", onMouseUp);
1328
+ };
1329
+ }, [isTouchLayout, onResize]);
1330
+
1331
+ if (isTouchLayout) {
1332
+ return null;
1333
+ }
1334
+
1335
+ return (
1336
+ <div
1337
+ role="separator"
1338
+ aria-orientation="vertical"
1339
+ aria-label="Resize objective list panel"
1340
+ className="group relative z-10 w-0 shrink-0 cursor-col-resize"
1341
+ onMouseDown={(event) => {
1342
+ event.preventDefault();
1343
+ dragging.current = true;
1344
+ lastX.current = event.clientX;
1345
+ document.body.style.cursor = "col-resize";
1346
+ document.body.style.userSelect = "none";
1347
+ }}
1348
+ >
1349
+ <div className="absolute inset-y-0 -left-0.5 w-1 transition-colors group-hover:bg-[var(--primary)]/40" />
1350
+ </div>
1351
+ );
1352
+ }
1353
+
1281
1354
  function ObjectiveListCard({
1282
- projectSlug,
1283
1355
  objective,
1284
1356
  activityCount,
1285
1357
  lastActivityAt,
1286
1358
  activeAgentIds,
1287
1359
  participants,
1360
+ isSelected,
1361
+ onSelect,
1288
1362
  }: {
1289
- projectSlug: string;
1290
1363
  objective: ProjectObjective;
1291
1364
  activityCount: number;
1292
1365
  lastActivityAt: string | null;
1293
1366
  activeAgentIds?: string[];
1294
1367
  participants?: Participant[];
1368
+ isSelected?: boolean;
1369
+ onSelect?: () => void;
1295
1370
  }) {
1296
1371
  const activityMeta = buildActivityMeta(activityCount, lastActivityAt);
1297
1372
 
1298
1373
  return (
1299
1374
  <article className="px-2">
1300
- <Link
1301
- href={buildObjectiveHref(projectSlug, objective.id)}
1375
+ <button
1376
+ type="button"
1377
+ onClick={onSelect}
1302
1378
  aria-label={`Open details for ${objective.title}`}
1303
- className="group flex items-center gap-3 rounded-2xl py-2 transition-colors hover:bg-white/[0.02] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-400/40"
1379
+ className={`group flex w-full items-center gap-3 rounded-xl px-2 py-2 text-left transition-colors ${
1380
+ isSelected
1381
+ ? "bg-[var(--primary)]/10 border border-[var(--primary)]/20"
1382
+ : "border border-transparent hover:bg-[var(--secondary)]"
1383
+ }`}
1304
1384
  >
1305
- <div className="min-w-0 flex-1 px-1 py-1.5">
1306
- <div className="flex min-w-0 items-center gap-3">
1307
- <span className="truncate text-sm font-medium text-[var(--foreground)]">
1308
- {objective.title}
1385
+ <div className="min-w-0 flex-1 py-0.5">
1386
+ <div className="flex min-w-0 items-center gap-2">
1387
+ <span
1388
+ className={`rounded-full border px-1.5 py-0 text-[9px] font-semibold uppercase tracking-[0.12em] ${HEALTH_META[objective.status].chipClass}`}
1389
+ >
1390
+ {HEALTH_META[objective.status].label}
1309
1391
  </span>
1310
1392
  </div>
1311
- <div className="mt-1 text-xs text-[var(--muted-foreground)] sm:hidden">
1393
+ <p className="mt-1 truncate text-sm font-medium text-[var(--foreground)]">
1394
+ {objective.title}
1395
+ </p>
1396
+ <p className="mt-0.5 text-[11px] text-[var(--muted-foreground)]">
1312
1397
  {activityMeta}
1313
- </div>
1314
- </div>
1315
-
1316
- <div className="hidden shrink-0 text-right text-xs text-[var(--muted-foreground)] sm:block">
1317
- <div>{activityMeta}</div>
1398
+ </p>
1318
1399
  </div>
1319
1400
 
1320
1401
  {activeAgentIds && activeAgentIds.length > 0 && (
@@ -1330,19 +1411,15 @@ function ObjectiveListCard({
1330
1411
  })}
1331
1412
  </span>
1332
1413
  )}
1333
-
1334
- <span className="inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-[var(--muted-foreground)] transition-colors group-hover:bg-white/5 group-hover:text-[var(--foreground)] group-focus-visible:bg-white/5 group-focus-visible:text-[var(--foreground)]">
1335
- <ArrowRight className="h-4 w-4" />
1336
- </span>
1337
- </Link>
1414
+ </button>
1338
1415
  </article>
1339
1416
  );
1340
1417
  }
1341
1418
 
1342
1419
  export function ProjectObjectivesOverview({
1343
1420
  projectSlug,
1344
- }: ProjectObjectivesWorkspaceProps) {
1345
- const router = useRouter();
1421
+ initialObjectiveId,
1422
+ }: ProjectObjectivesWorkspaceProps & { initialObjectiveId?: string }) {
1346
1423
  const { isLoading, project, workspace, teams, persistWorkspace } =
1347
1424
  useProjectObjectivesWorkspace(projectSlug);
1348
1425
  const objectives = workspace.objectives;
@@ -1350,12 +1427,36 @@ export function ProjectObjectivesOverview({
1350
1427
  () => getAvailableTeams(teams, workspace),
1351
1428
  [teams, workspace]
1352
1429
  );
1430
+ const [selectedObjectiveId, setSelectedObjectiveId] = useState<string | null>(
1431
+ initialObjectiveId ?? null
1432
+ );
1433
+ const [listPanelWidth, setListPanelWidth] = useState(() => {
1434
+ return loadObjectiveListPanelWidth() || 320;
1435
+ });
1353
1436
  const [objectiveEditor, setObjectiveEditor] = useState<ObjectiveEditorDraft | null>(null);
1354
1437
  const [isSaving, setIsSaving] = useState(false);
1355
1438
  const [saveError, setSaveError] = useState<string | null>(null);
1356
1439
  const [activeAgentsByObjective, setActiveAgentsByObjective] = useState<Map<string, string[]>>(new Map());
1357
1440
  const [participants, setParticipants] = useState<Participant[]>([]);
1358
1441
 
1442
+ // Auto-select first objective when none is selected
1443
+ useEffect(() => {
1444
+ if (!selectedObjectiveId && objectives.length > 0) {
1445
+ setSelectedObjectiveId(objectives[0].id);
1446
+ }
1447
+ }, [selectedObjectiveId, objectives]);
1448
+
1449
+ // Clear selection if the selected objective was deleted
1450
+ useEffect(() => {
1451
+ if (
1452
+ selectedObjectiveId &&
1453
+ objectives.length > 0 &&
1454
+ !objectives.some((o) => o.id === selectedObjectiveId)
1455
+ ) {
1456
+ setSelectedObjectiveId(objectives[0]?.id ?? null);
1457
+ }
1458
+ }, [selectedObjectiveId, objectives]);
1459
+
1359
1460
  useEffect(() => {
1360
1461
  let cancelled = false;
1361
1462
  async function load() {
@@ -1434,7 +1535,7 @@ export function ProjectObjectivesOverview({
1434
1535
  try {
1435
1536
  await persistWorkspace(upsertProjectObjective(workspace, nextObjective));
1436
1537
  setObjectiveEditor(null);
1437
- router.push(buildObjectiveHref(projectSlug, nextObjective.id));
1538
+ setSelectedObjectiveId(nextObjective.id);
1438
1539
  } catch (error) {
1439
1540
  setSaveError(
1440
1541
  error instanceof Error ? error.message : "Failed to save objective updates."
@@ -1444,6 +1545,17 @@ export function ProjectObjectivesOverview({
1444
1545
  }
1445
1546
  };
1446
1547
 
1548
+ const handleListPanelResize = useCallback((delta: number) => {
1549
+ setListPanelWidth((currentWidth) => {
1550
+ const nextWidth = Math.max(
1551
+ OBJECTIVE_LIST_MIN_WIDTH,
1552
+ Math.min(OBJECTIVE_LIST_MAX_WIDTH, currentWidth + delta)
1553
+ );
1554
+ persistObjectiveListPanelWidth(nextWidth);
1555
+ return nextWidth;
1556
+ });
1557
+ }, []);
1558
+
1447
1559
  if (isLoading && !project) {
1448
1560
  return <LoadingState label="Loading objectives..." />;
1449
1561
  }
@@ -1453,57 +1565,88 @@ export function ProjectObjectivesOverview({
1453
1565
  }
1454
1566
 
1455
1567
  return (
1456
- <div className="flex h-full min-h-0 flex-col bg-[radial-gradient(circle_at_top_left,rgba(59,130,246,0.14),transparent_28%),var(--background)] text-[var(--foreground)]">
1457
- <div className="border-b border-[var(--border)] bg-[rgba(10,14,20,0.7)] px-4 py-5 backdrop-blur md:px-6">
1458
- <div className="flex flex-col gap-4 md:flex-row md:items-end md:justify-between">
1459
- <div className="space-y-2">
1460
- <p className="text-sm text-[var(--muted-foreground)]">
1461
- {objectives.length === 0
1462
- ? "Add an objective to start tracking work in this project."
1463
- : "Click an objective to open its detail view."}
1568
+ <div className="flex h-full min-h-0 overflow-hidden bg-[var(--background)] text-[var(--foreground)]">
1569
+ {/* Left panel: objective list */}
1570
+ <div
1571
+ className="flex flex-shrink-0 flex-col border-r border-[var(--border)] bg-[var(--background)]"
1572
+ style={{ width: listPanelWidth }}
1573
+ >
1574
+ <div className="flex items-center justify-between border-b border-[var(--border)] px-4 py-3">
1575
+ <div className="min-w-0">
1576
+ <p className="text-xs font-semibold uppercase tracking-[0.12em] text-[var(--muted-foreground)]">
1577
+ Objectives
1578
+ </p>
1579
+ <p className="mt-0.5 text-[11px] text-[var(--muted-foreground)]">
1580
+ {objectives.length === 0 ? "None yet" : `${objectives.length} total`}
1464
1581
  </p>
1465
1582
  </div>
1466
-
1467
1583
  <button
1468
1584
  type="button"
1469
1585
  onClick={() => setObjectiveEditor(buildEmptyObjectiveDraft())}
1470
- className="inline-flex items-center gap-2 self-start rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-3 py-2 text-sm font-medium text-emerald-100 transition-colors hover:bg-emerald-500/20"
1586
+ className="inline-flex h-7 w-7 items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"
1587
+ aria-label="New objective"
1471
1588
  >
1472
1589
  <Plus className="h-4 w-4" />
1473
- New objective
1474
1590
  </button>
1475
1591
  </div>
1592
+
1476
1593
  <ErrorBanner message={saveError} />
1594
+
1595
+ <div className="flex-1 overflow-y-auto py-1">
1596
+ {objectives.length === 0 ? (
1597
+ <div className="px-4 py-8 text-center">
1598
+ <p className="text-sm text-[var(--muted-foreground)]">
1599
+ No objectives yet.
1600
+ </p>
1601
+ <button
1602
+ type="button"
1603
+ onClick={() => setObjectiveEditor(buildEmptyObjectiveDraft())}
1604
+ className="mt-2 text-sm text-[var(--primary)] hover:underline"
1605
+ >
1606
+ Create one
1607
+ </button>
1608
+ </div>
1609
+ ) : (
1610
+ <div className="space-y-0.5">
1611
+ {objectives.map((objective) => {
1612
+ const objectiveActivities = buildObjectiveTimelineActivities({
1613
+ objective,
1614
+ workspace,
1615
+ });
1616
+
1617
+ return (
1618
+ <ObjectiveListCard
1619
+ key={objective.id}
1620
+ objective={objective}
1621
+ activityCount={objectiveActivities.length}
1622
+ lastActivityAt={objectiveActivities[0]?.createdAt ?? null}
1623
+ activeAgentIds={activeAgentsByObjective.get(objective.id)}
1624
+ participants={participants}
1625
+ isSelected={selectedObjectiveId === objective.id}
1626
+ onSelect={() => setSelectedObjectiveId(objective.id)}
1627
+ />
1628
+ );
1629
+ })}
1630
+ </div>
1631
+ )}
1632
+ </div>
1477
1633
  </div>
1478
1634
 
1479
- <div className="flex-1 overflow-y-auto px-4 py-5 md:px-6 md:py-6">
1480
- {objectives.length === 0 ? (
1481
- <div className="mx-auto max-w-3xl rounded-[32px] border border-dashed border-[var(--border)] bg-[var(--card-bg)] p-8 text-center">
1482
- <p className="text-lg font-semibold text-[var(--foreground)]">No objectives yet</p>
1483
- <p className="mt-2 text-sm text-[var(--muted-foreground)]">
1484
- Keep the root view simple: objective list first, detail after click-through.
1485
- </p>
1486
- </div>
1487
- ) : (
1488
- <div className="mx-auto max-w-4xl divide-y divide-[var(--border)] overflow-hidden rounded-[24px] border border-[var(--border)] bg-[rgba(8,12,18,0.58)]">
1489
- {objectives.map((objective) => {
1490
- const objectiveActivities = buildObjectiveTimelineActivities({
1491
- objective,
1492
- workspace,
1493
- });
1635
+ <ObjectiveListResizeHandle onResize={handleListPanelResize} />
1494
1636
 
1495
- return (
1496
- <ObjectiveListCard
1497
- key={objective.id}
1498
- projectSlug={projectSlug}
1499
- objective={objective}
1500
- activityCount={objectiveActivities.length}
1501
- lastActivityAt={objectiveActivities[0]?.createdAt ?? null}
1502
- activeAgentIds={activeAgentsByObjective.get(objective.id)}
1503
- participants={participants}
1504
- />
1505
- );
1506
- })}
1637
+ {/* Right panel: objective detail */}
1638
+ <div className="flex-1 min-w-0 min-h-0 overflow-hidden">
1639
+ {selectedObjectiveId ? (
1640
+ <ProjectObjectiveDetail
1641
+ projectSlug={projectSlug}
1642
+ objectiveId={selectedObjectiveId}
1643
+ onObjectiveDeleted={() => setSelectedObjectiveId(null)}
1644
+ />
1645
+ ) : (
1646
+ <div className="flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]">
1647
+ {objectives.length === 0
1648
+ ? "Create an objective to get started."
1649
+ : "Select an objective from the list."}
1507
1650
  </div>
1508
1651
  )}
1509
1652
  </div>
@@ -1526,6 +1669,7 @@ export function ProjectObjectivesOverview({
1526
1669
  export function ProjectObjectiveDetail({
1527
1670
  projectSlug,
1528
1671
  objectiveId,
1672
+ onObjectiveDeleted,
1529
1673
  }: ProjectObjectiveDetailProps) {
1530
1674
  const router = useRouter();
1531
1675
  const { isLoading, project, workspace, teams, persistWorkspace, refetchProject } =
@@ -1557,6 +1701,7 @@ export function ProjectObjectiveDetail({
1557
1701
  const [isCreatingNote, setIsCreatingNote] = useState(false);
1558
1702
  const [linearIssues, setLinearIssues] = useState<ObjectiveLinearIssueSummary[]>([]);
1559
1703
  const [linearConnected, setLinearConnected] = useState(true);
1704
+ const [creatingLinearWorker, setCreatingLinearWorker] = useState(false);
1560
1705
 
1561
1706
  const { jobs: scheduledJobs } = usePromptJobs(project?.id ?? null, {
1562
1707
  requireProjectId: true,
@@ -1787,7 +1932,11 @@ export function ProjectObjectiveDetail({
1787
1932
  if (!confirmed) return;
1788
1933
 
1789
1934
  await runPersist(removeProjectObjective(workspace, objective.id));
1790
- router.push(`/projects/${projectSlug}`);
1935
+ if (onObjectiveDeleted) {
1936
+ onObjectiveDeleted();
1937
+ } else {
1938
+ router.push(`/projects/${projectSlug}`);
1939
+ }
1791
1940
  };
1792
1941
 
1793
1942
  const handleObjectiveThreadLinked = useCallback(
@@ -1863,6 +2012,11 @@ export function ProjectObjectiveDetail({
1863
2012
  return false;
1864
2013
  }
1865
2014
 
2015
+ if (!objective.teamId) {
2016
+ setSaveError("Assign a team to this objective before creating a worker.");
2017
+ return false;
2018
+ }
2019
+
1866
2020
  setSaveError(null);
1867
2021
 
1868
2022
  try {
@@ -1950,15 +2104,15 @@ export function ProjectObjectiveDetail({
1950
2104
 
1951
2105
  if (!objective) {
1952
2106
  return (
1953
- <div className="flex h-full items-center justify-center px-4 bg-[#131315]">
1954
- <div className="rounded-xl border border-zinc-700/80 bg-[#18181b] p-8 text-center">
1955
- <p className="text-lg font-semibold text-zinc-100">Objective not found</p>
1956
- <p className="mt-2 text-sm text-zinc-500">
2107
+ <div className="flex h-full items-center justify-center px-4 bg-[var(--background)]">
2108
+ <div className="rounded-xl border border-[var(--border)] bg-[var(--card-bg)] p-8 text-center">
2109
+ <p className="text-lg font-semibold text-[var(--foreground)]">Objective not found</p>
2110
+ <p className="mt-2 text-sm text-[var(--muted-foreground)]">
1957
2111
  It may have been deleted or the link is stale.
1958
2112
  </p>
1959
2113
  <Link
1960
2114
  href={`/projects/${projectSlug}`}
1961
- className="mt-4 inline-flex items-center gap-2 rounded-md border border-zinc-700/80 px-3 py-1.5 text-sm text-zinc-300 transition-colors hover:bg-zinc-800/50 bg-[#1a1a1c]"
2115
+ className="mt-4 inline-flex items-center gap-2 rounded-md border border-[var(--border)] bg-[var(--card-bg)] px-3 py-1.5 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]"
1962
2116
  >
1963
2117
  Back to objectives
1964
2118
  </Link>
@@ -1968,7 +2122,7 @@ export function ProjectObjectiveDetail({
1968
2122
  }
1969
2123
 
1970
2124
  return (
1971
- <div className="flex h-full min-h-0 flex-col bg-[#131315] text-zinc-200">
2125
+ <div className="flex h-full min-h-0 flex-col bg-[radial-gradient(circle_at_top_left,rgba(59,130,246,0.1),transparent_28%),var(--background)] text-[var(--foreground)]">
1972
2126
  <div className="flex-1 min-h-0 overflow-hidden">
1973
2127
  <div className="flex h-full min-h-0 flex-col xl:flex-row">
1974
2128
  <div className="min-h-0 flex-1 overflow-y-auto">
@@ -1976,7 +2130,7 @@ export function ProjectObjectiveDetail({
1976
2130
  <ErrorBanner message={saveError} />
1977
2131
 
1978
2132
  <div className="flex items-center gap-3 mb-4">
1979
- <span className="px-2.5 py-0.5 rounded-full text-[10px] font-mono tracking-wider bg-zinc-800/60 text-zinc-400 border border-zinc-700 uppercase">
2133
+ <span className="rounded-full border border-[var(--tone-neutral-border)] bg-[var(--tone-neutral-bg)] px-2.5 py-0.5 text-[10px] font-mono uppercase tracking-wider text-[var(--tone-neutral)]">
1980
2134
  {objective.key}
1981
2135
  </span>
1982
2136
  <span
@@ -1997,14 +2151,14 @@ export function ProjectObjectiveDetail({
1997
2151
  if (e.key === "Enter") void handleObjectiveSave();
1998
2152
  if (e.key === "Escape") setObjectiveEditor(null);
1999
2153
  }}
2000
- className="flex-1 text-[28px] leading-tight font-semibold text-zinc-100 bg-transparent border-b-2 border-sky-500/50 outline-none px-0 py-1"
2154
+ className="flex-1 border-b-2 border-[var(--primary)] bg-transparent px-0 py-1 text-[28px] font-semibold leading-tight text-[var(--foreground)] outline-none"
2001
2155
  placeholder="Objective statement"
2002
2156
  />
2003
2157
  <button
2004
2158
  type="button"
2005
2159
  onClick={() => void handleObjectiveSave()}
2006
2160
  disabled={isSaving}
2007
- className="p-1.5 rounded-md text-sky-400 hover:bg-sky-500/10 transition-colors"
2161
+ className="rounded-md p-1.5 text-[var(--primary)] transition-colors hover:bg-[var(--status-in-progress-bg)]"
2008
2162
  aria-label="Save objective"
2009
2163
  >
2010
2164
  <Check size={18} />
@@ -2012,22 +2166,24 @@ export function ProjectObjectiveDetail({
2012
2166
  <button
2013
2167
  type="button"
2014
2168
  onClick={() => setObjectiveEditor(null)}
2015
- className="p-1.5 rounded-md text-zinc-400 hover:bg-zinc-800/50 transition-colors"
2169
+ className="rounded-md p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]"
2016
2170
  aria-label="Cancel editing"
2017
2171
  >
2018
2172
  <X size={18} />
2019
2173
  </button>
2020
2174
  </div>
2021
2175
  ) : (
2022
- <div
2023
- className="flex items-center gap-3 group cursor-pointer"
2176
+ <button
2177
+ type="button"
2178
+ aria-label={`Edit objective ${objective.title}`}
2179
+ className="flex items-center gap-3 group cursor-pointer text-left"
2024
2180
  onClick={() => setObjectiveEditor(buildObjectiveDraft(objective))}
2025
2181
  >
2026
- <h1 className="text-[28px] leading-tight font-semibold text-zinc-100">
2182
+ <h1 className="text-[28px] leading-tight font-semibold text-[var(--foreground)]">
2027
2183
  {objective.title}
2028
2184
  </h1>
2029
- <Pencil size={16} className="text-zinc-500 opacity-0 group-hover:opacity-100 transition-opacity shrink-0" />
2030
- </div>
2185
+ <Pencil size={16} className="shrink-0 text-[var(--muted-foreground)] opacity-0 transition-opacity group-hover:opacity-100" />
2186
+ </button>
2031
2187
  )}
2032
2188
  </div>
2033
2189
 
@@ -2035,10 +2191,10 @@ export function ProjectObjectiveDetail({
2035
2191
  <div className="flex flex-wrap items-center gap-x-6 gap-y-3 mb-10">
2036
2192
  {/* Team Property */}
2037
2193
  <div className="flex items-center gap-2">
2038
- <span className="text-xs font-semibold text-zinc-500 uppercase tracking-wider flex items-center gap-1.5">
2194
+ <span className="flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]">
2039
2195
  <Users size={12} /> Team
2040
2196
  </span>
2041
- <span className="text-zinc-600">·</span>
2197
+ <span className="text-[var(--app-shell-soft-text)]">·</span>
2042
2198
  {teamEditor ? (
2043
2199
  <div className="min-w-[180px]">
2044
2200
  <SearchCombo
@@ -2069,13 +2225,14 @@ export function ProjectObjectiveDetail({
2069
2225
  ) : (
2070
2226
  <button
2071
2227
  type="button"
2228
+ aria-label={`Edit team for ${objective.title}`}
2072
2229
  onClick={() => setTeamEditor({ teamId: objective.teamId })}
2073
- className="flex items-center gap-2 group rounded px-1.5 py-0.5 -mx-1.5 -my-0.5 hover:bg-zinc-800 transition-colors"
2230
+ className="group -mx-1.5 -my-0.5 flex items-center gap-2 rounded px-1.5 py-0.5 transition-colors hover:bg-[var(--muted)]"
2074
2231
  >
2075
2232
  <div className="w-5 h-5 rounded-full bg-blue-500/20 text-blue-400 flex items-center justify-center text-[10px] font-bold border border-blue-500/30">
2076
2233
  {(teamName ?? "?").charAt(0).toUpperCase()}
2077
2234
  </div>
2078
- <span className="text-sm text-zinc-200 group-hover:text-zinc-50 transition-colors">
2235
+ <span className="text-sm text-[var(--foreground)] transition-colors group-hover:text-[var(--primary)]">
2079
2236
  {teamName ?? "Not assigned"}
2080
2237
  </span>
2081
2238
  </button>
@@ -2084,19 +2241,20 @@ export function ProjectObjectiveDetail({
2084
2241
 
2085
2242
  {/* Check-in Frequency Property */}
2086
2243
  <div className="flex items-center gap-2">
2087
- <span className="text-xs font-semibold text-zinc-500 uppercase tracking-wider flex items-center gap-1.5">
2244
+ <span className="flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]">
2088
2245
  <Clock size={12} /> Check-in
2089
2246
  </span>
2090
- <span className="text-zinc-600">·</span>
2247
+ <span className="text-[var(--app-shell-soft-text)]">·</span>
2091
2248
  <button
2092
2249
  type="button"
2093
2250
  onClick={() => setWakeEditor(buildObjectiveDraft(objective))}
2094
- className="text-sm text-zinc-200 hover:text-zinc-50 rounded px-1.5 py-0.5 -my-0.5 hover:bg-zinc-800 transition-colors"
2251
+ aria-label={`Edit cadence for ${objective.title}`}
2252
+ className="-my-0.5 rounded px-1.5 py-0.5 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--primary)]"
2095
2253
  >
2096
2254
  {formatObjectiveCadence(objective.cadence)}
2097
2255
  </button>
2098
2256
  {objective.condition ? (
2099
- <span className="text-xs text-zinc-500 truncate max-w-[200px]">
2257
+ <span className="max-w-[200px] truncate text-xs text-[var(--muted-foreground)]">
2100
2258
  · {objective.condition}
2101
2259
  </span>
2102
2260
  ) : null}
@@ -2104,7 +2262,7 @@ export function ProjectObjectiveDetail({
2104
2262
  </div>
2105
2263
 
2106
2264
  {/* Tabs */}
2107
- <div className="border-b border-zinc-800/80 mb-8">
2265
+ <div className="mb-8 border-b border-[var(--border)]">
2108
2266
  <nav className="flex gap-1 -mb-px" aria-label="Objective sections">
2109
2267
  {([
2110
2268
  { id: "activity" as const, label: "Activity", icon: Clock },
@@ -2118,29 +2276,35 @@ export function ProjectObjectiveDetail({
2118
2276
  onClick={() => setActiveTab(tab.id)}
2119
2277
  className={`flex items-center gap-2 px-3 py-2.5 text-sm font-medium border-b-2 transition-colors ${
2120
2278
  activeTab === tab.id
2121
- ? "border-sky-500 text-zinc-100"
2122
- : "border-transparent text-zinc-500 hover:text-zinc-300 hover:border-zinc-700"
2279
+ ? "border-[var(--primary)] text-[var(--foreground)]"
2280
+ : "border-transparent text-[var(--muted-foreground)] hover:border-[var(--border)] hover:text-[var(--foreground)]"
2123
2281
  }`}
2124
2282
  >
2125
2283
  <tab.icon size={14} />
2126
2284
  {tab.label}
2127
2285
  {tab.id === "activity" && activityTotal > 0 && (
2128
- <span className="text-[10px] bg-zinc-800 text-zinc-400 rounded-full px-1.5 py-0.5 font-mono">
2286
+ <span className="rounded-full bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[10px] text-[var(--tone-neutral)]">
2129
2287
  {activityTotal}
2130
2288
  </span>
2131
2289
  )}
2132
2290
  {tab.id === "notes" && notes.length > 0 && (
2133
- <span className="text-[10px] bg-zinc-800 text-zinc-400 rounded-full px-1.5 py-0.5 font-mono">
2291
+ <span className="rounded-full bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[10px] text-[var(--tone-neutral)]">
2134
2292
  {notes.length}
2135
2293
  </span>
2136
2294
  )}
2137
- {tab.id === "linear" && linearIssues.length > 0 && (
2138
- <span className="text-[10px] bg-zinc-800 text-zinc-400 rounded-full px-1.5 py-0.5 font-mono">
2139
- {linearIssues.length}
2140
- </span>
2141
- )}
2295
+ {tab.id === "linear" && (() => {
2296
+ const DONE = ["done", "canceled", "cancelled", "completed", "duplicate"];
2297
+ const active = linearIssues.filter(
2298
+ (i, idx, arr) => arr.findIndex((x) => x.id === i.id) === idx && !DONE.includes(i.status.toLowerCase())
2299
+ );
2300
+ return active.length > 0 ? (
2301
+ <span className="rounded-full bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[10px] text-[var(--tone-neutral)]">
2302
+ {active.length}
2303
+ </span>
2304
+ ) : null;
2305
+ })()}
2142
2306
  {tab.id === "scheduled-tasks" && scheduledTaskCount > 0 && (
2143
- <span className="text-[10px] bg-zinc-800 text-zinc-400 rounded-full px-1.5 py-0.5 font-mono">
2307
+ <span className="rounded-full bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[10px] text-[var(--tone-neutral)]">
2144
2308
  {scheduledTaskCount}
2145
2309
  </span>
2146
2310
  )}
@@ -2155,7 +2319,7 @@ export function ProjectObjectiveDetail({
2155
2319
  {activeTab === "notes" && (
2156
2320
  <section className="space-y-4">
2157
2321
  <div className="flex justify-between items-end">
2158
- <p className="text-sm text-zinc-500">
2322
+ <p className="text-sm text-[var(--muted-foreground)]">
2159
2323
  Capture the strategy, constraints, and what better looks like.
2160
2324
  </p>
2161
2325
  </div>
@@ -2170,13 +2334,13 @@ export function ProjectObjectiveDetail({
2170
2334
  if (e.key === "Enter") handleCreateNote();
2171
2335
  }}
2172
2336
  placeholder="New note title..."
2173
- className="flex-1 bg-zinc-900 border border-zinc-800 rounded-md px-3 py-1.5 text-sm text-zinc-200 placeholder:text-zinc-600 focus:outline-none focus:border-zinc-600"
2337
+ className="flex-1 rounded-md border border-[var(--border)] bg-[var(--input)] px-3 py-1.5 text-sm text-[var(--foreground)] placeholder:text-[var(--app-shell-soft-text)] focus:border-[var(--primary)] focus:outline-none"
2174
2338
  />
2175
2339
  <button
2176
2340
  type="button"
2177
2341
  onClick={handleCreateNote}
2178
2342
  disabled={isCreatingNote}
2179
- className="flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium text-zinc-200 bg-zinc-800 hover:bg-zinc-700 rounded-md transition-colors disabled:opacity-50"
2343
+ className="flex items-center gap-1.5 rounded-md border border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] px-3 py-1.5 text-sm font-medium text-[var(--status-in-progress-text)] transition-opacity hover:opacity-90 disabled:opacity-50"
2180
2344
  >
2181
2345
  <Plus size={14} />
2182
2346
  Add
@@ -2185,9 +2349,9 @@ export function ProjectObjectiveDetail({
2185
2349
 
2186
2350
  {/* Notes List */}
2187
2351
  {isNotesLoading ? (
2188
- <p className="text-sm text-zinc-500 py-4">Loading notes...</p>
2352
+ <p className="py-4 text-sm text-[var(--muted-foreground)]">Loading notes...</p>
2189
2353
  ) : notes.length === 0 ? (
2190
- <p className="text-sm text-zinc-600 py-4">
2354
+ <p className="text-sm text-[var(--muted-foreground)] py-4">
2191
2355
  No notes yet. Add one above.
2192
2356
  </p>
2193
2357
  ) : (
@@ -2201,13 +2365,13 @@ export function ProjectObjectiveDetail({
2201
2365
  return (
2202
2366
  <div
2203
2367
  key={note.id}
2204
- className="border border-zinc-800/80 rounded-lg overflow-hidden"
2368
+ className="overflow-hidden rounded-lg border border-[var(--border)]"
2205
2369
  >
2206
2370
  {/* Note Header */}
2207
- <div className="flex items-center justify-between px-4 py-2.5 bg-zinc-900/50">
2371
+ <div className="flex items-center justify-between bg-[var(--overlay-panel-muted)] px-4 py-2.5">
2208
2372
  {isEditing ? (
2209
2373
  <div className="flex items-center gap-2 flex-1 mr-2">
2210
- <FileText size={14} className="text-zinc-500 shrink-0" />
2374
+ <FileText size={14} className="shrink-0 text-[var(--muted-foreground)]" />
2211
2375
  <input
2212
2376
  type="text"
2213
2377
  value={draftTitle}
@@ -2217,7 +2381,7 @@ export function ProjectObjectiveDetail({
2217
2381
  [note.id]: e.target.value,
2218
2382
  }))
2219
2383
  }
2220
- className="flex-1 bg-transparent border-b border-zinc-700 text-sm font-medium text-zinc-200 focus:outline-none focus:border-zinc-400 py-0.5"
2384
+ className="flex-1 border-b border-[var(--border)] bg-transparent py-0.5 text-sm font-medium text-[var(--foreground)] focus:border-[var(--primary)] focus:outline-none"
2221
2385
  />
2222
2386
  </div>
2223
2387
  ) : (
@@ -2226,14 +2390,14 @@ export function ProjectObjectiveDetail({
2226
2390
  onClick={() =>
2227
2391
  setEditingNoteId(note.id)
2228
2392
  }
2229
- className="flex items-center gap-2 text-sm font-medium text-zinc-200 hover:text-zinc-50 transition-colors"
2393
+ className="flex items-center gap-2 text-sm font-medium text-[var(--foreground)] transition-colors hover:text-[var(--primary)]"
2230
2394
  >
2231
- <FileText size={14} className="text-zinc-500" />
2395
+ <FileText size={14} className="text-[var(--muted-foreground)]" />
2232
2396
  {note.title}
2233
2397
  </button>
2234
2398
  )}
2235
2399
  <div className="flex items-center gap-2">
2236
- <span className="text-[11px] text-zinc-600">
2400
+ <span className="text-[11px] text-[var(--muted-foreground)]">
2237
2401
  {isSavingNote
2238
2402
  ? "Saving..."
2239
2403
  : new Date(note.updatedAt).toLocaleDateString()}
@@ -2243,14 +2407,14 @@ export function ProjectObjectiveDetail({
2243
2407
  onClick={() =>
2244
2408
  setEditingNoteId(isEditing ? null : note.id)
2245
2409
  }
2246
- className="p-1 text-zinc-500 hover:text-zinc-300 transition-colors"
2410
+ className="p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]"
2247
2411
  >
2248
2412
  <Pencil size={12} />
2249
2413
  </button>
2250
2414
  <button
2251
2415
  type="button"
2252
2416
  onClick={() => handleDeleteNote(note.id)}
2253
- className="p-1 text-zinc-500 hover:text-red-400 transition-colors"
2417
+ className="p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]"
2254
2418
  >
2255
2419
  <Trash2 size={12} />
2256
2420
  </button>
@@ -2274,7 +2438,7 @@ export function ProjectObjectiveDetail({
2274
2438
  </div>
2275
2439
  ) : note.body.trim() ? (
2276
2440
  <div
2277
- className="px-4 py-3 text-sm text-zinc-400 cursor-pointer hover:bg-zinc-900/30 transition-colors"
2441
+ className="cursor-pointer px-4 py-3 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--overlay-panel-muted)]"
2278
2442
  onClick={() => setEditingNoteId(note.id)}
2279
2443
  >
2280
2444
  <div className="line-clamp-3">
@@ -2283,7 +2447,7 @@ export function ProjectObjectiveDetail({
2283
2447
  </div>
2284
2448
  ) : (
2285
2449
  <div
2286
- className="px-4 py-3 text-sm text-zinc-600 italic cursor-pointer hover:bg-zinc-900/30 transition-colors"
2450
+ className="cursor-pointer px-4 py-3 text-sm italic text-[var(--muted-foreground)] transition-colors hover:bg-[var(--overlay-panel-muted)]"
2287
2451
  onClick={() => setEditingNoteId(note.id)}
2288
2452
  >
2289
2453
  Empty note — click to edit
@@ -2321,12 +2485,28 @@ export function ProjectObjectiveDetail({
2321
2485
 
2322
2486
  return (
2323
2487
  <section>
2324
- <p className="text-sm text-zinc-500 mb-4">
2325
- Tickets tracked by the objective label{" "}
2326
- <code className="font-mono text-[11px] bg-zinc-800/80 px-1.5 py-0.5 rounded text-zinc-300">
2327
- {objective.key}
2328
- </code>.
2329
- </p>
2488
+ <div className="flex flex-wrap items-start justify-between gap-3 mb-4">
2489
+ <p className="text-sm text-[var(--muted-foreground)]">
2490
+ Tickets tracked by the objective label{" "}
2491
+ <code className="rounded bg-[var(--tone-neutral-bg)] px-1.5 py-0.5 font-mono text-[11px] text-[var(--foreground)]">
2492
+ {objective.key}
2493
+ </code>.
2494
+ </p>
2495
+ <button
2496
+ type="button"
2497
+ onClick={async () => {
2498
+ setCreatingLinearWorker(true);
2499
+ await handleObjectiveLinearWorkerCreate();
2500
+ setCreatingLinearWorker(false);
2501
+ }}
2502
+ disabled={creatingLinearWorker || !objective.teamId}
2503
+ title={!objective.teamId ? "Assign a team to this objective first" : undefined}
2504
+ className="inline-flex items-center gap-2 rounded-xl border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-3 py-2 text-sm text-[var(--status-completed-text)] transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50"
2505
+ >
2506
+ <Sparkles className="h-4 w-4" />
2507
+ {creatingLinearWorker ? "Creating..." : !objective.teamId ? "Assign team to work" : "Work Linear tickets"}
2508
+ </button>
2509
+ </div>
2330
2510
  {!linearConnected ? (
2331
2511
  <EmptyState label="Connect Linear to create and track tickets for this objective." />
2332
2512
  ) : dedupedIssues.length === 0 ? (
@@ -2338,11 +2518,11 @@ export function ProjectObjectiveDetail({
2338
2518
  {activeIssues.map((issue) => (
2339
2519
  <div
2340
2520
  key={issue.id}
2341
- className="bg-[#1c212b] border border-[#2d3748] rounded-xl p-4"
2521
+ className="rounded-xl border border-[var(--border)] bg-[var(--overlay-panel-muted)] p-4"
2342
2522
  >
2343
2523
  <div className="flex items-start justify-between gap-3">
2344
2524
  <div className="min-w-0">
2345
- <p className="text-xs font-semibold uppercase tracking-[0.18em] text-zinc-500">
2525
+ <p className="text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]">
2346
2526
  {issue.identifier}
2347
2527
  </p>
2348
2528
  {issue.url ? (
@@ -2350,21 +2530,21 @@ export function ProjectObjectiveDetail({
2350
2530
  href={issue.url}
2351
2531
  target="_blank"
2352
2532
  rel="noreferrer"
2353
- className="mt-1 block text-sm font-medium text-zinc-200 transition-colors hover:text-sky-200"
2533
+ className="mt-1 block text-sm font-medium text-[var(--foreground)] transition-colors hover:text-[var(--primary)]"
2354
2534
  >
2355
2535
  {issue.title}
2356
2536
  </a>
2357
2537
  ) : (
2358
- <p className="mt-1 text-sm font-medium text-zinc-200">
2538
+ <p className="mt-1 text-sm font-medium text-[var(--foreground)]">
2359
2539
  {issue.title}
2360
2540
  </p>
2361
2541
  )}
2362
2542
  </div>
2363
- <span className="rounded-full border border-zinc-700 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-zinc-500">
2543
+ <span className="rounded-full border border-[var(--tone-neutral-border)] px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-[var(--tone-neutral)]">
2364
2544
  {issue.status}
2365
2545
  </span>
2366
2546
  </div>
2367
- <div className="mt-3 flex flex-wrap items-center gap-2 text-[11px] text-zinc-500">
2547
+ <div className="mt-3 flex flex-wrap items-center gap-2 text-[11px] text-[var(--muted-foreground)]">
2368
2548
  <span>Updated {formatDateTime(issue.updatedAt)}</span>
2369
2549
  <span>{issue.assignee ? `Assigned to ${issue.assignee}` : "Unassigned"}</span>
2370
2550
  </div>
@@ -2375,7 +2555,7 @@ export function ProjectObjectiveDetail({
2375
2555
 
2376
2556
  {doneIssues.length > 0 && (
2377
2557
  <div className={activeIssues.length > 0 ? "mt-6" : ""}>
2378
- <p className="text-[11px] font-medium uppercase tracking-[0.18em] text-zinc-600 mb-2">
2558
+ <p className="text-[11px] font-medium uppercase tracking-[0.18em] text-[var(--muted-foreground)] mb-2">
2379
2559
  Completed
2380
2560
  </p>
2381
2561
  <div className="space-y-0.5">
@@ -2385,11 +2565,11 @@ export function ProjectObjectiveDetail({
2385
2565
  href={issue.url ?? "#"}
2386
2566
  target="_blank"
2387
2567
  rel="noreferrer"
2388
- className="flex items-center gap-3 py-1.5 px-2 rounded-md text-zinc-500 hover:text-zinc-400 hover:bg-zinc-800/40 transition-colors group"
2568
+ className="group flex items-center gap-3 rounded-md px-2 py-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--foreground)]"
2389
2569
  >
2390
2570
  <span className="text-[11px] font-mono shrink-0">{issue.identifier}</span>
2391
2571
  <span className="text-[12px] truncate">{issue.title}</span>
2392
- <span className="ml-auto text-[10px] shrink-0 text-zinc-600 group-hover:text-zinc-500">{issue.status}</span>
2572
+ <span className="ml-auto shrink-0 text-[10px] text-[var(--app-shell-soft-text)] group-hover:text-[var(--muted-foreground)]">{issue.status}</span>
2393
2573
  </a>
2394
2574
  ))}
2395
2575
  </div>
@@ -2414,7 +2594,6 @@ export function ProjectObjectiveDetail({
2414
2594
  condition: objective.condition,
2415
2595
  }}
2416
2596
  onCreateTask={handleScheduledTaskCreate}
2417
- onCreateObjectiveLinearWorker={handleObjectiveLinearWorkerCreate}
2418
2597
  />
2419
2598
  </section>
2420
2599
  )}
@@ -2422,12 +2601,12 @@ export function ProjectObjectiveDetail({
2422
2601
  {/* Danger Zone */}
2423
2602
  <section className="pt-10">
2424
2603
  <div className="mb-4">
2425
- <h2 className="text-sm font-semibold text-red-400">Danger Zone</h2>
2604
+ <h2 className="text-sm font-semibold text-[var(--destructive)]">Danger Zone</h2>
2426
2605
  </div>
2427
- <div className="border border-red-900/30 rounded-xl p-5 flex items-center justify-between bg-red-950/5">
2606
+ <div className="flex items-center justify-between rounded-xl border border-[var(--destructive-border)] bg-[var(--destructive-bg)] p-5">
2428
2607
  <div>
2429
- <h3 className="text-sm font-medium text-zinc-200">Delete Objective</h3>
2430
- <p className="text-sm text-zinc-500 mt-1">
2608
+ <h3 className="text-sm font-medium text-[var(--foreground)]">Delete Objective</h3>
2609
+ <p className="mt-1 text-sm text-[var(--muted-foreground)]">
2431
2610
  Once you delete an objective, there is no going back.
2432
2611
  </p>
2433
2612
  </div>
@@ -2435,7 +2614,7 @@ export function ProjectObjectiveDetail({
2435
2614
  type="button"
2436
2615
  onClick={() => void handleObjectiveDelete()}
2437
2616
  aria-label={`Delete objective ${objective.title}`}
2438
- className="flex items-center gap-2 px-3 py-1.5 rounded-md border border-red-900/40 text-red-400 text-sm font-medium hover:bg-red-950/40 transition-colors bg-red-950/20 whitespace-nowrap"
2617
+ className="flex items-center gap-2 whitespace-nowrap rounded-md border border-[var(--destructive-border)] bg-[var(--destructive-bg)] px-3 py-1.5 text-sm font-medium text-[var(--destructive)] transition-opacity hover:opacity-90"
2439
2618
  >
2440
2619
  <Trash2 size={14} /> Delete
2441
2620
  </button>
@@ -2475,8 +2654,8 @@ export function ProjectObjectivesWorkspace(props: ProjectObjectivesWorkspaceProp
2475
2654
 
2476
2655
  function EmptyState({ label }: { label: string }) {
2477
2656
  return (
2478
- <div className="border border-dashed border-zinc-700/80 rounded-xl p-6 flex items-center bg-[#151517]">
2479
- <p className="text-sm text-zinc-500">{label}</p>
2657
+ <div className="flex items-center rounded-xl border border-dashed border-[var(--border)] bg-[var(--overlay-panel-muted)] p-6">
2658
+ <p className="text-sm text-[var(--muted-foreground)]">{label}</p>
2480
2659
  </div>
2481
2660
  );
2482
2661
  }
@@ -2504,7 +2683,7 @@ function ObjectiveEditorModal({
2504
2683
  role="dialog"
2505
2684
  aria-modal="true"
2506
2685
  aria-label={mode === "edit" ? "Edit objective" : "New objective"}
2507
- className="w-full max-w-3xl overflow-hidden rounded-[32px] border border-[var(--border)] bg-[rgba(6,10,16,0.96)] shadow-2xl"
2686
+ className="w-full max-w-3xl overflow-hidden rounded-[32px] border border-[var(--border)] bg-[var(--overlay-panel-strong)] shadow-2xl"
2508
2687
  >
2509
2688
  <div className="border-b border-[var(--border)] px-5 py-4">
2510
2689
  <h3 className="text-lg font-semibold text-[var(--foreground)]">
@@ -2523,7 +2702,7 @@ function ObjectiveEditorModal({
2523
2702
  <input
2524
2703
  value={draft.title}
2525
2704
  onChange={(event) => onChange({ ...draft, title: event.target.value })}
2526
- className="w-full rounded-2xl border border-[var(--border)] bg-[rgba(15,23,42,0.55)] px-4 py-3 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-sky-500/50"
2705
+ className="w-full rounded-2xl border border-[var(--border)] bg-[var(--input)] px-4 py-3 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-[var(--primary)]"
2527
2706
  placeholder="Get 50 qualified visitors daily"
2528
2707
  />
2529
2708
  </div>
@@ -2534,7 +2713,7 @@ function ObjectiveEditorModal({
2534
2713
  <select
2535
2714
  value={draft.teamId}
2536
2715
  onChange={(event) => onChange({ ...draft, teamId: event.target.value })}
2537
- className="w-full rounded-2xl border border-[var(--border)] bg-[rgba(15,23,42,0.55)] px-3 py-3 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-sky-500/50"
2716
+ className="w-full rounded-2xl border border-[var(--border)] bg-[var(--input)] px-3 py-3 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-[var(--primary)]"
2538
2717
  >
2539
2718
  <option value="">Select a team</option>
2540
2719
  {teams.map((team) => (
@@ -2562,7 +2741,7 @@ function ObjectiveEditorModal({
2562
2741
  type="button"
2563
2742
  onClick={onSave}
2564
2743
  disabled={isSaving}
2565
- className="rounded-xl border border-sky-500/30 bg-sky-500/10 px-3 py-2 text-sm font-medium text-sky-100 transition-colors hover:bg-sky-500/20 disabled:cursor-not-allowed disabled:opacity-50"
2744
+ className="rounded-xl border border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] px-3 py-2 text-sm font-medium text-[var(--status-in-progress-text)] transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50"
2566
2745
  >
2567
2746
  {isSaving ? "Saving..." : mode === "edit" ? "Save objective" : "Create objective"}
2568
2747
  </button>
@@ -2591,7 +2770,7 @@ function ObjectiveWakeModal({
2591
2770
  role="dialog"
2592
2771
  aria-modal="true"
2593
2772
  aria-label="Edit wake schedule"
2594
- className="w-full max-w-2xl overflow-hidden rounded-[32px] border border-[var(--border)] bg-[rgba(6,10,16,0.96)] shadow-2xl"
2773
+ className="w-full max-w-2xl overflow-hidden rounded-[32px] border border-[var(--border)] bg-[var(--overlay-panel-strong)] shadow-2xl"
2595
2774
  >
2596
2775
  <div className="border-b border-[var(--border)] px-5 py-4">
2597
2776
  <h3 className="text-lg font-semibold text-[var(--foreground)]">Edit wake schedule</h3>
@@ -2629,7 +2808,7 @@ function ObjectiveWakeModal({
2629
2808
  type="button"
2630
2809
  onClick={onSave}
2631
2810
  disabled={isSaving}
2632
- className="rounded-xl border border-sky-500/30 bg-sky-500/10 px-3 py-2 text-sm font-medium text-sky-100 transition-colors hover:bg-sky-500/20 disabled:cursor-not-allowed disabled:opacity-50"
2811
+ className="rounded-xl border border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] px-3 py-2 text-sm font-medium text-[var(--status-in-progress-text)] transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50"
2633
2812
  >
2634
2813
  {isSaving ? "Saving..." : "Save schedule"}
2635
2814
  </button>