@mndrk/agx 2.0.46 → 2.0.47

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 (430) 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/chat/route.js +2 -2
  41. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/.next/server/app/api/file-search/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/.next/server/app/api/health/route.js +1 -1
  44. package/cloud-runtime/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js +1 -1
  46. package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js +1 -1
  48. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js.nft.json +1 -1
  49. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js +1 -1
  50. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js +1 -1
  52. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js +5 -2
  54. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js +1 -1
  57. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js +1 -1
  59. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js +1 -1
  61. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js +1 -1
  63. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js +1 -1
  65. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js +1 -1
  67. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js +1 -1
  69. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js +1 -1
  71. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js +1 -1
  73. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js +1 -1
  75. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js +1 -1
  77. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js +1 -1
  79. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js +1 -1
  81. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js +1 -1
  84. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js +1 -1
  86. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/.next/server/app/api/skills/assign/route.js +1 -1
  90. package/cloud-runtime/standalone/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/.next/server/app/api/skills/available/route.js +1 -1
  92. package/cloud-runtime/standalone/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/.next/server/app/api/skills/detail/route.js +1 -1
  94. package/cloud-runtime/standalone/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/.next/server/app/api/skills/history/route.js +1 -1
  96. package/cloud-runtime/standalone/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/.next/server/app/api/skills/learn/route.js +1 -1
  98. package/cloud-runtime/standalone/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/.next/server/app/api/skills/route.js +1 -1
  100. package/cloud-runtime/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/.next/server/app/api/skills/unlearn/route.js +1 -1
  102. package/cloud-runtime/standalone/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/.next/server/app/api/status/route.js.nft.json +1 -1
  104. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js +1 -1
  105. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js.nft.json +1 -1
  106. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js +1 -1
  107. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  108. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js +1 -1
  109. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  110. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js +1 -1
  111. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
  112. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -1
  113. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
  114. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js +1 -1
  115. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  116. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js +1 -1
  117. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  118. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js +1 -1
  119. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  120. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js +1 -1
  121. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  122. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js +1 -1
  123. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  124. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js +1 -1
  125. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  126. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js +1 -1
  127. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  128. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js +1 -1
  129. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  130. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js +1 -1
  131. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
  132. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js +1 -1
  133. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
  134. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js +1 -1
  135. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
  136. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js +1 -1
  137. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  138. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js +1 -1
  139. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  140. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js +1 -1
  141. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  142. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js +1 -1
  143. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js +1 -1
  145. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js +1 -1
  147. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  148. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js +1 -1
  149. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  150. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  151. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  152. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js +1 -1
  153. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
  154. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js +1 -1
  155. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  156. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js +1 -1
  157. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  158. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js +1 -1
  159. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  160. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js +1 -1
  161. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js.nft.json +1 -1
  162. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js +1 -1
  163. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js.nft.json +1 -1
  164. package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  166. package/cloud-runtime/standalone/.next/server/app/automations.html +2 -2
  167. package/cloud-runtime/standalone/.next/server/app/automations.rsc +3 -3
  168. package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +3 -3
  169. package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  170. package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  171. package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
  172. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
  173. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  174. package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
  175. package/cloud-runtime/standalone/.next/server/app/board.html +2 -2
  176. package/cloud-runtime/standalone/.next/server/app/board.rsc +2 -2
  177. package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +2 -2
  178. package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +1 -1
  179. package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +2 -2
  180. package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  182. package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +1 -1
  183. package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  184. package/cloud-runtime/standalone/.next/server/app/execution-graph.html +2 -2
  185. package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +2 -2
  186. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +2 -2
  187. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  188. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  189. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  190. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +1 -1
  191. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/.next/server/app/folders/page/app-paths-manifest.json +3 -0
  193. package/cloud-runtime/standalone/.next/server/app/folders/page/build-manifest.json +18 -0
  194. package/cloud-runtime/standalone/.next/server/app/folders/page/next-font-manifest.json +11 -0
  195. package/cloud-runtime/standalone/.next/server/app/folders/page/react-loadable-manifest.json +1 -0
  196. package/cloud-runtime/standalone/.next/server/app/folders/page/server-reference-manifest.json +4 -0
  197. package/cloud-runtime/standalone/.next/server/app/folders/page.js +15 -0
  198. package/cloud-runtime/standalone/.next/server/app/folders/page.js.map +5 -0
  199. package/cloud-runtime/standalone/.next/server/app/folders/page.js.nft.json +1 -0
  200. package/cloud-runtime/standalone/.next/server/app/folders/page_client-reference-manifest.js +2 -0
  201. package/cloud-runtime/standalone/.next/server/app/folders.html +21 -0
  202. package/cloud-runtime/standalone/.next/server/app/folders.meta +15 -0
  203. package/cloud-runtime/standalone/.next/server/app/folders.rsc +24 -0
  204. package/cloud-runtime/standalone/.next/server/app/folders.segments/_full.segment.rsc +24 -0
  205. package/cloud-runtime/standalone/.next/server/app/folders.segments/_head.segment.rsc +5 -0
  206. package/cloud-runtime/standalone/.next/server/app/folders.segments/_index.segment.rsc +10 -0
  207. package/cloud-runtime/standalone/.next/server/app/folders.segments/_tree.segment.rsc +5 -0
  208. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +9 -0
  209. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders.segment.rsc +4 -0
  210. package/cloud-runtime/standalone/.next/server/app/index.html +2 -2
  211. package/cloud-runtime/standalone/.next/server/app/index.rsc +3 -3
  212. package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  213. package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  214. package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  215. package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  216. package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  217. package/cloud-runtime/standalone/.next/server/app/page.js.nft.json +1 -1
  218. package/cloud-runtime/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  219. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  220. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  221. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  222. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  223. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  224. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  225. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  226. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  227. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  228. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  229. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  230. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  231. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  232. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  233. package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +2 -2
  234. package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +2 -2
  235. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  236. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  237. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  238. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  239. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  240. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  241. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  242. package/cloud-runtime/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  243. package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  244. package/cloud-runtime/standalone/.next/server/app/projects.html +2 -2
  245. package/cloud-runtime/standalone/.next/server/app/projects.rsc +3 -3
  246. package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  247. package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  248. package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  249. package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  250. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  251. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  252. package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  253. package/cloud-runtime/standalone/.next/server/app/settings.html +2 -2
  254. package/cloud-runtime/standalone/.next/server/app/settings.rsc +2 -2
  255. package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  256. package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  257. package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  258. package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  259. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  260. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  261. package/cloud-runtime/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  262. package/cloud-runtime/standalone/.next/server/app/skills.html +2 -2
  263. package/cloud-runtime/standalone/.next/server/app/skills.rsc +2 -2
  264. package/cloud-runtime/standalone/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  265. package/cloud-runtime/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  266. package/cloud-runtime/standalone/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  267. package/cloud-runtime/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  268. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  269. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  270. package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
  271. package/cloud-runtime/standalone/.next/server/app/status.html +2 -2
  272. package/cloud-runtime/standalone/.next/server/app/status.rsc +2 -2
  273. package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +2 -2
  274. package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +1 -1
  275. package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +2 -2
  276. package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  277. package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  278. package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +1 -1
  279. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  280. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  281. package/cloud-runtime/standalone/.next/server/app/welcome/page.js.nft.json +1 -1
  282. package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  283. package/cloud-runtime/standalone/.next/server/app/welcome.html +2 -2
  284. package/cloud-runtime/standalone/.next/server/app/welcome.rsc +3 -3
  285. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +3 -3
  286. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
  287. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +2 -2
  288. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
  289. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +2 -2
  290. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
  291. package/cloud-runtime/standalone/.next/server/app-paths-manifest.json +1 -0
  292. package/cloud-runtime/standalone/.next/server/chunks/{[externals]__31e26905._.js → [externals]__7b4c6b2b._.js} +1 -1
  293. package/cloud-runtime/standalone/.next/server/chunks/[externals]__a21cc96d._.js +3 -0
  294. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5aaf8c25._.js → [root-of-the-server]__143fdf69._.js} +2 -2
  295. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__74a37ca4._.js → [root-of-the-server]__158df4bf._.js} +2 -2
  296. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c029daab._.js → [root-of-the-server]__179cb224._.js} +2 -2
  297. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3fd3c5b1._.js → [root-of-the-server]__1a1f66b1._.js} +2 -2
  298. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__20a2cb22._.js +150 -0
  299. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d2ac93f2._.js → [root-of-the-server]__23b075bd._.js} +2 -2
  300. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3bf516b6._.js → [root-of-the-server]__3170b7bf._.js} +2 -2
  301. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__558389f7._.js → [root-of-the-server]__33865410._.js} +2 -2
  302. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__4c2d07e0._.js → [root-of-the-server]__36d15de5._.js} +2 -2
  303. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__3fae531a._.js +89 -0
  304. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__76658fd6._.js → [root-of-the-server]__4cb22e4d._.js} +2 -2
  305. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ebece93b._.js → [root-of-the-server]__4ce74056._.js} +2 -2
  306. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__635fe0f9._.js → [root-of-the-server]__538b0bdd._.js} +2 -2
  307. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3b1431b6._.js → [root-of-the-server]__5c55f67a._.js} +2 -2
  308. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e20922e8._.js → [root-of-the-server]__69a3c480._.js} +2 -2
  309. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__42804c1d._.js → [root-of-the-server]__6c53437e._.js} +1 -1
  310. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__8cbd8c56._.js +79 -0
  311. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__92ed2961._.js +48 -0
  312. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__509b1dd2._.js → [root-of-the-server]__94499e9a._.js} +2 -2
  313. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ddb3aa76._.js → [root-of-the-server]__a280fa63._.js} +2 -2
  314. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__8c7d1318._.js → [root-of-the-server]__a2d31df1._.js} +2 -2
  315. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__a3955224._.js +150 -0
  316. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__4b0b5fe1._.js → [root-of-the-server]__a7b2350e._.js} +2 -2
  317. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5b13e7a5._.js → [root-of-the-server]__ab655b9f._.js} +2 -2
  318. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ac6326b6._.js +106 -0
  319. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__0284ea89._.js → [root-of-the-server]__b2748382._.js} +2 -2
  320. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e7be56ba._.js → [root-of-the-server]__b627cb83._.js} +2 -2
  321. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__0e98af48._.js → [root-of-the-server]__bab85495._.js} +63 -18
  322. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__dca6026a._.js → [root-of-the-server]__c21747df._.js} +2 -2
  323. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c22dd3a6._.js +179 -0
  324. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c8890cd6._.js +150 -0
  325. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__aad349b4._.js → [root-of-the-server]__ca4987eb._.js} +1 -1
  326. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__fcdaf6d8._.js → [root-of-the-server]__d16caed5._.js} +2 -2
  327. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__1f53e82e._.js → [root-of-the-server]__d324f8a1._.js} +2 -2
  328. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__6988985c._.js → [root-of-the-server]__da645a5e._.js} +2 -2
  329. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d4f42f49._.js → [root-of-the-server]__e58e9f91._.js} +2 -2
  330. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f4b3df16._.js +3 -0
  331. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c8195768._.js → [root-of-the-server]__f7f336c7._.js} +1 -1
  332. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__fcfa3690._.js +93 -0
  333. package/cloud-runtime/standalone/.next/server/chunks/_4d07f8db._.js +3 -0
  334. package/cloud-runtime/standalone/.next/server/chunks/lib_7f7835f1._.js +66 -21
  335. package/cloud-runtime/standalone/.next/server/chunks/lib_9f439b27._.js +61 -16
  336. package/cloud-runtime/standalone/.next/server/chunks/lib_f81d6da9._.js +70 -0
  337. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__4c9d0778._.js → [root-of-the-server]__01e1641e._.js} +2 -2
  338. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__21a9eaef._.js +3 -0
  339. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__4140bb73._.js +3 -0
  340. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ffbc2e98._.js → [root-of-the-server]__5e73414b._.js} +2 -2
  341. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__9ad05ace._.js +3 -0
  342. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__a42e4555._.js → [root-of-the-server]__d96bb3b5._.js} +2 -2
  343. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__ec81a3d9._.js +3 -0
  344. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1d949e96._.js +3 -0
  345. package/cloud-runtime/standalone/.next/server/chunks/ssr/_32a156b6._.js +3 -0
  346. package/cloud-runtime/standalone/.next/server/chunks/ssr/_43c091dc._.js +3 -0
  347. package/cloud-runtime/standalone/.next/server/chunks/ssr/_45175f47._.js +3 -0
  348. package/cloud-runtime/standalone/.next/server/chunks/ssr/_4f0c544d._.js +3 -0
  349. package/cloud-runtime/standalone/.next/server/chunks/ssr/_97f6a18e._.js +3 -0
  350. package/cloud-runtime/standalone/.next/server/chunks/ssr/{_f51a3112._.js → _a511a014._.js} +2 -2
  351. package/cloud-runtime/standalone/.next/server/chunks/ssr/_b7009996._.js +3 -0
  352. package/cloud-runtime/standalone/.next/server/chunks/ssr/_c3a3a829._.js +3 -0
  353. package/cloud-runtime/standalone/.next/server/chunks/ssr/_e70d5625._.js +4 -0
  354. package/cloud-runtime/standalone/.next/server/chunks/ssr/_f53d31e0._.js +3 -0
  355. package/cloud-runtime/standalone/.next/server/chunks/ssr/_next-internal_server_app_folders_page_actions_9c8dfb6c.js +3 -0
  356. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_projects_[slug]_linear_page_tsx_971a6ba7._.js +3 -3
  357. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_chat-ui_bfeda794._.js +1 -1
  358. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_thread_WorkspaceSidebar_tsx_e660301b._.js +1 -1
  359. package/cloud-runtime/standalone/.next/server/instrumentation.js +1 -1
  360. package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
  361. package/cloud-runtime/standalone/.next/server/next-font-manifest.js +1 -1
  362. package/cloud-runtime/standalone/.next/server/next-font-manifest.json +4 -0
  363. package/cloud-runtime/standalone/.next/server/pages/404.html +2 -2
  364. package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
  365. package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
  366. package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
  367. package/cloud-runtime/standalone/.next/static/chunks/14fff3c493ea9c54.js +1 -0
  368. package/cloud-runtime/standalone/.next/static/chunks/1b808cdaa28a10b4.js +16 -0
  369. package/cloud-runtime/standalone/.next/static/chunks/{f4360c3e4089263f.js → 31fe4e36a00fd7b5.js} +1 -1
  370. package/cloud-runtime/standalone/.next/static/chunks/41c518743656a291.js +1 -0
  371. package/cloud-runtime/standalone/.next/static/chunks/{14922fd23cdc223b.js → 4343e7fe5bf5f34a.js} +1 -1
  372. package/cloud-runtime/standalone/.next/static/chunks/5405540470146645.js +1 -0
  373. package/cloud-runtime/standalone/.next/static/chunks/69f2db4b9996b9c1.js +37 -0
  374. package/cloud-runtime/standalone/.next/static/chunks/8aeb69ceb497ad85.css +1 -0
  375. package/cloud-runtime/standalone/.next/static/chunks/{1fa91c34c99502bf.js → 97c11137cd6fc860.js} +1 -1
  376. package/cloud-runtime/standalone/.next/static/chunks/baf5d39d089efb87.js +1 -0
  377. package/cloud-runtime/standalone/.next/static/chunks/c78969fde5798275.js +1 -0
  378. package/cloud-runtime/standalone/.next/static/chunks/d3dc6fadb96ab3a2.js +1 -0
  379. package/cloud-runtime/standalone/.next/static/chunks/{b3377e39d47c71cf.js → fdadad2379039dce.js} +1 -1
  380. package/cloud-runtime/standalone/app/api/linear/issues/route.ts +9 -2
  381. package/cloud-runtime/standalone/app/api/linear/options/route.ts +16 -4
  382. package/cloud-runtime/standalone/app/folders/page.tsx +318 -0
  383. package/cloud-runtime/standalone/components/LinearBoard.tsx +93 -7
  384. package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +20 -10
  385. package/cloud-runtime/standalone/hooks/useLinearIssues.ts +7 -3
  386. package/cloud-runtime/standalone/instrumentation.ts +3 -0
  387. package/cloud-runtime/standalone/lib/cli-runner.ts +27 -6
  388. package/cloud-runtime/standalone/lib/linear-issue-store.ts +33 -5
  389. package/cloud-runtime/standalone/lib/scheduled-task-skill.ts +119 -0
  390. package/cloud-runtime/standalone/state/automations/.state/24a6a5db-3b14-49c4-841f-29f10f015fbb.json +3 -3
  391. package/cloud-runtime/standalone/state/linearBoardFilters.ts +90 -0
  392. package/cloud-runtime/standalone/worker/index.js +147 -28
  393. package/package.json +1 -1
  394. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__3b83b657._.js +0 -147
  395. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6921fe3f._.js +0 -44
  396. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__70327010._.js +0 -134
  397. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__748c718f._.js +0 -147
  398. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__79fa35e4._.js +0 -101
  399. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__8d205f82._.js +0 -48
  400. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__a7e0ac67._.js +0 -25
  401. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__b133856b._.js +0 -61
  402. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ce2a1672._.js +0 -67
  403. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f168c6dc._.js +0 -25
  404. package/cloud-runtime/standalone/.next/server/chunks/_a93e80e8._.js +0 -3
  405. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__1c4256ce._.js +0 -3
  406. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f59f0dc7._.js +0 -3
  407. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1d26be78._.js +0 -3
  408. package/cloud-runtime/standalone/.next/server/chunks/ssr/_22e99a52._.js +0 -3
  409. package/cloud-runtime/standalone/.next/server/chunks/ssr/_260b10ce._.js +0 -3
  410. package/cloud-runtime/standalone/.next/server/chunks/ssr/_32c878b9._.js +0 -3
  411. package/cloud-runtime/standalone/.next/server/chunks/ssr/_4bfdfb14._.js +0 -3
  412. package/cloud-runtime/standalone/.next/server/chunks/ssr/_52fe115d._.js +0 -3
  413. package/cloud-runtime/standalone/.next/server/chunks/ssr/_77e1407a._.js +0 -3
  414. package/cloud-runtime/standalone/.next/server/chunks/ssr/_84a166cb._.js +0 -3
  415. package/cloud-runtime/standalone/.next/server/chunks/ssr/_ba5903a7._.js +0 -3
  416. package/cloud-runtime/standalone/.next/server/chunks/ssr/_ed4fece9._.js +0 -3
  417. package/cloud-runtime/standalone/.next/static/chunks/2362d5c0dcaa5d64.js +0 -1
  418. package/cloud-runtime/standalone/.next/static/chunks/2730394502dd3664.js +0 -1
  419. package/cloud-runtime/standalone/.next/static/chunks/34dd491bc4ce9561.js +0 -1
  420. package/cloud-runtime/standalone/.next/static/chunks/37f07896b044d69f.css +0 -1
  421. package/cloud-runtime/standalone/.next/static/chunks/3dc50de1c86e1ce9.js +0 -1
  422. package/cloud-runtime/standalone/.next/static/chunks/4ea8f08087116055.js +0 -1
  423. package/cloud-runtime/standalone/.next/static/chunks/98c20da4973991f0.js +0 -1
  424. package/cloud-runtime/standalone/.next/static/chunks/a72fbac84e32f665.js +0 -1
  425. package/cloud-runtime/standalone/.next/static/chunks/b553dba1f51e709b.js +0 -16
  426. package/cloud-runtime/standalone/.next/static/chunks/c0d17e0c37ba8e7a.js +0 -1
  427. package/cloud-runtime/standalone/.next/static/chunks/cca7c8e4ade050f0.js +0 -37
  428. /package/cloud-runtime/standalone/.next/static/{1Q0q2lXllTpqCvmNQYtpD → lOB5InbmVcurTLQo9J3KK}/_buildManifest.js +0 -0
  429. /package/cloud-runtime/standalone/.next/static/{1Q0q2lXllTpqCvmNQYtpD → lOB5InbmVcurTLQo9J3KK}/_clientMiddlewareManifest.json +0 -0
  430. /package/cloud-runtime/standalone/.next/static/{1Q0q2lXllTpqCvmNQYtpD → lOB5InbmVcurTLQo9J3KK}/_ssgManifest.js +0 -0
@@ -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
+ }
@@ -10,6 +10,10 @@ import { useGroupChat } from "@/hooks/useGroupChat";
10
10
  import { useProcessPolling } from "@/hooks/useProcessPolling";
11
11
  import { Markdown } from "@/components/chat-ui/Markdown";
12
12
  import { stripMarkers } from "@/lib/chat-utils";
13
+ import {
14
+ loadLinearBoardFilters,
15
+ persistLinearBoardFilters,
16
+ } from "@/state/linearBoardFilters";
13
17
  import {
14
18
  orderParticipantIds,
15
19
  type ComposerRoutingMetadata,
@@ -289,10 +293,14 @@ function MultiFilterPopdown({
289
293
  if (selectedOptions.length === 0) {
290
294
  return emptyLabel ?? label;
291
295
  }
296
+ if (selectedOptions.length === options.length) {
297
+ return emptyLabel ?? label;
298
+ }
292
299
  if (selectedOptions.length === 1) {
293
300
  return selectedOptions[0]?.label ?? (emptyLabel ?? label);
294
301
  }
295
- return `${selectedOptions.length} assignees`;
302
+ const lowerLabel = label.toLowerCase();
303
+ return `${selectedOptions.length} ${lowerLabel}${lowerLabel.endsWith("s") ? "es" : "s"}`;
296
304
  })();
297
305
 
298
306
  useEffect(() => {
@@ -1003,9 +1011,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1003
1011
  const [runsPanelWidth, setRunsPanelWidth] = useState(224);
1004
1012
  const [search, setSearch] = useState("");
1005
1013
  const [debouncedSearch, setDebouncedSearch] = useState("");
1014
+ const [filterOptionsLoaded, setFilterOptionsLoaded] = useState(false);
1006
1015
  const [assignees, setAssignees] = useState<LinearEntityOption[]>([]);
1016
+ const [statuses, setStatuses] = useState<string[]>([]);
1007
1017
  const [workspaces, setWorkspaces] = useState<LinearEntityOption[]>([]);
1008
1018
  const [selectedAssigneeIds, setSelectedAssigneeIds] = useState<string[]>([]);
1019
+ const [selectedStatuses, setSelectedStatuses] = useState<string[]>([]);
1009
1020
  const [cycles, setCycles] = useState<CycleOption[]>([]);
1010
1021
  const [selectedCycleId, setSelectedCycleId] = useState("");
1011
1022
  const [selectedWorkspaceId, setSelectedWorkspaceId] = useState("");
@@ -1015,6 +1026,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1015
1026
  const [pickerIssue, setPickerIssue] = useState<LinearIssue | null>(null);
1016
1027
  const [pickerAnchor, setPickerAnchor] = useState<{ top: number; left: number } | null>(null);
1017
1028
  const searchDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
1029
+ const skipNextFilterPersistRef = useRef(true);
1018
1030
 
1019
1031
  const handleSearchChange = useCallback((value: string) => {
1020
1032
  setSearch(value);
@@ -1032,42 +1044,94 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1032
1044
  };
1033
1045
  }, []);
1034
1046
 
1047
+ useEffect(() => {
1048
+ const storedFilters = loadLinearBoardFilters(projectSlug);
1049
+ skipNextFilterPersistRef.current = true;
1050
+ setSearch(storedFilters.search);
1051
+ setDebouncedSearch(storedFilters.search);
1052
+ setSelectedAssigneeIds(storedFilters.assigneeIds);
1053
+ setSelectedStatuses(storedFilters.statuses);
1054
+ setSelectedWorkspaceId(storedFilters.teamId);
1055
+ setSelectedCycleId(storedFilters.cycleId);
1056
+ }, [projectSlug]);
1057
+
1058
+ useEffect(() => {
1059
+ if (skipNextFilterPersistRef.current) {
1060
+ skipNextFilterPersistRef.current = false;
1061
+ return;
1062
+ }
1063
+
1064
+ persistLinearBoardFilters(projectSlug, {
1065
+ search,
1066
+ assigneeIds: selectedAssigneeIds,
1067
+ statuses: selectedStatuses,
1068
+ teamId: selectedWorkspaceId,
1069
+ cycleId: selectedCycleId,
1070
+ });
1071
+ }, [projectSlug, search, selectedAssigneeIds, selectedStatuses, selectedWorkspaceId, selectedCycleId]);
1072
+
1035
1073
  // Fetch filter options when connected
1036
1074
  useEffect(() => {
1037
1075
  if (!connected) return;
1038
1076
  let cancelled = false;
1039
- fetch("/api/linear/options")
1077
+ setFilterOptionsLoaded(false);
1078
+ const params = new URLSearchParams();
1079
+ if (projectSlug) {
1080
+ params.set("projectSlug", projectSlug);
1081
+ }
1082
+ const url = params.size > 0 ? `/api/linear/options?${params.toString()}` : "/api/linear/options";
1083
+ fetch(url)
1040
1084
  .then((res) => res.json())
1041
1085
  .then((data) => {
1042
1086
  if (cancelled) {
1043
1087
  return;
1044
1088
  }
1045
1089
  setAssignees(Array.isArray(data.assignees) ? data.assignees : []);
1090
+ setStatuses(Array.isArray(data.statuses) ? data.statuses : []);
1046
1091
  setWorkspaces(Array.isArray(data.teams) ? data.teams : []);
1047
1092
  setCycles(Array.isArray(data.cycles) ? data.cycles : []);
1093
+ setFilterOptionsLoaded(true);
1048
1094
  })
1049
1095
  .catch(() => {
1050
1096
  if (!cancelled) {
1051
1097
  setAssignees([]);
1098
+ setStatuses([]);
1052
1099
  setWorkspaces([]);
1053
1100
  setCycles([]);
1101
+ setFilterOptionsLoaded(true);
1054
1102
  }
1055
1103
  });
1056
1104
  return () => {
1057
1105
  cancelled = true;
1058
1106
  };
1059
- }, [connected]);
1107
+ }, [connected, projectSlug]);
1060
1108
 
1061
1109
  useEffect(() => {
1110
+ if (!filterOptionsLoaded) {
1111
+ return;
1112
+ }
1062
1113
  const validAssigneeIds = selectedAssigneeIds.filter((assigneeId) =>
1063
1114
  assignees.some((assignee) => assignee.id === assigneeId)
1064
1115
  );
1065
1116
  if (validAssigneeIds.length !== selectedAssigneeIds.length) {
1066
1117
  setSelectedAssigneeIds(validAssigneeIds);
1067
1118
  }
1068
- }, [assignees, selectedAssigneeIds]);
1119
+ }, [assignees, filterOptionsLoaded, selectedAssigneeIds]);
1069
1120
 
1070
1121
  useEffect(() => {
1122
+ if (!filterOptionsLoaded) {
1123
+ return;
1124
+ }
1125
+ const validStatuses = selectedStatuses.filter((status) => statuses.includes(status));
1126
+ if (validStatuses.length !== selectedStatuses.length) {
1127
+ setSelectedStatuses(validStatuses);
1128
+ }
1129
+ }, [filterOptionsLoaded, selectedStatuses, statuses]);
1130
+
1131
+ useEffect(() => {
1132
+ if (!filterOptionsLoaded) {
1133
+ return;
1134
+ }
1071
1135
  if (workspaces.length <= 1 && selectedWorkspaceId) {
1072
1136
  setSelectedWorkspaceId("");
1073
1137
  return;
@@ -1076,22 +1140,29 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1076
1140
  if (selectedWorkspaceId && !workspaces.some((workspace) => workspace.id === selectedWorkspaceId)) {
1077
1141
  setSelectedWorkspaceId("");
1078
1142
  }
1079
- }, [selectedWorkspaceId, workspaces]);
1143
+ }, [filterOptionsLoaded, selectedWorkspaceId, workspaces]);
1080
1144
 
1081
1145
  useEffect(() => {
1146
+ if (!filterOptionsLoaded) {
1147
+ return;
1148
+ }
1082
1149
  if (selectedCycleId && !cycles.some((cycle) => cycle.id === selectedCycleId)) {
1083
1150
  setSelectedCycleId("");
1084
1151
  }
1085
- }, [cycles, selectedCycleId]);
1152
+ }, [cycles, filterOptionsLoaded, selectedCycleId]);
1086
1153
 
1087
1154
  const filters = useMemo(
1088
1155
  () => ({
1089
1156
  search: debouncedSearch || undefined,
1157
+ statuses:
1158
+ selectedStatuses.length > 0 && selectedStatuses.length < statuses.length
1159
+ ? selectedStatuses
1160
+ : undefined,
1090
1161
  assigneeIds: selectedAssigneeIds.length > 0 ? selectedAssigneeIds : undefined,
1091
1162
  teamId: selectedWorkspaceId || undefined,
1092
1163
  cycleId: selectedCycleId || undefined,
1093
1164
  }),
1094
- [debouncedSearch, selectedAssigneeIds, selectedCycleId, selectedWorkspaceId]
1165
+ [debouncedSearch, selectedAssigneeIds, selectedCycleId, selectedStatuses, selectedWorkspaceId, statuses.length]
1095
1166
  );
1096
1167
 
1097
1168
  const {
@@ -1113,6 +1184,10 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1113
1184
  () => assignees.map((assignee) => ({ value: assignee.id, label: assignee.name })),
1114
1185
  [assignees]
1115
1186
  );
1187
+ const statusOptions = useMemo<FilterOption[]>(
1188
+ () => statuses.map((status) => ({ value: status, label: status })),
1189
+ [statuses]
1190
+ );
1116
1191
  const workspaceOptions = useMemo<FilterOption[]>(
1117
1192
  () => [{ value: "", label: "Workspace" }, ...workspaces.map((workspace) => ({ value: workspace.id, label: workspace.name }))],
1118
1193
  [workspaces]
@@ -1127,6 +1202,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1127
1202
  ],
1128
1203
  [cycles]
1129
1204
  );
1205
+ const showStatusFilter = statusOptions.length > 0;
1130
1206
  const showCycleFilter = cycleOptions.length > 1;
1131
1207
  const showWorkspaceFilter = workspaceOptions.length > 2;
1132
1208
 
@@ -1380,6 +1456,16 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1380
1456
  </button>
1381
1457
  </div>
1382
1458
  <div className="flex items-center gap-1.5 px-3 pb-2">
1459
+ {showStatusFilter ? (
1460
+ <MultiFilterPopdown
1461
+ label="Status"
1462
+ values={selectedStatuses}
1463
+ options={statusOptions}
1464
+ activeClasses="border-amber-500/30 bg-amber-500/10 text-amber-300"
1465
+ onChange={setSelectedStatuses}
1466
+ emptyLabel="All statuses"
1467
+ />
1468
+ ) : null}
1383
1469
  <MultiFilterPopdown
1384
1470
  label="Assignee"
1385
1471
  values={selectedAssigneeIds}
@@ -398,16 +398,6 @@ export function WorkspaceSidebar({
398
398
  </div>
399
399
  )}
400
400
 
401
- <nav className="workspace-sidebar__section" style={{ gap: 0 }}>
402
- <Link
403
- href="/agents"
404
- className="workspace-sidebar__nav-item"
405
- >
406
- <Bot size={14} className="flex-shrink-0" />
407
- Manage Agents
408
- </Link>
409
- </nav>
410
-
411
401
  <nav className="workspace-sidebar__section">
412
402
  <div className="workspace-sidebar__section-header group/projects-header">
413
403
  <p className="workspace-sidebar__section-label">Projects</p>
@@ -536,6 +526,15 @@ export function WorkspaceSidebar({
536
526
  <div className="pt-1">
537
527
  <div className="group/repos-header flex items-center justify-between px-3 py-1">
538
528
  <p className="text-[10px] font-medium text-[var(--muted-foreground)] uppercase tracking-wide">Folders</p>
529
+ <div className="flex items-center gap-1">
530
+ <Link
531
+ href="/folders"
532
+ className="workspace-sidebar__action opacity-0 transition-opacity group-hover/repos-header:opacity-100 text-[var(--muted-foreground)] hover:text-white"
533
+ aria-label="Manage folders"
534
+ title="Manage folders"
535
+ >
536
+ <Settings size={12} />
537
+ </Link>
539
538
  <button
540
539
  type="button"
541
540
  className="workspace-sidebar__action opacity-0 transition-opacity group-hover/repos-header:opacity-100 text-[var(--muted-foreground)] hover:text-white"
@@ -557,6 +556,7 @@ export function WorkspaceSidebar({
557
556
  >
558
557
  <Plus size={12} />
559
558
  </button>
559
+ </div>
560
560
  </div>
561
561
  {project.repos.length > 0 ? (
562
562
  project.repos.map((repo) => (
@@ -613,6 +613,15 @@ export function WorkspaceSidebar({
613
613
  <div className="pt-1">
614
614
  <div className="group/agents-header flex items-center justify-between px-3 py-1">
615
615
  <p className="text-[10px] font-medium text-[var(--muted-foreground)] uppercase tracking-wide">Agents</p>
616
+ <div className="flex items-center gap-1">
617
+ <Link
618
+ href="/agents"
619
+ className="workspace-sidebar__action opacity-0 transition-opacity group-hover/agents-header:opacity-100 text-[var(--muted-foreground)] hover:text-white"
620
+ aria-label="Manage agents"
621
+ title="Manage agents"
622
+ >
623
+ <Settings size={12} />
624
+ </Link>
616
625
  {project.agents.length > 0 && (
617
626
  <button
618
627
  type="button"
@@ -624,6 +633,7 @@ export function WorkspaceSidebar({
624
633
  <Plus size={12} />
625
634
  </button>
626
635
  )}
636
+ </div>
627
637
  </div>
628
638
  {project.agents.length > 0 ? (
629
639
  <>
@@ -12,7 +12,7 @@ export interface LinearIssue {
12
12
 
13
13
  interface Filters {
14
14
  teamId?: string;
15
- status?: string;
15
+ statuses?: string[];
16
16
  search?: string;
17
17
  assigneeIds?: string[];
18
18
  assignedToMe?: boolean;
@@ -56,7 +56,11 @@ export function useLinearIssues(
56
56
  try {
57
57
  const params = new URLSearchParams();
58
58
  if (filters.teamId) params.set("teamId", filters.teamId);
59
- if (filters.status) params.set("status", filters.status);
59
+ if (filters.statuses?.length) {
60
+ for (const status of filters.statuses) {
61
+ params.append("status", status);
62
+ }
63
+ }
60
64
  if (filters.search) params.set("search", filters.search);
61
65
  if (filters.assigneeIds?.length) {
62
66
  for (const assigneeId of filters.assigneeIds) {
@@ -84,7 +88,7 @@ export function useLinearIssues(
84
88
  setLoading(false);
85
89
  }
86
90
  },
87
- [filters.teamId, filters.status, filters.search, filters.assigneeIds, filters.assignedToMe, filters.cycleId, enabled, options.projectSlug, options.limit],
91
+ [filters.teamId, filters.statuses, filters.search, filters.assigneeIds, filters.assignedToMe, filters.cycleId, enabled, options.projectSlug, options.limit],
88
92
  );
89
93
 
90
94
  useEffect(() => {
@@ -4,11 +4,14 @@ const PROMPT_JOB_POLL_INTERVAL_MS = 15_000;
4
4
  export async function register() {
5
5
  if (process.env.NEXT_RUNTIME === 'nodejs') {
6
6
  const { getConfiguredLocalServerPort } = await import("./lib/app-config");
7
+ const { ensureScheduledTaskSkillInstalled } = await import("./lib/scheduled-task-skill");
7
8
  await import("./lib/check-node-version");
8
9
  const { getQueue, QUEUE_NAMES } = await import('@/lib/queue/boss');
9
10
  const { taskProcessor } = await import('@/lib/orchestrator/processor');
10
11
  const { chatProcessor } = await import('@/lib/orchestrator/chat-processor');
11
12
 
13
+ ensureScheduledTaskSkillInstalled();
14
+
12
15
  const queue = await getQueue();
13
16
  await queue.work(QUEUE_NAMES.TASK_PROCESS, taskProcessor, { batchSize: 5 });
14
17
  await queue.work(QUEUE_NAMES.CHAT_RUN_PROCESS, chatProcessor, { batchSize: 2 });