@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
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,524123,e=>{"use strict";var t=e.i(935851);function r(){let[e,r]=(0,t.useState)([]),[a,n]=(0,t.useState)(!1),[o,i]=(0,t.useState)(null),s=(0,t.useCallback)(async()=>{n(!0);try{let e=await fetch("/api/projects");if(!e.ok)throw Error("Failed to fetch projects");let t=await e.json();r(t.projects??[]),i(null)}catch(e){i(e instanceof Error?e:Error("Unknown error"))}finally{n(!1)}},[]);(0,t.useEffect)(()=>{s()},[s]);let l=(0,t.useCallback)(async e=>{let t=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to create project");let a=(await t.json()).project;return r(e=>[a,...e]),a},[]);return{projects:e,isLoading:a,error:o,refetch:s,createProject:l,updateProject:(0,t.useCallback)(async(e,t)=>{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Failed to update project");let n=(await a.json()).project;return r(t=>t.map(t=>t.id===e?n:t)),n},[]),deleteProject:(0,t.useCallback)(async e=>{let t=await fetch(`/api/projects/${e}`,{method:"DELETE"});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to delete project");r(t=>t.filter(t=>t.id!==e))},[])}}function a(){let[e,r]=(0,t.useState)([]),[a,n]=(0,t.useState)(!0),o=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/projects");if(!e.ok)return;let{projects:t}=await e.json(),a=await Promise.all((t??[]).map(async e=>{let t=[],r=[];try{let[a,n]=await Promise.all([fetch(`/api/projects/${e.id}/agents`),fetch(`/api/projects/${e.id}/threads`)]);a.ok&&(t=(await a.json()).agents??[]),n.ok&&(r=((await n.json()).threads??[]).map(e=>e.thread_id))}catch{}return{...e,repos:e.repos??[],agents:t.map(t=>({project_id:e.id,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at})),thread_ids:r,workspace_ids:r}}));r(a)}catch{}finally{n(!1)}},[]);(0,t.useEffect)(()=>{o()},[o]);let i=(0,t.useCallback)(async(e,t)=>{try{let a="string"==typeof e?{name:e}:e,n=a.name.trim(),o=(a.slug||n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),i=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,name:n,slug:o})});if(!i.ok)return null;let{project:s}=await i.json(),l=Array.isArray(t)?t:t?[t]:[];for(let e of l)await fetch(`/api/projects/${s.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e})}).catch(e=>console.warn("[useProjects] link thread failed:",e));let c={...s,repos:s.repos??[],agents:[],thread_ids:l,workspace_ids:l};return r(e=>[...e,c].sort((e,t)=>e.name.localeCompare(t.name))),c}catch{return null}},[]),s=(0,t.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})).ok)return;r(r=>r.map(r=>r.id===e?{...r,name:t}:r).sort((e,t)=>e.name.localeCompare(t.name)))}catch{}},[]),l=(0,t.useCallback)(async e=>{try{if(!(await fetch(`/api/projects/${e}`,{method:"DELETE"})).ok)return;r(t=>t.filter(t=>t.id!==e))}catch{}},[]),c=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.error||"Failed to update project")}let n=(await a.json()).project;return r(t=>t.map(t=>t.id===e?{...t,...n,repos:n.repos??t.repos}:t)),n}catch{return null}},[]),d=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:t})});if(!a.ok)return;let n=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:n}:t))}catch{}},[]),u=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents?agentId=${t}`,{method:"DELETE"});if(!a.ok)return;let n=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:n}:t))}catch{}},[]);return{projects:e,isLoading:a,createProject:i,updateProject:c,renameProject:s,deleteProject:l,addAgent:d,removeAgent:u,reorderAgents:(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedAgentIds:t})});if(!a.ok)return;let n=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:n}:t))}catch{}},[]),moveAgent:(0,t.useCallback)(async(e,t,r)=>{try{await fetch(`/api/projects/${t}/agents?agentId=${e}`,{method:"DELETE"}),await fetch(`/api/projects/${r}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e})}),await o()}catch{}},[o]),refresh:o}}e.s(["useProjects",()=>r,"useProjectsWithAgents",()=>a])},506420,(e,t,r)=>{t.exports=e.r(27944)},902572,e=>{"use strict";let t="project_objectives_workspace",r="project_goals_workspace",a=new Set(["on_track","at_risk","off_track","done"]);function n(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function o(e){return`${e}_${Math.random().toString(36).slice(2,10)}`}function i(e){return[...e].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))}function s(e){return[...e].sort((e,t)=>Date.parse(e.createdAt)-Date.parse(t.createdAt))}function l(e){return[...e].sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}function c(e,t=""){return"string"==typeof e?e:t}function d(e){return Array.isArray(e)?Array.from(new Set(e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[]}function u(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let r=Date.parse(e);return Number.isNaN(r)?t:new Date(r).toISOString()}function p(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function f(e,t=0){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.floor(e)):t}function m(e,t="objective"){let r=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,32);return r||t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"objective"}function h(e,t,r="objective"){let a=m(r),n=m(e,a),o=n,i=2;for(;t.has(o);){let e=`-${i}`,t=Math.max(1,32-e.length);o=`${n.slice(0,t)}${e}`,i+=1}return t.add(o),o}function g(e,t,r){return h(e,new Set(t.filter(e=>e.id!==r).map(e=>m(e.key||e.title||e.id))),r??e)}function b(e){var t;if(!n(e))return null;let r=u(e.updatedAt??e.createdAt),i=u(e.createdAt,r);return{id:c(e.id,o("objective")),title:c(e.title,"Untitled objective"),teamId:c(e.teamId??e.team_id??e.ownerTeamId),key:m(c(e.key??e.slug??e.label),c(e.title??e.id,"objective")),threadId:c(e.threadId)||null,chatSessionVersion:f(e.chatSessionVersion,0),scheduledTaskIds:d(e.scheduledTaskIds??e.promptJobIds),summary:c(e.summary),progress:p(e.progress),status:"string"==typeof(t=e.status)&&a.has(t)?t:"on_track",createdAt:i,updatedAt:r}}function v(e){if(!n(e))return null;let t=u(e.updatedAt??e.createdAt),r=u(e.createdAt,t),a=c(e.objectiveId??e.goalId);return a?{id:c(e.id,o("objective_activity")),objectiveId:a,sourceType:"note",sourceLabel:c(e.sourceLabel,"Update"),title:c(e.title,"Untitled activity"),body:c(e.body),createdAt:r,updatedAt:t,relatedTaskId:c(e.relatedTaskId)||null}:null}function y(e){if(!n(e))return null;let t=c(e.activityId);return t?{id:c(e.id,o("objective_thread_message")),activityId:t,author:c(e.author,"You"),body:c(e.body),createdAt:u(e.createdAt)}:null}function j(){return{objectives:[],activities:[],activityThreads:{}}}function x(e){let t;if(!n(e))return j();let r=Array.isArray(e.objectives)?e.objectives.map(e=>b(e)).filter(e=>null!==e):[],a=Array.isArray(e.activities)?e.activities.map(e=>v(e)).filter(e=>null!==e):[],o=n(e.activityThreads)?Object.fromEntries(Object.entries(e.activityThreads).map(([e,t])=>[e,s(Array.isArray(t)?t.map(e=>y(e)).filter(e=>null!==e):[])])):{};return{objectives:i((t=new Set,r.map(e=>{let r=h(e.key||e.title||e.id,t,e.id||e.title||"objective");return e.key===r?e:{...e,key:r}}))),activities:l(a),activityThreads:o}}function _(e){if(!n(e))return j();let a=e[t];if(void 0!==a){let e=x(a);if(e.objectives.length>0||e.activities.length>0||Object.keys(e.activityThreads).length>0)return e}let o=e[r];if(void 0!==o){if(!n(o))return j();let e=Array.isArray(o.goals)?o.goals.map(e=>(function(e){if(!n(e))return null;let t=c(e.target),r=[c(e.summary),t?`Measure: ${t}`:""].filter(Boolean).join("\n\n");return b({...e,summary:r})})(e)).filter(e=>null!==e):[],t=Array.isArray(o.manualActivities)?o.manualActivities.map(e=>v({...e,sourceLabel:"Update"})).filter(e=>null!==e):[],r=n(o.activityThreads)?Object.fromEntries(Object.entries(o.activityThreads).map(([e,t])=>[e,s(Array.isArray(t)?t.map(t=>y({...t,activityId:e})).filter(e=>null!==e):[])])):{};return{objectives:i(e),activities:l(t),activityThreads:r}}return j()}function w(e,a){let n={...e};return delete n[r],n[t]=x(a),n}function N(e){return{id:e.id??o("objective"),title:e.title.trim(),teamId:e.teamId.trim(),key:m(e.key?.trim()??e.title.trim(),e.id??e.title),threadId:"string"==typeof e.threadId&&e.threadId.trim()?e.threadId.trim():null,chatSessionVersion:f(e.chatSessionVersion??2,2),scheduledTaskIds:d(e.scheduledTaskIds??[]),summary:e.summary?.trim()??"",progress:p(e.progress??0),status:e.status??"on_track",createdAt:e.now,updatedAt:e.now}}function C(e,t){let r=e.objectives.findIndex(e=>e.id===t.id)>=0?e.objectives.map(e=>e.id===t.id?t:e):[t,...e.objectives];return{...e,objectives:i(r)}}function k(e,t){let r=new Set(e.activities.filter(e=>e.objectiveId===t).map(e=>e.id)),a=Object.fromEntries(Object.entries(e.activityThreads).filter(([e])=>!r.has(e)));return{objectives:e.objectives.filter(e=>e.id!==t),activities:e.activities.filter(e=>e.objectiveId!==t),activityThreads:a}}function T({objective:e,workspace:t}){return t.activities.filter(t=>t.objectiveId===e.id).map(e=>({...e,threadCount:t.activityThreads[e.id]?.length??0})).sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}e.s(["CURRENT_OBJECTIVE_CHAT_SESSION_VERSION",0,2,"LEGACY_PROJECT_GOALS_METADATA_KEY",0,r,"PROJECT_HEALTH_METADATA_KEY",0,"project_health_snapshot","PROJECT_OBJECTIVES_METADATA_KEY",0,t,"buildObjectiveTimelineActivities",()=>T,"createProjectObjective",()=>N,"generateProjectObjectiveKey",()=>g,"readProjectObjectivesWorkspace",()=>_,"removeProjectObjective",()=>k,"upsertProjectObjective",()=>C,"writeProjectObjectivesWorkspace",()=>w])},571278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={assign:function(){return l},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return s}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});function o(e){let t={};for(let[r,a]of e.entries()){let e=t[r];void 0===e?t[r]=a:Array.isArray(e)?e.push(a):t[r]=[e,a]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function s(e){let t=new URLSearchParams;for(let[r,a]of Object.entries(e))if(Array.isArray(a))for(let e of a)t.append(r,i(e));else t.set(r,i(a));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,a]of r.entries())e.append(t,a)}return e}},13168,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return s},formatWithValidation:function(){return c},urlObjectKeys:function(){return l}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let o=e.r(190809)._(e.r(571278)),i=/https?|ftp|gopher|file/;function s(e){let{auth:t,hostname:r}=e,a=e.protocol||"",n=e.pathname||"",s=e.hash||"",l=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),l&&"object"==typeof l&&(l=String(o.urlQueryToSearchParams(l)));let d=e.search||l&&`?${l}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||i.test(a))&&!1!==c?(c="//"+(c||""),n&&"/"!==n[0]&&(n="/"+n)):c||(c=""),s&&"#"!==s[0]&&(s="#"+s),d&&"?"!==d[0]&&(d="?"+d),n=n.replace(/[?#]/g,encodeURIComponent),d=d.replace("#","%23"),`${a}${c}${n}${d}${s}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return s(e)}},950581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let a=e.r(935851);function n(e,t){let r=(0,a.useRef)(null),n=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=o(e,a)),t&&(n.current=o(t,a))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},692942,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={DecodeError:function(){return b},MiddlewareNotFoundError:function(){return x},MissingStaticPage:function(){return j},NormalizeError:function(){return v},PageNotFoundError:function(){return y},SP:function(){return h},ST:function(){return g},WEB_VITALS:function(){return o},execOnce:function(){return i},getDisplayName:function(){return u},getLocationOrigin:function(){return c},getURL:function(){return d},isAbsoluteUrl:function(){return l},isResSent:function(){return p},loadGetInitialProps:function(){return m},normalizeRepeatedSlashes:function(){return f},stringifyError:function(){return _}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...a)=>(r||(r=!0,t=e(...a)),t)}let s=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>s.test(e);function c(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function d(){let{href:e}=window.location,t=c();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function p(e){return e.finished||e.headersSent}function f(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function m(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await m(t.Component,t.ctx)}:{};let a=await e.getInitialProps(t);if(r&&p(r))return a;if(!a)throw Object.defineProperty(Error(`"${u(e)}.getInitialProps()" should resolve to an object. But found "${a}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return a}let h="u">typeof performance,g=h&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class b extends Error{}class v extends Error{}class y extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class j extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class x extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function _(e){return JSON.stringify({message:e.message,stack:e.stack})}},299242,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return o}});let a=e.r(692942),n=e.r(756972);function o(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,n.hasBasePath)(r.pathname)}catch(e){return!1}}},405374,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},307241,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return b},useLinkStatus:function(){return y}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let o=e.r(190809),i=e.r(762281),s=o._(e.r(935851)),l=e.r(13168),c=e.r(543665),d=e.r(950581),u=e.r(692942),p=e.r(212591);e.r(292135);let f=e.r(53101),m=e.r(299242),h=e.r(979945);function g(e){return"string"==typeof e?e:(0,l.formatUrl)(e)}function b(t){var r;let a,n,o,[l,b]=(0,s.useOptimistic)(f.IDLE_LINK_STATUS),y=(0,s.useRef)(null),{href:j,as:x,children:_,prefetch:w=null,passHref:N,replace:C,shallow:k,scroll:T,onClick:S,onMouseEnter:E,onTouchStart:P,legacyBehavior:A=!1,onNavigate:O,ref:I,unstable_dynamicOnHover:L,...$}=t;a=_,A&&("string"==typeof a||"number"==typeof a)&&(a=(0,i.jsx)("a",{children:a}));let R=s.default.useContext(c.AppRouterContext),M=!1!==w,D=!1!==w?null===(r=w)||"auto"===r?h.FetchStrategy.PPR:h.FetchStrategy.Full:h.FetchStrategy.PPR,{href:U,as:F}=s.default.useMemo(()=>{let e=g(j);return{href:e,as:x?g(x):e}},[j,x]);if(A){if(a?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});n=s.default.Children.only(a)}let B=A?n&&"object"==typeof n&&n.ref:I,J=s.default.useCallback(e=>(null!==R&&(y.current=(0,f.mountLinkInstance)(e,U,R,D,M,b)),()=>{y.current&&((0,f.unmountLinkForCurrentNavigation)(y.current),y.current=null),(0,f.unmountPrefetchableInstance)(e)}),[M,U,R,D,b]),K={ref:(0,d.useMergedRef)(J,B),onClick(t){A||"function"!=typeof S||S(t),A&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!R||t.defaultPrevented||function(t,r,a,n,o,i,l){if("u">typeof window){let c,{nodeName:d}=t.currentTarget;if("A"===d.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(r)){o&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:u}=e.r(977803);s.default.startTransition(()=>{u(a||r,o?"replace":"push",i??!0,n.current)})}}(t,U,F,y,C,T,O)},onMouseEnter(e){A||"function"!=typeof E||E(e),A&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),R&&M&&(0,f.onNavigationIntent)(e.currentTarget,!0===L)},onTouchStart:function(e){A||"function"!=typeof P||P(e),A&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),R&&M&&(0,f.onNavigationIntent)(e.currentTarget,!0===L)}};return(0,u.isAbsoluteUrl)(F)?K.href=F:A&&!N&&("a"!==n.type||"href"in n.props)||(K.href=(0,p.addBasePath)(F)),o=A?s.default.cloneElement(n,K):(0,i.jsx)("a",{...$,...K,children:a}),(0,i.jsx)(v.Provider,{value:l,children:o})}e.r(405374);let v=(0,s.createContext)(f.IDLE_LINK_STATUS),y=()=>(0,s.useContext)(v);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},810605,e=>{"use strict";e.s(["GRAPH_TIMEOUT_DEFAULT_MS",0,864e5,"NODE_TIMEOUT_DEFAULT_MS",0,18e5,"UI_POLL_CHAT_ALT_MS",0,15e3,"UI_POLL_CHAT_CHECK_MS",0,1e4,"UI_POLL_DB_HEALTH_MS",0,3e4,"UI_POLL_PROMPT_RUNS_MS",0,5e3,"UI_POLL_SYSTEM_STATUS_MS",0,3e4,"UI_POLL_UPDATE_CHECK_MS",0,18e5])},535208,275850,e=>{"use strict";var t=e.i(762281),r=e.i(935851);function a({initialPath:e,onSelect:a,onCancel:n}){let[o,i]=(0,r.useState)(e||""),[s,l]=(0,r.useState)(null),[c,d]=(0,r.useState)(!1),[u,p]=(0,r.useState)(null),f=(0,r.useRef)(null),m=(0,r.useCallback)(async e=>{d(!0),p(null);try{let t=e?`?path=${encodeURIComponent(e)}`:"",r=await fetch(`/api/filesystem/browse${t}`),a=await r.json();if(!r.ok)return void p(a.error||"Failed to browse");l(a),i(a.current),f.current?.scrollTo(0,0)}catch{p("Failed to connect")}finally{d(!1)}},[]);return(0,r.useEffect)(()=>{m(e||"")},[]),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] overflow-hidden shadow-lg",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-[var(--card-border)] bg-[var(--muted)]/30",children:[(0,t.jsx)("input",{value:o,onChange:e=>i(e.target.value),onKeyDown:e=>{"Enter"===e.key&&m(o)},className:"input text-xs flex-1 py-1",placeholder:"Enter path..."}),(0,t.jsx)("button",{type:"button",onClick:()=>m(o),className:"text-[10px] font-bold uppercase tracking-wider text-[var(--primary)] hover:underline px-2 py-1 shrink-0",children:"Go"})]}),(0,t.jsxs)("div",{ref:f,className:"max-h-48 overflow-y-auto",children:[c&&(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)] text-center",children:"Loading..."}),u&&(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--destructive)] text-center",children:u}),!c&&s&&(0,t.jsxs)("div",{className:"py-1",children:[s.parent&&(0,t.jsxs)("button",{type:"button",onClick:()=>m(s.parent),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-[var(--muted)]/50 transition-colors flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"↑"}),(0,t.jsx)("span",{className:"text-[var(--muted-foreground)]",children:".."})]}),0===s.dirs.length&&!s.parent&&(0,t.jsx)("div",{className:"px-3 py-3 text-xs text-[var(--muted-foreground)] text-center",children:"No subdirectories"}),s.dirs.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>m(e.path),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-[var(--muted)]/50 transition-colors flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"📁"}),(0,t.jsx)("span",{className:"truncate",children:e.name})]},e.path))]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 border-t border-[var(--card-border)] bg-[var(--muted)]/30",children:[(0,t.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)] truncate max-w-[60%]",children:s?.current||o}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:n,className:"text-xs font-medium text-[var(--muted-foreground)] hover:underline px-2 py-1",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:()=>a(s?.current||o),className:"text-xs font-bold text-[var(--primary)] hover:underline px-2 py-1",children:"Select"})]})]})]})}function n(e){return{name:e.name.trim(),path:e.path.trim()}}function o(e){let{name:t,path:r}=n(e);return t||r?t?r?null:"missing_path":"missing_name":null}function i(e){for(let[t,r]of e.entries()){let e=o(r);if(e)return{index:t,issue:e,repo:r}}return null}function s(e){let{name:t,path:r}=n(e);return!!(t&&r)}function l(e){let{issue:t,repo:r}=e;return"missing_name"===t?`Folder name is required for local path "${r.path.trim()}"`:`Local path is required for folder "${r.name.trim()}"`}e.s(["findInvalidProjectRepoDraft",()=>i,"formatInvalidProjectRepoDraftMessage",()=>l,"getProjectRepoValidationIssue",()=>o,"isCompleteProjectRepoDraft",()=>s],275850);let c={name:"",description:""},d={name:"",path:"",notes:""};function u(){let[e,t]=(0,r.useState)(c),[a,n]=(0,r.useState)([d]),[o,i]=(0,r.useState)(!1),[s,l]=(0,r.useState)(null),u=(0,r.useCallback)((e,t,r)=>{n(a=>a.map((a,n)=>n===e?{...a,[t]:r}:a))},[]),p=(0,r.useCallback)(()=>{n(e=>[...e,{...d}])},[]),f=(0,r.useCallback)(e=>{n(t=>t.filter((t,r)=>r!==e))},[]),m=(0,r.useCallback)(()=>{t(c),n([d]),l(null)},[]),h=(0,r.useCallback)(e=>{t({name:e.name||"",description:e.description||""}),e.repos&&e.repos.length>0?n(e.repos.map(e=>({id:e.id,name:e.name||"",path:e.path||"",git_url:e.git_url||"",notes:e.notes||""}))):n([d]),l(null)},[]);return{form:e,setForm:t,repos:a,handleRepoChange:u,addRepo:p,removeRepo:f,resetForm:m,hydrateFromProject:h,isSubmitting:o,setIsSubmitting:i,formError:s,setFormError:l}}function p(e,t){let r=i(t);if(r)throw Error(l(r));let a=t.filter(e=>s(e)).map(e=>({...e.id?{id:e.id}:{},name:e.name.trim(),path:e.path.trim(),...e.git_url?.trim()?{git_url:e.git_url.trim()}:{},notes:e.notes.trim()||void 0}));return{name:e.name.trim(),description:e.description.trim()||void 0,repos:a.length?a:void 0}}function f({form:e,repos:n,isEditingProject:i,isSubmitting:s,onFieldChange:l,onRepoChange:c,onAddRepo:d,onRemoveRepo:u}){let[p,f]=(0,r.useState)([]),[m,h]=(0,r.useState)(null),g=(0,r.useRef)(0);(0,r.useEffect)(()=>{i?f([]):f(n.map((e,t)=>t)),g.current=n.length},[i,n.length]),(0,r.useEffect)(()=>{if(!i){g.current=n.length;return}let e=g.current;f(t=>{let r=t.filter(e=>e<n.length);return n.length>e&&r.push(...Array.from({length:n.length-e},(t,r)=>e+r)),r}),g.current=n.length},[i,n.length]);let b=(0,r.useCallback)(e=>{f(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),v=(0,r.useCallback)(e=>!i||p.includes(e),[p,i]);return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)("div",{className:"grid gap-4",children:(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Project Name"}),(0,t.jsx)("input",{value:e.name,onChange:e=>l("name",e.target.value),className:"input w-full",placeholder:"e.g. AGX Cloud",disabled:s})]})}),(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Description"}),(0,t.jsx)("textarea",{value:e.description,onChange:e=>l("description",e.target.value),className:"input w-full h-24 resize-none",placeholder:"What is this project about?",disabled:s})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--card-border)] pb-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Folders"}),(0,t.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:"Code repos, doc folders, design assets, config directories — any path your team needs access to."})]}),(0,t.jsx)("button",{type:"button",onClick:d,className:"text-xs font-semibold text-[var(--primary)] hover:underline flex-shrink-0",disabled:s,children:"+ Add Folder"})]}),(0,t.jsx)("div",{className:"space-y-4",children:n.map((e,r)=>{let l=o(e);return(0,t.jsxs)("div",{className:"p-4 rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 space-y-3 relative group",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"text-xs font-bold text-[var(--foreground)] uppercase",children:["Folder #",r+1]}),i&&!v(r)?(0,t.jsxs)("div",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)("div",{children:e.name||"Unnamed folder"}),(0,t.jsx)("div",{className:"truncate",children:e.path||"No local path set"})]}):null]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[i&&(0,t.jsx)("button",{type:"button",onClick:()=>b(r),className:"text-xs font-semibold text-[var(--primary)] hover:underline",disabled:s,children:v(r)?"Done":"Edit"}),n.length>1&&(0,t.jsx)("button",{type:"button",onClick:()=>u(r),className:"text-xs font-semibold text-[var(--destructive)] hover:underline",disabled:s,children:"Remove"})]})]}),v(r)?(0,t.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("input",{value:e.name,onChange:e=>c(r,"name",e.target.value),placeholder:"Name (e.g. Frontend, API Docs, Design System)",className:`input text-sm w-full${"missing_name"===l?" border-[var(--destructive)]/50 ring-1 ring-[var(--destructive)]/20":""}`,disabled:s}),"missing_name"===l&&(0,t.jsx)("p",{className:"text-[11px] text-[var(--destructive)]",children:"Folder name is required"})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("input",{value:e.path,onChange:e=>c(r,"path",e.target.value),placeholder:"Local path to folder",className:`input text-sm flex-1${"missing_path"===l?" border-[var(--destructive)]/50 ring-1 ring-[var(--destructive)]/20":""}`,disabled:s}),(0,t.jsx)("button",{type:"button",onClick:async()=>{try{let e=await fetch("/api/filesystem/pick-folder",{method:"POST"}),t=await e.json();t.path&&c(r,"path",t.path)}catch{h(m===r?null:r)}},className:"px-3 py-2 rounded-xl border border-[var(--card-border)] bg-[var(--muted)]/30 hover:bg-[var(--muted)]/60 transition-colors text-xs font-semibold text-[var(--muted-foreground)] whitespace-nowrap",disabled:s,children:"Browse"})]}),"missing_path"===l&&(0,t.jsx)("p",{className:"text-[11px] text-[var(--destructive)]",children:"Local path is required"})]}),m===r&&(0,t.jsx)("div",{className:"md:col-span-2",children:(0,t.jsx)(a,{initialPath:e.path||"",onSelect:e=>{c(r,"path",e),h(null)},onCancel:()=>h(null)})}),(0,t.jsx)("div",{className:"md:col-span-2",children:(0,t.jsx)("textarea",{value:e.notes,onChange:e=>c(r,"notes",e.target.value),placeholder:"Notes for this folder — e.g. coding conventions, deploy steps, ownership, doc standards...",className:"input text-sm w-full min-h-24 resize-y",disabled:s})})]}):null]},r)})})]})]})}function m({isOpen:e,onClose:a,onSubmit:n,editingProject:o,form:s,repos:l,isSubmitting:c,formError:d,onFieldChange:u,onRepoChange:p,onAddRepo:m,onRemoveRepo:h}){let[g,b]=(0,r.useState)([]);(0,r.useEffect)(()=>{let e=!1;return async function(){if(!o)return b([]);try{let t=await fetch(`/api/knowledge-notes?scope=project&subjectId=${encodeURIComponent(o.id)}`),r=(t.ok?await t.json():{note:null}).note;e||b(r?.content?[{id:r.id,content:r.content,created_at:r.updatedAt??r.createdAt,source:r.sourceType}]:[])}catch{e||b([])}}(),()=>{e=!0}},[o]);let v=!!i(l),y=!s.name.trim()||v;return e?(0,t.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:e=>e.target===e.currentTarget&&a(),children:(0,t.jsxs)("div",{className:"modal-content w-full max-w-4xl mx-2 sm:mx-auto bg-[var(--card-bg)] rounded-3xl border border-[var(--card-border)] shadow-2xl animate-scale-in flex flex-col max-h-[90vh]",children:[(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-bold",children:o?"Edit Project":"Create New Project"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:o?"Update your project settings and folders.":"Define a new project and connect folders."})]}),(0,t.jsx)("button",{onClick:a,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 sm:p-8",children:[o&&(0,t.jsx)("div",{className:"mb-6",children:(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 p-4",children:[(0,t.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Living Project Note"}),g.length>0?(0,t.jsx)("div",{className:"mt-3 space-y-2",children:g.slice(0,5).map(e=>(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,t.jsx)("div",{children:e.content}),e.created_at?(0,t.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(e.created_at).toLocaleString()}):null]},e.id))}):(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"No project note yet."})]})}),(0,t.jsx)(f,{form:s,repos:l,isEditingProject:!!o,isSubmitting:c,onFieldChange:u,onRepoChange:p,onAddRepo:m,onRemoveRepo:h}),d&&(0,t.jsx)("div",{className:"mt-6 p-4 rounded-xl bg-[var(--destructive-muted)] border border-[var(--destructive)]/20 text-sm text-[var(--destructive)]",children:d})]}),(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-t border-[var(--card-border)] flex items-center justify-end gap-3 flex-shrink-0",children:[(0,t.jsx)("button",{onClick:a,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Cancel"}),(0,t.jsx)("button",{onClick:n,disabled:c||y,className:"btn-primary px-8 py-2 shadow-lg shadow-[var(--primary)]/20 min-w-[120px]",children:c?(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"spinner w-3 h-3 border-2 border-white/20 border-t-white"}),"Saving..."]}):o?"Save Changes":"Create Project"})]})]})}):null}e.s(["createProjectPayload",()=>p,"default",()=>m,"useProjectFormState",()=>u],535208)}]);
@@ -45,4 +45,4 @@ ${s}
45
45
 
46
46
  Work through these tickets as a coherent unit of work.
47
47
 
48
- `+(d??""),n=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:t,promptPrefix:a,threadId:r.threadId,activeParticipantIds:[p.id],projectSlug:i??void 0,routing:c})}),l=await n.json().catch(()=>({}));if(!n.ok||!l.chatRunId||!l.userMessageId)throw Error(l.error||"Failed to start chat session");await j(r.id,{chatRunId:l.chatRunId,rootMessageId:l.userMessageId}),u(r.id)}catch(e){console.error("Failed to create group chat session:",e),P.current=!1,e instanceof Error&&window.alert(e.message)}},[e,b,n,k,o,i,y,j,u]);return(0,t.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,t.jsxs)("div",{className:"flex h-12 shrink-0 items-center gap-2 border-b border-[var(--card-border)] px-4",children:[(0,t.jsx)(e6.FolderOpen,{size:16,className:"shrink-0 text-[var(--muted-foreground)]"}),m?(0,t.jsx)("input",{type:"text",value:f,onChange:e=>g(e.target.value),onBlur:h,onKeyDown:t=>{"Enter"===t.key&&h(),"Escape"===t.key&&(g(e.name),x(!1))},autoFocus:!0,className:"min-w-0 flex-1 bg-transparent text-sm font-medium text-[var(--foreground)] outline-none border-b border-[var(--primary)]"}):(0,t.jsx)("h3",{className:"min-w-0 flex-1 truncate text-sm font-medium text-[var(--foreground)]",children:e.name}),(0,t.jsx)("button",{type:"button",className:"flex h-6 w-6 items-center justify-center rounded text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>{g(e.name),x(!0)},title:"Rename group",children:(0,t.jsx)(e9.Pencil,{size:12})}),(0,t.jsx)("button",{type:"button",className:"flex h-6 w-6 items-center justify-center rounded text-[var(--muted-foreground)] hover:text-red-400 transition-colors",onClick:d,title:"Delete group (ungroups tickets)",children:(0,t.jsx)(L.Trash2,{size:12})})]}),(0,t.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto pb-64",children:[(0,t.jsxs)("section",{className:"border-b border-[var(--card-border)]",children:[(0,t.jsxs)("div",{className:"px-4 py-2 text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:["Tickets (",b.length,")"]}),0===b.length?(0,t.jsx)("div",{className:"px-4 pb-4 text-center text-xs text-[var(--muted-foreground)]",children:"No tickets in this group."}):b.map(e=>(0,t.jsx)(eY,{item:e,selected:!1,onSelect:()=>c(e.id)},e.id))]}),(0,t.jsx)(eQ,{issueId:e.id,trackerType:a,projectId:o}),(0,t.jsx)(e0,{runs:v,onSelect:p})]}),n.length>0&&(0,t.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:(0,t.jsx)(te,{onSend:z,onStop:()=>{},participants:n,projectId:o??void 0,projectSlug:i??void 0,loading:"ready"!==A,commands:[],activityStatus:A,placeholder:`Work on tickets in "${e.name}"...`,initialPinnedParticipantId:k?.id})})]})}let tr="__pending-group__";function ts({ticket:e,isLast:r}){let{attributes:s,listeners:a,setNodeRef:n,transform:o,isDragging:i}=(0,eX.useDraggable)({id:e.id}),l=o?{transform:`translate3d(${o.x}px, ${o.y}px, 0)`,opacity:i?.3:1,position:"relative",zIndex:i?50:void 0}:void 0;return(0,t.jsxs)("div",{ref:n,style:l,...s,...a,className:"flex items-center gap-3 pl-[48px] pr-4 py-2 text-sm cursor-grab active:cursor-grabbing",children:[(0,t.jsx)("span",{className:"shrink-0 font-mono text-[11px] leading-none text-[var(--muted-foreground)]/40 select-none",children:r?"└──":"├──"}),(0,t.jsx)("span",{className:"shrink-0 whitespace-nowrap font-mono text-xs text-[var(--muted-foreground)]",children:e.identifier}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs text-[var(--muted-foreground)]",children:e.title}),e.status&&(0,t.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:e.status})]})}function ta({tickets:e,onConfirm:s,onCancel:a}){let[n,o]=(0,r.useState)(""),i=(0,r.useRef)(null),{setNodeRef:l,isOver:d}=(0,eX.useDroppable)({id:tr});(0,r.useEffect)(()=>{i.current?.focus()},[]);let c=(0,r.useCallback)(()=>{let t=n.trim(),r=e.map(e=>e.identifier).join(", ");s(t||r||"Untitled")},[n,s,e]);return(0,t.jsxs)("div",{ref:l,className:`mx-0 my-0 transition-colors ${d?"bg-[var(--primary)]/5":""}`,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 pl-[24px] pr-4 py-2 bg-[var(--card-bg)]/50",children:[(0,t.jsx)(et.ChevronDown,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)(e6.FolderOpen,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("input",{ref:i,type:"text",value:n,onChange:e=>o(e.target.value),onKeyDown:e=>{"Enter"===e.key&&c(),"Escape"===e.key&&a()},placeholder:e.map(e=>e.identifier).join(", ")||"Name this group...",className:"min-w-0 flex-1 bg-transparent text-xs font-medium text-[var(--foreground)] placeholder:text-[var(--muted-foreground)]/60 outline-none border-b border-[var(--primary)]/40 pb-0.5 focus:border-[var(--primary)]"}),(0,t.jsx)("button",{type:"button",className:"rounded px-2 py-0.5 text-[10px] font-medium bg-[var(--primary)] text-[var(--primary-foreground)] hover:opacity-90 transition-opacity",onClick:c,children:"Create"}),(0,t.jsx)("button",{type:"button",className:"rounded px-2 py-0.5 text-[10px] font-medium text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:a,children:"Cancel"})]}),e.map((r,s)=>(0,t.jsx)(ts,{ticket:r,isLast:s===e.length-1},r.id))]})}let tn="sg::";function to({status:e,categoryColor:r,count:s,collapsed:a,onToggle:n}){let{setNodeRef:o,isOver:i}=(0,eX.useDroppable)({id:`${tn}${e}`});return(0,t.jsxs)("div",{ref:o,className:`sticky top-0 z-[5] flex cursor-pointer items-center gap-2 border-b border-[var(--card-border)] bg-[var(--app-shell-pane)] px-4 py-2 transition-colors ${i?"bg-[var(--primary)]/10 ring-1 ring-inset ring-[var(--primary)]/30":""}`,onClick:n,role:"button",tabIndex:0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),n())},children:[a?(0,t.jsx)(er.ChevronRight,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}):(0,t.jsx)(et.ChevronDown,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${r}`}),(0,t.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)]",children:e}),(0,t.jsx)("span",{className:"text-[10px] tabular-nums text-[var(--muted-foreground)]",children:s})]})}var ti=e.i(459073);function tl({open:e,onClose:s,anchorRef:a,children:n}){let o=(0,r.useRef)(null);return((0,r.useEffect)(()=>{if(!e)return;let t=e=>{o.current?.contains(e.target)||a.current?.contains(e.target)||s()},r=e=>{"Escape"===e.key&&s()};return document.addEventListener("pointerdown",t),document.addEventListener("keydown",r),()=>{document.removeEventListener("pointerdown",t),document.removeEventListener("keydown",r)}},[e,s,a]),e)?(0,t.jsx)("div",{ref:o,className:"absolute bottom-full left-1/2 z-50 mb-2 -translate-x-1/2 rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-2 shadow-lg backdrop-blur-sm",children:n}):null}function td({count:e,onGroup:s,onClear:a,onBulkRecap:n,onBulkPrompt:o,onBulkEstimate:i,onBulkAddLabel:l,onBulkRemoveLabel:d,onBulkStatus:c,statusOptions:p,participants:m,labels:x,onCreateLabel:f,selectedMetadata:h,statusUpdating:b}){let[v,y]=(0,r.useState)(null),j=(0,r.useRef)(null),k=(0,r.useRef)(null),w=(0,r.useRef)(null),N=(0,r.useCallback)(e=>{y(t=>t===e?null:e)},[]),C=r.default.useMemo(()=>{let e=new Map;for(let t of h.values())for(let r of t.labels)e.set(r,(e.get(r)??0)+1);return e},[h]),S=r.default.useMemo(()=>{let e=new Set;for(let t of h.values())for(let r of t.labels)e.add(r);return Array.from(e)},[h]);if(e<2)return null;let I="flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-[11px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--background)] hover:text-[var(--foreground)]";return(0,t.jsx)("div",{className:"absolute bottom-4 left-1/2 z-30 -translate-x-1/2",children:(0,t.jsxs)("div",{className:"flex items-center gap-1 rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] px-3 py-1.5 shadow-2xl",children:[(0,t.jsxs)("span",{className:"mr-1 text-xs font-medium text-[var(--foreground)]",children:[e," selected"]}),(0,t.jsx)("div",{className:"mx-1 h-4 w-px bg-[var(--card-border)]"}),(0,t.jsxs)("button",{type:"button",className:I,onClick:n,title:"Recap all selected",children:[(0,t.jsx)(eK.FileText,{size:12}),"Recap"]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("button",{ref:w,type:"button",className:`${I} ${"prompt"===v?"bg-[var(--background)] text-[var(--foreground)]":""}`,onClick:()=>N("prompt"),title:"Send prompt to all selected",children:[(0,t.jsx)(eP.MessageSquare,{size:12}),"Prompt"]}),(0,t.jsx)(tl,{open:"prompt"===v,onClose:()=>y(null),anchorRef:w,children:(0,t.jsx)(eG,{count:e,participants:m,onSend:(e,t)=>{o(e,t),y(null)}})})]}),(0,t.jsxs)("button",{type:"button",className:I,onClick:i,title:"Ask the LLM to size all selected",children:[(0,t.jsx)(eW.Hash,{size:12}),"Estimate"]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("button",{ref:j,type:"button",className:`${I} ${"label"===v?"bg-[var(--background)] text-[var(--foreground)]":""}`,onClick:()=>N("label"),title:"Label all selected",children:[(0,t.jsx)(ee.Tag,{size:12}),"Label"]}),(0,t.jsx)(tl,{open:"label"===v,onClose:()=>y(null),anchorRef:j,children:(0,t.jsx)(eJ,{labels:x,selectedLabels:S,labelCounts:C,totalSelected:e,onToggle:t=>{(C.get(t)??0)===e?d(t):l(t)},onAdd:f})})]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("button",{ref:k,type:"button",className:`${I} ${"status"===v?"bg-[var(--background)] text-[var(--foreground)]":""}`,onClick:()=>N("status"),title:"Update status for all selected",disabled:b,children:[b?(0,t.jsx)(u.RefreshCw,{size:12,className:"animate-spin"}):(0,t.jsx)(u.RefreshCw,{size:12}),"Status"]}),(0,t.jsx)(tl,{open:"status"===v,onClose:()=>y(null),anchorRef:k,children:(0,t.jsx)("div",{className:"flex max-h-48 w-44 flex-col overflow-y-auto",children:p.map(e=>(0,t.jsx)("button",{type:"button",className:"w-full rounded-lg px-3 py-1.5 text-left text-xs text-[var(--muted-foreground)] transition-colors hover:bg-[var(--background)] hover:text-[var(--foreground)]",onClick:()=>{c(e.value),y(null)},children:e.label},e.value))})})]}),(0,t.jsxs)("button",{type:"button",className:I,onClick:s,title:"Group selected",children:[(0,t.jsx)(ti.FolderPlus,{size:12}),"Group"]}),(0,t.jsx)("div",{className:"mx-1 h-4 w-px bg-[var(--card-border)]"}),(0,t.jsx)("button",{type:"button",className:"flex h-6 w-6 items-center justify-center rounded text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",onClick:a,"aria-label":"Clear selection",children:(0,t.jsx)(g.X,{size:14})})]})})}var tc=e.i(638703);let tu=(0,s.default)(()=>e.A(501223).then(e=>e.Composer),{loadableGenerated:{modules:[844118]},ssr:!1}),tp={todo:"bg-zinc-400",in_progress:"bg-amber-400",done:"bg-emerald-400",cancelled:"bg-red-400"};function tm({item:e,run:s,participants:a,itemStatusOptions:n,itemStatusUpdating:o,onItemStatusChange:i,onBack:c}){let{messages:u,setMessages:p,sendMessage:m,loadHistory:x,stop:g}=(0,R.useGroupChat)(s.threadId),{processes:h,streaming:b,chatRuns:v}=(0,T.useProcessPolling)(s.rootMessageId?{workspaceId:s.threadId,threadId:s.rootMessageId}:{workspaceId:s.threadId},{messages:u,setMessages:p}),y=(0,r.useMemo)(()=>{let e=v[0];if(!e)return ek(s);let t={queued:"queued",running:"running",awaiting_user:"running",blocked:"running",completed:"success",failed:"failed",cancelled:"cancelled"}[e.status]??s.status;return ek({...s,status:t})},[v,s]);(0,r.useEffect)(()=>{x()},[x,s.threadId]);let j=(0,r.useMemo)(()=>new Map(a.map(e=>[e.id,e])),[a]),k=(0,r.useRef)(null),[w,N]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=k.current;if(!e)return;let t=()=>{let{scrollTop:t,scrollHeight:r,clientHeight:s}=e;N(r-t-s>200)};return e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[]);let C=(0,r.useCallback)(()=>{let e=k.current;e&&e.scrollTo({top:e.scrollHeight,behavior:"smooth"})},[]),S=(0,r.useRef)(0);(0,r.useEffect)(()=>{u.length>S.current&&k.current?.scrollTo({top:k.current.scrollHeight,behavior:"smooth"}),S.current=u.length},[u.length]);let I=new Set(["queued","running","awaiting_user","blocked"]),$=v.some(e=>I.has(e.status))||h.some(e=>"spawning"===e.state||"running"===e.state)?v.some(e=>"queued"===e.status)?"queued":"working":"ready",A=(0,r.useCallback)((e,t,r,n,o,i,l)=>{s.rootMessageId&&m(e,t,void 0,s.rootMessageId,r,void 0,(0,X.orderParticipantIds)(a.map(e=>e.id),o),s.projectSlug??void 0,i,l)},[a,s.projectSlug,s.rootMessageId,m]);return(0,t.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,t.jsxs)("header",{className:"flex h-12 shrink-0 items-center justify-between border-b border-[var(--card-border)] px-6",children:[(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[c&&(0,t.jsx)("button",{type:"button",onClick:c,className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",title:"Back to sessions",children:(0,t.jsx)(l.ChevronLeft,{size:16})}),(0,t.jsx)("span",{className:"shrink-0 font-mono text-sm text-[var(--muted-foreground)]",children:e.identifier}),(0,t.jsx)("div",{className:"h-1 w-1 shrink-0 rounded-full bg-[var(--card-border)]"}),(0,t.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:ew(s)})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-4",children:[(0,t.jsx)(eT,{status:e.status,options:n,disabled:0===n.length,updating:o,onChange:t=>i(e,t)}),(0,t.jsxs)("div",{className:`flex items-center gap-2 rounded-md border px-2.5 py-1 ${eC[y.tone]}`,children:[(0,t.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${eS[y.tone]}`}),(0,t.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider",children:y.label})]}),null!=s.durationMs&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)(d.Clock,{size:14}),(0,t.jsxs)("span",{children:[(s.durationMs/1e3).toFixed(1),"s"]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-[var(--card-border)] bg-[var(--card-bg)] px-2 py-1",children:[(0,t.jsx)("img",{src:eV(s.agentId,j.get(s.agentId)?.color),alt:s.agentName,className:"h-5 w-5 rounded-full object-cover"}),(0,t.jsx)("span",{className:"pr-1 text-xs font-medium",children:s.agentName})]})]})]}),(0,t.jsx)("div",{ref:k,className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===u.length?(0,t.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:"queued"===s.status||"running"===s.status?"Starting session...":"No thread messages yet."}):(0,t.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[u.map(e=>{let r=e.participantId?j.get(e.participantId):null,a=(0,U.stripMarkers)(e.content);if(!a.trim())return null;let n=e.participantId??s.agentId;return(0,t.jsxs)("div",{className:"flex gap-3",children:["user"===e.role?(0,t.jsx)("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-[var(--app-shell-subtle,var(--card-bg))]",children:(0,t.jsx)(f.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,t.jsx)("img",{src:eV(n,r?.color),alt:r?.name??s.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1 flex flex-col gap-1.5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("div",{className:"flex items-center gap-2",children:"user"===e.role?(0,t.jsx)("span",{className:"text-sm font-semibold text-[var(--foreground)]",children:"You"}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-sm font-semibold",style:{color:r?.color??"var(--foreground)"},children:r?.name??s.agentName}),(0,t.jsx)("span",{className:"rounded bg-[var(--card-bg)] px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Agent"})]})}),(0,t.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:new Date(e.timestamp).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),"user"===e.role?(0,t.jsx)("div",{className:"w-fit max-w-[85%] rounded-xl rounded-tl-sm border border-[var(--card-border)] bg-[var(--card-bg)] px-4 py-3 text-sm text-[var(--foreground)]",children:(0,t.jsx)(E.Markdown,{content:a,isUser:!0})}):(0,t.jsx)("div",{className:"text-sm text-[var(--foreground)]",children:(0,t.jsx)(E.Markdown,{content:a,isUser:!1})})]})]},e.id)}),Object.entries(b).filter(([,e])=>!s.rootMessageId||e.rootMessageId===s.rootMessageId).map(([e])=>{let r=j.get(e);return(0,t.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)("img",{src:eV(e,r?.color),alt:r?.name??s.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),r?.name??s.agentName," is thinking..."]},`stream-${e}`)})]})}),(0,t.jsx)(tc.JumpToLatestButton,{visible:w&&u.length>10,onClick:C,offsetClassName:"bottom-40"}),(0,t.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:s.rootMessageId?(0,t.jsx)(tu,{onSend:A,onStop:g,participants:a,projectId:s.projectId??void 0,projectSlug:s.projectSlug??void 0,loading:"ready"!==$,commands:[],activityStatus:$,placeholder:"Continue this session...",initialPinnedParticipantId:s.agentId}):(0,t.jsx)("div",{className:"px-2 py-1 text-xs text-[var(--muted-foreground)]",children:"Waiting for the session to start..."})})]})}function tx({trackerType:e,projectId:s,projectSlug:o,initialShowSettings:l,initialGroupId:d}){let f,b,{isTouchLayout:v}=(0,O.useInputCapabilities)(),{connected:y,loading:R,user:T,clis:E,mcpConfigured:A,connect:P,connectWithKey:L,disconnect:z,configureMcp:M}=(0,w.useTrackerConnection)(e,s??""),U=(0,r.useRef)(null),[X,Y]=(0,r.useState)(l??!1),[Q,Z]=(0,r.useState)(!1),[ee,et]=(0,r.useState)(()=>(0,G.loadLinearTicketPanelWidth)()||576),[er,es]=(0,r.useState)(""),[ea,en]=(0,r.useState)(""),[eo,ei]=(0,r.useState)(!1),[el,ed]=(0,r.useState)([]),[ec,eu]=(0,r.useState)([]),[ep,em]=(0,r.useState)([]),[ex,ef]=(0,r.useState)([]),[eg,eh]=(0,r.useState)([]),[eb,ev]=(0,r.useState)([]),[eC,eS]=(0,r.useState)("Group"),[eT,eA]=(0,r.useState)(""),[eP,eL]=(0,r.useState)(""),[ez,eM]=(0,r.useState)("activity"),[eD,eU]=(0,r.useState)("desc"),[eO,eF]=(0,r.useState)([]),[eB,e_]=(0,r.useState)(()=>W(e,o)),[eq,eJ]=(0,r.useState)(null),[eK,eW]=(0,r.useState)(null),[eG,eH]=(0,r.useState)(new Set),{participants:eQ}=(0,e3.useTrackerParticipants)(e,s),{issueActiveAgents:eZ}=function(e,t){let[s,a]=(0,r.useState)(new Map);return(0,r.useEffect)(()=>{let r=!1;async function s(){try{let s=new URLSearchParams;t&&s.set("projectId",t);let n=await fetch(`/api/trackers/${e}/active-agents?${s}`);if(!n.ok||r)return;let o=await n.json(),i=new Map;for(let e of o.agents??[]){let t=i.get(e.issueId)??[];t.push({agentId:e.agentId,agentName:e.agentName}),i.set(e.issueId,t)}r||a(i)}catch{}}s();let n=setInterval(()=>void s(),5e3);return()=>{r=!0,clearInterval(n)}},[e,t]),{issueActiveAgents:s}}(e,s),{issueStats:e0}=function(e,t){let[s,a]=(0,r.useState)(new Map);return(0,r.useEffect)(()=>{let r=!1;async function s(){try{let s=new URLSearchParams;t&&s.set("projectId",t);let n=await fetch(`/api/trackers/${e}/stats?${s}`);if(!n.ok||r)return;let o=await n.json(),i=new Map;for(let e of o.stats??[])i.set(e.issueId,{sessions:e.sessions,messages:e.messages});r||a(i)}catch{}}s();let n=setInterval(()=>void s(),1e4);return()=>{r=!0,clearInterval(n)}},[e,t]),{issueStats:s}}(e,s),[e1,e2]=(0,r.useState)(null),[e5,e6]=(0,r.useState)(null),[e8,e9]=(0,r.useState)("runs"),te=(0,r.useRef)(null),ts=(0,r.useRef)(!0),ti=(0,r.useRef)(null),tl=(0,r.useRef)(null),{getSelection:tu,pushSelection:tx,replaceSelection:tf}=(0,h.useUrlSelection)(),tg=tu("issue"),th=tu("run"),tb=tu("group"),{groups:tv,createGroup:ty,updateGroup:tj,deleteGroup:tk,addTasksToGroup:tw,removeTaskFromGroup:tN,refetch:tC}=function(e){let[t,s]=(0,r.useState)([]),[a,n]=(0,r.useState)(!1),o=(0,r.useCallback)(async()=>{if(e){n(!0);try{let t=await fetch(`/api/task-groups?project_id=${encodeURIComponent(e)}`);if(!t.ok)throw Error("Failed to fetch groups");let r=await t.json();s(r.groups??[])}catch(e){console.error("useTaskGroups fetch error:",e)}finally{n(!1)}}},[e]);(0,r.useEffect)(()=>{o()},[o]);let i=(0,r.useCallback)(async(t,r)=>{if(!e)return null;try{let s=await fetch("/api/task-groups",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_id:e,name:t,task_ids:r})});if(!s.ok)throw Error("Failed to create group");let a=await s.json();return await o(),a.group}catch(e){return console.error("createGroup error:",e),null}},[e,o]),l=(0,r.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/task-groups/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).ok)throw Error("Failed to update group");await o()}catch(e){console.error("updateGroup error:",e)}},[o]),d=(0,r.useCallback)(async e=>{try{if(!(await fetch(`/api/task-groups/${e}`,{method:"DELETE"})).ok)throw Error("Failed to delete group");await o()}catch(e){console.error("deleteGroup error:",e)}},[o]),c=(0,r.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/task-groups/${e}/tasks`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task_ids:t})})).ok)throw Error("Failed to assign tasks");await o()}catch(e){console.error("addTasksToGroup error:",e)}},[o]),u=(0,r.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/task-groups/${e}/tasks?task_id=${encodeURIComponent(t)}`,{method:"DELETE"})).ok)throw Error("Failed to remove task");await o()}catch(e){console.error("removeTaskFromGroup error:",e)}},[o]);return{groups:t,isLoading:a,refetch:o,createGroup:i,updateGroup:l,deleteGroup:d,addTasksToGroup:c,removeTaskFromGroup:u}}(s),[tS,tI]=(0,r.useState)(new Set),[t$,tR]=(0,r.useState)(!1),[tT,tE]=(0,r.useState)([]),[tA,tP]=(0,r.useState)(null),tL=(0,eX.useSensors)((0,eX.useSensor)(eX.PointerSensor,{activationConstraint:{distance:8}})),[tz,tM]=(0,r.useState)(null),tD=(0,r.useCallback)(e=>{tI(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),tU=(0,r.useCallback)(async e=>{tT.length<2||(await ty(e,tT),tE([]),tR(!1),tP(null),tI(new Set))},[tT,ty]),tO=(0,r.useRef)([]),tF=(0,r.useRef)(null),tB=(0,r.useCallback)(()=>{let e=Array.from(tS),t=tO.current.find(e=>tS.has(e.id));tE(e),tP(t?.id??e[0]??null),tR(!0)},[tS]),t_=tv.find(e=>e.id===tb),tq=(0,r.useMemo)(()=>new Set(tv.flatMap(e=>e.task_ids)),[tv]),tJ=(0,r.useCallback)(e=>{tM(e.active.id)},[]),tK=(0,r.useCallback)(async e=>{tM(null);let{active:t,over:r}=e,s=t.id;if(t$){let e=tT.includes(s);if(!r||t.id===r.id){e&&tE(e=>{let t=e.filter(e=>e!==s);return t.length<2?(tR(!1),tP(null),[]):t});return}let a=r.id,n=a===tr||tT.includes(a);e&&!n?tE(e=>{let t=e.filter(e=>e!==s);return t.length<2?(tR(!1),tP(null),[]):t}):e||tE(e=>[...e,s]);return}if(!r||t.id===r.id)return;let a=r.id;if(a.startsWith(tn)){let e=a.slice(tn.length),t=tO.current.find(e=>e.id===s),r=tO.current.find(t=>t.status===e)?.statusCategory;t&&t.status!==e&&await tF.current?.(t,e,r);return}let n=tO.current.find(e=>e.id===s),o=tO.current.find(e=>e.id===a);if(n&&o&&n.status!==o.status)return void await tF.current?.(n,o.status,o.statusCategory);let i=tv.find(e=>e.id===a);if(i)return void await tw(i.id,[s]);let l=!tq.has(a);if(!tq.has(s)&&l){tE([s,a]),tP(a),tR(!0);return}let d=tv.find(e=>e.task_ids.includes(s));d&&l&&await tN(d.id,s)},[tv,tq,tw,tN,t$,tT]),tW=(0,r.useCallback)(e=>{es(e),te.current&&clearTimeout(te.current),te.current=setTimeout(()=>en(e),300)},[]),tG=(0,r.useCallback)(t=>{e_(r=>{let s=new Set(r);s.has(t)?s.delete(t):s.add(t);if(J())try{window.localStorage.setItem(K(e,o),JSON.stringify([...s]))}catch{}return s})},[e,o]);(0,r.useEffect)(()=>()=>{te.current&&clearTimeout(te.current)},[]),(0,r.useEffect)(()=>{let t=function(e,t){if(!B())return{...F};let r=window.localStorage.getItem(q(e,t));if(!r)return{...F};try{let e=JSON.parse(r);return{search:"string"==typeof e.search?e.search:F.search,assigneeIds:_(e.assigneeIds),statusCategories:_(e.statusCategories),groupIds:_(e.groupIds),labelNames:_(e.labelNames),sortBy:["activity","identifier","status","created"].includes(e.sortBy)?e.sortBy:F.sortBy,sortDir:["asc","desc"].includes(e.sortDir)?e.sortDir:F.sortDir,hasActivity:"boolean"==typeof e.hasActivity?e.hasActivity:F.hasActivity}}catch{return{...F}}}(e,o);ts.current=!0,es(t.search),en(t.search),ef(t.assigneeIds),eh(t.statusCategories),eL(d??t.groupIds?.[0]??""),eA(d??t.groupIds?.[0]??""),eM(t.sortBy),eU(t.sortDir),eF(t.labelNames??[]),e_(W(e,o))},[e,o,d]),(0,r.useEffect)(()=>{if(ts.current){ts.current=!1;return}var t={search:er,assigneeIds:ex,statusCategories:eg,groupIds:eT?[eT]:[],labelNames:eO,sortBy:ez,sortDir:eD,hasActivity:!1};if(B())try{window.localStorage.setItem(q(e,o),JSON.stringify({search:t.search,assigneeIds:_(t.assigneeIds),statusCategories:_(t.statusCategories),groupIds:_(t.groupIds),labelNames:_(t.labelNames),sortBy:t.sortBy||"activity",sortDir:t.sortDir||"desc",hasActivity:!!t.hasActivity}))}catch{}},[e,o,er,ex,eg,eP,eT,eO,ez,eD]),(0,r.useEffect)(()=>{if(!y||!s)return;let t=!1;ei(!1);let r=new URLSearchParams;return r.set("projectId",s),o&&r.set("projectSlug",o),fetch(`/api/trackers/${e}/options?${r.toString()}`).then(e=>e.json()).then(e=>{t||(ed(Array.isArray(e.assignees)?e.assignees:[]),eu(Array.isArray(e.statuses)?e.statuses.map(e=>({value:e.name,label:e.name})):[]),em(Array.isArray(e.teams)?e.teams:[]),ev(Array.isArray(e.groups)?e.groups:[]),e.groupLabel&&eS(e.groupLabel),ei(!0))}).catch(()=>{t||(ed([]),eu([]),em([]),ev([]),ei(!0))}),()=>{t=!0}},[y,e,s,o]),(0,r.useEffect)(()=>{if(!eo)return;let e=ex.filter(e=>el.some(t=>t.id===e));e.length!==ex.length&&ef(e)},[el,eo,ex]),(0,r.useEffect)(()=>{if(!eo)return;let e=ec.map(e=>e.value),t=eg.filter(t=>e.includes(t));t.length!==eg.length&&eh(t)},[eo,eg,ec]),(0,r.useEffect)(()=>{if(eo){if(ep.length<=1&&eP)return void eL("");eP&&!ep.some(e=>e.id===eP)&&eL("")}},[eo,eP,ep]),(0,r.useEffect)(()=>{eo&&eT&&!eb.some(e=>e.id===eT)&&eA("")},[eb,eo,eT]);let{items:tH,loading:tX,hasMore:tV,loadMore:tY,refresh:tQ,updateItem:tZ}=function(e,t,s,a){let[n,o]=(0,r.useState)([]),[i,l]=(0,r.useState)(!0),[d,c]=(0,r.useState)(null),[u,p]=(0,r.useState)(!1),m=(0,r.useRef)(d),x=(0,r.useRef)(!1);m.current=d;let f=`/api/trackers/${encodeURIComponent(e)}/items`,g=a.projectId?function(e,t,r){let s={};for(let e of Object.keys(r).sort()){let t=r[e];if(null!=t&&""!==t&&!1!==t)if(Array.isArray(t)){if(!t.length)continue;s[e]=[...t].map(String).sort()}else s[e]=t}return`${e}:${t}:${JSON.stringify(s)}`}(e,a.projectId,{statuses:t.statuses,statusCategories:t.statusCategories,search:t.search,assigneeIds:t.assigneeIds,groupIds:t.groupIds,sortBy:t.sortBy,sortDir:t.sortDir,hasActivity:t.hasActivity,limit:a.limit}):null,h=(0,r.useRef)(g);h.current=g;let b=(0,r.useCallback)(async e=>{if(s&&a.projectId){l(!0);try{let r=new URLSearchParams;if(r.set("projectId",a.projectId),t.statuses?.length)for(let e of t.statuses)r.append("status",e);if(t.statusCategories?.length)for(let e of t.statusCategories)r.append("statusCategory",e);if(t.search&&r.set("search",t.search),t.assigneeIds?.length)for(let e of t.assigneeIds)r.append("assigneeId",e);if(t.groupIds?.length)for(let e of t.groupIds)r.append("groupId",e);t.sortBy&&r.set("sortBy",t.sortBy),t.sortDir&&r.set("sortDir",t.sortDir),t.hasActivity&&r.set("hasActivity","true"),e&&m.current&&r.set("cursor",m.current),a.limit&&r.set("limit",String(a.limit));let s=await fetch(`${f}?${r.toString()}`),n=await s.json(),i=n.items??[];o(t=>e?[...t,...i]:i);let l=n.pageInfo?.endCursor??null,d=n.pageInfo?.hasNextPage??!1;c(l),p(d),x.current=!0,!e&&h.current&&k(h.current,{items:i,endCursor:l,hasNextPage:d,savedAt:Date.now()})}catch{e||o([])}finally{l(!1)}}},[f,t.statuses,t.statusCategories,t.search,t.assigneeIds,t.groupIds,t.sortBy,t.sortDir,t.hasActivity,s,a.projectId,a.limit]);(0,r.useEffect)(()=>{let e=!1;return c(null),x.current=!1,s&&g&&j(g).then(t=>{e||!t||x.current||(o(t.items),c(t.endCursor),p(t.hasNextPage),l(!1))}),b(!1),()=>{e=!0}},[b,g,s]);let v=(0,r.useCallback)(()=>b(!0),[b]);return{items:n,loading:i,hasMore:u,loadMore:v,refresh:(0,r.useCallback)(()=>(c(null),b(!1)),[b]),updateItem:(0,r.useCallback)(e=>{o(t=>t.map(t=>t.id===e.id?e:t))},[])}}(e,(0,r.useMemo)(()=>({search:ea||void 0,statuses:eg.length>0&&eg.length<ec.length?eg:void 0,assigneeIds:ex.length>0?ex:void 0,groupIds:eT?[eT]:void 0,sortBy:ez,sortDir:eD}),[ea,ex,eT,eg,ec.length,ez,eD]),y&&eo&&!!s,{projectId:s??""}),{metadataMap:t0,refresh:t1}=function(e,t,s){let[a,n]=(0,r.useState)(new Map),[o,i]=(0,r.useState)(!1),l=(0,r.useRef)(""),d=(0,r.useCallback)(async()=>{if(!t||0===s.length)return void n(new Map);i(!0);try{let r=await fetch(`/api/trackers/${encodeURIComponent(e)}/metadata/bulk?projectId=${encodeURIComponent(t)}&issueIds=${s.map(encodeURIComponent).join(",")}`),a=await r.json(),o=new Map;for(let[e,t]of Object.entries(a))o.set(e,{labels:Array.isArray(t.labels)?t.labels:[],estimate:"number"==typeof t.estimate?t.estimate:null});n(o)}catch{}i(!1)},[e,t,s]);return(0,r.useEffect)(()=>{let e=s.join(",");e!==l.current&&(l.current=e,d())},[d,s]),{metadataMap:a,loading:o,refresh:d}}(e,s,(0,r.useMemo)(()=>tH.map(e=>e.id),[tH])),{labels:t2,definitions:t5,refresh:t4,createDefinition:t3}=ey(e,s),t6=(0,r.useMemo)(()=>tg?tH.find(e=>e.id===tg)??null:null,[tH,tg]),t8=t6??(eq?.id===tg?eq:null),t7=(0,r.useMemo)(()=>{if(0===eB.size)return tH;let e=[],t=[];for(let r of tH)eB.has(r.id)?e.push(r):t.push(r);return[...e,...t]},[tH,eB]);tO.current=t7;let t9=(0,r.useDeferredValue)(eO),re=(0,r.useMemo)(()=>{if(0===t9.length)return t7;let e=new Set(t9),t=[];for(let r of t7){let s=t0.get(r.id)?.labels;if(s){for(let a of s)if(e.has(a)){t.push(r);break}}}return t},[t7,t9,t0]),rt=(0,r.useMemo)(()=>{let e=new Map;for(let t of re){let r=e.get(t.status);r||(r={status:t.status,category:t.statusCategory,items:[]},e.set(t.status,r)),r.items.push(t)}let t={in_progress:0,todo:1,done:2,cancelled:3};return[...e.values()].sort((e,r)=>(t[e.category]??1)-(t[r.category]??1))},[!0,re]),{runs:rr,loading:rs,loadedForIssueId:ra,createRun:rn,updateRun:ro}=N(e,t8?.id??null,s??null),{scripts:ri,activeScriptId:rl,activeScript:rd,setActiveScriptId:rc,saveScript:ru,deleteScript:rp}=function(e,t){let[s,a]=(0,r.useState)([]),[n,o]=(0,r.useState)(null);(0,r.useEffect)(()=>{let r=function(e,t){if(!S())return{...C};let r=window.localStorage.getItem($(e,t));if(!r)return{...C};try{return I(JSON.parse(r))}catch{return{...C}}}(e,t);a(r.scripts),o(r.activeScriptId)},[e,t]);let i=(0,r.useCallback)((r,s)=>{a(r),o(s);if(S())try{let a=I({scripts:r,activeScriptId:s});window.localStorage.setItem($(e,t),JSON.stringify(a))}catch{}},[e,t]),l=(0,r.useCallback)(e=>{let t=e&&s.some(t=>t.id===e)?e:null;i(s,t)},[i,s]),d=(0,r.useCallback)(e=>{let t=new Date().toISOString(),r=e.name.trim(),a=e.prompt.trim();if(!r||!a)throw Error("Run script name and prompt are required.");let n=e.id?s.find(t=>t.id===e.id):null,o=n?{...n,name:r,prompt:a,updatedAt:t}:{id:crypto.randomUUID(),name:r,prompt:a,createdAt:t,updatedAt:t};return i([...n?s.map(e=>e.id===n.id?o:e):[o,...s]].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt)),o.id),o},[i,s]),c=(0,r.useCallback)(e=>{i(s.filter(t=>t.id!==e),n===e?null:n)},[n,i,s]),u=(0,r.useMemo)(()=>s.find(e=>e.id===n)??null,[n,s]);return{scripts:s,activeScriptId:n,activeScript:u,setActiveScriptId:l,saveScript:d,deleteScript:c}}(e,o),rm=th?rr.find(e=>e.id===th)??null:null,rx=tg&&!th?(0,H.loadLastRunForIssue)(tg):null,rf=!!rx&&U.current!==tg,rg=(0,r.useMemo)(()=>el.map(e=>({value:e.id,label:e.name})),[el]),rh=(0,r.useMemo)(()=>ec.map(e=>({value:e.value,label:e.label})),[ec]),rb=(0,r.useMemo)(()=>{let e=ec.map(e=>({value:e.label,label:e.label})),t=new Set(e.map(e=>e.value)),r=t8?.status?.trim();return r&&!t.has(r)&&e.unshift({value:r,label:r}),e},[t8?.status,ec]),rv=(0,r.useMemo)(()=>[{value:"",label:"Workspace"},...ep.map(e=>({value:e.id,label:e.name}))],[ep]),ry=(0,r.useMemo)(()=>[{value:"",label:eC},...eb.map(e=>({value:e.id,label:e.name}))],[eb,eC]),rj=rh.length>0,rk=ry.length>1,rw=rv.length>2,rN=rd?.name??"AGX default",rC=(0,r.useMemo)(()=>t2.map(e=>({value:e.name,label:e.name})),[t2]),rS=(0,r.useCallback)(async(t,r)=>{if(!s)return;let a=t0.get(t)?.labels??[],n=a.includes(r)?a.filter(e=>e!==r):[...a,r];try{await fetch(`/api/trackers/${e}/metadata?projectId=${encodeURIComponent(s)}&issueId=${encodeURIComponent(t)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({labels:n})}),t1(),t4()}catch{}},[s,e,t0,t1,t4]),rI=(0,r.useCallback)(async e=>{s&&await t3(e)},[s,t3]),r$=(0,r.useCallback)(async(t,r,a)=>{let n=r.trim();if(!n||n===t.status||!s)return;let o={...t,status:n,statusCategory:a??t.statusCategory};tZ(o),tg===t.id&&eJ(o),eW(t.id);try{let r=await fetch(`/api/trackers/${e}/items/${encodeURIComponent(t.id)}?projectId=${encodeURIComponent(s??"")}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:n})}),a=await r.json().catch(()=>({}));if(!r.ok||!a.item)throw Error(a.error||"Failed to update ticket status");let o=a.item;tZ(o),tg===o.id&&eJ(o),await tQ()}catch(e){tZ(t),tg===t.id&&eJ(t),e instanceof Error&&window.alert(e.message)}finally{eW(e=>e===t.id?null:e)}},[tQ,tg,tZ,e,s]);tF.current=r$;let rR=(0,r.useCallback)(async(t,r,a,n)=>{let i=n??eQ[0]?.id;if(i)try{await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:t.id,issueIdentifier:t.identifier,issueTitle:t.title,issueStatus:t.status,issueAssignee:t.assignee?.name??null,agentId:i,scriptName:r,scriptPrompt:a})})}catch(e){console.error(`Failed to start ${r} for ${t.identifier}:`,e)}},[eQ,e,s,o]),rT=(0,r.useCallback)(async()=>{let t=Array.from(tS).map(e=>tH.find(t=>t.id===e)).filter(Boolean);if(0===t.length||0===eQ.length)return;let r=eQ[0];for(let a of t)try{await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee?.name??null,agentId:r.id,scriptName:"Recap",scriptPrompt:"Summarize recent activity and current state of this ticket. Focus on: what was done, what's outstanding, and any blockers."})})}catch(e){console.error(`Failed to start recap for ${a.identifier}:`,e)}tI(new Set)},[tS,tH,eQ,e,s,o]),rE=(0,r.useCallback)(async(t,r)=>{for(let a of Array.from(tS).map(e=>tH.find(t=>t.id===e)).filter(Boolean))try{await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee?.name??null,agentId:r,scriptPrompt:t})})}catch(e){console.error(`Failed to send prompt for ${a.identifier}:`,e)}tI(new Set)},[tS,tH,e,s,o]),rA=(0,r.useCallback)(async()=>{let t=Array.from(tS).map(e=>tH.find(t=>t.id===e)).filter(Boolean);if(0===t.length||0===eQ.length)return;let r=eQ[0];for(let a of t)try{await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee?.name??null,agentId:r.id,scriptName:"Estimate",scriptPrompt:"Assess the complexity and scope of this ticket and assign a Fibonacci story-point estimate (1, 2, 3, 5, 8, 13, or 21). Consider: required investigation, files likely to change, unknowns, and testing effort. Briefly justify the number, then set the estimate using the available tooling."})})}catch(e){console.error(`Failed to start estimate for ${a.identifier}:`,e)}tI(new Set)},[tS,tH,eQ,e,s,o]),rP=(0,r.useCallback)(async t=>{let r=Array.from(tS);if(0!==r.length&&s)try{await fetch(`/api/trackers/${e}/metadata/bulk`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s,issueIds:r,action:"add_labels",payload:{labels:[t]}})}),t1(),t4()}catch{}},[tS,s,e,t1,t4]),rL=(0,r.useCallback)(async t=>{let r=Array.from(tS);if(0!==r.length&&s)try{await fetch(`/api/trackers/${e}/metadata/bulk`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s,issueIds:r,action:"remove_label",payload:{label:t}})}),t1(),t4()}catch{}},[tS,s,e,t1,t4]),[rz,rM]=(0,r.useState)(!1),rD=(0,r.useCallback)(async e=>{let t=Array.from(tS).map(e=>tH.find(t=>t.id===e)).filter(Boolean);if(0!==t.length){for(let r of(rM(!0),t))await r$(r,e);rM(!1),tI(new Set)}},[tS,tH,r$]),rU=(0,r.useCallback)(async e=>{s&&await t3(e)},[s,t3]),rO=(0,r.useCallback)(t=>({statusOptions:rb,onRecap:()=>{let r=s?`?projectId=${encodeURIComponent(s)}`:"";fetch(`/api/trackers/${encodeURIComponent(e)}/items/${encodeURIComponent(t.id)}/recap${r}`,{method:"POST"}).then(()=>{window.dispatchEvent(new CustomEvent("tracker:recap-triggered",{detail:{trackerType:e,issueId:t.id}}))})},onPrompt:(e,r)=>{rR(t,"Prompt",e,r)},onEstimate:()=>{rR(t,"Estimate","Assess the complexity and scope of this ticket and assign a Fibonacci story-point estimate (1, 2, 3, 5, 8, 13, or 21). Consider: required investigation, files likely to change, unknowns, and testing effort. Briefly justify the number, then set the estimate using the available tooling.")},onStatus:e=>{r$(t,e)}}),[rb,rR,r$,e,s]),rF=(0,r.useMemo)(()=>{let e=new Map;for(let t of tS){let r=t0.get(t);e.set(t,r??{labels:[],estimate:null})}return e},[tS,t0]);(0,r.useEffect)(()=>{if(!tg||!s)return void eJ(null);if(t6)return void eJ(e=>e?.id===tg?t6:null);let t=!1;return(async()=>{try{let r=await fetch(`/api/trackers/${e}/items/${encodeURIComponent(tg)}?projectId=${encodeURIComponent(s??"")}`);if(t)return;if(404===r.status)return void eJ(null);if(!r.ok)throw Error(`Failed to fetch selected tracker ticket: ${r.status}`);let a=await r.json().catch(()=>({}));if(!a.item?.id)return void eJ(null);eJ(a.item)}catch(e){t||console.error("Failed to hydrate selected tracker item",e)}})(),()=>{t=!0}},[tf,t6,tg,e,s]),(0,r.useEffect)(()=>{if(!tg){th&&tf({run:null});return}},[tf,tg,th]),(0,r.useEffect)(()=>{t8&&th&&!rs&&(rr.some(e=>e.id===th)||tf({run:null}))},[tf,rr,rs,t8,th]),(0,r.useEffect)(()=>{tg&&th&&(0,H.persistLastRunForIssue)(tg,th)},[tg,th]),(0,r.useEffect)(()=>{rf&&!rs&&ra===tg&&(U.current=tg,rx&&rr.some(e=>e.id===rx)&&tf({run:rx}))},[rf,rx,tg,rr,rs,ra,tf]),(0,r.useEffect)(()=>{if(v){if(!t8)return void e9("runs");if(rm||0===rr.length)return void e9("ticket");e9("runs")}},[v,rr.length,t8,rm]),(0,r.useEffect)(()=>{if(!Q)return;let e=e=>{let t=e.target;tl.current?.contains(t)||ti.current?.contains(t)||Z(!1)},t=e=>{"Escape"===e.key&&Z(!1)};return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)}},[Q]);let rB=(0,r.useCallback)(async(t,r)=>{e2(null),e6(null);try{let a=await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:t.id,issueIdentifier:t.identifier,issueTitle:t.title,issueStatus:t.status,issueAssignee:t.assignee?.name??null,agentId:r.id,scriptName:rd?.name,scriptPrompt:rd?.prompt})}),n=await a.json().catch(()=>({}));if(!a.ok||!n.run||!n.chatRunId||!n.userMessageId)throw Error(n.error||"Failed to start scripted session");tx({issue:t.id,run:n.run.id})}catch(e){console.error("Failed to start scripted tracker session:",e),e instanceof Error&&window.alert(e.message)}},[rd,s,o,tx,e]),r_=(0,r.useCallback)((e,t)=>{if(Z(!1),0===eQ.length)return void window.alert("Add at least one agent to this project before starting a scripted session.");if(1===eQ.length)return void rB(e,eQ[0]);let r=t?.currentTarget?.getBoundingClientRect();e2(e),e6(r?{top:r.bottom+4,left:r.left}:{top:200,left:200})},[rB,eQ]),rq=(0,r.useRef)(null),rJ=(0,r.useRef)(null),rK=(0,r.useRef)(null),[rW,rG]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=[rJ.current,rK.current].filter(Boolean);if(0===e.length)return;let t=e=>{rG(e.currentTarget.scrollTop>400)};return e.forEach(e=>e.addEventListener("scroll",t,{passive:!0})),()=>e.forEach(e=>e.removeEventListener("scroll",t))},[v]);let rH=(0,r.useCallback)(()=>{let e=rJ.current??rK.current;e?.scrollTo({top:0,behavior:"smooth"})},[]);return((0,r.useEffect)(()=>{let e=rq.current;if(!e||!tV)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&tY()},{threshold:.1});return t.observe(e),()=>t.disconnect()},[tV,tY]),y)?(0,t.jsxs)("div",{className:"relative flex h-full overflow-hidden",children:[v?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,t.jsxs)("div",{className:"shrink-0 border-b border-[var(--card-border)]",children:[(0,t.jsxs)("div",{className:"flex h-12 items-center gap-2 px-3",children:[(0,t.jsxs)("div",{className:"flex flex-1 items-center gap-2 rounded-md border border-[var(--card-border)] bg-[var(--background)] px-2.5 py-1.5 transition-all focus-within:border-[var(--muted-foreground)] focus-within:ring-1 focus-within:ring-[var(--muted-foreground)]",children:[(0,t.jsx)(p.Search,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("input",{type:"text",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]",placeholder:"Search tickets...",value:er,onChange:e=>tW(e.target.value)})]}),(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-50",onClick:()=>void tQ(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:tX,children:(0,t.jsx)(u.RefreshCw,{size:16,className:tX?"animate-spin":void 0})}),(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>{Z(!1),Y(!0)},title:"Tracker settings",children:(0,t.jsx)(m.Settings,{size:16})})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 pb-2",children:[rk?(0,t.jsx)(eR,{label:eC,value:eT,options:ry,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:eA}):null,rj?(0,t.jsx)(eE,{label:"Status",values:eg,options:rh,activeClasses:"border-amber-500/30 bg-amber-500/10 text-amber-300",onChange:eh,emptyLabel:"All statuses"}):null,(0,t.jsx)(eE,{label:"Assignee",values:ex,options:rg,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:ef,emptyLabel:"All assignees"}),rC.length>0&&(0,t.jsx)(eE,{label:"Label",values:eO,options:rC,activeClasses:"border-pink-500/30 bg-pink-500/10 text-pink-400",onChange:eF,emptyLabel:"All labels"}),rw?(0,t.jsx)(eR,{label:"Workspace",value:eP,options:rv,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:eL}):null,(0,t.jsx)(eR,{label:"Sort",value:ez,options:[{value:"activity",label:"Updated At"},{value:"identifier",label:"Ticket ID"},{value:"status",label:"Status"},{value:"created",label:"Created At"}],activeClasses:"border-sky-500/30 bg-sky-500/10 text-sky-400",onChange:e=>eM(e)}),(0,t.jsx)("button",{type:"button",className:"rounded-full border border-[var(--card-border)] p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",title:"desc"===eD?"Descending":"Ascending",onClick:()=>eU(e=>"desc"===e?"asc":"desc"),children:"desc"===eD?(0,t.jsx)(a.ArrowDown,{size:12}):(0,t.jsx)(n.ArrowUp,{size:12})})]})]}),(0,t.jsxs)("div",{className:"relative flex-1 min-h-0 flex flex-col",children:[(0,t.jsx)("div",{ref:rK,className:"flex-1 overflow-y-auto",children:tX&&0===tH.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===tH.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No tickets found."}):(0,t.jsxs)(t.Fragment,{children:[rt.map(e=>{let s=eG.has(e.status);return(0,t.jsxs)(r.default.Fragment,{children:[(0,t.jsx)(to,{status:e.status,categoryColor:tp[e.category]??"bg-zinc-400",count:e.items.length,collapsed:s,onToggle:()=>eH(t=>{let r=new Set(t);return r.has(e.status)?r.delete(e.status):r.add(e.status),r})}),!s&&e.items.map(e=>(0,t.jsx)(eY,{item:e,selected:t8?.id===e.id,pinned:eB.has(e.id),activeAgents:eZ.get(e.id),participants:eQ,projectSlug:o,stats:e0.get(e.id),hideStatus:!0,estimate:t0.get(e.id)?.estimate,localLabels:t0.get(e.id)?.labels,labelDefinitions:t5,allLabels:t2,onToggleLabel:t=>rS(e.id,t),onAddLabel:rI,onSelect:()=>{e9("runs"),tx({issue:e.id,run:null})},onTogglePin:()=>tG(e.id),rowActions:rO(e),showGroup:!eT},e.id))]},`sg-${e.status}`)}),tV?(0,t.jsx)("div",{ref:rq,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:tX?"Loading...":"Load more"}):null]})}),(0,t.jsx)(tc.JumpToLatestButton,{visible:rW&&tH.length>20,direction:"top",onClick:rH})]})]}),t8?(0,t.jsxs)("div",{className:"absolute inset-0 z-20 flex flex-col bg-[var(--background)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--card-border)] px-4 py-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:t8.identifier}),(0,t.jsx)("div",{className:"truncate text-sm font-semibold text-[var(--foreground)]",children:t8.title})]}),(0,t.jsx)("button",{type:"button",className:"rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>tf({issue:null,run:null}),"aria-label":"Close ticket panel",children:(0,t.jsx)(g.X,{size:16})})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--card-border)] px-3 py-2",children:[(0,t.jsx)("button",{type:"button",className:`rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${"runs"===e8?"bg-[var(--card-bg)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"}`,onClick:()=>e9("runs"),children:"Runs"}),(0,t.jsx)("button",{type:"button",className:`rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${"ticket"===e8?"bg-[var(--card-bg)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"}`,onClick:()=>e9("ticket"),children:"Ticket"})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden",children:"runs"===e8?(0,t.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,t.jsxs)("div",{className:"relative flex items-center justify-between border-b border-[var(--card-border)] px-3 py-2",children:[(0,t.jsx)("h3",{className:"text-xs font-semibold text-[var(--foreground)]",children:"Sessions"}),(0,t.jsxs)("button",{ref:ti,type:"button",className:"inline-flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-40",onClick:()=>{Z(!1),e9("ticket"),tx({run:null})},title:"Open a fresh chat for this ticket. You can choose or edit the session script in the ticket tab.","aria-label":"New session",disabled:!t8,children:[(0,t.jsx)(c.Plus,{size:12}),"New session"]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto",children:rs&&0===rr.length||rf?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading sessions..."}):0===rr.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No previous sessions yet."}):rr.map(e=>{let r=ek(e);return(0,t.jsxs)("button",{type:"button",className:`w-full px-3 py-2 text-left text-xs transition-colors ${rm?.id===e.id?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]"}`,onClick:()=>{e9("ticket"),tx({run:e.id})},children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-[11px] font-medium text-[var(--foreground)]",children:ew(e)}),(0,t.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:new Date(e.startedAt).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),(0,t.jsxs)("div",{className:"mt-0.5 flex items-center gap-1.5 text-[10px]",children:[(0,t.jsx)("span",{className:`font-medium ${eI[r.tone]}`,children:r.label}),(0,t.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:e.agentName})]}),null!=e.durationMs?(0,t.jsxs)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:[(e.durationMs/1e3).toFixed(1),"s"]}):null]},e.id)})})]}):rm?(0,t.jsx)(tm,{item:t8??{id:rm.issueId,identifier:rm.issueIdentifier,title:rm.issueTitle,status:rm.issueStatus,statusCategory:"todo",labels:[],trackerId:"",trackerType:e,assignee:rm.issueAssignee?{id:"",name:rm.issueAssignee}:void 0,updatedAt:rm.updatedAt,createdAt:rm.updatedAt,url:""},run:rm,participants:eQ,itemStatusOptions:rb,itemStatusUpdating:eK===rm.issueId,onItemStatusChange:r$,onBack:()=>tf({run:null})}):rf?null:0===eQ.length?(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Add at least one agent to this project to start a session."}):(0,t.jsx)(e4,{item:t8,trackerType:e,runs:rr,participants:eQ,projectId:s,projectSlug:o,itemStatusOptions:rb,itemStatusUpdating:eK===t8.id,onItemStatusChange:r$,activeSessionScriptLabel:rN,onOpenSessionScripts:()=>Z(!0),onStartScriptedSession:e=>r_(t8,e),createRun:rn,updateRun:ro,onRunCreated:e=>tx({run:e}),onSelectRun:e=>tx({run:e})},t8.id)})]}):null]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex shrink-0 flex-col border-r border-[var(--card-border)]",style:{width:ee},children:[(0,t.jsxs)("div",{className:"shrink-0 border-b border-[var(--card-border)]",children:[(0,t.jsxs)("div",{className:"flex h-12 items-center gap-2 px-3",children:[(0,t.jsxs)("div",{className:"flex flex-1 items-center gap-2 rounded-md border border-[var(--card-border)] bg-[var(--background)] px-2.5 py-1.5 transition-all focus-within:border-[var(--muted-foreground)] focus-within:ring-1 focus-within:ring-[var(--muted-foreground)]",children:[(0,t.jsx)(p.Search,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("input",{type:"text",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]",placeholder:"Search tickets...",value:er,onChange:e=>tW(e.target.value)})]}),(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-50",onClick:()=>void tQ(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:tX,children:(0,t.jsx)(u.RefreshCw,{size:16,className:tX?"animate-spin":void 0})}),(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>{Z(!1),Y(!0)},title:"Tracker settings",children:(0,t.jsx)(m.Settings,{size:16})})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pb-2",children:[rk?(0,t.jsx)(eR,{label:eC,value:eT,options:ry,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:eA}):null,rj?(0,t.jsx)(eE,{label:"Status",values:eg,options:rh,activeClasses:"border-amber-500/30 bg-amber-500/10 text-amber-300",onChange:eh,emptyLabel:"All statuses"}):null,(0,t.jsx)(eE,{label:"Assignee",values:ex,options:rg,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:ef,emptyLabel:"All assignees"}),rC.length>0&&(0,t.jsx)(eE,{label:"Label",values:eO,options:rC,activeClasses:"border-pink-500/30 bg-pink-500/10 text-pink-400",onChange:eF,emptyLabel:"All labels"}),rw?(0,t.jsx)(eR,{label:"Workspace",value:eP,options:rv,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:eL}):null,(0,t.jsx)(eR,{label:"Sort",value:ez,options:[{value:"activity",label:"Updated At"},{value:"identifier",label:"Ticket ID"},{value:"status",label:"Status"},{value:"created",label:"Created At"}],activeClasses:"border-sky-500/30 bg-sky-500/10 text-sky-400",onChange:e=>eM(e)}),(0,t.jsx)("button",{type:"button",className:"rounded-full border border-[var(--card-border)] p-0.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",title:"desc"===eD?"Descending":"Ascending",onClick:()=>eU(e=>"desc"===e?"asc":"desc"),children:"desc"===eD?(0,t.jsx)(a.ArrowDown,{size:12}):(0,t.jsx)(n.ArrowUp,{size:12})}),re.length>0&&(f=re.length>0&&re.every(e=>tS.has(e.id)),(0,t.jsxs)("button",{type:"button",className:`flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px] transition-colors ${f?"border-[var(--primary)]/40 bg-[var(--primary)]/10 text-[var(--primary)]":"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"}`,title:f?"Clear selection":"Select all filtered tickets",onClick:()=>{f?tI(new Set):tI(new Set(re.map(e=>e.id)))},children:[f?(0,t.jsx)(i,{size:12}):(0,t.jsx)(x,{size:12}),f?"Clear":`Select all (${re.length})`]}))]})]}),(0,t.jsxs)(eX.DndContext,{sensors:tL,collisionDetection:eX.closestCenter,onDragStart:tJ,onDragEnd:tK,children:[(0,t.jsxs)("div",{className:"relative flex-1 min-h-0 flex flex-col",children:[(0,t.jsxs)("div",{ref:rJ,className:"flex-1 overflow-y-auto",children:[tX&&0===tH.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===tH.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No tickets found."}):(0,t.jsxs)(t.Fragment,{children:[rt.map(e=>{let s=eG.has(e.status);return(0,t.jsxs)(r.default.Fragment,{children:[(0,t.jsx)(to,{status:e.status,categoryColor:tp[e.category]??"bg-zinc-400",count:e.items.length,collapsed:s,onToggle:()=>eH(t=>{let r=new Set(t);return r.has(e.status)?r.delete(e.status):r.add(e.status),r})}),!s&&(()=>{let s=t$?new Set(tT):null,a=new Map;for(let t of tv){let r=e.items.find(e=>t.task_ids.includes(e.id));r&&a.set(r.id,t)}let n=t$?tT.map(t=>e.items.find(e=>e.id===t)).filter(Boolean).map(e=>({id:e.id,identifier:e.identifier,title:e.title,status:eN[e.status]??e.status})):[],i=new Set;return e.items.map(l=>{if(s?.has(l.id))return l.id===tA&&t$?(0,t.jsx)(ta,{tickets:n,onConfirm:tU,onCancel:()=>{tR(!1),tE([]),tP(null)}},"__pending-group__"):null;let d=a.get(l.id);if(d&&!i.has(d.id)){i.add(d.id);let s=d.task_ids.map(t=>e.items.find(e=>e.id===t)).filter(Boolean);return(0,t.jsxs)(r.default.Fragment,{children:[(0,t.jsx)(e7,{groupId:d.id,name:d.name,count:s.length,collapsed:!!d.collapsed,selected:tb===d.id,projectSlug:o,onToggleCollapse:()=>tj(d.id,{collapsed:!d.collapsed}),onSelect:()=>tx({group:d.id,issue:null,run:null}),onUngroup:()=>{tk(d.id),tb===d.id&&tf({group:null})}}),!d.collapsed&&s.map((e,r)=>(0,t.jsx)(eY,{item:e,selected:t8?.id===e.id,pinned:eB.has(e.id),activeAgents:eZ.get(e.id),participants:eQ,draggable:!0,multiSelected:tS.has(e.id),treeConnector:r===s.length-1?"last":"mid",projectSlug:o,stats:e0.get(e.id),hideStatus:!0,estimate:t0.get(e.id)?.estimate,localLabels:t0.get(e.id)?.labels,labelDefinitions:t5,allLabels:t2,onToggleLabel:t=>rS(e.id,t),onAddLabel:rI,onSelect:t=>{t&&(t.metaKey||t.ctrlKey)?tD(e.id):tx({issue:e.id,run:null,group:null})},onTogglePin:()=>tG(e.id),rowActions:rO(e),showGroup:!eT},e.id))]},`group-${d.id}`)}return tq.has(l.id)?null:(0,t.jsx)(eY,{item:l,selected:t8?.id===l.id,pinned:eB.has(l.id),activeAgents:eZ.get(l.id),participants:eQ,draggable:!0,multiSelected:tS.has(l.id),projectSlug:o,stats:e0.get(l.id),hideStatus:!0,estimate:t0.get(l.id)?.estimate,localLabels:t0.get(l.id)?.labels,labelDefinitions:t5,allLabels:t2,onToggleLabel:e=>rS(l.id,e),onAddLabel:rI,onSelect:e=>{e&&(e.metaKey||e.ctrlKey)?tD(l.id):tx({issue:l.id,run:null,group:null})},onTogglePin:()=>tG(l.id),rowActions:rO(l),showGroup:!eT},l.id)})})()]},`sg-${e.status}`)}),tV?(0,t.jsx)("div",{ref:rq,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:tX?"Loading...":"Load more"}):null]}),(0,t.jsx)(td,{count:tS.size,onGroup:tB,onClear:()=>tI(new Set),onBulkRecap:rT,onBulkPrompt:rE,onBulkEstimate:rA,onBulkAddLabel:rP,onBulkRemoveLabel:rL,onBulkStatus:rD,statusOptions:rb,participants:eQ,labels:t2,onCreateLabel:rU,selectedMetadata:rF,statusUpdating:rz})]}),(0,t.jsx)(tc.JumpToLatestButton,{visible:rW&&tH.length>20,direction:"top",onClick:rH})]}),(0,t.jsx)(eX.DragOverlay,{dropAnimation:null,children:tz&&((b=tO.current.find(e=>e.id===tz))?(0,t.jsxs)("div",{className:"flex items-center gap-3 rounded-lg border border-[var(--primary)]/30 bg-[var(--card-bg)] px-4 py-2.5 text-sm shadow-xl backdrop-blur-sm",children:[(0,t.jsx)("span",{className:"w-24 shrink-0 whitespace-nowrap font-mono text-xs text-[var(--muted-foreground)]",children:b.identifier}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs font-medium text-[var(--foreground)]",children:b.title})]}):null)})]})]}),(0,t.jsx)(e$.ResizeHandle,{onResize:e=>et(t=>{let r=Math.max(280,Math.min(960,t+e));return(0,G.persistLinearTicketPanelWidth)(r),r})}),Q?(0,t.jsx)("div",{ref:tl,className:"absolute right-6 top-16 z-20 max-h-[80vh] overflow-y-auto rounded-2xl border border-[var(--card-border)] bg-[var(--background)] p-4 shadow-2xl",style:{width:"min(760px, calc(100vw - 32px))"},children:(0,t.jsx)(D,{projectSlug:o,scripts:ri,activeScriptId:rl,onSetActiveScriptId:rc,onSaveScript:ru,onDeleteScript:rp})}):null,(0,t.jsx)("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:rm?(0,t.jsx)(tm,{item:t8??{id:rm.issueId,identifier:rm.issueIdentifier,title:rm.issueTitle,status:rm.issueStatus,statusCategory:"todo",labels:[],trackerId:"",trackerType:e,assignee:rm.issueAssignee?{id:"",name:rm.issueAssignee}:void 0,updatedAt:rm.updatedAt,createdAt:rm.updatedAt,url:""},run:rm,participants:eQ,itemStatusOptions:rb,itemStatusUpdating:eK===rm.issueId,onItemStatusChange:r$,onBack:()=>tf({run:null})}):t_&&!t8?(0,t.jsx)(tt,{group:t_,items:tH,trackerType:e,participants:eQ,projectId:s,projectSlug:o,onUpdateName:e=>tj(t_.id,{name:e}),onDelete:async()=>{await tk(t_.id),tf({group:null})},onSelectItem:e=>tx({issue:e,group:null,run:null}),onRunCreated:e=>tx({run:e}),onSelectRun:e=>tx({run:e})}):t8?rf?null:0===eQ.length?(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Add at least one agent to this project to start a session."}):(0,t.jsx)(e4,{item:t8,trackerType:e,runs:rr,participants:eQ,projectId:s,projectSlug:o,itemStatusOptions:rb,itemStatusUpdating:eK===t8.id,onItemStatusChange:r$,activeSessionScriptLabel:rN,onOpenSessionScripts:()=>Z(!0),onStartScriptedSession:e=>r_(t8,e),createRun:rn,updateRun:ro,onRunCreated:e=>tx({run:e}),onSelectRun:e=>tx({run:e})},t8.id):(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Select a ticket from the list."})})]}),X&&(0,t.jsx)(ej,{trackerType:e,connected:y,user:T,clis:E,mcpConfigured:A,onConnect:P,onConnectWithKey:L,onDisconnect:z,onConfigureMcp:M,onClose:()=>Y(!1),projectId:s}),Q&&v?(0,t.jsx)("div",{className:"absolute inset-0 z-30 flex items-center justify-center bg-black/50 p-4",children:(0,t.jsx)("div",{ref:tl,className:"max-h-[85vh] w-full max-w-3xl overflow-y-auto rounded-2xl border border-[var(--card-border)] bg-[var(--background)] p-4 shadow-2xl",children:(0,t.jsx)(D,{projectSlug:o,scripts:ri,activeScriptId:rl,onSetActiveScriptId:rc,onSaveScript:ru,onDeleteScript:rp})})}):null,e1&&e5&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-40",onClick:()=>{e2(null),e6(null)}}),(0,t.jsxs)("div",{className:"fixed z-50 min-w-[180px] rounded border border-[var(--card-border)] bg-[var(--card-bg)] py-1 shadow-lg",style:{top:e5.top,left:e5.left},children:[(0,t.jsx)("div",{className:"px-3 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Pick an agent"}),eQ.map(e=>(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--card-bg)]",onClick:()=>void rB(e1,e),children:[(0,t.jsx)("img",{src:eV(e.id,e.color,20),alt:"",className:"h-5 w-5 shrink-0 rounded-full"}),(0,t.jsxs)("span",{className:"flex flex-col",children:[(0,t.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:e.name}),e.role?(0,t.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:e.role}):null]})]},e.id))]})]})]}):(0,t.jsx)(V.default,{trackerType:e,projectId:s??"",connected:y,onConnect:P,onConnectWithKey:L})}e.s(["default",()=>tx],471387)}]);
48
+ `+(d??""),n=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:t,promptPrefix:a,threadId:r.threadId,activeParticipantIds:[p.id],projectSlug:i??void 0,routing:c})}),l=await n.json().catch(()=>({}));if(!n.ok||!l.chatRunId||!l.userMessageId)throw Error(l.error||"Failed to start chat session");await j(r.id,{chatRunId:l.chatRunId,rootMessageId:l.userMessageId}),u(r.id)}catch(e){console.error("Failed to create group chat session:",e),P.current=!1,e instanceof Error&&window.alert(e.message)}},[e,b,n,k,o,i,y,j,u]);return(0,t.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,t.jsxs)("div",{className:"flex h-12 shrink-0 items-center gap-2 border-b border-[var(--card-border)] px-4",children:[(0,t.jsx)(e6.FolderOpen,{size:16,className:"shrink-0 text-[var(--muted-foreground)]"}),m?(0,t.jsx)("input",{type:"text",value:f,onChange:e=>g(e.target.value),onBlur:h,onKeyDown:t=>{"Enter"===t.key&&h(),"Escape"===t.key&&(g(e.name),x(!1))},autoFocus:!0,className:"min-w-0 flex-1 bg-transparent text-sm font-medium text-[var(--foreground)] outline-none border-b border-[var(--primary)]"}):(0,t.jsx)("h3",{className:"min-w-0 flex-1 truncate text-sm font-medium text-[var(--foreground)]",children:e.name}),(0,t.jsx)("button",{type:"button",className:"flex h-6 w-6 items-center justify-center rounded text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>{g(e.name),x(!0)},title:"Rename group",children:(0,t.jsx)(e9.Pencil,{size:12})}),(0,t.jsx)("button",{type:"button",className:"flex h-6 w-6 items-center justify-center rounded text-[var(--muted-foreground)] hover:text-red-400 transition-colors",onClick:d,title:"Delete group (ungroups tickets)",children:(0,t.jsx)(L.Trash2,{size:12})})]}),(0,t.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto pb-64",children:[(0,t.jsxs)("section",{className:"border-b border-[var(--card-border)]",children:[(0,t.jsxs)("div",{className:"px-4 py-2 text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:["Tickets (",b.length,")"]}),0===b.length?(0,t.jsx)("div",{className:"px-4 pb-4 text-center text-xs text-[var(--muted-foreground)]",children:"No tickets in this group."}):b.map(e=>(0,t.jsx)(eY,{item:e,selected:!1,onSelect:()=>c(e.id)},e.id))]}),(0,t.jsx)(eQ,{issueId:e.id,trackerType:a,projectId:o}),(0,t.jsx)(e0,{runs:v,onSelect:p})]}),n.length>0&&(0,t.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:(0,t.jsx)(te,{onSend:z,onStop:()=>{},participants:n,projectId:o??void 0,projectSlug:i??void 0,loading:"ready"!==A,commands:[],activityStatus:A,placeholder:`Work on tickets in "${e.name}"...`,initialPinnedParticipantId:k?.id})})]})}let tr="__pending-group__";function ts({ticket:e,isLast:r}){let{attributes:s,listeners:a,setNodeRef:n,transform:o,isDragging:i}=(0,eX.useDraggable)({id:e.id}),l=o?{transform:`translate3d(${o.x}px, ${o.y}px, 0)`,opacity:i?.3:1,position:"relative",zIndex:i?50:void 0}:void 0;return(0,t.jsxs)("div",{ref:n,style:l,...s,...a,className:"flex items-center gap-3 pl-[48px] pr-4 py-2 text-sm cursor-grab active:cursor-grabbing",children:[(0,t.jsx)("span",{className:"shrink-0 font-mono text-[11px] leading-none text-[var(--muted-foreground)]/40 select-none",children:r?"└──":"├──"}),(0,t.jsx)("span",{className:"shrink-0 whitespace-nowrap font-mono text-xs text-[var(--muted-foreground)]",children:e.identifier}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs text-[var(--muted-foreground)]",children:e.title}),e.status&&(0,t.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:e.status})]})}function ta({tickets:e,onConfirm:s,onCancel:a}){let[n,o]=(0,r.useState)(""),i=(0,r.useRef)(null),{setNodeRef:l,isOver:d}=(0,eX.useDroppable)({id:tr});(0,r.useEffect)(()=>{i.current?.focus()},[]);let c=(0,r.useCallback)(()=>{let t=n.trim(),r=e.map(e=>e.identifier).join(", ");s(t||r||"Untitled")},[n,s,e]);return(0,t.jsxs)("div",{ref:l,className:`mx-0 my-0 transition-colors ${d?"bg-[var(--primary)]/5":""}`,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 pl-[24px] pr-4 py-2 bg-[var(--card-bg)]/50",children:[(0,t.jsx)(et.ChevronDown,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)(e6.FolderOpen,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("input",{ref:i,type:"text",value:n,onChange:e=>o(e.target.value),onKeyDown:e=>{"Enter"===e.key&&c(),"Escape"===e.key&&a()},placeholder:e.map(e=>e.identifier).join(", ")||"Name this group...",className:"min-w-0 flex-1 bg-transparent text-xs font-medium text-[var(--foreground)] placeholder:text-[var(--muted-foreground)]/60 outline-none border-b border-[var(--primary)]/40 pb-0.5 focus:border-[var(--primary)]"}),(0,t.jsx)("button",{type:"button",className:"rounded px-2 py-0.5 text-[10px] font-medium bg-[var(--primary)] text-[var(--primary-foreground)] hover:opacity-90 transition-opacity",onClick:c,children:"Create"}),(0,t.jsx)("button",{type:"button",className:"rounded px-2 py-0.5 text-[10px] font-medium text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:a,children:"Cancel"})]}),e.map((r,s)=>(0,t.jsx)(ts,{ticket:r,isLast:s===e.length-1},r.id))]})}let tn="sg::";function to({status:e,categoryColor:r,count:s,collapsed:a,onToggle:n}){let{setNodeRef:o,isOver:i}=(0,eX.useDroppable)({id:`${tn}${e}`});return(0,t.jsxs)("div",{ref:o,className:`sticky top-0 z-[5] flex cursor-pointer items-center gap-2 border-b border-[var(--card-border)] bg-[var(--app-shell-pane)] px-4 py-2 transition-colors ${i?"bg-[var(--primary)]/10 ring-1 ring-inset ring-[var(--primary)]/30":""}`,onClick:n,role:"button",tabIndex:0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),n())},children:[a?(0,t.jsx)(er.ChevronRight,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}):(0,t.jsx)(et.ChevronDown,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${r}`}),(0,t.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)]",children:e}),(0,t.jsx)("span",{className:"text-[10px] tabular-nums text-[var(--muted-foreground)]",children:s})]})}var ti=e.i(459073);function tl({open:e,onClose:s,anchorRef:a,children:n}){let o=(0,r.useRef)(null);return((0,r.useEffect)(()=>{if(!e)return;let t=e=>{o.current?.contains(e.target)||a.current?.contains(e.target)||s()},r=e=>{"Escape"===e.key&&s()};return document.addEventListener("pointerdown",t),document.addEventListener("keydown",r),()=>{document.removeEventListener("pointerdown",t),document.removeEventListener("keydown",r)}},[e,s,a]),e)?(0,t.jsx)("div",{ref:o,className:"absolute bottom-full left-1/2 z-50 mb-2 -translate-x-1/2 rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-2 shadow-lg backdrop-blur-sm",children:n}):null}function td({count:e,onGroup:s,onClear:a,onBulkRecap:n,onBulkPrompt:o,onBulkEstimate:i,onBulkAddLabel:l,onBulkRemoveLabel:d,onBulkStatus:c,statusOptions:p,participants:m,labels:x,onCreateLabel:f,selectedMetadata:h,statusUpdating:b}){let[v,y]=(0,r.useState)(null),j=(0,r.useRef)(null),k=(0,r.useRef)(null),w=(0,r.useRef)(null),N=(0,r.useCallback)(e=>{y(t=>t===e?null:e)},[]),C=r.default.useMemo(()=>{let e=new Map;for(let t of h.values())for(let r of t.labels)e.set(r,(e.get(r)??0)+1);return e},[h]),S=r.default.useMemo(()=>{let e=new Set;for(let t of h.values())for(let r of t.labels)e.add(r);return Array.from(e)},[h]);if(e<2)return null;let I="flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-[11px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--background)] hover:text-[var(--foreground)]";return(0,t.jsx)("div",{className:"absolute bottom-4 left-1/2 z-30 -translate-x-1/2",children:(0,t.jsxs)("div",{className:"flex items-center gap-1 rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] px-3 py-1.5 shadow-2xl",children:[(0,t.jsxs)("span",{className:"mr-1 text-xs font-medium text-[var(--foreground)]",children:[e," selected"]}),(0,t.jsx)("div",{className:"mx-1 h-4 w-px bg-[var(--card-border)]"}),(0,t.jsxs)("button",{type:"button",className:I,onClick:n,title:"Recap all selected",children:[(0,t.jsx)(eK.FileText,{size:12}),"Recap"]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("button",{ref:w,type:"button",className:`${I} ${"prompt"===v?"bg-[var(--background)] text-[var(--foreground)]":""}`,onClick:()=>N("prompt"),title:"Send prompt to all selected",children:[(0,t.jsx)(eP.MessageSquare,{size:12}),"Prompt"]}),(0,t.jsx)(tl,{open:"prompt"===v,onClose:()=>y(null),anchorRef:w,children:(0,t.jsx)(eG,{count:e,participants:m,onSend:(e,t)=>{o(e,t),y(null)}})})]}),(0,t.jsxs)("button",{type:"button",className:I,onClick:i,title:"Ask the LLM to size all selected",children:[(0,t.jsx)(eW.Hash,{size:12}),"Estimate"]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("button",{ref:j,type:"button",className:`${I} ${"label"===v?"bg-[var(--background)] text-[var(--foreground)]":""}`,onClick:()=>N("label"),title:"Label all selected",children:[(0,t.jsx)(ee.Tag,{size:12}),"Label"]}),(0,t.jsx)(tl,{open:"label"===v,onClose:()=>y(null),anchorRef:j,children:(0,t.jsx)(eJ,{labels:x,selectedLabels:S,labelCounts:C,totalSelected:e,onToggle:t=>{(C.get(t)??0)===e?d(t):l(t)},onAdd:f})})]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("button",{ref:k,type:"button",className:`${I} ${"status"===v?"bg-[var(--background)] text-[var(--foreground)]":""}`,onClick:()=>N("status"),title:"Update status for all selected",disabled:b,children:[b?(0,t.jsx)(u.RefreshCw,{size:12,className:"animate-spin"}):(0,t.jsx)(u.RefreshCw,{size:12}),"Status"]}),(0,t.jsx)(tl,{open:"status"===v,onClose:()=>y(null),anchorRef:k,children:(0,t.jsx)("div",{className:"flex max-h-48 w-44 flex-col overflow-y-auto",children:p.map(e=>(0,t.jsx)("button",{type:"button",className:"w-full rounded-lg px-3 py-1.5 text-left text-xs text-[var(--muted-foreground)] transition-colors hover:bg-[var(--background)] hover:text-[var(--foreground)]",onClick:()=>{c(e.value),y(null)},children:e.label},e.value))})})]}),(0,t.jsxs)("button",{type:"button",className:I,onClick:s,title:"Group selected",children:[(0,t.jsx)(ti.FolderPlus,{size:12}),"Group"]}),(0,t.jsx)("div",{className:"mx-1 h-4 w-px bg-[var(--card-border)]"}),(0,t.jsx)("button",{type:"button",className:"flex h-6 w-6 items-center justify-center rounded text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",onClick:a,"aria-label":"Clear selection",children:(0,t.jsx)(g.X,{size:14})})]})})}var tc=e.i(638703);let tu=(0,s.default)(()=>e.A(501223).then(e=>e.Composer),{loadableGenerated:{modules:[844118]},ssr:!1}),tp={todo:"bg-zinc-400",in_progress:"bg-amber-400",done:"bg-emerald-400",cancelled:"bg-red-400"};function tm({item:e,run:s,participants:a,itemStatusOptions:n,itemStatusUpdating:o,onItemStatusChange:i,onBack:c}){let{messages:u,setMessages:p,sendMessage:m,loadHistory:x,stop:g}=(0,R.useGroupChat)(s.threadId),{processes:h,streaming:b,chatRuns:v}=(0,T.useProcessPolling)(s.rootMessageId?{workspaceId:s.threadId,threadId:s.rootMessageId}:{workspaceId:s.threadId},{messages:u,setMessages:p}),y=(0,r.useMemo)(()=>{let e=v[0];if(!e)return ek(s);let t={queued:"queued",running:"running",awaiting_user:"running",blocked:"running",completed:"success",failed:"failed",cancelled:"cancelled"}[e.status]??s.status;return ek({...s,status:t})},[v,s]);(0,r.useEffect)(()=>{x()},[x,s.threadId]);let j=(0,r.useMemo)(()=>new Map(a.map(e=>[e.id,e])),[a]),k=(0,r.useRef)(null),[w,N]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=k.current;if(!e)return;let t=()=>{let{scrollTop:t,scrollHeight:r,clientHeight:s}=e;N(r-t-s>200)};return e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[]);let C=(0,r.useCallback)(()=>{let e=k.current;e&&e.scrollTo({top:e.scrollHeight,behavior:"smooth"})},[]),S=(0,r.useRef)(0);(0,r.useEffect)(()=>{u.length>S.current&&k.current?.scrollTo({top:k.current.scrollHeight,behavior:"smooth"}),S.current=u.length},[u.length]);let I=new Set(["queued","running","awaiting_user","blocked"]),$=v.some(e=>I.has(e.status))||h.some(e=>"spawning"===e.state||"running"===e.state)?v.some(e=>"queued"===e.status)?"queued":"working":"ready",A=(0,r.useCallback)((e,t,r,n,o,i,l)=>{s.rootMessageId&&m(e,t,void 0,s.rootMessageId,r,void 0,(0,X.orderParticipantIds)(a.map(e=>e.id),o),s.projectSlug??void 0,i,l)},[a,s.projectSlug,s.rootMessageId,m]);return(0,t.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,t.jsxs)("header",{className:"flex h-12 shrink-0 items-center justify-between border-b border-[var(--card-border)] px-6",children:[(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[c&&(0,t.jsx)("button",{type:"button",onClick:c,className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",title:"Back to sessions",children:(0,t.jsx)(l.ChevronLeft,{size:16})}),(0,t.jsx)("span",{className:"shrink-0 font-mono text-sm text-[var(--muted-foreground)]",children:e.identifier}),(0,t.jsx)("div",{className:"h-1 w-1 shrink-0 rounded-full bg-[var(--card-border)]"}),(0,t.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:ew(s)})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-4",children:[(0,t.jsx)(eT,{status:e.status,options:n,disabled:0===n.length,updating:o,onChange:t=>i(e,t)}),(0,t.jsxs)("div",{className:`flex items-center gap-2 rounded-md border px-2.5 py-1 ${eC[y.tone]}`,children:[(0,t.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${eS[y.tone]}`}),(0,t.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider",children:y.label})]}),null!=s.durationMs&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)(d.Clock,{size:14}),(0,t.jsxs)("span",{children:[(s.durationMs/1e3).toFixed(1),"s"]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-[var(--card-border)] bg-[var(--card-bg)] px-2 py-1",children:[(0,t.jsx)("img",{src:eV(s.agentId,j.get(s.agentId)?.color),alt:s.agentName,className:"h-5 w-5 rounded-full object-cover"}),(0,t.jsx)("span",{className:"pr-1 text-xs font-medium",children:s.agentName})]})]})]}),(0,t.jsx)("div",{ref:k,className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===u.length?(0,t.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:"queued"===s.status||"running"===s.status?"Starting session...":"No thread messages yet."}):(0,t.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[u.map(e=>{let r=e.participantId?j.get(e.participantId):null,a=(0,U.stripMarkers)(e.content);if(!a.trim())return null;let n=e.participantId??s.agentId;return(0,t.jsxs)("div",{className:"flex gap-3",children:["user"===e.role?(0,t.jsx)("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-[var(--app-shell-subtle,var(--card-bg))]",children:(0,t.jsx)(f.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,t.jsx)("img",{src:eV(n,r?.color),alt:r?.name??s.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1 flex flex-col gap-1.5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("div",{className:"flex items-center gap-2",children:"user"===e.role?(0,t.jsx)("span",{className:"text-sm font-semibold text-[var(--foreground)]",children:"You"}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-sm font-semibold",style:{color:r?.color??"var(--foreground)"},children:r?.name??s.agentName}),(0,t.jsx)("span",{className:"rounded bg-[var(--card-bg)] px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Agent"})]})}),(0,t.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:new Date(e.timestamp).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),"user"===e.role?(0,t.jsx)("div",{className:"w-fit max-w-[85%] rounded-xl rounded-tl-sm border border-[var(--card-border)] bg-[var(--card-bg)] px-4 py-3 text-sm text-[var(--foreground)]",children:(0,t.jsx)(E.Markdown,{content:a,isUser:!0})}):(0,t.jsx)("div",{className:"text-sm text-[var(--foreground)]",children:(0,t.jsx)(E.Markdown,{content:a,isUser:!1})})]})]},e.id)}),Object.entries(b).filter(([,e])=>!s.rootMessageId||e.rootMessageId===s.rootMessageId).map(([e])=>{let r=j.get(e);return(0,t.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)("img",{src:eV(e,r?.color),alt:r?.name??s.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),r?.name??s.agentName," is thinking..."]},`stream-${e}`)})]})}),(0,t.jsx)(tc.JumpToLatestButton,{visible:w&&u.length>10,onClick:C,offsetClassName:"bottom-40"}),(0,t.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:s.rootMessageId?(0,t.jsx)(tu,{onSend:A,onStop:g,participants:a,projectId:s.projectId??void 0,projectSlug:s.projectSlug??void 0,loading:"ready"!==$,commands:[],activityStatus:$,placeholder:"Continue this session...",initialPinnedParticipantId:s.agentId}):(0,t.jsx)("div",{className:"px-2 py-1 text-xs text-[var(--muted-foreground)]",children:"Waiting for the session to start..."})})]})}function tx({trackerType:e,projectId:s,projectSlug:o,initialShowSettings:l,initialGroupId:d}){let f,b,{isTouchLayout:v}=(0,O.useInputCapabilities)(),{connected:y,loading:R,user:T,clis:E,mcpConfigured:A,connect:P,connectWithKey:L,disconnect:z,configureMcp:M}=(0,w.useTrackerConnection)(e,s??""),U=(0,r.useRef)(null),[X,Y]=(0,r.useState)(l??!1),[Q,Z]=(0,r.useState)(!1),[ee,et]=(0,r.useState)(()=>(0,G.loadLinearTicketPanelWidth)()||576),[er,es]=(0,r.useState)(""),[ea,en]=(0,r.useState)(""),[eo,ei]=(0,r.useState)(!1),[el,ed]=(0,r.useState)([]),[ec,eu]=(0,r.useState)([]),[ep,em]=(0,r.useState)([]),[ex,ef]=(0,r.useState)([]),[eg,eh]=(0,r.useState)([]),[eb,ev]=(0,r.useState)([]),[eC,eS]=(0,r.useState)("Group"),[eT,eA]=(0,r.useState)(""),[eP,eL]=(0,r.useState)(""),[ez,eM]=(0,r.useState)("activity"),[eD,eU]=(0,r.useState)("desc"),[eO,eF]=(0,r.useState)([]),[eB,e_]=(0,r.useState)(()=>W(e,o)),[eq,eJ]=(0,r.useState)(null),[eK,eW]=(0,r.useState)(null),[eG,eH]=(0,r.useState)(new Set),{participants:eQ}=(0,e3.useTrackerParticipants)(e,s),{issueActiveAgents:eZ}=function(e,t){let[s,a]=(0,r.useState)(new Map);return(0,r.useEffect)(()=>{let r=!1;async function s(){try{let s=new URLSearchParams;t&&s.set("projectId",t);let n=await fetch(`/api/trackers/${e}/active-agents?${s}`);if(!n.ok||r)return;let o=await n.json(),i=new Map;for(let e of o.agents??[]){let t=i.get(e.issueId)??[];t.push({agentId:e.agentId,agentName:e.agentName}),i.set(e.issueId,t)}r||a(i)}catch{}}s();let n=setInterval(()=>void s(),5e3);return()=>{r=!0,clearInterval(n)}},[e,t]),{issueActiveAgents:s}}(e,s),{issueStats:e0}=function(e,t){let[s,a]=(0,r.useState)(new Map);return(0,r.useEffect)(()=>{let r=!1;async function s(){try{let s=new URLSearchParams;t&&s.set("projectId",t);let n=await fetch(`/api/trackers/${e}/stats?${s}`);if(!n.ok||r)return;let o=await n.json(),i=new Map;for(let e of o.stats??[])i.set(e.issueId,{sessions:e.sessions,messages:e.messages});r||a(i)}catch{}}s();let n=setInterval(()=>void s(),1e4);return()=>{r=!0,clearInterval(n)}},[e,t]),{issueStats:s}}(e,s),[e1,e2]=(0,r.useState)(null),[e5,e6]=(0,r.useState)(null),[e8,e9]=(0,r.useState)("runs"),te=(0,r.useRef)(null),ts=(0,r.useRef)(!0),ti=(0,r.useRef)(null),tl=(0,r.useRef)(null),{getSelection:tu,pushSelection:tx,replaceSelection:tf}=(0,h.useUrlSelection)(),tg=tu("issue"),th=tu("run"),tb=tu("group"),{groups:tv,createGroup:ty,updateGroup:tj,deleteGroup:tk,addTasksToGroup:tw,removeTaskFromGroup:tN,refetch:tC}=function(e){let[t,s]=(0,r.useState)([]),[a,n]=(0,r.useState)(!1),o=(0,r.useCallback)(async()=>{if(e){n(!0);try{let t=await fetch(`/api/task-groups?project_id=${encodeURIComponent(e)}`);if(!t.ok)throw Error("Failed to fetch groups");let r=await t.json();s(r.groups??[])}catch(e){console.error("useTaskGroups fetch error:",e)}finally{n(!1)}}},[e]);(0,r.useEffect)(()=>{o()},[o]);let i=(0,r.useCallback)(async(t,r)=>{if(!e)return null;try{let s=await fetch("/api/task-groups",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_id:e,name:t,task_ids:r})});if(!s.ok)throw Error("Failed to create group");let a=await s.json();return await o(),a.group}catch(e){return console.error("createGroup error:",e),null}},[e,o]),l=(0,r.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/task-groups/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).ok)throw Error("Failed to update group");await o()}catch(e){console.error("updateGroup error:",e)}},[o]),d=(0,r.useCallback)(async e=>{try{if(!(await fetch(`/api/task-groups/${e}`,{method:"DELETE"})).ok)throw Error("Failed to delete group");await o()}catch(e){console.error("deleteGroup error:",e)}},[o]),c=(0,r.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/task-groups/${e}/tasks`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task_ids:t})})).ok)throw Error("Failed to assign tasks");await o()}catch(e){console.error("addTasksToGroup error:",e)}},[o]),u=(0,r.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/task-groups/${e}/tasks?task_id=${encodeURIComponent(t)}`,{method:"DELETE"})).ok)throw Error("Failed to remove task");await o()}catch(e){console.error("removeTaskFromGroup error:",e)}},[o]);return{groups:t,isLoading:a,refetch:o,createGroup:i,updateGroup:l,deleteGroup:d,addTasksToGroup:c,removeTaskFromGroup:u}}(s),[tS,tI]=(0,r.useState)(new Set),[t$,tR]=(0,r.useState)(!1),[tT,tE]=(0,r.useState)([]),[tA,tP]=(0,r.useState)(null),tL=(0,eX.useSensors)((0,eX.useSensor)(eX.PointerSensor,{activationConstraint:{distance:8}})),[tz,tM]=(0,r.useState)(null),tD=(0,r.useCallback)(e=>{tI(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),tU=(0,r.useCallback)(async e=>{tT.length<2||(await ty(e,tT),tE([]),tR(!1),tP(null),tI(new Set))},[tT,ty]),tO=(0,r.useRef)([]),tF=(0,r.useRef)(null),tB=(0,r.useCallback)(()=>{let e=Array.from(tS),t=tO.current.find(e=>tS.has(e.id));tE(e),tP(t?.id??e[0]??null),tR(!0)},[tS]),t_=tv.find(e=>e.id===tb),tq=(0,r.useMemo)(()=>new Set(tv.flatMap(e=>e.task_ids)),[tv]),tJ=(0,r.useCallback)(e=>{tM(e.active.id)},[]),tK=(0,r.useCallback)(async e=>{tM(null);let{active:t,over:r}=e,s=t.id;if(t$){let e=tT.includes(s);if(!r||t.id===r.id){e&&tE(e=>{let t=e.filter(e=>e!==s);return t.length<2?(tR(!1),tP(null),[]):t});return}let a=r.id,n=a===tr||tT.includes(a);e&&!n?tE(e=>{let t=e.filter(e=>e!==s);return t.length<2?(tR(!1),tP(null),[]):t}):e||tE(e=>[...e,s]);return}if(!r||t.id===r.id)return;let a=r.id;if(a.startsWith(tn)){let e=a.slice(tn.length),t=tO.current.find(e=>e.id===s),r=tO.current.find(t=>t.status===e)?.statusCategory;t&&t.status!==e&&await tF.current?.(t,e,r);return}let n=tO.current.find(e=>e.id===s),o=tO.current.find(e=>e.id===a);if(n&&o&&n.status!==o.status)return void await tF.current?.(n,o.status,o.statusCategory);let i=tv.find(e=>e.id===a);if(i)return void await tw(i.id,[s]);let l=!tq.has(a);if(!tq.has(s)&&l){tE([s,a]),tP(a),tR(!0);return}let d=tv.find(e=>e.task_ids.includes(s));d&&l&&await tN(d.id,s)},[tv,tq,tw,tN,t$,tT]),tW=(0,r.useCallback)(e=>{es(e),te.current&&clearTimeout(te.current),te.current=setTimeout(()=>en(e),300)},[]),tG=(0,r.useCallback)(t=>{e_(r=>{let s=new Set(r);s.has(t)?s.delete(t):s.add(t);if(J())try{window.localStorage.setItem(K(e,o),JSON.stringify([...s]))}catch{}return s})},[e,o]);(0,r.useEffect)(()=>()=>{te.current&&clearTimeout(te.current)},[]),(0,r.useEffect)(()=>{let t=function(e,t){if(!B())return{...F};let r=window.localStorage.getItem(q(e,t));if(!r)return{...F};try{let e=JSON.parse(r);return{search:"string"==typeof e.search?e.search:F.search,assigneeIds:_(e.assigneeIds),statusCategories:_(e.statusCategories),groupIds:_(e.groupIds),labelNames:_(e.labelNames),sortBy:["activity","identifier","status","created"].includes(e.sortBy)?e.sortBy:F.sortBy,sortDir:["asc","desc"].includes(e.sortDir)?e.sortDir:F.sortDir,hasActivity:"boolean"==typeof e.hasActivity?e.hasActivity:F.hasActivity}}catch{return{...F}}}(e,o);ts.current=!0,es(t.search),en(t.search),ef(t.assigneeIds),eh(t.statusCategories),eL(d??t.groupIds?.[0]??""),eA(d??t.groupIds?.[0]??""),eM(t.sortBy),eU(t.sortDir),eF(t.labelNames??[]),e_(W(e,o))},[e,o,d]),(0,r.useEffect)(()=>{if(ts.current){ts.current=!1;return}var t={search:er,assigneeIds:ex,statusCategories:eg,groupIds:eT?[eT]:[],labelNames:eO,sortBy:ez,sortDir:eD,hasActivity:!1};if(B())try{window.localStorage.setItem(q(e,o),JSON.stringify({search:t.search,assigneeIds:_(t.assigneeIds),statusCategories:_(t.statusCategories),groupIds:_(t.groupIds),labelNames:_(t.labelNames),sortBy:t.sortBy||"activity",sortDir:t.sortDir||"desc",hasActivity:!!t.hasActivity}))}catch{}},[e,o,er,ex,eg,eP,eT,eO,ez,eD]),(0,r.useEffect)(()=>{if(!y||!s)return;let t=!1;ei(!1);let r=new URLSearchParams;return r.set("projectId",s),o&&r.set("projectSlug",o),fetch(`/api/trackers/${e}/options?${r.toString()}`).then(e=>e.json()).then(e=>{t||(ed(Array.isArray(e.assignees)?e.assignees:[]),eu(Array.isArray(e.statuses)?e.statuses.map(e=>({value:e.name,label:e.name})):[]),em(Array.isArray(e.teams)?e.teams:[]),ev(Array.isArray(e.groups)?e.groups:[]),e.groupLabel&&eS(e.groupLabel),ei(!0))}).catch(()=>{t||(ed([]),eu([]),em([]),ev([]),ei(!0))}),()=>{t=!0}},[y,e,s,o]),(0,r.useEffect)(()=>{if(!eo)return;let e=ex.filter(e=>el.some(t=>t.id===e));e.length!==ex.length&&ef(e)},[el,eo,ex]),(0,r.useEffect)(()=>{if(!eo)return;let e=ec.map(e=>e.value),t=eg.filter(t=>e.includes(t));t.length!==eg.length&&eh(t)},[eo,eg,ec]),(0,r.useEffect)(()=>{if(eo){if(ep.length<=1&&eP)return void eL("");eP&&!ep.some(e=>e.id===eP)&&eL("")}},[eo,eP,ep]),(0,r.useEffect)(()=>{eo&&eT&&!eb.some(e=>e.id===eT)&&eA("")},[eb,eo,eT]);let{items:tH,loading:tX,hasMore:tV,loadMore:tY,refresh:tQ,updateItem:tZ}=function(e,t,s,a){let[n,o]=(0,r.useState)([]),[i,l]=(0,r.useState)(!0),[d,c]=(0,r.useState)(null),[u,p]=(0,r.useState)(!1),m=(0,r.useRef)(d),x=(0,r.useRef)(!1);m.current=d;let f=`/api/trackers/${encodeURIComponent(e)}/items`,g=a.projectId?function(e,t,r){let s={};for(let e of Object.keys(r).sort()){let t=r[e];if(null!=t&&""!==t&&!1!==t)if(Array.isArray(t)){if(!t.length)continue;s[e]=[...t].map(String).sort()}else s[e]=t}return`${e}:${t}:${JSON.stringify(s)}`}(e,a.projectId,{statuses:t.statuses,statusCategories:t.statusCategories,search:t.search,assigneeIds:t.assigneeIds,groupIds:t.groupIds,sortBy:t.sortBy,sortDir:t.sortDir,hasActivity:t.hasActivity,limit:a.limit}):null,h=(0,r.useRef)(g);h.current=g;let b=(0,r.useCallback)(async e=>{if(s&&a.projectId){l(!0);try{let r=new URLSearchParams;if(r.set("projectId",a.projectId),t.statuses?.length)for(let e of t.statuses)r.append("status",e);if(t.statusCategories?.length)for(let e of t.statusCategories)r.append("statusCategory",e);if(t.search&&r.set("search",t.search),t.assigneeIds?.length)for(let e of t.assigneeIds)r.append("assigneeId",e);if(t.groupIds?.length)for(let e of t.groupIds)r.append("groupId",e);t.sortBy&&r.set("sortBy",t.sortBy),t.sortDir&&r.set("sortDir",t.sortDir),t.hasActivity&&r.set("hasActivity","true"),e&&m.current&&r.set("cursor",m.current),a.limit&&r.set("limit",String(a.limit));let s=await fetch(`${f}?${r.toString()}`),n=await s.json(),i=n.items??[];o(t=>e?[...t,...i]:i);let l=n.pageInfo?.endCursor??null,d=n.pageInfo?.hasNextPage??!1;c(l),p(d),x.current=!0,!e&&h.current&&k(h.current,{items:i,endCursor:l,hasNextPage:d,savedAt:Date.now()})}catch{e||o([])}finally{l(!1)}}},[f,t.statuses,t.statusCategories,t.search,t.assigneeIds,t.groupIds,t.sortBy,t.sortDir,t.hasActivity,s,a.projectId,a.limit]);(0,r.useEffect)(()=>{let e=!1;return c(null),x.current=!1,s&&g&&j(g).then(t=>{e||!t||x.current||(o(t.items),c(t.endCursor),p(t.hasNextPage),l(!1))}),b(!1),()=>{e=!0}},[b,g,s]);let v=(0,r.useCallback)(()=>b(!0),[b]);return{items:n,loading:i,hasMore:u,loadMore:v,refresh:(0,r.useCallback)(()=>(c(null),b(!1)),[b]),updateItem:(0,r.useCallback)(e=>{o(t=>t.map(t=>t.id===e.id?e:t))},[])}}(e,(0,r.useMemo)(()=>({search:ea||void 0,statuses:eg.length>0&&eg.length<ec.length?eg:void 0,assigneeIds:ex.length>0?ex:void 0,groupIds:eT?[eT]:void 0,sortBy:ez,sortDir:eD}),[ea,ex,eT,eg,ec.length,ez,eD]),y&&eo&&!!s,{projectId:s??""}),{metadataMap:t0,refresh:t1}=function(e,t,s){let[a,n]=(0,r.useState)(new Map),[o,i]=(0,r.useState)(!1),l=(0,r.useRef)(""),d=(0,r.useCallback)(async()=>{if(!t||0===s.length)return void n(new Map);i(!0);try{let r=await fetch(`/api/trackers/${encodeURIComponent(e)}/metadata/bulk?projectId=${encodeURIComponent(t)}&issueIds=${s.map(encodeURIComponent).join(",")}`),a=await r.json(),o=new Map;for(let[e,t]of Object.entries(a))o.set(e,{labels:Array.isArray(t.labels)?t.labels:[],estimate:"number"==typeof t.estimate?t.estimate:null});n(o)}catch{}i(!1)},[e,t,s]);return(0,r.useEffect)(()=>{let e=s.join(",");e!==l.current&&(l.current=e,d())},[d,s]),{metadataMap:a,loading:o,refresh:d}}(e,s,(0,r.useMemo)(()=>tH.map(e=>e.id),[tH])),{labels:t2,definitions:t5,refresh:t4,createDefinition:t3}=ey(e,s),t6=(0,r.useMemo)(()=>tg?tH.find(e=>e.id===tg)??null:null,[tH,tg]),t8=t6??(eq?.id===tg?eq:null),t7=(0,r.useMemo)(()=>{if(0===eB.size)return tH;let e=[],t=[];for(let r of tH)eB.has(r.id)?e.push(r):t.push(r);return[...e,...t]},[tH,eB]);tO.current=t7;let t9=(0,r.useDeferredValue)(eO),re=(0,r.useMemo)(()=>{if(0===t9.length)return t7;let e=new Set(t9),t=[];for(let r of t7){let s=t0.get(r.id)?.labels;if(s){for(let a of s)if(e.has(a)){t.push(r);break}}}return t},[t7,t9,t0]),rt=(0,r.useMemo)(()=>{let e=new Map;for(let t of re){let r=e.get(t.status);r||(r={status:t.status,category:t.statusCategory,items:[]},e.set(t.status,r)),r.items.push(t)}let t={in_progress:0,todo:1,done:2,cancelled:3};return[...e.values()].sort((e,r)=>(t[e.category]??1)-(t[r.category]??1))},[!0,re]),{runs:rr,loading:rs,loadedForIssueId:ra,createRun:rn,updateRun:ro}=N(e,t8?.id??null,s??null),{scripts:ri,activeScriptId:rl,activeScript:rd,setActiveScriptId:rc,saveScript:ru,deleteScript:rp}=function(e,t){let[s,a]=(0,r.useState)([]),[n,o]=(0,r.useState)(null);(0,r.useEffect)(()=>{let r=function(e,t){if(!S())return{...C};let r=window.localStorage.getItem($(e,t));if(!r)return{...C};try{return I(JSON.parse(r))}catch{return{...C}}}(e,t);a(r.scripts),o(r.activeScriptId)},[e,t]);let i=(0,r.useCallback)((r,s)=>{a(r),o(s);if(S())try{let a=I({scripts:r,activeScriptId:s});window.localStorage.setItem($(e,t),JSON.stringify(a))}catch{}},[e,t]),l=(0,r.useCallback)(e=>{let t=e&&s.some(t=>t.id===e)?e:null;i(s,t)},[i,s]),d=(0,r.useCallback)(e=>{let t=new Date().toISOString(),r=e.name.trim(),a=e.prompt.trim();if(!r||!a)throw Error("Run script name and prompt are required.");let n=e.id?s.find(t=>t.id===e.id):null,o=n?{...n,name:r,prompt:a,updatedAt:t}:{id:crypto.randomUUID(),name:r,prompt:a,createdAt:t,updatedAt:t};return i([...n?s.map(e=>e.id===n.id?o:e):[o,...s]].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt)),o.id),o},[i,s]),c=(0,r.useCallback)(e=>{i(s.filter(t=>t.id!==e),n===e?null:n)},[n,i,s]),u=(0,r.useMemo)(()=>s.find(e=>e.id===n)??null,[n,s]);return{scripts:s,activeScriptId:n,activeScript:u,setActiveScriptId:l,saveScript:d,deleteScript:c}}(e,o),rm=th?rr.find(e=>e.id===th)??null:null,rx=tg&&!th?(0,H.loadLastRunForIssue)(tg):null,rf=!!rx&&U.current!==tg,rg=(0,r.useMemo)(()=>el.map(e=>({value:e.id,label:e.name})),[el]),rh=(0,r.useMemo)(()=>ec.map(e=>({value:e.value,label:e.label})),[ec]),rb=(0,r.useMemo)(()=>{let e=ec.map(e=>({value:e.label,label:e.label})),t=new Set(e.map(e=>e.value)),r=t8?.status?.trim();return r&&!t.has(r)&&e.unshift({value:r,label:r}),e},[t8?.status,ec]),rv=(0,r.useMemo)(()=>[{value:"",label:"Workspace"},...ep.map(e=>({value:e.id,label:e.name}))],[ep]),ry=(0,r.useMemo)(()=>[{value:"",label:eC},...eb.map(e=>({value:e.id,label:e.name}))],[eb,eC]),rj=rh.length>0,rk=ry.length>1,rw=rv.length>2,rN=rd?.name??"AGX default",rC=(0,r.useMemo)(()=>t2.map(e=>({value:e.name,label:e.name})),[t2]),rS=(0,r.useCallback)(async(t,r)=>{if(!s)return;let a=t0.get(t)?.labels??[],n=a.includes(r)?a.filter(e=>e!==r):[...a,r];try{await fetch(`/api/trackers/${e}/metadata?projectId=${encodeURIComponent(s)}&issueId=${encodeURIComponent(t)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({labels:n})}),t1(),t4()}catch{}},[s,e,t0,t1,t4]),rI=(0,r.useCallback)(async e=>{s&&await t3(e)},[s,t3]),r$=(0,r.useCallback)(async(t,r,a)=>{let n=r.trim();if(!n||n===t.status||!s)return;let o={...t,status:n,statusCategory:a??t.statusCategory};tZ(o),tg===t.id&&eJ(o),eW(t.id);try{let r=await fetch(`/api/trackers/${e}/items/${encodeURIComponent(t.id)}?projectId=${encodeURIComponent(s??"")}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:n})}),a=await r.json().catch(()=>({}));if(!r.ok||!a.item)throw Error(a.error||"Failed to update ticket status");let o=a.item;tZ(o),tg===o.id&&eJ(o),await tQ()}catch(e){tZ(t),tg===t.id&&eJ(t),e instanceof Error&&window.alert(e.message)}finally{eW(e=>e===t.id?null:e)}},[tQ,tg,tZ,e,s]);tF.current=r$;let rR=(0,r.useCallback)(async(t,r,a,n)=>{let i=n??eQ[0]?.id;if(i)try{await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:t.id,issueIdentifier:t.identifier,issueTitle:t.title,issueStatus:t.status,issueAssignee:t.assignee?.name??null,agentId:i,scriptName:r,scriptPrompt:a})})}catch(e){console.error(`Failed to start ${r} for ${t.identifier}:`,e)}},[eQ,e,s,o]),rT=(0,r.useCallback)(async()=>{let t=Array.from(tS).map(e=>tH.find(t=>t.id===e)).filter(Boolean);if(0===t.length||0===eQ.length)return;let r=eQ[0];for(let a of t)try{await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee?.name??null,agentId:r.id,scriptName:"Recap",scriptPrompt:"Summarize recent activity and current state of this ticket. Focus on: what was done, what's outstanding, and any blockers."})})}catch(e){console.error(`Failed to start recap for ${a.identifier}:`,e)}tI(new Set)},[tS,tH,eQ,e,s,o]),rE=(0,r.useCallback)(async(t,r)=>{for(let a of Array.from(tS).map(e=>tH.find(t=>t.id===e)).filter(Boolean))try{await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee?.name??null,agentId:r,scriptPrompt:t})})}catch(e){console.error(`Failed to send prompt for ${a.identifier}:`,e)}tI(new Set)},[tS,tH,e,s,o]),rA=(0,r.useCallback)(async()=>{let t=Array.from(tS).map(e=>tH.find(t=>t.id===e)).filter(Boolean);if(0===t.length||0===eQ.length)return;let r=eQ[0];for(let a of t)try{await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee?.name??null,agentId:r.id,scriptName:"Estimate",scriptPrompt:"Assess the complexity and scope of this ticket and assign a Fibonacci story-point estimate (1, 2, 3, 5, 8, 13, or 21). Consider: required investigation, files likely to change, unknowns, and testing effort. Briefly justify the number, then set the estimate using the available tooling."})})}catch(e){console.error(`Failed to start estimate for ${a.identifier}:`,e)}tI(new Set)},[tS,tH,eQ,e,s,o]),rP=(0,r.useCallback)(async t=>{let r=Array.from(tS);if(0!==r.length&&s)try{await fetch(`/api/trackers/${e}/metadata/bulk`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s,issueIds:r,action:"add_labels",payload:{labels:[t]}})}),t1(),t4()}catch{}},[tS,s,e,t1,t4]),rL=(0,r.useCallback)(async t=>{let r=Array.from(tS);if(0!==r.length&&s)try{await fetch(`/api/trackers/${e}/metadata/bulk`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s,issueIds:r,action:"remove_label",payload:{label:t}})}),t1(),t4()}catch{}},[tS,s,e,t1,t4]),[rz,rM]=(0,r.useState)(!1),rD=(0,r.useCallback)(async e=>{let t=Array.from(tS).map(e=>tH.find(t=>t.id===e)).filter(Boolean);if(0!==t.length){for(let r of(rM(!0),t))await r$(r,e);rM(!1),tI(new Set)}},[tS,tH,r$]),rU=(0,r.useCallback)(async e=>{s&&await t3(e)},[s,t3]),rO=(0,r.useCallback)(t=>({statusOptions:rb,onRecap:()=>{let r=s?`?projectId=${encodeURIComponent(s)}`:"";fetch(`/api/trackers/${encodeURIComponent(e)}/items/${encodeURIComponent(t.id)}/recap${r}`,{method:"POST"}).then(()=>{window.dispatchEvent(new CustomEvent("tracker:recap-triggered",{detail:{trackerType:e,issueId:t.id}}))})},onPrompt:(e,r)=>{rR(t,"Prompt",e,r)},onEstimate:()=>{rR(t,"Estimate","Assess the complexity and scope of this ticket and assign a Fibonacci story-point estimate (1, 2, 3, 5, 8, 13, or 21). Consider: required investigation, files likely to change, unknowns, and testing effort. Briefly justify the number, then set the estimate using the available tooling.")},onStatus:e=>{r$(t,e)}}),[rb,rR,r$,e,s]),rF=(0,r.useMemo)(()=>{let e=new Map;for(let t of tS){let r=t0.get(t);e.set(t,r??{labels:[],estimate:null})}return e},[tS,t0]);(0,r.useEffect)(()=>{if(!tg||!s)return void eJ(null);if(t6)return void eJ(e=>e?.id===tg?t6:null);let t=!1;return(async()=>{try{let r=await fetch(`/api/trackers/${e}/items/${encodeURIComponent(tg)}?projectId=${encodeURIComponent(s??"")}`);if(t)return;if(404===r.status)return void eJ(null);if(!r.ok)throw Error(`Failed to fetch selected tracker ticket: ${r.status}`);let a=await r.json().catch(()=>({}));if(!a.item?.id)return void eJ(null);eJ(a.item)}catch(e){t||console.error("Failed to hydrate selected tracker item",e)}})(),()=>{t=!0}},[tf,t6,tg,e,s]),(0,r.useEffect)(()=>{if(!tg){th&&tf({run:null});return}},[tf,tg,th]),(0,r.useEffect)(()=>{t8&&th&&!rs&&(rr.some(e=>e.id===th)||tf({run:null}))},[tf,rr,rs,t8,th]),(0,r.useEffect)(()=>{tg&&th&&(0,H.persistLastRunForIssue)(tg,th)},[tg,th]),(0,r.useEffect)(()=>{rf&&!rs&&ra===tg&&(U.current=tg,rx&&rr.some(e=>e.id===rx)&&tf({run:rx}))},[rf,rx,tg,rr,rs,ra,tf]),(0,r.useEffect)(()=>{if(v){if(!t8)return void e9("runs");if(rm||0===rr.length)return void e9("ticket");e9("runs")}},[v,rr.length,t8,rm]),(0,r.useEffect)(()=>{if(!Q)return;let e=e=>{let t=e.target;tl.current?.contains(t)||ti.current?.contains(t)||Z(!1)},t=e=>{"Escape"===e.key&&Z(!1)};return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)}},[Q]);let rB=(0,r.useCallback)(async(t,r)=>{e2(null),e6(null);try{let a=await fetch(`/api/trackers/${e}/runs/scripted`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s??void 0,projectSlug:o??void 0,issueId:t.id,issueIdentifier:t.identifier,issueTitle:t.title,issueStatus:t.status,issueAssignee:t.assignee?.name??null,agentId:r.id,scriptName:rd?.name,scriptPrompt:rd?.prompt})}),n=await a.json().catch(()=>({}));if(!a.ok||!n.run||!n.chatRunId||!n.userMessageId)throw Error(n.error||"Failed to start scripted session");tx({issue:t.id,run:n.run.id})}catch(e){console.error("Failed to start scripted tracker session:",e),e instanceof Error&&window.alert(e.message)}},[rd,s,o,tx,e]),r_=(0,r.useCallback)((e,t)=>{if(Z(!1),0===eQ.length)return void window.alert("Add at least one agent to this project before starting a scripted session.");if(1===eQ.length)return void rB(e,eQ[0]);let r=t?.currentTarget?.getBoundingClientRect();e2(e),e6(r?{top:r.bottom+4,left:r.left}:{top:200,left:200})},[rB,eQ]),rq=(0,r.useRef)(null),rJ=(0,r.useRef)(null),rK=(0,r.useRef)(null),[rW,rG]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=[rJ.current,rK.current].filter(Boolean);if(0===e.length)return;let t=e=>{rG(e.currentTarget.scrollTop>400)};return e.forEach(e=>e.addEventListener("scroll",t,{passive:!0})),()=>e.forEach(e=>e.removeEventListener("scroll",t))},[v]);let rH=(0,r.useCallback)(()=>{let e=rJ.current??rK.current;e?.scrollTo({top:0,behavior:"smooth"})},[]);return((0,r.useEffect)(()=>{let e=rq.current;if(!e||!tV)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&tY()},{threshold:.1});return t.observe(e),()=>t.disconnect()},[tV,tY]),y)?(0,t.jsxs)("div",{className:"relative flex h-full overflow-hidden",children:[v?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,t.jsxs)("div",{className:"shrink-0 border-b border-[var(--card-border)]",children:[(0,t.jsxs)("div",{className:"flex h-12 items-center gap-2 px-3",children:[(0,t.jsxs)("div",{className:"flex flex-1 items-center gap-2 rounded-md border border-[var(--card-border)] bg-[var(--background)] px-2.5 py-1.5 transition-all focus-within:border-[var(--muted-foreground)] focus-within:ring-1 focus-within:ring-[var(--muted-foreground)]",children:[(0,t.jsx)(p.Search,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("input",{type:"text",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]",placeholder:"Search tickets...",value:er,onChange:e=>tW(e.target.value)})]}),(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-50",onClick:()=>void tQ(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:tX,children:(0,t.jsx)(u.RefreshCw,{size:16,className:tX?"animate-spin":void 0})}),(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>{Z(!1),Y(!0)},title:"Tracker settings",children:(0,t.jsx)(m.Settings,{size:16})})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 pb-2",children:[rk?(0,t.jsx)(eR,{label:eC,value:eT,options:ry,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:eA}):null,rj?(0,t.jsx)(eE,{label:"Status",values:eg,options:rh,activeClasses:"border-amber-500/30 bg-amber-500/10 text-amber-300",onChange:eh,emptyLabel:"All statuses"}):null,(0,t.jsx)(eE,{label:"Assignee",values:ex,options:rg,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:ef,emptyLabel:"All assignees"}),rC.length>0&&(0,t.jsx)(eE,{label:"Label",values:eO,options:rC,activeClasses:"border-pink-500/30 bg-pink-500/10 text-pink-400",onChange:eF,emptyLabel:"All labels"}),rw?(0,t.jsx)(eR,{label:"Workspace",value:eP,options:rv,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:eL}):null,(0,t.jsx)(eR,{label:"Sort",value:ez,options:[{value:"activity",label:"Updated At"},{value:"identifier",label:"Ticket ID"},{value:"status",label:"Status"},{value:"created",label:"Created At"}],activeClasses:"border-sky-500/30 bg-sky-500/10 text-sky-400",onChange:e=>eM(e)}),(0,t.jsx)("button",{type:"button",className:"rounded-full border border-[var(--card-border)] p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",title:"desc"===eD?"Descending":"Ascending",onClick:()=>eU(e=>"desc"===e?"asc":"desc"),children:"desc"===eD?(0,t.jsx)(a.ArrowDown,{size:12}):(0,t.jsx)(n.ArrowUp,{size:12})})]})]}),(0,t.jsxs)("div",{className:"relative flex-1 min-h-0 flex flex-col",children:[(0,t.jsx)("div",{ref:rK,className:"flex-1 overflow-y-auto",children:tX&&0===tH.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===tH.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No tickets found."}):(0,t.jsxs)(t.Fragment,{children:[rt.map(e=>{let s=eG.has(e.status);return(0,t.jsxs)(r.default.Fragment,{children:[(0,t.jsx)(to,{status:e.status,categoryColor:tp[e.category]??"bg-zinc-400",count:e.items.length,collapsed:s,onToggle:()=>eH(t=>{let r=new Set(t);return r.has(e.status)?r.delete(e.status):r.add(e.status),r})}),!s&&e.items.map(e=>(0,t.jsx)(eY,{item:e,selected:t8?.id===e.id,pinned:eB.has(e.id),activeAgents:eZ.get(e.id),participants:eQ,projectSlug:o,stats:e0.get(e.id),hideStatus:!0,estimate:t0.get(e.id)?.estimate,localLabels:t0.get(e.id)?.labels,labelDefinitions:t5,allLabels:t2,onToggleLabel:t=>rS(e.id,t),onAddLabel:rI,onSelect:()=>{e9("runs"),tx({issue:e.id,run:null})},onTogglePin:()=>tG(e.id),rowActions:rO(e),showGroup:!eT},e.id))]},`sg-${e.status}`)}),tV?(0,t.jsx)("div",{ref:rq,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:tX?"Loading...":"Load more"}):null]})}),(0,t.jsx)(tc.JumpToLatestButton,{visible:rW&&tH.length>20,direction:"top",onClick:rH})]})]}),t8?(0,t.jsxs)("div",{className:"absolute inset-0 z-20 flex flex-col bg-[var(--background)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--card-border)] px-4 py-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:t8.identifier}),(0,t.jsx)("div",{className:"truncate text-sm font-semibold text-[var(--foreground)]",children:t8.title})]}),(0,t.jsx)("button",{type:"button",className:"rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>tf({issue:null,run:null}),"aria-label":"Close ticket panel",children:(0,t.jsx)(g.X,{size:16})})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--card-border)] px-3 py-2",children:[(0,t.jsx)("button",{type:"button",className:`rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${"runs"===e8?"bg-[var(--card-bg)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"}`,onClick:()=>e9("runs"),children:"Runs"}),(0,t.jsx)("button",{type:"button",className:`rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${"ticket"===e8?"bg-[var(--card-bg)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"}`,onClick:()=>e9("ticket"),children:"Ticket"})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden",children:"runs"===e8?(0,t.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,t.jsxs)("div",{className:"relative flex items-center justify-between border-b border-[var(--card-border)] px-3 py-2",children:[(0,t.jsx)("h3",{className:"text-xs font-semibold text-[var(--foreground)]",children:"Sessions"}),(0,t.jsxs)("button",{ref:ti,type:"button",className:"inline-flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-40",onClick:()=>{Z(!1),e9("ticket"),tx({run:null})},title:"Open a fresh chat for this ticket. You can choose or edit the session script in the ticket tab.","aria-label":"New session",disabled:!t8,children:[(0,t.jsx)(c.Plus,{size:12}),"New session"]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto",children:rs&&0===rr.length||rf?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading sessions..."}):0===rr.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No previous sessions yet."}):rr.map(e=>{let r=ek(e);return(0,t.jsxs)("button",{type:"button",className:`w-full px-3 py-2 text-left text-xs transition-colors ${rm?.id===e.id?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]"}`,onClick:()=>{e9("ticket"),tx({run:e.id})},children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-[11px] font-medium text-[var(--foreground)]",children:ew(e)}),(0,t.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:new Date(e.startedAt).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),(0,t.jsxs)("div",{className:"mt-0.5 flex items-center gap-1.5 text-[10px]",children:[(0,t.jsx)("span",{className:`font-medium ${eI[r.tone]}`,children:r.label}),(0,t.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:e.agentName})]}),null!=e.durationMs?(0,t.jsxs)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:[(e.durationMs/1e3).toFixed(1),"s"]}):null]},e.id)})})]}):rm?(0,t.jsx)(tm,{item:t8??{id:rm.issueId,identifier:rm.issueIdentifier,title:rm.issueTitle,status:rm.issueStatus,statusCategory:"todo",labels:[],trackerId:"",trackerType:e,assignee:rm.issueAssignee?{id:"",name:rm.issueAssignee}:void 0,updatedAt:rm.updatedAt,createdAt:rm.updatedAt,url:""},run:rm,participants:eQ,itemStatusOptions:rb,itemStatusUpdating:eK===rm.issueId,onItemStatusChange:r$,onBack:()=>tf({run:null})}):rf?null:0===eQ.length?(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Add an agent team so you can pick a ticket and start shipping."}):(0,t.jsx)(e4,{item:t8,trackerType:e,runs:rr,participants:eQ,projectId:s,projectSlug:o,itemStatusOptions:rb,itemStatusUpdating:eK===t8.id,onItemStatusChange:r$,activeSessionScriptLabel:rN,onOpenSessionScripts:()=>Z(!0),onStartScriptedSession:e=>r_(t8,e),createRun:rn,updateRun:ro,onRunCreated:e=>tx({run:e}),onSelectRun:e=>tx({run:e})},t8.id)})]}):null]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex shrink-0 flex-col border-r border-[var(--card-border)]",style:{width:ee},children:[(0,t.jsxs)("div",{className:"shrink-0 border-b border-[var(--card-border)]",children:[(0,t.jsxs)("div",{className:"flex h-12 items-center gap-2 px-3",children:[(0,t.jsxs)("div",{className:"flex flex-1 items-center gap-2 rounded-md border border-[var(--card-border)] bg-[var(--background)] px-2.5 py-1.5 transition-all focus-within:border-[var(--muted-foreground)] focus-within:ring-1 focus-within:ring-[var(--muted-foreground)]",children:[(0,t.jsx)(p.Search,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("input",{type:"text",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]",placeholder:"Search tickets...",value:er,onChange:e=>tW(e.target.value)})]}),(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-50",onClick:()=>void tQ(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:tX,children:(0,t.jsx)(u.RefreshCw,{size:16,className:tX?"animate-spin":void 0})}),(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>{Z(!1),Y(!0)},title:"Tracker settings",children:(0,t.jsx)(m.Settings,{size:16})})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pb-2",children:[rk?(0,t.jsx)(eR,{label:eC,value:eT,options:ry,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:eA}):null,rj?(0,t.jsx)(eE,{label:"Status",values:eg,options:rh,activeClasses:"border-amber-500/30 bg-amber-500/10 text-amber-300",onChange:eh,emptyLabel:"All statuses"}):null,(0,t.jsx)(eE,{label:"Assignee",values:ex,options:rg,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:ef,emptyLabel:"All assignees"}),rC.length>0&&(0,t.jsx)(eE,{label:"Label",values:eO,options:rC,activeClasses:"border-pink-500/30 bg-pink-500/10 text-pink-400",onChange:eF,emptyLabel:"All labels"}),rw?(0,t.jsx)(eR,{label:"Workspace",value:eP,options:rv,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:eL}):null,(0,t.jsx)(eR,{label:"Sort",value:ez,options:[{value:"activity",label:"Updated At"},{value:"identifier",label:"Ticket ID"},{value:"status",label:"Status"},{value:"created",label:"Created At"}],activeClasses:"border-sky-500/30 bg-sky-500/10 text-sky-400",onChange:e=>eM(e)}),(0,t.jsx)("button",{type:"button",className:"rounded-full border border-[var(--card-border)] p-0.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",title:"desc"===eD?"Descending":"Ascending",onClick:()=>eU(e=>"desc"===e?"asc":"desc"),children:"desc"===eD?(0,t.jsx)(a.ArrowDown,{size:12}):(0,t.jsx)(n.ArrowUp,{size:12})}),re.length>0&&(f=re.length>0&&re.every(e=>tS.has(e.id)),(0,t.jsxs)("button",{type:"button",className:`flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px] transition-colors ${f?"border-[var(--primary)]/40 bg-[var(--primary)]/10 text-[var(--primary)]":"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"}`,title:f?"Clear selection":"Select all filtered tickets",onClick:()=>{f?tI(new Set):tI(new Set(re.map(e=>e.id)))},children:[f?(0,t.jsx)(i,{size:12}):(0,t.jsx)(x,{size:12}),f?"Clear":`Select all (${re.length})`]}))]})]}),(0,t.jsxs)(eX.DndContext,{sensors:tL,collisionDetection:eX.closestCenter,onDragStart:tJ,onDragEnd:tK,children:[(0,t.jsxs)("div",{className:"relative flex-1 min-h-0 flex flex-col",children:[(0,t.jsxs)("div",{ref:rJ,className:"flex-1 overflow-y-auto",children:[tX&&0===tH.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===tH.length?(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No tickets found."}):(0,t.jsxs)(t.Fragment,{children:[rt.map(e=>{let s=eG.has(e.status);return(0,t.jsxs)(r.default.Fragment,{children:[(0,t.jsx)(to,{status:e.status,categoryColor:tp[e.category]??"bg-zinc-400",count:e.items.length,collapsed:s,onToggle:()=>eH(t=>{let r=new Set(t);return r.has(e.status)?r.delete(e.status):r.add(e.status),r})}),!s&&(()=>{let s=t$?new Set(tT):null,a=new Map;for(let t of tv){let r=e.items.find(e=>t.task_ids.includes(e.id));r&&a.set(r.id,t)}let n=t$?tT.map(t=>e.items.find(e=>e.id===t)).filter(Boolean).map(e=>({id:e.id,identifier:e.identifier,title:e.title,status:eN[e.status]??e.status})):[],i=new Set;return e.items.map(l=>{if(s?.has(l.id))return l.id===tA&&t$?(0,t.jsx)(ta,{tickets:n,onConfirm:tU,onCancel:()=>{tR(!1),tE([]),tP(null)}},"__pending-group__"):null;let d=a.get(l.id);if(d&&!i.has(d.id)){i.add(d.id);let s=d.task_ids.map(t=>e.items.find(e=>e.id===t)).filter(Boolean);return(0,t.jsxs)(r.default.Fragment,{children:[(0,t.jsx)(e7,{groupId:d.id,name:d.name,count:s.length,collapsed:!!d.collapsed,selected:tb===d.id,projectSlug:o,onToggleCollapse:()=>tj(d.id,{collapsed:!d.collapsed}),onSelect:()=>tx({group:d.id,issue:null,run:null}),onUngroup:()=>{tk(d.id),tb===d.id&&tf({group:null})}}),!d.collapsed&&s.map((e,r)=>(0,t.jsx)(eY,{item:e,selected:t8?.id===e.id,pinned:eB.has(e.id),activeAgents:eZ.get(e.id),participants:eQ,draggable:!0,multiSelected:tS.has(e.id),treeConnector:r===s.length-1?"last":"mid",projectSlug:o,stats:e0.get(e.id),hideStatus:!0,estimate:t0.get(e.id)?.estimate,localLabels:t0.get(e.id)?.labels,labelDefinitions:t5,allLabels:t2,onToggleLabel:t=>rS(e.id,t),onAddLabel:rI,onSelect:t=>{t&&(t.metaKey||t.ctrlKey)?tD(e.id):tx({issue:e.id,run:null,group:null})},onTogglePin:()=>tG(e.id),rowActions:rO(e),showGroup:!eT},e.id))]},`group-${d.id}`)}return tq.has(l.id)?null:(0,t.jsx)(eY,{item:l,selected:t8?.id===l.id,pinned:eB.has(l.id),activeAgents:eZ.get(l.id),participants:eQ,draggable:!0,multiSelected:tS.has(l.id),projectSlug:o,stats:e0.get(l.id),hideStatus:!0,estimate:t0.get(l.id)?.estimate,localLabels:t0.get(l.id)?.labels,labelDefinitions:t5,allLabels:t2,onToggleLabel:e=>rS(l.id,e),onAddLabel:rI,onSelect:e=>{e&&(e.metaKey||e.ctrlKey)?tD(l.id):tx({issue:l.id,run:null,group:null})},onTogglePin:()=>tG(l.id),rowActions:rO(l),showGroup:!eT},l.id)})})()]},`sg-${e.status}`)}),tV?(0,t.jsx)("div",{ref:rq,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:tX?"Loading...":"Load more"}):null]}),(0,t.jsx)(td,{count:tS.size,onGroup:tB,onClear:()=>tI(new Set),onBulkRecap:rT,onBulkPrompt:rE,onBulkEstimate:rA,onBulkAddLabel:rP,onBulkRemoveLabel:rL,onBulkStatus:rD,statusOptions:rb,participants:eQ,labels:t2,onCreateLabel:rU,selectedMetadata:rF,statusUpdating:rz})]}),(0,t.jsx)(tc.JumpToLatestButton,{visible:rW&&tH.length>20,direction:"top",onClick:rH})]}),(0,t.jsx)(eX.DragOverlay,{dropAnimation:null,children:tz&&((b=tO.current.find(e=>e.id===tz))?(0,t.jsxs)("div",{className:"flex items-center gap-3 rounded-lg border border-[var(--primary)]/30 bg-[var(--card-bg)] px-4 py-2.5 text-sm shadow-xl backdrop-blur-sm",children:[(0,t.jsx)("span",{className:"w-24 shrink-0 whitespace-nowrap font-mono text-xs text-[var(--muted-foreground)]",children:b.identifier}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs font-medium text-[var(--foreground)]",children:b.title})]}):null)})]})]}),(0,t.jsx)(e$.ResizeHandle,{onResize:e=>et(t=>{let r=Math.max(280,Math.min(960,t+e));return(0,G.persistLinearTicketPanelWidth)(r),r})}),Q?(0,t.jsx)("div",{ref:tl,className:"absolute right-6 top-16 z-20 max-h-[80vh] overflow-y-auto rounded-2xl border border-[var(--card-border)] bg-[var(--background)] p-4 shadow-2xl",style:{width:"min(760px, calc(100vw - 32px))"},children:(0,t.jsx)(D,{projectSlug:o,scripts:ri,activeScriptId:rl,onSetActiveScriptId:rc,onSaveScript:ru,onDeleteScript:rp})}):null,(0,t.jsx)("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:rm?(0,t.jsx)(tm,{item:t8??{id:rm.issueId,identifier:rm.issueIdentifier,title:rm.issueTitle,status:rm.issueStatus,statusCategory:"todo",labels:[],trackerId:"",trackerType:e,assignee:rm.issueAssignee?{id:"",name:rm.issueAssignee}:void 0,updatedAt:rm.updatedAt,createdAt:rm.updatedAt,url:""},run:rm,participants:eQ,itemStatusOptions:rb,itemStatusUpdating:eK===rm.issueId,onItemStatusChange:r$,onBack:()=>tf({run:null})}):t_&&!t8?(0,t.jsx)(tt,{group:t_,items:tH,trackerType:e,participants:eQ,projectId:s,projectSlug:o,onUpdateName:e=>tj(t_.id,{name:e}),onDelete:async()=>{await tk(t_.id),tf({group:null})},onSelectItem:e=>tx({issue:e,group:null,run:null}),onRunCreated:e=>tx({run:e}),onSelectRun:e=>tx({run:e})}):t8?rf?null:0===eQ.length?(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Add an agent team so you can pick a ticket and start shipping."}):(0,t.jsx)(e4,{item:t8,trackerType:e,runs:rr,participants:eQ,projectId:s,projectSlug:o,itemStatusOptions:rb,itemStatusUpdating:eK===t8.id,onItemStatusChange:r$,activeSessionScriptLabel:rN,onOpenSessionScripts:()=>Z(!0),onStartScriptedSession:e=>r_(t8,e),createRun:rn,updateRun:ro,onRunCreated:e=>tx({run:e}),onSelectRun:e=>tx({run:e})},t8.id):(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Select a ticket from the list."})})]}),X&&(0,t.jsx)(ej,{trackerType:e,connected:y,user:T,clis:E,mcpConfigured:A,onConnect:P,onConnectWithKey:L,onDisconnect:z,onConfigureMcp:M,onClose:()=>Y(!1),projectId:s}),Q&&v?(0,t.jsx)("div",{className:"absolute inset-0 z-30 flex items-center justify-center bg-black/50 p-4",children:(0,t.jsx)("div",{ref:tl,className:"max-h-[85vh] w-full max-w-3xl overflow-y-auto rounded-2xl border border-[var(--card-border)] bg-[var(--background)] p-4 shadow-2xl",children:(0,t.jsx)(D,{projectSlug:o,scripts:ri,activeScriptId:rl,onSetActiveScriptId:rc,onSaveScript:ru,onDeleteScript:rp})})}):null,e1&&e5&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-40",onClick:()=>{e2(null),e6(null)}}),(0,t.jsxs)("div",{className:"fixed z-50 min-w-[180px] rounded border border-[var(--card-border)] bg-[var(--card-bg)] py-1 shadow-lg",style:{top:e5.top,left:e5.left},children:[(0,t.jsx)("div",{className:"px-3 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Pick an agent"}),eQ.map(e=>(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--card-bg)]",onClick:()=>void rB(e1,e),children:[(0,t.jsx)("img",{src:eV(e.id,e.color,20),alt:"",className:"h-5 w-5 shrink-0 rounded-full"}),(0,t.jsxs)("span",{className:"flex flex-col",children:[(0,t.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:e.name}),e.role?(0,t.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:e.role}):null]})]},e.id))]})]})]}):(0,t.jsx)(V.default,{trackerType:e,projectId:s??"",connected:y,onConnect:P,onConnectWithKey:L})}e.s(["default",()=>tx],471387)}]);