@mndrk/agx 2.0.45 → 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 (494) 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 +18 -4
  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 +346 -14
  384. package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +20 -10
  385. package/cloud-runtime/standalone/hooks/useLinearIssues.ts +13 -5
  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 +44 -10
  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/.linear-token.json +0 -4
  395. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__3b83b657._.js +0 -147
  396. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6921fe3f._.js +0 -44
  397. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__70327010._.js +0 -134
  398. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__748c718f._.js +0 -147
  399. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__79fa35e4._.js +0 -101
  400. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__8d205f82._.js +0 -48
  401. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__a7e0ac67._.js +0 -25
  402. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__b133856b._.js +0 -61
  403. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ce2a1672._.js +0 -67
  404. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f168c6dc._.js +0 -25
  405. package/cloud-runtime/standalone/.next/server/chunks/_a93e80e8._.js +0 -3
  406. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__1c4256ce._.js +0 -3
  407. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f59f0dc7._.js +0 -3
  408. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1d26be78._.js +0 -3
  409. package/cloud-runtime/standalone/.next/server/chunks/ssr/_22e99a52._.js +0 -3
  410. package/cloud-runtime/standalone/.next/server/chunks/ssr/_260b10ce._.js +0 -3
  411. package/cloud-runtime/standalone/.next/server/chunks/ssr/_32c878b9._.js +0 -3
  412. package/cloud-runtime/standalone/.next/server/chunks/ssr/_4bfdfb14._.js +0 -3
  413. package/cloud-runtime/standalone/.next/server/chunks/ssr/_52fe115d._.js +0 -3
  414. package/cloud-runtime/standalone/.next/server/chunks/ssr/_77e1407a._.js +0 -3
  415. package/cloud-runtime/standalone/.next/server/chunks/ssr/_84a166cb._.js +0 -3
  416. package/cloud-runtime/standalone/.next/server/chunks/ssr/_ba5903a7._.js +0 -3
  417. package/cloud-runtime/standalone/.next/server/chunks/ssr/_ed4fece9._.js +0 -3
  418. package/cloud-runtime/standalone/.next/static/chunks/00716478a3ee55a2.js +0 -37
  419. package/cloud-runtime/standalone/.next/static/chunks/2362d5c0dcaa5d64.js +0 -1
  420. package/cloud-runtime/standalone/.next/static/chunks/2730394502dd3664.js +0 -1
  421. package/cloud-runtime/standalone/.next/static/chunks/3091043e8c282dce.css +0 -1
  422. package/cloud-runtime/standalone/.next/static/chunks/34dd491bc4ce9561.js +0 -1
  423. package/cloud-runtime/standalone/.next/static/chunks/3dc50de1c86e1ce9.js +0 -1
  424. package/cloud-runtime/standalone/.next/static/chunks/4ea8f08087116055.js +0 -1
  425. package/cloud-runtime/standalone/.next/static/chunks/98c20da4973991f0.js +0 -1
  426. package/cloud-runtime/standalone/.next/static/chunks/a72fbac84e32f665.js +0 -1
  427. package/cloud-runtime/standalone/.next/static/chunks/b553dba1f51e709b.js +0 -16
  428. package/cloud-runtime/standalone/.next/static/chunks/c0d17e0c37ba8e7a.js +0 -1
  429. package/cloud-runtime/standalone/coverage/clover.xml +0 -1208
  430. package/cloud-runtime/standalone/coverage/coverage-final.json +0 -29
  431. package/cloud-runtime/standalone/coverage/lcov-report/app/api/audit/index.html +0 -116
  432. package/cloud-runtime/standalone/coverage/lcov-report/app/api/audit/route.ts.html +0 -208
  433. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/[...nextauth]/index.html +0 -116
  434. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/[...nextauth]/route.ts.html +0 -166
  435. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/daemon-secret/index.html +0 -116
  436. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/daemon-secret/route.ts.html +0 -532
  437. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/status/index.html +0 -116
  438. package/cloud-runtime/standalone/coverage/lcov-report/app/api/auth/status/route.ts.html +0 -178
  439. package/cloud-runtime/standalone/coverage/lcov-report/app/api/learnings/index.html +0 -116
  440. package/cloud-runtime/standalone/coverage/lcov-report/app/api/learnings/route.ts.html +0 -262
  441. package/cloud-runtime/standalone/coverage/lcov-report/app/api/logs/stream/index.html +0 -116
  442. package/cloud-runtime/standalone/coverage/lcov-report/app/api/logs/stream/route.ts.html +0 -448
  443. package/cloud-runtime/standalone/coverage/lcov-report/app/api/queue/complete/index.html +0 -116
  444. package/cloud-runtime/standalone/coverage/lcov-report/app/api/queue/complete/route.ts.html +0 -331
  445. package/cloud-runtime/standalone/coverage/lcov-report/app/api/queue/index.html +0 -116
  446. package/cloud-runtime/standalone/coverage/lcov-report/app/api/queue/route.ts.html +0 -505
  447. package/cloud-runtime/standalone/coverage/lcov-report/app/api/stage-prompts/index.html +0 -116
  448. package/cloud-runtime/standalone/coverage/lcov-report/app/api/stage-prompts/route.ts.html +0 -412
  449. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/advance/index.html +0 -116
  450. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/advance/route.ts.html +0 -304
  451. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/index.html +0 -116
  452. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/logs/index.html +0 -116
  453. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/logs/route.ts.html +0 -202
  454. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/[id]/route.ts.html +0 -373
  455. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/index.html +0 -116
  456. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/route.ts.html +0 -499
  457. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/stream/index.html +0 -116
  458. package/cloud-runtime/standalone/coverage/lcov-report/app/api/tasks/stream/route.ts.html +0 -349
  459. package/cloud-runtime/standalone/coverage/lcov-report/base.css +0 -224
  460. package/cloud-runtime/standalone/coverage/lcov-report/block-navigation.js +0 -87
  461. package/cloud-runtime/standalone/coverage/lcov-report/components/AuthProvider.tsx.html +0 -259
  462. package/cloud-runtime/standalone/coverage/lcov-report/components/ChatInterface.tsx.html +0 -1228
  463. package/cloud-runtime/standalone/coverage/lcov-report/components/KanbanBoard.tsx.html +0 -1024
  464. package/cloud-runtime/standalone/coverage/lcov-report/components/Layout.tsx.html +0 -211
  465. package/cloud-runtime/standalone/coverage/lcov-report/components/LearningsPanel.tsx.html +0 -535
  466. package/cloud-runtime/standalone/coverage/lcov-report/components/LogTimeline.tsx.html +0 -415
  467. package/cloud-runtime/standalone/coverage/lcov-report/components/SortableTaskCard.tsx.html +0 -358
  468. package/cloud-runtime/standalone/coverage/lcov-report/components/StagePills.tsx.html +0 -439
  469. package/cloud-runtime/standalone/coverage/lcov-report/components/TaskCard.tsx.html +0 -514
  470. package/cloud-runtime/standalone/coverage/lcov-report/components/TaskCardOverlay.tsx.html +0 -256
  471. package/cloud-runtime/standalone/coverage/lcov-report/components/TaskDetail.tsx.html +0 -622
  472. package/cloud-runtime/standalone/coverage/lcov-report/components/TaskList.tsx.html +0 -253
  473. package/cloud-runtime/standalone/coverage/lcov-report/components/index.html +0 -281
  474. package/cloud-runtime/standalone/coverage/lcov-report/favicon.png +0 -0
  475. package/cloud-runtime/standalone/coverage/lcov-report/hooks/index.html +0 -116
  476. package/cloud-runtime/standalone/coverage/lcov-report/hooks/useTasks.ts.html +0 -1042
  477. package/cloud-runtime/standalone/coverage/lcov-report/index.html +0 -341
  478. package/cloud-runtime/standalone/coverage/lcov-report/lib/auth-client.ts.html +0 -202
  479. package/cloud-runtime/standalone/coverage/lcov-report/lib/auth-server.ts.html +0 -172
  480. package/cloud-runtime/standalone/coverage/lcov-report/lib/auth.ts.html +0 -265
  481. package/cloud-runtime/standalone/coverage/lcov-report/lib/db.ts.html +0 -1252
  482. package/cloud-runtime/standalone/coverage/lcov-report/lib/index.html +0 -131
  483. package/cloud-runtime/standalone/coverage/lcov-report/lib/orchestrator.ts.html +0 -409
  484. package/cloud-runtime/standalone/coverage/lcov-report/lib/security.ts.html +0 -1165
  485. package/cloud-runtime/standalone/coverage/lcov-report/lib/supabase-server.ts.html +0 -175
  486. package/cloud-runtime/standalone/coverage/lcov-report/lib/supabase.ts.html +0 -157
  487. package/cloud-runtime/standalone/coverage/lcov-report/prettify.css +0 -1
  488. package/cloud-runtime/standalone/coverage/lcov-report/prettify.js +0 -2
  489. package/cloud-runtime/standalone/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  490. package/cloud-runtime/standalone/coverage/lcov-report/sorter.js +0 -210
  491. package/cloud-runtime/standalone/coverage/lcov.info +0 -2386
  492. /package/cloud-runtime/standalone/.next/static/{Y8QdDdLJI3yzNjkyPjuJ- → lOB5InbmVcurTLQo9J3KK}/_buildManifest.js +0 -0
  493. /package/cloud-runtime/standalone/.next/static/{Y8QdDdLJI3yzNjkyPjuJ- → lOB5InbmVcurTLQo9J3KK}/_clientMiddlewareManifest.json +0 -0
  494. /package/cloud-runtime/standalone/.next/static/{Y8QdDdLJI3yzNjkyPjuJ- → lOB5InbmVcurTLQo9J3KK}/_ssgManifest.js +0 -0
@@ -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,
@@ -139,6 +143,19 @@ interface FilterSelectProps {
139
143
  onChange: (value: string) => void;
140
144
  }
141
145
 
146
+ interface FilterPopdownProps extends FilterSelectProps {
147
+ emptyLabel?: string;
148
+ }
149
+
150
+ interface MultiFilterPopdownProps {
151
+ label: string;
152
+ values: string[];
153
+ options: FilterOption[];
154
+ activeClasses: string;
155
+ onChange: (value: string[]) => void;
156
+ emptyLabel?: string;
157
+ }
158
+
142
159
  function FilterSelect({ label, value, options, activeClasses, onChange }: FilterSelectProps) {
143
160
  const isActive = value.trim().length > 0;
144
161
 
@@ -168,6 +185,239 @@ function FilterSelect({ label, value, options, activeClasses, onChange }: Filter
168
185
  );
169
186
  }
170
187
 
188
+ function FilterPopdown({
189
+ label,
190
+ value,
191
+ options,
192
+ activeClasses,
193
+ onChange,
194
+ emptyLabel,
195
+ }: FilterPopdownProps) {
196
+ const [open, setOpen] = useState(false);
197
+ const wrapperRef = useRef<HTMLDivElement | null>(null);
198
+ const selectedOption = options.find((option) => option.value === value) ?? null;
199
+ const isActive = value.trim().length > 0;
200
+ const buttonLabel = selectedOption?.label ?? emptyLabel ?? label;
201
+
202
+ useEffect(() => {
203
+ if (!open) {
204
+ return;
205
+ }
206
+
207
+ const handlePointerDown = (event: MouseEvent) => {
208
+ if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) {
209
+ setOpen(false);
210
+ }
211
+ };
212
+
213
+ document.addEventListener("mousedown", handlePointerDown);
214
+ return () => document.removeEventListener("mousedown", handlePointerDown);
215
+ }, [open]);
216
+
217
+ useEffect(() => {
218
+ setOpen(false);
219
+ }, [value]);
220
+
221
+ return (
222
+ <div className="relative" ref={wrapperRef}>
223
+ <button
224
+ type="button"
225
+ aria-label={label}
226
+ aria-haspopup="listbox"
227
+ aria-expanded={open}
228
+ className={`flex max-w-[180px] items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${
229
+ isActive
230
+ ? activeClasses
231
+ : "border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"
232
+ }`}
233
+ onClick={() => setOpen((current) => !current)}
234
+ >
235
+ <span className="max-w-[132px] truncate">{buttonLabel}</span>
236
+ <ChevronDown size={12} className={`shrink-0 transition-transform ${open ? "rotate-180" : ""}`} />
237
+ </button>
238
+ {open ? (
239
+ <div
240
+ role="listbox"
241
+ aria-label={`${label} options`}
242
+ className="absolute left-0 top-full z-50 mt-1 min-w-[220px] overflow-hidden rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-1 shadow-lg backdrop-blur-sm"
243
+ >
244
+ {options.map((option) => {
245
+ const isSelected = option.value === value;
246
+ return (
247
+ <button
248
+ key={`${label}-${option.value || "all"}`}
249
+ type="button"
250
+ role="option"
251
+ aria-selected={isSelected}
252
+ className={`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${
253
+ isSelected
254
+ ? "bg-[var(--background)] font-medium text-[var(--foreground)]"
255
+ : "text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"
256
+ }`}
257
+ onClick={() => onChange(option.value)}
258
+ >
259
+ <span
260
+ className={`flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${
261
+ isSelected
262
+ ? "border-blue-500 bg-blue-500 text-white"
263
+ : "border-[var(--card-border)]"
264
+ }`}
265
+ >
266
+ {isSelected ? <Check size={10} /> : null}
267
+ </span>
268
+ <span className="min-w-0 flex-1 truncate">{option.label}</span>
269
+ </button>
270
+ );
271
+ })}
272
+ </div>
273
+ ) : null}
274
+ </div>
275
+ );
276
+ }
277
+
278
+ function MultiFilterPopdown({
279
+ label,
280
+ values,
281
+ options,
282
+ activeClasses,
283
+ onChange,
284
+ emptyLabel,
285
+ }: MultiFilterPopdownProps) {
286
+ const [open, setOpen] = useState(false);
287
+ const wrapperRef = useRef<HTMLDivElement | null>(null);
288
+ const selectedOptions = options.filter(
289
+ (option) => option.value && values.includes(option.value)
290
+ );
291
+ const isActive = selectedOptions.length > 0;
292
+ const buttonLabel = (() => {
293
+ if (selectedOptions.length === 0) {
294
+ return emptyLabel ?? label;
295
+ }
296
+ if (selectedOptions.length === options.length) {
297
+ return emptyLabel ?? label;
298
+ }
299
+ if (selectedOptions.length === 1) {
300
+ return selectedOptions[0]?.label ?? (emptyLabel ?? label);
301
+ }
302
+ const lowerLabel = label.toLowerCase();
303
+ return `${selectedOptions.length} ${lowerLabel}${lowerLabel.endsWith("s") ? "es" : "s"}`;
304
+ })();
305
+
306
+ useEffect(() => {
307
+ if (!open) {
308
+ return;
309
+ }
310
+
311
+ const handlePointerDown = (event: MouseEvent) => {
312
+ if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) {
313
+ setOpen(false);
314
+ }
315
+ };
316
+
317
+ document.addEventListener("mousedown", handlePointerDown);
318
+ return () => document.removeEventListener("mousedown", handlePointerDown);
319
+ }, [open]);
320
+
321
+ const toggleValue = useCallback(
322
+ (nextValue: string) => {
323
+ if (!nextValue) {
324
+ onChange([]);
325
+ return;
326
+ }
327
+
328
+ const nextValues = values.includes(nextValue)
329
+ ? values.filter((value) => value !== nextValue)
330
+ : [...values, nextValue];
331
+ onChange(nextValues);
332
+ },
333
+ [onChange, values]
334
+ );
335
+
336
+ return (
337
+ <div className="relative" ref={wrapperRef}>
338
+ <button
339
+ type="button"
340
+ aria-label={label}
341
+ aria-haspopup="listbox"
342
+ aria-expanded={open}
343
+ className={`flex max-w-[180px] items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${
344
+ isActive
345
+ ? activeClasses
346
+ : "border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"
347
+ }`}
348
+ onClick={() => setOpen((current) => !current)}
349
+ >
350
+ <span className="max-w-[132px] truncate">{buttonLabel}</span>
351
+ <ChevronDown size={12} className={`shrink-0 transition-transform ${open ? "rotate-180" : ""}`} />
352
+ </button>
353
+ {open ? (
354
+ <div
355
+ role="listbox"
356
+ aria-label={`${label} options`}
357
+ aria-multiselectable="true"
358
+ className="absolute left-0 top-full z-50 mt-1 min-w-[240px] overflow-hidden rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] p-1 shadow-lg backdrop-blur-sm"
359
+ >
360
+ <button
361
+ type="button"
362
+ role="option"
363
+ aria-selected={!isActive}
364
+ className={`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${
365
+ !isActive
366
+ ? "bg-[var(--background)] font-medium text-[var(--foreground)]"
367
+ : "text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"
368
+ }`}
369
+ onClick={() => onChange([])}
370
+ >
371
+ <span
372
+ className={`flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${
373
+ !isActive
374
+ ? "border-blue-500 bg-blue-500 text-white"
375
+ : "border-[var(--card-border)]"
376
+ }`}
377
+ >
378
+ {!isActive ? <Check size={10} /> : null}
379
+ </span>
380
+ <span className="min-w-0 flex-1 truncate">{emptyLabel ?? label}</span>
381
+ </button>
382
+ {selectedOptions.length > 0 ? (
383
+ <div className="px-3 pb-1 pt-2 text-[10px] font-medium uppercase tracking-[0.12em] text-[var(--muted-foreground)]">
384
+ Selected
385
+ </div>
386
+ ) : null}
387
+ {options.filter((option) => option.value).map((option) => {
388
+ const isSelected = values.includes(option.value);
389
+ return (
390
+ <button
391
+ key={`${label}-${option.value}`}
392
+ type="button"
393
+ role="option"
394
+ aria-selected={isSelected}
395
+ className={`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${
396
+ isSelected
397
+ ? "bg-[var(--background)] font-medium text-[var(--foreground)]"
398
+ : "text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"
399
+ }`}
400
+ onClick={() => toggleValue(option.value)}
401
+ >
402
+ <span
403
+ className={`flex h-4 w-4 shrink-0 items-center justify-center rounded border ${
404
+ isSelected
405
+ ? "border-blue-500 bg-blue-500 text-white"
406
+ : "border-[var(--card-border)]"
407
+ }`}
408
+ >
409
+ {isSelected ? <Check size={10} /> : null}
410
+ </span>
411
+ <span className="min-w-0 flex-1 truncate">{option.label}</span>
412
+ </button>
413
+ );
414
+ })}
415
+ </div>
416
+ ) : null}
417
+ </div>
418
+ );
419
+ }
420
+
171
421
  interface CycleOption {
172
422
  id: string;
173
423
  number: number;
@@ -761,9 +1011,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
761
1011
  const [runsPanelWidth, setRunsPanelWidth] = useState(224);
762
1012
  const [search, setSearch] = useState("");
763
1013
  const [debouncedSearch, setDebouncedSearch] = useState("");
1014
+ const [filterOptionsLoaded, setFilterOptionsLoaded] = useState(false);
764
1015
  const [assignees, setAssignees] = useState<LinearEntityOption[]>([]);
1016
+ const [statuses, setStatuses] = useState<string[]>([]);
765
1017
  const [workspaces, setWorkspaces] = useState<LinearEntityOption[]>([]);
766
- const [selectedAssigneeId, setSelectedAssigneeId] = useState("");
1018
+ const [selectedAssigneeIds, setSelectedAssigneeIds] = useState<string[]>([]);
1019
+ const [selectedStatuses, setSelectedStatuses] = useState<string[]>([]);
767
1020
  const [cycles, setCycles] = useState<CycleOption[]>([]);
768
1021
  const [selectedCycleId, setSelectedCycleId] = useState("");
769
1022
  const [selectedWorkspaceId, setSelectedWorkspaceId] = useState("");
@@ -773,6 +1026,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
773
1026
  const [pickerIssue, setPickerIssue] = useState<LinearIssue | null>(null);
774
1027
  const [pickerAnchor, setPickerAnchor] = useState<{ top: number; left: number } | null>(null);
775
1028
  const searchDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
1029
+ const skipNextFilterPersistRef = useRef(true);
776
1030
 
777
1031
  const handleSearchChange = useCallback((value: string) => {
778
1032
  setSearch(value);
@@ -790,39 +1044,94 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
790
1044
  };
791
1045
  }, []);
792
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
+
793
1073
  // Fetch filter options when connected
794
1074
  useEffect(() => {
795
1075
  if (!connected) return;
796
1076
  let cancelled = false;
797
- 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)
798
1084
  .then((res) => res.json())
799
1085
  .then((data) => {
800
1086
  if (cancelled) {
801
1087
  return;
802
1088
  }
803
1089
  setAssignees(Array.isArray(data.assignees) ? data.assignees : []);
1090
+ setStatuses(Array.isArray(data.statuses) ? data.statuses : []);
804
1091
  setWorkspaces(Array.isArray(data.teams) ? data.teams : []);
805
1092
  setCycles(Array.isArray(data.cycles) ? data.cycles : []);
1093
+ setFilterOptionsLoaded(true);
806
1094
  })
807
1095
  .catch(() => {
808
1096
  if (!cancelled) {
809
1097
  setAssignees([]);
1098
+ setStatuses([]);
810
1099
  setWorkspaces([]);
811
1100
  setCycles([]);
1101
+ setFilterOptionsLoaded(true);
812
1102
  }
813
1103
  });
814
1104
  return () => {
815
1105
  cancelled = true;
816
1106
  };
817
- }, [connected]);
1107
+ }, [connected, projectSlug]);
818
1108
 
819
1109
  useEffect(() => {
820
- if (selectedAssigneeId && !assignees.some((assignee) => assignee.id === selectedAssigneeId)) {
821
- setSelectedAssigneeId("");
1110
+ if (!filterOptionsLoaded) {
1111
+ return;
822
1112
  }
823
- }, [assignees, selectedAssigneeId]);
1113
+ const validAssigneeIds = selectedAssigneeIds.filter((assigneeId) =>
1114
+ assignees.some((assignee) => assignee.id === assigneeId)
1115
+ );
1116
+ if (validAssigneeIds.length !== selectedAssigneeIds.length) {
1117
+ setSelectedAssigneeIds(validAssigneeIds);
1118
+ }
1119
+ }, [assignees, filterOptionsLoaded, selectedAssigneeIds]);
824
1120
 
825
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
+ }
826
1135
  if (workspaces.length <= 1 && selectedWorkspaceId) {
827
1136
  setSelectedWorkspaceId("");
828
1137
  return;
@@ -831,22 +1140,29 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
831
1140
  if (selectedWorkspaceId && !workspaces.some((workspace) => workspace.id === selectedWorkspaceId)) {
832
1141
  setSelectedWorkspaceId("");
833
1142
  }
834
- }, [selectedWorkspaceId, workspaces]);
1143
+ }, [filterOptionsLoaded, selectedWorkspaceId, workspaces]);
835
1144
 
836
1145
  useEffect(() => {
1146
+ if (!filterOptionsLoaded) {
1147
+ return;
1148
+ }
837
1149
  if (selectedCycleId && !cycles.some((cycle) => cycle.id === selectedCycleId)) {
838
1150
  setSelectedCycleId("");
839
1151
  }
840
- }, [cycles, selectedCycleId]);
1152
+ }, [cycles, filterOptionsLoaded, selectedCycleId]);
841
1153
 
842
1154
  const filters = useMemo(
843
1155
  () => ({
844
1156
  search: debouncedSearch || undefined,
845
- assigneeId: selectedAssigneeId || undefined,
1157
+ statuses:
1158
+ selectedStatuses.length > 0 && selectedStatuses.length < statuses.length
1159
+ ? selectedStatuses
1160
+ : undefined,
1161
+ assigneeIds: selectedAssigneeIds.length > 0 ? selectedAssigneeIds : undefined,
846
1162
  teamId: selectedWorkspaceId || undefined,
847
1163
  cycleId: selectedCycleId || undefined,
848
1164
  }),
849
- [debouncedSearch, selectedAssigneeId, selectedCycleId, selectedWorkspaceId]
1165
+ [debouncedSearch, selectedAssigneeIds, selectedCycleId, selectedStatuses, selectedWorkspaceId, statuses.length]
850
1166
  );
851
1167
 
852
1168
  const {
@@ -865,9 +1181,13 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
865
1181
 
866
1182
  const selectedRun = runs.find((run) => run.id === selectedRunId) ?? null;
867
1183
  const assigneeOptions = useMemo<FilterOption[]>(
868
- () => [{ value: "", label: "Assignee" }, ...assignees.map((assignee) => ({ value: assignee.id, label: assignee.name }))],
1184
+ () => assignees.map((assignee) => ({ value: assignee.id, label: assignee.name })),
869
1185
  [assignees]
870
1186
  );
1187
+ const statusOptions = useMemo<FilterOption[]>(
1188
+ () => statuses.map((status) => ({ value: status, label: status })),
1189
+ [statuses]
1190
+ );
871
1191
  const workspaceOptions = useMemo<FilterOption[]>(
872
1192
  () => [{ value: "", label: "Workspace" }, ...workspaces.map((workspace) => ({ value: workspace.id, label: workspace.name }))],
873
1193
  [workspaces]
@@ -882,6 +1202,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
882
1202
  ],
883
1203
  [cycles]
884
1204
  );
1205
+ const showStatusFilter = statusOptions.length > 0;
885
1206
  const showCycleFilter = cycleOptions.length > 1;
886
1207
  const showWorkspaceFilter = workspaceOptions.length > 2;
887
1208
 
@@ -1135,12 +1456,23 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1135
1456
  </button>
1136
1457
  </div>
1137
1458
  <div className="flex items-center gap-1.5 px-3 pb-2">
1138
- <FilterSelect
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}
1469
+ <MultiFilterPopdown
1139
1470
  label="Assignee"
1140
- value={selectedAssigneeId}
1471
+ values={selectedAssigneeIds}
1141
1472
  options={assigneeOptions}
1142
1473
  activeClasses="border-blue-500/30 bg-blue-500/10 text-blue-400"
1143
- onChange={setSelectedAssigneeId}
1474
+ onChange={setSelectedAssigneeIds}
1475
+ emptyLabel="All assignees"
1144
1476
  />
1145
1477
  {showWorkspaceFilter ? (
1146
1478
  <FilterSelect
@@ -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,9 +12,9 @@ export interface LinearIssue {
12
12
 
13
13
  interface Filters {
14
14
  teamId?: string;
15
- status?: string;
15
+ statuses?: string[];
16
16
  search?: string;
17
- assigneeId?: string;
17
+ assigneeIds?: string[];
18
18
  assignedToMe?: boolean;
19
19
  cycleId?: string;
20
20
  }
@@ -56,9 +56,17 @@ 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
- if (filters.assigneeId) params.set("assigneeId", filters.assigneeId);
65
+ if (filters.assigneeIds?.length) {
66
+ for (const assigneeId of filters.assigneeIds) {
67
+ params.append("assigneeId", assigneeId);
68
+ }
69
+ }
62
70
  else if (filters.assignedToMe) params.set("assignedToMe", "true");
63
71
  if (filters.cycleId) params.set("cycleId", filters.cycleId);
64
72
  if (append && cursorRef.current) params.set("cursor", cursorRef.current);
@@ -80,7 +88,7 @@ export function useLinearIssues(
80
88
  setLoading(false);
81
89
  }
82
90
  },
83
- [filters.teamId, filters.status, filters.search, filters.assigneeId, 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],
84
92
  );
85
93
 
86
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 });
@@ -5,6 +5,7 @@ import type { ChatProvider } from "./types";
5
5
  import { createCliChunkSanitizer } from "./sanitize";
6
6
  import { writeDebugLog } from "./debug-log";
7
7
  import { buildSpawnEnv, commandExists } from "./shell-env";
8
+ import { buildScheduledTaskSkillPromptContext } from "./scheduled-task-skill";
8
9
 
9
10
  const isNonEmptyString = (value: unknown): value is string =>
10
11
  typeof value === "string" && value.trim().length > 0;
@@ -711,12 +712,12 @@ export async function runCliResponse({
711
712
  if (cleaned) onDelta(cleaned);
712
713
  };
713
714
 
714
- const systemParts: string[] = [];
715
- if (systemContext) systemParts.push(systemContext);
716
- if (identity) systemParts.push(`<identity>\n${identity}\n</identity>`);
717
- if (self) systemParts.push(`<self>\n${self}\n</self>`);
718
- if (skills) systemParts.push(`<skills>\n${skills}\n</skills>`);
719
- const systemPrompt = systemParts.length > 0 ? systemParts.join("\n\n") : undefined;
715
+ const systemPrompt = buildCliSystemPrompt({
716
+ identity,
717
+ self,
718
+ skills,
719
+ systemContext,
720
+ });
720
721
  const attempts = buildCliAttempts({
721
722
  provider,
722
723
  model,
@@ -789,3 +790,23 @@ export async function runCliResponse({
789
790
 
790
791
  throw lastError || new Error("CLI execution failed.");
791
792
  }
793
+
794
+ export function buildCliSystemPrompt({
795
+ identity,
796
+ self,
797
+ skills,
798
+ systemContext,
799
+ }: {
800
+ identity?: string;
801
+ self?: string;
802
+ skills?: string;
803
+ systemContext?: string;
804
+ }): string | undefined {
805
+ const systemParts: string[] = [];
806
+ if (systemContext) systemParts.push(systemContext);
807
+ systemParts.push(buildScheduledTaskSkillPromptContext());
808
+ if (identity) systemParts.push(`<identity>\n${identity}\n</identity>`);
809
+ if (self) systemParts.push(`<self>\n${self}\n</self>`);
810
+ if (skills) systemParts.push(`<skills>\n${skills}\n</skills>`);
811
+ return systemParts.length > 0 ? systemParts.join("\n\n") : undefined;
812
+ }