@mndrk/agx 2.4.9 → 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 (205) hide show
  1. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
  3. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  4. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
  5. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +1 -1
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.html +2 -2
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.rsc +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_head.segment.rsc +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_index.segment.rsc +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_tree.segment.rsc +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos/__PAGE__.segment.rsc +1 -1
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos.segment.rsc +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github.segment.rsc +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations.segment.rsc +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js.nft.json +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page_client-reference-manifest.js +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js.nft.json +1 -1
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page_client-reference-manifest.js +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.nft.json +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page_client-reference-manifest.js +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.nft.json +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +2 -2
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +2 -2
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +2 -2
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__8917bc4c._.js +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_22ab9b7c._.js +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7a31a76d._.js +3 -0
  153. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__9193284e._.js +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__c0bc6058._.js +7 -0
  155. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_76330306._.js +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_page_tsx_b5cec607._.js +5 -5
  158. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_9a67cfaf._.js +1 -1
  159. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_ProjectModal_tsx_c447494c._.js +3 -0
  160. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +1 -1
  161. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eec36ab6._.js +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_fed01721._.js +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  164. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  165. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
  166. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/static/chunks/23b7c6b08d8bf807.js +1 -0
  169. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{d6a9cc66254693b8.js → 46add4300ec4ed84.js} +1 -1
  170. package/cloud-runtime/standalone/apps/local/.next/static/chunks/5709a6f7c5c182d6.js +1 -0
  171. package/cloud-runtime/standalone/apps/local/.next/static/chunks/9ac96f1f33a266f9.js +1 -0
  172. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8b87c2521c519a1f.js → afad1102543847bf.js} +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{c9a2c4b55bb76f4f.js → b27f760849f14f13.js} +5 -5
  174. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b53629835d2a70f0.js +16 -0
  175. package/cloud-runtime/standalone/apps/local/.next/static/chunks/bb99cb03648e6fae.js +1 -0
  176. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c8c0c4b13e08bb14.js +1 -0
  177. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{3fce625820bc2bd4.js → de56d09bb0de7dd5.js} +2 -2
  178. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1585dd5f9ec4866a.js → e5fdfbbe9bae1f03.js} +1 -1
  179. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{90dd4ab03ab145d1.js → f007705fe5db26f1.js} +1 -1
  180. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/route.ts +4 -1
  181. package/cloud-runtime/standalone/apps/local/app/api/projects/payload.ts +23 -9
  182. package/cloud-runtime/standalone/apps/local/app/api/projects/route.ts +4 -1
  183. package/cloud-runtime/standalone/apps/local/app/page.tsx +2 -2
  184. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +1 -1
  185. package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -3
  186. package/cloud-runtime/standalone/apps/local/components/ProjectModal.tsx +111 -91
  187. package/cloud-runtime/standalone/apps/local/components/TrackerBoard.tsx +2 -2
  188. package/cloud-runtime/standalone/apps/local/components/project-repo-validation.ts +65 -0
  189. package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +1 -1
  190. package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +2 -2
  191. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +6 -2
  192. package/cloud-runtime/standalone/apps/local/components/tracking/TrackerSetup.tsx +2 -2
  193. package/cloud-runtime/standalone/apps/local/worker/index.js +3 -1
  194. package/package.json +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__636799fb._.js +0 -3
  196. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e02a457c._.js +0 -3
  197. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_ae1a134f._.js +0 -7
  198. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0d22a723b9b96e65.js +0 -1
  199. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1bc8cc9cbb99c1ed.js +0 -1
  200. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c352706a0ad7e35d.js +0 -1
  201. package/cloud-runtime/standalone/apps/local/.next/static/chunks/cf33cb29946990e3.js +0 -16
  202. package/cloud-runtime/standalone/apps/local/.next/static/chunks/e3bdd1e0f385114e.js +0 -1
  203. /package/cloud-runtime/standalone/apps/local/.next/static/{EGpM0P8xAEWKkoW-3Ib69 → x7w3oijN4B1r7IvTuL96T}/_buildManifest.js +0 -0
  204. /package/cloud-runtime/standalone/apps/local/.next/static/{EGpM0P8xAEWKkoW-3Ib69 → x7w3oijN4B1r7IvTuL96T}/_clientMiddlewareManifest.json +0 -0
  205. /package/cloud-runtime/standalone/apps/local/.next/static/{EGpM0P8xAEWKkoW-3Ib69 → x7w3oijN4B1r7IvTuL96T}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,558201,e=>{"use strict";let t=(0,e.i(363732).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);e.s(["Terminal",()=>t],558201)},906724,595807,e=>{"use strict";let t=(0,e.i(363732).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["default",()=>t],595807),e.s(["Loader2",()=>t],906724)},529471,e=>{"use strict";let t=(0,e.i(363732).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",()=>t],529471)},363732,e=>{"use strict";var t=e.i(935851);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),a=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var s={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:l=2,absoluteStrokeWidth:n,className:i="",children:d,iconNode:o,...c},u)=>(0,t.createElement)("svg",{ref:u,...s,width:a,height:a,stroke:e,strokeWidth:n?24*Number(l)/Number(a):l,className:r("lucide",i),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...o.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(d)?d:[d]])),n=(e,s)=>{let n=(0,t.forwardRef)(({className:n,...i},d)=>(0,t.createElement)(l,{ref:d,iconNode:s,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,n),...i}));return n.displayName=a(e),n};e.s(["default",()=>n],363732)},506420,(e,t,r)=>{t.exports=e.r(27944)},498027,e=>{"use strict";let t=(0,e.i(363732).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",()=>t],498027)},19035,e=>{"use strict";let t=(0,e.i(363732).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",()=>t],19035)},245110,e=>{"use strict";let t=(0,e.i(363732).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",()=>t],245110)},211464,e=>{"use strict";let t=(0,e.i(363732).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Circle",()=>t],211464)},318634,e=>{"use strict";var t=e.i(762281),r=e.i(935851);function a(e){return null===e.installed?"checking":e.installed?!e.authenticated&&e.authCmd?"needs-auth":"ready":"not-installed"}let s=[{id:"claude",label:"Claude Code",bin:"claude",description:"Recommended for the fastest AGX setup.",installCmd:"npm install -g @anthropic-ai/claude-code",docsUrl:"https://docs.anthropic.com/en/docs/claude-code/quickstart",recommended:!0,statusLabel:"Installed",authCheck:{cmd:'claude -p "say yes" 2>/dev/null',timeout:15e3},authCmd:{cmd:"claude",description:"Opens browser for Anthropic login"}},{id:"codex",label:"Codex",bin:"codex",description:"OpenAI's terminal coding agent.",installCmd:"npm install -g @openai/codex",docsUrl:"https://github.com/openai/codex",statusLabel:"Installed",authCheck:{cmd:"codex --version 2>/dev/null",timeout:5e3},authCmd:{cmd:"codex login --device-auth",description:"Device auth flow for OpenAI"}},{id:"gemini",label:"Gemini CLI",bin:"gemini",description:"Google's CLI for Gemini workflows.",installCmd:"npm install -g @google/gemini-cli",docsUrl:"https://github.com/google-gemini/gemini-cli",statusLabel:"Installed",authCheck:{cmd:'echo "hi" | gemini 2>/dev/null',timeout:15e3},authCmd:{cmd:"gemini",description:"Opens browser for Google login"}},{id:"ollama",label:"Ollama",bin:"ollama",description:"Run local models on your machine.",installCmd:"curl -fsSL https://ollama.com/install.sh | sh",docsUrl:"https://ollama.com/download",statusLabel:"Installed",authCheck:{cmd:"ollama list 2>/dev/null",timeout:5e3}},{id:"zai",label:"Z.AI",bin:"claude",description:"Use the Claude CLI with your Z.AI API key.",installCmd:"npm install -g @anthropic-ai/claude-code",docsUrl:"https://z.ai/",installNote:"Requires Claude Code plus a configured Z.AI API key.",statusLabel:"Via Claude CLI",authCheck:{cmd:'test -n "$ANTHROPIC_API_KEY"',timeout:5e3},authCmd:{cmd:"export ANTHROPIC_API_KEY=<your-key>",description:"Set your Z.AI API key"}}].map(e=>({id:e.id,name:e.label,description:e.description,installCmd:e.installCmd,docsUrl:e.docsUrl,installNote:e.installNote,recommended:e.recommended,authCmd:e.authCmd}));var l=e.i(506420),n=e.i(529471),i=e.i(211464),d=e.i(19035),o=e.i(498027),c=e.i(558201),u=e.i(906724);function m({currentStep:e,totalSteps:r}){return(0,t.jsx)("div",{className:"flex items-center gap-0",role:"progressbar","aria-valuenow":e,"aria-valuemin":1,"aria-valuemax":r,"aria-label":`Step ${e} of ${r}`,children:Array.from({length:r},(r,a)=>{let s=a+1,l=s===e,n=s<e;return(0,t.jsxs)("div",{className:"flex items-center",children:[a>0&&(0,t.jsx)("div",{className:`w-8 h-[2px] ${n?"bg-[var(--foreground)]":"bg-[var(--border)]"}`}),(0,t.jsx)("div",{className:`w-2.5 h-2.5 rounded-full transition-colors ${l?"bg-[var(--foreground)] ring-4 ring-[var(--foreground)]/10":n?"bg-[var(--foreground)]":"bg-[var(--border)]"}`})]},s)})})}function x({currentStep:e,totalSteps:r,children:a,footer:s,wide:l}){let n=l?"max-w-6xl":"max-w-2xl";return(0,t.jsxs)("div",{className:"h-screen w-full flex flex-col bg-[var(--background)]",children:[(0,t.jsx)("div",{className:"flex items-center justify-center pt-8 pb-4",children:(0,t.jsx)(m,{currentStep:e,totalSteps:r})}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto px-4 min-h-0",children:(0,t.jsx)("div",{className:`${n} mx-auto w-full py-6 h-full`,children:a})}),s&&(0,t.jsx)("div",{className:"border-t border-[var(--border)] bg-[var(--background)] px-4 py-4",children:(0,t.jsx)("div",{className:`${n} mx-auto w-full`,children:s})})]})}var h=e.i(539361);function p({text:e}){let[a,s]=(0,r.useState)(!1),l=(0,r.useCallback)(()=>{navigator.clipboard.writeText(e).then(()=>{s(!0),setTimeout(()=>s(!1),2e3)})},[e]);return(0,t.jsx)("button",{type:"button",onClick:l,className:"p-1.5 rounded-md hover:bg-[var(--muted)] transition-colors text-[var(--muted-foreground)] hover:text-[var(--foreground)]",title:"Copy command",children:a?(0,t.jsx)(n.Check,{className:"w-3.5 h-3.5 text-emerald-500"}):(0,t.jsx)(d.Copy,{className:"w-3.5 h-3.5"})})}function f({cli:e,onVerify:s,onRunInTerminal:l}){let d=a(e),[m,x]=(0,r.useState)("needs-auth"===d),[h,f]=(0,r.useState)(!1),[g,b]=(0,r.useState)(null),v="not-installed"===d||"needs-auth"===d,y=(0,r.useCallback)(async()=>{f(!0),b(null);try{let t=await fetch(`/api/providers/check/${e.id}`,{cache:"no-store"});if(!t.ok)return void b("Check failed");(await t.json()).authenticated?s?.(e.id):b("Not authenticated yet")}catch{b("Check failed")}finally{f(!1)}},[e.id,s]),j="not-installed"===d?e.installCmd:e.authCmd?.cmd;return(0,t.jsxs)("div",{className:"border border-[var(--card-border)] rounded-lg overflow-hidden",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>v&&x(!m),className:`w-full flex items-center gap-2.5 px-3 py-2 transition-colors text-left ${v?"hover:bg-[var(--item-hover-bg)] cursor-pointer":"cursor-default"}`,children:[(0,t.jsx)("div",{className:"shrink-0",children:"checking"===d?(0,t.jsx)(i.Circle,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)] animate-pulse"}):"ready"===d?(0,t.jsx)("div",{className:"w-4 h-4 rounded-full bg-emerald-100 dark:bg-emerald-900/30 flex items-center justify-center",children:(0,t.jsx)(n.Check,{className:"w-2.5 h-2.5 text-emerald-600 dark:text-emerald-400"})}):"needs-auth"===d?(0,t.jsx)("div",{className:"w-4 h-4 rounded-full bg-amber-100 dark:bg-amber-900/30 flex items-center justify-center",children:(0,t.jsx)(i.Circle,{className:"w-2.5 h-2.5 text-amber-600 dark:text-amber-400"})}):(0,t.jsx)(i.Circle,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)]"})}),(0,t.jsx)("span",{className:"flex-1 min-w-0 text-[13px] font-semibold text-[var(--foreground)] truncate",children:e.name}),"ready"===d&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-emerald-600 dark:text-emerald-400",children:"Ready"}),"needs-auth"===d&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-amber-600 dark:text-amber-400",children:"Needs auth"}),"not-installed"===d&&e.recommended&&(0,t.jsx)("span",{className:"text-[10px] font-medium text-[var(--muted-foreground)]",children:"Recommended"}),v&&(0,t.jsx)(o.ChevronDown,{className:`w-3.5 h-3.5 text-[var(--muted-foreground)] transition-transform ${m?"rotate-180":""}`})]}),m&&v&&j&&(0,t.jsxs)("div",{className:"px-3 pb-2.5 pt-1 border-t border-[var(--card-border)] flex items-center gap-1.5",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>l?.(j),className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-[11px] font-medium rounded-md bg-[var(--foreground)] text-[var(--background)] hover:opacity-90 transition-colors",children:[(0,t.jsx)(c.Terminal,{className:"w-3 h-3"}),"Run"]}),"needs-auth"===d&&(0,t.jsxs)("button",{type:"button",onClick:y,disabled:h,className:"inline-flex items-center gap-1 px-2.5 py-1 text-[11px] font-medium rounded-md border border-[var(--card-border)] text-[var(--foreground)] hover:bg-[var(--secondary)] transition-colors disabled:opacity-60",children:[h&&(0,t.jsx)(u.Loader2,{className:"w-3 h-3 animate-spin"}),h?"Checking":"Verify"]}),(0,t.jsx)(p,{text:j}),g&&(0,t.jsx)("span",{className:"text-[10px] text-amber-600 dark:text-amber-400 ml-auto",children:g})]})]})}function g({clis:e,readyState:a,authenticatedCount:s,totalCount:l,onVerifySuccess:n,onNext:i}){let d="ready"===a,o=(0,r.useRef)(null),m=(0,r.useCallback)(e=>{o.current?.sendCommand(e)},[]);return(0,t.jsxs)(x,{currentStep:1,totalSteps:2,wide:!0,footer:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-[13px] text-[var(--muted-foreground)]",children:(0,t.jsxs)("span",{className:d?"text-emerald-600 dark:text-emerald-400":"",children:[s,"/",l," providers ready"]})}),(0,t.jsx)("button",{type:"button",onClick:i,disabled:!d,className:"inline-flex items-center gap-2 px-6 py-2.5 bg-[var(--foreground)] text-[var(--background)] text-[14px] font-semibold rounded-lg hover:opacity-90 transition-all disabled:opacity-40 disabled:cursor-not-allowed",children:"Next"})]}),children:[(0,t.jsxs)("div",{className:"text-center mb-8",children:[(0,t.jsx)("h1",{className:"text-[24px] font-bold text-[var(--foreground)] tracking-tight",children:"Connect a Provider"}),(0,t.jsxs)("p",{className:"mt-2 text-[14px] text-[var(--muted-foreground)] leading-relaxed",children:["AGX runs AI-assisted dev work across your tickets, repos, and PRs.",(0,t.jsx)("br",{}),"Connect one or more providers to power the agents that do the work."]})]}),(0,t.jsxs)("div",{className:"flex gap-6 min-h-0 items-start",children:[(0,t.jsxs)("div",{className:"w-[280px] shrink-0",children:["checking"===a&&(0,t.jsxs)("div",{className:"text-center py-8",children:[(0,t.jsx)(u.Loader2,{className:"w-6 h-6 animate-spin text-[var(--muted-foreground)] mx-auto"}),(0,t.jsx)("p",{className:"mt-3 text-[13px] text-[var(--muted-foreground)]",children:"Detecting installed providers..."})]}),"error"===a&&(0,t.jsx)("div",{className:"text-center py-8",children:(0,t.jsx)("p",{className:"text-[14px] text-[var(--muted-foreground)]",children:"Could not detect providers. Please reload."})}),("needs-setup"===a||"ready"===a)&&(0,t.jsx)("div",{className:"space-y-1.5",children:e.map(e=>(0,t.jsx)(f,{cli:e,onVerify:n,onRunInTerminal:m},e.id))})]}),(0,t.jsxs)("div",{className:"flex-1 min-w-0 h-[420px] flex flex-col rounded-xl border border-[var(--card-border)] overflow-hidden bg-[#1e1e1e]",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-[var(--card-border)] bg-[var(--secondary)] shrink-0",children:[(0,t.jsx)(c.Terminal,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Terminal"})]}),(0,t.jsx)("div",{className:"flex-1 min-h-0",children:(0,t.jsx)(h.default,{ref:o,tabId:"setup-provider"})})]})]})]})}var b=e.i(245110);let v=(0,e.i(363732).default)("plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]),y=[{id:"linear",name:"Linear",description:"So your Linear tickets show up in AGX and agents can move them through to a PR.",docsUrl:"https://linear.app/docs/mcp"}],j=[{id:"claude",label:"Claude Code",launchCmd:"claude"},{id:"codex",label:"Codex",launchCmd:"codex"},{id:"gemini",label:"Gemini CLI",launchCmd:"gemini"}];function N({onFinish:e,onBack:a}){let[s,l]=(0,r.useState)(!0),[i,d]=(0,r.useState)({}),[o,m]=(0,r.useState)({}),[p,f]=(0,r.useState)(null),[g,N]=(0,r.useState)(null),k=(0,r.useRef)(null),C=(0,r.useCallback)(e=>{k.current?.sendCommand(e)},[]),w=(0,r.useCallback)(async()=>{try{let[e,t]=await Promise.all([fetch("/api/linear/status"),fetch("/api/linear/mcp-setup")]),r=await e.json(),a=await t.json();d(r.clis??{}),m(a.configured??{})}catch{}finally{l(!1)}},[]);(0,r.useEffect)(()=>{w()},[w]);let A=(0,r.useCallback)(async e=>{f(e),N(null);try{let t=await fetch("/api/linear/mcp-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cli:e})});if(t.ok)await w();else{let e=await t.json().catch(()=>({}));N(e.error||"Failed to configure MCP")}}catch{N("Failed to configure MCP")}finally{f(null)}},[w]),L=j.filter(e=>i[e.id]),I=L.some(e=>o[e.id]);return(0,t.jsxs)(x,{currentStep:2,totalSteps:2,wide:!0,footer:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("button",{type:"button",onClick:a,className:"text-[14px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:"Back"}),(0,t.jsx)("button",{type:"button",onClick:e,className:"inline-flex items-center gap-2 px-6 py-2.5 bg-[var(--foreground)] text-[var(--background)] text-[14px] font-semibold rounded-lg hover:opacity-90 transition-all",children:I?"Finish":"Skip"})]}),children:[(0,t.jsxs)("div",{className:"text-center mb-8",children:[(0,t.jsx)("h1",{className:"text-[24px] font-bold text-[var(--foreground)] tracking-tight",children:"Configure MCP Servers"}),(0,t.jsx)("p",{className:"mt-2 text-[14px] text-[var(--muted-foreground)] leading-relaxed",children:"MCP servers let your agents interact with external tools. After registering a server below, launch your CLI in the terminal to complete the OAuth login."})]}),(0,t.jsxs)("div",{className:"flex gap-6 min-h-0 items-start",children:[(0,t.jsx)("div",{className:"w-[380px] shrink-0 space-y-6",children:s?(0,t.jsxs)("div",{className:"text-center py-8",children:[(0,t.jsx)(u.Loader2,{className:"w-6 h-6 animate-spin text-[var(--muted-foreground)] mx-auto"}),(0,t.jsx)("p",{className:"mt-3 text-[13px] text-[var(--muted-foreground)]",children:"Checking MCP configuration..."})]}):(0,t.jsxs)(t.Fragment,{children:[y.map(e=>(0,t.jsxs)("div",{className:"border border-[var(--card-border)] rounded-lg overflow-hidden",children:[(0,t.jsxs)("div",{className:"px-4 py-3 flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-8 h-8 rounded-lg bg-[var(--secondary)] flex items-center justify-center",children:(0,t.jsx)(v,{className:"w-4 h-4 text-[var(--foreground)]"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[14px] font-semibold text-[var(--foreground)]",children:e.name}),I&&(0,t.jsx)("span",{className:"text-[11px] font-medium text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/20 px-1.5 py-0.5 rounded",children:"Registered"})]}),(0,t.jsx)("p",{className:"text-[12px] text-[var(--muted-foreground)]",children:e.description})]})]}),(0,t.jsxs)("div",{className:"border-t border-[var(--card-border)] px-4 py-3 space-y-2",children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] mb-2",children:"Register & authenticate per CLI"}),j.map(e=>{let r=i[e.id],a=o[e.id],s=p===e.id;return(0,t.jsxs)("div",{className:`flex items-center justify-between rounded-md border border-[var(--card-border)] px-3 py-2.5 ${!r?"opacity-40":""}`,children:[(0,t.jsx)("span",{className:"text-[13px] text-[var(--foreground)]",children:e.label}),r?a?(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-emerald-600 dark:text-emerald-400",children:[(0,t.jsx)(n.Check,{className:"w-3.5 h-3.5"}),"Registered"]}),(0,t.jsx)("button",{type:"button",onClick:()=>C(e.launchCmd),className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-[11px] font-medium rounded-md border border-[var(--card-border)] hover:bg-[var(--secondary)] transition-colors",title:`Launch ${e.label} to authenticate`,children:"Launch & authenticate"})]}):(0,t.jsx)("button",{type:"button",onClick:()=>A(e.id),disabled:s,className:"inline-flex items-center gap-1.5 px-3 py-1 text-[12px] font-medium rounded-md border border-[var(--card-border)] hover:bg-[var(--secondary)] transition-colors disabled:opacity-50",children:s?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Loader2,{className:"w-3 h-3 animate-spin"}),"Registering..."]}):"Register"}):(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:"Not installed"})]},e.id)}),g&&(0,t.jsx)("p",{className:"text-[12px] text-red-500 dark:text-red-400 mt-1",children:g})]}),(0,t.jsx)("div",{className:"border-t border-[var(--card-border)] px-4 py-2.5",children:(0,t.jsxs)("a",{href:e.docsUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-[12px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:["Learn more about ",e.name," MCP",(0,t.jsx)(b.ExternalLink,{className:"w-3 h-3"})]})})]},e.id)),0===L.length&&(0,t.jsx)("div",{className:"text-center py-4",children:(0,t.jsx)("p",{className:"text-[13px] text-[var(--muted-foreground)]",children:"No CLI providers detected. Go back and install a provider first, or skip this step."})}),(0,t.jsxs)("p",{className:"text-[11px] leading-relaxed text-[var(--muted-foreground)]",children:["Registering writes the MCP server into the CLI config. You still need to launch the CLI (right) and complete the interactive OAuth flow (usually ",(0,t.jsx)("code",{className:"text-[var(--foreground)]",children:"/mcp"}),")."]})]})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0 h-[500px] flex flex-col rounded-xl border border-[var(--card-border)] overflow-hidden bg-[#1e1e1e]",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-[var(--card-border)] bg-[var(--secondary)] shrink-0",children:[(0,t.jsx)(c.Terminal,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Terminal"})]}),(0,t.jsx)("div",{className:"flex-1 min-h-0",children:(0,t.jsx)(h.default,{ref:k,tabId:"setup-mcp"})})]})]})]})}function k(){let e=function(){let[e,t]=(0,r.useState)("checking"),[l,n]=(0,r.useState)(s.map(e=>({...e,installed:null,authenticated:null})));(0,r.useEffect)(()=>{let e=!1;return(async()=>{try{let r=await fetch("/api/providers",{cache:"no-store"});if(e)return;if(!r.ok)return void t("error");let l=await r.json(),i=Array.isArray(l?.providers)?l.providers:[],d=s.map(e=>{let t=i.find(t=>t?.id===e.id);return{...e,installed:t?.installed??!1,authenticated:t?.authenticated??!1}});e||(n(d),t(d.some(e=>"ready"===a(e))?"ready":"needs-setup"))}catch{e||t("error")}})(),()=>{e=!0}},[]);let i=(0,r.useCallback)(e=>{n(r=>{let s=r.map(t=>t.id===e?{...t,authenticated:!0}:t);return s.some(e=>"ready"===a(e))&&t("ready"),s})},[]),d=(0,r.useMemo)(()=>l.filter(e=>"needs-auth"===a(e)).map(e=>e.id),[l]),o=d.join(",");(0,r.useEffect)(()=>{if("checking"===e||0===d.length)return;let t=new AbortController,r=new Map;return d.forEach(function e(a){if(t.signal.aborted)return;let s=setTimeout(async()=>{if(!t.signal.aborted){try{let e=await fetch(`/api/providers/check/${a}`,{cache:"no-store",signal:t.signal});if(t.signal.aborted)return;if(e.ok){let t=await e.json();if(t.authenticated)return void i(a);if(!t.installed)return void n(e=>e.map(e=>e.id===a?{...e,installed:!1,authenticated:!1}:e))}}catch{if(t.signal.aborted)return}t.signal.aborted||e(a)}},5e3);r.set(a,s)}),()=>{t.abort(),r.forEach(e=>clearTimeout(e))}},[e,o,i]);let c=l.filter(e=>"ready"===a(e)).length;return{readyState:e,clis:l,authenticatedCount:c,totalCount:l.length,handleVerifySuccess:i}}(),n=function(){let e=(0,l.useRouter)(),[t,a]=(0,r.useState)(1),s=(0,r.useCallback)(()=>{a(e=>Math.min(e+1,2))},[]);return{step:t,goNext:s,goBack:(0,r.useCallback)(()=>{a(e=>Math.max(e-1,1))},[]),finish:(0,r.useCallback)(()=>{e.push("/")},[e])}}();return(0,t.jsxs)(t.Fragment,{children:[1===n.step&&(0,t.jsx)(g,{clis:e.clis,readyState:e.readyState,authenticatedCount:e.authenticatedCount,totalCount:e.totalCount,onVerifySuccess:e.handleVerifySuccess,onNext:n.goNext}),2===n.step&&(0,t.jsx)(N,{onBack:n.goBack,onFinish:n.finish})]})}e.s(["default",()=>k],318634)}]);
@@ -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)}]);