@mndrk/agx 2.2.0 → 2.3.1

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 (433) hide show
  1. package/README.md +70 -105
  2. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  3. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
  4. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +4 -4
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +4 -4
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +3 -3
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +2 -2
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +4 -3
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +4 -3
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +3 -2
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0-zk9w8._.js +7 -2
  216. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0.01bfe._.js +13 -8
  217. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__00c~p6z._.js +7 -2
  218. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__019dflu._.js +7 -2
  219. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__02t.3rm._.js +4 -4
  220. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__06zr0ph._.js +6 -1
  221. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__07d._0s._.js +15 -10
  222. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08xj~a3._.js +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0a0cq38._.js +34 -3
  224. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0asvfdo._.js +35 -4
  225. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0bt7ejs._.js +7 -2
  226. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0f.~98d._.js +7 -2
  227. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g-~-.q._.js +6 -1
  228. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7p6pw._.js +1 -1
  229. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gj~dap._.js +40 -9
  230. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hkcw03._.js +8 -3
  231. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hyu3en._.js +7 -2
  232. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0i5aw03._.js +7 -2
  233. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ke4z91._.js +7 -2
  234. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0l53ok5._.js +41 -10
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ll-~cx._.js +7 -2
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0mh6p.0._.js +7 -2
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0nc-lbr._.js +1 -1
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0p9rl6.._.js +8 -3
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0q~pnp0._.js +6 -6
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ue0bu5._.js +6 -1
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0unwwyx._.js +12 -7
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0vtkl3q._.js +4 -4
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0x6w64i._.js +1 -1
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0z82z0-._.js +6 -1
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0zrv3p3._.js +16 -11
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~iknwz._.js +12 -7
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10d.dhd._.js +46 -15
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10sw5ia._.js +4 -4
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__11yx.ud._.js +33 -2
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13-nlgu._.js +5 -5
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13960a8._.js +14 -9
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_06qet8g._.js +14 -9
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_0m2ly._.js +4 -4
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0a15wtk._.js +4 -4
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0fr1qq6._.js +1 -1
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0g.q2r6._.js +6 -1
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0i7fs.i._.js +4 -4
  258. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01pvj2g._.js +1 -1
  259. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_agent-participants_ts_0cq15u5._.js +1 -1
  260. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_0twf-w5._.js +1 -1
  261. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_orchestrator_chat-processor_ts_0c2l_oh._.js +43 -12
  262. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0l95hik._.js +15 -15
  263. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0s5xprd._.js +1 -1
  264. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js +19 -14
  265. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_schedule-runner_ts_07-ozf_._.js +2 -2
  266. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0_l0fpi.js +1 -1
  267. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0gips_c.js +1 -1
  268. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0rszt9p.js +10 -6
  269. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0u_5kfo.js +1 -1
  270. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_06fnblz._.js +3 -0
  271. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0140-84._.js +3 -0
  272. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03fckp4._.js +3 -0
  273. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0tcjapj._.js → _0ip6k6n._.js} +2 -2
  274. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0jensz1._.js +3 -0
  275. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0t0p8q5._.js +3 -0
  276. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yeuuy1._.js +1 -23
  277. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +1 -1
  278. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +3 -3
  279. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +1 -1
  280. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0k4~c1x._.js +1 -1
  281. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ld1uug._.js +1 -1
  282. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ms1d6i._.js +4 -0
  283. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0p_v0ri._.js +1 -1
  284. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0x.xj52._.js +3 -0
  285. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0~g2ijr._.js +1 -1
  286. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +3 -3
  287. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_[id]_page_tsx_06n47n~._.js +1 -1
  288. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_078reb_._.js +1 -1
  289. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +25 -3
  290. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
  291. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_agents_[agentId]_page_tsx_0wm~_~t._.js +1 -1
  292. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_page_tsx_0iyozfl._.js +1 -1
  293. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_new_page_tsx_0yqd0a5._.js +1 -1
  294. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +1 -20
  295. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_0ql2qmr._.js +1 -1
  296. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +2 -2
  297. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +1 -1
  298. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_terminal_TerminalPane_tsx_0l17vs_._.js +22 -0
  299. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
  300. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  301. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  302. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  303. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  304. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  305. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  306. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 0-k2m1ncx7hwx.js} +1 -1
  307. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0dnw31436wd~..js → 0-pkmgle2s8u8.js} +1 -1
  308. package/cloud-runtime/standalone/apps/local/.next/static/chunks/064jfmraty.9h.js +1 -0
  309. package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kru5m9q~r.j.js +1 -0
  310. package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kyg1q0bcz6p.js +5 -0
  311. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0_cjth28_11b2.js → 08bdyjcnamzep.js} +1 -1
  312. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-olq~7zw3wjy.js → 08xq~uyr6.eqw.js} +1 -1
  313. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0gj98094p~zn4.js → 0cku81z~3oe6..js} +1 -1
  314. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e7jhy0-52_4k.js +1 -0
  315. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0wh6p5~ft5rma.js → 0htc.sqrk_0.c.js} +1 -1
  316. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ju4xmxwqddw6.js +1 -0
  317. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mm978wb-ueg-.js +6 -0
  318. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0musu8f.4wvxz.js +1 -0
  319. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0bchtyu6m.2yv.js → 0muti0yiyhu0t.js} +1 -1
  320. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rhps884e-bzu.js +1 -0
  321. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rr3fvwc5ind~.js +5 -0
  322. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sbkkjowkksa6.js +1 -0
  323. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sjz0.o9_33qy.js +1 -0
  324. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0srzmg8ivve1g.css +1 -0
  325. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0fonouj2i9qnb.js → 0swo3_e8.4s7j.js} +2 -2
  326. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sysrf3~l~r35.js +1 -0
  327. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0t69h-kc701fn.js +1 -0
  328. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0v67lnh..wj4z.js +1 -0
  329. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{013gtut17~fne.js → 0wb45ol1xrqe~.js} +1 -23
  330. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00po4v2x~0x_z.js → 0wiw2v8gm-k_-.js} +1 -1
  331. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0jq0t4zip38wt.js → 0wopevh0s7.8c.js} +1 -1
  332. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xm2~gxlt1npd.js +1 -0
  333. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1503vb7lb6.g1.js → 0ya124ushze_f.js} +4 -4
  334. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00e1ihnb6ap3t.js → 0zt2o58c5gytn.js} +2 -2
  335. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0~idsggr8vqf5.js +59 -0
  336. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0xu_doej_wc-3.js → 0~mcfx41q4znh.js} +3 -3
  337. package/cloud-runtime/standalone/apps/local/.next/static/chunks/116j4mjz~y42t.js +1 -0
  338. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-vo_x2cxmjm3.js → 12b62py0mq1gm.js} +4 -4
  339. package/cloud-runtime/standalone/apps/local/.next/static/chunks/12y5i0lh6s73o.js +1 -0
  340. package/cloud-runtime/standalone/apps/local/.next/static/chunks/148.mt80civoz.js +20 -0
  341. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14m5d270euu_s.js +1 -0
  342. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16h9208kl5~xa.js +16 -0
  343. package/cloud-runtime/standalone/apps/local/app/agents/[id]/page.tsx +6 -3
  344. package/cloud-runtime/standalone/apps/local/app/agents/page.tsx +3 -3
  345. package/cloud-runtime/standalone/apps/local/app/api/chat/route.ts +7 -1
  346. package/cloud-runtime/standalone/apps/local/app/api/participants/route.ts +9 -9
  347. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/search/route.ts +6 -6
  348. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/teams/route.ts +3 -3
  349. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/agents/route.ts +1 -1
  350. package/cloud-runtime/standalone/apps/local/app/api/schedules/poll/route.ts +11 -2
  351. package/cloud-runtime/standalone/apps/local/app/page.tsx +72 -14
  352. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +34 -1
  353. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.tsx +6 -3
  354. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/page.tsx +6 -3
  355. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/new/page.tsx +8 -17
  356. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/replace/page.tsx +1 -1
  357. package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -0
  358. package/cloud-runtime/standalone/apps/local/app/setup/page.tsx +1 -38
  359. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +8 -4
  360. package/cloud-runtime/standalone/apps/local/components/EmptyStateCard.tsx +37 -0
  361. package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +103 -770
  362. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +5 -37
  363. package/cloud-runtime/standalone/apps/local/components/TeamPickerModal.tsx +3 -3
  364. package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +28 -32
  365. package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +24 -39
  366. package/cloud-runtime/standalone/apps/local/components/linear/LinearBoardFilters.tsx +343 -0
  367. package/cloud-runtime/standalone/apps/local/components/linear/TicketRow.tsx +158 -0
  368. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveHealthTrend.tsx +45 -61
  369. package/cloud-runtime/standalone/apps/local/components/projects/RecentlyCompletedCard.tsx +0 -16
  370. package/cloud-runtime/standalone/apps/local/components/projects/ReplaceAgentsModal.tsx +2 -2
  371. package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +155 -120
  372. package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +85 -88
  373. package/cloud-runtime/standalone/apps/local/components/setup/SetupLayout.tsx +6 -4
  374. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +18 -193
  375. package/cloud-runtime/standalone/apps/local/components/terminal/TerminalPane.tsx +40 -4
  376. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +4 -4
  377. package/cloud-runtime/standalone/apps/local/components/ui/ResizeHandle.tsx +52 -0
  378. package/cloud-runtime/standalone/apps/local/hooks/useAutomations.ts +8 -3
  379. package/cloud-runtime/standalone/apps/local/hooks/useLinearActiveAgents.ts +38 -0
  380. package/cloud-runtime/standalone/apps/local/hooks/useLinearParticipants.ts +118 -0
  381. package/cloud-runtime/standalone/apps/local/hooks/usePromptJobs.ts +5 -3
  382. package/cloud-runtime/standalone/apps/local/hooks/useSetupFlow.ts +6 -81
  383. package/cloud-runtime/standalone/apps/local/lib/agent-participants.ts +1 -1
  384. package/cloud-runtime/standalone/apps/local/lib/agent-process-registry.ts +34 -0
  385. package/cloud-runtime/standalone/apps/local/lib/db.ts +5 -5
  386. package/cloud-runtime/standalone/apps/local/lib/linear-board-utils.ts +9 -0
  387. package/cloud-runtime/standalone/apps/local/lib/linear-run-status.ts +88 -0
  388. package/cloud-runtime/standalone/apps/local/lib/linear-run-store.ts +4 -4
  389. package/cloud-runtime/standalone/apps/local/lib/sqlite-query-adapter.ts +5 -1
  390. package/cloud-runtime/standalone/apps/local/lib/team-catalog.ts +60 -60
  391. package/cloud-runtime/standalone/apps/local/lib/types.ts +1 -1
  392. package/cloud-runtime/standalone/apps/local/migrations/sqlite_schema.sql +1 -1
  393. package/cloud-runtime/standalone/apps/local/skills-lock.json +5 -0
  394. package/cloud-runtime/standalone/apps/local/src/graph/schedule-runner.ts +26 -1
  395. package/cloud-runtime/standalone/apps/local/src/graph/store.ts +13 -0
  396. package/cloud-runtime/standalone/apps/local/state/linearBoardPins.ts +45 -0
  397. package/cloud-runtime/standalone/apps/local/worker/index.js +56 -5
  398. package/lib/cli/onboarding.js +8 -5
  399. package/package.json +1 -1
  400. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_067eb..._.js +0 -3
  401. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_00trrg8._.js +0 -3
  402. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +0 -3
  403. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +0 -3
  404. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0w4gpvr._.js +0 -3
  405. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0x6hh0t._.js +0 -4
  406. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0t6p.qm._.js +0 -3
  407. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-wlbe.ripd2w.css +0 -1
  408. package/cloud-runtime/standalone/apps/local/.next/static/chunks/014z_yruiincl.js +0 -1
  409. package/cloud-runtime/standalone/apps/local/.next/static/chunks/041-dhls9zkl1.js +0 -1
  410. package/cloud-runtime/standalone/apps/local/.next/static/chunks/069yt_7prdxsp.js +0 -1
  411. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e6rxcxy.l5c8.js +0 -1
  412. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ime4btrg-g4l.js +0 -1
  413. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0j-nhn61e~nnj.js +0 -1
  414. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jglardpw~5uc.js +0 -37
  415. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +0 -1
  416. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ng6wy4ak35jg.js +0 -1
  417. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0n~jhoq~op4e5.js +0 -16
  418. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p-rdas54yo~w.js +0 -1
  419. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pdrpsy-zdxp0.js +0 -5
  420. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p~l5ap6qqx2o.js +0 -1
  421. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0tm20~ec~occu.js +0 -1
  422. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0w94x-v00osq0.js +0 -1
  423. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +0 -1
  424. package/cloud-runtime/standalone/apps/local/.next/static/chunks/11l2tww5f0hsk.js +0 -20
  425. package/cloud-runtime/standalone/apps/local/.next/static/chunks/12qohmk-~yrtg.js +0 -1
  426. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +0 -1
  427. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16fyhcmwlw3th.js +0 -6
  428. package/cloud-runtime/standalone/apps/local/.next/static/chunks/18e8w~~mvoh5o.js +0 -1
  429. package/cloud-runtime/standalone/apps/local/components/setup/ProjectStep.tsx +0 -189
  430. package/cloud-runtime/standalone/apps/local/components/setup/TeamsStep.tsx +0 -500
  431. /package/cloud-runtime/standalone/apps/local/.next/static/{qPuactsz6OYimwT6dSdHn → 438GF86gZtccU2fS12URB}/_buildManifest.js +0 -0
  432. /package/cloud-runtime/standalone/apps/local/.next/static/{qPuactsz6OYimwT6dSdHn → 438GF86gZtccU2fS12URB}/_clientMiddlewareManifest.js +0 -0
  433. /package/cloud-runtime/standalone/apps/local/.next/static/{qPuactsz6OYimwT6dSdHn → 438GF86gZtccU2fS12URB}/_ssgManifest.js +0 -0
@@ -2,4 +2,4 @@
2
2
  w-full text-left px-3.5 py-2.5 flex items-center gap-3 transition-colors
3
3
  ${e.disabled?"opacity-35 cursor-not-allowed":""}
4
4
  ${r?"bg-[var(--primary)]/10":"hover:bg-[var(--muted)]/40"}
5
- `,children:[(0,t.jsx)("div",{className:`w-5 h-5 rounded-md flex items-center justify-center flex-shrink-0 border ${r?"bg-[var(--primary)] border-[var(--primary)]":"border-[var(--border)]"}`,children:r&&(0,t.jsx)(n.Check,{className:"w-3 h-3 text-white"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:e.label}),e.meta&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-[var(--muted)]/50 text-[var(--muted-foreground)]",children:e.meta})]}),e.description&&(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:e.description})]})]},e.id)})]})]})]})}])},44054,e=>{"use strict";var t=e.i(271645);let r="(pointer: coarse)",a="(hover: hover)",i="(max-width: 767px)",n="(min-width: 768px)";function o(){if("function"!=typeof window.matchMedia)return{isCoarsePointer:!1,canHover:!0,isPhone:!1,isTablet:!1,isTouchLayout:!1};let e=window.matchMedia(r).matches,t=window.matchMedia(a).matches,o=window.matchMedia(i).matches,s=!o&&window.matchMedia(n).matches,c=e||!t;return{isCoarsePointer:e,canHover:t,isPhone:c&&o,isTablet:c&&s,isTouchLayout:c}}e.s(["useInputCapabilities",0,function(){let[e,s]=(0,t.useState)(o);return(0,t.useEffect)(()=>{if("function"!=typeof window.matchMedia)return;let e=[window.matchMedia(r),window.matchMedia(a),window.matchMedia(i),window.matchMedia(n)],t=()=>{s(o())};return e.forEach(e=>e.addEventListener("change",t)),window.addEventListener("resize",t),t(),()=>{e.forEach(e=>e.removeEventListener("change",t)),window.removeEventListener("resize",t)}},[]),e}])},755838,(e,t,r)=>{"use strict";var a=e.r(271645),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=a.useState,o=a.useEffect,s=a.useLayoutEffect,c=a.useDebugValue;function l(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!i(e,r)}catch(e){return!0}}var u="u"<typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),a=n({inst:{value:r,getSnapshot:t}}),i=a[0].inst,u=a[1];return s(function(){i.value=r,i.getSnapshot=t,l(i)&&u({inst:i})},[e,r,t]),o(function(){return l(i)&&u({inst:i}),e(function(){l(i)&&u({inst:i})})},[e]),c(r),r};r.useSyncExternalStore=void 0!==a.useSyncExternalStore?a.useSyncExternalStore:u},802239,(e,t,r)=>{"use strict";t.exports=e.r(755838)},752822,(e,t,r)=>{"use strict";var a=e.r(271645),i=e.r(802239),n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=i.useSyncExternalStore,s=a.useRef,c=a.useEffect,l=a.useMemo,u=a.useDebugValue;r.useSyncExternalStoreWithSelector=function(e,t,r,a,i){var d=s(null);if(null===d.current){var f={hasValue:!1,value:null};d.current=f}else f=d.current;var p=o(e,(d=l(function(){function e(e){if(!c){if(c=!0,o=e,e=a(e),void 0!==i&&f.hasValue){var t=f.value;if(i(t,e))return s=t}return s=e}if(t=s,n(o,e))return t;var r=a(e);return void 0!==i&&i(t,r)?(o=e,t):(o=e,s=r)}var o,s,c=!1,l=void 0===r?null:r;return[function(){return e(t())},null===l?void 0:function(){return e(l())}]},[t,r,a,i]))[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}},430224,(e,t,r)=>{"use strict";t.exports=e.r(752822)},19035,e=>{"use strict";let t=(0,e.i(363732).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",0,t],19035)},538292,e=>{"use strict";let t=(0,e.i(363732).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",0,t],538292)},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 i={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:o,className:s="",children:c,iconNode:l,...u},d)=>(0,t.createElement)("svg",{ref:d,...i,width:a,height:a,stroke:e,strokeWidth:o?24*Number(n)/Number(a):n,className:r("lucide",s),...!c&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...l.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(c)?c:[c]]));e.s(["default",0,(e,i)=>{let o=(0,t.forwardRef)(({className:o,...s},c)=>(0,t.createElement)(n,{ref:c,iconNode:i,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,o),...s}));return o.displayName=a(e),o}],363732)},797167,e=>{"use strict";let t=(0,e.i(363732).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",0,t],797167)},929870,e=>{"use strict";let t=(0,e.i(363732).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],929870)},524123,e=>{"use strict";var t=e.i(271645);e.s(["useProjects",0,function(){let[e,r]=(0,t.useState)([]),[a,i]=(0,t.useState)(!1),[n,o]=(0,t.useState)(null),s=(0,t.useCallback)(async()=>{i(!0);try{let e=await fetch("/api/projects");if(!e.ok)throw Error("Failed to fetch projects");let t=await e.json();r(t.projects??[]),o(null)}catch(e){o(e instanceof Error?e:Error("Unknown error"))}finally{i(!1)}},[]);(0,t.useEffect)(()=>{s()},[s]);let c=(0,t.useCallback)(async e=>{let t=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to create project");let a=(await t.json()).project;return r(e=>[a,...e]),a},[]);return{projects:e,isLoading:a,error:n,refetch:s,createProject:c,updateProject:(0,t.useCallback)(async(e,t)=>{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Failed to update project");let i=(await a.json()).project;return r(t=>t.map(t=>t.id===e?i:t)),i},[]),deleteProject:(0,t.useCallback)(async e=>{let t=await fetch(`/api/projects/${e}`,{method:"DELETE"});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to delete project");r(t=>t.filter(t=>t.id!==e))},[])}},"useProjectsWithAgents",0,function(){let[e,r]=(0,t.useState)([]),[a,i]=(0,t.useState)(!0),n=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/projects");if(!e.ok)return;let{projects:t}=await e.json(),a=await Promise.all((t??[]).map(async e=>{let t=[],r=[];try{let[a,i]=await Promise.all([fetch(`/api/projects/${e.id}/agents`),fetch(`/api/projects/${e.id}/threads`)]);a.ok&&(t=(await a.json()).agents??[]),i.ok&&(r=((await i.json()).threads??[]).map(e=>e.thread_id))}catch{}return{...e,repos:e.repos??[],agents:t.map(t=>({project_id:e.id,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at})),thread_ids:r,workspace_ids:r}}));r(a)}catch{}finally{i(!1)}},[]);(0,t.useEffect)(()=>{n()},[n]);let o=(0,t.useCallback)(async(e,t)=>{try{let a="string"==typeof e?{name:e}:e,i=a.name.trim(),n=(a.slug||i.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),o=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,name:i,slug:n})});if(!o.ok)return null;let{project:s}=await o.json(),c=Array.isArray(t)?t:t?[t]:[];for(let e of c)await fetch(`/api/projects/${s.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e})}).catch(e=>console.warn("[useProjects] link thread failed:",e));let l={...s,repos:s.repos??[],agents:[],thread_ids:c,workspace_ids:c};return r(e=>[...e,l].sort((e,t)=>e.name.localeCompare(t.name))),l}catch{return null}},[]),s=(0,t.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})).ok)return;r(r=>r.map(r=>r.id===e?{...r,name:t}:r).sort((e,t)=>e.name.localeCompare(t.name)))}catch{}},[]),c=(0,t.useCallback)(async e=>{try{if(!(await fetch(`/api/projects/${e}`,{method:"DELETE"})).ok)return;r(t=>t.filter(t=>t.id!==e))}catch{}},[]),l=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.error||"Failed to update project")}let i=(await a.json()).project;return r(t=>t.map(t=>t.id===e?{...t,...i,repos:i.repos??t.repos}:t)),i}catch{return null}},[]),u=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:t})});if(!a.ok)return;let i=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:i}:t))}catch{}},[]),d=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents?agentId=${t}`,{method:"DELETE"});if(!a.ok)return;let i=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:i}:t))}catch{}},[]);return{projects:e,isLoading:a,createProject:o,updateProject:l,renameProject:s,deleteProject:c,addAgent:u,removeAgent:d,reorderAgents:(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedAgentIds:t})});if(!a.ok)return;let i=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:i}:t))}catch{}},[]),moveAgent:(0,t.useCallback)(async(e,t,r)=>{try{await fetch(`/api/projects/${t}/agents?agentId=${e}`,{method:"DELETE"}),await fetch(`/api/projects/${r}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e})}),await n()}catch{}},[n]),refresh:n}}])},169610,e=>{"use strict";let t=(0,e.i(363732).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",0,t],169610)},519132,e=>{"use strict";let t=(0,e.i(363732).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);e.s(["Sparkles",0,t],519132)},195057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return s},formatWithValidation:function(){return l},urlObjectKeys:function(){return c}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let n=e.r(190809)._(e.r(998183)),o=/https?|ftp|gopher|file/;function s(e){let{auth:t,hostname:r}=e,a=e.protocol||"",i=e.pathname||"",s=e.hash||"",c=e.query||"",l=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?l=t+e.host:r&&(l=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(l+=":"+e.port)),c&&"object"==typeof c&&(c=String(n.urlQueryToSearchParams(c)));let u=e.search||c&&`?${c}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==l?(l="//"+(l||""),i&&"/"!==i[0]&&(i="/"+i)):l||(l=""),s&&"#"!==s[0]&&(s="#"+s),u&&"?"!==u[0]&&(u="?"+u),i=i.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${a}${l}${i}${u}${s}`}let c=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function l(e){return s(e)}},818581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return i}});let a=e.r(271645);function i(e,t){let r=(0,a.useRef)(null),i=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=i.current;t&&(i.current=null,t())}else e&&(r.current=n(e,a)),t&&(i.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),i=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,i.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 j}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let n=e.r(190809),o=e.r(843476),s=n._(e.r(271645)),c=e.r(195057),l=e.r(8372),u=e.r(818581),d=e.r(718967),f=e.r(405550);e.r(233525);let p=e.r(388540),h=e.r(91949),y=e.r(573668),m=e.r(509396);function v(t){var r,a;let i,n,v,[j,g]=(0,s.useOptimistic)(h.IDLE_LINK_STATUS),w=(0,s.useRef)(null),{href:k,as:_,children:x,prefetch:S=null,passHref:C,replace:T,shallow:P,scroll:O,onClick:A,onMouseEnter:E,onTouchStart:L,legacyBehavior:M=!1,onNavigate:I,transitionTypes:N,ref:$,unstable_dynamicOnHover:U,...W}=t;i=x,M&&("string"==typeof i||"number"==typeof i)&&(i=(0,o.jsx)("a",{children:i}));let R=s.default.useContext(l.AppRouterContext),D=!1!==S,H=!1!==S?null===(a=S)||"auto"===a?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,V="string"==typeof(r=_||k)?r:(0,c.formatUrl)(r);if(M){if(i?.$$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=s.default.Children.only(i)}let F=M?n&&"object"==typeof n&&n.ref:$,B=s.default.useCallback(e=>(null!==R&&(w.current=(0,h.mountLinkInstance)(e,V,R,H,D,g)),()=>{w.current&&((0,h.unmountLinkForCurrentNavigation)(w.current),w.current=null),(0,h.unmountPrefetchableInstance)(e)}),[D,V,R,H,g]),J={ref:(0,u.useMergedRef)(B,F),onClick(t){M||"function"!=typeof A||A(t),M&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!R||t.defaultPrevented||function(t,r,a,i,n,o,c){if("u">typeof window){let l,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((l=t.currentTarget.getAttribute("target"))&&"_self"!==l||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,y.isLocalURL)(r)){i&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),o){let e=!1;if(o({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(699781);s.default.startTransition(()=>{d(r,i?"replace":"push",!1===n?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,a.current,c)})}}(t,V,w,T,O,I,N)},onMouseEnter(e){M||"function"!=typeof E||E(e),M&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),R&&D&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){M||"function"!=typeof L||L(e),M&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),R&&D&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,d.isAbsoluteUrl)(V)?J.href=V:M&&!C&&("a"!==n.type||"href"in n.props)||(J.href=(0,f.addBasePath)(V)),v=M?s.default.cloneElement(n,J):(0,o.jsx)("a",{...W,...J,children:i}),(0,o.jsx)(b.Provider,{value:j,children:v})}e.r(284508);let b=(0,s.createContext)(h.IDLE_LINK_STATUS),j=()=>(0,s.useContext)(b);("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)},810605,e=>{"use strict";e.s(["GRAPH_TIMEOUT_DEFAULT_MS",0,864e5,"NODE_TIMEOUT_DEFAULT_MS",0,18e5,"UI_POLL_CHAT_ALT_MS",0,15e3,"UI_POLL_CHAT_CHECK_MS",0,1e4,"UI_POLL_DB_HEALTH_MS",0,3e4,"UI_POLL_PROMPT_RUNS_MS",0,5e3,"UI_POLL_SYSTEM_STATUS_MS",0,3e4,"UI_POLL_TASK_DURATION_MS",0,6e4])},196630,e=>{"use strict";let t=(0,e.i(363732).default)("folder-git-2",[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);e.s(["FolderGit2",0,t],196630)},55236,e=>{"use strict";let t=(0,e.i(363732).default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);e.s(["Folder",0,t],55236)},169433,e=>{"use strict";let t="agx:windowState",r={workspaceWidth:260,logPanelHeight:200,workspaceVisible:!0,logPanelVisible:!1,linearTicketPanelWidth:576,linearRunsPanelWidth:224,objectiveChatPanelWidth:440,objectiveListPanelWidth:320},a={lastThreadId:null,lastWorkspaceId:null},i={bounds:null,sidebar:r,scroll:a};function n(){return void 0!==window.localStorage}function o(){if(!n())return{...i};let e=window.localStorage.getItem(t);if(!e)return{...i};try{let t=JSON.parse(e);return{bounds:t.bounds||null,sidebar:{...r,...t.sidebar||{}},scroll:{...a,...t.scroll||{}}}}catch{return{...i}}}function s(){return o().sidebar}function c(e){let r=o();r.sidebar={...r.sidebar,...e};if(n())try{window.localStorage.setItem(t,JSON.stringify(r))}catch{}}e.s(["loadLinearRunsPanelWidth",0,function(){return s().linearRunsPanelWidth},"loadLinearTicketPanelWidth",0,function(){return s().linearTicketPanelWidth},"loadObjectiveChatPanelWidth",0,function(){return s().objectiveChatPanelWidth},"loadObjectiveListPanelWidth",0,function(){return s().objectiveListPanelWidth},"loadWorkspaceWidth",0,function(){return s().workspaceWidth},"persistLinearRunsPanelWidth",0,function(e){c({linearRunsPanelWidth:e})},"persistLinearTicketPanelWidth",0,function(e){c({linearTicketPanelWidth:e})},"persistObjectiveChatPanelWidth",0,function(e){c({objectiveChatPanelWidth:e})},"persistObjectiveListPanelWidth",0,function(e){c({objectiveListPanelWidth:e})},"persistWorkspaceWidth",0,function(e){c({workspaceWidth:e})}])},902572,e=>{"use strict";let t="project_objectives_workspace",r="project_goals_workspace",a=new Set(["on_track","at_risk","off_track","done"]);function i(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function n(e){return`${e}_${Math.random().toString(36).slice(2,10)}`}function o(e){return[...e].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))}function s(e){return[...e].sort((e,t)=>Date.parse(e.createdAt)-Date.parse(t.createdAt))}function c(e){return[...e].sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}function l(e,t=""){return"string"==typeof e?e:t}function u(e){return Array.isArray(e)?Array.from(new Set(e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[]}function d(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let r=Date.parse(e);return Number.isNaN(r)?t:new Date(r).toISOString()}function f(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function p(e,t=0){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.floor(e)):t}function h(e,t="objective"){let r=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,32);return r||t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"objective"}function y(e,t,r="objective"){let a=h(r),i=h(e,a),n=i,o=2;for(;t.has(n);){let e=`-${o}`,t=Math.max(1,32-e.length);n=`${i.slice(0,t)}${e}`,o+=1}return t.add(n),n}function m(e){var t;if(!i(e))return null;let r=d(e.updatedAt??e.createdAt),o=d(e.createdAt,r);return{id:l(e.id,n("objective")),title:l(e.title,"Untitled objective"),teamId:l(e.teamId??e.team_id??e.ownerTeamId),key:h(l(e.key??e.slug??e.label),l(e.title??e.id,"objective")),threadId:l(e.threadId)||null,chatSessionVersion:p(e.chatSessionVersion,0),scheduledTaskIds:u(e.scheduledTaskIds??e.promptJobIds),summary:l(e.summary),progress:f(e.progress),status:"string"==typeof(t=e.status)&&a.has(t)?t:"on_track",createdAt:o,updatedAt:r}}function v(e){if(!i(e))return null;let t=d(e.updatedAt??e.createdAt),r=d(e.createdAt,t),a=l(e.objectiveId??e.goalId);return a?{id:l(e.id,n("objective_activity")),objectiveId:a,sourceType:"note",sourceLabel:l(e.sourceLabel,"Update"),title:l(e.title,"Untitled activity"),body:l(e.body),createdAt:r,updatedAt:t,relatedTaskId:l(e.relatedTaskId)||null}:null}function b(e){if(!i(e))return null;let t=l(e.activityId);return t?{id:l(e.id,n("objective_thread_message")),activityId:t,author:l(e.author,"You"),body:l(e.body),createdAt:d(e.createdAt)}:null}function j(){return{objectives:[],activities:[],activityThreads:{}}}function g(e){let t;if(!i(e))return j();let r=Array.isArray(e.objectives)?e.objectives.map(e=>m(e)).filter(e=>null!==e):[],a=Array.isArray(e.activities)?e.activities.map(e=>v(e)).filter(e=>null!==e):[],n=i(e.activityThreads)?Object.fromEntries(Object.entries(e.activityThreads).map(([e,t])=>[e,s(Array.isArray(t)?t.map(e=>b(e)).filter(e=>null!==e):[])])):{};return{objectives:o((t=new Set,r.map(e=>{let r=y(e.key||e.title||e.id,t,e.id||e.title||"objective");return e.key===r?e:{...e,key:r}}))),activities:c(a),activityThreads:n}}e.s(["CURRENT_OBJECTIVE_CHAT_SESSION_VERSION",0,2,"buildObjectiveTimelineActivities",0,function({objective:e,workspace:t}){return t.activities.filter(t=>t.objectiveId===e.id).map(e=>({...e,threadCount:t.activityThreads[e.id]?.length??0})).sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))},"createProjectObjective",0,function(e){return{id:e.id??n("objective"),title:e.title.trim(),teamId:e.teamId.trim(),key:h(e.key?.trim()??e.title.trim(),e.id??e.title),threadId:"string"==typeof e.threadId&&e.threadId.trim()?e.threadId.trim():null,chatSessionVersion:p(e.chatSessionVersion??2,2),scheduledTaskIds:u(e.scheduledTaskIds??[]),summary:e.summary?.trim()??"",progress:f(e.progress??0),status:e.status??"on_track",createdAt:e.now,updatedAt:e.now}},"generateProjectObjectiveKey",0,function(e,t,r){return y(e,new Set(t.filter(e=>e.id!==r).map(e=>h(e.key||e.title||e.id))),r??e)},"readProjectObjectivesWorkspace",0,function(e){if(!i(e))return j();let a=e[t];if(void 0!==a){let e=g(a);if(e.objectives.length>0||e.activities.length>0||Object.keys(e.activityThreads).length>0)return e}let n=e[r];if(void 0!==n){if(!i(n))return j();let e=Array.isArray(n.goals)?n.goals.map(e=>(function(e){if(!i(e))return null;let t=l(e.target),r=[l(e.summary),t?`Measure: ${t}`:""].filter(Boolean).join("\n\n");return m({...e,summary:r})})(e)).filter(e=>null!==e):[],t=Array.isArray(n.manualActivities)?n.manualActivities.map(e=>v({...e,sourceLabel:"Update"})).filter(e=>null!==e):[],r=i(n.activityThreads)?Object.fromEntries(Object.entries(n.activityThreads).map(([e,t])=>[e,s(Array.isArray(t)?t.map(t=>b({...t,activityId:e})).filter(e=>null!==e):[])])):{};return{objectives:o(e),activities:c(t),activityThreads:r}}return j()},"removeProjectObjective",0,function(e,t){let r=new Set(e.activities.filter(e=>e.objectiveId===t).map(e=>e.id)),a=Object.fromEntries(Object.entries(e.activityThreads).filter(([e])=>!r.has(e)));return{objectives:e.objectives.filter(e=>e.id!==t),activities:e.activities.filter(e=>e.objectiveId!==t),activityThreads:a}},"upsertProjectObjective",0,function(e,t){let r=e.objectives.findIndex(e=>e.id===t.id)>=0?e.objectives.map(e=>e.id===t.id?t:e):[t,...e.objectives];return{...e,objectives:o(r)}},"writeProjectObjectivesWorkspace",0,function(e,a){let i={...e};return delete i[r],i[t]=g(a),i}])},644660,e=>{"use strict";var t=e.i(843476);e.s(["LinearIcon",0,function({size:e=16,...r}){return(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 100 100",fill:"currentColor",...r,children:(0,t.jsx)("path",{d:"M1.22541 61.5228c-.2225-.9485.90748-1.5459 1.59638-.857L39.3342 97.1782c.6889.6889.0915 1.8189-.857 1.5964C20.0515 94.4522 5.54779 79.9485 1.22541 61.5228ZM.00189135 46.8891c-.01764375.2833.08887215.5599.28957165.7606L52.3503 99.7085c.2007.2007.4773.3075.7606.2896 2.3692-.1476 4.6938-.46 6.9624-.9259.7645-.157 1.0301-1.0963.4782-1.6481L2.57595 39.4485c-.55186-.5519-1.49117-.2863-1.648174.4782-.465915 2.2686-.77832 4.5932-.92588465 6.9624ZM4.21093 29.7054c-.16649.3738-.08169.8106.20765 1.1l64.77602 64.776c.2894.2894.7262.3742 1.1.2077 1.7861-.7956 3.5171-1.6927 5.1855-2.684.5521-.328.6373-1.0867.1832-1.5407L8.43566 24.3367c-.45409-.4541-1.21271-.3689-1.54074.1832-.99132 1.6684-1.88843 3.3994-2.68399 5.1855ZM12.6587 18.074c-.3701-.3701-.393-.9637-.0443-1.3541C21.7795 6.45931 35.1114 0 49.9519 0 77.5927 0 100 22.4073 100 50.0481c0 14.8405-6.4593 28.1724-16.7199 37.3375-.3903.3487-.984.3258-1.3542-.0443L12.6587 18.074Z"})})}])}]);
5
+ `,children:[(0,t.jsx)("div",{className:`w-5 h-5 rounded-md flex items-center justify-center flex-shrink-0 border ${r?"bg-[var(--primary)] border-[var(--primary)]":"border-[var(--border)]"}`,children:r&&(0,t.jsx)(n.Check,{className:"w-3 h-3 text-white"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:e.label}),e.meta&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-[var(--muted)]/50 text-[var(--muted-foreground)]",children:e.meta})]}),e.description&&(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:e.description})]})]},e.id)})]})]})]})}])},44054,e=>{"use strict";var t=e.i(271645);let r="(pointer: coarse)",a="(hover: hover)",i="(max-width: 767px)",n="(min-width: 768px)";function o(){if("function"!=typeof window.matchMedia)return{isCoarsePointer:!1,canHover:!0,isPhone:!1,isTablet:!1,isTouchLayout:!1};let e=window.matchMedia(r).matches,t=window.matchMedia(a).matches,o=window.matchMedia(i).matches,s=!o&&window.matchMedia(n).matches,c=e||!t;return{isCoarsePointer:e,canHover:t,isPhone:c&&o,isTablet:c&&s,isTouchLayout:c}}e.s(["useInputCapabilities",0,function(){let[e,s]=(0,t.useState)(o);return(0,t.useEffect)(()=>{if("function"!=typeof window.matchMedia)return;let e=[window.matchMedia(r),window.matchMedia(a),window.matchMedia(i),window.matchMedia(n)],t=()=>{s(o())};return e.forEach(e=>e.addEventListener("change",t)),window.addEventListener("resize",t),t(),()=>{e.forEach(e=>e.removeEventListener("change",t)),window.removeEventListener("resize",t)}},[]),e}])},755838,(e,t,r)=>{"use strict";var a=e.r(271645),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=a.useState,o=a.useEffect,s=a.useLayoutEffect,c=a.useDebugValue;function l(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!i(e,r)}catch(e){return!0}}var u="u"<typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),a=n({inst:{value:r,getSnapshot:t}}),i=a[0].inst,u=a[1];return s(function(){i.value=r,i.getSnapshot=t,l(i)&&u({inst:i})},[e,r,t]),o(function(){return l(i)&&u({inst:i}),e(function(){l(i)&&u({inst:i})})},[e]),c(r),r};r.useSyncExternalStore=void 0!==a.useSyncExternalStore?a.useSyncExternalStore:u},802239,(e,t,r)=>{"use strict";t.exports=e.r(755838)},752822,(e,t,r)=>{"use strict";var a=e.r(271645),i=e.r(802239),n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=i.useSyncExternalStore,s=a.useRef,c=a.useEffect,l=a.useMemo,u=a.useDebugValue;r.useSyncExternalStoreWithSelector=function(e,t,r,a,i){var d=s(null);if(null===d.current){var f={hasValue:!1,value:null};d.current=f}else f=d.current;var p=o(e,(d=l(function(){function e(e){if(!c){if(c=!0,o=e,e=a(e),void 0!==i&&f.hasValue){var t=f.value;if(i(t,e))return s=t}return s=e}if(t=s,n(o,e))return t;var r=a(e);return void 0!==i&&i(t,r)?(o=e,t):(o=e,s=r)}var o,s,c=!1,l=void 0===r?null:r;return[function(){return e(t())},null===l?void 0:function(){return e(l())}]},[t,r,a,i]))[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}},430224,(e,t,r)=>{"use strict";t.exports=e.r(752822)},538292,e=>{"use strict";let t=(0,e.i(363732).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",0,t],538292)},19035,e=>{"use strict";let t=(0,e.i(363732).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",0,t],19035)},797167,e=>{"use strict";let t=(0,e.i(363732).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",0,t],797167)},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 i={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:o,className:s="",children:c,iconNode:l,...u},d)=>(0,t.createElement)("svg",{ref:d,...i,width:a,height:a,stroke:e,strokeWidth:o?24*Number(n)/Number(a):n,className:r("lucide",s),...!c&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...l.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(c)?c:[c]]));e.s(["default",0,(e,i)=>{let o=(0,t.forwardRef)(({className:o,...s},c)=>(0,t.createElement)(n,{ref:c,iconNode:i,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,o),...s}));return o.displayName=a(e),o}],363732)},929870,e=>{"use strict";let t=(0,e.i(363732).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],929870)},524123,e=>{"use strict";var t=e.i(271645);e.s(["useProjects",0,function(){let[e,r]=(0,t.useState)([]),[a,i]=(0,t.useState)(!1),[n,o]=(0,t.useState)(null),s=(0,t.useCallback)(async()=>{i(!0);try{let e=await fetch("/api/projects");if(!e.ok)throw Error("Failed to fetch projects");let t=await e.json();r(t.projects??[]),o(null)}catch(e){o(e instanceof Error?e:Error("Unknown error"))}finally{i(!1)}},[]);(0,t.useEffect)(()=>{s()},[s]);let c=(0,t.useCallback)(async e=>{let t=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to create project");let a=(await t.json()).project;return r(e=>[a,...e]),a},[]);return{projects:e,isLoading:a,error:n,refetch:s,createProject:c,updateProject:(0,t.useCallback)(async(e,t)=>{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Failed to update project");let i=(await a.json()).project;return r(t=>t.map(t=>t.id===e?i:t)),i},[]),deleteProject:(0,t.useCallback)(async e=>{let t=await fetch(`/api/projects/${e}`,{method:"DELETE"});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to delete project");r(t=>t.filter(t=>t.id!==e))},[])}},"useProjectsWithAgents",0,function(){let[e,r]=(0,t.useState)([]),[a,i]=(0,t.useState)(!0),n=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/projects");if(!e.ok)return;let{projects:t}=await e.json(),a=await Promise.all((t??[]).map(async e=>{let t=[],r=[];try{let[a,i]=await Promise.all([fetch(`/api/projects/${e.id}/agents`),fetch(`/api/projects/${e.id}/threads`)]);a.ok&&(t=(await a.json()).agents??[]),i.ok&&(r=((await i.json()).threads??[]).map(e=>e.thread_id))}catch{}return{...e,repos:e.repos??[],agents:t.map(t=>({project_id:e.id,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at})),thread_ids:r,workspace_ids:r}}));r(a)}catch{}finally{i(!1)}},[]);(0,t.useEffect)(()=>{n()},[n]);let o=(0,t.useCallback)(async(e,t)=>{try{let a="string"==typeof e?{name:e}:e,i=a.name.trim(),n=(a.slug||i.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),o=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,name:i,slug:n})});if(!o.ok)return null;let{project:s}=await o.json(),c=Array.isArray(t)?t:t?[t]:[];for(let e of c)await fetch(`/api/projects/${s.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e})}).catch(e=>console.warn("[useProjects] link thread failed:",e));let l={...s,repos:s.repos??[],agents:[],thread_ids:c,workspace_ids:c};return r(e=>[...e,l].sort((e,t)=>e.name.localeCompare(t.name))),l}catch{return null}},[]),s=(0,t.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})).ok)return;r(r=>r.map(r=>r.id===e?{...r,name:t}:r).sort((e,t)=>e.name.localeCompare(t.name)))}catch{}},[]),c=(0,t.useCallback)(async e=>{try{if(!(await fetch(`/api/projects/${e}`,{method:"DELETE"})).ok)return;r(t=>t.filter(t=>t.id!==e))}catch{}},[]),l=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.error||"Failed to update project")}let i=(await a.json()).project;return r(t=>t.map(t=>t.id===e?{...t,...i,repos:i.repos??t.repos}:t)),i}catch{return null}},[]),u=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:t})});if(!a.ok)return;let i=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:i}:t))}catch{}},[]),d=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents?agentId=${t}`,{method:"DELETE"});if(!a.ok)return;let i=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:i}:t))}catch{}},[]);return{projects:e,isLoading:a,createProject:o,updateProject:l,renameProject:s,deleteProject:c,addAgent:u,removeAgent:d,reorderAgents:(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedAgentIds:t})});if(!a.ok)return;let i=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:i}:t))}catch{}},[]),moveAgent:(0,t.useCallback)(async(e,t,r)=>{try{await fetch(`/api/projects/${t}/agents?agentId=${e}`,{method:"DELETE"}),await fetch(`/api/projects/${r}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e})}),await n()}catch{}},[n]),refresh:n}}])},169610,e=>{"use strict";let t=(0,e.i(363732).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",0,t],169610)},519132,e=>{"use strict";let t=(0,e.i(363732).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);e.s(["Sparkles",0,t],519132)},195057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return s},formatWithValidation:function(){return l},urlObjectKeys:function(){return c}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let n=e.r(190809)._(e.r(998183)),o=/https?|ftp|gopher|file/;function s(e){let{auth:t,hostname:r}=e,a=e.protocol||"",i=e.pathname||"",s=e.hash||"",c=e.query||"",l=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?l=t+e.host:r&&(l=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(l+=":"+e.port)),c&&"object"==typeof c&&(c=String(n.urlQueryToSearchParams(c)));let u=e.search||c&&`?${c}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==l?(l="//"+(l||""),i&&"/"!==i[0]&&(i="/"+i)):l||(l=""),s&&"#"!==s[0]&&(s="#"+s),u&&"?"!==u[0]&&(u="?"+u),i=i.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${a}${l}${i}${u}${s}`}let c=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function l(e){return s(e)}},818581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return i}});let a=e.r(271645);function i(e,t){let r=(0,a.useRef)(null),i=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=i.current;t&&(i.current=null,t())}else e&&(r.current=n(e,a)),t&&(i.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),i=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,i.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 j}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let n=e.r(190809),o=e.r(843476),s=n._(e.r(271645)),c=e.r(195057),l=e.r(8372),u=e.r(818581),d=e.r(718967),f=e.r(405550);e.r(233525);let p=e.r(388540),h=e.r(91949),y=e.r(573668),m=e.r(509396);function v(t){var r,a;let i,n,v,[j,g]=(0,s.useOptimistic)(h.IDLE_LINK_STATUS),w=(0,s.useRef)(null),{href:k,as:_,children:x,prefetch:S=null,passHref:C,replace:T,shallow:P,scroll:O,onClick:A,onMouseEnter:E,onTouchStart:L,legacyBehavior:M=!1,onNavigate:I,transitionTypes:N,ref:$,unstable_dynamicOnHover:U,...W}=t;i=x,M&&("string"==typeof i||"number"==typeof i)&&(i=(0,o.jsx)("a",{children:i}));let R=s.default.useContext(l.AppRouterContext),D=!1!==S,H=!1!==S?null===(a=S)||"auto"===a?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,V="string"==typeof(r=_||k)?r:(0,c.formatUrl)(r);if(M){if(i?.$$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=s.default.Children.only(i)}let F=M?n&&"object"==typeof n&&n.ref:$,B=s.default.useCallback(e=>(null!==R&&(w.current=(0,h.mountLinkInstance)(e,V,R,H,D,g)),()=>{w.current&&((0,h.unmountLinkForCurrentNavigation)(w.current),w.current=null),(0,h.unmountPrefetchableInstance)(e)}),[D,V,R,H,g]),J={ref:(0,u.useMergedRef)(B,F),onClick(t){M||"function"!=typeof A||A(t),M&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!R||t.defaultPrevented||function(t,r,a,i,n,o,c){if("u">typeof window){let l,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((l=t.currentTarget.getAttribute("target"))&&"_self"!==l||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,y.isLocalURL)(r)){i&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),o){let e=!1;if(o({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(699781);s.default.startTransition(()=>{d(r,i?"replace":"push",!1===n?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,a.current,c)})}}(t,V,w,T,O,I,N)},onMouseEnter(e){M||"function"!=typeof E||E(e),M&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),R&&D&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){M||"function"!=typeof L||L(e),M&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),R&&D&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,d.isAbsoluteUrl)(V)?J.href=V:M&&!C&&("a"!==n.type||"href"in n.props)||(J.href=(0,f.addBasePath)(V)),v=M?s.default.cloneElement(n,J):(0,o.jsx)("a",{...W,...J,children:i}),(0,o.jsx)(b.Provider,{value:j,children:v})}e.r(284508);let b=(0,s.createContext)(h.IDLE_LINK_STATUS),j=()=>(0,s.useContext)(b);("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)},810605,e=>{"use strict";e.s(["GRAPH_TIMEOUT_DEFAULT_MS",0,864e5,"NODE_TIMEOUT_DEFAULT_MS",0,18e5,"UI_POLL_CHAT_ALT_MS",0,15e3,"UI_POLL_CHAT_CHECK_MS",0,1e4,"UI_POLL_DB_HEALTH_MS",0,3e4,"UI_POLL_PROMPT_RUNS_MS",0,5e3,"UI_POLL_SYSTEM_STATUS_MS",0,3e4,"UI_POLL_TASK_DURATION_MS",0,6e4])},196630,e=>{"use strict";let t=(0,e.i(363732).default)("folder-git-2",[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);e.s(["FolderGit2",0,t],196630)},55236,e=>{"use strict";let t=(0,e.i(363732).default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);e.s(["Folder",0,t],55236)},169433,e=>{"use strict";let t="agx:windowState",r={workspaceWidth:260,logPanelHeight:200,workspaceVisible:!0,logPanelVisible:!1,linearTicketPanelWidth:576,linearRunsPanelWidth:224,objectiveChatPanelWidth:440,objectiveListPanelWidth:320},a={lastThreadId:null,lastWorkspaceId:null},i={bounds:null,sidebar:r,scroll:a};function n(){return void 0!==window.localStorage}function o(){if(!n())return{...i};let e=window.localStorage.getItem(t);if(!e)return{...i};try{let t=JSON.parse(e);return{bounds:t.bounds||null,sidebar:{...r,...t.sidebar||{}},scroll:{...a,...t.scroll||{}}}}catch{return{...i}}}function s(){return o().sidebar}function c(e){let r=o();r.sidebar={...r.sidebar,...e};if(n())try{window.localStorage.setItem(t,JSON.stringify(r))}catch{}}e.s(["loadLinearRunsPanelWidth",0,function(){return s().linearRunsPanelWidth},"loadLinearTicketPanelWidth",0,function(){return s().linearTicketPanelWidth},"loadObjectiveChatPanelWidth",0,function(){return s().objectiveChatPanelWidth},"loadObjectiveListPanelWidth",0,function(){return s().objectiveListPanelWidth},"loadWorkspaceWidth",0,function(){return s().workspaceWidth},"persistLinearRunsPanelWidth",0,function(e){c({linearRunsPanelWidth:e})},"persistLinearTicketPanelWidth",0,function(e){c({linearTicketPanelWidth:e})},"persistObjectiveChatPanelWidth",0,function(e){c({objectiveChatPanelWidth:e})},"persistObjectiveListPanelWidth",0,function(e){c({objectiveListPanelWidth:e})},"persistWorkspaceWidth",0,function(e){c({workspaceWidth:e})}])},902572,e=>{"use strict";let t="project_objectives_workspace",r="project_goals_workspace",a=new Set(["on_track","at_risk","off_track","done"]);function i(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function n(e){return`${e}_${Math.random().toString(36).slice(2,10)}`}function o(e){return[...e].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))}function s(e){return[...e].sort((e,t)=>Date.parse(e.createdAt)-Date.parse(t.createdAt))}function c(e){return[...e].sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}function l(e,t=""){return"string"==typeof e?e:t}function u(e){return Array.isArray(e)?Array.from(new Set(e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[]}function d(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let r=Date.parse(e);return Number.isNaN(r)?t:new Date(r).toISOString()}function f(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function p(e,t=0){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.floor(e)):t}function h(e,t="objective"){let r=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,32);return r||t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"objective"}function y(e,t,r="objective"){let a=h(r),i=h(e,a),n=i,o=2;for(;t.has(n);){let e=`-${o}`,t=Math.max(1,32-e.length);n=`${i.slice(0,t)}${e}`,o+=1}return t.add(n),n}function m(e){var t;if(!i(e))return null;let r=d(e.updatedAt??e.createdAt),o=d(e.createdAt,r);return{id:l(e.id,n("objective")),title:l(e.title,"Untitled objective"),teamId:l(e.teamId??e.team_id??e.ownerTeamId),key:h(l(e.key??e.slug??e.label),l(e.title??e.id,"objective")),threadId:l(e.threadId)||null,chatSessionVersion:p(e.chatSessionVersion,0),scheduledTaskIds:u(e.scheduledTaskIds??e.promptJobIds),summary:l(e.summary),progress:f(e.progress),status:"string"==typeof(t=e.status)&&a.has(t)?t:"on_track",createdAt:o,updatedAt:r}}function v(e){if(!i(e))return null;let t=d(e.updatedAt??e.createdAt),r=d(e.createdAt,t),a=l(e.objectiveId??e.goalId);return a?{id:l(e.id,n("objective_activity")),objectiveId:a,sourceType:"note",sourceLabel:l(e.sourceLabel,"Update"),title:l(e.title,"Untitled activity"),body:l(e.body),createdAt:r,updatedAt:t,relatedTaskId:l(e.relatedTaskId)||null}:null}function b(e){if(!i(e))return null;let t=l(e.activityId);return t?{id:l(e.id,n("objective_thread_message")),activityId:t,author:l(e.author,"You"),body:l(e.body),createdAt:d(e.createdAt)}:null}function j(){return{objectives:[],activities:[],activityThreads:{}}}function g(e){let t;if(!i(e))return j();let r=Array.isArray(e.objectives)?e.objectives.map(e=>m(e)).filter(e=>null!==e):[],a=Array.isArray(e.activities)?e.activities.map(e=>v(e)).filter(e=>null!==e):[],n=i(e.activityThreads)?Object.fromEntries(Object.entries(e.activityThreads).map(([e,t])=>[e,s(Array.isArray(t)?t.map(e=>b(e)).filter(e=>null!==e):[])])):{};return{objectives:o((t=new Set,r.map(e=>{let r=y(e.key||e.title||e.id,t,e.id||e.title||"objective");return e.key===r?e:{...e,key:r}}))),activities:c(a),activityThreads:n}}e.s(["CURRENT_OBJECTIVE_CHAT_SESSION_VERSION",0,2,"buildObjectiveTimelineActivities",0,function({objective:e,workspace:t}){return t.activities.filter(t=>t.objectiveId===e.id).map(e=>({...e,threadCount:t.activityThreads[e.id]?.length??0})).sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))},"createProjectObjective",0,function(e){return{id:e.id??n("objective"),title:e.title.trim(),teamId:e.teamId.trim(),key:h(e.key?.trim()??e.title.trim(),e.id??e.title),threadId:"string"==typeof e.threadId&&e.threadId.trim()?e.threadId.trim():null,chatSessionVersion:p(e.chatSessionVersion??2,2),scheduledTaskIds:u(e.scheduledTaskIds??[]),summary:e.summary?.trim()??"",progress:f(e.progress??0),status:e.status??"on_track",createdAt:e.now,updatedAt:e.now}},"generateProjectObjectiveKey",0,function(e,t,r){return y(e,new Set(t.filter(e=>e.id!==r).map(e=>h(e.key||e.title||e.id))),r??e)},"readProjectObjectivesWorkspace",0,function(e){if(!i(e))return j();let a=e[t];if(void 0!==a){let e=g(a);if(e.objectives.length>0||e.activities.length>0||Object.keys(e.activityThreads).length>0)return e}let n=e[r];if(void 0!==n){if(!i(n))return j();let e=Array.isArray(n.goals)?n.goals.map(e=>(function(e){if(!i(e))return null;let t=l(e.target),r=[l(e.summary),t?`Measure: ${t}`:""].filter(Boolean).join("\n\n");return m({...e,summary:r})})(e)).filter(e=>null!==e):[],t=Array.isArray(n.manualActivities)?n.manualActivities.map(e=>v({...e,sourceLabel:"Update"})).filter(e=>null!==e):[],r=i(n.activityThreads)?Object.fromEntries(Object.entries(n.activityThreads).map(([e,t])=>[e,s(Array.isArray(t)?t.map(t=>b({...t,activityId:e})).filter(e=>null!==e):[])])):{};return{objectives:o(e),activities:c(t),activityThreads:r}}return j()},"removeProjectObjective",0,function(e,t){let r=new Set(e.activities.filter(e=>e.objectiveId===t).map(e=>e.id)),a=Object.fromEntries(Object.entries(e.activityThreads).filter(([e])=>!r.has(e)));return{objectives:e.objectives.filter(e=>e.id!==t),activities:e.activities.filter(e=>e.objectiveId!==t),activityThreads:a}},"upsertProjectObjective",0,function(e,t){let r=e.objectives.findIndex(e=>e.id===t.id)>=0?e.objectives.map(e=>e.id===t.id?t:e):[t,...e.objectives];return{...e,objectives:o(r)}},"writeProjectObjectivesWorkspace",0,function(e,a){let i={...e};return delete i[r],i[t]=g(a),i}])},644660,e=>{"use strict";var t=e.i(843476);e.s(["LinearIcon",0,function({size:e=16,...r}){return(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 100 100",fill:"currentColor",...r,children:(0,t.jsx)("path",{d:"M1.22541 61.5228c-.2225-.9485.90748-1.5459 1.59638-.857L39.3342 97.1782c.6889.6889.0915 1.8189-.857 1.5964C20.0515 94.4522 5.54779 79.9485 1.22541 61.5228ZM.00189135 46.8891c-.01764375.2833.08887215.5599.28957165.7606L52.3503 99.7085c.2007.2007.4773.3075.7606.2896 2.3692-.1476 4.6938-.46 6.9624-.9259.7645-.157 1.0301-1.0963.4782-1.6481L2.57595 39.4485c-.55186-.5519-1.49117-.2863-1.648174.4782-.465915 2.2686-.77832 4.5932-.92588465 6.9624ZM4.21093 29.7054c-.16649.3738-.08169.8106.20765 1.1l64.77602 64.776c.2894.2894.7262.3742 1.1.2077 1.7861-.7956 3.5171-1.6927 5.1855-2.684.5521-.328.6373-1.0867.1832-1.5407L8.43566 24.3367c-.45409-.4541-1.21271-.3689-1.54074.1832-.99132 1.6684-1.88843 3.3994-2.68399 5.1855ZM12.6587 18.074c-.3701-.3701-.393-.9637-.0443-1.3541C21.7795 6.45931 35.1114 0 49.9519 0 77.5927 0 100 22.4073 100 50.0481c0 14.8405-6.4593 28.1724-16.7199 37.3375-.3903.3487-.984.3258-1.3542-.0443L12.6587 18.074Z"})})}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,812549,871920,e=>{"use strict";var t=e.i(363732);let r=(0,t.default)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]);e.s(["Cpu",0,r],812549);let s=(0,t.default)("box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);e.s(["Box",0,s],871920)},837958,e=>{"use strict";let t=(0,e.i(363732).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);e.s(["BookOpen",0,t],837958)},884564,e=>{"use strict";var t=e.i(843476),r=e.i(271645),s=e.i(797167),l=e.i(169610),o=e.i(812549),i=e.i(871920),a=e.i(837958),n=e.i(519132),d=e.i(929870),c=e.i(538292),u=e.i(498027),m=e.i(19035),x=e.i(529471),p=e.i(40527);e.i(477183),e.i(76590),e.i(807311);var f=e.i(378764);function g(e,t=32,r){let s=`https://api.dicebear.com/9.x/bottts-neutral/svg?seed=${encodeURIComponent(e)}&size=${t}`;if(!r)return s;let l=r.replace("#","");return`${s}&backgroundColor=${l}`}e.i(44054);let h=["claude","ollama","gemini","codex","zai"];function v(e){return(e??[]).map(e=>e.condition?.trim()?`${e.file} | ${e.condition}`:e.file).join("\n")}function b(e){return e.split("\n").map(e=>e.trim()).filter(Boolean).map(e=>{let[t,...r]=e.split("|");return{file:t.trim(),condition:r.join("|").trim()}}).filter(e=>e.file.length>0)}function y(e,t){return JSON.stringify({name:e.name,...e.roleId?{roleId:e.roleId}:{},...e.role?{role:e.role}:{},provider:e.provider,model:e.model,identity:e.identity,color:e.color??"#6B7280",skills:e.skills??[],skillBindings:e.skillBindings??[],...t?{projectIds:t}:{}},null,2)}e.s(["AgentForm",0,function({title:e,initial:j,submitLabel:k,onSubmit:N,onCancel:w,projects:C,initialProjectIds:S,agentId:I,projectMemberships:A,onAddToProject:z,onRemoveFromProject:M,roleOptions:B,roleLabel:O="Role",onRolePresetChange:E}){let[$,F]=(0,r.useState)(j.name),[P,T]=(0,r.useState)(j.roleId??""),[J,R]=(0,r.useState)(j.role??""),[L,U]=(0,r.useState)(j.provider),[K,D]=(0,r.useState)(j.model),[X,_]=(0,r.useState)(j.identity),[q,G]=(0,r.useState)(j.color??"#6B7280"),[V,Z]=(0,r.useState)(v(j.skills)),[W,Y]=(0,r.useState)(new Set(S??[])),[H,Q]=(0,r.useState)("form"),[ee,et]=(0,r.useState)(()=>y(j,C?S??[]:void 0)),[er,es]=(0,r.useState)(null),[el,eo]=(0,r.useState)(!1),[ei,ea]=(0,r.useState)([]),[en,ed]=(0,r.useState)(""),[ec,eu]=(0,r.useState)(!1),[em,ex]=(0,r.useState)(j.skillBindings??[]),ep=(0,r.useRef)(null),ef=(0,r.useRef)(null),eg=!!(B&&B.length>0),eh=I||$.trim()||j.name||"agent";(0,r.useEffect)(()=>{let e=e=>{ef.current&&!ef.current.contains(e.target)&&w()},t=setTimeout(()=>document.addEventListener("pointerdown",e),0);return()=>{clearTimeout(t),document.removeEventListener("pointerdown",e)}},[ef,w]),(0,r.useEffect)(()=>{if(!ec)return;let e=e=>{ep.current&&!ep.current.contains(e.target)&&eu(!1)};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[ec]),(0,r.useEffect)(()=>{"form"===H&&et(y({name:$,...eg&&P?{roleId:P}:{},role:J,provider:L,model:K,identity:X,color:q,skills:b(V),skillBindings:em},C?Array.from(W):void 0))},[H,$,P,eg,J,L,K,X,q,V,em,W,C]),(0,r.useEffect)(()=>{if(!el)return;let e=window.setTimeout(()=>eo(!1),1200);return()=>window.clearTimeout(e)},[el]),(0,r.useEffect)(()=>{let e=!1;return async function(){try{let t=await fetch("/api/skills");if(!t.ok)return;let r=await t.json();if(e)return;let s=Array.isArray(r.skills)?r.skills.filter(e=>!!e&&"object"==typeof e).map(e=>({skillId:String(e.skillId??"").trim(),repo:String(e.repo??"").trim(),name:String(e.name??e.skillId??"").trim()})).filter(e=>e.skillId.length>0&&e.repo.length>0):[];ea(s)}catch{e||ea([])}}(),()=>{e=!0}},[]);let ev=(e,t)=>{let r=C?(t??[]).filter(e=>C.some(t=>t.id===e)):void 0;return F(e.name),T(e.roleId??""),R(e.role??""),U(e.provider),D(e.model),_(e.identity),G(e.color??"#6B7280"),Z(v(e.skills)),ex(e.skillBindings??[]),C&&Y(new Set(r??[])),et(y(e,C?r??[]:void 0)),es(null),r},eb=e=>{let t=function(e,t){let r;try{r=JSON.parse(e)}catch{throw Error("JSON is invalid.")}if(!r||"object"!=typeof r||Array.isArray(r))throw Error("JSON must be an object.");let s=r,l="string"==typeof s.provider?s.provider:t,o=h.includes(l)?l:t,i=(Array.isArray(s.skills)?s.skills:[]).flatMap(e=>{if("string"==typeof e){let[t,...r]=e.split("|"),s=t.trim();return s?[{file:s,condition:r.join("|").trim()}]:[]}if(!e||"object"!=typeof e||Array.isArray(e))return[];let t="string"==typeof e.file?e.file.trim():"";return t?[{file:t,condition:"string"==typeof e.condition?e.condition.trim():""}]:[]}),a=Array.isArray(s.projectIds)?s.projectIds.filter(e=>"string"==typeof e&&e.trim().length>0):void 0,n=(Array.isArray(s.skillBindings)?s.skillBindings:[]).flatMap(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return[];let t="string"==typeof e.repo?e.repo.trim():"",r="string"==typeof e.skillId?e.skillId.trim():"";return t&&r?[{repo:t,skillId:r,condition:"string"==typeof e.condition?e.condition.trim():""}]:[]});return{data:{name:"string"==typeof s.name?s.name:"",roleId:"string"==typeof s.roleId?s.roleId:void 0,role:"string"==typeof s.role?s.role:"",provider:o,model:"string"==typeof s.model?s.model:"",identity:"string"==typeof s.identity?s.identity:"",color:"string"==typeof s.color&&s.color.trim()?s.color:"#6B7280",skills:i,skillBindings:n},projectIds:a}}(e,L),r=ev(t.data,t.projectIds);return{...t,projectIds:r}},ey=()=>{if("form"!==H)try{eb(ee),Q("form")}catch(e){es(e instanceof Error?e.message:"Unable to parse JSON.")}},ej=async()=>{try{await navigator.clipboard.writeText(ee),eo(!0)}catch{eo(!1)}},ek=(0,r.useMemo)(()=>{let e=en.trim().toLowerCase();return e?ei.filter(t=>[t.name,t.skillId,t.repo].some(t=>t.toLowerCase().includes(e))).slice(0,50):ei.slice(0,50)},[ei,en]),eN=(0,r.useMemo)(()=>new Set(em.map(e=>`${e.repo}::${e.skillId}`)),[em]);return(0,t.jsx)("div",{ref:ef,className:"fixed inset-0 z-[100] flex items-center justify-center p-4 bg-black/30 backdrop-blur-sm",onKeyDown:e=>{"Escape"===e.key&&w()},children:(0,t.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-[32px] shadow-2xl overflow-hidden w-full max-w-2xl max-h-[90vh] flex flex-col animate-in fade-in zoom-in duration-300",children:[(0,t.jsxs)("div",{className:"px-8 pt-8 pb-4 shrink-0 flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsxs)("div",{className:"flex flex-col items-center gap-1.5",children:[(0,t.jsx)("img",{src:g(eh,64,q),alt:$,className:"w-14 h-14 rounded-full bg-[var(--muted)]"}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("label",{className:"text-[10px] text-[var(--muted-foreground)]",children:"Color"}),(0,t.jsx)("input",{type:"color",value:q,onChange:e=>G(e.target.value),className:"w-5 h-5 rounded border border-[var(--border)] cursor-pointer p-0"})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-[10px] font-bold tracking-widest text-[var(--muted-foreground)] uppercase",children:e}),(0,t.jsx)("h1",{className:"text-2xl font-semibold mt-1",children:$||"Configure Agent"})]})]}),(0,t.jsx)("button",{onClick:w,className:"p-2 text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)] hover:bg-[var(--muted)] rounded-full transition-all",children:(0,t.jsx)(s.X,{size:20})})]}),(0,t.jsxs)("div",{className:"px-8 pb-8 space-y-6 overflow-y-auto",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"inline-flex rounded-xl bg-[var(--muted)] p-1",children:[(0,t.jsx)("button",{type:"button",onClick:ey,className:"form"===H?"px-3 py-1.5 text-xs font-semibold rounded-lg bg-[var(--card-bg)] text-[var(--foreground)] shadow-sm":"px-3 py-1.5 text-xs font-semibold rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"Form"}),(0,t.jsx)("button",{type:"button",onClick:()=>{et(y({name:$,...eg&&P?{roleId:P}:{},role:J,provider:L,model:K,identity:X,color:q,skills:b(V),skillBindings:em},C?Array.from(W):void 0)),es(null),Q("json")},className:"json"===H?"px-3 py-1.5 text-xs font-semibold rounded-lg bg-[var(--card-bg)] text-[var(--foreground)] shadow-sm":"px-3 py-1.5 text-xs font-semibold rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"JSON"})]}),"json"===H&&(0,t.jsxs)("button",{type:"button",onClick:ej,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-semibold text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--muted)] rounded-lg transition-colors",children:[el?(0,t.jsx)(x.Check,{size:14,className:"text-emerald-500"}):(0,t.jsx)(m.Copy,{size:14}),el?"Copied":"Copy"]})]}),"form"===H?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,t.jsx)(l.User,{size:16})," Name"]}),(0,t.jsx)("input",{type:"text",value:$,onChange:e=>F(e.target.value),className:"w-full px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all",placeholder:"e.g. Ada, Kai, Sage...",autoFocus:!0})]}),eg?(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:O}),(0,t.jsx)(f.default,{options:B??[],value:P||null,onChange:e=>{if(!eg)return;let t={name:$,roleId:e,role:J,provider:L,model:K,identity:X,color:q,skills:b(V),skillBindings:em},r=E?.(e,t);r?ev({...r,roleId:e},C?Array.from(W):void 0):T(e)},placeholder:"Select a role preset..."})]}):(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:"Role"}),(0,t.jsx)("input",{type:"text",value:J,onChange:e=>R(e.target.value),className:"w-full px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all",placeholder:"e.g. Senior Backend Engineer"})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,t.jsx)(i.Box,{size:16})," Provider"]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("select",{value:L,onChange:e=>U(e.target.value),className:"w-full appearance-none px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all pr-10 cursor-pointer",children:[(0,t.jsx)("option",{value:"claude",children:"Claude"}),(0,t.jsx)("option",{value:"ollama",children:"Ollama"}),(0,t.jsx)("option",{value:"gemini",children:"Gemini"}),(0,t.jsx)("option",{value:"codex",children:"Codex"}),(0,t.jsx)("option",{value:"zai",children:"Z.AI"})]}),(0,t.jsx)(u.ChevronDown,{className:"absolute right-3 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)] pointer-events-none",size:16})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,t.jsx)(o.Cpu,{size:16})," Model"]}),(0,t.jsx)("input",{type:"text",value:K,onChange:e=>D(e.target.value),className:"w-full px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all font-mono text-sm",placeholder:"e.g. claude-sonnet-4-6"})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,t.jsx)(a.BookOpen,{size:16})," Identity"]}),(0,t.jsx)("div",{className:"border border-[var(--border)] rounded-xl overflow-hidden bg-[var(--app-shell-subtle)] focus-within:ring-2 focus-within:ring-indigo-500/20 focus-within:border-indigo-500 transition-all",children:(0,t.jsx)(p.default,{content:X,onChange:e=>_(e),placeholder:"You are a ..."})}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"Identity defines who the agent is. Keep portable knowledge separate below; project and repo knowledge belong on their scoped surfaces."})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,t.jsx)(n.Sparkles,{size:16})," Portable Knowledge"]}),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--app-shell-subtle)] p-3 space-y-3",children:[(0,t.jsx)("div",{className:"flex items-center justify-between gap-3",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-xs font-semibold text-[var(--foreground)]",children:"Skills Picker"}),(0,t.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:"Pick a skill here. AGX will install it later only if the run actually needs it."})]})}),ei.length>0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"relative",ref:ep,children:[(0,t.jsxs)("button",{type:"button",onClick:()=>eu(e=>!e),className:"w-full flex items-center justify-between px-3 py-2 rounded-xl border border-[var(--border)] bg-[var(--card-bg)] text-sm font-medium hover:border-indigo-500",children:[(0,t.jsx)("span",{className:"truncate text-left",children:"Search and add skills"}),(0,t.jsx)(u.ChevronDown,{size:16,className:`shrink-0 text-[var(--muted-foreground)] transition-transform ${ec?"rotate-180":""}`})]}),ec&&(0,t.jsxs)("div",{className:"absolute left-0 right-0 top-full mt-2 z-30 rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg overflow-hidden",children:[(0,t.jsx)("div",{className:"p-2 border-b border-[var(--border)]",children:(0,t.jsx)("input",{type:"text",value:en,onChange:e=>ed(e.target.value),placeholder:"Search skills",className:"w-full px-3 py-2 bg-[var(--card-bg)] border border-[var(--border)] rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500",autoFocus:!0})}),(0,t.jsx)("div",{className:"max-h-64 overflow-y-auto",children:ek.length>0?ek.map(e=>{let r=`${e.repo}::${e.skillId}`,s=eN.has(r);return(0,t.jsx)("button",{type:"button",className:`w-full px-3 py-2 text-left text-sm transition-colors ${s?"bg-emerald-50 text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onMouseDown:e=>e.preventDefault(),onClick:()=>{var t,r;return t=e.repo,r=e.skillId,void(ex(e=>e.some(e=>e.repo===t&&e.skillId===r)?e.filter(e=>e.repo!==t||e.skillId!==r):[...e,{repo:t,skillId:r}]),ed(""))},children:(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"font-medium",children:e.name||e.skillId}),(0,t.jsx)("div",{className:"text-[11px] text-[var(--muted-foreground)]",children:e.repo})]}),s&&(0,t.jsx)("span",{className:"shrink-0 rounded-full bg-emerald-100 px-2 py-0.5 text-[10px] font-semibold text-emerald-700",children:"Added"})]})},r)}):(0,t.jsx)("div",{className:"px-3 py-3 text-sm text-[var(--muted-foreground)]",children:"No matching skills."})})]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[em.map(e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full bg-emerald-50 text-emerald-700 border border-emerald-200 px-2.5 py-1 text-[11px] font-medium",children:[e.skillId,(0,t.jsx)("button",{type:"button",onClick:()=>{var t,r;return t=e.repo,r=e.skillId,void ex(e=>e.filter(e=>e.repo!==t||e.skillId!==r))},className:"text-emerald-700/70 hover:text-emerald-900",title:`Remove ${e.skillId}`,children:(0,t.jsx)(s.X,{size:12})})]},`${e.repo}::${e.skillId}`)),0===em.length&&(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:"No library skills selected yet."})]})]}):(0,t.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:"No catalog skills available right now."})]}),(0,t.jsx)("textarea",{value:V,onChange:e=>Z(e.target.value),rows:5,className:"w-full px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all font-mono text-xs",placeholder:"one/path/to/skill.md\npath/to/skill.md | when coding in TypeScript"}),(0,t.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:["Portable agent knowledge only. One reference per line. Use ",(0,t.jsx)("code",{children:"|"})," to add an optional condition."]})]}),C&&C.length>0&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,t.jsx)(c.FolderOpen,{size:16})," Assign To Projects"]}),(0,t.jsx)("div",{className:"space-y-1 max-h-[160px] overflow-y-auto",children:C.map(e=>{let r=W.has(e.id);return(0,t.jsxs)("button",{type:"button",className:r?"w-full flex items-center gap-3 px-3 py-2 rounded-lg text-sm transition-colors bg-indigo-50 text-indigo-700":"w-full flex items-center gap-3 px-3 py-2 rounded-lg text-sm transition-colors text-[var(--muted-foreground)] hover:bg-[var(--app-shell-subtle)]",onClick:()=>Y(t=>{let r=new Set(t);return r.has(e.id)?r.delete(e.id):r.add(e.id),r}),children:[(0,t.jsx)("div",{className:r?"w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center bg-indigo-600 border-indigo-600":"w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center border-[var(--border)]",children:r&&(0,t.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,t.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,t.jsx)("span",{className:"text-xs font-medium text-left",children:e.label??e.name})]},e.id)})})]}),A&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,t.jsx)(c.FolderOpen,{size:16})," Project Memberships"]}),A.current.length>0?(0,t.jsx)("div",{className:"flex flex-col gap-1",children:A.current.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs bg-[var(--app-shell-subtle)] rounded-lg px-3 py-2",children:[(0,t.jsx)(c.FolderOpen,{size:12,className:"text-[var(--muted-foreground)] shrink-0"}),(0,t.jsx)("span",{className:"truncate flex-1",children:e.name}),M&&!e.is_default&&(0,t.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-red-500 transition-colors",onClick:()=>M(e.id),title:"Remove from project",children:(0,t.jsx)(s.X,{size:12})})]},e.id))}):(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] italic",children:"Not assigned to any projects"}),A.available.length>0&&z&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1",children:A.available.map(e=>(0,t.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 text-[10px] px-2 py-1 rounded-lg border border-dashed border-[var(--border)] text-[var(--muted-foreground)] hover:border-[var(--border)] hover:text-[var(--foreground)] transition-colors",onClick:()=>z(e.id),children:[(0,t.jsx)(d.Plus,{size:10}),e.name]},e.id))})]})]}):(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"Paste agent JSON here. Switching back to Form or saving will apply valid JSON to the form state."}),(0,t.jsx)("button",{type:"button",onClick:ey,className:"px-3 py-1.5 text-xs font-semibold text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--muted)] rounded-lg transition-colors",children:"Apply to Form"})]}),(0,t.jsx)("textarea",{value:ee,onChange:e=>{et(e.target.value),er&&es(null)},rows:22,className:"w-full px-4 py-3 bg-[var(--app-shell-bg)] text-[var(--foreground)] border border-[var(--app-shell-border)] rounded-2xl focus:outline-none focus:ring-2 focus:ring-[var(--ring)] focus:border-[var(--primary)] transition-all font-mono text-xs",spellCheck:!1,autoFocus:!0}),er&&(0,t.jsx)("p",{className:"text-xs text-red-500",children:er})]}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-3 pt-4 border-t border-[var(--border)]",children:[(0,t.jsx)("button",{onClick:w,className:"px-6 py-2.5 text-sm font-semibold text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] rounded-xl transition-all",children:"Cancel"}),(0,t.jsx)("button",{onClick:()=>{let e=$.trim(),t=P,r=J.trim(),s=L,l=K.trim(),o=X.trim(),i=q,a=b(V),n=em,d=C?Array.from(W):void 0;if("json"===H)try{let c=eb(ee);e=c.data.name.trim(),t=c.data.roleId??"",r=(c.data.role??"").trim(),s=c.data.provider,l=c.data.model.trim(),o=c.data.identity.trim(),i=c.data.color??"#6B7280",a=c.data.skills??[],n=c.data.skillBindings??[],d=C?c.projectIds??[]:void 0}catch(e){es(e instanceof Error?e.message:"Unable to parse JSON.");return}e&&l&&N({name:e,...eg&&t?{roleId:t}:{},role:r||void 0,provider:s,model:l,identity:o,color:i,skills:a,skillBindings:n},d)},disabled:"form"===H&&(!$.trim()||!K.trim()),className:"px-8 py-2.5 bg-indigo-600 text-white text-sm font-semibold rounded-xl shadow-[0_4px_12px_rgba(79,70,229,0.3)] hover:bg-indigo-700 active:scale-95 disabled:opacity-50 transition-all font-bold",children:k})]})]})]})})},"agentAvatarUrl",0,g])}]);
@@ -0,0 +1,6 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,827430,715908,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(810605),s=e.i(770703),n=e.i(245900),d=e.i(794731),l=e.i(929870),o=e.i(797167),i=e.i(580873),c=e.i(558201),u=e.i(203096),x=e.i(498027),m=e.i(248004),p=e.i(640481),f=e.i(169610),h=e.i(519132),v=e.i(66386);function g(e,t={}){let[a,s]=(0,r.useState)([]),[n,d]=(0,r.useState)(!0),[l,o]=(0,r.useState)(null),i=(0,r.useRef)(!1),c=t.requireProjectId??!1,u=t.includeObjectiveJobs??!1,x=t.objectiveId?.trim()||null,m=(0,r.useCallback)(async()=>{if(c&&!e){s([]),o(null),d(!1),i.current=!0;return}try{i.current||d(!0);let t=new URLSearchParams;e&&t.set("projectId",e),x&&t.set("objectiveId",x),u&&t.set("includeObjectiveJobs","true");let r=t.toString(),a=await fetch(`/api/prompt-jobs${r?`?${r}`:""}`);if(!a.ok)throw Error(`Failed to fetch: ${a.status}`);let n=await a.json();s(n.jobs??[]),o(null)}catch(e){o(e instanceof Error?e.message:String(e))}finally{d(!1),i.current=!0}},[u,x,e,c]);(0,r.useEffect)(()=>{i.current=!1,m();let e=setInterval(m,1e4);return()=>clearInterval(e)},[m]);let p=(0,r.useCallback)(async e=>{let t=await fetch("/api/prompt-jobs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)return null;let{job:r}=await t.json();return await m(),r?.id??null},[m]),f=(0,r.useCallback)(async(e,t)=>{let r=await fetch(`/api/prompt-jobs/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});return r.ok&&await m(),r.ok},[m]),h=(0,r.useCallback)(async e=>{let t=await fetch(`/api/prompt-jobs/${e}`,{method:"DELETE"});return t.ok&&await m(),t.ok},[m]),v=(0,r.useCallback)(async e=>{let t="active"===e.state?"paused":"active",r=await fetch(`/api/prompt-jobs/${e.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({state:t})});return r.ok&&await m(),r.ok},[m]),b=(0,r.useCallback)(async e=>{let t=await fetch("/api/prompt-jobs/poll",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jobId:e})});return t.ok&&await m(),t.ok},[m]),j=(0,r.useCallback)(async e=>{let t=await fetch(`/api/prompt-jobs/${e}/cancel`,{method:"POST"});return t.ok&&await m(),t.ok},[m]);return{jobs:a,loading:n,error:l,refresh:m,createJob:p,updateJob:f,deleteJob:h,toggleJob:v,runNow:b,cancelRun:j,fetchRuns:(0,r.useCallback)(async e=>{let t=await fetch(`/api/prompt-jobs/${e}/runs`);return t.ok?(await t.json()).runs??[]:[]},[])}}e.s(["usePromptJobs",0,g],715908);var b=e.i(945028),j=e.i(490011),N=e.i(208343),w=e.i(423709),y=e.i(990933),k=e.i(553069),S=e.i(667480);let C=[{value:"prompt",label:"Prompt",description:"Run a prompt on a schedule"},{value:"linear_worker",label:"Linear Worker",description:"Observe Linear workspace and decide what to work on"}],I=(0,s.default)(()=>e.A(501223).then(e=>e.Composer),{loadableGenerated:{modules:[844118]},ssr:!1}),$=(0,s.default)(()=>e.A(469612),{loadableGenerated:{modules:[668610]},ssr:!1});function R(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 P(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 T(e){if(!e)return"—";let t=new Date(e);return t.toLocaleDateString("en-US",{month:"short",day:"numeric"})+", "+t.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit"})}function z({children:e}){return(0,t.jsx)("div",{className:"text-[10px] font-bold uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:e})}function A({children:e}){return(0,t.jsx)("label",{className:"block text-[10px] font-semibold text-[var(--muted-foreground)] uppercase tracking-widest mb-2",children:e})}function M(e,t,r=24){let a=t?t.replace("#",""):"e2e8f0";return`https://api.dicebear.com/9.x/bottts-neutral/svg?seed=${encodeURIComponent(e)}&size=${r}&backgroundColor=${a}`}function E({agents:e,value:a,onChange:s}){let[n,d]=(0,r.useState)(!1),l=e.find(e=>e.id===a);return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(A,{children:"Agent"}),(0,t.jsxs)("button",{type:"button",onClick:()=>d(!n),className:"w-full flex items-center gap-2.5 px-3 py-2.5 rounded-lg border border-[var(--card-border)] bg-[var(--muted)] text-left transition-colors hover:border-[var(--muted-foreground)]",children:[l?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("img",{src:M(l.id,l.color),alt:"",className:"size-6 rounded-full shrink-0"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"text-xs font-medium text-[var(--foreground)] truncate",children:l.name}),(0,t.jsxs)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:[l.provider,l.model?` / ${l.model}`:""]})]})]}):(0,t.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"Select an agent..."}),(0,t.jsx)(x.ChevronDown,{size:14,className:`ml-auto text-[var(--muted-foreground)] transition-transform ${n?"rotate-180":""}`})]}),n&&(0,t.jsx)("div",{className:"absolute z-20 mt-1 w-full rounded-lg border border-[var(--card-border)] bg-[var(--card-bg)] shadow-lg max-h-[280px] overflow-y-auto",children:e.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>{s(e.id),d(!1)},className:`w-full flex items-center gap-2.5 px-3 py-2.5 text-left transition-colors hover:bg-[var(--muted)] ${a===e.id?"bg-[var(--muted)]":""}`,children:[(0,t.jsx)("img",{src:M(e.id,e.color),alt:"",className:"size-6 rounded-full shrink-0"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"text-xs font-medium text-[var(--foreground)] truncate",children:e.name}),(0,t.jsxs)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:[e.provider,e.model?` / ${e.model}`:""]})]}),a===e.id&&(0,t.jsx)("span",{className:"text-xs text-[var(--foreground)]",children:"✓"})]},e.id))})]})}function _({onClose:e,onSubmit:a,editingJob:s,createDefaults:n,contextLabel:d}){let[l,i]=(0,r.useState)([]),[c,u]=(0,r.useState)(s?.executionMode??n?.executionMode??"prompt"),[p,f]=(0,r.useState)(s?.name??n?.name??""),[h,v]=(0,r.useState)(s?.prompt??n?.prompt??""),[g,b]=(0,r.useState)(s?.agentId??n?.agentId??""),[j,N]=(0,r.useState)(s?.provider??n?.provider??"claude"),[w,y]=(0,r.useState)(s?.model??n?.model??"");(0,r.useEffect)(()=>{fetch("/api/prompt-jobs/agents").then(e=>e.json()).then(e=>i(e.agents??[])).catch(e=>console.warn("[PromptJobBoard] fetch agents failed:",e))},[]);let[k,C]=(0,r.useState)(s?.cliArgs??n?.cliArgs??""),[I,R]=(0,r.useState)(s?.cronExpr||s?.cadence||n?.cadence||""),[P,T]=(0,r.useState)(s?.condition??n?.condition??""),[z,M]=(0,r.useState)(!!(s?.cronExpr||s?.cadence||n?.cadence)),[O,U]=(0,r.useState)(s?.catchUpPolicy??n?.catchUpPolicy??"fire_once"),[J,L]=(0,r.useState)(!!s?.cliArgs||!!n?.cliArgs||s?.catchUpPolicy!=null&&"fire_once"!==s.catchUpPolicy||n?.catchUpPolicy!=null&&"fire_once"!==n.catchUpPolicy),[D,F]=(0,r.useState)(!1),B=async t=>{t.preventDefault(),p.trim()&&h.trim()&&I.trim()&&z&&(F(!0),await a({name:p.trim(),prompt:h.trim(),agentId:g,provider:j,model:w.trim(),cliArgs:k.trim(),catchUpPolicy:O,cadence:I.trim(),condition:P.trim(),executionMode:c}),F(!1),e())};return(0,t.jsxs)("div",{className:"h-full flex flex-col text-[var(--foreground)]",children:[(0,t.jsxs)("div",{className:"h-14 shrink-0 border-b border-[var(--card-border)] flex items-center justify-between px-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("button",{onClick:e,className:"p-1.5 rounded-md text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--muted)] transition-colors",children:(0,t.jsx)(o.X,{size:18})}),(0,t.jsx)("h2",{className:"text-sm font-semibold",children:s?"Edit Scheduled Task":"New Scheduled Task"}),d?(0,t.jsx)("span",{className:"rounded-full border border-sky-500/25 bg-sky-500/10 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] text-sky-100",children:d}):null]}),(0,t.jsx)("button",{onClick:B,disabled:D||!p.trim()||!h.trim()||!I.trim()||!z,className:"px-5 py-2 rounded-lg text-sm font-medium bg-[var(--foreground)] text-[var(--background)] hover:opacity-90 disabled:opacity-40 transition-opacity",children:D?"Saving...":s?"Save Changes":"Create Task"})]}),(0,t.jsxs)("div",{className:"flex flex-1 min-h-0 overflow-hidden",children:[(0,t.jsxs)("div",{className:"flex-1 border-r border-[var(--card-border)] flex flex-col min-w-0",children:[(0,t.jsx)("div",{className:"px-8 pt-8 pb-4",children:(0,t.jsx)("input",{type:"text",value:p,onChange:e=>f(e.target.value),placeholder:"Untitled job",className:"w-full text-2xl font-bold bg-transparent border-none outline-none placeholder:text-[var(--muted-foreground)]/40 text-[var(--foreground)]",autoFocus:!0})}),(0,t.jsxs)("div",{className:"flex-1 px-8 pb-8 overflow-y-auto",children:[(0,t.jsx)(A,{children:"Instructions"}),(0,t.jsx)("div",{className:"bg-[var(--card-bg)] border border-[var(--card-border)] rounded-xl overflow-hidden min-h-[300px]",children:(0,t.jsx)($,{content:h,onChange:e=>v(e),placeholder:"Describe what this prompt should do..."})})]})]}),(0,t.jsxs)("div",{className:"w-[380px] shrink-0 overflow-y-auto p-6 space-y-6",children:[(0,t.jsx)(E,{agents:l,value:g,onChange:e=>{b(e);let t=l.find(t=>t.id===e);t?(N(t.provider),y(t.model??"")):(N("claude"),y(""))}}),(0,t.jsx)(S.ScheduleConditionPicker,{value:{cadence:I,condition:P},onChange:(e,t)=>{R(e.cadence),T(e.condition),M(t.isScheduleValid)},scheduleLabel:"Schedule",conditionLabel:"Condition",conditionHelpText:"Scheduled runs and Run now will check this condition before executing."}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{type:"button",onClick:()=>L(!J),className:"flex items-center gap-1.5 text-[11px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:[(0,t.jsx)(m.Settings2,{size:12})," ",J?"Hide":"Show"," advanced",(0,t.jsx)(x.ChevronDown,{size:12,className:`transition-transform ${J?"rotate-180":""}`})]}),J&&(0,t.jsxs)("div",{className:"mt-3 space-y-3 pt-3 border-t border-[var(--card-border)]",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(A,{children:"CLI Arguments"}),(0,t.jsx)("input",{type:"text",value:k,onChange:e=>C(e.target.value),placeholder:"--dangerously-skip-permissions",className:"w-full bg-[var(--muted)] border border-[var(--card-border)] rounded-lg px-3 py-2 text-sm text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] focus:outline-none focus:border-[var(--foreground)] transition-colors"}),(0,t.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] mt-1",children:"Extra flags passed to the CLI command."})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(A,{children:"When missed"}),(0,t.jsx)("div",{className:"space-y-1.5",children:[{id:"fire_once",label:"Run once on recovery",desc:"Execute a single run regardless of how many were missed"},{id:"replay_all",label:"Run all missed",desc:"Queue one run per missed occurrence (use with caution)"},{id:"skip",label:"Skip and wait for next",desc:"Discard missed runs, wait for the next scheduled time"}].map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>U(e.id),className:`w-full text-left px-3 py-2 rounded-lg border transition-all ${O===e.id?"border-[var(--foreground)] bg-[var(--foreground)]/5":"border-[var(--card-border)] bg-[var(--muted)] hover:border-[var(--muted-foreground)]"}`,children:[(0,t.jsx)("div",{className:"text-xs font-medium text-[var(--foreground)]",children:e.label}),(0,t.jsx)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:e.desc})]},e.id))})]})]})]})]})]})]})}function O({run:e,job:a,agentMap:s}){let n=`prompt-run:${e.id}`,d=a.agentId&&s[a.agentId]?s[a.agentId].name:null,l=a.agentId?s[a.agentId]:null,[o,i]=(0,r.useState)(new Set);(0,r.useEffect)(()=>{a.projectId&&fetch(`/api/projects/${encodeURIComponent(a.projectId)}/agents`).then(e=>e.json()).then(e=>{i(new Set((e.agents??[]).map(e=>e.agent_id)))}).catch(e=>console.warn("[PromptJobBoard] fetch project agents failed:",e))},[a.projectId]);let u=(0,r.useMemo)(()=>Object.values(s).filter(e=>o.has(e.id)).map(e=>({id:e.id,name:e.name,title:e.title??void 0,provider:e.provider??"claude",model:e.model,color:e.color})),[s,o]),x=(0,r.useMemo)(()=>`run-root:${e.id}`,[e.id]),{messages:m,setMessages:p,sendMessage:v,loadHistory:g,chatRuns:k,stop:S}=(0,b.useGroupChat)(n),{processes:C,streaming:$,chatRuns:R}=(0,j.useProcessPolling)({workspaceId:n,threadId:x},{messages:m,setMessages:p}),P=(0,r.useMemo)(()=>{let e=[...k];for(let t of R)e.some(e=>e.chatRunId===t.chatRunId)||e.push(t);return e},[k,R]),T=P.some(e=>"queued"===e.status||"running"===e.status)||C.some(e=>"spawning"===e.state||"running"===e.state),z=T?P.some(e=>"queued"===e.status)?"queued":"working":"ready",A=(0,r.useRef)(!1);(0,r.useEffect)(()=>{g().then(()=>{if(!A.current){A.current=!0;let t=e.output?`[Automation run output]
2
+
3
+ ${e.output}${e.error?`
4
+
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),U=(0,r.useRef)(m.length);(0,r.useEffect)(()=>{m.length>U.current&&_.current?.scrollIntoView({behavior:"smooth"}),U.current=m.length},[m.length]);let J=(0,r.useCallback)((e,t,r,a,s,n,d)=>{let l=(0,y.orderParticipantIds)(Array.from(o),s);v(e,t,void 0,x,r,void 0,l.length>0?l:void 0,void 0,n,d)},[v,o,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:l?(0,t.jsx)("img",{src:M(a.agentId,l.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,o=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"}):l?(0,t.jsx)("img",{src:M(a.agentId,l.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":o})}),(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($).filter(([,e])=>e.rootMessageId===x).map(([e])=>{let r=s[e]??l;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)(I,{onSend:J,onStop:S,loading:T,activityStatus:z,participants:u,commands:[],placeholder:"Follow up on this run...",initialPinnedParticipantId:a.agentId||void 0})})]})}function U({job:e,agentMap:s,onEdit:l,onToggle:o,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)(),I=w("run"),$=e.agentId&&s[e.agentId]?s[e.agentId].name:null,A=(0,r.useCallback)(async()=>{N(!1),b(await f(e.id)),N(!0)},[f,e.id]);(0,r.useEffect)(()=>{A()},[A]),(0,r.useEffect)(()=>{let e=setInterval(A,a.UI_POLL_PROMPT_RUNS_MS);return()=>clearInterval(e)},[A]),(0,r.useEffect)(()=>{I&&j&&(g.some(e=>e.id===I)||S({run:null}))},[S,g,j,I]);let E=g.find(e=>e.id===I)??null,_="running"===e.lastOutcome,J=e.cronExpr&&(0,k.cronToHuman)(e.cronExpr)||e.cadence||e.cronExpr,L=(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:o,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:l,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:C.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:[$??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:J||"—"}),(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:L,children:L})]})})}),(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=I===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,R(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] ${R(e)?"text-amber-400 font-medium":"text-[var(--muted-foreground)]"}`,children:["Next run ",P(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)(O,{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,_,"default",0,function({projectId:e,requireProjectId:a=!1,includeObjectiveJobs:s=!1,visibleJobIds:n,contextLabel:d,createDefaults:o,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"),[$,T]=(0,r.useState)(null),[z,A]=(0,r.useState)(!1),[E,O]=(0,r.useState)(null),[J,L]=(0,r.useState)({}),[D,F]=(0,r.useState)(null),[B,H]=(0,r.useState)({}),{getSelection:q,pushSelection:G,replaceSelection:V}=(0,v.useUrlSelection)(),W=q("job"),K=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=W?Y.find(e=>e.id===W)??null:null,et=ee??($?.id===W&&(!Q||Q.has($.id))?$: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(),J[e])return;L(t=>({...t,[e]:!0}));let r=await w(e);L(t=>{let r={...t};return delete r[e],r}),r&&X("Run triggered")},es=async e=>{await j(e)&&(W===e&&G({job:null,run:null}),X("Job deleted"))},en=async e=>{await y(e)&&X("Run cancelled")},ed=async t=>{if(E)await b(E.id,t)&&X(`Task "${t.name}" updated`);else{let r=x?await x(t):await h({...t,projectId:e??""});r&&(await f(),G({job:r,run:null}),X(`Task "${t.name}" created`))}};(0,r.useEffect)(()=>{if(!W){T(null),K&&V({run:null});return}if(Q&&!Q.has(W)){T(null),V({job:null,run:null});return}if(ee)return void T(e=>e?.id===W?ee:null);let e=!1;return(async()=>{try{let t=await fetch(`/api/prompt-jobs/${encodeURIComponent(W)}`);if(e)return;if(404===t.status)return void V({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 V({job:null,run:null});T(r.job)}catch(t){e||console.error("Failed to hydrate selected prompt job",t)}})(),()=>{e=!0}},[s,V,ee,W,K,Q]);let el=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 z?(0,t.jsxs)(t.Fragment,{children:[el,(0,t.jsx)(_,{onClose:()=>{A(!1),O(null)},onSubmit:ed,editingJob:E,createDefaults:o,contextLabel:d})]}):(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-col text-[var(--foreground)] lg:flex-row",children:[el,(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:()=>{O(null),A(!0)},className:"transition-colors hover:text-[var(--foreground)]",title:"New Job",children:(0,t.jsx)(l.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=W===e.id,a=e.cronExpr&&(0,k.cronToHuman)(e.cronExpr)||e.cadence||e.cronExpr;return(0,t.jsx)("div",{onClick:()=>G({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 ${R(e)?"text-amber-400 font-medium":""}`,children:[(0,t.jsx)(i.Clock,{size:11}),P(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)(U,{job:et,agentMap:B,onEdit:()=>{O(et),A(!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)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,794731,e=>{"use strict";let t=(0,e.i(363732).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",0,t],794731)},640481,e=>{"use strict";let t=(0,e.i(363732).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],640481)},580873,e=>{"use strict";let t=(0,e.i(363732).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);e.s(["Clock",0,t],580873)},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)},807087,e=>{"use strict";let t=(0,e.i(363732).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",0,t],807087)},716436,e=>{"use strict";let t=(0,e.i(363732).default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);e.s(["Activity",0,t],716436)},417442,e=>{"use strict";let t=(0,e.i(363732).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["ArrowRight",0,t],417442)},378562,e=>{"use strict";var t=e.i(843476),r=e.i(522016);e.s(["EmptyStateCard",0,function({icon:e,title:a,description:s,ctaLabel:n,ctaHref:l}){return(0,t.jsx)("div",{className:"h-full w-full flex items-center justify-center bg-[var(--background)] px-6 py-12",children:(0,t.jsxs)("div",{className:"max-w-md w-full text-center space-y-6",children:[(0,t.jsx)("div",{className:"mx-auto w-14 h-14 rounded-2xl bg-[var(--secondary)] flex items-center justify-center",children:e}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("h1",{className:"text-[22px] font-bold text-[var(--foreground)] tracking-tight",children:a}),(0,t.jsx)("p",{className:"text-[14px] text-[var(--muted-foreground)] leading-relaxed",children:s})]}),(0,t.jsx)(r.default,{href:l,className:"inline-flex items-center gap-2 px-6 py-2.5 bg-[var(--foreground)] text-[var(--background)] text-[14px] font-semibold rounded-lg hover:opacity-90 transition-all",children:n})]})})}])},33887,e=>{"use strict";var t=e.i(271645);e.s(["useLinearConnection",0,function(){let[e,r]=(0,t.useState)(!1),[a,s]=(0,t.useState)(!0),[n,l]=(0,t.useState)(null),[d,i]=(0,t.useState)({claude:!1,codex:!1,gemini:!1}),[o,c]=(0,t.useState)({}),u=(0,t.useRef)(null),m=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/linear/mcp-setup"),t=await e.json();c(t.configured??{})}catch{}},[]),x=(0,t.useCallback)(async()=>{try{let[e,t]=await Promise.all([fetch("/api/linear/status"),fetch("/api/linear/mcp-setup")]),a=await e.json(),s=await t.json();return r(a.connected),l(a.user??null),i(a.clis??{claude:!1,codex:!1,gemini:!1}),c(s.configured??{}),a.connected}catch{return r(!1),!1}finally{s(!1)}},[]);(0,t.useEffect)(()=>(x(),()=>{u.current&&clearInterval(u.current)}),[x]);let p=(0,t.useCallback)(()=>{window.open("/api/linear/auth","_blank","noopener"),u.current&&clearInterval(u.current),u.current=setInterval(async()=>{await x()&&u.current&&(clearInterval(u.current),u.current=null)},2e3)},[x]),h=(0,t.useCallback)(async e=>{try{let t=await fetch("/api/linear/token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:e})});if(!t.ok){let e=await t.json().catch(()=>({}));return{ok:!1,error:e.error||"Failed to save token"}}return await x(),{ok:!0}}catch{return{ok:!1,error:"Failed to connect"}}},[x]);return{connected:e,loading:a,user:n,clis:d,mcpConfigured:o,connect:p,connectWithKey:h,disconnect:(0,t.useCallback)(async()=>{await fetch("/api/linear/status",{method:"DELETE"}),r(!1),l(null)},[]),configureMcp:(0,t.useCallback)(async e=>{try{let t=await fetch("/api/linear/mcp-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cli:e})});if(!t.ok){let e=await t.json().catch(()=>({}));return{ok:!1,error:e.error||"Failed to configure MCP"}}return await m(),{ok:!0}}catch{return{ok:!1,error:"Failed to configure MCP"}}},[m]),refresh:x}}])},317389,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(572665),s=e.i(618566),n=e.i(716436);function l({projectSlug:e,projectThreadIds:a=[]}){let d=(0,s.useRouter)(),[i,o]=(0,r.useState)([]),[c,u]=(0,r.useState)([]),m=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/participants");if(!e.ok)return;let t=await e.json();u(Array.isArray(t)?t:t.participants??[])}catch{}},[]);(0,r.useEffect)(()=>{m()},[m]),(0,r.useEffect)(()=>{let t=!1,r=e.trim().toLowerCase(),s=new Set(a.map(e=>e.trim()).filter(Boolean)),n=async()=>{try{let e=await fetch("/api/processes?enrich=1");if(!e.ok||t)return;let a=await e.json();if(t)return;let n=a.filter(e=>"spawning"===e.state||"running"===e.state).filter(e=>{let t=e.projectSlug.trim().toLowerCase();return!!t&&t===r||s.has(e.workspaceId)||s.has(e.threadId)}).sort((e,t)=>t.lastActivity-e.lastActivity);o(n)}catch{}};n();let l=setInterval(n,3e3);return()=>{t=!0,clearInterval(l)}},[e,a]);let x=new Map(c.map(e=>[e.id,e.name])),p=e=>x.get(e)||e.slice(0,8),h=[],f=new Map;for(let e of i){let t=f.get(e.agentId);t||(t={agentId:e.agentId,agentName:p(e.agentId),activities:[]},f.set(e.agentId,t),h.push(t)),t.activities.push({key:`${e.workspaceId}-${e.threadId}-${e.agentId}`,workspaceId:e.workspaceId,threadId:e.threadId,state:e.state,threadLabel:e.threadTitle?.trim()?e.threadTitle.trim():e.threadId?.trim()?`Thread ${e.threadId.slice(0,12)}...`:"Main thread",lastActiveLabel:function(e){let t=Math.max(0,Math.floor((Date.now()-e)/1e3));if(t<5)return"Just now";if(t<60)return`${t}s ago`;let r=Math.floor(t/60);if(r<60)return`${r}m ago`;let a=Math.floor(r/60);if(a<24)return`${a}h ago`;let s=Math.floor(a/24);return`${s}d ago`}(e.lastActivity),lastActivity:e.lastActivity,linearIssueId:e.linearIssueId,linearRunId:e.linearRunId})}if(0===h.length)return null;let g=i.length;return(0,t.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,t.jsx)(n.Activity,{className:"h-3.5 w-3.5"}),"Working Now"]}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:[h.length," ",1===h.length?"agent":"agents"," active across"," ",g," ",1===g?"thread":"threads","."]})]}),(0,t.jsxs)("span",{className:"rounded-full border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-2.5 py-1 text-[10px] font-medium uppercase tracking-wider text-[var(--status-completed-text)]",children:[g," live ",1===g?"entry":"entries"]})]}),(0,t.jsx)("div",{className:"divide-y divide-[var(--border)]",children:h.map(r=>(0,t.jsxs)("div",{className:"px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm font-medium text-[var(--foreground)]",children:[(0,t.jsx)("span",{className:"h-2 w-2 rounded-full bg-emerald-400 animate-pulse"}),r.agentName]}),r.activities.length>1&&(0,t.jsxs)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[r.activities.length," threads"]})]}),(0,t.jsx)("div",{className:"space-y-1 ml-4",children:r.activities.map(r=>(0,t.jsxs)("div",{className:"mx-[-0.5rem] flex cursor-pointer items-center gap-3 rounded-lg px-2 py-1.5 text-sm transition-colors hover:bg-[var(--secondary)]",onClick:()=>d.push(r.linearIssueId&&r.linearRunId?`/projects/${e}/linear?issue=${encodeURIComponent(r.linearIssueId)}&run=${encodeURIComponent(r.linearRunId)}`:`/projects/${e}/thread/${encodeURIComponent(r.workspaceId)}${r.threadId?`?open=${encodeURIComponent(r.threadId)}`:""}`),children:[(0,t.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-1.5 rounded-full border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-2 py-0.5 text-[11px] font-medium text-[var(--status-completed-text)]",children:[(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400"}),"spawning"===r.state?"Starting":"Working"]}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-[var(--foreground)]",children:r.threadLabel}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:r.lastActiveLabel})]},r.key))})]},r.agentId))})]})}var d=e.i(807087);function i({projectId:e,projectSlug:a,projectThreadIds:n=[]}){let l=(0,s.useRouter)(),[o,c]=(0,r.useState)([]),[u,m]=(0,r.useState)([]),[x,p]=(0,r.useState)([]),h=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/participants");if(!e.ok)return;let t=await e.json();m(Array.isArray(t)?t:t.participants??[])}catch{}},[]),f=(0,r.useCallback)(async()=>{try{let t=await fetch(`/api/projects/${e}/teams`);if(!t.ok)return;let r=await t.json();p(Array.isArray(r)?r:[])}catch{}},[e]);(0,r.useEffect)(()=>{h(),f()},[h,f]),(0,r.useEffect)(()=>{let e=!1,t=a.trim().toLowerCase(),r=new Set(n.map(e=>e.trim()).filter(Boolean)),s=async()=>{try{let a=await fetch("/api/processes?enrich=1");if(!a.ok||e)return;let s=await a.json();if(e)return;let n=s.filter(e=>"done"===e.state).filter(e=>{let a=e.projectSlug.trim().toLowerCase();return!!a&&a===t||r.has(e.workspaceId)||r.has(e.threadId)}).sort((e,t)=>t.lastActivity-e.lastActivity).slice(0,10);c(n)}catch{}};s();let l=setInterval(s,1e4);return()=>{e=!0,clearInterval(l)}},[a,n]);let g=new Map(u.map(e=>[e.id,e.name])),v=new Map;for(let e of x)for(let t of e.agents)v.set(t.agent_id,{id:e.id,name:e.name});return 0===o.length?null:(0,t.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,t.jsx)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,t.jsx)(d.CheckCircle2,{className:"h-3.5 w-3.5"}),"Recently Completed"]}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:["Last ",o.length," completed"," ",1===o.length?"task":"tasks","."]})]})}),(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:"min-w-full text-sm",children:[(0,t.jsx)("thead",{className:"bg-[var(--secondary)]",children:(0,t.jsxs)("tr",{className:"text-left text-[11px] uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,t.jsx)("th",{className:"px-4 py-3 font-medium",children:"Agent"}),(0,t.jsx)("th",{className:"px-4 py-3 font-medium",children:"Status"}),(0,t.jsx)("th",{className:"px-4 py-3 font-medium",children:"Thread"}),(0,t.jsx)("th",{className:"px-4 py-3 font-medium",children:"Last active"})]})}),(0,t.jsx)("tbody",{children:o.map(e=>{let r;return(0,t.jsxs)("tr",{className:"cursor-pointer border-t border-[var(--border)] text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",onClick:()=>l.push(e.linearIssueId&&e.linearRunId?`/projects/${a}/linear?issue=${encodeURIComponent(e.linearIssueId)}&run=${encodeURIComponent(e.linearRunId)}`:`/projects/${a}/thread/${encodeURIComponent(e.workspaceId)}${e.threadId?`?open=${encodeURIComponent(e.threadId)}`:""}`),children:[(0,t.jsx)("td",{className:"px-4 py-3 text-[var(--foreground)]",children:(r=e.agentId,g.get(r)||r.slice(0,8))}),(0,t.jsx)("td",{className:"px-4 py-3",children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--border)] bg-[var(--secondary)] px-2 py-0.5 text-[11px] font-medium text-[var(--muted-foreground)]",children:[(0,t.jsx)(d.CheckCircle2,{className:"h-3 w-3"}),"Done"]})}),(0,t.jsx)("td",{className:"max-w-[24rem] px-4 py-3 text-[var(--muted-foreground)]",children:(0,t.jsx)("span",{className:"block truncate",children:e.threadTitle?.trim()?e.threadTitle.trim():e.threadId?.trim()?`Thread ${e.threadId.slice(0,12)}...`:"Main thread"})}),(0,t.jsx)("td",{className:"px-4 py-3 text-[var(--muted-foreground)]",children:function(e){let t=Math.max(0,Math.floor((Date.now()-e)/1e3));if(t<5)return"Just now";if(t<60)return`${t}s ago`;let r=Math.floor(t/60);if(r<60)return`${r}m ago`;let a=Math.floor(r/60);if(a<24)return`${a}h ago`;let s=Math.floor(a/24);return`${s}d ago`}(e.lastActivity)})]},`${e.workspaceId}-${e.threadId}-${e.agentId}`)})})]})})]})}var o=e.i(417442);function c({projectId:e,onViewAll:s}){let[n,l]=(0,r.useState)([]),[d,i]=(0,r.useState)(!0);return(0,r.useEffect)(()=>{fetch(`/api/projects/${e}/teams`).then(e=>e.ok?e.json():{teams:[]}).then(e=>l(e.teams??[])).catch(()=>l([])).finally(()=>i(!1))},[e]),(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(a.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Teams"}),!d&&n.length>0&&(0,t.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:n.length})]}),s&&(0,t.jsxs)("button",{onClick:s,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,t.jsx)(o.ArrowRight,{className:"w-3 h-3"})]})]}),d?(0,t.jsx)("div",{className:"space-y-2",children:[1,2,3].map(e=>(0,t.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},e))}):0===n.length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No teams yet"}):(0,t.jsx)("div",{className:"space-y-2",children:n.slice(0,5).map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,t.jsx)(a.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-[var(--foreground)]",children:e.name}),(0,t.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[e.agents.length," agents"]})]},e.id))})]})}var u=e.i(580873);function m({projectId:e,projectSlug:a,onViewAll:n}){let l=(0,s.useRouter)(),[d,i]=(0,r.useState)([]),[c,x]=(0,r.useState)([]),[p,h]=(0,r.useState)({}),[f,g]=(0,r.useState)(!0),[v,j]=(0,r.useState)(()=>Date.now());(0,r.useEffect)(()=>{let e=window.setInterval(()=>{j(Date.now())},3e4);return()=>{window.clearInterval(e)}},[]),(0,r.useEffect)(()=>{let t=!1,r=async()=>{try{let[r,a]=await Promise.all([fetch("/api/automations"),fetch(`/api/prompt-jobs?projectId=${encodeURIComponent(e)}`)]),s=r.ok?await r.json():{automations:[]},n=a.ok?await a.json():{jobs:[]};if(t)return;let l=(s.automations??[]).filter(t=>t.projectId===e).slice(0,20),d=(n.jobs??[]).filter(t=>t.projectId===e).slice(0,20);i(l),x(d);let o=Object.fromEntries(await Promise.all(d.map(async e=>{try{let t=await fetch(`/api/prompt-jobs/${encodeURIComponent(e.id)}/runs`);if(!t.ok)return[e.id,null];let r=((await t.json()).runs??[])[0]??null;return[e.id,r]}catch{return[e.id,null]}})));if(t)return;h(o)}catch{if(t)return;i([]),x([]),h({})}finally{t||g(!1)}};return g(!0),r(),()=>{t=!0}},[e]);let b=e=>{if(!a||"prompt"!==e.kind)return;let t=new URLSearchParams({job:e.jobId});e.runId&&t.set("run",e.runId),l.push(`/projects/${a}/automations?${t.toString()}`)},y=[...c.filter(e=>{let t=p[e.id];return t?.status==="queued"||t?.status==="running"}).map(e=>({id:`prompt:${e.id}`,title:e.name,kind:"prompt",jobId:e.id,runId:p[e.id]?.id??null,updatedAt:p[e.id]?.createdAt??e.updatedAt})),...d.filter(e=>"running"===e.executionState||e.schedule?.tickInProgress).map(e=>({id:`automation:${e.graphId}`,title:e.title,kind:"automation",updatedAt:e.updatedAt}))].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt)),N=new Set(y.map(e=>e.id)),w=[...c.filter(e=>"active"===e.state&&"number"==typeof e.nextRunAt).map(e=>({id:`prompt:${e.id}`,title:e.name,kind:"prompt",jobId:e.id,runId:null,nextRunAt:e.nextRunAt})),...d.filter(e=>e.schedule?.state==="active"&&"number"==typeof e.schedule?.nextTickAt).map(e=>({id:`automation:${e.graphId}`,title:e.title,kind:"automation",nextRunAt:e.schedule.nextTickAt}))].filter(e=>!N.has(e.id)).sort((e,t)=>e.nextRunAt-t.nextRunAt),k=c.length+d.length;return(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(u.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Scheduled Tasks"}),!f&&k>0&&(0,t.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:k})]}),n&&(0,t.jsxs)("button",{onClick:n,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,t.jsx)(o.ArrowRight,{className:"w-3 h-3"})]})]}),f?(0,t.jsx)("div",{className:"space-y-2",children:[1,2,3].map(e=>(0,t.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},e))}):0===k?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks"}):(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,t.jsx)("span",{children:"Currently running"}),(0,t.jsx)("span",{children:y.length})]}),0===y.length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Nothing running right now"}):(0,t.jsx)("div",{className:"space-y-2",children:y.slice(0,3).map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>b(e),disabled:"prompt"!==e.kind||!a,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===e.kind&&a?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,t.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,t.jsx)("span",{className:"truncate text-[var(--foreground)]",children:e.title}),(0,t.jsx)("span",{className:"ml-auto shrink-0 text-xs text-[var(--status-completed-text)]",children:"running"})]},e.id))})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,t.jsx)("span",{children:"Upcoming runs"}),(0,t.jsx)("span",{children:w.length})]}),0===w.length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No upcoming runs"}):(0,t.jsx)("div",{className:"space-y-2",children:w.slice(0,3).map(e=>{var r;return(0,t.jsxs)("button",{type:"button",onClick:()=>b(e),disabled:"prompt"!==e.kind||!a,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===e.kind&&a?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--foreground)]",children:e.title}),(0,t.jsxs)("div",{className:"text-xs text-[var(--muted-foreground)]",children:["number"!=typeof(r=e.nextRunAt)?"No next run":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(r))," ",(0,t.jsxs)("span",{className:"text-[var(--app-shell-soft-text)]",children:["• ",(e=>{if("number"!=typeof e)return"";let t=e-v;if(t<=0)return"now";let r=Math.ceil(t/6e4);if(r<60)return`in ${r}m`;let a=Math.floor(r/60),s=r%60;if(a<24)return 0===s?`in ${a}h`:`in ${a}h ${s}m`;let n=Math.floor(a/24),l=a%24;return 0===l?`in ${n}d`:`in ${n}d ${l}h`})(e.nextRunAt)]})]})]})]},e.id)})})]})]})]})}var x=e.i(196630),p=e.i(640481),h=e.i(929870),f=e.i(794731),g=e.i(797167),v=e.i(524123);function j({projectId:e,repos:a,onViewAll:s}){let{updateProject:n}=(0,v.useProjects)(),[l,d]=(0,r.useState)(a),[i,c]=(0,r.useState)(!1),[u,m]=(0,r.useState)(null),[b,y]=(0,r.useState)(""),[N,w]=(0,r.useState)(""),[k,I]=(0,r.useState)(null);(0,r.useEffect)(()=>{d(a)},[a]);let C=e=>{I(e),window.setTimeout(()=>I(null),2500)},$=e=>e.map(e=>({id:e.id,name:e.name,path:e.path,git_url:e.git_url})),A=()=>{y(""),w(""),m(null),c(!1)},S=async()=>{let t=b.trim(),r=N.trim();if(t&&r){d([...l,{id:`tmp-${Date.now()}`,name:t,path:r}]),A();try{await n(e,{repos:[...$(l),{name:t,path:r}]}),C("Folder added")}catch{d(l),C("Failed to add folder")}}},R=async t=>{let r=b.trim(),a=N.trim();if(!r||!a)return;let s=l.map(e=>e.id===t?{...e,name:r,path:a}:e);d(s),A();try{await n(e,{repos:$(s)}),C("Folder updated")}catch{d(l),C("Failed to update folder")}},M=async t=>{let r=l.filter(e=>e.id!==t);d(r),u===t&&A();try{await n(e,{repos:$(r)}),C("Folder deleted")}catch{d(l),C("Failed to delete folder")}};return(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(x.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Folders"}),l.length>0&&(0,t.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:l.length})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{m(null),y(""),w(""),c(!0)},className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,t.jsx)(h.Plus,{className:"w-3 h-3"}),"Add"]}),s&&(0,t.jsxs)("button",{onClick:s,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,t.jsx)(o.ArrowRight,{className:"w-3 h-3"})]})]})]}),k&&(0,t.jsx)("p",{className:"mb-3 text-xs text-[var(--muted-foreground)]",children:k}),(i||u)&&(0,t.jsxs)("div",{className:"mb-3 space-y-2 rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-3",children:[(0,t.jsx)("input",{value:b,onChange:e=>y(e.target.value),className:"input w-full text-sm",placeholder:"Folder name",autoFocus:!0}),(0,t.jsx)("input",{value:N,onChange:e=>w(e.target.value),className:"input w-full text-sm",placeholder:"Local path"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:()=>{u?R(u):S()},disabled:!b.trim()||!N.trim(),className:"rounded-lg bg-[var(--foreground)] px-3 py-1.5 text-xs font-medium text-[var(--background)] disabled:opacity-40",children:"Save"}),(0,t.jsxs)("button",{type:"button",onClick:A,className:"flex items-center gap-1 rounded-lg px-2 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,t.jsx)(g.X,{className:"w-3 h-3"}),"Cancel"]})]})]}),0===l.length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No folders linked"}):(0,t.jsx)("div",{className:"space-y-2",children:l.slice(0,5).map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,t.jsx)(x.FolderGit2,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--foreground)]",children:e.name}),e.path&&(0,t.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:e.path})]}),(0,t.jsx)("button",{type:"button",onClick:()=>{c(!1),m(e.id),y(e.name),w(e.path??"")},className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]","aria-label":`Edit ${e.name}`,children:(0,t.jsx)(p.Pencil,{className:"w-3 h-3"})}),(0,t.jsx)("button",{type:"button",onClick:()=>void M(e.id),className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]","aria-label":`Delete ${e.name}`,children:(0,t.jsx)(f.Trash2,{className:"w-3 h-3"})})]},e.id))})]})}var b=e.i(938201),y=e.i(902572),N=e.i(958164);let w={on_track:{label:"On Track",dot:"bg-[var(--status-completed)]",badge:"border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed-text)]"},at_risk:{label:"At Risk",dot:"bg-[var(--status-blocked)]",badge:"border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked-text)]"},off_track:{label:"Off Track",dot:"bg-[var(--status-failed)]",badge:"border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed-text)]"},done:{label:"Done",dot:"bg-[var(--muted-foreground)]",badge:"border-[var(--border)] bg-[var(--secondary)] text-[var(--muted-foreground)]"}};function k({objective:e,teamName:r,onClick:a}){let s=w[e.status]??w.on_track,n="done"===e.status;return(0,t.jsxs)("button",{type:"button",onClick:a,className:`w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)] ${n?"opacity-60":""}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${s.dot}`}),(0,t.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:e.title})]}),(0,t.jsx)("span",{className:`shrink-0 rounded-full border px-2 py-0.5 text-[11px] font-medium ${s.badge}`,children:s.label})]}),(0,t.jsx)("div",{className:"mb-2",children:(0,t.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-[var(--muted)]",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-emerald-500/70 transition-all",style:{width:`${Math.min(e.progress,100)}%`}})})}),(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:r?"":"flex items-center gap-1 text-[var(--status-blocked-text)]",children:[!r&&(0,t.jsx)(N.AlertTriangle,{className:"h-3 w-3"}),r??"No team"]}),(0,t.jsxs)("span",{children:[e.progress,"%"]})]})]})}function I({projectId:e,projectSlug:a}){let n=(0,s.useRouter)(),{projects:l,isLoading:d}=(0,v.useProjects)(),i=(0,r.useMemo)(()=>l.find(e=>e.slug===a),[l,a]),c=(0,r.useMemo)(()=>(0,y.readProjectObjectivesWorkspace)(i?.metadata).objectives,[i?.metadata]),[u,m]=(0,r.useState)([]);(0,r.useEffect)(()=>{fetch(`/api/projects/${e}/teams`).then(e=>e.ok?e.json():{teams:[]}).then(e=>m(e.teams??[])).catch(()=>m([]))},[e]);let x=(0,r.useMemo)(()=>new Map(u.map(e=>[e.id,e.name])),[u]),p=c.filter(e=>e.progress>=100).length;return d?(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[1,2].map(e=>(0,t.jsx)("div",{className:"h-28 animate-pulse rounded-2xl bg-[var(--muted)]"},e))}):0===c.length?(0,t.jsxs)("button",{type:"button",onClick:()=>n.push(`/projects/${a}/objectives`),className:"w-full rounded-2xl border border-dashed border-[var(--border)] bg-[var(--card-bg)] p-6 text-center transition-colors hover:border-[var(--card-hover-border)] hover:bg-[var(--secondary)]",children:[(0,t.jsx)(b.Target,{className:"mx-auto mb-2 h-5 w-5 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Add your first objective"})]}):(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{children:[c.length," ",1===c.length?"objective":"objectives"]}),(0,t.jsx)("span",{className:"text-[var(--border)]",children:"|"}),(0,t.jsxs)("span",{children:[p,"/",c.length," complete"]})]}),(0,t.jsxs)("button",{onClick:()=>n.push(`/projects/${a}/objectives`),className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,t.jsx)(o.ArrowRight,{className:"w-3 h-3"})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:c.map(e=>(0,t.jsx)(k,{objective:e,teamName:x.get(e.teamId)??null,onClick:()=>n.push(`/projects/${a}/objectives/${encodeURIComponent(e.id)}`)},e.id))})]})}var C=e.i(597628),$=e.i(99296),A=e.i(33887),S=e.i(644660);function R({icon:e,title:r,accentClass:a,onClick:s,badge:n,children:l}){return(0,t.jsxs)("button",{type:"button",onClick:s,className:"w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:a,children:e}),(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:r})]}),n]}),l&&(0,t.jsx)("div",{className:"text-sm",children:l})]})}function M({projectId:e,projectSlug:a,primaryThreadId:n}){let l=(0,s.useRouter)(),{connected:d,loading:i}=(0,A.useLinearConnection)(),[o,c]=(0,r.useState)(null),[u,m]=(0,r.useState)(0);return(0,r.useEffect)(()=>{let t=!1;return fetch(`/api/threads?projectId=${encodeURIComponent(e)}&limit=3&format=json`).then(e=>e.ok?e.json():{threads:{},total:0}).then(e=>{if(t)return;let r=Object.values(e.threads??{}).flatMap(e=>e.threads??[]).slice(0,3);c(r),m("number"==typeof e.total?e.total:r.length)}).catch(()=>{t||(c([]),m(0))}),()=>{t=!0}},[e]),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,t.jsx)(R,{icon:(0,t.jsx)(C.MessageSquare,{className:"w-4 h-4"}),title:"Chat",accentClass:"text-indigo-400",onClick:()=>{n&&l.push(`/projects/${a}/thread/${encodeURIComponent(n)}`)},badge:u>0?(0,t.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:u}):void 0,children:null===o?(0,t.jsx)("div",{className:"space-y-1.5",children:[1,2].map(e=>(0,t.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},e))}):0===o.length?(0,t.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No threads yet"}):(0,t.jsx)("div",{className:"space-y-1",children:o.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 truncate text-[var(--foreground)]",children:[(0,t.jsx)(C.MessageSquare,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"truncate",children:e.title})]},e.id))})}),(0,t.jsx)(R,{icon:(0,t.jsx)($.TerminalSquare,{className:"w-4 h-4"}),title:"Terminal",accentClass:"text-emerald-400",onClick:()=>l.push(`/projects/${a}/terminal`),children:(0,t.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No sessions yet"})}),(0,t.jsx)(R,{icon:(0,t.jsx)(S.LinearIcon,{className:"w-4 h-4"}),title:"Linear",accentClass:"text-blue-400",onClick:()=>l.push(`/projects/${a}/linear`),badge:i?void 0:d?(0,t.jsx)("span",{className:"rounded-full border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-2 py-0.5 text-[11px] text-[var(--status-completed-text)]",children:"Connected"}):(0,t.jsx)("span",{className:"rounded-full border border-[var(--border)] bg-[var(--secondary)] px-2 py-0.5 text-[11px] text-[var(--muted-foreground)]",children:"Connect"}),children:!i&&!d&&(0,t.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"Connect to see issues"})})]})}function T({projectId:e,projectSlug:r,projectName:a,projectDescription:n,projectMetadata:d,repos:o,threadIds:u}){let x=(0,s.useRouter)(),p=u[0]??null;return(0,t.jsx)("div",{className:"h-full overflow-y-auto",children:(0,t.jsxs)("div",{className:"max-w-5xl mx-auto px-6 py-8 space-y-8",children:[n&&(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:n}),(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What you're working toward"}),(0,t.jsx)(I,{projectId:e,projectSlug:r})]}),(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"Start working"}),(0,t.jsx)(M,{projectId:e,projectSlug:r,primaryThreadId:p})]}),(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What's happening now"}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(m,{projectId:e,projectSlug:r,onViewAll:()=>x.push(`/projects/${r}/automations`)}),(0,t.jsx)(l,{projectSlug:r,projectThreadIds:u}),(0,t.jsx)(i,{projectId:e,projectSlug:r,projectThreadIds:u})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,t.jsx)(j,{projectId:e,repos:o}),(0,t.jsx)(c,{projectId:e,onViewAll:()=>x.push(`/projects/${r}/teams`)})]})]})})}var L=e.i(378562);e.s(["default",0,function({params:e}){let{slug:s}=(0,r.use)(e),{projects:n}=(0,v.useProjectsWithAgents)(),l=n.find(e=>e.slug===s),[d,i]=(0,r.useState)("loading");return((0,r.useEffect)(()=>{if(!l)return;let e=!1;return(async()=>{try{let t=await fetch(`/api/projects/${l.id}/teams`,{cache:"no-store"});if(e)return;let r=t.ok?await t.json():{teams:[]},a=Array.isArray(r?.teams)?r.teams:[];i(0===a.length?"empty":"has-teams")}catch{e||i("has-teams")}})(),()=>{e=!0}},[l]),l)?"empty"===d?(0,t.jsx)(L.EmptyStateCard,{icon:(0,t.jsx)(a.Users,{className:"w-6 h-6 text-[var(--foreground)]"}),title:`Add a team to ${l.name}`,description:"Teams give your project the agents that will actually do the work. Add one to get started.",ctaLabel:"Add a team",ctaHref:`/projects/${l.slug}/teams/new`}):(0,t.jsx)(T,{projectId:l.id,projectSlug:l.slug,projectName:l.name,projectDescription:l.description,projectMetadata:l.metadata,repos:l.repos,threadIds:l.thread_ids}):(0,t.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading project..."})}],317389)}]);
@@ -13,4 +13,4 @@
13
13
  `,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsx)("h3",{className:`text-sm font-medium text-[var(--foreground)] leading-snug line-clamp-2 sm:line-clamp-3
14
14
  ${"completed"===e.status?"text-[var(--muted-foreground)] line-through":""}
15
15
  `,children:e.title||"Untitled Task"}),(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:(0,t.jsx)(n,{status:e.status||"queued",onStatusChange:o})})]}),(0,t.jsx)("div",{className:"flex items-center justify-between min-h-[16px]",children:(0,t.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-[var(--muted-foreground)] flex-wrap",children:[void 0!==e.priority&&e.priority>0&&(0,t.jsxs)("span",{className:`px-1.5 py-0.5 rounded font-semibold bg-[var(--secondary)] ${0===e.priority?"text-[var(--primary)]":""}`,children:["P",e.priority]}),i&&("auto"===e.approval_mode?(0,t.jsx)("span",{className:"px-1.5 py-0.5 rounded font-semibold bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400 cursor-pointer select-none",title:"Auto-approve enabled. Click to switch to manual.",onClick:e=>{e.stopPropagation(),i("manual")},children:"AUTO"}):(0,t.jsx)("span",{className:"px-1.5 py-0.5 rounded font-semibold bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500 cursor-pointer select-none opacity-0 group-hover:opacity-100 transition-opacity",title:"Manual approval. Click to enable auto-approve.",onClick:e=>{e.stopPropagation(),i("auto")},children:"AUTO"})),"draft"!==e.id&&(0,t.jsx)("span",{className:"opacity-0 group-hover:opacity-100 transition-opacity font-mono text-[9px]",children:e.id.slice(0,5)})]})}),p&&v&&(y||k)?(0,t.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[y?(0,t.jsxs)("button",{type:"button",className:"rounded-full border border-[var(--border)] px-2.5 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",onClick:e=>{e.stopPropagation(),p(y)},children:["Back to ",y]}):null,k?(0,t.jsxs)("button",{type:"button",className:"rounded-full border border-[var(--border)] px-2.5 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",onClick:e=>{e.stopPropagation(),p(k)},children:["Move to ",k]}):null]}):null]})}],865260);var p=e.i(247167);let m={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:p.default.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:p.default.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["useTasks",0,function(e={}){let t="1"===p.default.env.NEXT_PUBLIC_AGX_BOARD_DISABLE_AUTH,a=e.project,s=e.status,n=e.orphan,o=e.realtime,[l,i]=(0,r.useState)([]),[d,c]=(0,r.useState)(!0),[u,f]=(0,r.useState)(null),[h,x]=(0,r.useState)(null),[g,b]=(0,r.useState)(null),v=(0,r.useCallback)(e=>{if(!e)return[];if(Array.isArray(e))return Array.from(new Set(e.map(e=>String(e||"").trim()).filter(Boolean)));if("string"==typeof e){let t=e.trim();if(!t)return[];try{let e=JSON.parse(t);if(Array.isArray(e))return Array.from(new Set(e.map(e=>String(e||"").trim()).filter(Boolean)))}catch{}return Array.from(new Set(t.split(",").map(e=>e.trim()).filter(Boolean)))}return[]},[]),j=(0,r.useCallback)(e=>{let t=String(e||"").match(/^---\n([\s\S]*?)\n---\n?/);if(!t)return[];let r=t[1].split("\n").find(e=>e.trim().toLowerCase().startsWith("depends_on:"));return r?v(r.slice(r.indexOf(":")+1).trim()):[]},[v]),y=(0,r.useCallback)((e,t)=>{let r=v(e.depends_on);if(r.length>0)return{...e,depends_on:r};let a="string"==typeof e?.content?j(e.content):[];if(a.length>0)return{...e,depends_on:a};let s=v(t?.depends_on);return s.length>0?{...e,depends_on:s}:e},[j,v]),k=(0,r.useCallback)(async()=>{try{let e=new URLSearchParams;a&&e.set("project",a),s&&e.set("status",s),n&&e.set("orphan","1");let t=await fetch(`/api/tasks?${e.toString()}`);if(!t.ok)throw Error("Failed to fetch tasks");let r=await t.json(),o=Array.isArray(r.tasks)?r.tasks.map(e=>y(e)):[];i(o),f(null)}catch(e){f(e instanceof Error?e:Error("Unknown error"))}finally{c(!1)}},[a,s,n]);(0,r.useEffect)(()=>{k()},[k]),(0,r.useEffect)(()=>{if(!t||!o)return;let e=setInterval(k,3e3);return()=>clearInterval(e)},[t,o,k]),(0,r.useEffect)(()=>{if(t||!o)return;let e={auth:{getSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600,user:{id:m.id,email:m.email,user_metadata:{name:m.name,full_name:m.name}}}},error:null}),signInWithOAuth:async()=>({error:Error("Auth disabled in AGX Board local mode")}),signOut:async()=>({error:null}),onAuthStateChange:()=>({data:{subscription:{unsubscribe(){}}}})},channel:()=>({on(){return this},subscribe(){return this}}),removeChannel(){}},r=e.channel("tasks-changes").on("postgres_changes",{event:"*",schema:"public",table:"tasks"},e=>{"INSERT"===e.eventType?i(t=>{let r=y(e.new);return t.some(e=>e.id===r.id)?t:[r,...t]}):"UPDATE"===e.eventType?i(t=>t.map(t=>t.id===e.new.id?y(e.new,t):t)):"DELETE"===e.eventType&&i(t=>t.filter(t=>t.id!==e.old.id))}).subscribe();return()=>{e.removeChannel(r)}},[o,t]),(0,r.useEffect)(()=>{if(t||!o)return;let e=setInterval(k,3e3);return()=>clearInterval(e)},[o,t,k]);let N=(0,r.useCallback)(async(e,t)=>{let r=await fetch("/api/tasks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:e,swarm_models:t})});if(!r.ok)throw Error((await r.json()).error||"Failed to create task");let{task:a}=await r.json(),s=y(a);return i(e=>e.some(e=>e.id===s.id)?e:[s,...e]),s},[e.realtime,y]),w=(0,r.useCallback)(async(e,t)=>{let r=await fetch(`/api/tasks/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=null;throw"function"==typeof r.json&&(e=await r.json().catch(e=>(console.warn("[useTasks] failed to parse response:",e),null))),Error(e?.error||e?.details||`Failed to update task (${r.status} ${r.statusText||"Error"})`)}let{task:a}=await r.json();return i(t=>t.map(t=>t.id===e?y({...t,...a},t):t)),y(a)},[e.realtime,y]),C=(0,r.useCallback)(async e=>{if(!(await fetch(`/api/tasks/${e}`,{method:"DELETE"})).ok)throw Error("Failed to delete task");i(t=>t.filter(t=>t.id!==e))},[e.realtime]),_=(0,r.useCallback)(async e=>{let t=await fetch("/api/queue/complete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to complete task stage");let{task:r}=await t.json();return i(t=>t.map(t=>t.id===e.taskId?y({...t,...r},t):t)),y(r)},[e.realtime,y]),S=(0,r.useCallback)(async e=>{x(e.taskId),b(null);try{let t=await fetch(`/api/orchestrator/tasks/${e.taskId}/cancel`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e.reason?{reason:e.reason}:{})});if(!t.ok){let e=await t.json().catch(()=>({})),r=e?.error||"Failed to cancel workflow";throw Error(r)}return t.json()}catch(t){let e=t instanceof Error?t:Error("Failed to cancel workflow");throw b(e),e}finally{x(null)}},[]),E=(0,r.useCallback)(async e=>{let t=await fetch(`/api/tasks/${e}`),r=await t.json().catch(e=>(console.warn("[useTasks] failed to parse response:",e),null));if(!t.ok)throw Error(r?.error||"Failed to fetch task details");return y(r?.task)},[y]),T=(0,r.useCallback)(async e=>{let t=await fetch("/api/tasks/assign-orphans",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_id:e})}),r=await t.json().catch(()=>({}));if(!t.ok)throw Error(r?.error||"Failed to assign orphan tasks");return await k(),{updatedCount:Number(r?.updatedCount||0),taskIds:Array.isArray(r?.taskIds)?r.taskIds:[]}},[k]);return{tasks:l,isLoading:d,error:u,cancellingTaskId:h,isCancelling:!!h,cancelError:g,refetch:k,createTask:N,updateTask:w,deleteTask:C,completeTaskStage:_,cancelWorkflow:S,fetchTask:E,assignOrphanTasksToProject:T}}],745649)},936381,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(522016),s=e.i(618566),n=e.i(186710);function o({project:e,onEdit:r,onDelete:a,onClick:s,onManageTasks:n}){let l=e.repos&&e.repos.length>0;return(0,t.jsxs)("div",{onClick:()=>s?.(e),className:`p-5 surface-card space-y-4
16
- ${s?"cursor-pointer hover:border-gray-300 dark:hover:border-gray-700 hover:shadow-md active:scale-[0.99]":""}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:e.name}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:e.slug})]}),(0,t.jsxs)("div",{className:"flex flex-col items-end gap-2",children:[(0,t.jsxs)("span",{className:"text-[11px] font-semibold text-[var(--muted-foreground)]",children:["Updated ",new Date(e.updated_at).toLocaleDateString()]}),(r||a||n)&&(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[n&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),n(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] bg-[var(--background)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-all",children:"Tasks"}),r&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),r(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-all bg-[var(--background)]",children:"Edit"}),a&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),a(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] text-[var(--destructive)] hover:border-[var(--destructive)] transition-all bg-[var(--background)]",children:"Delete"})]})]})]}),e.description&&(0,t.jsx)("p",{className:"text-sm text-[var(--foreground)] line-clamp-2",children:e.description}),e.ci_cd_info&&(0,t.jsxs)("div",{className:"text-sm",children:[(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-[12px] uppercase tracking-wide",children:"CI / CD"}),(0,t.jsx)("p",{className:"text-[14px] text-[var(--accent)] font-medium truncate",children:e.ci_cd_info})]}),e.metadata&&Object.keys(e.metadata).length>0&&(0,t.jsxs)("div",{className:"p-3 rounded-lg bg-[var(--muted)]/20 border border-dashed border-[var(--card-border)] space-y-1",children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Metadata"}),(0,t.jsx)("div",{className:"space-y-1",children:Object.entries(e.metadata??{}).filter(([e])=>"undefined"!==e&&""!==e).map(([e,r])=>(0,t.jsxs)("div",{className:"text-[12px] text-[var(--muted-foreground)] flex justify-between",children:[(0,t.jsx)("span",{className:"font-semibold",children:e}),(0,t.jsx)("span",{className:"truncate text-right",children:"string"==typeof r?r:JSON.stringify(r)})]},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-[12px] uppercase tracking-wider text-[var(--muted-foreground)]",children:"Folders"}),(0,t.jsx)("span",{className:"text-[12px] text-[var(--muted-foreground)]",children:l?`${e.repos.length} connected`:"Unlinked"})]}),l?(0,t.jsxs)("div",{className:"mt-3 space-y-2",children:[e.repos.slice(0,2).map(e=>(0,t.jsxs)("div",{className:"p-2 rounded-lg border border-[var(--card-border)] bg-[var(--background)] text-[11px]",children:[(0,t.jsx)("div",{className:"font-semibold truncate",children:e.name}),e.path&&(0,t.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:e.path})]},e.id)),e.repos.length>2&&(0,t.jsxs)("p",{className:"text-[10px] text-center text-[var(--muted-foreground)]",children:["+ ",e.repos.length-2," more"]})]}):(0,t.jsx)("p",{className:"mt-3 text-[12px] text-[var(--muted-foreground)]",children:"No folders added yet."})]})]})}var l=e.i(535208),i=e.i(865260);let d={in_progress:{title:"In Progress",icon:"🔄",color:"var(--status-in-progress)",description:"Currently being worked on by the daemon"},blocked:{title:"Blocked",icon:"🚧",color:"var(--status-blocked)",description:"Waiting for input or resolution"},queued:{title:"Queued",icon:"📋",color:"var(--status-queued)",description:"Ready to be picked up"},completed:{title:"Completed",icon:"✅",color:"var(--status-completed)",description:"Successfully finished"}};function c({tasks:e,onSelectTask:r,onStatusChange:a}){if(0===e.length)return(0,t.jsxs)("div",{className:"text-center py-20 animate-fade-in",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-[var(--card-bg)] border border-[var(--card-border)] mb-4",children:(0,t.jsx)("span",{className:"text-3xl",children:"📋"})}),(0,t.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"No tasks yet"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-sm max-w-md mx-auto",children:"Create your first task to get started. Tasks will appear here organized by status."})]});let s=e.filter(e=>"in_progress"===e.status),n=e.filter(e=>"queued"===e.status),o=e.filter(e=>"blocked"===e.status),l=e.filter(e=>"completed"===e.status||"failed"===e.status),u=(e,s)=>{if(0===s.length)return null;let n=d[e];return(0,t.jsxs)("section",{className:"mb-8 animate-fade-in-up",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-lg",style:{backgroundColor:`color-mix(in srgb, ${n.color} 10%, transparent)`},children:[(0,t.jsx)("span",{className:"text-lg",children:n.icon}),(0,t.jsx)("h3",{className:"text-sm font-semibold",style:{color:n.color},children:n.title}),(0,t.jsx)("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium",style:{backgroundColor:`color-mix(in srgb, ${n.color} 15%, transparent)`,color:n.color},children:s.length})]}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] hidden sm:block",children:n.description})]}),(0,t.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:s.map((e,s)=>(0,t.jsx)("div",{className:"animate-fade-in-up",style:{animationDelay:`${50*s}ms`},children:(0,t.jsx)(i.default,{task:e,onClick:()=>r?.(e),onStatusChange:a?t=>a(e.id,t):void 0})},e.id))})]})};return(0,t.jsxs)("div",{children:[u("in_progress",s),u("blocked",o),u("queued",n),u("completed",l)]})}var u=e.i(745649),p=e.i(524123);function m({project:e,onClose:r}){let{tasks:a,isLoading:s}=(0,u.useTasks)({project:e.slug});return(0,t.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:e=>e.target===e.currentTarget&&r(),children:(0,t.jsxs)("div",{className:"modal-content w-full max-w-5xl mx-2 sm:mx-auto bg-[var(--card-bg)] rounded-3xl border border-[var(--card-border)] shadow-2xl animate-scale-in flex flex-col max-h-[90vh]",children:[(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-xl font-bold",children:["Tasks for ",e.name]}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:"Viewing all tasks associated with this project."})]}),(0,t.jsx)("button",{onClick:r,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto p-8",children:s?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-20",children:[(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full mb-4"}),(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading project tasks..."})]}):(0,t.jsx)(c,{tasks:a})}),(0,t.jsx)("div",{className:"px-8 py-6 border-t border-[var(--card-border)] flex justify-end flex-shrink-0",children:(0,t.jsx)("button",{onClick:r,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Close"})})]})})}e.s(["default",0,function(){let e=(0,s.useRouter)(),i=(0,s.useSearchParams)(),{projects:d,isLoading:c,error:u,refetch:f,createProject:h,updateProject:x,deleteProject:g}=(0,p.useProjects)(),b=(0,l.useProjectFormState)(),[v,j]=(0,r.useState)(null),[y,k]=(0,r.useState)(!1),[N,w]=(0,r.useState)(null),{form:C,repos:_,handleRepoChange:S,addRepo:E,removeRepo:T,resetForm:P,hydrateFromProject:O,isSubmitting:L,setIsSubmitting:A,formError:$,setFormError:M,setForm:R}=b,I=()=>{j(null),P(),k(!0)},U=e=>{j(e),O(e),k(!0)};(0,r.useEffect)(()=>{let e=i.get("edit");if(!e||0===d.length||y)return;let t=d.find(t=>t.id===e);t&&U(t)},[i,d,y]);let D=(0,r.useCallback)(t=>{t.slug&&e.push(`/projects/${t.slug}`)},[e]),F=(0,r.useCallback)(e=>{w(e)},[]),B=(0,r.useCallback)(()=>{w(null)},[]),q=()=>{P(),k(!1),j(null),i.get("edit")&&e.replace("/projects")},J=async()=>{if(!C.name.trim())return void M("Project name is required");let e=_.find(e=>e.name.trim()&&!e.path.trim());if(e)return void M(`Local path is required for folder "${e.name}"`);M(null),A(!0);let t=(0,l.createProjectPayload)(C,_);try{v?await x(v.id,t):await h(t),q()}catch(e){M(e instanceof Error?e.message:"Failed to save project")}finally{A(!1)}},K=async e=>{if(window.confirm(`Delete project "${e.name}"? This cannot be undone.`))try{await g(e.id)}catch(e){alert(e instanceof Error?e.message:"Failed to delete project")}};return(0,t.jsx)(n.default,{children:(0,t.jsxs)("div",{className:"max-w-7xl mx-auto w-full flex flex-col min-h-full",children:[(0,t.jsxs)("header",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 py-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"Projects"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] mt-1",children:"Manage your projects and their folder contexts."})]}),(0,t.jsxs)("div",{className:"flex gap-3",children:[(0,t.jsx)("button",{onClick:f,className:"px-4 py-2 rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] hover:border-[var(--primary)] transition-all text-sm font-medium",children:"Refresh"}),(0,t.jsx)("button",{onClick:I,className:"btn-primary px-6 py-2 shadow-lg shadow-[var(--primary)]/20",children:"+ New Project"})]})]}),c?(0,t.jsx)("div",{className:"flex-1 flex items-center justify-center py-20",children:(0,t.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"}),(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] animate-pulse",children:"Loading projects..."})]})}):0===d.length?(0,t.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center py-20 animate-fade-in",children:[(0,t.jsx)("div",{className:"w-24 h-24 rounded-3xl bg-[var(--card-bg)] border border-[var(--card-border)] flex items-center justify-center text-4xl mb-6 shadow-xl",children:"📂"}),(0,t.jsx)("h2",{className:"text-2xl font-bold mb-2",children:"You have no projects"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-center max-w-sm mb-8 leading-relaxed",children:"Create your first project to start organizing your tasks and connecting your folders."}),(0,t.jsx)("button",{onClick:I,className:"btn-primary px-8 py-3 text-lg shadow-xl shadow-[var(--primary)]/20",children:"Create a Project"})]}):(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 pb-20",children:[(0,t.jsxs)(a.default,{href:"/projects/orphans",className:"p-5 rounded-2xl border border-dashed border-[var(--card-border)] bg-[var(--card-bg)] shadow-sm space-y-4 transition-all hover:border-[var(--primary)] hover:shadow-md",children:[(0,t.jsx)("div",{className:"flex items-start justify-between gap-4",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:"Orphan Tasks"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:"Unassigned"})]})}),(0,t.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:"Review tasks with empty project assignment and move them into the correct project."})]}),d.map(e=>(0,t.jsx)(o,{project:e,onEdit:U,onDelete:K,onManageTasks:F,onClick:D},e.id))]}),(0,t.jsx)(l.default,{isOpen:y,onClose:q,onSubmit:J,editingProject:v,form:C,repos:_,isSubmitting:L,formError:$,onFieldChange:(e,t)=>R(r=>({...r,[e]:t})),onRepoChange:S,onAddRepo:E,onRemoveRepo:T}),N&&(0,t.jsx)(m,{project:N,onClose:B})]})})}],936381)}]);
16
+ ${s?"cursor-pointer hover:border-gray-300 dark:hover:border-gray-700 hover:shadow-md active:scale-[0.99]":""}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:e.name}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:e.slug})]}),(0,t.jsxs)("div",{className:"flex flex-col items-end gap-2",children:[(0,t.jsxs)("span",{className:"text-[11px] font-semibold text-[var(--muted-foreground)]",children:["Updated ",new Date(e.updated_at).toLocaleDateString()]}),(r||a||n)&&(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[n&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),n(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] bg-[var(--background)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-all",children:"Tasks"}),r&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),r(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-all bg-[var(--background)]",children:"Edit"}),a&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),a(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] text-[var(--destructive)] hover:border-[var(--destructive)] transition-all bg-[var(--background)]",children:"Delete"})]})]})]}),e.description&&(0,t.jsx)("p",{className:"text-sm text-[var(--foreground)] line-clamp-2",children:e.description}),e.ci_cd_info&&(0,t.jsxs)("div",{className:"text-sm",children:[(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-[12px] uppercase tracking-wide",children:"CI / CD"}),(0,t.jsx)("p",{className:"text-[14px] text-[var(--accent)] font-medium truncate",children:e.ci_cd_info})]}),e.metadata&&Object.keys(e.metadata).length>0&&(0,t.jsxs)("div",{className:"p-3 rounded-lg bg-[var(--muted)]/20 border border-dashed border-[var(--card-border)] space-y-1",children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Metadata"}),(0,t.jsx)("div",{className:"space-y-1",children:Object.entries(e.metadata??{}).filter(([e])=>"undefined"!==e&&""!==e).map(([e,r])=>(0,t.jsxs)("div",{className:"text-[12px] text-[var(--muted-foreground)] flex justify-between",children:[(0,t.jsx)("span",{className:"font-semibold",children:e}),(0,t.jsx)("span",{className:"truncate text-right",children:"string"==typeof r?r:JSON.stringify(r)})]},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-[12px] uppercase tracking-wider text-[var(--muted-foreground)]",children:"Folders"}),(0,t.jsx)("span",{className:"text-[12px] text-[var(--muted-foreground)]",children:l?`${e.repos.length} connected`:"Unlinked"})]}),l?(0,t.jsxs)("div",{className:"mt-3 space-y-2",children:[e.repos.slice(0,2).map(e=>(0,t.jsxs)("div",{className:"p-2 rounded-lg border border-[var(--card-border)] bg-[var(--background)] text-[11px]",children:[(0,t.jsx)("div",{className:"font-semibold truncate",children:e.name}),e.path&&(0,t.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:e.path})]},e.id)),e.repos.length>2&&(0,t.jsxs)("p",{className:"text-[10px] text-center text-[var(--muted-foreground)]",children:["+ ",e.repos.length-2," more"]})]}):(0,t.jsx)("p",{className:"mt-3 text-[12px] text-[var(--muted-foreground)]",children:"No folders added yet."})]})]})}var l=e.i(535208),i=e.i(865260);let d={in_progress:{title:"In Progress",icon:"🔄",color:"var(--status-in-progress)",description:"Currently being worked on by the daemon"},blocked:{title:"Blocked",icon:"🚧",color:"var(--status-blocked)",description:"Waiting for input or resolution"},queued:{title:"Queued",icon:"📋",color:"var(--status-queued)",description:"Ready to be picked up"},completed:{title:"Completed",icon:"✅",color:"var(--status-completed)",description:"Successfully finished"}};function c({tasks:e,onSelectTask:r,onStatusChange:a}){if(0===e.length)return(0,t.jsxs)("div",{className:"text-center py-20 animate-fade-in",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-[var(--card-bg)] border border-[var(--card-border)] mb-4",children:(0,t.jsx)("span",{className:"text-3xl",children:"📋"})}),(0,t.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"No tasks yet"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-sm max-w-md mx-auto",children:"Create your first task to get started. Tasks will appear here organized by status."})]});let s=e.filter(e=>"in_progress"===e.status),n=e.filter(e=>"queued"===e.status),o=e.filter(e=>"blocked"===e.status),l=e.filter(e=>"completed"===e.status||"failed"===e.status),u=(e,s)=>{if(0===s.length)return null;let n=d[e];return(0,t.jsxs)("section",{className:"mb-8 animate-fade-in-up",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-lg",style:{backgroundColor:`color-mix(in srgb, ${n.color} 10%, transparent)`},children:[(0,t.jsx)("span",{className:"text-lg",children:n.icon}),(0,t.jsx)("h3",{className:"text-sm font-semibold",style:{color:n.color},children:n.title}),(0,t.jsx)("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium",style:{backgroundColor:`color-mix(in srgb, ${n.color} 15%, transparent)`,color:n.color},children:s.length})]}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] hidden sm:block",children:n.description})]}),(0,t.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:s.map((e,s)=>(0,t.jsx)("div",{className:"animate-fade-in-up",style:{animationDelay:`${50*s}ms`},children:(0,t.jsx)(i.default,{task:e,onClick:()=>r?.(e),onStatusChange:a?t=>a(e.id,t):void 0})},e.id))})]})};return(0,t.jsxs)("div",{children:[u("in_progress",s),u("blocked",o),u("queued",n),u("completed",l)]})}var u=e.i(745649),p=e.i(524123);function m({project:e,onClose:r}){let{tasks:a,isLoading:s}=(0,u.useTasks)({project:e.slug});return(0,t.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:e=>e.target===e.currentTarget&&r(),children:(0,t.jsxs)("div",{className:"modal-content w-full max-w-5xl mx-2 sm:mx-auto bg-[var(--card-bg)] rounded-3xl border border-[var(--card-border)] shadow-2xl animate-scale-in flex flex-col max-h-[90vh]",children:[(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-xl font-bold",children:["Tasks for ",e.name]}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:"Viewing all tasks associated with this project."})]}),(0,t.jsx)("button",{onClick:r,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto p-8",children:s?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-20",children:[(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full mb-4"}),(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading project tasks..."})]}):(0,t.jsx)(c,{tasks:a})}),(0,t.jsx)("div",{className:"px-8 py-6 border-t border-[var(--card-border)] flex justify-end flex-shrink-0",children:(0,t.jsx)("button",{onClick:r,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Close"})})]})})}e.s(["default",0,function(){let e=(0,s.useRouter)(),i=(0,s.useSearchParams)(),{projects:d,isLoading:c,error:u,refetch:f,createProject:h,updateProject:x,deleteProject:g}=(0,p.useProjects)(),b=(0,l.useProjectFormState)(),[v,j]=(0,r.useState)(null),[y,k]=(0,r.useState)(!1),[N,w]=(0,r.useState)(null),{form:C,repos:_,handleRepoChange:S,addRepo:E,removeRepo:T,resetForm:P,hydrateFromProject:O,isSubmitting:L,setIsSubmitting:A,formError:$,setFormError:M,setForm:R}=b,I=()=>{j(null),P(),k(!0)},U=e=>{j(e),O(e),k(!0)};(0,r.useEffect)(()=>{let e=i.get("edit");if(!e||0===d.length||y)return;let t=d.find(t=>t.id===e);t&&U(t)},[i,d,y]),(0,r.useEffect)(()=>{"1"!==i.get("new")||y||(I(),e.replace("/projects"))},[i]);let D=(0,r.useCallback)(t=>{t.slug&&e.push(`/projects/${t.slug}`)},[e]),F=(0,r.useCallback)(e=>{w(e)},[]),B=(0,r.useCallback)(()=>{w(null)},[]),q=()=>{P(),k(!1),j(null),i.get("edit")&&e.replace("/projects")},J=async()=>{if(!C.name.trim())return void M("Project name is required");let e=_.find(e=>e.name.trim()&&!e.path.trim());if(e)return void M(`Local path is required for folder "${e.name}"`);M(null),A(!0);let t=(0,l.createProjectPayload)(C,_);try{v?await x(v.id,t):await h(t),q()}catch(e){M(e instanceof Error?e.message:"Failed to save project")}finally{A(!1)}},K=async e=>{if(window.confirm(`Delete project "${e.name}"? This cannot be undone.`))try{await g(e.id)}catch(e){alert(e instanceof Error?e.message:"Failed to delete project")}};return(0,t.jsx)(n.default,{children:(0,t.jsxs)("div",{className:"max-w-7xl mx-auto w-full flex flex-col min-h-full",children:[(0,t.jsxs)("header",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 py-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"Projects"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] mt-1",children:"Manage your projects and their folder contexts."})]}),(0,t.jsxs)("div",{className:"flex gap-3",children:[(0,t.jsx)("button",{onClick:f,className:"px-4 py-2 rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] hover:border-[var(--primary)] transition-all text-sm font-medium",children:"Refresh"}),(0,t.jsx)("button",{onClick:I,className:"btn-primary px-6 py-2 shadow-lg shadow-[var(--primary)]/20",children:"+ New Project"})]})]}),c?(0,t.jsx)("div",{className:"flex-1 flex items-center justify-center py-20",children:(0,t.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"}),(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] animate-pulse",children:"Loading projects..."})]})}):0===d.length?(0,t.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center py-20 animate-fade-in",children:[(0,t.jsx)("div",{className:"w-24 h-24 rounded-3xl bg-[var(--card-bg)] border border-[var(--card-border)] flex items-center justify-center text-4xl mb-6 shadow-xl",children:"📂"}),(0,t.jsx)("h2",{className:"text-2xl font-bold mb-2",children:"You have no projects"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-center max-w-sm mb-8 leading-relaxed",children:"Create your first project to start organizing your tasks and connecting your folders."}),(0,t.jsx)("button",{onClick:I,className:"btn-primary px-8 py-3 text-lg shadow-xl shadow-[var(--primary)]/20",children:"Create a Project"})]}):(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 pb-20",children:[(0,t.jsxs)(a.default,{href:"/projects/orphans",className:"p-5 rounded-2xl border border-dashed border-[var(--card-border)] bg-[var(--card-bg)] shadow-sm space-y-4 transition-all hover:border-[var(--primary)] hover:shadow-md",children:[(0,t.jsx)("div",{className:"flex items-start justify-between gap-4",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:"Orphan Tasks"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:"Unassigned"})]})}),(0,t.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:"Review tasks with empty project assignment and move them into the correct project."})]}),d.map(e=>(0,t.jsx)(o,{project:e,onEdit:U,onDelete:K,onManageTasks:F,onClick:D},e.id))]}),(0,t.jsx)(l.default,{isOpen:y,onClose:q,onSubmit:J,editingProject:v,form:C,repos:_,isSubmitting:L,formError:$,onFieldChange:(e,t)=>R(r=>({...r,[e]:t})),onRepoChange:S,onAddRepo:E,onRemoveRepo:T}),N&&(0,t.jsx)(m,{project:N,onClose:B})]})})}],936381)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,906724,595807,e=>{"use strict";let t=(0,e.i(363732).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["default",0,t],595807),e.s(["Loader2",0,t],906724)},575479,e=>{"use strict";let t=(0,e.i(363732).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",0,t],575479)},741746,e=>{"use strict";let t=(0,e.i(363732).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",0,t],741746)},844118,e=>{e.n(e.i(984242))}]);