@mndrk/agx 2.1.0 → 2.3.0

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 (457) hide show
  1. package/README.md +70 -105
  2. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  3. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
  4. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +5 -5
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +5 -5
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +3 -3
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +2 -2
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +4 -3
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +4 -3
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +3 -2
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  216. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  217. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0-zk9w8._.js +7 -2
  218. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0.01bfe._.js +13 -8
  219. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__00c~p6z._.js +7 -2
  220. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__019dflu._.js +7 -2
  221. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__02t.3rm._.js +4 -4
  222. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__06zr0ph._.js +6 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__07d._0s._.js +15 -10
  224. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08xj~a3._.js +1 -1
  225. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0a0cq38._.js +34 -3
  226. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0asvfdo._.js +35 -4
  227. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0bt7ejs._.js +7 -2
  228. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0f.~98d._.js +7 -2
  229. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g-~-.q._.js +6 -1
  230. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7p6pw._.js +1 -1
  231. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gj~dap._.js +40 -9
  232. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hkcw03._.js +8 -3
  233. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hyu3en._.js +7 -2
  234. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0i5aw03._.js +7 -2
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ke4z91._.js +7 -2
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0l53ok5._.js +41 -10
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ll-~cx._.js +7 -2
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0mh6p.0._.js +7 -2
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0nc-lbr._.js +1 -1
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0p9rl6.._.js +8 -3
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0q~pnp0._.js +6 -6
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ue0bu5._.js +6 -1
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0unwwyx._.js +12 -7
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0vtkl3q._.js +4 -4
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0x6w64i._.js +1 -1
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0z82z0-._.js +6 -1
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0zrv3p3._.js +16 -11
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~iknwz._.js +12 -7
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10d.dhd._.js +46 -15
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10sw5ia._.js +4 -4
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__11yx.ud._.js +33 -2
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13-nlgu._.js +5 -5
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13960a8._.js +14 -9
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_06qet8g._.js +14 -9
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_0m2ly._.js +4 -4
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0a15wtk._.js +4 -4
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0fr1qq6._.js +1 -1
  258. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0g.q2r6._.js +6 -1
  259. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0i7fs.i._.js +4 -4
  260. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01pvj2g._.js +1 -1
  261. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_agent-participants_ts_0cq15u5._.js +1 -1
  262. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_0twf-w5._.js +1 -1
  263. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_orchestrator_chat-processor_ts_0c2l_oh._.js +43 -12
  264. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0l95hik._.js +15 -15
  265. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0s5xprd._.js +1 -1
  266. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js +19 -14
  267. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_schedule-runner_ts_07-ozf_._.js +2 -2
  268. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0_l0fpi.js +1 -1
  269. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0gips_c.js +1 -1
  270. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0rszt9p.js +10 -6
  271. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0u_5kfo.js +1 -1
  272. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_06fnblz._.js +3 -0
  273. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__039h7r.._.js +18 -0
  274. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0lno3km._.js +3 -0
  275. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0fl7_-o._.js → [root-of-the-server]__0nqqk26._.js} +2 -2
  276. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0j9m72.._.js → [root-of-the-server]__0tqn-o5._.js} +2 -2
  277. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~nm7b6._.js +3 -0
  278. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0140-84._.js +3 -0
  279. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03fckp4._.js +3 -0
  280. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_064h43p._.js → _05xj_bp._.js} +2 -2
  281. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0tcjapj._.js → _0ip6k6n._.js} +2 -2
  282. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0jensz1._.js +3 -0
  283. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0t0p8q5._.js +3 -0
  284. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yeuuy1._.js +1 -23
  285. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +1 -1
  286. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_0nvzo3y._.js → apps_local_04dh2yh._.js} +2 -2
  287. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +3 -3
  288. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +1 -1
  289. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0k4~c1x._.js +1 -1
  290. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ld1uug._.js +1 -1
  291. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ms1d6i._.js +4 -0
  292. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0p_v0ri._.js +1 -1
  293. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0x.xj52._.js +3 -0
  294. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0~g2ijr._.js +1 -1
  295. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +3 -3
  296. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_[id]_page_tsx_06n47n~._.js +1 -1
  297. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_078reb_._.js +1 -1
  298. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
  299. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +25 -3
  300. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
  301. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_agents_[agentId]_page_tsx_0wm~_~t._.js +1 -1
  302. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_page_tsx_0iyozfl._.js +1 -1
  303. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_new_page_tsx_0yqd0a5._.js +1 -1
  304. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +1 -20
  305. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_0ql2qmr._.js +1 -1
  306. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +2 -2
  307. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +1 -1
  308. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +1 -1
  309. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_terminal_TerminalPane_tsx_0l17vs_._.js +22 -0
  310. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
  311. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  312. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  313. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  314. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  315. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  316. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  317. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0e307b-0c2jbx.js → 0-cets4_axpvm.js} +1 -1
  318. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 0-k2m1ncx7hwx.js} +1 -1
  319. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0dnw31436wd~..js → 0-pkmgle2s8u8.js} +1 -1
  320. package/cloud-runtime/standalone/apps/local/.next/static/chunks/064jfmraty.9h.js +1 -0
  321. package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kru5m9q~r.j.js +1 -0
  322. package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kyg1q0bcz6p.js +5 -0
  323. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{119v0-idpg-cv.js → 08bdyjcnamzep.js} +1 -1
  324. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-olq~7zw3wjy.js → 08xq~uyr6.eqw.js} +1 -1
  325. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0gj98094p~zn4.js → 0cku81z~3oe6..js} +1 -1
  326. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e7jhy0-52_4k.js +1 -0
  327. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0wh6p5~ft5rma.js → 0htc.sqrk_0.c.js} +1 -1
  328. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ju4xmxwqddw6.js +1 -0
  329. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kn66yvx08813.css +1 -0
  330. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{07646a0h94826.js → 0l89kxqcf86on.js} +2 -2
  331. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mm978wb-ueg-.js +6 -0
  332. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0musu8f.4wvxz.js +1 -0
  333. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0bchtyu6m.2yv.js → 0muti0yiyhu0t.js} +1 -1
  334. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rhps884e-bzu.js +1 -0
  335. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rr3fvwc5ind~.js +5 -0
  336. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sbkkjowkksa6.js +1 -0
  337. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sjz0.o9_33qy.js +1 -0
  338. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0srzmg8ivve1g.css +1 -0
  339. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0fonouj2i9qnb.js → 0swo3_e8.4s7j.js} +2 -2
  340. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sysrf3~l~r35.js +1 -0
  341. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0t69h-kc701fn.js +1 -0
  342. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0v67lnh..wj4z.js +1 -0
  343. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{013gtut17~fne.js → 0wb45ol1xrqe~.js} +1 -23
  344. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00po4v2x~0x_z.js → 0wiw2v8gm-k_-.js} +1 -1
  345. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0tt1oh112yv-l.js → 0wopevh0s7.8c.js} +1 -1
  346. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xm2~gxlt1npd.js +1 -0
  347. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1503vb7lb6.g1.js → 0ya124ushze_f.js} +4 -4
  348. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zt2o58c5gytn.js +16 -0
  349. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0~idsggr8vqf5.js +59 -0
  350. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0stvi5btlxl4m.js → 0~mcfx41q4znh.js} +3 -3
  351. package/cloud-runtime/standalone/apps/local/.next/static/chunks/116j4mjz~y42t.js +1 -0
  352. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-vo_x2cxmjm3.js → 12b62py0mq1gm.js} +4 -4
  353. package/cloud-runtime/standalone/apps/local/.next/static/chunks/12y5i0lh6s73o.js +1 -0
  354. package/cloud-runtime/standalone/apps/local/.next/static/chunks/148.mt80civoz.js +20 -0
  355. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14m5d270euu_s.js +1 -0
  356. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-_ukhpeg429c.js → 16h9208kl5~xa.js} +1 -1
  357. package/cloud-runtime/standalone/apps/local/app/agents/[id]/page.tsx +6 -3
  358. package/cloud-runtime/standalone/apps/local/app/agents/page.tsx +3 -3
  359. package/cloud-runtime/standalone/apps/local/app/api/chat/route.ts +7 -1
  360. package/cloud-runtime/standalone/apps/local/app/api/participants/route.ts +9 -9
  361. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/search/route.ts +6 -6
  362. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/teams/route.ts +3 -3
  363. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/agents/route.ts +1 -1
  364. package/cloud-runtime/standalone/apps/local/app/api/schedules/poll/route.ts +11 -2
  365. package/cloud-runtime/standalone/apps/local/app/page.tsx +72 -14
  366. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +1 -1
  367. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +34 -1
  368. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.tsx +6 -3
  369. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/page.tsx +6 -3
  370. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/new/page.tsx +8 -17
  371. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/replace/page.tsx +1 -1
  372. package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -0
  373. package/cloud-runtime/standalone/apps/local/app/setup/page.tsx +1 -38
  374. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +8 -4
  375. package/cloud-runtime/standalone/apps/local/components/EmptyStateCard.tsx +37 -0
  376. package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +103 -770
  377. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +8 -39
  378. package/cloud-runtime/standalone/apps/local/components/TeamPickerModal.tsx +3 -3
  379. package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +28 -32
  380. package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +24 -39
  381. package/cloud-runtime/standalone/apps/local/components/linear/LinearBoardFilters.tsx +343 -0
  382. package/cloud-runtime/standalone/apps/local/components/linear/LinearSettingsModal.tsx +9 -3
  383. package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerConfig.tsx +65 -30
  384. package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerRunLog.tsx +190 -0
  385. package/cloud-runtime/standalone/apps/local/components/linear/TicketRow.tsx +158 -0
  386. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveHealthTrend.tsx +45 -61
  387. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +38 -34
  388. package/cloud-runtime/standalone/apps/local/components/projects/RecentlyCompletedCard.tsx +0 -16
  389. package/cloud-runtime/standalone/apps/local/components/projects/ReplaceAgentsModal.tsx +2 -2
  390. package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +155 -120
  391. package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +85 -88
  392. package/cloud-runtime/standalone/apps/local/components/setup/SetupLayout.tsx +6 -4
  393. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +18 -193
  394. package/cloud-runtime/standalone/apps/local/components/terminal/TerminalPane.tsx +40 -4
  395. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +121 -20
  396. package/cloud-runtime/standalone/apps/local/components/ui/ResizeHandle.tsx +52 -0
  397. package/cloud-runtime/standalone/apps/local/hooks/useAutomations.ts +8 -3
  398. package/cloud-runtime/standalone/apps/local/hooks/useLinearActiveAgents.ts +38 -0
  399. package/cloud-runtime/standalone/apps/local/hooks/useLinearParticipants.ts +118 -0
  400. package/cloud-runtime/standalone/apps/local/hooks/usePromptJobs.ts +5 -3
  401. package/cloud-runtime/standalone/apps/local/hooks/useSetupFlow.ts +6 -81
  402. package/cloud-runtime/standalone/apps/local/lib/agent-participants.ts +1 -1
  403. package/cloud-runtime/standalone/apps/local/lib/agent-process-registry.ts +34 -0
  404. package/cloud-runtime/standalone/apps/local/lib/db.ts +5 -5
  405. package/cloud-runtime/standalone/apps/local/lib/linear-board-utils.ts +9 -0
  406. package/cloud-runtime/standalone/apps/local/lib/linear-run-status.ts +88 -0
  407. package/cloud-runtime/standalone/apps/local/lib/linear-run-store.ts +4 -4
  408. package/cloud-runtime/standalone/apps/local/lib/sqlite-query-adapter.ts +5 -1
  409. package/cloud-runtime/standalone/apps/local/lib/team-catalog.ts +60 -60
  410. package/cloud-runtime/standalone/apps/local/lib/types.ts +1 -1
  411. package/cloud-runtime/standalone/apps/local/migrations/sqlite_schema.sql +1 -1
  412. package/cloud-runtime/standalone/apps/local/skills-lock.json +5 -0
  413. package/cloud-runtime/standalone/apps/local/src/graph/schedule-runner.ts +26 -1
  414. package/cloud-runtime/standalone/apps/local/src/graph/store.ts +13 -0
  415. package/cloud-runtime/standalone/apps/local/state/linearBoardPins.ts +45 -0
  416. package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +71 -2
  417. package/cloud-runtime/standalone/apps/local/worker/index.js +56 -4
  418. package/lib/cli/onboarding.js +8 -5
  419. package/package.json +1 -1
  420. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0tvwux2._.js +0 -3
  421. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__006vr7.._.js +0 -3
  422. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0d18x53._.js +0 -18
  423. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0z7nw_r._.js +0 -3
  424. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_00trrg8._.js +0 -3
  425. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +0 -3
  426. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +0 -3
  427. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0w4gpvr._.js +0 -3
  428. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0x6hh0t._.js +0 -4
  429. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0t6p.qm._.js +0 -3
  430. package/cloud-runtime/standalone/apps/local/.next/static/chunks/014z_yruiincl.js +0 -1
  431. package/cloud-runtime/standalone/apps/local/.next/static/chunks/041-dhls9zkl1.js +0 -1
  432. package/cloud-runtime/standalone/apps/local/.next/static/chunks/04yoml2rqnuot.js +0 -16
  433. package/cloud-runtime/standalone/apps/local/.next/static/chunks/069yt_7prdxsp.js +0 -1
  434. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0_mrpyqcoyb_5.js +0 -1
  435. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0edewt9l~cs~k.css +0 -1
  436. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +0 -1
  437. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0j-nhn61e~nnj.js +0 -1
  438. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jrkacz_dyem6.js +0 -37
  439. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +0 -1
  440. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p-rdas54yo~w.js +0 -1
  441. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pdrpsy-zdxp0.js +0 -5
  442. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p~l5ap6qqx2o.js +0 -1
  443. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +0 -1
  444. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0tm20~ec~occu.js +0 -1
  445. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0uve8xrt~0a2e.js +0 -1
  446. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0w94x-v00osq0.js +0 -1
  447. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +0 -1
  448. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zw85-xl9ysjs.js +0 -1
  449. package/cloud-runtime/standalone/apps/local/.next/static/chunks/11l2tww5f0hsk.js +0 -20
  450. package/cloud-runtime/standalone/apps/local/.next/static/chunks/12qohmk-~yrtg.js +0 -1
  451. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +0 -1
  452. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16d~es6h6k~rj.js +0 -6
  453. package/cloud-runtime/standalone/apps/local/components/setup/ProjectStep.tsx +0 -189
  454. package/cloud-runtime/standalone/apps/local/components/setup/TeamsStep.tsx +0 -500
  455. /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → ROMPfjQqFXqGHmbybq1eC}/_buildManifest.js +0 -0
  456. /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → ROMPfjQqFXqGHmbybq1eC}/_clientMiddlewareManifest.js +0 -0
  457. /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → ROMPfjQqFXqGHmbybq1eC}/_ssgManifest.js +0 -0
@@ -0,0 +1,343 @@
1
+ "use client";
2
+
3
+ import React, { useState, useRef, useEffect, useCallback } from "react";
4
+ import { Check, ChevronDown, RefreshCw } from "lucide-react";
5
+
6
+ export interface FilterOption {
7
+ value: string;
8
+ label: string;
9
+ }
10
+
11
+ export interface FilterSelectProps {
12
+ label: string;
13
+ value: string;
14
+ options: FilterOption[];
15
+ activeClasses: string;
16
+ onChange: (value: string) => void;
17
+ disabled?: boolean;
18
+ }
19
+
20
+ export interface FilterPopdownProps extends FilterSelectProps {
21
+ emptyLabel?: string;
22
+ }
23
+
24
+ export interface MultiFilterPopdownProps {
25
+ label: string;
26
+ values: string[];
27
+ options: FilterOption[];
28
+ activeClasses: string;
29
+ onChange: (value: string[]) => void;
30
+ emptyLabel?: string;
31
+ }
32
+
33
+ export function FilterSelect({
34
+ label,
35
+ value,
36
+ options,
37
+ activeClasses,
38
+ onChange,
39
+ disabled = false,
40
+ }: FilterSelectProps) {
41
+ const isActive = value.trim().length > 0;
42
+
43
+ return (
44
+ <div className="relative">
45
+ <select
46
+ aria-label={label}
47
+ className={`max-w-[160px] appearance-none rounded-full border bg-transparent px-2.5 py-0.5 pr-6 text-[11px] font-medium outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-60 ${
48
+ isActive
49
+ ? activeClasses
50
+ : "border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"
51
+ }`}
52
+ value={value}
53
+ disabled={disabled}
54
+ onChange={(event) => onChange(event.target.value)}
55
+ >
56
+ {options.map((option) => (
57
+ <option key={`${label}-${option.value || "all"}`} value={option.value}>
58
+ {option.label}
59
+ </option>
60
+ ))}
61
+ </select>
62
+ <ChevronDown
63
+ size={12}
64
+ className="pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-current"
65
+ />
66
+ </div>
67
+ );
68
+ }
69
+
70
+ export function IssueStatusSelect({
71
+ status,
72
+ options,
73
+ onChange,
74
+ disabled = false,
75
+ updating = false,
76
+ }: {
77
+ status: string;
78
+ options: FilterOption[];
79
+ onChange: (value: string) => void;
80
+ disabled?: boolean;
81
+ updating?: boolean;
82
+ }) {
83
+ return (
84
+ <div className="relative">
85
+ <select
86
+ aria-label="Ticket status"
87
+ className="max-w-[160px] appearance-none rounded-md border border-[var(--card-border)] bg-[var(--card-bg)] px-2.5 py-1 pr-8 text-xs font-medium text-[var(--foreground)] outline-none transition-colors hover:border-[var(--muted-foreground)] disabled:cursor-not-allowed disabled:opacity-60"
88
+ value={status}
89
+ disabled={disabled || updating}
90
+ onChange={(event) => onChange(event.target.value)}
91
+ >
92
+ {options.map((option) => (
93
+ <option key={`ticket-status-${option.value}`} value={option.value}>
94
+ {option.label}
95
+ </option>
96
+ ))}
97
+ </select>
98
+ {updating ? (
99
+ <RefreshCw
100
+ size={12}
101
+ className="pointer-events-none absolute right-6 top-1/2 -translate-y-1/2 animate-spin text-[var(--muted-foreground)]"
102
+ />
103
+ ) : null}
104
+ <ChevronDown
105
+ size={12}
106
+ className="pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)]"
107
+ />
108
+ </div>
109
+ );
110
+ }
111
+
112
+ export function FilterPopdown({
113
+ label,
114
+ value,
115
+ options,
116
+ activeClasses,
117
+ onChange,
118
+ emptyLabel,
119
+ }: FilterPopdownProps) {
120
+ const [open, setOpen] = useState(false);
121
+ const wrapperRef = useRef<HTMLDivElement | null>(null);
122
+ const selectedOption = options.find((option) => option.value === value) ?? null;
123
+ const isActive = value.trim().length > 0;
124
+ const buttonLabel = selectedOption?.label ?? emptyLabel ?? label;
125
+
126
+ useEffect(() => {
127
+ if (!open) {
128
+ return;
129
+ }
130
+
131
+ const handlePointerDown = (event: PointerEvent) => {
132
+ if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) {
133
+ setOpen(false);
134
+ }
135
+ };
136
+
137
+ document.addEventListener("pointerdown", handlePointerDown);
138
+ return () => document.removeEventListener("pointerdown", handlePointerDown);
139
+ }, [open]);
140
+
141
+ useEffect(() => {
142
+ setOpen(false);
143
+ }, [value]);
144
+
145
+ return (
146
+ <div className="relative" ref={wrapperRef}>
147
+ <button
148
+ type="button"
149
+ aria-label={label}
150
+ aria-haspopup="listbox"
151
+ aria-expanded={open}
152
+ className={`flex max-w-[180px] items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${
153
+ isActive
154
+ ? activeClasses
155
+ : "border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"
156
+ }`}
157
+ onClick={() => setOpen((current) => !current)}
158
+ >
159
+ <span className="max-w-[132px] truncate">{buttonLabel}</span>
160
+ <ChevronDown size={12} className={`shrink-0 transition-transform ${open ? "rotate-180" : ""}`} />
161
+ </button>
162
+ {open ? (
163
+ <div
164
+ role="listbox"
165
+ aria-label={`${label} options`}
166
+ 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"
167
+ >
168
+ {options.map((option) => {
169
+ const isSelected = option.value === value;
170
+ return (
171
+ <button
172
+ key={`${label}-${option.value || "all"}`}
173
+ type="button"
174
+ role="option"
175
+ aria-selected={isSelected}
176
+ className={`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${
177
+ isSelected
178
+ ? "bg-[var(--background)] font-medium text-[var(--foreground)]"
179
+ : "text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"
180
+ }`}
181
+ onClick={() => onChange(option.value)}
182
+ >
183
+ <span
184
+ className={`flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${
185
+ isSelected
186
+ ? "border-blue-500 bg-blue-500 text-white"
187
+ : "border-[var(--card-border)]"
188
+ }`}
189
+ >
190
+ {isSelected ? <Check size={10} /> : null}
191
+ </span>
192
+ <span className="min-w-0 flex-1 truncate">{option.label}</span>
193
+ </button>
194
+ );
195
+ })}
196
+ </div>
197
+ ) : null}
198
+ </div>
199
+ );
200
+ }
201
+
202
+ export function MultiFilterPopdown({
203
+ label,
204
+ values,
205
+ options,
206
+ activeClasses,
207
+ onChange,
208
+ emptyLabel,
209
+ }: MultiFilterPopdownProps) {
210
+ const [open, setOpen] = useState(false);
211
+ const wrapperRef = useRef<HTMLDivElement | null>(null);
212
+ const selectedOptions = options.filter(
213
+ (option) => option.value && values.includes(option.value)
214
+ );
215
+ const isActive = selectedOptions.length > 0;
216
+ const buttonLabel = (() => {
217
+ if (selectedOptions.length === 0) {
218
+ return emptyLabel ?? label;
219
+ }
220
+ if (selectedOptions.length === options.length) {
221
+ return emptyLabel ?? label;
222
+ }
223
+ if (selectedOptions.length === 1) {
224
+ return selectedOptions[0]?.label ?? (emptyLabel ?? label);
225
+ }
226
+ const lowerLabel = label.toLowerCase();
227
+ return `${selectedOptions.length} ${lowerLabel}${lowerLabel.endsWith("s") ? "es" : "s"}`;
228
+ })();
229
+
230
+ useEffect(() => {
231
+ if (!open) {
232
+ return;
233
+ }
234
+
235
+ const handlePointerDown = (event: PointerEvent) => {
236
+ if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) {
237
+ setOpen(false);
238
+ }
239
+ };
240
+
241
+ document.addEventListener("pointerdown", handlePointerDown);
242
+ return () => document.removeEventListener("pointerdown", handlePointerDown);
243
+ }, [open]);
244
+
245
+ const toggleValue = useCallback(
246
+ (nextValue: string) => {
247
+ if (!nextValue) {
248
+ onChange([]);
249
+ return;
250
+ }
251
+
252
+ const nextValues = values.includes(nextValue)
253
+ ? values.filter((value) => value !== nextValue)
254
+ : [...values, nextValue];
255
+ onChange(nextValues);
256
+ },
257
+ [onChange, values]
258
+ );
259
+
260
+ return (
261
+ <div className="relative" ref={wrapperRef}>
262
+ <button
263
+ type="button"
264
+ aria-label={label}
265
+ aria-haspopup="listbox"
266
+ aria-expanded={open}
267
+ className={`flex max-w-[180px] items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11px] font-medium transition-colors ${
268
+ isActive
269
+ ? activeClasses
270
+ : "border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"
271
+ }`}
272
+ onClick={() => setOpen((current) => !current)}
273
+ >
274
+ <span className="max-w-[132px] truncate">{buttonLabel}</span>
275
+ <ChevronDown size={12} className={`shrink-0 transition-transform ${open ? "rotate-180" : ""}`} />
276
+ </button>
277
+ {open ? (
278
+ <div
279
+ role="listbox"
280
+ aria-label={`${label} options`}
281
+ aria-multiselectable="true"
282
+ 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"
283
+ >
284
+ <button
285
+ type="button"
286
+ role="option"
287
+ aria-selected={!isActive}
288
+ className={`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${
289
+ !isActive
290
+ ? "bg-[var(--background)] font-medium text-[var(--foreground)]"
291
+ : "text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"
292
+ }`}
293
+ onClick={() => onChange([])}
294
+ >
295
+ <span
296
+ className={`flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${
297
+ !isActive
298
+ ? "border-blue-500 bg-blue-500 text-white"
299
+ : "border-[var(--card-border)]"
300
+ }`}
301
+ >
302
+ {!isActive ? <Check size={10} /> : null}
303
+ </span>
304
+ <span className="min-w-0 flex-1 truncate">{emptyLabel ?? label}</span>
305
+ </button>
306
+ {selectedOptions.length > 0 ? (
307
+ <div className="px-3 pb-1 pt-2 text-[10px] font-medium uppercase tracking-[0.12em] text-[var(--muted-foreground)]">
308
+ Selected
309
+ </div>
310
+ ) : null}
311
+ {options.filter((option) => option.value).map((option) => {
312
+ const isSelected = values.includes(option.value);
313
+ return (
314
+ <button
315
+ key={`${label}-${option.value}`}
316
+ type="button"
317
+ role="option"
318
+ aria-selected={isSelected}
319
+ className={`flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors ${
320
+ isSelected
321
+ ? "bg-[var(--background)] font-medium text-[var(--foreground)]"
322
+ : "text-[var(--muted-foreground)] hover:bg-[var(--background)] hover:text-[var(--foreground)]"
323
+ }`}
324
+ onClick={() => toggleValue(option.value)}
325
+ >
326
+ <span
327
+ className={`flex h-4 w-4 shrink-0 items-center justify-center rounded border ${
328
+ isSelected
329
+ ? "border-blue-500 bg-blue-500 text-white"
330
+ : "border-[var(--card-border)]"
331
+ }`}
332
+ >
333
+ {isSelected ? <Check size={10} /> : null}
334
+ </span>
335
+ <span className="min-w-0 flex-1 truncate">{option.label}</span>
336
+ </button>
337
+ );
338
+ })}
339
+ </div>
340
+ ) : null}
341
+ </div>
342
+ );
343
+ }
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
 
3
3
  import { useState, type ComponentProps } from "react";
4
- import { Bot, Link2, X } from "lucide-react";
4
+ import { Bot, Link2, ScrollText, X } from "lucide-react";
5
5
  import LinearSetup from "@/components/LinearSetup";
6
6
  import LinearWorkerConfig from "@/components/linear/LinearWorkerConfig";
7
+ import LinearWorkerRunLog from "@/components/linear/LinearWorkerRunLog";
7
8
 
8
9
  type LinearSetupProps = ComponentProps<typeof LinearSetup>;
9
10
 
@@ -20,7 +21,7 @@ interface LinearSettingsModalProps {
20
21
  projectId?: string;
21
22
  }
22
23
 
23
- type SettingsTab = "connection" | "worker";
24
+ type SettingsTab = "connection" | "worker" | "run-log";
24
25
 
25
26
  export default function LinearSettingsModal({
26
27
  connected,
@@ -35,10 +36,12 @@ export default function LinearSettingsModal({
35
36
  projectId,
36
37
  }: LinearSettingsModalProps) {
37
38
  const [tab, setTab] = useState<SettingsTab>(connected ? "worker" : "connection");
39
+ const [workerJobId, setWorkerJobId] = useState<string | null>(null);
38
40
 
39
41
  const tabs: Array<{ id: SettingsTab; label: string; icon: React.ReactNode; disabled?: boolean }> = [
40
42
  { id: "connection", label: "Connection", icon: <Link2 size={14} /> },
41
43
  { id: "worker", label: "Linear Worker", icon: <Bot size={14} />, disabled: !connected },
44
+ { id: "run-log", label: "Run Log", icon: <ScrollText size={14} />, disabled: !connected },
42
45
  ];
43
46
 
44
47
  return (
@@ -96,7 +99,10 @@ export default function LinearSettingsModal({
96
99
  />
97
100
  )}
98
101
  {tab === "worker" && connected && (
99
- <LinearWorkerConfig projectId={projectId} />
102
+ <LinearWorkerConfig projectId={projectId} onJobLoaded={setWorkerJobId} />
103
+ )}
104
+ {tab === "run-log" && connected && (
105
+ <LinearWorkerRunLog jobId={workerJobId} />
100
106
  )}
101
107
  </div>
102
108
  </div>
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { useCallback, useEffect, useRef, useState } from "react";
4
4
  import dynamic from "next/dynamic";
5
- import { ChevronDown, ChevronRight, Pause, Play, RefreshCw } from "lucide-react";
5
+ import { ChevronDown, ChevronRight, Play, RefreshCw } from "lucide-react";
6
6
  import { ScheduleConditionPicker, SimpleDropdown } from "@/components/scheduling/ScheduleConditionPicker";
7
7
  import {
8
8
  LINEAR_WORKER_DEFAULT_PROMPT,
@@ -21,6 +21,7 @@ interface TeamOption {
21
21
 
22
22
  interface LinearWorkerConfigProps {
23
23
  projectId?: string;
24
+ onJobLoaded?: (jobId: string | null) => void;
24
25
  }
25
26
 
26
27
  function formatNextRun(
@@ -87,6 +88,7 @@ function CollapsibleSection({
87
88
 
88
89
  export default function LinearWorkerConfig({
89
90
  projectId,
91
+ onJobLoaded,
90
92
  }: LinearWorkerConfigProps) {
91
93
  const [job, setJob] = useState<PromptJob | null>(null);
92
94
  const [teams, setTeams] = useState<TeamOption[]>([]);
@@ -120,13 +122,16 @@ export default function LinearWorkerConfig({
120
122
  setCadence(data.job.cronExpr || data.job.cadence || "*/30 * * * *");
121
123
  setCondition(data.job.condition || "");
122
124
  setTeamId(data.job.teamId || "");
125
+ onJobLoaded?.(data.job.id);
126
+ } else {
127
+ onJobLoaded?.(null);
123
128
  }
124
129
  } catch {
125
130
  // ignore
126
131
  } finally {
127
132
  setLoading(false);
128
133
  }
129
- }, [projectId]);
134
+ }, [projectId, onJobLoaded]);
130
135
 
131
136
  const fetchTeams = useCallback(async () => {
132
137
  if (!projectId) return;
@@ -216,6 +221,26 @@ export default function LinearWorkerConfig({
216
221
  }
217
222
  }, [job, projectId, handleSave]);
218
223
 
224
+ const [runningNow, setRunningNow] = useState(false);
225
+
226
+ const handleRunNow = useCallback(async () => {
227
+ if (!job) return;
228
+ setRunningNow(true);
229
+ try {
230
+ await fetch("/api/prompt-jobs/poll", {
231
+ method: "POST",
232
+ headers: { "Content-Type": "application/json" },
233
+ body: JSON.stringify({ jobId: job.id }),
234
+ });
235
+ // Refresh status after triggering
236
+ setTimeout(fetchWorker, 1000);
237
+ } catch {
238
+ // ignore
239
+ } finally {
240
+ setRunningNow(false);
241
+ }
242
+ }, [job, fetchWorker]);
243
+
219
244
  if (loading) {
220
245
  return (
221
246
  <div className="flex items-center gap-2 py-12 justify-center text-sm text-[var(--muted-foreground)]">
@@ -234,15 +259,6 @@ export default function LinearWorkerConfig({
234
259
  <div className="flex items-center gap-4 text-xs text-[var(--muted-foreground)]">
235
260
  {job && (
236
261
  <>
237
- <span
238
- className={`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${
239
- isActive
240
- ? "border-emerald-500/30 bg-emerald-500/10 text-emerald-400"
241
- : "border-yellow-500/30 bg-yellow-500/10 text-yellow-400"
242
- }`}
243
- >
244
- {job.state}
245
- </span>
246
262
  <span>
247
263
  Next: <span className="text-[var(--foreground)]">{formatNextRun(job.nextRunAt, job.state)}</span>
248
264
  </span>
@@ -260,26 +276,45 @@ export default function LinearWorkerConfig({
260
276
  </>
261
277
  )}
262
278
  </div>
263
- <button
264
- type="button"
265
- disabled={saving}
266
- onClick={handleToggle}
267
- className={`flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-xs font-medium transition-colors ${
268
- isActive
269
- ? "border-yellow-500/30 bg-yellow-500/10 text-yellow-400 hover:bg-yellow-500/20"
270
- : "border-emerald-500/30 bg-emerald-500/10 text-emerald-400 hover:bg-emerald-500/20"
271
- }`}
272
- >
273
- {isActive ? (
274
- <>
275
- <Pause size={12} /> Pause
276
- </>
277
- ) : (
278
- <>
279
- <Play size={12} /> {job ? "Resume" : "Enable"}
280
- </>
279
+ <div className="flex items-center gap-3">
280
+ {/* Run Now button */}
281
+ {job && (
282
+ <button
283
+ type="button"
284
+ disabled={runningNow || saving}
285
+ onClick={handleRunNow}
286
+ className="flex items-center gap-1.5 rounded-lg border border-blue-500/30 bg-blue-500/10 px-3 py-1.5 text-xs font-medium text-blue-400 transition-colors hover:bg-blue-500/20 disabled:opacity-40"
287
+ >
288
+ {runningNow ? (
289
+ <RefreshCw size={12} className="animate-spin" />
290
+ ) : (
291
+ <Play size={12} />
292
+ )}
293
+ Run now
294
+ </button>
281
295
  )}
282
- </button>
296
+ {/* Enable / Disable toggle */}
297
+ <button
298
+ type="button"
299
+ disabled={saving}
300
+ onClick={handleToggle}
301
+ className="relative flex items-center gap-2.5 rounded-lg border border-[var(--card-border)] bg-[var(--muted)] px-3 py-1.5 text-xs font-medium text-[var(--foreground)] transition-colors hover:border-[var(--muted-foreground)]"
302
+ >
303
+ {/* Toggle track */}
304
+ <span
305
+ className={`relative inline-flex h-4 w-7 shrink-0 items-center rounded-full transition-colors ${
306
+ isActive ? "bg-emerald-500" : "bg-[var(--card-border)]"
307
+ }`}
308
+ >
309
+ <span
310
+ className={`inline-block h-3 w-3 rounded-full bg-white transition-transform ${
311
+ isActive ? "translate-x-3.5" : "translate-x-0.5"
312
+ }`}
313
+ />
314
+ </span>
315
+ {isActive ? "Enabled" : "Disabled"}
316
+ </button>
317
+ </div>
283
318
  </div>
284
319
 
285
320
  {/* Main layout: Left (prompts) | Right (config) */}