@mndrk/agx 2.0.47 → 2.0.49

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 (486) hide show
  1. package/cloud-runtime/standalone/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/.next/build-manifest.json +2 -2
  3. package/cloud-runtime/standalone/.next/prerender-manifest.json +3 -3
  4. package/cloud-runtime/standalone/.next/server/app/_global-error.html +2 -2
  5. package/cloud-runtime/standalone/.next/server/app/_global-error.rsc +1 -1
  6. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/cloud-runtime/standalone/.next/server/app/_not-found.html +2 -2
  13. package/cloud-runtime/standalone/.next/server/app/_not-found.rsc +2 -2
  14. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  15. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  17. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  20. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  21. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  22. package/cloud-runtime/standalone/.next/server/app/agents/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/.next/server/app/agents.html +2 -2
  25. package/cloud-runtime/standalone/.next/server/app/agents.rsc +3 -3
  26. package/cloud-runtime/standalone/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  27. package/cloud-runtime/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  28. package/cloud-runtime/standalone/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  29. package/cloud-runtime/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  30. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js +1 -1
  33. package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  34. package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js +1 -1
  35. package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js +1 -1
  37. package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/.next/server/app/api/automations/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js +13 -7
  41. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/.next/server/app/api/file-search/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/.next/server/app/api/health/route.js +1 -1
  45. package/cloud-runtime/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js +1 -1
  47. package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js +1 -1
  49. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js +1 -1
  51. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js +1 -1
  53. package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js +1 -1
  55. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js +1 -1
  57. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js +3 -3
  59. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js +1 -1
  61. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js +1 -1
  63. package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/.next/server/app/api/memories/route.js +1 -1
  65. package/cloud-runtime/standalone/.next/server/app/api/memories/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js +1 -1
  67. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js +1 -1
  69. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js +1 -1
  71. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js +1 -1
  73. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js +1 -1
  75. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js +1 -1
  77. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js +1 -1
  79. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js +1 -1
  81. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js +1 -1
  83. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js.nft.json +1 -1
  84. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js +1 -1
  85. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js.nft.json +1 -1
  86. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js +1 -1
  87. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
  90. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js +1 -1
  92. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js +1 -1
  94. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
  96. package/cloud-runtime/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js +1 -1
  98. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js +2 -2
  100. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js +14 -6
  102. package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js +13 -5
  104. package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  105. package/cloud-runtime/standalone/.next/server/app/api/schedules/route.js.nft.json +1 -1
  106. package/cloud-runtime/standalone/.next/server/app/api/status/route.js.nft.json +1 -1
  107. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js +1 -1
  108. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js.nft.json +1 -1
  109. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js +1 -1
  110. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js +1 -1
  112. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  113. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js +1 -1
  114. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
  115. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -1
  116. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
  117. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js +1 -1
  118. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js +1 -1
  120. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js +1 -1
  122. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js +1 -1
  124. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js +1 -1
  126. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js +1 -1
  128. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js +1 -1
  130. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js +3 -4
  132. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js +1 -1
  134. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js +1 -1
  136. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/stop/route.js +1 -1
  138. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js +1 -1
  140. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js +1 -1
  142. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js +1 -1
  144. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js +3 -4
  146. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js +3 -4
  148. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js +3 -4
  150. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js +3 -4
  152. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js +3 -4
  154. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js +4 -5
  156. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  158. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js +1 -1
  160. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js +1 -1
  162. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js +2 -2
  164. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js +1 -1
  166. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js +1 -1
  168. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js.nft.json +1 -1
  169. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js +1 -1
  170. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js.nft.json +1 -1
  171. package/cloud-runtime/standalone/.next/server/app/automations/page/react-loadable-manifest.json +1 -1
  172. package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
  173. package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  174. package/cloud-runtime/standalone/.next/server/app/automations.html +2 -2
  175. package/cloud-runtime/standalone/.next/server/app/automations.rsc +3 -3
  176. package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +3 -3
  177. package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  178. package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  179. package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
  180. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  182. package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
  183. package/cloud-runtime/standalone/.next/server/app/board.html +2 -2
  184. package/cloud-runtime/standalone/.next/server/app/board.rsc +2 -2
  185. package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +2 -2
  186. package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +1 -1
  187. package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +2 -2
  188. package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  189. package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  190. package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +1 -1
  191. package/cloud-runtime/standalone/.next/server/app/execution-graph/page.js.nft.json +1 -1
  192. package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  193. package/cloud-runtime/standalone/.next/server/app/execution-graph.html +2 -2
  194. package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +3 -3
  195. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  196. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  197. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  198. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  199. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  201. package/cloud-runtime/standalone/.next/server/app/folders/page.js.nft.json +1 -1
  202. package/cloud-runtime/standalone/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  203. package/cloud-runtime/standalone/.next/server/app/folders.html +2 -2
  204. package/cloud-runtime/standalone/.next/server/app/folders.rsc +3 -3
  205. package/cloud-runtime/standalone/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  206. package/cloud-runtime/standalone/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  207. package/cloud-runtime/standalone/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  208. package/cloud-runtime/standalone/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  209. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  210. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders.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 +3 -3
  213. package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  214. package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  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 +2 -2
  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 +1 -1
  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.js.nft.json +1 -1
  224. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  225. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  226. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  227. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
  228. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  229. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  230. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  231. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  232. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  233. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  234. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  235. package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +2 -2
  236. package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +2 -2
  237. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  238. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  239. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  240. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  241. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  242. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  243. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  244. package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  245. package/cloud-runtime/standalone/.next/server/app/projects.html +2 -2
  246. package/cloud-runtime/standalone/.next/server/app/projects.rsc +2 -2
  247. package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  248. package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  249. package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  250. package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  251. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  252. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  253. package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  254. package/cloud-runtime/standalone/.next/server/app/settings.html +2 -2
  255. package/cloud-runtime/standalone/.next/server/app/settings.rsc +2 -2
  256. package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  257. package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  258. package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  259. package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  260. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  261. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  262. package/cloud-runtime/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  263. package/cloud-runtime/standalone/.next/server/app/skills.html +2 -2
  264. package/cloud-runtime/standalone/.next/server/app/skills.rsc +2 -2
  265. package/cloud-runtime/standalone/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  266. package/cloud-runtime/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  267. package/cloud-runtime/standalone/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  268. package/cloud-runtime/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  269. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  270. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  271. package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
  272. package/cloud-runtime/standalone/.next/server/app/status.html +2 -2
  273. package/cloud-runtime/standalone/.next/server/app/status.rsc +2 -2
  274. package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +2 -2
  275. package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +1 -1
  276. package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +2 -2
  277. package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  278. package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  279. package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +1 -1
  280. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  281. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  282. package/cloud-runtime/standalone/.next/server/app/welcome/page.js.nft.json +1 -1
  283. package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  284. package/cloud-runtime/standalone/.next/server/app/welcome.html +2 -2
  285. package/cloud-runtime/standalone/.next/server/app/welcome.rsc +3 -3
  286. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +3 -3
  287. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
  288. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +2 -2
  289. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
  290. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +2 -2
  291. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
  292. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__015d40a6._.js +67 -0
  293. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a300f072._.js → [root-of-the-server]__02a4a323._.js} +2 -2
  294. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__05dedbe1._.js +64 -0
  295. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__4ce74056._.js → [root-of-the-server]__05f0bfbf._.js} +2 -2
  296. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c22dd3a6._.js → [root-of-the-server]__08c82fe8._.js} +2 -2
  297. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3fae531a._.js → [root-of-the-server]__09e37b59._.js} +2 -2
  298. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__1a1f66b1._.js → [root-of-the-server]__0e83aabc._.js} +2 -2
  299. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__27da58f0._.js +67 -0
  300. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__9ffa67b7._.js → [root-of-the-server]__2ae8b938._.js} +2 -2
  301. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__2cfd21b8._.js +108 -0
  302. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__37844df7._.js +67 -0
  303. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d9f2041b._.js → [root-of-the-server]__3a93931b._.js} +4 -4
  304. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__f9f7f2df._.js → [root-of-the-server]__3c1403f2._.js} +2 -2
  305. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__143fdf69._.js → [root-of-the-server]__40e9e2e8._.js} +2 -2
  306. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__42e602eb._.js +49 -0
  307. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a7b2350e._.js → [root-of-the-server]__456840d0._.js} +2 -2
  308. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__5c2848bb._.js +64 -0
  309. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__667c658f._.js +52 -0
  310. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6a92b882._.js +49 -0
  311. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6c9baa7c._.js +64 -0
  312. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c21747df._.js → [root-of-the-server]__719eddc2._.js} +2 -2
  313. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__36d15de5._.js → [root-of-the-server]__7ee3dfe1._.js} +2 -2
  314. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d324f8a1._.js → [root-of-the-server]__80964fad._.js} +2 -2
  315. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__bab85495._.js → [root-of-the-server]__862cf77d._.js} +2 -2
  316. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a280fa63._.js → [root-of-the-server]__8b5b9860._.js} +2 -2
  317. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3170b7bf._.js → [root-of-the-server]__8d475640._.js} +2 -2
  318. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__958dded3._.js +49 -0
  319. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ab655b9f._.js → [root-of-the-server]__96c424d5._.js} +2 -2
  320. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5c55f67a._.js → [root-of-the-server]__976ebe46._.js} +2 -2
  321. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__179cb224._.js → [root-of-the-server]__a1cab8fe._.js} +2 -2
  322. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__20a2cb22._.js → [root-of-the-server]__a31dd756._.js} +9 -9
  323. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a3955224._.js → [root-of-the-server]__ad53dc3f._.js} +17 -17
  324. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ac6326b6._.js → [root-of-the-server]__b8eeb177._.js} +2 -2
  325. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__fcfa3690._.js → [root-of-the-server]__c10e827d._.js} +2 -2
  326. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e58e9f91._.js → [root-of-the-server]__c11e0040._.js} +2 -2
  327. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c40b6f69._.js +49 -0
  328. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c7d3c7ab._.js +52 -0
  329. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__cdc52544._.js +49 -0
  330. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__8cbd8c56._.js → [root-of-the-server]__d1c698b6._.js} +12 -12
  331. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__d9ea98bd._.js +52 -0
  332. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ef27f8cd._.js → [root-of-the-server]__df886e3c._.js} +2 -2
  333. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ca4987eb._.js → [root-of-the-server]__e0b6f424._.js} +2 -2
  334. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c8890cd6._.js → [root-of-the-server]__f43ecbc2._.js} +13 -13
  335. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f51c7b72._.js +5 -0
  336. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f662fd1e._.js +20 -0
  337. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__538b0bdd._.js → [root-of-the-server]__f961230c._.js} +2 -2
  338. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__b627cb83._.js → [root-of-the-server]__feec5b54._.js} +2 -2
  339. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d16caed5._.js → [root-of-the-server]__ff6ce4b1._.js} +2 -2
  340. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ff9ce15e._.js +5 -0
  341. package/cloud-runtime/standalone/.next/server/chunks/_26ffc857._.js +121 -0
  342. package/cloud-runtime/standalone/.next/server/chunks/_4d07f8db._.js +1 -1
  343. package/cloud-runtime/standalone/.next/server/chunks/_66d0cf73._.js +6 -0
  344. package/cloud-runtime/standalone/.next/server/chunks/_9b10087f._.js +3 -2
  345. package/cloud-runtime/standalone/.next/server/chunks/_a13c0bef._.js +121 -0
  346. package/cloud-runtime/standalone/.next/server/chunks/{lib_98ae187c._.js → lib_2cd3429c._.js} +2 -2
  347. package/cloud-runtime/standalone/.next/server/chunks/lib_a2a83df5._.js +55 -0
  348. package/cloud-runtime/standalone/.next/server/chunks/lib_a658c9ef._.js +34 -0
  349. package/cloud-runtime/standalone/.next/server/chunks/lib_ba38ea08._.js +55 -0
  350. package/cloud-runtime/standalone/.next/server/chunks/lib_orchestrator_chat-processor_ts_4c335719._.js +27 -29
  351. package/cloud-runtime/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_371d0bff.js +6 -102
  352. package/cloud-runtime/standalone/.next/server/chunks/src_graph_schedule-runner_ts_43a13c69._.js +13 -0
  353. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b2a2b86._.js +3 -0
  354. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__32546242._.js +3 -0
  355. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ff9ead4._.js +3 -0
  356. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f2c3b7ab._.js +1 -1
  357. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f59f0dc7._.js +3 -0
  358. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__d96bb3b5._.js → [root-of-the-server]__fbe1ab4a._.js} +2 -2
  359. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1e9b9b1e._.js +3 -0
  360. package/cloud-runtime/standalone/.next/server/chunks/ssr/_24fe6213._.js +3 -0
  361. package/cloud-runtime/standalone/.next/server/chunks/ssr/_36a0c486._.js +3 -0
  362. package/cloud-runtime/standalone/.next/server/chunks/ssr/_3b21d3b2._.js +95 -0
  363. package/cloud-runtime/standalone/.next/server/chunks/ssr/_3eeac8f9._.js +3 -0
  364. package/cloud-runtime/standalone/.next/server/chunks/ssr/_48db42b7._.js +3 -0
  365. package/cloud-runtime/standalone/.next/server/chunks/ssr/_59f30a73._.js +3 -0
  366. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7d3b0032._.js +3 -0
  367. package/cloud-runtime/standalone/.next/server/chunks/ssr/_916950b3._.js +3 -0
  368. package/cloud-runtime/standalone/.next/server/chunks/ssr/_b598ae8a._.js +3 -0
  369. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cc8c8302._.js +3 -0
  370. package/cloud-runtime/standalone/.next/server/chunks/ssr/_d972a4e1._.js +3 -0
  371. package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd7bb6fb._.js +3 -0
  372. package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd9880fb._.js +3 -0
  373. package/cloud-runtime/standalone/.next/server/chunks/ssr/_f02d786a._.js +3 -0
  374. package/cloud-runtime/standalone/.next/server/chunks/ssr/_fd8cafe9._.js +3 -0
  375. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_projects_[slug]_linear_page_tsx_971a6ba7._.js +15 -12
  376. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_chat-ui_bfeda794._.js +1 -1
  377. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_thread_WorkspaceSidebar_tsx_e660301b._.js +1 -1
  378. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_54bf563f._.js +3 -0
  379. package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
  380. package/cloud-runtime/standalone/.next/server/pages/404.html +2 -2
  381. package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
  382. package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
  383. package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
  384. package/cloud-runtime/standalone/.next/static/chunks/04c135686161dbb1.js +40 -0
  385. package/cloud-runtime/standalone/.next/static/chunks/0d63db0c39c0a3b2.js +1 -0
  386. package/cloud-runtime/standalone/.next/static/chunks/136ed07d84b14632.js +1 -0
  387. package/cloud-runtime/standalone/.next/static/chunks/18866ed04ed3a063.css +1 -0
  388. package/cloud-runtime/standalone/.next/static/chunks/{ccaf68956da192f8.js → 1bb38e61d891453c.js} +1 -1
  389. package/cloud-runtime/standalone/.next/static/chunks/2c7c8259c2b56bf5.js +1 -0
  390. package/cloud-runtime/standalone/.next/static/chunks/2da1f13d50dc4e54.js +1 -0
  391. package/cloud-runtime/standalone/.next/static/chunks/5545da2ad239c0b6.js +3 -0
  392. package/cloud-runtime/standalone/.next/static/chunks/{41c518743656a291.js → 5f33b52d582b0bb4.js} +1 -1
  393. package/cloud-runtime/standalone/.next/static/chunks/{97c11137cd6fc860.js → 64c2961edd3a3b13.js} +1 -1
  394. package/cloud-runtime/standalone/.next/static/chunks/{db131a0b6350e416.js → 692ce04abdbb3970.js} +1 -1
  395. package/cloud-runtime/standalone/.next/static/chunks/83be8569d298c6b0.js +1 -0
  396. package/cloud-runtime/standalone/.next/static/chunks/87b3afe828c8cc52.js +1 -0
  397. package/cloud-runtime/standalone/.next/static/chunks/{4343e7fe5bf5f34a.js → 9328740727c6456d.js} +1 -1
  398. package/cloud-runtime/standalone/.next/static/chunks/95d47e285ae9c031.js +1 -0
  399. package/cloud-runtime/standalone/.next/static/chunks/b9bf5d3ee92a1313.js +1 -0
  400. package/cloud-runtime/standalone/.next/static/chunks/ea35fb870141bcff.js +1 -0
  401. package/cloud-runtime/standalone/.next/static/chunks/f59722264449b61c.js +1 -0
  402. package/cloud-runtime/standalone/.next/static/chunks/f727d2c8f039511d.js +1 -0
  403. package/cloud-runtime/standalone/.next/static/chunks/{31fe4e36a00fd7b5.js → f8706212baa8ec67.js} +1 -1
  404. package/cloud-runtime/standalone/.next/static/chunks/fd823c9d1381335d.js +1 -0
  405. package/cloud-runtime/standalone/app/api/chat/route.ts +5 -163
  406. package/cloud-runtime/standalone/app/api/schedules/route.ts +11 -2
  407. package/cloud-runtime/standalone/app/automations/page.tsx +11 -1
  408. package/cloud-runtime/standalone/app/projects/[slug]/layout.tsx +11 -1
  409. package/cloud-runtime/standalone/components/LinearBoard.tsx +118 -21
  410. package/cloud-runtime/standalone/components/chat-ui/ChatContainer.tsx +10 -13
  411. package/cloud-runtime/standalone/components/linear/RunScriptManager.tsx +356 -0
  412. package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +35 -0
  413. package/cloud-runtime/standalone/hooks/useLinearRunScripts.ts +115 -0
  414. package/cloud-runtime/standalone/lib/chat/project-context.ts +169 -0
  415. package/cloud-runtime/standalone/lib/linear-client.ts +33 -3
  416. package/cloud-runtime/standalone/lib/linear-execution-prompt.ts +92 -15
  417. package/cloud-runtime/standalone/lib/orchestrator/runtime.ts +2 -0
  418. package/cloud-runtime/standalone/lib/orchestrator/schedule-runtime.ts +76 -0
  419. package/cloud-runtime/standalone/src/graph/internal-function-dispatcher.ts +201 -16
  420. package/cloud-runtime/standalone/src/graph/work-dispatcher.ts +128 -35
  421. package/cloud-runtime/standalone/state/automations/.state/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.json +8 -0
  422. package/cloud-runtime/standalone/state/automations/active/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.md +15 -0
  423. package/cloud-runtime/standalone/state/linearRunScripts.test.ts +99 -0
  424. package/cloud-runtime/standalone/state/linearRunScripts.ts +132 -0
  425. package/cloud-runtime/standalone/state/windowState.ts +21 -0
  426. package/cloud-runtime/standalone/tsconfig.tsbuildinfo +1 -1
  427. package/cloud-runtime/standalone/vault/agx/issues/ESO-327/design-doc.md +202 -0
  428. package/cloud-runtime/standalone/worker/index.js +34516 -1717
  429. package/cloud-runtime/standalone/worker/index.ts +3 -0
  430. package/package.json +1 -1
  431. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__1154e5b3._.js +0 -67
  432. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__152b2000._.js +0 -61
  433. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__33865410._.js +0 -3
  434. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6c53437e._.js +0 -110
  435. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6dbe939c._.js +0 -49
  436. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__7012e83d._.js +0 -66
  437. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__76290829._.js +0 -67
  438. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ad6d6402._.js +0 -67
  439. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__da645a5e._.js +0 -15
  440. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f4b3df16._.js +0 -3
  441. package/cloud-runtime/standalone/.next/server/chunks/_2a5aeb76._.js +0 -3
  442. package/cloud-runtime/standalone/.next/server/chunks/_4689976f._.js +0 -6
  443. package/cloud-runtime/standalone/.next/server/chunks/_682c9d81._.js +0 -6
  444. package/cloud-runtime/standalone/.next/server/chunks/_6e7f0ae4._.js +0 -6
  445. package/cloud-runtime/standalone/.next/server/chunks/_a32a5cdd._.js +0 -6
  446. package/cloud-runtime/standalone/.next/server/chunks/_af7bd752._.js +0 -3
  447. package/cloud-runtime/standalone/.next/server/chunks/_fe32a267._.js +0 -3
  448. package/cloud-runtime/standalone/.next/server/chunks/lib_2492d514._.js +0 -55
  449. package/cloud-runtime/standalone/.next/server/chunks/lib_3c080873._.js +0 -34
  450. package/cloud-runtime/standalone/.next/server/chunks/lib_9f439b27._.js +0 -70
  451. package/cloud-runtime/standalone/.next/server/chunks/src_graph_12d46a92._.js +0 -3
  452. package/cloud-runtime/standalone/.next/server/chunks/src_graph_executor_ts_55c06268._.js +0 -8
  453. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__21a9eaef._.js +0 -3
  454. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__69887882._.js +0 -3
  455. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__9ad05ace._.js +0 -3
  456. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__bb149a22._.js +0 -3
  457. package/cloud-runtime/standalone/.next/server/chunks/ssr/_11ce4c04._.js +0 -95
  458. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1d949e96._.js +0 -3
  459. package/cloud-runtime/standalone/.next/server/chunks/ssr/_32a156b6._.js +0 -3
  460. package/cloud-runtime/standalone/.next/server/chunks/ssr/_43c091dc._.js +0 -3
  461. package/cloud-runtime/standalone/.next/server/chunks/ssr/_45175f47._.js +0 -3
  462. package/cloud-runtime/standalone/.next/server/chunks/ssr/_4f0c544d._.js +0 -3
  463. package/cloud-runtime/standalone/.next/server/chunks/ssr/_69164b06._.js +0 -95
  464. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7f7a828a._.js +0 -3
  465. package/cloud-runtime/standalone/.next/server/chunks/ssr/_97f6a18e._.js +0 -3
  466. package/cloud-runtime/standalone/.next/server/chunks/ssr/_a511a014._.js +0 -3
  467. package/cloud-runtime/standalone/.next/server/chunks/ssr/_c3a3a829._.js +0 -3
  468. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cee3cf86._.js +0 -95
  469. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_e8bdedc5._.js +0 -3
  470. package/cloud-runtime/standalone/.next/static/chunks/14fff3c493ea9c54.js +0 -1
  471. package/cloud-runtime/standalone/.next/static/chunks/2a9c83f8211196e0.js +0 -1
  472. package/cloud-runtime/standalone/.next/static/chunks/5405540470146645.js +0 -1
  473. package/cloud-runtime/standalone/.next/static/chunks/69f2db4b9996b9c1.js +0 -37
  474. package/cloud-runtime/standalone/.next/static/chunks/8aeb69ceb497ad85.css +0 -1
  475. package/cloud-runtime/standalone/.next/static/chunks/a9da98f883ac833b.js +0 -1
  476. package/cloud-runtime/standalone/.next/static/chunks/b2127dc67c5ade9f.js +0 -1
  477. package/cloud-runtime/standalone/.next/static/chunks/baf5d39d089efb87.js +0 -1
  478. package/cloud-runtime/standalone/.next/static/chunks/bf2a2fafb710e63c.js +0 -1
  479. package/cloud-runtime/standalone/.next/static/chunks/c78969fde5798275.js +0 -1
  480. package/cloud-runtime/standalone/.next/static/chunks/d3dc6fadb96ab3a2.js +0 -1
  481. package/cloud-runtime/standalone/.next/static/chunks/fdadad2379039dce.js +0 -3
  482. package/cloud-runtime/standalone/state/automations/.state/24a6a5db-3b14-49c4-841f-29f10f015fbb.json +0 -8
  483. package/cloud-runtime/standalone/state/automations/active/24a6a5db-3b14-49c4-841f-29f10f015fbb.md +0 -17
  484. /package/cloud-runtime/standalone/.next/static/{lOB5InbmVcurTLQo9J3KK → ZkFZnP5h74O7GgdHudXgH}/_buildManifest.js +0 -0
  485. /package/cloud-runtime/standalone/.next/static/{lOB5InbmVcurTLQo9J3KK → ZkFZnP5h74O7GgdHudXgH}/_clientMiddlewareManifest.json +0 -0
  486. /package/cloud-runtime/standalone/.next/static/{lOB5InbmVcurTLQo9J3KK → ZkFZnP5h74O7GgdHudXgH}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[694392,180032,a=>{"use strict";var b=a.i(883706);let c=(0,b.default)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]);a.s(["Cpu",()=>c],694392);let d=(0,b.default)("box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);a.s(["Box",()=>d],180032)},953722,a=>{"use strict";let b=(0,a.i(883706).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],953722)},296101,a=>{"use strict";let b=(0,a.i(883706).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 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.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",()=>b],296101)},705151,a=>{"use strict";let b=(0,a.i(883706).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",()=>b],705151)},520138,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(633508),e=a.i(546842),f=a.i(694392),g=a.i(180032),h=a.i(953722),i=a.i(808406),j=a.i(915618),k=a.i(296101),l=a.i(405784),m=a.i(705151),n=a.i(533441),o=a.i(448609);function p(a,b=32,c){let d=`https://api.dicebear.com/9.x/bottts-neutral/svg?seed=${encodeURIComponent(a)}&size=${b}`;if(!c)return d;let e=c.replace("#","");return`${d}&backgroundColor=${e}`}a.i(749741),a.i(449140),a.i(214512);let q=["claude","ollama","gemini","codex","zai"];function r(a){return(a??[]).map(a=>a.condition?.trim()?`${a.file} | ${a.condition}`:a.file).join("\n")}function s(a){return a.split("\n").map(a=>a.trim()).filter(Boolean).map(a=>{let[b,...c]=a.split("|");return{file:b.trim(),condition:c.join("|").trim()}}).filter(a=>a.file.length>0)}function t(a,b){return JSON.stringify({name:a.name,...a.title?{title:a.title}:{},provider:a.provider,model:a.model,identity:a.identity,color:a.color??"#6B7280",skills:a.skills??[],skillBindings:a.skillBindings??[],...b?{projectIds:b}:{}},null,2)}function u({title:a,initial:u,submitLabel:v,onSubmit:w,onCancel:x,projects:y,initialProjectIds:z,agentId:A,projectMemberships:B,onAddToProject:C,onRemoveFromProject:D}){let[E,F]=(0,c.useState)(u.name),[G,H]=(0,c.useState)(u.title??""),[I,J]=(0,c.useState)(u.provider),[K,L]=(0,c.useState)(u.model),[M,N]=(0,c.useState)(u.identity),[O,P]=(0,c.useState)(u.color??"#6B7280"),[Q,R]=(0,c.useState)(r(u.skills)),[S,T]=(0,c.useState)(new Set(z??[])),[U,V]=(0,c.useState)("form"),[W,X]=(0,c.useState)(()=>t(u,y?z??[]:void 0)),[Y,Z]=(0,c.useState)(null),[$,_]=(0,c.useState)(!1),[aa,ab]=(0,c.useState)([]),[ac,ad]=(0,c.useState)(""),[ae,af]=(0,c.useState)(!1),[ag,ah]=(0,c.useState)(u.skillBindings??[]),ai=(0,c.useRef)(null),aj=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{aj.current&&!aj.current.contains(a.target)&&x()},b=setTimeout(()=>document.addEventListener("mousedown",a),0);return()=>{clearTimeout(b),document.removeEventListener("mousedown",a)}},[aj,x]),(0,c.useEffect)(()=>{if(!ae)return;let a=a=>{ai.current&&!ai.current.contains(a.target)&&af(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[ae]),(0,c.useEffect)(()=>{"form"===U&&X(t({name:E,title:G,provider:I,model:K,identity:M,color:O,skills:s(Q),skillBindings:ag},y?Array.from(S):void 0))},[U,E,G,I,K,M,O,Q,ag,S,y]),(0,c.useEffect)(()=>{if(!$)return;let a=window.setTimeout(()=>_(!1),1200);return()=>window.clearTimeout(a)},[$]),(0,c.useEffect)(()=>{let a=!1;return async function(){try{let b=await fetch("/api/skills");if(!b.ok)return;let c=await b.json();if(a)return;let d=Array.isArray(c.skills)?c.skills.filter(a=>!!a&&"object"==typeof a).map(a=>({skillId:String(a.skillId??"").trim(),repo:String(a.repo??"").trim(),name:String(a.name??a.skillId??"").trim()})).filter(a=>a.skillId.length>0&&a.repo.length>0):[];ab(d)}catch{a||ab([])}}(),()=>{a=!0}},[]);let ak=a=>{let b=function(a,b){let c;try{c=JSON.parse(a)}catch{throw Error("JSON is invalid.")}if(!c||"object"!=typeof c||Array.isArray(c))throw Error("JSON must be an object.");let d=c,e="string"==typeof d.provider?d.provider:b,f=q.includes(e)?e:b,g=(Array.isArray(d.skills)?d.skills:[]).flatMap(a=>{if("string"==typeof a){let[b,...c]=a.split("|"),d=b.trim();return d?[{file:d,condition:c.join("|").trim()}]:[]}if(!a||"object"!=typeof a||Array.isArray(a))return[];let b="string"==typeof a.file?a.file.trim():"";return b?[{file:b,condition:"string"==typeof a.condition?a.condition.trim():""}]:[]}),h=Array.isArray(d.projectIds)?d.projectIds.filter(a=>"string"==typeof a&&a.trim().length>0):void 0,i=(Array.isArray(d.skillBindings)?d.skillBindings:[]).flatMap(a=>{if(!a||"object"!=typeof a||Array.isArray(a))return[];let b="string"==typeof a.repo?a.repo.trim():"",c="string"==typeof a.skillId?a.skillId.trim():"";return b&&c?[{repo:b,skillId:c,condition:"string"==typeof a.condition?a.condition.trim():""}]:[]});return{data:{name:"string"==typeof d.name?d.name:"",title:"string"==typeof d.title?d.title:"",provider:f,model:"string"==typeof d.model?d.model:"",identity:"string"==typeof d.identity?d.identity:"",color:"string"==typeof d.color&&d.color.trim()?d.color:"#6B7280",skills:g,skillBindings:i},projectIds:h}}(a,I),c=y?(b.projectIds??[]).filter(a=>y.some(b=>b.id===a)):void 0;return F(b.data.name),H(b.data.title??""),J(b.data.provider),L(b.data.model),N(b.data.identity),P(b.data.color??"#6B7280"),R(r(b.data.skills)),ah(b.data.skillBindings??[]),y&&T(new Set(c??[])),X(t(b.data,y?c??[]:void 0)),Z(null),{...b,projectIds:c}},al=()=>{if("form"!==U)try{ak(W),V("form")}catch(a){Z(a instanceof Error?a.message:"Unable to parse JSON.")}},am=async()=>{try{await navigator.clipboard.writeText(W),_(!0)}catch{_(!1)}},an=(0,c.useMemo)(()=>{let a=ac.trim().toLowerCase();return a?aa.filter(b=>[b.name,b.skillId,b.repo].some(b=>b.toLowerCase().includes(a))).slice(0,50):aa.slice(0,50)},[aa,ac]),ao=(0,c.useMemo)(()=>new Set(ag.map(a=>`${a.repo}::${a.skillId}`)),[ag]);return(0,b.jsx)("div",{ref:aj,className:"fixed inset-0 z-[100] flex items-center justify-center p-4 bg-black/30 backdrop-blur-sm",onKeyDown:a=>{"Escape"===a.key&&x()},children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-[32px] shadow-2xl overflow-hidden w-full max-w-2xl max-h-[90vh] flex flex-col animate-in fade-in zoom-in duration-300",children:[(0,b.jsxs)("div",{className:"px-8 pt-8 pb-4 shrink-0 flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[A&&(0,b.jsxs)("div",{className:"flex flex-col items-center gap-1.5",children:[(0,b.jsx)("img",{src:p(A,64,O),alt:E,className:"w-14 h-14 rounded-full bg-[var(--muted)]"}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("label",{className:"text-[10px] text-[var(--muted-foreground)]",children:"Color"}),(0,b.jsx)("input",{type:"color",value:O,onChange:a=>P(a.target.value),className:"w-5 h-5 rounded border border-[var(--border)] cursor-pointer p-0"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-[10px] font-bold tracking-widest text-[var(--muted-foreground)] uppercase",children:a}),(0,b.jsx)("h1",{className:"text-2xl font-semibold mt-1",children:E||"Configure Agent"})]})]}),(0,b.jsx)("button",{onClick:x,className:"p-2 text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)] hover:bg-[var(--muted)] rounded-full transition-all",children:(0,b.jsx)(d.X,{size:20})})]}),(0,b.jsxs)("div",{className:"px-8 pb-8 space-y-6 overflow-y-auto",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{className:"inline-flex rounded-xl bg-[var(--muted)] p-1",children:[(0,b.jsx)("button",{type:"button",onClick:al,className:"form"===U?"px-3 py-1.5 text-xs font-semibold rounded-lg bg-[var(--card-bg)] text-[var(--foreground)] shadow-sm":"px-3 py-1.5 text-xs font-semibold rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"Form"}),(0,b.jsx)("button",{type:"button",onClick:()=>{X(t({name:E,title:G,provider:I,model:K,identity:M,color:O,skills:s(Q),skillBindings:ag},y?Array.from(S):void 0)),Z(null),V("json")},className:"json"===U?"px-3 py-1.5 text-xs font-semibold rounded-lg bg-[var(--card-bg)] text-[var(--foreground)] shadow-sm":"px-3 py-1.5 text-xs font-semibold rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"JSON"})]}),"json"===U&&(0,b.jsxs)("button",{type:"button",onClick:am,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-semibold text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--muted)] rounded-lg transition-colors",children:[$?(0,b.jsx)(n.Check,{size:14,className:"text-emerald-500"}):(0,b.jsx)(m.Copy,{size:14}),$?"Copied":"Copy"]})]}),"form"===U?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,b.jsx)(e.User,{size:16})," Name"]}),(0,b.jsx)("input",{type:"text",value:E,onChange:a=>F(a.target.value),className:"w-full px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all",placeholder:"e.g. Ada, Kai, Sage...",autoFocus:!0})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:"Title"}),(0,b.jsx)("input",{type:"text",value:G,onChange:a=>H(a.target.value),className:"w-full px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all",placeholder:"e.g. VP of Engineering"})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,b.jsx)(g.Box,{size:16})," Provider"]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("select",{value:I,onChange:a=>J(a.target.value),className:"w-full appearance-none px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all pr-10 cursor-pointer",children:[(0,b.jsx)("option",{value:"claude",children:"Claude"}),(0,b.jsx)("option",{value:"ollama",children:"Ollama"}),(0,b.jsx)("option",{value:"gemini",children:"Gemini"}),(0,b.jsx)("option",{value:"codex",children:"Codex"}),(0,b.jsx)("option",{value:"zai",children:"Z.AI"})]}),(0,b.jsx)(l.ChevronDown,{className:"absolute right-3 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)] pointer-events-none",size:16})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,b.jsx)(f.Cpu,{size:16})," Model"]}),(0,b.jsx)("input",{type:"text",value:K,onChange:a=>L(a.target.value),className:"w-full px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all font-mono text-sm",placeholder:"e.g. claude-sonnet-4-6"})]})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,b.jsx)(h.BookOpen,{size:16})," Identity"]}),(0,b.jsx)("div",{className:"border border-[var(--border)] rounded-xl overflow-hidden bg-[var(--app-shell-subtle)] focus-within:ring-2 focus-within:ring-indigo-500/20 focus-within:border-indigo-500 transition-all",children:(0,b.jsx)(o.default,{content:M,onChange:a=>N(a),placeholder:"You are a ..."})}),(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"Identity defines who the agent is. Keep portable knowledge separate below; project and repo knowledge belong on their scoped surfaces."})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,b.jsx)(i.Sparkles,{size:16})," Portable Knowledge"]}),(0,b.jsxs)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--app-shell-subtle)] p-3 space-y-3",children:[(0,b.jsx)("div",{className:"flex items-center justify-between gap-3",children:(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xs font-semibold text-[var(--foreground)]",children:"Skills Picker"}),(0,b.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:"Pick a skill here. AGX will install it later only if the run actually needs it."})]})}),aa.length>0?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"relative",ref:ai,children:[(0,b.jsxs)("button",{type:"button",onClick:()=>af(a=>!a),className:"w-full flex items-center justify-between px-3 py-2 rounded-xl border border-[var(--border)] bg-[var(--card-bg)] text-sm font-medium hover:border-indigo-500",children:[(0,b.jsx)("span",{className:"truncate text-left",children:"Search and add skills"}),(0,b.jsx)(l.ChevronDown,{size:16,className:`shrink-0 text-[var(--muted-foreground)] transition-transform ${ae?"rotate-180":""}`})]}),ae&&(0,b.jsxs)("div",{className:"absolute left-0 right-0 top-full mt-2 z-30 rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg overflow-hidden",children:[(0,b.jsx)("div",{className:"p-2 border-b border-[var(--border)]",children:(0,b.jsx)("input",{type:"text",value:ac,onChange:a=>ad(a.target.value),placeholder:"Search skills",className:"w-full px-3 py-2 bg-[var(--card-bg)] border border-[var(--border)] rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500",autoFocus:!0})}),(0,b.jsx)("div",{className:"max-h-64 overflow-y-auto",children:an.length>0?an.map(a=>{let c=`${a.repo}::${a.skillId}`,d=ao.has(c);return(0,b.jsx)("button",{type:"button",className:`w-full px-3 py-2 text-left text-sm transition-colors ${d?"bg-emerald-50 text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onMouseDown:a=>a.preventDefault(),onClick:()=>{var b,c;return b=a.repo,c=a.skillId,void(ah(a=>a.some(a=>a.repo===b&&a.skillId===c)?a.filter(a=>a.repo!==b||a.skillId!==c):[...a,{repo:b,skillId:c}]),ad(""))},children:(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("div",{className:"font-medium",children:a.name||a.skillId}),(0,b.jsx)("div",{className:"text-[11px] text-[var(--muted-foreground)]",children:a.repo})]}),d&&(0,b.jsx)("span",{className:"shrink-0 rounded-full bg-emerald-100 px-2 py-0.5 text-[10px] font-semibold text-emerald-700",children:"Added"})]})},c)}):(0,b.jsx)("div",{className:"px-3 py-3 text-sm text-[var(--muted-foreground)]",children:"No matching skills."})})]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[ag.map(a=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full bg-emerald-50 text-emerald-700 border border-emerald-200 px-2.5 py-1 text-[11px] font-medium",children:[a.skillId,(0,b.jsx)("button",{type:"button",onClick:()=>{var b,c;return b=a.repo,c=a.skillId,void ah(a=>a.filter(a=>a.repo!==b||a.skillId!==c))},className:"text-emerald-700/70 hover:text-emerald-900",title:`Remove ${a.skillId}`,children:(0,b.jsx)(d.X,{size:12})})]},`${a.repo}::${a.skillId}`)),0===ag.length&&(0,b.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:"No library skills selected yet."})]})]}):(0,b.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:"No catalog skills available right now."})]}),(0,b.jsx)("textarea",{value:Q,onChange:a=>R(a.target.value),rows:5,className:"w-full px-4 py-3 bg-[var(--app-shell-subtle)] border border-[var(--border)] rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 transition-all font-mono text-xs",placeholder:"one/path/to/skill.md\npath/to/skill.md | when coding in TypeScript"}),(0,b.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:["Portable agent knowledge only. One reference per line. Use ",(0,b.jsx)("code",{children:"|"})," to add an optional condition."]})]}),y&&y.length>0&&(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,b.jsx)(k.FolderOpen,{size:16})," Assign To Projects"]}),(0,b.jsx)("div",{className:"space-y-1 max-h-[160px] overflow-y-auto",children:y.map(a=>{let c=S.has(a.id);return(0,b.jsxs)("button",{type:"button",className:c?"w-full flex items-center gap-3 px-3 py-2 rounded-lg text-sm transition-colors bg-indigo-50 text-indigo-700":"w-full flex items-center gap-3 px-3 py-2 rounded-lg text-sm transition-colors text-[var(--muted-foreground)] hover:bg-[var(--app-shell-subtle)]",onClick:()=>T(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c}),children:[(0,b.jsx)("div",{className:c?"w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center bg-indigo-600 border-indigo-600":"w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center border-[var(--border)]",children:c&&(0,b.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,b.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,b.jsx)("span",{className:"text-xs font-medium text-left",children:a.label??a.name})]},a.id)})})]}),B&&(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--muted-foreground)]",children:[(0,b.jsx)(k.FolderOpen,{size:16})," Project Memberships"]}),B.current.length>0?(0,b.jsx)("div",{className:"flex flex-col gap-1",children:B.current.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs bg-[var(--app-shell-subtle)] rounded-lg px-3 py-2",children:[(0,b.jsx)(k.FolderOpen,{size:12,className:"text-[var(--muted-foreground)] shrink-0"}),(0,b.jsx)("span",{className:"truncate flex-1",children:a.name}),D&&!a.is_default&&(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-red-500 transition-colors",onClick:()=>D(a.id),title:"Remove from project",children:(0,b.jsx)(d.X,{size:12})})]},a.id))}):(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] italic",children:"Not assigned to any projects"}),B.available.length>0&&C&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:B.available.map(a=>(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 text-[10px] px-2 py-1 rounded-lg border border-dashed border-[var(--border)] text-[var(--muted-foreground)] hover:border-[var(--border)] hover:text-[var(--foreground)] transition-colors",onClick:()=>C(a.id),children:[(0,b.jsx)(j.Plus,{size:10}),a.name]},a.id))})]})]}):(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"Paste agent JSON here. Switching back to Form or saving will apply valid JSON to the form state."}),(0,b.jsx)("button",{type:"button",onClick:al,className:"px-3 py-1.5 text-xs font-semibold text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--muted)] rounded-lg transition-colors",children:"Apply to Form"})]}),(0,b.jsx)("textarea",{value:W,onChange:a=>{X(a.target.value),Y&&Z(null)},rows:22,className:"w-full px-4 py-3 bg-[var(--app-shell-bg)] text-[var(--foreground)] border border-[var(--app-shell-border)] rounded-2xl focus:outline-none focus:ring-2 focus:ring-[var(--ring)] focus:border-[var(--primary)] transition-all font-mono text-xs",spellCheck:!1,autoFocus:!0}),Y&&(0,b.jsx)("p",{className:"text-xs text-red-500",children:Y})]}),(0,b.jsxs)("div",{className:"flex items-center justify-end gap-3 pt-4 border-t border-[var(--border)]",children:[(0,b.jsx)("button",{onClick:x,className:"px-6 py-2.5 text-sm font-semibold text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] rounded-xl transition-all",children:"Cancel"}),(0,b.jsx)("button",{onClick:()=>{let a=E.trim(),b=G.trim(),c=I,d=K.trim(),e=M.trim(),f=O,g=s(Q),h=ag,i=y?Array.from(S):void 0;if("json"===U)try{let j=ak(W);a=j.data.name.trim(),b=(j.data.title??"").trim(),c=j.data.provider,d=j.data.model.trim(),e=j.data.identity.trim(),f=j.data.color??"#6B7280",g=j.data.skills??[],h=j.data.skillBindings??[],i=y?j.projectIds??[]:void 0}catch(a){Z(a instanceof Error?a.message:"Unable to parse JSON.");return}a&&d&&w({name:a,title:b||void 0,provider:c,model:d,identity:e,color:f,skills:g,skillBindings:h},i)},disabled:"form"===U&&(!E.trim()||!K.trim()),className:"px-8 py-2.5 bg-indigo-600 text-white text-sm font-semibold rounded-xl shadow-[0_4px_12px_rgba(79,70,229,0.3)] hover:bg-indigo-700 active:scale-95 disabled:opacity-50 transition-all font-bold",children:v})]})]})]})})}a.s(["AgentForm",()=>u,"agentAvatarUrl",()=>p])}];
2
+
3
+ //# sourceMappingURL=_fd8cafe9._.js.map
@@ -1,20 +1,20 @@
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);let t={search:"",assigneeIds:[],statuses:[],teamId:"",cycleId:""};var u=a.i(356283);function v(a,b){return a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||b}function w(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 v(b,"project");let c=String(a?.name??"").trim();return c?v(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-${v(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),j=a.i(104720),k=a.i(883706);let l=(0,k.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 m=a.i(325015),n=a.i(669520),o=a.i(587532),p=a.i(321161),q=a.i(546842);let r={activeScriptId:null,scripts:[]};var s=a.i(331748),t=a.i(204301),u=a.i(815682),v=a.i(915618);let w=(0,k.default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);var x=a.i(781560),y=a.i(81779),z=a.i(448609);function A({projectSlug:a,scripts:d,activeScriptId:e,onSetActiveScriptId:f,onSaveScript:h,onDeleteScript:i}){let j=(0,c.useMemo)(()=>d.find(a=>a.id===e)??null,[e,d]),[k,l]=(0,c.useState)(()=>e?{type:"edit",scriptId:e}:{type:"new"}),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(null),[s,t]=(0,c.useState)(null),u="edit"===k.type?k.scriptId:null;(0,c.useEffect)(()=>{if("edit"===k.type){let a=d.find(a=>a.id===k.scriptId);if(a){n(a.name),p(a.prompt);return}}if(j&&"new"!==k.type){("edit"!==k.type||k.scriptId!==j.id)&&l({type:"edit",scriptId:j.id}),n(j.name),p(j.prompt);return}0===d.length&&"new"!==k.type&&(l({type:"new"}),n(""),p(""))},[j,u,k,d]);let A=()=>{l({type:"new"}),n(""),p(""),r(null)},B=()=>{try{let a=h({name:m,prompt:o});l({type:"edit",scriptId:a.id}),r(null)}catch(a){r(a instanceof Error?a.message:"Failed to save run script.")}};return(0,b.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Run Scripts"}),(0,b.jsxs)("p",{className:"text-xs leading-relaxed text-[var(--muted-foreground)]",children:["Save reusable execution prompts for the ",String(a??"").trim()||"global Linear board",". These scripts are stored locally on this device and layered on top of the built-in ticket context when you run a Linear task."]})]}),(0,b.jsxs)("div",{className:"grid gap-5 md:grid-cols-[240px_minmax(0,1fr)]",children:[(0,b.jsxs)("aside",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-3",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.16em] text-[var(--muted-foreground)]",children:"Library"}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-md border border-[var(--card-border)] px-2 py-1 text-[11px] font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--background)]",onClick:A,children:[(0,b.jsx)(v.Plus,{size:12}),"New"]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("button",{type:"button",className:`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${null===e?"bg-[var(--background)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"}`,onClick:()=>f(null),children:[(0,b.jsx)("span",{className:`flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${null===e?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:null===e?(0,b.jsx)(g.Check,{size:10}):null}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate font-medium",children:"AGX default"})]}),0===d.length?(0,b.jsx)("div",{className:"rounded-lg border border-dashed border-[var(--card-border)] px-3 py-4 text-xs leading-relaxed text-[var(--muted-foreground)]",children:"No saved scripts yet. Create one to reuse your preferred Linear execution prompt."}):d.map(a=>{let c=a.id===e,d="edit"===k.type&&k.scriptId===a.id;return(0,b.jsx)("button",{type:"button",className:`rounded-lg border px-3 py-2 text-left transition-colors ${d?"border-blue-500/50 bg-[var(--background)]":"border-transparent hover:border-[var(--card-border)] hover:bg-[var(--background)]"}`,onClick:()=>{l({type:"edit",scriptId:a.id}),n(a.name),p(a.prompt),r(null),f(a.id)},children:(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)("span",{className:`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${c?"border-blue-500 bg-blue-500 text-white":"border-[var(--card-border)]"}`,children:c?(0,b.jsx)(g.Check,{size:10}):null}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-xs font-medium text-[var(--foreground)]",children:a.name}),(0,b.jsx)("div",{className:"mt-1 line-clamp-2 text-[11px] leading-relaxed text-[var(--muted-foreground)]",children:a.prompt}),(0,b.jsxs)("div",{className:"mt-2 text-[10px] uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:["Updated ",function(a){try{return new Date(a).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return a}}(a.updatedAt)]})]})]})},a.id)})]})]}),(0,b.jsxs)("section",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"mb-4 flex items-start justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-semibold text-[var(--foreground)]",children:"edit"===k.type?"Edit Run Script":"New Run Script"}),(0,b.jsxs)("p",{className:"mt-1 text-xs leading-relaxed text-[var(--muted-foreground)]",children:["Use placeholders like ",(0,b.jsx)("code",{children:"{{ticket.identifier}}"}),", ",(0,b.jsx)("code",{children:"{{ticket.title}}"}),", ",(0,b.jsx)("code",{children:"{{ticket.status}}"}),", ",(0,b.jsx)("code",{children:"{{ticket.assignee}}"}),", ",(0,b.jsx)("code",{children:"{{project.slug}}"}),", ",(0,b.jsx)("code",{children:"{{knowledge_base.root}}"}),", ",(0,b.jsx)("code",{children:"{{knowledge_base.issue_path}}"}),", and ",(0,b.jsx)("code",{children:"{{worktree.path}}"}),"."]})]}),j?(0,b.jsxs)("span",{className:"rounded-full border border-blue-500/30 bg-blue-500/10 px-2.5 py-1 text-[11px] font-medium text-blue-400",children:["Active: ",j.name]}):(0,b.jsx)("span",{className:"rounded-full border border-[var(--card-border)] px-2.5 py-1 text-[11px] font-medium text-[var(--muted-foreground)]",children:"Active: AGX default"})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{type:"text",className:"rounded-lg border border-[var(--card-border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-blue-500",placeholder:"Investigation-first",value:m,onChange:a=>n(a.target.value)})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]",children:"Prompt"}),(0,b.jsx)("div",{className:"overflow-hidden rounded-lg border border-[var(--card-border)] bg-[var(--background)] transition-colors focus-within:border-blue-500 [&_.rich-text-editor_.ProseMirror]:min-h-[220px]",children:(0,b.jsx)(z.default,{content:o,onChange:p,placeholder:"Read {{ticket.identifier}} and the full comment thread in Linear before changing code.\nWrite your investigation to {{knowledge_base.issue_path}} and stop after posting a plan unless the issue is already approved for implementation."})})]}),q?(0,b.jsx)("div",{className:"rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-xs text-red-300",children:q}):null,(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg bg-blue-500 px-3 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-600",onClick:B,children:[(0,b.jsx)(w,{size:14}),"Save as new"]}),"edit"===k.type?(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--card-border)] px-3 py-2 text-sm font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--background)]",onClick:()=>{if("edit"!==k.type)return void B();try{let a=h({id:k.scriptId,name:m,prompt:o});l({type:"edit",scriptId:a.id}),r(null)}catch(a){r(a instanceof Error?a.message:"Failed to update run script.")}},children:[(0,b.jsx)(w,{size:14}),"Update"]}):null,"edit"===k.type?(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-red-500/30 px-3 py-2 text-sm font-medium text-red-300 transition-colors hover:bg-red-500/10",onClick:()=>{t(d.find(a=>a.id===k.scriptId)??null)},children:[(0,b.jsx)(x.Trash2,{size:14}),"Delete"]}):null,(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--card-border)] px-3 py-2 text-sm font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--background)] hover:text-[var(--foreground)]",onClick:A,children:[(0,b.jsx)(v.Plus,{size:14}),"Clear editor"]})]})]})]})]}),(0,b.jsx)(y.default,{isOpen:!!s,title:"Delete run script?",message:"This removes the saved script from this device for the current project.",preview:s?.name,confirmLabel:"Delete",variant:"danger",onConfirm:()=>{s&&(i(s.id),"edit"===k.type&&k.scriptId===s.id&&(l({type:"new"}),n(""),p("")),t(null),r(null))},onCancel:()=>t(null)})]})}var B=a.i(194125);let C={search:"",assigneeIds:[],statuses:[],teamId:"",cycleId:""};var D=a.i(176388),E=a.i(356283);function F(a,b){return a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||b}function G(a){var b;let c=H(a),d=c.issue.identifier,e=c.issue.title,f=c.issue.status,g=c.issue.assignee,h=c.runtime.knowledgeBaseRoot,i=c.runtime.issueKnowledgePath,j=c.runtime.isolatedWorktreePath,k=`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
 
5
5
  INJECTED CONTEXT
6
- - Ticket: ${f}
7
- - Title: ${g}
8
- - Current status: ${h}
9
- - Current assignee: ${i}
10
- - Project: ${(b=a.project,d=String(b?.name??"").trim(),e=String(b?.slug??"").trim(),d&&e?`${d} (${e})`:d||e||"current project")}
11
- - Knowledge base root: ${k}
12
- - Issue knowledge path: ${l}
13
- - Suggested isolated worktree: ${m}
6
+ - Ticket: ${d}
7
+ - Title: ${e}
8
+ - Current status: ${f}
9
+ - Current assignee: ${g}
10
+ - Project: ${c.project.label}
11
+ - Knowledge base root: ${h}
12
+ - Issue knowledge path: ${i}
13
+ - Suggested isolated worktree: ${j}
14
14
  - Additional project resources such as repo knowledge, project memory, and project variables are injected separately by the active project context.
15
15
 
16
16
  SOURCE REPOSITORIES
17
- ${!(c=a.project?.repos)||0===c.length?"- Use the active project context to discover the right repository or workspace; do not hardcode paths.":c.map(a=>{let b=[a.name.trim()||"repository"],c=String(a.path??"").trim(),d=String(a.notes??"").trim();return c&&b.push(`path: ${c}`),d&&b.push(`notes: ${d}`),`- ${b.join(" | ")}`}).join("\n")}
17
+ ${!(b=c.project.repos)||0===b.length?"- Use the active project context to discover the right repository or workspace; do not hardcode paths.":b.map(a=>{let b=[a.name.trim()||"repository"],c=String(a.path??"").trim(),d=String(a.notes??"").trim();return c&&b.push(`path: ${c}`),d&&b.push(`notes: ${d}`),`- ${b.join(" | ")}`}).join("\n")}
18
18
 
19
19
  WORKFLOW
20
20
  1. Read the full Linear issue and comment thread before acting. Use Linear MCP for issue details, comments, state changes, and follow-up.
@@ -33,7 +33,10 @@ 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 x=a.i(860614),y=a.i(596221);let z=[{id:"claude",label:"Claude Code",icon:"🟣"},{id:"codex",label:"Codex",icon:"⚫"},{id:"gemini",label:"Gemini CLI",icon:"🔵"}];function A({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),w=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=z.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&&w()},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:w,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)(x.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:[z.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)(y.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 B=(0,f.default)(async()=>{},{loadableGenerated:{modules:[895214]},ssr:!1});function C({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 D(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 E(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 F={"In Progress":"In Prog","In Review":"Review",Backlog:"Backlog",Todo:"Todo",Done:"Done",Cancelled:"Cancl."},G={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"},H={queued:"bg-amber-400",running:"bg-yellow-400",success:"bg-emerald-400",failed:"bg-red-400",cancelled:"bg-zinc-400"};function I({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 J({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=(()=>{if(0===n.length||n.length===e.length)return j??a;if(1===n.length)return n[0]?.label??j??a;let b=a.toLowerCase();return`${n.length} ${b}${b.endsWith("s")?"es":"s"}`})();(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 K({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:v}=(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]),A=(0,c.useRef)(!1),C=(0,c.useCallback)(async(b,c,k,l,m,n,o)=>{if(A.current)return;A.current=!0;let p=(m?d.find(a=>a.id===m):null)??j;if(p)try{let{promptPrefix:c}=w({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),A.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:D(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(v).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:D(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)(B,{onSend:C,onStop:()=>{},participants:d,projectSlug:f??void 0,loading:"ready"!==y,commands:[],activityStatus:y,placeholder:`Ask about ${a.identifier}...`,initialPinnedParticipantId:j?.id})})]})}function L({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]),t=new Set(["queued","running","awaiting_user","blocked"]),v=m.some(a=>t.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,u.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 ${G[a.status]}`,children:[(0,b.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${H[a.status]}`}),(0,b.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider",children:E(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:D(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:D(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:D(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)(B,{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 M({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=F[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 N({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,u]=(0,c.useState)(!1),[v,x]=(0,c.useState)(e??!1),[y,z]=(0,c.useState)(576),[B,F]=(0,c.useState)(224),[G,H]=(0,c.useState)(""),[N,O]=(0,c.useState)(""),[P,Q]=(0,c.useState)(!1),[R,S]=(0,c.useState)([]),[T,U]=(0,c.useState)([]),[V,W]=(0,c.useState)([]),[X,Y]=(0,c.useState)([]),[Z,$]=(0,c.useState)([]),[_,aa]=(0,c.useState)([]),[ab,ac]=(0,c.useState)(""),[ad,ae]=(0,c.useState)(""),[af,ag]=(0,c.useState)(null),[ah,ai]=(0,c.useState)(null),[aj,ak]=(0,c.useState)([]),[al,am]=(0,c.useState)(null),[an,ao]=(0,c.useState)(null),ap=(0,c.useRef)(null),aq=(0,c.useRef)(!0),ar=(0,c.useCallback)(a=>{H(a),ap.current&&clearTimeout(ap.current),ap.current=setTimeout(()=>O(a),300)},[]);(0,c.useEffect)(()=>()=>{ap.current&&clearTimeout(ap.current)},[]),(0,c.useEffect)(()=>{let a={...t};aq.current=!0,H(a.search),O(a.search),Y(a.assigneeIds),$(a.statuses),ae(a.teamId),ac(a.cycleId)},[d]),(0,c.useEffect)(()=>{if(aq.current){aq.current=!1;return}},[d,G,X,Z,ad,ab]),(0,c.useEffect)(()=>{if(!f)return;let a=!1;Q(!1);let b=new URLSearchParams;return d&&b.set("projectSlug",d),fetch(b.size>0?`/api/linear/options?${b.toString()}`:"/api/linear/options").then(a=>a.json()).then(b=>{a||(S(Array.isArray(b.assignees)?b.assignees:[]),U(Array.isArray(b.statuses)?b.statuses:[]),W(Array.isArray(b.teams)?b.teams:[]),aa(Array.isArray(b.cycles)?b.cycles:[]),Q(!0))}).catch(()=>{a||(S([]),U([]),W([]),aa([]),Q(!0))}),()=>{a=!0}},[f,d]),(0,c.useEffect)(()=>{if(!P)return;let a=X.filter(a=>R.some(b=>b.id===a));a.length!==X.length&&Y(a)},[R,P,X]),(0,c.useEffect)(()=>{if(!P)return;let a=Z.filter(a=>T.includes(a));a.length!==Z.length&&$(a)},[P,Z,T]),(0,c.useEffect)(()=>{if(P){if(V.length<=1&&ad)return void ae("");ad&&!V.some(a=>a.id===ad)&&ae("")}},[P,ad,V]),(0,c.useEffect)(()=>{P&&ab&&!_.some(a=>a.id===ab)&&ac("")},[_,P,ab]);let{issues:as,loading:at,hasMore:au,loadMore:av,refresh:aw}=function(a,b=!0,d={}){let[e,f]=(0,c.useState)([]),[g,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(!1),m=(0,c.useRef)(i),n=(0,c.useRef)(!1);m.current=i,(0,c.useEffect)(()=>{n.current=!1},[d.projectSlug]);let o=(0,c.useCallback)(async(c,e=!1)=>{if(b){h(!0);try{let b=new URLSearchParams;if(a.teamId&&b.set("teamId",a.teamId),a.statuses?.length)for(let c of a.statuses)b.append("status",c);if(a.search&&b.set("search",a.search),a.assigneeIds?.length)for(let c of a.assigneeIds)b.append("assigneeId",c);else a.assignedToMe&&b.set("assignedToMe","true");a.cycleId&&b.set("cycleId",a.cycleId),c&&m.current&&b.set("cursor",m.current),d.projectSlug&&b.set("projectSlug",d.projectSlug),d.limit&&b.set("limit",String(d.limit)),e&&b.set("refresh","true");let g=await fetch(`/api/linear/issues?${b.toString()}`),h=await g.json(),i=h.issues??[];f(a=>c?[...a,...i]:i),j(h.pageInfo?.endCursor??null),l(h.pageInfo?.hasNextPage??!1),n.current=!0}catch{c||f([])}finally{h(!1)}}},[a.teamId,a.statuses,a.search,a.assigneeIds,a.assignedToMe,a.cycleId,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:N||void 0,statuses:Z.length>0&&Z.length<T.length?Z:void 0,assigneeIds:X.length>0?X:void 0,teamId:ad||void 0,cycleId:ab||void 0}),[N,X,ab,Z,ad,T.length]),f,{projectSlug:d}),{runs:ax,loading:ay,createRun:az,updateRun:aA}=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},[])}}(af?.id,a??null),aB=ax.find(a=>a.id===ah)??null,aC=(0,c.useMemo)(()=>R.map(a=>({value:a.id,label:a.name})),[R]),aD=(0,c.useMemo)(()=>T.map(a=>({value:a,label:a})),[T]),aE=(0,c.useMemo)(()=>[{value:"",label:"Workspace"},...V.map(a=>({value:a.id,label:a.name}))],[V]),aF=(0,c.useMemo)(()=>[{value:"",label:"Cycle"},..._.map(a=>({value:a.id,label:a.name||`Cycle ${a.number}`}))],[_]),aG=aD.length>0,aH=aF.length>1,aI=aE.length>2;(0,c.useEffect)(()=>{0===as.length?ag(null):ag(a=>a&&as.some(b=>b.id===a.id)?as.find(b=>b.id===a.id)??a:as[0]??null)},[as]),(0,c.useEffect)(()=>{0===ax.length?ai(null):ah&&ax.some(a=>a.id===ah)||ai(ax[0]?.id??null)},[ax,ah]),(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||ak(d);return}let e=await fetch(`/api/projects/${encodeURIComponent(a)}/agents`);if(!e.ok){b||ak(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||ak(i)}catch{b||ak([])}}(),()=>{b=!0}},[a]);let aJ=(0,c.useCallback)((a,b)=>{if(0===aj.length)return void window.alert("Add at least one agent to this project before running a Linear ticket.");if(1===aj.length)return void aK(a,aj[0]);let c=b?.currentTarget?.getBoundingClientRect();am(a),ao(c?{top:c.bottom+4,left:c.left}:{top:200,left:200})},[aj]),aK=(0,c.useCallback)(async(b,c)=>{am(null),ao(null);let e=null;try{ag(b),e=await az({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}),ai(e.id);let{prompt:f,promptPrefix:g}=w({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 aA(e.id,{chatRunId:i.chatRunId,rootMessageId:i.userMessageId})}catch(a){console.error("Failed to execute Linear ticket:",a),e&&await aA(e.id,{status:"failed",error:a instanceof Error?a.message:String(a)}),a instanceof Error&&window.alert(a.message)}},[az,a,d,aA]),aL=(0,c.useRef)(null);if((0,c.useEffect)(()=>{let a=aL.current;if(!a||!au)return;let b=new IntersectionObserver(a=>{a[0]?.isIntersecting&&av()},{threshold:.1});return b.observe(a),()=>b.disconnect()},[au,av]),g)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Loading..."});let aM=f&&!s&&!Object.values(j).some(Boolean);return!f||aM?(0,b.jsx)(A,{connected:f,user:h,clis:i,mcpConfigured:j,onConnect:o,onConnectWithKey:p,onDisconnect:q,onConfigureMcp:r,onContinue:()=>u(!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:y},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:G,onChange:a=>ar(a.target.value)})]}),(0,b.jsx)("button",{type:"button",className:"shrink-0 rounded p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-50",onClick:()=>void aw(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:at,children:(0,b.jsx)(l.RefreshCw,{size:16,className:at?"animate-spin":void 0})}),(0,b.jsx)("button",{type:"button",className:"shrink-0 rounded p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]",onClick:()=>x(!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:[aG?(0,b.jsx)(J,{label:"Status",values:Z,options:aD,activeClasses:"border-amber-500/30 bg-amber-500/10 text-amber-300",onChange:$,emptyLabel:"All statuses"}):null,(0,b.jsx)(J,{label:"Assignee",values:X,options:aC,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:Y,emptyLabel:"All assignees"}),aI?(0,b.jsx)(I,{label:"Workspace",value:ad,options:aE,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:ae}):null,aH?(0,b.jsx)(I,{label:"Cycle",value:ab,options:aF,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:ac}):null]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:at&&0===as.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===as.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"No tickets found."}):(0,b.jsxs)(b.Fragment,{children:[as.map(a=>(0,b.jsx)(M,{issue:a,selected:af?.id===a.id,onSelect:()=>ag(a),onExecute:aJ},a.id)),au?(0,b.jsx)("div",{ref:aL,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:at?"Loading...":"Load more"}):null]})})]}),(0,b.jsx)(C,{onResize:a=>z(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:B},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"}),af&&(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=>aJ(af,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:af?ay&&0===ax.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading runs..."}):0===ax.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."]}):ax.map(a=>(0,b.jsxs)("button",{type:"button",className:`w-full px-3 py-2 text-left text-xs transition-colors ${aB?.id===a.id?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]"}`,onClick:()=>ai(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:E(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)(C,{onResize:a=>F(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:aB?(0,b.jsx)(L,{run:aB,participants:aj}):af&&aj.length>0?(0,b.jsx)(K,{issue:af,participants:aj,projectId:a,projectSlug:d,createRun:az,updateRun:aA,onRunCreated:a=>ai(a)},af.id):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:af?"Add at least one agent to this project to chat.":"Select a ticket from the list."})}),v&&(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:()=>x(!1),children:"×"}),(0,b.jsx)("div",{className:"p-6",children:(0,b.jsx)(A,{connected:f,user:h,clis:i,mcpConfigured:j,onConnect:o,onConnectWithKey:p,onDisconnect:q,onConfigureMcp:r,onContinue:()=>x(!1)})})]})}),al&&an&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 z-40",onClick:()=>{am(null),ao(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:an.top,left:an.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"}),aj.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 aK(al,a),children:[(0,b.jsx)("img",{src:D(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 O({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)(N,{projectId:i?.id,projectSlug:i?.slug??f,initialShowSettings:j})}a.s(["default",()=>O],323860)}];
36
+ `;return{prompt:`Work on this Linear ticket: ${d} - ${e}`,promptPrefix:k}}function H(a){var b;let c,d,e=a.issue.identifier.trim()||"TICKET-ID",f=a.issue.title.trim()||"Untitled ticket",g=String(a.issue.status??"").trim()||"Unknown",h=String(a.issue.assignee??"").trim()||"Unassigned",i=function(a){let b=String(a?.slug??"").trim();if(b)return F(b,"project");let c=String(a?.name??"").trim();return c?F(c,"project"):"project"}(a.project),j=String(a.project?.name??"").trim()||i,k=String(a.runtime?.knowledgeBaseRoot??"").trim()||`~/.agx/vault/${i}`,l=String(a.runtime?.issueKnowledgePath??"").trim()||`${k}/issues/${e}/`,m=String(a.runtime?.isolatedWorktreePath??"").trim()||`/tmp/agx-${F(e,"ticket")}`;return{issue:{identifier:e,title:f,status:g,assignee:h},project:{name:j,slug:i,label:(b=a.project,c=String(b?.name??"").trim(),d=String(b?.slug??"").trim(),c&&d?`${c} (${d})`:c||d||"current project"),repos:a.project?.repos?[...a.project.repos]:[]},runtime:{knowledgeBaseRoot:k,issueKnowledgePath:l,isolatedWorktreePath:m}}}var I=a.i(860614),J=a.i(596221);let K=[{id:"claude",label:"Claude Code",icon:"🟣"},{id:"codex",label:"Codex",icon:"⚫"},{id:"gemini",label:"Gemini CLI",icon:"🔵"}];function L({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),w=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")},x=async a=>{t(a),v(null);let b=await k(a);t(null),b.ok||v(b.error||"Failed to configure")},y=K.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&&w()},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:w,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)(I.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:[K.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:()=>x(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)(J.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:y?"Continue":"Skip for now"})]})]})})}let M=(0,f.default)(async()=>{},{loadableGenerated:{modules:[895214]},ssr:!1});function N({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 O(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 P(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 Q={"In Progress":"In Prog","In Review":"Review",Backlog:"Backlog",Todo:"Todo",Done:"Done",Cancelled:"Cancl."},R={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"},S={queued:"bg-amber-400",running:"bg-yellow-400",success:"bg-emerald-400",failed:"bg-red-400",cancelled:"bg-zinc-400"};function T({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 U({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=(()=>{if(0===n.length||n.length===e.length)return j??a;if(1===n.length)return n[0]?.label??j??a;let b=a.toLowerCase();return`${n.length} ${b}${b.endsWith("s")?"es":"s"}`})();(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 V({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:o}=(0,s.useGroupChat)(k.current),{processes:p,streaming:r}=(0,t.useProcessPolling)({workspaceId:k.current},{messages:l,setMessages:m}),v=new Set(["queued","running","awaiting_user","blocked"]),w=o.some(a=>v.has(a.status))||p.some(a=>"spawning"===a.state||"running"===a.state)?o.some(a=>"queued"===a.status)?"queued":"working":"ready",x=(0,c.useMemo)(()=>new Map(d.map(a=>[a.id,a])),[d]),y=(0,c.useRef)(!1),z=(0,c.useCallback)(async(b,c,k,l,m,n,o)=>{if(y.current)return;y.current=!0;let p=(m?d.find(a=>a.id===m):null)??j;if(p)try{let{promptPrefix:c}=G({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),y.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?x.get(a.participantId):null,d=(0,B.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)(q.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:O(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)(u.Markdown,{content:d,isUser:"user"===a.role})})]})]},a.id):null}),Object.entries(r).map(([a])=>{let c=x.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:O(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)(M,{onSend:z,onStop:()=>{},participants:d,projectSlug:f??void 0,loading:"ready"!==w,commands:[],activityStatus:w,placeholder:`Ask about ${a.identifier}...`,initialPinnedParticipantId:j?.id})})]})}function W({run:a,participants:d}){let{messages:e,setMessages:f,sendMessage:g,loadHistory:h,stop:j}=(0,s.useGroupChat)(a.threadId),{processes:k,streaming:l,chatRuns:m}=(0,t.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]),o=new Set(["queued","running","awaiting_user","blocked"]),p=m.some(a=>o.has(a.status))||k.some(a=>"spawning"===a.state||"running"===a.state)?m.some(a=>"queued"===a.status)?"queued":"working":"ready",r=(0,c.useCallback)((b,c,e,f,h,i,j)=>{a.rootMessageId&&g(b,c,void 0,a.rootMessageId,e,void 0,(0,E.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 ${R[a.status]}`,children:[(0,b.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${S[a.status]}`}),(0,b.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider",children:P(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:O(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,B.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)(q.User,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"})}):(0,b.jsx)("img",{src:O(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)(u.Markdown,{content:e,isUser:!0})}):(0,b.jsx)("div",{className:"text-sm text-[var(--foreground)]",children:(0,b.jsx)(u.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:O(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)(M,{onSend:r,onStop:j,participants:d,projectSlug:a.projectSlug??void 0,loading:"ready"!==p,commands:[],activityStatus:p,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 X({issue:a,selected:d,onSelect:e,onExecute:f}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);(0,c.useEffect)(()=>()=>{j.current&&window.clearTimeout(j.current)},[]);let k=(0,c.useCallback)(async b=>{if(b.stopPropagation(),a.url)try{await navigator.clipboard.writeText(a.url),i(!0),j.current&&window.clearTimeout(j.current),j.current=window.setTimeout(()=>{i(!1)},1500)}catch(a){console.error("Failed to copy Linear issue URL:",a),i(!1)}},[a.url]),n=Q[a.status]??a.status.slice(0,6);return(0,b.jsxs)("div",{className:`group relative flex cursor-pointer items-center gap-3 px-4 py-2.5 text-sm transition-colors ${d?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]/50"}`,onClick:e,role:"button",tabIndex:0,onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),e())},children:[d&&(0,b.jsx)("div",{className:"absolute left-0 top-0 bottom-0 w-[3px] rounded-r-full bg-blue-500"}),(0,b.jsx)("span",{className:"w-24 shrink-0 whitespace-nowrap font-mono text-xs text-[var(--muted-foreground)]",children:a.identifier}),(0,b.jsx)("span",{className:`min-w-0 flex-1 truncate text-xs ${d?"font-medium text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,children:a.title}),(0,b.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children: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=>{k(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)(l,{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)(m.Play,{size:10,className:"ml-0.5"})})]})}function Y({projectId:a,projectSlug:d,initialShowSettings:e}){let{connected:f,loading:g,user:h,clis:i,mcpConfigured:k,connect:l,connectWithKey:q,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}}(),[u,v]=(0,c.useState)(!1),[w,x]=(0,c.useState)(e??!1),[y,z]=(0,c.useState)(!1),[B,E]=(0,c.useState)(()=>(0,D.loadLinearTicketPanelWidth)()||576),[F,I]=(0,c.useState)(()=>(0,D.loadLinearRunsPanelWidth)()||224),[J,K]=(0,c.useState)(""),[M,Q]=(0,c.useState)(""),[R,S]=(0,c.useState)(!1),[Y,Z]=(0,c.useState)([]),[$,_]=(0,c.useState)([]),[aa,ab]=(0,c.useState)([]),[ac,ad]=(0,c.useState)([]),[ae,af]=(0,c.useState)([]),[ag,ah]=(0,c.useState)([]),[ai,aj]=(0,c.useState)(""),[ak,al]=(0,c.useState)(""),[am,an]=(0,c.useState)(null),[ao,ap]=(0,c.useState)(null),[aq,ar]=(0,c.useState)([]),[as,at]=(0,c.useState)(null),[au,av]=(0,c.useState)(null),aw=(0,c.useRef)(null),ax=(0,c.useRef)(!0),ay=(0,c.useRef)(null),az=(0,c.useRef)(null),aA=(0,c.useCallback)(a=>{K(a),aw.current&&clearTimeout(aw.current),aw.current=setTimeout(()=>Q(a),300)},[]);(0,c.useEffect)(()=>()=>{aw.current&&clearTimeout(aw.current)},[]),(0,c.useEffect)(()=>{let a={...C};ax.current=!0,K(a.search),Q(a.search),ad(a.assigneeIds),af(a.statuses),al(a.teamId),aj(a.cycleId)},[d]),(0,c.useEffect)(()=>{if(ax.current){ax.current=!1;return}},[d,J,ac,ae,ak,ai]),(0,c.useEffect)(()=>{if(!f)return;let a=!1;S(!1);let b=new URLSearchParams;return d&&b.set("projectSlug",d),fetch(b.size>0?`/api/linear/options?${b.toString()}`:"/api/linear/options").then(a=>a.json()).then(b=>{a||(Z(Array.isArray(b.assignees)?b.assignees:[]),_(Array.isArray(b.statuses)?b.statuses:[]),ab(Array.isArray(b.teams)?b.teams:[]),ah(Array.isArray(b.cycles)?b.cycles:[]),S(!0))}).catch(()=>{a||(Z([]),_([]),ab([]),ah([]),S(!0))}),()=>{a=!0}},[f,d]),(0,c.useEffect)(()=>{if(!R)return;let a=ac.filter(a=>Y.some(b=>b.id===a));a.length!==ac.length&&ad(a)},[Y,R,ac]),(0,c.useEffect)(()=>{if(!R)return;let a=ae.filter(a=>$.includes(a));a.length!==ae.length&&af(a)},[R,ae,$]),(0,c.useEffect)(()=>{if(R){if(aa.length<=1&&ak)return void al("");ak&&!aa.some(a=>a.id===ak)&&al("")}},[R,ak,aa]),(0,c.useEffect)(()=>{R&&ai&&!ag.some(a=>a.id===ai)&&aj("")},[ag,R,ai]);let{issues:aB,loading:aC,hasMore:aD,loadMore:aE,refresh:aF}=function(a,b=!0,d={}){let[e,f]=(0,c.useState)([]),[g,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(!1),m=(0,c.useRef)(i),n=(0,c.useRef)(!1);m.current=i,(0,c.useEffect)(()=>{n.current=!1},[d.projectSlug]);let o=(0,c.useCallback)(async(c,e=!1)=>{if(b){h(!0);try{let b=new URLSearchParams;if(a.teamId&&b.set("teamId",a.teamId),a.statuses?.length)for(let c of a.statuses)b.append("status",c);if(a.search&&b.set("search",a.search),a.assigneeIds?.length)for(let c of a.assigneeIds)b.append("assigneeId",c);else a.assignedToMe&&b.set("assignedToMe","true");a.cycleId&&b.set("cycleId",a.cycleId),c&&m.current&&b.set("cursor",m.current),d.projectSlug&&b.set("projectSlug",d.projectSlug),d.limit&&b.set("limit",String(d.limit)),e&&b.set("refresh","true");let g=await fetch(`/api/linear/issues?${b.toString()}`),h=await g.json(),i=h.issues??[];f(a=>c?[...a,...i]:i),j(h.pageInfo?.endCursor??null),l(h.pageInfo?.hasNextPage??!1),n.current=!0}catch{c||f([])}finally{h(!1)}}},[a.teamId,a.statuses,a.search,a.assigneeIds,a.assignedToMe,a.cycleId,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,statuses:ae.length>0&&ae.length<$.length?ae:void 0,assigneeIds:ac.length>0?ac:void 0,teamId:ak||void 0,cycleId:ai||void 0}),[M,ac,ai,ae,ak,$.length]),f,{projectSlug:d}),{runs:aG,loading:aH,createRun:aI,updateRun:aJ}=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},[])}}(am?.id,a??null),{scripts:aK,activeScriptId:aL,activeScript:aM,setActiveScriptId:aN,saveScript:aO,deleteScript:aP}=function(a){let[b,d]=(0,c.useState)([]),[e,f]=(0,c.useState)(null);(0,c.useEffect)(()=>{let a={...r};d(a.scripts),f(a.activeScriptId)},[a]);let g=(0,c.useCallback)((a,b)=>{d(a),f(b)},[a]),h=(0,c.useCallback)(a=>{let c=a&&b.some(b=>b.id===a)?a:null;g(b,c)},[g,b]),i=(0,c.useCallback)(a=>{let c=new Date().toISOString(),d=a.name.trim(),e=a.prompt.trim();if(!d||!e)throw Error("Run script name and prompt are required.");let f=a.id?b.find(b=>b.id===a.id):null,h=f?{...f,name:d,prompt:e,updatedAt:c}:{id:crypto.randomUUID(),name:d,prompt:e,createdAt:c,updatedAt:c};return g([...f?b.map(a=>a.id===f.id?h:a):[h,...b]].sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt)),h.id),h},[g,b]),j=(0,c.useCallback)(a=>{g(b.filter(b=>b.id!==a),e===a?null:e)},[e,g,b]),k=(0,c.useMemo)(()=>b.find(a=>a.id===e)??null,[e,b]);return{scripts:b,activeScriptId:e,activeScript:k,setActiveScriptId:h,saveScript:i,deleteScript:j}}(d),aQ=aG.find(a=>a.id===ao)??null,aR=(0,c.useMemo)(()=>Y.map(a=>({value:a.id,label:a.name})),[Y]),aS=(0,c.useMemo)(()=>$.map(a=>({value:a,label:a})),[$]),aT=(0,c.useMemo)(()=>[{value:"",label:"Workspace"},...aa.map(a=>({value:a.id,label:a.name}))],[aa]),aU=(0,c.useMemo)(()=>[{value:"",label:"Cycle"},...ag.map(a=>({value:a.id,label:a.name||`Cycle ${a.number}`}))],[ag]),aV=aS.length>0,aW=aU.length>1,aX=aT.length>2,aY=aM?.name??"AGX default";(0,c.useEffect)(()=>{0===aB.length?an(null):an(a=>a&&aB.some(b=>b.id===a.id)?aB.find(b=>b.id===a.id)??a:aB[0]??null)},[aB]),(0,c.useEffect)(()=>{0===aG.length?ap(null):ao&&aG.some(a=>a.id===ao)||ap(aG[0]?.id??null)},[aG,ao]),(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||ar(d);return}let e=await fetch(`/api/projects/${encodeURIComponent(a)}/agents`);if(!e.ok){b||ar(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||ar(i)}catch{b||ar([])}}(),()=>{b=!0}},[a]),(0,c.useEffect)(()=>{if(!y)return;let a=a=>{let b=a.target;az.current?.contains(b)||ay.current?.contains(b)||z(!1)},b=a=>{"Escape"===a.key&&z(!1)};return document.addEventListener("mousedown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("keydown",b)}},[y]);let aZ=(0,c.useCallback)((a,b)=>{if(z(!1),0===aq.length)return void window.alert("Add at least one agent to this project before running a Linear ticket.");if(1===aq.length)return void a$(a,aq[0]);let c=b?.currentTarget?.getBoundingClientRect();at(a),av(c?{top:c.bottom+4,left:c.left}:{top:200,left:200})},[aq]),a$=(0,c.useCallback)(async(b,c)=>{at(null),av(null);let e=null;try{var f;let g,h;an(b),e=await aI({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}),ap(e.id);let i={issue:{identifier:b.identifier,title:b.title,status:b.status,assignee:b.assignee},project:d?{slug:d}:null},{prompt:j,promptPrefix:k}=G(i),l=aM&&(f=aM.prompt,h={"ticket.identifier":(g=H(i)).issue.identifier,"ticket.title":g.issue.title,"ticket.status":g.issue.status,"ticket.assignee":g.issue.assignee,"project.name":g.project.name,"project.slug":g.project.slug,"project.label":g.project.label,"knowledge_base.root":g.runtime.knowledgeBaseRoot,"knowledge_base.issue_path":g.runtime.issueKnowledgePath,"worktree.path":g.runtime.isolatedWorktreePath},f.replace(/\{\{\s*([a-zA-Z0-9._-]+)\s*\}\}/g,(a,b)=>h[b]??"")).trim()||j,m=aM?`${k}ACTIVE RUN SCRIPT
38
+ - Name: ${aM.name}
39
+
40
+ `:k,n=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:l,promptPrefix:m,threadId:e.threadId,activeParticipantIds:[c.id],projectSlug:d??void 0})}),o=await n.json().catch(()=>({}));if(!n.ok||!o.chatRunId||!o.userMessageId)throw Error(o.error||"Failed to start Linear run");await aJ(e.id,{chatRunId:o.chatRunId,rootMessageId:o.userMessageId})}catch(a){console.error("Failed to execute Linear ticket:",a),e&&await aJ(e.id,{status:"failed",error:a instanceof Error?a.message:String(a)}),a instanceof Error&&window.alert(a.message)}},[aM,aI,a,d,aJ]),a_=(0,c.useRef)(null);if((0,c.useEffect)(()=>{let a=a_.current;if(!a||!aD)return;let b=new IntersectionObserver(a=>{a[0]?.isIntersecting&&aE()},{threshold:.1});return b.observe(a),()=>b.disconnect()},[aD,aE]),g)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:"Loading..."});let a0=f&&!u&&!Object.values(k).some(Boolean);return!f||a0?(0,b.jsx)(L,{connected:f,user:h,clis:i,mcpConfigured:k,onConnect:l,onConnectWithKey:q,onDisconnect:s,onConfigureMcp:t,onContinue:()=>v(!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:B},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)(o.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:J,onChange:a=>aA(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 aF(),title:"Refresh tickets","aria-label":"Refresh tickets",disabled:aC,children:(0,b.jsx)(n.RefreshCw,{size:16,className:aC?"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:()=>{z(!1),x(!0)},title:"Linear settings",children:(0,b.jsx)(p.Settings,{size:16})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 pb-2",children:[aV?(0,b.jsx)(U,{label:"Status",values:ae,options:aS,activeClasses:"border-amber-500/30 bg-amber-500/10 text-amber-300",onChange:af,emptyLabel:"All statuses"}):null,(0,b.jsx)(U,{label:"Assignee",values:ac,options:aR,activeClasses:"border-blue-500/30 bg-blue-500/10 text-blue-400",onChange:ad,emptyLabel:"All assignees"}),aX?(0,b.jsx)(T,{label:"Workspace",value:ak,options:aT,activeClasses:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",onChange:al}):null,aW?(0,b.jsx)(T,{label:"Cycle",value:ai,options:aU,activeClasses:"border-purple-500/30 bg-purple-500/10 text-purple-400",onChange:aj}):null]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:aC&&0===aB.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading tickets..."}):0===aB.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:[aB.map(a=>(0,b.jsx)(X,{issue:a,selected:am?.id===a.id,onSelect:()=>an(a),onExecute:aZ},a.id)),aD?(0,b.jsx)("div",{ref:a_,className:"py-2 text-center text-xs text-[var(--muted-foreground)]",children:aC?"Loading...":"Load more"}):null]})})]}),(0,b.jsx)(N,{onResize:a=>E(b=>{let c=Math.max(180,Math.min(600,b+a));return(0,D.persistLinearTicketPanelWidth)(c),c})}),(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:"relative flex items-center justify-between border-b border-[var(--card-border)] px-3 py-2",children:[(0,b.jsx)("h3",{className:"text-xs font-semibold text-[var(--foreground)]",children:"Runs"}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsxs)("button",{ref:ay,type:"button",className:`flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] font-medium transition-colors ${y?"bg-[var(--card-bg)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"}`,onClick:()=>z(a=>!a),title:`Run script: ${aY}`,children:[(0,b.jsx)(j.FileText,{size:10}),(0,b.jsx)("span",{className:"max-w-[88px] truncate",children:aY})]}),am&&(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(am,a),title:"Run agent on selected ticket",children:[(0,b.jsx)(m.Play,{size:10}),(0,b.jsx)("span",{children:"Run now"})]})]}),y?(0,b.jsx)("div",{ref:az,className:"absolute right-3 top-full z-20 mt-2 max-h-[80vh] overflow-y-auto rounded-2xl border border-[var(--card-border)] bg-[var(--background)] p-4 shadow-2xl",style:{width:"min(760px, calc(100vw - 32px))"},children:(0,b.jsx)(A,{projectSlug:d,scripts:aK,activeScriptId:aL,onSetActiveScriptId:aN,onSaveScript:aO,onDeleteScript:aP})}):null]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:am?aH&&0===aG.length?(0,b.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:"Loading runs..."}):0===aG.length?(0,b.jsxs)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:["No runs yet. Click ",(0,b.jsx)(m.Play,{size:10,className:"inline"})," to execute."]}):aG.map(a=>(0,b.jsxs)("button",{type:"button",className:`w-full px-3 py-2 text-left text-xs transition-colors ${aQ?.id===a.id?"bg-[var(--card-bg)]":"hover:bg-[var(--card-bg)]"}`,onClick:()=>ap(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:P(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)(N,{onResize:a=>I(b=>{let c=Math.max(140,Math.min(500,b+a));return(0,D.persistLinearRunsPanelWidth)(c),c})}),(0,b.jsx)("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:aQ?(0,b.jsx)(W,{run:aQ,participants:aq}):am&&aq.length>0?(0,b.jsx)(V,{issue:am,participants:aq,projectId:a,projectSlug:d,createRun:aI,updateRun:aJ,onRunCreated:a=>ap(a)},am.id):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:am?"Add at least one agent to this project to chat.":"Select a ticket from the list."})}),w&&(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:()=>x(!1),children:"×"}),(0,b.jsx)("div",{className:"max-h-[80vh] overflow-y-auto p-6",children:(0,b.jsx)(L,{connected:f,user:h,clis:i,mcpConfigured:k,onConnect:l,onConnectWithKey:q,onDisconnect:s,onConfigureMcp:t,onContinue:()=>x(!1)})})]})}),as&&au&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"fixed inset-0 z-40",onClick:()=>{at(null),av(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:au.top,left:au.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"}),aq.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 a$(as,a),children:[(0,b.jsx)("img",{src:O(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 Z({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)(Y,{projectId:i?.id,projectSlug:i?.slug??f,initialShowSettings:j})}a.s(["default",()=>Z],323860)}];
38
41
 
39
42
  //# sourceMappingURL=app_projects_%5Bslug%5D_linear_page_tsx_971a6ba7._.js.map