@mndrk/agx 2.0.55 → 2.0.56

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 (504) hide show
  1. package/README.md +5 -0
  2. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  3. package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +1 -0
  4. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  6. package/cloud-runtime/standalone/apps/local/.next/required-server-files.json +5 -0
  7. package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +8 -0
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js +2 -2
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +3 -2
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +17 -7
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +13 -13
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js +2 -2
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +4 -4
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +5 -5
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +5 -5
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +2 -2
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/app-paths-manifest.json +3 -0
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/build-manifest.json +18 -0
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/next-font-manifest.json +11 -0
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/react-loadable-manifest.json +1 -0
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/server-reference-manifest.json +4 -0
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js +14 -0
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.map +5 -0
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -0
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +3 -0
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +2 -2
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +3 -3
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  215. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  216. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  217. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  219. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  220. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  221. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  222. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  225. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  226. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  227. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  228. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  229. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  230. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  231. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  232. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  233. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  234. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +1 -0
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__09joc_o._.js +1 -1
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g50c6p._.js +237 -0
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0o315az._.js +1 -1
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0t2jk2r._.js +2 -2
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tdixb0._.js +49 -0
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0gvjvx7._.js → [root-of-the-server]__0xdp_8-._.js} +25 -25
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0y42h_~._.js +2 -2
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~fjhfa._.js +3 -0
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_12yasaj._.js +9 -0
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_022nz2u._.js +3 -0
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_0i1av_r._.js +11 -10
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0yvelwy.js +3 -0
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/02dz_local__next-internal_server_app_projects_[slug]_folders_page_actions_03fg4j9.js +3 -0
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0qzjdog._.js +3 -0
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0a-mbbj._.js +3 -0
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0e2_v_.._.js +3 -0
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0w3hl3p._.js +3 -0
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__07johgg._.js +3 -0
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__08d5c~o._.js +3 -0
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0_n~ybp._.js +3 -0
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0fl7_-o._.js +18 -0
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0h~rb5r._.js +3 -0
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r3w68h._.js +18 -0
  258. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0x7k~pk._.js +3 -0
  259. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0hd2vo4._.js → [root-of-the-server]__0y8j6el._.js} +2 -2
  260. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0yme9fy._.js +3 -0
  261. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~7q5sw._.js +3 -0
  262. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13eqcxp._.js +3 -0
  263. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0s~0ump._.js → _064h43p._.js} +2 -2
  264. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0742x_.._.js +3 -0
  265. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_09b42z9._.js → _09~glsn._.js} +2 -2
  266. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +3 -0
  267. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0fwy5tm._.js +7 -0
  268. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ndrb_0._.js +2 -2
  269. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +3 -0
  270. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ufdu.z._.js +7 -0
  271. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_03rf_sb._.js → _0wk3skw._.js} +2 -2
  272. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yffwm4._.js +2 -2
  273. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +3 -0
  274. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_04hvzn_._.js +3 -0
  275. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_4hk8x._.js +3 -0
  276. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +1 -1
  277. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +3 -0
  278. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0h3mfm7._.js +3 -0
  279. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0nvzo3y._.js +3 -0
  280. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +1 -1
  281. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_execution-graph_page_tsx_0tn2sx9._.js +2 -2
  282. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_0ju618z._.js +3 -0
  283. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_graph_[taskId]_page_tsx_0bctfd-._.js +1 -1
  284. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
  285. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +2 -2
  286. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
  287. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_page_tsx_06czvz-._.js +3 -0
  288. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +12 -12
  289. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_orphans_page_tsx_0sdv.11._.js +4 -4
  290. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TaskCard_tsx_0e35_z5._.js +6 -6
  291. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +3 -3
  292. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +4 -4
  293. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
  294. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mk0s0o.js +4 -0
  295. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  296. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  297. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
  298. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +4 -0
  299. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  300. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  301. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  302. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  303. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-_ukhpeg429c.js +16 -0
  304. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-olq~7zw3wjy.js +1 -0
  305. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0142ce0jj3j7r.js → 0-vo_x2cxmjm3.js} +1 -1
  306. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.4d8rshxivwh.js +20 -0
  307. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 00lise4d-u8d1.js} +1 -1
  308. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0~apd0q5_i88z.js → 02p3n7faotpr9.js} +2 -2
  309. package/cloud-runtime/standalone/apps/local/.next/static/chunks/02zcxdul-1jaf.js +28 -0
  310. package/cloud-runtime/standalone/apps/local/.next/static/chunks/055bzj5jfgzr0.js +1 -0
  311. package/cloud-runtime/standalone/apps/local/.next/static/chunks/05c-~4v_jrblf.css +1 -0
  312. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07646a0h94826.js +3 -0
  313. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08~pgzjb13k_v.js +5 -0
  314. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09wzd7y~tk-3~.js +1 -0
  315. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0px65ynyk3t1d.js → 0bchtyu6m.2yv.js} +7 -7
  316. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0brmd4~76pthy.js +20 -0
  317. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +1 -0
  318. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0.a4-dh~x9sa3.js → 0hudzktaaxr4g.js} +2 -2
  319. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{09-_2lcshmjl5.js → 0hzq698w6f4m6.js} +1 -1
  320. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0i.su2yr26wb6.js +37 -0
  321. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jonp-o8lh-4j.js +1 -0
  322. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jsbvcyub73d9.js +1 -0
  323. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l2pt2td_87wr.js +5 -0
  324. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +1 -0
  325. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lgb.0~i1xvv-.js +1 -0
  326. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lkal3uvr6_~2.js +1 -0
  327. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mvqoz13v0o2a.js +5 -0
  328. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0o9cxba_5mv2c.js +5 -0
  329. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p7s38p3bcffh.js +1 -0
  330. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0q2dgbluvgxf2.js +16 -0
  331. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +1 -0
  332. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0h_bwlg~kk8lz.js → 0rey9zfvm3yhd.js} +2 -2
  333. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ucg8e2wkd8gf.js +1 -0
  334. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0uve8xrt~0a2e.js +1 -0
  335. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0x_pewz9npq~q.js +1 -0
  336. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +1 -0
  337. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0ov5lu0tz2o2e.js → 104xjvrf6y-zq.js} +1 -1
  338. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0rm7v.1y6qcni.js → 11-u35xqxu~i-.js} +1 -1
  339. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +1 -0
  340. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0826uh6nmsi5l.js → 1503vb7lb6.g1.js} +1 -1
  341. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0o0hwfzwwty4b.js → 15jlly_p-g4c8.js} +2 -2
  342. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16nozeadjid9-.js +5 -0
  343. package/cloud-runtime/standalone/apps/local/.next/static/chunks/177-q0wwdi0qe.js +1 -0
  344. package/cloud-runtime/standalone/apps/local/agx-server.js +4055 -0
  345. package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +10 -2
  346. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.ts +16 -0
  347. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +8 -1
  348. package/cloud-runtime/standalone/apps/local/app/globals.css +67 -5
  349. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/folders/page.tsx +25 -0
  350. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +19 -5
  351. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/objectives/[objectiveId]/page.tsx +7 -2
  352. package/cloud-runtime/standalone/apps/local/bundled-server.ts +45 -0
  353. package/cloud-runtime/standalone/apps/local/components/ActionToolbar.tsx +5 -2
  354. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +35 -3
  355. package/cloud-runtime/standalone/apps/local/components/ContextMenu.tsx +2 -2
  356. package/cloud-runtime/standalone/apps/local/components/FloatingPanel.tsx +36 -14
  357. package/cloud-runtime/standalone/apps/local/components/IconButton.tsx +10 -2
  358. package/cloud-runtime/standalone/apps/local/components/KanbanBoard.tsx +84 -3
  359. package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +382 -13
  360. package/cloud-runtime/standalone/apps/local/components/LogTimeline.tsx +4 -1
  361. package/cloud-runtime/standalone/apps/local/components/NowRunningPanel.tsx +3 -1
  362. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +46 -6
  363. package/cloud-runtime/standalone/apps/local/components/SearchCombo.tsx +3 -3
  364. package/cloud-runtime/standalone/apps/local/components/SortableTaskCard.tsx +21 -3
  365. package/cloud-runtime/standalone/apps/local/components/StatusCircle.tsx +3 -3
  366. package/cloud-runtime/standalone/apps/local/components/TaskCard.tsx +51 -1
  367. package/cloud-runtime/standalone/apps/local/components/chat-ui/ChatContainer.tsx +15 -2
  368. package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +3 -3
  369. package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +76 -9
  370. package/cloud-runtime/standalone/apps/local/components/graph/ExecutionGraphPanel.tsx +4 -1
  371. package/cloud-runtime/standalone/apps/local/components/graph/GraphFirstView.tsx +6 -2
  372. package/cloud-runtime/standalone/apps/local/components/graph/NodeDetailPanel.tsx +29 -14
  373. package/cloud-runtime/standalone/apps/local/components/graph/NodeInspector.tsx +9 -6
  374. package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +16 -16
  375. package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +856 -0
  376. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveActivityTimeline.tsx +40 -32
  377. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +172 -49
  378. package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +4 -4
  379. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +347 -168
  380. package/cloud-runtime/standalone/apps/local/components/projects/ProjectSearchBar.tsx +4 -2
  381. package/cloud-runtime/standalone/apps/local/components/projects/ScheduledTasksSummaryCard.tsx +19 -19
  382. package/cloud-runtime/standalone/apps/local/components/projects/TeamsSummaryCard.tsx +10 -10
  383. package/cloud-runtime/standalone/apps/local/components/projects/TeamsView.tsx +50 -50
  384. package/cloud-runtime/standalone/apps/local/components/projects/WorkingNowCard.tsx +12 -12
  385. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectiveCard.tsx +13 -10
  386. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectivesSection.tsx +7 -7
  387. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathCard.tsx +2 -2
  388. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathsSection.tsx +9 -9
  389. package/cloud-runtime/standalone/apps/local/components/scheduling/ScheduleConditionPicker.tsx +3 -3
  390. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +211 -77
  391. package/cloud-runtime/standalone/apps/local/components/terminal/TerminalSessionList.tsx +3 -1
  392. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +72 -21
  393. package/cloud-runtime/standalone/apps/local/hooks/useInputCapabilities.ts +74 -0
  394. package/cloud-runtime/standalone/apps/local/lib/app-config.ts +35 -0
  395. package/cloud-runtime/standalone/apps/local/lib/pty-manager.ts +5 -1
  396. package/cloud-runtime/standalone/apps/local/lib/terminal-server.ts +182 -0
  397. package/cloud-runtime/standalone/apps/local/next.config.ts +2 -1
  398. package/cloud-runtime/standalone/apps/local/package.json +2 -2
  399. package/cloud-runtime/standalone/apps/local/playwright.config.ts +8 -0
  400. package/cloud-runtime/standalone/apps/local/server.js +1 -1
  401. package/cloud-runtime/standalone/apps/local/server.ts +14 -158
  402. package/cloud-runtime/standalone/apps/local/src/graph/types.ts +2 -0
  403. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/cron.ts +11 -0
  404. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +325 -88
  405. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +20 -0
  406. package/cloud-runtime/standalone/apps/local/state/windowState.ts +11 -0
  407. package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +65 -0
  408. package/cloud-runtime/standalone/apps/local/worker/index.js +0 -4
  409. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  410. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  411. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  412. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  413. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  414. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  415. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  416. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  417. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  418. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  419. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.node +0 -0
  420. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.pdb +0 -0
  421. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  422. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  423. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.dll +0 -0
  424. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.pdb +0 -0
  425. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  426. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  427. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  428. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  429. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  430. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  431. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
  432. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.pdb +0 -0
  433. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
  434. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  435. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
  436. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.pdb +0 -0
  437. package/lib/cli/daemon.js +13 -2
  438. package/lib/cli/onboarding.js +5 -6
  439. package/lib/cli/runCli.js +1 -1
  440. package/lib/cloud/client.js +1 -1
  441. package/lib/commands/chat.js +37 -11
  442. package/lib/commands/daemonBoard.js +19 -13
  443. package/lib/config/cloudConfig.js +1 -1
  444. package/lib/orchestrator/httpClient.js +1 -1
  445. package/lib/prompts/templates.js +8 -9
  446. package/package.json +1 -1
  447. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__01ol22y._.js +0 -3
  448. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__088h0r2._.js +0 -3
  449. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__094z9yf._.js +0 -9
  450. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0avz575._.js +0 -49
  451. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0xxf2a0.js +0 -3
  452. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0xd_mxu._.js +0 -3
  453. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__044xm0q._.js +0 -3
  454. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__066ay_e._.js +0 -3
  455. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__09smg3p._.js +0 -18
  456. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0iix1sf._.js +0 -3
  457. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r54zr9._.js +0 -3
  458. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0s8z2_c._.js +0 -18
  459. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w1mm2j._.js +0 -3
  460. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0wq3ukc._.js +0 -3
  461. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13h-0om._.js +0 -3
  462. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03-mlx0._.js +0 -7
  463. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ag3.tl._.js +0 -7
  464. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0dh_hx0._.js +0 -3
  465. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0h8cbsi._.js +0 -3
  466. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0i1ffhz._.js +0 -3
  467. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0nlki7b._.js +0 -3
  468. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_q01av._.js +0 -3
  469. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0eh.4j7._.js +0 -3
  470. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0qaowqy._.js +0 -3
  471. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0s0iy2_._.js +0 -3
  472. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0zr-_na._.js +0 -3
  473. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_10qsqky._.js +0 -3
  474. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.bv3h68wo33z.js +0 -1
  475. package/cloud-runtime/standalone/apps/local/.next/static/chunks/016.x9zt9~rsh.js +0 -16
  476. package/cloud-runtime/standalone/apps/local/.next/static/chunks/027-6dwgpb0cy.js +0 -1
  477. package/cloud-runtime/standalone/apps/local/.next/static/chunks/031720jijg_th.js +0 -1
  478. package/cloud-runtime/standalone/apps/local/.next/static/chunks/03m1xs0rztynh.js +0 -16
  479. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07o~9mm~xds_b.js +0 -1
  480. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08zgoptetnxjj.css +0 -1
  481. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09_yj-9nfh48m.js +0 -1
  482. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09c7ssmgohk7l.js +0 -1
  483. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0awbe2r3qazge.css +0 -1
  484. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0dro-bz6f72z0.js +0 -1
  485. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gbunx8z.~i4x.js +0 -5
  486. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ge81r~ap.u7n.js +0 -28
  487. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ghg5160qeazw.js +0 -5
  488. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gl_8hdxl5qnd.js +0 -37
  489. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0g~v8p6_pc46-.js +0 -1
  490. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jb4f8425s.-2.js +0 -1
  491. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kukkarp4un0o.js +0 -1
  492. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0m.2b-cekea8b.js +0 -1
  493. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pt8_y9asrg~7.js +0 -1
  494. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0wyg4lymaq0hg.js +0 -3
  495. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xl~1ux2f~rcu.js +0 -1
  496. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y7-eze-w7~b4.js +0 -5
  497. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y8e--tok1214.js +0 -5
  498. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0yy~0bgsz~o6-.js +0 -1
  499. package/cloud-runtime/standalone/apps/local/.next/static/chunks/100xrwo-45nrg.js +0 -20
  500. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14h3qxwuo~1q9.js +0 -20
  501. package/cloud-runtime/standalone/apps/local/.next/static/chunks/17oesq5eds3xi.js +0 -1
  502. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_buildManifest.js +0 -0
  503. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_clientMiddlewareManifest.js +0 -0
  504. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[657613,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(285320),f=a.i(508869),g=a.i(523321),h=a.i(166621),i=a.i(971382);let j=(0,a.i(831709).default)("clock-3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6h4",key:"135r8i"}]]);var k=a.i(552605),l=a.i(349692),m=a.i(737313),n=a.i(542341),o=a.i(489461),p=a.i(985339),q=a.i(824179);function r({projectId:a}){let e=(0,d.useRouter)(),f=(0,d.usePathname)(),g=(0,c.useRef)(null),h=(0,c.useRef)(null),[s,t]=(0,c.useState)(""),[u,v]=(0,c.useState)([]),[w,x]=(0,c.useState)(0),[y,z]=(0,c.useState)(!1),[A,B]=(0,c.useState)(null),[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(0),[G,H]=(0,c.useState)(new Set),I=s.trim(),J=(0,c.useMemo)(()=>u.map(a=>({...a,visibleResults:G.has(a.id)?a.results:a.results.slice(0,3),hiddenCount:Math.max(0,a.results.length-3)})),[G,u]),K=(0,c.useMemo)(()=>J.flatMap(a=>a.visibleResults),[J]),L=(0,c.useMemo)(()=>K.map(a=>`${a.kind}:${a.id}`),[K]),M=(0,c.useCallback)(()=>{t(""),v([]),x(0),B(null),z(!1),F(0)},[]),N=(0,c.useCallback)(a=>{M(),D(!1),e.push(a.href)},[M,e]);(0,c.useEffect)(()=>{M(),D(!1),H(new Set)},[M,f]),(0,c.useEffect)(()=>{let a=a=>{g.current?.contains(a.target)||D(!1)};return window.addEventListener("pointerdown",a),()=>window.removeEventListener("pointerdown",a)},[]),(0,c.useEffect)(()=>{let a=a=>{(a.metaKey||a.ctrlKey)&&"k"===a.key.toLowerCase()&&(a.preventDefault(),h.current?.focus(),h.current?.select())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[]),(0,c.useEffect)(()=>{C&&F(0)},[C,u]),(0,c.useEffect)(()=>{if(!I||I.length<2){v([]),x(0),B(null),z(!1),H(new Set);return}let b=!1;z(!0);let c=window.setTimeout(()=>{(async()=>{try{let c=new URLSearchParams({q:I}),d=await fetch(`/api/projects/${encodeURIComponent(a)}/search?${c.toString()}`,{cache:"no-store"}),e=await d.json().catch(()=>null);if(b)return;if(!d.ok){let a=e&&"object"==typeof e&&"error"in e?String(e.error):"Search failed";v([]),x(0),B(a);return}v(Array.isArray(e.sections)?e.sections:[]),x("number"==typeof e.total?e.total:0),B(null),H(new Set)}catch(a){if(b)return;console.error("Project search failed",a),v([]),x(0),B("Search failed")}finally{b||z(!1)}})()},220);return()=>{b=!0,window.clearTimeout(c)}},[I,a]);let O=C&&(I.length>0||y||null!==A),P=K.length>0?K[Math.max(0,Math.min(E,K.length-1))]:null,Q=(0,c.useCallback)(a=>{H(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);return(0,b.jsxs)("div",{ref:g,className:"relative w-full max-w-xl",children:[(0,b.jsxs)("div",{className:"group/search relative",children:[(0,b.jsx)(n.Search,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--app-shell-soft-text)] transition-colors group-focus-within/search:text-[var(--primary)]",strokeWidth:1.8}),(0,b.jsx)("input",{ref:h,type:"text",value:s,onFocus:()=>D(!0),onChange:a=>{t(a.target.value),D(!0)},onKeyDown:a=>{if("ArrowDown"===a.key&&K.length>0){a.preventDefault(),F(a=>(a+1)%K.length);return}if("ArrowUp"===a.key&&K.length>0){a.preventDefault(),F(a=>(a-1+K.length)%K.length);return}if("Enter"===a.key&&P){a.preventDefault(),N(P);return}"Escape"===a.key&&(I?M():(D(!1),h.current?.blur()))},placeholder:"Search objectives, tickets, tasks, teams, agents, and chat…",className:"h-8 w-full rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] pl-9 pr-16 text-xs font-medium text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)] transition-all hover:border-[var(--app-shell-border-strong)] focus:border-[var(--primary)] focus:ring-2 focus:ring-[var(--ring)]"}),I?(0,b.jsxs)("div",{className:"absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-bold text-[var(--muted-foreground)]",children:y?"…":w}),(0,b.jsx)("button",{type:"button",onClick:()=>{M(),h.current?.focus()},className:"inline-flex h-5 w-5 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]","aria-label":"Clear search",children:(0,b.jsx)(q.X,{className:"h-3.5 w-3.5"})})]}):(0,b.jsx)("kbd",{className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-1.5 py-0.5 font-sans text-[10px] font-bold text-[var(--app-shell-soft-text)]",children:"⌘K"})]}),O?(0,b.jsx)("div",{className:"absolute left-0 right-0 top-[calc(100%+0.5rem)] z-50 overflow-hidden rounded-2xl border border-[var(--app-shell-border)] bg-[var(--app-shell-surface)] shadow-2xl shadow-black/20",children:(0,b.jsxs)("div",{className:"max-h-[28rem] overflow-y-auto p-2",children:[I.length<2?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"Keep typing to search across project entities."}):null,y?(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(l.Loader2,{className:"h-4 w-4 animate-spin"}),"Searching this project…"]}):null,!y&&A?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-rose-500",children:A}):null,y||A||!(I.length>=2)||0!==u.length?null:(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"No matches in this project."}),!y&&!A&&J.map(a=>(0,b.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 px-3 pb-1 pt-2",children:[(0,b.jsxs)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--app-shell-soft-text)]",children:[a.label,(0,b.jsx)("span",{className:"ml-1.5 text-[9px] text-[var(--muted-foreground)]",children:a.results.length})]}),a.results.length>3?(0,b.jsx)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onClick:()=>Q(a.id),className:"text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:G.has(a.id)?"Collapse":`Show ${a.hiddenCount} more`}):null]}),(0,b.jsx)("div",{className:"space-y-1",children:a.visibleResults.map(a=>{let c,d,e=`${a.kind}:${a.id}`,f=L.findIndex(a=>a===e),g=f===E,h=function(a){switch(a){case"objective":return o.Target;case"linear_issue":return k.FileText;case"scheduled_task":return j;case"team":return p.Users;case"agent":return i.Bot;case"chat_thread":case"chat_message":return m.MessageSquare;default:return n.Search}}(a.kind);return(0,b.jsxs)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onMouseEnter:()=>F(f),onClick:()=>N(a),className:`flex w-full items-start gap-3 rounded-xl px-3 py-2.5 text-left transition-colors ${g?"bg-[var(--app-shell-subtle)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,children:[(0,b.jsx)("span",{className:"mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--app-shell-muted)]",children:(0,b.jsx)(h,{className:"h-3.5 w-3.5",strokeWidth:1.75})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.title}),(0,b.jsx)("span",{className:"shrink-0 rounded-full bg-[var(--app-shell-subtle)] px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[var(--app-shell-soft-text)]",children:a.label})]}),a.context?(0,b.jsx)("span",{className:"mt-0.5 block truncate text-xs text-[var(--muted-foreground)]",children:a.context}):null,a.description?(0,b.jsx)("span",{className:"mt-1 block text-xs leading-5 text-[var(--muted-foreground)]",children:(c=a.description.split(/(<\/?mark>)/g),d=!1,c.map((a,c)=>"<mark>"===a?(d=!0,null):"</mark>"===a?(d=!1,null):a?d?(0,b.jsx)("mark",{className:"rounded bg-amber-200/80 px-0.5 text-inherit",children:a},`mark-${c}`):(0,b.jsx)("span",{children:a},`text-${c}`):null))}):null]})]},e)})})]},a.id))]})}):null]})}var s=a.i(550158),t=a.i(830284),u=a.i(111013),v=a.i(455106),w=a.i(427411);function x({children:a,params:i}){let{slug:j}=(0,c.use)(i),k=(0,d.useRouter)(),l=(0,d.usePathname)(),{projects:m,isLoading:n,createProject:o,updateProject:p,deleteProject:q,addAgent:y,removeAgent:z}=(0,t.useProjectsWithAgents)(),{threads:A,isLoading:B,isCreating:C,deletingThreadId:D,renamingThreadId:E,isRestoringActiveThread:F,createThread:G,renameThread:H,deleteThread:I}=(0,u.useThreadState)(),[J,K]=(0,c.useState)([]),[L,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)(368),[P,Q]=(0,c.useState)(()=>"light");(0,c.useEffect)(()=>{M((0,v.loadWorkspaceSidebarVisible)()),O((0,w.loadWorkspaceWidth)()||368)},[]),(0,c.useEffect)(()=>{},[P]),(0,c.useEffect)(()=>{fetch("/api/participants").then(a=>a.json()).then(a=>K(Array.isArray(a)?a:[])).catch(()=>K([]))},[]);let R=(0,c.useMemo)(()=>m.find(a=>a.slug===j)??null,[m,j]),S=(0,c.useMemo)(()=>{let a=l.match(/\/projects\/[^/]+\/thread\/([^/]+)/);return a?.[1]?decodeURIComponent(a[1]):R?.thread_ids[0]??null},[R?.thread_ids,l]),T=(0,c.useMemo)(()=>l.includes("/linear")?"linear":l.includes("/automations")?"automations":l.includes("/thread/")?"thread":l.includes("/knowledge")?"knowledge":l.includes("/objectives")?"objectives":l.includes("/teams")?"teams":l.includes("/env-vars")?"env-vars":l.includes("/terminal")?"terminal":l.includes("/settings")?"settings":"home",[l]),U=(0,c.useCallback)(a=>{O(a),(0,w.persistWorkspaceWidth)(a)},[]);return n?(0,b.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}):R?(0,b.jsxs)("div",{className:"flex h-dvh min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,b.jsx)(s.WorkspaceSidebar,{threads:A,participants:J,activeThreadId:S,isLoading:B,isRestoringActiveThread:F,isCreating:C,deletingThreadId:D,renamingThreadId:E,onSelectThread:a=>k.push(`/projects/${j}/thread/${encodeURIComponent(a)}`),onCreateThread:G,onRenameThread:H,onDeleteThread:I,visible:L,onToggle:()=>{let a=!L;M(a),(0,v.persistWorkspaceSidebarVisible)(a)},width:N,onWidthChange:U,projects:m,onCreateProject:o,onUpdateProject:p,onDeleteProject:q,onAddAgentToProject:y,onRemoveAgentFromProject:z,activeProjectId:R.id,activeProjectView:T,onUpdateParticipant:async a=>{let b=await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error("Failed to update agent");let c=await b.json();K(a=>a.map(a=>a.id===c.id?c:a))},onSelectProject:a=>{let b=m.find(b=>b.id===a);b&&k.push(`/projects/${b.slug}`)}}),(0,b.jsxs)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0 flex-shrink-0",children:[l!==`/projects/${j}`&&(0,b.jsx)("button",{type:"button",onClick:()=>k.back(),className:"p-1 -ml-1 rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors",children:(0,b.jsx)(e.ArrowLeft,{className:"w-4 h-4"})}),(0,b.jsx)("button",{type:"button",onClick:()=>k.push(`/projects/${j}`),className:`text-xs transition-colors ${"home"===T?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:R.name}),"home"!==T&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,b.jsx)("button",{type:"button",onClick:()=>k.push(`/projects/${j}/${"thread"===T?"":T}`),className:"text-xs text-[var(--foreground)] hover:text-[var(--muted-foreground)] transition-colors",children:{objectives:"Objectives",teams:"Teams","env-vars":"Environment Variables",linear:"Linear",automations:"Scheduled Tasks",thread:"Chat",knowledge:"Knowledge",terminal:"Terminal",settings:"Settings"}[T]??T}),(0,b.jsx)("span",{id:"topbar-breadcrumb",className:"contents"})]})]}),(0,b.jsx)("div",{className:"flex-1 flex justify-center min-w-0 px-4",children:(0,b.jsx)(r,{projectId:R.id})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,b.jsx)(h.StatusIndicator,{}),(0,b.jsx)("button",{type:"button",onClick:()=>Q(a=>"dark"===a?"light":"dark"),"aria-label":"dark"===P?"Switch to light theme":"Switch to dark theme",title:"dark"===P?"Switch to light theme":"Switch to dark theme",className:"inline-flex h-7 w-7 items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]",children:"dark"===P?(0,b.jsx)(f.Sun,{className:"h-3.5 w-3.5"}):(0,b.jsx)(g.Moon,{className:"h-3.5 w-3.5"})})]})]}),a]})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,b.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,b.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",j,"” does not exist or you do not have access to it."]}),(0,b.jsx)("button",{onClick:()=>k.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]})}a.s(["default",0,function({children:a,params:d}){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading project…"}),children:(0,b.jsx)(x,{params:d,children:a})})}],657613)}];
1
+ module.exports=[657613,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(285320),f=a.i(970393),g=a.i(508869),h=a.i(523321),i=a.i(166621),j=a.i(971382);let k=(0,a.i(831709).default)("clock-3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6h4",key:"135r8i"}]]);var l=a.i(552605),m=a.i(349692),n=a.i(737313),o=a.i(542341),p=a.i(489461),q=a.i(985339),r=a.i(824179),s=a.i(529889);function t({projectId:a}){let{isTouchLayout:e}=(0,s.useInputCapabilities)(),f=(0,d.useRouter)(),g=(0,d.usePathname)(),h=(0,c.useRef)(null),i=(0,c.useRef)(null),[u,v]=(0,c.useState)(""),[w,x]=(0,c.useState)([]),[y,z]=(0,c.useState)(0),[A,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(null),[E,F]=(0,c.useState)(!1),[G,H]=(0,c.useState)(0),[I,J]=(0,c.useState)(new Set),K=u.trim(),L=(0,c.useMemo)(()=>w.map(a=>({...a,visibleResults:I.has(a.id)?a.results:a.results.slice(0,3),hiddenCount:Math.max(0,a.results.length-3)})),[I,w]),M=(0,c.useMemo)(()=>L.flatMap(a=>a.visibleResults),[L]),N=(0,c.useMemo)(()=>M.map(a=>`${a.kind}:${a.id}`),[M]),O=(0,c.useCallback)(()=>{v(""),x([]),z(0),D(null),B(!1),H(0)},[]),P=(0,c.useCallback)(a=>{O(),F(!1),f.push(a.href)},[O,f]);(0,c.useEffect)(()=>{O(),F(!1),J(new Set)},[O,g]),(0,c.useEffect)(()=>{let a=a=>{h.current?.contains(a.target)||F(!1)};return window.addEventListener("pointerdown",a),()=>window.removeEventListener("pointerdown",a)},[]),(0,c.useEffect)(()=>{let a=a=>{(a.metaKey||a.ctrlKey)&&"k"===a.key.toLowerCase()&&(a.preventDefault(),i.current?.focus(),i.current?.select())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[]),(0,c.useEffect)(()=>{E&&H(0)},[E,w]),(0,c.useEffect)(()=>{if(!K||K.length<2){x([]),z(0),D(null),B(!1),J(new Set);return}let b=!1;B(!0);let c=window.setTimeout(()=>{(async()=>{try{let c=new URLSearchParams({q:K}),d=await fetch(`/api/projects/${encodeURIComponent(a)}/search?${c.toString()}`,{cache:"no-store"}),e=await d.json().catch(()=>null);if(b)return;if(!d.ok){let a=e&&"object"==typeof e&&"error"in e?String(e.error):"Search failed";x([]),z(0),D(a);return}x(Array.isArray(e.sections)?e.sections:[]),z("number"==typeof e.total?e.total:0),D(null),J(new Set)}catch(a){if(b)return;console.error("Project search failed",a),x([]),z(0),D("Search failed")}finally{b||B(!1)}})()},220);return()=>{b=!0,window.clearTimeout(c)}},[K,a]);let Q=E&&(K.length>0||A||null!==C),R=M.length>0?M[Math.max(0,Math.min(G,M.length-1))]:null,S=(0,c.useCallback)(a=>{J(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);return(0,b.jsxs)("div",{ref:h,className:"relative w-full max-w-xl",children:[(0,b.jsxs)("div",{className:"group/search relative",children:[(0,b.jsx)(o.Search,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--app-shell-soft-text)] transition-colors group-focus-within/search:text-[var(--primary)]",strokeWidth:1.8}),(0,b.jsx)("input",{ref:i,type:"text",value:u,onFocus:()=>F(!0),onChange:a=>{v(a.target.value),F(!0)},onKeyDown:a=>{if("ArrowDown"===a.key&&M.length>0){a.preventDefault(),H(a=>(a+1)%M.length);return}if("ArrowUp"===a.key&&M.length>0){a.preventDefault(),H(a=>(a-1+M.length)%M.length);return}if("Enter"===a.key&&R){a.preventDefault(),P(R);return}"Escape"===a.key&&(K?O():(F(!1),i.current?.blur()))},placeholder:"Search objectives, tickets, tasks, teams, agents, and chat…",className:"h-8 w-full rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] pl-9 pr-16 text-xs font-medium text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)] transition-all hover:border-[var(--app-shell-border-strong)] focus:border-[var(--primary)] focus:ring-2 focus:ring-[var(--ring)]"}),K?(0,b.jsxs)("div",{className:"absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-bold text-[var(--muted-foreground)]",children:A?"…":y}),(0,b.jsx)("button",{type:"button",onClick:()=>{O(),i.current?.focus()},className:"inline-flex h-5 w-5 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]","aria-label":"Clear search",children:(0,b.jsx)(r.X,{className:"h-3.5 w-3.5"})})]}):e?null:(0,b.jsx)("kbd",{className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-1.5 py-0.5 font-sans text-[10px] font-bold text-[var(--app-shell-soft-text)]",children:"⌘K"})]}),Q?(0,b.jsx)("div",{className:"absolute left-0 right-0 top-[calc(100%+0.5rem)] z-50 overflow-hidden rounded-2xl border border-[var(--app-shell-border)] bg-[var(--app-shell-surface)] shadow-2xl shadow-black/20",children:(0,b.jsxs)("div",{className:"max-h-[28rem] overflow-y-auto p-2",children:[K.length<2?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"Keep typing to search across project entities."}):null,A?(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(m.Loader2,{className:"h-4 w-4 animate-spin"}),"Searching this project…"]}):null,!A&&C?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-rose-500",children:C}):null,A||C||!(K.length>=2)||0!==w.length?null:(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"No matches in this project."}),!A&&!C&&L.map(a=>(0,b.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 px-3 pb-1 pt-2",children:[(0,b.jsxs)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--app-shell-soft-text)]",children:[a.label,(0,b.jsx)("span",{className:"ml-1.5 text-[9px] text-[var(--muted-foreground)]",children:a.results.length})]}),a.results.length>3?(0,b.jsx)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onClick:()=>S(a.id),className:"text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:I.has(a.id)?"Collapse":`Show ${a.hiddenCount} more`}):null]}),(0,b.jsx)("div",{className:"space-y-1",children:a.visibleResults.map(a=>{let c,d,e=`${a.kind}:${a.id}`,f=N.findIndex(a=>a===e),g=f===G,h=function(a){switch(a){case"objective":return p.Target;case"linear_issue":return l.FileText;case"scheduled_task":return k;case"team":return q.Users;case"agent":return j.Bot;case"chat_thread":case"chat_message":return n.MessageSquare;default:return o.Search}}(a.kind);return(0,b.jsxs)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onMouseEnter:()=>H(f),onClick:()=>P(a),className:`flex w-full items-start gap-3 rounded-xl px-3 py-2.5 text-left transition-colors ${g?"bg-[var(--app-shell-subtle)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,children:[(0,b.jsx)("span",{className:"mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--app-shell-muted)]",children:(0,b.jsx)(h,{className:"h-3.5 w-3.5",strokeWidth:1.75})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.title}),(0,b.jsx)("span",{className:"shrink-0 rounded-full bg-[var(--app-shell-subtle)] px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[var(--app-shell-soft-text)]",children:a.label})]}),a.context?(0,b.jsx)("span",{className:"mt-0.5 block truncate text-xs text-[var(--muted-foreground)]",children:a.context}):null,a.description?(0,b.jsx)("span",{className:"mt-1 block text-xs leading-5 text-[var(--muted-foreground)]",children:(c=a.description.split(/(<\/?mark>)/g),d=!1,c.map((a,c)=>"<mark>"===a?(d=!0,null):"</mark>"===a?(d=!1,null):a?d?(0,b.jsx)("mark",{className:"rounded bg-amber-200/80 px-0.5 text-inherit",children:a},`mark-${c}`):(0,b.jsx)("span",{children:a},`text-${c}`):null))}):null]})]},e)})})]},a.id))]})}):null]})}var u=a.i(550158),v=a.i(830284),w=a.i(111013),x=a.i(455106),y=a.i(427411);function z({children:a,params:j}){let{slug:k}=(0,c.use)(j),{isTouchLayout:l}=(0,s.useInputCapabilities)(),m=(0,d.useRouter)(),n=(0,d.usePathname)(),{projects:o,isLoading:p,createProject:q,updateProject:r,deleteProject:A,addAgent:B,removeAgent:C}=(0,v.useProjectsWithAgents)(),{threads:D,isLoading:E,isCreating:F,deletingThreadId:G,renamingThreadId:H,isRestoringActiveThread:I,createThread:J,renameThread:K,deleteThread:L}=(0,w.useThreadState)(),[M,N]=(0,c.useState)([]),[O,P]=(0,c.useState)(!1),[Q,R]=(0,c.useState)(368),[S,T]=(0,c.useState)(()=>"light");(0,c.useEffect)(()=>{P((0,x.loadWorkspaceSidebarVisible)()),R((0,y.loadWorkspaceWidth)()||368)},[]),(0,c.useEffect)(()=>{},[S]),(0,c.useEffect)(()=>{fetch("/api/participants").then(a=>a.json()).then(a=>N(Array.isArray(a)?a:[])).catch(()=>N([]))},[]);let U=(0,c.useMemo)(()=>o.find(a=>a.slug===k)??null,[o,k]),V=(0,c.useMemo)(()=>{let a=n.match(/\/projects\/[^/]+\/thread\/([^/]+)/);return a?.[1]?decodeURIComponent(a[1]):U?.thread_ids[0]??null},[U?.thread_ids,n]),W=(0,c.useMemo)(()=>n.includes("/linear")?"linear":n.includes("/automations")?"automations":n.includes("/thread/")?"thread":n.includes("/knowledge")?"knowledge":n.includes("/objectives")?"objectives":n.includes("/teams")?"teams":n.includes("/folders")?"folders":n.includes("/env-vars")?"env-vars":n.includes("/terminal")?"terminal":n.includes("/settings")?"settings":"home",[n]),X=()=>{let a=!O;P(a),(0,x.persistWorkspaceSidebarVisible)(a)},Y=(0,c.useCallback)(a=>{R(a),(0,y.persistWorkspaceWidth)(a)},[]);return p?(0,b.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}):U?(0,b.jsxs)("div",{className:"flex h-dvh min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,b.jsx)(u.WorkspaceSidebar,{threads:D,participants:M,activeThreadId:V,isLoading:E,isRestoringActiveThread:I,isCreating:F,deletingThreadId:G,renamingThreadId:H,onSelectThread:a=>m.push(`/projects/${k}/thread/${encodeURIComponent(a)}`),onCreateThread:J,onRenameThread:K,onDeleteThread:L,visible:O,onToggle:X,width:Q,onWidthChange:Y,projects:o,onCreateProject:q,onUpdateProject:r,onDeleteProject:A,onAddAgentToProject:B,onRemoveAgentFromProject:C,activeProjectId:U.id,activeProjectView:W,onUpdateParticipant:async a=>{let b=await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error("Failed to update agent");let c=await b.json();N(a=>a.map(a=>a.id===c.id?c:a))},onSelectProject:a=>{let b=o.find(b=>b.id===a);b&&m.push(`/projects/${b.slug}`)}}),(0,b.jsxs)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0 flex-shrink-0",children:[!O&&(0,b.jsx)("button",{type:"button",onClick:X,className:"inline-flex h-9 w-9 items-center justify-center rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",title:"Show sidebar","aria-label":"Show sidebar",children:(0,b.jsx)(f.PanelLeftOpen,{className:"h-4 w-4"})}),n!==`/projects/${k}`&&(0,b.jsx)("button",{type:"button",onClick:()=>m.back(),className:"p-1 -ml-1 rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors",children:(0,b.jsx)(e.ArrowLeft,{className:"w-4 h-4"})}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}`),className:`text-xs transition-colors ${"home"===W?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:U.name}),"home"!==W&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}/${"thread"===W?"":W}`),className:"text-xs text-[var(--foreground)] hover:text-[var(--muted-foreground)] transition-colors",children:{objectives:"Objectives",teams:"Teams",folders:"Folders","env-vars":"Environment Variables",linear:"Linear",automations:"Scheduled Tasks",thread:"Chat",knowledge:"Knowledge",terminal:"Terminal",settings:"Settings"}[W]??W}),(0,b.jsx)("span",{id:"topbar-breadcrumb",className:"contents"})]})]}),(0,b.jsx)("div",{className:"flex-1 flex justify-center min-w-0 px-4",children:(0,b.jsx)(t,{projectId:U.id})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,b.jsx)(i.StatusIndicator,{}),(0,b.jsx)("button",{type:"button",onClick:()=>T(a=>"dark"===a?"light":"dark"),"aria-label":"dark"===S?"Switch to light theme":"Switch to dark theme",title:"dark"===S?"Switch to light theme":"Switch to dark theme",className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${l?"h-9 w-9":"h-7 w-7"}`,children:"dark"===S?(0,b.jsx)(g.Sun,{className:l?"h-4 w-4":"h-3.5 w-3.5"}):(0,b.jsx)(h.Moon,{className:l?"h-4 w-4":"h-3.5 w-3.5"})})]})]}),a]})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,b.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,b.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",k,"” does not exist or you do not have access to it."]}),(0,b.jsx)("button",{onClick:()=>m.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]})}a.s(["default",0,function({children:a,params:d}){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading project…"}),children:(0,b.jsx)(z,{params:d,children:a})})}],657613)}];
2
2
 
3
3
  //# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_layout_tsx_0aaa3~t._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[576608,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(830284),f=a.i(819721),g=a.i(831709);let h=(0,g.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),i=(0,g.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var j=a.i(627421),k=a.i(811760),l=a.i(820859),m=a.i(379065),n=a.i(552605);let o=(0,g.default)("link-2",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]);var p=a.i(73948),q=a.i(353532),r=a.i(864061),s=a.i(542341),t=a.i(642784),u=a.i(252197),v=a.i(520612),w=a.i(675665);let x={activeScriptId:null,scripts:[]};var y=a.i(155829),z=a.i(496368),A=a.i(86007);let B=(0,g.default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);var C=a.i(697183),D=a.i(734709),E=a.i(86466);function F({projectSlug:a,scripts:d,activeScriptId:e,onSetActiveScriptId:f,onSaveScript:g,onDeleteScript:h}){let i=(0,c.useMemo)(()=>d.find(a=>a.id===e)??null,[e,d]),[k,l]=(0,c.useState)(()=>e?{type:"edit",scriptId:e}:{type:"new"}),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)(null),v="edit"===k.type?k.scriptId:null;(0,c.useEffect)(()=>{if("edit"===k.type){let a=d.find(a=>a.id===k.scriptId);if(a){n(a.name),p(a.prompt);return}}if(i&&"new"!==k.type){("edit"!==k.type||k.scriptId!==i.id)&&l({type:"edit",scriptId:i.id}),n(i.name),p(i.prompt);return}0===d.length&&"new"!==k.type&&(l({type:"new"}),n(""),p(""))},[i,v,k,d]);let w=()=>{l({type:"new"}),n(""),p(""),s(null)},x=()=>{try{let a=g({name:m,prompt:o});l({type:"edit",scriptId:a.id}),s(null)}catch(a){s(a instanceof Error?a.message:"Failed to save session script.")}};return(0,b.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Session Scripts"}),(0,b.jsxs)("p",{className:"text-xs leading-relaxed text-[var(--muted-foreground)]",children:["Save reusable kickoff prompts for the ",String(a??"").trim()||"global Linear board",". These scripts stay on this device and layer on top of the built-in ticket context whenever you start a scripted session."]})]}),(0,b.jsxs)("div",{className:"grid gap-5 md:grid-cols-[240px_minmax(0,1fr)]",children:[(0,b.jsxs)("aside",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-3",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.16em] text-[var(--muted-foreground)]",children:"Library"}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-md border border-[var(--card-border)] px-2 py-1 text-[11px] font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--background)]",onClick:w,children:[(0,b.jsx)(q.Plus,{size:12}),"New"]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("button",{type:"button",className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${null===e?"bg-[var(--background)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"}`,onClick:()=>f(null),children:[(0,b.jsx)("span",{className:`flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${null===e?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:null===e?(0,b.jsx)(j.Check,{size:10}):null}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate font-medium",children:"AGX default"})]}),0===d.length?(0,b.jsx)("div",{className:"rounded-lg border border-dashed border-[var(--card-border)] px-3 py-4 text-xs leading-relaxed text-[var(--muted-foreground)]",children:"No saved scripts yet. Create one to reuse your preferred scripted session prompt."}):d.map(a=>{let c=a.id===e,d="edit"===k.type&&k.scriptId===a.id;return(0,b.jsx)("button",{type:"button",className:`rounded-lg border px-3 py-2 text-left transition-colors ${d?"border-blue-500/50 bg-[var(--background)]":"border-transparent hover:border-[var(--card-border)] hover:bg-[var(--background)]"}`,onClick:()=>{l({type:"edit",scriptId:a.id}),n(a.name),p(a.prompt),s(null),f(a.id)},children:(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${c?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:c?(0,b.jsx)(j.Check,{size:10}):null}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-xs font-medium text-[var(--foreground)]",children:a.name}),(0,b.jsx)("div",{className:"mt-1 line-clamp-2 text-[11px] leading-relaxed text-[var(--muted-foreground)]",children:a.prompt}),(0,b.jsxs)("div",{className:"mt-2 text-[10px] uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:["Updated ",function(a){try{return new Date(a).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return a}}(a.updatedAt)]})]})]})},a.id)})]})]}),(0,b.jsxs)("section",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"mb-4 flex items-start justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-semibold text-[var(--foreground)]",children:"edit"===k.type?"Edit Session Script":"New Session Script"}),(0,b.jsxs)("p",{className:"mt-1 text-xs leading-relaxed text-[var(--muted-foreground)]",children:["Use placeholders like ",(0,b.jsx)("code",{children:"{{ticket.identifier}}"}),", ",(0,b.jsx)("code",{children:"{{ticket.title}}"}),", ",(0,b.jsx)("code",{children:"{{ticket.status}}"}),", ",(0,b.jsx)("code",{children:"{{ticket.assignee}}"}),", ",(0,b.jsx)("code",{children:"{{project.slug}}"}),", ",(0,b.jsx)("code",{children:"{{knowledge_base.root}}"}),", ",(0,b.jsx)("code",{children:"{{knowledge_base.issue_path}}"}),", and ",(0,b.jsx)("code",{children:"{{worktree.path}}"}),"."]})]}),i?(0,b.jsxs)("span",{className:"rounded-full border border-blue-500/30 bg-blue-500/10 px-2.5 py-1 text-[11px] font-medium text-blue-400",children:["Active: ",i.name]}):(0,b.jsx)("span",{className:"rounded-full border border-[var(--card-border)] px-2.5 py-1 text-[11px] font-medium text-[var(--muted-foreground)]",children:"Active: AGX default"})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{type:"text",className:"rounded-lg border border-[var(--card-border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-blue-500",placeholder:"Investigation-first",value:m,onChange:a=>n(a.target.value)})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:"Prompt"}),(0,b.jsx)("div",{className:"overflow-hidden rounded-lg border border-[var(--card-border)] bg-[var(--background)] transition-colors focus-within:border-blue-500 [&_.rich-text-editor_.ProseMirror]:min-h-[220px]",children:(0,b.jsx)(E.default,{content:o,onChange:p,placeholder:"Read {{ticket.identifier}} and the full comment thread in Linear before changing code.\nWrite your investigation to {{knowledge_base.issue_path}} and stop after posting a plan unless the issue is already approved for implementation."})})]}),r?(0,b.jsx)("div",{className:"rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-xs text-red-300",children:r}):null,(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg bg-blue-500 px-3 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-600",onClick:x,children:[(0,b.jsx)(B,{size:14}),"Save as new"]}),"edit"===k.type?(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--card-border)] px-3 py-2 text-sm font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--background)]",onClick:()=>{if("edit"!==k.type)return void x();try{let a=g({id:k.scriptId,name:m,prompt:o});l({type:"edit",scriptId:a.id}),s(null)}catch(a){s(a instanceof Error?a.message:"Failed to update session script.")}},children:[(0,b.jsx)(B,{size:14}),"Update"]}):null,"edit"===k.type?(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-red-500/30 px-3 py-2 text-sm font-medium text-red-300 transition-colors hover:bg-red-500/10",onClick:()=>{u(d.find(a=>a.id===k.scriptId)??null)},children:[(0,b.jsx)(C.Trash2,{size:14}),"Delete"]}):null,(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--card-border)] px-3 py-2 text-sm font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--background)] hover:text-[var(--foreground)]",onClick:w,children:[(0,b.jsx)(q.Plus,{size:14}),"Clear editor"]})]})]})]})]}),(0,b.jsx)(D.default,{isOpen:!!t,title:"Delete session script?",message:"This removes the saved script from this device for the current project.",preview:t?.name,confirmLabel:"Delete",variant:"danger",onConfirm:()=>{t&&(h(t.id),"edit"===k.type&&k.scriptId===t.id&&(l({type:"new"}),n(""),p("")),u(null),s(null))},onCancel:()=>u(null)})]})}var G=a.i(475632);let H={search:"",assigneeIds:[],statuses:[],teamId:"",cycleId:"",sortBy:"activity",sortDir:"desc",hasActivity:!1};var I=a.i(427411),J=a.i(785061);function K(a,b){return a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||b}var L=a.i(349692);let M=[{id:"claude",label:"Claude Code",icon:"🟣"},{id:"codex",label:"Codex",icon:"⚫"},{id:"gemini",label:"Gemini CLI",icon:"🔵"}];function N({connected:a,user:d,clis:e,mcpConfigured:f,onConnect:g,onConnectWithKey:h,onDisconnect:i,onConfigureMcp:k,onContinue:l}){let[n,o]=(0,c.useState)(""),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(null),[v,w]=(0,c.useState)(null),x=async()=>{if(!n.trim())return;s(!0),q(null);let a=await h(n.trim());s(!1),a.ok||q(a.error||"Failed to connect")},y=async a=>{u(a),w(null);let b=await k(a);u(null),b.ok||w(b.error||"Failed to configure")},z=M.filter(a=>e[a.id]).some(a=>f[a.id]);return(0,b.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,b.jsxs)("div",{className:"w-full max-w-md space-y-6 px-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[a&&(0,b.jsx)("div",{className:"flex h-4 w-4 items-center justify-center rounded-full bg-green-500/20",children:(0,b.jsx)(j.Check,{size:10,className:"text-green-500"})}),(0,b.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Connect to Linear"})]}),(0,b.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:"Connect your workspace to browse tickets and execute them with agents."}),(0,b.jsx)("div",{className:"mt-3 space-y-3",children:a?(0,b.jsxs)("div",{className:"flex items-center justify-between rounded-md border border-[var(--card-border)] px-3 py-2",children:[(0,b.jsxs)("div",{className:"text-xs text-[var(--foreground)]",children:["Connected as"," ",(0,b.jsx)("span",{className:"font-medium",children:d?.name})]}),(0,b.jsx)("button",{type:"button",onClick:i,className:"text-[10px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:"Disconnect"})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{type:"button",onClick:g,className:"w-full rounded-md bg-[var(--foreground)] px-4 py-2 text-xs font-medium text-[var(--card-bg)] transition-opacity hover:opacity-90",children:"Connect with Linear"}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-[var(--muted-foreground)]",children:[(0,b.jsx)("div",{className:"flex-1 border-t border-[var(--card-border)]"}),"or",(0,b.jsx)("div",{className:"flex-1 border-t border-[var(--card-border)]"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-[10px] text-[var(--muted-foreground)] block mb-1",children:"Personal API key"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("input",{type:"password",value:n,onChange:a=>{o(a.target.value),q(null)},onKeyDown:a=>{"Enter"===a.key&&x()},placeholder:"lin_api_...",className:"flex-1 rounded-md border border-[var(--card-border)] bg-transparent px-3 py-1.5 text-xs text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] focus:outline-none focus:ring-1 focus:ring-[var(--foreground)]"}),(0,b.jsx)("button",{type:"button",onClick:x,disabled:!n.trim()||r,className:"rounded-md border border-[var(--card-border)] px-3 py-1.5 text-xs text-[var(--foreground)] transition-colors hover:bg-[var(--card-border)] disabled:opacity-40",children:r?"...":"Save"})]}),p&&(0,b.jsx)("p",{className:"mt-1 text-[10px] text-red-400",children:p}),(0,b.jsxs)("a",{href:"https://linear.app/settings/api",target:"_blank",rel:"noopener noreferrer",className:"mt-1 inline-flex items-center gap-1 text-[10px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:["Generate at linear.app/settings/api",(0,b.jsx)(m.ExternalLink,{size:8})]})]})]})})]}),a&&(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Configure MCP"}),(0,b.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:"Add the Linear MCP server to your AI tools so agents can read and update tickets during execution."}),(0,b.jsxs)("div",{className:"mt-3 space-y-1",children:[M.map(a=>{let c=e[a.id],d=f[a.id],g=t===a.id;return(0,b.jsxs)("div",{className:`flex items-center justify-between rounded-md border border-[var(--card-border)] px-3 py-2 ${!c?"opacity-40":""}`,children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)("span",{children:a.icon}),(0,b.jsx)("span",{className:"text-[var(--foreground)]",children:a.label})]}),c?d?(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-green-500",children:[(0,b.jsx)(j.Check,{size:10}),"Configured"]}):(0,b.jsx)("button",{type:"button",onClick:()=>y(a.id),disabled:g,className:"flex items-center gap-1 rounded px-2 py-0.5 text-[10px] text-[var(--foreground)] border border-[var(--card-border)] hover:bg-[var(--card-border)] transition-colors disabled:opacity-50",children:g?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(L.Loader2,{size:10,className:"animate-spin"}),"Configuring..."]}):"Configure"}):(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:"Not installed"})]},a.id)}),v&&(0,b.jsx)("p",{className:"mt-1 text-[10px] text-red-400",children:v})]}),(0,b.jsx)("button",{type:"button",onClick:l,className:"mt-4 w-full rounded-md bg-[var(--foreground)] px-4 py-2 text-xs font-medium text-[var(--card-bg)] transition-opacity hover:opacity-90",children:z?"Continue":"Skip for now"})]})]})})}let O=(0,f.default)(async()=>{},{loadableGenerated:{modules:[844118]},ssr:!1});function P({onResize:a}){let d=(0,c.useRef)(!1),e=(0,c.useRef)(0);return(0,c.useEffect)(()=>{if(!d.current)return;let b=b=>{let c=b.clientX-e.current;e.current=b.clientX,a(c)},c=()=>{d.current=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",b),window.removeEventListener("mouseup",c)};return window.addEventListener("mousemove",b),window.addEventListener("mouseup",c),()=>{window.removeEventListener("mousemove",b),window.removeEventListener("mouseup",c)}}),(0,b.jsx)("div",{className:"group relative z-10 w-0 shrink-0 cursor-col-resize",onMouseDown:a=>{a.preventDefault(),d.current=!0,e.current=a.clientX,document.body.style.cursor="col-resize",document.body.style.userSelect="none"},children:(0,b.jsx)("div",{className:"absolute inset-y-0 -left-0.5 w-1 transition-colors group-hover:bg-[var(--primary)]/40"})})}function Q(a,b,c=20){let d=b?b.replace("#",""):"e2e8f0";return`https://api.dicebear.com/9.x/bottts-neutral/svg?seed=${encodeURIComponent(a)}&size=${c}&backgroundColor=${d}`}function R(a){if("chat"===a.mode)switch(a.status){case"queued":return{label:"starting",tone:"queued"};case"running":return{label:"thinking",tone:"running"};case"success":return{label:"ready",tone:"ready"};case"failed":return{label:"error",tone:"failed"};case"cancelled":return{label:"stopped",tone:"cancelled"}}return{label:function(a){switch(a){case"queued":return"queued";case"running":return"running";case"success":return"success";case"failed":return"failed";case"cancelled":return"cancelled";default:return a}}(a.status),tone:a.status}}function S(a){let b=a.sessionTitle?.trim();return b||("scripted"===a.mode?"Scripted session":"Chat session")}let T={"In Progress":"In Prog","In Review":"Review",Backlog:"Backlog",Todo:"Todo",Done:"Done",Cancelled:"Cancl."},U={queued:"bg-amber-500/10 border-amber-500/20 text-amber-400",running:"bg-yellow-500/10 border-yellow-500/20 text-yellow-400",ready:"bg-sky-500/10 border-sky-500/20 text-sky-400",success:"bg-emerald-500/10 border-emerald-500/20 text-emerald-400",failed:"bg-red-500/10 border-red-500/20 text-red-400",cancelled:"bg-zinc-500/10 border-zinc-500/20 text-zinc-400"},V={queued:"bg-amber-400",running:"bg-yellow-400",ready:"bg-sky-400",success:"bg-emerald-400",failed:"bg-red-400",cancelled:"bg-zinc-400"},W={queued:"text-amber-500",running:"text-yellow-500",ready:"text-sky-500",success:"text-green-500",failed:"text-red-500",cancelled:"text-[var(--muted-foreground)]"};function X({label:a,value:c,options:d,activeClasses:e,onChange:f,disabled:g=!1}){let h=c.trim().length>0;return(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("select",{"aria-label":a,className:`max-w-[160px] appearance-none rounded-full border bg-transparent px-2.5 py-0.5 pr-6 text-[11px] font-medium outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-60 ${h?e:"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,value:c,disabled:g,onChange:a=>f(a.target.value),children:d.map(c=>(0,b.jsx)("option",{value:c.value,children:c.label},`${a}-${c.value||"all"}`))}),(0,b.jsx)(k.ChevronDown,{size:12,className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-current"})]})}function Y({status:a,options:c,onChange:d,disabled:e=!1,updating:f=!1}){return(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("select",{"aria-label":"Ticket status",className:"max-w-[160px] appearance-none rounded-md border border-[var(--card-border)] bg-[var(--card-bg)] px-2.5 py-1 pr-8 text-xs font-medium text-[var(--foreground)] outline-none transition-colors hover:border-[var(--muted-foreground)] disabled:cursor-not-allowed disabled:opacity-60",value:a,disabled:e||f,onChange:a=>d(a.target.value),children:c.map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},`ticket-status-${a.value}`))}),f?(0,b.jsx)(r.RefreshCw,{size:12,className:"pointer-events-none absolute right-6 top-1/2 -translate-y-1/2 animate-spin text-[var(--muted-foreground)]"}):null,(0,b.jsx)(k.ChevronDown,{size:12,className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)]"})]})}function Z({label:a,values:d,options:e,activeClasses:f,onChange:g,emptyLabel:h}){let[i,l]=(0,c.useState)(!1),m=(0,c.useRef)(null),n=e.filter(a=>a.value&&d.includes(a.value)),o=n.length>0,p=(()=>{if(0===n.length||n.length===e.length)return h??a;if(1===n.length)return n[0]?.label??h??a;let b=a.toLowerCase();return`${n.length} ${b}${b.endsWith("s")?"es":"s"}`})();(0,c.useEffect)(()=>{if(!i)return;let a=a=>{m.current&&!m.current.contains(a.target)&&l(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[i]);let q=(0,c.useCallback)(a=>{a?g(d.includes(a)?d.filter(b=>b!==a):[...d,a]):g([])},[g,d]);return(0,b.jsxs)("div",{className:"relative",ref:m,children:[(0,b.jsxs)("button",{type:"button","aria-label":a,"aria-haspopup":"listbox","aria-expanded":i,className:`flex max-w-[180px] items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${o?f:"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,onClick:()=>l(a=>!a),children:[(0,b.jsx)("span",{className:"max-w-[132px] truncate",children:p}),(0,b.jsx)(k.ChevronDown,{size:12,className:`shrink-0 transition-transform ${i?"rotate-180":""}`})]}),i?(0,b.jsxs)("div",{role:"listbox","aria-label":`${a} options`,"aria-multiselectable":"true",className:"absolute left-0 top-full z-50 mt-1 min-w-[240px] overflow-hidden rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-1 shadow-lg backdrop-blur-sm",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":!o,className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${!o?"bg-[var(--background)] font-medium text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"}`,onClick:()=>g([]),children:[(0,b.jsx)("span",{className:`flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${!o?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:o?null:(0,b.jsx)(j.Check,{size:10})}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:h??a})]}),n.length>0?(0,b.jsx)("div",{className:"px-3 pb-1 pt-2 text-[10px] font-medium uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Selected"}):null,e.filter(a=>a.value).map(c=>{let e=d.includes(c.value);return(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":e,className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${e?"bg-[var(--background)] font-medium text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"}`,onClick:()=>q(c.value),children:[(0,b.jsx)("span",{className:`flex h-4 w-4 shrink-0 items-center justify-center rounded border ${e?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:e?(0,b.jsx)(j.Check,{size:10}):null}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:c.label})]},`${a}-${c.value}`)})]}):null]})}function $({issue:a,participants:d,projectId:e,projectSlug:f,issueStatusOptions:g,issueStatusUpdating:h,onIssueStatusChange:i,activeSessionScriptLabel:j,onOpenSessionScripts:k,onStartScriptedSession:l,createRun:m,updateRun:o,onRunCreated:q}){let r=d[0],s=(0,c.useRef)(crypto.randomUUID()),{messages:t,setMessages:v,sendMessage:w,chatRuns:x}=(0,y.useGroupChat)(s.current),{processes:B,streaming:C}=(0,z.useProcessPolling)({workspaceId:s.current},{messages:t,setMessages:v}),D=new Set(["queued","running","awaiting_user","blocked"]),E=x.some(a=>D.has(a.status))||B.some(a=>"spawning"===a.state||"running"===a.state)?x.some(a=>"queued"===a.status)?"queued":"working":"ready",F=(0,c.useMemo)(()=>new Map(d.map(a=>[a.id,a])),[d]),H=(0,c.useRef)(!1),I=(0,c.useCallback)(async(b,c,g,h,i,j,k)=>{if(H.current)return;H.current=!0;let l=(i?d.find(a=>a.id===i):null)??r;if(l)try{var n,p,s;let c,d,g,h,i,r,t,u,v,w,x,y,z,A,B,C,D,E,F,G,{promptPrefix:H}=(g=(p={issue:{identifier:a.identifier,title:a.title,status:a.status,assignee:a.assignee},project:f?{slug:f}:null}).issue.identifier.trim()||"TICKET-ID",h=p.issue.title.trim()||"Untitled ticket",i=String(p.issue.status??"").trim()||"Unknown",r=String(p.issue.assignee??"").trim()||"Unassigned",t=function(a){let b=String(a?.slug??"").trim();if(b)return K(b,"project");let c=String(a?.name??"").trim();return c?K(c,"project"):"project"}(p.project),u=String(p.project?.name??"").trim()||t,v=String(p.runtime?.knowledgeBaseRoot??"").trim()||`~/.agx/vault/${t}`,w=String(p.runtime?.issueKnowledgePath??"").trim()||`${v}/issues/${g}/`,x=String(p.runtime?.isolatedWorktreePath??"").trim()||`/tmp/agx-${K(g,"ticket")}`,z=(y={issue:{identifier:g,title:h,status:i,assignee:r},project:{name:u,slug:t,label:(s=p.project,c=String(s?.name??"").trim(),d=String(s?.slug??"").trim(),c&&d?`${c} (${d})`:c||d||"current project"),repos:p.project?.repos?[...p.project.repos]:[]},runtime:{knowledgeBaseRoot:v,issueKnowledgePath:w,isolatedWorktreePath:x}}).issue.identifier,A=y.issue.title,B=y.issue.status,C=y.issue.assignee,D=y.runtime.knowledgeBaseRoot,E=y.runtime.issueKnowledgePath,F=y.runtime.isolatedWorktreePath,G=`LINEAR TASK EXECUTION
1
+ module.exports=[576608,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(830284),f=a.i(819721),g=a.i(831709);let h=(0,g.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),i=(0,g.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var j=a.i(627421),k=a.i(811760),l=a.i(820859),m=a.i(379065),n=a.i(552605);let o=(0,g.default)("link-2",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]);var p=a.i(73948),q=a.i(353532),r=a.i(864061),s=a.i(542341),t=a.i(642784),u=a.i(252197),v=a.i(824179),w=a.i(520612),x=a.i(675665);let y={activeScriptId:null,scripts:[]};var z=a.i(155829),A=a.i(496368),B=a.i(86007),C=a.i(354658),D=a.i(697183),E=a.i(734709),F=a.i(86466);function G({projectSlug:a,scripts:d,activeScriptId:e,onSetActiveScriptId:f,onSaveScript:g,onDeleteScript:h}){let i=(0,c.useMemo)(()=>d.find(a=>a.id===e)??null,[e,d]),[k,l]=(0,c.useState)(()=>e?{type:"edit",scriptId:e}:{type:"new"}),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)(null),v="edit"===k.type?k.scriptId:null;(0,c.useEffect)(()=>{if("edit"===k.type){let a=d.find(a=>a.id===k.scriptId);if(a){n(a.name),p(a.prompt);return}}if(i&&"new"!==k.type){("edit"!==k.type||k.scriptId!==i.id)&&l({type:"edit",scriptId:i.id}),n(i.name),p(i.prompt);return}0===d.length&&"new"!==k.type&&(l({type:"new"}),n(""),p(""))},[i,v,k,d]);let w=()=>{l({type:"new"}),n(""),p(""),s(null)},x=()=>{try{let a=g({name:m,prompt:o});l({type:"edit",scriptId:a.id}),s(null)}catch(a){s(a instanceof Error?a.message:"Failed to save session script.")}};return(0,b.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Session Scripts"}),(0,b.jsxs)("p",{className:"text-xs leading-relaxed text-[var(--muted-foreground)]",children:["Save reusable kickoff prompts for the ",String(a??"").trim()||"global Linear board",". These scripts stay on this device and layer on top of the built-in ticket context whenever you start a scripted session."]})]}),(0,b.jsxs)("div",{className:"grid gap-5 md:grid-cols-[240px_minmax(0,1fr)]",children:[(0,b.jsxs)("aside",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-3",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.16em] text-[var(--muted-foreground)]",children:"Library"}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-md border border-[var(--card-border)] px-2 py-1 text-[11px] font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--background)]",onClick:w,children:[(0,b.jsx)(q.Plus,{size:12}),"New"]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("button",{type:"button",className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${null===e?"bg-[var(--background)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"}`,onClick:()=>f(null),children:[(0,b.jsx)("span",{className:`flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${null===e?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:null===e?(0,b.jsx)(j.Check,{size:10}):null}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate font-medium",children:"AGX default"})]}),0===d.length?(0,b.jsx)("div",{className:"rounded-lg border border-dashed border-[var(--card-border)] px-3 py-4 text-xs leading-relaxed text-[var(--muted-foreground)]",children:"No saved scripts yet. Create one to reuse your preferred scripted session prompt."}):d.map(a=>{let c=a.id===e,d="edit"===k.type&&k.scriptId===a.id;return(0,b.jsx)("button",{type:"button",className:`rounded-lg border px-3 py-2 text-left transition-colors ${d?"border-blue-500/50 bg-[var(--background)]":"border-transparent hover:border-[var(--card-border)] hover:bg-[var(--background)]"}`,onClick:()=>{l({type:"edit",scriptId:a.id}),n(a.name),p(a.prompt),s(null),f(a.id)},children:(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${c?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:c?(0,b.jsx)(j.Check,{size:10}):null}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-xs font-medium text-[var(--foreground)]",children:a.name}),(0,b.jsx)("div",{className:"mt-1 line-clamp-2 text-[11px] leading-relaxed text-[var(--muted-foreground)]",children:a.prompt}),(0,b.jsxs)("div",{className:"mt-2 text-[10px] uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:["Updated ",function(a){try{return new Date(a).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return a}}(a.updatedAt)]})]})]})},a.id)})]})]}),(0,b.jsxs)("section",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"mb-4 flex items-start justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-semibold text-[var(--foreground)]",children:"edit"===k.type?"Edit Session Script":"New Session Script"}),(0,b.jsxs)("p",{className:"mt-1 text-xs leading-relaxed text-[var(--muted-foreground)]",children:["Use placeholders like ",(0,b.jsx)("code",{children:"{{ticket.identifier}}"}),", ",(0,b.jsx)("code",{children:"{{ticket.title}}"}),", ",(0,b.jsx)("code",{children:"{{ticket.status}}"}),", ",(0,b.jsx)("code",{children:"{{ticket.assignee}}"}),", ",(0,b.jsx)("code",{children:"{{project.slug}}"}),", ",(0,b.jsx)("code",{children:"{{knowledge_base.root}}"}),", ",(0,b.jsx)("code",{children:"{{knowledge_base.issue_path}}"}),", and ",(0,b.jsx)("code",{children:"{{worktree.path}}"}),"."]})]}),i?(0,b.jsxs)("span",{className:"rounded-full border border-blue-500/30 bg-blue-500/10 px-2.5 py-1 text-[11px] font-medium text-blue-400",children:["Active: ",i.name]}):(0,b.jsx)("span",{className:"rounded-full border border-[var(--card-border)] px-2.5 py-1 text-[11px] font-medium text-[var(--muted-foreground)]",children:"Active: AGX default"})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{type:"text",className:"rounded-lg border border-[var(--card-border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-blue-500",placeholder:"Investigation-first",value:m,onChange:a=>n(a.target.value)})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:"Prompt"}),(0,b.jsx)("div",{className:"overflow-hidden rounded-lg border border-[var(--card-border)] bg-[var(--background)] transition-colors focus-within:border-blue-500 [&_.rich-text-editor_.ProseMirror]:min-h-[220px]",children:(0,b.jsx)(F.default,{content:o,onChange:p,placeholder:"Read {{ticket.identifier}} and the full comment thread in Linear before changing code.\nWrite your investigation to {{knowledge_base.issue_path}} and stop after posting a plan unless the issue is already approved for implementation."})})]}),r?(0,b.jsx)("div",{className:"rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-xs text-red-300",children:r}):null,(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg bg-blue-500 px-3 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-600",onClick:x,children:[(0,b.jsx)(C.Save,{size:14}),"Save as new"]}),"edit"===k.type?(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--card-border)] px-3 py-2 text-sm font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--background)]",onClick:()=>{if("edit"!==k.type)return void x();try{let a=g({id:k.scriptId,name:m,prompt:o});l({type:"edit",scriptId:a.id}),s(null)}catch(a){s(a instanceof Error?a.message:"Failed to update session script.")}},children:[(0,b.jsx)(C.Save,{size:14}),"Update"]}):null,"edit"===k.type?(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-red-500/30 px-3 py-2 text-sm font-medium text-red-300 transition-colors hover:bg-red-500/10",onClick:()=>{u(d.find(a=>a.id===k.scriptId)??null)},children:[(0,b.jsx)(D.Trash2,{size:14}),"Delete"]}):null,(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--card-border)] px-3 py-2 text-sm font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--background)] hover:text-[var(--foreground)]",onClick:w,children:[(0,b.jsx)(q.Plus,{size:14}),"Clear editor"]})]})]})]})]}),(0,b.jsx)(E.default,{isOpen:!!t,title:"Delete session script?",message:"This removes the saved script from this device for the current project.",preview:t?.name,confirmLabel:"Delete",variant:"danger",onConfirm:()=>{t&&(h(t.id),"edit"===k.type&&k.scriptId===t.id&&(l({type:"new"}),n(""),p("")),u(null),s(null))},onCancel:()=>u(null)})]})}var H=a.i(475632),I=a.i(529889);let J={search:"",assigneeIds:[],statuses:[],teamId:"",cycleId:"",sortBy:"activity",sortDir:"desc",hasActivity:!1};var K=a.i(427411),L=a.i(785061);function M(a,b){return a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||b}var N=a.i(349692);let O=[{id:"claude",label:"Claude Code",icon:"🟣"},{id:"codex",label:"Codex",icon:"⚫"},{id:"gemini",label:"Gemini CLI",icon:"🔵"}];function P({connected:a,user:d,clis:e,mcpConfigured:f,onConnect:g,onConnectWithKey:h,onDisconnect:i,onConfigureMcp:k,onContinue:l}){let[n,o]=(0,c.useState)(""),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(null),[v,w]=(0,c.useState)(null),x=async()=>{if(!n.trim())return;s(!0),q(null);let a=await h(n.trim());s(!1),a.ok||q(a.error||"Failed to connect")},y=async a=>{u(a),w(null);let b=await k(a);u(null),b.ok||w(b.error||"Failed to configure")},z=O.filter(a=>e[a.id]).some(a=>f[a.id]);return(0,b.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,b.jsxs)("div",{className:"w-full max-w-md space-y-6 px-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[a&&(0,b.jsx)("div",{className:"flex h-4 w-4 items-center justify-center rounded-full bg-green-500/20",children:(0,b.jsx)(j.Check,{size:10,className:"text-green-500"})}),(0,b.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Connect to Linear"})]}),(0,b.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:"Connect your workspace to browse tickets and execute them with agents."}),(0,b.jsx)("div",{className:"mt-3 space-y-3",children:a?(0,b.jsxs)("div",{className:"flex items-center justify-between rounded-md border border-[var(--card-border)] px-3 py-2",children:[(0,b.jsxs)("div",{className:"text-xs text-[var(--foreground)]",children:["Connected as"," ",(0,b.jsx)("span",{className:"font-medium",children:d?.name})]}),(0,b.jsx)("button",{type:"button",onClick:i,className:"text-[10px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:"Disconnect"})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{type:"button",onClick:g,className:"w-full rounded-md bg-[var(--foreground)] px-4 py-2 text-xs font-medium text-[var(--card-bg)] transition-opacity hover:opacity-90",children:"Connect with Linear"}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-[var(--muted-foreground)]",children:[(0,b.jsx)("div",{className:"flex-1 border-t border-[var(--card-border)]"}),"or",(0,b.jsx)("div",{className:"flex-1 border-t border-[var(--card-border)]"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"text-[10px] text-[var(--muted-foreground)] block mb-1",children:"Personal API key"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("input",{type:"password",value:n,onChange:a=>{o(a.target.value),q(null)},onKeyDown:a=>{"Enter"===a.key&&x()},placeholder:"lin_api_...",className:"flex-1 rounded-md border border-[var(--card-border)] bg-transparent px-3 py-1.5 text-xs text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] focus:outline-none focus:ring-1 focus:ring-[var(--foreground)]"}),(0,b.jsx)("button",{type:"button",onClick:x,disabled:!n.trim()||r,className:"rounded-md border border-[var(--card-border)] px-3 py-1.5 text-xs text-[var(--foreground)] transition-colors hover:bg-[var(--card-border)] disabled:opacity-40",children:r?"...":"Save"})]}),p&&(0,b.jsx)("p",{className:"mt-1 text-[10px] text-red-400",children:p}),(0,b.jsxs)("a",{href:"https://linear.app/settings/api",target:"_blank",rel:"noopener noreferrer",className:"mt-1 inline-flex items-center gap-1 text-[10px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:["Generate at linear.app/settings/api",(0,b.jsx)(m.ExternalLink,{size:8})]})]})]})})]}),a&&(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Configure MCP"}),(0,b.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:"Add the Linear MCP server to your AI tools so agents can read and update tickets during execution."}),(0,b.jsxs)("div",{className:"mt-3 space-y-1",children:[O.map(a=>{let c=e[a.id],d=f[a.id],g=t===a.id;return(0,b.jsxs)("div",{className:`flex items-center justify-between rounded-md border border-[var(--card-border)] px-3 py-2 ${!c?"opacity-40":""}`,children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)("span",{children:a.icon}),(0,b.jsx)("span",{className:"text-[var(--foreground)]",children:a.label})]}),c?d?(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-green-500",children:[(0,b.jsx)(j.Check,{size:10}),"Configured"]}):(0,b.jsx)("button",{type:"button",onClick:()=>y(a.id),disabled:g,className:"flex items-center gap-1 rounded px-2 py-0.5 text-[10px] text-[var(--foreground)] border border-[var(--card-border)] hover:bg-[var(--card-border)] transition-colors disabled:opacity-50",children:g?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(N.Loader2,{size:10,className:"animate-spin"}),"Configuring..."]}):"Configure"}):(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:"Not installed"})]},a.id)}),v&&(0,b.jsx)("p",{className:"mt-1 text-[10px] text-red-400",children:v})]}),(0,b.jsx)("button",{type:"button",onClick:l,className:"mt-4 w-full rounded-md bg-[var(--foreground)] px-4 py-2 text-xs font-medium text-[var(--card-bg)] transition-opacity hover:opacity-90",children:z?"Continue":"Skip for now"})]})]})})}let Q=(0,f.default)(async()=>{},{loadableGenerated:{modules:[844118]},ssr:!1});function R({onResize:a}){let d=(0,c.useRef)(!1),e=(0,c.useRef)(0);return(0,c.useEffect)(()=>{if(!d.current)return;let b=b=>{let c=b.clientX-e.current;e.current=b.clientX,a(c)},c=()=>{d.current=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",b),window.removeEventListener("mouseup",c)};return window.addEventListener("mousemove",b),window.addEventListener("mouseup",c),()=>{window.removeEventListener("mousemove",b),window.removeEventListener("mouseup",c)}}),(0,b.jsx)("div",{className:"group relative z-10 w-0 shrink-0 cursor-col-resize",onMouseDown:a=>{a.preventDefault(),d.current=!0,e.current=a.clientX,document.body.style.cursor="col-resize",document.body.style.userSelect="none"},children:(0,b.jsx)("div",{className:"absolute inset-y-0 -left-0.5 w-1 transition-colors group-hover:bg-[var(--primary)]/40"})})}function S(a,b,c=20){let d=b?b.replace("#",""):"e2e8f0";return`https://api.dicebear.com/9.x/bottts-neutral/svg?seed=${encodeURIComponent(a)}&size=${c}&backgroundColor=${d}`}function T(a){return new Date(a).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function U(a){if("chat"===a.mode)switch(a.status){case"queued":return{label:"starting",tone:"queued"};case"running":return{label:"thinking",tone:"running"};case"success":return{label:"ready",tone:"ready"};case"failed":return{label:"error",tone:"failed"};case"cancelled":return{label:"stopped",tone:"cancelled"}}return{label:function(a){switch(a){case"queued":return"queued";case"running":return"running";case"success":return"success";case"failed":return"failed";case"cancelled":return"cancelled";default:return a}}(a.status),tone:a.status}}function V(a){let b=a.sessionTitle?.trim();return b||("scripted"===a.mode?"Scripted session":"Chat session")}let W={"In Progress":"In Prog","In Review":"Review",Backlog:"Backlog",Todo:"Todo",Done:"Done",Cancelled:"Cancl."},X={queued:"bg-amber-500/10 border-amber-500/20 text-amber-400",running:"bg-yellow-500/10 border-yellow-500/20 text-yellow-400",ready:"bg-sky-500/10 border-sky-500/20 text-sky-400",success:"bg-emerald-500/10 border-emerald-500/20 text-emerald-400",failed:"bg-red-500/10 border-red-500/20 text-red-400",cancelled:"bg-zinc-500/10 border-zinc-500/20 text-zinc-400"},Y={queued:"bg-amber-400",running:"bg-yellow-400",ready:"bg-sky-400",success:"bg-emerald-400",failed:"bg-red-400",cancelled:"bg-zinc-400"},Z={queued:"text-amber-500",running:"text-yellow-500",ready:"text-sky-500",success:"text-green-500",failed:"text-red-500",cancelled:"text-[var(--muted-foreground)]"};function $({label:a,value:c,options:d,activeClasses:e,onChange:f,disabled:g=!1}){let h=c.trim().length>0;return(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("select",{"aria-label":a,className:`max-w-[160px] appearance-none rounded-full border bg-transparent px-2.5 py-0.5 pr-6 text-[11px] font-medium outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-60 ${h?e:"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,value:c,disabled:g,onChange:a=>f(a.target.value),children:d.map(c=>(0,b.jsx)("option",{value:c.value,children:c.label},`${a}-${c.value||"all"}`))}),(0,b.jsx)(k.ChevronDown,{size:12,className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-current"})]})}function _({status:a,options:c,onChange:d,disabled:e=!1,updating:f=!1}){return(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("select",{"aria-label":"Ticket status",className:"max-w-[160px] appearance-none rounded-md border border-[var(--card-border)] bg-[var(--card-bg)] px-2.5 py-1 pr-8 text-xs font-medium text-[var(--foreground)] outline-none transition-colors hover:border-[var(--muted-foreground)] disabled:cursor-not-allowed disabled:opacity-60",value:a,disabled:e||f,onChange:a=>d(a.target.value),children:c.map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},`ticket-status-${a.value}`))}),f?(0,b.jsx)(r.RefreshCw,{size:12,className:"pointer-events-none absolute right-6 top-1/2 -translate-y-1/2 animate-spin text-[var(--muted-foreground)]"}):null,(0,b.jsx)(k.ChevronDown,{size:12,className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)]"})]})}function aa({label:a,values:d,options:e,activeClasses:f,onChange:g,emptyLabel:h}){let[i,l]=(0,c.useState)(!1),m=(0,c.useRef)(null),n=e.filter(a=>a.value&&d.includes(a.value)),o=n.length>0,p=(()=>{if(0===n.length||n.length===e.length)return h??a;if(1===n.length)return n[0]?.label??h??a;let b=a.toLowerCase();return`${n.length} ${b}${b.endsWith("s")?"es":"s"}`})();(0,c.useEffect)(()=>{if(!i)return;let a=a=>{m.current&&!m.current.contains(a.target)&&l(!1)};return document.addEventListener("pointerdown",a),()=>document.removeEventListener("pointerdown",a)},[i]);let q=(0,c.useCallback)(a=>{a?g(d.includes(a)?d.filter(b=>b!==a):[...d,a]):g([])},[g,d]);return(0,b.jsxs)("div",{className:"relative",ref:m,children:[(0,b.jsxs)("button",{type:"button","aria-label":a,"aria-haspopup":"listbox","aria-expanded":i,className:`flex max-w-[180px] items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${o?f:"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,onClick:()=>l(a=>!a),children:[(0,b.jsx)("span",{className:"max-w-[132px] truncate",children:p}),(0,b.jsx)(k.ChevronDown,{size:12,className:`shrink-0 transition-transform ${i?"rotate-180":""}`})]}),i?(0,b.jsxs)("div",{role:"listbox","aria-label":`${a} options`,"aria-multiselectable":"true",className:"absolute left-0 top-full z-50 mt-1 min-w-[240px] overflow-hidden rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-1 shadow-lg backdrop-blur-sm",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":!o,className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${!o?"bg-[var(--background)] font-medium text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"}`,onClick:()=>g([]),children:[(0,b.jsx)("span",{className:`flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${!o?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:o?null:(0,b.jsx)(j.Check,{size:10})}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:h??a})]}),n.length>0?(0,b.jsx)("div",{className:"px-3 pb-1 pt-2 text-[10px] font-medium uppercase tracking-[0.12em] text-[var(--muted-foreground)]",children:"Selected"}):null,e.filter(a=>a.value).map(c=>{let e=d.includes(c.value);return(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":e,className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${e?"bg-[var(--background)] font-medium text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"}`,onClick:()=>q(c.value),children:[(0,b.jsx)("span",{className:`flex h-4 w-4 shrink-0 items-center justify-center rounded border ${e?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:e?(0,b.jsx)(j.Check,{size:10}):null}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:c.label})]},`${a}-${c.value}`)})]}):null]})}function ab({issue:a,participants:d,projectId:e,projectSlug:f,issueStatusOptions:g,issueStatusUpdating:h,onIssueStatusChange:i,activeSessionScriptLabel:j,onOpenSessionScripts:k,onStartScriptedSession:l,createRun:m,updateRun:o,onRunCreated:q}){let r=d[0],s=(0,c.useRef)(null);s.current||(s.current=globalThis.crypto?.randomUUID?.()??`thread-${Date.now()}-${Math.random().toString(36).slice(2)}`);let{messages:t,setMessages:v,sendMessage:w,chatRuns:x}=(0,z.useGroupChat)(s.current),{processes:y,streaming:C}=(0,A.useProcessPolling)({workspaceId:s.current},{messages:t,setMessages:v}),D=new Set(["queued","running","awaiting_user","blocked"]),E=x.some(a=>D.has(a.status))||y.some(a=>"spawning"===a.state||"running"===a.state)?x.some(a=>"queued"===a.status)?"queued":"working":"ready",F=(0,c.useMemo)(()=>new Map(d.map(a=>[a.id,a])),[d]),G=(0,c.useRef)(!1),I=(0,c.useCallback)(async(b,c,g,h,i,j,k)=>{if(G.current)return;G.current=!0;let l=(i?d.find(a=>a.id===i):null)??r;if(l)try{var n,p,s;let c,d,g,h,i,r,t,u,v,w,x,y,z,A,B,C,D,E,F,G,{promptPrefix:H}=(g=(p={issue:{identifier:a.identifier,title:a.title,status:a.status,assignee:a.assignee},project:f?{slug:f}:null}).issue.identifier.trim()||"TICKET-ID",h=p.issue.title.trim()||"Untitled ticket",i=String(p.issue.status??"").trim()||"Unknown",r=String(p.issue.assignee??"").trim()||"Unassigned",t=function(a){let b=String(a?.slug??"").trim();if(b)return M(b,"project");let c=String(a?.name??"").trim();return c?M(c,"project"):"project"}(p.project),u=String(p.project?.name??"").trim()||t,v=String(p.runtime?.knowledgeBaseRoot??"").trim()||`~/.agx/vault/${t}`,w=String(p.runtime?.issueKnowledgePath??"").trim()||`${v}/issues/${g}/`,x=String(p.runtime?.isolatedWorktreePath??"").trim()||`/tmp/agx-${M(g,"ticket")}`,z=(y={issue:{identifier:g,title:h,status:i,assignee:r},project:{name:u,slug:t,label:(s=p.project,c=String(s?.name??"").trim(),d=String(s?.slug??"").trim(),c&&d?`${c} (${d})`:c||d||"current project"),repos:p.project?.repos?[...p.project.repos]:[]},runtime:{knowledgeBaseRoot:v,issueKnowledgePath:w,isolatedWorktreePath:x}}).issue.identifier,A=y.issue.title,B=y.issue.status,C=y.issue.assignee,D=y.runtime.knowledgeBaseRoot,E=y.runtime.issueKnowledgePath,F=y.runtime.isolatedWorktreePath,G=`LINEAR TASK EXECUTION
2
2
 
3
3
  You are an engineer working through a single Linear ticket. Work like a careful teammate: continue existing work when present, investigate before coding, present a plan before implementation, ask clarifying questions when requirements are ambiguous, and stop cleanly when blocked instead of guessing.
4
4
 
@@ -34,6 +34,6 @@ RULES
34
34
  - Leave the ticket and the knowledge base in a resumable state at the end of the session. Clean up temporary worktrees or session claims if your workflow created them.
35
35
 
36
36
  `,{prompt:`Work on this Linear ticket: ${z} - ${A}`,promptPrefix:G}),I=H+(j?`
37
- ${j}`:""),J=await m({projectId:e??null,projectSlug:f??null,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee??null,agentId:l.id,agentName:l.name,mode:"chat"}),L=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:b,promptPrefix:I,threadId:J.threadId,activeParticipantIds:[l.id],projectSlug:f??void 0,routing:k})}),M=await L.json().catch(()=>({}));if(!L.ok||!M.chatRunId||!M.userMessageId)throw Error(M.error||"Failed to start chat session");await o(J.id,{chatRunId:M.chatRunId,rootMessageId:M.userMessageId}),q(J.id)}catch(a){console.error("Failed to create chat session:",a),H.current=!1,a instanceof Error&&window.alert(a.message)}},[a,d,r,e,f,m,o,q]);return(0,b.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,b.jsxs)("header",{className:"flex h-12 shrink-0 items-center justify-between border-b border-[var(--card-border)] px-6",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,b.jsx)("span",{className:"shrink-0 font-mono text-sm text-[var(--muted-foreground)]",children:a.identifier}),(0,b.jsx)("div",{className:"h-1 w-1 shrink-0 rounded-full bg-[var(--card-border)]"}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:a.title})]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,b.jsx)(Y,{status:a.status,options:g,disabled:0===g.length,updating:h,onChange:b=>i(a,b)}),(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-1 rounded-md border border-[var(--card-border)] px-2 py-1 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:k,title:`Session script: ${j}. Choose or edit the kickoff prompt for this ticket.`,children:[(0,b.jsx)(n.FileText,{size:12}),(0,b.jsx)("span",{className:"max-w-[120px] truncate",children:"AGX default"===j?"Session script":j})]}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md bg-blue-500 px-2.5 py-1 text-xs font-medium text-white transition-colors hover:bg-blue-600",onClick:l,children:[(0,b.jsx)(p.Play,{size:12}),(0,b.jsx)("span",{children:"Start scripted session"})]})]})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===t.length?(0,b.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{className:"text-sm",children:"Start a new session for this ticket"}),(0,b.jsx)("span",{className:"text-xs",children:"Type a message to open a chat, or launch the active session script."})]}):(0,b.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[t.map(a=>{let c=a.participantId?F.get(a.participantId):null,d=(0,G.stripMarkers)(a.content);return d.trim()?(0,b.jsxs)("div",{className:"flex gap-3",children:["user"===a.role?(0,b.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,b.jsx)(u.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:Q(a.participantId??"",c?.color),alt:c?.name??"Agent",className:"h-7 w-7 shrink-0 rounded-full object-cover"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-semibold text-[var(--foreground)]",children:"user"===a.role?"You":c?.name??"Agent"}),(0,b.jsx)("div",{className:"text-sm text-[var(--foreground)]",children:(0,b.jsx)(A.Markdown,{content:d,isUser:"user"===a.role})})]})]},a.id):null}),Object.entries(C).map(([a])=>{let c=F.get(a);return(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)("img",{src:Q(a,c?.color),alt:c?.name??"Agent",className:"h-7 w-7 shrink-0 rounded-full object-cover"}),c?.name??"Agent"," is thinking..."]},`stream-${a}`)})]})}),(0,b.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:(0,b.jsx)(O,{onSend:I,onStop:()=>{},participants:d,projectSlug:f??void 0,loading:"ready"!==E,commands:[],activityStatus:E,placeholder:`Ask about ${a.identifier}...`,initialPinnedParticipantId:r?.id})})]})}function _({issue:a,run:d,participants:e,issueStatusOptions:f,issueStatusUpdating:g,onIssueStatusChange:h}){let{messages:i,setMessages:j,sendMessage:k,loadHistory:m,stop:n}=(0,y.useGroupChat)(d.threadId),{processes:o,streaming:p,chatRuns:q}=(0,z.useProcessPolling)(d.rootMessageId?{workspaceId:d.threadId,threadId:d.rootMessageId}:{workspaceId:d.threadId},{messages:i,setMessages:j}),r=(0,c.useMemo)(()=>{let a=q[0];if(!a)return R(d);let b={queued:"queued",running:"running",awaiting_user:"running",blocked:"running",completed:"success",failed:"failed",cancelled:"cancelled"}[a.status]??d.status;return R({...d,status:b})},[q,d]);(0,c.useEffect)(()=>{m()},[m,d.threadId]);let s=(0,c.useMemo)(()=>new Map(e.map(a=>[a.id,a])),[e]),t=new Set(["queued","running","awaiting_user","blocked"]),v=q.some(a=>t.has(a.status))||o.some(a=>"spawning"===a.state||"running"===a.state)?q.some(a=>"queued"===a.status)?"queued":"working":"ready",w=(0,c.useCallback)((a,b,c,f,g,h,i)=>{d.rootMessageId&&k(a,b,void 0,d.rootMessageId,c,void 0,(0,J.orderParticipantIds)(e.map(a=>a.id),g),d.projectSlug??void 0,h,i)},[e,d.projectSlug,d.rootMessageId,k]);return(0,b.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,b.jsxs)("header",{className:"flex h-12 shrink-0 items-center justify-between border-b border-[var(--card-border)] px-6",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,b.jsx)("span",{className:"shrink-0 font-mono text-sm text-[var(--muted-foreground)]",children:a.identifier}),(0,b.jsx)("div",{className:"h-1 w-1 shrink-0 rounded-full bg-[var(--card-border)]"}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:S(d)})]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-4",children:[(0,b.jsx)(Y,{status:a.status,options:f,disabled:0===f.length,updating:g,onChange:b=>h(a,b)}),(0,b.jsxs)("div",{className:`flex items-center gap-2 rounded-md border px-2.5 py-1 ${U[r.tone]}`,children:[(0,b.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${V[r.tone]}`}),(0,b.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider",children:r.label})]}),null!=d.durationMs&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(l.Clock,{size:14}),(0,b.jsxs)("span",{children:[(d.durationMs/1e3).toFixed(1),"s"]})]}),(0,b.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,b.jsx)("img",{src:Q(d.agentId,s.get(d.agentId)?.color),alt:d.agentName,className:"h-5 w-5 rounded-full object-cover"}),(0,b.jsx)("span",{className:"pr-1 text-xs font-medium",children:d.agentName})]})]})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===i.length?(0,b.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:"queued"===d.status||"running"===d.status?"Starting session...":"No thread messages yet."}):(0,b.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[i.map(a=>{let c=a.participantId?s.get(a.participantId):null,e=(0,G.stripMarkers)(a.content);if(!e.trim())return null;let f=a.participantId??d.agentId;return(0,b.jsxs)("div",{className:"flex gap-3",children:["user"===a.role?(0,b.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,b.jsx)(u.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:Q(f,c?.color),alt:c?.name??d.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 flex flex-col gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("div",{className:"flex items-center gap-2",children:"user"===a.role?(0,b.jsx)("span",{className:"text-sm font-semibold text-[var(--foreground)]",children:"You"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-sm font-semibold",style:{color:c?.color??"var(--foreground)"},children:c?.name??d.agentName}),(0,b.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,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:new Date(a.timestamp).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),"user"===a.role?(0,b.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,b.jsx)(A.Markdown,{content:e,isUser:!0})}):(0,b.jsx)("div",{className:"text-sm text-[var(--foreground)]",children:(0,b.jsx)(A.Markdown,{content:e,isUser:!1})})]})]},a.id)}),Object.entries(p).filter(([,a])=>!d.rootMessageId||a.rootMessageId===d.rootMessageId).map(([a])=>{let c=s.get(a);return(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)("img",{src:Q(a,c?.color),alt:c?.name??d.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),c?.name??d.agentName," is thinking..."]},`stream-${a}`)})]})}),(0,b.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:d.rootMessageId?(0,b.jsx)(O,{onSend:w,onStop:n,participants:e,projectSlug:d.projectSlug??void 0,loading:"ready"!==v,commands:[],activityStatus:v,placeholder:"Continue this session...",initialPinnedParticipantId:d.agentId}):(0,b.jsx)("div",{className:"px-2 py-1 text-xs text-[var(--muted-foreground)]",children:"Waiting for the session to start..."})})]})}function aa({issue:a,selected:d,onSelect:e,activeAgents:f,participants:g}){let[h,i]=(0,c.useState)(!1),k=(0,c.useRef)(null);(0,c.useEffect)(()=>()=>{k.current&&window.clearTimeout(k.current)},[]);let l=(0,c.useCallback)(async b=>{if(b.stopPropagation(),a.url)try{await navigator.clipboard.writeText(a.url),i(!0),k.current&&window.clearTimeout(k.current),k.current=window.setTimeout(()=>{i(!1)},1500)}catch(a){console.error("Failed to copy Linear issue URL:",a),i(!1)}},[a.url]),n=(0,c.useCallback)(b=>{if(b.stopPropagation(),a.url){var c;let b;c=a.url,b=window.open(c,"_blank","noopener,noreferrer"),b?.focus()}},[a.url]),p=T[a.status]??a.status.slice(0,6);return(0,b.jsxs)("div",{className:`group relative flex cursor-pointer items-center gap-3 px-4 py-2.5 text-sm transition-colors ${d?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]/50"}`,onClick:e,role:"button",tabIndex:0,onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),e())},children:[d&&(0,b.jsx)("div",{className:"absolute left-0 top-0 bottom-0 w-[3px] rounded-r-full bg-blue-500"}),(0,b.jsx)("span",{className:"w-24 shrink-0 whitespace-nowrap font-mono text-xs text-[var(--muted-foreground)]",children:a.identifier}),(0,b.jsx)("span",{className:`min-w-0 flex-1 truncate text-xs ${d?"font-medium text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,children:a.title}),(0,b.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:p}),f&&f.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 shrink-0",children:f.slice(0,3).map(a=>{let c=g?.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name??a.agentName,children:[(0,b.jsx)("img",{src:Q(a.agentId,c?.color,16),alt:c?.name??a.agentName,className:"h-3 w-3 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,b.jsx)("button",{type:"button",className:`flex h-6 w-6 shrink-0 items-center justify-center rounded text-[var(--muted-foreground)] transition-all hover:bg-zinc-700 hover:text-[var(--foreground)] ${d?"opacity-100":"opacity-0 group-hover:opacity-100"} ${a.url?"":"cursor-not-allowed opacity-40 hover:bg-transparent hover:text-[var(--muted-foreground)]"}`,onClick:a=>{l(a)},title:h?"Copied ticket URL":"Copy ticket URL","aria-label":h?"Copied ticket URL":"Copy ticket URL",disabled:!a.url,children:h?(0,b.jsx)(j.Check,{size:10,className:"text-emerald-400"}):(0,b.jsx)(o,{size:10})}),(0,b.jsx)("button",{type:"button",className:`flex h-6 w-6 shrink-0 items-center justify-center rounded text-[var(--muted-foreground)] transition-all hover:bg-zinc-700 hover:text-[var(--foreground)] ${d?"opacity-100":"opacity-0 group-hover:opacity-100"} ${a.url?"":"cursor-not-allowed opacity-40 hover:bg-transparent hover:text-[var(--muted-foreground)]"}`,onClick:n,title:a.url?"Open this Linear ticket in a new tab":"This ticket does not have a Linear URL","aria-label":a.url?"Open this Linear ticket in a new tab":"This ticket does not have a Linear URL",disabled:!a.url,children:(0,b.jsx)(m.ExternalLink,{size:10})})]})]})}function ab({projectId:a,projectSlug:d,initialShowSettings:e}){let{connected:f,loading:g,user:j,clis:k,mcpConfigured:l,connect:m,connectWithKey:n,disconnect:o,configureMcp:p}=(0,w.useLinearConnection)(),[u,y]=(0,c.useState)(!1),[z,A]=(0,c.useState)(e??!1),[B,C]=(0,c.useState)(!1),[D,E]=(0,c.useState)(()=>(0,I.loadLinearTicketPanelWidth)()||576),[G,J]=(0,c.useState)(()=>(0,I.loadLinearRunsPanelWidth)()||224),[K,L]=(0,c.useState)(""),[M,O]=(0,c.useState)(""),[T,U]=(0,c.useState)(!1),[V,Y]=(0,c.useState)([]),[ac,ad]=(0,c.useState)([]),[ae,af]=(0,c.useState)([]),[ag,ah]=(0,c.useState)([]),[ai,aj]=(0,c.useState)([]),[ak,al]=(0,c.useState)([]),[am,an]=(0,c.useState)(""),[ao,ap]=(0,c.useState)(""),[aq,ar]=(0,c.useState)("activity"),[as,at]=(0,c.useState)("desc"),[au,av]=(0,c.useState)(!1),[aw,ax]=(0,c.useState)(null),[ay,az]=(0,c.useState)(null),[aA,aB]=(0,c.useState)([]),[aC,aD]=(0,c.useState)(new Map),[aE,aF]=(0,c.useState)(null),[aG,aH]=(0,c.useState)(null),aI=(0,c.useRef)(null),aJ=(0,c.useRef)(!0),aK=(0,c.useRef)(null),aL=(0,c.useRef)(null),{getSelection:aM,pushSelection:aN,replaceSelection:aO}=(0,v.useUrlSelection)(),aP=aM("issue"),aQ=aM("run"),aR=(0,c.useCallback)(a=>{L(a),aI.current&&clearTimeout(aI.current),aI.current=setTimeout(()=>O(a),300)},[]);(0,c.useEffect)(()=>()=>{aI.current&&clearTimeout(aI.current)},[]),(0,c.useEffect)(()=>{let a={...H};aJ.current=!0,L(a.search),O(a.search),ah(a.assigneeIds),aj(a.statuses),ap(a.teamId),an(a.cycleId),ar(a.sortBy),at(a.sortDir),av(a.hasActivity)},[d]),(0,c.useEffect)(()=>{if(aJ.current){aJ.current=!1;return}},[d,K,ag,ai,ao,am,aq,as,au]),(0,c.useEffect)(()=>{if(!f)return;let a=!1;U(!1);let b=new URLSearchParams;return d&&b.set("projectSlug",d),fetch(b.size>0?`/api/linear/options?${b.toString()}`:"/api/linear/options").then(a=>a.json()).then(b=>{a||(Y(Array.isArray(b.assignees)?b.assignees:[]),ad(Array.isArray(b.statuses)?b.statuses:[]),af(Array.isArray(b.teams)?b.teams:[]),al(Array.isArray(b.cycles)?b.cycles:[]),U(!0))}).catch(()=>{a||(Y([]),ad([]),af([]),al([]),U(!0))}),()=>{a=!0}},[f,d]),(0,c.useEffect)(()=>{if(!T)return;let a=ag.filter(a=>V.some(b=>b.id===a));a.length!==ag.length&&ah(a)},[V,T,ag]),(0,c.useEffect)(()=>{if(!T)return;let a=ai.filter(a=>ac.includes(a));a.length!==ai.length&&aj(a)},[T,ai,ac]),(0,c.useEffect)(()=>{if(T){if(ae.length<=1&&ao)return void ap("");ao&&!ae.some(a=>a.id===ao)&&ap("")}},[T,ao,ae]),(0,c.useEffect)(()=>{T&&am&&!ak.some(a=>a.id===am)&&an("")},[ak,T,am]);let{issues:aS,loading:aT,hasMore:aU,loadMore:aV,refresh:aW,updateIssue:aX}=function(a,b=!0,d={}){let[e,f]=(0,c.useState)([]),[g,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(!1),m=(0,c.useRef)(i),n=(0,c.useRef)(!1);m.current=i,(0,c.useEffect)(()=>{n.current=!1},[d.projectSlug]);let o=(0,c.useCallback)(async(c,e=!1)=>{if(b){h(!0);try{let b=new URLSearchParams;if(a.teamId&&b.set("teamId",a.teamId),a.statuses?.length)for(let c of a.statuses)b.append("status",c);if(a.search&&b.set("search",a.search),a.assigneeIds?.length)for(let c of a.assigneeIds)b.append("assigneeId",c);else a.assignedToMe&&b.set("assignedToMe","true");a.cycleId&&b.set("cycleId",a.cycleId),a.sortBy&&b.set("sortBy",a.sortBy),a.sortDir&&b.set("sortDir",a.sortDir),a.hasActivity&&b.set("hasActivity","true"),c&&m.current&&b.set("cursor",m.current),d.projectSlug&&b.set("projectSlug",d.projectSlug),d.limit&&b.set("limit",String(d.limit)),e&&b.set("refresh","true");let g=await fetch(`/api/linear/issues?${b.toString()}`),h=await g.json(),i=h.issues??[];f(a=>c?[...a,...i]:i),j(h.pageInfo?.endCursor??null),l(h.pageInfo?.hasNextPage??!1),n.current=!0}catch{c||f([])}finally{h(!1)}}},[a.teamId,a.statuses,a.search,a.assigneeIds,a.assignedToMe,a.cycleId,a.sortBy,a.sortDir,a.hasActivity,b,d.projectSlug,d.limit]);(0,c.useEffect)(()=>{j(null),o(!1,!n.current)},[o]);let p=(0,c.useCallback)(()=>o(!0),[o]);return{issues:e,loading:g,hasMore:k,loadMore:p,refresh:(0,c.useCallback)(()=>(j(null),o(!1,!0)),[o]),updateIssue:(0,c.useCallback)(a=>{f(b=>b.map(b=>b.id===a.id?a:b))},[])}}((0,c.useMemo)(()=>({search:M||void 0,statuses:ai.length>0&&ai.length<ac.length?ai:void 0,assigneeIds:ag.length>0?ag:void 0,teamId:ao||void 0,cycleId:am||void 0,sortBy:aq,sortDir:as,hasActivity:au||void 0}),[M,ag,am,ai,ao,ac.length,aq,as,au]),f,{projectSlug:d}),aY=(0,c.useMemo)(()=>aP?aS.find(a=>a.id===aP)??null:null,[aS,aP]),aZ=aY??(aw?.id===aP?aw:null),{runs:a$,loading:a_,createRun:a0,updateRun:a1}=function(a,b){let[d,e]=(0,c.useState)([]),[f,g]=(0,c.useState)(!1),h=(0,c.useRef)(a??null);h.current=a??null;let i=(0,c.useCallback)(async()=>{let a=h.current?.trim();if(!a)return e([]),[];g(!0);try{let c=new URLSearchParams({issueId:a});b&&c.set("projectId",b);let d=await fetch(`/api/linear/runs?${c.toString()}`);if(!d.ok)throw Error(`Failed to fetch Linear runs: ${d.status}`);let f=await d.json(),g=Array.isArray(f.runs)?f.runs:[];return e(g),g}finally{g(!1)}},[b]);return(0,c.useEffect)(()=>{e([]),i()},[i,a]),(0,c.useEffect)(()=>{if(!a)return;let b=window.setInterval(()=>{i()},3e3);return()=>window.clearInterval(b)},[a,i]),{runs:d,loading:f,refresh:i,createRun:(0,c.useCallback)(async a=>{let b=await fetch("/api/linear/runs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||`Failed to create Linear run: ${b.status}`);let c=(await b.json()).run;return e(a=>[c,...a.filter(a=>a.id!==c.id)]),c},[]),updateRun:(0,c.useCallback)(async(a,b)=>{let c=await fetch(`/api/linear/runs/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok)throw Error((await c.json().catch(()=>({}))).error||`Failed to update Linear run: ${c.status}`);let d=(await c.json()).run;return e(a=>a.map(a=>a.id===d.id?d:a)),d},[])}}(aZ?.id,a??null),{scripts:a2,activeScriptId:a3,activeScript:a4,setActiveScriptId:a5,saveScript:a6,deleteScript:a7}=function(a){let[b,d]=(0,c.useState)([]),[e,f]=(0,c.useState)(null);(0,c.useEffect)(()=>{let a={...x};d(a.scripts),f(a.activeScriptId)},[a]);let g=(0,c.useCallback)((a,b)=>{d(a),f(b)},[a]),h=(0,c.useCallback)(a=>{let c=a&&b.some(b=>b.id===a)?a:null;g(b,c)},[g,b]),i=(0,c.useCallback)(a=>{let c=new Date().toISOString(),d=a.name.trim(),e=a.prompt.trim();if(!d||!e)throw Error("Run script name and prompt are required.");let f=a.id?b.find(b=>b.id===a.id):null,h=f?{...f,name:d,prompt:e,updatedAt:c}:{id:crypto.randomUUID(),name:d,prompt:e,createdAt:c,updatedAt:c};return g([...f?b.map(a=>a.id===f.id?h:a):[h,...b]].sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt)),h.id),h},[g,b]),j=(0,c.useCallback)(a=>{g(b.filter(b=>b.id!==a),e===a?null:e)},[e,g,b]),k=(0,c.useMemo)(()=>b.find(a=>a.id===e)??null,[e,b]);return{scripts:b,activeScriptId:e,activeScript:k,setActiveScriptId:h,saveScript:i,deleteScript:j}}(d),a8=aQ&&"new"!==aQ?a$.find(a=>a.id===aQ)??null:null,a9=(0,c.useMemo)(()=>V.map(a=>({value:a.id,label:a.name})),[V]),ba=(0,c.useMemo)(()=>ac.map(a=>({value:a,label:a})),[ac]),bb=(0,c.useMemo)(()=>Array.from(new Set([aZ?.status??"",...ac].map(a=>a.trim()).filter(Boolean))).map(a=>({value:a,label:a})),[aZ?.status,ac]),bc=(0,c.useMemo)(()=>[{value:"",label:"Workspace"},...ae.map(a=>({value:a.id,label:a.name}))],[ae]),bd=(0,c.useMemo)(()=>[{value:"",label:"Cycle"},...ak.map(a=>({value:a.id,label:a.name||`Cycle ${a.number}`}))],[ak]),be=ba.length>0,bf=bd.length>1,bg=bc.length>2,bh=a4?.name??"AGX default",bi=(0,c.useCallback)(async(a,b)=>{let c=b.trim();if(c&&c!==a.status){az(a.id);try{let b=await fetch(`/api/linear/issues/${encodeURIComponent(a.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:c})}),d=await b.json().catch(()=>({}));if(!b.ok||!d.issue)throw Error(d.error||"Failed to update ticket status");let e=d.issue;aX(e),aP===e.id&&ax(e),await aW()}catch(a){a instanceof Error&&window.alert(a.message)}finally{az(b=>b===a.id?null:b)}}},[aW,aP,aX]);(0,c.useEffect)(()=>{if(!aP)return void ax(null);if(aY)return void ax(a=>a?.id===aP?aY:null);let a=!1;return(async()=>{try{let b=await fetch(`/api/linear/issues/${encodeURIComponent(aP)}`);if(a)return;if(404===b.status)return void aO({issue:null,run:null});if(!b.ok)throw Error(`Failed to fetch selected Linear ticket: ${b.status}`);let c=await b.json().catch(()=>({}));if(!c.issue?.id)return void aO({issue:null,run:null});ax(c.issue)}catch(b){a||console.error("Failed to hydrate selected Linear issue",b)}})(),()=>{a=!0}},[aO,aY,aP]),(0,c.useEffect)(()=>{if(!aP){aQ&&aO({run:null});return}},[aO,aP,aQ]),(0,c.useEffect)(()=>{aZ&&aQ&&"new"!==aQ&&!a_&&(a$.some(a=>a.id===aQ)||aO({run:null}))},[aO,a$,a_,aZ,aQ]),(0,c.useEffect)(()=>{let b=!1;return async function(){try{let c=await fetch("/api/participants"),d=c.ok?await c.json():[];if(!a){b||aB(d);return}let e=await fetch(`/api/projects/${encodeURIComponent(a)}/agents`);if(!e.ok){b||aB(d);return}let f=await e.json(),g=Array.isArray(f.agents)?f.agents.map(a=>a.agent_id).filter(a=>"string"==typeof a&&a.trim().length>0):[],h=new Map(g.map((a,b)=>[a,b])),i=d.filter(a=>h.has(a.id)).sort((a,b)=>(h.get(a.id)??Number.MAX_SAFE_INTEGER)-(h.get(b.id)??Number.MAX_SAFE_INTEGER));b||aB(i)}catch{b||aB([])}}(),()=>{b=!0}},[a]),(0,c.useEffect)(()=>{let b=!1;async function c(){try{let c=new URLSearchParams;a&&c.set("projectId",a);let d=await fetch(`/api/linear/issues/active-agents?${c}`);if(!d.ok||b)return;let e=await d.json(),f=new Map;for(let a of e.agents??[]){let b=f.get(a.issueId)??[];b.push({agentId:a.agentId,agentName:a.agentName}),f.set(a.issueId,b)}b||aD(f)}catch{}}c();let d=setInterval(()=>void c(),5e3);return()=>{b=!0,clearInterval(d)}},[a]),(0,c.useEffect)(()=>{if(!B)return;let a=a=>{let b=a.target;aL.current?.contains(b)||aK.current?.contains(b)||C(!1)},b=a=>{"Escape"===a.key&&C(!1)};return document.addEventListener("mousedown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("keydown",b)}},[B]);let bj=(0,c.useCallback)(async(b,c)=>{aF(null),aH(null);try{let e=await fetch("/api/linear/runs/scripted",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:a??void 0,projectSlug:d??void 0,issueId:b.id,issueIdentifier:b.identifier,issueTitle:b.title,issueStatus:b.status,issueAssignee:b.assignee,agentId:c.id,scriptName:a4?.name,scriptPrompt:a4?.prompt})}),f=await e.json().catch(()=>({}));if(!e.ok||!f.run||!f.chatRunId||!f.userMessageId)throw Error(f.error||"Failed to start scripted session");aN({issue:b.id,run:f.run.id})}catch(a){console.error("Failed to start scripted Linear session:",a),a instanceof Error&&window.alert(a.message)}},[a4,a,d,aN]),bk=(0,c.useCallback)((a,b)=>{if(C(!1),0===aA.length)return void window.alert("Add at least one agent to this project before starting a scripted session.");if(1===aA.length)return void bj(a,aA[0]);let c=b?.currentTarget?.getBoundingClientRect();aF(a),aH(c?{top:c.bottom+4,left:c.left}:{top:200,left:200})},[bj,aA]),bl=(0,c.useRef)(null);if((0,c.useEffect)(()=>{let a=bl.current;if(!a||!aU)return;let b=new IntersectionObserver(a=>{a[0]?.isIntersecting&&aV()},{threshold:.1});return b.observe(a),()=>b.disconnect()},[aU,aV]),g)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Loading..."});let bm=f&&!u&&!Object.values(l).some(Boolean);return!f||bm?(0,b.jsx)(N,{connected:f,user:j,clis:k,mcpConfigured:l,onConnect:m,onConnectWithKey:n,onDisconnect:o,onConfigureMcp:p,onContinue:()=>y(!0)}):(0,b.jsxs)("div",{className:"relative flex h-full overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex shrink-0 flex-col border-r border-[var(--card-border)]",style:{width:D},children:[(0,b.jsxs)("div",{className:"shrink-0 border-b border-[var(--card-border)]",children:[(0,b.jsxs)("div",{className:"flex h-12 items-center gap-2 px-3",children:[(0,b.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,b.jsx)(s.Search,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("input",{type:"text",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]",placeholder:"Search tickets...",value:K,onChange:a=>aR(a.target.value)})]}),(0,b.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 aW(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:aT,children:(0,b.jsx)(r.RefreshCw,{size:16,className:aT?"animate-spin":void 0})}),(0,b.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:()=>{C(!1),A(!0)},title:"Linear settings",children:(0,b.jsx)(t.Settings,{size:16})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pb-2",children:[be?(0,b.jsx)(Z,{label:"Status",values:ai,options:ba,activeClasses:"border-amber-500/30 bg-amber-500/10 text-amber-300",onChange:aj,emptyLabel:"All statuses"}):null,(0,b.jsx)(Z,{label:"Assignee",values:ag,options:a9,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:ah,emptyLabel:"All assignees"}),bg?(0,b.jsx)(X,{label:"Workspace",value:ao,options:bc,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:ap}):null,bf?(0,b.jsx)(X,{label:"Cycle",value:am,options:bd,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:an}):null,(0,b.jsx)(X,{label:"Sort",value:aq,options:[{value:"activity",label:"Activity"},{value:"identifier",label:"Ticket ID"},{value:"status",label:"Status"},{value:"created",label:"Created"}],activeClasses:"border-sky-500/30 bg-sky-500/10 text-sky-400",onChange:a=>ar(a)}),(0,b.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"===as?"Descending":"Ascending",onClick:()=>at(a=>"desc"===a?"asc":"desc"),children:"desc"===as?(0,b.jsx)(h,{size:12}):(0,b.jsx)(i,{size:12})}),(0,b.jsx)("button",{type:"button",className:`flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${au?"border-orange-500/30 bg-orange-500/10 text-orange-400":"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,onClick:()=>av(a=>!a),children:"My activity"})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:aT&&0===aS.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===aS.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No tickets found."}):(0,b.jsxs)(b.Fragment,{children:[aS.map(a=>(0,b.jsx)(aa,{issue:a,selected:aZ?.id===a.id,activeAgents:aC.get(a.id),participants:aA,onSelect:()=>aN({issue:a.id,run:null})},a.id)),aU?(0,b.jsx)("div",{ref:bl,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:aT?"Loading...":"Load more"}):null]})})]}),(0,b.jsx)(P,{onResize:a=>E(b=>{let c=Math.max(180,Math.min(600,b+a));return(0,I.persistLinearTicketPanelWidth)(c),c})}),(0,b.jsxs)("div",{className:"flex shrink-0 flex-col border-r border-[var(--card-border)]",style:{width:G},children:[(0,b.jsxs)("div",{className:"relative flex items-center justify-between border-b border-[var(--card-border)] px-3 py-2",children:[(0,b.jsx)("h3",{className:"text-xs font-semibold text-[var(--foreground)]",children:"Sessions"}),(0,b.jsxs)("button",{ref:aK,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:()=>{C(!1),aN({run:"new"})},title:"Open a fresh chat for this ticket. You can choose or edit the session script in the session details pane.","aria-label":"New session",disabled:!aZ,children:[(0,b.jsx)(q.Plus,{size:12}),"New session"]}),B?(0,b.jsx)("div",{ref:aL,className:"absolute right-3 top-full z-20 mt-2 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,b.jsx)(F,{projectSlug:d,scripts:a2,activeScriptId:a3,onSetActiveScriptId:a5,onSaveScript:a6,onDeleteScript:a7})}):null]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:aZ?(0,b.jsx)(b.Fragment,{children:a_&&0===a$.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading sessions..."}):0===a$.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No previous sessions yet."}):a$.map(a=>{let c=R(a);return(0,b.jsxs)("button",{type:"button",className:`w-full px-3 py-2 text-left text-xs transition-colors ${a8?.id===a.id?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]"}`,onClick:()=>aN({run:a.id}),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate text-[11px] font-medium text-[var(--foreground)]",children:S(a)}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:new Date(a.startedAt).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),(0,b.jsxs)("div",{className:"mt-0.5 flex items-center gap-1.5 text-[10px]",children:[(0,b.jsx)("span",{className:`font-medium ${W[c.tone]}`,children:c.label}),(0,b.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:a.agentName})]}),null!=a.durationMs?(0,b.jsxs)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:[(a.durationMs/1e3).toFixed(1),"s"]}):null]},a.id)})}):(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Select a ticket to see sessions."})})]}),(0,b.jsx)(P,{onResize:a=>J(b=>{let c=Math.max(140,Math.min(500,b+a));return(0,I.persistLinearRunsPanelWidth)(c),c})}),(0,b.jsx)("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:a8?(0,b.jsx)(_,{issue:aZ??{id:a8.issueId,identifier:a8.issueIdentifier,title:a8.issueTitle,url:null,status:a8.issueStatus,assignee:a8.issueAssignee,updatedAt:a8.updatedAt},run:a8,participants:aA,issueStatusOptions:bb,issueStatusUpdating:ay===a8.issueId,onIssueStatusChange:bi}):aZ?0===aA.length?(0,b.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."}):"new"===aQ||0===a$.length?(0,b.jsx)($,{issue:aZ,participants:aA,projectId:a,projectSlug:d,issueStatusOptions:bb,issueStatusUpdating:ay===aZ.id,onIssueStatusChange:bi,activeSessionScriptLabel:bh,onOpenSessionScripts:()=>C(!0),onStartScriptedSession:a=>bk(aZ,a),createRun:a0,updateRun:a1,onRunCreated:a=>aN({run:a})},aZ.id):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:a_?"Loading sessions...":"Select a session to continue."}):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Select a ticket from the list."})}),z&&(0,b.jsx)("div",{className:"absolute inset-0 z-30 flex items-center justify-center bg-black/50",children:(0,b.jsxs)("div",{className:"relative w-full max-w-lg rounded-lg border border-[var(--card-border)] bg-[var(--background)] shadow-xl",children:[(0,b.jsx)("button",{type:"button",className:"absolute right-3 top-3 rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>A(!1),children:"×"}),(0,b.jsx)("div",{className:"max-h-[80vh] overflow-y-auto p-6",children:(0,b.jsx)(N,{connected:f,user:j,clis:k,mcpConfigured:l,onConnect:m,onConnectWithKey:n,onDisconnect:o,onConfigureMcp:p,onContinue:()=>A(!1)})})]})}),aE&&aG&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 z-40",onClick:()=>{aF(null),aH(null)}}),(0,b.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:aG.top,left:aG.left},children:[(0,b.jsx)("div",{className:"px-3 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Pick an agent"}),aA.map(a=>(0,b.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 bj(aE,a),children:[(0,b.jsx)("img",{src:Q(a.id,a.color,20),alt:"",className:"h-5 w-5 shrink-0 rounded-full"}),(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:a.name}),a.title?(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:a.title}):null]})]},a.id))]})]})]})}a.s(["default",0,function({params:a}){let{slug:f}=(0,c.use)(a),g=(0,d.useSearchParams)(),{projects:h}=(0,e.useProjects)(),i=h.find(a=>a.slug===f),j="true"===g.get("settings");return(0,b.jsx)(ab,{projectId:i?.id,projectSlug:i?.slug??f,initialShowSettings:j})}],576608)}];
37
+ ${j}`:""),J=await m({projectId:e??null,projectSlug:f??null,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee??null,agentId:l.id,agentName:l.name,mode:"chat"}),K=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:b,promptPrefix:I,threadId:J.threadId,activeParticipantIds:[l.id],projectSlug:f??void 0,routing:k})}),L=await K.json().catch(()=>({}));if(!K.ok||!L.chatRunId||!L.userMessageId)throw Error(L.error||"Failed to start chat session");await o(J.id,{chatRunId:L.chatRunId,rootMessageId:L.userMessageId}),q(J.id)}catch(a){console.error("Failed to create chat session:",a),G.current=!1,a instanceof Error&&window.alert(a.message)}},[a,d,r,e,f,m,o,q]);return(0,b.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,b.jsxs)("header",{className:"flex h-12 shrink-0 items-center justify-between border-b border-[var(--card-border)] px-6",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,b.jsx)("span",{className:"shrink-0 font-mono text-sm text-[var(--muted-foreground)]",children:a.identifier}),(0,b.jsx)("div",{className:"h-1 w-1 shrink-0 rounded-full bg-[var(--card-border)]"}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:a.title})]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,b.jsx)(_,{status:a.status,options:g,disabled:0===g.length,updating:h,onChange:b=>i(a,b)}),(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-1 rounded-md border border-[var(--card-border)] px-2 py-1 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:k,title:`Session script: ${j}. Choose or edit the kickoff prompt for this ticket.`,children:[(0,b.jsx)(n.FileText,{size:12}),(0,b.jsx)("span",{className:"max-w-[120px] truncate",children:"AGX default"===j?"Session script":j})]}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md bg-blue-500 px-2.5 py-1 text-xs font-medium text-white transition-colors hover:bg-blue-600",onClick:l,children:[(0,b.jsx)(p.Play,{size:12}),(0,b.jsx)("span",{children:"Start scripted session"})]})]})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===t.length?(0,b.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{className:"text-sm",children:"Start a new session for this ticket"}),(0,b.jsx)("span",{className:"text-xs",children:"Type a message to open a chat, or launch the active session script."})]}):(0,b.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[t.map(a=>{let c=a.participantId?F.get(a.participantId):null,d=(0,H.stripMarkers)(a.content);return d.trim()?(0,b.jsxs)("div",{className:"flex gap-3",children:["user"===a.role?(0,b.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,b.jsx)(u.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:S(a.participantId??"",c?.color),alt:c?.name??"Agent",className:"h-7 w-7 shrink-0 rounded-full object-cover"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-sm font-semibold text-[var(--foreground)]",children:"user"===a.role?"You":c?.name??"Agent"}),(0,b.jsx)("div",{className:"text-sm text-[var(--foreground)]",children:(0,b.jsx)(B.Markdown,{content:d,isUser:"user"===a.role})})]})]},a.id):null}),Object.entries(C).map(([a])=>{let c=F.get(a);return(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)("img",{src:S(a,c?.color),alt:c?.name??"Agent",className:"h-7 w-7 shrink-0 rounded-full object-cover"}),c?.name??"Agent"," is thinking..."]},`stream-${a}`)})]})}),(0,b.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:(0,b.jsx)(Q,{onSend:I,onStop:()=>{},participants:d,projectSlug:f??void 0,loading:"ready"!==E,commands:[],activityStatus:E,placeholder:`Ask about ${a.identifier}...`,initialPinnedParticipantId:r?.id})})]})}function ac({issue:a,run:d,participants:e,issueStatusOptions:f,issueStatusUpdating:g,onIssueStatusChange:h}){let{messages:i,setMessages:j,sendMessage:k,loadHistory:m,stop:n}=(0,z.useGroupChat)(d.threadId),{processes:o,streaming:p,chatRuns:q}=(0,A.useProcessPolling)(d.rootMessageId?{workspaceId:d.threadId,threadId:d.rootMessageId}:{workspaceId:d.threadId},{messages:i,setMessages:j}),r=(0,c.useMemo)(()=>{let a=q[0];if(!a)return U(d);let b={queued:"queued",running:"running",awaiting_user:"running",blocked:"running",completed:"success",failed:"failed",cancelled:"cancelled"}[a.status]??d.status;return U({...d,status:b})},[q,d]);(0,c.useEffect)(()=>{m()},[m,d.threadId]);let s=(0,c.useMemo)(()=>new Map(e.map(a=>[a.id,a])),[e]),t=new Set(["queued","running","awaiting_user","blocked"]),v=q.some(a=>t.has(a.status))||o.some(a=>"spawning"===a.state||"running"===a.state)?q.some(a=>"queued"===a.status)?"queued":"working":"ready",w=(0,c.useCallback)((a,b,c,f,g,h,i)=>{d.rootMessageId&&k(a,b,void 0,d.rootMessageId,c,void 0,(0,L.orderParticipantIds)(e.map(a=>a.id),g),d.projectSlug??void 0,h,i)},[e,d.projectSlug,d.rootMessageId,k]);return(0,b.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:[(0,b.jsxs)("header",{className:"flex h-12 shrink-0 items-center justify-between border-b border-[var(--card-border)] px-6",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,b.jsx)("span",{className:"shrink-0 font-mono text-sm text-[var(--muted-foreground)]",children:a.identifier}),(0,b.jsx)("div",{className:"h-1 w-1 shrink-0 rounded-full bg-[var(--card-border)]"}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:V(d)})]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-4",children:[(0,b.jsx)(_,{status:a.status,options:f,disabled:0===f.length,updating:g,onChange:b=>h(a,b)}),(0,b.jsxs)("div",{className:`flex items-center gap-2 rounded-md border px-2.5 py-1 ${X[r.tone]}`,children:[(0,b.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${Y[r.tone]}`}),(0,b.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider",children:r.label})]}),null!=d.durationMs&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(l.Clock,{size:14}),(0,b.jsxs)("span",{children:[(d.durationMs/1e3).toFixed(1),"s"]})]}),(0,b.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,b.jsx)("img",{src:S(d.agentId,s.get(d.agentId)?.color),alt:d.agentName,className:"h-5 w-5 rounded-full object-cover"}),(0,b.jsx)("span",{className:"pr-1 text-xs font-medium",children:d.agentName})]})]})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===i.length?(0,b.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:"queued"===d.status||"running"===d.status?"Starting session...":"No thread messages yet."}):(0,b.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[i.map(a=>{let c=a.participantId?s.get(a.participantId):null,e=(0,H.stripMarkers)(a.content);if(!e.trim())return null;let f=a.participantId??d.agentId;return(0,b.jsxs)("div",{className:"flex gap-3",children:["user"===a.role?(0,b.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,b.jsx)(u.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:S(f,c?.color),alt:c?.name??d.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 flex flex-col gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("div",{className:"flex items-center gap-2",children:"user"===a.role?(0,b.jsx)("span",{className:"text-sm font-semibold text-[var(--foreground)]",children:"You"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-sm font-semibold",style:{color:c?.color??"var(--foreground)"},children:c?.name??d.agentName}),(0,b.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,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:new Date(a.timestamp).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),"user"===a.role?(0,b.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,b.jsx)(B.Markdown,{content:e,isUser:!0})}):(0,b.jsx)("div",{className:"text-sm text-[var(--foreground)]",children:(0,b.jsx)(B.Markdown,{content:e,isUser:!1})})]})]},a.id)}),Object.entries(p).filter(([,a])=>!d.rootMessageId||a.rootMessageId===d.rootMessageId).map(([a])=>{let c=s.get(a);return(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)("img",{src:S(a,c?.color),alt:c?.name??d.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),c?.name??d.agentName," is thinking..."]},`stream-${a}`)})]})}),(0,b.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:d.rootMessageId?(0,b.jsx)(Q,{onSend:w,onStop:n,participants:e,projectSlug:d.projectSlug??void 0,loading:"ready"!==v,commands:[],activityStatus:v,placeholder:"Continue this session...",initialPinnedParticipantId:d.agentId}):(0,b.jsx)("div",{className:"px-2 py-1 text-xs text-[var(--muted-foreground)]",children:"Waiting for the session to start..."})})]})}function ad({issue:a,selected:d,onSelect:e,activeAgents:f,participants:g}){let[h,i]=(0,c.useState)(!1),k=(0,c.useRef)(null);(0,c.useEffect)(()=>()=>{k.current&&window.clearTimeout(k.current)},[]);let l=(0,c.useCallback)(async b=>{if(b.stopPropagation(),a.url)try{await navigator.clipboard.writeText(a.url),i(!0),k.current&&window.clearTimeout(k.current),k.current=window.setTimeout(()=>{i(!1)},1500)}catch(a){console.error("Failed to copy Linear issue URL:",a),i(!1)}},[a.url]),n=(0,c.useCallback)(b=>{if(b.stopPropagation(),a.url){var c;let b;c=a.url,b=window.open(c,"_blank","noopener,noreferrer"),b?.focus()}},[a.url]),p=W[a.status]??a.status.slice(0,6);return(0,b.jsxs)("div",{className:`group relative flex cursor-pointer items-center gap-3 px-4 py-2.5 text-sm transition-colors ${d?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]/50"}`,onClick:e,role:"button",tabIndex:0,onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),e())},children:[d&&(0,b.jsx)("div",{className:"absolute left-0 top-0 bottom-0 w-[3px] rounded-r-full bg-blue-500"}),(0,b.jsx)("span",{className:"w-24 shrink-0 whitespace-nowrap font-mono text-xs text-[var(--muted-foreground)]",children:a.identifier}),(0,b.jsx)("span",{className:`min-w-0 flex-1 truncate text-xs ${d?"font-medium text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,children:a.title}),(0,b.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:p}),f&&f.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 shrink-0",children:f.slice(0,3).map(a=>{let c=g?.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name??a.agentName,children:[(0,b.jsx)("img",{src:S(a.agentId,c?.color,16),alt:c?.name??a.agentName,className:"h-3 w-3 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,b.jsx)("button",{type:"button",className:`flex h-6 w-6 shrink-0 items-center justify-center rounded text-[var(--muted-foreground)] transition-all hover:bg-zinc-700 hover:text-[var(--foreground)] ${d?"opacity-100":"opacity-0 group-hover:opacity-100"} ${a.url?"":"cursor-not-allowed opacity-40 hover:bg-transparent hover:text-[var(--muted-foreground)]"}`,onClick:a=>{l(a)},title:h?"Copied ticket URL":"Copy ticket URL","aria-label":h?"Copied ticket URL":"Copy ticket URL",disabled:!a.url,children:h?(0,b.jsx)(j.Check,{size:10,className:"text-emerald-400"}):(0,b.jsx)(o,{size:10})}),(0,b.jsx)("button",{type:"button",className:`flex h-6 w-6 shrink-0 items-center justify-center rounded text-[var(--muted-foreground)] transition-all hover:bg-zinc-700 hover:text-[var(--foreground)] ${d?"opacity-100":"opacity-0 group-hover:opacity-100"} ${a.url?"":"cursor-not-allowed opacity-40 hover:bg-transparent hover:text-[var(--muted-foreground)]"}`,onClick:n,title:a.url?"Open this Linear ticket in a new tab":"This ticket does not have a Linear URL","aria-label":a.url?"Open this Linear ticket in a new tab":"This ticket does not have a Linear URL",disabled:!a.url,children:(0,b.jsx)(m.ExternalLink,{size:10})})]})]})}function ae({projectId:a,projectSlug:d,initialShowSettings:e}){let{isTouchLayout:f}=(0,I.useInputCapabilities)(),{connected:g,loading:j,user:k,clis:l,mcpConfigured:m,connect:n,connectWithKey:o,disconnect:p,configureMcp:u}=(0,x.useLinearConnection)(),[z,A]=(0,c.useState)(!1),[B,C]=(0,c.useState)(e??!1),[D,E]=(0,c.useState)(!1),[F,H]=(0,c.useState)(()=>(0,K.loadLinearTicketPanelWidth)()||576),[L,M]=(0,c.useState)(()=>(0,K.loadLinearRunsPanelWidth)()||224),[N,O]=(0,c.useState)(""),[Q,W]=(0,c.useState)(""),[X,Y]=(0,c.useState)(!1),[_,af]=(0,c.useState)([]),[ag,ah]=(0,c.useState)([]),[ai,aj]=(0,c.useState)([]),[ak,al]=(0,c.useState)([]),[am,an]=(0,c.useState)([]),[ao,ap]=(0,c.useState)([]),[aq,ar]=(0,c.useState)(""),[as,at]=(0,c.useState)(""),[au,av]=(0,c.useState)("activity"),[aw,ax]=(0,c.useState)("desc"),[ay,az]=(0,c.useState)(!1),[aA,aB]=(0,c.useState)(null),[aC,aD]=(0,c.useState)(null),[aE,aF]=(0,c.useState)([]),[aG,aH]=(0,c.useState)(new Map),[aI,aJ]=(0,c.useState)(null),[aK,aL]=(0,c.useState)(null),[aM,aN]=(0,c.useState)("runs"),aO=(0,c.useRef)(null),aP=(0,c.useRef)(!0),aQ=(0,c.useRef)(null),aR=(0,c.useRef)(null),{getSelection:aS,pushSelection:aT,replaceSelection:aU}=(0,w.useUrlSelection)(),aV=aS("issue"),aW=aS("run"),aX=(0,c.useCallback)(a=>{O(a),aO.current&&clearTimeout(aO.current),aO.current=setTimeout(()=>W(a),300)},[]);(0,c.useEffect)(()=>()=>{aO.current&&clearTimeout(aO.current)},[]),(0,c.useEffect)(()=>{let a={...J};aP.current=!0,O(a.search),W(a.search),al(a.assigneeIds),an(a.statuses),at(a.teamId),ar(a.cycleId),av(a.sortBy),ax(a.sortDir),az(a.hasActivity)},[d]),(0,c.useEffect)(()=>{if(aP.current){aP.current=!1;return}},[d,N,ak,am,as,aq,au,aw,ay]),(0,c.useEffect)(()=>{if(!g)return;let a=!1;Y(!1);let b=new URLSearchParams;d&&b.set("projectSlug",d);let c=b.toString();return fetch(c?`/api/linear/options?${c}`:"/api/linear/options").then(a=>a.json()).then(b=>{a||(af(Array.isArray(b.assignees)?b.assignees:[]),ah(Array.isArray(b.statuses)?b.statuses:[]),aj(Array.isArray(b.teams)?b.teams:[]),ap(Array.isArray(b.cycles)?b.cycles:[]),Y(!0))}).catch(()=>{a||(af([]),ah([]),aj([]),ap([]),Y(!0))}),()=>{a=!0}},[g,d]),(0,c.useEffect)(()=>{if(!X)return;let a=ak.filter(a=>_.some(b=>b.id===a));a.length!==ak.length&&al(a)},[_,X,ak]),(0,c.useEffect)(()=>{if(!X)return;let a=am.filter(a=>ag.includes(a));a.length!==am.length&&an(a)},[X,am,ag]),(0,c.useEffect)(()=>{if(X){if(ai.length<=1&&as)return void at("");as&&!ai.some(a=>a.id===as)&&at("")}},[X,as,ai]),(0,c.useEffect)(()=>{X&&aq&&!ao.some(a=>a.id===aq)&&ar("")},[ao,X,aq]);let{issues:aY,loading:aZ,hasMore:a$,loadMore:a_,refresh:a0,updateIssue:a1}=function(a,b=!0,d={}){let[e,f]=(0,c.useState)([]),[g,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(!1),m=(0,c.useRef)(i),n=(0,c.useRef)(!1);m.current=i,(0,c.useEffect)(()=>{n.current=!1},[d.projectSlug]);let o=(0,c.useCallback)(async(c,e=!1)=>{if(b){h(!0);try{let b=new URLSearchParams;if(a.teamId&&b.set("teamId",a.teamId),a.statuses?.length)for(let c of a.statuses)b.append("status",c);if(a.search&&b.set("search",a.search),a.assigneeIds?.length)for(let c of a.assigneeIds)b.append("assigneeId",c);else a.assignedToMe&&b.set("assignedToMe","true");a.cycleId&&b.set("cycleId",a.cycleId),a.sortBy&&b.set("sortBy",a.sortBy),a.sortDir&&b.set("sortDir",a.sortDir),a.hasActivity&&b.set("hasActivity","true"),c&&m.current&&b.set("cursor",m.current),d.projectSlug&&b.set("projectSlug",d.projectSlug),d.limit&&b.set("limit",String(d.limit)),e&&b.set("refresh","true");let g=await fetch(`/api/linear/issues?${b.toString()}`),h=await g.json(),i=h.issues??[];f(a=>c?[...a,...i]:i),j(h.pageInfo?.endCursor??null),l(h.pageInfo?.hasNextPage??!1),n.current=!0}catch{c||f([])}finally{h(!1)}}},[a.teamId,a.statuses,a.search,a.assigneeIds,a.assignedToMe,a.cycleId,a.sortBy,a.sortDir,a.hasActivity,b,d.projectSlug,d.limit]);(0,c.useEffect)(()=>{j(null),o(!1,!n.current)},[o]);let p=(0,c.useCallback)(()=>o(!0),[o]);return{issues:e,loading:g,hasMore:k,loadMore:p,refresh:(0,c.useCallback)(()=>(j(null),o(!1,!0)),[o]),updateIssue:(0,c.useCallback)(a=>{f(b=>b.map(b=>b.id===a.id?a:b))},[])}}((0,c.useMemo)(()=>({search:Q||void 0,statuses:am.length>0&&am.length<ag.length?am:void 0,assigneeIds:ak.length>0?ak:void 0,teamId:as||void 0,cycleId:aq||void 0,sortBy:au,sortDir:aw,hasActivity:ay||void 0}),[Q,ak,aq,am,as,ag.length,au,aw,ay]),g,{projectSlug:d}),a2=(0,c.useMemo)(()=>aV?aY.find(a=>a.id===aV)??null:null,[aY,aV]),a3=a2??(aA?.id===aV?aA:null),{runs:a4,loading:a5,createRun:a6,updateRun:a7}=function(a,b){let[d,e]=(0,c.useState)([]),[f,g]=(0,c.useState)(!1),h=(0,c.useRef)(a??null);h.current=a??null;let i=(0,c.useCallback)(async()=>{let a=h.current?.trim();if(!a)return e([]),[];g(!0);try{let c=new URLSearchParams({issueId:a});b&&c.set("projectId",b);let d=await fetch(`/api/linear/runs?${c.toString()}`);if(!d.ok)throw Error(`Failed to fetch Linear runs: ${d.status}`);let f=await d.json(),g=Array.isArray(f.runs)?f.runs:[];return e(g),g}finally{g(!1)}},[b]);return(0,c.useEffect)(()=>{e([]),i()},[i,a]),(0,c.useEffect)(()=>{if(!a)return;let b=window.setInterval(()=>{i()},3e3);return()=>window.clearInterval(b)},[a,i]),{runs:d,loading:f,refresh:i,createRun:(0,c.useCallback)(async a=>{let b=await fetch("/api/linear/runs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||`Failed to create Linear run: ${b.status}`);let c=(await b.json()).run;return e(a=>[c,...a.filter(a=>a.id!==c.id)]),c},[]),updateRun:(0,c.useCallback)(async(a,b)=>{let c=await fetch(`/api/linear/runs/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok)throw Error((await c.json().catch(()=>({}))).error||`Failed to update Linear run: ${c.status}`);let d=(await c.json()).run;return e(a=>a.map(a=>a.id===d.id?d:a)),d},[])}}(a3?.id,a??null),{scripts:a8,activeScriptId:a9,activeScript:ba,setActiveScriptId:bb,saveScript:bc,deleteScript:bd}=function(a){let[b,d]=(0,c.useState)([]),[e,f]=(0,c.useState)(null);(0,c.useEffect)(()=>{let a={...y};d(a.scripts),f(a.activeScriptId)},[a]);let g=(0,c.useCallback)((a,b)=>{d(a),f(b)},[a]),h=(0,c.useCallback)(a=>{let c=a&&b.some(b=>b.id===a)?a:null;g(b,c)},[g,b]),i=(0,c.useCallback)(a=>{let c=new Date().toISOString(),d=a.name.trim(),e=a.prompt.trim();if(!d||!e)throw Error("Run script name and prompt are required.");let f=a.id?b.find(b=>b.id===a.id):null,h=f?{...f,name:d,prompt:e,updatedAt:c}:{id:crypto.randomUUID(),name:d,prompt:e,createdAt:c,updatedAt:c};return g([...f?b.map(a=>a.id===f.id?h:a):[h,...b]].sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt)),h.id),h},[g,b]),j=(0,c.useCallback)(a=>{g(b.filter(b=>b.id!==a),e===a?null:e)},[e,g,b]),k=(0,c.useMemo)(()=>b.find(a=>a.id===e)??null,[e,b]);return{scripts:b,activeScriptId:e,activeScript:k,setActiveScriptId:h,saveScript:i,deleteScript:j}}(d),be=aW&&"new"!==aW?a4.find(a=>a.id===aW)??null:null,bf=(0,c.useMemo)(()=>_.map(a=>({value:a.id,label:a.name})),[_]),bg=(0,c.useMemo)(()=>ag.map(a=>({value:a,label:a})),[ag]),bh=(0,c.useMemo)(()=>Array.from(new Set([a3?.status??"",...ag].map(a=>a.trim()).filter(Boolean))).map(a=>({value:a,label:a})),[a3?.status,ag]),bi=(0,c.useMemo)(()=>[{value:"",label:"Workspace"},...ai.map(a=>({value:a.id,label:a.name}))],[ai]),bj=(0,c.useMemo)(()=>[{value:"",label:"Cycle"},...ao.map(a=>({value:a.id,label:a.name||`Cycle ${a.number}`}))],[ao]),bk=bg.length>0,bl=bj.length>1,bm=bi.length>2,bn=ba?.name??"AGX default",bo=(0,c.useCallback)(async(a,b)=>{let c=b.trim();if(c&&c!==a.status){aD(a.id);try{let b=await fetch(`/api/linear/issues/${encodeURIComponent(a.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:c})}),d=await b.json().catch(()=>({}));if(!b.ok||!d.issue)throw Error(d.error||"Failed to update ticket status");let e=d.issue;a1(e),aV===e.id&&aB(e),await a0()}catch(a){a instanceof Error&&window.alert(a.message)}finally{aD(b=>b===a.id?null:b)}}},[a0,aV,a1]);(0,c.useEffect)(()=>{if(!aV)return void aB(null);if(a2)return void aB(a=>a?.id===aV?a2:null);let a=!1;return(async()=>{try{let b=await fetch(`/api/linear/issues/${encodeURIComponent(aV)}`);if(a)return;if(404===b.status)return void aU({issue:null,run:null});if(!b.ok)throw Error(`Failed to fetch selected Linear ticket: ${b.status}`);let c=await b.json().catch(()=>({}));if(!c.issue?.id)return void aU({issue:null,run:null});aB(c.issue)}catch(b){a||console.error("Failed to hydrate selected Linear issue",b)}})(),()=>{a=!0}},[aU,a2,aV]),(0,c.useEffect)(()=>{if(!aV){aW&&aU({run:null});return}},[aU,aV,aW]),(0,c.useEffect)(()=>{a3&&aW&&"new"!==aW&&!a5&&(a4.some(a=>a.id===aW)||aU({run:null}))},[aU,a4,a5,a3,aW]),(0,c.useEffect)(()=>{if(f){if(!a3)return void aN("runs");if("new"===aW||be||0===a4.length)return void aN("ticket");aN("runs")}},[f,a4.length,a3,be,aW]),(0,c.useEffect)(()=>{let b=!1;return async function(){try{let c=await fetch("/api/participants"),d=c.ok?await c.json():[];if(!a){b||aF(d);return}let e=await fetch(`/api/projects/${encodeURIComponent(a)}/agents`);if(!e.ok){b||aF(d);return}let f=await e.json(),g=Array.isArray(f.agents)?f.agents.map(a=>a.agent_id).filter(a=>"string"==typeof a&&a.trim().length>0):[],h=new Map(g.map((a,b)=>[a,b])),i=d.filter(a=>h.has(a.id)).sort((a,b)=>(h.get(a.id)??Number.MAX_SAFE_INTEGER)-(h.get(b.id)??Number.MAX_SAFE_INTEGER));b||aF(i)}catch{b||aF([])}}(),()=>{b=!0}},[a]),(0,c.useEffect)(()=>{let b=!1;async function c(){try{let c=new URLSearchParams;a&&c.set("projectId",a);let d=await fetch(`/api/linear/issues/active-agents?${c}`);if(!d.ok||b)return;let e=await d.json(),f=new Map;for(let a of e.agents??[]){let b=f.get(a.issueId)??[];b.push({agentId:a.agentId,agentName:a.agentName}),f.set(a.issueId,b)}b||aH(f)}catch{}}c();let d=setInterval(()=>void c(),5e3);return()=>{b=!0,clearInterval(d)}},[a]),(0,c.useEffect)(()=>{if(!D)return;let a=a=>{let b=a.target;aR.current?.contains(b)||aQ.current?.contains(b)||E(!1)},b=a=>{"Escape"===a.key&&E(!1)};return document.addEventListener("pointerdown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("pointerdown",a),document.removeEventListener("keydown",b)}},[D]);let bp=(0,c.useCallback)(async(b,c)=>{aJ(null),aL(null);try{let e=await fetch("/api/linear/runs/scripted",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:a??void 0,projectSlug:d??void 0,issueId:b.id,issueIdentifier:b.identifier,issueTitle:b.title,issueStatus:b.status,issueAssignee:b.assignee,agentId:c.id,scriptName:ba?.name,scriptPrompt:ba?.prompt})}),f=await e.json().catch(()=>({}));if(!e.ok||!f.run||!f.chatRunId||!f.userMessageId)throw Error(f.error||"Failed to start scripted session");aT({issue:b.id,run:f.run.id})}catch(a){console.error("Failed to start scripted Linear session:",a),a instanceof Error&&window.alert(a.message)}},[ba,a,d,aT]),bq=(0,c.useCallback)((a,b)=>{if(E(!1),0===aE.length)return void window.alert("Add at least one agent to this project before starting a scripted session.");if(1===aE.length)return void bp(a,aE[0]);let c=b?.currentTarget?.getBoundingClientRect();aJ(a),aL(c?{top:c.bottom+4,left:c.left}:{top:200,left:200})},[bp,aE]),br=(0,c.useRef)(null);if((0,c.useEffect)(()=>{let a=br.current;if(!a||!a$)return;let b=new IntersectionObserver(a=>{a[0]?.isIntersecting&&a_()},{threshold:.1});return b.observe(a),()=>b.disconnect()},[a$,a_]),j)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Loading..."});let bs=g&&!z&&!Object.values(m).some(Boolean);return!g||bs?(0,b.jsx)(P,{connected:g,user:k,clis:l,mcpConfigured:m,onConnect:n,onConnectWithKey:o,onDisconnect:p,onConfigureMcp:u,onContinue:()=>A(!0)}):(0,b.jsxs)("div",{className:"relative flex h-full overflow-hidden",children:[f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,b.jsxs)("div",{className:"shrink-0 border-b border-[var(--card-border)]",children:[(0,b.jsxs)("div",{className:"flex h-12 items-center gap-2 px-3",children:[(0,b.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,b.jsx)(s.Search,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("input",{type:"text",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]",placeholder:"Search tickets...",value:N,onChange:a=>aX(a.target.value)})]}),(0,b.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 a0(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:aZ,children:(0,b.jsx)(r.RefreshCw,{size:16,className:aZ?"animate-spin":void 0})}),(0,b.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:()=>{E(!1),C(!0)},title:"Linear settings",children:(0,b.jsx)(t.Settings,{size:16})})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 pb-2",children:[bk?(0,b.jsx)(aa,{label:"Status",values:am,options:bg,activeClasses:"border-amber-500/30 bg-amber-500/10 text-amber-300",onChange:an,emptyLabel:"All statuses"}):null,(0,b.jsx)(aa,{label:"Assignee",values:ak,options:bf,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:al,emptyLabel:"All assignees"}),bm?(0,b.jsx)($,{label:"Workspace",value:as,options:bi,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:at}):null,bl?(0,b.jsx)($,{label:"Cycle",value:aq,options:bj,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:ar}):null,(0,b.jsx)($,{label:"Sort",value:au,options:[{value:"activity",label:"Activity"},{value:"identifier",label:"Ticket ID"},{value:"status",label:"Status"},{value:"created",label:"Created"}],activeClasses:"border-sky-500/30 bg-sky-500/10 text-sky-400",onChange:a=>av(a)}),(0,b.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"===aw?"Descending":"Ascending",onClick:()=>ax(a=>"desc"===a?"asc":"desc"),children:"desc"===aw?(0,b.jsx)(h,{size:12}):(0,b.jsx)(i,{size:12})}),(0,b.jsx)("button",{type:"button",className:`flex items-center gap-1 rounded-full border px-2.5 py-1 text-[11px] font-medium transition-colors ${ay?"border-orange-500/30 bg-orange-500/10 text-orange-400":"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,onClick:()=>az(a=>!a),children:"My activity"})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:aZ&&0===aY.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===aY.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No tickets found."}):(0,b.jsxs)(b.Fragment,{children:[aY.map(a=>(0,b.jsx)(ad,{issue:a,selected:a3?.id===a.id,activeAgents:aG.get(a.id),participants:aE,onSelect:()=>{aN("runs"),aT({issue:a.id,run:null})}},a.id)),a$?(0,b.jsx)("div",{ref:br,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:aZ?"Loading...":"Load more"}):null]})})]}),a3?(0,b.jsxs)("div",{className:"absolute inset-0 z-20 flex flex-col bg-[var(--background)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--card-border)] px-4 py-3",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:a3.identifier}),(0,b.jsx)("div",{className:"truncate text-sm font-semibold text-[var(--foreground)]",children:a3.title})]}),(0,b.jsx)("button",{type:"button",className:"rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>aU({issue:null,run:null}),"aria-label":"Close ticket panel",children:(0,b.jsx)(v.X,{size:16})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--card-border)] px-3 py-2",children:[(0,b.jsx)("button",{type:"button",className:`rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${"runs"===aM?"bg-[var(--card-bg)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"}`,onClick:()=>aN("runs"),children:"Runs"}),(0,b.jsx)("button",{type:"button",className:`rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${"ticket"===aM?"bg-[var(--card-bg)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"}`,onClick:()=>aN("ticket"),children:"Ticket"})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden",children:"runs"===aM?(0,b.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,b.jsxs)("div",{className:"relative flex items-center justify-between border-b border-[var(--card-border)] px-3 py-2",children:[(0,b.jsx)("h3",{className:"text-xs font-semibold text-[var(--foreground)]",children:"Sessions"}),(0,b.jsxs)("button",{ref:aQ,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:()=>{E(!1),aN("ticket"),aT({run:"new"})},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:!a3,children:[(0,b.jsx)(q.Plus,{size:12}),"New session"]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:a5&&0===a4.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading sessions..."}):0===a4.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No previous sessions yet."}):a4.map(a=>{let c=U(a);return(0,b.jsxs)("button",{type:"button",className:`w-full px-3 py-2 text-left text-xs transition-colors ${be?.id===a.id?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]"}`,onClick:()=>{aN("ticket"),aT({run:a.id})},children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate text-[11px] font-medium text-[var(--foreground)]",children:V(a)}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:T(a.startedAt)})]}),(0,b.jsxs)("div",{className:"mt-0.5 flex items-center gap-1.5 text-[10px]",children:[(0,b.jsx)("span",{className:`font-medium ${Z[c.tone]}`,children:c.label}),(0,b.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:a.agentName})]}),null!=a.durationMs?(0,b.jsxs)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:[(a.durationMs/1e3).toFixed(1),"s"]}):null]},a.id)})})]}):be?(0,b.jsx)(ac,{issue:a3??{id:be.issueId,identifier:be.issueIdentifier,title:be.issueTitle,url:null,status:be.issueStatus,assignee:be.issueAssignee,updatedAt:be.updatedAt},run:be,participants:aE,issueStatusOptions:bh,issueStatusUpdating:aC===be.issueId,onIssueStatusChange:bo}):0===aE.length?(0,b.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."}):"new"===aW||0===a4.length?(0,b.jsx)(ab,{issue:a3,participants:aE,projectId:a,projectSlug:d,issueStatusOptions:bh,issueStatusUpdating:aC===a3.id,onIssueStatusChange:bo,activeSessionScriptLabel:bn,onOpenSessionScripts:()=>E(!0),onStartScriptedSession:a=>bq(a3,a),createRun:a6,updateRun:a7,onRunCreated:a=>aT({run:a})},a3.id):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:a5?"Loading sessions...":"Select a session to continue."})})]}):null]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex shrink-0 flex-col border-r border-[var(--card-border)]",style:{width:F},children:[(0,b.jsxs)("div",{className:"shrink-0 border-b border-[var(--card-border)]",children:[(0,b.jsxs)("div",{className:"flex h-12 items-center gap-2 px-3",children:[(0,b.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,b.jsx)(s.Search,{size:14,className:"shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("input",{type:"text",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]",placeholder:"Search tickets...",value:N,onChange:a=>aX(a.target.value)})]}),(0,b.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 a0(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:aZ,children:(0,b.jsx)(r.RefreshCw,{size:16,className:aZ?"animate-spin":void 0})}),(0,b.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:()=>{E(!1),C(!0)},title:"Linear settings",children:(0,b.jsx)(t.Settings,{size:16})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pb-2",children:[bk?(0,b.jsx)(aa,{label:"Status",values:am,options:bg,activeClasses:"border-amber-500/30 bg-amber-500/10 text-amber-300",onChange:an,emptyLabel:"All statuses"}):null,(0,b.jsx)(aa,{label:"Assignee",values:ak,options:bf,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:al,emptyLabel:"All assignees"}),bm?(0,b.jsx)($,{label:"Workspace",value:as,options:bi,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:at}):null,bl?(0,b.jsx)($,{label:"Cycle",value:aq,options:bj,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:ar}):null,(0,b.jsx)($,{label:"Sort",value:au,options:[{value:"activity",label:"Activity"},{value:"identifier",label:"Ticket ID"},{value:"status",label:"Status"},{value:"created",label:"Created"}],activeClasses:"border-sky-500/30 bg-sky-500/10 text-sky-400",onChange:a=>av(a)}),(0,b.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"===aw?"Descending":"Ascending",onClick:()=>ax(a=>"desc"===a?"asc":"desc"),children:"desc"===aw?(0,b.jsx)(h,{size:12}):(0,b.jsx)(i,{size:12})}),(0,b.jsx)("button",{type:"button",className:`flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${ay?"border-orange-500/30 bg-orange-500/10 text-orange-400":"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,onClick:()=>az(a=>!a),children:"My activity"})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:aZ&&0===aY.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===aY.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No tickets found."}):(0,b.jsxs)(b.Fragment,{children:[aY.map(a=>(0,b.jsx)(ad,{issue:a,selected:a3?.id===a.id,activeAgents:aG.get(a.id),participants:aE,onSelect:()=>aT({issue:a.id,run:null})},a.id)),a$?(0,b.jsx)("div",{ref:br,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:aZ?"Loading...":"Load more"}):null]})})]}),(0,b.jsx)(R,{onResize:a=>H(b=>{let c=Math.max(180,Math.min(600,b+a));return(0,K.persistLinearTicketPanelWidth)(c),c})}),(0,b.jsxs)("div",{className:"flex shrink-0 flex-col border-r border-[var(--card-border)]",style:{width:L},children:[(0,b.jsxs)("div",{className:"relative flex items-center justify-between border-b border-[var(--card-border)] px-3 py-2",children:[(0,b.jsx)("h3",{className:"text-xs font-semibold text-[var(--foreground)]",children:"Sessions"}),(0,b.jsxs)("button",{ref:aQ,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:()=>{E(!1),aT({run:"new"})},title:"Open a fresh chat for this ticket. You can choose or edit the session script in the session details pane.","aria-label":"New session",disabled:!a3,children:[(0,b.jsx)(q.Plus,{size:12}),"New session"]}),D?(0,b.jsx)("div",{ref:aR,className:"absolute right-3 top-full z-20 mt-2 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,b.jsx)(G,{projectSlug:d,scripts:a8,activeScriptId:a9,onSetActiveScriptId:bb,onSaveScript:bc,onDeleteScript:bd})}):null]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:a3?(0,b.jsx)(b.Fragment,{children:a5&&0===a4.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading sessions..."}):0===a4.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No previous sessions yet."}):a4.map(a=>{let c=U(a);return(0,b.jsxs)("button",{type:"button",className:`w-full px-3 py-2 text-left text-xs transition-colors ${be?.id===a.id?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]"}`,onClick:()=>aT({run:a.id}),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate text-[11px] font-medium text-[var(--foreground)]",children:V(a)}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:T(a.startedAt)})]}),(0,b.jsxs)("div",{className:"mt-0.5 flex items-center gap-1.5 text-[10px]",children:[(0,b.jsx)("span",{className:`font-medium ${Z[c.tone]}`,children:c.label}),(0,b.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:a.agentName})]}),null!=a.durationMs?(0,b.jsxs)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:[(a.durationMs/1e3).toFixed(1),"s"]}):null]},a.id)})}):(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Select a ticket to see sessions."})})]}),(0,b.jsx)(R,{onResize:a=>M(b=>{let c=Math.max(140,Math.min(500,b+a));return(0,K.persistLinearRunsPanelWidth)(c),c})}),(0,b.jsx)("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:be?(0,b.jsx)(ac,{issue:a3??{id:be.issueId,identifier:be.issueIdentifier,title:be.issueTitle,url:null,status:be.issueStatus,assignee:be.issueAssignee,updatedAt:be.updatedAt},run:be,participants:aE,issueStatusOptions:bh,issueStatusUpdating:aC===be.issueId,onIssueStatusChange:bo}):a3?0===aE.length?(0,b.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."}):"new"===aW||0===a4.length?(0,b.jsx)(ab,{issue:a3,participants:aE,projectId:a,projectSlug:d,issueStatusOptions:bh,issueStatusUpdating:aC===a3.id,onIssueStatusChange:bo,activeSessionScriptLabel:bn,onOpenSessionScripts:()=>E(!0),onStartScriptedSession:a=>bq(a3,a),createRun:a6,updateRun:a7,onRunCreated:a=>aT({run:a})},a3.id):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:a5?"Loading sessions...":"Select a session to continue."}):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Select a ticket from the list."})})]}),B&&(0,b.jsx)("div",{className:"absolute inset-0 z-30 flex items-center justify-center bg-black/50",children:(0,b.jsxs)("div",{className:"relative w-full max-w-lg rounded-lg border border-[var(--card-border)] bg-[var(--background)] shadow-xl",children:[(0,b.jsx)("button",{type:"button",className:"absolute right-3 top-3 rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>C(!1),children:"×"}),(0,b.jsx)("div",{className:"max-h-[80vh] overflow-y-auto p-6",children:(0,b.jsx)(P,{connected:g,user:k,clis:l,mcpConfigured:m,onConnect:n,onConnectWithKey:o,onDisconnect:p,onConfigureMcp:u,onContinue:()=>C(!1)})})]})}),D&&f?(0,b.jsx)("div",{className:"absolute inset-0 z-30 flex items-center justify-center bg-black/50 p-4",children:(0,b.jsx)("div",{ref:aR,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,b.jsx)(G,{projectSlug:d,scripts:a8,activeScriptId:a9,onSetActiveScriptId:bb,onSaveScript:bc,onDeleteScript:bd})})}):null,aI&&aK&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 z-40",onClick:()=>{aJ(null),aL(null)}}),(0,b.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:aK.top,left:aK.left},children:[(0,b.jsx)("div",{className:"px-3 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Pick an agent"}),aE.map(a=>(0,b.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 bp(aI,a),children:[(0,b.jsx)("img",{src:S(a.id,a.color,20),alt:"",className:"h-5 w-5 shrink-0 rounded-full"}),(0,b.jsxs)("span",{className:"flex flex-col",children:[(0,b.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:a.name}),a.title?(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:a.title}):null]})]},a.id))]})]})]})}a.s(["default",0,function({params:a}){let{slug:f}=(0,c.use)(a),g=(0,d.useSearchParams)(),{projects:h}=(0,e.useProjects)(),i=h.find(a=>a.slug===f),j="true"===g.get("settings");return(0,b.jsx)(ae,{projectId:i?.id,projectSlug:i?.slug??f,initialShowSettings:j})}],576608)}];
38
38
 
39
39
  //# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_linear_page_tsx_0a~n5y8._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[143159,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(654340);function f({projectSlug:a,projectThreadIds:g=[]}){let h=(0,d.useRouter)(),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)([]),m=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();l(Array.isArray(b)?b:b.participants??[])}catch{}},[]);(0,c.useEffect)(()=>{m()},[m]),(0,c.useEffect)(()=>{let b=!1,c=a.trim().toLowerCase(),d=new Set(g.map(a=>a.trim()).filter(Boolean)),e=async()=>{try{let a=await fetch("/api/processes?enrich=1");if(!a.ok||b)return;let e=await a.json();if(b)return;let f=e.filter(a=>"spawning"===a.state||"running"===a.state).filter(a=>{let b=a.projectSlug.trim().toLowerCase();return!!b&&b===c||d.has(a.workspaceId)||d.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity);j(f)}catch{}};e();let f=setInterval(e,3e3);return()=>{b=!0,clearInterval(f)}},[a,g]);let n=new Map(k.map(a=>[a.id,a.name])),o=a=>n.get(a)||a.slice(0,8),p=[],q=new Map;for(let a of i){let b=q.get(a.agentId);b||(b={agentId:a.agentId,agentName:o(a.agentId),activities:[]},q.set(a.agentId,b),p.push(b)),b.activities.push({key:`${a.workspaceId}-${a.threadId}-${a.agentId}`,workspaceId:a.workspaceId,threadId:a.threadId,state:a.state,threadLabel:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread",lastActiveLabel:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity),lastActivity:a.lastActivity,linearIssueId:a.linearIssueId,linearRunId:a.linearRunId})}if(0===p.length)return null;let r=i.length;return(0,b.jsxs)("section",{className:"col-span-full rounded-2xl border border-zinc-800 bg-zinc-900/50 overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-zinc-800 px-4 py-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-zinc-500",children:[(0,b.jsx)(e.Activity,{className:"h-3.5 w-3.5"}),"Working Now"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-zinc-500",children:[p.length," ",1===p.length?"agent":"agents"," active across"," ",r," ",1===r?"thread":"threads","."]})]}),(0,b.jsxs)("span",{className:"rounded-full border border-emerald-700/60 bg-emerald-500/10 px-2.5 py-1 text-[10px] font-medium uppercase tracking-wider text-emerald-300",children:[r," live ",1===r?"entry":"entries"]})]}),(0,b.jsx)("div",{className:"divide-y divide-zinc-800/80",children:p.map(c=>(0,b.jsxs)("div",{className:"px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm font-medium text-zinc-100",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-emerald-400 animate-pulse"}),c.agentName]}),c.activities.length>1&&(0,b.jsxs)("span",{className:"rounded-full bg-zinc-800 px-2 py-0.5 text-[10px] text-zinc-400",children:[c.activities.length," threads"]})]}),(0,b.jsx)("div",{className:"space-y-1 ml-4",children:c.activities.map(c=>(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-lg px-2 py-1.5 -mx-2 cursor-pointer text-sm transition-colors hover:bg-zinc-800/40",onClick:()=>h.push(c.linearIssueId&&c.linearRunId?`/projects/${a}/linear?issue=${encodeURIComponent(c.linearIssueId)}&run=${encodeURIComponent(c.linearRunId)}`:`/projects/${a}/thread/${encodeURIComponent(c.workspaceId)}${c.threadId?`?open=${encodeURIComponent(c.threadId)}`:""}`),children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 shrink-0 rounded-full border border-emerald-700/60 bg-emerald-500/10 px-2 py-0.5 text-[11px] font-medium text-emerald-300",children:[(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400"}),"spawning"===c.state?"Starting":"Working"]}),(0,b.jsx)("span",{className:"text-zinc-400 truncate min-w-0 flex-1",children:c.threadLabel}),(0,b.jsx)("span",{className:"text-zinc-500 text-xs shrink-0",children:c.lastActiveLabel})]},c.key))})]},c.agentId))})]})}var g=a.i(985339),h=a.i(549429);function i({projectId:a,onViewAll:d}){let[e,f]=(0,c.useState)([]),[j,k]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>f(a.teams??[])).catch(()=>f([])).finally(()=>k(!1))},[a]),(0,b.jsxs)("div",{className:"rounded-2xl border border-zinc-800 bg-zinc-900/50 p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(g.Users,{className:"w-4 h-4 text-zinc-400"}),(0,b.jsx)("span",{className:"text-sm font-medium text-zinc-200",children:"Teams"}),!j&&e.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-zinc-800 px-2 py-0.5 text-xs text-zinc-400",children:e.length})]}),d&&(0,b.jsxs)("button",{onClick:d,className:"flex items-center gap-1 text-xs text-zinc-500 hover:text-zinc-300",children:["View all ",(0,b.jsx)(h.ArrowRight,{className:"w-3 h-3"})]})]}),j?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 rounded bg-zinc-800 animate-pulse"},a))}):0===e.length?(0,b.jsx)("p",{className:"text-sm text-zinc-500",children:"No teams yet"}):(0,b.jsx)("div",{className:"space-y-2",children:e.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(g.Users,{className:"w-4 h-4 text-zinc-500"}),(0,b.jsx)("span",{className:"text-zinc-300",children:a.name}),(0,b.jsxs)("span",{className:"text-zinc-500",children:[a.agents.length," agents"]})]},a.id))})]})}var j=a.i(820859);function k({projectId:a,projectSlug:e,onViewAll:f}){let g=(0,d.useRouter)(),[i,l]=(0,c.useState)([]),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)({}),[q,r]=(0,c.useState)(!0),[s,t]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=window.setInterval(()=>{t(Date.now())},3e4);return()=>{window.clearInterval(a)}},[]),(0,c.useEffect)(()=>{let b=!1,c=async()=>{try{let[c,d]=await Promise.all([fetch("/api/automations"),fetch(`/api/prompt-jobs?projectId=${encodeURIComponent(a)}`)]),e=c.ok?await c.json():{automations:[]},f=d.ok?await d.json():{jobs:[]};if(b)return;let g=(e.automations??[]).filter(b=>b.projectId===a).slice(0,20),h=(f.jobs??[]).filter(b=>b.projectId===a).slice(0,20);l(g),n(h);let i=Object.fromEntries(await Promise.all(h.map(async a=>{try{let b=await fetch(`/api/prompt-jobs/${encodeURIComponent(a.id)}/runs`);if(!b.ok)return[a.id,null];let c=((await b.json()).runs??[])[0]??null;return[a.id,c]}catch{return[a.id,null]}})));if(b)return;p(i)}catch{if(b)return;l([]),n([]),p({})}finally{b||r(!1)}};return r(!0),c(),()=>{b=!0}},[a]);let u=a=>{if(!e||"prompt"!==a.kind)return;let b=new URLSearchParams({job:a.jobId});a.runId&&b.set("run",a.runId),g.push(`/projects/${e}/automations?${b.toString()}`)},v=[...m.filter(a=>{let b=o[a.id];return b?.status==="queued"||b?.status==="running"}).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:o[a.id]?.id??null,updatedAt:o[a.id]?.createdAt??a.updatedAt})),...i.filter(a=>"running"===a.executionState||a.schedule?.tickInProgress).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",updatedAt:a.updatedAt}))].sort((a,b)=>Date.parse(b.updatedAt)-Date.parse(a.updatedAt)),w=new Set(v.map(a=>a.id)),x=[...m.filter(a=>"active"===a.state&&"number"==typeof a.nextRunAt).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:null,nextRunAt:a.nextRunAt})),...i.filter(a=>a.schedule?.state==="active"&&"number"==typeof a.schedule?.nextTickAt).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",nextRunAt:a.schedule.nextTickAt}))].filter(a=>!w.has(a.id)).sort((a,b)=>a.nextRunAt-b.nextRunAt),y=m.length+i.length;return(0,b.jsxs)("div",{className:"rounded-2xl border border-zinc-800 bg-zinc-900/50 p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(j.Clock,{className:"w-4 h-4 text-zinc-400"}),(0,b.jsx)("span",{className:"text-sm font-medium text-zinc-200",children:"Scheduled Tasks"}),!q&&y>0&&(0,b.jsx)("span",{className:"rounded-full bg-zinc-800 px-2 py-0.5 text-xs text-zinc-400",children:y})]}),f&&(0,b.jsxs)("button",{onClick:f,className:"flex items-center gap-1 text-xs text-zinc-500 hover:text-zinc-300",children:["View all ",(0,b.jsx)(h.ArrowRight,{className:"w-3 h-3"})]})]}),q?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 rounded bg-zinc-800 animate-pulse"},a))}):0===y?(0,b.jsx)("p",{className:"text-sm text-zinc-500",children:"No scheduled tasks"}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-zinc-500",children:[(0,b.jsx)("span",{children:"Currently running"}),(0,b.jsx)("span",{children:v.length})]}),0===v.length?(0,b.jsx)("p",{className:"text-sm text-zinc-500",children:"Nothing running right now"}):(0,b.jsx)("div",{className:"space-y-2",children:v.slice(0,3).map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>u(a),disabled:"prompt"!==a.kind||!e,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&e?"cursor-pointer hover:bg-zinc-800/70":"cursor-default"}`,children:[(0,b.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,b.jsx)("span",{className:"truncate text-zinc-300",children:a.title}),(0,b.jsx)("span",{className:"ml-auto shrink-0 text-xs text-emerald-400",children:"running"})]},a.id))})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-zinc-500",children:[(0,b.jsx)("span",{children:"Upcoming runs"}),(0,b.jsx)("span",{children:x.length})]}),0===x.length?(0,b.jsx)("p",{className:"text-sm text-zinc-500",children:"No upcoming runs"}):(0,b.jsx)("div",{className:"space-y-2",children:x.slice(0,3).map(a=>{var c;return(0,b.jsxs)("button",{type:"button",onClick:()=>u(a),disabled:"prompt"!==a.kind||!e,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&e?"cursor-pointer hover:bg-zinc-800/70":"cursor-default"}`,children:[(0,b.jsx)(j.Clock,{className:"h-3.5 w-3.5 shrink-0 text-zinc-500"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-zinc-300",children:a.title}),(0,b.jsxs)("div",{className:"text-xs text-zinc-500",children:["number"!=typeof(c=a.nextRunAt)?"No next run":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(c))," ",(0,b.jsxs)("span",{className:"text-zinc-400",children:["• ",(a=>{if("number"!=typeof a)return"";let b=a-s;if(b<=0)return"now";let c=Math.ceil(b/6e4);if(c<60)return`in ${c}m`;let d=Math.floor(c/60),e=c%60;if(d<24)return 0===e?`in ${d}h`:`in ${d}h ${e}m`;let f=Math.floor(d/24),g=d%24;return 0===g?`in ${f}d`:`in ${f}d ${g}h`})(a.nextRunAt)]})]})]})]},a.id)})})]})]})]})}var l=a.i(736868),m=a.i(667597),n=a.i(353532),o=a.i(697183),p=a.i(824179),q=a.i(830284);function r({projectId:a,repos:d,onViewAll:e}){let{updateProject:f}=(0,q.useProjects)(),[g,i]=(0,c.useState)(d),[j,k]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[u,v]=(0,c.useState)(""),[w,x]=(0,c.useState)(""),[y,z]=(0,c.useState)(null);(0,c.useEffect)(()=>{i(d)},[d]);let A=a=>{z(a),window.setTimeout(()=>z(null),2500)},B=a=>a.map(a=>({id:a.id,name:a.name,path:a.path,git_url:a.git_url})),C=()=>{v(""),x(""),t(null),k(!1)},D=async()=>{let b=u.trim(),c=w.trim();if(b&&c){i([...g,{id:`tmp-${Date.now()}`,name:b,path:c}]),C();try{await f(a,{repos:[...B(g),{name:b,path:c}]}),A("Folder added")}catch{i(g),A("Failed to add folder")}}},E=async b=>{let c=u.trim(),d=w.trim();if(!c||!d)return;let e=g.map(a=>a.id===b?{...a,name:c,path:d}:a);i(e),C();try{await f(a,{repos:B(e)}),A("Folder updated")}catch{i(g),A("Failed to update folder")}},F=async b=>{let c=g.filter(a=>a.id!==b);i(c),s===b&&C();try{await f(a,{repos:B(c)}),A("Folder deleted")}catch{i(g),A("Failed to delete folder")}};return(0,b.jsxs)("div",{className:"rounded-2xl border border-zinc-800 bg-zinc-900/50 p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(l.FolderGit2,{className:"w-4 h-4 text-zinc-400"}),(0,b.jsx)("span",{className:"text-sm font-medium text-zinc-200",children:"Folders"}),g.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-zinc-800 px-2 py-0.5 text-xs text-zinc-400",children:g.length})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>{t(null),v(""),x(""),k(!0)},className:"flex items-center gap-1 text-xs text-zinc-500 hover:text-zinc-300",children:[(0,b.jsx)(n.Plus,{className:"w-3 h-3"}),"Add"]}),e&&(0,b.jsxs)("button",{onClick:e,className:"flex items-center gap-1 text-xs text-zinc-500 hover:text-zinc-300",children:["View all ",(0,b.jsx)(h.ArrowRight,{className:"w-3 h-3"})]})]})]}),y&&(0,b.jsx)("p",{className:"mb-3 text-xs text-zinc-500",children:y}),(j||s)&&(0,b.jsxs)("div",{className:"mb-3 rounded-xl border border-zinc-800 bg-zinc-950/50 p-3 space-y-2",children:[(0,b.jsx)("input",{value:u,onChange:a=>v(a.target.value),className:"input w-full text-sm",placeholder:"Folder name",autoFocus:!0}),(0,b.jsx)("input",{value:w,onChange:a=>x(a.target.value),className:"input w-full text-sm",placeholder:"Local path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{s?E(s):D()},disabled:!u.trim()||!w.trim(),className:"rounded-lg bg-zinc-200 px-3 py-1.5 text-xs font-medium text-zinc-950 disabled:opacity-40",children:"Save"}),(0,b.jsxs)("button",{type:"button",onClick:C,className:"flex items-center gap-1 rounded-lg px-2 py-1.5 text-xs text-zinc-500 hover:text-zinc-300",children:[(0,b.jsx)(p.X,{className:"w-3 h-3"}),"Cancel"]})]})]}),0===g.length?(0,b.jsx)("p",{className:"text-sm text-zinc-500",children:"No folders linked"}):(0,b.jsx)("div",{className:"space-y-2",children:g.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(l.FolderGit2,{className:"w-4 h-4 text-zinc-500 shrink-0"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-zinc-300 truncate",children:a.name}),a.path&&(0,b.jsx)("div",{className:"text-zinc-500 text-xs truncate",children:a.path})]}),(0,b.jsx)("button",{type:"button",onClick:()=>{k(!1),t(a.id),v(a.name),x(a.path??"")},className:"p-1 text-zinc-500 hover:text-zinc-300","aria-label":`Edit ${a.name}`,children:(0,b.jsx)(m.Pencil,{className:"w-3 h-3"})}),(0,b.jsx)("button",{type:"button",onClick:()=>void F(a.id),className:"p-1 text-zinc-500 hover:text-red-400","aria-label":`Delete ${a.name}`,children:(0,b.jsx)(o.Trash2,{className:"w-3 h-3"})})]},a.id))})]})}var s=a.i(489461),t=a.i(769677);let u={on_track:{label:"On Track",dot:"bg-emerald-400",badge:"text-emerald-400 border-emerald-700/60 bg-emerald-500/10"},at_risk:{label:"At Risk",dot:"bg-amber-400",badge:"text-amber-400 border-amber-700/60 bg-amber-500/10"},off_track:{label:"Off Track",dot:"bg-red-400",badge:"text-red-400 border-red-700/60 bg-red-500/10"},done:{label:"Done",dot:"bg-zinc-400",badge:"text-zinc-400 border-zinc-700/60 bg-zinc-500/10"}};function v({objective:a,teamName:c,onClick:d}){let e=u[a.status]??u.on_track,f="done"===a.status;return(0,b.jsxs)("button",{type:"button",onClick:d,className:`w-full text-left rounded-2xl border border-zinc-800 bg-zinc-900/50 p-4 transition-colors hover:bg-zinc-800/50 ${f?"opacity-60":""}`,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${e.dot}`}),(0,b.jsx)("span",{className:"text-sm font-medium text-zinc-200 truncate",children:a.title})]}),(0,b.jsx)("span",{className:`shrink-0 rounded-full border px-2 py-0.5 text-[11px] font-medium ${e.badge}`,children:e.label})]}),(0,b.jsx)("div",{className:"mb-2",children:(0,b.jsx)("div",{className:"h-1.5 rounded-full bg-zinc-800 overflow-hidden",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-emerald-500/70 transition-all",style:{width:`${Math.min(a.progress,100)}%`}})})}),(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs text-zinc-500",children:[(0,b.jsx)("span",{children:c??"No team"}),(0,b.jsxs)("span",{children:[a.progress,"%"]})]})]})}function w({projectId:a,projectSlug:e}){let f=(0,d.useRouter)(),{projects:g,isLoading:i}=(0,q.useProjects)(),j=(0,c.useMemo)(()=>g.find(a=>a.slug===e),[g,e]),k=(0,c.useMemo)(()=>(0,t.readProjectObjectivesWorkspace)(j?.metadata).objectives,[j?.metadata]),[l,m]=(0,c.useState)([]);(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>m(a.teams??[])).catch(()=>m([]))},[a]);let n=(0,c.useMemo)(()=>new Map(l.map(a=>[a.id,a.name])),[l]),o=k.filter(a=>a.progress>=100).length;return i?(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-28 rounded-2xl bg-zinc-800 animate-pulse"},a))}):0===k.length?(0,b.jsxs)("button",{type:"button",onClick:()=>f.push(`/projects/${e}/objectives`),className:"w-full rounded-2xl border border-dashed border-zinc-700 bg-zinc-900/30 p-6 text-center transition-colors hover:border-zinc-600 hover:bg-zinc-800/30",children:[(0,b.jsx)(s.Target,{className:"w-5 h-5 text-zinc-500 mx-auto mb-2"}),(0,b.jsx)("span",{className:"text-sm text-zinc-400",children:"Add your first objective"})]}):(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs text-zinc-500",children:[(0,b.jsxs)("span",{children:[k.length," ",1===k.length?"objective":"objectives"]}),(0,b.jsx)("span",{className:"text-zinc-700",children:"|"}),(0,b.jsxs)("span",{children:[o,"/",k.length," complete"]})]}),(0,b.jsxs)("button",{onClick:()=>f.push(`/projects/${e}/objectives`),className:"flex items-center gap-1 text-xs text-zinc-500 hover:text-zinc-300",children:["View all ",(0,b.jsx)(h.ArrowRight,{className:"w-3 h-3"})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:k.map(a=>(0,b.jsx)(v,{objective:a,teamName:n.get(a.teamId)??null,onClick:()=>f.push(`/projects/${e}/objectives/${encodeURIComponent(a.id)}`)},a.id))})]})}var x=a.i(737313),y=a.i(144462),z=a.i(675665),A=a.i(719550);function B({icon:a,title:c,accentClass:d,onClick:e,badge:f,children:g}){return(0,b.jsxs)("button",{type:"button",onClick:e,className:"w-full text-left rounded-2xl border border-zinc-800 bg-zinc-900/50 p-4 transition-colors hover:bg-zinc-800/50",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:d,children:a}),(0,b.jsx)("span",{className:"text-sm font-medium text-zinc-200",children:c})]}),f]}),g&&(0,b.jsx)("div",{className:"text-sm",children:g})]})}function C({projectId:a,projectSlug:e,primaryThreadId:f}){let g=(0,d.useRouter)(),{connected:h,loading:i}=(0,z.useLinearConnection)(),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(0);return(0,c.useEffect)(()=>{let b=!1;return fetch(`/api/threads?projectId=${encodeURIComponent(a)}&limit=3&format=json`).then(a=>a.ok?a.json():{threads:{},total:0}).then(a=>{if(b)return;let c=Object.values(a.threads??{}).flatMap(a=>a.threads??[]).slice(0,3);k(c),m("number"==typeof a.total?a.total:c.length)}).catch(()=>{b||(k([]),m(0))}),()=>{b=!0}},[a]),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,b.jsx)(B,{icon:(0,b.jsx)(x.MessageSquare,{className:"w-4 h-4"}),title:"Chat",accentClass:"text-indigo-400",onClick:()=>{f&&g.push(`/projects/${e}/thread/${encodeURIComponent(f)}`)},badge:l>0?(0,b.jsx)("span",{className:"rounded-full bg-zinc-800 px-2 py-0.5 text-xs text-zinc-400",children:l}):void 0,children:null===j?(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 rounded bg-zinc-800 animate-pulse"},a))}):0===j.length?(0,b.jsx)("p",{className:"text-zinc-500",children:"No threads yet"}):(0,b.jsx)("div",{className:"space-y-1",children:j.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-zinc-400 truncate",children:[(0,b.jsx)(x.MessageSquare,{className:"w-3 h-3 text-zinc-600 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.title})]},a.id))})}),(0,b.jsx)(B,{icon:(0,b.jsx)(y.TerminalSquare,{className:"w-4 h-4"}),title:"Terminal",accentClass:"text-emerald-400",onClick:()=>g.push(`/projects/${e}/terminal`),children:(0,b.jsx)("p",{className:"text-zinc-500",children:"No sessions yet"})}),(0,b.jsx)(B,{icon:(0,b.jsx)(A.LinearIcon,{className:"w-4 h-4"}),title:"Linear",accentClass:"text-blue-400",onClick:()=>g.push(`/projects/${e}/linear`),badge:i?void 0:h?(0,b.jsx)("span",{className:"rounded-full border border-emerald-700/60 bg-emerald-500/10 px-2 py-0.5 text-[11px] text-emerald-400",children:"Connected"}):(0,b.jsx)("span",{className:"rounded-full border border-zinc-700 bg-zinc-800 px-2 py-0.5 text-[11px] text-zinc-400",children:"Connect"}),children:!i&&!h&&(0,b.jsx)("p",{className:"text-zinc-500",children:"Connect to see issues"})})]})}function D({projectId:a,projectSlug:c,projectName:e,projectDescription:g,projectMetadata:h,repos:j,threadIds:l}){let m=(0,d.useRouter)(),n=l[0]??null;return(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:(0,b.jsxs)("div",{className:"max-w-5xl mx-auto px-6 py-8 space-y-8",children:[g&&(0,b.jsx)("p",{className:"text-sm text-zinc-400",children:g}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"text-sm text-zinc-500 mb-3",children:"What you're working toward"}),(0,b.jsx)(w,{projectId:a,projectSlug:c})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"text-sm text-zinc-500 mb-3",children:"Start working"}),(0,b.jsx)(C,{projectId:a,projectSlug:c,primaryThreadId:n})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"text-sm text-zinc-500 mb-3",children:"What's happening now"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(f,{projectSlug:c,projectThreadIds:l}),(0,b.jsx)(k,{projectId:a,projectSlug:c,onViewAll:()=>m.push(`/projects/${c}/automations`)})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsx)(r,{projectId:a,repos:j}),(0,b.jsx)(i,{projectId:a,onViewAll:()=>m.push(`/projects/${c}/teams`)})]})]})})}a.s(["default",0,function({params:a}){let{slug:d}=(0,c.use)(a),{projects:e}=(0,q.useProjectsWithAgents)(),f=e.find(a=>a.slug===d);return f?(0,b.jsx)(D,{projectId:f.id,projectSlug:f.slug,projectName:f.name,projectDescription:f.description,projectMetadata:f.metadata,repos:f.repos,threadIds:f.thread_ids}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading project..."})}],143159)}];
1
+ module.exports=[143159,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(654340);function f({projectSlug:a,projectThreadIds:g=[]}){let h=(0,d.useRouter)(),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)([]),m=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();l(Array.isArray(b)?b:b.participants??[])}catch{}},[]);(0,c.useEffect)(()=>{m()},[m]),(0,c.useEffect)(()=>{let b=!1,c=a.trim().toLowerCase(),d=new Set(g.map(a=>a.trim()).filter(Boolean)),e=async()=>{try{let a=await fetch("/api/processes?enrich=1");if(!a.ok||b)return;let e=await a.json();if(b)return;let f=e.filter(a=>"spawning"===a.state||"running"===a.state).filter(a=>{let b=a.projectSlug.trim().toLowerCase();return!!b&&b===c||d.has(a.workspaceId)||d.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity);j(f)}catch{}};e();let f=setInterval(e,3e3);return()=>{b=!0,clearInterval(f)}},[a,g]);let n=new Map(k.map(a=>[a.id,a.name])),o=a=>n.get(a)||a.slice(0,8),p=[],q=new Map;for(let a of i){let b=q.get(a.agentId);b||(b={agentId:a.agentId,agentName:o(a.agentId),activities:[]},q.set(a.agentId,b),p.push(b)),b.activities.push({key:`${a.workspaceId}-${a.threadId}-${a.agentId}`,workspaceId:a.workspaceId,threadId:a.threadId,state:a.state,threadLabel:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread",lastActiveLabel:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity),lastActivity:a.lastActivity,linearIssueId:a.linearIssueId,linearRunId:a.linearRunId})}if(0===p.length)return null;let r=i.length;return(0,b.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(e.Activity,{className:"h-3.5 w-3.5"}),"Working Now"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:[p.length," ",1===p.length?"agent":"agents"," active across"," ",r," ",1===r?"thread":"threads","."]})]}),(0,b.jsxs)("span",{className:"rounded-full border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-2.5 py-1 text-[10px] font-medium uppercase tracking-wider text-[var(--status-completed-text)]",children:[r," live ",1===r?"entry":"entries"]})]}),(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:p.map(c=>(0,b.jsxs)("div",{className:"px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm font-medium text-[var(--foreground)]",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-emerald-400 animate-pulse"}),c.agentName]}),c.activities.length>1&&(0,b.jsxs)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[c.activities.length," threads"]})]}),(0,b.jsx)("div",{className:"space-y-1 ml-4",children:c.activities.map(c=>(0,b.jsxs)("div",{className:"mx-[-0.5rem] flex cursor-pointer items-center gap-3 rounded-lg px-2 py-1.5 text-sm transition-colors hover:bg-[var(--secondary)]",onClick:()=>h.push(c.linearIssueId&&c.linearRunId?`/projects/${a}/linear?issue=${encodeURIComponent(c.linearIssueId)}&run=${encodeURIComponent(c.linearRunId)}`:`/projects/${a}/thread/${encodeURIComponent(c.workspaceId)}${c.threadId?`?open=${encodeURIComponent(c.threadId)}`:""}`),children:[(0,b.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-1.5 rounded-full border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-2 py-0.5 text-[11px] font-medium text-[var(--status-completed-text)]",children:[(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400"}),"spawning"===c.state?"Starting":"Working"]}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate text-[var(--foreground)]",children:c.threadLabel}),(0,b.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:c.lastActiveLabel})]},c.key))})]},c.agentId))})]})}var g=a.i(985339),h=a.i(549429);function i({projectId:a,onViewAll:d}){let[e,f]=(0,c.useState)([]),[j,k]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>f(a.teams??[])).catch(()=>f([])).finally(()=>k(!1))},[a]),(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(g.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Teams"}),!j&&e.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:e.length})]}),d&&(0,b.jsxs)("button",{onClick:d,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(h.ArrowRight,{className:"w-3 h-3"})]})]}),j?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===e.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No teams yet"}):(0,b.jsx)("div",{className:"space-y-2",children:e.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(g.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-[var(--foreground)]",children:a.name}),(0,b.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[a.agents.length," agents"]})]},a.id))})]})}var j=a.i(820859);function k({projectId:a,projectSlug:e,onViewAll:f}){let g=(0,d.useRouter)(),[i,l]=(0,c.useState)([]),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)({}),[q,r]=(0,c.useState)(!0),[s,t]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=window.setInterval(()=>{t(Date.now())},3e4);return()=>{window.clearInterval(a)}},[]),(0,c.useEffect)(()=>{let b=!1,c=async()=>{try{let[c,d]=await Promise.all([fetch("/api/automations"),fetch(`/api/prompt-jobs?projectId=${encodeURIComponent(a)}`)]),e=c.ok?await c.json():{automations:[]},f=d.ok?await d.json():{jobs:[]};if(b)return;let g=(e.automations??[]).filter(b=>b.projectId===a).slice(0,20),h=(f.jobs??[]).filter(b=>b.projectId===a).slice(0,20);l(g),n(h);let i=Object.fromEntries(await Promise.all(h.map(async a=>{try{let b=await fetch(`/api/prompt-jobs/${encodeURIComponent(a.id)}/runs`);if(!b.ok)return[a.id,null];let c=((await b.json()).runs??[])[0]??null;return[a.id,c]}catch{return[a.id,null]}})));if(b)return;p(i)}catch{if(b)return;l([]),n([]),p({})}finally{b||r(!1)}};return r(!0),c(),()=>{b=!0}},[a]);let u=a=>{if(!e||"prompt"!==a.kind)return;let b=new URLSearchParams({job:a.jobId});a.runId&&b.set("run",a.runId),g.push(`/projects/${e}/automations?${b.toString()}`)},v=[...m.filter(a=>{let b=o[a.id];return b?.status==="queued"||b?.status==="running"}).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:o[a.id]?.id??null,updatedAt:o[a.id]?.createdAt??a.updatedAt})),...i.filter(a=>"running"===a.executionState||a.schedule?.tickInProgress).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",updatedAt:a.updatedAt}))].sort((a,b)=>Date.parse(b.updatedAt)-Date.parse(a.updatedAt)),w=new Set(v.map(a=>a.id)),x=[...m.filter(a=>"active"===a.state&&"number"==typeof a.nextRunAt).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:null,nextRunAt:a.nextRunAt})),...i.filter(a=>a.schedule?.state==="active"&&"number"==typeof a.schedule?.nextTickAt).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",nextRunAt:a.schedule.nextTickAt}))].filter(a=>!w.has(a.id)).sort((a,b)=>a.nextRunAt-b.nextRunAt),y=m.length+i.length;return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(j.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Scheduled Tasks"}),!q&&y>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:y})]}),f&&(0,b.jsxs)("button",{onClick:f,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(h.ArrowRight,{className:"w-3 h-3"})]})]}),q?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===y?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks"}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Currently running"}),(0,b.jsx)("span",{children:v.length})]}),0===v.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Nothing running right now"}):(0,b.jsx)("div",{className:"space-y-2",children:v.slice(0,3).map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>u(a),disabled:"prompt"!==a.kind||!e,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&e?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,b.jsx)("span",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsx)("span",{className:"ml-auto shrink-0 text-xs text-[var(--status-completed-text)]",children:"running"})]},a.id))})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Upcoming runs"}),(0,b.jsx)("span",{children:x.length})]}),0===x.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No upcoming runs"}):(0,b.jsx)("div",{className:"space-y-2",children:x.slice(0,3).map(a=>{var c;return(0,b.jsxs)("button",{type:"button",onClick:()=>u(a),disabled:"prompt"!==a.kind||!e,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&e?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)(j.Clock,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsxs)("div",{className:"text-xs text-[var(--muted-foreground)]",children:["number"!=typeof(c=a.nextRunAt)?"No next run":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(c))," ",(0,b.jsxs)("span",{className:"text-[var(--app-shell-soft-text)]",children:["• ",(a=>{if("number"!=typeof a)return"";let b=a-s;if(b<=0)return"now";let c=Math.ceil(b/6e4);if(c<60)return`in ${c}m`;let d=Math.floor(c/60),e=c%60;if(d<24)return 0===e?`in ${d}h`:`in ${d}h ${e}m`;let f=Math.floor(d/24),g=d%24;return 0===g?`in ${f}d`:`in ${f}d ${g}h`})(a.nextRunAt)]})]})]})]},a.id)})})]})]})]})}var l=a.i(736868),m=a.i(667597),n=a.i(353532),o=a.i(697183),p=a.i(824179),q=a.i(830284);function r({projectId:a,repos:d,onViewAll:e}){let{updateProject:f}=(0,q.useProjects)(),[g,i]=(0,c.useState)(d),[j,k]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[u,v]=(0,c.useState)(""),[w,x]=(0,c.useState)(""),[y,z]=(0,c.useState)(null);(0,c.useEffect)(()=>{i(d)},[d]);let A=a=>{z(a),window.setTimeout(()=>z(null),2500)},B=a=>a.map(a=>({id:a.id,name:a.name,path:a.path,git_url:a.git_url})),C=()=>{v(""),x(""),t(null),k(!1)},D=async()=>{let b=u.trim(),c=w.trim();if(b&&c){i([...g,{id:`tmp-${Date.now()}`,name:b,path:c}]),C();try{await f(a,{repos:[...B(g),{name:b,path:c}]}),A("Folder added")}catch{i(g),A("Failed to add folder")}}},E=async b=>{let c=u.trim(),d=w.trim();if(!c||!d)return;let e=g.map(a=>a.id===b?{...a,name:c,path:d}:a);i(e),C();try{await f(a,{repos:B(e)}),A("Folder updated")}catch{i(g),A("Failed to update folder")}},F=async b=>{let c=g.filter(a=>a.id!==b);i(c),s===b&&C();try{await f(a,{repos:B(c)}),A("Folder deleted")}catch{i(g),A("Failed to delete folder")}};return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(l.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Folders"}),g.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:g.length})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>{t(null),v(""),x(""),k(!0)},className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(n.Plus,{className:"w-3 h-3"}),"Add"]}),e&&(0,b.jsxs)("button",{onClick:e,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(h.ArrowRight,{className:"w-3 h-3"})]})]})]}),y&&(0,b.jsx)("p",{className:"mb-3 text-xs text-[var(--muted-foreground)]",children:y}),(j||s)&&(0,b.jsxs)("div",{className:"mb-3 space-y-2 rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-3",children:[(0,b.jsx)("input",{value:u,onChange:a=>v(a.target.value),className:"input w-full text-sm",placeholder:"Folder name",autoFocus:!0}),(0,b.jsx)("input",{value:w,onChange:a=>x(a.target.value),className:"input w-full text-sm",placeholder:"Local path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{s?E(s):D()},disabled:!u.trim()||!w.trim(),className:"rounded-lg bg-[var(--foreground)] px-3 py-1.5 text-xs font-medium text-[var(--background)] disabled:opacity-40",children:"Save"}),(0,b.jsxs)("button",{type:"button",onClick:C,className:"flex items-center gap-1 rounded-lg px-2 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(p.X,{className:"w-3 h-3"}),"Cancel"]})]})]}),0===g.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No folders linked"}):(0,b.jsx)("div",{className:"space-y-2",children:g.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(l.FolderGit2,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.name}),a.path&&(0,b.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:a.path})]}),(0,b.jsx)("button",{type:"button",onClick:()=>{k(!1),t(a.id),v(a.name),x(a.path??"")},className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]","aria-label":`Edit ${a.name}`,children:(0,b.jsx)(m.Pencil,{className:"w-3 h-3"})}),(0,b.jsx)("button",{type:"button",onClick:()=>void F(a.id),className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]","aria-label":`Delete ${a.name}`,children:(0,b.jsx)(o.Trash2,{className:"w-3 h-3"})})]},a.id))})]})}var s=a.i(489461),t=a.i(769677),u=a.i(599086);let v={on_track:{label:"On Track",dot:"bg-[var(--status-completed)]",badge:"border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed-text)]"},at_risk:{label:"At Risk",dot:"bg-[var(--status-blocked)]",badge:"border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked-text)]"},off_track:{label:"Off Track",dot:"bg-[var(--status-failed)]",badge:"border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed-text)]"},done:{label:"Done",dot:"bg-[var(--muted-foreground)]",badge:"border-[var(--border)] bg-[var(--secondary)] text-[var(--muted-foreground)]"}};function w({objective:a,teamName:c,onClick:d}){let e=v[a.status]??v.on_track,f="done"===a.status;return(0,b.jsxs)("button",{type:"button",onClick:d,className:`w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)] ${f?"opacity-60":""}`,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${e.dot}`}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:a.title})]}),(0,b.jsx)("span",{className:`shrink-0 rounded-full border px-2 py-0.5 text-[11px] font-medium ${e.badge}`,children:e.label})]}),(0,b.jsx)("div",{className:"mb-2",children:(0,b.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-[var(--muted)]",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-emerald-500/70 transition-all",style:{width:`${Math.min(a.progress,100)}%`}})})}),(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{className:c?"":"flex items-center gap-1 text-[var(--status-blocked-text)]",children:[!c&&(0,b.jsx)(u.AlertTriangle,{className:"h-3 w-3"}),c??"No team"]}),(0,b.jsxs)("span",{children:[a.progress,"%"]})]})]})}function x({projectId:a,projectSlug:e}){let f=(0,d.useRouter)(),{projects:g,isLoading:i}=(0,q.useProjects)(),j=(0,c.useMemo)(()=>g.find(a=>a.slug===e),[g,e]),k=(0,c.useMemo)(()=>(0,t.readProjectObjectivesWorkspace)(j?.metadata).objectives,[j?.metadata]),[l,m]=(0,c.useState)([]);(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>m(a.teams??[])).catch(()=>m([]))},[a]);let n=(0,c.useMemo)(()=>new Map(l.map(a=>[a.id,a.name])),[l]),o=k.filter(a=>a.progress>=100).length;return i?(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-28 animate-pulse rounded-2xl bg-[var(--muted)]"},a))}):0===k.length?(0,b.jsxs)("button",{type:"button",onClick:()=>f.push(`/projects/${e}/objectives`),className:"w-full rounded-2xl border border-dashed border-[var(--border)] bg-[var(--card-bg)] p-6 text-center transition-colors hover:border-[var(--card-hover-border)] hover:bg-[var(--secondary)]",children:[(0,b.jsx)(s.Target,{className:"mx-auto mb-2 h-5 w-5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Add your first objective"})]}):(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{children:[k.length," ",1===k.length?"objective":"objectives"]}),(0,b.jsx)("span",{className:"text-[var(--border)]",children:"|"}),(0,b.jsxs)("span",{children:[o,"/",k.length," complete"]})]}),(0,b.jsxs)("button",{onClick:()=>f.push(`/projects/${e}/objectives`),className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(h.ArrowRight,{className:"w-3 h-3"})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:k.map(a=>(0,b.jsx)(w,{objective:a,teamName:n.get(a.teamId)??null,onClick:()=>f.push(`/projects/${e}/objectives/${encodeURIComponent(a.id)}`)},a.id))})]})}var y=a.i(737313),z=a.i(144462),A=a.i(675665),B=a.i(719550);function C({icon:a,title:c,accentClass:d,onClick:e,badge:f,children:g}){return(0,b.jsxs)("button",{type:"button",onClick:e,className:"w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:d,children:a}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:c})]}),f]}),g&&(0,b.jsx)("div",{className:"text-sm",children:g})]})}function D({projectId:a,projectSlug:e,primaryThreadId:f}){let g=(0,d.useRouter)(),{connected:h,loading:i}=(0,A.useLinearConnection)(),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(0);return(0,c.useEffect)(()=>{let b=!1;return fetch(`/api/threads?projectId=${encodeURIComponent(a)}&limit=3&format=json`).then(a=>a.ok?a.json():{threads:{},total:0}).then(a=>{if(b)return;let c=Object.values(a.threads??{}).flatMap(a=>a.threads??[]).slice(0,3);k(c),m("number"==typeof a.total?a.total:c.length)}).catch(()=>{b||(k([]),m(0))}),()=>{b=!0}},[a]),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,b.jsx)(C,{icon:(0,b.jsx)(y.MessageSquare,{className:"w-4 h-4"}),title:"Chat",accentClass:"text-indigo-400",onClick:()=>{f&&g.push(`/projects/${e}/thread/${encodeURIComponent(f)}`)},badge:l>0?(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:l}):void 0,children:null===j?(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===j.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No threads yet"}):(0,b.jsx)("div",{className:"space-y-1",children:j.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 truncate text-[var(--foreground)]",children:[(0,b.jsx)(y.MessageSquare,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"truncate",children:a.title})]},a.id))})}),(0,b.jsx)(C,{icon:(0,b.jsx)(z.TerminalSquare,{className:"w-4 h-4"}),title:"Terminal",accentClass:"text-emerald-400",onClick:()=>g.push(`/projects/${e}/terminal`),children:(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No sessions yet"})}),(0,b.jsx)(C,{icon:(0,b.jsx)(B.LinearIcon,{className:"w-4 h-4"}),title:"Linear",accentClass:"text-blue-400",onClick:()=>g.push(`/projects/${e}/linear`),badge:i?void 0:h?(0,b.jsx)("span",{className:"rounded-full border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-2 py-0.5 text-[11px] text-[var(--status-completed-text)]",children:"Connected"}):(0,b.jsx)("span",{className:"rounded-full border border-[var(--border)] bg-[var(--secondary)] px-2 py-0.5 text-[11px] text-[var(--muted-foreground)]",children:"Connect"}),children:!i&&!h&&(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"Connect to see issues"})})]})}function E({projectId:a,projectSlug:c,projectName:e,projectDescription:g,projectMetadata:h,repos:j,threadIds:l}){let m=(0,d.useRouter)(),n=l[0]??null;return(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:(0,b.jsxs)("div",{className:"max-w-5xl mx-auto px-6 py-8 space-y-8",children:[g&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:g}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What you're working toward"}),(0,b.jsx)(x,{projectId:a,projectSlug:c})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"Start working"}),(0,b.jsx)(D,{projectId:a,projectSlug:c,primaryThreadId:n})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What's happening now"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(f,{projectSlug:c,projectThreadIds:l}),(0,b.jsx)(k,{projectId:a,projectSlug:c,onViewAll:()=>m.push(`/projects/${c}/automations`)})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsx)(r,{projectId:a,repos:j}),(0,b.jsx)(i,{projectId:a,onViewAll:()=>m.push(`/projects/${c}/teams`)})]})]})})}a.s(["default",0,function({params:a}){let{slug:d}=(0,c.use)(a),{projects:e}=(0,q.useProjectsWithAgents)(),f=e.find(a=>a.slug===d);return f?(0,b.jsx)(E,{projectId:f.id,projectSlug:f.slug,projectName:f.name,projectDescription:f.description,projectMetadata:f.metadata,repos:f.repos,threadIds:f.thread_ids}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading project..."})}],143159)}];
2
2
 
3
3
  //# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_page_tsx_0kcaeqi._.js.map