@mndrk/agx 2.0.47 → 2.0.48

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 (342) 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.nft.json +1 -1
  33. package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  34. package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/.next/server/app/api/automations/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/.next/server/app/api/file-search/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js +1 -1
  44. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js +1 -1
  46. package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  49. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js +2 -2
  50. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js +1 -1
  52. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js +1 -1
  54. package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/.next/server/app/api/schedules/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/.next/server/app/api/status/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  81. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
  84. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  86. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  90. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  92. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
  94. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
  96. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
  98. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  100. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  102. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  104. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  105. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
  106. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  107. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  108. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  109. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js.nft.json +1 -1
  110. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/.next/server/app/automations/page/react-loadable-manifest.json +1 -1
  112. package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
  113. package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  114. package/cloud-runtime/standalone/.next/server/app/automations.html +2 -2
  115. package/cloud-runtime/standalone/.next/server/app/automations.rsc +3 -3
  116. package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +3 -3
  117. package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  118. package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  119. package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
  120. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
  121. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  122. package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
  123. package/cloud-runtime/standalone/.next/server/app/board.html +2 -2
  124. package/cloud-runtime/standalone/.next/server/app/board.rsc +2 -2
  125. package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +2 -2
  126. package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +1 -1
  127. package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +2 -2
  128. package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  129. package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  130. package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +1 -1
  131. package/cloud-runtime/standalone/.next/server/app/execution-graph/page.js.nft.json +1 -1
  132. package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  133. package/cloud-runtime/standalone/.next/server/app/execution-graph.html +2 -2
  134. package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +3 -3
  135. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  136. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  137. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  138. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  139. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  140. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  141. package/cloud-runtime/standalone/.next/server/app/folders/page.js.nft.json +1 -1
  142. package/cloud-runtime/standalone/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  143. package/cloud-runtime/standalone/.next/server/app/folders.html +2 -2
  144. package/cloud-runtime/standalone/.next/server/app/folders.rsc +3 -3
  145. package/cloud-runtime/standalone/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  146. package/cloud-runtime/standalone/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  147. package/cloud-runtime/standalone/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  148. package/cloud-runtime/standalone/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  149. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  150. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  151. package/cloud-runtime/standalone/.next/server/app/index.html +2 -2
  152. package/cloud-runtime/standalone/.next/server/app/index.rsc +3 -3
  153. package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  154. package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  155. package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  156. package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  157. package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  158. package/cloud-runtime/standalone/.next/server/app/page.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  160. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
  161. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  162. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  163. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  164. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  165. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  166. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  167. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
  168. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  169. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  170. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  171. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  172. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  173. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  174. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  175. package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +2 -2
  176. package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +2 -2
  177. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  178. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  179. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  180. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  182. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  183. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  184. package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  185. package/cloud-runtime/standalone/.next/server/app/projects.html +2 -2
  186. package/cloud-runtime/standalone/.next/server/app/projects.rsc +2 -2
  187. package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  188. package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  189. package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  190. package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  193. package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  194. package/cloud-runtime/standalone/.next/server/app/settings.html +2 -2
  195. package/cloud-runtime/standalone/.next/server/app/settings.rsc +2 -2
  196. package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  197. package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  198. package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  199. package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  201. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  202. package/cloud-runtime/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  203. package/cloud-runtime/standalone/.next/server/app/skills.html +2 -2
  204. package/cloud-runtime/standalone/.next/server/app/skills.rsc +2 -2
  205. package/cloud-runtime/standalone/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  206. package/cloud-runtime/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  207. package/cloud-runtime/standalone/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  208. package/cloud-runtime/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  209. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  210. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  211. package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
  212. package/cloud-runtime/standalone/.next/server/app/status.html +2 -2
  213. package/cloud-runtime/standalone/.next/server/app/status.rsc +2 -2
  214. package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +2 -2
  215. package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +1 -1
  216. package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +2 -2
  217. package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  218. package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  219. package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +1 -1
  220. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  221. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  222. package/cloud-runtime/standalone/.next/server/app/welcome/page.js.nft.json +1 -1
  223. package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  224. package/cloud-runtime/standalone/.next/server/app/welcome.html +2 -2
  225. package/cloud-runtime/standalone/.next/server/app/welcome.rsc +3 -3
  226. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +3 -3
  227. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
  228. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +2 -2
  229. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
  230. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +2 -2
  231. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
  232. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__015d40a6._.js +67 -0
  233. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__067034dd._.js +67 -0
  234. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__20a2cb22._.js +8 -8
  235. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__37844df7._.js +67 -0
  236. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d9f2041b._.js → [root-of-the-server]__3a93931b._.js} +4 -4
  237. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__a3955224._.js +16 -16
  238. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c8890cd6._.js +12 -12
  239. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b2a2b86._.js +3 -0
  240. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__32546242._.js +3 -0
  241. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ff9ead4._.js +3 -0
  242. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f2c3b7ab._.js +1 -1
  243. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f59f0dc7._.js +3 -0
  244. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__d96bb3b5._.js → [root-of-the-server]__fbe1ab4a._.js} +2 -2
  245. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1e9b9b1e._.js +3 -0
  246. package/cloud-runtime/standalone/.next/server/chunks/ssr/_24fe6213._.js +3 -0
  247. package/cloud-runtime/standalone/.next/server/chunks/ssr/_36a0c486._.js +3 -0
  248. package/cloud-runtime/standalone/.next/server/chunks/ssr/_3b21d3b2._.js +95 -0
  249. package/cloud-runtime/standalone/.next/server/chunks/ssr/_3eeac8f9._.js +3 -0
  250. package/cloud-runtime/standalone/.next/server/chunks/ssr/_48db42b7._.js +3 -0
  251. package/cloud-runtime/standalone/.next/server/chunks/ssr/_59f30a73._.js +3 -0
  252. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7d3b0032._.js +3 -0
  253. package/cloud-runtime/standalone/.next/server/chunks/ssr/_916950b3._.js +3 -0
  254. package/cloud-runtime/standalone/.next/server/chunks/ssr/_b598ae8a._.js +3 -0
  255. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cc8c8302._.js +3 -0
  256. package/cloud-runtime/standalone/.next/server/chunks/ssr/_d972a4e1._.js +3 -0
  257. package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd7bb6fb._.js +3 -0
  258. package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd9880fb._.js +3 -0
  259. package/cloud-runtime/standalone/.next/server/chunks/ssr/_f02d786a._.js +3 -0
  260. package/cloud-runtime/standalone/.next/server/chunks/ssr/_fd8cafe9._.js +3 -0
  261. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_projects_[slug]_linear_page_tsx_971a6ba7._.js +15 -12
  262. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_chat-ui_bfeda794._.js +1 -1
  263. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_thread_WorkspaceSidebar_tsx_e660301b._.js +1 -1
  264. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_54bf563f._.js +3 -0
  265. package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
  266. package/cloud-runtime/standalone/.next/server/pages/404.html +2 -2
  267. package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
  268. package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
  269. package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
  270. package/cloud-runtime/standalone/.next/static/chunks/04c135686161dbb1.js +40 -0
  271. package/cloud-runtime/standalone/.next/static/chunks/0d63db0c39c0a3b2.js +1 -0
  272. package/cloud-runtime/standalone/.next/static/chunks/136ed07d84b14632.js +1 -0
  273. package/cloud-runtime/standalone/.next/static/chunks/18866ed04ed3a063.css +1 -0
  274. package/cloud-runtime/standalone/.next/static/chunks/{ccaf68956da192f8.js → 1bb38e61d891453c.js} +1 -1
  275. package/cloud-runtime/standalone/.next/static/chunks/2c7c8259c2b56bf5.js +1 -0
  276. package/cloud-runtime/standalone/.next/static/chunks/2da1f13d50dc4e54.js +1 -0
  277. package/cloud-runtime/standalone/.next/static/chunks/{fdadad2379039dce.js → 442eb8ef62bef9f9.js} +3 -3
  278. package/cloud-runtime/standalone/.next/static/chunks/{41c518743656a291.js → 5f33b52d582b0bb4.js} +1 -1
  279. package/cloud-runtime/standalone/.next/static/chunks/{97c11137cd6fc860.js → 64c2961edd3a3b13.js} +1 -1
  280. package/cloud-runtime/standalone/.next/static/chunks/{db131a0b6350e416.js → 692ce04abdbb3970.js} +1 -1
  281. package/cloud-runtime/standalone/.next/static/chunks/83be8569d298c6b0.js +1 -0
  282. package/cloud-runtime/standalone/.next/static/chunks/87b3afe828c8cc52.js +1 -0
  283. package/cloud-runtime/standalone/.next/static/chunks/{4343e7fe5bf5f34a.js → 9328740727c6456d.js} +1 -1
  284. package/cloud-runtime/standalone/.next/static/chunks/95d47e285ae9c031.js +1 -0
  285. package/cloud-runtime/standalone/.next/static/chunks/b9bf5d3ee92a1313.js +1 -0
  286. package/cloud-runtime/standalone/.next/static/chunks/ea35fb870141bcff.js +1 -0
  287. package/cloud-runtime/standalone/.next/static/chunks/f59722264449b61c.js +1 -0
  288. package/cloud-runtime/standalone/.next/static/chunks/f727d2c8f039511d.js +1 -0
  289. package/cloud-runtime/standalone/.next/static/chunks/{31fe4e36a00fd7b5.js → f8706212baa8ec67.js} +1 -1
  290. package/cloud-runtime/standalone/.next/static/chunks/fd823c9d1381335d.js +1 -0
  291. package/cloud-runtime/standalone/app/automations/page.tsx +11 -1
  292. package/cloud-runtime/standalone/app/projects/[slug]/layout.tsx +11 -1
  293. package/cloud-runtime/standalone/components/LinearBoard.tsx +118 -21
  294. package/cloud-runtime/standalone/components/chat-ui/ChatContainer.tsx +10 -0
  295. package/cloud-runtime/standalone/components/linear/RunScriptManager.tsx +356 -0
  296. package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +35 -0
  297. package/cloud-runtime/standalone/hooks/useLinearRunScripts.ts +115 -0
  298. package/cloud-runtime/standalone/lib/linear-client.ts +33 -3
  299. package/cloud-runtime/standalone/lib/linear-execution-prompt.ts +92 -15
  300. package/cloud-runtime/standalone/state/automations/.state/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.json +8 -0
  301. package/cloud-runtime/standalone/state/automations/active/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.md +15 -0
  302. package/cloud-runtime/standalone/state/linearRunScripts.test.ts +99 -0
  303. package/cloud-runtime/standalone/state/linearRunScripts.ts +132 -0
  304. package/cloud-runtime/standalone/state/windowState.ts +21 -0
  305. package/cloud-runtime/standalone/tsconfig.tsbuildinfo +1 -1
  306. package/package.json +1 -1
  307. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__1154e5b3._.js +0 -67
  308. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__76290829._.js +0 -67
  309. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ad6d6402._.js +0 -67
  310. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__21a9eaef._.js +0 -3
  311. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__69887882._.js +0 -3
  312. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__9ad05ace._.js +0 -3
  313. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__bb149a22._.js +0 -3
  314. package/cloud-runtime/standalone/.next/server/chunks/ssr/_11ce4c04._.js +0 -95
  315. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1d949e96._.js +0 -3
  316. package/cloud-runtime/standalone/.next/server/chunks/ssr/_32a156b6._.js +0 -3
  317. package/cloud-runtime/standalone/.next/server/chunks/ssr/_43c091dc._.js +0 -3
  318. package/cloud-runtime/standalone/.next/server/chunks/ssr/_45175f47._.js +0 -3
  319. package/cloud-runtime/standalone/.next/server/chunks/ssr/_4f0c544d._.js +0 -3
  320. package/cloud-runtime/standalone/.next/server/chunks/ssr/_69164b06._.js +0 -95
  321. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7f7a828a._.js +0 -3
  322. package/cloud-runtime/standalone/.next/server/chunks/ssr/_97f6a18e._.js +0 -3
  323. package/cloud-runtime/standalone/.next/server/chunks/ssr/_a511a014._.js +0 -3
  324. package/cloud-runtime/standalone/.next/server/chunks/ssr/_c3a3a829._.js +0 -3
  325. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cee3cf86._.js +0 -95
  326. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_e8bdedc5._.js +0 -3
  327. package/cloud-runtime/standalone/.next/static/chunks/14fff3c493ea9c54.js +0 -1
  328. package/cloud-runtime/standalone/.next/static/chunks/2a9c83f8211196e0.js +0 -1
  329. package/cloud-runtime/standalone/.next/static/chunks/5405540470146645.js +0 -1
  330. package/cloud-runtime/standalone/.next/static/chunks/69f2db4b9996b9c1.js +0 -37
  331. package/cloud-runtime/standalone/.next/static/chunks/8aeb69ceb497ad85.css +0 -1
  332. package/cloud-runtime/standalone/.next/static/chunks/a9da98f883ac833b.js +0 -1
  333. package/cloud-runtime/standalone/.next/static/chunks/b2127dc67c5ade9f.js +0 -1
  334. package/cloud-runtime/standalone/.next/static/chunks/baf5d39d089efb87.js +0 -1
  335. package/cloud-runtime/standalone/.next/static/chunks/bf2a2fafb710e63c.js +0 -1
  336. package/cloud-runtime/standalone/.next/static/chunks/c78969fde5798275.js +0 -1
  337. package/cloud-runtime/standalone/.next/static/chunks/d3dc6fadb96ab3a2.js +0 -1
  338. package/cloud-runtime/standalone/state/automations/.state/24a6a5db-3b14-49c4-841f-29f10f015fbb.json +0 -8
  339. package/cloud-runtime/standalone/state/automations/active/24a6a5db-3b14-49c4-841f-29f10f015fbb.md +0 -17
  340. /package/cloud-runtime/standalone/.next/static/{lOB5InbmVcurTLQo9J3KK → gty0FO80D_lbq3o9lSpQQ}/_buildManifest.js +0 -0
  341. /package/cloud-runtime/standalone/.next/static/{lOB5InbmVcurTLQo9J3KK → gty0FO80D_lbq3o9lSpQQ}/_clientMiddlewareManifest.json +0 -0
  342. /package/cloud-runtime/standalone/.next/static/{lOB5InbmVcurTLQo9J3KK → gty0FO80D_lbq3o9lSpQQ}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16715,e=>{"use strict";let t=(0,e.i(475254).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",()=>t],16715)},503116,e=>{"use strict";let t=(0,e.i(475254).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);e.s(["Clock",()=>t],503116)},829415,e=>{"use strict";function t(e){return e.replace(/\[reaction\s+[^\]]*\]/gi,"").replace(/\[agx:[^\]]*\]/g,"").replace(/\[checkpoint\]/g,"").replace(/\[criteria:\s*[^\]]*\]/g,"").replace(/\[done\]/g,"").replace(/\[blocked[^\]]*\]/g,"").replace(/^\[SKIP\]$/gm,"").trim()}e.s(["stripMarkers",()=>t])},39312,e=>{"use strict";let t=(0,e.i(475254).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);e.s(["Zap",()=>t],39312)},788699,e=>{"use strict";let t=(0,e.i(475254).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",()=>t],788699)},283086,e=>{"use strict";let t=(0,e.i(475254).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);e.s(["Sparkles",()=>t],283086)},430520,e=>{"use strict";var t=e.i(271645);function r(e){return`threadId=${encodeURIComponent(e)}`}function a(e){return`workspaceId=${encodeURIComponent(e)}`}function n(e){let[n,s]=(0,t.useState)([]),[i,o]=(0,t.useState)([]),[l,c]=(0,t.useState)([]),d=(0,t.useRef)(e),u=(0,t.useRef)(e);d.current=e,u.current!==e&&(u.current=e,s([]),o([]),c([]));let f=(0,t.useCallback)(async e=>{let t=e?.trim()||d.current?.trim();if(!t){s([]),o([]);return}let n=r(t);try{let[e,r]=await Promise.all([fetch(`/api/history?${n}`),fetch(`/api/logs?${a(t)}`)]);if(d.current!==t)return;e.ok&&s(await e.json()),r.ok&&o(await r.json())}catch{}},[]),h=(0,t.useCallback)(async e=>{let t=e?.trim()||d.current?.trim();if(!t){s([]),o([]);return}let n=r(t);await Promise.all([fetch(`/api/history?${n}`,{method:"DELETE"}),fetch(`/api/logs?${a(t)}`,{method:"DELETE"})]),d.current===t&&(s([]),o([]))},[]),p=(0,t.useCallback)(async(e,t=10,r,a,n,i,o,l,u,f)=>{let h=r?.trim()||d.current?.trim();if(!h)return;let p=Date.now(),m=crypto.randomUUID(),y={id:m,role:"user",participantId:null,content:e,timestamp:p,rootMessageId:a||null,parentMessageId:a||null,depth:+!!a,...i&&i.length>0?{attachments:i}:{}};s(e=>[...e,y]);try{let r=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:h,prompt:e,promptPrefix:u||void 0,maxRounds:t,userMessageId:m,rootMessageId:a||void 0,attachmentIds:n?.length?n:void 0,activeParticipantIds:Array.isArray(o)?o:void 0,projectSlug:l?.trim()||void 0,routing:f})}),s=await r.json().catch(()=>null);r.ok&&s?.chatRunId&&c(e=>[{chatRunId:s.chatRunId,threadId:h,rootMessageId:a||m,status:"queued",optimistic:!0,enqueuedAt:Date.now()},...e.filter(e=>e.chatRunId!==s.chatRunId)])}catch{}return m},[]),m=(0,t.useCallback)(async()=>{let e=d.current?.trim();if(e)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(e)}`,{method:"DELETE"})}catch{}},[]),y=(0,t.useCallback)(async e=>{let t=d.current?.trim();if(t)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(t)}&threadId=${encodeURIComponent(e)}`,{method:"DELETE"})}catch{}},[]);return{messages:n,setMessages:s,logs:i,sendMessage:p,loadHistory:f,clearHistory:h,clearLogs:(0,t.useCallback)(async e=>{let t=e?.trim()||d.current?.trim();t?(await fetch(`/api/logs?${a(t)}`,{method:"DELETE"}).catch(()=>{}),d.current===t&&o([])):o([])},[]),chatRuns:l,setChatRuns:c,stop:m,stopThread:y}}e.s(["useGroupChat",()=>n])},286476,e=>{"use strict";function t(e){if("string"==typeof e)return e.trim()||void 0}function r(e,r){let a=new Set,n=new Set;!function e(t,r){if(t)for(let a of t)r(a),e(a.content,r)}(e.content,e=>{if("participantMention"!==e.type)return;let t=e.attrs??{},r="string"==typeof t.id?t.id.trim():"",s="string"==typeof t.kind?t.kind:"agent";r&&"agent"===s&&(a.add(r),"parallel"===t.mode&&n.add(r))});let s=t(r);return{...s?{pinnedParticipantId:s}:{},mentionedParticipantIds:Array.from(a),parallelParticipantIds:Array.from(n)}}function a(e,r){let a=function(e){if(!Array.isArray(e))return[];let t=new Set,r=[];for(let a of e){if("string"!=typeof a)continue;let e=a.trim();!e||t.has(e)||(t.add(e),r.push(e))}return r}(e),n=t(r);return n&&a.includes(n)?[n,...a.filter(e=>e!==n)]:a}e.s(["extractComposerRouting",()=>r,"orderParticipantIds",()=>a])},650030,e=>{"use strict";var t=e.i(271645);let r=new Set(["spawning","running"]);function a(e,a){let n=a?.intervalMs??1500,s=a?.idleIntervalMs??1e4,[i,o]=(0,t.useState)(new Set),[l,c]=(0,t.useState)([]),[d,u]=(0,t.useState)({}),[f,h]=(0,t.useState)([]),p=(0,t.useRef)(e);p.current=e;let m=(0,t.useRef)(a?.messages??[]);m.current=a?.messages??[];let y=(0,t.useRef)(a?.setMessages);y.current=a?.setMessages;let g=(0,t.useRef)(0);(0,t.useEffect)(()=>{let e=a?.messages??[];if(e.length>0){let t=Math.max(...e.map(e=>e.timestamp));t>g.current&&(g.current=t)}},[a?.messages]);let v=(0,t.useCallback)(async()=>{let e=p.current;if(!e){o(new Set),c([]),u({}),h([]);return}let t=null;if(e.threadId?t=`/api/processes?threadId=${encodeURIComponent(e.threadId)}`:e.workspaceId&&(t=`/api/processes?workspaceId=${encodeURIComponent(e.workspaceId)}`),!t){o(new Set),c([]),u({}),h([]);return}try{let n=e.workspaceId||e.threadId,s=n?`/api/history?threadId=${encodeURIComponent(n)}&since=${g.current}`:null,i=n?`/api/chat-runs?threadId=${encodeURIComponent(n)}&limit=20`:null,l=[fetch(t)];s&&l.push(fetch(s)),i&&l.push(fetch(i));let[d,f,v]=await Promise.all(l),x=p.current;if(x?.threadId!==e.threadId||x?.workspaceId!==e.workspaceId)return;if(d.ok){let e=await d.json();c(e);let t=new Set(e.filter(e=>r.has(e.state)).map(e=>e.agentId));o(t);let a={};for(let t of e){if(!r.has(t.state))continue;let e=m.current.find(e=>e.id===t.sinceMessageId),n=e?.rootMessageId??t.sinceMessageId;a[t.agentId]={content:"",rootMessageId:n}}u(a)}if(v?.ok){var a;let e=(a=await v.json(),Array.isArray(a)?a.map(e=>{if(!e||"object"!=typeof e)return null;let t="string"==typeof e.chatRunId?e.chatRunId:"string"==typeof e.id?e.id:null,r="string"==typeof e.threadId?e.threadId:null,a="string"==typeof e.status?e.status:null,n="string"==typeof e.rootMessageId?e.rootMessageId:(e.rootMessageId,null);return t&&r&&a&&("queued"===a||"running"===a||"awaiting_user"===a||"blocked"===a||"completed"===a||"failed"===a||"cancelled"===a)?{chatRunId:t,threadId:r,rootMessageId:n,status:a,optimistic:!1}:null}).filter(e=>!!e):[]);h(e)}if(f?.ok&&y.current){let e=await f.json();if(e.length>0){let t=Math.max(...e.map(e=>e.timestamp));t>g.current&&(g.current=t),y.current(t=>{let r=new Set(t.map(e=>e.id)),a=e.filter(e=>!r.has(e.id)),n=t.map(t=>e.find(e=>e.id===t.id)??t);return 0===a.length?n:[...n,...a].sort((e,t)=>e.timestamp-t.timestamp)})}}}catch{}},[]),x=e?.threadId||e?.workspaceId||null,b=f.some(e=>"queued"===e.status||"running"===e.status),j=l.some(e=>r.has(e.state)),k=b||j?n:s;return(0,t.useEffect)(()=>{if(!x){o(new Set),c([]),u({}),h([]);return}v();let e=setInterval(v,k);return()=>clearInterval(e)},[x,k,v]),{activeAgents:i,processes:l,streaming:d,chatRuns:f,poll:v}}e.s(["useProcessPolling",()=>a])},686311,e=>{"use strict";let t=(0,e.i(475254).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);e.s(["MessageSquare",()=>t],686311)},178583,e=>{"use strict";let t=(0,e.i(475254).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>t],178583)},531278,717521,e=>{"use strict";let t=(0,e.i(475254).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["default",()=>t],717521),e.s(["Loader2",()=>t],531278)},2651,e=>{"use strict";let t={threadSidebarVisible:!1,workspaceRoots:[],homeSearchConsent:!1,hasCompletedFirstRun:!1,fileIgnorePatterns:[]};function r(e){return e&&"object"==typeof e?{threadSidebarVisible:"boolean"==typeof e.threadSidebarVisible?e.threadSidebarVisible:t.threadSidebarVisible,workspaceRoots:Array.isArray(e.workspaceRoots)?e.workspaceRoots.filter(e=>"string"==typeof e):t.workspaceRoots,homeSearchConsent:"boolean"==typeof e.homeSearchConsent?e.homeSearchConsent:t.homeSearchConsent,hasCompletedFirstRun:"boolean"==typeof e.hasCompletedFirstRun?e.hasCompletedFirstRun:t.hasCompletedFirstRun,fileIgnorePatterns:Array.isArray(e.fileIgnorePatterns)?e.fileIgnorePatterns.filter(e=>"string"==typeof e):t.fileIgnorePatterns}:t}let a="/api/userPreferences";function n(e){return e.json().then(e=>e&&"object"==typeof e?r(e.preferences??e):r(e)).catch(()=>r(null))}function s(e){return e.statusText||`Failed to reach ${a} (${e.status})`}async function i(){let e=await fetch(a,{cache:"no-store"});if(!e.ok)throw Error(s(e));return n(e)}async function o(e){let t=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},cache:"no-store",body:JSON.stringify({preferences:e})});if(!t.ok)throw Error(s(t));return n(t)}e.s(["fetchUserPreferences",()=>i,"updateUserPreferences",()=>o],2651)},355733,e=>{"use strict";var t=e.i(843476),r=e.i(437902),a=e.i(271645);function n({isOpen:e,title:n,message:s,preview:i,confirmLabel:o="Confirm",cancelLabel:l="Cancel",variant:c="default",onConfirm:d,onCancel:u}){let f=(0,a.useRef)(null),h=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(e){let e=setTimeout(()=>f.current?.focus(),50);return()=>clearTimeout(e)}},[e]);let p=(0,a.useCallback)(e=>{"Escape"===e.key&&u()},[u]);if(!e)return null;let m="danger"===c;return(0,t.jsxs)("div",{style:{animation:"confirm-overlay-in 200ms ease-out"},onClick:e=>e.target===e.currentTarget&&u(),onKeyDown:p,className:"jsx-1da17079bc733bcf fixed inset-0 z-[100] flex items-center justify-center bg-black/50 backdrop-blur-md",children:[(0,t.jsxs)("div",{ref:h,style:{animation:"confirm-dialog-in 250ms cubic-bezier(0.34, 1.56, 0.64, 1)"},className:"jsx-1da17079bc733bcf w-full max-w-md mx-4 bg-[var(--card-bg)] rounded-2xl border border-[var(--card-border)] shadow-2xl overflow-hidden",children:[(0,t.jsx)("div",{className:"jsx-1da17079bc733bcf px-6 pt-6 pb-3",children:(0,t.jsxs)("div",{className:"jsx-1da17079bc733bcf flex items-start gap-4",children:[m&&(0,t.jsx)("div",{className:"jsx-1da17079bc733bcf flex-shrink-0 w-11 h-11 rounded-full bg-red-500/10 border border-red-500/20 flex items-center justify-center",children:(0,t.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,className:"jsx-1da17079bc733bcf w-5 h-5 text-red-500",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0",className:"jsx-1da17079bc733bcf"})})}),(0,t.jsxs)("div",{className:"jsx-1da17079bc733bcf flex-1 min-w-0",children:[(0,t.jsx)("h3",{className:"jsx-1da17079bc733bcf text-[15px] font-semibold text-[var(--foreground)]",children:n}),(0,t.jsx)("p",{className:"jsx-1da17079bc733bcf mt-1 text-[13px] text-[var(--muted-foreground)] leading-relaxed",children:s})]})]})}),i&&(0,t.jsx)("div",{className:"jsx-1da17079bc733bcf mx-6 mb-3 px-3 py-2.5 rounded-lg bg-[var(--muted)]/40 border border-[var(--card-border)]",children:(0,t.jsxs)("p",{className:"jsx-1da17079bc733bcf text-[12px] text-[var(--muted-foreground)] line-clamp-3 leading-relaxed italic",children:["“",i,"”"]})}),(0,t.jsx)("div",{className:"jsx-1da17079bc733bcf mx-6 border-t border-[var(--card-border)]"}),(0,t.jsxs)("div",{className:"jsx-1da17079bc733bcf px-6 py-4 flex items-center justify-end gap-2.5",children:[(0,t.jsx)("button",{onClick:u,className:"jsx-1da17079bc733bcf px-4 py-2 rounded-lg text-[13px] font-medium text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--muted)]/60 transition-all duration-150",children:l}),(0,t.jsx)("button",{ref:f,onClick:d,className:`jsx-1da17079bc733bcf px-4 py-2 rounded-lg text-[13px] font-medium transition-all duration-150 ${m?"bg-red-500 text-white hover:bg-red-600 active:scale-[0.97]":"btn-primary active:scale-[0.97]"}`,children:o})]})]}),(0,t.jsx)(r.default,{id:"1da17079bc733bcf",children:"@keyframes confirm-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes confirm-dialog-in{0%{opacity:0;transform:scale(.9)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}"})]})}e.s(["default",()=>n])},399438,e=>{"use strict";let t="agx-chat:threads";function r(){let e=globalThis.localStorage;if(!e)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return e}function a(){let e=r().getItem(t);if(!e)return{threads:{}};try{let t=JSON.parse(e);if(t&&"object"==typeof t&&t.threads&&"object"==typeof t.threads)return{threads:Object.fromEntries(Object.entries(t.threads).map(([e,t])=>{var r,a;return[e,(r=e,a=t,{id:r,title:a?.title,messages:Array.isArray(a?.messages)?[...a.messages]:[],createdAt:"number"==typeof a?.createdAt?a.createdAt:Date.now(),updatedAt:"number"==typeof a?.updatedAt?a.updatedAt:Date.now(),metadata:a?.metadata,status:a?.status,outcomeNote:a?.outcomeNote,projectId:"string"==typeof a?.projectId?a.projectId:"string"==typeof a?.teamId?a.teamId:a?.projectId===null||a?.teamId===null?null:void 0})]}))}}catch{}return{threads:{}}}function n(e){r().setItem(t,JSON.stringify(e))}function s(e){return{...e,messages:e.messages.map(e=>({...e})),metadata:e.metadata?{...e.metadata}:void 0}}let i=new class{async saveThread(e){let t=Date.now(),r=a(),i=r.threads[e.id],o=i?.createdAt??e.createdAt??t,l=e.updatedAt??t,c={id:e.id,title:e.title,messages:e.messages.map(e=>({...e})),metadata:e.metadata,createdAt:o,updatedAt:l,status:e.status,outcomeNote:e.outcomeNote,projectId:e.projectId??e.teamId};return r.threads[e.id]=c,n(r),s(c)}async loadThread(e){let t=a().threads[e];return t?s(t):null}async listThreads(e){let t=Object.values(a().threads),r=e?.order??"desc",n=[...t].sort((e,t)=>"asc"===r?e.updatedAt-t.updatedAt:t.updatedAt-e.updatedAt),i=Math.max(0,e?.offset??0),o=e?.limit,l="number"==typeof o&&o>=0?n.slice(i,i+o):n.slice(i);return{total:t.length,threads:l.map(s)}}async deleteThread(e){let t=a();t.threads[e]&&(delete t.threads[e],n(t))}};e.s(["threadService",0,{listThreads:async()=>[...(await i.listThreads({order:"desc"})).threads.filter(e=>!0!==e.metadata?.archived)].sort((e,t)=>t.updatedAt-e.updatedAt),async createThread(e){let t="string"==typeof e?.id?e.id.trim():"";if(t){let r=await i.loadThread(t);if(r){let t={...r.metadata??{},...e?.metadata??{},archived:!1,archivedAt:null};return i.saveThread({id:r.id,title:e?.title??r.title,messages:e?.messages?.length?e.messages:r.messages,metadata:t,createdAt:r.createdAt})}}let r={id:t||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:e?.messages?.length?e.messages:[],title:e?.title,metadata:e?.metadata};return i.saveThread(r)},async deleteThread(e){let t=e.trim();if(!t)return;let r=await i.loadThread(t);if(!r)return;let a={...r.metadata??{},archived:!0,archivedAt:Date.now()};await i.saveThread({id:r.id,title:r.title,messages:r.messages,metadata:a,createdAt:r.createdAt})},async renameThread(e,t){let r=e.trim(),a=t.trim();if(!r||!a)return null;let n=await i.loadThread(r);return n?(n.title?.trim()??"")===a?n:i.saveThread({id:n.id,title:a,messages:n.messages,metadata:n.metadata,createdAt:n.createdAt}):null},async updateThreadStatus(e,t){let r=await i.loadThread(e);return r?r.status===t?r:i.saveThread({id:r.id,title:r.title,messages:r.messages,metadata:r.metadata,createdAt:r.createdAt,status:t,outcomeNote:r.outcomeNote}):null},async updateThreadOutcomeNote(e,t){let r=await i.loadThread(e);return r?r.outcomeNote===t?r:i.saveThread({id:r.id,title:r.title,messages:r.messages,metadata:r.metadata,createdAt:r.createdAt,status:r.status,outcomeNote:t}):null},async updateMessageThreadStatus(e,t,r){let a=await i.loadThread(e);if(!a)return null;let n=a.messages.map(e=>e.id===t?{...e,threadStatus:r}:e);return i.saveThread({id:a.id,title:a.title,messages:n,metadata:a.metadata,createdAt:a.createdAt,status:a.status,outcomeNote:a.outcomeNote})},async updateMessageOutcomeNote(e,t,r){let a=await i.loadThread(e);if(!a)return null;let n=a.messages.map(e=>e.id===t?{...e,outcomeNote:r}:e);return i.saveThread({id:a.id,title:a.title,messages:n,metadata:a.metadata,createdAt:a.createdAt,status:a.status,outcomeNote:a.outcomeNote})},async saveThreadMessages(e,t){let r=await i.loadThread(e);if(!r)return null;let a=r.title?.trim()||function(e){let t=e.find(e=>"user"===e.role)?.content?.trim();if(!t)return;let r=t.replace(/\s+/g," ");return r.length>60?`${r.slice(0,60).trim()}…`:r}(t);return function(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1){let a=e[r],n=t[r];if(a.id!==n.id||a.role!==n.role||a.participantId!==n.participantId||a.content!==n.content||a.timestamp!==n.timestamp)return!1}return!0}(r.messages,t)&&(r.title?.trim()||void 0)===a?r:i.saveThread({id:r.id,title:a,messages:t,metadata:r.metadata,createdAt:r.createdAt})}}],399438)},440160,e=>{"use strict";let t=(0,e.i(475254).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);e.s(["Download",()=>t],440160)},643531,e=>{"use strict";let t=(0,e.i(475254).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",()=>t],643531)},284614,e=>{"use strict";let t=(0,e.i(475254).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",()=>t],284614)},75505,e=>{"use strict";let t=(0,e.i(475254).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"}]]);e.s(["FolderOpen",()=>t],75505)},755838,(e,t,r)=>{"use strict";var a=e.r(271645),n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},s=a.useState,i=a.useEffect,o=a.useLayoutEffect,l=a.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!n(e,r)}catch(e){return!0}}var d="u"<typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),a=s({inst:{value:r,getSnapshot:t}}),n=a[0].inst,d=a[1];return o(function(){n.value=r,n.getSnapshot=t,c(n)&&d({inst:n})},[e,r,t]),i(function(){return c(n)&&d({inst:n}),e(function(){c(n)&&d({inst:n})})},[e]),l(r),r};r.useSyncExternalStore=void 0!==a.useSyncExternalStore?a.useSyncExternalStore:d},802239,(e,t,r)=>{"use strict";t.exports=e.r(755838)},752822,(e,t,r)=>{"use strict";var a=e.r(271645),n=e.r(802239),s="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},i=n.useSyncExternalStore,o=a.useRef,l=a.useEffect,c=a.useMemo,d=a.useDebugValue;r.useSyncExternalStoreWithSelector=function(e,t,r,a,n){var u=o(null);if(null===u.current){var f={hasValue:!1,value:null};u.current=f}else f=u.current;var h=i(e,(u=c(function(){function e(e){if(!l){if(l=!0,i=e,e=a(e),void 0!==n&&f.hasValue){var t=f.value;if(n(t,e))return o=t}return o=e}if(t=o,s(i,e))return t;var r=a(e);return void 0!==n&&n(t,r)?(i=e,t):(i=e,o=r)}var i,o,l=!1,c=void 0===r?null:r;return[function(){return e(t())},null===c?void 0:function(){return e(c())}]},[t,r,a,n]))[0],u[1]);return l(function(){f.hasValue=!0,f.value=h},[h]),d(h),h}},430224,(e,t,r)=>{"use strict";t.exports=e.r(752822)},475254,e=>{"use strict";var t=e.i(271645);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),a=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let s=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:s=2,absoluteStrokeWidth:i,className:o="",children:l,iconNode:c,...d},u)=>(0,t.createElement)("svg",{ref:u,...n,width:a,height:a,stroke:e,strokeWidth:i?24*Number(s)/Number(a):s,className:r("lucide",o),...!l&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(d)&&{"aria-hidden":"true"},...d},[...c.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(l)?l:[l]])),i=(e,n)=>{let i=(0,t.forwardRef)(({className:i,...o},l)=>(0,t.createElement)(s,{ref:l,iconNode:n,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,i),...o}));return i.displayName=a(e),i};e.s(["default",()=>i],475254)},37727,e=>{"use strict";let t=(0,e.i(475254).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",()=>t],37727)},664659,e=>{"use strict";let t=(0,e.i(475254).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",()=>t],664659)},463059,e=>{"use strict";let t=(0,e.i(475254).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>t],463059)},88081,e=>{"use strict";let t=(0,e.i(475254).default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);e.s(["Hash",()=>t],88081)},761911,e=>{"use strict";let t=(0,e.i(475254).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);e.s(["Users",()=>t],761911)},233525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},998183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={assign:function(){return l},searchParamsToUrlQuery:function(){return s},urlQueryToSearchParams:function(){return o}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});function s(e){let t={};for(let[r,a]of e.entries()){let e=t[r];void 0===e?t[r]=a:Array.isArray(e)?e.push(a):t[r]=[e,a]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,a]of Object.entries(e))if(Array.isArray(a))for(let e of a)t.append(r,i(e));else t.set(r,i(a));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,a]of r.entries())e.append(t,a)}return e}},195057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return o},formatWithValidation:function(){return c},urlObjectKeys:function(){return l}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let s=e.r(190809)._(e.r(998183)),i=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,a=e.protocol||"",n=e.pathname||"",o=e.hash||"",l=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),l&&"object"==typeof l&&(l=String(s.urlQueryToSearchParams(l)));let d=e.search||l&&`?${l}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||i.test(a))&&!1!==c?(c="//"+(c||""),n&&"/"!==n[0]&&(n="/"+n)):c||(c=""),o&&"#"!==o[0]&&(o="#"+o),d&&"?"!==d[0]&&(d="?"+d),n=n.replace(/[?#]/g,encodeURIComponent),d=d.replace("#","%23"),`${a}${c}${n}${d}${o}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return o(e)}},818581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let a=e.r(271645);function n(e,t){let r=(0,a.useRef)(null),n=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=s(e,a)),t&&(n.current=s(t,a))},[e,t])}function s(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},718967,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={DecodeError:function(){return g},MiddlewareNotFoundError:function(){return j},MissingStaticPage:function(){return b},NormalizeError:function(){return v},PageNotFoundError:function(){return x},SP:function(){return m},ST:function(){return y},WEB_VITALS:function(){return s},execOnce:function(){return i},getDisplayName:function(){return u},getLocationOrigin:function(){return c},getURL:function(){return d},isAbsoluteUrl:function(){return l},isResSent:function(){return f},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return h},stringifyError:function(){return k}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let s=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...a)=>(r||(r=!0,t=e(...a)),t)}let o=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>o.test(e);function c(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function d(){let{href:e}=window.location,t=c();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function h(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function p(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let a=await e.getInitialProps(t);if(r&&f(r))return a;if(!a)throw Object.defineProperty(Error(`"${u(e)}.getInitialProps()" should resolve to an object. But found "${a}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return a}let m="u">typeof performance,y=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class v extends Error{}class x extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class b extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class j extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function k(e){return JSON.stringify({message:e.message,stack:e.stack})}},573668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return s}});let a=e.r(718967),n=e.r(652817);function s(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,n.hasBasePath)(r.pathname)}catch(e){return!1}}},284508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},522016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return g},useLinkStatus:function(){return x}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let s=e.r(190809),i=e.r(843476),o=s._(e.r(271645)),l=e.r(195057),c=e.r(8372),d=e.r(818581),u=e.r(718967),f=e.r(405550);e.r(233525);let h=e.r(91949),p=e.r(573668),m=e.r(509396);function y(e){return"string"==typeof e?e:(0,l.formatUrl)(e)}function g(t){var r;let a,n,s,[l,g]=(0,o.useOptimistic)(h.IDLE_LINK_STATUS),x=(0,o.useRef)(null),{href:b,as:j,children:k,prefetch:w=null,passHref:S,replace:C,shallow:N,scroll:I,onClick:A,onMouseEnter:T,onTouchStart:P,legacyBehavior:E=!1,onNavigate:M,ref:R,unstable_dynamicOnHover:O,..._}=t;a=k,E&&("string"==typeof a||"number"==typeof a)&&(a=(0,i.jsx)("a",{children:a}));let L=o.default.useContext(c.AppRouterContext),$=!1!==w,U=!1!==w?null===(r=w)||"auto"===r?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,{href:F,as:D}=o.default.useMemo(()=>{let e=y(b);return{href:e,as:j?y(j):e}},[b,j]);if(E){if(a?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});n=o.default.Children.only(a)}let z=E?n&&"object"==typeof n&&n.ref:R,q=o.default.useCallback(e=>(null!==L&&(x.current=(0,h.mountLinkInstance)(e,F,L,U,$,g)),()=>{x.current&&((0,h.unmountLinkForCurrentNavigation)(x.current),x.current=null),(0,h.unmountPrefetchableInstance)(e)}),[$,F,L,U,g]),V={ref:(0,d.useMergedRef)(q,z),onClick(t){E||"function"!=typeof A||A(t),E&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!L||t.defaultPrevented||function(t,r,a,n,s,i,l){if("u">typeof window){let c,{nodeName:d}=t.currentTarget;if("A"===d.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,p.isLocalURL)(r)){s&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:u}=e.r(699781);o.default.startTransition(()=>{u(a||r,s?"replace":"push",i??!0,n.current)})}}(t,F,D,x,C,I,M)},onMouseEnter(e){E||"function"!=typeof T||T(e),E&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),L&&$&&(0,h.onNavigationIntent)(e.currentTarget,!0===O)},onTouchStart:function(e){E||"function"!=typeof P||P(e),E&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),L&&$&&(0,h.onNavigationIntent)(e.currentTarget,!0===O)}};return(0,u.isAbsoluteUrl)(D)?V.href=D:E&&!S&&("a"!==n.type||"href"in n.props)||(V.href=(0,f.addBasePath)(D)),s=E?o.default.cloneElement(n,V):(0,i.jsx)("a",{..._,...V,children:a}),(0,i.jsx)(v.Provider,{value:l,children:s})}e.r(284508);let v=(0,o.createContext)(h.IDLE_LINK_STATUS),x=()=>(0,o.useContext)(v);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},618566,(e,t,r)=>{t.exports=e.r(976562)},811132,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(869014);let n={name:"",description:""},s={name:"",path:"",notes:""};function i(){let[e,t]=(0,r.useState)(n),[a,i]=(0,r.useState)([s]),[o,l]=(0,r.useState)(!1),[c,d]=(0,r.useState)(null),u=(0,r.useCallback)((e,t,r)=>{i(a=>a.map((a,n)=>n===e?{...a,[t]:r}:a))},[]),f=(0,r.useCallback)(()=>{i(e=>[...e,{...s}])},[]),h=(0,r.useCallback)(e=>{i(t=>t.filter((t,r)=>r!==e))},[]),p=(0,r.useCallback)(()=>{t(n),i([s]),d(null)},[]),m=(0,r.useCallback)(e=>{t({name:e.name||"",description:e.description||""}),e.repos&&e.repos.length>0?i(e.repos.map(e=>({id:e.id,name:e.name||"",path:e.path||"",git_url:e.git_url||"",notes:e.notes||""}))):i([s]),d(null)},[]);return{form:e,setForm:t,repos:a,handleRepoChange:u,addRepo:f,removeRepo:h,resetForm:p,hydrateFromProject:m,isSubmitting:o,setIsSubmitting:l,formError:c,setFormError:d}}function o(e,t){let r=t.filter(e=>e.name.trim()&&e.path.trim()).map(e=>({...e.id?{id:e.id}:{},name:e.name.trim(),path:e.path.trim(),...e.git_url?.trim()?{git_url:e.git_url.trim()}:{},notes:e.notes.trim()||void 0}));return{name:e.name.trim(),description:e.description.trim()||void 0,repos:r.length?r:void 0}}function l({form:e,repos:n,isEditingProject:s,isSubmitting:i,onFieldChange:o,onRepoChange:l,onAddRepo:c,onRemoveRepo:d}){let[u,f]=(0,r.useState)([]),[h,p]=(0,r.useState)(null),m=(0,r.useRef)(0);(0,r.useEffect)(()=>{s?f([]):f(n.map((e,t)=>t)),m.current=n.length},[s,n.length]),(0,r.useEffect)(()=>{if(!s){m.current=n.length;return}let e=m.current;f(t=>{let r=t.filter(e=>e<n.length);return n.length>e&&r.push(...Array.from({length:n.length-e},(t,r)=>e+r)),r}),m.current=n.length},[s,n.length]);let y=(0,r.useCallback)(e=>{f(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),g=(0,r.useCallback)(e=>!s||u.includes(e),[u,s]);return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)("div",{className:"grid gap-4",children:(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Project Name"}),(0,t.jsx)("input",{value:e.name,onChange:e=>o("name",e.target.value),className:"input w-full",placeholder:"e.g. AGX Cloud",disabled:i})]})}),(0,t.jsxs)("label",{className:"space-y-1.5 block",children:[(0,t.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Description"}),(0,t.jsx)("textarea",{value:e.description,onChange:e=>o("description",e.target.value),className:"input w-full h-24 resize-none",placeholder:"What is this project about?",disabled:i})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--card-border)] pb-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Folders"}),(0,t.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:"Code repos, doc folders, design assets, config directories — any path your team needs access to."})]}),(0,t.jsx)("button",{type:"button",onClick:c,className:"text-xs font-semibold text-[var(--primary)] hover:underline flex-shrink-0",disabled:i,children:"+ Add Folder"})]}),(0,t.jsx)("div",{className:"space-y-4",children:n.map((e,r)=>(0,t.jsxs)("div",{className:"p-4 rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 space-y-3 relative group",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"text-xs font-bold text-[var(--foreground)] uppercase",children:["Folder #",r+1]}),s&&!g(r)?(0,t.jsxs)("div",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)("div",{children:e.name||"Unnamed folder"}),(0,t.jsx)("div",{className:"truncate",children:e.path||"No local path set"})]}):null]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[s&&(0,t.jsx)("button",{type:"button",onClick:()=>y(r),className:"text-xs font-semibold text-[var(--primary)] hover:underline",disabled:i,children:g(r)?"Done":"Edit"}),n.length>1&&(0,t.jsx)("button",{type:"button",onClick:()=>d(r),className:"text-xs font-semibold text-[var(--destructive)] hover:underline",disabled:i,children:"Remove"})]})]}),g(r)?(0,t.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,t.jsx)("input",{value:e.name,onChange:e=>l(r,"name",e.target.value),placeholder:"Name (e.g. Frontend, API Docs, Design System)",className:"input text-sm",disabled:i}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("input",{value:e.path,onChange:e=>l(r,"path",e.target.value),placeholder:"Local path to folder",className:"input text-sm flex-1",disabled:i}),(0,t.jsx)("button",{type:"button",onClick:async()=>{try{let e=await fetch("/api/filesystem/pick-folder",{method:"POST"}),t=await e.json();t.path&&l(r,"path",t.path)}catch{p(h===r?null:r)}},className:"px-3 py-2 rounded-xl border border-[var(--card-border)] bg-[var(--muted)]/30 hover:bg-[var(--muted)]/60 transition-colors text-xs font-semibold text-[var(--muted-foreground)] whitespace-nowrap",disabled:i,children:"Browse"})]}),h===r&&(0,t.jsx)("div",{className:"md:col-span-2",children:(0,t.jsx)(a.default,{initialPath:e.path||"",onSelect:e=>{l(r,"path",e),p(null)},onCancel:()=>p(null)})}),(0,t.jsx)("div",{className:"md:col-span-2",children:(0,t.jsx)("textarea",{value:e.notes,onChange:e=>l(r,"notes",e.target.value),placeholder:"Notes for this folder — e.g. coding conventions, deploy steps, ownership, doc standards...",className:"input text-sm w-full min-h-24 resize-y",disabled:i})})]}):null]},r))})]})]})}function c({isOpen:e,onClose:a,onSubmit:n,editingProject:s,form:i,repos:o,isSubmitting:c,formError:d,onFieldChange:u,onRepoChange:f,onAddRepo:h,onRemoveRepo:p}){let[m,y]=(0,r.useState)([]);return((0,r.useEffect)(()=>{let e=!1;return async function(){if(!s)return y([]);try{let t=await fetch(`/api/knowledge-notes?scope=project&subjectId=${encodeURIComponent(s.id)}`),r=(t.ok?await t.json():{note:null}).note;e||y(r?.content?[{id:r.id,content:r.content,created_at:r.updatedAt??r.createdAt,source:r.sourceType}]:[])}catch{e||y([])}}(),()=>{e=!0}},[s]),e)?(0,t.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:e=>e.target===e.currentTarget&&a(),children:(0,t.jsxs)("div",{className:"modal-content w-full max-w-4xl mx-2 sm:mx-auto bg-[var(--card-bg)] rounded-3xl border border-[var(--card-border)] shadow-2xl animate-scale-in flex flex-col max-h-[90vh]",children:[(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-bold",children:s?"Edit Project":"Create New Project"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:s?"Update your project settings and folders.":"Define a new project and connect folders."})]}),(0,t.jsx)("button",{onClick:a,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 sm:p-8",children:[s&&(0,t.jsx)("div",{className:"mb-6",children:(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 p-4",children:[(0,t.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Living Project Note"}),m.length>0?(0,t.jsx)("div",{className:"mt-3 space-y-2",children:m.slice(0,5).map(e=>(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,t.jsx)("div",{children:e.content}),e.created_at?(0,t.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(e.created_at).toLocaleString()}):null]},e.id))}):(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"No project note yet."})]})}),(0,t.jsx)(l,{form:i,repos:o,isEditingProject:!!s,isSubmitting:c,onFieldChange:u,onRepoChange:f,onAddRepo:h,onRemoveRepo:p}),d&&(0,t.jsx)("div",{className:"mt-6 p-4 rounded-xl bg-[var(--destructive-muted)] border border-[var(--destructive)]/20 text-sm text-[var(--destructive)]",children:d})]}),(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-t border-[var(--card-border)] flex items-center justify-end gap-3 flex-shrink-0",children:[(0,t.jsx)("button",{onClick:a,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Cancel"}),(0,t.jsx)("button",{onClick:n,disabled:c,className:"btn-primary px-8 py-2 shadow-lg shadow-[var(--primary)]/20 min-w-[120px]",children:c?(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"spinner w-3 h-3 border-2 border-white/20 border-t-white"}),"Saving..."]}):s?"Save Changes":"Create Project"})]})]})}):null}e.s(["createProjectPayload",()=>o,"default",()=>c,"useProjectFormState",()=>i])},716625,e=>{"use strict";var t=e.i(271645),r=e.i(618566),a=e.i(399438);let n="agx-chat:last-thread";function s(){return void 0!==window.localStorage}function i(){if(s())try{window.localStorage.removeItem(n)}catch{}}let o=e=>[...e].sort((e,t)=>t.createdAt-e.createdAt);function l(e){let l=(0,r.useSearchParams)(),c=(0,t.useRef)(!0),[d,u]=(0,t.useState)([]),[f,h]=(0,t.useState)(null),[p,m]=(0,t.useState)(!0),[y,g]=(0,t.useState)(!0),[v,x]=(0,t.useState)(!1),[b,j]=(0,t.useState)(null),[k,w]=(0,t.useState)(null),S=(0,t.useRef)(!1),C=(0,t.useCallback)(e=>{h(e)},[]);(0,t.useEffect)(()=>(c.current=!0,()=>{c.current=!1}),[]),(0,t.useEffect)(()=>{let t=!1;return(async()=>{try{var r;let d,f=(e||l.get("thread")||"").trim()||null,p=await a.threadService.listThreads();if(f&&!p.some(e=>e.id===f)){let e=await a.threadService.createThread({id:f});p=o([...p.filter(t=>t.id!==e.id),e])}if(t||!c.current)return;u(p);let m=f||function(){if(!s())return null;try{return window.localStorage.getItem(n)}catch{return null}}(),{threadId:y,shouldClearSavedId:g,restoredFromStorage:v}=(r=p,d=r[0]?.id??null,m?r.some(e=>e.id===m)?{threadId:m,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:d,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:d,shouldClearSavedId:!1,restoredFromStorage:!1});g&&i(),S.current||(S.current=!0),v&&y?C(y):y?h(e=>e??y):h(null)}catch(e){console.error("Failed to load threads",e)}finally{c.current&&(m(!1),g(!1))}})(),()=>{t=!0}},[C,l,e]),(0,t.useEffect)(()=>{if(S.current)if(f){if(s())try{window.localStorage.setItem(n,f)}catch{}}else i()},[f]);let N=(0,t.useCallback)(async e=>{x(!0);try{let t=await a.threadService.createThread(e);if(!c.current)return t;return u(e=>o([...e.filter(e=>e.id!==t.id),t])),h(t.id),t}catch(e){throw console.error("Failed to create thread",e),e}finally{c.current&&x(!1)}},[]),I=(0,t.useCallback)(async e=>{if(e){j(e);try{if(await a.threadService.deleteThread(e),!c.current)return;let t=[];u(r=>t=o(r.filter(t=>t.id!==e))),h(r=>r===e?t[0]?.id??null:r)}catch(e){throw console.error("Failed to delete thread",e),e}finally{c.current&&j(null)}}},[]),A=(0,t.useCallback)(async(e,t)=>{let r=e.trim(),n=t.trim();if(r&&n){w(r);try{let e=await a.threadService.renameThread(r,n);if(!e||!c.current)return;u(t=>o(t.map(t=>t.id===e.id?e:t)))}catch(e){throw console.error("Failed to rename thread",e),e}finally{c.current&&w(e=>e===r?null:e)}}},[]),T=(0,t.useCallback)(async(e,t)=>{if(e)try{let r=await a.threadService.saveThreadMessages(e,t);if(!r||!c.current)return;u(e=>o(e.map(e=>e.id===r.id?r:e)))}catch(e){console.error("Failed to update thread messages",e)}},[]),P=(0,t.useCallback)(async(e,t)=>{if(e)try{let r=await a.threadService.updateThreadStatus(e,t);if(!r||!c.current)return;u(e=>o(e.map(e=>e.id===r.id?r:e)))}catch(e){console.error("Failed to update thread status",e)}},[]),E=(0,t.useCallback)(async(e,t)=>{if(e)try{let r=await a.threadService.updateThreadOutcomeNote(e,t);if(!r||!c.current)return;u(e=>o(e.map(e=>e.id===r.id?r:e)))}catch(e){console.error("Failed to update thread outcome note",e)}},[]),M=(0,t.useCallback)(async(e,t,r)=>{if(e&&t)try{let n=await a.threadService.updateMessageThreadStatus(e,t,r);if(!n||!c.current)return;u(e=>o(e.map(e=>e.id===n.id?n:e)))}catch(e){console.error("Failed to update message thread status",e)}},[]),R=(0,t.useCallback)(async(e,t,r)=>{if(e&&t)try{let n=await a.threadService.updateMessageOutcomeNote(e,t,r);if(!n||!c.current)return;u(e=>o(e.map(e=>e.id===n.id?n:e)))}catch(e){console.error("Failed to update message outcome note",e)}},[]),O=null!==f&&b===f;return{threads:d,activeThreadId:f,selectThread:C,createThread:N,deleteThread:I,isLoading:p,isRestoringActiveThread:y,isCreating:v,deletingThreadId:b,renamingThreadId:k,isDeletingActiveThread:O,updateThreadMessages:T,renameThread:A,updateThreadStatus:P,updateThreadOutcomeNote:E,updateMessageThreadStatus:M,updateMessageOutcomeNote:R}}e.s(["useThreadState",()=>l],716625)},878894,e=>{"use strict";let t=(0,e.i(475254).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",()=>t],878894)},114683,e=>{"use strict";let t=(0,e.i(475254).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Circle",()=>t],114683)},373884,e=>{"use strict";let t=(0,e.i(475254).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",()=>t],373884)},63209,e=>{"use strict";let t=(0,e.i(475254).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",()=>t],63209)},595468,e=>{"use strict";let t=(0,e.i(475254).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",()=>t],595468)},373375,e=>{"use strict";let t=(0,e.i(475254).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",()=>t],373375)}]);
@@ -1,20 +1,23 @@
1
1
  "use client";
2
2
 
3
- import { useState, useEffect } from "react";
3
+ import { useState, useEffect, useCallback } from "react";
4
4
  import { WorkspaceSidebar } from "@/components/thread/WorkspaceSidebar";
5
5
  import {
6
6
  loadWorkspaceSidebarVisible,
7
7
  persistWorkspaceSidebarVisible,
8
8
  } from "@/state/uiSettings";
9
+ import { loadWorkspaceWidth, persistWorkspaceWidth } from "@/state/windowState";
9
10
  import { useProjectsWithAgents, useProjects } from "@/hooks/useProjects";
10
11
  import "@/styles/workspaceSidebar.css";
11
12
  import PromptJobBoard from "@/components/PromptJobBoard";
12
13
 
13
14
  export default function AutomationsPage() {
14
15
  const [sidebarVisible, setSidebarVisible] = useState(false);
16
+ const [sidebarWidth, setSidebarWidth] = useState(368);
15
17
 
16
18
  useEffect(() => {
17
19
  setSidebarVisible(loadWorkspaceSidebarVisible());
20
+ setSidebarWidth(loadWorkspaceWidth() || 368);
18
21
  }, []);
19
22
 
20
23
  const toggleSidebar = () => {
@@ -25,6 +28,11 @@ export default function AutomationsPage() {
25
28
  });
26
29
  };
27
30
 
31
+ const handleSidebarWidthChange = useCallback((w: number) => {
32
+ setSidebarWidth(w);
33
+ persistWorkspaceWidth(w);
34
+ }, []);
35
+
28
36
  const {
29
37
  projects,
30
38
  createProject,
@@ -45,6 +53,8 @@ export default function AutomationsPage() {
45
53
  onDeleteThread={() => {}}
46
54
  visible={sidebarVisible}
47
55
  onToggle={toggleSidebar}
56
+ width={sidebarWidth}
57
+ onWidthChange={handleSidebarWidthChange}
48
58
  projects={projects}
49
59
  onCreateProject={createProject}
50
60
  onUpdateProject={updateProject}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { Suspense, use, useEffect, useMemo, useState } from "react";
3
+ import { Suspense, use, useCallback, useEffect, useMemo, useState } from "react";
4
4
  import { usePathname } from "next/navigation";
5
5
  import { useRouter } from "next/navigation";
6
6
  import { WorkspaceSidebar } from "@/components/thread/WorkspaceSidebar";
@@ -11,6 +11,7 @@ import {
11
11
  loadWorkspaceSidebarVisible,
12
12
  persistWorkspaceSidebarVisible,
13
13
  } from "@/state/uiSettings";
14
+ import { loadWorkspaceWidth, persistWorkspaceWidth } from "@/state/windowState";
14
15
  import "@/styles/workspaceSidebar.css";
15
16
 
16
17
  function ProjectLayoutContent({
@@ -45,9 +46,11 @@ function ProjectLayoutContent({
45
46
  } = useThreadState();
46
47
  const [participants, setParticipants] = useState<Participant[]>([]);
47
48
  const [sidebarVisible, setSidebarVisible] = useState(false);
49
+ const [sidebarWidth, setSidebarWidth] = useState(368);
48
50
 
49
51
  useEffect(() => {
50
52
  setSidebarVisible(loadWorkspaceSidebarVisible());
53
+ setSidebarWidth(loadWorkspaceWidth() || 368);
51
54
  }, []);
52
55
 
53
56
  useEffect(() => {
@@ -82,6 +85,11 @@ function ProjectLayoutContent({
82
85
  persistWorkspaceSidebarVisible(next);
83
86
  };
84
87
 
88
+ const handleSidebarWidthChange = useCallback((w: number) => {
89
+ setSidebarWidth(w);
90
+ persistWorkspaceWidth(w);
91
+ }, []);
92
+
85
93
  if (projectsLoading) {
86
94
  return (
87
95
  <div className="flex items-center justify-center h-full">
@@ -124,6 +132,8 @@ function ProjectLayoutContent({
124
132
  onDeleteThread={deleteThread}
125
133
  visible={sidebarVisible}
126
134
  onToggle={toggleSidebar}
135
+ width={sidebarWidth}
136
+ onWidthChange={handleSidebarWidthChange}
127
137
  projects={projects}
128
138
  onCreateProject={createProject}
129
139
  onUpdateProject={updateProject}
@@ -2,23 +2,35 @@
2
2
 
3
3
  import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import dynamic from "next/dynamic";
5
- import { Check, ChevronDown, Clock, Link2, Play, RefreshCw, Search, Settings, User } from "lucide-react";
5
+ import { Check, ChevronDown, Clock, FileText, Link2, Play, RefreshCw, Search, Settings, User } from "lucide-react";
6
6
  import { useLinearIssues, type LinearIssue } from "@/hooks/useLinearIssues";
7
7
  import { useLinearConnection } from "@/hooks/useLinearConnection";
8
8
  import { useLinearRuns, type LinearRun } from "@/hooks/useLinearRuns";
9
+ import { useLinearRunScripts } from "@/hooks/useLinearRunScripts";
9
10
  import { useGroupChat } from "@/hooks/useGroupChat";
10
11
  import { useProcessPolling } from "@/hooks/useProcessPolling";
11
12
  import { Markdown } from "@/components/chat-ui/Markdown";
13
+ import RunScriptManager from "@/components/linear/RunScriptManager";
12
14
  import { stripMarkers } from "@/lib/chat-utils";
13
15
  import {
14
16
  loadLinearBoardFilters,
15
17
  persistLinearBoardFilters,
16
18
  } from "@/state/linearBoardFilters";
19
+ import {
20
+ loadLinearTicketPanelWidth,
21
+ persistLinearTicketPanelWidth,
22
+ loadLinearRunsPanelWidth,
23
+ persistLinearRunsPanelWidth,
24
+ } from "@/state/windowState";
17
25
  import {
18
26
  orderParticipantIds,
19
27
  type ComposerRoutingMetadata,
20
28
  } from "@/lib/chat/composer-routing";
21
- import { buildLinearExecutionPrompt } from "@/lib/linear-execution-prompt";
29
+ import {
30
+ buildLinearExecutionPrompt,
31
+ renderLinearExecutionPromptTemplate,
32
+ type LinearExecutionPromptInput,
33
+ } from "@/lib/linear-execution-prompt";
22
34
  import type { Participant } from "@/lib/types";
23
35
  import LinearSetup from "@/components/LinearSetup";
24
36
 
@@ -928,7 +940,7 @@ function TicketRow({
928
940
  const shortStatus = STATUS_LABELS[issue.status] ?? issue.status.slice(0, 6);
929
941
  return (
930
942
  <div
931
- className={`group relative flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${
943
+ className={`group relative flex cursor-pointer items-center gap-3 px-4 py-2.5 text-sm transition-colors ${
932
944
  selected
933
945
  ? "bg-[var(--card-bg)]"
934
946
  : "hover:bg-[var(--card-bg)]/50"
@@ -1007,8 +1019,9 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1007
1019
 
1008
1020
  const [setupDismissed, setSetupDismissed] = useState(false);
1009
1021
  const [showSettings, setShowSettings] = useState(initialShowSettings ?? false);
1010
- const [ticketPanelWidth, setTicketPanelWidth] = useState(576);
1011
- const [runsPanelWidth, setRunsPanelWidth] = useState(224);
1022
+ const [showRunScripts, setShowRunScripts] = useState(false);
1023
+ const [ticketPanelWidth, setTicketPanelWidth] = useState(() => loadLinearTicketPanelWidth() || 576);
1024
+ const [runsPanelWidth, setRunsPanelWidth] = useState(() => loadLinearRunsPanelWidth() || 224);
1012
1025
  const [search, setSearch] = useState("");
1013
1026
  const [debouncedSearch, setDebouncedSearch] = useState("");
1014
1027
  const [filterOptionsLoaded, setFilterOptionsLoaded] = useState(false);
@@ -1027,6 +1040,8 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1027
1040
  const [pickerAnchor, setPickerAnchor] = useState<{ top: number; left: number } | null>(null);
1028
1041
  const searchDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
1029
1042
  const skipNextFilterPersistRef = useRef(true);
1043
+ const runScriptsButtonRef = useRef<HTMLButtonElement | null>(null);
1044
+ const runScriptsPanelRef = useRef<HTMLDivElement | null>(null);
1030
1045
 
1031
1046
  const handleSearchChange = useCallback((value: string) => {
1032
1047
  setSearch(value);
@@ -1178,6 +1193,14 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1178
1193
  createRun,
1179
1194
  updateRun,
1180
1195
  } = useLinearRuns(selectedIssue?.id, projectId ?? null);
1196
+ const {
1197
+ scripts: runScripts,
1198
+ activeScriptId,
1199
+ activeScript,
1200
+ setActiveScriptId,
1201
+ saveScript,
1202
+ deleteScript,
1203
+ } = useLinearRunScripts(projectSlug);
1181
1204
 
1182
1205
  const selectedRun = runs.find((run) => run.id === selectedRunId) ?? null;
1183
1206
  const assigneeOptions = useMemo<FilterOption[]>(
@@ -1205,6 +1228,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1205
1228
  const showStatusFilter = statusOptions.length > 0;
1206
1229
  const showCycleFilter = cycleOptions.length > 1;
1207
1230
  const showWorkspaceFilter = workspaceOptions.length > 2;
1231
+ const activeRunScriptLabel = activeScript?.name ?? "AGX default";
1208
1232
 
1209
1233
  useEffect(() => {
1210
1234
  if (issues.length === 0) {
@@ -1286,8 +1310,39 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1286
1310
  };
1287
1311
  }, [projectId]);
1288
1312
 
1313
+ useEffect(() => {
1314
+ if (!showRunScripts) {
1315
+ return;
1316
+ }
1317
+
1318
+ const handlePointerDown = (event: MouseEvent) => {
1319
+ const target = event.target as Node;
1320
+ if (runScriptsPanelRef.current?.contains(target)) {
1321
+ return;
1322
+ }
1323
+ if (runScriptsButtonRef.current?.contains(target)) {
1324
+ return;
1325
+ }
1326
+ setShowRunScripts(false);
1327
+ };
1328
+
1329
+ const handleKeyDown = (event: KeyboardEvent) => {
1330
+ if (event.key === "Escape") {
1331
+ setShowRunScripts(false);
1332
+ }
1333
+ };
1334
+
1335
+ document.addEventListener("mousedown", handlePointerDown);
1336
+ document.addEventListener("keydown", handleKeyDown);
1337
+ return () => {
1338
+ document.removeEventListener("mousedown", handlePointerDown);
1339
+ document.removeEventListener("keydown", handleKeyDown);
1340
+ };
1341
+ }, [showRunScripts]);
1342
+
1289
1343
  const handleExecute = useCallback(
1290
1344
  (issue: LinearIssue, event?: React.MouseEvent) => {
1345
+ setShowRunScripts(false);
1291
1346
  if (participants.length === 0) {
1292
1347
  window.alert("Add at least one agent to this project before running a Linear ticket.");
1293
1348
  return;
@@ -1326,7 +1381,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1326
1381
  });
1327
1382
  setSelectedRunId(createdRun.id);
1328
1383
 
1329
- const { prompt, promptPrefix } = buildLinearExecutionPrompt({
1384
+ const executionPromptInput: LinearExecutionPromptInput = {
1330
1385
  issue: {
1331
1386
  identifier: issue.identifier,
1332
1387
  title: issue.title,
@@ -1334,14 +1389,21 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1334
1389
  assignee: issue.assignee,
1335
1390
  },
1336
1391
  project: projectSlug ? { slug: projectSlug } : null,
1337
- });
1392
+ };
1393
+ const { prompt: defaultPrompt, promptPrefix } = buildLinearExecutionPrompt(executionPromptInput);
1394
+ const prompt = activeScript
1395
+ ? renderLinearExecutionPromptTemplate(activeScript.prompt, executionPromptInput).trim() || defaultPrompt
1396
+ : defaultPrompt;
1397
+ const effectivePromptPrefix = activeScript
1398
+ ? `${promptPrefix}ACTIVE RUN SCRIPT\n- Name: ${activeScript.name}\n\n`
1399
+ : promptPrefix;
1338
1400
 
1339
1401
  const response = await fetch("/api/chat", {
1340
1402
  method: "POST",
1341
1403
  headers: { "Content-Type": "application/json" },
1342
1404
  body: JSON.stringify({
1343
1405
  prompt,
1344
- promptPrefix,
1406
+ promptPrefix: effectivePromptPrefix,
1345
1407
  threadId: createdRun.threadId,
1346
1408
  activeParticipantIds: [agent.id],
1347
1409
  projectSlug: projectSlug ?? undefined,
@@ -1375,7 +1437,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1375
1437
  }
1376
1438
  }
1377
1439
  },
1378
- [createRun, projectId, projectSlug, updateRun]
1440
+ [activeScript, createRun, projectId, projectSlug, updateRun]
1379
1441
  );
1380
1442
 
1381
1443
  const sentinelRef = useRef<HTMLDivElement | null>(null);
@@ -1449,7 +1511,10 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1449
1511
  <button
1450
1512
  type="button"
1451
1513
  className="shrink-0 rounded p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"
1452
- onClick={() => setShowSettings(true)}
1514
+ onClick={() => {
1515
+ setShowRunScripts(false);
1516
+ setShowSettings(true);
1517
+ }}
1453
1518
  title="Linear settings"
1454
1519
  >
1455
1520
  <Settings size={16} />
@@ -1528,22 +1593,54 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1528
1593
  </div>
1529
1594
  </div>
1530
1595
 
1531
- <ResizeHandle onResize={(delta) => setTicketPanelWidth((w) => Math.max(180, Math.min(600, w + delta)))} />
1596
+ <ResizeHandle onResize={(delta) => setTicketPanelWidth((w) => { const next = Math.max(180, Math.min(600, w + delta)); persistLinearTicketPanelWidth(next); return next; })} />
1532
1597
 
1533
1598
  <div className="flex shrink-0 flex-col border-r border-[var(--card-border)]" style={{ width: runsPanelWidth }}>
1534
- <div className="flex items-center justify-between border-b border-[var(--card-border)] px-3 py-2">
1599
+ <div className="relative flex items-center justify-between border-b border-[var(--card-border)] px-3 py-2">
1535
1600
  <h3 className="text-xs font-semibold text-[var(--foreground)]">Runs</h3>
1536
- {selectedIssue && (
1601
+ <div className="flex items-center gap-1">
1537
1602
  <button
1603
+ ref={runScriptsButtonRef}
1538
1604
  type="button"
1539
- 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)]"
1540
- onClick={(event) => handleExecute(selectedIssue, event)}
1541
- title="Run agent on selected ticket"
1605
+ className={`flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] font-medium transition-colors ${
1606
+ showRunScripts
1607
+ ? "bg-[var(--card-bg)] text-[var(--foreground)]"
1608
+ : "text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"
1609
+ }`}
1610
+ onClick={() => setShowRunScripts((current) => !current)}
1611
+ title={`Run script: ${activeRunScriptLabel}`}
1542
1612
  >
1543
- <Play size={10} />
1544
- <span>Run now</span>
1613
+ <FileText size={10} />
1614
+ <span className="max-w-[88px] truncate">{activeRunScriptLabel}</span>
1545
1615
  </button>
1546
- )}
1616
+ {selectedIssue && (
1617
+ <button
1618
+ type="button"
1619
+ 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)]"
1620
+ onClick={(event) => handleExecute(selectedIssue, event)}
1621
+ title="Run agent on selected ticket"
1622
+ >
1623
+ <Play size={10} />
1624
+ <span>Run now</span>
1625
+ </button>
1626
+ )}
1627
+ </div>
1628
+ {showRunScripts ? (
1629
+ <div
1630
+ ref={runScriptsPanelRef}
1631
+ 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"
1632
+ style={{ width: "min(760px, calc(100vw - 32px))" }}
1633
+ >
1634
+ <RunScriptManager
1635
+ projectSlug={projectSlug}
1636
+ scripts={runScripts}
1637
+ activeScriptId={activeScriptId}
1638
+ onSetActiveScriptId={setActiveScriptId}
1639
+ onSaveScript={saveScript}
1640
+ onDeleteScript={deleteScript}
1641
+ />
1642
+ </div>
1643
+ ) : null}
1547
1644
  </div>
1548
1645
 
1549
1646
  <div className="flex-1 overflow-y-auto">
@@ -1603,7 +1700,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1603
1700
  </div>
1604
1701
  </div>
1605
1702
 
1606
- <ResizeHandle onResize={(delta) => setRunsPanelWidth((w) => Math.max(140, Math.min(500, w + delta)))} />
1703
+ <ResizeHandle onResize={(delta) => setRunsPanelWidth((w) => { const next = Math.max(140, Math.min(500, w + delta)); persistLinearRunsPanelWidth(next); return next; })} />
1607
1704
 
1608
1705
  <div className="flex min-w-0 flex-1 flex-col overflow-hidden">
1609
1706
  {selectedRun ? (
@@ -1639,7 +1736,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1639
1736
  >
1640
1737
  &times;
1641
1738
  </button>
1642
- <div className="p-6">
1739
+ <div className="max-h-[80vh] overflow-y-auto p-6">
1643
1740
  <LinearSetup
1644
1741
  connected={connected}
1645
1742
  user={user}
@@ -15,6 +15,7 @@ import {
15
15
  loadWorkspaceSidebarVisible,
16
16
  persistWorkspaceSidebarVisible,
17
17
  } from "@/state/uiSettings";
18
+ import { loadWorkspaceWidth, persistWorkspaceWidth } from "@/state/windowState";
18
19
  import {
19
20
  loadStoredActiveParticipantIds,
20
21
  persistStoredActiveParticipantIds,
@@ -357,6 +358,7 @@ export function ChatContainer({
357
358
  return document.documentElement.classList.contains("dark") ? "dark" : "light";
358
359
  });
359
360
  const [workspaceSidebarVisible, setWorkspaceSidebarVisible] = useState(false);
361
+ const [workspaceSidebarWidth, setWorkspaceSidebarWidth] = useState(368);
360
362
  const workspaceSidebarHydratedRef = useRef(false);
361
363
 
362
364
  // Sync sidebar visibility from localStorage after hydration to avoid SSR mismatch
@@ -364,6 +366,7 @@ export function ChatContainer({
364
366
  const stored = loadWorkspaceSidebarVisible();
365
367
  workspaceSidebarHydratedRef.current = true;
366
368
  setWorkspaceSidebarVisible(stored);
369
+ setWorkspaceSidebarWidth(loadWorkspaceWidth() || 368);
367
370
  }, []);
368
371
  useEffect(() => {
369
372
  if (typeof window === "undefined") return;
@@ -1566,6 +1569,11 @@ export function ChatContainer({
1566
1569
  });
1567
1570
  }, [persistSidebarPreference]);
1568
1571
 
1572
+ const handleWorkspaceSidebarWidthChange = useCallback((w: number) => {
1573
+ setWorkspaceSidebarWidth(w);
1574
+ persistWorkspaceWidth(w);
1575
+ }, []);
1576
+
1569
1577
  const handleAdd = async (p: Participant) => {
1570
1578
  const res = await fetch("/api/participants", {
1571
1579
  method: "POST",
@@ -1776,6 +1784,8 @@ export function ChatContainer({
1776
1784
  onToggleParticipantActive={handleToggleParticipantActive}
1777
1785
  visible={workspaceSidebarVisible}
1778
1786
  onToggle={toggleWorkspaceSidebar}
1787
+ width={workspaceSidebarWidth}
1788
+ onWidthChange={handleWorkspaceSidebarWidthChange}
1779
1789
  projects={projects}
1780
1790
  onCreateProject={createProject}
1781
1791
  onUpdateProject={updateProject}