@mndrk/agx 2.0.46 → 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 (504) hide show
  1. package/cloud-runtime/standalone/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/.next/app-path-routes-manifest.json +1 -0
  3. package/cloud-runtime/standalone/.next/build-manifest.json +2 -2
  4. package/cloud-runtime/standalone/.next/prerender-manifest.json +27 -3
  5. package/cloud-runtime/standalone/.next/routes-manifest.json +6 -0
  6. package/cloud-runtime/standalone/.next/server/app/_global-error.html +2 -2
  7. package/cloud-runtime/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/cloud-runtime/standalone/.next/server/app/_not-found.html +2 -2
  15. package/cloud-runtime/standalone/.next/server/app/_not-found.rsc +2 -2
  16. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/.next/server/app/agents/page.js.nft.json +1 -1
  25. package/cloud-runtime/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/.next/server/app/agents.html +2 -2
  27. package/cloud-runtime/standalone/.next/server/app/agents.rsc +3 -3
  28. package/cloud-runtime/standalone/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  29. package/cloud-runtime/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  30. package/cloud-runtime/standalone/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  32. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  33. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  34. package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js +1 -1
  35. package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js +1 -1
  37. package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js +1 -1
  39. package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/.next/server/app/api/automations/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js +2 -2
  43. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/.next/server/app/api/file-search/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/.next/server/app/api/health/route.js +1 -1
  47. package/cloud-runtime/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js +1 -1
  49. package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js +1 -1
  51. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js +1 -1
  53. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js +1 -1
  55. package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js +1 -1
  57. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js +1 -1
  59. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js +5 -2
  61. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js +1 -1
  63. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js +1 -1
  65. package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js +1 -1
  67. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js +1 -1
  69. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js +1 -1
  71. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js +1 -1
  73. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js +1 -1
  75. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js +1 -1
  77. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js +1 -1
  79. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js +1 -1
  81. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js +1 -1
  83. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js.nft.json +1 -1
  84. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js +1 -1
  85. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js.nft.json +1 -1
  86. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js +1 -1
  87. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
  90. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js +1 -1
  92. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js +1 -1
  94. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
  96. package/cloud-runtime/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js +1 -1
  98. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js +1 -1
  100. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  102. package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/.next/server/app/api/schedules/route.js.nft.json +1 -1
  104. package/cloud-runtime/standalone/.next/server/app/api/skills/assign/route.js +1 -1
  105. package/cloud-runtime/standalone/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  106. package/cloud-runtime/standalone/.next/server/app/api/skills/available/route.js +1 -1
  107. package/cloud-runtime/standalone/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  108. package/cloud-runtime/standalone/.next/server/app/api/skills/detail/route.js +1 -1
  109. package/cloud-runtime/standalone/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  110. package/cloud-runtime/standalone/.next/server/app/api/skills/history/route.js +1 -1
  111. package/cloud-runtime/standalone/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  112. package/cloud-runtime/standalone/.next/server/app/api/skills/learn/route.js +1 -1
  113. package/cloud-runtime/standalone/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  114. package/cloud-runtime/standalone/.next/server/app/api/skills/route.js +1 -1
  115. package/cloud-runtime/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
  116. package/cloud-runtime/standalone/.next/server/app/api/skills/unlearn/route.js +1 -1
  117. package/cloud-runtime/standalone/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  118. package/cloud-runtime/standalone/.next/server/app/api/status/route.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js +1 -1
  120. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js +1 -1
  122. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js +1 -1
  124. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js +1 -1
  126. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -1
  128. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js +1 -1
  130. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js +1 -1
  132. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js +1 -1
  134. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js +1 -1
  136. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js +1 -1
  138. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js +1 -1
  140. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js +1 -1
  142. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js +1 -1
  144. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js +1 -1
  146. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js +1 -1
  148. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
  150. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js +1 -1
  151. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
  152. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js +1 -1
  153. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  154. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js +1 -1
  156. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js +1 -1
  158. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js +1 -1
  160. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js +1 -1
  162. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js +1 -1
  164. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js +1 -1
  166. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  168. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  169. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js +1 -1
  170. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
  171. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js +1 -1
  172. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  173. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js +1 -1
  174. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  175. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js +1 -1
  176. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  177. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js +1 -1
  178. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js.nft.json +1 -1
  179. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js +1 -1
  180. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js.nft.json +1 -1
  181. package/cloud-runtime/standalone/.next/server/app/automations/page/react-loadable-manifest.json +1 -1
  182. package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
  183. package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  184. package/cloud-runtime/standalone/.next/server/app/automations.html +2 -2
  185. package/cloud-runtime/standalone/.next/server/app/automations.rsc +3 -3
  186. package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +3 -3
  187. package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  188. package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  189. package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
  190. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
  193. package/cloud-runtime/standalone/.next/server/app/board.html +2 -2
  194. package/cloud-runtime/standalone/.next/server/app/board.rsc +2 -2
  195. package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +2 -2
  196. package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +1 -1
  197. package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +2 -2
  198. package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  199. package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  200. package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +1 -1
  201. package/cloud-runtime/standalone/.next/server/app/execution-graph/page.js.nft.json +1 -1
  202. package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  203. package/cloud-runtime/standalone/.next/server/app/execution-graph.html +2 -2
  204. package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +3 -3
  205. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  206. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  207. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  208. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  209. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  210. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  211. package/cloud-runtime/standalone/.next/server/app/folders/page/app-paths-manifest.json +3 -0
  212. package/cloud-runtime/standalone/.next/server/app/folders/page/build-manifest.json +18 -0
  213. package/cloud-runtime/standalone/.next/server/app/folders/page/next-font-manifest.json +11 -0
  214. package/cloud-runtime/standalone/.next/server/app/folders/page/react-loadable-manifest.json +1 -0
  215. package/cloud-runtime/standalone/.next/server/app/folders/page/server-reference-manifest.json +4 -0
  216. package/cloud-runtime/standalone/.next/server/app/folders/page.js +15 -0
  217. package/cloud-runtime/standalone/.next/server/app/folders/page.js.map +5 -0
  218. package/cloud-runtime/standalone/.next/server/app/folders/page.js.nft.json +1 -0
  219. package/cloud-runtime/standalone/.next/server/app/folders/page_client-reference-manifest.js +2 -0
  220. package/cloud-runtime/standalone/.next/server/app/folders.html +21 -0
  221. package/cloud-runtime/standalone/.next/server/app/folders.meta +15 -0
  222. package/cloud-runtime/standalone/.next/server/app/folders.rsc +24 -0
  223. package/cloud-runtime/standalone/.next/server/app/folders.segments/_full.segment.rsc +24 -0
  224. package/cloud-runtime/standalone/.next/server/app/folders.segments/_head.segment.rsc +5 -0
  225. package/cloud-runtime/standalone/.next/server/app/folders.segments/_index.segment.rsc +10 -0
  226. package/cloud-runtime/standalone/.next/server/app/folders.segments/_tree.segment.rsc +5 -0
  227. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +9 -0
  228. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders.segment.rsc +4 -0
  229. package/cloud-runtime/standalone/.next/server/app/index.html +2 -2
  230. package/cloud-runtime/standalone/.next/server/app/index.rsc +3 -3
  231. package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  232. package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  233. package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  234. package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  235. package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  236. package/cloud-runtime/standalone/.next/server/app/page.js.nft.json +1 -1
  237. package/cloud-runtime/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  238. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
  239. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  240. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  241. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  242. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  243. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  244. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  245. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
  246. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  247. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  248. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  249. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  250. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  251. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  252. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  253. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  254. package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +2 -2
  255. package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +2 -2
  256. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  257. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  258. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  259. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  260. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  261. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  262. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  263. package/cloud-runtime/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  264. package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  265. package/cloud-runtime/standalone/.next/server/app/projects.html +2 -2
  266. package/cloud-runtime/standalone/.next/server/app/projects.rsc +3 -3
  267. package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  268. package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  269. package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  270. package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  271. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  272. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  273. package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  274. package/cloud-runtime/standalone/.next/server/app/settings.html +2 -2
  275. package/cloud-runtime/standalone/.next/server/app/settings.rsc +2 -2
  276. package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  277. package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  278. package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  279. package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  280. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  281. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  282. package/cloud-runtime/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  283. package/cloud-runtime/standalone/.next/server/app/skills.html +2 -2
  284. package/cloud-runtime/standalone/.next/server/app/skills.rsc +2 -2
  285. package/cloud-runtime/standalone/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  286. package/cloud-runtime/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  287. package/cloud-runtime/standalone/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  288. package/cloud-runtime/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  289. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  290. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  291. package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
  292. package/cloud-runtime/standalone/.next/server/app/status.html +2 -2
  293. package/cloud-runtime/standalone/.next/server/app/status.rsc +2 -2
  294. package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +2 -2
  295. package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +1 -1
  296. package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +2 -2
  297. package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  298. package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  299. package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +1 -1
  300. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  301. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  302. package/cloud-runtime/standalone/.next/server/app/welcome/page.js.nft.json +1 -1
  303. package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  304. package/cloud-runtime/standalone/.next/server/app/welcome.html +2 -2
  305. package/cloud-runtime/standalone/.next/server/app/welcome.rsc +3 -3
  306. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +3 -3
  307. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
  308. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +2 -2
  309. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
  310. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +2 -2
  311. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
  312. package/cloud-runtime/standalone/.next/server/app-paths-manifest.json +1 -0
  313. package/cloud-runtime/standalone/.next/server/chunks/{[externals]__31e26905._.js → [externals]__7b4c6b2b._.js} +1 -1
  314. package/cloud-runtime/standalone/.next/server/chunks/[externals]__a21cc96d._.js +3 -0
  315. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__015d40a6._.js +67 -0
  316. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__067034dd._.js +67 -0
  317. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5aaf8c25._.js → [root-of-the-server]__143fdf69._.js} +2 -2
  318. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__74a37ca4._.js → [root-of-the-server]__158df4bf._.js} +2 -2
  319. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c029daab._.js → [root-of-the-server]__179cb224._.js} +2 -2
  320. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3fd3c5b1._.js → [root-of-the-server]__1a1f66b1._.js} +2 -2
  321. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__20a2cb22._.js +150 -0
  322. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d2ac93f2._.js → [root-of-the-server]__23b075bd._.js} +2 -2
  323. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3bf516b6._.js → [root-of-the-server]__3170b7bf._.js} +2 -2
  324. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__558389f7._.js → [root-of-the-server]__33865410._.js} +2 -2
  325. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__4c2d07e0._.js → [root-of-the-server]__36d15de5._.js} +2 -2
  326. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__37844df7._.js +67 -0
  327. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d9f2041b._.js → [root-of-the-server]__3a93931b._.js} +4 -4
  328. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__3fae531a._.js +89 -0
  329. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__76658fd6._.js → [root-of-the-server]__4cb22e4d._.js} +2 -2
  330. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ebece93b._.js → [root-of-the-server]__4ce74056._.js} +2 -2
  331. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__635fe0f9._.js → [root-of-the-server]__538b0bdd._.js} +2 -2
  332. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3b1431b6._.js → [root-of-the-server]__5c55f67a._.js} +2 -2
  333. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e20922e8._.js → [root-of-the-server]__69a3c480._.js} +2 -2
  334. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__42804c1d._.js → [root-of-the-server]__6c53437e._.js} +1 -1
  335. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__8cbd8c56._.js +79 -0
  336. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__92ed2961._.js +48 -0
  337. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__509b1dd2._.js → [root-of-the-server]__94499e9a._.js} +2 -2
  338. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ddb3aa76._.js → [root-of-the-server]__a280fa63._.js} +2 -2
  339. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__8c7d1318._.js → [root-of-the-server]__a2d31df1._.js} +2 -2
  340. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__a3955224._.js +150 -0
  341. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__4b0b5fe1._.js → [root-of-the-server]__a7b2350e._.js} +2 -2
  342. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5b13e7a5._.js → [root-of-the-server]__ab655b9f._.js} +2 -2
  343. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ac6326b6._.js +106 -0
  344. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__0284ea89._.js → [root-of-the-server]__b2748382._.js} +2 -2
  345. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e7be56ba._.js → [root-of-the-server]__b627cb83._.js} +2 -2
  346. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__0e98af48._.js → [root-of-the-server]__bab85495._.js} +63 -18
  347. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__dca6026a._.js → [root-of-the-server]__c21747df._.js} +2 -2
  348. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c22dd3a6._.js +179 -0
  349. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c8890cd6._.js +150 -0
  350. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__aad349b4._.js → [root-of-the-server]__ca4987eb._.js} +1 -1
  351. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__fcdaf6d8._.js → [root-of-the-server]__d16caed5._.js} +2 -2
  352. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__1f53e82e._.js → [root-of-the-server]__d324f8a1._.js} +2 -2
  353. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__6988985c._.js → [root-of-the-server]__da645a5e._.js} +2 -2
  354. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d4f42f49._.js → [root-of-the-server]__e58e9f91._.js} +2 -2
  355. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f4b3df16._.js +3 -0
  356. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c8195768._.js → [root-of-the-server]__f7f336c7._.js} +1 -1
  357. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__fcfa3690._.js +93 -0
  358. package/cloud-runtime/standalone/.next/server/chunks/_4d07f8db._.js +3 -0
  359. package/cloud-runtime/standalone/.next/server/chunks/lib_7f7835f1._.js +66 -21
  360. package/cloud-runtime/standalone/.next/server/chunks/lib_9f439b27._.js +61 -16
  361. package/cloud-runtime/standalone/.next/server/chunks/lib_f81d6da9._.js +70 -0
  362. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__4c9d0778._.js → [root-of-the-server]__01e1641e._.js} +2 -2
  363. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b2a2b86._.js +3 -0
  364. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__32546242._.js +3 -0
  365. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__4140bb73._.js +3 -0
  366. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ffbc2e98._.js → [root-of-the-server]__5e73414b._.js} +2 -2
  367. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ff9ead4._.js +3 -0
  368. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__ec81a3d9._.js +3 -0
  369. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f2c3b7ab._.js +1 -1
  370. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__a42e4555._.js → [root-of-the-server]__fbe1ab4a._.js} +2 -2
  371. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1e9b9b1e._.js +3 -0
  372. package/cloud-runtime/standalone/.next/server/chunks/ssr/_24fe6213._.js +3 -0
  373. package/cloud-runtime/standalone/.next/server/chunks/ssr/_36a0c486._.js +3 -0
  374. package/cloud-runtime/standalone/.next/server/chunks/ssr/_3b21d3b2._.js +95 -0
  375. package/cloud-runtime/standalone/.next/server/chunks/ssr/_3eeac8f9._.js +3 -0
  376. package/cloud-runtime/standalone/.next/server/chunks/ssr/_48db42b7._.js +3 -0
  377. package/cloud-runtime/standalone/.next/server/chunks/ssr/_59f30a73._.js +3 -0
  378. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7d3b0032._.js +3 -0
  379. package/cloud-runtime/standalone/.next/server/chunks/ssr/_916950b3._.js +3 -0
  380. package/cloud-runtime/standalone/.next/server/chunks/ssr/_b598ae8a._.js +3 -0
  381. package/cloud-runtime/standalone/.next/server/chunks/ssr/_b7009996._.js +3 -0
  382. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cc8c8302._.js +3 -0
  383. package/cloud-runtime/standalone/.next/server/chunks/ssr/_d972a4e1._.js +3 -0
  384. package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd7bb6fb._.js +3 -0
  385. package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd9880fb._.js +3 -0
  386. package/cloud-runtime/standalone/.next/server/chunks/ssr/_e70d5625._.js +4 -0
  387. package/cloud-runtime/standalone/.next/server/chunks/ssr/_f02d786a._.js +3 -0
  388. package/cloud-runtime/standalone/.next/server/chunks/ssr/_f53d31e0._.js +3 -0
  389. package/cloud-runtime/standalone/.next/server/chunks/ssr/_fd8cafe9._.js +3 -0
  390. package/cloud-runtime/standalone/.next/server/chunks/ssr/_next-internal_server_app_folders_page_actions_9c8dfb6c.js +3 -0
  391. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_projects_[slug]_linear_page_tsx_971a6ba7._.js +15 -12
  392. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_chat-ui_bfeda794._.js +2 -2
  393. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_thread_WorkspaceSidebar_tsx_e660301b._.js +1 -1
  394. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_54bf563f._.js +3 -0
  395. package/cloud-runtime/standalone/.next/server/instrumentation.js +1 -1
  396. package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
  397. package/cloud-runtime/standalone/.next/server/next-font-manifest.js +1 -1
  398. package/cloud-runtime/standalone/.next/server/next-font-manifest.json +4 -0
  399. package/cloud-runtime/standalone/.next/server/pages/404.html +2 -2
  400. package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
  401. package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
  402. package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
  403. package/cloud-runtime/standalone/.next/static/chunks/04c135686161dbb1.js +40 -0
  404. package/cloud-runtime/standalone/.next/static/chunks/0d63db0c39c0a3b2.js +1 -0
  405. package/cloud-runtime/standalone/.next/static/chunks/136ed07d84b14632.js +1 -0
  406. package/cloud-runtime/standalone/.next/static/chunks/18866ed04ed3a063.css +1 -0
  407. package/cloud-runtime/standalone/.next/static/chunks/1b808cdaa28a10b4.js +16 -0
  408. package/cloud-runtime/standalone/.next/static/chunks/{ccaf68956da192f8.js → 1bb38e61d891453c.js} +1 -1
  409. package/cloud-runtime/standalone/.next/static/chunks/2c7c8259c2b56bf5.js +1 -0
  410. package/cloud-runtime/standalone/.next/static/chunks/2da1f13d50dc4e54.js +1 -0
  411. package/cloud-runtime/standalone/.next/static/chunks/442eb8ef62bef9f9.js +3 -0
  412. package/cloud-runtime/standalone/.next/static/chunks/5f33b52d582b0bb4.js +1 -0
  413. package/cloud-runtime/standalone/.next/static/chunks/{1fa91c34c99502bf.js → 64c2961edd3a3b13.js} +1 -1
  414. package/cloud-runtime/standalone/.next/static/chunks/{db131a0b6350e416.js → 692ce04abdbb3970.js} +1 -1
  415. package/cloud-runtime/standalone/.next/static/chunks/83be8569d298c6b0.js +1 -0
  416. package/cloud-runtime/standalone/.next/static/chunks/87b3afe828c8cc52.js +1 -0
  417. package/cloud-runtime/standalone/.next/static/chunks/{14922fd23cdc223b.js → 9328740727c6456d.js} +1 -1
  418. package/cloud-runtime/standalone/.next/static/chunks/95d47e285ae9c031.js +1 -0
  419. package/cloud-runtime/standalone/.next/static/chunks/b9bf5d3ee92a1313.js +1 -0
  420. package/cloud-runtime/standalone/.next/static/chunks/ea35fb870141bcff.js +1 -0
  421. package/cloud-runtime/standalone/.next/static/chunks/f59722264449b61c.js +1 -0
  422. package/cloud-runtime/standalone/.next/static/chunks/f727d2c8f039511d.js +1 -0
  423. package/cloud-runtime/standalone/.next/static/chunks/{f4360c3e4089263f.js → f8706212baa8ec67.js} +1 -1
  424. package/cloud-runtime/standalone/.next/static/chunks/fd823c9d1381335d.js +1 -0
  425. package/cloud-runtime/standalone/app/api/linear/issues/route.ts +9 -2
  426. package/cloud-runtime/standalone/app/api/linear/options/route.ts +16 -4
  427. package/cloud-runtime/standalone/app/automations/page.tsx +11 -1
  428. package/cloud-runtime/standalone/app/folders/page.tsx +318 -0
  429. package/cloud-runtime/standalone/app/projects/[slug]/layout.tsx +11 -1
  430. package/cloud-runtime/standalone/components/LinearBoard.tsx +211 -28
  431. package/cloud-runtime/standalone/components/chat-ui/ChatContainer.tsx +10 -0
  432. package/cloud-runtime/standalone/components/linear/RunScriptManager.tsx +356 -0
  433. package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +55 -10
  434. package/cloud-runtime/standalone/hooks/useLinearIssues.ts +7 -3
  435. package/cloud-runtime/standalone/hooks/useLinearRunScripts.ts +115 -0
  436. package/cloud-runtime/standalone/instrumentation.ts +3 -0
  437. package/cloud-runtime/standalone/lib/cli-runner.ts +27 -6
  438. package/cloud-runtime/standalone/lib/linear-client.ts +33 -3
  439. package/cloud-runtime/standalone/lib/linear-execution-prompt.ts +92 -15
  440. package/cloud-runtime/standalone/lib/linear-issue-store.ts +33 -5
  441. package/cloud-runtime/standalone/lib/scheduled-task-skill.ts +119 -0
  442. package/cloud-runtime/standalone/state/automations/.state/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.json +8 -0
  443. package/cloud-runtime/standalone/state/automations/active/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.md +15 -0
  444. package/cloud-runtime/standalone/state/linearBoardFilters.ts +90 -0
  445. package/cloud-runtime/standalone/state/linearRunScripts.test.ts +99 -0
  446. package/cloud-runtime/standalone/state/linearRunScripts.ts +132 -0
  447. package/cloud-runtime/standalone/state/windowState.ts +21 -0
  448. package/cloud-runtime/standalone/tsconfig.tsbuildinfo +1 -1
  449. package/cloud-runtime/standalone/worker/index.js +147 -28
  450. package/package.json +1 -1
  451. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__1154e5b3._.js +0 -67
  452. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__3b83b657._.js +0 -147
  453. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6921fe3f._.js +0 -44
  454. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__70327010._.js +0 -134
  455. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__748c718f._.js +0 -147
  456. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__76290829._.js +0 -67
  457. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__79fa35e4._.js +0 -101
  458. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__8d205f82._.js +0 -48
  459. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__a7e0ac67._.js +0 -25
  460. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ad6d6402._.js +0 -67
  461. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__b133856b._.js +0 -61
  462. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ce2a1672._.js +0 -67
  463. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f168c6dc._.js +0 -25
  464. package/cloud-runtime/standalone/.next/server/chunks/_a93e80e8._.js +0 -3
  465. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__1c4256ce._.js +0 -3
  466. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__69887882._.js +0 -3
  467. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__bb149a22._.js +0 -3
  468. package/cloud-runtime/standalone/.next/server/chunks/ssr/_11ce4c04._.js +0 -95
  469. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1d26be78._.js +0 -3
  470. package/cloud-runtime/standalone/.next/server/chunks/ssr/_22e99a52._.js +0 -3
  471. package/cloud-runtime/standalone/.next/server/chunks/ssr/_260b10ce._.js +0 -3
  472. package/cloud-runtime/standalone/.next/server/chunks/ssr/_32c878b9._.js +0 -3
  473. package/cloud-runtime/standalone/.next/server/chunks/ssr/_4bfdfb14._.js +0 -3
  474. package/cloud-runtime/standalone/.next/server/chunks/ssr/_52fe115d._.js +0 -3
  475. package/cloud-runtime/standalone/.next/server/chunks/ssr/_69164b06._.js +0 -95
  476. package/cloud-runtime/standalone/.next/server/chunks/ssr/_77e1407a._.js +0 -3
  477. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7f7a828a._.js +0 -3
  478. package/cloud-runtime/standalone/.next/server/chunks/ssr/_84a166cb._.js +0 -3
  479. package/cloud-runtime/standalone/.next/server/chunks/ssr/_ba5903a7._.js +0 -3
  480. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cee3cf86._.js +0 -95
  481. package/cloud-runtime/standalone/.next/server/chunks/ssr/_ed4fece9._.js +0 -3
  482. package/cloud-runtime/standalone/.next/server/chunks/ssr/_f51a3112._.js +0 -3
  483. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_e8bdedc5._.js +0 -3
  484. package/cloud-runtime/standalone/.next/static/chunks/2362d5c0dcaa5d64.js +0 -1
  485. package/cloud-runtime/standalone/.next/static/chunks/2730394502dd3664.js +0 -1
  486. package/cloud-runtime/standalone/.next/static/chunks/2a9c83f8211196e0.js +0 -1
  487. package/cloud-runtime/standalone/.next/static/chunks/34dd491bc4ce9561.js +0 -1
  488. package/cloud-runtime/standalone/.next/static/chunks/37f07896b044d69f.css +0 -1
  489. package/cloud-runtime/standalone/.next/static/chunks/3dc50de1c86e1ce9.js +0 -1
  490. package/cloud-runtime/standalone/.next/static/chunks/4ea8f08087116055.js +0 -1
  491. package/cloud-runtime/standalone/.next/static/chunks/98c20da4973991f0.js +0 -1
  492. package/cloud-runtime/standalone/.next/static/chunks/a72fbac84e32f665.js +0 -1
  493. package/cloud-runtime/standalone/.next/static/chunks/a9da98f883ac833b.js +0 -1
  494. package/cloud-runtime/standalone/.next/static/chunks/b2127dc67c5ade9f.js +0 -1
  495. package/cloud-runtime/standalone/.next/static/chunks/b3377e39d47c71cf.js +0 -3
  496. package/cloud-runtime/standalone/.next/static/chunks/b553dba1f51e709b.js +0 -16
  497. package/cloud-runtime/standalone/.next/static/chunks/bf2a2fafb710e63c.js +0 -1
  498. package/cloud-runtime/standalone/.next/static/chunks/c0d17e0c37ba8e7a.js +0 -1
  499. package/cloud-runtime/standalone/.next/static/chunks/cca7c8e4ade050f0.js +0 -37
  500. package/cloud-runtime/standalone/state/automations/.state/24a6a5db-3b14-49c4-841f-29f10f015fbb.json +0 -8
  501. package/cloud-runtime/standalone/state/automations/active/24a6a5db-3b14-49c4-841f-29f10f015fbb.md +0 -17
  502. /package/cloud-runtime/standalone/.next/static/{1Q0q2lXllTpqCvmNQYtpD → gty0FO80D_lbq3o9lSpQQ}/_buildManifest.js +0 -0
  503. /package/cloud-runtime/standalone/.next/static/{1Q0q2lXllTpqCvmNQYtpD → gty0FO80D_lbq3o9lSpQQ}/_clientMiddlewareManifest.json +0 -0
  504. /package/cloud-runtime/standalone/.next/static/{1Q0q2lXllTpqCvmNQYtpD → 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)}]);
@@ -15,7 +15,14 @@ function toOptionalString(value: string | null): string | undefined {
15
15
 
16
16
  export async function GET(req: NextRequest) {
17
17
  const params = req.nextUrl.searchParams;
18
- const status = toOptionalString(params.get("status"));
18
+ const statuses = Array.from(
19
+ new Set(
20
+ params
21
+ .getAll("status")
22
+ .map((value) => value.trim())
23
+ .filter(Boolean)
24
+ )
25
+ );
19
26
  const search = toOptionalString(params.get("search"));
20
27
  const teamId = toOptionalString(params.get("teamId"));
21
28
  const assigneeIds = Array.from(
@@ -39,7 +46,7 @@ export async function GET(req: NextRequest) {
39
46
  projectSlug,
40
47
  });
41
48
  const data = await listLinearIssueSummaries({
42
- status,
49
+ statuses,
43
50
  search,
44
51
  assigneeIds,
45
52
  assignedToMe,
@@ -1,27 +1,39 @@
1
- import { NextResponse } from "next/server";
1
+ import { NextRequest, NextResponse } from "next/server";
2
2
  import { getLinearClient } from "@/lib/linear-client";
3
+ import { ensureLinearIssueCache } from "@/lib/linear-issues";
4
+ import { listCachedLinearIssueStatuses } from "@/lib/linear-issue-store";
3
5
 
4
6
  export const runtime = "nodejs";
5
7
  export const dynamic = "force-dynamic";
6
8
 
7
- export async function GET() {
9
+ function toOptionalString(value: string | null): string | undefined {
10
+ const trimmed = value?.trim();
11
+ return trimmed ? trimmed : undefined;
12
+ }
13
+
14
+ export async function GET(req: NextRequest) {
8
15
  const client = getLinearClient();
9
16
  if (!client) {
10
17
  return NextResponse.json({ error: "Not connected" }, { status: 401 });
11
18
  }
12
19
 
13
20
  try {
14
- const [assigneesResult, teamsResult, cyclesResult] = await Promise.allSettled([
21
+ const projectSlug = toOptionalString(req.nextUrl.searchParams.get("projectSlug"));
22
+ await ensureLinearIssueCache({ projectSlug });
23
+
24
+ const [assigneesResult, teamsResult, cyclesResult, statusesResult] = await Promise.allSettled([
15
25
  client.users(),
16
26
  client.teams(),
17
27
  client.cycles(),
28
+ listCachedLinearIssueStatuses(),
18
29
  ]);
19
30
 
20
31
  const assignees = assigneesResult.status === "fulfilled" ? assigneesResult.value : [];
21
32
  const teams = teamsResult.status === "fulfilled" ? teamsResult.value : [];
22
33
  const cycles = cyclesResult.status === "fulfilled" ? cyclesResult.value : [];
34
+ const statuses = statusesResult.status === "fulfilled" ? statusesResult.value : [];
23
35
 
24
- return NextResponse.json({ assignees, teams, cycles });
36
+ return NextResponse.json({ assignees, teams, cycles, statuses });
25
37
  } catch (err: any) {
26
38
  return NextResponse.json(
27
39
  { error: err.message ?? "Failed to fetch Linear filter options" },
@@ -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}
@@ -0,0 +1,318 @@
1
+ "use client";
2
+
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ import Link from "next/link";
5
+ import { ArrowLeft, Folder, FolderGit2, Pencil, Plus, Trash2, Check, X } from "lucide-react";
6
+ import Layout from "@/components/Layout";
7
+ import { Markdown } from "@/components/chat-ui/Markdown";
8
+ import DirectoryBrowser from "@/components/DirectoryBrowser";
9
+ import { useProjects, type ProjectWithRepos, type ProjectRepoInput } from "@/hooks/useProjects";
10
+
11
+ interface RepoWithProject {
12
+ repoId: string;
13
+ name: string;
14
+ path: string;
15
+ git_url?: string;
16
+ notes: string;
17
+ projectId: string;
18
+ projectName: string;
19
+ projectSlug: string;
20
+ }
21
+
22
+ export default function FoldersPage() {
23
+ const { projects, isLoading, refetch, updateProject } = useProjects();
24
+ const [editingId, setEditingId] = useState<string | null>(null);
25
+ const [editNotes, setEditNotes] = useState("");
26
+ const [saving, setSaving] = useState(false);
27
+ const [addingToProject, setAddingToProject] = useState<string | null>(null);
28
+ const [newFolderName, setNewFolderName] = useState("");
29
+ const textareaRef = useRef<HTMLTextAreaElement>(null);
30
+
31
+ // Flatten all repos across projects
32
+ const allRepos: RepoWithProject[] = projects.flatMap((p) =>
33
+ (p.repos ?? []).map((r) => ({
34
+ repoId: r.id,
35
+ name: r.name,
36
+ path: r.path ?? "",
37
+ git_url: r.git_url ?? "",
38
+ notes: r.notes ?? "",
39
+ projectId: p.id,
40
+ projectName: p.name,
41
+ projectSlug: p.slug,
42
+ }))
43
+ );
44
+
45
+ // Group by project — include all projects so empty ones can receive folders
46
+ const grouped = new Map<string, { project: { id: string; name: string; slug: string }; repos: RepoWithProject[] }>();
47
+ for (const p of projects) {
48
+ grouped.set(p.id, {
49
+ project: { id: p.id, name: p.name, slug: p.slug },
50
+ repos: [],
51
+ });
52
+ }
53
+ for (const repo of allRepos) {
54
+ grouped.get(repo.projectId)!.repos.push(repo);
55
+ }
56
+
57
+ const startEditing = (repo: RepoWithProject) => {
58
+ setEditingId(repo.repoId);
59
+ setEditNotes(repo.notes);
60
+ };
61
+
62
+ const autoResize = useCallback(() => {
63
+ const el = textareaRef.current;
64
+ if (!el) return;
65
+ el.style.height = "auto";
66
+ el.style.height = `${el.scrollHeight}px`;
67
+ }, []);
68
+
69
+ useEffect(() => {
70
+ if (editingId && textareaRef.current) {
71
+ textareaRef.current.focus();
72
+ textareaRef.current.setSelectionRange(textareaRef.current.value.length, textareaRef.current.value.length);
73
+ autoResize();
74
+ }
75
+ }, [editingId, autoResize]);
76
+
77
+ const cancelEditing = () => {
78
+ setEditingId(null);
79
+ setEditNotes("");
80
+ };
81
+
82
+ const saveNotes = useCallback(async (repo: RepoWithProject) => {
83
+ setSaving(true);
84
+ try {
85
+ const project = projects.find((p) => p.id === repo.projectId);
86
+ if (!project) return;
87
+
88
+ const updatedRepos: ProjectRepoInput[] = (project.repos ?? []).map((r) => ({
89
+ id: r.id,
90
+ name: r.name,
91
+ path: r.path ?? "",
92
+ git_url: r.git_url ?? "",
93
+ notes: r.id === repo.repoId ? editNotes : (r.notes ?? ""),
94
+ }));
95
+
96
+ await updateProject(repo.projectId, { repos: updatedRepos });
97
+ setEditingId(null);
98
+ setEditNotes("");
99
+ } catch (err) {
100
+ console.error("Failed to update notes:", err);
101
+ } finally {
102
+ setSaving(false);
103
+ }
104
+ }, [projects, editNotes, updateProject]);
105
+
106
+ const handleKeyDown = (e: React.KeyboardEvent, repo: RepoWithProject) => {
107
+ if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
108
+ e.preventDefault();
109
+ void saveNotes(repo);
110
+ } else if (e.key === "Escape") {
111
+ cancelEditing();
112
+ }
113
+ };
114
+
115
+ const removeFolder = useCallback(async (repo: RepoWithProject) => {
116
+ const project = projects.find((p) => p.id === repo.projectId);
117
+ if (!project) return;
118
+ const updatedRepos: ProjectRepoInput[] = (project.repos ?? [])
119
+ .filter((r) => r.id !== repo.repoId)
120
+ .map((r) => ({ id: r.id, name: r.name, path: r.path ?? "", git_url: r.git_url ?? "", notes: r.notes ?? "" }));
121
+ await updateProject(repo.projectId, { repos: updatedRepos });
122
+ }, [projects, updateProject]);
123
+
124
+ const addFolder = useCallback(async (projectId: string, path: string) => {
125
+ const project = projects.find((p) => p.id === projectId);
126
+ if (!project) return;
127
+ const name = newFolderName.trim() || path.split("/").filter(Boolean).pop() || "folder";
128
+ const existingRepos: ProjectRepoInput[] = (project.repos ?? []).map((r) => ({
129
+ id: r.id, name: r.name, path: r.path ?? "", git_url: r.git_url ?? "", notes: r.notes ?? "",
130
+ }));
131
+ await updateProject(projectId, { repos: [...existingRepos, { name, path }] });
132
+ setAddingToProject(null);
133
+ setNewFolderName("");
134
+ }, [projects, newFolderName, updateProject]);
135
+
136
+ return (
137
+ <Layout>
138
+ <div className="max-w-5xl mx-auto w-full flex flex-col min-h-full">
139
+ <header className="flex items-center gap-4 py-8">
140
+ <Link
141
+ href="/"
142
+ className="p-2 rounded-lg border border-[var(--card-border)] bg-[var(--card-bg)] hover:border-[var(--primary)] transition-all"
143
+ >
144
+ <ArrowLeft size={16} />
145
+ </Link>
146
+ <div>
147
+ <h1 className="text-3xl font-bold tracking-tight">Folders</h1>
148
+ <p className="text-[var(--muted-foreground)] mt-1">
149
+ All folder paths across your projects.
150
+ </p>
151
+ </div>
152
+ </header>
153
+
154
+ {isLoading ? (
155
+ <div className="flex-1 flex items-center justify-center py-20">
156
+ <div className="flex flex-col items-center gap-4">
157
+ <span className="spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full" />
158
+ <p className="text-sm text-[var(--muted-foreground)] animate-pulse">Loading folders...</p>
159
+ </div>
160
+ </div>
161
+ ) : projects.length === 0 ? (
162
+ <div className="flex-1 flex flex-col items-center justify-center py-20 animate-fade-in">
163
+ <div className="w-24 h-24 rounded-3xl bg-[var(--card-bg)] border border-[var(--card-border)] flex items-center justify-center text-4xl mb-6 shadow-xl">
164
+ <Folder size={40} className="text-[var(--muted-foreground)]" />
165
+ </div>
166
+ <h2 className="text-2xl font-bold mb-2">No projects yet</h2>
167
+ <p className="text-[var(--muted-foreground)] text-center max-w-sm mb-8 leading-relaxed">
168
+ Create a project first, then add folders to it.
169
+ </p>
170
+ <Link
171
+ href="/projects"
172
+ className="btn-primary px-8 py-3 text-lg shadow-xl shadow-[var(--primary)]/20"
173
+ >
174
+ Go to Projects
175
+ </Link>
176
+ </div>
177
+ ) : (
178
+ <div className="space-y-8 pb-20">
179
+ {Array.from(grouped.values()).map(({ project, repos }) => (
180
+ <section key={project.id}>
181
+ <div className="flex items-center gap-2 mb-3">
182
+ <Link
183
+ href={`/projects/${project.slug}`}
184
+ className="text-sm font-semibold text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors uppercase tracking-wide"
185
+ >
186
+ {project.name}
187
+ </Link>
188
+ </div>
189
+ <div className="space-y-2">
190
+ {repos.map((repo) => {
191
+ const isEditing = editingId === repo.repoId;
192
+ return (
193
+ <div
194
+ key={repo.repoId}
195
+ className="group rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 transition-all hover:border-[var(--card-border-hover,var(--card-border))]"
196
+ >
197
+ <div className="flex items-start gap-3">
198
+ <div className="mt-0.5 flex-shrink-0 text-[var(--muted-foreground)]">
199
+ {repo.git_url ? <FolderGit2 size={16} /> : <Folder size={16} />}
200
+ </div>
201
+ <div className="flex-1 min-w-0">
202
+ <button
203
+ type="button"
204
+ onClick={() => void removeFolder(repo)}
205
+ className="float-right ml-2 p-1 rounded-md text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 hover:text-red-400 hover:bg-red-400/10 transition-all"
206
+ aria-label="Remove folder"
207
+ title="Remove folder"
208
+ >
209
+ <Trash2 size={14} />
210
+ </button>
211
+ <div className="flex items-center gap-2">
212
+ <span className="font-medium text-sm truncate">
213
+ {repo.name || repo.path}
214
+ </span>
215
+ {repo.name && repo.path && (
216
+ <span className="text-xs text-[var(--muted-foreground)] truncate font-mono">
217
+ {repo.path}
218
+ </span>
219
+ )}
220
+ </div>
221
+ {repo.git_url && (
222
+ <p className="text-xs text-[var(--muted-foreground)] mt-0.5 font-mono truncate">
223
+ {repo.git_url}
224
+ </p>
225
+ )}
226
+
227
+ {/* Notes section */}
228
+ {isEditing ? (
229
+ <div className="mt-2">
230
+ <textarea
231
+ ref={textareaRef}
232
+ value={editNotes}
233
+ onChange={(e) => { setEditNotes(e.target.value); autoResize(); }}
234
+ onKeyDown={(e) => handleKeyDown(e, repo)}
235
+ placeholder="What is this folder about? (Markdown supported)"
236
+ rows={1}
237
+ className="w-full rounded-lg border border-[var(--card-border)] bg-[var(--background)] px-3 py-2 text-sm font-mono focus:border-[var(--primary)] focus:outline-none resize-none overflow-hidden"
238
+ />
239
+ <div className="flex items-center gap-2 mt-1.5">
240
+ <button
241
+ onClick={() => void saveNotes(repo)}
242
+ disabled={saving}
243
+ className="inline-flex items-center gap-1 px-2.5 py-1 rounded-md text-xs font-medium bg-[var(--primary)] text-white hover:opacity-90 transition-opacity disabled:opacity-50"
244
+ >
245
+ <Check size={12} />
246
+ {saving ? "Saving..." : "Save"}
247
+ </button>
248
+ <button
249
+ onClick={cancelEditing}
250
+ className="inline-flex items-center gap-1 px-2.5 py-1 rounded-md text-xs font-medium text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors"
251
+ >
252
+ <X size={12} />
253
+ Cancel
254
+ </button>
255
+ <span className="text-[10px] text-[var(--muted-foreground)] ml-auto">
256
+ Cmd+Enter to save
257
+ </span>
258
+ </div>
259
+ </div>
260
+ ) : (
261
+ <div
262
+ className="group/notes mt-1 cursor-pointer"
263
+ onClick={() => startEditing(repo)}
264
+ >
265
+ {repo.notes ? (
266
+ <div className="text-sm text-[var(--muted-foreground)] leading-relaxed relative">
267
+ <Markdown content={repo.notes} />
268
+ <Pencil
269
+ size={11}
270
+ className="absolute top-0 right-0 opacity-0 group-hover/notes:opacity-60 transition-opacity"
271
+ />
272
+ </div>
273
+ ) : (
274
+ <p className="text-xs text-[var(--muted-foreground)] opacity-0 group-hover:opacity-60 transition-opacity italic">
275
+ Click to add notes...
276
+ </p>
277
+ )}
278
+ </div>
279
+ )}
280
+ </div>
281
+ </div>
282
+ </div>
283
+ );
284
+ })}
285
+ {addingToProject === project.id ? (
286
+ <div className="mt-3 space-y-2">
287
+ <input
288
+ type="text"
289
+ value={newFolderName}
290
+ onChange={(e) => setNewFolderName(e.target.value)}
291
+ placeholder="Folder name (optional)"
292
+ className="w-full rounded-lg border border-[var(--card-border)] bg-[var(--background)] px-3 py-2 text-sm focus:border-[var(--primary)] focus:outline-none"
293
+ />
294
+ <DirectoryBrowser
295
+ initialPath=""
296
+ onSelect={(path) => void addFolder(project.id, path)}
297
+ onCancel={() => { setAddingToProject(null); setNewFolderName(""); }}
298
+ />
299
+ </div>
300
+ ) : (
301
+ <button
302
+ type="button"
303
+ onClick={() => setAddingToProject(project.id)}
304
+ className="mt-3 inline-flex items-center gap-1.5 text-xs font-medium text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors"
305
+ >
306
+ <Plus size={14} />
307
+ Add folder
308
+ </button>
309
+ )}
310
+ </div>
311
+ </section>
312
+ ))}
313
+ </div>
314
+ )}
315
+ </div>
316
+ </Layout>
317
+ );
318
+ }
@@ -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}