@mndrk/agx 2.0.44 → 2.0.46

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 (503) hide show
  1. package/cloud-runtime/standalone/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/.next/app-path-routes-manifest.json +2 -0
  3. package/cloud-runtime/standalone/.next/build-manifest.json +2 -2
  4. package/cloud-runtime/standalone/.next/prerender-manifest.json +3 -3
  5. package/cloud-runtime/standalone/.next/routes-manifest.json +13 -1
  6. package/cloud-runtime/standalone/.next/server/app/_global-error.html +2 -2
  7. package/cloud-runtime/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/cloud-runtime/standalone/.next/server/app/_not-found.html +2 -2
  15. package/cloud-runtime/standalone/.next/server/app/_not-found.rsc +2 -2
  16. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  25. package/cloud-runtime/standalone/.next/server/app/agents.html +2 -2
  26. package/cloud-runtime/standalone/.next/server/app/agents.rsc +2 -2
  27. package/cloud-runtime/standalone/.next/server/app/agents.segments/_full.segment.rsc +2 -2
  28. package/cloud-runtime/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  29. package/cloud-runtime/standalone/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  30. package/cloud-runtime/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  33. package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js +1 -1
  34. package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js +1 -1
  36. package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js +1 -1
  38. package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/.next/server/app/api/automations/create/route.js +1 -1
  40. package/cloud-runtime/standalone/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/.next/server/app/api/automations/route.js +1 -1
  42. package/cloud-runtime/standalone/.next/server/app/api/automations/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js +1 -1
  44. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/.next/server/app/api/file-search/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +1 -1
  47. package/cloud-runtime/standalone/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/.next/server/app/api/health/route.js +1 -1
  49. package/cloud-runtime/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js +1 -1
  51. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js +1 -1
  53. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route/app-paths-manifest.json +3 -0
  55. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route/build-manifest.json +11 -0
  56. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route/server-reference-manifest.json +4 -0
  57. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js +10 -0
  58. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js.map +5 -0
  59. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -0
  60. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route_client-reference-manifest.js +2 -0
  61. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js +5 -2
  62. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route/app-paths-manifest.json +3 -0
  64. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route/build-manifest.json +11 -0
  65. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route/server-reference-manifest.json +4 -0
  66. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js +7 -0
  67. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js.map +5 -0
  68. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js.nft.json +1 -0
  69. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route_client-reference-manifest.js +2 -0
  70. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js +1 -1
  72. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js +1 -1
  74. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js +1 -1
  76. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js +1 -1
  78. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js +1 -1
  80. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
  81. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js +1 -1
  82. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js +1 -1
  84. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js +1 -1
  86. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js +1 -1
  88. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js +1 -1
  90. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js +1 -1
  92. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/cancel/route.js +1 -1
  94. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/route.js +1 -1
  96. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/runs/route.js +1 -1
  98. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js +1 -1
  100. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js +1 -1
  102. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/route.js +1 -1
  104. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
  105. package/cloud-runtime/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
  106. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js +1 -1
  107. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
  108. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js +4 -4
  109. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  110. package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js +4 -4
  111. package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  112. package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js +4 -4
  113. package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  114. package/cloud-runtime/standalone/.next/server/app/api/schedules/route.js +1 -1
  115. package/cloud-runtime/standalone/.next/server/app/api/schedules/route.js.nft.json +1 -1
  116. package/cloud-runtime/standalone/.next/server/app/api/status/route.js +1 -1
  117. package/cloud-runtime/standalone/.next/server/app/api/status/route.js.nft.json +1 -1
  118. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js +1 -1
  119. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js.nft.json +1 -1
  120. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js +1 -1
  121. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  122. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js +1 -1
  123. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  124. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js +1 -1
  125. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
  126. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -1
  127. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
  128. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js +1 -1
  129. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  130. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js +1 -1
  131. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  132. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js +1 -1
  133. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  134. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js +1 -1
  135. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  136. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js +1 -1
  137. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  138. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js +1 -1
  139. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  140. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js +1 -1
  141. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  142. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js +1 -1
  143. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js +1 -1
  145. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js +1 -1
  147. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
  148. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/stop/route.js +1 -1
  149. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
  150. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js +1 -1
  151. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
  152. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js +1 -1
  153. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  154. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js +1 -1
  155. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
  156. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js +1 -1
  157. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  158. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js +1 -1
  159. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  160. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js +1 -1
  161. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  162. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js +1 -1
  163. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  164. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js +1 -1
  165. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  166. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js +1 -1
  167. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  168. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  169. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  170. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js +1 -1
  171. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
  172. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js +1 -1
  173. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  174. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js +3 -3
  175. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  176. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js +1 -1
  177. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  178. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js +1 -1
  179. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js.nft.json +1 -1
  180. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js +1 -1
  181. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js.nft.json +1 -1
  182. package/cloud-runtime/standalone/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
  183. package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
  184. package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  185. package/cloud-runtime/standalone/.next/server/app/automations.html +2 -2
  186. package/cloud-runtime/standalone/.next/server/app/automations.rsc +3 -3
  187. package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +3 -3
  188. package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  189. package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  190. package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
  192. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  193. package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
  194. package/cloud-runtime/standalone/.next/server/app/board.html +2 -2
  195. package/cloud-runtime/standalone/.next/server/app/board.rsc +2 -2
  196. package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +2 -2
  197. package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +1 -1
  198. package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +2 -2
  199. package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  201. package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +1 -1
  202. package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  203. package/cloud-runtime/standalone/.next/server/app/execution-graph.html +2 -2
  204. package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +2 -2
  205. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +2 -2
  206. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  207. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  208. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  209. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +1 -1
  210. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  211. package/cloud-runtime/standalone/.next/server/app/index.html +2 -2
  212. package/cloud-runtime/standalone/.next/server/app/index.rsc +4 -4
  213. package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  214. package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  215. package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  216. package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  217. package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +3 -3
  218. package/cloud-runtime/standalone/.next/server/app/page.js.nft.json +1 -1
  219. package/cloud-runtime/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  220. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +2 -2
  221. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  222. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  223. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  224. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  225. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +3 -3
  226. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  227. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  228. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  229. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  230. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  231. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  232. package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +2 -2
  233. package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +2 -2
  234. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  235. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  236. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  237. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  238. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  239. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  240. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  241. package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  242. package/cloud-runtime/standalone/.next/server/app/projects.html +2 -2
  243. package/cloud-runtime/standalone/.next/server/app/projects.rsc +2 -2
  244. package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  245. package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  246. package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  247. package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  248. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  249. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  250. package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  251. package/cloud-runtime/standalone/.next/server/app/settings.html +2 -2
  252. package/cloud-runtime/standalone/.next/server/app/settings.rsc +2 -2
  253. package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  254. package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  255. package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  256. package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  257. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  258. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  259. package/cloud-runtime/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  260. package/cloud-runtime/standalone/.next/server/app/skills.html +2 -2
  261. package/cloud-runtime/standalone/.next/server/app/skills.rsc +2 -2
  262. package/cloud-runtime/standalone/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  263. package/cloud-runtime/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  264. package/cloud-runtime/standalone/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  265. package/cloud-runtime/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  266. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  267. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  268. package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
  269. package/cloud-runtime/standalone/.next/server/app/status.html +2 -2
  270. package/cloud-runtime/standalone/.next/server/app/status.rsc +3 -3
  271. package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +3 -3
  272. package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +1 -1
  273. package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +2 -2
  274. package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  275. package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  276. package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +1 -1
  277. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  278. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  279. package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  280. package/cloud-runtime/standalone/.next/server/app/welcome.html +2 -2
  281. package/cloud-runtime/standalone/.next/server/app/welcome.rsc +2 -2
  282. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +2 -2
  283. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
  284. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +2 -2
  285. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
  286. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +1 -1
  287. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
  288. package/cloud-runtime/standalone/.next/server/app-paths-manifest.json +2 -0
  289. package/cloud-runtime/standalone/.next/server/chunks/{[externals]__29a2424c._.js → [externals]__31e26905._.js} +1 -1
  290. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__fb1f7e58._.js → [root-of-the-server]__00fd30c8._.js} +2 -2
  291. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e4f01b5c._.js → [root-of-the-server]__0e98af48._.js} +2 -2
  292. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__1154e5b3._.js +67 -0
  293. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__44ef900b._.js → [root-of-the-server]__11c1214e._.js} +2 -2
  294. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5e5eb809._.js → [root-of-the-server]__152b2000._.js} +10 -10
  295. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__f21849ad._.js → [root-of-the-server]__15f3bb96._.js} +2 -2
  296. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__7cade6c6._.js → [root-of-the-server]__1f53e82e._.js} +2 -2
  297. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c77efd85._.js → [root-of-the-server]__20533a2c._.js} +2 -2
  298. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e0994be2._.js → [root-of-the-server]__3b1431b6._.js} +2 -2
  299. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__3b83b657._.js +147 -0
  300. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d3945cae._.js → [root-of-the-server]__3bf516b6._.js} +2 -2
  301. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__2d15af44._.js → [root-of-the-server]__3fd3c5b1._.js} +2 -2
  302. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__13fe776f._.js → [root-of-the-server]__42e713f5._.js} +2 -2
  303. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__1be9b30e._.js → [root-of-the-server]__4b0b5fe1._.js} +2 -2
  304. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__558389f7._.js +3 -0
  305. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5a042505._.js → [root-of-the-server]__5aaf8c25._.js} +2 -2
  306. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__22b7bf38._.js → [root-of-the-server]__5b13e7a5._.js} +2 -2
  307. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__34efe92e._.js → [root-of-the-server]__635fe0f9._.js} +2 -2
  308. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c9550a93._.js → [root-of-the-server]__68da2825._.js} +2 -2
  309. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e5bad635._.js → [root-of-the-server]__6921fe3f._.js} +2 -2
  310. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__dc542063._.js → [root-of-the-server]__6988985c._.js} +2 -2
  311. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c5025f86._.js → [root-of-the-server]__7012e83d._.js} +7 -7
  312. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__9d3a2caa._.js → [root-of-the-server]__70327010._.js} +2 -2
  313. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__748c718f._.js +147 -0
  314. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__76290829._.js +46 -8
  315. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c0919d7d._.js → [root-of-the-server]__79fa35e4._.js} +2 -2
  316. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ac9b93fd._.js → [root-of-the-server]__8d205f82._.js} +2 -2
  317. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__0281ad06._.js → [root-of-the-server]__9ffa67b7._.js} +2 -2
  318. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__dd1cb250._.js → [root-of-the-server]__a300f072._.js} +2 -2
  319. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5fbc700c._.js → [root-of-the-server]__a7e0ac67._.js} +2 -2
  320. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__91b51f33._.js → [root-of-the-server]__aad349b4._.js} +2 -2
  321. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ad6d6402._.js +46 -8
  322. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__349d67e7._.js → [root-of-the-server]__b133856b._.js} +2 -2
  323. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__45a50de9._.js → [root-of-the-server]__c029daab._.js} +2 -2
  324. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a1e62918._.js → [root-of-the-server]__c8195768._.js} +1 -1
  325. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ce2a1672._.js +67 -0
  326. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a2e17f69._.js → [root-of-the-server]__d4f42f49._.js} +2 -2
  327. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__d9f2041b._.js +47 -9
  328. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ad4cb055._.js → [root-of-the-server]__dca6026a._.js} +2 -2
  329. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__bacb0193._.js → [root-of-the-server]__ddb3aa76._.js} +2 -2
  330. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__de295ef3._.js +3 -0
  331. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__7d4fa0fd._.js → [root-of-the-server]__e7be56ba._.js} +2 -2
  332. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__73b17f49._.js → [root-of-the-server]__ebece93b._.js} +2 -2
  333. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ef27f8cd._.js +49 -0
  334. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__56dbe1a4._.js → [root-of-the-server]__f13c29c6._.js} +2 -2
  335. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__98d58423._.js → [root-of-the-server]__fcdaf6d8._.js} +2 -2
  336. package/cloud-runtime/standalone/.next/server/chunks/_6e7f0ae4._.js +6 -0
  337. package/cloud-runtime/standalone/.next/server/chunks/_a93e80e8._.js +3 -0
  338. package/cloud-runtime/standalone/.next/server/chunks/_next-internal_server_app_api_linear_issues_context_route_actions_0b2c282c.js +3 -0
  339. package/cloud-runtime/standalone/.next/server/chunks/_next-internal_server_app_api_linear_options_route_actions_29764947.js +3 -0
  340. package/cloud-runtime/standalone/.next/server/chunks/lib_app-config_ts_7f2f30ad._.js +3 -0
  341. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__1c4256ce._.js +3 -0
  342. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__4c9d0778._.js +3 -0
  343. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__69887882._.js +3 -0
  344. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f59f0dc7._.js +3 -0
  345. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_95434d70._.js → _1d26be78._.js} +2 -2
  346. package/cloud-runtime/standalone/.next/server/chunks/ssr/_32c878b9._.js +3 -0
  347. package/cloud-runtime/standalone/.next/server/chunks/ssr/_60d0bae4._.js +3 -0
  348. package/cloud-runtime/standalone/.next/server/chunks/ssr/_77e1407a._.js +3 -0
  349. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7f7a828a._.js +3 -0
  350. package/cloud-runtime/standalone/.next/server/chunks/ssr/_ba5903a7._.js +3 -0
  351. package/cloud-runtime/standalone/.next/server/chunks/ssr/_ed4fece9._.js +3 -0
  352. package/cloud-runtime/standalone/.next/server/chunks/ssr/_f51a3112._.js +3 -0
  353. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_projects_[slug]_linear_page_tsx_971a6ba7._.js +3 -3
  354. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_chat-ui_bfeda794._.js +7 -3
  355. package/cloud-runtime/standalone/.next/server/functions-config-manifest.json +2 -0
  356. package/cloud-runtime/standalone/.next/server/instrumentation.js +1 -1
  357. package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
  358. package/cloud-runtime/standalone/.next/server/pages/404.html +2 -2
  359. package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
  360. package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
  361. package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
  362. package/cloud-runtime/standalone/.next/static/chunks/02add5a8d35c53fe.js +1 -0
  363. package/cloud-runtime/standalone/.next/static/chunks/2362d5c0dcaa5d64.js +1 -0
  364. package/cloud-runtime/standalone/.next/static/chunks/2730394502dd3664.js +1 -0
  365. package/cloud-runtime/standalone/.next/static/chunks/37f07896b044d69f.css +1 -0
  366. package/cloud-runtime/standalone/.next/static/chunks/3dc50de1c86e1ce9.js +1 -0
  367. package/cloud-runtime/standalone/.next/static/chunks/4ea8f08087116055.js +1 -0
  368. package/cloud-runtime/standalone/.next/static/chunks/5607ad702ebb8a4b.js +9 -0
  369. package/cloud-runtime/standalone/.next/static/chunks/6103b9b5538bba4d.css +2 -0
  370. package/cloud-runtime/standalone/.next/static/chunks/98c20da4973991f0.js +1 -0
  371. package/cloud-runtime/standalone/.next/static/chunks/a9da98f883ac833b.js +1 -0
  372. package/cloud-runtime/standalone/.next/static/chunks/{da12f313213a5615.js → b2127dc67c5ade9f.js} +1 -1
  373. package/cloud-runtime/standalone/.next/static/chunks/{76229fb555232113.js → b3377e39d47c71cf.js} +1 -1
  374. package/cloud-runtime/standalone/.next/static/chunks/bf2a2fafb710e63c.js +1 -0
  375. package/cloud-runtime/standalone/.next/static/chunks/c0d17e0c37ba8e7a.js +1 -0
  376. package/cloud-runtime/standalone/.next/static/chunks/cca7c8e4ade050f0.js +37 -0
  377. package/cloud-runtime/standalone/.next/static/chunks/db131a0b6350e416.js +1 -0
  378. package/cloud-runtime/standalone/.next/static/chunks/e51fddf53a6dc1e4.js +9 -0
  379. package/cloud-runtime/standalone/.next/static/chunks/{66769c2bf128027d.js → f4360c3e4089263f.js} +1 -1
  380. package/cloud-runtime/standalone/Dockerfile +5 -5
  381. package/cloud-runtime/standalone/app/api/linear/callback/route.ts +2 -1
  382. package/cloud-runtime/standalone/app/api/linear/issues/context/route.ts +26 -0
  383. package/cloud-runtime/standalone/app/api/linear/issues/route.ts +44 -42
  384. package/cloud-runtime/standalone/app/api/linear/options/route.ts +31 -0
  385. package/cloud-runtime/standalone/app/api/status/route.ts +2 -2
  386. package/cloud-runtime/standalone/components/LinearBoard.tsx +411 -117
  387. package/cloud-runtime/standalone/components/chat-ui/ChatContainer.tsx +3 -1
  388. package/cloud-runtime/standalone/components/chat-ui/Composer.tsx +54 -2
  389. package/cloud-runtime/standalone/components/chat-ui/MentionPopover.tsx +43 -2
  390. package/cloud-runtime/standalone/hooks/useLinearIssueMentions.ts +64 -0
  391. package/cloud-runtime/standalone/hooks/useLinearIssues.ts +30 -6
  392. package/cloud-runtime/standalone/hooks/useMentionAutocomplete.ts +54 -6
  393. package/cloud-runtime/standalone/instrumentation.ts +2 -1
  394. package/cloud-runtime/standalone/lib/app-config.ts +55 -0
  395. package/cloud-runtime/standalone/lib/chat/linear-issue-context.ts +79 -0
  396. package/cloud-runtime/standalone/lib/linear-client.ts +166 -15
  397. package/cloud-runtime/standalone/lib/linear-issue-store.ts +433 -0
  398. package/cloud-runtime/standalone/lib/linear-issues.ts +360 -0
  399. package/cloud-runtime/standalone/lib/security.ts +2 -2
  400. package/cloud-runtime/standalone/lib/tiptap/composer-mentions.ts +38 -0
  401. package/cloud-runtime/standalone/lib/tiptap/editor-utils.ts +11 -0
  402. package/cloud-runtime/standalone/lib/tiptap/serialize-composer.ts +10 -0
  403. package/cloud-runtime/standalone/next.config.ts +2 -1
  404. package/cloud-runtime/standalone/src/graph/internal-function-dispatcher.ts +2 -5
  405. package/cloud-runtime/standalone/state/automations/.state/24a6a5db-3b14-49c4-841f-29f10f015fbb.json +3 -3
  406. package/cloud-runtime/standalone/styles/composer-pills.css +13 -0
  407. package/package.json +1 -1
  408. package/cloud-runtime/standalone/.linear-token.json +0 -4
  409. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__05243927._.js +0 -29
  410. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__1017e012._.js +0 -3
  411. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__28524c6a._.js +0 -3
  412. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c1b28690._.js +0 -49
  413. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__dffa5183._.js +0 -29
  414. package/cloud-runtime/standalone/.next/server/chunks/_110bf46e._.js +0 -6
  415. package/cloud-runtime/standalone/.next/server/chunks/_22fe5fd2._.js +0 -3
  416. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__35f9b4a6._.js +0 -3
  417. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__43a0398d._.js +0 -3
  418. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__7e7d6790._.js +0 -3
  419. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__b6598a70._.js +0 -3
  420. package/cloud-runtime/standalone/.next/server/chunks/ssr/_087a5b2b._.js +0 -3
  421. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1e5aee62._.js +0 -3
  422. package/cloud-runtime/standalone/.next/server/chunks/ssr/_45f91a8f._.js +0 -3
  423. package/cloud-runtime/standalone/.next/server/chunks/ssr/_fb404ac0._.js +0 -3
  424. package/cloud-runtime/standalone/.next/static/chunks/0010f3df27ae53b8.js +0 -1
  425. package/cloud-runtime/standalone/.next/static/chunks/09c637be82a06122.js +0 -1
  426. package/cloud-runtime/standalone/.next/static/chunks/0fe219bd73492107.js +0 -5
  427. package/cloud-runtime/standalone/.next/static/chunks/2dbfd095c1e1d01f.js +0 -1
  428. package/cloud-runtime/standalone/.next/static/chunks/360fde144fd22461.js +0 -1
  429. package/cloud-runtime/standalone/.next/static/chunks/416cf5039e669b5d.js +0 -1
  430. package/cloud-runtime/standalone/.next/static/chunks/95b85b1cb6868d27.js +0 -1
  431. package/cloud-runtime/standalone/.next/static/chunks/966278eaefc0aa32.js +0 -1
  432. package/cloud-runtime/standalone/.next/static/chunks/ab74849aeb87503e.js +0 -5
  433. package/cloud-runtime/standalone/.next/static/chunks/c5661b1d4c5abd6a.css +0 -2
  434. package/cloud-runtime/standalone/.next/static/chunks/d522224ad5c8d724.css +0 -1
  435. package/cloud-runtime/standalone/.next/static/chunks/e2fa3c18dd56dc25.js +0 -1
  436. package/cloud-runtime/standalone/.next/static/chunks/e910386016ceacad.js +0 -37
  437. package/cloud-runtime/standalone/.next/static/chunks/f2fe77583374541b.js +0 -1
  438. package/cloud-runtime/standalone/coverage/clover.xml +0 -1208
  439. package/cloud-runtime/standalone/coverage/coverage-final.json +0 -29
  440. package/cloud-runtime/standalone/coverage/lcov-report/app/api/audit/index.html +0 -116
  441. package/cloud-runtime/standalone/coverage/lcov-report/app/api/audit/route.ts.html +0 -208
  442. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/[...nextauth]/index.html +0 -116
  443. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/[...nextauth]/route.ts.html +0 -166
  444. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/daemon-secret/index.html +0 -116
  445. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/daemon-secret/route.ts.html +0 -532
  446. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/status/index.html +0 -116
  447. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/status/route.ts.html +0 -178
  448. package/cloud-runtime/standalone/coverage/lcov-report/app/api/learnings/index.html +0 -116
  449. package/cloud-runtime/standalone/coverage/lcov-report/app/api/learnings/route.ts.html +0 -262
  450. package/cloud-runtime/standalone/coverage/lcov-report/app/api/logs/stream/index.html +0 -116
  451. package/cloud-runtime/standalone/coverage/lcov-report/app/api/logs/stream/route.ts.html +0 -448
  452. package/cloud-runtime/standalone/coverage/lcov-report/app/api/queue/complete/index.html +0 -116
  453. package/cloud-runtime/standalone/coverage/lcov-report/app/api/queue/complete/route.ts.html +0 -331
  454. package/cloud-runtime/standalone/coverage/lcov-report/app/api/queue/index.html +0 -116
  455. package/cloud-runtime/standalone/coverage/lcov-report/app/api/queue/route.ts.html +0 -505
  456. package/cloud-runtime/standalone/coverage/lcov-report/app/api/stage-prompts/index.html +0 -116
  457. package/cloud-runtime/standalone/coverage/lcov-report/app/api/stage-prompts/route.ts.html +0 -412
  458. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/advance/index.html +0 -116
  459. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/advance/route.ts.html +0 -304
  460. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/index.html +0 -116
  461. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/logs/index.html +0 -116
  462. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/logs/route.ts.html +0 -202
  463. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/route.ts.html +0 -373
  464. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/index.html +0 -116
  465. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/route.ts.html +0 -499
  466. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/stream/index.html +0 -116
  467. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/stream/route.ts.html +0 -349
  468. package/cloud-runtime/standalone/coverage/lcov-report/base.css +0 -224
  469. package/cloud-runtime/standalone/coverage/lcov-report/block-navigation.js +0 -87
  470. package/cloud-runtime/standalone/coverage/lcov-report/components/AuthProvider.tsx.html +0 -259
  471. package/cloud-runtime/standalone/coverage/lcov-report/components/ChatInterface.tsx.html +0 -1228
  472. package/cloud-runtime/standalone/coverage/lcov-report/components/KanbanBoard.tsx.html +0 -1024
  473. package/cloud-runtime/standalone/coverage/lcov-report/components/Layout.tsx.html +0 -211
  474. package/cloud-runtime/standalone/coverage/lcov-report/components/LearningsPanel.tsx.html +0 -535
  475. package/cloud-runtime/standalone/coverage/lcov-report/components/LogTimeline.tsx.html +0 -415
  476. package/cloud-runtime/standalone/coverage/lcov-report/components/SortableTaskCard.tsx.html +0 -358
  477. package/cloud-runtime/standalone/coverage/lcov-report/components/StagePills.tsx.html +0 -439
  478. package/cloud-runtime/standalone/coverage/lcov-report/components/TaskCard.tsx.html +0 -514
  479. package/cloud-runtime/standalone/coverage/lcov-report/components/TaskCardOverlay.tsx.html +0 -256
  480. package/cloud-runtime/standalone/coverage/lcov-report/components/TaskDetail.tsx.html +0 -622
  481. package/cloud-runtime/standalone/coverage/lcov-report/components/TaskList.tsx.html +0 -253
  482. package/cloud-runtime/standalone/coverage/lcov-report/components/index.html +0 -281
  483. package/cloud-runtime/standalone/coverage/lcov-report/favicon.png +0 -0
  484. package/cloud-runtime/standalone/coverage/lcov-report/hooks/index.html +0 -116
  485. package/cloud-runtime/standalone/coverage/lcov-report/hooks/useTasks.ts.html +0 -1042
  486. package/cloud-runtime/standalone/coverage/lcov-report/index.html +0 -341
  487. package/cloud-runtime/standalone/coverage/lcov-report/lib/auth-client.ts.html +0 -202
  488. package/cloud-runtime/standalone/coverage/lcov-report/lib/auth-server.ts.html +0 -172
  489. package/cloud-runtime/standalone/coverage/lcov-report/lib/auth.ts.html +0 -265
  490. package/cloud-runtime/standalone/coverage/lcov-report/lib/db.ts.html +0 -1252
  491. package/cloud-runtime/standalone/coverage/lcov-report/lib/index.html +0 -131
  492. package/cloud-runtime/standalone/coverage/lcov-report/lib/orchestrator.ts.html +0 -409
  493. package/cloud-runtime/standalone/coverage/lcov-report/lib/security.ts.html +0 -1165
  494. package/cloud-runtime/standalone/coverage/lcov-report/lib/supabase-server.ts.html +0 -175
  495. package/cloud-runtime/standalone/coverage/lcov-report/lib/supabase.ts.html +0 -157
  496. package/cloud-runtime/standalone/coverage/lcov-report/prettify.css +0 -1
  497. package/cloud-runtime/standalone/coverage/lcov-report/prettify.js +0 -2
  498. package/cloud-runtime/standalone/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  499. package/cloud-runtime/standalone/coverage/lcov-report/sorter.js +0 -210
  500. package/cloud-runtime/standalone/coverage/lcov.info +0 -2386
  501. /package/cloud-runtime/standalone/.next/static/{1ixi4WIJBgIPp7LJeYeKs → 1Q0q2lXllTpqCvmNQYtpD}/_buildManifest.js +0 -0
  502. /package/cloud-runtime/standalone/.next/static/{1ixi4WIJBgIPp7LJeYeKs → 1Q0q2lXllTpqCvmNQYtpD}/_clientMiddlewareManifest.json +0 -0
  503. /package/cloud-runtime/standalone/.next/static/{1ixi4WIJBgIPp7LJeYeKs → 1Q0q2lXllTpqCvmNQYtpD}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[860614,a=>{"use strict";let b=(0,a.i(883706).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",()=>b],860614)},321161,a=>{"use strict";let b=(0,a.i(883706).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Settings",()=>b],321161)},734531,a=>{"use strict";let b=(0,a.i(883706).default)("folder-git-2",[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);a.s(["FolderGit2",()=>b],734531)},587532,a=>{"use strict";let b=(0,a.i(883706).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);a.s(["Search",()=>b],587532)},781560,a=>{"use strict";let b=(0,a.i(883706).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",()=>b],781560)},50522,a=>{"use strict";let b=(0,a.i(883706).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>b],50522)},2835,a=>{"use strict";let b=(0,a.i(883706).default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);a.s(["Hash",()=>b],2835)},699464,a=>{"use strict";let b=(0,a.i(883706).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",()=>b],699464)},909270,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.AppRouterContext},738783,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactServerDOMTurbopackClient},68063,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={getDeploymentId:function(){return f},getDeploymentIdQueryOrEmptyString:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(){return!1}function g(){return""}},739118,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},47349,(a,b,c)=>{"use strict";var d=a.r(572131);d.useState,d.useEffect,d.useLayoutEffect,d.useDebugValue,c.useSyncExternalStore=void 0!==d.useSyncExternalStore?d.useSyncExternalStore:function(a,b){return b()}},487610,(a,b,c)=>{"use strict";b.exports=a.r(47349)},997514,(a,b,c)=>{"use strict";var d=a.r(572131),e=a.r(487610),f="function"==typeof Object.is?Object.is:function(a,b){return a===b&&(0!==a||1/a==1/b)||a!=a&&b!=b},g=e.useSyncExternalStore,h=d.useRef,i=d.useEffect,j=d.useMemo,k=d.useDebugValue;c.useSyncExternalStoreWithSelector=function(a,b,c,d,e){var l=h(null);if(null===l.current){var m={hasValue:!1,value:null};l.current=m}else m=l.current;var n=g(a,(l=j(function(){function a(a){if(!i){if(i=!0,g=a,a=d(a),void 0!==e&&m.hasValue){var b=m.value;if(e(b,a))return h=b}return h=a}if(b=h,f(g,a))return b;var c=d(a);return void 0!==e&&e(b,c)?(g=a,b):(g=a,h=c)}var g,h,i=!1,j=void 0===c?null:c;return[function(){return a(b())},null===j?void 0:function(){return a(j())}]},[b,c,d,e]))[0],l[1]);return i(function(){m.hasValue=!0,m.value=n},[n]),k(n),n}},864442,(a,b,c)=>{"use strict";b.exports=a.r(997514)},533441,a=>{"use strict";let b=(0,a.i(883706).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["Check",()=>b],533441)},546842,a=>{"use strict";let b=(0,a.i(883706).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);a.s(["User",()=>b],546842)},808406,a=>{"use strict";let b=(0,a.i(883706).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",()=>b],808406)},915618,a=>{"use strict";let b=(0,a.i(883706).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],915618)},633508,a=>{"use strict";let b=(0,a.i(883706).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["X",()=>b],633508)},405784,a=>{"use strict";let b=(0,a.i(883706).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",()=>b],405784)},18984,a=>{"use strict";var b=a.i(187924),c=a.i(572131);function d({initialPath:a,onSelect:d,onCancel:e}){let[f,g]=(0,c.useState)(a||""),[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(null),n=(0,c.useRef)(null),o=(0,c.useCallback)(async a=>{k(!0),m(null);try{let b=a?`?path=${encodeURIComponent(a)}`:"",c=await fetch(`/api/filesystem/browse${b}`),d=await c.json();if(!c.ok)return void m(d.error||"Failed to browse");i(d),g(d.current),n.current?.scrollTo(0,0)}catch{m("Failed to connect")}finally{k(!1)}},[]);return(0,c.useEffect)(()=>{o(a||"")},[]),(0,b.jsxs)("div",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] overflow-hidden shadow-lg",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-[var(--card-border)] bg-[var(--muted)]/30",children:[(0,b.jsx)("input",{value:f,onChange:a=>g(a.target.value),onKeyDown:a=>{"Enter"===a.key&&o(f)},className:"input text-xs flex-1 py-1",placeholder:"Enter path..."}),(0,b.jsx)("button",{type:"button",onClick:()=>o(f),className:"text-[10px] font-bold uppercase tracking-wider text-[var(--primary)] hover:underline px-2 py-1 shrink-0",children:"Go"})]}),(0,b.jsxs)("div",{ref:n,className:"max-h-48 overflow-y-auto",children:[j&&(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)] text-center",children:"Loading..."}),l&&(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--destructive)] text-center",children:l}),!j&&h&&(0,b.jsxs)("div",{className:"py-1",children:[h.parent&&(0,b.jsxs)("button",{type:"button",onClick:()=>o(h.parent),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-[var(--muted)]/50 transition-colors flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"↑"}),(0,b.jsx)("span",{className:"text-[var(--muted-foreground)]",children:".."})]}),0===h.dirs.length&&!h.parent&&(0,b.jsx)("div",{className:"px-3 py-3 text-xs text-[var(--muted-foreground)] text-center",children:"No subdirectories"}),h.dirs.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>o(a.path),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-[var(--muted)]/50 transition-colors flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"📁"}),(0,b.jsx)("span",{className:"truncate",children:a.name})]},a.path))]})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 border-t border-[var(--card-border)] bg-[var(--muted)]/30",children:[(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)] truncate max-w-[60%]",children:h?.current||f}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:e,className:"text-xs font-medium text-[var(--muted-foreground)] hover:underline px-2 py-1",children:"Cancel"}),(0,b.jsx)("button",{type:"button",onClick:()=>d(h?.current||f),className:"text-xs font-bold text-[var(--primary)] hover:underline px-2 py-1",children:"Select"})]})]})]})}let e={name:"",description:""},f={name:"",path:"",notes:""};function g(){let[a,b]=(0,c.useState)(e),[d,g]=(0,c.useState)([f]),[h,i]=(0,c.useState)(!1),[j,k]=(0,c.useState)(null),l=(0,c.useCallback)((a,b,c)=>{g(d=>d.map((d,e)=>e===a?{...d,[b]:c}:d))},[]),m=(0,c.useCallback)(()=>{g(a=>[...a,{...f}])},[]),n=(0,c.useCallback)(a=>{g(b=>b.filter((b,c)=>c!==a))},[]),o=(0,c.useCallback)(()=>{b(e),g([f]),k(null)},[]),p=(0,c.useCallback)(a=>{b({name:a.name||"",description:a.description||""}),a.repos&&a.repos.length>0?g(a.repos.map(a=>({id:a.id,name:a.name||"",path:a.path||"",git_url:a.git_url||"",notes:a.notes||""}))):g([f]),k(null)},[]);return{form:a,setForm:b,repos:d,handleRepoChange:l,addRepo:m,removeRepo:n,resetForm:o,hydrateFromProject:p,isSubmitting:h,setIsSubmitting:i,formError:j,setFormError:k}}function h(a,b){let c=b.filter(a=>a.name.trim()&&a.path.trim()).map(a=>({...a.id?{id:a.id}:{},name:a.name.trim(),path:a.path.trim(),...a.git_url?.trim()?{git_url:a.git_url.trim()}:{},notes:a.notes.trim()||void 0}));return{name:a.name.trim(),description:a.description.trim()||void 0,repos:c.length?c:void 0}}function i({form:a,repos:e,isEditingProject:f,isSubmitting:g,onFieldChange:h,onRepoChange:i,onAddRepo:j,onRemoveRepo:k}){let[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(null),p=(0,c.useRef)(0);(0,c.useEffect)(()=>{f?m([]):m(e.map((a,b)=>b)),p.current=e.length},[f,e.length]),(0,c.useEffect)(()=>{if(!f){p.current=e.length;return}let a=p.current;m(b=>{let c=b.filter(a=>a<e.length);return e.length>a&&c.push(...Array.from({length:e.length-a},(b,c)=>a+c)),c}),p.current=e.length},[f,e.length]);let q=(0,c.useCallback)(a=>{m(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a])},[]),r=(0,c.useCallback)(a=>!f||l.includes(a),[l,f]);return(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)("div",{className:"grid gap-4",children:(0,b.jsxs)("label",{className:"space-y-1.5 block",children:[(0,b.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Project Name"}),(0,b.jsx)("input",{value:a.name,onChange:a=>h("name",a.target.value),className:"input w-full",placeholder:"e.g. AGX Cloud",disabled:g})]})}),(0,b.jsxs)("label",{className:"space-y-1.5 block",children:[(0,b.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Description"}),(0,b.jsx)("textarea",{value:a.description,onChange:a=>h("description",a.target.value),className:"input w-full h-24 resize-none",placeholder:"What is this project about?",disabled:g})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--card-border)] pb-2",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Folders"}),(0,b.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:"Code repos, doc folders, design assets, config directories — any path your team needs access to."})]}),(0,b.jsx)("button",{type:"button",onClick:j,className:"text-xs font-semibold text-[var(--primary)] hover:underline flex-shrink-0",disabled:g,children:"+ Add Folder"})]}),(0,b.jsx)("div",{className:"space-y-4",children:e.map((a,c)=>(0,b.jsxs)("div",{className:"p-4 rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 space-y-3 relative group",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"text-xs font-bold text-[var(--foreground)] uppercase",children:["Folder #",c+1]}),f&&!r(c)?(0,b.jsxs)("div",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)("div",{children:a.name||"Unnamed folder"}),(0,b.jsx)("div",{className:"truncate",children:a.path||"No local path set"})]}):null]}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[f&&(0,b.jsx)("button",{type:"button",onClick:()=>q(c),className:"text-xs font-semibold text-[var(--primary)] hover:underline",disabled:g,children:r(c)?"Done":"Edit"}),e.length>1&&(0,b.jsx)("button",{type:"button",onClick:()=>k(c),className:"text-xs font-semibold text-[var(--destructive)] hover:underline",disabled:g,children:"Remove"})]})]}),r(c)?(0,b.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,b.jsx)("input",{value:a.name,onChange:a=>i(c,"name",a.target.value),placeholder:"Name (e.g. Frontend, API Docs, Design System)",className:"input text-sm",disabled:g}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{value:a.path,onChange:a=>i(c,"path",a.target.value),placeholder:"Local path to folder",className:"input text-sm flex-1",disabled:g}),(0,b.jsx)("button",{type:"button",onClick:async()=>{try{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json();b.path&&i(c,"path",b.path)}catch{o(n===c?null:c)}},className:"px-3 py-2 rounded-xl border border-[var(--card-border)] bg-[var(--muted)]/30 hover:bg-[var(--muted)]/60 transition-colors text-xs font-semibold text-[var(--muted-foreground)] whitespace-nowrap",disabled:g,children:"Browse"})]}),n===c&&(0,b.jsx)("div",{className:"md:col-span-2",children:(0,b.jsx)(d,{initialPath:a.path||"",onSelect:a=>{i(c,"path",a),o(null)},onCancel:()=>o(null)})}),(0,b.jsx)("div",{className:"md:col-span-2",children:(0,b.jsx)("textarea",{value:a.notes,onChange:a=>i(c,"notes",a.target.value),placeholder:"Notes for this folder — e.g. coding conventions, deploy steps, ownership, doc standards...",className:"input text-sm w-full min-h-24 resize-y",disabled:g})})]}):null]},c))})]})]})}function j({isOpen:a,onClose:d,onSubmit:e,editingProject:f,form:g,repos:h,isSubmitting:j,formError:k,onFieldChange:l,onRepoChange:m,onAddRepo:n,onRemoveRepo:o}){let[p,q]=(0,c.useState)([]);return((0,c.useEffect)(()=>{let a=!1;return async function(){if(!f)return q([]);try{let b=await fetch(`/api/knowledge-notes?scope=project&subjectId=${encodeURIComponent(f.id)}`),c=(b.ok?await b.json():{note:null}).note;a||q(c?.content?[{id:c.id,content:c.content,created_at:c.updatedAt??c.createdAt,source:c.sourceType}]:[])}catch{a||q([])}}(),()=>{a=!0}},[f]),a)?(0,b.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:a=>a.target===a.currentTarget&&d(),children:(0,b.jsxs)("div",{className:"modal-content w-full max-w-4xl mx-2 sm:mx-auto bg-[var(--card-bg)] rounded-3xl border border-[var(--card-border)] shadow-2xl animate-scale-in flex flex-col max-h-[90vh]",children:[(0,b.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-xl font-bold",children:f?"Edit Project":"Create New Project"}),(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:f?"Update your project settings and folders.":"Define a new project and connect folders."})]}),(0,b.jsx)("button",{onClick:d,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,b.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 sm:p-8",children:[f&&(0,b.jsx)("div",{className:"mb-6",children:(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 p-4",children:[(0,b.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Living Project Note"}),p.length>0?(0,b.jsx)("div",{className:"mt-3 space-y-2",children:p.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,b.jsx)("div",{children:a.content}),a.created_at?(0,b.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(a.created_at).toLocaleString()}):null]},a.id))}):(0,b.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"No project note yet."})]})}),(0,b.jsx)(i,{form:g,repos:h,isEditingProject:!!f,isSubmitting:j,onFieldChange:l,onRepoChange:m,onAddRepo:n,onRemoveRepo:o}),k&&(0,b.jsx)("div",{className:"mt-6 p-4 rounded-xl bg-[var(--destructive-muted)] border border-[var(--destructive)]/20 text-sm text-[var(--destructive)]",children:k})]}),(0,b.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-t border-[var(--card-border)] flex items-center justify-end gap-3 flex-shrink-0",children:[(0,b.jsx)("button",{onClick:d,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Cancel"}),(0,b.jsx)("button",{onClick:e,disabled:j,className:"btn-primary px-8 py-2 shadow-lg shadow-[var(--primary)]/20 min-w-[120px]",children:j?(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"spinner w-3 h-3 border-2 border-white/20 border-t-white"}),"Saving..."]}):f?"Save Changes":"Create Project"})]})]})}):null}a.s(["createProjectPayload",()=>h,"default",()=>j,"useProjectFormState",()=>g],18984)}];
2
+
3
+ //# sourceMappingURL=_ba5903a7._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[641710,a=>{"use strict";let b=(0,a.i(883706).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);a.s(["Clock",()=>b],641710)},501027,a=>{"use strict";let b=(0,a.i(883706).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);a.s(["Zap",()=>b],501027)},194125,a=>{"use strict";function b(a){return a.replace(/\[reaction\s+[^\]]*\]/gi,"").replace(/\[agx:[^\]]*\]/g,"").replace(/\[checkpoint\]/g,"").replace(/\[criteria:\s*[^\]]*\]/g,"").replace(/\[done\]/g,"").replace(/\[blocked[^\]]*\]/g,"").replace(/^\[SKIP\]$/gm,"").trim()}a.s(["stripMarkers",()=>b])},441997,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={BailoutToCSRError:function(){return g},isBailoutToCSRError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="BAILOUT_TO_CLIENT_SIDE_RENDERING";class g extends Error{constructor(a){super(`Bail out to client-side rendering: ${a}`),this.reason=a,this.digest=f}}function h(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===f}},883706,a=>{"use strict";var b=a.i(572131);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],883706)},56196,a=>{"use strict";var b=a.i(572131);function c(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!1),[f,g]=(0,b.useState)(null),h=(0,b.useCallback)(async()=>{e(!0);try{let a=await fetch("/api/projects");if(!a.ok)throw Error("Failed to fetch projects");let b=await a.json();c(b.projects??[]),g(null)}catch(a){g(a instanceof Error?a:Error("Unknown error"))}finally{e(!1)}},[]);(0,b.useEffect)(()=>{h()},[h]);let i=(0,b.useCallback)(async a=>{let b=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to create project");let d=(await b.json()).project;return c(a=>[d,...a]),d},[]);return{projects:a,isLoading:d,error:f,refetch:h,createProject:i,updateProject:(0,b.useCallback)(async(a,b)=>{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok)throw Error((await d.json().catch(()=>({}))).error||"Failed to update project");let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?e:b)),e},[]),deleteProject:(0,b.useCallback)(async a=>{let b=await fetch(`/api/projects/${a}`,{method:"DELETE"});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to delete project");c(b=>b.filter(b=>b.id!==a))},[])}}function d(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!0),f=(0,b.useCallback)(async()=>{try{let a=await fetch("/api/projects");if(!a.ok)return;let{projects:b}=await a.json(),d=await Promise.all((b??[]).map(async a=>{let b=[],c=[];try{let[d,e]=await Promise.all([fetch(`/api/projects/${a.id}/agents`),fetch(`/api/projects/${a.id}/threads`)]);d.ok&&(b=(await d.json()).agents??[]),e.ok&&(c=((await e.json()).threads??[]).map(a=>a.thread_id))}catch{}return{...a,repos:a.repos??[],agents:b.map(b=>({project_id:a.id,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at})),thread_ids:c,workspace_ids:c}}));c(d)}catch{}finally{e(!1)}},[]);(0,b.useEffect)(()=>{f()},[f]);let g=(0,b.useCallback)(async(a,b)=>{try{let d="string"==typeof a?{name:a}:a,e=d.name.trim(),f=(d.slug||e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),g=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...d,name:e,slug:f})});if(!g.ok)return null;let{project:h}=await g.json(),i=Array.isArray(b)?b:b?[b]:[];for(let a of i)await fetch(`/api/projects/${h.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:a})}).catch(()=>{});let j={...h,repos:h.repos??[],agents:[],thread_ids:i,workspace_ids:i};return c(a=>[...a,j].sort((a,b)=>a.name.localeCompare(b.name))),j}catch{return null}},[]),h=(0,b.useCallback)(async(a,b)=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:b})})).ok)return;c(c=>c.map(c=>c.id===a?{...c,name:b}:c).sort((a,b)=>a.name.localeCompare(b.name)))}catch{}},[]),i=(0,b.useCallback)(async a=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"DELETE"})).ok)return;c(b=>b.filter(b=>b.id!==a))}catch{}},[]),j=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok){let a=await d.json().catch(()=>({}));throw Error(a.error||"Failed to update project")}let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?{...b,...e,repos:e.repos??b.repos}:b)),e}catch{return null}},[]),k=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),l=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents?agentId=${b}`,{method:"DELETE"});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]);return{projects:a,isLoading:d,createProject:g,updateProject:j,renameProject:h,deleteProject:i,addAgent:k,removeAgent:l,reorderAgents:(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedAgentIds:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),moveAgent:(0,b.useCallback)(async(a,b,c)=>{try{await fetch(`/api/projects/${b}/agents?agentId=${a}`,{method:"DELETE"}),await fetch(`/api/projects/${c}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:a})}),await f()}catch{}},[f]),refresh:f}}a.s(["useProjects",()=>c,"useProjectsWithAgents",()=>d])},669520,a=>{"use strict";let b=(0,a.i(883706).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",()=>b],669520)},204301,a=>{"use strict";var b=a.i(572131);let c=new Set(["spawning","running"]);function d(a,d){let e=d?.intervalMs??1500,f=d?.idleIntervalMs??1e4,[g,h]=(0,b.useState)(new Set),[i,j]=(0,b.useState)([]),[k,l]=(0,b.useState)({}),[m,n]=(0,b.useState)([]),o=(0,b.useRef)(a);o.current=a;let p=(0,b.useRef)(d?.messages??[]);p.current=d?.messages??[];let q=(0,b.useRef)(d?.setMessages);q.current=d?.setMessages;let r=(0,b.useRef)(0);(0,b.useEffect)(()=>{let a=d?.messages??[];if(a.length>0){let b=Math.max(...a.map(a=>a.timestamp));b>r.current&&(r.current=b)}},[d?.messages]);let s=(0,b.useCallback)(async()=>{let a=o.current;if(!a){h(new Set),j([]),l({}),n([]);return}let b=null;if(a.threadId?b=`/api/processes?threadId=${encodeURIComponent(a.threadId)}`:a.workspaceId&&(b=`/api/processes?workspaceId=${encodeURIComponent(a.workspaceId)}`),!b){h(new Set),j([]),l({}),n([]);return}try{let e=a.workspaceId||a.threadId,f=e?`/api/history?threadId=${encodeURIComponent(e)}&since=${r.current}`:null,g=e?`/api/chat-runs?threadId=${encodeURIComponent(e)}&limit=20`:null,i=[fetch(b)];f&&i.push(fetch(f)),g&&i.push(fetch(g));let[k,m,s]=await Promise.all(i),t=o.current;if(t?.threadId!==a.threadId||t?.workspaceId!==a.workspaceId)return;if(k.ok){let a=await k.json();j(a);let b=new Set(a.filter(a=>c.has(a.state)).map(a=>a.agentId));h(b);let d={};for(let b of a){if(!c.has(b.state))continue;let a=p.current.find(a=>a.id===b.sinceMessageId),e=a?.rootMessageId??b.sinceMessageId;d[b.agentId]={content:"",rootMessageId:e}}l(d)}if(s?.ok){var d;let a=(d=await s.json(),Array.isArray(d)?d.map(a=>{if(!a||"object"!=typeof a)return null;let b="string"==typeof a.chatRunId?a.chatRunId:"string"==typeof a.id?a.id:null,c="string"==typeof a.threadId?a.threadId:null,d="string"==typeof a.status?a.status:null,e="string"==typeof a.rootMessageId?a.rootMessageId:(a.rootMessageId,null);return b&&c&&d&&("queued"===d||"running"===d||"awaiting_user"===d||"blocked"===d||"completed"===d||"failed"===d||"cancelled"===d)?{chatRunId:b,threadId:c,rootMessageId:e,status:d,optimistic:!1}:null}).filter(a=>!!a):[]);n(a)}if(m?.ok&&q.current){let a=await m.json();if(a.length>0){let b=Math.max(...a.map(a=>a.timestamp));b>r.current&&(r.current=b),q.current(b=>{let c=new Set(b.map(a=>a.id)),d=a.filter(a=>!c.has(a.id)),e=b.map(b=>a.find(a=>a.id===b.id)??b);return 0===d.length?e:[...e,...d].sort((a,b)=>a.timestamp-b.timestamp)})}}}catch{}},[]),t=a?.threadId||a?.workspaceId||null,u=m.some(a=>"queued"===a.status||"running"===a.status),v=i.some(a=>c.has(a.state)),w=u||v?e:f;return(0,b.useEffect)(()=>{if(!t){h(new Set),j([]),l({}),n([]);return}s();let a=setInterval(s,w);return()=>clearInterval(a)},[t,w,s]),{activeAgents:g,processes:i,streaming:k,chatRuns:m,poll:s}}a.s(["useProcessPolling",()=>d])},331748,356283,a=>{"use strict";var b=a.i(572131);function c(a){return`threadId=${encodeURIComponent(a)}`}function d(a){return`workspaceId=${encodeURIComponent(a)}`}function e(a){let[e,f]=(0,b.useState)([]),[g,h]=(0,b.useState)([]),[i,j]=(0,b.useState)([]),k=(0,b.useRef)(a),l=(0,b.useRef)(a);k.current=a,l.current!==a&&(l.current=a,f([]),h([]),j([]));let m=(0,b.useCallback)(async a=>{let b=a?.trim()||k.current?.trim();if(!b){f([]),h([]);return}let e=c(b);try{let[a,c]=await Promise.all([fetch(`/api/history?${e}`),fetch(`/api/logs?${d(b)}`)]);if(k.current!==b)return;a.ok&&f(await a.json()),c.ok&&h(await c.json())}catch{}},[]),n=(0,b.useCallback)(async a=>{let b=a?.trim()||k.current?.trim();if(!b){f([]),h([]);return}let e=c(b);await Promise.all([fetch(`/api/history?${e}`,{method:"DELETE"}),fetch(`/api/logs?${d(b)}`,{method:"DELETE"})]),k.current===b&&(f([]),h([]))},[]),o=(0,b.useCallback)(async(a,b=10,c,d,e,g,h,i,l,m)=>{let n=c?.trim()||k.current?.trim();if(!n)return;let o=Date.now(),p=crypto.randomUUID(),q={id:p,role:"user",participantId:null,content:a,timestamp:o,rootMessageId:d||null,parentMessageId:d||null,depth:+!!d,...g&&g.length>0?{attachments:g}:{}};f(a=>[...a,q]);try{let c=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:n,prompt:a,promptPrefix:l||void 0,maxRounds:b,userMessageId:p,rootMessageId:d||void 0,attachmentIds:e?.length?e:void 0,activeParticipantIds:Array.isArray(h)?h:void 0,projectSlug:i?.trim()||void 0,routing:m})}),f=await c.json().catch(()=>null);c.ok&&f?.chatRunId&&j(a=>[{chatRunId:f.chatRunId,threadId:n,rootMessageId:d||p,status:"queued",optimistic:!0,enqueuedAt:Date.now()},...a.filter(a=>a.chatRunId!==f.chatRunId)])}catch{}return p},[]),p=(0,b.useCallback)(async()=>{let a=k.current?.trim();if(a)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(a)}`,{method:"DELETE"})}catch{}},[]),q=(0,b.useCallback)(async a=>{let b=k.current?.trim();if(b)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(b)}&threadId=${encodeURIComponent(a)}`,{method:"DELETE"})}catch{}},[]);return{messages:e,setMessages:f,logs:g,sendMessage:o,loadHistory:m,clearHistory:n,clearLogs:(0,b.useCallback)(async a=>{let b=a?.trim()||k.current?.trim();b?(await fetch(`/api/logs?${d(b)}`,{method:"DELETE"}).catch(()=>{}),k.current===b&&h([])):h([])},[]),chatRuns:i,setChatRuns:j,stop:p,stopThread:q}}function f(a){if("string"==typeof a)return a.trim()||void 0}function g(a,b){let c=new Set,d=new Set;!function a(b,c){if(b)for(let d of b)c(d),a(d.content,c)}(a.content,a=>{if("participantMention"!==a.type)return;let b=a.attrs??{},e="string"==typeof b.id?b.id.trim():"",f="string"==typeof b.kind?b.kind:"agent";e&&"agent"===f&&(c.add(e),"parallel"===b.mode&&d.add(e))});let e=f(b);return{...e?{pinnedParticipantId:e}:{},mentionedParticipantIds:Array.from(c),parallelParticipantIds:Array.from(d)}}function h(a,b){let c=function(a){if(!Array.isArray(a))return[];let b=new Set,c=[];for(let d of a){if("string"!=typeof d)continue;let a=d.trim();!a||b.has(a)||(b.add(a),c.push(a))}return c}(a),d=f(b);return d&&c.includes(d)?[d,...c.filter(a=>a!==d)]:c}a.s(["useGroupChat",()=>e],331748),a.s(["extractComposerRouting",()=>g,"orderParticipantIds",()=>h],356283)}];
2
+
3
+ //# sourceMappingURL=_ed4fece9._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[563588,a=>{"use strict";let b=(0,a.i(883706).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);a.s(["MessageSquare",()=>b],563588)},104720,a=>{"use strict";let b=(0,a.i(883706).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["FileText",()=>b],104720)},167453,a=>{"use strict";let b=(0,a.i(883706).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["CheckCircle2",()=>b],167453)},613749,a=>{"use strict";let b=(0,a.i(883706).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",()=>b],613749)},862722,a=>{"use strict";let b=(0,a.i(883706).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);a.s(["XCircle",()=>b],862722)},73570,a=>{"use strict";let b=(0,a.i(883706).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);a.s(["AlertTriangle",()=>b],73570)},65151,a=>{"use strict";let b=(0,a.i(883706).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Circle",()=>b],65151)},292e3,a=>{"use strict";let b=(0,a.i(883706).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",()=>b],292e3)},215040,a=>{"use strict";let b={threadSidebarVisible:!1,workspaceRoots:[],homeSearchConsent:!1,hasCompletedFirstRun:!1,fileIgnorePatterns:[]};function c(a){return a&&"object"==typeof a?{threadSidebarVisible:"boolean"==typeof a.threadSidebarVisible?a.threadSidebarVisible:b.threadSidebarVisible,workspaceRoots:Array.isArray(a.workspaceRoots)?a.workspaceRoots.filter(a=>"string"==typeof a):b.workspaceRoots,homeSearchConsent:"boolean"==typeof a.homeSearchConsent?a.homeSearchConsent:b.homeSearchConsent,hasCompletedFirstRun:"boolean"==typeof a.hasCompletedFirstRun?a.hasCompletedFirstRun:b.hasCompletedFirstRun,fileIgnorePatterns:Array.isArray(a.fileIgnorePatterns)?a.fileIgnorePatterns.filter(a=>"string"==typeof a):b.fileIgnorePatterns}:b}let d="/api/userPreferences";function e(a){return a.json().then(a=>a&&"object"==typeof a?c(a.preferences??a):c(a)).catch(()=>c(null))}function f(a){return a.statusText||`Failed to reach ${d} (${a.status})`}async function g(){let a=await fetch(d,{cache:"no-store"});if(!a.ok)throw Error(f(a));return e(a)}async function h(a){let b=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json"},cache:"no-store",body:JSON.stringify({preferences:a})});if(!b.ok)throw Error(f(b));return e(b)}a.s(["fetchUserPreferences",()=>g,"updateUserPreferences",()=>h],215040)},284505,a=>{"use strict";let b=(0,a.i(883706).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["Download",()=>b],284505)},660246,a=>{"use strict";let b=(0,a.i(883706).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);a.s(["Users",()=>b],660246)},589116,a=>{"use strict";let b="agx-chat:threads";function c(){let a=globalThis.localStorage;if(!a)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return a}function d(){let a=c().getItem(b);if(!a)return{threads:{}};try{let b=JSON.parse(a);if(b&&"object"==typeof b&&b.threads&&"object"==typeof b.threads)return{threads:Object.fromEntries(Object.entries(b.threads).map(([a,b])=>{var c,d;return[a,(c=a,d=b,{id:c,title:d?.title,messages:Array.isArray(d?.messages)?[...d.messages]:[],createdAt:"number"==typeof d?.createdAt?d.createdAt:Date.now(),updatedAt:"number"==typeof d?.updatedAt?d.updatedAt:Date.now(),metadata:d?.metadata,status:d?.status,outcomeNote:d?.outcomeNote,projectId:"string"==typeof d?.projectId?d.projectId:"string"==typeof d?.teamId?d.teamId:d?.projectId===null||d?.teamId===null?null:void 0})]}))}}catch{}return{threads:{}}}function e(a){c().setItem(b,JSON.stringify(a))}function f(a){return{...a,messages:a.messages.map(a=>({...a})),metadata:a.metadata?{...a.metadata}:void 0}}let g=new class{async saveThread(a){let b=Date.now(),c=d(),g=c.threads[a.id],h=g?.createdAt??a.createdAt??b,i=a.updatedAt??b,j={id:a.id,title:a.title,messages:a.messages.map(a=>({...a})),metadata:a.metadata,createdAt:h,updatedAt:i,status:a.status,outcomeNote:a.outcomeNote,projectId:a.projectId??a.teamId};return c.threads[a.id]=j,e(c),f(j)}async loadThread(a){let b=d().threads[a];return b?f(b):null}async listThreads(a){let b=Object.values(d().threads),c=a?.order??"desc",e=[...b].sort((a,b)=>"asc"===c?a.updatedAt-b.updatedAt:b.updatedAt-a.updatedAt),g=Math.max(0,a?.offset??0),h=a?.limit,i="number"==typeof h&&h>=0?e.slice(g,g+h):e.slice(g);return{total:b.length,threads:i.map(f)}}async deleteThread(a){let b=d();b.threads[a]&&(delete b.threads[a],e(b))}};a.s(["threadService",0,{listThreads:async()=>[...(await g.listThreads({order:"desc"})).threads.filter(a=>!0!==a.metadata?.archived)].sort((a,b)=>b.updatedAt-a.updatedAt),async createThread(a){let b="string"==typeof a?.id?a.id.trim():"";if(b){let c=await g.loadThread(b);if(c){let b={...c.metadata??{},...a?.metadata??{},archived:!1,archivedAt:null};return g.saveThread({id:c.id,title:a?.title??c.title,messages:a?.messages?.length?a.messages:c.messages,metadata:b,createdAt:c.createdAt})}}let c={id:b||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:a?.messages?.length?a.messages:[],title:a?.title,metadata:a?.metadata};return g.saveThread(c)},async deleteThread(a){let b=a.trim();if(!b)return;let c=await g.loadThread(b);if(!c)return;let d={...c.metadata??{},archived:!0,archivedAt:Date.now()};await g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:d,createdAt:c.createdAt})},async renameThread(a,b){let c=a.trim(),d=b.trim();if(!c||!d)return null;let e=await g.loadThread(c);return e?(e.title?.trim()??"")===d?e:g.saveThread({id:e.id,title:d,messages:e.messages,metadata:e.metadata,createdAt:e.createdAt}):null},async updateThreadStatus(a,b){let c=await g.loadThread(a);return c?c.status===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:b,outcomeNote:c.outcomeNote}):null},async updateThreadOutcomeNote(a,b){let c=await g.loadThread(a);return c?c.outcomeNote===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:c.status,outcomeNote:b}):null},async updateMessageThreadStatus(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,threadStatus:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async updateMessageOutcomeNote(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,outcomeNote:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async saveThreadMessages(a,b){let c=await g.loadThread(a);if(!c)return null;let d=c.title?.trim()||function(a){let b=a.find(a=>"user"===a.role)?.content?.trim();if(!b)return;let c=b.replace(/\s+/g," ");return c.length>60?`${c.slice(0,60).trim()}…`:c}(b);return function(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c+=1){let d=a[c],e=b[c];if(d.id!==e.id||d.role!==e.role||d.participantId!==e.participantId||d.content!==e.content||d.timestamp!==e.timestamp)return!1}return!0}(c.messages,b)&&(c.title?.trim()||void 0)===d?c:g.saveThread({id:c.id,title:d,messages:b,metadata:c.metadata,createdAt:c.createdAt})}}],589116)},195348,a=>{"use strict";var b=a.i(572131),c=a.i(50944),d=a.i(589116);function e(){}let f=a=>[...a].sort((a,b)=>b.createdAt-a.createdAt);function g(a){let g=(0,c.useSearchParams)(),h=(0,b.useRef)(!0),[i,j]=(0,b.useState)([]),[k,l]=(0,b.useState)(null),[m,n]=(0,b.useState)(!0),[o,p]=(0,b.useState)(!0),[q,r]=(0,b.useState)(!1),[s,t]=(0,b.useState)(null),[u,v]=(0,b.useState)(null),w=(0,b.useRef)(!1),x=(0,b.useCallback)(a=>{l(a)},[]);(0,b.useEffect)(()=>(h.current=!0,()=>{h.current=!1}),[]),(0,b.useEffect)(()=>{let b=!1;return(async()=>{try{var c;let i,k=(a||g.get("thread")||"").trim()||null,m=await d.threadService.listThreads();if(k&&!m.some(a=>a.id===k)){let a=await d.threadService.createThread({id:k});m=f([...m.filter(b=>b.id!==a.id),a])}if(b||!h.current)return;j(m);let n=k||null,{threadId:o,shouldClearSavedId:p,restoredFromStorage:q}=(c=m,i=c[0]?.id??null,n?c.some(a=>a.id===n)?{threadId:n,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:i,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:i,shouldClearSavedId:!1,restoredFromStorage:!1});p&&e(),w.current||(w.current=!0),q&&o?x(o):o?l(a=>a??o):l(null)}catch(a){console.error("Failed to load threads",a)}finally{h.current&&(n(!1),p(!1))}})(),()=>{b=!0}},[x,g,a]),(0,b.useEffect)(()=>{w.current&&(k||e())},[k]);let y=(0,b.useCallback)(async a=>{r(!0);try{let b=await d.threadService.createThread(a);if(!h.current)return b;return j(a=>f([...a.filter(a=>a.id!==b.id),b])),l(b.id),b}catch(a){throw console.error("Failed to create thread",a),a}finally{h.current&&r(!1)}},[]),z=(0,b.useCallback)(async a=>{if(a){t(a);try{if(await d.threadService.deleteThread(a),!h.current)return;let b=[];j(c=>b=f(c.filter(b=>b.id!==a))),l(c=>c===a?b[0]?.id??null:c)}catch(a){throw console.error("Failed to delete thread",a),a}finally{h.current&&t(null)}}},[]),A=(0,b.useCallback)(async(a,b)=>{let c=a.trim(),e=b.trim();if(c&&e){v(c);try{let a=await d.threadService.renameThread(c,e);if(!a||!h.current)return;j(b=>f(b.map(b=>b.id===a.id?a:b)))}catch(a){throw console.error("Failed to rename thread",a),a}finally{h.current&&v(a=>a===c?null:a)}}},[]),B=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.saveThreadMessages(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread messages",a)}},[]),C=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadStatus(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread status",a)}},[]),D=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadOutcomeNote(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread outcome note",a)}},[]),E=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageThreadStatus(a,b,c);if(!e||!h.current)return;j(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message thread status",a)}},[]),F=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageOutcomeNote(a,b,c);if(!e||!h.current)return;j(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message outcome note",a)}},[]),G=null!==k&&s===k;return{threads:i,activeThreadId:k,selectThread:x,createThread:y,deleteThread:z,isLoading:m,isRestoringActiveThread:o,isCreating:q,deletingThreadId:s,renamingThreadId:u,isDeletingActiveThread:G,updateThreadMessages:B,renameThread:A,updateThreadStatus:C,updateThreadOutcomeNote:D,updateMessageThreadStatus:E,updateMessageOutcomeNote:F}}a.s(["useThreadState",()=>g],195348)},194125,a=>{"use strict";function b(a){return a.replace(/\[reaction\s+[^\]]*\]/gi,"").replace(/\[agx:[^\]]*\]/g,"").replace(/\[checkpoint\]/g,"").replace(/\[criteria:\s*[^\]]*\]/g,"").replace(/\[done\]/g,"").replace(/\[blocked[^\]]*\]/g,"").replace(/^\[SKIP\]$/gm,"").trim()}a.s(["stripMarkers",()=>b])},641710,a=>{"use strict";let b=(0,a.i(883706).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);a.s(["Clock",()=>b],641710)},669520,a=>{"use strict";let b=(0,a.i(883706).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",()=>b],669520)},204301,a=>{"use strict";var b=a.i(572131);let c=new Set(["spawning","running"]);function d(a,d){let e=d?.intervalMs??1500,f=d?.idleIntervalMs??1e4,[g,h]=(0,b.useState)(new Set),[i,j]=(0,b.useState)([]),[k,l]=(0,b.useState)({}),[m,n]=(0,b.useState)([]),o=(0,b.useRef)(a);o.current=a;let p=(0,b.useRef)(d?.messages??[]);p.current=d?.messages??[];let q=(0,b.useRef)(d?.setMessages);q.current=d?.setMessages;let r=(0,b.useRef)(0);(0,b.useEffect)(()=>{let a=d?.messages??[];if(a.length>0){let b=Math.max(...a.map(a=>a.timestamp));b>r.current&&(r.current=b)}},[d?.messages]);let s=(0,b.useCallback)(async()=>{let a=o.current;if(!a){h(new Set),j([]),l({}),n([]);return}let b=null;if(a.threadId?b=`/api/processes?threadId=${encodeURIComponent(a.threadId)}`:a.workspaceId&&(b=`/api/processes?workspaceId=${encodeURIComponent(a.workspaceId)}`),!b){h(new Set),j([]),l({}),n([]);return}try{let e=a.workspaceId||a.threadId,f=e?`/api/history?threadId=${encodeURIComponent(e)}&since=${r.current}`:null,g=e?`/api/chat-runs?threadId=${encodeURIComponent(e)}&limit=20`:null,i=[fetch(b)];f&&i.push(fetch(f)),g&&i.push(fetch(g));let[k,m,s]=await Promise.all(i),t=o.current;if(t?.threadId!==a.threadId||t?.workspaceId!==a.workspaceId)return;if(k.ok){let a=await k.json();j(a);let b=new Set(a.filter(a=>c.has(a.state)).map(a=>a.agentId));h(b);let d={};for(let b of a){if(!c.has(b.state))continue;let a=p.current.find(a=>a.id===b.sinceMessageId),e=a?.rootMessageId??b.sinceMessageId;d[b.agentId]={content:"",rootMessageId:e}}l(d)}if(s?.ok){var d;let a=(d=await s.json(),Array.isArray(d)?d.map(a=>{if(!a||"object"!=typeof a)return null;let b="string"==typeof a.chatRunId?a.chatRunId:"string"==typeof a.id?a.id:null,c="string"==typeof a.threadId?a.threadId:null,d="string"==typeof a.status?a.status:null,e="string"==typeof a.rootMessageId?a.rootMessageId:(a.rootMessageId,null);return b&&c&&d&&("queued"===d||"running"===d||"awaiting_user"===d||"blocked"===d||"completed"===d||"failed"===d||"cancelled"===d)?{chatRunId:b,threadId:c,rootMessageId:e,status:d,optimistic:!1}:null}).filter(a=>!!a):[]);n(a)}if(m?.ok&&q.current){let a=await m.json();if(a.length>0){let b=Math.max(...a.map(a=>a.timestamp));b>r.current&&(r.current=b),q.current(b=>{let c=new Set(b.map(a=>a.id)),d=a.filter(a=>!c.has(a.id)),e=b.map(b=>a.find(a=>a.id===b.id)??b);return 0===d.length?e:[...e,...d].sort((a,b)=>a.timestamp-b.timestamp)})}}}catch{}},[]),t=a?.threadId||a?.workspaceId||null,u=m.some(a=>"queued"===a.status||"running"===a.status),v=i.some(a=>c.has(a.state)),w=u||v?e:f;return(0,b.useEffect)(()=>{if(!t){h(new Set),j([]),l({}),n([]);return}s();let a=setInterval(s,w);return()=>clearInterval(a)},[t,w,s]),{activeAgents:g,processes:i,streaming:k,chatRuns:m,poll:s}}a.s(["useProcessPolling",()=>d])},331748,356283,a=>{"use strict";var b=a.i(572131);function c(a){return`threadId=${encodeURIComponent(a)}`}function d(a){return`workspaceId=${encodeURIComponent(a)}`}function e(a){let[e,f]=(0,b.useState)([]),[g,h]=(0,b.useState)([]),[i,j]=(0,b.useState)([]),k=(0,b.useRef)(a),l=(0,b.useRef)(a);k.current=a,l.current!==a&&(l.current=a,f([]),h([]),j([]));let m=(0,b.useCallback)(async a=>{let b=a?.trim()||k.current?.trim();if(!b){f([]),h([]);return}let e=c(b);try{let[a,c]=await Promise.all([fetch(`/api/history?${e}`),fetch(`/api/logs?${d(b)}`)]);if(k.current!==b)return;a.ok&&f(await a.json()),c.ok&&h(await c.json())}catch{}},[]),n=(0,b.useCallback)(async a=>{let b=a?.trim()||k.current?.trim();if(!b){f([]),h([]);return}let e=c(b);await Promise.all([fetch(`/api/history?${e}`,{method:"DELETE"}),fetch(`/api/logs?${d(b)}`,{method:"DELETE"})]),k.current===b&&(f([]),h([]))},[]),o=(0,b.useCallback)(async(a,b=10,c,d,e,g,h,i,l,m)=>{let n=c?.trim()||k.current?.trim();if(!n)return;let o=Date.now(),p=crypto.randomUUID(),q={id:p,role:"user",participantId:null,content:a,timestamp:o,rootMessageId:d||null,parentMessageId:d||null,depth:+!!d,...g&&g.length>0?{attachments:g}:{}};f(a=>[...a,q]);try{let c=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:n,prompt:a,promptPrefix:l||void 0,maxRounds:b,userMessageId:p,rootMessageId:d||void 0,attachmentIds:e?.length?e:void 0,activeParticipantIds:Array.isArray(h)?h:void 0,projectSlug:i?.trim()||void 0,routing:m})}),f=await c.json().catch(()=>null);c.ok&&f?.chatRunId&&j(a=>[{chatRunId:f.chatRunId,threadId:n,rootMessageId:d||p,status:"queued",optimistic:!0,enqueuedAt:Date.now()},...a.filter(a=>a.chatRunId!==f.chatRunId)])}catch{}return p},[]),p=(0,b.useCallback)(async()=>{let a=k.current?.trim();if(a)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(a)}`,{method:"DELETE"})}catch{}},[]),q=(0,b.useCallback)(async a=>{let b=k.current?.trim();if(b)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(b)}&threadId=${encodeURIComponent(a)}`,{method:"DELETE"})}catch{}},[]);return{messages:e,setMessages:f,logs:g,sendMessage:o,loadHistory:m,clearHistory:n,clearLogs:(0,b.useCallback)(async a=>{let b=a?.trim()||k.current?.trim();b?(await fetch(`/api/logs?${d(b)}`,{method:"DELETE"}).catch(()=>{}),k.current===b&&h([])):h([])},[]),chatRuns:i,setChatRuns:j,stop:p,stopThread:q}}function f(a){if("string"==typeof a)return a.trim()||void 0}function g(a,b){let c=new Set,d=new Set;!function a(b,c){if(b)for(let d of b)c(d),a(d.content,c)}(a.content,a=>{if("participantMention"!==a.type)return;let b=a.attrs??{},e="string"==typeof b.id?b.id.trim():"",f="string"==typeof b.kind?b.kind:"agent";e&&"agent"===f&&(c.add(e),"parallel"===b.mode&&d.add(e))});let e=f(b);return{...e?{pinnedParticipantId:e}:{},mentionedParticipantIds:Array.from(c),parallelParticipantIds:Array.from(d)}}function h(a,b){let c=function(a){if(!Array.isArray(a))return[];let b=new Set,c=[];for(let d of a){if("string"!=typeof d)continue;let a=d.trim();!a||b.has(a)||(b.add(a),c.push(a))}return c}(a),d=f(b);return d&&c.includes(d)?[d,...c.filter(a=>a!==d)]:c}a.s(["useGroupChat",()=>e],331748),a.s(["extractComposerRouting",()=>g,"orderParticipantIds",()=>h],356283)},596221,404650,a=>{"use strict";let b=(0,a.i(883706).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["default",()=>b],404650),a.s(["Loader2",()=>b],596221)}];
2
+
3
+ //# sourceMappingURL=_f51a3112._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[323860,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(56196),f=a.i(819721),g=a.i(533441),h=a.i(405784),i=a.i(641710);let j=(0,a.i(883706).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 k=a.i(325015),l=a.i(587532),m=a.i(321161),n=a.i(546842),o=a.i(331748),p=a.i(204301),q=a.i(815682),r=a.i(194125),s=a.i(356283);function t(a,b){return a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||b}function u(a){var b,c;let d,e,f=a.issue.identifier.trim()||"TICKET-ID",g=a.issue.title.trim()||"Untitled ticket",h=String(a.issue.status??"").trim()||"Unknown",i=String(a.issue.assignee??"").trim()||"Unassigned",j=function(a){let b=String(a?.slug??"").trim();if(b)return t(b,"project");let c=String(a?.name??"").trim();return c?t(c,"project"):"project"}(a.project),k=String(a.runtime?.knowledgeBaseRoot??"").trim()||`~/.agx/vault/${j}`,l=String(a.runtime?.issueKnowledgePath??"").trim()||`${k}/issues/${f}/`,m=String(a.runtime?.isolatedWorktreePath??"").trim()||`/tmp/agx-${t(f,"ticket")}`,n=`LINEAR TASK EXECUTION
1
+ module.exports=[323860,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(56196),f=a.i(819721),g=a.i(533441),h=a.i(405784),i=a.i(641710);let j=(0,a.i(883706).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 k=a.i(325015),l=a.i(669520),m=a.i(587532),n=a.i(321161),o=a.i(546842),p=a.i(331748),q=a.i(204301),r=a.i(815682),s=a.i(194125),t=a.i(356283);function u(a,b){return a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||b}function v(a){var b,c;let d,e,f=a.issue.identifier.trim()||"TICKET-ID",g=a.issue.title.trim()||"Untitled ticket",h=String(a.issue.status??"").trim()||"Unknown",i=String(a.issue.assignee??"").trim()||"Unassigned",j=function(a){let b=String(a?.slug??"").trim();if(b)return u(b,"project");let c=String(a?.name??"").trim();return c?u(c,"project"):"project"}(a.project),k=String(a.runtime?.knowledgeBaseRoot??"").trim()||`~/.agx/vault/${j}`,l=String(a.runtime?.issueKnowledgePath??"").trim()||`${k}/issues/${f}/`,m=String(a.runtime?.isolatedWorktreePath??"").trim()||`/tmp/agx-${u(f,"ticket")}`,n=`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
 
@@ -33,7 +33,7 @@ RULES
33
33
  - If a PR already exists, focus on CI failures, reviewer feedback, merge status, or ticket follow-up instead of starting over.
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
- `;return{prompt:`Work on this Linear ticket: ${f} - ${g}`,promptPrefix:n}}var v=a.i(860614),w=a.i(596221);let x=[{id:"claude",label:"Claude Code",icon:"🟣"},{id:"codex",label:"Codex",icon:"⚫"},{id:"gemini",label:"Gemini CLI",icon:"🔵"}];function y({connected:a,user:d,clis:e,mcpConfigured:f,onConnect:h,onConnectWithKey:i,onDisconnect:j,onConfigureMcp:k,onContinue:l}){let[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[u,y]=(0,c.useState)(null),z=async()=>{if(!m.trim())return;r(!0),p(null);let a=await i(m.trim());r(!1),a.ok||p(a.error||"Failed to connect")},A=async a=>{t(a),y(null);let b=await k(a);t(null),b.ok||y(b.error||"Failed to configure")},B=x.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)(g.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:j,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:h,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:m,onChange:a=>{n(a.target.value),p(null)},onKeyDown:a=>{"Enter"===a.key&&z()},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:z,disabled:!m.trim()||q,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:q?"...":"Save"})]}),o&&(0,b.jsx)("p",{className:"mt-1 text-[10px] text-red-400",children:o}),(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)(v.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:[x.map(a=>{let c=e[a.id],d=f[a.id],h=s===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)(g.Check,{size:10}),"Configured"]}):(0,b.jsx)("button",{type:"button",onClick:()=>A(a.id),disabled:h,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:h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(w.Loader2,{size:10,className:"animate-spin"}),"Configuring..."]}):"Configure"}):(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:"Not installed"})]},a.id)}),u&&(0,b.jsx)("p",{className:"mt-1 text-[10px] text-red-400",children:u})]}),(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:B?"Continue":"Skip for now"})]})]})})}let z=(0,f.default)(async()=>{},{loadableGenerated:{modules:[895214]},ssr:!1});function A({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 B(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 C(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}}let D={"In Progress":"In Prog","In Review":"Review",Backlog:"Backlog",Todo:"Todo",Done:"Done",Cancelled:"Cancl."},E={queued:"bg-amber-500/10 border-amber-500/20 text-amber-400",running:"bg-yellow-500/10 border-yellow-500/20 text-yellow-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"},F={queued:"bg-amber-400",running:"bg-yellow-400",success:"bg-emerald-400",failed:"bg-red-400",cancelled:"bg-zinc-400"};function G({issue:a,participants:d,projectId:e,projectSlug:f,createRun:g,updateRun:h,onRunCreated:i}){let j=d[0],k=(0,c.useRef)(crypto.randomUUID()),{messages:l,setMessages:m,sendMessage:s,chatRuns:t}=(0,o.useGroupChat)(k.current),{processes:v,streaming:w}=(0,p.useProcessPolling)({workspaceId:k.current},{messages:l,setMessages:m}),x=new Set(["queued","running","awaiting_user","blocked"]),y=t.some(a=>x.has(a.status))||v.some(a=>"spawning"===a.state||"running"===a.state)?t.some(a=>"queued"===a.status)?"queued":"working":"ready",A=(0,c.useMemo)(()=>new Map(d.map(a=>[a.id,a])),[d]),C=(0,c.useRef)(!1),D=(0,c.useCallback)(async(b,c,k,l,m,n,o)=>{if(C.current)return;C.current=!0;let p=(m?d.find(a=>a.id===m):null)??j;if(p)try{let{promptPrefix:c}=u({issue:{identifier:a.identifier,title:a.title,status:a.status,assignee:a.assignee},project:f?{slug:f}:null}),d=c+(n?`
37
- ${n}`:""),j=await g({projectId:e??null,projectSlug:f??null,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee??null,agentId:p.id,agentName:p.name}),k=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:b,promptPrefix:d,threadId:j.threadId,activeParticipantIds:[p.id],projectSlug:f??void 0,routing:o})}),l=await k.json().catch(()=>({}));if(!k.ok||!l.chatRunId||!l.userMessageId)throw Error(l.error||"Failed to start chat session");await h(j.id,{chatRunId:l.chatRunId,rootMessageId:l.userMessageId}),i(j.id)}catch(a){console.error("Failed to create chat session:",a),C.current=!1,a instanceof Error&&window.alert(a.message)}},[a,d,j,e,f,g,h,i]);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.jsx)("span",{className:"shrink-0 rounded-md border border-[var(--card-border)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:a.status})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===l.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:"Chat about this ticket"}),(0,b.jsx)("span",{className:"text-xs",children:"Your message will start a new session"})]}):(0,b.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[l.map(a=>{let c=a.participantId?A.get(a.participantId):null,d=(0,r.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)(n.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:B(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)(q.Markdown,{content:d,isUser:"user"===a.role})})]})]},a.id):null}),Object.entries(w).map(([a])=>{let c=A.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:B(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)(z,{onSend:D,onStop:()=>{},participants:d,loading:"ready"!==y,commands:[],activityStatus:y,placeholder:`Ask about ${a.identifier}...`,initialPinnedParticipantId:j?.id})})]})}function H({run:a,participants:d}){let{messages:e,setMessages:f,sendMessage:g,loadHistory:h,stop:j}=(0,o.useGroupChat)(a.threadId),{processes:k,streaming:l,chatRuns:m}=(0,p.useProcessPolling)(a.rootMessageId?{workspaceId:a.threadId,threadId:a.rootMessageId}:{workspaceId:a.threadId},{messages:e,setMessages:f});(0,c.useEffect)(()=>{h()},[h,a.threadId]);let t=(0,c.useMemo)(()=>new Map(d.map(a=>[a.id,a])),[d]),u=new Set(["queued","running","awaiting_user","blocked"]),v=m.some(a=>u.has(a.status))||k.some(a=>"spawning"===a.state||"running"===a.state)?m.some(a=>"queued"===a.status)?"queued":"working":"ready",w=(0,c.useCallback)((b,c,e,f,h,i,j)=>{a.rootMessageId&&g(b,c,void 0,a.rootMessageId,e,void 0,(0,s.orderParticipantIds)(d.map(a=>a.id),h),a.projectSlug??void 0,i,j)},[d,a.projectSlug,a.rootMessageId,g]);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.issueIdentifier}),(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.issueTitle??""})]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-4",children:[(0,b.jsxs)("div",{className:`flex items-center gap-2 rounded-md border px-2.5 py-1 ${E[a.status]}`,children:[(0,b.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${F[a.status]}`}),(0,b.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider",children:C(a.status)})]}),null!=a.durationMs&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(i.Clock,{size:14}),(0,b.jsxs)("span",{children:[(a.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:B(a.agentId,t.get(a.agentId)?.color),alt:a.agentName,className:"h-5 w-5 rounded-full object-cover"}),(0,b.jsx)("span",{className:"pr-1 text-xs font-medium",children:a.agentName})]})]})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===e.length?(0,b.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:"queued"===a.status||"running"===a.status?"Starting run...":"No thread messages yet."}):(0,b.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[e.map(c=>{let d=c.participantId?t.get(c.participantId):null,e=(0,r.stripMarkers)(c.content);if(!e.trim())return null;let f=c.participantId??a.agentId;return(0,b.jsxs)("div",{className:"flex gap-3",children:["user"===c.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)(n.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:B(f,d?.color),alt:d?.name??a.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"===c.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:d?.color??"var(--foreground)"},children:d?.name??a.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(c.timestamp).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),"user"===c.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)(q.Markdown,{content:e,isUser:!0})}):(0,b.jsx)("div",{className:"text-sm text-[var(--foreground)]",children:(0,b.jsx)(q.Markdown,{content:e,isUser:!1})})]})]},c.id)}),Object.entries(l).filter(([,b])=>!a.rootMessageId||b.rootMessageId===a.rootMessageId).map(([c])=>{let d=t.get(c);return(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)("img",{src:B(c,d?.color),alt:d?.name??a.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),d?.name??a.agentName," is thinking..."]},`stream-${c}`)})]})}),(0,b.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:a.rootMessageId?(0,b.jsx)(z,{onSend:w,onStop:j,participants:d,loading:"ready"!==v,commands:[],activityStatus:v,placeholder:"Steer this run...",initialPinnedParticipantId:a.agentId}):(0,b.jsx)("div",{className:"px-2 py-1 text-xs text-[var(--muted-foreground)]",children:"Waiting for the run to start..."})})]})}function I({issue:a,selected:d,onSelect:e,onExecute:f}){let[h,i]=(0,c.useState)(!1),l=(0,c.useRef)(null);(0,c.useEffect)(()=>()=>{l.current&&window.clearTimeout(l.current)},[]);let m=(0,c.useCallback)(async b=>{if(b.stopPropagation(),a.url)try{await navigator.clipboard.writeText(a.url),i(!0),l.current&&window.clearTimeout(l.current),l.current=window.setTimeout(()=>{i(!1)},1500)}catch(a){console.error("Failed to copy Linear issue URL:",a),i(!1)}},[a.url]),n=D[a.status]??a.status.slice(0,6);return(0,b.jsxs)("div",{className:`group relative flex 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-14 shrink-0 font-mono text-xs text-[var(--muted-foreground)]",children:a.identifier}),(0,b.jsx)("span",{className:`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:n}),(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=>{m(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)(g.Check,{size:10,className:"text-emerald-400"}):(0,b.jsx)(j,{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"}`,onClick:b=>{b.stopPropagation(),f(a,b)},title:"Execute with agent",children:(0,b.jsx)(k.Play,{size:10,className:"ml-0.5"})})]})}function J({projectId:a,projectSlug:d,initialShowSettings:e}){let f,{connected:i,loading:j,user:n,clis:o,mcpConfigured:p,connect:q,connectWithKey:r,disconnect:s,configureMcp:t}=function(){let[a,b]=(0,c.useState)(!1),[d,e]=(0,c.useState)(!0),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)({claude:!1,codex:!1,gemini:!1}),[j,k]=(0,c.useState)({}),l=(0,c.useRef)(null),m=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/linear/mcp-setup"),b=await a.json();k(b.configured??{})}catch{}},[]),n=(0,c.useCallback)(async()=>{try{let[a,c]=await Promise.all([fetch("/api/linear/status"),fetch("/api/linear/mcp-setup")]),d=await a.json(),e=await c.json();return b(d.connected),g(d.user??null),i(d.clis??{claude:!1,codex:!1,gemini:!1}),k(e.configured??{}),d.connected}catch{return b(!1),!1}finally{e(!1)}},[]);(0,c.useEffect)(()=>(n(),()=>{l.current&&clearInterval(l.current)}),[n]);let o=(0,c.useCallback)(()=>{window.open("/api/linear/auth","_blank","noopener"),l.current&&clearInterval(l.current),l.current=setInterval(async()=>{await n()&&l.current&&(clearInterval(l.current),l.current=null)},2e3)},[n]),p=(0,c.useCallback)(async a=>{try{let b=await fetch("/api/linear/token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:a})});if(!b.ok){let a=await b.json().catch(()=>({}));return{ok:!1,error:a.error||"Failed to save token"}}return await n(),{ok:!0}}catch{return{ok:!1,error:"Failed to connect"}}},[n]);return{connected:a,loading:d,user:f,clis:h,mcpConfigured:j,connect:o,connectWithKey:p,disconnect:(0,c.useCallback)(async()=>{await fetch("/api/linear/status",{method:"DELETE"}),b(!1),g(null)},[]),configureMcp:(0,c.useCallback)(async a=>{try{let b=await fetch("/api/linear/mcp-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cli:a})});if(!b.ok){let a=await b.json().catch(()=>({}));return{ok:!1,error:a.error||"Failed to configure MCP"}}return await m(),{ok:!0}}catch{return{ok:!1,error:"Failed to configure MCP"}}},[m]),refresh:n}}(),[v,w]=(0,c.useState)(!1),[x,z]=(0,c.useState)(e??!1),[D,E]=(0,c.useState)(576),[F,J]=(0,c.useState)(224),[K,L]=(0,c.useState)(""),[M,N]=(0,c.useState)(""),[O,P]=(0,c.useState)(!1),[Q,R]=(0,c.useState)([]),[S,T]=(0,c.useState)(void 0),[U,V]=(0,c.useState)(!1),[W,X]=(0,c.useState)(null),[Y,Z]=(0,c.useState)(null),[$,_]=(0,c.useState)([]),[aa,ab]=(0,c.useState)(null),[ac,ad]=(0,c.useState)(null),ae=(0,c.useRef)(null),af=(0,c.useRef)(null),ag=(0,c.useCallback)(a=>{L(a),ae.current&&clearTimeout(ae.current),ae.current=setTimeout(()=>N(a),300)},[]);(0,c.useEffect)(()=>()=>{ae.current&&clearTimeout(ae.current)},[]),(0,c.useEffect)(()=>{if(!i)return;let a=!1;return fetch("/api/linear/cycles").then(a=>a.json()).then(b=>{!a&&Array.isArray(b.cycles)&&R(b.cycles)}).catch(()=>{}),()=>{a=!0}},[i]),(0,c.useEffect)(()=>{if(!U)return;let a=a=>{af.current&&!af.current.contains(a.target)&&V(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[U]);let{issues:ah,loading:ai,hasMore:aj,loadMore:ak}=function(a,b=!0){let[d,e]=(0,c.useState)([]),[f,g]=(0,c.useState)(!0),[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)(!1),l=(0,c.useRef)(h);l.current=h;let m=(0,c.useCallback)(async c=>{if(b){g(!0);try{let b=new URLSearchParams;a.teamId&&b.set("teamId",a.teamId),a.status&&b.set("status",a.status),a.search&&b.set("search",a.search),a.assignedToMe&&b.set("assignedToMe","true"),a.cycleId&&b.set("cycleId",a.cycleId),c&&l.current&&b.set("cursor",l.current);let d=await fetch(`/api/linear/issues?${b.toString()}`),f=await d.json(),g=f.issues??[];e(a=>c?[...a,...g]:g),i(f.pageInfo?.endCursor??null),k(f.pageInfo?.hasNextPage??!1)}catch{c||e([])}finally{g(!1)}}},[a.teamId,a.status,a.search,a.assignedToMe,a.cycleId,b]);return(0,c.useEffect)(()=>{i(null),m(!1)},[m]),{issues:d,loading:f,hasMore:j,loadMore:(0,c.useCallback)(()=>m(!0),[m]),refresh:(0,c.useCallback)(()=>(i(null),m(!1)),[m])}}((0,c.useMemo)(()=>({search:M||void 0,assignedToMe:O||void 0,cycleId:S}),[M,O,S]),i),{runs:al,loading:am,createRun:an,updateRun:ao}=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},[])}}(W?.id,a??null),ap=al.find(a=>a.id===Y)??null;(0,c.useEffect)(()=>{0===ah.length?X(null):X(a=>a&&ah.some(b=>b.id===a.id)?ah.find(b=>b.id===a.id)??a:ah[0]??null)},[ah]),(0,c.useEffect)(()=>{0===al.length?Z(null):Y&&al.some(a=>a.id===Y)||Z(al[0]?.id??null)},[al,Y]),(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||_(d);return}let e=await fetch(`/api/projects/${encodeURIComponent(a)}/agents`);if(!e.ok){b||_(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||_(i)}catch{b||_([])}}(),()=>{b=!0}},[a]);let aq=(0,c.useCallback)((a,b)=>{if(0===$.length)return void window.alert("Add at least one agent to this project before running a Linear ticket.");if(1===$.length)return void ar(a,$[0]);let c=b?.currentTarget?.getBoundingClientRect();ab(a),ad(c?{top:c.bottom+4,left:c.left}:{top:200,left:200})},[$]),ar=(0,c.useCallback)(async(b,c)=>{ab(null),ad(null);let e=null;try{X(b),e=await an({projectId:a??null,projectSlug:d??null,issueId:b.id,issueIdentifier:b.identifier,issueTitle:b.title,issueStatus:b.status,issueAssignee:b.assignee,agentId:c.id,agentName:c.name}),Z(e.id);let{prompt:f,promptPrefix:g}=u({issue:{identifier:b.identifier,title:b.title,status:b.status,assignee:b.assignee},project:d?{slug:d}:null}),h=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:f,promptPrefix:g,threadId:e.threadId,activeParticipantIds:[c.id],projectSlug:d??void 0})}),i=await h.json().catch(()=>({}));if(!h.ok||!i.chatRunId||!i.userMessageId)throw Error(i.error||"Failed to start Linear run");await ao(e.id,{chatRunId:i.chatRunId,rootMessageId:i.userMessageId})}catch(a){console.error("Failed to execute Linear ticket:",a),e&&await ao(e.id,{status:"failed",error:a instanceof Error?a.message:String(a)}),a instanceof Error&&window.alert(a.message)}},[an,a,d,ao]),as=(0,c.useRef)(null);if((0,c.useEffect)(()=>{let a=as.current;if(!a||!aj)return;let b=new IntersectionObserver(a=>{a[0]?.isIntersecting&&ak()},{threshold:.1});return b.observe(a),()=>b.disconnect()},[aj,ak]),j)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Loading..."});let at=i&&!v&&!Object.values(p).some(Boolean);return!i||at?(0,b.jsx)(y,{connected:i,user:n,clis:o,mcpConfigured:p,onConnect:q,onConnectWithKey:r,onDisconnect:s,onConfigureMcp:t,onContinue:()=>w(!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)(l.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=>ag(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)]",onClick:()=>z(!0),title:"Linear settings",children:(0,b.jsx)(m.Settings,{size:16})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pb-2",children:[(0,b.jsx)("button",{type:"button",className:`rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${O?"border-blue-500/30 bg-blue-500/10 text-blue-400":"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,onClick:()=>P(a=>!a),children:"My Issues"}),(0,b.jsxs)("div",{className:"relative",ref:af,children:[(0,b.jsxs)("button",{type:"button",className:`flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${S?"border-purple-500/30 bg-purple-500/10 text-purple-400":"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,onClick:()=>V(a=>!a),children:[(0,b.jsx)("span",{className:"truncate max-w-[120px]",children:S&&(f=Q.find(a=>a.id===S))?f.name||`Cycle ${f.number}`:"Cycle"}),(0,b.jsx)(h.ChevronDown,{size:12})]}),U&&(0,b.jsxs)("div",{className:"absolute left-0 top-full z-50 mt-1 min-w-[200px] rounded-md border border-[var(--card-border)] bg-[var(--card-bg)] py-1 shadow-lg",children:[(0,b.jsx)("button",{type:"button",className:`flex w-full items-center px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--background)] ${!S?"font-medium text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,onClick:()=>{T(void 0),V(!1)},children:"All cycles"}),Q.map(a=>{let c=new Date,d=new Date(a.startsAt),e=new Date(a.endsAt),f=a.name||`Cycle ${a.number}`;return(0,b.jsxs)("button",{type:"button",className:`flex w-full items-center justify-between px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--background)] ${S===a.id?"font-medium text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,onClick:()=>{T(a.id),V(!1)},children:[(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[f,c>=d&&c<=e&&(0,b.jsx)("span",{className:"rounded bg-green-500/10 px-1 py-0.5 text-[9px] font-bold uppercase text-green-400",children:"current"})]}),S===a.id&&(0,b.jsx)(g.Check,{size:12})]},a.id)}),0===Q.length&&(0,b.jsx)("div",{className:"px-3 py-2 text-xs text-[var(--muted-foreground)]",children:"No cycles found"})]})]})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:ai&&0===ah.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===ah.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:[ah.map(a=>(0,b.jsx)(I,{issue:a,selected:W?.id===a.id,onSelect:()=>X(a),onExecute:aq},a.id)),aj?(0,b.jsx)("div",{ref:as,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:ai?"Loading...":"Load more"}):null]})})]}),(0,b.jsx)(A,{onResize:a=>E(b=>Math.max(180,Math.min(600,b+a)))}),(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:"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:"Runs"}),W&&(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:a=>aq(W,a),title:"Run agent on selected ticket",children:[(0,b.jsx)(k.Play,{size:10}),(0,b.jsx)("span",{children:"Run now"})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:W?am&&0===al.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading runs..."}):0===al.length?(0,b.jsxs)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:["No runs yet. Click ",(0,b.jsx)(k.Play,{size:10,className:"inline"})," to execute."]}):al.map(a=>(0,b.jsxs)("button",{type:"button",className:`w-full px-3 py-2 text-left text-xs transition-colors ${ap?.id===a.id?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]"}`,onClick:()=>Z(a.id),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,b.jsx)("span",{className:`font-medium ${{queued:"text-amber-500",running:"text-yellow-500",success:"text-green-500",failed:"text-red-500",cancelled:"text-[var(--muted-foreground)]"}[a.status]}`,children:C(a.status)}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:new Date(a.startedAt).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),(0,b.jsx)("div",{className:"mt-0.5 truncate text-[10px] 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 runs."})})]}),(0,b.jsx)(A,{onResize:a=>J(b=>Math.max(140,Math.min(500,b+a)))}),(0,b.jsx)("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:ap?(0,b.jsx)(H,{run:ap,participants:$}):W&&$.length>0?(0,b.jsx)(G,{issue:W,participants:$,projectId:a,projectSlug:d,createRun:an,updateRun:ao,onRunCreated:a=>Z(a)},W.id):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:W?"Add at least one agent to this project to chat.":"Select a ticket from the list."})}),x&&(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:()=>z(!1),children:"×"}),(0,b.jsx)("div",{className:"p-6",children:(0,b.jsx)(y,{connected:i,user:n,clis:o,mcpConfigured:p,onConnect:q,onConnectWithKey:r,onDisconnect:s,onConfigureMcp:t,onContinue:()=>z(!1)})})]})}),aa&&ac&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 z-40",onClick:()=>{ab(null),ad(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:ac.top,left:ac.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"}),$.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 ar(aa,a),children:[(0,b.jsx)("img",{src:B(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))]})]})]})}function K({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)(J,{projectId:i?.id,projectSlug:i?.slug??f,initialShowSettings:j})}a.s(["default",()=>K],323860)}];
36
+ `;return{prompt:`Work on this Linear ticket: ${f} - ${g}`,promptPrefix:n}}var w=a.i(860614),x=a.i(596221);let y=[{id:"claude",label:"Claude Code",icon:"🟣"},{id:"codex",label:"Codex",icon:"⚫"},{id:"gemini",label:"Gemini CLI",icon:"🔵"}];function z({connected:a,user:d,clis:e,mcpConfigured:f,onConnect:h,onConnectWithKey:i,onDisconnect:j,onConfigureMcp:k,onContinue:l}){let[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[u,v]=(0,c.useState)(null),z=async()=>{if(!m.trim())return;r(!0),p(null);let a=await i(m.trim());r(!1),a.ok||p(a.error||"Failed to connect")},A=async a=>{t(a),v(null);let b=await k(a);t(null),b.ok||v(b.error||"Failed to configure")},B=y.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)(g.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:j,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:h,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:m,onChange:a=>{n(a.target.value),p(null)},onKeyDown:a=>{"Enter"===a.key&&z()},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:z,disabled:!m.trim()||q,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:q?"...":"Save"})]}),o&&(0,b.jsx)("p",{className:"mt-1 text-[10px] text-red-400",children:o}),(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)(w.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:[y.map(a=>{let c=e[a.id],d=f[a.id],h=s===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)(g.Check,{size:10}),"Configured"]}):(0,b.jsx)("button",{type:"button",onClick:()=>A(a.id),disabled:h,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:h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(x.Loader2,{size:10,className:"animate-spin"}),"Configuring..."]}):"Configure"}):(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:"Not installed"})]},a.id)}),u&&(0,b.jsx)("p",{className:"mt-1 text-[10px] text-red-400",children:u})]}),(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:B?"Continue":"Skip for now"})]})]})})}let A=(0,f.default)(async()=>{},{loadableGenerated:{modules:[895214]},ssr:!1});function B({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 C(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 D(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}}let E={"In Progress":"In Prog","In Review":"Review",Backlog:"Backlog",Todo:"Todo",Done:"Done",Cancelled:"Cancl."},F={queued:"bg-amber-500/10 border-amber-500/20 text-amber-400",running:"bg-yellow-500/10 border-yellow-500/20 text-yellow-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"},G={queued:"bg-amber-400",running:"bg-yellow-400",success:"bg-emerald-400",failed:"bg-red-400",cancelled:"bg-zinc-400"};function H({label:a,value:c,options:d,activeClasses:e,onChange:f}){let g=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 ${g?e:"border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"}`,value:c,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)(h.ChevronDown,{size:12,className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-current"})]})}function I({label:a,values:d,options:e,activeClasses:f,onChange:i,emptyLabel:j}){let[k,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=0===n.length?j??a:1===n.length?n[0]?.label??j??a:`${n.length} assignees`;(0,c.useEffect)(()=>{if(!k)return;let a=a=>{m.current&&!m.current.contains(a.target)&&l(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[k]);let q=(0,c.useCallback)(a=>{a?i(d.includes(a)?d.filter(b=>b!==a):[...d,a]):i([])},[i,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":k,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)(h.ChevronDown,{size:12,className:`shrink-0 transition-transform ${k?"rotate-180":""}`})]}),k?(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:()=>i([]),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)(g.Check,{size:10})}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:j??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)(g.Check,{size:10}):null}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:c.label})]},`${a}-${c.value}`)})]}):null]})}function J({issue:a,participants:d,projectId:e,projectSlug:f,createRun:g,updateRun:h,onRunCreated:i}){let j=d[0],k=(0,c.useRef)(crypto.randomUUID()),{messages:l,setMessages:m,sendMessage:n,chatRuns:t}=(0,p.useGroupChat)(k.current),{processes:u,streaming:w}=(0,q.useProcessPolling)({workspaceId:k.current},{messages:l,setMessages:m}),x=new Set(["queued","running","awaiting_user","blocked"]),y=t.some(a=>x.has(a.status))||u.some(a=>"spawning"===a.state||"running"===a.state)?t.some(a=>"queued"===a.status)?"queued":"working":"ready",z=(0,c.useMemo)(()=>new Map(d.map(a=>[a.id,a])),[d]),B=(0,c.useRef)(!1),D=(0,c.useCallback)(async(b,c,k,l,m,n,o)=>{if(B.current)return;B.current=!0;let p=(m?d.find(a=>a.id===m):null)??j;if(p)try{let{promptPrefix:c}=v({issue:{identifier:a.identifier,title:a.title,status:a.status,assignee:a.assignee},project:f?{slug:f}:null}),d=c+(n?`
37
+ ${n}`:""),j=await g({projectId:e??null,projectSlug:f??null,issueId:a.id,issueIdentifier:a.identifier,issueTitle:a.title,issueStatus:a.status,issueAssignee:a.assignee??null,agentId:p.id,agentName:p.name}),k=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:b,promptPrefix:d,threadId:j.threadId,activeParticipantIds:[p.id],projectSlug:f??void 0,routing:o})}),l=await k.json().catch(()=>({}));if(!k.ok||!l.chatRunId||!l.userMessageId)throw Error(l.error||"Failed to start chat session");await h(j.id,{chatRunId:l.chatRunId,rootMessageId:l.userMessageId}),i(j.id)}catch(a){console.error("Failed to create chat session:",a),B.current=!1,a instanceof Error&&window.alert(a.message)}},[a,d,j,e,f,g,h,i]);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.jsx)("span",{className:"shrink-0 rounded-md border border-[var(--card-border)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:a.status})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===l.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:"Chat about this ticket"}),(0,b.jsx)("span",{className:"text-xs",children:"Your message will start a new session"})]}):(0,b.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[l.map(a=>{let c=a.participantId?z.get(a.participantId):null,d=(0,s.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)(o.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:C(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)(r.Markdown,{content:d,isUser:"user"===a.role})})]})]},a.id):null}),Object.entries(w).map(([a])=>{let c=z.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:C(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)(A,{onSend:D,onStop:()=>{},participants:d,projectSlug:f??void 0,loading:"ready"!==y,commands:[],activityStatus:y,placeholder:`Ask about ${a.identifier}...`,initialPinnedParticipantId:j?.id})})]})}function K({run:a,participants:d}){let{messages:e,setMessages:f,sendMessage:g,loadHistory:h,stop:j}=(0,p.useGroupChat)(a.threadId),{processes:k,streaming:l,chatRuns:m}=(0,q.useProcessPolling)(a.rootMessageId?{workspaceId:a.threadId,threadId:a.rootMessageId}:{workspaceId:a.threadId},{messages:e,setMessages:f});(0,c.useEffect)(()=>{h()},[h,a.threadId]);let n=(0,c.useMemo)(()=>new Map(d.map(a=>[a.id,a])),[d]),u=new Set(["queued","running","awaiting_user","blocked"]),v=m.some(a=>u.has(a.status))||k.some(a=>"spawning"===a.state||"running"===a.state)?m.some(a=>"queued"===a.status)?"queued":"working":"ready",w=(0,c.useCallback)((b,c,e,f,h,i,j)=>{a.rootMessageId&&g(b,c,void 0,a.rootMessageId,e,void 0,(0,t.orderParticipantIds)(d.map(a=>a.id),h),a.projectSlug??void 0,i,j)},[d,a.projectSlug,a.rootMessageId,g]);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.issueIdentifier}),(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.issueTitle??""})]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-4",children:[(0,b.jsxs)("div",{className:`flex items-center gap-2 rounded-md border px-2.5 py-1 ${F[a.status]}`,children:[(0,b.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${G[a.status]}`}),(0,b.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider",children:D(a.status)})]}),null!=a.durationMs&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(i.Clock,{size:14}),(0,b.jsxs)("span",{children:[(a.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:C(a.agentId,n.get(a.agentId)?.color),alt:a.agentName,className:"h-5 w-5 rounded-full object-cover"}),(0,b.jsx)("span",{className:"pr-1 text-xs font-medium",children:a.agentName})]})]})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-6 pb-64",children:0===e.length?(0,b.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:"queued"===a.status||"running"===a.status?"Starting run...":"No thread messages yet."}):(0,b.jsxs)("div",{className:"mx-auto max-w-4xl space-y-8",children:[e.map(c=>{let d=c.participantId?n.get(c.participantId):null,e=(0,s.stripMarkers)(c.content);if(!e.trim())return null;let f=c.participantId??a.agentId;return(0,b.jsxs)("div",{className:"flex gap-3",children:["user"===c.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)(o.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:C(f,d?.color),alt:d?.name??a.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"===c.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:d?.color??"var(--foreground)"},children:d?.name??a.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(c.timestamp).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),"user"===c.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)(r.Markdown,{content:e,isUser:!0})}):(0,b.jsx)("div",{className:"text-sm text-[var(--foreground)]",children:(0,b.jsx)(r.Markdown,{content:e,isUser:!1})})]})]},c.id)}),Object.entries(l).filter(([,b])=>!a.rootMessageId||b.rootMessageId===a.rootMessageId).map(([c])=>{let d=n.get(c);return(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)("img",{src:C(c,d?.color),alt:d?.name??a.agentName,className:"h-7 w-7 shrink-0 rounded-full object-cover"}),d?.name??a.agentName," is thinking..."]},`stream-${c}`)})]})}),(0,b.jsx)("div",{className:"absolute bottom-3 left-3 right-3 p-2",children:a.rootMessageId?(0,b.jsx)(A,{onSend:w,onStop:j,participants:d,projectSlug:a.projectSlug??void 0,loading:"ready"!==v,commands:[],activityStatus:v,placeholder:"Steer this run...",initialPinnedParticipantId:a.agentId}):(0,b.jsx)("div",{className:"px-2 py-1 text-xs text-[var(--muted-foreground)]",children:"Waiting for the run to start..."})})]})}function L({issue:a,selected:d,onSelect:e,onExecute:f}){let[h,i]=(0,c.useState)(!1),l=(0,c.useRef)(null);(0,c.useEffect)(()=>()=>{l.current&&window.clearTimeout(l.current)},[]);let m=(0,c.useCallback)(async b=>{if(b.stopPropagation(),a.url)try{await navigator.clipboard.writeText(a.url),i(!0),l.current&&window.clearTimeout(l.current),l.current=window.setTimeout(()=>{i(!1)},1500)}catch(a){console.error("Failed to copy Linear issue URL:",a),i(!1)}},[a.url]),n=E[a.status]??a.status.slice(0,6);return(0,b.jsxs)("div",{className:`group relative flex 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:n}),(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=>{m(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)(g.Check,{size:10,className:"text-emerald-400"}):(0,b.jsx)(j,{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"}`,onClick:b=>{b.stopPropagation(),f(a,b)},title:"Execute with agent",children:(0,b.jsx)(k.Play,{size:10,className:"ml-0.5"})})]})}function M({projectId:a,projectSlug:d,initialShowSettings:e}){let{connected:f,loading:g,user:h,clis:i,mcpConfigured:j,connect:o,connectWithKey:p,disconnect:q,configureMcp:r}=function(){let[a,b]=(0,c.useState)(!1),[d,e]=(0,c.useState)(!0),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)({claude:!1,codex:!1,gemini:!1}),[j,k]=(0,c.useState)({}),l=(0,c.useRef)(null),m=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/linear/mcp-setup"),b=await a.json();k(b.configured??{})}catch{}},[]),n=(0,c.useCallback)(async()=>{try{let[a,c]=await Promise.all([fetch("/api/linear/status"),fetch("/api/linear/mcp-setup")]),d=await a.json(),e=await c.json();return b(d.connected),g(d.user??null),i(d.clis??{claude:!1,codex:!1,gemini:!1}),k(e.configured??{}),d.connected}catch{return b(!1),!1}finally{e(!1)}},[]);(0,c.useEffect)(()=>(n(),()=>{l.current&&clearInterval(l.current)}),[n]);let o=(0,c.useCallback)(()=>{window.open("/api/linear/auth","_blank","noopener"),l.current&&clearInterval(l.current),l.current=setInterval(async()=>{await n()&&l.current&&(clearInterval(l.current),l.current=null)},2e3)},[n]),p=(0,c.useCallback)(async a=>{try{let b=await fetch("/api/linear/token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:a})});if(!b.ok){let a=await b.json().catch(()=>({}));return{ok:!1,error:a.error||"Failed to save token"}}return await n(),{ok:!0}}catch{return{ok:!1,error:"Failed to connect"}}},[n]);return{connected:a,loading:d,user:f,clis:h,mcpConfigured:j,connect:o,connectWithKey:p,disconnect:(0,c.useCallback)(async()=>{await fetch("/api/linear/status",{method:"DELETE"}),b(!1),g(null)},[]),configureMcp:(0,c.useCallback)(async a=>{try{let b=await fetch("/api/linear/mcp-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cli:a})});if(!b.ok){let a=await b.json().catch(()=>({}));return{ok:!1,error:a.error||"Failed to configure MCP"}}return await m(),{ok:!0}}catch{return{ok:!1,error:"Failed to configure MCP"}}},[m]),refresh:n}}(),[s,t]=(0,c.useState)(!1),[u,w]=(0,c.useState)(e??!1),[x,y]=(0,c.useState)(576),[A,E]=(0,c.useState)(224),[F,G]=(0,c.useState)(""),[M,N]=(0,c.useState)(""),[O,P]=(0,c.useState)([]),[Q,R]=(0,c.useState)([]),[S,T]=(0,c.useState)([]),[U,V]=(0,c.useState)([]),[W,X]=(0,c.useState)(""),[Y,Z]=(0,c.useState)(""),[$,_]=(0,c.useState)(null),[aa,ab]=(0,c.useState)(null),[ac,ad]=(0,c.useState)([]),[ae,af]=(0,c.useState)(null),[ag,ah]=(0,c.useState)(null),ai=(0,c.useRef)(null),aj=(0,c.useCallback)(a=>{G(a),ai.current&&clearTimeout(ai.current),ai.current=setTimeout(()=>N(a),300)},[]);(0,c.useEffect)(()=>()=>{ai.current&&clearTimeout(ai.current)},[]),(0,c.useEffect)(()=>{if(!f)return;let a=!1;return fetch("/api/linear/options").then(a=>a.json()).then(b=>{a||(P(Array.isArray(b.assignees)?b.assignees:[]),R(Array.isArray(b.teams)?b.teams:[]),V(Array.isArray(b.cycles)?b.cycles:[]))}).catch(()=>{a||(P([]),R([]),V([]))}),()=>{a=!0}},[f]),(0,c.useEffect)(()=>{let a=S.filter(a=>O.some(b=>b.id===a));a.length!==S.length&&T(a)},[O,S]),(0,c.useEffect)(()=>{Q.length<=1&&Y?Z(""):Y&&!Q.some(a=>a.id===Y)&&Z("")},[Y,Q]),(0,c.useEffect)(()=>{W&&!U.some(a=>a.id===W)&&X("")},[U,W]);let{issues:ak,loading:al,hasMore:am,loadMore:an,refresh:ao}=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.status&&b.set("status",a.status),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),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.status,a.search,a.assigneeIds,a.assignedToMe,a.cycleId,b,d.projectSlug,d.limit]);return(0,c.useEffect)(()=>{j(null),o(!1,!n.current)},[o]),{issues:e,loading:g,hasMore:k,loadMore:(0,c.useCallback)(()=>o(!0),[o]),refresh:(0,c.useCallback)(()=>(j(null),o(!1,!0)),[o])}}((0,c.useMemo)(()=>({search:M||void 0,assigneeIds:S.length>0?S:void 0,teamId:Y||void 0,cycleId:W||void 0}),[M,S,W,Y]),f,{projectSlug:d}),{runs:ap,loading:aq,createRun:ar,updateRun:as}=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},[])}}($?.id,a??null),at=ap.find(a=>a.id===aa)??null,au=(0,c.useMemo)(()=>O.map(a=>({value:a.id,label:a.name})),[O]),av=(0,c.useMemo)(()=>[{value:"",label:"Workspace"},...Q.map(a=>({value:a.id,label:a.name}))],[Q]),aw=(0,c.useMemo)(()=>[{value:"",label:"Cycle"},...U.map(a=>({value:a.id,label:a.name||`Cycle ${a.number}`}))],[U]),ax=aw.length>1,ay=av.length>2;(0,c.useEffect)(()=>{0===ak.length?_(null):_(a=>a&&ak.some(b=>b.id===a.id)?ak.find(b=>b.id===a.id)??a:ak[0]??null)},[ak]),(0,c.useEffect)(()=>{0===ap.length?ab(null):aa&&ap.some(a=>a.id===aa)||ab(ap[0]?.id??null)},[ap,aa]),(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||ad(d);return}let e=await fetch(`/api/projects/${encodeURIComponent(a)}/agents`);if(!e.ok){b||ad(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||ad(i)}catch{b||ad([])}}(),()=>{b=!0}},[a]);let az=(0,c.useCallback)((a,b)=>{if(0===ac.length)return void window.alert("Add at least one agent to this project before running a Linear ticket.");if(1===ac.length)return void aA(a,ac[0]);let c=b?.currentTarget?.getBoundingClientRect();af(a),ah(c?{top:c.bottom+4,left:c.left}:{top:200,left:200})},[ac]),aA=(0,c.useCallback)(async(b,c)=>{af(null),ah(null);let e=null;try{_(b),e=await ar({projectId:a??null,projectSlug:d??null,issueId:b.id,issueIdentifier:b.identifier,issueTitle:b.title,issueStatus:b.status,issueAssignee:b.assignee,agentId:c.id,agentName:c.name}),ab(e.id);let{prompt:f,promptPrefix:g}=v({issue:{identifier:b.identifier,title:b.title,status:b.status,assignee:b.assignee},project:d?{slug:d}:null}),h=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:f,promptPrefix:g,threadId:e.threadId,activeParticipantIds:[c.id],projectSlug:d??void 0})}),i=await h.json().catch(()=>({}));if(!h.ok||!i.chatRunId||!i.userMessageId)throw Error(i.error||"Failed to start Linear run");await as(e.id,{chatRunId:i.chatRunId,rootMessageId:i.userMessageId})}catch(a){console.error("Failed to execute Linear ticket:",a),e&&await as(e.id,{status:"failed",error:a instanceof Error?a.message:String(a)}),a instanceof Error&&window.alert(a.message)}},[ar,a,d,as]),aB=(0,c.useRef)(null);if((0,c.useEffect)(()=>{let a=aB.current;if(!a||!am)return;let b=new IntersectionObserver(a=>{a[0]?.isIntersecting&&an()},{threshold:.1});return b.observe(a),()=>b.disconnect()},[am,an]),g)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Loading..."});let aC=f&&!s&&!Object.values(j).some(Boolean);return!f||aC?(0,b.jsx)(z,{connected:f,user:h,clis:i,mcpConfigured:j,onConnect:o,onConnectWithKey:p,onDisconnect:q,onConfigureMcp:r,onContinue:()=>t(!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:x},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)(m.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:F,onChange:a=>aj(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 ao(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:al,children:(0,b.jsx)(l.RefreshCw,{size:16,className:al?"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:()=>w(!0),title:"Linear settings",children:(0,b.jsx)(n.Settings,{size:16})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pb-2",children:[(0,b.jsx)(I,{label:"Assignee",values:S,options:au,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:T,emptyLabel:"All assignees"}),ay?(0,b.jsx)(H,{label:"Workspace",value:Y,options:av,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:Z}):null,ax?(0,b.jsx)(H,{label:"Cycle",value:W,options:aw,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:X}):null]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:al&&0===ak.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===ak.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:[ak.map(a=>(0,b.jsx)(L,{issue:a,selected:$?.id===a.id,onSelect:()=>_(a),onExecute:az},a.id)),am?(0,b.jsx)("div",{ref:aB,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:al?"Loading...":"Load more"}):null]})})]}),(0,b.jsx)(B,{onResize:a=>y(b=>Math.max(180,Math.min(600,b+a)))}),(0,b.jsxs)("div",{className:"flex shrink-0 flex-col border-r border-[var(--card-border)]",style:{width:A},children:[(0,b.jsxs)("div",{className:"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:"Runs"}),$&&(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:a=>az($,a),title:"Run agent on selected ticket",children:[(0,b.jsx)(k.Play,{size:10}),(0,b.jsx)("span",{children:"Run now"})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:$?aq&&0===ap.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading runs..."}):0===ap.length?(0,b.jsxs)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:["No runs yet. Click ",(0,b.jsx)(k.Play,{size:10,className:"inline"})," to execute."]}):ap.map(a=>(0,b.jsxs)("button",{type:"button",className:`w-full px-3 py-2 text-left text-xs transition-colors ${at?.id===a.id?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]"}`,onClick:()=>ab(a.id),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,b.jsx)("span",{className:`font-medium ${{queued:"text-amber-500",running:"text-yellow-500",success:"text-green-500",failed:"text-red-500",cancelled:"text-[var(--muted-foreground)]"}[a.status]}`,children:D(a.status)}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:new Date(a.startedAt).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})]}),(0,b.jsx)("div",{className:"mt-0.5 truncate text-[10px] 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 runs."})})]}),(0,b.jsx)(B,{onResize:a=>E(b=>Math.max(140,Math.min(500,b+a)))}),(0,b.jsx)("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:at?(0,b.jsx)(K,{run:at,participants:ac}):$&&ac.length>0?(0,b.jsx)(J,{issue:$,participants:ac,projectId:a,projectSlug:d,createRun:ar,updateRun:as,onRunCreated:a=>ab(a)},$.id):(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 chat.":"Select a ticket from the list."})}),u&&(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:()=>w(!1),children:"×"}),(0,b.jsx)("div",{className:"p-6",children:(0,b.jsx)(z,{connected:f,user:h,clis:i,mcpConfigured:j,onConnect:o,onConnectWithKey:p,onDisconnect:q,onConfigureMcp:r,onContinue:()=>w(!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"}),ac.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 aA(ae,a),children:[(0,b.jsx)("img",{src:C(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))]})]})]})}function N({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)(M,{projectId:i?.id,projectSlug:i?.slug??f,initialShowSettings:j})}a.s(["default",()=>N],323860)}];
38
38
 
39
39
  //# sourceMappingURL=app_projects_%5Bslug%5D_linear_page_tsx_971a6ba7._.js.map