@mndrk/agx 2.1.0 → 2.2.0

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 (253) hide show
  1. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
  3. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  4. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  5. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +2 -2
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +2 -2
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +1 -1
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +5 -5
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +5 -5
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +2 -2
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +2 -2
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +2 -2
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +2 -2
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +2 -2
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +2 -2
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_067eb..._.js +3 -0
  196. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__039h7r.._.js +18 -0
  197. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0lno3km._.js +3 -0
  198. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0fl7_-o._.js → [root-of-the-server]__0nqqk26._.js} +2 -2
  199. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0j9m72.._.js → [root-of-the-server]__0tqn-o5._.js} +2 -2
  200. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~nm7b6._.js +3 -0
  201. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_064h43p._.js → _05xj_bp._.js} +2 -2
  202. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_0nvzo3y._.js → apps_local_04dh2yh._.js} +2 -2
  203. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +2 -2
  205. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +1 -1
  206. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +1 -1
  207. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +1 -1
  208. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
  209. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  210. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  211. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  212. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0e307b-0c2jbx.js → 0-cets4_axpvm.js} +1 -1
  216. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-wlbe.ripd2w.css +1 -0
  217. package/cloud-runtime/standalone/apps/local/.next/static/chunks/00e1ihnb6ap3t.js +16 -0
  218. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{119v0-idpg-cv.js → 0_cjth28_11b2.js} +1 -1
  219. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e6rxcxy.l5c8.js +1 -0
  220. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ime4btrg-g4l.js +1 -0
  221. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0jrkacz_dyem6.js → 0jglardpw~5uc.js} +5 -5
  222. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0tt1oh112yv-l.js → 0jq0t4zip38wt.js} +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kn66yvx08813.css +1 -0
  224. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{07646a0h94826.js → 0l89kxqcf86on.js} +2 -2
  225. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ng6wy4ak35jg.js +1 -0
  226. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0n~jhoq~op4e5.js +16 -0
  227. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0stvi5btlxl4m.js → 0xu_doej_wc-3.js} +1 -1
  228. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{16d~es6h6k~rj.js → 16fyhcmwlw3th.js} +1 -1
  229. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0uve8xrt~0a2e.js → 18e8w~~mvoh5o.js} +1 -1
  230. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +1 -1
  231. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +3 -2
  232. package/cloud-runtime/standalone/apps/local/components/linear/LinearSettingsModal.tsx +9 -3
  233. package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerConfig.tsx +65 -30
  234. package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerRunLog.tsx +190 -0
  235. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +38 -34
  236. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +118 -17
  237. package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +71 -2
  238. package/cloud-runtime/standalone/apps/local/worker/index.js +2 -2
  239. package/package.json +1 -1
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0tvwux2._.js +0 -3
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__006vr7.._.js +0 -3
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0d18x53._.js +0 -18
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0z7nw_r._.js +0 -3
  244. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-_ukhpeg429c.js +0 -16
  245. package/cloud-runtime/standalone/apps/local/.next/static/chunks/04yoml2rqnuot.js +0 -16
  246. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0_mrpyqcoyb_5.js +0 -1
  247. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0edewt9l~cs~k.css +0 -1
  248. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +0 -1
  249. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +0 -1
  250. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zw85-xl9ysjs.js +0 -1
  251. /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → qPuactsz6OYimwT6dSdHn}/_buildManifest.js +0 -0
  252. /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → qPuactsz6OYimwT6dSdHn}/_clientMiddlewareManifest.js +0 -0
  253. /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → qPuactsz6OYimwT6dSdHn}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,568656,e=>{"use strict";var t=e.i(843476),r=e.i(522016),a=e.i(618566),s=e.i(271645),o=e.i(958164),n=e.i(429056),i=e.i(417442),l=e.i(363732);let d=(0,l.default)("calendar-clock",[["path",{d:"M16 14v2.2l1.6 1",key:"fo4ql5"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]]);var c=e.i(529471),u=e.i(580873),m=e.i(575479),x=e.i(640481),p=e.i(929870),b=e.i(8707),h=e.i(794731),v=e.i(169610),f=e.i(572665),g=e.i(519132),j=e.i(797167),y=e.i(524123),w=e.i(945028),N=e.i(490011),k=e.i(984242),S=e.i(208343),C=e.i(884564),$=e.i(40527),I=e.i(378764),A=e.i(524507),E=e.i(245900),O=e.i(437307),M=e.i(715908),T=e.i(553069),P=e.i(827430),L=e.i(667480);function R(e){let t=e.cadence||e.cronExpr;return t?(0,T.cronToHuman)(e.cronExpr||t)??t:"No frequency"}function D(e){return"active"===e.state&&(null!==e.nextRunAt&&e.nextRunAt-Date.now()<0?!e.lastRunAt||!(e.lastRunAt>=e.nextRunAt):!!e.prevScheduledAt&&!!e.lastRunAt&&e.lastRunAt>e.prevScheduledAt+3e5)}function _(e,t){if("paused"===t)return"Paused";if("stopped"===t)return"Stopped";if(null===e)return"Pending";let r=e-Date.now();return r<0?"Overdue":r<6e4?`in ${Math.round(r/1e3)}s`:r<36e5?`in ${Math.round(r/6e4)}m`:r<864e5?`in ${Math.round(r/36e5)}h`:`in ${Math.round(r/864e5)}d`}function F(e){return new Date(e).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function z({job:e,onClose:r,onUpdate:a}){let[o,n]=(0,s.useState)({cadence:e.cronExpr||e.cadence||"",condition:e.condition||""}),[i,l]=(0,s.useState)(!0),[d,c]=(0,s.useState)(!1),m=async()=>{i&&(c(!0),await a({cadence:o.cadence,condition:o.condition}),c(!1),r())};return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4 py-6",children:(0,t.jsxs)("div",{className:"flex w-full max-w-md max-h-[85vh] flex-col rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--border)] px-6 py-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,t.jsx)(u.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("p",{className:"text-sm font-semibold text-[var(--foreground)]",children:e.name})]}),(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)]",children:(0,t.jsx)(j.X,{className:"h-4 w-4"})})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-5",children:(0,t.jsx)(L.ScheduleConditionPicker,{value:o,onChange:(e,t)=>{n(e),l(t.isScheduleValid)},scheduleLabel:"Schedule",conditionLabel:"Condition",conditionHelpText:"Scheduled runs and Run now will check this condition before executing."})}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center justify-end gap-3 border-t border-[var(--border)] px-6 py-4",children:[(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-xl border border-[var(--border)] px-4 py-2.5 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:()=>void m(),disabled:d||!i,className:"rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-4 py-2.5 text-sm text-emerald-400 transition-colors hover:bg-emerald-500/20 disabled:opacity-50",children:d?"Saving...":"Save"})]})]})})}function U({job:e,onClose:r,onUpdate:a}){let[o,n]=(0,s.useState)(e.prompt||""),[i,l]=(0,s.useState)(!1),d=async()=>{o===e.prompt||(l(!0),await a({prompt:o}),l(!1)),r()};return(0,t.jsx)("div",{className:"fixed inset-0 z-40 flex items-center justify-center bg-black/50 px-4 py-6",children:(0,t.jsxs)("div",{className:"flex w-full max-w-6xl max-h-[85vh] flex-col rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex shrink-0 items-start justify-between gap-4 border-b border-[var(--border)] px-6 py-5",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2.5",children:[(0,t.jsx)("p",{className:"truncate text-lg font-semibold text-[var(--foreground)]",children:e.name}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${W(e.state)}`,children:q(e.state)}),e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),R(e)]}),(0,t.jsxs)("span",{children:["Next run ",_(e.nextRunAt,e.state)]}),(0,t.jsxs)("span",{children:["Updated ",F(e.updatedAt)]})]})]}),(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)]","aria-label":"Close scheduled task details",children:(0,t.jsx)(j.X,{className:"h-4 w-4"})})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 space-y-5",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Instructions"}),(0,t.jsx)("div",{className:"rounded-2xl border border-[var(--card-hover-border)] bg-[var(--overlay-panel-muted)] px-1 py-1 text-sm leading-6 text-[var(--foreground)]",children:(0,t.jsx)($.default,{content:o,editable:!0,onChange:n,placeholder:"Write instructions in markdown…"})})]})}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center justify-end gap-3 border-t border-[var(--border)] px-6 py-4",children:[(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-xl border border-[var(--border)] px-4 py-2.5 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:()=>void d(),disabled:i,className:"rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-4 py-2.5 text-sm text-emerald-400 transition-colors hover:bg-emerald-500/20 disabled:opacity-50",children:i?"Saving...":"Save"})]})]})})}function q(e){return"active"===e?"Active":"paused"===e?"Paused":"Stopped"}function W(e){return"active"===e?"border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed)]":"paused"===e?"border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked)]":"border-[var(--tone-neutral-border)] bg-[var(--tone-neutral-bg)] text-[var(--tone-neutral)]"}function J({projectId:e,objectiveId:r,objectiveKey:a,createDefaults:o,onCreateTask:n}){let{jobs:i,loading:l,refresh:d,deleteJob:m,toggleJob:x,updateJob:b,fetchRuns:v,runNow:f}=(0,M.usePromptJobs)(e,{requireProjectId:!0,includeObjectiveJobs:!0,objectiveId:r}),[g,j]=(0,s.useState)(!1),[y,w]=(0,s.useState)(null),[N,k]=(0,s.useState)(null),[S,C]=(0,s.useState)(null),[$,I]=(0,s.useState)(null),[T,L]=(0,s.useState)([]),V=(0,s.useMemo)(()=>i.filter(e=>e.objectiveId===r).sort((e,t)=>!e.name.toLowerCase().includes("objective worker")-!t.name.toLowerCase().includes("objective worker")),[i,r]),B=(0,s.useMemo)(()=>V.find(e=>e.id===S)??null,[S,V]),H=(0,s.useCallback)(async()=>{if(0===V.length)return void L([]);let e=[];await Promise.all(V.map(async t=>{for(let r of(await v(t.id)))e.push({...r,jobName:t.name})})),e.sort((e,t)=>new Date(t.startedAt??t.createdAt).getTime()-new Date(e.startedAt??e.createdAt).getTime()),L(e.slice(0,10))},[V,v]);(0,s.useEffect)(()=>{H()},[H]);let K=async e=>{w(e.id),k(null);let t=await m(e.id);(w(null),t)?(S===e.id&&C(null),await d()):k(`Failed to hide "${e.name}".`)},X=async e=>{k(null);let t=await n(e);return t&&await d(),t},G=(0,s.useMemo)(()=>V.find(e=>e.id===$)??null,[$,V]);return(0,t.jsxs)(t.Fragment,{children:[g?(0,t.jsx)(P.CreateJobModal,{onClose:()=>j(!1),onSubmit:async e=>{await X(e)},createDefaults:o,contextLabel:a}):null,B?(0,t.jsx)(U,{job:B,onClose:()=>C(null),onUpdate:async e=>{let t=await b(B.id,e);return t&&await d(),t}}):null,G?(0,t.jsx)(z,{job:G,onClose:()=>I(null),onUpdate:async e=>{let t=await b(G.id,e);return t&&await d(),t}}):null,(0,t.jsxs)("div",{className:"px-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Scheduled Tasks"}),(0,t.jsxs)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:["Shared scheduled-task list filtered to objective label"," ",(0,t.jsx)("span",{className:"font-mono text-[var(--foreground)]",children:a}),"."]})]}),(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:(0,t.jsxs)("button",{type:"button",onClick:()=>j(!0),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:[(0,t.jsx)(p.Plus,{className:"h-4 w-4"}),"New task"]})})]}),N?(0,t.jsx)("p",{className:"mt-4 text-sm text-[var(--destructive)]",children:N}):null,(0,t.jsx)("div",{className:"mt-5 space-y-3",children:l&&0===V.length?(0,t.jsx)("div",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-8 text-sm text-[var(--muted-foreground)]",children:"Loading scheduled tasks..."}):0===V.length?(0,t.jsx)("div",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-8 text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks for this objective yet."}):V.map(e=>(0,t.jsx)("div",{onClick:()=>C(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),C(e.id))},role:"button",tabIndex:0,className:`block w-full rounded-2xl border px-4 py-4 text-left transition-colors focus:outline-none focus:ring-2 focus:ring-[var(--card-hover-border)] ${D(e)?"border-amber-500/40 bg-amber-500/5 hover:border-amber-500/60":"border-[var(--border)] bg-[var(--overlay-panel-muted)] hover:border-[var(--card-hover-border)]"}`,children:(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2.5",children:[(0,t.jsx)("span",{className:`inline-block size-2 shrink-0 rounded-full ${"active"===e.state?"bg-emerald-400":"paused"===e.state?"bg-amber-400":"bg-[var(--tone-neutral)]"}`}),(0,t.jsx)("p",{className:"truncate text-sm font-semibold text-[var(--foreground)]",children:e.name}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${W(e.state)}`,children:q(e.state)}),D(e)&&(0,t.jsxs)("span",{className:"shrink-0 text-[10px] font-semibold uppercase tracking-[0.16em] text-amber-400 bg-amber-500/10 px-2 py-0.5 rounded-full border border-amber-500/20 inline-flex items-center gap-1",children:[(0,t.jsx)(u.Clock,{className:"h-3 w-3"}),"overdue"]})]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:`inline-flex items-center gap-1.5 ${D(e)?"text-amber-400 font-medium":""}`,children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),"Next run ",_(e.nextRunAt,e.state)]}),(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),R(e)]}),e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null]}),(0,t.jsx)("p",{className:"mt-3 line-clamp-2 text-sm leading-6 text-[var(--muted-foreground)]",children:e.prompt.split("\n").map(e=>e.trim()).find(Boolean)||"No instructions yet"}),e.condition?(0,t.jsxs)("p",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:["Condition: ",e.condition]}):null]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[(0,t.jsx)("button",{type:"button",title:"Run now",onClick:async t=>{t.stopPropagation(),w(e.id),await f(e.id),w(null),await d(),await H()},disabled:y===e.id,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-emerald-400/40 hover:text-emerald-300 disabled:cursor-not-allowed disabled:opacity-50",children:(0,t.jsx)(E.Play,{className:"h-3.5 w-3.5 fill-current"})}),(0,t.jsx)("button",{type:"button",title:"Edit schedule",onClick:t=>{t.stopPropagation(),I(e.id)},className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-sky-400/40 hover:text-sky-300",children:(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"})}),(0,t.jsx)("button",{type:"button",title:"active"===e.state?"Pause":"Resume",onClick:async t=>{t.stopPropagation(),w(e.id),await x(e),w(null)},disabled:y===e.id,className:`rounded-lg border p-2 transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${"active"===e.state?"border-[var(--border)] text-[var(--muted-foreground)] hover:border-amber-400/40 hover:text-amber-300":"border-emerald-500/30 text-emerald-400 hover:border-emerald-400/50 hover:text-emerald-300"}`,children:"active"===e.state?(0,t.jsx)(A.Pause,{className:"h-3.5 w-3.5"}):(0,t.jsx)(E.Play,{className:"h-3.5 w-3.5 fill-current"})}),(0,t.jsx)("button",{type:"button",title:"Delete",onClick:t=>{t.stopPropagation(),confirm(`Delete "${e.name}"? This cannot be undone.`)&&K(e)},disabled:y===e.id,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--status-failed-border)] hover:text-[var(--destructive)] disabled:cursor-not-allowed disabled:opacity-50",children:(0,t.jsx)(h.Trash2,{className:"h-3.5 w-3.5"})})]})]})},e.id))}),T.length>0&&(0,t.jsxs)("div",{className:"mt-8",children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.18em] text-[var(--muted-foreground)] mb-3",children:"Recent executions"}),(0,t.jsx)("div",{className:"space-y-0.5",children:T.map(e=>{let r=e.startedAt??e.createdAt,a="success"===e.status,s="failed"===e.status,o="running"===e.status;return(0,t.jsxs)("div",{className:"flex items-center gap-3 py-2 px-2 rounded-md text-xs",children:[(0,t.jsx)("span",{className:`flex size-5 shrink-0 items-center justify-center rounded-full border ${a?"border-emerald-500/40 text-emerald-400":s?"border-[var(--status-failed-border)] text-[var(--destructive)]":o?"border-sky-500/40 text-sky-400":"border-[var(--border)] text-[var(--muted-foreground)]"}`,children:a?(0,t.jsx)(c.Check,{className:"h-3 w-3"}):s?(0,t.jsx)(O.XCircle,{className:"h-3 w-3"}):(0,t.jsx)("span",{className:`block size-1.5 rounded-full ${o?"bg-sky-400 animate-pulse":"bg-current"}`})}),(0,t.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:e.jobName}),(0,t.jsx)("span",{className:"ml-auto shrink-0 text-[11px] text-[var(--muted-foreground)]",children:F(r)}),null!=e.durationMs&&(0,t.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-[var(--muted-foreground)]",children:e.durationMs<1e3?`${e.durationMs}ms`:`${Math.round(e.durationMs/1e3)}s`})]},e.id)})})]})]})]})}var V=e.i(498027),B=e.i(367859);let H=(0,l.default)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]),K={"metric-check":{label:"Metric",className:"bg-blue-500/15 text-blue-400 border-blue-500/30"},"status-update":{label:"Status",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30"},milestone:{label:"Milestone",className:"bg-amber-500/15 text-amber-400 border-amber-500/30"},note:{label:"Note",className:"bg-[var(--tone-neutral-bg)] text-[var(--tone-neutral)] border-[var(--tone-neutral-border)]"}},X=["metric-check","status-update","milestone","note"];function G({activity:e}){let[r,a]=(0,s.useState)(!1),o=K[e.type]??K.note,n=e.body.length>200;return(0,t.jsxs)("div",{className:"relative pl-6 pb-6 last:pb-0",children:[(0,t.jsx)("div",{className:"absolute left-0 top-1.5 h-3 w-3 rounded-full border-2 border-[var(--timeline-node-border)] bg-[var(--timeline-node-bg)]"}),(0,t.jsx)("div",{className:"absolute bottom-0 left-[5px] top-4 w-px bg-[var(--timeline-track)] last:hidden"}),(0,t.jsxs)("div",{className:"mb-1.5 flex items-center gap-2",children:[(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] ${o.className}`,children:o.label}),(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:function(e){let t=Date.now(),r=Date.parse(e);if(Number.isNaN(r))return e;let a=Math.floor((t-r)/6e4);if(a<1)return"just now";if(a<60)return`${a}m ago`;let s=Math.floor(a/60);if(s<24)return`${s}h ago`;let o=Math.floor(s/24);return o<30?`${o}d ago`:new Date(r).toLocaleDateString("en-US",{month:"short",day:"numeric",year:o>365?"numeric":void 0})}(e.createdAt)}),"manual"!==e.source&&(0,t.jsx)("span",{className:"max-w-[180px] truncate font-mono text-[11px] text-[var(--app-shell-soft-text)]",children:e.source})]}),r?(0,t.jsx)("div",{className:"prose prose-sm max-w-none text-sm text-[var(--foreground)] prose-neutral dark:prose-invert",children:(0,t.jsx)(S.Markdown,{content:e.body})}):(0,t.jsx)("div",{className:`text-sm leading-relaxed text-[var(--muted-foreground)] ${n?"max-h-24 overflow-hidden [mask-image:linear-gradient(to_bottom,black_72%,transparent)]":""}`,children:(0,t.jsx)(S.Markdown,{content:e.body})}),n&&(0,t.jsxs)("button",{type:"button",onClick:()=>a(!r),className:"mt-1.5 flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[r?(0,t.jsx)(V.ChevronDown,{size:12}):(0,t.jsx)(B.ChevronRight,{size:12}),r?"Show less":"Show more"]})]})}function Y({projectId:e,objectiveId:r,onCreated:a,onCancel:o}){let[n,i]=(0,s.useState)("note"),[l,d]=(0,s.useState)(""),[c,u]=(0,s.useState)(!1),m=(0,s.useRef)(null);(0,s.useEffect)(()=>{m.current?.focus()},[]);let x=async()=>{let t=l.trim();if(t&&!c){u(!0);try{let s=await fetch(`/api/projects/${e}/objectives/${r}/activities`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:n,body:t})});if(!s.ok)throw Error("Failed to create activity");let o=await s.json();a(o)}catch(e){console.error("Failed to create activity:",e)}finally{u(!1)}}};return(0,t.jsxs)("div",{className:"mb-4 rounded-lg border border-[var(--border)] bg-[var(--overlay-panel-muted)] p-3",children:[(0,t.jsx)("div",{className:"mb-3 flex flex-wrap gap-1.5",children:X.map(e=>{let r=K[e],a=n===e;return(0,t.jsx)("button",{type:"button",onClick:()=>i(e),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${a?"border-[var(--foreground)] bg-[var(--foreground)] text-[var(--background)]":`${r.className} hover:opacity-80`}`,children:r.label},e)})}),(0,t.jsx)("textarea",{ref:m,value:l,onChange:e=>d(e.target.value),placeholder:"What did you do?",rows:3,className:"w-full resize-none rounded-md border border-[var(--border)] bg-[var(--input)] px-3 py-2 text-sm text-[var(--foreground)] placeholder:text-[var(--app-shell-soft-text)] focus:border-[var(--card-hover-border)] focus:outline-none"}),(0,t.jsxs)("div",{className:"mt-2 flex items-center justify-end gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:o,className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:x,disabled:!l.trim()||c,className:"px-3 py-1.5 text-xs font-medium rounded-md bg-sky-600 text-white hover:bg-sky-500 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",children:c?"Saving...":"Log activity"})]})]})}function Q({projectId:e,objectiveId:r,onTotalChange:a}){let[o,n]=(0,s.useState)([]),[i,l]=(0,s.useState)(0),[d,c]=(0,s.useState)(!1),[u,m]=(0,s.useState)(1),[x,b]=(0,s.useState)(!0),[h,v]=(0,s.useState)("all"),[f,g]=(0,s.useState)(!1),[y,w]=(0,s.useState)(!1),N=(0,s.useCallback)(async(t,s,o)=>{b(!0);try{let i=new URLSearchParams({page:String(t),limit:"25"});"all"!==s&&i.set("type",s);let d=await fetch(`/api/projects/${e}/objectives/${r}/activities?${i}`);if(!d.ok)throw Error("Failed to load activities");let u=await d.json(),m=Array.isArray(u.activities)?u.activities:[],x="number"==typeof u.total?u.total:m.length,p=!!u.hasMore;n(e=>o?[...e,...m]:m),l(x),a?.(x),c(p)}catch(e){console.error("Failed to fetch activities:",e)}finally{b(!1)}},[e,r]);return(0,s.useEffect)(()=>{m(1),N(1,h,!1)},[N,h]),(0,t.jsxs)("section",{children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Time-ordered log of outputs from scheduled tasks and manual entries."}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>w(!y),className:`flex items-center gap-1 px-2.5 py-1 rounded-md text-xs font-medium transition-colors ${y?"text-sky-400 bg-sky-500/10":"text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]"}`,children:[y?(0,t.jsx)(j.X,{size:12}):(0,t.jsx)(p.Plus,{size:12}),"Log activity"]}),(0,t.jsx)("button",{type:"button",onClick:()=>g(!f),className:`p-1.5 rounded-md transition-colors ${f||"all"!==h?"text-sky-400 bg-sky-500/10":"text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]"}`,"aria-label":"Filter activities",children:(0,t.jsx)(H,{size:14})})]})]}),f&&(0,t.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-4",children:[(0,t.jsx)("button",{type:"button",onClick:()=>v("all"),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${"all"===h?"border-[var(--foreground)] bg-[var(--foreground)] text-[var(--background)]":"border-[var(--tone-neutral-border)] bg-[var(--tone-neutral-bg)] text-[var(--tone-neutral)] hover:border-[var(--card-hover-border)]"}`,children:"All"}),X.map(e=>{let r=K[e],a=h===e;return(0,t.jsx)("button",{type:"button",onClick:()=>v(e),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${a?"border-[var(--foreground)] bg-[var(--foreground)] text-[var(--background)]":`${r.className} hover:opacity-80`}`,children:r.label},e)})]}),y&&(0,t.jsx)(Y,{projectId:e,objectiveId:r,onCreated:e=>{n(t=>[e,...t]),l(e=>{let t=e+1;return a?.(t),t}),w(!1)},onCancel:()=>w(!1)}),x&&0===o.length?(0,t.jsx)("div",{className:"py-6 text-center text-sm text-[var(--muted-foreground)]",children:"Loading activities..."}):0===o.length?(0,t.jsxs)("div",{className:"rounded-xl border border-dashed border-[var(--border)] bg-[var(--overlay-panel-muted)] p-6 text-center",children:[(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No activities yet."}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--app-shell-soft-text)]",children:"Activities are created by scheduled tasks and agent actions."})]}):(0,t.jsxs)("div",{children:[o.map(e=>(0,t.jsx)(G,{activity:e},e.id)),d&&(0,t.jsx)("div",{className:"pt-2 pl-6",children:(0,t.jsx)("button",{type:"button",onClick:()=>{let e=u+1;m(e),N(e,h,!0)},disabled:x,className:"text-xs text-sky-400 hover:text-sky-300 transition-colors disabled:opacity-50",children:x?"Loading...":"Load more"})})]})]})}let Z=/(?:^|\n)Objective health:\s*(\d{1,3})%\s*(On track|At risk|Off track|Done)\b/im,ee={"on track":"on_track","at risk":"at_risk","off track":"off_track",done:"done"};function et(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function er(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function ea(e){if("string"!=typeof e)return null;let t=e.trim().toLowerCase();return"on_track"===t||"at_risk"===t||"off_track"===t||"done"===t?t:ee[t]??null}function es(e){if("string"!=typeof e)return null;let t=Date.parse(e);return Number.isNaN(t)?null:new Date(t).toISOString()}function eo(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function en(...e){let t=e.flatMap(e=>e??[]),r=[];for(let e of[...t].sort((e,t)=>Date.parse(e.recordedAt)-Date.parse(t.recordedAt))){let t=r[r.length-1]??null;t&&t.progress===e.progress&&t.status===e.status&&(!t.source||!e.source||t.source===e.source)&&5e3>=Math.abs(Date.parse(e.recordedAt)-Date.parse(t.recordedAt))||r.push(e)}return r}let ei={on_track:{label:"On track",stroke:"var(--status-completed-text)"},at_risk:{label:"At risk",stroke:"var(--status-blocked-text)"},off_track:{label:"Off track",stroke:"var(--status-failed-text)"},done:{label:"Done",stroke:"var(--status-in-progress-text)"}};function el(e){let{projectId:r,objectiveId:a,objectiveKey:o,metadata:n,currentProgress:i,currentStatus:l,objectiveUpdatedAt:d}=e,c=(0,s.useMemo)(()=>(function(e,t){if(!et(e)||!t.trim())return[];let r=e.project_objective_health_history;if(!et(r))return[];let a=r[t.trim()];return Array.isArray(a)?en(a.map(e=>(function(e){if(!et(e))return null;let t=ea(e.status),r=es(e.recordedAt);return t&&r?{progress:er(e.progress),status:t,recordedAt:r,source:eo(e.source),note:eo(e.note),objectiveId:eo(e.objectiveId)??null,objectiveKey:eo(e.objectiveKey)??null}:null})(e)).filter(e=>!!e)):[]})(n,a),[n,a]),[u,m]=(0,s.useState)(c),x=(0,s.useMemo)(()=>({progress:i,status:l,recordedAt:d,objectiveId:a,objectiveKey:o}),[i,l,a,o,d]);(0,s.useEffect)(()=>{m(c)},[c]),(0,s.useEffect)(()=>{let e=!1;return async function(){try{let t=await fetch(`/api/projects/${r}/objectives/${a}/activities?type=status-update&limit=100`);if(!t.ok)throw Error("Failed to load objective activity history");let s=await t.json(),n=Array.isArray(s.activities)?s.activities:[],i=en(c,en(n.map(e=>(function(e){if("status-update"!==e.type)return null;let t=e.body.match(Z);if(!t)return null;let r=er(Number(t[1])),a=ea(t[2]),s=es(e.createdAt);return a&&s?{progress:r,status:a,recordedAt:s,source:eo(e.source),objectiveKey:eo(e.objectiveLabel)??null}:null})(e)).filter(e=>!!e&&(!o||e.objectiveKey===o))));e||m(i)}catch{e||m(c)}}(),()=>{e=!0}},[c,a,o,r]);let p=en(u,[x]),b=p[p.length-1],h=function(e){if(1===e.length){let t=46-e[0].progress/100*40;return`90,${t}`}return e.map((t,r)=>{let a=6+r/Math.max(1,e.length-1)*168,s=46-t.progress/100*40;return`${a},${s}`}).join(" ")}(p),v=ei[b.status],f=0===u.length?"Current state":1===p.length?"1 update":`${p.length} updates`;return(0,t.jsxs)("div",{"data-testid":"objective-health-trend",className:"flex min-w-[260px] flex-1 items-center gap-4 rounded-2xl border border-[var(--border)] bg-[var(--overlay-panel-muted)] px-4 py-3",children:[(0,t.jsxs)("div",{className:"min-w-[84px]",children:[(0,t.jsx)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--muted-foreground)]",children:"Objective health"}),(0,t.jsxs)("div",{className:"mt-1 text-[24px] font-semibold leading-none text-[var(--foreground)]",children:[b.progress,"%"]}),(0,t.jsx)("div",{className:"mt-1 text-[11px] font-medium",style:{color:v.stroke},children:v.label})]}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("svg",{viewBox:"0 0 180 52",className:"h-[52px] w-full overflow-visible",role:"img","aria-label":"Objective health trend",children:[(0,t.jsx)("line",{x1:"6",y1:"26",x2:"174",y2:"26",stroke:"var(--border)",strokeDasharray:"3 3",strokeWidth:"1"}),(0,t.jsx)("polyline",{fill:"none",stroke:v.stroke,strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",points:h}),p.map((e,r)=>{let[a="0",s="0"]=(h.split(" ")[r]??"").split(",");return(0,t.jsx)("circle",{cx:a,cy:s,r:r===p.length-1?4:3,fill:v.stroke,fillOpacity:r===p.length-1?1:.2,stroke:v.stroke,strokeWidth:"1.5"},`${e.recordedAt}-${r}`)})]}),(0,t.jsxs)("div",{className:"mt-1 flex items-center justify-between gap-2 text-[10px] text-[var(--muted-foreground)]",children:[(0,t.jsx)("span",{children:f}),(0,t.jsx)("span",{children:new Date(b.recordedAt).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})})]})]})]})}var ed=e.i(644660),ec=e.i(44054),eu=e.i(434405),em=e.i(169433),ex=e.i(902572);let ep={on_track:{label:"On track",chipClass:"border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed-text)]",toneClass:"text-[var(--status-completed-text)]"},at_risk:{label:"At risk",chipClass:"border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked-text)]",toneClass:"text-[var(--status-blocked-text)]"},off_track:{label:"Off track",chipClass:"border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed-text)]",toneClass:"text-[var(--status-failed-text)]"},done:{label:"Done",chipClass:"border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] text-[var(--status-in-progress-text)]",toneClass:"text-[var(--status-in-progress-text)]"}};function eb({onResize:e}){let{isTouchLayout:r}=(0,ec.useInputCapabilities)();return r?null:(0,t.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize objective chat panel",className:"group relative z-10 hidden w-0 shrink-0 cursor-col-resize xl:block",onMouseDown:t=>{t.preventDefault();let r=t.clientX;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let a=t=>{let a=r-t.clientX;r=t.clientX,e(a)},s=()=>{document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",s)};window.addEventListener("mousemove",a),window.addEventListener("mouseup",s)},children:(0,t.jsx)("div",{className:"absolute inset-y-0 -left-0.5 w-1 transition-colors group-hover:bg-[var(--primary)]/40"})})}function eh(e){return new Date(e).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function ev(){return{title:"",teamId:"",summary:""}}function ef(e,t,r){return t?e.objectives.find(e=>e.teamId===t&&e.id!==r)??null:null}function eg(e,t,r){return e.filter(e=>!ef(t,e.id,r))}function ej(e){let{projects:t,isLoading:r,refetch:a,updateProject:o}=(0,y.useProjects)(),[n,i]=(0,s.useState)([]),l=(0,s.useMemo)(()=>t.find(t=>t.slug===e)??null,[e,t]),d=(0,s.useMemo)(()=>(0,ex.readProjectObjectivesWorkspace)(l?.metadata),[l?.metadata]),c=(0,s.useCallback)(async e=>{if(!l)throw Error("Project not found.");await o(l.id,{metadata:(0,ex.writeProjectObjectivesWorkspace)(l.metadata??{},e)})},[l,o]);return(0,s.useEffect)(()=>{let e=!0;return async function(){if(!l?.id)return i([]);try{let t=await fetch(`/api/projects/${l.id}/teams`);if(!t.ok)throw Error("Failed to fetch teams");let r=await t.json();if(!e)return;i((r.teams??[]).map(e=>({id:"string"==typeof e.id?e.id:"",name:"string"==typeof e.name?e.name:"Untitled team"})).filter(e=>e.id))}catch{if(!e)return;i([])}}(),()=>{e=!1}},[l?.id]),{isLoading:r,project:l,workspace:d,teams:n,persistWorkspace:c,refetchProject:a}}function ey(e){return"user"===e.role&&!e.rootMessageId}function ew({projectId:e,projectSlug:r,objective:a,teamName:o,onThreadLinked:l,onObjectiveUpdated:d}){let[c,u]=(0,s.useState)(()=>(0,em.loadObjectiveChatPanelWidth)()||800),[m,x]=(0,s.useState)(a.threadId??(a.id?`objective-chat:${a.id}`:null)),[p,b]=(0,s.useState)("list"),[h,f]=(0,s.useState)(null),[g,j]=(0,s.useState)(!1),[y,$]=(0,s.useState)(a.chatSessionVersion),[I,A]=(0,s.useState)([]),[E,O]=(0,s.useState)(null),M=(0,s.useRef)(!1),T=(0,s.useRef)(!1),P=window.location?.origin?window.location.origin:null,{messages:L,setMessages:R,sendMessage:D,loadHistory:_,setChatRuns:F,stop:z,chatRuns:U}=(0,w.useGroupChat)(m),{processes:q,streaming:W,chatRuns:J,poll:V}=(0,N.useProcessPolling)(m?{workspaceId:m}:null,{messages:L,setMessages:R});(0,s.useEffect)(()=>{a.threadId&&a.threadId!==m&&x(a.threadId)},[a.threadId,m]),(0,s.useEffect)(()=>{b("list"),f(null),j(!1),T.current=!1},[a.id]),(0,s.useEffect)(()=>{$(a.chatSessionVersion),a.chatSessionVersion>=ex.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION&&(T.current=!0)},[a.chatSessionVersion]);let B=(0,s.useCallback)(async t=>{let r=t.trim();if(r&&!(await fetch(`/api/projects/${e}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:r})})).ok)throw Error("Failed to link objective chat to the project.")},[e]);(0,s.useEffect)(()=>{let e=!1;return m?(j(!1),(async()=>{await _(m),e||j(!0)})(),()=>{e=!0}):void j(!0)},[_,m]),(0,s.useEffect)(()=>{let t=!1;return async function(){try{let r=a.teamId?`/api/projects/${e}/teams/${a.teamId}/agents`:`/api/projects/${e}/agents`,[s,o]=await Promise.all([fetch("/api/participants"),fetch(r)]),n=s.ok?await s.json():[],i=Array.isArray(n)?n:[],l=o.ok?await o.json():{agents:[]};if(t)return;let d=((l&&"object"==typeof l?l:{agents:[]}).agents??[]).slice().sort((e,t)=>e.routing_order-t.routing_order).map(e=>e.agent_id);if(0===d.length)return void A(i);let c=new Map(i.map(e=>[e.id,e]));A(d.map(e=>c.get(e)).filter(e=>!!e))}catch(e){if(t)return;console.error("Failed to load objective chat participants",e),A([])}}(),()=>{t=!0}},[e,a.teamId]),(0,s.useEffect)(()=>{a.threadId&&B(a.threadId).catch(e=>{console.warn("Failed to re-link objective chat thread to project",e)})},[B,a.threadId]),(0,s.useEffect)(()=>{if(!a.threadId||!m||!g||y>=ex.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION||T.current)return;T.current=!0;let t=function(e){let t=e.filter(ey).sort((e,t)=>e.timestamp-t.timestamp);if(t.length<=1)return null;let r=t[0]?.id;if(!r)return null;let a=t.slice(1).map(e=>e.id),s=new Set(a);return{messages:[...e].map(e=>{let t=s.has(e.id)&&ey(e),a="string"==typeof e.rootMessageId&&s.has(e.rootMessageId);return t||a?{...e,rootMessageId:r,parentMessageId:r,depth:1}:e}).sort((e,t)=>e.timestamp-t.timestamp),primaryRootMessageId:r,mergedRootMessageIds:a}}(L),r=!1;return(async()=>{O(null);try{if(t){if(!(await fetch("/api/history",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:m,messages:t.messages})})).ok)throw Error("Failed to migrate the objective chat history.");if(r)return;R(t.messages),f(e=>e&&t.mergedRootMessageIds.includes(e)?t.primaryRootMessageId:e)}if(!(await fetch(`/api/projects/${e}/objectives/${a.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatSessionVersion:ex.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION})})).ok)throw Error("Failed to update the objective chat session version.");if(r)return;$(ex.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION),d().catch(e=>{console.warn("Failed to refresh objective after objective chat migration",e)})}catch(e){if(r)return;console.warn("Failed to migrate legacy objective chat sessions",e),O(e instanceof Error?e.message:"Failed to migrate the objective chat history.")}})(),()=>{r=!0}},[y,g,L,a.id,a.threadId,d,e,R,m]);let H=(0,s.useCallback)(async()=>{if(a.threadId)return a.threadId;let t=m??(a.id?`objective-chat:${a.id}`:null);if(!t)return null;O(null);try{let s=await eu.threadService.createThread({id:t,title:a.title,metadata:{scope:"objective",objectiveId:a.id,projectId:e,projectSlug:r}});return x(s.id),await B(s.id),await l(s.id),s.id}catch(e){return O(e instanceof Error?e.message:"Failed to create the objective chat."),null}},[B,a.id,a.threadId,a.title,l,e,r,m]),K=(0,s.useMemo)(()=>new Map(I.map(e=>[e.id,e])),[I]);(0,s.useEffect)(()=>{F(e=>{let t=Date.now(),r=new Map(e.filter(e=>"string"==typeof e.chatRunId&&e.chatRunId.length>0).map(e=>[e.chatRunId,e]));for(let e of J)e?.chatRunId&&r.set(e.chatRunId,e);return Array.from(r.values()).filter(e=>!!(!e.optimistic||J.some(t=>t.chatRunId===e.chatRunId))||t-(e.enqueuedAt??0)<=5e3).sort((e,t)=>String(e.chatRunId||"").localeCompare(String(t.chatRunId||"")))})},[J,F]);let X=(0,s.useMemo)(()=>{let e=Date.now(),t=new Map(J.map(e=>[e.chatRunId,e]));for(let r of U)!(!r.optimistic||t.has(r.chatRunId))&&(e-(r.enqueuedAt??0)>5e3||t.set(r.chatRunId,r));return Array.from(t.values()).filter(e=>"queued"===e.status||"running"===e.status||"awaiting_user"===e.status||"blocked"===e.status)},[U,J]),G=(0,s.useMemo)(()=>L.filter(ey).sort((e,t)=>t.timestamp-e.timestamp).map(e=>{let t,r=L.filter(t=>t.rootMessageId===e.id).sort((e,t)=>e.timestamp-t.timestamp),a=[e,...r],s=a[a.length-1]??e;return{rootMessageId:e.id,title:(t=e.content.replace(/\s+/g," ").trim())?t.length>56?`${t.slice(0,56).trim()}...`:t:"Untitled session",updatedAt:s.timestamp,messageCount:a.length,messages:a}}),[L]),Y=(0,s.useMemo)(()=>h?G.find(e=>e.rootMessageId===h)??null:null,[h,G]),Q="detail"===p&&!!h,Z=new Set(["queued","running","awaiting_user","blocked"]),ee=X.length>0||q.some(e=>"spawning"===e.state||"running"===e.state),et=(0,s.useMemo)(()=>{let e=new Map;for(let t of X){if(!t.rootMessageId||!Z.has(t.status))continue;let r="queued"===t.status?"queued":"working";"working"!==e.get(t.rootMessageId)&&e.set(t.rootMessageId,r)}for(let t of q)t.threadId&&("spawning"===t.state||"running"===t.state)&&e.set(t.threadId,"working");return e},[X,q]),er=(0,s.useMemo)(()=>q.some(e=>"spawning"===e.state||"running"===e.state)||X.some(e=>Z.has(e.status)&&"queued"!==e.status)?"working":X.some(e=>"queued"===e.status)?"queued":"ready",[X,Z,q]);(0,s.useEffect)(()=>{M.current&&!ee&&d().catch(e=>{console.warn("Failed to refresh objective after objective chat activity",e)}),M.current=ee},[ee,d]);let ea=(0,s.useCallback)(async e=>{await fetch(`/api/chat-runs/${encodeURIComponent(e)}/signal`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({signal:"cancel",reason:"Interrupted by a new objective chat message"})}).catch(e=>{console.warn("Failed to cancel objective chat run",e)})},[]),es=(0,s.useCallback)(async()=>{let e=Array.from(new Set(X.map(e=>e.chatRunId).filter(e=>!!e)));await Promise.all(e.map(e=>ea(e))),await z(),await V()},[X,ea,V,z]),eo=(0,s.useCallback)(async(t,s,n,i,l,d,c)=>{let u,m,x,p,v,g,j,y,w;ee&&await es(),O(null);let N=await H();if(!N)return;let k=I.map(e=>e.id),S=Q?h:null,C=[(u=`/api/projects/${e}/objectives/${a.id}`,m=P?`${P}${u}`:u,x=`${m}/scheduled-tasks`,p=`${m}/linear-issues`,v=`${m}/notes`,g=`~/.agx/projects/${r}/objectives/${a.key}.md`,j=`~/.agx/projects/${r}/objectives/${a.key}/notes/`,y=`${m}/validate`,w=a.notes?.length?a.notes.map(e=>`- **${e.title}**: ${e.body.slice(0,120)}${e.body.length>120?"...":""}`).join("\n"):null,["You are working inside a strategy session for this project objective.",`Project slug: ${r}`,`Objective: ${a.title}`,`Objective label: ${a.key}`,o?`Owning team: ${o}`:"",w?`Current notes:
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,568656,e=>{"use strict";var t=e.i(843476),r=e.i(522016),a=e.i(618566),s=e.i(271645),o=e.i(958164),n=e.i(429056),i=e.i(417442),l=e.i(363732);let d=(0,l.default)("calendar-clock",[["path",{d:"M16 14v2.2l1.6 1",key:"fo4ql5"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]]);var c=e.i(529471),u=e.i(580873),m=e.i(575479),x=e.i(640481),p=e.i(929870),b=e.i(8707),h=e.i(794731),v=e.i(169610),f=e.i(572665),g=e.i(519132),j=e.i(797167),y=e.i(524123),w=e.i(945028),N=e.i(490011),k=e.i(984242),S=e.i(208343),C=e.i(884564),$=e.i(40527),I=e.i(378764),A=e.i(524507),E=e.i(245900),O=e.i(437307),M=e.i(715908),T=e.i(553069),P=e.i(827430),L=e.i(667480);function R(e){let t=e.cadence||e.cronExpr;return t?(0,T.cronToHuman)(e.cronExpr||t)??t:"No frequency"}function D(e){return"active"===e.state&&(null!==e.nextRunAt&&e.nextRunAt-Date.now()<0?!e.lastRunAt||!(e.lastRunAt>=e.nextRunAt):!!e.prevScheduledAt&&!!e.lastRunAt&&e.lastRunAt>e.prevScheduledAt+3e5)}function _(e,t){if("paused"===t)return"Paused";if("stopped"===t)return"Stopped";if(null===e)return"Pending";let r=e-Date.now();return r<0?"Overdue":r<6e4?`in ${Math.round(r/1e3)}s`:r<36e5?`in ${Math.round(r/6e4)}m`:r<864e5?`in ${Math.round(r/36e5)}h`:`in ${Math.round(r/864e5)}d`}function F(e){return new Date(e).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function z({job:e,onClose:r,onUpdate:a}){let[o,n]=(0,s.useState)({cadence:e.cronExpr||e.cadence||"",condition:e.condition||""}),[i,l]=(0,s.useState)(!0),[d,c]=(0,s.useState)(!1),m=async()=>{i&&(c(!0),await a({cadence:o.cadence,condition:o.condition}),c(!1),r())};return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4 py-6",children:(0,t.jsxs)("div",{className:"flex w-full max-w-md max-h-[85vh] flex-col rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--border)] px-6 py-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,t.jsx)(u.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("p",{className:"text-sm font-semibold text-[var(--foreground)]",children:e.name})]}),(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)]",children:(0,t.jsx)(j.X,{className:"h-4 w-4"})})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-5",children:(0,t.jsx)(L.ScheduleConditionPicker,{value:o,onChange:(e,t)=>{n(e),l(t.isScheduleValid)},scheduleLabel:"Schedule",conditionLabel:"Condition",conditionHelpText:"Scheduled runs and Run now will check this condition before executing."})}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center justify-end gap-3 border-t border-[var(--border)] px-6 py-4",children:[(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-xl border border-[var(--border)] px-4 py-2.5 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:()=>void m(),disabled:d||!i,className:"rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-4 py-2.5 text-sm text-emerald-400 transition-colors hover:bg-emerald-500/20 disabled:opacity-50",children:d?"Saving...":"Save"})]})]})})}function U({job:e,onClose:r,onUpdate:a}){let[o,n]=(0,s.useState)(e.prompt||""),[i,l]=(0,s.useState)(!1),d=async()=>{o===e.prompt||(l(!0),await a({prompt:o}),l(!1)),r()};return(0,t.jsx)("div",{className:"fixed inset-0 z-40 flex items-center justify-center bg-black/50 px-4 py-6",children:(0,t.jsxs)("div",{className:"flex w-full max-w-6xl max-h-[85vh] flex-col rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex shrink-0 items-start justify-between gap-4 border-b border-[var(--border)] px-6 py-5",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2.5",children:[(0,t.jsx)("p",{className:"truncate text-lg font-semibold text-[var(--foreground)]",children:e.name}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${W(e.state)}`,children:q(e.state)}),e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),R(e)]}),(0,t.jsxs)("span",{children:["Next run ",_(e.nextRunAt,e.state)]}),(0,t.jsxs)("span",{children:["Updated ",F(e.updatedAt)]})]})]}),(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)]","aria-label":"Close scheduled task details",children:(0,t.jsx)(j.X,{className:"h-4 w-4"})})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 space-y-5",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Instructions"}),(0,t.jsx)("div",{className:"rounded-2xl border border-[var(--card-hover-border)] bg-[var(--overlay-panel-muted)] px-1 py-1 text-sm leading-6 text-[var(--foreground)]",children:(0,t.jsx)($.default,{content:o,editable:!0,onChange:n,placeholder:"Write instructions in markdown…"})})]})}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center justify-end gap-3 border-t border-[var(--border)] px-6 py-4",children:[(0,t.jsx)("button",{type:"button",onClick:r,className:"rounded-xl border border-[var(--border)] px-4 py-2.5 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:()=>void d(),disabled:i,className:"rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-4 py-2.5 text-sm text-emerald-400 transition-colors hover:bg-emerald-500/20 disabled:opacity-50",children:i?"Saving...":"Save"})]})]})})}function q(e){return"active"===e?"Active":"paused"===e?"Paused":"Stopped"}function W(e){return"active"===e?"border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed)]":"paused"===e?"border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked)]":"border-[var(--tone-neutral-border)] bg-[var(--tone-neutral-bg)] text-[var(--tone-neutral)]"}function J({projectId:e,objectiveId:r,objectiveKey:a,createDefaults:o,onCreateTask:n}){let{jobs:i,loading:l,refresh:d,deleteJob:m,toggleJob:x,updateJob:b,fetchRuns:v,runNow:f}=(0,M.usePromptJobs)(e,{requireProjectId:!0,includeObjectiveJobs:!0,objectiveId:r}),[g,j]=(0,s.useState)(!1),[y,w]=(0,s.useState)(null),[N,k]=(0,s.useState)(null),[S,C]=(0,s.useState)(null),[$,I]=(0,s.useState)(null),[T,L]=(0,s.useState)([]),V=(0,s.useMemo)(()=>i.filter(e=>e.objectiveId===r).sort((e,t)=>!e.name.toLowerCase().includes("objective worker")-!t.name.toLowerCase().includes("objective worker")),[i,r]),B=(0,s.useMemo)(()=>V.find(e=>e.id===S)??null,[S,V]),H=(0,s.useCallback)(async()=>{if(0===V.length)return void L([]);let e=[];await Promise.all(V.map(async t=>{for(let r of(await v(t.id)))e.push({...r,jobName:t.name})})),e.sort((e,t)=>new Date(t.startedAt??t.createdAt).getTime()-new Date(e.startedAt??e.createdAt).getTime()),L(e.slice(0,10))},[V,v]);(0,s.useEffect)(()=>{H()},[H]);let K=async e=>{w(e.id),k(null);let t=await m(e.id);(w(null),t)?(S===e.id&&C(null),await d()):k(`Failed to hide "${e.name}".`)},X=async e=>{k(null);let t=await n(e);return t&&await d(),t},G=(0,s.useMemo)(()=>V.find(e=>e.id===$)??null,[$,V]);return(0,t.jsxs)(t.Fragment,{children:[g?(0,t.jsx)(P.CreateJobModal,{onClose:()=>j(!1),onSubmit:async e=>{await X(e)},createDefaults:o,contextLabel:a}):null,B?(0,t.jsx)(U,{job:B,onClose:()=>C(null),onUpdate:async e=>{let t=await b(B.id,e);return t&&await d(),t}}):null,G?(0,t.jsx)(z,{job:G,onClose:()=>I(null),onUpdate:async e=>{let t=await b(G.id,e);return t&&await d(),t}}):null,(0,t.jsxs)("div",{className:"px-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Scheduled Tasks"}),(0,t.jsxs)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:["Shared scheduled-task list filtered to objective label"," ",(0,t.jsx)("span",{className:"font-mono text-[var(--foreground)]",children:a}),"."]})]}),(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:(0,t.jsxs)("button",{type:"button",onClick:()=>j(!0),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:[(0,t.jsx)(p.Plus,{className:"h-4 w-4"}),"New task"]})})]}),N?(0,t.jsx)("p",{className:"mt-4 text-sm text-[var(--destructive)]",children:N}):null,(0,t.jsx)("div",{className:"mt-5 space-y-3",children:l&&0===V.length?(0,t.jsx)("div",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-8 text-sm text-[var(--muted-foreground)]",children:"Loading scheduled tasks..."}):0===V.length?(0,t.jsx)("div",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-8 text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks for this objective yet."}):V.map(e=>(0,t.jsx)("div",{onClick:()=>C(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),C(e.id))},role:"button",tabIndex:0,className:`block w-full rounded-2xl border px-4 py-4 text-left transition-colors focus:outline-none focus:ring-2 focus:ring-[var(--card-hover-border)] ${D(e)?"border-amber-500/40 bg-amber-500/5 hover:border-amber-500/60":"border-[var(--border)] bg-[var(--overlay-panel-muted)] hover:border-[var(--card-hover-border)]"}`,children:(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2.5",children:[(0,t.jsx)("span",{className:`inline-block size-2 shrink-0 rounded-full ${"active"===e.state?"bg-emerald-400":"paused"===e.state?"bg-amber-400":"bg-[var(--tone-neutral)]"}`}),(0,t.jsx)("p",{className:"truncate text-sm font-semibold text-[var(--foreground)]",children:e.name}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${W(e.state)}`,children:q(e.state)}),D(e)&&(0,t.jsxs)("span",{className:"shrink-0 text-[10px] font-semibold uppercase tracking-[0.16em] text-amber-400 bg-amber-500/10 px-2 py-0.5 rounded-full border border-amber-500/20 inline-flex items-center gap-1",children:[(0,t.jsx)(u.Clock,{className:"h-3 w-3"}),"overdue"]})]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:`inline-flex items-center gap-1.5 ${D(e)?"text-amber-400 font-medium":""}`,children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),"Next run ",_(e.nextRunAt,e.state)]}),(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),R(e)]}),e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null]}),(0,t.jsx)("p",{className:"mt-3 line-clamp-2 text-sm leading-6 text-[var(--muted-foreground)]",children:e.prompt.split("\n").map(e=>e.trim()).find(Boolean)||"No instructions yet"}),e.condition?(0,t.jsxs)("p",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:["Condition: ",e.condition]}):null]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[(0,t.jsx)("button",{type:"button",title:"Run now",onClick:async t=>{t.stopPropagation(),w(e.id),await f(e.id),w(null),await d(),await H()},disabled:y===e.id,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-emerald-400/40 hover:text-emerald-300 disabled:cursor-not-allowed disabled:opacity-50",children:(0,t.jsx)(E.Play,{className:"h-3.5 w-3.5 fill-current"})}),(0,t.jsx)("button",{type:"button",title:"Edit schedule",onClick:t=>{t.stopPropagation(),I(e.id)},className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-sky-400/40 hover:text-sky-300",children:(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"})}),(0,t.jsx)("button",{type:"button",title:"active"===e.state?"Pause":"Resume",onClick:async t=>{t.stopPropagation(),w(e.id),await x(e),w(null)},disabled:y===e.id,className:`rounded-lg border p-2 transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${"active"===e.state?"border-[var(--border)] text-[var(--muted-foreground)] hover:border-amber-400/40 hover:text-amber-300":"border-emerald-500/30 text-emerald-400 hover:border-emerald-400/50 hover:text-emerald-300"}`,children:"active"===e.state?(0,t.jsx)(A.Pause,{className:"h-3.5 w-3.5"}):(0,t.jsx)(E.Play,{className:"h-3.5 w-3.5 fill-current"})}),(0,t.jsx)("button",{type:"button",title:"Delete",onClick:t=>{t.stopPropagation(),confirm(`Delete "${e.name}"? This cannot be undone.`)&&K(e)},disabled:y===e.id,className:"rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--status-failed-border)] hover:text-[var(--destructive)] disabled:cursor-not-allowed disabled:opacity-50",children:(0,t.jsx)(h.Trash2,{className:"h-3.5 w-3.5"})})]})]})},e.id))}),T.length>0&&(0,t.jsxs)("div",{className:"mt-8",children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.18em] text-[var(--muted-foreground)] mb-3",children:"Recent executions"}),(0,t.jsx)("div",{className:"space-y-0.5",children:T.map(e=>{let r=e.startedAt??e.createdAt,a="success"===e.status,s="failed"===e.status,o="running"===e.status;return(0,t.jsxs)("div",{className:"py-2 px-2 rounded-md text-xs",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:`flex size-5 shrink-0 items-center justify-center rounded-full border ${a?"border-emerald-500/40 text-emerald-400":s?"border-[var(--status-failed-border)] text-[var(--destructive)]":o?"border-sky-500/40 text-sky-400":"border-[var(--border)] text-[var(--muted-foreground)]"}`,children:a?(0,t.jsx)(c.Check,{className:"h-3 w-3"}):s?(0,t.jsx)(O.XCircle,{className:"h-3 w-3"}):(0,t.jsx)("span",{className:`block size-1.5 rounded-full ${o?"bg-sky-400 animate-pulse":"bg-current"}`})}),(0,t.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:e.jobName}),(0,t.jsx)("span",{className:"ml-auto shrink-0 text-[11px] text-[var(--muted-foreground)]",children:F(r)}),null!=e.durationMs&&(0,t.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-[var(--muted-foreground)]",children:e.durationMs<1e3?`${e.durationMs}ms`:`${Math.round(e.durationMs/1e3)}s`})]}),s&&e.error&&(0,t.jsx)("p",{className:"mt-1 ml-8 text-[11px] leading-snug text-[var(--destructive)] opacity-80 line-clamp-2",children:e.error})]},e.id)})})]})]})]})}var V=e.i(498027),B=e.i(367859);let H=(0,l.default)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]),K={"metric-check":{label:"Metric",className:"bg-blue-500/15 text-blue-400 border-blue-500/30"},"status-update":{label:"Status",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30"},milestone:{label:"Milestone",className:"bg-amber-500/15 text-amber-400 border-amber-500/30"},note:{label:"Note",className:"bg-[var(--tone-neutral-bg)] text-[var(--tone-neutral)] border-[var(--tone-neutral-border)]"}},X=["metric-check","status-update","milestone","note"];function G({activity:e}){let[r,a]=(0,s.useState)(!1),o=K[e.type]??K.note,n=e.body.length>200;return(0,t.jsxs)("div",{className:"relative pl-6 pb-6 last:pb-0",children:[(0,t.jsx)("div",{className:"absolute left-0 top-1.5 h-3 w-3 rounded-full border-2 border-[var(--timeline-node-border)] bg-[var(--timeline-node-bg)]"}),(0,t.jsx)("div",{className:"absolute bottom-0 left-[5px] top-4 w-px bg-[var(--timeline-track)] last:hidden"}),(0,t.jsxs)("div",{className:"mb-1.5 flex items-center gap-2",children:[(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] ${o.className}`,children:o.label}),(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:function(e){let t=Date.now(),r=Date.parse(e);if(Number.isNaN(r))return e;let a=Math.floor((t-r)/6e4);if(a<1)return"just now";if(a<60)return`${a}m ago`;let s=Math.floor(a/60);if(s<24)return`${s}h ago`;let o=Math.floor(s/24);return o<30?`${o}d ago`:new Date(r).toLocaleDateString("en-US",{month:"short",day:"numeric",year:o>365?"numeric":void 0})}(e.createdAt)}),"manual"!==e.source&&(0,t.jsx)("span",{className:"max-w-[180px] truncate font-mono text-[11px] text-[var(--app-shell-soft-text)]",children:e.source})]}),r?(0,t.jsx)("div",{className:"prose prose-sm max-w-none text-sm text-[var(--foreground)] prose-neutral dark:prose-invert",children:(0,t.jsx)(S.Markdown,{content:e.body})}):(0,t.jsx)("div",{className:`text-sm leading-relaxed text-[var(--muted-foreground)] ${n?"max-h-24 overflow-hidden [mask-image:linear-gradient(to_bottom,black_72%,transparent)]":""}`,children:(0,t.jsx)(S.Markdown,{content:e.body})}),n&&(0,t.jsxs)("button",{type:"button",onClick:()=>a(!r),className:"mt-1.5 flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[r?(0,t.jsx)(V.ChevronDown,{size:12}):(0,t.jsx)(B.ChevronRight,{size:12}),r?"Show less":"Show more"]})]})}function Y({projectId:e,objectiveId:r,onCreated:a,onCancel:o}){let[n,i]=(0,s.useState)("note"),[l,d]=(0,s.useState)(""),[c,u]=(0,s.useState)(!1),m=(0,s.useRef)(null);(0,s.useEffect)(()=>{m.current?.focus()},[]);let x=async()=>{let t=l.trim();if(t&&!c){u(!0);try{let s=await fetch(`/api/projects/${e}/objectives/${r}/activities`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:n,body:t})});if(!s.ok)throw Error("Failed to create activity");let o=await s.json();a(o)}catch(e){console.error("Failed to create activity:",e)}finally{u(!1)}}};return(0,t.jsxs)("div",{className:"mb-4 rounded-lg border border-[var(--border)] bg-[var(--overlay-panel-muted)] p-3",children:[(0,t.jsx)("div",{className:"mb-3 flex flex-wrap gap-1.5",children:X.map(e=>{let r=K[e],a=n===e;return(0,t.jsx)("button",{type:"button",onClick:()=>i(e),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${a?"border-[var(--foreground)] bg-[var(--foreground)] text-[var(--background)]":`${r.className} hover:opacity-80`}`,children:r.label},e)})}),(0,t.jsx)("textarea",{ref:m,value:l,onChange:e=>d(e.target.value),placeholder:"What did you do?",rows:3,className:"w-full resize-none rounded-md border border-[var(--border)] bg-[var(--input)] px-3 py-2 text-sm text-[var(--foreground)] placeholder:text-[var(--app-shell-soft-text)] focus:border-[var(--card-hover-border)] focus:outline-none"}),(0,t.jsxs)("div",{className:"mt-2 flex items-center justify-end gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:o,className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:x,disabled:!l.trim()||c,className:"px-3 py-1.5 text-xs font-medium rounded-md bg-sky-600 text-white hover:bg-sky-500 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",children:c?"Saving...":"Log activity"})]})]})}function Q({projectId:e,objectiveId:r,onTotalChange:a}){let[o,n]=(0,s.useState)([]),[i,l]=(0,s.useState)(0),[d,c]=(0,s.useState)(!1),[u,m]=(0,s.useState)(1),[x,b]=(0,s.useState)(!0),[h,v]=(0,s.useState)("all"),[f,g]=(0,s.useState)(!1),[y,w]=(0,s.useState)(!1),N=(0,s.useCallback)(async(t,s,o)=>{b(!0);try{let i=new URLSearchParams({page:String(t),limit:"25"});"all"!==s&&i.set("type",s);let d=await fetch(`/api/projects/${e}/objectives/${r}/activities?${i}`);if(!d.ok)throw Error("Failed to load activities");let u=await d.json(),m=Array.isArray(u.activities)?u.activities:[],x="number"==typeof u.total?u.total:m.length,p=!!u.hasMore;n(e=>o?[...e,...m]:m),l(x),a?.(x),c(p)}catch(e){console.error("Failed to fetch activities:",e)}finally{b(!1)}},[e,r]);return(0,s.useEffect)(()=>{m(1),N(1,h,!1)},[N,h]),(0,t.jsxs)("section",{children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Time-ordered log of outputs from scheduled tasks and manual entries."}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>w(!y),className:`flex items-center gap-1 px-2.5 py-1 rounded-md text-xs font-medium transition-colors ${y?"text-sky-400 bg-sky-500/10":"text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]"}`,children:[y?(0,t.jsx)(j.X,{size:12}):(0,t.jsx)(p.Plus,{size:12}),"Log activity"]}),(0,t.jsx)("button",{type:"button",onClick:()=>g(!f),className:`p-1.5 rounded-md transition-colors ${f||"all"!==h?"text-sky-400 bg-sky-500/10":"text-[var(--muted-foreground)] hover:bg-[var(--muted)] hover:text-[var(--foreground)]"}`,"aria-label":"Filter activities",children:(0,t.jsx)(H,{size:14})})]})]}),f&&(0,t.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-4",children:[(0,t.jsx)("button",{type:"button",onClick:()=>v("all"),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${"all"===h?"border-[var(--foreground)] bg-[var(--foreground)] text-[var(--background)]":"border-[var(--tone-neutral-border)] bg-[var(--tone-neutral-bg)] text-[var(--tone-neutral)] hover:border-[var(--card-hover-border)]"}`,children:"All"}),X.map(e=>{let r=K[e],a=h===e;return(0,t.jsx)("button",{type:"button",onClick:()=>v(e),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${a?"border-[var(--foreground)] bg-[var(--foreground)] text-[var(--background)]":`${r.className} hover:opacity-80`}`,children:r.label},e)})]}),y&&(0,t.jsx)(Y,{projectId:e,objectiveId:r,onCreated:e=>{n(t=>[e,...t]),l(e=>{let t=e+1;return a?.(t),t}),w(!1)},onCancel:()=>w(!1)}),x&&0===o.length?(0,t.jsx)("div",{className:"py-6 text-center text-sm text-[var(--muted-foreground)]",children:"Loading activities..."}):0===o.length?(0,t.jsxs)("div",{className:"rounded-xl border border-dashed border-[var(--border)] bg-[var(--overlay-panel-muted)] p-6 text-center",children:[(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No activities yet."}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--app-shell-soft-text)]",children:"Activities are created by scheduled tasks and agent actions."})]}):(0,t.jsxs)("div",{children:[o.map(e=>(0,t.jsx)(G,{activity:e},e.id)),d&&(0,t.jsx)("div",{className:"pt-2 pl-6",children:(0,t.jsx)("button",{type:"button",onClick:()=>{let e=u+1;m(e),N(e,h,!0)},disabled:x,className:"text-xs text-sky-400 hover:text-sky-300 transition-colors disabled:opacity-50",children:x?"Loading...":"Load more"})})]})]})}let Z=/(?:^|\n)Objective health:\s*(\d{1,3})%\s*(On track|At risk|Off track|Done)\b/im,ee={"on track":"on_track","at risk":"at_risk","off track":"off_track",done:"done"};function et(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function er(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function ea(e){if("string"!=typeof e)return null;let t=e.trim().toLowerCase();return"on_track"===t||"at_risk"===t||"off_track"===t||"done"===t?t:ee[t]??null}function es(e){if("string"!=typeof e)return null;let t=Date.parse(e);return Number.isNaN(t)?null:new Date(t).toISOString()}function eo(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function en(...e){let t=e.flatMap(e=>e??[]),r=[];for(let e of[...t].sort((e,t)=>Date.parse(e.recordedAt)-Date.parse(t.recordedAt))){let t=r[r.length-1]??null;t&&t.progress===e.progress&&t.status===e.status&&(!t.source||!e.source||t.source===e.source)&&5e3>=Math.abs(Date.parse(e.recordedAt)-Date.parse(t.recordedAt))||r.push(e)}return r}let ei={on_track:{label:"On track",stroke:"var(--status-completed-text)"},at_risk:{label:"At risk",stroke:"var(--status-blocked-text)"},off_track:{label:"Off track",stroke:"var(--status-failed-text)"},done:{label:"Done",stroke:"var(--status-in-progress-text)"}};function el(e){let{projectId:r,objectiveId:a,objectiveKey:o,metadata:n,currentProgress:i,currentStatus:l,objectiveUpdatedAt:d}=e,c=(0,s.useMemo)(()=>(function(e,t){if(!et(e)||!t.trim())return[];let r=e.project_objective_health_history;if(!et(r))return[];let a=r[t.trim()];return Array.isArray(a)?en(a.map(e=>(function(e){if(!et(e))return null;let t=ea(e.status),r=es(e.recordedAt);return t&&r?{progress:er(e.progress),status:t,recordedAt:r,source:eo(e.source),note:eo(e.note),objectiveId:eo(e.objectiveId)??null,objectiveKey:eo(e.objectiveKey)??null}:null})(e)).filter(e=>!!e)):[]})(n,a),[n,a]),[u,m]=(0,s.useState)(c),x=(0,s.useMemo)(()=>({progress:i,status:l,recordedAt:d,objectiveId:a,objectiveKey:o}),[i,l,a,o,d]);(0,s.useEffect)(()=>{m(c)},[c]),(0,s.useEffect)(()=>{let e=!1;return async function(){try{let t=await fetch(`/api/projects/${r}/objectives/${a}/activities?type=status-update&limit=100`);if(!t.ok)throw Error("Failed to load objective activity history");let s=await t.json(),n=Array.isArray(s.activities)?s.activities:[],i=en(c,en(n.map(e=>(function(e){if("status-update"!==e.type)return null;let t=e.body.match(Z);if(!t)return null;let r=er(Number(t[1])),a=ea(t[2]),s=es(e.createdAt);return a&&s?{progress:r,status:a,recordedAt:s,source:eo(e.source),objectiveKey:eo(e.objectiveLabel)??null}:null})(e)).filter(e=>!!e&&(!o||e.objectiveKey===o))));e||m(i)}catch{e||m(c)}}(),()=>{e=!0}},[c,a,o,r]);let p=en(u,[x]),b=p[p.length-1],h=function(e){if(1===e.length){let t=46-e[0].progress/100*40;return`90,${t}`}return e.map((t,r)=>{let a=6+r/Math.max(1,e.length-1)*168,s=46-t.progress/100*40;return`${a},${s}`}).join(" ")}(p),v=ei[b.status],f=0===u.length?"Current state":1===p.length?"1 update":`${p.length} updates`;return(0,t.jsxs)("div",{"data-testid":"objective-health-trend",className:"flex min-w-[260px] flex-1 items-center gap-4 rounded-2xl border border-[var(--border)] bg-[var(--overlay-panel-muted)] px-4 py-3",children:[(0,t.jsxs)("div",{className:"min-w-[84px]",children:[(0,t.jsx)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--muted-foreground)]",children:"Objective health"}),(0,t.jsxs)("div",{className:"mt-1 text-[24px] font-semibold leading-none text-[var(--foreground)]",children:[b.progress,"%"]}),(0,t.jsx)("div",{className:"mt-1 text-[11px] font-medium",style:{color:v.stroke},children:v.label})]}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("svg",{viewBox:"0 0 180 52",className:"h-[52px] w-full overflow-visible",role:"img","aria-label":"Objective health trend",children:[(0,t.jsx)("line",{x1:"6",y1:"26",x2:"174",y2:"26",stroke:"var(--border)",strokeDasharray:"3 3",strokeWidth:"1"}),(0,t.jsx)("polyline",{fill:"none",stroke:v.stroke,strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",points:h}),p.map((e,r)=>{let[a="0",s="0"]=(h.split(" ")[r]??"").split(",");return(0,t.jsx)("circle",{cx:a,cy:s,r:r===p.length-1?4:3,fill:v.stroke,fillOpacity:r===p.length-1?1:.2,stroke:v.stroke,strokeWidth:"1.5"},`${e.recordedAt}-${r}`)})]}),(0,t.jsxs)("div",{className:"mt-1 flex items-center justify-between gap-2 text-[10px] text-[var(--muted-foreground)]",children:[(0,t.jsx)("span",{children:f}),(0,t.jsx)("span",{children:new Date(b.recordedAt).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})})]})]})]})}var ed=e.i(644660),ec=e.i(44054),eu=e.i(434405),em=e.i(169433),ex=e.i(902572);let ep={on_track:{label:"On track",chipClass:"border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed-text)]",toneClass:"text-[var(--status-completed-text)]"},at_risk:{label:"At risk",chipClass:"border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked-text)]",toneClass:"text-[var(--status-blocked-text)]"},off_track:{label:"Off track",chipClass:"border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed-text)]",toneClass:"text-[var(--status-failed-text)]"},done:{label:"Done",chipClass:"border-[var(--status-in-progress-border)] bg-[var(--status-in-progress-bg)] text-[var(--status-in-progress-text)]",toneClass:"text-[var(--status-in-progress-text)]"}};function eb({onResize:e}){let{isTouchLayout:r}=(0,ec.useInputCapabilities)();return r?null:(0,t.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize objective chat panel",className:"group relative z-10 hidden w-0 shrink-0 cursor-col-resize xl:block",onMouseDown:t=>{t.preventDefault();let r=t.clientX;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let a=t=>{let a=r-t.clientX;r=t.clientX,e(a)},s=()=>{document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",s)};window.addEventListener("mousemove",a),window.addEventListener("mouseup",s)},children:(0,t.jsx)("div",{className:"absolute inset-y-0 -left-0.5 w-1 transition-colors group-hover:bg-[var(--primary)]/40"})})}function eh(e){return new Date(e).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function ev(){return{title:"",teamId:"",summary:""}}function ef(e,t,r){return t?e.objectives.find(e=>e.teamId===t&&e.id!==r)??null:null}function eg(e,t,r){return e.filter(e=>!ef(t,e.id,r))}function ej(e){let{projects:t,isLoading:r,refetch:a,updateProject:o}=(0,y.useProjects)(),[n,i]=(0,s.useState)([]),l=(0,s.useMemo)(()=>t.find(t=>t.slug===e)??null,[e,t]),d=(0,s.useMemo)(()=>(0,ex.readProjectObjectivesWorkspace)(l?.metadata),[l?.metadata]),c=(0,s.useCallback)(async e=>{if(!l)throw Error("Project not found.");await o(l.id,{metadata:(0,ex.writeProjectObjectivesWorkspace)(l.metadata??{},e)})},[l,o]);return(0,s.useEffect)(()=>{let e=!0;return async function(){if(!l?.id)return i([]);try{let t=await fetch(`/api/projects/${l.id}/teams`);if(!t.ok)throw Error("Failed to fetch teams");let r=await t.json();if(!e)return;i((r.teams??[]).map(e=>({id:"string"==typeof e.id?e.id:"",name:"string"==typeof e.name?e.name:"Untitled team"})).filter(e=>e.id))}catch{if(!e)return;i([])}}(),()=>{e=!1}},[l?.id]),{isLoading:r,project:l,workspace:d,teams:n,persistWorkspace:c,refetchProject:a}}function ey(e){return"user"===e.role&&!e.rootMessageId}function ew({projectId:e,projectSlug:r,objective:a,teamName:o,onThreadLinked:l,onObjectiveUpdated:d}){let[c,u]=(0,s.useState)(()=>(0,em.loadObjectiveChatPanelWidth)()||800),[m,x]=(0,s.useState)(a.threadId??(a.id?`objective-chat:${a.id}`:null)),[p,b]=(0,s.useState)("list"),[h,f]=(0,s.useState)(null),[g,j]=(0,s.useState)(!1),[y,$]=(0,s.useState)(a.chatSessionVersion),[I,A]=(0,s.useState)([]),[E,O]=(0,s.useState)(null),M=(0,s.useRef)(!1),T=(0,s.useRef)(!1),P=window.location?.origin?window.location.origin:null,{messages:L,setMessages:R,sendMessage:D,loadHistory:_,setChatRuns:F,stop:z,chatRuns:U}=(0,w.useGroupChat)(m),{processes:q,streaming:W,chatRuns:J,poll:V}=(0,N.useProcessPolling)(m?{workspaceId:m}:null,{messages:L,setMessages:R});(0,s.useEffect)(()=>{a.threadId&&a.threadId!==m&&x(a.threadId)},[a.threadId,m]),(0,s.useEffect)(()=>{b("list"),f(null),j(!1),T.current=!1},[a.id]),(0,s.useEffect)(()=>{$(a.chatSessionVersion),a.chatSessionVersion>=ex.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION&&(T.current=!0)},[a.chatSessionVersion]);let B=(0,s.useCallback)(async t=>{let r=t.trim();if(r&&!(await fetch(`/api/projects/${e}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:r})})).ok)throw Error("Failed to link objective chat to the project.")},[e]);(0,s.useEffect)(()=>{let e=!1;return m?(j(!1),(async()=>{await _(m),e||j(!0)})(),()=>{e=!0}):void j(!0)},[_,m]),(0,s.useEffect)(()=>{let t=!1;return async function(){try{let r=a.teamId?`/api/projects/${e}/teams/${a.teamId}/agents`:`/api/projects/${e}/agents`,[s,o]=await Promise.all([fetch("/api/participants"),fetch(r)]),n=s.ok?await s.json():[],i=Array.isArray(n)?n:[],l=o.ok?await o.json():{agents:[]};if(t)return;let d=((l&&"object"==typeof l?l:{agents:[]}).agents??[]).slice().sort((e,t)=>e.routing_order-t.routing_order).map(e=>e.agent_id);if(0===d.length)return void A(i);let c=new Map(i.map(e=>[e.id,e]));A(d.map(e=>c.get(e)).filter(e=>!!e))}catch(e){if(t)return;console.error("Failed to load objective chat participants",e),A([])}}(),()=>{t=!0}},[e,a.teamId]),(0,s.useEffect)(()=>{a.threadId&&B(a.threadId).catch(e=>{console.warn("Failed to re-link objective chat thread to project",e)})},[B,a.threadId]),(0,s.useEffect)(()=>{if(!a.threadId||!m||!g||y>=ex.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION||T.current)return;T.current=!0;let t=function(e){let t=e.filter(ey).sort((e,t)=>e.timestamp-t.timestamp);if(t.length<=1)return null;let r=t[0]?.id;if(!r)return null;let a=t.slice(1).map(e=>e.id),s=new Set(a);return{messages:[...e].map(e=>{let t=s.has(e.id)&&ey(e),a="string"==typeof e.rootMessageId&&s.has(e.rootMessageId);return t||a?{...e,rootMessageId:r,parentMessageId:r,depth:1}:e}).sort((e,t)=>e.timestamp-t.timestamp),primaryRootMessageId:r,mergedRootMessageIds:a}}(L),r=!1;return(async()=>{O(null);try{if(t){if(!(await fetch("/api/history",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:m,messages:t.messages})})).ok)throw Error("Failed to migrate the objective chat history.");if(r)return;R(t.messages),f(e=>e&&t.mergedRootMessageIds.includes(e)?t.primaryRootMessageId:e)}if(!(await fetch(`/api/projects/${e}/objectives/${a.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatSessionVersion:ex.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION})})).ok)throw Error("Failed to update the objective chat session version.");if(r)return;$(ex.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION),d().catch(e=>{console.warn("Failed to refresh objective after objective chat migration",e)})}catch(e){if(r)return;console.warn("Failed to migrate legacy objective chat sessions",e),O(e instanceof Error?e.message:"Failed to migrate the objective chat history.")}})(),()=>{r=!0}},[y,g,L,a.id,a.threadId,d,e,R,m]);let H=(0,s.useCallback)(async()=>{if(a.threadId)return a.threadId;let t=m??(a.id?`objective-chat:${a.id}`:null);if(!t)return null;O(null);try{let s=await eu.threadService.createThread({id:t,title:a.title,metadata:{scope:"objective",objectiveId:a.id,projectId:e,projectSlug:r}});return x(s.id),await B(s.id),await l(s.id),s.id}catch(e){return O(e instanceof Error?e.message:"Failed to create the objective chat."),null}},[B,a.id,a.threadId,a.title,l,e,r,m]),K=(0,s.useMemo)(()=>new Map(I.map(e=>[e.id,e])),[I]);(0,s.useEffect)(()=>{F(e=>{let t=Date.now(),r=new Map(e.filter(e=>"string"==typeof e.chatRunId&&e.chatRunId.length>0).map(e=>[e.chatRunId,e]));for(let e of J)e?.chatRunId&&r.set(e.chatRunId,e);return Array.from(r.values()).filter(e=>!!(!e.optimistic||J.some(t=>t.chatRunId===e.chatRunId))||t-(e.enqueuedAt??0)<=5e3).sort((e,t)=>String(e.chatRunId||"").localeCompare(String(t.chatRunId||"")))})},[J,F]);let X=(0,s.useMemo)(()=>{let e=Date.now(),t=new Map(J.map(e=>[e.chatRunId,e]));for(let r of U)!(!r.optimistic||t.has(r.chatRunId))&&(e-(r.enqueuedAt??0)>5e3||t.set(r.chatRunId,r));return Array.from(t.values()).filter(e=>"queued"===e.status||"running"===e.status||"awaiting_user"===e.status||"blocked"===e.status)},[U,J]),G=(0,s.useMemo)(()=>L.filter(ey).sort((e,t)=>t.timestamp-e.timestamp).map(e=>{let t,r=L.filter(t=>t.rootMessageId===e.id).sort((e,t)=>e.timestamp-t.timestamp),a=[e,...r],s=a[a.length-1]??e;return{rootMessageId:e.id,title:(t=e.content.replace(/\s+/g," ").trim())?t.length>56?`${t.slice(0,56).trim()}...`:t:"Untitled session",updatedAt:s.timestamp,messageCount:a.length,messages:a}}),[L]),Y=(0,s.useMemo)(()=>h?G.find(e=>e.rootMessageId===h)??null:null,[h,G]),Q="detail"===p&&!!h,Z=new Set(["queued","running","awaiting_user","blocked"]),ee=X.length>0||q.some(e=>"spawning"===e.state||"running"===e.state),et=(0,s.useMemo)(()=>{let e=new Map;for(let t of X){if(!t.rootMessageId||!Z.has(t.status))continue;let r="queued"===t.status?"queued":"working";"working"!==e.get(t.rootMessageId)&&e.set(t.rootMessageId,r)}for(let t of q)t.threadId&&("spawning"===t.state||"running"===t.state)&&e.set(t.threadId,"working");return e},[X,q]),er=(0,s.useMemo)(()=>q.some(e=>"spawning"===e.state||"running"===e.state)||X.some(e=>Z.has(e.status)&&"queued"!==e.status)?"working":X.some(e=>"queued"===e.status)?"queued":"ready",[X,Z,q]);(0,s.useEffect)(()=>{M.current&&!ee&&d().catch(e=>{console.warn("Failed to refresh objective after objective chat activity",e)}),M.current=ee},[ee,d]);let ea=(0,s.useCallback)(async e=>{await fetch(`/api/chat-runs/${encodeURIComponent(e)}/signal`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({signal:"cancel",reason:"Interrupted by a new objective chat message"})}).catch(e=>{console.warn("Failed to cancel objective chat run",e)})},[]),es=(0,s.useCallback)(async()=>{let e=Array.from(new Set(X.map(e=>e.chatRunId).filter(e=>!!e)));await Promise.all(e.map(e=>ea(e))),await z(),await V()},[X,ea,V,z]),eo=(0,s.useCallback)(async(t,s,n,i,l,d,c)=>{let u,m,x,p,v,g,j,y,w;ee&&await es(),O(null);let N=await H();if(!N)return;let k=I.map(e=>e.id),S=Q?h:null,C=[(u=`/api/projects/${e}/objectives/${a.id}`,m=P?`${P}${u}`:u,x=`${m}/scheduled-tasks`,p=`${m}/linear-issues`,v=`${m}/notes`,g=`~/.agx/projects/${r}/objectives/${a.key}.md`,j=`~/.agx/projects/${r}/objectives/${a.key}/notes/`,y=`${m}/validate`,w=a.notes?.length?a.notes.map(e=>`- **${e.title}**: ${e.body.slice(0,120)}${e.body.length>120?"...":""}`).join("\n"):null,["You are working inside a strategy session for this project objective.",`Project slug: ${r}`,`Objective: ${a.title}`,`Objective label: ${a.key}`,o?`Owning team: ${o}`:"",w?`Current notes:
2
2
  ${w}`:"Current notes: none yet.","Wake schedule: managed by the built-in objective worker job.",`## Objective file (source of truth)
3
3
 
4
4
  This objective is stored as a frontmatter markdown file at:
@@ -3,4 +3,4 @@
3
3
  ${e.output}${e.error?`
4
4
 
5
5
  [Error]
6
- ${e.error}`:""}`:"[Automation run — no output]";fetch("/api/history",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:n,messages:[{id:x,role:"assistant",participantId:a.agentId||null,content:t,timestamp:new Date(e.startedAt??e.createdAt).getTime(),rootMessageId:null,parentMessageId:null,depth:0}]})}).catch(e=>console.warn("[PromptJobBoard] save root message failed:",e))}})},[g,n,x,e,a.agentId]);let E=(0,r.useRef)(null),_=(0,r.useRef)(null),O=(0,r.useRef)(m.length);(0,r.useEffect)(()=>{m.length>O.current&&_.current?.scrollIntoView({behavior:"smooth"}),O.current=m.length},[m.length]);let L=(0,r.useCallback)((e,t,r,a,s,n,d)=>{let o=(0,y.orderParticipantIds)(Array.from(l),s);v(e,t,void 0,x,r,void 0,o.length>0?o:void 0,void 0,n,d)},[v,l,x]);return(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,t.jsx)("div",{className:"flex items-center justify-between border-b border-[var(--card-border)] px-4 py-2",children:(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"text-[12px] font-semibold text-[var(--foreground)] truncate",children:["Run ",e.id.slice(0,8)]}),(0,t.jsxs)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:[e.status," ",null!=e.durationMs&&`\xb7 ${(e.durationMs/1e3).toFixed(1)}s`]})]})}),(0,t.jsx)("div",{ref:E,className:"min-h-0 flex-1 overflow-y-auto px-4 py-3",children:(0,t.jsxs)("div",{className:"space-y-4 max-w-none",children:[e.output&&(0,t.jsxs)("div",{className:"flex gap-2.5",children:[(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:o?(0,t.jsx)("img",{src:M(a.agentId,o.color,28),alt:"",className:"size-7 rounded-full"}):(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-[var(--muted)] text-[10px] text-[var(--muted-foreground)]",children:(0,t.jsx)(c.Terminal,{size:12})})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"mb-1 flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[11px] font-semibold text-[var(--foreground)]",children:d??a.provider}),(0,t.jsx)("span",{className:"text-[9px] px-1.5 py-0.5 rounded bg-[var(--muted)] text-[var(--muted-foreground)] font-medium uppercase tracking-wider",children:"Run output"})]}),(0,t.jsx)("div",{className:"rounded-lg px-3 py-2 text-[12px] leading-[1.55] bg-[var(--muted)] text-[var(--foreground)]",children:(0,t.jsx)(N.Markdown,{content:e.output})})]})]}),e.error&&(0,t.jsxs)("div",{className:"flex gap-2.5",children:[(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-red-500/10 text-[10px] text-red-400",children:"!"})}),(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsx)("div",{className:"rounded-lg px-3 py-2 text-[12px] leading-[1.55] bg-red-500/10 text-red-400",children:(0,t.jsx)("div",{className:"whitespace-pre-wrap break-words",children:e.error})})})]}),!e.output&&!e.error&&(0,t.jsx)("div",{className:"text-center py-12 text-[var(--muted-foreground)] text-sm",children:"queued"===e.status?"Waiting to start...":"running"===e.status?"Running...":"No output captured"}),m.filter(e=>e.id!==x).map(e=>{let r="user"===e.role,n=e.participantId?s[e.participantId]:null,l=n?.name??d??a.provider;return(0,t.jsxs)("div",{className:"flex gap-2.5",children:[(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:r?(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-[var(--muted)] text-[var(--muted-foreground)]",children:(0,t.jsx)(f.User,{size:12})}):n?(0,t.jsx)("img",{src:M(n.id,n.color,28),alt:"",className:"size-7 rounded-full"}):o?(0,t.jsx)("img",{src:M(a.agentId,o.color,28),alt:"",className:"size-7 rounded-full"}):(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-[var(--muted)] text-[10px] text-[var(--muted-foreground)]",children:(0,t.jsx)(c.Terminal,{size:12})})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"mb-1",children:(0,t.jsx)("span",{className:"text-[11px] font-semibold text-[var(--foreground)]",children:r?"You":l})}),(0,t.jsx)("div",{className:`rounded-lg px-3 py-2 text-[12px] leading-[1.55] ${r?"bg-blue-500/10 text-[var(--foreground)]":"bg-[var(--muted)] text-[var(--foreground)]"}`,children:(0,t.jsx)(N.Markdown,{content:(0,w.stripMarkers)(e.content),isUser:r})})]})]},e.id)}),Object.entries(I).filter(([,e])=>e.rootMessageId===x).map(([e])=>{let r=s[e]??o;return(0,t.jsxs)("div",{className:"flex gap-2.5 animate-in fade-in duration-300",children:[(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:r?(0,t.jsx)("img",{src:M(r.id,r.color,28),alt:"",className:"size-7 rounded-full"}):(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-[var(--muted)] text-[10px] text-[var(--muted-foreground)]",children:(0,t.jsx)(h.Sparkles,{size:12})})}),(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsxs)("div",{className:"flex items-center gap-2 py-1",children:[(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:r?.name??"Thinking"}),(0,t.jsxs)("span",{className:"inline-flex items-center gap-[3px]",children:[(0,t.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--muted-foreground)]/50 animate-[pulse-dot_1.4s_ease-in-out_infinite]"}),(0,t.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--muted-foreground)]/50 animate-[pulse-dot_1.4s_ease-in-out_0.2s_infinite]"}),(0,t.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--muted-foreground)]/50 animate-[pulse-dot_1.4s_ease-in-out_0.4s_infinite]"})]})]})})]},`streaming-${e}`)}),(0,t.jsx)("div",{ref:_})]})}),(0,t.jsx)("div",{className:"px-3 py-2",children:(0,t.jsx)(R,{onSend:L,onStop:S,loading:A,activityStatus:T,participants:u,commands:[],placeholder:"Follow up on this run...",initialPinnedParticipantId:a.agentId||void 0})})]})}function L({job:e,agentMap:s,onEdit:o,onToggle:l,onDelete:u,onRunNow:x,onCancelRun:m,fetchRuns:f}){let h,[g,b]=(0,r.useState)([]),[j,N]=(0,r.useState)(!1),{getSelection:w,pushSelection:y,replaceSelection:S}=(0,v.useUrlSelection)(),C=w("run"),R=e.agentId&&s[e.agentId]?s[e.agentId].name:null,$=(0,r.useCallback)(async()=>{N(!1),b(await f(e.id)),N(!0)},[f,e.id]);(0,r.useEffect)(()=>{$()},[$]),(0,r.useEffect)(()=>{let e=setInterval($,a.UI_POLL_PROMPT_RUNS_MS);return()=>clearInterval(e)},[$]),(0,r.useEffect)(()=>{C&&j&&(g.some(e=>e.id===C)||S({run:null}))},[S,g,j,C]);let E=g.find(e=>e.id===C)??null,_="running"===e.lastOutcome,O=e.cronExpr&&(0,k.cronToHuman)(e.cronExpr)||e.cadence||e.cronExpr,J=(h=e.prompt.split("\n").map(e=>e.trim()).find(Boolean))?h.replace(/^execute\s+/i,""):"No target",D=e.agentId?s[e.agentId]:null;return(0,t.jsx)("div",{className:"h-full flex flex-col text-[var(--foreground)]",children:(0,t.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex w-[420px] shrink-0 flex-col border-r border-[var(--card-border)] overflow-hidden",children:[(0,t.jsx)("div",{className:"border-b border-[var(--card-border)] px-6 py-5",children:(0,t.jsxs)("div",{className:"flex items-start gap-4",children:[(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsx)("h2",{className:"truncate text-[18px] font-semibold text-[var(--foreground)]",children:e.name})}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("button",{onClick:l,type:"button",role:"switch","aria-checked":"active"===e.state,title:"active"===e.state?"Pause":"Resume",className:`relative inline-flex h-[18px] w-[32px] shrink-0 cursor-pointer rounded-full border transition-colors ${"active"===e.state?"border-emerald-400/30 bg-emerald-500/40":"border-[var(--card-border)] bg-[var(--muted)]"}`,children:(0,t.jsx)("span",{className:`pointer-events-none absolute top-[2px] size-[12px] rounded-full bg-white/90 shadow-sm transition-transform ${"active"===e.state?"translate-x-[16px]":"translate-x-[2px]"}`})}),(0,t.jsx)("button",{onClick:x,disabled:_,title:"Run now",className:"rounded-md border border-[var(--card-border)] p-1.5 text-[var(--muted-foreground)] transition-colors hover:border-[var(--foreground)] hover:text-[var(--foreground)] disabled:opacity-50",children:(0,t.jsx)(n.Play,{size:12,className:"fill-current"})}),(0,t.jsx)("button",{onClick:o,title:"Edit",className:"p-1.5 rounded-md border border-[var(--card-border)] text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:border-[var(--foreground)] transition-colors",children:(0,t.jsx)(p.Pencil,{size:12})}),(0,t.jsx)("button",{onClick:u,title:"Delete",className:"p-1.5 rounded-md border border-[var(--card-border)] text-[var(--muted-foreground)] hover:text-red-400 hover:border-red-400/30 transition-colors",children:(0,t.jsx)(d.Trash2,{size:12})})]})]})}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,t.jsxs)("div",{className:"space-y-0",children:[(0,t.jsx)("div",{className:"px-6 py-5",children:(0,t.jsx)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] px-5 py-4",children:(0,t.jsxs)("div",{className:"grid grid-cols-[96px,minmax(0,1fr)] items-center gap-x-4 gap-y-4",children:[e.executionMode&&"prompt"!==e.executionMode&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Type"}),(0,t.jsx)("div",{className:"min-w-0",children:(0,t.jsx)("span",{className:"rounded-md border border-violet-400/20 bg-violet-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-violet-400",children:I.find(t=>t.value===e.executionMode)?.label??e.executionMode})})]}),(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Agent"}),(0,t.jsx)("div",{className:"min-w-0 flex items-center justify-between gap-3",children:(0,t.jsxs)("div",{className:"min-w-0 flex items-center gap-2.5",children:[D?(0,t.jsx)("img",{src:M(D.id,D.color,20),alt:"",className:"size-5 rounded-full shrink-0"}):(0,t.jsx)(c.Terminal,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsxs)("div",{className:"truncate text-[13px] font-medium text-[var(--foreground)]",children:[R??e.provider,e.model?` (${e.provider} / ${e.model})`:""]})]})}),(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Schedule"}),(0,t.jsx)("div",{className:"truncate text-[13px] font-medium text-[var(--foreground)]",children:O||"—"}),(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Target"}),(0,t.jsx)("div",{className:"truncate font-mono text-[13px] text-[var(--foreground)]",title:J,children:J})]})})}),(0,t.jsxs)("div",{className:"border-t border-[var(--card-border)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-6 py-4",children:[(0,t.jsx)(z,{children:"Recent Runs"}),(0,t.jsxs)("span",{className:"text-sm text-[var(--muted-foreground)]",children:[g.length," total"]})]}),(0,t.jsx)("div",{children:0===g.length?(0,t.jsx)("div",{className:"px-6 py-10 text-center text-[11px] text-[var(--muted-foreground)]",children:"No runs yet"}):g.map(e=>{let r=C===e.id,a="success"===e.status;return(0,t.jsxs)("button",{type:"button",onClick:()=>y({run:e.id}),className:`flex w-full items-center gap-4 border-t border-[var(--card-border)]/50 px-6 py-5 text-left transition-colors ${r?"border-l-2 border-l-emerald-400 bg-emerald-500/5":"hover:bg-[var(--muted)]/20"}`,children:[(0,t.jsx)("span",{className:`flex size-6 shrink-0 items-center justify-center rounded-full border text-[11px] ${a?"border-emerald-400 text-emerald-400":"failed"===e.status?"border-red-400 text-red-400":"running"===e.status?"border-sky-400 text-sky-400":"border-[var(--card-border)] text-[var(--muted-foreground)]"}`,children:a?"✓":"failed"===e.status?"!":"•"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"text-[13px] font-medium text-[var(--foreground)]",children:T(e.startedAt??e.createdAt)}),(0,t.jsx)("div",{className:"mt-1 text-[12px] text-[var(--muted-foreground)]",children:null!=e.durationMs?`${(e.durationMs/1e3).toFixed(1)}s`:"running"===e.status?"Running...":e.status.charAt(0).toUpperCase()+e.status.slice(1)})]}),r?(0,t.jsx)("span",{className:"rounded-md bg-[var(--muted)] px-2.5 py-1 text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Viewing"}):null]},e.id)})})]}),(0,t.jsxs)("div",{className:"border-t border-[var(--card-border)] px-6 py-4",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[_?(0,t.jsx)("button",{onClick:m,className:"inline-flex items-center gap-1.5 rounded-md border border-red-400/30 px-2.5 py-1 text-[10px] font-bold uppercase tracking-[0.05em] text-red-400 transition-colors hover:bg-red-500/10",children:"Cancel run"}):null,e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null,P(e)&&(0,t.jsxs)("span",{className:"rounded-md border border-amber-500/20 bg-amber-500/10 px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-amber-400 inline-flex items-center gap-1",children:[(0,t.jsx)(i.Clock,{size:10}),"overdue"]}),(0,t.jsxs)("span",{className:`text-[11px] ${P(e)?"text-amber-400 font-medium":"text-[var(--muted-foreground)]"}`,children:["Next run ",A(e.nextRunAt,e.state)]}),(0,t.jsxs)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:["Last ",e.lastRunAt?T(new Date(e.lastRunAt).toISOString()):"Never"]}),(e.cliArgs||"skip"!==e.overlapPolicy)&&(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:e.cliArgs?"Custom CLI args":`Overlap ${e.overlapPolicy}`})]}),e.condition?(0,t.jsx)("div",{className:"mt-3 text-[11px] leading-[1.5] text-[var(--muted-foreground)]",children:e.condition}):null]})]})})]}),E?(0,t.jsx)(U,{run:E,job:e,agentMap:s},E.id):(0,t.jsx)("div",{className:"flex min-w-0 flex-1 items-center justify-center text-[var(--muted-foreground)] text-sm",children:0===g.length?'No runs yet. Click "Run now" to trigger one.':"Select a run to view its output"})]})})}e.s(["CreateJobModal",0,O,"default",0,function({projectId:e,requireProjectId:a=!1,includeObjectiveJobs:s=!1,visibleJobIds:n,contextLabel:d,createDefaults:l,onCreateJob:x}={}){let{jobs:m,loading:p,refresh:f,createJob:h,updateJob:b,deleteJob:j,toggleJob:N,runNow:w,cancelRun:y,fetchRuns:S}=g(e,{requireProjectId:a,includeObjectiveJobs:s}),[C,I]=(0,r.useState)("all"),[R,$]=(0,r.useState)(null),[T,z]=(0,r.useState)(!1),[E,_]=(0,r.useState)(null),[U,J]=(0,r.useState)({}),[D,F]=(0,r.useState)(null),[B,H]=(0,r.useState)({}),{getSelection:q,pushSelection:W,replaceSelection:K}=(0,v.useUrlSelection)(),G=q("job"),V=q("run"),Q=(0,r.useMemo)(()=>n?new Set(n):null,[n]);(0,r.useEffect)(()=>{fetch("/api/prompt-jobs/agents").then(e=>e.json()).then(e=>{let t={};for(let r of e.agents??[])t[r.id]=r;H(t)}).catch(e=>console.warn("[PromptJobBoard] fetch agent map failed:",e))},[]);let X=e=>{F(e),setTimeout(()=>F(null),2500)},Y=(0,r.useMemo)(()=>Q?m.filter(e=>Q.has(e.id)):m,[m,Q]),Z=Y.filter(e=>"all"===C||e.state===C),ee=G?Y.find(e=>e.id===G)??null:null,et=ee??(R?.id===G&&(!Q||Q.has(R.id))?R:null);Y.length,Y.filter(e=>"active"===e.state).length,Y.filter(e=>"paused"===e.state).length,Y.filter(e=>"stopped"===e.state).length;let er=async e=>{await N(e)&&X(`${e.name} ${"active"===e.state?"paused":"resumed"}`)},ea=async(e,t)=>{if(t?.stopPropagation(),U[e])return;J(t=>({...t,[e]:!0}));let r=await w(e);J(t=>{let r={...t};return delete r[e],r}),r&&X("Run triggered")},es=async e=>{await j(e)&&(G===e&&W({job:null,run:null}),X("Job deleted"))},en=async e=>{await y(e)&&X("Run cancelled")},ed=async t=>{E?await b(E.id,t)&&X(`Task "${t.name}" updated`):(x?await x(t):await h({...t,projectId:e??""}))&&(await f(),X(`Task "${t.name}" created`))};(0,r.useEffect)(()=>{if(!G){$(null),V&&K({run:null});return}if(Q&&!Q.has(G)){$(null),K({job:null,run:null});return}if(ee)return void $(e=>e?.id===G?ee:null);let e=!1;return(async()=>{try{let t=await fetch(`/api/prompt-jobs/${encodeURIComponent(G)}`);if(e)return;if(404===t.status)return void K({job:null,run:null});if(!t.ok)throw Error(`Failed to fetch selected scheduled task: ${t.status}`);let r=await t.json().catch(()=>({}));if(!r.job?.id||!s&&r.job.objectiveId)return void K({job:null,run:null});$(r.job)}catch(t){e||console.error("Failed to hydrate selected prompt job",t)}})(),()=>{e=!0}},[s,K,ee,G,V,Q]);let eo=D&&(0,t.jsx)("div",{className:"fixed bottom-8 left-1/2 -translate-x-1/2 z-50 animate-in fade-in slide-in-from-bottom-2 duration-200",children:(0,t.jsx)("div",{className:"bg-[var(--card-bg)] border border-[var(--card-border)] px-4 py-2.5 rounded-xl shadow-lg flex items-center gap-2.5 text-sm font-medium",children:D})});return T?(0,t.jsxs)(t.Fragment,{children:[eo,(0,t.jsx)(O,{onClose:()=>{z(!1),_(null)},onSubmit:ed,editingJob:E,createDefaults:l,contextLabel:d})]}):(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-col text-[var(--foreground)] lg:flex-row",children:[eo,(0,t.jsxs)("div",{className:"flex w-full shrink-0 flex-col border-b border-[var(--card-border)] lg:w-[390px] lg:border-b-0 lg:border-r",children:[(0,t.jsx)("div",{className:"px-6 pb-0 pt-6",children:(0,t.jsx)("div",{className:"border-b border-[var(--card-border)]",children:(0,t.jsxs)("div",{className:"flex items-end justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)("div",{className:"flex items-end gap-10",children:["all","active","paused"].map(e=>{let r=C===e;return(0,t.jsxs)("button",{onClick:()=>I(e),className:`relative pb-4 text-[18px] font-semibold capitalize transition-colors ${r?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:[e,r?(0,t.jsx)("span",{className:"absolute bottom-[6px] left-0 h-[4px] w-8 rounded-full bg-[var(--foreground)]"}):null]},e)})}),d?(0,t.jsx)("span",{className:"mb-3 rounded-full border border-sky-500/25 bg-sky-500/10 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.16em] text-sky-100",children:d}):null]}),(0,t.jsxs)("div",{className:"flex items-center gap-5 pb-4 text-[var(--muted-foreground)]",children:[(0,t.jsx)("button",{onClick:()=>f(),className:"transition-colors hover:text-[var(--foreground)]",title:"Refresh",children:(0,t.jsx)(u.RefreshCw,{size:18})}),(0,t.jsx)("button",{onClick:()=>{_(null),z(!0)},className:"transition-colors hover:text-[var(--foreground)]",title:"New Job",children:(0,t.jsx)(o.Plus,{size:20})})]})]})})}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto pb-5",children:p&&0===Y.length?(0,t.jsx)("div",{className:"py-12 text-center text-sm text-[var(--muted-foreground)]",children:"Loading scheduled tasks..."}):(0,t.jsxs)("div",{className:"overflow-hidden",children:[Z.map(e=>{let r=G===e.id,a=e.cronExpr&&(0,k.cronToHuman)(e.cronExpr)||e.cadence||e.cronExpr;return(0,t.jsx)("div",{onClick:()=>W({job:e.id,run:null}),className:`cursor-pointer border-b border-[var(--card-border)]/50 px-6 py-4 transition-colors ${r?"bg-[var(--card-bg)]":"hover:bg-[var(--muted)]/10"}`,children:(0,t.jsxs)("div",{className:"flex items-start gap-4",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[15px] font-medium text-[var(--foreground)]",children:e.name}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-x-4 gap-y-1 text-[12px] text-[var(--muted-foreground)]",children:[(0,t.jsx)("span",{className:"min-w-0 flex items-center gap-1.5 truncate",children:e.agentId&&B[e.agentId]?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("img",{src:M(e.agentId,B[e.agentId].color,16),alt:"",className:"size-4 rounded-full"}),B[e.agentId].name]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c.Terminal,{size:11}),e.provider]})}),(0,t.jsxs)("span",{className:`flex items-center gap-1 ${P(e)?"text-amber-400 font-medium":""}`,children:[(0,t.jsx)(i.Clock,{size:11}),A(e.nextRunAt,e.state)]}),(0,t.jsx)("span",{className:"truncate font-mono text-[11px]",title:a,children:a}),"linear_worker"===e.executionMode?(0,t.jsx)("span",{className:"rounded-md border border-violet-400/20 bg-violet-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-violet-400",children:"linear"}):null,e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null]})]}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),er(e)},type:"button",role:"switch","aria-checked":"active"===e.state,title:"active"===e.state?"Pause":"Resume",className:`relative inline-flex h-[18px] w-[32px] shrink-0 cursor-pointer rounded-full border transition-colors ${"active"===e.state?"border-emerald-400/30 bg-emerald-500/40":"border-[var(--card-border)] bg-[var(--muted)]"}`,children:(0,t.jsx)("span",{className:`pointer-events-none absolute top-[2px] size-[12px] rounded-full bg-white/90 shadow-sm transition-transform ${"active"===e.state?"translate-x-[16px]":"translate-x-[2px]"}`})})]})},e.id)}),0===Z.length&&(0,t.jsx)("div",{className:"rounded-xl border border-dashed border-[var(--card-border)] py-12 text-center text-sm text-[var(--muted-foreground)]",children:0===Y.length?"No scheduled tasks yet. Create one to get started.":"No scheduled tasks match the selected filter."})]})})]}),(0,t.jsx)("div",{className:"min-h-0 min-w-0 flex-1",children:et?(0,t.jsx)(L,{job:et,agentMap:B,onEdit:()=>{_(et),z(!0)},onToggle:()=>er(et),onDelete:()=>es(et.id),onRunNow:()=>ea(et.id),onCancelRun:()=>en(et.id),fetchRuns:S},et.id):(0,t.jsx)("div",{className:"flex h-full items-center justify-center border-t border-[var(--card-border)] lg:border-l-0 lg:border-t-0",children:(0,t.jsxs)("div",{className:"rounded-2xl border border-dashed border-[var(--card-border)] bg-[var(--card-bg)]/60 px-8 py-10 text-center",children:[(0,t.jsx)("div",{className:"text-sm font-medium text-[var(--foreground)]",children:"Select a scheduled task"}),(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"The selected job will open here with its runs and chat output."})]})})})]})}],827430)}]);
6
+ ${e.error}`:""}`:"[Automation run — no output]";fetch("/api/history",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:n,messages:[{id:x,role:"assistant",participantId:a.agentId||null,content:t,timestamp:new Date(e.startedAt??e.createdAt).getTime(),rootMessageId:null,parentMessageId:null,depth:0}]})}).catch(e=>console.warn("[PromptJobBoard] save root message failed:",e))}})},[g,n,x,e,a.agentId]);let E=(0,r.useRef)(null),_=(0,r.useRef)(null),O=(0,r.useRef)(m.length);(0,r.useEffect)(()=>{m.length>O.current&&_.current?.scrollIntoView({behavior:"smooth"}),O.current=m.length},[m.length]);let L=(0,r.useCallback)((e,t,r,a,s,n,d)=>{let o=(0,y.orderParticipantIds)(Array.from(l),s);v(e,t,void 0,x,r,void 0,o.length>0?o:void 0,void 0,n,d)},[v,l,x]);return(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,t.jsx)("div",{className:"flex items-center justify-between border-b border-[var(--card-border)] px-4 py-2",children:(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"text-[12px] font-semibold text-[var(--foreground)] truncate",children:["Run ",e.id.slice(0,8)]}),(0,t.jsxs)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:[e.status," ",null!=e.durationMs&&`\xb7 ${(e.durationMs/1e3).toFixed(1)}s`]})]})}),(0,t.jsx)("div",{ref:E,className:"min-h-0 flex-1 overflow-y-auto px-4 py-3",children:(0,t.jsxs)("div",{className:"space-y-4 max-w-none",children:[e.output&&(0,t.jsxs)("div",{className:"flex gap-2.5",children:[(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:o?(0,t.jsx)("img",{src:M(a.agentId,o.color,28),alt:"",className:"size-7 rounded-full"}):(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-[var(--muted)] text-[10px] text-[var(--muted-foreground)]",children:(0,t.jsx)(c.Terminal,{size:12})})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"mb-1 flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[11px] font-semibold text-[var(--foreground)]",children:d??a.provider}),(0,t.jsx)("span",{className:"text-[9px] px-1.5 py-0.5 rounded bg-[var(--muted)] text-[var(--muted-foreground)] font-medium uppercase tracking-wider",children:"Run output"})]}),(0,t.jsx)("div",{className:"rounded-lg px-3 py-2 text-[12px] leading-[1.55] bg-[var(--muted)] text-[var(--foreground)]",children:(0,t.jsx)(N.Markdown,{content:e.output})})]})]}),e.error&&(0,t.jsxs)("div",{className:"flex gap-2.5",children:[(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-red-500/10 text-[10px] text-red-400",children:"!"})}),(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsx)("div",{className:"rounded-lg px-3 py-2 text-[12px] leading-[1.55] bg-red-500/10 text-red-400",children:(0,t.jsx)("div",{className:"whitespace-pre-wrap break-words",children:e.error})})})]}),!e.output&&!e.error&&(0,t.jsx)("div",{className:"text-center py-12 text-[var(--muted-foreground)] text-sm",children:"queued"===e.status?"Waiting to start...":"running"===e.status?"Running...":"No output captured"}),m.filter(e=>e.id!==x).map(e=>{let r="user"===e.role,n=e.participantId?s[e.participantId]:null,l=n?.name??d??a.provider;return(0,t.jsxs)("div",{className:"flex gap-2.5",children:[(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:r?(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-[var(--muted)] text-[var(--muted-foreground)]",children:(0,t.jsx)(f.User,{size:12})}):n?(0,t.jsx)("img",{src:M(n.id,n.color,28),alt:"",className:"size-7 rounded-full"}):o?(0,t.jsx)("img",{src:M(a.agentId,o.color,28),alt:"",className:"size-7 rounded-full"}):(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-[var(--muted)] text-[10px] text-[var(--muted-foreground)]",children:(0,t.jsx)(c.Terminal,{size:12})})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"mb-1",children:(0,t.jsx)("span",{className:"text-[11px] font-semibold text-[var(--foreground)]",children:r?"You":l})}),(0,t.jsx)("div",{className:`rounded-lg px-3 py-2 text-[12px] leading-[1.55] ${r?"bg-blue-500/10 text-[var(--foreground)]":"bg-[var(--muted)] text-[var(--foreground)]"}`,children:(0,t.jsx)(N.Markdown,{content:(0,w.stripMarkers)(e.content),isUser:r})})]})]},e.id)}),Object.entries(I).filter(([,e])=>e.rootMessageId===x).map(([e])=>{let r=s[e]??o;return(0,t.jsxs)("div",{className:"flex gap-2.5 animate-in fade-in duration-300",children:[(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:r?(0,t.jsx)("img",{src:M(r.id,r.color,28),alt:"",className:"size-7 rounded-full"}):(0,t.jsx)("div",{className:"flex size-7 items-center justify-center rounded-full bg-[var(--muted)] text-[10px] text-[var(--muted-foreground)]",children:(0,t.jsx)(h.Sparkles,{size:12})})}),(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsxs)("div",{className:"flex items-center gap-2 py-1",children:[(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:r?.name??"Thinking"}),(0,t.jsxs)("span",{className:"inline-flex items-center gap-[3px]",children:[(0,t.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--muted-foreground)]/50 animate-[pulse-dot_1.4s_ease-in-out_infinite]"}),(0,t.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--muted-foreground)]/50 animate-[pulse-dot_1.4s_ease-in-out_0.2s_infinite]"}),(0,t.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--muted-foreground)]/50 animate-[pulse-dot_1.4s_ease-in-out_0.4s_infinite]"})]})]})})]},`streaming-${e}`)}),(0,t.jsx)("div",{ref:_})]})}),(0,t.jsx)("div",{className:"px-3 py-2",children:(0,t.jsx)(R,{onSend:L,onStop:S,loading:A,activityStatus:T,participants:u,commands:[],placeholder:"Follow up on this run...",initialPinnedParticipantId:a.agentId||void 0})})]})}function L({job:e,agentMap:s,onEdit:o,onToggle:l,onDelete:u,onRunNow:x,onCancelRun:m,fetchRuns:f}){let h,[g,b]=(0,r.useState)([]),[j,N]=(0,r.useState)(!1),{getSelection:w,pushSelection:y,replaceSelection:S}=(0,v.useUrlSelection)(),C=w("run"),R=e.agentId&&s[e.agentId]?s[e.agentId].name:null,$=(0,r.useCallback)(async()=>{N(!1),b(await f(e.id)),N(!0)},[f,e.id]);(0,r.useEffect)(()=>{$()},[$]),(0,r.useEffect)(()=>{let e=setInterval($,a.UI_POLL_PROMPT_RUNS_MS);return()=>clearInterval(e)},[$]),(0,r.useEffect)(()=>{C&&j&&(g.some(e=>e.id===C)||S({run:null}))},[S,g,j,C]);let E=g.find(e=>e.id===C)??null,_="running"===e.lastOutcome,O=e.cronExpr&&(0,k.cronToHuman)(e.cronExpr)||e.cadence||e.cronExpr,J=(h=e.prompt.split("\n").map(e=>e.trim()).find(Boolean))?h.replace(/^execute\s+/i,""):"No target",D=e.agentId?s[e.agentId]:null;return(0,t.jsx)("div",{className:"h-full flex flex-col text-[var(--foreground)]",children:(0,t.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex w-[420px] shrink-0 flex-col border-r border-[var(--card-border)] overflow-hidden",children:[(0,t.jsx)("div",{className:"border-b border-[var(--card-border)] px-6 py-5",children:(0,t.jsxs)("div",{className:"flex items-start gap-4",children:[(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsx)("h2",{className:"truncate text-[18px] font-semibold text-[var(--foreground)]",children:e.name})}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("button",{onClick:l,type:"button",role:"switch","aria-checked":"active"===e.state,title:"active"===e.state?"Pause":"Resume",className:`relative inline-flex h-[18px] w-[32px] shrink-0 cursor-pointer rounded-full border transition-colors ${"active"===e.state?"border-emerald-400/30 bg-emerald-500/40":"border-[var(--card-border)] bg-[var(--muted)]"}`,children:(0,t.jsx)("span",{className:`pointer-events-none absolute top-[2px] size-[12px] rounded-full bg-white/90 shadow-sm transition-transform ${"active"===e.state?"translate-x-[16px]":"translate-x-[2px]"}`})}),(0,t.jsx)("button",{onClick:x,disabled:_,title:"Run now",className:"rounded-md border border-[var(--card-border)] p-1.5 text-[var(--muted-foreground)] transition-colors hover:border-[var(--foreground)] hover:text-[var(--foreground)] disabled:opacity-50",children:(0,t.jsx)(n.Play,{size:12,className:"fill-current"})}),(0,t.jsx)("button",{onClick:o,title:"Edit",className:"p-1.5 rounded-md border border-[var(--card-border)] text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:border-[var(--foreground)] transition-colors",children:(0,t.jsx)(p.Pencil,{size:12})}),(0,t.jsx)("button",{onClick:u,title:"Delete",className:"p-1.5 rounded-md border border-[var(--card-border)] text-[var(--muted-foreground)] hover:text-red-400 hover:border-red-400/30 transition-colors",children:(0,t.jsx)(d.Trash2,{size:12})})]})]})}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,t.jsxs)("div",{className:"space-y-0",children:[(0,t.jsx)("div",{className:"px-6 py-5",children:(0,t.jsx)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] px-5 py-4",children:(0,t.jsxs)("div",{className:"grid grid-cols-[96px,minmax(0,1fr)] items-center gap-x-4 gap-y-4",children:[e.executionMode&&"prompt"!==e.executionMode&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Type"}),(0,t.jsx)("div",{className:"min-w-0",children:(0,t.jsx)("span",{className:"rounded-md border border-violet-400/20 bg-violet-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-violet-400",children:I.find(t=>t.value===e.executionMode)?.label??e.executionMode})})]}),(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Agent"}),(0,t.jsx)("div",{className:"min-w-0 flex items-center justify-between gap-3",children:(0,t.jsxs)("div",{className:"min-w-0 flex items-center gap-2.5",children:[D?(0,t.jsx)("img",{src:M(D.id,D.color,20),alt:"",className:"size-5 rounded-full shrink-0"}):(0,t.jsx)(c.Terminal,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsxs)("div",{className:"truncate text-[13px] font-medium text-[var(--foreground)]",children:[R??e.provider,e.model?` (${e.provider} / ${e.model})`:""]})]})}),(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Schedule"}),(0,t.jsx)("div",{className:"truncate text-[13px] font-medium text-[var(--foreground)]",children:O||"—"}),(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Target"}),(0,t.jsx)("div",{className:"truncate font-mono text-[13px] text-[var(--foreground)]",title:J,children:J})]})})}),(0,t.jsxs)("div",{className:"border-t border-[var(--card-border)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-6 py-4",children:[(0,t.jsx)(z,{children:"Recent Runs"}),(0,t.jsxs)("span",{className:"text-sm text-[var(--muted-foreground)]",children:[g.length," total"]})]}),(0,t.jsx)("div",{children:0===g.length?(0,t.jsx)("div",{className:"px-6 py-10 text-center text-[11px] text-[var(--muted-foreground)]",children:"No runs yet"}):g.map(e=>{let r=C===e.id,a="success"===e.status;return(0,t.jsxs)("button",{type:"button",onClick:()=>y({run:e.id}),className:`flex w-full items-center gap-4 border-t border-[var(--card-border)]/50 px-6 py-5 text-left transition-colors ${r?"border-l-2 border-l-emerald-400 bg-emerald-500/5":"hover:bg-[var(--muted)]/20"}`,children:[(0,t.jsx)("span",{className:`flex size-6 shrink-0 items-center justify-center rounded-full border text-[11px] ${a?"border-emerald-400 text-emerald-400":"failed"===e.status?"border-red-400 text-red-400":"running"===e.status?"border-sky-400 text-sky-400":"border-[var(--card-border)] text-[var(--muted-foreground)]"}`,children:a?"✓":"failed"===e.status?"!":"•"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"text-[13px] font-medium text-[var(--foreground)]",children:T(e.startedAt??e.createdAt)}),(0,t.jsx)("div",{className:"mt-1 text-[12px] text-[var(--muted-foreground)]",children:null!=e.durationMs?`${(e.durationMs/1e3).toFixed(1)}s`:"running"===e.status?"Running...":e.status.charAt(0).toUpperCase()+e.status.slice(1)})]}),r?(0,t.jsx)("span",{className:"rounded-md bg-[var(--muted)] px-2.5 py-1 text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Viewing"}):null]},e.id)})})]}),(0,t.jsxs)("div",{className:"border-t border-[var(--card-border)] px-6 py-4",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[_?(0,t.jsx)("button",{onClick:m,className:"inline-flex items-center gap-1.5 rounded-md border border-red-400/30 px-2.5 py-1 text-[10px] font-bold uppercase tracking-[0.05em] text-red-400 transition-colors hover:bg-red-500/10",children:"Cancel run"}):null,e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null,P(e)&&(0,t.jsxs)("span",{className:"rounded-md border border-amber-500/20 bg-amber-500/10 px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-amber-400 inline-flex items-center gap-1",children:[(0,t.jsx)(i.Clock,{size:10}),"overdue"]}),(0,t.jsxs)("span",{className:`text-[11px] ${P(e)?"text-amber-400 font-medium":"text-[var(--muted-foreground)]"}`,children:["Next run ",A(e.nextRunAt,e.state)]}),(0,t.jsxs)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:["Last ",e.lastRunAt?T(new Date(e.lastRunAt).toISOString()):"Never"]}),(e.cliArgs||"skip"!==e.overlapPolicy)&&(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:e.cliArgs?"Custom CLI args":`Overlap ${e.overlapPolicy}`})]}),e.condition?(0,t.jsx)("div",{className:"mt-3 text-[11px] leading-[1.5] text-[var(--muted-foreground)]",children:e.condition}):null]})]})})]}),E?(0,t.jsx)(U,{run:E,job:e,agentMap:s},E.id):(0,t.jsx)("div",{className:"flex min-w-0 flex-1 items-center justify-center text-[var(--muted-foreground)] text-sm",children:0===g.length?'No runs yet. Click "Run now" to trigger one.':"Select a run to view its output"})]})})}e.s(["CreateJobModal",0,O,"default",0,function({projectId:e,requireProjectId:a=!1,includeObjectiveJobs:s=!1,visibleJobIds:n,contextLabel:d,createDefaults:l,onCreateJob:x}={}){let{jobs:m,loading:p,refresh:f,createJob:h,updateJob:b,deleteJob:j,toggleJob:N,runNow:w,cancelRun:y,fetchRuns:S}=g(e,{requireProjectId:a,includeObjectiveJobs:s}),[C,I]=(0,r.useState)("all"),[R,$]=(0,r.useState)(null),[T,z]=(0,r.useState)(!1),[E,_]=(0,r.useState)(null),[U,J]=(0,r.useState)({}),[D,F]=(0,r.useState)(null),[B,H]=(0,r.useState)({}),{getSelection:q,pushSelection:W,replaceSelection:K}=(0,v.useUrlSelection)(),G=q("job"),V=q("run"),Q=(0,r.useMemo)(()=>n?new Set(n):null,[n]);(0,r.useEffect)(()=>{fetch("/api/prompt-jobs/agents").then(e=>e.json()).then(e=>{let t={};for(let r of e.agents??[])t[r.id]=r;H(t)}).catch(e=>console.warn("[PromptJobBoard] fetch agent map failed:",e))},[]);let X=e=>{F(e),setTimeout(()=>F(null),2500)},Y=(0,r.useMemo)(()=>(Q?m.filter(e=>Q.has(e.id)):m).filter(e=>"linear_worker"!==e.executionMode),[m,Q]),Z=Y.filter(e=>"all"===C||e.state===C),ee=G?Y.find(e=>e.id===G)??null:null,et=ee??(R?.id===G&&(!Q||Q.has(R.id))?R:null);Y.length,Y.filter(e=>"active"===e.state).length,Y.filter(e=>"paused"===e.state).length,Y.filter(e=>"stopped"===e.state).length;let er=async e=>{await N(e)&&X(`${e.name} ${"active"===e.state?"paused":"resumed"}`)},ea=async(e,t)=>{if(t?.stopPropagation(),U[e])return;J(t=>({...t,[e]:!0}));let r=await w(e);J(t=>{let r={...t};return delete r[e],r}),r&&X("Run triggered")},es=async e=>{await j(e)&&(G===e&&W({job:null,run:null}),X("Job deleted"))},en=async e=>{await y(e)&&X("Run cancelled")},ed=async t=>{E?await b(E.id,t)&&X(`Task "${t.name}" updated`):(x?await x(t):await h({...t,projectId:e??""}))&&(await f(),X(`Task "${t.name}" created`))};(0,r.useEffect)(()=>{if(!G){$(null),V&&K({run:null});return}if(Q&&!Q.has(G)){$(null),K({job:null,run:null});return}if(ee)return void $(e=>e?.id===G?ee:null);let e=!1;return(async()=>{try{let t=await fetch(`/api/prompt-jobs/${encodeURIComponent(G)}`);if(e)return;if(404===t.status)return void K({job:null,run:null});if(!t.ok)throw Error(`Failed to fetch selected scheduled task: ${t.status}`);let r=await t.json().catch(()=>({}));if(!r.job?.id||!s&&r.job.objectiveId)return void K({job:null,run:null});$(r.job)}catch(t){e||console.error("Failed to hydrate selected prompt job",t)}})(),()=>{e=!0}},[s,K,ee,G,V,Q]);let eo=D&&(0,t.jsx)("div",{className:"fixed bottom-8 left-1/2 -translate-x-1/2 z-50 animate-in fade-in slide-in-from-bottom-2 duration-200",children:(0,t.jsx)("div",{className:"bg-[var(--card-bg)] border border-[var(--card-border)] px-4 py-2.5 rounded-xl shadow-lg flex items-center gap-2.5 text-sm font-medium",children:D})});return T?(0,t.jsxs)(t.Fragment,{children:[eo,(0,t.jsx)(O,{onClose:()=>{z(!1),_(null)},onSubmit:ed,editingJob:E,createDefaults:l,contextLabel:d})]}):(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-col text-[var(--foreground)] lg:flex-row",children:[eo,(0,t.jsxs)("div",{className:"flex w-full shrink-0 flex-col border-b border-[var(--card-border)] lg:w-[390px] lg:border-b-0 lg:border-r",children:[(0,t.jsx)("div",{className:"px-6 pb-0 pt-6",children:(0,t.jsx)("div",{className:"border-b border-[var(--card-border)]",children:(0,t.jsxs)("div",{className:"flex items-end justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)("div",{className:"flex items-end gap-10",children:["all","active","paused"].map(e=>{let r=C===e;return(0,t.jsxs)("button",{onClick:()=>I(e),className:`relative pb-4 text-[18px] font-semibold capitalize transition-colors ${r?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:[e,r?(0,t.jsx)("span",{className:"absolute bottom-[6px] left-0 h-[4px] w-8 rounded-full bg-[var(--foreground)]"}):null]},e)})}),d?(0,t.jsx)("span",{className:"mb-3 rounded-full border border-sky-500/25 bg-sky-500/10 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.16em] text-sky-100",children:d}):null]}),(0,t.jsxs)("div",{className:"flex items-center gap-5 pb-4 text-[var(--muted-foreground)]",children:[(0,t.jsx)("button",{onClick:()=>f(),className:"transition-colors hover:text-[var(--foreground)]",title:"Refresh",children:(0,t.jsx)(u.RefreshCw,{size:18})}),(0,t.jsx)("button",{onClick:()=>{_(null),z(!0)},className:"transition-colors hover:text-[var(--foreground)]",title:"New Job",children:(0,t.jsx)(o.Plus,{size:20})})]})]})})}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto pb-5",children:p&&0===Y.length?(0,t.jsx)("div",{className:"py-12 text-center text-sm text-[var(--muted-foreground)]",children:"Loading scheduled tasks..."}):(0,t.jsxs)("div",{className:"overflow-hidden",children:[Z.map(e=>{let r=G===e.id,a=e.cronExpr&&(0,k.cronToHuman)(e.cronExpr)||e.cadence||e.cronExpr;return(0,t.jsx)("div",{onClick:()=>W({job:e.id,run:null}),className:`cursor-pointer border-b border-[var(--card-border)]/50 px-6 py-4 transition-colors ${r?"bg-[var(--card-bg)]":"hover:bg-[var(--muted)]/10"}`,children:(0,t.jsxs)("div",{className:"flex items-start gap-4",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[15px] font-medium text-[var(--foreground)]",children:e.name}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-x-4 gap-y-1 text-[12px] text-[var(--muted-foreground)]",children:[(0,t.jsx)("span",{className:"min-w-0 flex items-center gap-1.5 truncate",children:e.agentId&&B[e.agentId]?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("img",{src:M(e.agentId,B[e.agentId].color,16),alt:"",className:"size-4 rounded-full"}),B[e.agentId].name]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c.Terminal,{size:11}),e.provider]})}),(0,t.jsxs)("span",{className:`flex items-center gap-1 ${P(e)?"text-amber-400 font-medium":""}`,children:[(0,t.jsx)(i.Clock,{size:11}),A(e.nextRunAt,e.state)]}),(0,t.jsx)("span",{className:"truncate font-mono text-[11px]",title:a,children:a}),"linear_worker"===e.executionMode?(0,t.jsx)("span",{className:"rounded-md border border-violet-400/20 bg-violet-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-violet-400",children:"linear"}):null,e.condition?(0,t.jsx)("span",{className:"rounded-md border border-blue-400/20 bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-blue-400",children:"gated"}):null]})]}),(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),er(e)},type:"button",role:"switch","aria-checked":"active"===e.state,title:"active"===e.state?"Pause":"Resume",className:`relative inline-flex h-[18px] w-[32px] shrink-0 cursor-pointer rounded-full border transition-colors ${"active"===e.state?"border-emerald-400/30 bg-emerald-500/40":"border-[var(--card-border)] bg-[var(--muted)]"}`,children:(0,t.jsx)("span",{className:`pointer-events-none absolute top-[2px] size-[12px] rounded-full bg-white/90 shadow-sm transition-transform ${"active"===e.state?"translate-x-[16px]":"translate-x-[2px]"}`})})]})},e.id)}),0===Z.length&&(0,t.jsx)("div",{className:"rounded-xl border border-dashed border-[var(--card-border)] py-12 text-center text-sm text-[var(--muted-foreground)]",children:0===Y.length?"No scheduled tasks yet. Create one to get started.":"No scheduled tasks match the selected filter."})]})})]}),(0,t.jsx)("div",{className:"min-h-0 min-w-0 flex-1",children:et?(0,t.jsx)(L,{job:et,agentMap:B,onEdit:()=>{_(et),z(!0)},onToggle:()=>er(et),onDelete:()=>es(et.id),onRunNow:()=>ea(et.id),onCancelRun:()=>en(et.id),fetchRuns:S},et.id):(0,t.jsx)("div",{className:"flex h-full items-center justify-center border-t border-[var(--card-border)] lg:border-l-0 lg:border-t-0",children:(0,t.jsxs)("div",{className:"rounded-2xl border border-dashed border-[var(--card-border)] bg-[var(--card-bg)]/60 px-8 py-10 text-center",children:[(0,t.jsx)("div",{className:"text-sm font-medium text-[var(--foreground)]",children:"Select a scheduled task"}),(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"The selected job will open here with its runs and chat output."})]})})})]})}],827430)}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,195057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return i},formatWithValidation:function(){return c},urlObjectKeys:function(){return o}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=e.r(190809)._(e.r(998183)),l=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:r}=e,a=e.protocol||"",s=e.pathname||"",i=e.hash||"",o=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),o&&"object"==typeof o&&(o=String(n.urlQueryToSearchParams(o)));let u=e.search||o&&`?${o}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||l.test(a))&&!1!==c?(c="//"+(c||""),s&&"/"!==s[0]&&(s="/"+s)):c||(c=""),i&&"#"!==i[0]&&(i="#"+i),u&&"?"!==u[0]&&(u="?"+u),s=s.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${a}${c}${s}${u}${i}`}let o=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return i(e)}},818581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return s}});let a=e.r(271645);function s(e,t){let r=(0,a.useRef)(null),s=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=s.current;t&&(s.current=null,t())}else e&&(r.current=n(e,a)),t&&(s.current=n(t,a))},[e,t])}function n(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},573668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return n}});let a=e.r(718967),s=e.r(652817);function n(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,s.hasBasePath)(r.pathname)}catch(e){return!1}}},284508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},522016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return v},useLinkStatus:function(){return y}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=e.r(190809),l=e.r(843476),i=n._(e.r(271645)),o=e.r(195057),c=e.r(8372),u=e.r(818581),d=e.r(718967),f=e.r(405550);e.r(233525);let m=e.r(388540),h=e.r(91949),p=e.r(573668),x=e.r(509396);function v(t){var r,a;let s,n,v,[y,b]=(0,i.useOptimistic)(h.IDLE_LINK_STATUS),j=(0,i.useRef)(null),{href:N,as:w,children:k,prefetch:C=null,passHref:S,replace:_,shallow:L,scroll:P,onClick:T,onMouseEnter:M,onTouchStart:O,legacyBehavior:R=!1,onNavigate:A,transitionTypes:E,ref:I,unstable_dynamicOnHover:U,...$}=t;s=k,R&&("string"==typeof s||"number"==typeof s)&&(s=(0,l.jsx)("a",{children:s}));let K=i.default.useContext(c.AppRouterContext),W=!1!==C,B=!1!==C?null===(a=C)||"auto"===a?x.FetchStrategy.PPR:x.FetchStrategy.Full:x.FetchStrategy.PPR,D="string"==typeof(r=w||N)?r:(0,o.formatUrl)(r);if(R){if(s?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});n=i.default.Children.only(s)}let z=R?n&&"object"==typeof n&&n.ref:I,F=i.default.useCallback(e=>(null!==K&&(j.current=(0,h.mountLinkInstance)(e,D,K,B,W,b)),()=>{j.current&&((0,h.unmountLinkForCurrentNavigation)(j.current),j.current=null),(0,h.unmountPrefetchableInstance)(e)}),[W,D,K,B,b]),q={ref:(0,u.useMergedRef)(F,z),onClick(t){R||"function"!=typeof T||T(t),R&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!K||t.defaultPrevented||function(t,r,a,s,n,l,o){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,p.isLocalURL)(r)){s&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(699781);i.default.startTransition(()=>{d(r,s?"replace":"push",!1===n?m.ScrollBehavior.NoScroll:m.ScrollBehavior.Default,a.current,o)})}}(t,D,j,_,P,A,E)},onMouseEnter(e){R||"function"!=typeof M||M(e),R&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),K&&W&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){R||"function"!=typeof O||O(e),R&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),K&&W&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,d.isAbsoluteUrl)(D)?q.href=D:R&&!S&&("a"!==n.type||"href"in n.props)||(q.href=(0,f.addBasePath)(D)),v=R?i.default.cloneElement(n,q):(0,l.jsx)("a",{...$,...q,children:s}),(0,l.jsx)(g.Provider,{value:y,children:v})}e.r(284508);let g=(0,i.createContext)(h.IDLE_LINK_STATUS),y=()=>(0,i.useContext)(g);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},429056,e=>{"use strict";let t=(0,e.i(363732).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],429056)},363732,e=>{"use strict";var t=e.i(271645);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),a=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var s={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let n=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:n=2,absoluteStrokeWidth:l,className:i="",children:o,iconNode:c,...u},d)=>(0,t.createElement)("svg",{ref:d,...s,width:a,height:a,stroke:e,strokeWidth:l?24*Number(n)/Number(a):n,className:r("lucide",i),...!o&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...c.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(o)?o:[o]]));e.s(["default",0,(e,s)=>{let l=(0,t.forwardRef)(({className:l,...i},o)=>(0,t.createElement)(n,{ref:o,iconNode:s,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...i}));return l.displayName=a(e),l}],363732)},203096,e=>{"use strict";let t=(0,e.i(363732).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],203096)},958164,e=>{"use strict";let t=(0,e.i(363732).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",0,t],958164)},437307,e=>{"use strict";let t=(0,e.i(363732).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],437307)},211464,e=>{"use strict";let t=(0,e.i(363732).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Circle",0,t],211464)},381830,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(522016),s=e.i(203096),n=e.i(429056),l=e.i(211464),i=e.i(958164),o=e.i(437307);let c=e=>{switch(e){case"ok":return(0,t.jsx)(l.Circle,{className:"w-3 h-3 fill-emerald-400 text-emerald-400"});case"error":return(0,t.jsx)(o.XCircle,{className:"w-3 h-3 text-red-400"});case"unavailable":return(0,t.jsx)(i.AlertTriangle,{className:"w-3 h-3 text-[var(--muted-foreground)]"})}},u=e=>{switch(e){case"ok":return(0,t.jsx)("span",{className:"text-emerald-400 text-xs font-medium",children:"OK"});case"error":return(0,t.jsx)("span",{className:"text-red-400 text-xs font-medium",children:"Error"});case"unavailable":return(0,t.jsx)("span",{className:"text-[var(--muted-foreground)] text-xs font-medium",children:"Unavailable"})}};e.s(["default",0,function(){let[e,i]=(0,r.useState)(null),[o,d]=(0,r.useState)(!0),[f,m]=(0,r.useState)(null),h=(0,r.useCallback)(async()=>{d(!0),m(null);try{let e=await fetch("/api/status");if(!e.ok)throw Error(`HTTP ${e.status}`);i(await e.json())}catch(e){m(e instanceof Error?e.message:"Failed to fetch status")}finally{d(!1)}},[]);(0,r.useEffect)(()=>{h();let e=setInterval(h,3e4);return()=>clearInterval(e)},[h]);let p=e?.services.filter(e=>!e.name.startsWith("cli:"))??[],x=e?.services.filter(e=>e.name.startsWith("cli:"))??[];return(0,t.jsx)("div",{className:"min-h-screen bg-[var(--background)] text-[var(--foreground)] p-6",children:(0,t.jsxs)("div",{className:"max-w-2xl mx-auto",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-8",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(a.default,{href:"/",className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:(0,t.jsx)(n.ArrowLeft,{className:"w-4 h-4"})}),(0,t.jsx)("h1",{className:"text-lg font-semibold",children:"System Status"}),e&&(0,t.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-full ${"ok"===e.status?"bg-emerald-400/10 text-emerald-400":"bg-amber-400/10 text-amber-400"}`,children:"ok"===e.status?"All systems operational":"Degraded"})]}),(0,t.jsx)("button",{onClick:h,disabled:o,className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:(0,t.jsx)(s.RefreshCw,{className:`w-4 h-4 ${o?"animate-spin":""}`})})]}),f&&(0,t.jsx)("div",{className:"mb-6 p-3 rounded-lg bg-red-400/10 border border-red-400/20 text-red-400 text-sm",children:f}),(0,t.jsxs)("section",{className:"mb-8",children:[(0,t.jsx)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider mb-3",children:"Services"}),(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--border)] divide-y divide-[var(--border)]",children:[p.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[c(e.status),(0,t.jsx)("span",{className:"text-sm font-medium",children:e.name})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[void 0!==e.latencyMs&&(0,t.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[e.latencyMs,"ms"]}),u(e.status)]})]},e.name)),0===p.length&&!o&&(0,t.jsx)("div",{className:"px-4 py-3 text-sm text-[var(--muted-foreground)]",children:"No services found"})]})]}),(0,t.jsxs)("section",{className:"mb-8",children:[(0,t.jsx)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider mb-3",children:"CLI Providers"}),(0,t.jsx)("div",{className:"rounded-lg border border-[var(--border)] divide-y divide-[var(--border)]",children:x.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[c(e.status),(0,t.jsx)("span",{className:"text-sm font-medium",children:e.name.replace("cli:","")})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:e.detail}),u(e.status)]})]},e.name))})]}),e?.limits&&(0,t.jsxs)("section",{className:"mb-8",children:[(0,t.jsx)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider mb-3",children:"Operational Limits"}),(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--border)] divide-y divide-[var(--border)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(l.Circle,{className:"w-3 h-3 fill-[var(--muted-foreground)] text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium",children:"Max Workers"})]}),(0,t.jsx)("span",{className:"text-xs text-[var(--app-shell-soft-text)] font-mono",children:e.limits.maxWorkers})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(l.Circle,{className:"w-3 h-3 fill-[var(--muted-foreground)] text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium",children:"Write QPS Ceiling"})]}),(0,t.jsx)("span",{className:"text-xs text-[var(--app-shell-soft-text)] font-mono",children:e.limits.writeQpsCeiling})]}),(0,t.jsx)("div",{className:"px-4 py-2",children:(0,t.jsxs)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:["Single-coordinator / single-writer SQLite architecture."," ",(0,t.jsx)("a",{href:"https://github.com/anthropics/agx-cloud/blob/main/docs/LIMITS.md",target:"_blank",rel:"noopener",className:"underline hover:text-[var(--app-shell-soft-text)]",children:"See LIMITS.md"})]})})]})]}),e&&(0,t.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)] text-center",children:["Last checked: ",new Date(e.timestamp).toLocaleTimeString()]})]})})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,195057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return i},formatWithValidation:function(){return c},urlObjectKeys:function(){return o}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=e.r(190809)._(e.r(998183)),l=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:r}=e,a=e.protocol||"",s=e.pathname||"",i=e.hash||"",o=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),o&&"object"==typeof o&&(o=String(n.urlQueryToSearchParams(o)));let u=e.search||o&&`?${o}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||l.test(a))&&!1!==c?(c="//"+(c||""),s&&"/"!==s[0]&&(s="/"+s)):c||(c=""),i&&"#"!==i[0]&&(i="#"+i),u&&"?"!==u[0]&&(u="?"+u),s=s.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${a}${c}${s}${u}${i}`}let o=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return i(e)}},818581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return s}});let a=e.r(271645);function s(e,t){let r=(0,a.useRef)(null),s=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=s.current;t&&(s.current=null,t())}else e&&(r.current=n(e,a)),t&&(s.current=n(t,a))},[e,t])}function n(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},573668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return n}});let a=e.r(718967),s=e.r(652817);function n(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,s.hasBasePath)(r.pathname)}catch(e){return!1}}},284508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},522016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return v},useLinkStatus:function(){return y}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let n=e.r(190809),l=e.r(843476),i=n._(e.r(271645)),o=e.r(195057),c=e.r(8372),u=e.r(818581),d=e.r(718967),f=e.r(405550);e.r(233525);let m=e.r(388540),h=e.r(91949),p=e.r(573668),x=e.r(509396);function v(t){var r,a;let s,n,v,[y,b]=(0,i.useOptimistic)(h.IDLE_LINK_STATUS),j=(0,i.useRef)(null),{href:N,as:w,children:k,prefetch:C=null,passHref:S,replace:_,shallow:L,scroll:P,onClick:T,onMouseEnter:M,onTouchStart:O,legacyBehavior:R=!1,onNavigate:A,transitionTypes:E,ref:I,unstable_dynamicOnHover:U,...$}=t;s=k,R&&("string"==typeof s||"number"==typeof s)&&(s=(0,l.jsx)("a",{children:s}));let K=i.default.useContext(c.AppRouterContext),W=!1!==C,B=!1!==C?null===(a=C)||"auto"===a?x.FetchStrategy.PPR:x.FetchStrategy.Full:x.FetchStrategy.PPR,D="string"==typeof(r=w||N)?r:(0,o.formatUrl)(r);if(R){if(s?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});n=i.default.Children.only(s)}let z=R?n&&"object"==typeof n&&n.ref:I,F=i.default.useCallback(e=>(null!==K&&(j.current=(0,h.mountLinkInstance)(e,D,K,B,W,b)),()=>{j.current&&((0,h.unmountLinkForCurrentNavigation)(j.current),j.current=null),(0,h.unmountPrefetchableInstance)(e)}),[W,D,K,B,b]),q={ref:(0,u.useMergedRef)(F,z),onClick(t){R||"function"!=typeof T||T(t),R&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!K||t.defaultPrevented||function(t,r,a,s,n,l,o){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,p.isLocalURL)(r)){s&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(699781);i.default.startTransition(()=>{d(r,s?"replace":"push",!1===n?m.ScrollBehavior.NoScroll:m.ScrollBehavior.Default,a.current,o)})}}(t,D,j,_,P,A,E)},onMouseEnter(e){R||"function"!=typeof M||M(e),R&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),K&&W&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){R||"function"!=typeof O||O(e),R&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),K&&W&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,d.isAbsoluteUrl)(D)?q.href=D:R&&!S&&("a"!==n.type||"href"in n.props)||(q.href=(0,f.addBasePath)(D)),v=R?i.default.cloneElement(n,q):(0,l.jsx)("a",{...$,...q,children:s}),(0,l.jsx)(g.Provider,{value:y,children:v})}e.r(284508);let g=(0,i.createContext)(h.IDLE_LINK_STATUS),y=()=>(0,i.useContext)(g);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},429056,e=>{"use strict";let t=(0,e.i(363732).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],429056)},958164,e=>{"use strict";let t=(0,e.i(363732).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",0,t],958164)},363732,e=>{"use strict";var t=e.i(271645);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),a=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var s={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let n=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:n=2,absoluteStrokeWidth:l,className:i="",children:o,iconNode:c,...u},d)=>(0,t.createElement)("svg",{ref:d,...s,width:a,height:a,stroke:e,strokeWidth:l?24*Number(n)/Number(a):n,className:r("lucide",i),...!o&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...c.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(o)?o:[o]]));e.s(["default",0,(e,s)=>{let l=(0,t.forwardRef)(({className:l,...i},o)=>(0,t.createElement)(n,{ref:o,iconNode:s,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...i}));return l.displayName=a(e),l}],363732)},203096,e=>{"use strict";let t=(0,e.i(363732).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],203096)},437307,e=>{"use strict";let t=(0,e.i(363732).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],437307)},211464,e=>{"use strict";let t=(0,e.i(363732).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Circle",0,t],211464)},381830,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(522016),s=e.i(203096),n=e.i(429056),l=e.i(211464),i=e.i(958164),o=e.i(437307);let c=e=>{switch(e){case"ok":return(0,t.jsx)(l.Circle,{className:"w-3 h-3 fill-emerald-400 text-emerald-400"});case"error":return(0,t.jsx)(o.XCircle,{className:"w-3 h-3 text-red-400"});case"unavailable":return(0,t.jsx)(i.AlertTriangle,{className:"w-3 h-3 text-[var(--muted-foreground)]"})}},u=e=>{switch(e){case"ok":return(0,t.jsx)("span",{className:"text-emerald-400 text-xs font-medium",children:"OK"});case"error":return(0,t.jsx)("span",{className:"text-red-400 text-xs font-medium",children:"Error"});case"unavailable":return(0,t.jsx)("span",{className:"text-[var(--muted-foreground)] text-xs font-medium",children:"Unavailable"})}};e.s(["default",0,function(){let[e,i]=(0,r.useState)(null),[o,d]=(0,r.useState)(!0),[f,m]=(0,r.useState)(null),h=(0,r.useCallback)(async()=>{d(!0),m(null);try{let e=await fetch("/api/status");if(!e.ok)throw Error(`HTTP ${e.status}`);i(await e.json())}catch(e){m(e instanceof Error?e.message:"Failed to fetch status")}finally{d(!1)}},[]);(0,r.useEffect)(()=>{h();let e=setInterval(h,3e4);return()=>clearInterval(e)},[h]);let p=e?.services.filter(e=>!e.name.startsWith("cli:"))??[],x=e?.services.filter(e=>e.name.startsWith("cli:"))??[];return(0,t.jsx)("div",{className:"min-h-screen bg-[var(--background)] text-[var(--foreground)] p-6",children:(0,t.jsxs)("div",{className:"max-w-2xl mx-auto",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-8",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(a.default,{href:"/",className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:(0,t.jsx)(n.ArrowLeft,{className:"w-4 h-4"})}),(0,t.jsx)("h1",{className:"text-lg font-semibold",children:"System Status"}),e&&(0,t.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-full ${"ok"===e.status?"bg-emerald-400/10 text-emerald-400":"bg-amber-400/10 text-amber-400"}`,children:"ok"===e.status?"All systems operational":"Degraded"})]}),(0,t.jsx)("button",{onClick:h,disabled:o,className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:(0,t.jsx)(s.RefreshCw,{className:`w-4 h-4 ${o?"animate-spin":""}`})})]}),f&&(0,t.jsx)("div",{className:"mb-6 p-3 rounded-lg bg-red-400/10 border border-red-400/20 text-red-400 text-sm",children:f}),(0,t.jsxs)("section",{className:"mb-8",children:[(0,t.jsx)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider mb-3",children:"Services"}),(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--border)] divide-y divide-[var(--border)]",children:[p.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[c(e.status),(0,t.jsx)("span",{className:"text-sm font-medium",children:e.name})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[void 0!==e.latencyMs&&(0,t.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[e.latencyMs,"ms"]}),u(e.status)]})]},e.name)),0===p.length&&!o&&(0,t.jsx)("div",{className:"px-4 py-3 text-sm text-[var(--muted-foreground)]",children:"No services found"})]})]}),(0,t.jsxs)("section",{className:"mb-8",children:[(0,t.jsx)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider mb-3",children:"CLI Providers"}),(0,t.jsx)("div",{className:"rounded-lg border border-[var(--border)] divide-y divide-[var(--border)]",children:x.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[c(e.status),(0,t.jsx)("span",{className:"text-sm font-medium",children:e.name.replace("cli:","")})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:e.detail}),u(e.status)]})]},e.name))})]}),e?.limits&&(0,t.jsxs)("section",{className:"mb-8",children:[(0,t.jsx)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider mb-3",children:"Operational Limits"}),(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--border)] divide-y divide-[var(--border)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(l.Circle,{className:"w-3 h-3 fill-[var(--muted-foreground)] text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium",children:"Max Workers"})]}),(0,t.jsx)("span",{className:"text-xs text-[var(--app-shell-soft-text)] font-mono",children:e.limits.maxWorkers})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(l.Circle,{className:"w-3 h-3 fill-[var(--muted-foreground)] text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium",children:"Write QPS Ceiling"})]}),(0,t.jsx)("span",{className:"text-xs text-[var(--app-shell-soft-text)] font-mono",children:e.limits.writeQpsCeiling})]}),(0,t.jsx)("div",{className:"px-4 py-2",children:(0,t.jsxs)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:["Single-coordinator / single-writer SQLite architecture."," ",(0,t.jsx)("a",{href:"https://github.com/anthropics/agx-cloud/blob/main/docs/LIMITS.md",target:"_blank",rel:"noopener",className:"underline hover:text-[var(--app-shell-soft-text)]",children:"See LIMITS.md"})]})})]})]}),e&&(0,t.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)] text-center",children:["Last checked: ",new Date(e.timestamp).toLocaleTimeString()]})]})})}])}]);
@@ -189,7 +189,7 @@ function ProjectLayoutContent({
189
189
  }}
190
190
  />
191
191
  <div className="flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden">
192
- <div className="flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0">
192
+ <div className="desktop-titlebar flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0">
193
193
  {/* Left: back + breadcrumb */}
194
194
  <div className="flex items-center gap-1.5 min-w-0 flex-shrink-0">
195
195
  {!sidebarVisible && (
@@ -1193,9 +1193,10 @@ export default function PromptJobBoard({
1193
1193
 
1194
1194
  const visibleJobs = useMemo(
1195
1195
  () =>
1196
- visibleJobIdSet
1196
+ (visibleJobIdSet
1197
1197
  ? jobs.filter((job) => visibleJobIdSet.has(job.id))
1198
- : jobs,
1198
+ : jobs
1199
+ ).filter((job) => job.executionMode !== "linear_worker"),
1199
1200
  [jobs, visibleJobIdSet]
1200
1201
  );
1201
1202
  const filteredJobs = visibleJobs.filter((j) => filter === "all" || j.state === filter);
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
 
3
3
  import { useState, type ComponentProps } from "react";
4
- import { Bot, Link2, X } from "lucide-react";
4
+ import { Bot, Link2, ScrollText, X } from "lucide-react";
5
5
  import LinearSetup from "@/components/LinearSetup";
6
6
  import LinearWorkerConfig from "@/components/linear/LinearWorkerConfig";
7
+ import LinearWorkerRunLog from "@/components/linear/LinearWorkerRunLog";
7
8
 
8
9
  type LinearSetupProps = ComponentProps<typeof LinearSetup>;
9
10
 
@@ -20,7 +21,7 @@ interface LinearSettingsModalProps {
20
21
  projectId?: string;
21
22
  }
22
23
 
23
- type SettingsTab = "connection" | "worker";
24
+ type SettingsTab = "connection" | "worker" | "run-log";
24
25
 
25
26
  export default function LinearSettingsModal({
26
27
  connected,
@@ -35,10 +36,12 @@ export default function LinearSettingsModal({
35
36
  projectId,
36
37
  }: LinearSettingsModalProps) {
37
38
  const [tab, setTab] = useState<SettingsTab>(connected ? "worker" : "connection");
39
+ const [workerJobId, setWorkerJobId] = useState<string | null>(null);
38
40
 
39
41
  const tabs: Array<{ id: SettingsTab; label: string; icon: React.ReactNode; disabled?: boolean }> = [
40
42
  { id: "connection", label: "Connection", icon: <Link2 size={14} /> },
41
43
  { id: "worker", label: "Linear Worker", icon: <Bot size={14} />, disabled: !connected },
44
+ { id: "run-log", label: "Run Log", icon: <ScrollText size={14} />, disabled: !connected },
42
45
  ];
43
46
 
44
47
  return (
@@ -96,7 +99,10 @@ export default function LinearSettingsModal({
96
99
  />
97
100
  )}
98
101
  {tab === "worker" && connected && (
99
- <LinearWorkerConfig projectId={projectId} />
102
+ <LinearWorkerConfig projectId={projectId} onJobLoaded={setWorkerJobId} />
103
+ )}
104
+ {tab === "run-log" && connected && (
105
+ <LinearWorkerRunLog jobId={workerJobId} />
100
106
  )}
101
107
  </div>
102
108
  </div>