@mndrk/agx 2.4.8 → 2.4.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/README.md +22 -53
  2. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  3. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
  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 +2 -2
  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 +3 -3
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  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_client-reference-manifest.js +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +4 -4
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +4 -4
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page_client-reference-manifest.js +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.html +2 -2
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.rsc +4 -4
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +4 -4
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_head.segment.rsc +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_index.segment.rsc +2 -2
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_tree.segment.rsc +2 -2
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos/__PAGE__.segment.rsc +2 -2
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos.segment.rsc +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github.segment.rsc +1 -1
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations.segment.rsc +1 -1
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page_client-reference-manifest.js +1 -1
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page_client-reference-manifest.js +1 -1
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page_client-reference-manifest.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +4 -4
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +4 -4
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +4 -4
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +4 -4
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__8917bc4c._.js +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_22ab9b7c._.js +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5187dece._.js +1 -1
  159. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7752d2d2._.js +1 -1
  160. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7a31a76d._.js +3 -0
  161. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__9193284e._.js +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__c0bc6058._.js +7 -0
  163. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e8c6a1f1._.js +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_76330306._.js +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_page_tsx_b5cec607._.js +5 -5
  167. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_9a67cfaf._.js +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_ProjectModal_tsx_c447494c._.js +3 -0
  169. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +1 -1
  170. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +2 -2
  171. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eec36ab6._.js +1 -1
  172. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_fed01721._.js +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  174. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  175. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
  176. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  177. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  178. package/cloud-runtime/standalone/apps/local/.next/static/chunks/23b7c6b08d8bf807.js +1 -0
  179. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{d6a9cc66254693b8.js → 46add4300ec4ed84.js} +1 -1
  180. package/cloud-runtime/standalone/apps/local/.next/static/chunks/5709a6f7c5c182d6.js +1 -0
  181. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{ed606d6f94457578.css → 6d8a7494a0cea7a0.css} +1 -1
  182. package/cloud-runtime/standalone/apps/local/.next/static/chunks/9ac96f1f33a266f9.js +1 -0
  183. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8b87c2521c519a1f.js → afad1102543847bf.js} +1 -1
  184. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{c9a2c4b55bb76f4f.js → b27f760849f14f13.js} +5 -5
  185. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{52a7b1805199c6fb.js → b4716c6337e3335c.js} +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b53629835d2a70f0.js +16 -0
  187. package/cloud-runtime/standalone/apps/local/.next/static/chunks/bb99cb03648e6fae.js +1 -0
  188. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c8c0c4b13e08bb14.js +1 -0
  189. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{7bfbfcd072f8d61e.js → d0ba5f3dc5296486.js} +3 -3
  190. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{3fce625820bc2bd4.js → de56d09bb0de7dd5.js} +2 -2
  191. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1585dd5f9ec4866a.js → e5fdfbbe9bae1f03.js} +1 -1
  192. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{90dd4ab03ab145d1.js → f007705fe5db26f1.js} +1 -1
  193. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/route.ts +4 -1
  194. package/cloud-runtime/standalone/apps/local/app/api/projects/payload.ts +23 -9
  195. package/cloud-runtime/standalone/apps/local/app/api/projects/route.ts +4 -1
  196. package/cloud-runtime/standalone/apps/local/app/integrations/github/select-repos/page.tsx +2 -0
  197. package/cloud-runtime/standalone/apps/local/app/layout.tsx +1 -1
  198. package/cloud-runtime/standalone/apps/local/app/page.tsx +2 -2
  199. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +1 -1
  200. package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -3
  201. package/cloud-runtime/standalone/apps/local/components/ProjectModal.tsx +111 -91
  202. package/cloud-runtime/standalone/apps/local/components/TrackerBoard.tsx +2 -2
  203. package/cloud-runtime/standalone/apps/local/components/project-repo-validation.ts +65 -0
  204. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +22 -2
  205. package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +1 -1
  206. package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +2 -2
  207. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +6 -2
  208. package/cloud-runtime/standalone/apps/local/components/tracking/TrackerSetup.tsx +2 -2
  209. package/cloud-runtime/standalone/apps/local/worker/index.js +4 -2
  210. package/package.json +2 -2
  211. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__636799fb._.js +0 -3
  212. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e02a457c._.js +0 -3
  213. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_ae1a134f._.js +0 -7
  214. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0d22a723b9b96e65.js +0 -1
  215. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1bc8cc9cbb99c1ed.js +0 -1
  216. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c352706a0ad7e35d.js +0 -1
  217. package/cloud-runtime/standalone/apps/local/.next/static/chunks/cf33cb29946990e3.js +0 -16
  218. package/cloud-runtime/standalone/apps/local/.next/static/chunks/e3bdd1e0f385114e.js +0 -1
  219. /package/cloud-runtime/standalone/apps/local/.next/static/{O3Yu8lY-DN5fauB8GipIL → x7w3oijN4B1r7IvTuL96T}/_buildManifest.js +0 -0
  220. /package/cloud-runtime/standalone/apps/local/.next/static/{O3Yu8lY-DN5fauB8GipIL → x7w3oijN4B1r7IvTuL96T}/_clientMiddlewareManifest.json +0 -0
  221. /package/cloud-runtime/standalone/apps/local/.next/static/{O3Yu8lY-DN5fauB8GipIL → x7w3oijN4B1r7IvTuL96T}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},419920,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.HooksClientContext},731042,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.ServerInsertedHtml},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},263841,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.AppRouterContext},204246,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},490335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={BailoutToCSRError:function(){return g},isBailoutToCSRError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="BAILOUT_TO_CLIENT_SIDE_RENDERING";class g extends Error{constructor(a){super(`Bail out to client-side rendering: ${a}`),this.reason=a,this.digest=f}}function h(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===f}},446362,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(516909);function e(){let a=(0,d.useRouter)(),e=(0,d.useSearchParams)(),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)([]),[v,w]=(0,c.useState)(new Set),[x,y]=(0,c.useState)(""),[z,A]=(0,c.useState)("all"),[B,C]=(0,c.useState)(!0),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(null);(0,c.useEffect)(()=>{let a=e.get("access_token"),b=a||null;if(!b){G("Missing access token"),C(!1);return}if(a){let b=e.get("refresh_token"),c=e.get("expires_in"),d=e.get("scope"),f=e.get("session"),h=e.get("login"),j=e.get("expires_at");g(a),i(b),k(c),m(d),o(f),q(h),s(j),sessionStorage.setItem("github_token",a),b&&sessionStorage.setItem("github_refresh_token",b),c&&sessionStorage.setItem("github_expires_in",c),d&&sessionStorage.setItem("github_scope",d),f&&sessionStorage.setItem("github_session",f),h&&sessionStorage.setItem("github_login",h),j&&sessionStorage.setItem("github_expires_at",j),window.history.replaceState({},"","/integrations/github/select-repos")}else g(b),i(sessionStorage.getItem("github_refresh_token")),k(sessionStorage.getItem("github_expires_in")),m(sessionStorage.getItem("github_scope")),o(sessionStorage.getItem("github_session")),q(sessionStorage.getItem("github_login")),s(sessionStorage.getItem("github_expires_at"))},[e]),(0,c.useEffect)(()=>{f&&(async()=>{try{let a={Authorization:`token ${f}`,Accept:"application/vnd.github+json","User-Agent":"agx","X-GitHub-Api-Version":"2022-11-28"},b=[],c=1;for(;c<=10;){let d=`https://api.github.com/user/repos?per_page=100&page=${c}&visibility=all&affiliation=owner,collaborator,organization_member&sort=updated`,e=await fetch(d,{headers:a});if(!e.ok)throw Error(`Failed to fetch repos: ${e.status}`);let f=await e.json();if(b.push(...f),f.length<100)break;c++}u(b),C(!1)}catch(a){G(a instanceof Error?a.message:"Failed to fetch repos"),C(!1)}})()},[f]);let H=(0,c.useMemo)(()=>{let a=x.trim().toLowerCase();return t.filter(b=>("public"!==z||!b.private)&&("private"!==z||!!b.private)&&(!a||b.full_name.toLowerCase().includes(a)||(b.description??"").toLowerCase().includes(a)))},[t,x,z]),I=H.length>0&&H.every(a=>v.has(a.id)),J=async()=>{if(!f||0===v.size)return;E(!0);let b=t.filter(a=>v.has(a.id));try{await Promise.all(b.map(a=>fetch("/api/github/repos",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:a.owner.login,name:a.name,private:a.private})})))}catch(a){G(a instanceof Error?a.message:"Failed to save repos"),E(!1);return}let c=new URLSearchParams({access_token:f,repos:b.map(a=>a.full_name).join(",")});h&&c.set("refresh_token",h),j&&c.set("expires_in",j),l&&c.set("scope",l),n&&c.set("session",n),p&&c.set("login",p),r&&c.set("expires_at",r),l&&c.set("scopes",l),a.push(`/api/trackers/github/token-receive?${c.toString()}`)};return(0,b.jsx)("div",{className:"min-h-screen bg-[var(--background)] text-[var(--foreground)]",children:(0,b.jsxs)("div",{className:"max-w-3xl mx-auto px-6 py-10",children:[(0,b.jsxs)("header",{className:"mb-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)] mb-2",children:[(0,b.jsx)("span",{children:"GitHub"}),(0,b.jsx)("span",{children:"·"}),(0,b.jsx)("span",{children:"Connect"})]}),(0,b.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Select repositories"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] mt-1",children:"Pick the repos you want agx to track. You can change this later in project settings."}),l&&(0,b.jsxs)("p",{className:"text-[11px] text-[var(--muted-foreground)] mt-2 font-mono",children:["Token scopes: ",l]})]}),F?(0,b.jsx)("div",{className:"rounded-lg border border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed)] px-4 py-3 text-sm",children:F}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"relative flex-1",children:[(0,b.jsxs)("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--muted-foreground)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,b.jsx)("path",{d:"m21 21-4.3-4.3"})]}),(0,b.jsx)("input",{type:"text",value:x,onChange:a=>y(a.target.value),placeholder:"Search repositories...",className:"w-full pl-9 pr-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--input)] text-sm focus:outline-none focus:border-[var(--primary)] focus:bg-[var(--input-focus)] transition-colors"})]}),(0,b.jsx)("div",{className:"flex gap-1 rounded-lg border border-[var(--border)] p-1",children:["all","public","private"].map(a=>(0,b.jsx)("button",{onClick:()=>A(a),className:`px-3 py-1 text-xs rounded-md capitalize transition-colors ${z===a?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:a},a))})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("button",{onClick:()=>{w(a=>{let b=new Set(a);return I?H.forEach(a=>b.delete(a.id)):H.forEach(a=>b.add(a.id)),b})},disabled:0===H.length,className:"hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:[I?"Deselect all":"Select all",x||"all"!==z?` (${H.length} shown)`:""]}),v.size>0&&(0,b.jsx)("button",{onClick:()=>w(new Set),className:"hover:text-[var(--foreground)] transition-colors",children:"Clear selection"})]}),(0,b.jsx)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--card-bg)] overflow-hidden",children:(0,b.jsx)("div",{className:"max-h-[60vh] overflow-y-auto",children:B?(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:Array.from({length:6}).map((a,c)=>(0,b.jsxs)("div",{className:"px-4 py-3 flex items-center gap-3 animate-pulse",children:[(0,b.jsx)("div",{className:"w-4 h-4 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"w-6 h-6 rounded-full bg-[var(--muted)]"}),(0,b.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,b.jsx)("div",{className:"h-3 w-1/3 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"h-2 w-2/3 rounded bg-[var(--muted)]"})]})]},c))}):0===H.length?(0,b.jsx)("div",{className:"px-4 py-10 text-center text-sm text-[var(--muted-foreground)]",children:0===t.length?"No repositories found on your account.":"No repos match your search."}):(0,b.jsx)("ul",{className:"divide-y divide-[var(--border)]",children:H.map(a=>{let c=v.has(a.id);return(0,b.jsx)("li",{children:(0,b.jsxs)("label",{className:`flex items-start gap-3 px-4 py-3 cursor-pointer transition-colors ${c?"bg-[var(--primary-muted)]":"hover:bg-[var(--item-hover-bg)]"}`,children:[(0,b.jsx)("input",{type:"checkbox",checked:c,onChange:()=>{var b;return b=a.id,void w(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},className:"mt-1 accent-[var(--primary)]"}),(0,b.jsx)("img",{src:a.owner.avatar_url,alt:"",className:"w-6 h-6 rounded-full mt-0.5 flex-shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,b.jsx)("span",{className:"text-sm font-medium truncate",children:a.full_name}),a.private&&(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--muted)] text-[var(--muted-foreground)]",children:"Private"})]}),a.description&&(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:a.description}),(0,b.jsxs)("div",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:["Updated ",function(a){let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return"just now";let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);if(e<30)return`${e}d ago`;let f=Math.floor(e/30);return f<12?`${f}mo ago`:`${Math.floor(f/12)}y ago`}(a.updated_at)]})]})]})},a.id)})})})}),(0,b.jsxs)("div",{className:"flex items-center justify-between mt-4",children:[(0,b.jsxs)("span",{className:"text-sm text-[var(--muted-foreground)]",children:[v.size," selected"]}),(0,b.jsx)("button",{onClick:J,disabled:0===v.size||D,className:"px-4 py-2 rounded-lg bg-[var(--primary)] hover:bg-[var(--primary-hover)] text-[var(--primary-foreground)] text-sm font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:D?"Connecting...":`Continue with ${v.size} ${1===v.size?"repo":"repos"}`})]})]})]})})}a.s(["default",()=>e])}];
1
+ module.exports=[556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},419920,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.HooksClientContext},731042,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.ServerInsertedHtml},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},263841,(a,b,c)=>{"use strict";b.exports=a.r(433430).vendored.contexts.AppRouterContext},204246,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},490335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={BailoutToCSRError:function(){return g},isBailoutToCSRError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="BAILOUT_TO_CLIENT_SIDE_RENDERING";class g extends Error{constructor(a){super(`Bail out to client-side rendering: ${a}`),this.reason=a,this.digest=f}}function h(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===f}},446362,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(516909);function e(){let a=(0,d.useRouter)(),e=(0,d.useSearchParams)(),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)([]),[v,w]=(0,c.useState)(new Set),[x,y]=(0,c.useState)(""),[z,A]=(0,c.useState)("all"),[B,C]=(0,c.useState)(!0),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(null);(0,c.useEffect)(()=>{let a=e.get("access_token"),b=a||null;if(!b){G("Missing access token"),C(!1);return}if(a){let b=e.get("refresh_token"),c=e.get("expires_in"),d=e.get("scope"),f=e.get("session"),h=e.get("login"),j=e.get("expires_at");g(a),i(b),k(c),m(d),o(f),q(h),s(j),sessionStorage.setItem("github_token",a),b&&sessionStorage.setItem("github_refresh_token",b),c&&sessionStorage.setItem("github_expires_in",c),d&&sessionStorage.setItem("github_scope",d),f&&sessionStorage.setItem("github_session",f),h&&sessionStorage.setItem("github_login",h),j&&sessionStorage.setItem("github_expires_at",j),window.history.replaceState({},"","/integrations/github/select-repos")}else g(b),i(sessionStorage.getItem("github_refresh_token")),k(sessionStorage.getItem("github_expires_in")),m(sessionStorage.getItem("github_scope")),o(sessionStorage.getItem("github_session")),q(sessionStorage.getItem("github_login")),s(sessionStorage.getItem("github_expires_at"))},[e]),(0,c.useEffect)(()=>{f&&(async()=>{try{let a={Authorization:`token ${f}`,Accept:"application/vnd.github+json","User-Agent":"agx","X-GitHub-Api-Version":"2022-11-28"},b=[],c=1;for(;c<=10;){let d=`https://api.github.com/user/repos?per_page=100&page=${c}&visibility=all&affiliation=owner,collaborator,organization_member&sort=updated`,e=await fetch(d,{headers:a});if(!e.ok)throw Error(`Failed to fetch repos: ${e.status}`);let f=await e.json();if(b.push(...f),f.length<100)break;c++}u(b),C(!1)}catch(a){G(a instanceof Error?a.message:"Failed to fetch repos"),C(!1)}})()},[f]);let H=(0,c.useMemo)(()=>{let a=x.trim().toLowerCase();return t.filter(b=>("public"!==z||!b.private)&&("private"!==z||!!b.private)&&(!a||b.full_name.toLowerCase().includes(a)||(b.description??"").toLowerCase().includes(a)))},[t,x,z]),I=H.length>0&&H.every(a=>v.has(a.id)),J=async()=>{if(!f||0===v.size)return;E(!0);let b=t.filter(a=>v.has(a.id));try{await Promise.all(b.map(a=>fetch("/api/github/repos",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:a.owner.login,name:a.name,private:a.private})})))}catch(a){G(a instanceof Error?a.message:"Failed to save repos"),E(!1);return}let c=new URLSearchParams({access_token:f,repos:b.map(a=>a.full_name).join(",")});h&&c.set("refresh_token",h),j&&c.set("expires_in",j),l&&c.set("scope",l),n&&c.set("session",n),p&&c.set("login",p),r&&c.set("expires_at",r),l&&c.set("scopes",l),a.push(`/api/trackers/github/token-receive?${c.toString()}`)};return(0,b.jsx)("div",{className:"min-h-screen bg-[var(--background)] text-[var(--foreground)]",children:(0,b.jsxs)("div",{className:"max-w-3xl mx-auto px-6 py-10",children:[(0,b.jsxs)("header",{className:"mb-6",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)] mb-2",children:[(0,b.jsx)("span",{children:"GitHub"}),(0,b.jsx)("span",{children:"·"}),(0,b.jsx)("span",{children:"Connect"})]}),(0,b.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Select repositories"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] mt-1",children:"Pick the repos you want agx to track. You can change this later in project settings."}),l&&(0,b.jsxs)("p",{className:"text-[11px] text-[var(--muted-foreground)] mt-2 font-mono",children:["Token scopes: ",l]})]}),F?(0,b.jsx)("div",{className:"rounded-lg border border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed)] px-4 py-3 text-sm",children:F}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"relative flex-1",children:[(0,b.jsxs)("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--muted-foreground)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,b.jsx)("path",{d:"m21 21-4.3-4.3"})]}),(0,b.jsx)("input",{type:"text",value:x,onChange:a=>y(a.target.value),placeholder:"Search repositories...",className:"w-full pl-9 pr-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--input)] text-sm focus:outline-none focus:border-[var(--primary)] focus:bg-[var(--input-focus)] transition-colors"})]}),(0,b.jsx)("div",{className:"flex gap-1 rounded-lg border border-[var(--border)] p-1",children:["all","public","private"].map(a=>(0,b.jsx)("button",{onClick:()=>A(a),className:`px-3 py-1 text-xs rounded-md capitalize transition-colors ${z===a?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:a},a))})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("button",{onClick:()=>{w(a=>{let b=new Set(a);return I?H.forEach(a=>b.delete(a.id)):H.forEach(a=>b.add(a.id)),b})},disabled:0===H.length,className:"hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:[I?"Deselect all":"Select all",x||"all"!==z?` (${H.length} shown)`:""]}),v.size>0&&(0,b.jsx)("button",{onClick:()=>w(new Set),className:"hover:text-[var(--foreground)] transition-colors",children:"Clear selection"})]}),(0,b.jsx)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--card-bg)] overflow-hidden",children:(0,b.jsx)("div",{className:"max-h-[60vh] overflow-y-auto",children:B?(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:Array.from({length:6}).map((a,c)=>(0,b.jsxs)("div",{className:"px-4 py-3 flex items-center gap-3 animate-pulse",children:[(0,b.jsx)("div",{className:"w-4 h-4 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"w-6 h-6 rounded-full bg-[var(--muted)]"}),(0,b.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,b.jsx)("div",{className:"h-3 w-1/3 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"h-2 w-2/3 rounded bg-[var(--muted)]"})]})]},c))}):0===H.length?(0,b.jsx)("div",{className:"px-4 py-10 text-center text-sm text-[var(--muted-foreground)]",children:0===t.length?"No repositories found on your account.":"No repos match your search."}):(0,b.jsx)("ul",{className:"divide-y divide-[var(--border)]",children:H.map(a=>{let c=v.has(a.id);return(0,b.jsx)("li",{children:(0,b.jsxs)("label",{className:`flex items-start gap-3 px-4 py-3 cursor-pointer transition-colors ${c?"bg-[var(--primary-muted)]":"hover:bg-[var(--item-hover-bg)]"}`,children:[(0,b.jsx)("input",{type:"checkbox",checked:c,onChange:()=>{var b;return b=a.id,void w(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},className:"mt-1 accent-[var(--primary)]"}),(0,b.jsx)("img",{src:a.owner.avatar_url,alt:"",className:"w-6 h-6 rounded-full mt-0.5 flex-shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,b.jsx)("span",{className:"text-sm font-medium truncate",children:a.full_name}),a.private&&(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--muted)] text-[var(--muted-foreground)]",children:"Private"})]}),a.description&&(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:a.description}),(0,b.jsxs)("div",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:["Updated ",function(a){let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return"just now";let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);if(e<30)return`${e}d ago`;let f=Math.floor(e/30);return f<12?`${f}mo ago`:`${Math.floor(f/12)}y ago`}(a.updated_at)]})]})]})},a.id)})})})}),(0,b.jsxs)("div",{className:"flex items-center justify-between mt-4",children:[(0,b.jsxs)("span",{className:"text-sm text-[var(--muted-foreground)]",children:[v.size," selected"]}),(0,b.jsx)("button",{onClick:J,disabled:0===v.size||D,className:"px-4 py-2 rounded-lg bg-[var(--primary)] hover:bg-[var(--primary-hover)] text-[var(--primary-foreground)] text-sm font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:D?"Connecting...":`Continue with ${v.size} ${1===v.size?"repo":"repos"}`})]})]})]})})}a.s(["default",()=>e,"dynamic",0,"force-dynamic"])}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__e8c6a1f1._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[970393,a=>{"use strict";let b=(0,a.i(831709).default)("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);a.s(["PanelLeftOpen",()=>b],970393)},508869,a=>{"use strict";let b=(0,a.i(831709).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);a.s(["Sun",()=>b],508869)},523321,a=>{"use strict";let b=(0,a.i(831709).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);a.s(["Moon",()=>b],523321)},166621,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(850985),e=a.i(639211);function f(){let[a,f]=(0,c.useState)("unknown"),[g,h]=(0,c.useState)([]),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(!1),m=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/status");if(!a.ok)return void f("unknown");let b=await a.json();f("ok"===b.status?"ok":"degraded");let c=b.services.filter(a=>"agx-chat"===a.name||"agx-cloud"===a.name);h(c),j(new Date().toLocaleTimeString())}catch{f("unknown"),h([])}},[]);return(0,c.useEffect)(()=>{m();let a=setInterval(m,e.UI_POLL_SYSTEM_STATUS_MS);return()=>clearInterval(a)},[m]),(0,b.jsxs)("div",{className:"relative",onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),children:[(0,b.jsx)(d.default,{href:"/status",className:"inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] transition-all hover:bg-[var(--app-shell-subtle)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ring)]",title:"System status",children:(0,b.jsx)("span",{className:`h-2.5 w-2.5 rounded-full ${"ok"===a?"bg-emerald-400":"degraded"===a?"bg-amber-400":"bg-[var(--app-shell-muted)]"} ${"degraded"===a?"animate-pulse":""}`})}),k&&(0,b.jsxs)("div",{className:"absolute top-full right-0 z-50 mt-1.5 w-52 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] p-3 text-xs shadow-lg",children:[g.length>0?(0,b.jsx)("ul",{className:"space-y-1.5",children:g.map(a=>(0,b.jsxs)("li",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:a.name}),(0,b.jsx)("span",{className:"ok"===a.status?"text-emerald-600":"error"===a.status?"text-red-500":"text-[var(--muted-foreground)]",children:"ok"===a.status?"Healthy":"error"===a.status?a.detail||"Error":"Unavailable"})]},a.name))}):(0,b.jsx)("p",{className:"text-[var(--app-shell-soft-text)]",children:"Checking..."}),i&&(0,b.jsxs)("p",{className:"mt-2 border-t border-[var(--app-shell-border)] pt-1.5 text-[var(--app-shell-soft-text)]",children:["Last check: ",i]})]})]})}a.s(["StatusIndicator",()=>f])},550158,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(197180),e=a.i(811760),f=a.i(66456),g=a.i(157633),h=a.i(736868),i=a.i(831709);let j=(0,i.default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var k=a.i(353532),l=a.i(542341),m=a.i(824179),n=a.i(489461),o=a.i(97723),p=a.i(985339);let q=(0,i.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var r=a.i(737313),s=a.i(144462);let t=(0,i.default)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]),u=(0,i.default)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]),v=(0,i.default)("git-pull-request",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]]);var w=a.i(850985),x=a.i(529889),y=a.i(639211),z=a.i(8e4),A=a.i(188834),B=a.i(769677),C=a.i(599086),D=a.i(756490);let E=(0,i.default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]),F=(0,i.default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);var G=a.i(392045);let H={linear:"Linear",jira:"Jira",intercom:"Intercom",freshdesk:"Freshdesk",github:"GitHub"};function I(a){return H[a]??a.charAt(0).toUpperCase()+a.slice(1)}function J({projectSlug:a,trackerConnections:d,activeTrackerType:e,isTrackingActive:f,onLinkClick:g}){let h=[...d].sort((a,b)=>new Date(a.connectedAt).getTime()-new Date(b.connectedAt).getTime()),i=h.filter(a=>a.connected),j=h.filter(a=>!a.connected),l=i.some(a=>"github"===a.type),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{if(!l)return void n([]);let a=!1;return fetch("/api/github/repos",{cache:"no-store"}).then(a=>a.ok?a.json():{repos:[]}).then(b=>{a||n(b.repos??[])}).catch(()=>{a||n([])}),()=>{a=!0}},[l]),(0,b.jsxs)(b.Fragment,{children:[0===i.length&&0===j.length&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/connect`,onClick:g,className:`workspace-sidebar__nav-item ${f?"workspace-sidebar__nav-item--active":""}`,children:[(0,b.jsx)(k.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect Tracker"})]})}),i.map(c=>{let d=f&&e===c.type;return(0,b.jsxs)("div",{className:"workspace-sidebar__workspace-item",children:[(0,b.jsxs)("div",{className:"flex items-center",children:[(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/${c.type}`,onClick:g,className:`workspace-sidebar__nav-item flex-1 ${d?"workspace-sidebar__nav-item--active":""}`,"aria-current":d?"page":void 0,children:[(0,b.jsx)(G.TrackerIcon,{trackerType:c.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:I(c.type)})]}),"github"===c.type&&m.length>0&&(0,b.jsx)("button",{type:"button","aria-label":o?"Collapse GitHub repos":"Expand GitHub repos","aria-expanded":o,onClick:()=>p(a=>!a),className:"p-1 rounded hover:bg-[var(--item-hover-bg)] text-[var(--muted-foreground)]",children:(0,b.jsx)(D.ChevronRight,{size:12,className:`transition-transform ${o?"rotate-90":""}`})})]}),"github"===c.type&&o&&m.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-0.5 mt-0.5 pl-5",children:m.map(c=>(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/github?repo=${encodeURIComponent(c.id)}`,onClick:g,className:"workspace-sidebar__nav-item",title:c.id,children:[c.private?(0,b.jsx)(F,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}):(0,b.jsx)(E,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-xs text-[var(--muted-foreground)] truncate",children:c.name})]},c.id))})]},c.type)}),j.map(c=>(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/${c.type}`,onClick:g,className:"workspace-sidebar__nav-item",children:[(0,b.jsx)(G.TrackerIcon,{trackerType:c.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:I(c.type)}),(0,b.jsx)("span",{className:"ml-auto shrink-0",title:"Connection issue — click to reconnect",children:(0,b.jsx)(C.AlertTriangle,{size:12,className:"text-yellow-500"})})]})},c.type)),(i.length>0||j.length>0)&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/connect`,onClick:g,className:"workspace-sidebar__nav-item",children:[(0,b.jsx)(k.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect"})]})})]})}var K=a.i(70014),L=a.i(227444);function M({compact:a=!1}){return(0,b.jsxs)("span",{className:`workspace-sidebar__brand-logo${a?" workspace-sidebar__brand-logo--compact":""}`,"aria-hidden":"true",children:[(0,b.jsx)("img",{src:"/logo_dark.png",alt:"AGX",className:"block dark:hidden",style:{height:28}}),(0,b.jsx)("img",{src:"/logo_light.png",alt:"AGX",className:"hidden dark:block",style:{height:28}})]})}function N({label:a,children:e}){let f=(0,c.useRef)(null),[g,h]=(0,c.useState)(null);return(0,b.jsxs)("div",{ref:f,onMouseEnter:()=>{let a=f.current?.firstElementChild??f.current;if(!a)return;let b=a.getBoundingClientRect();h({top:b.top+b.height/2,left:b.right+8})},onMouseLeave:()=>h(null),style:{display:"contents"},children:[e,g&&(0,d.createPortal)((0,b.jsx)("div",{className:"workspace-sidebar__rail-tooltip",style:{top:g.top,left:g.left,transform:"translateY(-50%)"},children:a}),document.body)]})}function O({projects:a,activeProjectId:d,onSelectProject:f,onCreateProject:h}){let[i,j]=(0,c.useState)(!1),[n,o]=(0,c.useState)(""),p=(0,c.useRef)(null),q=(0,c.useRef)(null),r=a.find(a=>a.id===d)??a[0],s=n.trim()?a.filter(a=>a.name.toLowerCase().includes(n.toLowerCase())):a;return(0,c.useEffect)(()=>{if(!i)return;let a=a=>{p.current&&!p.current.contains(a.target)&&(j(!1),o(""))};return document.addEventListener("pointerdown",a),()=>document.removeEventListener("pointerdown",a)},[i]),(0,c.useEffect)(()=>{i&&q.current&&q.current.focus()},[i]),(0,b.jsxs)("div",{className:"relative px-3 pt-3 pb-2",ref:p,children:[(0,b.jsxs)("button",{type:"button",onClick:()=>j(!i),className:"flex w-full items-center gap-2 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] px-2.5 py-2 text-sm text-[var(--foreground)] transition-all hover:border-[var(--app-shell-border-strong)]",children:[(0,b.jsx)(g.Folder,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"flex-1 truncate text-left font-medium",children:r?.name??"Select project"}),(0,b.jsx)(e.ChevronDown,{size:14,className:`flex-shrink-0 text-[var(--muted-foreground)] transition-transform ${i?"rotate-180":""}`})]}),i&&(0,b.jsxs)("div",{className:"absolute left-3 right-3 z-50 mt-1 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg overflow-hidden",children:[(0,b.jsx)("div",{className:"p-2 border-b border-[var(--app-shell-border)]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-2 py-1.5",children:[(0,b.jsx)(l.Search,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("input",{ref:q,type:"text",value:n,onChange:a=>o(a.target.value),placeholder:"Search projects...",className:"flex-1 bg-transparent text-xs text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] outline-none"}),n&&(0,b.jsx)("button",{type:"button",onClick:()=>o(""),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,b.jsx)(m.X,{size:10})})]})}),(0,b.jsxs)("div",{className:"max-h-52 overflow-y-auto py-1",children:[s.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>{f?.(a.id),j(!1),o("")},className:`flex w-full items-center gap-2 px-3 py-1.5 text-sm transition-colors hover:bg-[var(--app-shell-subtle)] ${a.id===r?.id?"text-[var(--foreground)] font-medium":"text-[var(--muted-foreground)]"}`,children:[(0,b.jsx)(g.Folder,{size:12,className:"flex-shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.name})]},a.id)),0===s.length&&(0,b.jsx)("p",{className:"px-3 py-2 text-xs text-[var(--muted-foreground)]",children:"No projects found"})]}),(0,b.jsx)("div",{className:"border-t border-[var(--app-shell-border)] p-1",children:(0,b.jsxs)("button",{type:"button",onClick:()=>{j(!1),o(""),h()},className:"flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:[(0,b.jsx)(k.Plus,{size:12}),(0,b.jsx)("span",{children:"New project"})]})})]})]})}function P({threads:a,participants:e=[],activeThreadId:g,isLoading:i,isCreating:l,onSelectThread:C,onCreateThread:D,onRenameThread:E,onDeleteThread:F,deletingThreadId:G=null,renamingThreadId:H=null,activeParticipantIds:I=[],onToggleParticipantActive:P,visible:Q=!1,isRestoringActiveThread:R=!1,onToggle:S,onSearch:T,projects:U=[],onCreateProject:V,onUpdateProject:W,onDeleteProject:X,onAddAgentToProject:Y,onRemoveAgentFromProject:Z,onAddAgentViaForm:$,onReorderProjectAgents:_,onUpdateParticipant:aa,onSelectProject:ab,activeProjectId:ac=null,activeProjectView:ad=null,width:ae,onWidthChange:af,onAddTeam:ag,stageShow:ah,trackerConnections:ai=[]}){let aj,ak,{isTouchLayout:al,isPhone:am}=(0,x.useInputCapabilities)(),{updateAvailable:an}=function(){let[a,b]=(0,c.useState)({updateAvailable:!1,latestVersion:null});return(0,c.useEffect)(()=>{async function a(){try{let a=await fetch("/api/update-check");if(!a.ok)return;let c=await a.json(),d=c?.updateAvailable===!0,e="string"==typeof c?.latestVersion?c.latestVersion:null;b({updateAvailable:d,latestVersion:e})}catch{}}a();let c=setInterval(()=>{a()},y.UI_POLL_UPDATE_CHECK_MS);return()=>clearInterval(c)},[]),a}(),ao=(0,c.useRef)(!1);(0,c.useRef)(0);let ap=(0,c.useRef)(null),[aq,ar]=(0,c.useState)(!1),[as,at]=(0,c.useState)(new Set);(0,c.useEffect)(()=>{if(as.size>0||!U?.length)return;let a=U.find(a=>!1);at(new Set([a?.id??U[0].id]))},[U]);let[au,av]=(0,c.useState)(null),[aw,ax]=(0,c.useState)(new Set),[ay,az]=(0,c.useState)(!1),[aA,aB]=(0,c.useState)(null),[aC,aD]=(0,c.useState)(null),aE=(0,A.useProjectFormState)(),[aF,aG]=(0,c.useState)(null),aH=(0,c.useCallback)(a=>{a&&(a.focus(),a.select())},[]),[aI,aJ]=(0,c.useState)(null),[aK,aL]=(0,c.useState)(null),aM=aK?e.find(a=>a.id===aK)??null:null,[aN,aO]=(0,c.useState)(null),[aP,aQ]=(0,c.useState)({});(0,c.useEffect)(()=>{if(!U?.length)return;let a=!1,b=async()=>{try{let b=await fetch("/api/processes?enrich=1");if(!b.ok||a)return;let c=await b.json();if(a)return;let d=c.filter(a=>"spawning"===a.state||"running"===a.state),f={};for(let a of U){let b=a.slug.trim().toLowerCase(),c=new Set((a.thread_ids??[]).map(a=>a.trim()).filter(Boolean)),g=[],h=[],i=[],j=new Set,k=new Set,l=new Set;for(let a of d){let d=a.projectSlug?.trim().toLowerCase();if(!(d&&d===b||c.has(a.workspaceId)||c.has(a.threadId)))continue;let f=e.find(b=>b.id===a.agentId),m={agentId:a.agentId,color:f?.color??"#10b981"};a.linearIssueId?k.has(a.agentId)||(k.add(a.agentId),h.push(m)):a.threadId?.startsWith("objective-chat:")||a.workspaceId?.startsWith("objective-chat:")?j.has(a.agentId)||(j.add(a.agentId),g.push(m)):l.has(a.agentId)||(l.add(a.agentId),i.push(m))}(g.length||h.length||i.length)&&(f[a.id]={objectives:g,linear:h,chat:i})}aQ(f)}catch{}};b();let c=setInterval(b,3e3);return()=>{a=!0,clearInterval(c)}},[U,e]);let[aR,aS]=(0,c.useState)({}),[aT,aU]=(0,c.useState)(new Set),[aV,aW]=(0,c.useState)(new Set),aX=(0,c.useRef)(new Set);(0,c.useEffect)(()=>{Array.from(as).forEach(a=>{aV.has(a)||(aW(b=>new Set(b).add(a)),(async()=>{try{let b=await fetch(`/api/projects/${a}/teams`);if(!b.ok)return;let c=await b.json();aS(b=>({...b,[a]:c.teams??[]}))}catch{}})())})},[as,aV]);let[aY,aZ]=(0,c.useState)(null),a$=async()=>{if(!aA&&!aC)return;if(!aE.form.name.trim())return void aE.setFormError("Project name is required");let a=aE.repos.find(a=>a.name.trim()&&!a.path.trim());if(a)return void aE.setFormError(`Local path is required for folder "${a.name}"`);aE.setFormError(null),aE.setIsSubmitting(!0);let b=(0,A.createProjectPayload)(aE.form,aE.repos);aC?await W?.(aC.id,b):await V?.(b,aA?.threadId),aE.setIsSubmitting(!1),aB(null),aD(null)};(0,c.useEffect)(()=>{ar(!0)},[]),(0,c.useEffect)(()=>{let a=!1;async function b(){if(aN?.repoId)try{let b=await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(aN.repoId)}`),c=(b.ok?await b.json():{note:null}).note;a||aO(a=>a&&a.repoId===aN.repoId?{...a,generatedKnowledge:c?.content?[{id:c.id,content:c.content,created_at:c.updatedAt??c.createdAt}]:[],isLoadingKnowledge:!1}:a)}catch{a||aO(a=>a&&a.repoId===aN.repoId?{...a,generatedKnowledge:[],isLoadingKnowledge:!1}:a)}}return aN?.repoId&&b(),()=>{a=!0}},[aN?.repoId]);let a_=au?U.find(a=>a.id===au.projectId):null,a0=new Set(a_?.agents.map(a=>a.agent_id)??[]),a1=au?e.filter(a=>!a0.has(a.id)):[],a2=a.length>0,a3=!!Q,a4=(0,c.useCallback)(()=>{al&&S?.()},[al,S]),a5=[...a].sort((a,b)=>(a.title??"").localeCompare(b.title??"")),a6=new Map(a.map(a=>[a.id,a])),a7=U.filter(a=>!a.is_default),a8=a7.find(a=>a.id===ac)??a7[0]??null,{connections:a9}=(0,L.useTrackerConnections)(a8?.id??null),ba=ah??{home:!0,threads:!0,terminal:!0,objectives:!1,objectivesIsNew:!1,tracking:!1,teams:!1,folders:!1,scheduledTasks:!1,envVars:!1,notifications:!1};if((0,c.useEffect)(()=>{if(0===a7.length)return;let b=new Map,c=new Set,d=new Map;for(let a of a7){for(let b of a.thread_ids??[])"string"==typeof b&&b.trim()&&c.add(b);for(let c of(0,B.readProjectObjectivesWorkspace)(a.metadata).objectives){let d=c.id.trim();d&&b.set(d,{projectId:a.id,canonicalThreadId:c.threadId?.trim()||`objective-chat:${d}`})}}for(let b of a){let a=b.metadata&&"object"==typeof b.metadata?b.metadata:null,c="objective"===("string"==typeof a?.scope?a.scope:"")||b.id.startsWith("objective-chat:"),e=b.title?.trim().toLowerCase()??"";if(!c||!e)continue;let f=d.get(e)??[];f.push(b),d.set(e,f)}for(let[a,b]of d)d.set(a,[...b].sort((a,b)=>b.updatedAt-a.updatedAt));for(let e of a){let a=e.metadata&&"object"==typeof e.metadata?e.metadata:null,f="string"==typeof a?.scope?a.scope:"",g="string"==typeof a?.objectiveId?a.objectiveId.trim():"",h=e.id.startsWith("objective-chat:")?e.id.slice(15).trim():"",i=g||h,j="objective"===f||!!h,k=e.title?.trim().toLowerCase()??"",l=0===e.messages.length&&e.updatedAt<Date.now()-3e5;if(!j)continue;let m=i?b.get(i):void 0;if(m){if(e.id!==m.canonicalThreadId&&l){let a=`delete:${e.id}`;if(aX.current.has(a))continue;aX.current.add(a),Promise.resolve(F(e.id)).catch(b=>{aX.current.delete(a),console.warn("Failed to delete legacy objective thread",b)});continue}if(!c.has(e.id)){let a=`link:${e.id}`;if(aX.current.has(a))continue;aX.current.add(a),fetch(`/api/projects/${m.projectId}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e.id})}).then(a=>{if(!a.ok)throw Error(`Request failed with status ${a.status}`)}).catch(b=>{aX.current.delete(a),console.warn("Failed to re-link objective thread",b)})}continue}if(!l)continue;let n=k?d.get(k)??[]:[];if(n.length<2||n[0]?.id===e.id)continue;let o=`delete:${e.id}`;aX.current.has(o)||(aX.current.add(o),Promise.resolve(F(e.id)).catch(a=>{aX.current.delete(o),console.warn("Failed to delete orphan objective thread",a)}))}},[a7,F,a]),!function({focusTarget:a,shouldFocus:b}){(0,c.useEffect)(()=>{if(!b||"u"<typeof document)return;let c=a.current;if(!c||c instanceof HTMLButtonElement&&c.disabled)return;let d=document.activeElement;if(!(d&&(c===d||c.contains(d))))try{c.focus({preventScroll:!0})}catch{c.focus()}},[a,b])}({focusTarget:ap,shouldFocus:a3&&!(i&&!a2||R&&a2)&&!a2&&!l}),!a3){if(al)return null;let c=a8?.slug;return(0,b.jsxs)("aside",{id:"workspace-sidebar",className:"workspace-sidebar workspace-sidebar--collapsed","aria-label":"Workspace sidebar",children:[(0,b.jsx)("div",{className:"workspace-sidebar__brand",children:(0,b.jsx)("button",{type:"button",onClick:S,className:"workspace-sidebar__brand-trigger border-none outline-none cursor-pointer","aria-label":"Show chats",title:"Show chats",children:(0,b.jsx)(M,{compact:!0})})}),c&&(0,b.jsxs)("nav",{className:"workspace-sidebar__collapsed-rail",children:[(0,b.jsx)(N,{label:"Home",children:(0,b.jsx)(w.default,{href:`/projects/${c}`,className:`workspace-sidebar__rail-icon${"home"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(q,{size:16})})}),(ba.objectives||ba.tracking||ba.scheduledTasks)&&(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),ba.objectives&&(0,b.jsx)(N,{label:"Objectives",children:(0,b.jsx)(w.default,{href:`/projects/${c}/objectives`,className:`workspace-sidebar__rail-icon${"objectives"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(n.Target,{size:16})})}),ba.tracking&&(0,b.jsx)(N,{label:"Task Tracking",children:(0,b.jsx)(w.default,{href:`/projects/${c}/tracking`,className:`workspace-sidebar__rail-icon${"linear"===ad||"tracking"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(K.LinearIcon,{className:"h-4 w-4"})})}),ba.tracking&&(0,b.jsx)(N,{label:"Pull Requests",children:(0,b.jsx)(w.default,{href:`/projects/${c}/prs`,className:"workspace-sidebar__rail-icon",children:(0,b.jsx)(v,{size:16})})}),ba.scheduledTasks&&(0,b.jsx)(N,{label:"Scheduled Jobs",children:(0,b.jsx)(w.default,{href:`/projects/${c}/automations`,className:`workspace-sidebar__rail-icon${"automations"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(f.Zap,{size:16})})}),(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),(0,b.jsx)(N,{label:"Terminal",children:(0,b.jsx)(w.default,{href:`/projects/${c}/terminal`,className:`workspace-sidebar__rail-icon${"terminal"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(s.TerminalSquare,{size:16})})}),(0,b.jsx)(N,{label:"Chat",children:(0,b.jsx)("button",{type:"button",className:`workspace-sidebar__rail-icon${"thread"===ad?" workspace-sidebar__rail-icon--active":""}`,onClick:()=>{let b=a5.filter(a=>a8?.thread_ids?.includes(a.id)),c=a8?.thread_ids?.find(b=>a.some(a=>a.id===b))??b[0]?.id;c&&C(c)},children:(0,b.jsx)(r.MessageSquare,{size:16})})}),(ba.teams||ba.folders||ba.envVars||ba.notifications)&&(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),ba.teams&&(0,b.jsx)(N,{label:"Teams",children:(0,b.jsx)(w.default,{href:`/projects/${c}/teams`,className:`workspace-sidebar__rail-icon${"teams"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(p.Users,{size:16})})}),ba.folders&&(0,b.jsx)(N,{label:"Workspace Map",children:(0,b.jsx)(w.default,{href:`/projects/${c}/folders`,className:`workspace-sidebar__rail-icon${"folders"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(h.FolderGit2,{size:16})})}),ba.envVars&&(0,b.jsx)(N,{label:"Env Variables",children:(0,b.jsx)(w.default,{href:`/projects/${c}/env-vars`,className:`workspace-sidebar__rail-icon${"env-vars"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(t,{size:16})})}),ba.notifications&&(0,b.jsx)(N,{label:"Notifications",children:(0,b.jsx)(w.default,{href:`/projects/${c}/notifications`,className:`workspace-sidebar__rail-icon${"notifications"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(o.Bell,{size:16})})})]}),(0,b.jsxs)("div",{className:"mt-auto p-2 flex flex-col gap-2",children:[an&&c&&(0,b.jsx)(N,{label:"Update available",children:(0,b.jsx)(w.default,{href:`/projects/${c}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"workspace-sidebar__rail-icon",children:(0,b.jsx)(u,{size:16})})}),(0,b.jsx)(N,{label:"Join Discord",children:(0,b.jsx)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"workspace-sidebar__rail-icon",style:{backgroundColor:"#5865F2",color:"white"},onMouseEnter:a=>a.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:a=>a.currentTarget.style.backgroundColor="#5865F2",children:(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})})})})]})]})}return(0,b.jsxs)(b.Fragment,{children:[al?(0,b.jsx)("button",{type:"button",className:"workspace-sidebar__backdrop",onClick:S,"aria-label":"Close sidebar"}):null,(0,b.jsxs)("aside",{id:"workspace-sidebar",className:`workspace-sidebar${al?" workspace-sidebar--drawer":""}${al&&am?" workspace-sidebar--drawer-phone":""}`,"aria-label":"Workspace sidebar","aria-busy":i?"true":void 0,"aria-modal":al?"true":void 0,role:al?"dialog":void 0,style:!al&&ae?{width:`${ae}px`,minWidth:`${ae}px`}:void 0,children:[(0,b.jsxs)("div",{className:"workspace-sidebar__brand",children:[(0,b.jsx)("div",{className:"workspace-sidebar__brand-content",children:(0,b.jsx)(M,{})}),S&&(0,b.jsx)("button",{type:"button",onClick:S,"aria-label":"Hide chats",title:"Hide chats",className:"workspace-sidebar__brand-toggle ml-auto inline-flex h-7 w-7 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-all hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:(0,b.jsx)(j,{className:"h-4 w-4",strokeWidth:1.75})})]}),(0,b.jsxs)("div",{className:"workspace-sidebar__content",children:[(0,b.jsx)(O,{projects:a7,activeProjectId:ac,onSelectProject:a=>{ab?.(a),a4()},onCreateProject:()=>{aE.resetForm(),aD(null),aB({})}}),(()=>{if(!a8)return null;let a=a5.filter(a=>a8.thread_ids?.includes(a.id)),c=a8.thread_ids?.find(a=>a6.has(a))??a8.thread_ids?.[0]??a[0]?.id??null,d=a8.id===ac,i=d&&"home"===ad,j=d&&"objectives"===ad,k=d&&"automations"===ad,l=d&&"terminal"===ad,m=d&&"thread"===ad&&c===g,u=d&&"teams"===ad,v=d&&"folders"===ad,x=d&&"env-vars"===ad,y=d&&"notifications"===ad,A=aP[a8.id],B=ba.objectives||ba.scheduledTasks,D=ba.teams||ba.folders||ba.envVars||ba.notifications;return(0,b.jsxs)("nav",{className:"workspace-sidebar__section",children:[(0,b.jsx)("div",{className:"px-2 mt-2 mb-3",children:(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}`,onClick:a4,className:`workspace-sidebar__nav-item ${i?"workspace-sidebar__nav-item--active":""}`,"aria-current":i?"page":void 0,children:[(0,b.jsx)(q,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Home"})]})})}),B&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Automation"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[ba.objectives&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/objectives`,onClick:a4,className:`workspace-sidebar__nav-item ${j?"workspace-sidebar__nav-item--active":""}`,"aria-current":j?"page":void 0,children:[(0,b.jsx)(n.Target,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Objectives"}),ba.objectivesIsNew&&(0,b.jsx)("span",{className:"ml-auto inline-flex items-center rounded-full bg-indigo-500/15 px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-wider text-indigo-500 animate-pulse",children:"NEW"}),!ba.objectivesIsNew&&A?.objectives.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:A.objectives.slice(0,3).map(a=>{let c=e.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name,children:[(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(c?.id??a.agentId,16,a.color),alt:c?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})})]})}),ba.scheduledTasks&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/automations`,onClick:a4,className:`workspace-sidebar__nav-item ${k?"workspace-sidebar__nav-item--active":""}`,"aria-current":k?"page":void 0,children:[(0,b.jsx)(f.Zap,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Scheduled Jobs"})]})})]})]}),ba.tracking&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Task Tracking"})}),(0,b.jsx)("div",{className:"px-2 flex flex-col gap-0.5",children:(0,b.jsx)(J,{projectSlug:a8.slug,trackerConnections:ai,activeTrackerType:null,isTrackingActive:d&&("linear"===ad||"tracking"===ad),onLinkClick:a4})})]}),(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Tools"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/terminal`,onClick:a4,className:`workspace-sidebar__nav-item ${l?"workspace-sidebar__nav-item--active":""}`,"aria-current":l?"page":void 0,children:[(0,b.jsx)(s.TerminalSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Terminal"})]})}),(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:c?(0,b.jsxs)("button",{type:"button",className:`workspace-sidebar__nav-item ${m?"workspace-sidebar__nav-item--active":""}`,onClick:()=>{C(c),a4()},"aria-current":m?"page":void 0,children:[(0,b.jsx)(r.MessageSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Chat"}),A?.chat.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:A.chat.slice(0,3).map(a=>{let c=e.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name,children:[(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(c?.id??a.agentId,16,a.color),alt:c?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})})]}):(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/thread`,onClick:a4,className:`workspace-sidebar__nav-item ${m?"workspace-sidebar__nav-item--active":""}`,"aria-current":m?"page":void 0,children:[(0,b.jsx)(r.MessageSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Chat"})]})})]})]}),D&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Settings"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[ba.teams&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/teams`,onClick:a4,className:`workspace-sidebar__nav-item ${u?"workspace-sidebar__nav-item--active":""}`,"aria-current":u?"page":void 0,children:[(0,b.jsx)(p.Users,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Teams"})]})}),ba.folders&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/folders`,onClick:a4,className:`workspace-sidebar__nav-item ${v?"workspace-sidebar__nav-item--active":""}`,"aria-current":v?"page":void 0,children:[(0,b.jsx)(h.FolderGit2,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Workspace Map"})]})}),ba.envVars&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/env-vars`,onClick:a4,className:`workspace-sidebar__nav-item ${x?"workspace-sidebar__nav-item--active":""}`,"aria-current":x?"page":void 0,children:[(0,b.jsx)(t,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Environment Variables"})]})}),ba.notifications&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/notifications`,onClick:a4,className:`workspace-sidebar__nav-item ${y?"workspace-sidebar__nav-item--active":""}`,"aria-current":y?"page":void 0,children:[(0,b.jsx)(o.Bell,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Notifications"})]})})]})]})]})})()]}),(0,b.jsxs)("div",{className:"mt-auto px-3 pb-3 flex flex-col gap-2",children:[an&&a8&&(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-sm font-medium transition-colors text-[var(--foreground)] bg-[var(--app-shell-subtle)] hover:bg-[var(--app-shell-border)]",children:[(0,b.jsx)(u,{size:14}),"Update available"]}),(0,b.jsxs)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-white text-sm font-medium transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:a=>a.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:a=>a.currentTarget.style.backgroundColor="#5865F2",children:[(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})}),"Join Discord"]})]}),aq&&aN&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-4",onClick:()=>{aN.isSaving||aO(null)},children:(0,b.jsxs)("div",{className:"w-full max-w-lg rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4 border-b border-[var(--border)] px-5 py-4",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:aN.projectName}),(0,b.jsx)("h3",{className:"truncate text-base font-semibold text-[var(--foreground)]",children:aN.repoId?aN.name||"Folder":"Add Folder"})]}),(0,b.jsx)("button",{type:"button",className:"rounded-md p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--muted-foreground)]",onClick:()=>{aN.isSaving||aO(null)},"aria-label":"Close folder details",disabled:aN.isSaving,children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"space-y-4 px-5 py-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:aN.name,onChange:a=>aO(b=>b?{...b,name:a.target.value,error:null}:b),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",disabled:aN.isSaving,placeholder:"e.g. Frontend, API Docs, Design System"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{value:aN.path,onChange:a=>aO(b=>b?{...b,path:a.target.value,error:null}:b),className:"flex-1 rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 font-mono text-xs text-[var(--foreground)]",disabled:aN.isSaving,placeholder:"Local path to folder"}),(0,b.jsx)("button",{type:"button",className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",disabled:aN.isSaving,onClick:async()=>{try{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json();b.path&&aO(a=>a?{...a,path:b.path,error:null}:a)}catch{}},children:"Browse"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Notes"}),(0,b.jsx)("textarea",{value:aN.notes,onChange:a=>aO(b=>b?{...b,notes:a.target.value,error:null}:b),className:"min-h-28 w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-3 text-sm text-[var(--foreground)] whitespace-pre-wrap",disabled:aN.isSaving,placeholder:"Coding conventions, deploy steps, doc standards, ownership rules..."})]}),aN.repoId?(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Living Note"}),aN.isLoadingKnowledge?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading note…"}):aN.generatedKnowledge.length>0?(0,b.jsx)("div",{className:"space-y-2",children:aN.generatedKnowledge.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,b.jsx)("div",{children:a.content}),a.created_at?(0,b.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(a.created_at).toLocaleString()}):null]},a.id))}):(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No note yet."})]}):null,aN.error?(0,b.jsx)("p",{className:"text-xs text-red-600",children:aN.error}):null,(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-[var(--border)] pt-4",children:[(0,b.jsx)("button",{type:"button",className:"rounded-lg px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",onClick:()=>aO(null),disabled:aN.isSaving,children:"Cancel"}),(0,b.jsx)("button",{type:"button",className:"rounded-lg bg-[var(--foreground)] px-3 py-2 text-sm font-medium text-[var(--card-bg)] transition-colors hover:bg-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-60",disabled:aN.isSaving||!W,onClick:async()=>{let a=U.find(a=>a.id===aN.projectId);if(!a)return void aO(a=>a?{...a,error:"Project not found."}:a);let b=aN.name.trim(),c=aN.path.trim();if(!b)return void aO(a=>a?{...a,error:"Folder name is required."}:a);if(!c)return void aO(a=>a?{...a,error:"Folder path is required."}:a);aO(a=>a?{...a,isSaving:!0,error:null}:a);try{let d=aN.repoId?a.repos.map(a=>a.id===aN.repoId?{id:a.id,name:b,path:c,git_url:aN.gitUrl.trim()||void 0,notes:aN.notes.trim()||void 0}:{id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes}):[...a.repos.map(a=>({id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes})),{name:b,path:c,git_url:aN.gitUrl.trim()||void 0,notes:aN.notes.trim()||void 0}];await W?.(a.id,{repos:d}),aO(null)}catch(a){aO(b=>b?{...b,isSaving:!1,error:a instanceof Error?a.message:"Failed to save folder details."}:b)}},children:aN.isSaving?"Saving...":aN.repoId?"Save":"Add Folder"})]})]})]})}),document.body),aq&&au&&!ay&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>av(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 max-h-[70vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsxs)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",a_?.name??"project"]}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>av(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"overflow-y-auto py-1 flex-1",children:[(0,b.jsxs)("button",{type:"button",className:"w-full flex items-center gap-3 px-4 py-2.5 text-sm text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors border-b border-[var(--border)]",onClick:()=>az(!0),children:[(0,b.jsx)(k.Plus,{size:14,className:"text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"Create new agent"})]}),0===a1.length?(0,b.jsx)("p",{className:"px-4 py-6 text-xs text-[var(--muted-foreground)] text-center",children:"All agents are already in this project"}):a1.map(a=>{let c=aw.has(a.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${c?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onClick:()=>{ax(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},children:[(0,b.jsx)("div",{className:`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${c?"bg-[var(--foreground)] border-[var(--foreground)]":"border-[var(--border)]"}`,children:c&&(0,b.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,b.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(a.id,24,a.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,b.jsx)("div",{className:"truncate font-medium text-xs",children:a.name}),(0,b.jsx)("div",{className:"truncate text-[11px] text-[var(--muted-foreground)]",children:a.model})]})]},a.id)})]}),a1.length>0&&(0,b.jsxs)("div",{className:"px-4 py-3 border-t border-[var(--border)] flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>av(null),children:"Cancel"}),(0,b.jsxs)("button",{type:"button",disabled:0===aw.size,className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>{for(let a of aw)Y?.(au.projectId,a);av(null)},children:["Add ",aw.size>0?`(${aw.size})`:""]})]})]})}),document.body),aq&&ay&&(0,d.createPortal)((0,b.jsx)(z.AgentForm,{title:"Create new agent",initial:{name:"",provider:"claude",model:"",identity:"",skills:[],skillBindings:[]},submitLabel:"Create & Add",projects:U?.filter(a=>!a.is_default).map(b=>{let c=(b.thread_ids??[]).map(b=>a.find(a=>a.id===b)?.title?.trim()).filter(Boolean).join(", ")||"No chat";return{id:b.id,name:b.name,label:`${c} › ${b.name}`}}),initialProjectIds:au?[au.projectId]:[],onSubmit:async(a,b)=>{let c=["#D97706","#2563EB","#059669","#DC2626","#7C3AED","#DB2777","#0891B2"],d=c[e.length%c.length],f=a.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),g=b?.[0],h=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:f,name:a.name,provider:a.provider,model:a.model,color:a.color??d,...a.role?{role:a.role}:{},...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[],...g?{projectId:g}:{}})});if(h.ok){let a=await h.json().catch(()=>({})),c="string"==typeof a?.id&&a.id.trim()?a.id.trim():f;for(let a of(b??[]).slice(1))Y?.(a,c);az(!1),av(null)}},onCancel:()=>{az(!1)}}),document.body),aq&&aF&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>aG(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:aF.title}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>aG(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("form",{className:"px-4 py-4 flex flex-col gap-3",onSubmit:a=>{a.preventDefault();let b=new FormData(a.currentTarget),c=b.get("value")?.trim();c&&(aF.onSubmit(c),aG(null))},children:[(0,b.jsx)("input",{ref:aH,name:"value",type:"text",defaultValue:aF.defaultValue,placeholder:aF.placeholder,className:"w-full px-3 py-2 text-sm border border-[var(--border)] rounded-lg outline-none focus:border-[var(--border)] focus:ring-1 focus:ring-[var(--border)] transition-all"}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>aG(null),children:"Cancel"}),(0,b.jsx)("button",{type:"submit",className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] transition-colors",children:aF.defaultValue?"Save":"Create"})]})]})]})}),document.body),aq&&aI&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>aJ(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:aI.title}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>aJ(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"px-4 py-4 flex flex-col gap-4",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:aI.message}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>aJ(null),children:"Cancel"}),(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs font-medium text-white bg-red-600 rounded-lg hover:bg-red-700 transition-colors",onClick:()=>{aI.onConfirm(),aJ(null)},children:"Delete"})]})]})]})}),document.body),aq&&(aA||aC)&&(0,d.createPortal)((0,b.jsx)(A.default,{isOpen:!0,onClose:()=>{aE.resetForm(),aB(null),aD(null)},onSubmit:()=>void a$(),editingProject:aC,form:aE.form,repos:aE.repos,isSubmitting:aE.isSubmitting,formError:aE.formError,onFieldChange:(a,b)=>aE.setForm(c=>({...c,[a]:b})),onRepoChange:aE.handleRepoChange,onAddRepo:aE.addRepo,onRemoveRepo:aE.removeRepo}),document.body),aq&&aM&&(0,d.createPortal)((aj=U.filter(a=>a.agents.some(a=>a.agent_id===aM.id)),ak=U.filter(a=>!a.agents.some(a=>a.agent_id===aM.id)),(0,b.jsx)(z.AgentForm,{title:"Edit agent",initial:{name:aM.name,role:aM.role||"",provider:aM.provider,model:aM.model||"",identity:aM.identity||"",color:aM.color,skills:aM.skills||[],skillBindings:aM.skillBindings||[]},agentId:aM.id,submitLabel:"Save",projectMemberships:{current:aj.map(a=>({id:a.id,name:a.name,is_default:!!a.is_default})),available:ak.map(a=>({id:a.id,name:a.name}))},onAddToProject:Y?a=>Y(a,aM.id):void 0,onRemoveFromProject:Z?a=>Z(a,aM.id):void 0,onSubmit:async a=>{aa&&await aa({...aM,name:a.name,role:a.role||void 0,provider:a.provider,model:a.model,color:a.color??aM.color,...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[]}),aL(null)},onCancel:()=>aL(null)})),document.body),af&&!al&&(0,b.jsx)("div",{className:"absolute right-0 top-0 bottom-0 z-20 w-1 cursor-col-resize group",onMouseDown:a=>{a.preventDefault(),ao.current=!0;let b=a.clientX,c=ae??368;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let d=a=>{af(Math.max(200,Math.min(600,c+a.clientX-b)))},e=()=>{ao.current=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",e)};window.addEventListener("mousemove",d),window.addEventListener("mouseup",e)},children:(0,b.jsx)("div",{className:"absolute inset-y-0 right-0 w-1 transition-colors hover:bg-[var(--primary)]/40 group-hover:bg-[var(--primary)]/40"})})]})]})}a.s(["WorkspaceSidebar",()=>P],550158)},111013,a=>{"use strict";var b=a.i(786220),c=a.i(516909),d=a.i(870630);function e(){}let f=a=>[...a].sort((a,b)=>b.createdAt-a.createdAt);function g(a){let g=(0,c.useSearchParams)(),h=(a||g.get("thread")||"").trim()||null,i=(0,b.useRef)(!0),[j,k]=(0,b.useState)([]),[l,m]=(0,b.useState)(null),[n,o]=(0,b.useState)(!0),[p,q]=(0,b.useState)(!0),[r,s]=(0,b.useState)(!1),[t,u]=(0,b.useState)(null),[v,w]=(0,b.useState)(null),x=(0,b.useRef)(!1),y=(0,b.useCallback)(a=>{m(a)},[]);(0,b.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]),(0,b.useEffect)(()=>{let a=!1;return(async()=>{try{var b;let c,g=await d.threadService.listThreads();if(h&&!g.some(a=>a.id===h)){let a=await d.threadService.createThread({id:h});g=f([...g.filter(b=>b.id!==a.id),a])}if(a||!i.current)return;k(g);let j=h||null,{threadId:l,shouldClearSavedId:n,restoredFromStorage:o}=(b=g,c=b[0]?.id??null,j?b.some(a=>a.id===j)?{threadId:j,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:c,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:c,shouldClearSavedId:!1,restoredFromStorage:!1});n&&e(),x.current||(x.current=!0),o&&l?y(l):l?m(a=>a??l):m(null)}catch(a){console.error("Failed to load threads",a)}finally{i.current&&(o(!1),q(!1))}})(),()=>{a=!0}},[h,y]),(0,b.useEffect)(()=>{x.current&&(l||e())},[l]);let z=(0,b.useCallback)(async a=>{s(!0);try{let b=await d.threadService.createThread(a);if(!i.current)return b;return k(a=>f([...a.filter(a=>a.id!==b.id),b])),m(b.id),b}catch(a){throw console.error("Failed to create thread",a),a}finally{i.current&&s(!1)}},[]),A=(0,b.useCallback)(async a=>{if(a){u(a);try{if(await d.threadService.deleteThread(a),!i.current)return;let b=[];k(c=>b=f(c.filter(b=>b.id!==a))),m(c=>c===a?b[0]?.id??null:c)}catch(a){throw console.error("Failed to delete thread",a),a}finally{i.current&&u(null)}}},[]),B=(0,b.useCallback)(async(a,b)=>{let c=a.trim(),e=b.trim();if(c&&e){w(c);try{let a=await d.threadService.renameThread(c,e);if(!a||!i.current)return;k(b=>f(b.map(b=>b.id===a.id?a:b)))}catch(a){throw console.error("Failed to rename thread",a),a}finally{i.current&&w(a=>a===c?null:a)}}},[]),C=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.saveThreadMessages(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread messages",a)}},[]),D=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadStatus(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread status",a)}},[]),E=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadOutcomeNote(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread outcome note",a)}},[]),F=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageThreadStatus(a,b,c);if(!e||!i.current)return;k(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message thread status",a)}},[]),G=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageOutcomeNote(a,b,c);if(!e||!i.current)return;k(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message outcome note",a)}},[]),H=null!==l&&t===l;return{threads:j,activeThreadId:l,selectThread:y,createThread:z,deleteThread:A,isLoading:n,isRestoringActiveThread:p,isCreating:r,deletingThreadId:t,renamingThreadId:v,isDeletingActiveThread:H,updateThreadMessages:C,renameThread:B,updateThreadStatus:D,updateThreadOutcomeNote:E,updateMessageThreadStatus:F,updateMessageOutcomeNote:G}}a.s(["useThreadState",()=>g],111013)},455106,a=>{"use strict";let b={threadSidebarVisible:!1};function c(){return({...b}).threadSidebarVisible}function d(a){}a.s(["loadWorkspaceSidebarVisible",()=>c,"persistWorkspaceSidebarVisible",()=>d])}];
1
+ module.exports=[970393,a=>{"use strict";let b=(0,a.i(831709).default)("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);a.s(["PanelLeftOpen",()=>b],970393)},508869,a=>{"use strict";let b=(0,a.i(831709).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);a.s(["Sun",()=>b],508869)},523321,a=>{"use strict";let b=(0,a.i(831709).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);a.s(["Moon",()=>b],523321)},166621,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(850985),e=a.i(639211);function f(){let[a,f]=(0,c.useState)("unknown"),[g,h]=(0,c.useState)([]),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(!1),m=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/status");if(!a.ok)return void f("unknown");let b=await a.json();f("ok"===b.status?"ok":"degraded");let c=b.services.filter(a=>"agx-chat"===a.name||"agx-cloud"===a.name);h(c),j(new Date().toLocaleTimeString())}catch{f("unknown"),h([])}},[]);return(0,c.useEffect)(()=>{m();let a=setInterval(m,e.UI_POLL_SYSTEM_STATUS_MS);return()=>clearInterval(a)},[m]),(0,b.jsxs)("div",{className:"relative",onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),children:[(0,b.jsx)(d.default,{href:"/status",className:"inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] transition-all hover:bg-[var(--app-shell-subtle)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ring)]",title:"System status",children:(0,b.jsx)("span",{className:`h-2.5 w-2.5 rounded-full ${"ok"===a?"bg-emerald-400":"degraded"===a?"bg-amber-400":"bg-[var(--app-shell-muted)]"} ${"degraded"===a?"animate-pulse":""}`})}),k&&(0,b.jsxs)("div",{className:"absolute top-full right-0 z-50 mt-1.5 w-52 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] p-3 text-xs shadow-lg",children:[g.length>0?(0,b.jsx)("ul",{className:"space-y-1.5",children:g.map(a=>(0,b.jsxs)("li",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:a.name}),(0,b.jsx)("span",{className:"ok"===a.status?"text-emerald-600":"error"===a.status?"text-red-500":"text-[var(--muted-foreground)]",children:"ok"===a.status?"Healthy":"error"===a.status?a.detail||"Error":"Unavailable"})]},a.name))}):(0,b.jsx)("p",{className:"text-[var(--app-shell-soft-text)]",children:"Checking..."}),i&&(0,b.jsxs)("p",{className:"mt-2 border-t border-[var(--app-shell-border)] pt-1.5 text-[var(--app-shell-soft-text)]",children:["Last check: ",i]})]})]})}a.s(["StatusIndicator",()=>f])},550158,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(197180),e=a.i(811760),f=a.i(66456),g=a.i(157633),h=a.i(736868),i=a.i(831709);let j=(0,i.default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var k=a.i(353532),l=a.i(542341),m=a.i(824179),n=a.i(489461),o=a.i(97723),p=a.i(985339);let q=(0,i.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var r=a.i(737313),s=a.i(144462);let t=(0,i.default)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]),u=(0,i.default)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]),v=(0,i.default)("git-pull-request",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]]);var w=a.i(850985),x=a.i(529889),y=a.i(639211),z=a.i(8e4),A=a.i(188834),B=a.i(365370),C=a.i(769677),D=a.i(599086),E=a.i(756490);let F=(0,i.default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]),G=(0,i.default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);var H=a.i(392045);let I={linear:"Linear",jira:"Jira",intercom:"Intercom",freshdesk:"Freshdesk",github:"GitHub"};function J(a){return I[a]??a.charAt(0).toUpperCase()+a.slice(1)}function K({projectSlug:a,trackerConnections:d,activeTrackerType:e,isTrackingActive:f,onLinkClick:g}){let h=[...d].sort((a,b)=>new Date(a.connectedAt).getTime()-new Date(b.connectedAt).getTime()),i=h.filter(a=>a.connected),j=h.filter(a=>!a.connected),l=i.some(a=>"github"===a.type),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{if(!l)return void n([]);let a=!1;return fetch("/api/github/repos",{cache:"no-store"}).then(a=>a.ok?a.json():{repos:[]}).then(b=>{a||n(b.repos??[])}).catch(()=>{a||n([])}),()=>{a=!0}},[l]),(0,b.jsxs)(b.Fragment,{children:[0===i.length&&0===j.length&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/connect`,onClick:g,className:`workspace-sidebar__nav-item ${f?"workspace-sidebar__nav-item--active":""}`,children:[(0,b.jsx)(k.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect Tracker"})]})}),i.map(c=>{let d=f&&e===c.type;return(0,b.jsxs)("div",{className:"workspace-sidebar__workspace-item",children:[(0,b.jsxs)("div",{className:"flex items-center",children:[(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/${c.type}`,onClick:g,className:`workspace-sidebar__nav-item flex-1 ${d?"workspace-sidebar__nav-item--active":""}`,"aria-current":d?"page":void 0,children:[(0,b.jsx)(H.TrackerIcon,{trackerType:c.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:J(c.type)})]}),"github"===c.type&&m.length>0&&(0,b.jsx)("button",{type:"button","aria-label":o?"Collapse GitHub repos":"Expand GitHub repos","aria-expanded":o,onClick:()=>p(a=>!a),className:"p-1 rounded hover:bg-[var(--item-hover-bg)] text-[var(--muted-foreground)]",children:(0,b.jsx)(E.ChevronRight,{size:12,className:`transition-transform ${o?"rotate-90":""}`})})]}),"github"===c.type&&o&&m.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-0.5 mt-0.5 pl-5",children:m.map(c=>(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/github?repo=${encodeURIComponent(c.id)}`,onClick:g,className:"workspace-sidebar__nav-item",title:c.id,children:[c.private?(0,b.jsx)(G,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}):(0,b.jsx)(F,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-xs text-[var(--muted-foreground)] truncate",children:c.name})]},c.id))})]},c.type)}),j.map(c=>(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/${c.type}`,onClick:g,className:"workspace-sidebar__nav-item",children:[(0,b.jsx)(H.TrackerIcon,{trackerType:c.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:J(c.type)}),(0,b.jsx)("span",{className:"ml-auto shrink-0",title:"Connection issue — click to reconnect",children:(0,b.jsx)(D.AlertTriangle,{size:12,className:"text-yellow-500"})})]})},c.type)),(i.length>0||j.length>0)&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/connect`,onClick:g,className:"workspace-sidebar__nav-item",children:[(0,b.jsx)(k.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect"})]})})]})}var L=a.i(70014),M=a.i(227444);function N({compact:a=!1}){return(0,b.jsxs)("span",{className:`workspace-sidebar__brand-logo${a?" workspace-sidebar__brand-logo--compact":""}`,"aria-hidden":"true",children:[(0,b.jsx)("img",{src:"/logo_dark.png",alt:"AGX",className:"block dark:hidden",style:{height:28}}),(0,b.jsx)("img",{src:"/logo_light.png",alt:"AGX",className:"hidden dark:block",style:{height:28}})]})}function O({label:a,children:e}){let f=(0,c.useRef)(null),[g,h]=(0,c.useState)(null);return(0,b.jsxs)("div",{ref:f,onMouseEnter:()=>{let a=f.current?.firstElementChild??f.current;if(!a)return;let b=a.getBoundingClientRect();h({top:b.top+b.height/2,left:b.right+8})},onMouseLeave:()=>h(null),style:{display:"contents"},children:[e,g&&(0,d.createPortal)((0,b.jsx)("div",{className:"workspace-sidebar__rail-tooltip",style:{top:g.top,left:g.left,transform:"translateY(-50%)"},children:a}),document.body)]})}function P({projects:a,activeProjectId:d,onSelectProject:f,onCreateProject:h}){let[i,j]=(0,c.useState)(!1),[n,o]=(0,c.useState)(""),p=(0,c.useRef)(null),q=(0,c.useRef)(null),r=a.find(a=>a.id===d)??a[0],s=n.trim()?a.filter(a=>a.name.toLowerCase().includes(n.toLowerCase())):a;return(0,c.useEffect)(()=>{if(!i)return;let a=a=>{p.current&&!p.current.contains(a.target)&&(j(!1),o(""))};return document.addEventListener("pointerdown",a),()=>document.removeEventListener("pointerdown",a)},[i]),(0,c.useEffect)(()=>{i&&q.current&&q.current.focus()},[i]),(0,b.jsxs)("div",{className:"relative px-3 pt-3 pb-2",ref:p,children:[(0,b.jsxs)("button",{type:"button",onClick:()=>j(!i),className:"flex w-full items-center gap-2 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] px-2.5 py-2 text-sm text-[var(--foreground)] transition-all hover:border-[var(--app-shell-border-strong)]",children:[(0,b.jsx)(g.Folder,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"flex-1 truncate text-left font-medium",children:r?.name??"Select project"}),(0,b.jsx)(e.ChevronDown,{size:14,className:`flex-shrink-0 text-[var(--muted-foreground)] transition-transform ${i?"rotate-180":""}`})]}),i&&(0,b.jsxs)("div",{className:"absolute left-3 right-3 z-50 mt-1 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg overflow-hidden",children:[(0,b.jsx)("div",{className:"p-2 border-b border-[var(--app-shell-border)]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-2 py-1.5",children:[(0,b.jsx)(l.Search,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("input",{ref:q,type:"text",value:n,onChange:a=>o(a.target.value),placeholder:"Search projects...",className:"flex-1 bg-transparent text-xs text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] outline-none"}),n&&(0,b.jsx)("button",{type:"button",onClick:()=>o(""),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,b.jsx)(m.X,{size:10})})]})}),(0,b.jsxs)("div",{className:"max-h-52 overflow-y-auto py-1",children:[s.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>{f?.(a.id),j(!1),o("")},className:`flex w-full items-center gap-2 px-3 py-1.5 text-sm transition-colors hover:bg-[var(--app-shell-subtle)] ${a.id===r?.id?"text-[var(--foreground)] font-medium":"text-[var(--muted-foreground)]"}`,children:[(0,b.jsx)(g.Folder,{size:12,className:"flex-shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.name})]},a.id)),0===s.length&&(0,b.jsx)("p",{className:"px-3 py-2 text-xs text-[var(--muted-foreground)]",children:"No projects found"})]}),(0,b.jsx)("div",{className:"border-t border-[var(--app-shell-border)] p-1",children:(0,b.jsxs)("button",{type:"button",onClick:()=>{j(!1),o(""),h()},className:"flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:[(0,b.jsx)(k.Plus,{size:12}),(0,b.jsx)("span",{children:"New project"})]})})]})]})}function Q({threads:a,participants:e=[],activeThreadId:g,isLoading:i,isCreating:l,onSelectThread:D,onCreateThread:E,onRenameThread:F,onDeleteThread:G,deletingThreadId:H=null,renamingThreadId:I=null,activeParticipantIds:J=[],onToggleParticipantActive:Q,visible:R=!1,isRestoringActiveThread:S=!1,onToggle:T,onSearch:U,projects:V=[],onCreateProject:W,onUpdateProject:X,onDeleteProject:Y,onAddAgentToProject:Z,onRemoveAgentFromProject:$,onAddAgentViaForm:_,onReorderProjectAgents:aa,onUpdateParticipant:ab,onSelectProject:ac,activeProjectId:ad=null,activeProjectView:ae=null,width:af,onWidthChange:ag,onAddTeam:ah,stageShow:ai,trackerConnections:aj=[]}){let ak,al,{isTouchLayout:am,isPhone:an}=(0,x.useInputCapabilities)(),{updateAvailable:ao}=function(){let[a,b]=(0,c.useState)({updateAvailable:!1,latestVersion:null});return(0,c.useEffect)(()=>{async function a(){try{let a=await fetch("/api/update-check");if(!a.ok)return;let c=await a.json(),d=c?.updateAvailable===!0,e="string"==typeof c?.latestVersion?c.latestVersion:null;b({updateAvailable:d,latestVersion:e})}catch{}}a();let c=setInterval(()=>{a()},y.UI_POLL_UPDATE_CHECK_MS);return()=>clearInterval(c)},[]),a}(),ap=(0,c.useRef)(!1);(0,c.useRef)(0);let aq=(0,c.useRef)(null),[ar,as]=(0,c.useState)(!1),[at,au]=(0,c.useState)(new Set);(0,c.useEffect)(()=>{if(at.size>0||!V?.length)return;let a=V.find(a=>!1);au(new Set([a?.id??V[0].id]))},[V]);let[av,aw]=(0,c.useState)(null),[ax,ay]=(0,c.useState)(new Set),[az,aA]=(0,c.useState)(!1),[aB,aC]=(0,c.useState)(null),[aD,aE]=(0,c.useState)(null),aF=(0,A.useProjectFormState)(),[aG,aH]=(0,c.useState)(null),aI=(0,c.useCallback)(a=>{a&&(a.focus(),a.select())},[]),[aJ,aK]=(0,c.useState)(null),[aL,aM]=(0,c.useState)(null),aN=aL?e.find(a=>a.id===aL)??null:null,[aO,aP]=(0,c.useState)(null),[aQ,aR]=(0,c.useState)({});(0,c.useEffect)(()=>{if(!V?.length)return;let a=!1,b=async()=>{try{let b=await fetch("/api/processes?enrich=1");if(!b.ok||a)return;let c=await b.json();if(a)return;let d=c.filter(a=>"spawning"===a.state||"running"===a.state),f={};for(let a of V){let b=a.slug.trim().toLowerCase(),c=new Set((a.thread_ids??[]).map(a=>a.trim()).filter(Boolean)),g=[],h=[],i=[],j=new Set,k=new Set,l=new Set;for(let a of d){let d=a.projectSlug?.trim().toLowerCase();if(!(d&&d===b||c.has(a.workspaceId)||c.has(a.threadId)))continue;let f=e.find(b=>b.id===a.agentId),m={agentId:a.agentId,color:f?.color??"#10b981"};a.linearIssueId?k.has(a.agentId)||(k.add(a.agentId),h.push(m)):a.threadId?.startsWith("objective-chat:")||a.workspaceId?.startsWith("objective-chat:")?j.has(a.agentId)||(j.add(a.agentId),g.push(m)):l.has(a.agentId)||(l.add(a.agentId),i.push(m))}(g.length||h.length||i.length)&&(f[a.id]={objectives:g,linear:h,chat:i})}aR(f)}catch{}};b();let c=setInterval(b,3e3);return()=>{a=!0,clearInterval(c)}},[V,e]);let[aS,aT]=(0,c.useState)({}),[aU,aV]=(0,c.useState)(new Set),[aW,aX]=(0,c.useState)(new Set),aY=(0,c.useRef)(new Set);(0,c.useEffect)(()=>{Array.from(at).forEach(a=>{aW.has(a)||(aX(b=>new Set(b).add(a)),(async()=>{try{let b=await fetch(`/api/projects/${a}/teams`);if(!b.ok)return;let c=await b.json();aT(b=>({...b,[a]:c.teams??[]}))}catch{}})())})},[at,aW]);let[aZ,a$]=(0,c.useState)(null),a_=async()=>{if(!aB&&!aD)return;if(!aF.form.name.trim())return void aF.setFormError("Project name is required");let a=(0,B.findInvalidProjectRepoDraft)(aF.repos);if(a)return void aF.setFormError((0,B.formatInvalidProjectRepoDraftMessage)(a));aF.setFormError(null),aF.setIsSubmitting(!0);let b=(0,A.createProjectPayload)(aF.form,aF.repos);aD?await X?.(aD.id,b):await W?.(b,aB?.threadId),aF.setIsSubmitting(!1),aC(null),aE(null)};(0,c.useEffect)(()=>{as(!0)},[]),(0,c.useEffect)(()=>{let a=!1;async function b(){if(aO?.repoId)try{let b=await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(aO.repoId)}`),c=(b.ok?await b.json():{note:null}).note;a||aP(a=>a&&a.repoId===aO.repoId?{...a,generatedKnowledge:c?.content?[{id:c.id,content:c.content,created_at:c.updatedAt??c.createdAt}]:[],isLoadingKnowledge:!1}:a)}catch{a||aP(a=>a&&a.repoId===aO.repoId?{...a,generatedKnowledge:[],isLoadingKnowledge:!1}:a)}}return aO?.repoId&&b(),()=>{a=!0}},[aO?.repoId]);let a0=av?V.find(a=>a.id===av.projectId):null,a1=new Set(a0?.agents.map(a=>a.agent_id)??[]),a2=av?e.filter(a=>!a1.has(a.id)):[],a3=a.length>0,a4=!!R,a5=(0,c.useCallback)(()=>{am&&T?.()},[am,T]),a6=[...a].sort((a,b)=>(a.title??"").localeCompare(b.title??"")),a7=new Map(a.map(a=>[a.id,a])),a8=V.filter(a=>!a.is_default),a9=a8.find(a=>a.id===ad)??a8[0]??null,{connections:ba}=(0,M.useTrackerConnections)(a9?.id??null),bb=ai??{home:!0,threads:!0,terminal:!0,objectives:!1,objectivesIsNew:!1,tracking:!1,teams:!1,folders:!1,scheduledTasks:!1,envVars:!1,notifications:!1};if((0,c.useEffect)(()=>{if(0===a8.length)return;let b=new Map,c=new Set,d=new Map;for(let a of a8){for(let b of a.thread_ids??[])"string"==typeof b&&b.trim()&&c.add(b);for(let c of(0,C.readProjectObjectivesWorkspace)(a.metadata).objectives){let d=c.id.trim();d&&b.set(d,{projectId:a.id,canonicalThreadId:c.threadId?.trim()||`objective-chat:${d}`})}}for(let b of a){let a=b.metadata&&"object"==typeof b.metadata?b.metadata:null,c="objective"===("string"==typeof a?.scope?a.scope:"")||b.id.startsWith("objective-chat:"),e=b.title?.trim().toLowerCase()??"";if(!c||!e)continue;let f=d.get(e)??[];f.push(b),d.set(e,f)}for(let[a,b]of d)d.set(a,[...b].sort((a,b)=>b.updatedAt-a.updatedAt));for(let e of a){let a=e.metadata&&"object"==typeof e.metadata?e.metadata:null,f="string"==typeof a?.scope?a.scope:"",g="string"==typeof a?.objectiveId?a.objectiveId.trim():"",h=e.id.startsWith("objective-chat:")?e.id.slice(15).trim():"",i=g||h,j="objective"===f||!!h,k=e.title?.trim().toLowerCase()??"",l=0===e.messages.length&&e.updatedAt<Date.now()-3e5;if(!j)continue;let m=i?b.get(i):void 0;if(m){if(e.id!==m.canonicalThreadId&&l){let a=`delete:${e.id}`;if(aY.current.has(a))continue;aY.current.add(a),Promise.resolve(G(e.id)).catch(b=>{aY.current.delete(a),console.warn("Failed to delete legacy objective thread",b)});continue}if(!c.has(e.id)){let a=`link:${e.id}`;if(aY.current.has(a))continue;aY.current.add(a),fetch(`/api/projects/${m.projectId}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e.id})}).then(a=>{if(!a.ok)throw Error(`Request failed with status ${a.status}`)}).catch(b=>{aY.current.delete(a),console.warn("Failed to re-link objective thread",b)})}continue}if(!l)continue;let n=k?d.get(k)??[]:[];if(n.length<2||n[0]?.id===e.id)continue;let o=`delete:${e.id}`;aY.current.has(o)||(aY.current.add(o),Promise.resolve(G(e.id)).catch(a=>{aY.current.delete(o),console.warn("Failed to delete orphan objective thread",a)}))}},[a8,G,a]),!function({focusTarget:a,shouldFocus:b}){(0,c.useEffect)(()=>{if(!b||"u"<typeof document)return;let c=a.current;if(!c||c instanceof HTMLButtonElement&&c.disabled)return;let d=document.activeElement;if(!(d&&(c===d||c.contains(d))))try{c.focus({preventScroll:!0})}catch{c.focus()}},[a,b])}({focusTarget:aq,shouldFocus:a4&&!(i&&!a3||S&&a3)&&!a3&&!l}),!a4){if(am)return null;let c=a9?.slug;return(0,b.jsxs)("aside",{id:"workspace-sidebar",className:"workspace-sidebar workspace-sidebar--collapsed","aria-label":"Workspace sidebar",children:[(0,b.jsx)("div",{className:"workspace-sidebar__brand",children:(0,b.jsx)("button",{type:"button",onClick:T,className:"workspace-sidebar__brand-trigger border-none outline-none cursor-pointer","aria-label":"Show chats",title:"Show chats",children:(0,b.jsx)(N,{compact:!0})})}),c&&(0,b.jsxs)("nav",{className:"workspace-sidebar__collapsed-rail",children:[(0,b.jsx)(O,{label:"Home",children:(0,b.jsx)(w.default,{href:`/projects/${c}`,className:`workspace-sidebar__rail-icon${"home"===ae?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(q,{size:16})})}),(bb.objectives||bb.tracking||bb.scheduledTasks)&&(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),bb.objectives&&(0,b.jsx)(O,{label:"Objectives",children:(0,b.jsx)(w.default,{href:`/projects/${c}/objectives`,className:`workspace-sidebar__rail-icon${"objectives"===ae?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(n.Target,{size:16})})}),bb.tracking&&(0,b.jsx)(O,{label:"Task Tracking",children:(0,b.jsx)(w.default,{href:`/projects/${c}/tracking`,className:`workspace-sidebar__rail-icon${"linear"===ae||"tracking"===ae?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(L.LinearIcon,{className:"h-4 w-4"})})}),bb.tracking&&(0,b.jsx)(O,{label:"Pull Requests",children:(0,b.jsx)(w.default,{href:`/projects/${c}/prs`,className:"workspace-sidebar__rail-icon",children:(0,b.jsx)(v,{size:16})})}),bb.scheduledTasks&&(0,b.jsx)(O,{label:"Scheduled Jobs",children:(0,b.jsx)(w.default,{href:`/projects/${c}/automations`,className:`workspace-sidebar__rail-icon${"automations"===ae?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(f.Zap,{size:16})})}),(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),(0,b.jsx)(O,{label:"Terminal",children:(0,b.jsx)(w.default,{href:`/projects/${c}/terminal`,className:`workspace-sidebar__rail-icon${"terminal"===ae?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(s.TerminalSquare,{size:16})})}),(0,b.jsx)(O,{label:"Chat",children:(0,b.jsx)("button",{type:"button",className:`workspace-sidebar__rail-icon${"thread"===ae?" workspace-sidebar__rail-icon--active":""}`,onClick:()=>{let b=a6.filter(a=>a9?.thread_ids?.includes(a.id)),c=a9?.thread_ids?.find(b=>a.some(a=>a.id===b))??b[0]?.id;c&&D(c)},children:(0,b.jsx)(r.MessageSquare,{size:16})})}),(bb.teams||bb.folders||bb.envVars||bb.notifications)&&(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),bb.teams&&(0,b.jsx)(O,{label:"Teams",children:(0,b.jsx)(w.default,{href:`/projects/${c}/teams`,className:`workspace-sidebar__rail-icon${"teams"===ae?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(p.Users,{size:16})})}),bb.folders&&(0,b.jsx)(O,{label:"Workspace Map",children:(0,b.jsx)(w.default,{href:`/projects/${c}/folders`,className:`workspace-sidebar__rail-icon${"folders"===ae?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(h.FolderGit2,{size:16})})}),bb.envVars&&(0,b.jsx)(O,{label:"Env Variables",children:(0,b.jsx)(w.default,{href:`/projects/${c}/env-vars`,className:`workspace-sidebar__rail-icon${"env-vars"===ae?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(t,{size:16})})}),bb.notifications&&(0,b.jsx)(O,{label:"Notifications",children:(0,b.jsx)(w.default,{href:`/projects/${c}/notifications`,className:`workspace-sidebar__rail-icon${"notifications"===ae?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(o.Bell,{size:16})})})]}),(0,b.jsxs)("div",{className:"mt-auto p-2 flex flex-col gap-2",children:[ao&&c&&(0,b.jsx)(O,{label:"Update available",children:(0,b.jsx)(w.default,{href:`/projects/${c}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"workspace-sidebar__rail-icon",children:(0,b.jsx)(u,{size:16})})}),(0,b.jsx)(O,{label:"Join Discord",children:(0,b.jsx)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"workspace-sidebar__rail-icon",style:{backgroundColor:"#5865F2",color:"white"},onMouseEnter:a=>a.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:a=>a.currentTarget.style.backgroundColor="#5865F2",children:(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})})})})]})]})}return(0,b.jsxs)(b.Fragment,{children:[am?(0,b.jsx)("button",{type:"button",className:"workspace-sidebar__backdrop",onClick:T,"aria-label":"Close sidebar"}):null,(0,b.jsxs)("aside",{id:"workspace-sidebar",className:`workspace-sidebar${am?" workspace-sidebar--drawer":""}${am&&an?" workspace-sidebar--drawer-phone":""}`,"aria-label":"Workspace sidebar","aria-busy":i?"true":void 0,"aria-modal":am?"true":void 0,role:am?"dialog":void 0,style:!am&&af?{width:`${af}px`,minWidth:`${af}px`}:void 0,children:[(0,b.jsxs)("div",{className:"workspace-sidebar__brand",children:[(0,b.jsx)("div",{className:"workspace-sidebar__brand-content",children:(0,b.jsx)(N,{})}),T&&(0,b.jsx)("button",{type:"button",onClick:T,"aria-label":"Hide chats",title:"Hide chats",className:"workspace-sidebar__brand-toggle ml-auto inline-flex h-7 w-7 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-all hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:(0,b.jsx)(j,{className:"h-4 w-4",strokeWidth:1.75})})]}),(0,b.jsxs)("div",{className:"workspace-sidebar__content",children:[(0,b.jsx)(P,{projects:a8,activeProjectId:ad,onSelectProject:a=>{ac?.(a),a5()},onCreateProject:()=>{aF.resetForm(),aE(null),aC({})}}),(()=>{if(!a9)return null;let a=a6.filter(a=>a9.thread_ids?.includes(a.id)),c=a9.thread_ids?.find(a=>a7.has(a))??a9.thread_ids?.[0]??a[0]?.id??null,d=a9.id===ad,i=d&&"home"===ae,j=d&&"objectives"===ae,k=d&&"automations"===ae,l=d&&"terminal"===ae,m=d&&"thread"===ae&&c===g,u=d&&"teams"===ae,v=d&&"folders"===ae,x=d&&"env-vars"===ae,y=d&&"notifications"===ae,A=aQ[a9.id],B=bb.objectives||bb.scheduledTasks,C=bb.teams||bb.folders||bb.envVars||bb.notifications;return(0,b.jsxs)("nav",{className:"workspace-sidebar__section",children:[(0,b.jsx)("div",{className:"px-2 mt-2 mb-3",children:(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}`,onClick:a5,className:`workspace-sidebar__nav-item ${i?"workspace-sidebar__nav-item--active":""}`,"aria-current":i?"page":void 0,children:[(0,b.jsx)(q,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Home"})]})})}),B&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Automation"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[bb.objectives&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}/objectives`,onClick:a5,className:`workspace-sidebar__nav-item ${j?"workspace-sidebar__nav-item--active":""}`,"aria-current":j?"page":void 0,children:[(0,b.jsx)(n.Target,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Objectives"}),bb.objectivesIsNew&&(0,b.jsx)("span",{className:"ml-auto inline-flex items-center rounded-full bg-indigo-500/15 px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-wider text-indigo-500 animate-pulse",children:"NEW"}),!bb.objectivesIsNew&&A?.objectives.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:A.objectives.slice(0,3).map(a=>{let c=e.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name,children:[(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(c?.id??a.agentId,16,a.color),alt:c?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})})]})}),bb.scheduledTasks&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}/automations`,onClick:a5,className:`workspace-sidebar__nav-item ${k?"workspace-sidebar__nav-item--active":""}`,"aria-current":k?"page":void 0,children:[(0,b.jsx)(f.Zap,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Scheduled Jobs"})]})})]})]}),bb.tracking&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Task Tracking"})}),(0,b.jsx)("div",{className:"px-2 flex flex-col gap-0.5",children:(0,b.jsx)(K,{projectSlug:a9.slug,trackerConnections:aj,activeTrackerType:null,isTrackingActive:d&&("linear"===ae||"tracking"===ae),onLinkClick:a5})})]}),(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Tools"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}/terminal`,onClick:a5,className:`workspace-sidebar__nav-item ${l?"workspace-sidebar__nav-item--active":""}`,"aria-current":l?"page":void 0,children:[(0,b.jsx)(s.TerminalSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Terminal"})]})}),(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:c?(0,b.jsxs)("button",{type:"button",className:`workspace-sidebar__nav-item ${m?"workspace-sidebar__nav-item--active":""}`,onClick:()=>{D(c),a5()},"aria-current":m?"page":void 0,children:[(0,b.jsx)(r.MessageSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Chat"}),A?.chat.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:A.chat.slice(0,3).map(a=>{let c=e.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name,children:[(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(c?.id??a.agentId,16,a.color),alt:c?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})})]}):(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}/thread`,onClick:a5,className:`workspace-sidebar__nav-item ${m?"workspace-sidebar__nav-item--active":""}`,"aria-current":m?"page":void 0,children:[(0,b.jsx)(r.MessageSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Chat"})]})})]})]}),C&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Settings"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[bb.teams&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}/teams`,onClick:a5,className:`workspace-sidebar__nav-item ${u?"workspace-sidebar__nav-item--active":""}`,"aria-current":u?"page":void 0,children:[(0,b.jsx)(p.Users,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Teams"})]})}),bb.folders&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}/folders`,onClick:a5,className:`workspace-sidebar__nav-item ${v?"workspace-sidebar__nav-item--active":""}`,"aria-current":v?"page":void 0,children:[(0,b.jsx)(h.FolderGit2,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Workspace Map"})]})}),bb.envVars&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}/env-vars`,onClick:a5,className:`workspace-sidebar__nav-item ${x?"workspace-sidebar__nav-item--active":""}`,"aria-current":x?"page":void 0,children:[(0,b.jsx)(t,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Environment Variables"})]})}),bb.notifications&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}/notifications`,onClick:a5,className:`workspace-sidebar__nav-item ${y?"workspace-sidebar__nav-item--active":""}`,"aria-current":y?"page":void 0,children:[(0,b.jsx)(o.Bell,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Notifications"})]})})]})]})]})})()]}),(0,b.jsxs)("div",{className:"mt-auto px-3 pb-3 flex flex-col gap-2",children:[ao&&a9&&(0,b.jsxs)(w.default,{href:`/projects/${a9.slug}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-sm font-medium transition-colors text-[var(--foreground)] bg-[var(--app-shell-subtle)] hover:bg-[var(--app-shell-border)]",children:[(0,b.jsx)(u,{size:14}),"Update available"]}),(0,b.jsxs)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-white text-sm font-medium transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:a=>a.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:a=>a.currentTarget.style.backgroundColor="#5865F2",children:[(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})}),"Join Discord"]})]}),ar&&aO&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-4",onClick:()=>{aO.isSaving||aP(null)},children:(0,b.jsxs)("div",{className:"w-full max-w-lg rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4 border-b border-[var(--border)] px-5 py-4",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:aO.projectName}),(0,b.jsx)("h3",{className:"truncate text-base font-semibold text-[var(--foreground)]",children:aO.repoId?aO.name||"Folder":"Add Folder"})]}),(0,b.jsx)("button",{type:"button",className:"rounded-md p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--muted-foreground)]",onClick:()=>{aO.isSaving||aP(null)},"aria-label":"Close folder details",disabled:aO.isSaving,children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"space-y-4 px-5 py-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:aO.name,onChange:a=>aP(b=>b?{...b,name:a.target.value,error:null}:b),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",disabled:aO.isSaving,placeholder:"e.g. Frontend, API Docs, Design System"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{value:aO.path,onChange:a=>aP(b=>b?{...b,path:a.target.value,error:null}:b),className:"flex-1 rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 font-mono text-xs text-[var(--foreground)]",disabled:aO.isSaving,placeholder:"Local path to folder"}),(0,b.jsx)("button",{type:"button",className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",disabled:aO.isSaving,onClick:async()=>{try{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json();b.path&&aP(a=>a?{...a,path:b.path,error:null}:a)}catch{}},children:"Browse"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Notes"}),(0,b.jsx)("textarea",{value:aO.notes,onChange:a=>aP(b=>b?{...b,notes:a.target.value,error:null}:b),className:"min-h-28 w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-3 text-sm text-[var(--foreground)] whitespace-pre-wrap",disabled:aO.isSaving,placeholder:"Coding conventions, deploy steps, doc standards, ownership rules..."})]}),aO.repoId?(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Living Note"}),aO.isLoadingKnowledge?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading note…"}):aO.generatedKnowledge.length>0?(0,b.jsx)("div",{className:"space-y-2",children:aO.generatedKnowledge.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,b.jsx)("div",{children:a.content}),a.created_at?(0,b.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(a.created_at).toLocaleString()}):null]},a.id))}):(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No note yet."})]}):null,aO.error?(0,b.jsx)("p",{className:"text-xs text-red-600",children:aO.error}):null,(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-[var(--border)] pt-4",children:[(0,b.jsx)("button",{type:"button",className:"rounded-lg px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",onClick:()=>aP(null),disabled:aO.isSaving,children:"Cancel"}),(0,b.jsx)("button",{type:"button",className:"rounded-lg bg-[var(--foreground)] px-3 py-2 text-sm font-medium text-[var(--card-bg)] transition-colors hover:bg-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-60",disabled:aO.isSaving||!X,onClick:async()=>{let a=V.find(a=>a.id===aO.projectId);if(!a)return void aP(a=>a?{...a,error:"Project not found."}:a);let b=aO.name.trim(),c=aO.path.trim();if(!b)return void aP(a=>a?{...a,error:"Folder name is required."}:a);if(!c)return void aP(a=>a?{...a,error:"Folder path is required."}:a);aP(a=>a?{...a,isSaving:!0,error:null}:a);try{let d=aO.repoId?a.repos.map(a=>a.id===aO.repoId?{id:a.id,name:b,path:c,git_url:aO.gitUrl.trim()||void 0,notes:aO.notes.trim()||void 0}:{id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes}):[...a.repos.map(a=>({id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes})),{name:b,path:c,git_url:aO.gitUrl.trim()||void 0,notes:aO.notes.trim()||void 0}];await X?.(a.id,{repos:d}),aP(null)}catch(a){aP(b=>b?{...b,isSaving:!1,error:a instanceof Error?a.message:"Failed to save folder details."}:b)}},children:aO.isSaving?"Saving...":aO.repoId?"Save":"Add Folder"})]})]})]})}),document.body),ar&&av&&!az&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>aw(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 max-h-[70vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsxs)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",a0?.name??"project"]}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>aw(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"overflow-y-auto py-1 flex-1",children:[(0,b.jsxs)("button",{type:"button",className:"w-full flex items-center gap-3 px-4 py-2.5 text-sm text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors border-b border-[var(--border)]",onClick:()=>aA(!0),children:[(0,b.jsx)(k.Plus,{size:14,className:"text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"Create new agent"})]}),0===a2.length?(0,b.jsx)("p",{className:"px-4 py-6 text-xs text-[var(--muted-foreground)] text-center",children:"All agents are already in this project"}):a2.map(a=>{let c=ax.has(a.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${c?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onClick:()=>{ay(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},children:[(0,b.jsx)("div",{className:`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${c?"bg-[var(--foreground)] border-[var(--foreground)]":"border-[var(--border)]"}`,children:c&&(0,b.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,b.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(a.id,24,a.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,b.jsx)("div",{className:"truncate font-medium text-xs",children:a.name}),(0,b.jsx)("div",{className:"truncate text-[11px] text-[var(--muted-foreground)]",children:a.model})]})]},a.id)})]}),a2.length>0&&(0,b.jsxs)("div",{className:"px-4 py-3 border-t border-[var(--border)] flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>aw(null),children:"Cancel"}),(0,b.jsxs)("button",{type:"button",disabled:0===ax.size,className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>{for(let a of ax)Z?.(av.projectId,a);aw(null)},children:["Add ",ax.size>0?`(${ax.size})`:""]})]})]})}),document.body),ar&&az&&(0,d.createPortal)((0,b.jsx)(z.AgentForm,{title:"Create new agent",initial:{name:"",provider:"claude",model:"",identity:"",skills:[],skillBindings:[]},submitLabel:"Create & Add",projects:V?.filter(a=>!a.is_default).map(b=>{let c=(b.thread_ids??[]).map(b=>a.find(a=>a.id===b)?.title?.trim()).filter(Boolean).join(", ")||"No chat";return{id:b.id,name:b.name,label:`${c} › ${b.name}`}}),initialProjectIds:av?[av.projectId]:[],onSubmit:async(a,b)=>{let c=["#D97706","#2563EB","#059669","#DC2626","#7C3AED","#DB2777","#0891B2"],d=c[e.length%c.length],f=a.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),g=b?.[0],h=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:f,name:a.name,provider:a.provider,model:a.model,color:a.color??d,...a.role?{role:a.role}:{},...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[],...g?{projectId:g}:{}})});if(h.ok){let a=await h.json().catch(()=>({})),c="string"==typeof a?.id&&a.id.trim()?a.id.trim():f;for(let a of(b??[]).slice(1))Z?.(a,c);aA(!1),aw(null)}},onCancel:()=>{aA(!1)}}),document.body),ar&&aG&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>aH(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:aG.title}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>aH(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("form",{className:"px-4 py-4 flex flex-col gap-3",onSubmit:a=>{a.preventDefault();let b=new FormData(a.currentTarget),c=b.get("value")?.trim();c&&(aG.onSubmit(c),aH(null))},children:[(0,b.jsx)("input",{ref:aI,name:"value",type:"text",defaultValue:aG.defaultValue,placeholder:aG.placeholder,className:"w-full px-3 py-2 text-sm border border-[var(--border)] rounded-lg outline-none focus:border-[var(--border)] focus:ring-1 focus:ring-[var(--border)] transition-all"}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>aH(null),children:"Cancel"}),(0,b.jsx)("button",{type:"submit",className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] transition-colors",children:aG.defaultValue?"Save":"Create"})]})]})]})}),document.body),ar&&aJ&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>aK(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:aJ.title}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>aK(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"px-4 py-4 flex flex-col gap-4",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:aJ.message}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>aK(null),children:"Cancel"}),(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs font-medium text-white bg-red-600 rounded-lg hover:bg-red-700 transition-colors",onClick:()=>{aJ.onConfirm(),aK(null)},children:"Delete"})]})]})]})}),document.body),ar&&(aB||aD)&&(0,d.createPortal)((0,b.jsx)(A.default,{isOpen:!0,onClose:()=>{aF.resetForm(),aC(null),aE(null)},onSubmit:()=>void a_(),editingProject:aD,form:aF.form,repos:aF.repos,isSubmitting:aF.isSubmitting,formError:aF.formError,onFieldChange:(a,b)=>aF.setForm(c=>({...c,[a]:b})),onRepoChange:aF.handleRepoChange,onAddRepo:aF.addRepo,onRemoveRepo:aF.removeRepo}),document.body),ar&&aN&&(0,d.createPortal)((ak=V.filter(a=>a.agents.some(a=>a.agent_id===aN.id)),al=V.filter(a=>!a.agents.some(a=>a.agent_id===aN.id)),(0,b.jsx)(z.AgentForm,{title:"Edit agent",initial:{name:aN.name,role:aN.role||"",provider:aN.provider,model:aN.model||"",identity:aN.identity||"",color:aN.color,skills:aN.skills||[],skillBindings:aN.skillBindings||[]},agentId:aN.id,submitLabel:"Save",projectMemberships:{current:ak.map(a=>({id:a.id,name:a.name,is_default:!!a.is_default})),available:al.map(a=>({id:a.id,name:a.name}))},onAddToProject:Z?a=>Z(a,aN.id):void 0,onRemoveFromProject:$?a=>$(a,aN.id):void 0,onSubmit:async a=>{ab&&await ab({...aN,name:a.name,role:a.role||void 0,provider:a.provider,model:a.model,color:a.color??aN.color,...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[]}),aM(null)},onCancel:()=>aM(null)})),document.body),ag&&!am&&(0,b.jsx)("div",{className:"absolute right-0 top-0 bottom-0 z-20 w-1 cursor-col-resize group",onMouseDown:a=>{a.preventDefault(),ap.current=!0;let b=a.clientX,c=af??368;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let d=a=>{ag(Math.max(200,Math.min(600,c+a.clientX-b)))},e=()=>{ap.current=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",e)};window.addEventListener("mousemove",d),window.addEventListener("mouseup",e)},children:(0,b.jsx)("div",{className:"absolute inset-y-0 right-0 w-1 transition-colors hover:bg-[var(--primary)]/40 group-hover:bg-[var(--primary)]/40"})})]})]})}a.s(["WorkspaceSidebar",()=>Q],550158)},111013,a=>{"use strict";var b=a.i(786220),c=a.i(516909),d=a.i(870630);function e(){}let f=a=>[...a].sort((a,b)=>b.createdAt-a.createdAt);function g(a){let g=(0,c.useSearchParams)(),h=(a||g.get("thread")||"").trim()||null,i=(0,b.useRef)(!0),[j,k]=(0,b.useState)([]),[l,m]=(0,b.useState)(null),[n,o]=(0,b.useState)(!0),[p,q]=(0,b.useState)(!0),[r,s]=(0,b.useState)(!1),[t,u]=(0,b.useState)(null),[v,w]=(0,b.useState)(null),x=(0,b.useRef)(!1),y=(0,b.useCallback)(a=>{m(a)},[]);(0,b.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]),(0,b.useEffect)(()=>{let a=!1;return(async()=>{try{var b;let c,g=await d.threadService.listThreads();if(h&&!g.some(a=>a.id===h)){let a=await d.threadService.createThread({id:h});g=f([...g.filter(b=>b.id!==a.id),a])}if(a||!i.current)return;k(g);let j=h||null,{threadId:l,shouldClearSavedId:n,restoredFromStorage:o}=(b=g,c=b[0]?.id??null,j?b.some(a=>a.id===j)?{threadId:j,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:c,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:c,shouldClearSavedId:!1,restoredFromStorage:!1});n&&e(),x.current||(x.current=!0),o&&l?y(l):l?m(a=>a??l):m(null)}catch(a){console.error("Failed to load threads",a)}finally{i.current&&(o(!1),q(!1))}})(),()=>{a=!0}},[h,y]),(0,b.useEffect)(()=>{x.current&&(l||e())},[l]);let z=(0,b.useCallback)(async a=>{s(!0);try{let b=await d.threadService.createThread(a);if(!i.current)return b;return k(a=>f([...a.filter(a=>a.id!==b.id),b])),m(b.id),b}catch(a){throw console.error("Failed to create thread",a),a}finally{i.current&&s(!1)}},[]),A=(0,b.useCallback)(async a=>{if(a){u(a);try{if(await d.threadService.deleteThread(a),!i.current)return;let b=[];k(c=>b=f(c.filter(b=>b.id!==a))),m(c=>c===a?b[0]?.id??null:c)}catch(a){throw console.error("Failed to delete thread",a),a}finally{i.current&&u(null)}}},[]),B=(0,b.useCallback)(async(a,b)=>{let c=a.trim(),e=b.trim();if(c&&e){w(c);try{let a=await d.threadService.renameThread(c,e);if(!a||!i.current)return;k(b=>f(b.map(b=>b.id===a.id?a:b)))}catch(a){throw console.error("Failed to rename thread",a),a}finally{i.current&&w(a=>a===c?null:a)}}},[]),C=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.saveThreadMessages(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread messages",a)}},[]),D=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadStatus(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread status",a)}},[]),E=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadOutcomeNote(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread outcome note",a)}},[]),F=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageThreadStatus(a,b,c);if(!e||!i.current)return;k(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message thread status",a)}},[]),G=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageOutcomeNote(a,b,c);if(!e||!i.current)return;k(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message outcome note",a)}},[]),H=null!==l&&t===l;return{threads:j,activeThreadId:l,selectThread:y,createThread:z,deleteThread:A,isLoading:n,isRestoringActiveThread:p,isCreating:r,deletingThreadId:t,renamingThreadId:v,isDeletingActiveThread:H,updateThreadMessages:C,renameThread:B,updateThreadStatus:D,updateThreadOutcomeNote:E,updateMessageThreadStatus:F,updateMessageOutcomeNote:G}}a.s(["useThreadState",()=>g],111013)},455106,a=>{"use strict";let b={threadSidebarVisible:!1};function c(){return({...b}).threadSidebarVisible}function d(a){}a.s(["loadWorkspaceSidebarVisible",()=>c,"persistWorkspaceSidebarVisible",()=>d])}];
2
2
 
3
3
  //# sourceMappingURL=apps_local_988d29c0._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[143159,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(985339),e=a.i(516909),f=a.i(654340);function g({projectSlug:a,projectThreadIds:d=[]}){let g=(0,e.useRouter)(),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)([]),l=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();k(Array.isArray(b)?b:b.participants??[])}catch{}},[]);(0,c.useEffect)(()=>{l()},[l]),(0,c.useEffect)(()=>{let b=!1,c=a.trim().toLowerCase(),e=new Set(d.map(a=>a.trim()).filter(Boolean)),f=async()=>{try{let a=await fetch("/api/processes?enrich=1");if(!a.ok||b)return;let d=await a.json();if(b)return;let f=d.filter(a=>"spawning"===a.state||"running"===a.state).filter(a=>{let b=a.projectSlug.trim().toLowerCase();return!!b&&b===c||e.has(a.workspaceId)||e.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity);i(f)}catch{}};f();let g=setInterval(f,3e3);return()=>{b=!0,clearInterval(g)}},[a,d]);let m=new Map(j.map(a=>[a.id,a.name])),n=a=>m.get(a)||a.slice(0,8),o=[],p=new Map;for(let a of h){let b=p.get(a.agentId);b||(b={agentId:a.agentId,agentName:n(a.agentId),activities:[]},p.set(a.agentId,b),o.push(b)),b.activities.push({key:`${a.workspaceId}-${a.threadId}-${a.agentId}`,workspaceId:a.workspaceId,threadId:a.threadId,state:a.state,threadLabel:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread",lastActiveLabel:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity),lastActivity:a.lastActivity,linearIssueId:a.linearIssueId,linearRunId:a.linearRunId,trackerType:a.trackerType,responseMessageId:a.responseMessageId})}if(0===o.length)return null;let q=h.length;return(0,b.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(f.Activity,{className:"h-3.5 w-3.5"}),"Working Now"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:[o.length," ",1===o.length?"agent":"agents"," active across"," ",q," ",1===q?"thread":"threads","."]})]}),(0,b.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:[q," live ",1===q?"entry":"entries"]})]}),(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:o.map(c=>(0,b.jsxs)("div",{className:"px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm font-medium text-[var(--foreground)]",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-emerald-400 animate-pulse"}),c.agentName]}),c.activities.length>1&&(0,b.jsxs)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[c.activities.length," threads"]})]}),(0,b.jsx)("div",{className:"space-y-1 ml-4",children:c.activities.map(c=>(0,b.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:()=>g.push(function(a,b){if(b.linearIssueId&&b.linearRunId){let c=`/projects/${a}/tracking/${b.trackerType??"linear"}?issue=${encodeURIComponent(b.linearIssueId)}&run=${encodeURIComponent(b.linearRunId)}`;return b.responseMessageId?`${c}&message=${encodeURIComponent(b.responseMessageId)}`:c}let c=b.workspaceId??"",d=b.threadId??"",e="objective-chat:",f=c.startsWith(e)?c:d.startsWith(e)?d:null;if(f){let g=f.slice(e.length),h=new URLSearchParams;d&&d!==c&&h.set("session",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/objectives/${encodeURIComponent(g)}${i?`?${i}`:""}`}let g="tracker-run:";if(c.startsWith(g)){let d=b.linearRunId??c.slice(g.length),e=new URLSearchParams;return b.linearIssueId&&e.set("issue",b.linearIssueId),e.set("run",d),b.responseMessageId&&e.set("message",b.responseMessageId),`/projects/${a}/tracking/${b.trackerType??"linear"}?${e.toString()}`}let h=new URLSearchParams;d&&h.set("open",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/thread/${encodeURIComponent(c)}${i?`?${i}`:""}`}(a,c)),children:[(0,b.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,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400"}),"spawning"===c.state?"Starting":"Working"]}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate text-[var(--foreground)]",children:c.threadLabel}),(0,b.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:c.lastActiveLabel})]},c.key))})]},c.agentId))})]})}var h=a.i(44668);function i({projectId:a,projectSlug:d,projectThreadIds:f=[]}){let g=(0,e.useRouter)(),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)([]),o=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();l(Array.isArray(b)?b:b.participants??[])}catch{}},[]),p=(0,c.useCallback)(async()=>{try{let b=await fetch(`/api/projects/${a}/teams`);if(!b.ok)return;let c=await b.json();n(Array.isArray(c)?c:[])}catch{}},[a]);(0,c.useEffect)(()=>{o(),p()},[o,p]),(0,c.useEffect)(()=>{let a=!1,b=d.trim().toLowerCase(),c=new Set(f.map(a=>a.trim()).filter(Boolean)),e=async()=>{try{let d=await fetch("/api/processes?enrich=1");if(!d.ok||a)return;let e=await d.json();if(a)return;let f=e.filter(a=>"done"===a.state).filter(a=>{let d=a.projectSlug.trim().toLowerCase();return!!d&&d===b||c.has(a.workspaceId)||c.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity).slice(0,10);j(f)}catch{}};e();let g=setInterval(e,1e4);return()=>{a=!0,clearInterval(g)}},[d,f]);let q=new Map(k.map(a=>[a.id,a.name])),r=new Map;for(let a of m)for(let b of a.agents)r.set(b.agent_id,{id:a.id,name:a.name});return 0===i.length?null:(0,b.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,b.jsx)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(h.CheckCircle2,{className:"h-3.5 w-3.5"}),"Recently Completed"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:["Last ",i.length," completed"," ",1===i.length?"task":"tasks","."]})]})}),(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"min-w-full text-sm",children:[(0,b.jsx)("thead",{className:"bg-[var(--secondary)]",children:(0,b.jsxs)("tr",{className:"text-left text-[11px] uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Agent"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Status"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Thread"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Last active"})]})}),(0,b.jsx)("tbody",{children:i.map(a=>{let c;return(0,b.jsxs)("tr",{className:"cursor-pointer border-t border-[var(--border)] text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",onClick:()=>g.push(function(a,b){if(b.linearIssueId&&b.linearRunId){let c=`/projects/${a}/tracking/${b.trackerType??"linear"}?issue=${encodeURIComponent(b.linearIssueId)}&run=${encodeURIComponent(b.linearRunId)}`;return b.responseMessageId?`${c}&message=${encodeURIComponent(b.responseMessageId)}`:c}let c=b.workspaceId??"",d=b.threadId??"",e="objective-chat:",f=c.startsWith(e)?c:d.startsWith(e)?d:null;if(f){let g=f.slice(e.length),h=new URLSearchParams;d&&d!==c&&h.set("session",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/objectives/${encodeURIComponent(g)}${i?`?${i}`:""}`}let g="tracker-run:";if(c.startsWith(g)){let d=b.linearRunId??c.slice(g.length),e=new URLSearchParams;return b.linearIssueId&&e.set("issue",b.linearIssueId),e.set("run",d),b.responseMessageId&&e.set("message",b.responseMessageId),`/projects/${a}/tracking/${b.trackerType??"linear"}?${e.toString()}`}let h=new URLSearchParams;d&&h.set("open",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/thread/${encodeURIComponent(c)}${i?`?${i}`:""}`}(d,a)),children:[(0,b.jsx)("td",{className:"px-4 py-3 text-[var(--foreground)]",children:(c=a.agentId,q.get(c)||c.slice(0,8))}),(0,b.jsx)("td",{className:"px-4 py-3",children:(0,b.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,b.jsx)(h.CheckCircle2,{className:"h-3 w-3"}),"Done"]})}),(0,b.jsx)("td",{className:"max-w-[24rem] px-4 py-3 text-[var(--muted-foreground)]",children:(0,b.jsx)("span",{className:"block truncate",children:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread"})}),(0,b.jsx)("td",{className:"px-4 py-3 text-[var(--muted-foreground)]",children:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity)})]},`${a.workspaceId}-${a.threadId}-${a.agentId}`)})})]})})]})}var j=a.i(549429);function k({projectId:a,onViewAll:e}){let[f,g]=(0,c.useState)([]),[h,i]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>g(a.teams??[])).catch(()=>g([])).finally(()=>i(!1))},[a]),(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(d.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Teams"}),!h&&f.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:f.length})]}),e&&(0,b.jsxs)("button",{onClick:e,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),h?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===f.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No teams yet"}):(0,b.jsx)("div",{className:"space-y-2",children:f.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(d.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-[var(--foreground)]",children:a.name}),(0,b.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[a.agents.length," agents"]})]},a.id))})]})}var l=a.i(820859);function m({projectId:a,projectSlug:d,onViewAll:f}){let g=(0,e.useRouter)(),[h,i]=(0,c.useState)([]),[k,m]=(0,c.useState)([]),[n,o]=(0,c.useState)({}),[p,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=window.setInterval(()=>{s(Date.now())},3e4);return()=>{window.clearInterval(a)}},[]),(0,c.useEffect)(()=>{let b=!1,c=async()=>{try{let[c,d]=await Promise.all([fetch("/api/automations"),fetch(`/api/prompt-jobs?projectId=${encodeURIComponent(a)}`)]),e=c.ok?await c.json():{automations:[]},f=d.ok?await d.json():{jobs:[]};if(b)return;let g=(e.automations??[]).filter(b=>b.projectId===a).slice(0,20),h=(f.jobs??[]).filter(b=>b.projectId===a).slice(0,20);i(g),m(h);let j=Object.fromEntries(await Promise.all(h.map(async a=>{try{let b=await fetch(`/api/prompt-jobs/${encodeURIComponent(a.id)}/runs`);if(!b.ok)return[a.id,null];let c=((await b.json()).runs??[])[0]??null;return[a.id,c]}catch{return[a.id,null]}})));if(b)return;o(j)}catch{if(b)return;i([]),m([]),o({})}finally{b||q(!1)}};return q(!0),c(),()=>{b=!0}},[a]);let t=a=>{if(!d||"prompt"!==a.kind)return;let b=new URLSearchParams({job:a.jobId});a.runId&&b.set("run",a.runId),g.push(`/projects/${d}/automations?${b.toString()}`)},u=[...k.filter(a=>{let b=n[a.id];return b?.status==="queued"||b?.status==="running"}).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:n[a.id]?.id??null,updatedAt:n[a.id]?.createdAt??a.updatedAt})),...h.filter(a=>"running"===a.executionState||a.schedule?.tickInProgress).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",updatedAt:a.updatedAt}))].sort((a,b)=>Date.parse(b.updatedAt)-Date.parse(a.updatedAt)),v=new Set(u.map(a=>a.id)),w=[...k.filter(a=>"active"===a.state&&"number"==typeof a.nextRunAt).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:null,nextRunAt:a.nextRunAt})),...h.filter(a=>a.schedule?.state==="active"&&"number"==typeof a.schedule?.nextTickAt).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",nextRunAt:a.schedule.nextTickAt}))].filter(a=>!v.has(a.id)).sort((a,b)=>a.nextRunAt-b.nextRunAt),x=k.length+h.length;return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(l.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Scheduled Jobs"}),!p&&x>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:x})]}),f&&(0,b.jsxs)("button",{onClick:f,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),p?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===x?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks"}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Currently running"}),(0,b.jsx)("span",{children:u.length})]}),0===u.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Nothing running right now"}):(0,b.jsx)("div",{className:"space-y-2",children:u.slice(0,3).map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>t(a),disabled:"prompt"!==a.kind||!d,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&d?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,b.jsx)("span",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsx)("span",{className:"ml-auto shrink-0 text-xs text-[var(--status-completed-text)]",children:"running"})]},a.id))})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Upcoming runs"}),(0,b.jsx)("span",{children:w.length})]}),0===w.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No upcoming runs"}):(0,b.jsx)("div",{className:"space-y-2",children:w.slice(0,3).map(a=>{var c;return(0,b.jsxs)("button",{type:"button",onClick:()=>t(a),disabled:"prompt"!==a.kind||!d,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&d?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)(l.Clock,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsxs)("div",{className:"text-xs text-[var(--muted-foreground)]",children:["number"!=typeof(c=a.nextRunAt)?"No next run":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(c))," ",(0,b.jsxs)("span",{className:"text-[var(--app-shell-soft-text)]",children:["• ",(a=>{if("number"!=typeof a)return"";let b=a-r;if(b<=0)return"now";let c=Math.ceil(b/6e4);if(c<60)return`in ${c}m`;let d=Math.floor(c/60),e=c%60;if(d<24)return 0===e?`in ${d}h`:`in ${d}h ${e}m`;let f=Math.floor(d/24),g=d%24;return 0===g?`in ${f}d`:`in ${f}d ${g}h`})(a.nextRunAt)]})]})]})]},a.id)})})]})]})]})}var n=a.i(736868),o=a.i(89613),p=a.i(109467),q=a.i(446946);function r({projectId:a,onViewAll:c}){let{workspace:d,entryCount:e,isLoading:f,error:g}=(0,p.useProjectWorkspace)(a),h=(0,q.buildWorkspaceCategoryGroups)(d).filter(a=>a.entries.length>0).slice(0,3);return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Workspace Map"}),e>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:e})]}),c&&(0,b.jsxs)("button",{type:"button",onClick:c,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"h-3 w-3"})]})]}),f&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading workspace map..."}),!f&&g&&(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:"Unable to load the workspace map right now."}),!f&&!g&&0===e&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No workspace locations mapped yet. Add repositories, docs, or scripts so agents know where to work."}),!f&&!g&&e>0&&(0,b.jsx)("div",{className:"space-y-3",children:h.map(a=>(0,b.jsxs)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--secondary)]/30 px-3 py-2.5",children:[(0,b.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:a.label}),(0,b.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:a.entries.length})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[a.entries.slice(0,2).map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm",children:[(0,b.jsx)(o.FolderOpen,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.name}),(0,b.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:a.path||a.purpose||"No path set yet"})]})]},a.id)),a.entries.length>2&&(0,b.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:["+ ",a.entries.length-2," more"]})]})]},a.id))})]})}var s=a.i(489461),t=a.i(830284),u=a.i(769677),v=a.i(599086);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 x({objective:a,teamName:c,onClick:d}){let e=w[a.status]??w.on_track,f="done"===a.status;return(0,b.jsxs)("button",{type:"button",onClick:d,className:`w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)] ${f?"opacity-60":""}`,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${e.dot}`}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:a.title})]}),(0,b.jsx)("span",{className:`shrink-0 rounded-full border px-2 py-0.5 text-[11px] font-medium ${e.badge}`,children:e.label})]}),(0,b.jsx)("div",{className:"mb-2",children:(0,b.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-[var(--muted)]",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-emerald-500/70 transition-all",style:{width:`${Math.min(a.progress,100)}%`}})})}),(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{className:c?"":"flex items-center gap-1 text-[var(--status-blocked-text)]",children:[!c&&(0,b.jsx)(v.AlertTriangle,{className:"h-3 w-3"}),c??"No team"]}),(0,b.jsxs)("span",{children:[a.progress,"%"]})]})]})}function y({projectId:a,projectSlug:d}){let f=(0,e.useRouter)(),{projects:g,isLoading:h}=(0,t.useProjects)(),i=(0,c.useMemo)(()=>g.find(a=>a.slug===d),[g,d]),k=(0,c.useMemo)(()=>(0,u.readProjectObjectivesWorkspace)(i?.metadata).objectives,[i?.metadata]),[l,m]=(0,c.useState)([]);(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>m(a.teams??[])).catch(()=>m([]))},[a]);let n=(0,c.useMemo)(()=>new Map(l.map(a=>[a.id,a.name])),[l]),o=k.filter(a=>a.progress>=100).length;return h?(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-28 animate-pulse rounded-2xl bg-[var(--muted)]"},a))}):0===k.length?(0,b.jsxs)("button",{type:"button",onClick:()=>f.push(`/projects/${d}/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,b.jsx)(s.Target,{className:"mx-auto mb-2 h-5 w-5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Add your first objective"})]}):(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{children:[k.length," ",1===k.length?"objective":"objectives"]}),(0,b.jsx)("span",{className:"text-[var(--border)]",children:"|"}),(0,b.jsxs)("span",{children:[o,"/",k.length," complete"]})]}),(0,b.jsxs)("button",{onClick:()=>f.push(`/projects/${d}/objectives`),className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:k.map(a=>(0,b.jsx)(x,{objective:a,teamName:n.get(a.teamId)??null,onClick:()=>f.push(`/projects/${d}/objectives/${encodeURIComponent(a.id)}`)},a.id))})]})}var z=a.i(737313),A=a.i(144462),B=a.i(947218),C=a.i(392045),D=a.i(763197);function E({icon:a,title:c,accentClass:d,onClick:e,badge:f,children:g}){return(0,b.jsxs)("button",{type:"button",onClick:e,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,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:d,children:a}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:c})]}),f]}),g&&(0,b.jsx)("div",{className:"text-sm",children:g})]})}function F({projectId:a,projectSlug:d,primaryThreadId:f}){var g;let h=(0,e.useRouter)(),{connected:i,loading:j}=(0,B.useTrackerConnection)("linear",a),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(0),o=(0,D.useTerminalTabsStore)(a=>a.sessions[d])??[],[p,q]=(0,c.useState)(()=>D.useTerminalTabsStore.persist.hasHydrated()),r=(0,c.useMemo)(()=>0===o.length?null:o.reduce((a,b)=>b.createdAt>a.createdAt?b:a),[o]);return(0,c.useEffect)(()=>{let b=!1;return fetch(`/api/threads?projectId=${encodeURIComponent(a)}&limit=3&format=json`).then(a=>a.ok?a.json():{threads:{},total:0}).then(a=>{if(b)return;let c=Object.values(a.threads??{}).flatMap(a=>a.threads??[]).slice(0,3);l(c),n("number"==typeof a.total?a.total:c.length)}).catch(()=>{b||(l([]),n(0))}),()=>{b=!0}},[a]),(0,c.useEffect)(()=>(q(D.useTerminalTabsStore.persist.hasHydrated()),D.useTerminalTabsStore.persist.onFinishHydration(()=>{q(!0)})),[]),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,b.jsx)(E,{icon:(0,b.jsx)(z.MessageSquare,{className:"w-4 h-4"}),title:"Chat",accentClass:"text-indigo-400",onClick:()=>{f&&h.push(`/projects/${d}/thread/${encodeURIComponent(f)}`)},badge:m>0?(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:m}):void 0,children:null===k?(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===k.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No threads yet"}):(0,b.jsx)("div",{className:"space-y-1",children:k.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 truncate text-[var(--foreground)]",children:[(0,b.jsx)(z.MessageSquare,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"truncate",children:a.title})]},a.id))})}),(0,b.jsx)(E,{icon:(0,b.jsx)(A.TerminalSquare,{className:"w-4 h-4"}),title:"Terminal",accentClass:"text-emerald-400",onClick:()=>h.push(`/projects/${d}/terminal`),badge:p&&o.length>0?(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:o.length}):void 0,children:p?0===o.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No sessions yet"}):(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-[var(--foreground)]",children:(g=o.length,`${g} saved session${1===g?"":"s"}`)}),(0,b.jsxs)("p",{className:"truncate text-[var(--muted-foreground)]",children:["Latest: ",r?.title??"Untitled terminal"]})]}):(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))})}),(0,b.jsx)(E,{icon:(0,b.jsx)(C.TrackerIcon,{trackerType:"linear",className:"w-4 h-4"}),title:"Tasks",accentClass:"text-blue-400",onClick:()=>h.push(`/projects/${d}/tracking`),badge:j?void 0:i?(0,b.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,b.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:!j&&!i&&(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"Connect to see issues"})})]})}function G({projectId:a,projectSlug:c,projectDescription:d,threadIds:f}){let h=(0,e.useRouter)(),j=f[0]??null;return(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:(0,b.jsxs)("div",{className:"max-w-5xl mx-auto px-6 py-8 space-y-8",children:[d&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:d}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What you're working toward"}),(0,b.jsx)(y,{projectId:a,projectSlug:c})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"Start working"}),(0,b.jsx)(F,{projectId:a,projectSlug:c,primaryThreadId:j})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What's happening now"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(m,{projectId:a,projectSlug:c,onViewAll:()=>h.push(`/projects/${c}/automations`)}),(0,b.jsx)(g,{projectSlug:c,projectThreadIds:f}),(0,b.jsx)(i,{projectId:a,projectSlug:c,projectThreadIds:f})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsx)(r,{projectId:a,onViewAll:()=>h.push(`/projects/${c}/folders`)}),(0,b.jsx)(k,{projectId:a,onViewAll:()=>h.push(`/projects/${c}/teams`)})]})]})})}var H=a.i(53954);function I({params:a}){let{slug:e}=(0,c.use)(a),{projects:f}=(0,t.useProjectsWithAgents)(),g=f.find(a=>a.slug===e),[h,i]=(0,c.useState)("loading");return((0,c.useEffect)(()=>{if(!g)return;let a=!1;return(async()=>{try{let b=await fetch(`/api/projects/${g.id}/teams`,{cache:"no-store"});if(a)return;let c=b.ok?await b.json():{teams:[]},d=Array.isArray(c?.teams)?c.teams:[];i(0===d.length?"empty":"has-teams")}catch{a||i("has-teams")}})(),()=>{a=!0}},[g]),g)?"empty"===h?(0,b.jsx)(H.EmptyStateCard,{icon:(0,b.jsx)(d.Users,{className:"w-6 h-6 text-[var(--foreground)]"}),title:`Add a team to ${g.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/${g.slug}/teams/new`}):(0,b.jsx)(G,{projectId:g.id,projectSlug:g.slug,projectName:g.name,projectDescription:g.description,projectMetadata:g.metadata,repos:g.repos,threadIds:g.thread_ids}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading project..."})}a.s(["default",()=>I],143159)}];
1
+ module.exports=[143159,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(985339),e=a.i(516909),f=a.i(654340);function g({projectSlug:a,projectThreadIds:d=[]}){let g=(0,e.useRouter)(),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)([]),l=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();k(Array.isArray(b)?b:b.participants??[])}catch{}},[]);(0,c.useEffect)(()=>{l()},[l]),(0,c.useEffect)(()=>{let b=!1,c=a.trim().toLowerCase(),e=new Set(d.map(a=>a.trim()).filter(Boolean)),f=async()=>{try{let a=await fetch("/api/processes?enrich=1");if(!a.ok||b)return;let d=await a.json();if(b)return;let f=d.filter(a=>"spawning"===a.state||"running"===a.state).filter(a=>{let b=a.projectSlug.trim().toLowerCase();return!!b&&b===c||e.has(a.workspaceId)||e.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity);i(f)}catch{}};f();let g=setInterval(f,3e3);return()=>{b=!0,clearInterval(g)}},[a,d]);let m=new Map(j.map(a=>[a.id,a.name])),n=a=>m.get(a)||a.slice(0,8),o=[],p=new Map;for(let a of h){let b=p.get(a.agentId);b||(b={agentId:a.agentId,agentName:n(a.agentId),activities:[]},p.set(a.agentId,b),o.push(b)),b.activities.push({key:`${a.workspaceId}-${a.threadId}-${a.agentId}`,workspaceId:a.workspaceId,threadId:a.threadId,state:a.state,threadLabel:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread",lastActiveLabel:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity),lastActivity:a.lastActivity,linearIssueId:a.linearIssueId,linearRunId:a.linearRunId,trackerType:a.trackerType,responseMessageId:a.responseMessageId})}if(0===o.length)return null;let q=h.length;return(0,b.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(f.Activity,{className:"h-3.5 w-3.5"}),"Working Now"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:[o.length," ",1===o.length?"agent":"agents"," active across"," ",q," ",1===q?"thread":"threads","."]})]}),(0,b.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:[q," live ",1===q?"entry":"entries"]})]}),(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:o.map(c=>(0,b.jsxs)("div",{className:"px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm font-medium text-[var(--foreground)]",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-emerald-400 animate-pulse"}),c.agentName]}),c.activities.length>1&&(0,b.jsxs)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[c.activities.length," threads"]})]}),(0,b.jsx)("div",{className:"space-y-1 ml-4",children:c.activities.map(c=>(0,b.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:()=>g.push(function(a,b){if(b.linearIssueId&&b.linearRunId){let c=`/projects/${a}/tracking/${b.trackerType??"linear"}?issue=${encodeURIComponent(b.linearIssueId)}&run=${encodeURIComponent(b.linearRunId)}`;return b.responseMessageId?`${c}&message=${encodeURIComponent(b.responseMessageId)}`:c}let c=b.workspaceId??"",d=b.threadId??"",e="objective-chat:",f=c.startsWith(e)?c:d.startsWith(e)?d:null;if(f){let g=f.slice(e.length),h=new URLSearchParams;d&&d!==c&&h.set("session",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/objectives/${encodeURIComponent(g)}${i?`?${i}`:""}`}let g="tracker-run:";if(c.startsWith(g)){let d=b.linearRunId??c.slice(g.length),e=new URLSearchParams;return b.linearIssueId&&e.set("issue",b.linearIssueId),e.set("run",d),b.responseMessageId&&e.set("message",b.responseMessageId),`/projects/${a}/tracking/${b.trackerType??"linear"}?${e.toString()}`}let h=new URLSearchParams;d&&h.set("open",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/thread/${encodeURIComponent(c)}${i?`?${i}`:""}`}(a,c)),children:[(0,b.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,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400"}),"spawning"===c.state?"Starting":"Working"]}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate text-[var(--foreground)]",children:c.threadLabel}),(0,b.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:c.lastActiveLabel})]},c.key))})]},c.agentId))})]})}var h=a.i(44668);function i({projectId:a,projectSlug:d,projectThreadIds:f=[]}){let g=(0,e.useRouter)(),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)([]),o=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();l(Array.isArray(b)?b:b.participants??[])}catch{}},[]),p=(0,c.useCallback)(async()=>{try{let b=await fetch(`/api/projects/${a}/teams`);if(!b.ok)return;let c=await b.json();n(Array.isArray(c)?c:[])}catch{}},[a]);(0,c.useEffect)(()=>{o(),p()},[o,p]),(0,c.useEffect)(()=>{let a=!1,b=d.trim().toLowerCase(),c=new Set(f.map(a=>a.trim()).filter(Boolean)),e=async()=>{try{let d=await fetch("/api/processes?enrich=1");if(!d.ok||a)return;let e=await d.json();if(a)return;let f=e.filter(a=>"done"===a.state).filter(a=>{let d=a.projectSlug.trim().toLowerCase();return!!d&&d===b||c.has(a.workspaceId)||c.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity).slice(0,10);j(f)}catch{}};e();let g=setInterval(e,1e4);return()=>{a=!0,clearInterval(g)}},[d,f]);let q=new Map(k.map(a=>[a.id,a.name])),r=new Map;for(let a of m)for(let b of a.agents)r.set(b.agent_id,{id:a.id,name:a.name});return 0===i.length?null:(0,b.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,b.jsx)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(h.CheckCircle2,{className:"h-3.5 w-3.5"}),"Recently Completed"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:["Last ",i.length," completed"," ",1===i.length?"task":"tasks","."]})]})}),(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"min-w-full text-sm",children:[(0,b.jsx)("thead",{className:"bg-[var(--secondary)]",children:(0,b.jsxs)("tr",{className:"text-left text-[11px] uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Agent"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Status"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Thread"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Last active"})]})}),(0,b.jsx)("tbody",{children:i.map(a=>{let c;return(0,b.jsxs)("tr",{className:"cursor-pointer border-t border-[var(--border)] text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",onClick:()=>g.push(function(a,b){if(b.linearIssueId&&b.linearRunId){let c=`/projects/${a}/tracking/${b.trackerType??"linear"}?issue=${encodeURIComponent(b.linearIssueId)}&run=${encodeURIComponent(b.linearRunId)}`;return b.responseMessageId?`${c}&message=${encodeURIComponent(b.responseMessageId)}`:c}let c=b.workspaceId??"",d=b.threadId??"",e="objective-chat:",f=c.startsWith(e)?c:d.startsWith(e)?d:null;if(f){let g=f.slice(e.length),h=new URLSearchParams;d&&d!==c&&h.set("session",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/objectives/${encodeURIComponent(g)}${i?`?${i}`:""}`}let g="tracker-run:";if(c.startsWith(g)){let d=b.linearRunId??c.slice(g.length),e=new URLSearchParams;return b.linearIssueId&&e.set("issue",b.linearIssueId),e.set("run",d),b.responseMessageId&&e.set("message",b.responseMessageId),`/projects/${a}/tracking/${b.trackerType??"linear"}?${e.toString()}`}let h=new URLSearchParams;d&&h.set("open",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/thread/${encodeURIComponent(c)}${i?`?${i}`:""}`}(d,a)),children:[(0,b.jsx)("td",{className:"px-4 py-3 text-[var(--foreground)]",children:(c=a.agentId,q.get(c)||c.slice(0,8))}),(0,b.jsx)("td",{className:"px-4 py-3",children:(0,b.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,b.jsx)(h.CheckCircle2,{className:"h-3 w-3"}),"Done"]})}),(0,b.jsx)("td",{className:"max-w-[24rem] px-4 py-3 text-[var(--muted-foreground)]",children:(0,b.jsx)("span",{className:"block truncate",children:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread"})}),(0,b.jsx)("td",{className:"px-4 py-3 text-[var(--muted-foreground)]",children:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity)})]},`${a.workspaceId}-${a.threadId}-${a.agentId}`)})})]})})]})}var j=a.i(549429);function k({projectId:a,onViewAll:e}){let[f,g]=(0,c.useState)([]),[h,i]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>g(a.teams??[])).catch(()=>g([])).finally(()=>i(!1))},[a]),(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(d.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Teams"}),!h&&f.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:f.length})]}),e&&(0,b.jsxs)("button",{onClick:e,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),h?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===f.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No teams yet"}):(0,b.jsx)("div",{className:"space-y-2",children:f.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(d.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-[var(--foreground)]",children:a.name}),(0,b.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[a.agents.length," agents"]})]},a.id))})]})}var l=a.i(820859);function m({projectId:a,projectSlug:d,onViewAll:f}){let g=(0,e.useRouter)(),[h,i]=(0,c.useState)([]),[k,m]=(0,c.useState)([]),[n,o]=(0,c.useState)({}),[p,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=window.setInterval(()=>{s(Date.now())},3e4);return()=>{window.clearInterval(a)}},[]),(0,c.useEffect)(()=>{let b=!1,c=async()=>{try{let[c,d]=await Promise.all([fetch("/api/automations"),fetch(`/api/prompt-jobs?projectId=${encodeURIComponent(a)}`)]),e=c.ok?await c.json():{automations:[]},f=d.ok?await d.json():{jobs:[]};if(b)return;let g=(e.automations??[]).filter(b=>b.projectId===a).slice(0,20),h=(f.jobs??[]).filter(b=>b.projectId===a).slice(0,20);i(g),m(h);let j=Object.fromEntries(await Promise.all(h.map(async a=>{try{let b=await fetch(`/api/prompt-jobs/${encodeURIComponent(a.id)}/runs`);if(!b.ok)return[a.id,null];let c=((await b.json()).runs??[])[0]??null;return[a.id,c]}catch{return[a.id,null]}})));if(b)return;o(j)}catch{if(b)return;i([]),m([]),o({})}finally{b||q(!1)}};return q(!0),c(),()=>{b=!0}},[a]);let t=a=>{if(!d||"prompt"!==a.kind)return;let b=new URLSearchParams({job:a.jobId});a.runId&&b.set("run",a.runId),g.push(`/projects/${d}/automations?${b.toString()}`)},u=[...k.filter(a=>{let b=n[a.id];return b?.status==="queued"||b?.status==="running"}).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:n[a.id]?.id??null,updatedAt:n[a.id]?.createdAt??a.updatedAt})),...h.filter(a=>"running"===a.executionState||a.schedule?.tickInProgress).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",updatedAt:a.updatedAt}))].sort((a,b)=>Date.parse(b.updatedAt)-Date.parse(a.updatedAt)),v=new Set(u.map(a=>a.id)),w=[...k.filter(a=>"active"===a.state&&"number"==typeof a.nextRunAt).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:null,nextRunAt:a.nextRunAt})),...h.filter(a=>a.schedule?.state==="active"&&"number"==typeof a.schedule?.nextTickAt).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",nextRunAt:a.schedule.nextTickAt}))].filter(a=>!v.has(a.id)).sort((a,b)=>a.nextRunAt-b.nextRunAt),x=k.length+h.length;return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(l.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Scheduled Jobs"}),!p&&x>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:x})]}),f&&(0,b.jsxs)("button",{onClick:f,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),p?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===x?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks"}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Currently running"}),(0,b.jsx)("span",{children:u.length})]}),0===u.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Nothing running right now"}):(0,b.jsx)("div",{className:"space-y-2",children:u.slice(0,3).map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>t(a),disabled:"prompt"!==a.kind||!d,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&d?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,b.jsx)("span",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsx)("span",{className:"ml-auto shrink-0 text-xs text-[var(--status-completed-text)]",children:"running"})]},a.id))})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Upcoming runs"}),(0,b.jsx)("span",{children:w.length})]}),0===w.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No upcoming runs"}):(0,b.jsx)("div",{className:"space-y-2",children:w.slice(0,3).map(a=>{var c;return(0,b.jsxs)("button",{type:"button",onClick:()=>t(a),disabled:"prompt"!==a.kind||!d,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&d?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)(l.Clock,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsxs)("div",{className:"text-xs text-[var(--muted-foreground)]",children:["number"!=typeof(c=a.nextRunAt)?"No next run":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(c))," ",(0,b.jsxs)("span",{className:"text-[var(--app-shell-soft-text)]",children:["• ",(a=>{if("number"!=typeof a)return"";let b=a-r;if(b<=0)return"now";let c=Math.ceil(b/6e4);if(c<60)return`in ${c}m`;let d=Math.floor(c/60),e=c%60;if(d<24)return 0===e?`in ${d}h`:`in ${d}h ${e}m`;let f=Math.floor(d/24),g=d%24;return 0===g?`in ${f}d`:`in ${f}d ${g}h`})(a.nextRunAt)]})]})]})]},a.id)})})]})]})]})}var n=a.i(736868),o=a.i(89613),p=a.i(109467),q=a.i(446946);function r({projectId:a,onViewAll:c}){let{workspace:d,entryCount:e,isLoading:f,error:g}=(0,p.useProjectWorkspace)(a),h=(0,q.buildWorkspaceCategoryGroups)(d).filter(a=>a.entries.length>0).slice(0,3);return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Workspace Map"}),e>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:e})]}),c&&(0,b.jsxs)("button",{type:"button",onClick:c,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"h-3 w-3"})]})]}),f&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading workspace map..."}),!f&&g&&(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:"Unable to load the workspace map right now."}),!f&&!g&&0===e&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No workspace locations mapped yet. Add repositories, docs, or scripts so agents know where to work."}),!f&&!g&&e>0&&(0,b.jsx)("div",{className:"space-y-3",children:h.map(a=>(0,b.jsxs)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--secondary)]/30 px-3 py-2.5",children:[(0,b.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:a.label}),(0,b.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:a.entries.length})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[a.entries.slice(0,2).map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm",children:[(0,b.jsx)(o.FolderOpen,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.name}),(0,b.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:a.path||a.purpose||"No path set yet"})]})]},a.id)),a.entries.length>2&&(0,b.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:["+ ",a.entries.length-2," more"]})]})]},a.id))})]})}var s=a.i(489461),t=a.i(830284),u=a.i(769677),v=a.i(599086);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 x({objective:a,teamName:c,onClick:d}){let e=w[a.status]??w.on_track,f="done"===a.status;return(0,b.jsxs)("button",{type:"button",onClick:d,className:`w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)] ${f?"opacity-60":""}`,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${e.dot}`}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:a.title})]}),(0,b.jsx)("span",{className:`shrink-0 rounded-full border px-2 py-0.5 text-[11px] font-medium ${e.badge}`,children:e.label})]}),(0,b.jsx)("div",{className:"mb-2",children:(0,b.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-[var(--muted)]",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-emerald-500/70 transition-all",style:{width:`${Math.min(a.progress,100)}%`}})})}),(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{className:c?"":"flex items-center gap-1 text-[var(--status-blocked-text)]",children:[!c&&(0,b.jsx)(v.AlertTriangle,{className:"h-3 w-3"}),c??"No team"]}),(0,b.jsxs)("span",{children:[a.progress,"%"]})]})]})}function y({projectId:a,projectSlug:d}){let f=(0,e.useRouter)(),{projects:g,isLoading:h}=(0,t.useProjects)(),i=(0,c.useMemo)(()=>g.find(a=>a.slug===d),[g,d]),k=(0,c.useMemo)(()=>(0,u.readProjectObjectivesWorkspace)(i?.metadata).objectives,[i?.metadata]),[l,m]=(0,c.useState)([]);(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>m(a.teams??[])).catch(()=>m([]))},[a]);let n=(0,c.useMemo)(()=>new Map(l.map(a=>[a.id,a.name])),[l]),o=k.filter(a=>a.progress>=100).length;return h?(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-28 animate-pulse rounded-2xl bg-[var(--muted)]"},a))}):0===k.length?(0,b.jsxs)("button",{type:"button",onClick:()=>f.push(`/projects/${d}/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,b.jsx)(s.Target,{className:"mx-auto mb-2 h-5 w-5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Add your first objective"})]}):(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{children:[k.length," ",1===k.length?"objective":"objectives"]}),(0,b.jsx)("span",{className:"text-[var(--border)]",children:"|"}),(0,b.jsxs)("span",{children:[o,"/",k.length," complete"]})]}),(0,b.jsxs)("button",{onClick:()=>f.push(`/projects/${d}/objectives`),className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:k.map(a=>(0,b.jsx)(x,{objective:a,teamName:n.get(a.teamId)??null,onClick:()=>f.push(`/projects/${d}/objectives/${encodeURIComponent(a.id)}`)},a.id))})]})}var z=a.i(737313),A=a.i(144462),B=a.i(947218),C=a.i(392045),D=a.i(763197);function E({icon:a,title:c,accentClass:d,onClick:e,badge:f,children:g}){return(0,b.jsxs)("button",{type:"button",onClick:e,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,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:d,children:a}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:c})]}),f]}),g&&(0,b.jsx)("div",{className:"text-sm",children:g})]})}function F({projectId:a,projectSlug:d,primaryThreadId:f}){var g;let h=(0,e.useRouter)(),{connected:i,loading:j}=(0,B.useTrackerConnection)("linear",a),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(0),o=(0,D.useTerminalTabsStore)(a=>a.sessions[d])??[],[p,q]=(0,c.useState)(()=>D.useTerminalTabsStore.persist.hasHydrated()),r=(0,c.useMemo)(()=>0===o.length?null:o.reduce((a,b)=>b.createdAt>a.createdAt?b:a),[o]);return(0,c.useEffect)(()=>{let b=!1;return fetch(`/api/threads?projectId=${encodeURIComponent(a)}&limit=3&format=json`).then(a=>a.ok?a.json():{threads:{},total:0}).then(a=>{if(b)return;let c=Object.values(a.threads??{}).flatMap(a=>a.threads??[]).slice(0,3);l(c),n("number"==typeof a.total?a.total:c.length)}).catch(()=>{b||(l([]),n(0))}),()=>{b=!0}},[a]),(0,c.useEffect)(()=>(q(D.useTerminalTabsStore.persist.hasHydrated()),D.useTerminalTabsStore.persist.onFinishHydration(()=>{q(!0)})),[]),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,b.jsx)(E,{icon:(0,b.jsx)(z.MessageSquare,{className:"w-4 h-4"}),title:"Chat",accentClass:"text-indigo-400",onClick:()=>{f&&h.push(`/projects/${d}/thread/${encodeURIComponent(f)}`)},badge:m>0?(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:m}):void 0,children:null===k?(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===k.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No threads yet"}):(0,b.jsx)("div",{className:"space-y-1",children:k.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 truncate text-[var(--foreground)]",children:[(0,b.jsx)(z.MessageSquare,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"truncate",children:a.title})]},a.id))})}),(0,b.jsx)(E,{icon:(0,b.jsx)(A.TerminalSquare,{className:"w-4 h-4"}),title:"Terminal",accentClass:"text-emerald-400",onClick:()=>h.push(`/projects/${d}/terminal`),badge:p&&o.length>0?(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:o.length}):void 0,children:p?0===o.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No sessions yet"}):(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-[var(--foreground)]",children:(g=o.length,`${g} saved session${1===g?"":"s"}`)}),(0,b.jsxs)("p",{className:"truncate text-[var(--muted-foreground)]",children:["Latest: ",r?.title??"Untitled terminal"]})]}):(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))})}),(0,b.jsx)(E,{icon:(0,b.jsx)(C.TrackerIcon,{trackerType:"linear",className:"w-4 h-4"}),title:"Tasks",accentClass:"text-blue-400",onClick:()=>h.push(`/projects/${d}/tracking`),badge:j?void 0:i?(0,b.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,b.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:!j&&!i&&(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"Connect to see issues"})})]})}function G({projectId:a,projectSlug:c,projectDescription:d,threadIds:f}){let h=(0,e.useRouter)(),j=f[0]??null;return(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:(0,b.jsxs)("div",{className:"max-w-5xl mx-auto px-6 py-8 space-y-8",children:[d&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:d}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What you're working toward"}),(0,b.jsx)(y,{projectId:a,projectSlug:c})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"Start working"}),(0,b.jsx)(F,{projectId:a,projectSlug:c,primaryThreadId:j})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What's happening now"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(m,{projectId:a,projectSlug:c,onViewAll:()=>h.push(`/projects/${c}/automations`)}),(0,b.jsx)(g,{projectSlug:c,projectThreadIds:f}),(0,b.jsx)(i,{projectId:a,projectSlug:c,projectThreadIds:f})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsx)(r,{projectId:a,onViewAll:()=>h.push(`/projects/${c}/folders`)}),(0,b.jsx)(k,{projectId:a,onViewAll:()=>h.push(`/projects/${c}/teams`)})]})]})})}var H=a.i(53954);function I({params:a}){let{slug:e}=(0,c.use)(a),{projects:f}=(0,t.useProjectsWithAgents)(),g=f.find(a=>a.slug===e),[h,i]=(0,c.useState)("loading");return((0,c.useEffect)(()=>{if(!g)return;let a=!1;return(async()=>{try{let b=await fetch(`/api/projects/${g.id}/teams`,{cache:"no-store"});if(a)return;let c=b.ok?await b.json():{teams:[]},d=Array.isArray(c?.teams)?c.teams:[];i(0===d.length?"empty":"has-teams")}catch{a||i("has-teams")}})(),()=>{a=!0}},[g]),g)?"empty"===h?(0,b.jsx)(H.EmptyStateCard,{icon:(0,b.jsx)(d.Users,{className:"w-6 h-6 text-[var(--foreground)]"}),title:`Add a team to ${g.name}`,description:"Teams are the agents that work through your tickets and PRs. Add one to start shipping.",ctaLabel:"Add a team",ctaHref:`/projects/${g.slug}/teams/new`}):(0,b.jsx)(G,{projectId:g.id,projectSlug:g.slug,projectName:g.name,projectDescription:g.description,projectMetadata:g.metadata,repos:g.repos,threadIds:g.thread_ids}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading project..."})}a.s(["default",()=>I],143159)}];
2
2
 
3
3
  //# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_page_tsx_76330306._.js.map