@mndrk/agx 2.3.3 → 2.4.2

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 (1038) hide show
  1. package/README.md +1 -1
  2. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  3. package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +27 -19
  4. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
  5. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  6. package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +213 -125
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/skills/route.js +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/skills/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js +2 -2
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/route.js +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js +10 -10
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat-runs/[id]/events/route/app-paths-manifest.json +3 -0
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat-runs/[id]/events/route.js +7 -0
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → chat-runs/[id]/events}/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → chat-runs/[id]/events}/route_client-reference-manifest.js +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +2 -3
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/health/route.js +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/health/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/learnings/route.js +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/learnings/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/memories/route.js +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/memories/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/cancel/route.js +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/signal/route.js +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/signal/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/agents/route.js +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/agents/route.js.nft.json +1 -1
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/agents/unassigned/route.js +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/agents/unassigned/route.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/migrate-v1/route.js +1 -1
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/migrate-v2/route.js +1 -1
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js +2 -2
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js +1 -1
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +13 -13
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js +1 -1
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js +14 -14
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js +8 -8
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/skills/route.js +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/skills/route.js.nft.json +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/[teamId]/agents/route.js +1 -1
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/[teamId]/agents/route.js.nft.json +1 -1
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/[teamId]/route.js +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/[teamId]/route.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/export/route.js +1 -1
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/export/route.js.nft.json +1 -1
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/import/route.js +1 -1
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/import/route.js.nft.json +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/threads/route.js +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/threads/route.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/variables/[key]/route.js +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/variables/[key]/route.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/variables/route.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/variables/route.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/agents/route.js +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/agents/route.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +15 -15
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/route.js +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/complete/route.js +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +2 -2
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js +9 -9
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js +12 -12
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js +2 -2
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js +1 -1
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/[id]/route/app-paths-manifest.json +3 -0
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/[id]/route.js +8 -0
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → task-groups/[id]}/route.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → task-groups/[id]}/route_client-reference-manifest.js +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/[id]/tasks/route/app-paths-manifest.json +3 -0
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/[id]/tasks/route.js +8 -0
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/active-agents → task-groups/[id]/tasks}/route.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → task-groups/[id]/tasks}/route_client-reference-manifest.js +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/route/app-paths-manifest.json +3 -0
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/route.js +8 -0
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/route.js.nft.json +1 -0
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → task-groups}/route_client-reference-manifest.js +1 -1
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js +1 -1
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/costs/route.js +1 -1
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -1
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/events/route.js +1 -1
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/history/route.js +1 -1
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/metrics/route.js +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/replan/route.js +1 -1
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/restart/route.js +1 -1
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/resume/route.js +1 -1
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/rollback/route.js +1 -1
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/route.js +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/schedule/route.js +1 -1
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/start/route.js +1 -1
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/history/route.js +1 -1
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/logs/route.js +1 -1
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js +1 -1
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js +1 -1
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js +1 -1
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  216. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js +1 -1
  217. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js +1 -1
  219. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  220. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/assign-orphans/route.js +1 -1
  221. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
  222. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +2 -2
  223. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js +1 -1
  225. package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js.nft.json +1 -1
  226. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js +1 -1
  227. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  228. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js +1 -1
  229. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  230. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tracker/notes/route/app-paths-manifest.json +3 -0
  231. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tracker/notes/route.js +6 -0
  232. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → tracker/notes}/route.js.nft.json +1 -1
  233. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/status → tracker/notes}/route_client-reference-manifest.js +1 -1
  234. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/active-agents/route/app-paths-manifest.json +3 -0
  235. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/active-agents/route.js +7 -0
  236. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/[id] → trackers/[tracker]/active-agents}/route.js.nft.json +1 -1
  237. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/active-agents/route_client-reference-manifest.js +2 -0
  238. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/auth/route/app-paths-manifest.json +3 -0
  239. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id] → trackers/[tracker]/auth}/route.js +8 -7
  240. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/auth/route.js.nft.json +1 -0
  241. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/auth/route_client-reference-manifest.js +2 -0
  242. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/callback/route/app-paths-manifest.json +3 -0
  243. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/callback/route.js +12 -0
  244. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/callback/route.js.nft.json +1 -0
  245. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/active-agents → trackers/[tracker]/callback}/route_client-reference-manifest.js +1 -1
  246. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/groups/route/app-paths-manifest.json +3 -0
  247. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/groups/route.js +12 -0
  248. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/groups/route.js.nft.json +1 -0
  249. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/groups/route_client-reference-manifest.js +2 -0
  250. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/activity/route/app-paths-manifest.json +3 -0
  251. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/activity/route.js +12 -0
  252. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/activity/route.js.nft.json +1 -0
  253. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/activity/route_client-reference-manifest.js +2 -0
  254. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route/app-paths-manifest.json +3 -0
  255. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js +13 -0
  256. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js.nft.json +1 -0
  257. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route_client-reference-manifest.js +2 -0
  258. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/route/app-paths-manifest.json +3 -0
  259. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/route.js +12 -0
  260. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/route.js.nft.json +1 -0
  261. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/route_client-reference-manifest.js +2 -0
  262. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/route/app-paths-manifest.json +3 -0
  263. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/route.js +12 -0
  264. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/route.js.nft.json +1 -0
  265. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id]/recap → trackers/[tracker]/items}/route_client-reference-manifest.js +1 -1
  266. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/mcp-setup/route/app-paths-manifest.json +3 -0
  267. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/mcp-setup/route.js +13 -0
  268. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/mcp-setup/route.js.nft.json +1 -0
  269. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/mcp-setup/route_client-reference-manifest.js +2 -0
  270. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/options/route/app-paths-manifest.json +3 -0
  271. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/options/route.js +12 -0
  272. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/options/route.js.nft.json +1 -0
  273. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/options/route_client-reference-manifest.js +2 -0
  274. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/[id]/route/app-paths-manifest.json +3 -0
  275. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/[id]/route.js +12 -0
  276. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/[id]/route.js.nft.json +1 -0
  277. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/[id]/route_client-reference-manifest.js +2 -0
  278. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/route/app-paths-manifest.json +3 -0
  279. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → trackers/[tracker]/runs}/route.js +8 -7
  280. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/route.js.nft.json +1 -0
  281. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/route_client-reference-manifest.js +2 -0
  282. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route/app-paths-manifest.json +3 -0
  283. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js +12 -0
  284. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js.nft.json +1 -0
  285. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route_client-reference-manifest.js +2 -0
  286. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route/app-paths-manifest.json +3 -0
  287. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route/build-manifest.json +11 -0
  288. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js +12 -0
  289. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js.nft.json +1 -0
  290. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route_client-reference-manifest.js +2 -0
  291. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route/app-paths-manifest.json +3 -0
  292. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route/build-manifest.json +11 -0
  293. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route/server-reference-manifest.json +4 -0
  294. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route.js +12 -0
  295. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route.js.map +5 -0
  296. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route.js.nft.json +1 -0
  297. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route_client-reference-manifest.js +2 -0
  298. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route/app-paths-manifest.json +3 -0
  299. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route/build-manifest.json +11 -0
  300. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route/server-reference-manifest.json +4 -0
  301. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route.js +12 -0
  302. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route.js.map +5 -0
  303. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route.js.nft.json +1 -0
  304. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route_client-reference-manifest.js +2 -0
  305. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route/app-paths-manifest.json +3 -0
  306. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route/build-manifest.json +11 -0
  307. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route/server-reference-manifest.json +4 -0
  308. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route.js +16 -0
  309. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route.js.map +5 -0
  310. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route.js.nft.json +1 -0
  311. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route_client-reference-manifest.js +2 -0
  312. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route/app-paths-manifest.json +3 -0
  313. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route/build-manifest.json +11 -0
  314. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route/server-reference-manifest.json +4 -0
  315. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route.js +7 -0
  316. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route.js.map +5 -0
  317. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/callback → trackers/connections}/route.js.nft.json +1 -1
  318. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/scripted → trackers/connections}/route_client-reference-manifest.js +1 -1
  319. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route/app-paths-manifest.json +3 -0
  320. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route/build-manifest.json +11 -0
  321. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route/server-reference-manifest.json +4 -0
  322. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js +7 -0
  323. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.map +5 -0
  324. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.nft.json +1 -0
  325. package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/token → update-check}/route_client-reference-manifest.js +1 -1
  326. package/cloud-runtime/standalone/apps/local/.next/server/app/api/user-settings/route.js +1 -1
  327. package/cloud-runtime/standalone/apps/local/.next/server/app/api/user-settings/route.js.nft.json +1 -1
  328. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  329. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +3 -3
  330. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  331. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
  332. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  333. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  334. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  335. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  336. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  337. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
  338. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  339. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  340. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  341. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  342. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  343. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  344. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  345. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  346. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  347. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  348. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  349. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  350. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  351. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  352. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  353. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  354. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  355. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  356. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  357. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  358. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  359. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  360. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  361. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  362. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  363. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  364. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  365. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  366. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  367. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  368. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page/app-paths-manifest.json +3 -0
  369. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page/next-font-manifest.json +11 -0
  370. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking/[tracker]}/page/react-loadable-manifest.json +3 -3
  371. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page/server-reference-manifest.json +4 -0
  372. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js +16 -0
  373. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.map +5 -0
  374. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -0
  375. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +2 -0
  376. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/app-paths-manifest.json +3 -0
  377. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/build-manifest.json +18 -0
  378. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/next-font-manifest.json +11 -0
  379. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/react-loadable-manifest.json +1 -0
  380. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/server-reference-manifest.json +4 -0
  381. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js +16 -0
  382. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.map +5 -0
  383. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -0
  384. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +2 -0
  385. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/app-paths-manifest.json +3 -0
  386. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/build-manifest.json +18 -0
  387. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking}/page/next-font-manifest.json +1 -1
  388. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/react-loadable-manifest.json +16 -0
  389. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/server-reference-manifest.json +4 -0
  390. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking}/page.js +6 -6
  391. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.map +5 -0
  392. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking}/page.js.nft.json +1 -1
  393. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +2 -0
  394. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  395. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  396. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  397. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  398. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  399. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  400. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  401. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  402. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  403. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  404. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  405. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  406. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  407. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +2 -2
  408. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +2 -2
  409. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  410. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  411. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  412. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +1 -1
  413. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  414. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
  415. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  416. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  417. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  418. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  419. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  420. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  421. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  422. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  423. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  424. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +27 -19
  425. package/cloud-runtime/standalone/apps/local/.next/server/chunks/083c9_next-internal_server_app_api_trackers_[tracker]_callback_route_actions_e1d8c3e4.js +3 -0
  426. package/cloud-runtime/standalone/apps/local/.next/server/chunks/0da96_local__next-internal_server_app_api_trackers_connections_route_actions_35145606.js +3 -0
  427. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_active-agents_route_actions_e9c27b60.js +3 -0
  428. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_items_[id]_activity_route_actions_bb364795.js +3 -0
  429. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_items_[id]_recap_route_actions_aaed4138.js +3 -0
  430. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_items_[id]_route_actions_6382f424.js +3 -0
  431. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_mcp-setup_route_actions_1279e3c1.js +3 -0
  432. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_runs_[id]_route_actions_4c32ff23.js +3 -0
  433. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_runs_scripted_route_actions_3c16062e.js +3 -0
  434. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_token-receive_route_actions_f831c68f.js +3 -0
  435. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__cb7264ab._.js +3 -0
  436. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]_fs_promises_0bfe4114._.js +3 -0
  437. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__8ea8c1b9._.js → [root-of-the-server]__03585144._.js} +2 -2
  438. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__9a457fa6._.js → [root-of-the-server]__04ee9637._.js} +2 -2
  439. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__079c42ac._.js +3 -0
  440. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08a40fc7._.js +3 -0
  441. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__bad0734e._.js → [root-of-the-server]__0a528fae._.js} +2 -2
  442. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__29ef193f._.js → [root-of-the-server]__0b317b6d._.js} +2 -2
  443. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0fbbaf2d._.js +95 -0
  444. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__101fe653._.js +3 -0
  445. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10a90219._.js +69 -0
  446. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__305e10a8._.js → [root-of-the-server]__10bfac8f._.js} +2 -2
  447. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__121d8e45._.js +3 -0
  448. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1629da24._.js +9 -0
  449. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__9a4dd378._.js → [root-of-the-server]__19d0fac1._.js} +2 -2
  450. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1d3e684e._.js +70 -0
  451. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__203428c1._.js +6 -0
  452. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__21721841._.js +3 -0
  453. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__240d98b0._.js +3 -0
  454. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__a7163d7b._.js → [root-of-the-server]__2ab23e45._.js} +2 -2
  455. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__2bb933c7._.js +3 -0
  456. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__2c148e2b._.js +3 -0
  457. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__2ff70366._.js +3 -0
  458. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__17474404._.js → [root-of-the-server]__368f5ffd._.js} +2 -2
  459. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__80be3fd0._.js → [root-of-the-server]__39baf5f6._.js} +1 -1
  460. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__3a038592._.js +10 -8
  461. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__3b27260f._.js +114 -0
  462. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__f99bf39d._.js → [root-of-the-server]__41534d9e._.js} +2 -2
  463. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__9f7dc3d5._.js → [root-of-the-server]__4641ba3f._.js} +2 -2
  464. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0408eb2d._.js → [root-of-the-server]__4b167927._.js} +2 -2
  465. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0e11afc3._.js → [root-of-the-server]__4b9d4f5c._.js} +2 -2
  466. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__45988247._.js → [root-of-the-server]__4e296e1f._.js} +2 -2
  467. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__3a639150._.js → [root-of-the-server]__4fbf7baa._.js} +2 -2
  468. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__cf874bd3._.js → [root-of-the-server]__5184da61._.js} +3 -3
  469. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__5859156d._.js +8 -0
  470. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__6062bf0a._.js +3 -0
  471. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__68b692c4._.js +131 -0
  472. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__92dfd9af._.js → [root-of-the-server]__6b0b354d._.js} +2 -2
  473. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__8363ba26._.js → [root-of-the-server]__6e0ef488._.js} +2 -2
  474. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__68c85bdd._.js → [root-of-the-server]__6e73b6e1._.js} +2 -2
  475. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__a8861f5b._.js → [root-of-the-server]__6ead08b8._.js} +2 -2
  476. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__fd3e97e7._.js → [root-of-the-server]__6f6afa0f._.js} +20 -20
  477. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__73f80c8c._.js +3 -0
  478. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__7be142e5._.js → [root-of-the-server]__7b7b4601._.js} +2 -2
  479. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__7cd28ae0._.js +3 -0
  480. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__7db7c421._.js +119 -0
  481. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__1888961f._.js → [root-of-the-server]__7fcbb0c2._.js} +96 -94
  482. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__83baa76e._.js → [root-of-the-server]__80aea589._.js} +1 -1
  483. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__8269cb17._.js +3 -0
  484. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__847236fb._.js +3 -0
  485. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__847ab7ae._.js +3 -0
  486. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__91dd4b59._.js → [root-of-the-server]__8dd3b8c5._.js} +2 -2
  487. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__268327fe._.js → [root-of-the-server]__905a5b44._.js} +2 -2
  488. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__8c1f1ac0._.js → [root-of-the-server]__90dd5edd._.js} +2 -2
  489. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__97b5dbf7._.js +3 -0
  490. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__bb6304da._.js → [root-of-the-server]__97e51964._.js} +2 -2
  491. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0ce28b4a._.js → [root-of-the-server]__97e7a600._.js} +2 -2
  492. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__9e4c0741._.js +8 -0
  493. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__9e9149cd._.js +3 -0
  494. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__cea6728f._.js → [root-of-the-server]__a74338e8._.js} +2 -2
  495. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__816926cc._.js → [root-of-the-server]__aa4e5942._.js} +2 -2
  496. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ab9b38d8._.js +3 -0
  497. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__4c4892ef._.js → [root-of-the-server]__ac854687._.js} +2 -2
  498. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__c18c59db._.js → [root-of-the-server]__ae54e5ab._.js} +2 -2
  499. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__b0a94c41._.js +70 -0
  500. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__b1357960._.js +3 -0
  501. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__53af378f._.js → [root-of-the-server]__b810670d._.js} +2 -2
  502. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ba72d342._.js +91 -0
  503. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__da39c8a8._.js → [root-of-the-server]__bb757af8._.js} +2 -2
  504. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c07d22ff._.js +3 -0
  505. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c3408141._.js +3 -0
  506. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c4a986f6._.js +3 -0
  507. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__6e876a97._.js → [root-of-the-server]__c614c26c._.js} +2 -2
  508. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c936d679._.js +17 -0
  509. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__caa79472._.js +3 -0
  510. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__dc146f58._.js → [root-of-the-server]__cbd45246._.js} +2 -2
  511. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__8316aa3e._.js → [root-of-the-server]__d402ed75._.js} +2 -2
  512. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__d8cc43c7._.js +114 -0
  513. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__e9ff8266._.js → [root-of-the-server]__d8efbb6c._.js} +2 -2
  514. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__e679695d._.js → [root-of-the-server]__dd538d32._.js} +2 -2
  515. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__c16e8d2d._.js → [root-of-the-server]__df0f00fd._.js} +2 -2
  516. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__131f801a._.js → [root-of-the-server]__e237981c._.js} +2 -2
  517. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__7d454180._.js → [root-of-the-server]__e583235c._.js} +2 -2
  518. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__ccd1a823._.js → [root-of-the-server]__ece576c1._.js} +2 -2
  519. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ef1c393e._.js +70 -0
  520. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__c97ac79d._.js → [root-of-the-server]__f21be9eb._.js} +2 -2
  521. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__f598d976._.js +3 -0
  522. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__f7a936d9._.js +114 -0
  523. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__d7e4a538._.js → [root-of-the-server]__fb5944d3._.js} +1 -1
  524. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__fb694089._.js +3 -0
  525. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__fbe43c0a._.js +3 -0
  526. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{_3a4bfa8b._.js → _08b93004._.js} +2 -2
  527. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_1a4cb196._.js +95 -0
  528. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_2124f905._.js +25 -0
  529. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_21812330._.js +23 -23
  530. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_25136564._.js +11 -0
  531. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_520e6344._.js +25 -0
  532. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_5b3f1f41._.js +1 -1
  533. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_5e5f36c4._.js +91 -0
  534. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_80b34b78._.js +3 -0
  535. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_8f9f647d._.js +128 -0
  536. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_task-groups_[id]_route_actions_b10cc67c.js +3 -0
  537. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_task-groups_route_actions_0079ff4a.js +3 -0
  538. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_tracker_notes_route_actions_b8a47be9.js +3 -0
  539. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_update-check_route_actions_29ba83b6.js +3 -0
  540. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{apps_local_3e0a6a05._.js → apps_local_a15e73a6._.js} +3 -3
  541. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_aac0e4cb._.js +109 -0
  542. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_b8cc7add._.js +23 -23
  543. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{apps_local_2c8c923a._.js → apps_local_c101ba9e._.js} +2 -2
  544. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_d256aa32._.js +286 -0
  545. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e12b284f._.js +23 -23
  546. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e1f4d9ad._.js +91 -0
  547. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e55f28ef._.js +296 -0
  548. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_ea2bca7e._.js +109 -0
  549. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_f8b3abae._.js +91 -0
  550. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_3ddc6591._.js +4 -0
  551. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_6bd3d8a2._.js +15 -15
  552. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_cli-runner_ts_ead5489c._.js +18 -18
  553. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_d268503a._.js +15 -15
  554. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_history-store_ts_e4ff7678._.js +19 -12
  555. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_history-store_ts_e98db4de._.js +19 -12
  556. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{apps_local_58f0d34e._.js → apps_local_lib_linear-issues_ts_50093d17._.js} +15 -20
  557. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_orchestrator_chat-processor_ts_46384f36._.js +14 -13
  558. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_7b90c71f._.js +49 -23
  559. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_7ee03cea._.js +3 -0
  560. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_a3d4d8f4._.js +48 -22
  561. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_tracker_tracker-run-store_ts_5aa9592e._.js +114 -0
  562. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_chat-runs_[id]_events_route_actions_2099e8ec.js +3 -0
  563. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_task-groups_[id]_tasks_route_actions_9a8b437b.js +3 -0
  564. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_auth_route_actions_93e51026.js +3 -0
  565. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_groups_route_actions_950eeaf7.js +3 -0
  566. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_items_route_actions_41ec2af7.js +3 -0
  567. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_options_route_actions_19b0ffef.js +3 -0
  568. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_runs_route_actions_54d24a56.js +3 -0
  569. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_status_route_actions_1f8ce507.js +3 -0
  570. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_token_route_actions_93eeb2d1.js +3 -0
  571. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_worker_route_actions_22ced26f.js +3 -0
  572. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/083c9_next-internal_server_app_projects_[slug]_tracking_connect_page_actions_72d4a587.js +3 -0
  573. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0da96_local__next-internal_server_app_projects_[slug]_tracking_page_actions_ad982907.js +3 -0
  574. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/30bdd_server_app_projects_[slug]_tracking_[tracker]_page_actions_c27c0fcc.js +3 -0
  575. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/9fb8c_lucide-react_dist_esm_icons_5e38c2ed._.js +3 -0
  576. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__6e4038bb._.js → [root-of-the-server]__2c4531d0._.js} +2 -2
  577. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__30bf097e._.js +3 -0
  578. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__46ae9d33._.js +3 -0
  579. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__50fd8680._.js +3 -0
  580. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__64cb5d93._.js → [root-of-the-server]__51edc9b6._.js} +2 -2
  581. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5aa35736._.js +3 -0
  582. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5c817ed1._.js +3 -0
  583. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__799f4d13._.js +3 -0
  584. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__8059a285._.js +3 -0
  585. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__886953ec._.js +7 -0
  586. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__97160565._.js +3 -0
  587. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__b8a00d09._.js +3 -0
  588. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bc60b3cf._.js +3 -0
  589. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bce1fbf7._.js +1 -1
  590. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__c2c07c79._.js +3 -0
  591. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__c7e1ea27._.js +1 -1
  592. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__24007358._.js → [root-of-the-server]__ce586680._.js} +2 -2
  593. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__fdfb2d96._.js +3 -0
  594. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_55671310._.js +13 -13
  595. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_ba2abc47._.js +7 -0
  596. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_e00b6c25._.js +3 -0
  597. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_e485f527._.js +3 -0
  598. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_064c7b93._.js +18 -0
  599. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_16902bc1._.js +1 -1
  600. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_1e4a0236._.js +1 -1
  601. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_35d90b5d._.js +3 -0
  602. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3e5712aa._.js +3 -0
  603. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3f9f6417._.js +1 -1
  604. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_5d6a3ce2._.js +3 -0
  605. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_5eebb5cb._.js +3 -0
  606. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_7395ab20._.js +18 -0
  607. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_86f59be8._.js +3 -0
  608. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
  609. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_3bb31889._.js +1 -1
  610. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_76330306._.js +1 -1
  611. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_0933eeaf._.js +1 -1
  612. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_thread_[threadId]_page_tsx_2a1d1d5e._.js +1 -1
  613. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_c5e75cc1._.js +18 -0
  614. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +48 -0
  615. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_f0554cb4._.js +11 -0
  616. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +3 -3
  617. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_d9a0fd57._.js +4 -0
  618. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_da1774f7._.js +4 -0
  619. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_5b388b71._.js → apps_local_e46807f8._.js} +3 -3
  620. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_e7a823e9._.js +3 -0
  621. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_f67bb291._.js +18 -0
  622. package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +20 -17
  623. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  624. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
  625. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +12 -4
  626. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  627. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
  628. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  629. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  630. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0876dfd6ce07abaf.js +9 -0
  631. package/cloud-runtime/standalone/apps/local/.next/static/chunks/114ea1bfd6907330.js +1 -0
  632. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1533a70763aff97d.js +1 -0
  633. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1ec83777a9abd420.js +16 -0
  634. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1fef9364e8667e88.js +1 -0
  635. package/cloud-runtime/standalone/apps/local/.next/static/chunks/286758b0fd546c68.js +16 -0
  636. package/cloud-runtime/standalone/apps/local/.next/static/chunks/31eb3dfbf34049d2.js +1 -0
  637. package/cloud-runtime/standalone/apps/local/.next/static/chunks/31fa61ac9eccd69e.js +1 -0
  638. package/cloud-runtime/standalone/apps/local/.next/static/chunks/37f4e8258ca4d3fb.js +1 -0
  639. package/cloud-runtime/standalone/apps/local/.next/static/chunks/416f4124364c7ec8.js +1 -0
  640. package/cloud-runtime/standalone/apps/local/.next/static/chunks/4eaf7bca1be5edfa.js +1 -0
  641. package/cloud-runtime/standalone/apps/local/.next/static/chunks/6c278ae4535b6d5c.js +1 -0
  642. package/cloud-runtime/standalone/apps/local/.next/static/chunks/6c777fe66e042eec.js +16 -0
  643. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{2b946f9d53da482e.js → 77cea126364aab3c.js} +1 -1
  644. package/cloud-runtime/standalone/apps/local/.next/static/chunks/85b0b6ed57b5df52.js +1 -0
  645. package/cloud-runtime/standalone/apps/local/.next/static/chunks/87e4fb11329a358d.js +1 -0
  646. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{4bc34bec0c539bb8.js → 8a9626e4d7c259ee.js} +6 -6
  647. package/cloud-runtime/standalone/apps/local/.next/static/chunks/a72ed5cb3feb0d51.js +5 -0
  648. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b02c180ad1d968eb.js +16 -0
  649. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b048a4812b51f97a.js +1 -0
  650. package/cloud-runtime/standalone/apps/local/.next/static/chunks/be9022a471666b85.js +1 -0
  651. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c63d97c917d96f47.js +46 -0
  652. package/cloud-runtime/standalone/apps/local/.next/static/chunks/cb19d71dd7ffb935.js +1 -0
  653. package/cloud-runtime/standalone/apps/local/.next/static/chunks/cbb4dbdc63177701.js +1 -0
  654. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{bf4057d9deff2a78.js → cd19b123505dd26c.js} +2 -2
  655. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d3bf70e2fbdc0ae5.js +5 -0
  656. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{592bca7fe1fc1455.js → d500a3f5d15b31d5.js} +1 -1
  657. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d5b14e14665024a9.js +5 -0
  658. package/cloud-runtime/standalone/apps/local/.next/static/chunks/dd5a56eea2d4c067.js +16 -0
  659. package/cloud-runtime/standalone/apps/local/.next/static/chunks/dd7d7c382389b8b9.js +16 -0
  660. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{571e45336377eb45.js → e72724fd8225ec39.js} +3 -3
  661. package/cloud-runtime/standalone/apps/local/.next/static/chunks/ec92e3bd6c2db6e6.css +1 -0
  662. package/cloud-runtime/standalone/apps/local/.next/static/chunks/f3c1b6295b9442c6.js +1 -0
  663. package/cloud-runtime/standalone/apps/local/app/api/chat-runs/[id]/events/route.ts +98 -0
  664. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +1 -1
  665. package/cloud-runtime/standalone/apps/local/app/api/task-groups/[id]/route.ts +38 -0
  666. package/cloud-runtime/standalone/apps/local/app/api/task-groups/[id]/tasks/route.ts +42 -0
  667. package/cloud-runtime/standalone/apps/local/app/api/task-groups/route.ts +38 -0
  668. package/cloud-runtime/standalone/apps/local/app/api/tracker/notes/route.ts +65 -0
  669. package/cloud-runtime/standalone/apps/local/app/api/{linear/issues → trackers/[tracker]}/active-agents/route.ts +3 -2
  670. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/auth/route.ts +29 -0
  671. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/callback/route.ts +58 -0
  672. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/groups/route.ts +24 -0
  673. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/items/[id]/activity/route.ts +24 -0
  674. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/items/[id]/recap/route.ts +125 -0
  675. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/items/[id]/route.ts +60 -0
  676. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/items/route.ts +44 -0
  677. package/cloud-runtime/standalone/apps/local/app/api/{linear → trackers/[tracker]}/mcp-setup/route.ts +90 -33
  678. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/options/route.ts +33 -0
  679. package/cloud-runtime/standalone/apps/local/app/api/{linear → trackers/[tracker]}/runs/[id]/route.ts +24 -16
  680. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/runs/route.ts +87 -0
  681. package/cloud-runtime/standalone/apps/local/app/api/{linear → trackers/[tracker]}/runs/scripted/route.ts +13 -6
  682. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/status/route.ts +48 -0
  683. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/token/route.ts +49 -0
  684. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/token-receive/route.ts +52 -0
  685. package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/worker/route.ts +163 -0
  686. package/cloud-runtime/standalone/apps/local/app/api/trackers/connections/route.ts +96 -0
  687. package/cloud-runtime/standalone/apps/local/app/api/update-check/route.ts +50 -0
  688. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +2 -1
  689. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/terminal/page.tsx +4 -1
  690. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/{linear → tracking/[tracker]}/page.tsx +11 -6
  691. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/tracking/connect/page.tsx +180 -0
  692. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/tracking/page.tsx +36 -0
  693. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +3 -3
  694. package/cloud-runtime/standalone/apps/local/components/{LinearBoard.tsx → TrackerBoard.tsx} +654 -302
  695. package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +18 -75
  696. package/cloud-runtime/standalone/apps/local/components/chat-ui/MessageBubble.tsx +6 -1
  697. package/cloud-runtime/standalone/apps/local/components/chat-ui/MessageList.tsx +34 -8
  698. package/cloud-runtime/standalone/apps/local/components/chat-ui/StreamingSegments.tsx +88 -0
  699. package/cloud-runtime/standalone/apps/local/components/chat-ui/ThreadView.tsx +23 -13
  700. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +18 -2
  701. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathsSection.tsx +7 -7
  702. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +28 -5
  703. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +61 -46
  704. package/cloud-runtime/standalone/apps/local/components/tracker/FolderRow.tsx +161 -0
  705. package/cloud-runtime/standalone/apps/local/components/tracker/GroupNamePrompt.tsx +110 -0
  706. package/cloud-runtime/standalone/apps/local/components/tracker/GroupPanel.tsx +306 -0
  707. package/cloud-runtime/standalone/apps/local/components/tracker/NoteSticker.tsx +161 -0
  708. package/cloud-runtime/standalone/apps/local/components/{linear → tracker}/RunScriptManager.tsx +7 -7
  709. package/cloud-runtime/standalone/apps/local/components/tracker/SelectionBar.tsx +38 -0
  710. package/cloud-runtime/standalone/apps/local/components/{linear → tracker}/TicketPanel.tsx +39 -37
  711. package/cloud-runtime/standalone/apps/local/components/{linear → tracker}/TicketRecapSection.tsx +9 -5
  712. package/cloud-runtime/standalone/apps/local/components/tracker/TicketRow.tsx +279 -0
  713. package/cloud-runtime/standalone/apps/local/components/{linear → tracker}/TicketSessionList.tsx +3 -3
  714. package/cloud-runtime/standalone/apps/local/components/{linear/LinearSettingsModal.tsx → tracker/TrackerSettingsModal.tsx} +26 -22
  715. package/cloud-runtime/standalone/apps/local/components/{linear/LinearWorkerConfig.tsx → tracker/TrackerWorkerConfig.tsx} +12 -12
  716. package/cloud-runtime/standalone/apps/local/components/{linear/LinearWorkerRunLog.tsx → tracker/TrackerWorkerRunLog.tsx} +4 -4
  717. package/cloud-runtime/standalone/apps/local/components/tracking/TaskTrackingNav.tsx +125 -0
  718. package/cloud-runtime/standalone/apps/local/components/tracking/TrackerIcon.tsx +58 -0
  719. package/cloud-runtime/standalone/apps/local/components/tracking/TrackerSetup.tsx +264 -0
  720. package/cloud-runtime/standalone/apps/local/hooks/useGroupChat.ts +1 -0
  721. package/cloud-runtime/standalone/apps/local/hooks/useProcessPolling.ts +155 -12
  722. package/cloud-runtime/standalone/apps/local/hooks/useSidebarStage.ts +54 -18
  723. package/cloud-runtime/standalone/apps/local/hooks/useTaskGroups.ts +133 -0
  724. package/cloud-runtime/standalone/apps/local/hooks/{useLinearActiveAgents.ts → useTrackerActiveAgents.ts} +19 -6
  725. package/cloud-runtime/standalone/apps/local/hooks/{useLinearConnection.ts → useTrackerConnection.ts} +107 -26
  726. package/cloud-runtime/standalone/apps/local/hooks/useTrackerConnections.ts +99 -0
  727. package/cloud-runtime/standalone/apps/local/hooks/{useLinearIssueMentions.ts → useTrackerItemMentions.ts} +15 -8
  728. package/cloud-runtime/standalone/apps/local/hooks/useTrackerItems.ts +120 -0
  729. package/cloud-runtime/standalone/apps/local/hooks/{useLinearParticipants.ts → useTrackerParticipants.ts} +4 -4
  730. package/cloud-runtime/standalone/apps/local/hooks/{useLinearRunScripts.ts → useTrackerRunScripts.ts} +15 -15
  731. package/cloud-runtime/standalone/apps/local/hooks/{useLinearRuns.ts → useTrackerRuns.ts} +33 -55
  732. package/cloud-runtime/standalone/apps/local/hooks/useUpdateCheck.ts +37 -0
  733. package/cloud-runtime/standalone/apps/local/hooks/useUrlSelection.ts +19 -0
  734. package/cloud-runtime/standalone/apps/local/lib/agent-process-registry.ts +29 -6
  735. package/cloud-runtime/standalone/apps/local/lib/chat/tracker-issue-context.ts +11 -0
  736. package/cloud-runtime/standalone/apps/local/lib/chat/{linear-issue-context.ts → tracker-item-context.ts} +19 -10
  737. package/cloud-runtime/standalone/apps/local/lib/chat-event-bus.ts +84 -0
  738. package/cloud-runtime/standalone/apps/local/lib/chat-utils.ts +68 -0
  739. package/cloud-runtime/standalone/apps/local/lib/cli-runner.ts +46 -21
  740. package/cloud-runtime/standalone/apps/local/lib/constants/timing.ts +1 -0
  741. package/cloud-runtime/standalone/apps/local/lib/history-store.ts +14 -0
  742. package/cloud-runtime/standalone/apps/local/lib/linear-run-status.ts +3 -1
  743. package/cloud-runtime/standalone/apps/local/lib/{objective-linear-issues.ts → objective-tracker-issues.ts} +12 -6
  744. package/cloud-runtime/standalone/apps/local/lib/orchestrator/chat-processor.ts +35 -1
  745. package/cloud-runtime/standalone/apps/local/lib/sqlite-query-adapter.ts +32 -0
  746. package/cloud-runtime/standalone/apps/local/lib/stream-multiplexer.ts +5 -0
  747. package/cloud-runtime/standalone/apps/local/lib/task-groups-db.ts +130 -0
  748. package/cloud-runtime/standalone/apps/local/lib/tiptap/composer-mentions.ts +5 -5
  749. package/cloud-runtime/standalone/apps/local/lib/tiptap/editor-utils.ts +1 -1
  750. package/cloud-runtime/standalone/apps/local/lib/tiptap/serialize-composer.ts +2 -2
  751. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/adapter.tsx +324 -0
  752. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/client.ts +517 -0
  753. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/index.ts +18 -0
  754. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/issues.ts +268 -0
  755. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/jira-icon.tsx +22 -0
  756. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/adapter.tsx +307 -0
  757. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/client.ts +907 -0
  758. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/index.ts +9 -0
  759. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/issues.ts +376 -0
  760. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/linear-icon.tsx +14 -0
  761. package/cloud-runtime/standalone/apps/local/lib/tracker/connections.ts +67 -0
  762. package/cloud-runtime/standalone/apps/local/lib/tracker/index.ts +44 -0
  763. package/cloud-runtime/standalone/apps/local/lib/tracker/recap.ts +246 -0
  764. package/cloud-runtime/standalone/apps/local/lib/tracker/registry.ts +32 -0
  765. package/cloud-runtime/standalone/apps/local/lib/tracker/route-helpers.ts +27 -0
  766. package/cloud-runtime/standalone/apps/local/lib/{linear-scripted-session.ts → tracker/scripted-session.ts} +28 -23
  767. package/cloud-runtime/standalone/apps/local/lib/tracker/tracker-adapter.ts +64 -0
  768. package/cloud-runtime/standalone/apps/local/lib/{linear-execution-prompt.ts → tracker/tracker-execution-prompt.ts} +27 -23
  769. package/cloud-runtime/standalone/apps/local/lib/tracker/tracker-item-store.ts +804 -0
  770. package/cloud-runtime/standalone/apps/local/lib/tracker/tracker-run-store.ts +560 -0
  771. package/cloud-runtime/standalone/apps/local/lib/tracker/types.ts +119 -0
  772. package/cloud-runtime/standalone/apps/local/lib/tracker-board-utils.ts +4 -0
  773. package/cloud-runtime/standalone/apps/local/lib/tracker-run-status.ts +88 -0
  774. package/cloud-runtime/standalone/apps/local/lib/types.ts +1 -0
  775. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker.ts +4 -4
  776. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +7 -6
  777. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/{linear-worker-constants.ts → task-worker-constants.ts} +11 -11
  778. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/task-worker-job.ts +49 -0
  779. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/{linear-worker.ts → task-worker.ts} +47 -31
  780. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +5 -3
  781. package/cloud-runtime/standalone/apps/local/state/lastSession.test.ts +83 -0
  782. package/cloud-runtime/standalone/apps/local/state/lastSession.ts +46 -0
  783. package/cloud-runtime/standalone/apps/local/state/trackerBoardFilters.ts +112 -0
  784. package/cloud-runtime/standalone/apps/local/state/{linearBoardPins.ts → trackerBoardPins.ts} +14 -9
  785. package/cloud-runtime/standalone/apps/local/state/{linearRunScripts.ts → trackerRunScripts.ts} +32 -24
  786. package/cloud-runtime/standalone/apps/local/worker/index.js +194 -14
  787. package/lib/commands/chat.js +0 -4
  788. package/lib/logger.ts +72 -0
  789. package/package.json +1 -1
  790. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/auth/route/app-paths-manifest.json +0 -3
  791. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/auth/route.js +0 -7
  792. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/callback/route/app-paths-manifest.json +0 -3
  793. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/callback/route.js +0 -7
  794. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/callback/route_client-reference-manifest.js +0 -2
  795. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/cycles/route/app-paths-manifest.json +0 -3
  796. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/cycles/route.js +0 -7
  797. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/cycles/route.js.nft.json +0 -1
  798. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/cycles/route_client-reference-manifest.js +0 -2
  799. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/recap/route/app-paths-manifest.json +0 -3
  800. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/recap/route.js +0 -12
  801. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/recap/route.js.nft.json +0 -1
  802. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route/app-paths-manifest.json +0 -3
  803. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +0 -1
  804. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route_client-reference-manifest.js +0 -2
  805. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/active-agents/route/app-paths-manifest.json +0 -3
  806. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/active-agents/route.js +0 -7
  807. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/activity/route/app-paths-manifest.json +0 -3
  808. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/activity/route.js +0 -7
  809. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route/app-paths-manifest.json +0 -3
  810. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +0 -1
  811. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route/app-paths-manifest.json +0 -3
  812. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js +0 -11
  813. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +0 -1
  814. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route_client-reference-manifest.js +0 -2
  815. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/mcp-setup/route/app-paths-manifest.json +0 -3
  816. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/mcp-setup/route.js +0 -8
  817. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route/app-paths-manifest.json +0 -3
  818. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js +0 -11
  819. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +0 -1
  820. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route_client-reference-manifest.js +0 -2
  821. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/[id]/route/app-paths-manifest.json +0 -3
  822. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/[id]/route.js +0 -7
  823. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/[id]/route_client-reference-manifest.js +0 -2
  824. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/route/app-paths-manifest.json +0 -3
  825. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/route.js +0 -7
  826. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/route.js.nft.json +0 -1
  827. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/route_client-reference-manifest.js +0 -2
  828. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route/app-paths-manifest.json +0 -3
  829. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js +0 -24
  830. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +0 -1
  831. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route/app-paths-manifest.json +0 -3
  832. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js +0 -7
  833. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +0 -1
  834. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/token/route/app-paths-manifest.json +0 -3
  835. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/token/route.js +0 -7
  836. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/token/route.js.nft.json +0 -1
  837. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/app-paths-manifest.json +0 -3
  838. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js +0 -13
  839. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js.nft.json +0 -1
  840. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route_client-reference-manifest.js +0 -2
  841. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route/app-paths-manifest.json +0 -3
  842. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js +0 -14
  843. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +0 -1
  844. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route_client-reference-manifest.js +0 -2
  845. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/app-paths-manifest.json +0 -3
  846. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +0 -2
  847. package/cloud-runtime/standalone/apps/local/.next/server/chunks/083c9_next-internal_server_app_api_linear_issues_active-agents_route_actions_e49a4900.js +0 -3
  848. package/cloud-runtime/standalone/apps/local/.next/server/chunks/0da96_local__next-internal_server_app_api_linear_issues_[id]_route_actions_8966da68.js +0 -3
  849. package/cloud-runtime/standalone/apps/local/.next/server/chunks/0da96_local__next-internal_server_app_api_linear_runs_scripted_route_actions_65d0c32b.js +0 -3
  850. package/cloud-runtime/standalone/apps/local/.next/server/chunks/9fb8c_next_dist_esm_build_templates_app-route_4a0d9040.js +0 -3
  851. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__c397277f._.js +0 -3
  852. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__ec108b52._.js +0 -3
  853. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0e80a97a._.js +0 -3
  854. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0fc11060._.js +0 -3
  855. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1926415e._.js +0 -3
  856. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1a87c857._.js +0 -3
  857. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1d278aeb._.js +0 -8
  858. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1ee65b64._.js +0 -3
  859. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__2f038740._.js +0 -8
  860. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__4b05c44d._.js +0 -141
  861. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__4c070f04._.js +0 -165
  862. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__6183b682._.js +0 -67
  863. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__63752370._.js +0 -3
  864. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__713ff4cf._.js +0 -145
  865. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__7ce30f24._.js +0 -3
  866. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__87abf03f._.js +0 -141
  867. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__a22e30c6._.js +0 -22
  868. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__b176d4d9._.js +0 -160
  869. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c84eafe2._.js +0 -141
  870. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__d28ace89._.js +0 -3
  871. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__d7e18064._.js +0 -160
  872. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__d9bbc1a6._.js +0 -141
  873. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__dfd77ac4._.js +0 -31
  874. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ef75c5b6._.js +0 -4
  875. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__f66666f9._.js +0 -141
  876. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__f844df91._.js +0 -3
  877. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ff6a99f0._.js +0 -160
  878. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_00ea3122._.js +0 -415
  879. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_022eee16._.js +0 -3
  880. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_08d3c605._.js +0 -25
  881. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_671682cc._.js +0 -3
  882. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_7222e528._.js +0 -9
  883. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_755b8689._.js +0 -415
  884. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_auth_route_actions_845dd997.js +0 -3
  885. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_callback_route_actions_90a636e1.js +0 -3
  886. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_cycles_route_actions_20618fe1.js +0 -3
  887. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_issues_route_actions_f798ab06.js +0 -3
  888. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_mcp-setup_route_actions_9c461973.js +0 -3
  889. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_options_route_actions_3455e6c0.js +0 -3
  890. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_runs_[id]_route_actions_4bd5ad16.js +0 -3
  891. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_runs_route_actions_8613ec29.js +0 -3
  892. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_status_route_actions_746bcaf4.js +0 -3
  893. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_token_route_actions_8fed80a2.js +0 -3
  894. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_worker_route_actions_ef891304.js +0 -3
  895. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_af73c5e8._.js +0 -155
  896. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_b3086d93._.js +0 -25
  897. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c530bd77._.js +0 -11
  898. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_f13708ae._.js +0 -415
  899. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_077d49c2._.js +0 -8
  900. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_62edff06._.js +0 -4
  901. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_941822a8._.js +0 -4
  902. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_e7ef8bcb._.js +0 -4
  903. package/cloud-runtime/standalone/apps/local/.next/server/chunks/e2f97_api_projects_[id]_objectives_[objectiveId]_linear-issues_route_actions_d506d8a3.js +0 -3
  904. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_linear_issues_[id]_recap_route_actions_7b9ac0ec.js +0 -3
  905. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_linear_issues_activity_route_actions_a25a56a3.js +0 -3
  906. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_linear_issues_context_route_actions_b8ed252b.js +0 -3
  907. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0da96_local__next-internal_server_app_projects_[slug]_linear_page_actions_d3e5c399.js +0 -3
  908. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/9fb8c_lucide-react_dist_esm_icons_c5dc4091._.js +0 -3
  909. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__31c61bac._.js +0 -3
  910. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__364fdd09._.js +0 -3
  911. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__45e37c6d._.js +0 -18
  912. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7c5959c3._.js +0 -18
  913. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__8666da53._.js +0 -3
  914. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__94ab2a92._.js +0 -18
  915. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__97e9f8c3._.js +0 -18
  916. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__a3cf8479._.js +0 -3
  917. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__d47e7e93._.js +0 -18
  918. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e9f82952._.js +0 -3
  919. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_480cf274._.js +0 -3
  920. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_4e95976c._.js +0 -3
  921. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_5ec7006b._.js +0 -3
  922. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ac2a791._.js +0 -3
  923. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0c3f9085._.js +0 -7
  924. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_37d519f7._.js +0 -7
  925. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_96dee4fc._.js +0 -3
  926. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_3fd25408._.js +0 -37
  927. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_d30cc504._.js +0 -11
  928. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_df7bb32d._.js +0 -3
  929. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_f1b23697._.js +0 -11
  930. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09a9b0ff9fedfd4c.js +0 -1
  931. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1d442896a9e6f641.js +0 -1
  932. package/cloud-runtime/standalone/apps/local/.next/static/chunks/26078932a72e240a.js +0 -1
  933. package/cloud-runtime/standalone/apps/local/.next/static/chunks/28f49fb8b0515698.js +0 -1
  934. package/cloud-runtime/standalone/apps/local/.next/static/chunks/2d455dcd9ffde753.js +0 -5
  935. package/cloud-runtime/standalone/apps/local/.next/static/chunks/37015d5c91f9a893.js +0 -1
  936. package/cloud-runtime/standalone/apps/local/.next/static/chunks/5cfcd19e814c5846.js +0 -1
  937. package/cloud-runtime/standalone/apps/local/.next/static/chunks/678144d458893b62.js +0 -1
  938. package/cloud-runtime/standalone/apps/local/.next/static/chunks/79fc27e54d194ae1.css +0 -1
  939. package/cloud-runtime/standalone/apps/local/.next/static/chunks/8c64b8a9eee8e202.js +0 -16
  940. package/cloud-runtime/standalone/apps/local/.next/static/chunks/8f8da5f39011a5fb.js +0 -5
  941. package/cloud-runtime/standalone/apps/local/.next/static/chunks/9a293e4003752b7f.js +0 -1
  942. package/cloud-runtime/standalone/apps/local/.next/static/chunks/9be47f89ded22972.js +0 -16
  943. package/cloud-runtime/standalone/apps/local/.next/static/chunks/a6bfcaae2ac8b716.js +0 -35
  944. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b2bbe7bc1d2e8729.js +0 -16
  945. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b4175ba3d8d2c54a.js +0 -1
  946. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b6ef2665e828eb71.js +0 -9
  947. package/cloud-runtime/standalone/apps/local/.next/static/chunks/be15308d13860246.js +0 -1
  948. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c91eaf8278deda9c.js +0 -1
  949. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d36cc96f4da78fc6.js +0 -1
  950. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d96375ecaaf51dbd.js +0 -1
  951. package/cloud-runtime/standalone/apps/local/.next/static/chunks/e845c01d0cc3b9a2.js +0 -1
  952. package/cloud-runtime/standalone/apps/local/.next/static/chunks/ec699df05370dd42.js +0 -1
  953. package/cloud-runtime/standalone/apps/local/.next/static/chunks/f67c9e5af56eb2d0.js +0 -5
  954. package/cloud-runtime/standalone/apps/local/.next/static/chunks/f693c7ecc12d1d78.js +0 -16
  955. package/cloud-runtime/standalone/apps/local/.next/static/chunks/fa9d7bb55267b173.js +0 -16
  956. package/cloud-runtime/standalone/apps/local/.next/static/chunks/fdebf03746baf784.js +0 -9
  957. package/cloud-runtime/standalone/apps/local/app/api/linear/auth/route.ts +0 -32
  958. package/cloud-runtime/standalone/apps/local/app/api/linear/callback/route.ts +0 -49
  959. package/cloud-runtime/standalone/apps/local/app/api/linear/cycles/route.ts +0 -27
  960. package/cloud-runtime/standalone/apps/local/app/api/linear/issues/[id]/recap/route.ts +0 -30
  961. package/cloud-runtime/standalone/apps/local/app/api/linear/issues/[id]/route.ts +0 -92
  962. package/cloud-runtime/standalone/apps/local/app/api/linear/issues/activity/route.ts +0 -23
  963. package/cloud-runtime/standalone/apps/local/app/api/linear/issues/context/route.ts +0 -26
  964. package/cloud-runtime/standalone/apps/local/app/api/linear/issues/route.ts +0 -96
  965. package/cloud-runtime/standalone/apps/local/app/api/linear/options/route.ts +0 -48
  966. package/cloud-runtime/standalone/apps/local/app/api/linear/runs/route.ts +0 -106
  967. package/cloud-runtime/standalone/apps/local/app/api/linear/status/route.ts +0 -51
  968. package/cloud-runtime/standalone/apps/local/app/api/linear/token/route.ts +0 -72
  969. package/cloud-runtime/standalone/apps/local/app/api/linear/worker/route.ts +0 -151
  970. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.ts +0 -197
  971. package/cloud-runtime/standalone/apps/local/components/LinearSetup.tsx +0 -239
  972. package/cloud-runtime/standalone/apps/local/components/linear/LinearIcon.tsx +0 -19
  973. package/cloud-runtime/standalone/apps/local/components/linear/TicketRow.tsx +0 -158
  974. package/cloud-runtime/standalone/apps/local/hooks/useLinearIssues.ts +0 -122
  975. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker-job.ts +0 -52
  976. package/cloud-runtime/standalone/apps/local/state/linearBoardFilters.ts +0 -108
  977. package/cloud-runtime/standalone/apps/local/state/linearRunScripts.test.ts +0 -99
  978. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → chat-runs/[id]/events}/route/build-manifest.json +0 -0
  979. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → chat-runs/[id]/events}/route/server-reference-manifest.json +0 -0
  980. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → chat-runs/[id]/events}/route.js.map +0 -0
  981. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/callback → task-groups/[id]}/route/build-manifest.json +0 -0
  982. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/callback → task-groups/[id]}/route/server-reference-manifest.json +0 -0
  983. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/callback → task-groups/[id]}/route.js.map +0 -0
  984. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/cycles → task-groups/[id]/tasks}/route/build-manifest.json +0 -0
  985. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/cycles → task-groups/[id]/tasks}/route/server-reference-manifest.json +0 -0
  986. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/cycles → task-groups/[id]/tasks}/route.js.map +0 -0
  987. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id]/recap → task-groups}/route/build-manifest.json +0 -0
  988. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id]/recap → task-groups}/route/server-reference-manifest.json +0 -0
  989. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id]/recap → task-groups}/route.js.map +0 -0
  990. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id] → tracker/notes}/route/build-manifest.json +0 -0
  991. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id] → tracker/notes}/route/server-reference-manifest.json +0 -0
  992. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id] → tracker/notes}/route.js.map +0 -0
  993. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]}/active-agents/route/build-manifest.json +0 -0
  994. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]}/active-agents/route/server-reference-manifest.json +0 -0
  995. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]}/active-agents/route.js.map +0 -0
  996. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → trackers/[tracker]/auth}/route/build-manifest.json +0 -0
  997. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → trackers/[tracker]/auth}/route/server-reference-manifest.json +0 -0
  998. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → trackers/[tracker]/auth}/route.js.map +0 -0
  999. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → trackers/[tracker]/callback}/route/build-manifest.json +0 -0
  1000. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → trackers/[tracker]/callback}/route/server-reference-manifest.json +0 -0
  1001. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → trackers/[tracker]/callback}/route.js.map +0 -0
  1002. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]/groups}/route/build-manifest.json +0 -0
  1003. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]/groups}/route/server-reference-manifest.json +0 -0
  1004. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]/groups}/route.js.map +0 -0
  1005. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → trackers/[tracker]/items/[id]/activity}/route/build-manifest.json +0 -0
  1006. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → trackers/[tracker]/items/[id]/activity}/route/server-reference-manifest.json +0 -0
  1007. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → trackers/[tracker]/items/[id]/activity}/route.js.map +0 -0
  1008. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/options → trackers/[tracker]/items/[id]/recap}/route/build-manifest.json +0 -0
  1009. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/options → trackers/[tracker]/items/[id]/recap}/route/server-reference-manifest.json +0 -0
  1010. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/options → trackers/[tracker]/items/[id]/recap}/route.js.map +0 -0
  1011. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/[id]/route/build-manifest.json +0 -0
  1012. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/[id]/route/server-reference-manifest.json +0 -0
  1013. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/[id]/route.js.map +0 -0
  1014. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/route/build-manifest.json +0 -0
  1015. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/route/server-reference-manifest.json +0 -0
  1016. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/route.js.map +0 -0
  1017. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/scripted → trackers/[tracker]/mcp-setup}/route/build-manifest.json +0 -0
  1018. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/scripted → trackers/[tracker]/mcp-setup}/route/server-reference-manifest.json +0 -0
  1019. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/scripted → trackers/[tracker]/mcp-setup}/route.js.map +0 -0
  1020. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/status → trackers/[tracker]/options}/route/build-manifest.json +0 -0
  1021. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/status → trackers/[tracker]/options}/route/server-reference-manifest.json +0 -0
  1022. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/status → trackers/[tracker]/options}/route.js.map +0 -0
  1023. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/token → trackers/[tracker]/runs/[id]}/route/build-manifest.json +0 -0
  1024. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/token → trackers/[tracker]/runs/[id]}/route/server-reference-manifest.json +0 -0
  1025. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/token → trackers/[tracker]/runs/[id]}/route.js.map +0 -0
  1026. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/worker → trackers/[tracker]/runs}/route/build-manifest.json +0 -0
  1027. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/worker → trackers/[tracker]/runs}/route/server-reference-manifest.json +0 -0
  1028. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/worker → trackers/[tracker]/runs}/route.js.map +0 -0
  1029. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{projects/[id]/objectives/[objectiveId]/linear-issues → trackers/[tracker]/runs/scripted}/route/build-manifest.json +0 -0
  1030. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{projects/[id]/objectives/[objectiveId]/linear-issues → trackers/[tracker]/runs/scripted}/route/server-reference-manifest.json +0 -0
  1031. /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{projects/[id]/objectives/[objectiveId]/linear-issues → trackers/[tracker]/runs/scripted}/route.js.map +0 -0
  1032. /package/cloud-runtime/standalone/apps/local/.next/server/app/{projects/[slug]/linear/page → api/trackers/[tracker]/status/route}/server-reference-manifest.json +0 -0
  1033. /package/cloud-runtime/standalone/apps/local/.next/server/app/{projects/[slug]/linear/page.js.map → api/trackers/[tracker]/status/route.js.map} +0 -0
  1034. /package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking/[tracker]}/page/build-manifest.json +0 -0
  1035. /package/cloud-runtime/standalone/apps/local/.next/static/{a4zqdHSrJMueXhCPqODSx → QEldoF1LdgJqO0PgpmUmx}/_buildManifest.js +0 -0
  1036. /package/cloud-runtime/standalone/apps/local/.next/static/{a4zqdHSrJMueXhCPqODSx → QEldoF1LdgJqO0PgpmUmx}/_clientMiddlewareManifest.json +0 -0
  1037. /package/cloud-runtime/standalone/apps/local/.next/static/{a4zqdHSrJMueXhCPqODSx → QEldoF1LdgJqO0PgpmUmx}/_ssgManifest.js +0 -0
  1038. /package/cloud-runtime/standalone/apps/local/components/{linear/LinearBoardFilters.tsx → tracker/TrackerBoardFilters.tsx} +0 -0
@@ -4,55 +4,74 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"
4
4
  import dynamic from "next/dynamic";
5
5
  import { ArrowDown, ArrowUp, ChevronLeft, Clock, FileText, Play, Plus, RefreshCw, Search, Settings, User, X } from "lucide-react";
6
6
  import { useUrlSelection } from "@/hooks/useUrlSelection";
7
- import { useLinearIssues, type LinearIssue } from "@/hooks/useLinearIssues";
8
- import { useLinearConnection } from "@/hooks/useLinearConnection";
9
- import { useLinearRuns, type LinearRun } from "@/hooks/useLinearRuns";
10
- import { useLinearRunScripts } from "@/hooks/useLinearRunScripts";
7
+ import { useTrackerItems } from "@/hooks/useTrackerItems";
8
+ import type { TrackerItem, TrackerStatusCategory } from "@/lib/tracker/types";
9
+ import { useTrackerConnection } from "@/hooks/useTrackerConnection";
10
+ import { useTrackerRuns } from "@/hooks/useTrackerRuns";
11
+ import type { TrackerRunRecord } from "@/lib/tracker/tracker-run-store";
12
+ import { useTrackerRunScripts } from "@/hooks/useTrackerRunScripts";
11
13
  import { useGroupChat } from "@/hooks/useGroupChat";
12
14
  import { useProcessPolling } from "@/hooks/useProcessPolling";
13
15
  import { Markdown } from "@/components/chat-ui/Markdown";
14
- import RunScriptManager from "@/components/linear/RunScriptManager";
16
+ import RunScriptManager from "@/components/tracker/RunScriptManager";
15
17
  import { stripMarkers } from "@/lib/chat-utils";
16
18
  import { useInputCapabilities } from "@/hooks/useInputCapabilities";
17
19
  import {
18
- loadLinearBoardFilters,
19
- persistLinearBoardFilters,
20
- } from "@/state/linearBoardFilters";
20
+ loadTrackerBoardFilters,
21
+ persistTrackerBoardFilters,
22
+ } from "@/state/trackerBoardFilters";
21
23
  import {
22
- loadPinnedIssueIds,
23
- persistPinnedIssueIds,
24
- } from "@/state/linearBoardPins";
24
+ loadPinnedTrackerItemIds,
25
+ persistPinnedTrackerItemIds,
26
+ } from "@/state/trackerBoardPins";
25
27
  import {
26
28
  loadLinearTicketPanelWidth,
27
29
  persistLinearTicketPanelWidth,
28
30
  } from "@/state/windowState";
31
+ import { loadLastRunForIssue, persistLastRunForIssue } from "@/state/lastSession";
29
32
  import {
30
33
  orderParticipantIds,
31
34
  type ComposerRoutingMetadata,
32
35
  } from "@/lib/chat/composer-routing";
33
- import { buildLinearExecutionPrompt } from "@/lib/linear-execution-prompt";
36
+ import { buildTrackerExecutionPrompt } from "@/lib/tracker/tracker-execution-prompt";
34
37
  import type { Participant } from "@/lib/types";
35
- import LinearSetup from "@/components/LinearSetup";
36
- import LinearSettingsModal from "@/components/linear/LinearSettingsModal";
38
+ import LinearSetup from "@/components/tracking/TrackerSetup";
39
+ import TrackerSettingsModal from "@/components/tracker/TrackerSettingsModal";
37
40
  import {
38
41
  getRunDisplayState,
39
42
  getRunTitle,
40
43
  STATUS_BADGE_STYLES,
41
44
  STATUS_DOT_COLORS,
45
+ STATUS_LABELS,
42
46
  STATUS_TEXT_COLORS,
43
- } from "@/lib/linear-run-status";
47
+ } from "@/lib/tracker-run-status";
44
48
  import { ResizeHandle } from "@/components/ui/ResizeHandle";
45
49
  import {
46
50
  FilterSelect,
47
51
  IssueStatusSelect,
48
52
  MultiFilterPopdown,
49
53
  type FilterOption,
50
- } from "@/components/linear/LinearBoardFilters";
51
- import { TicketRow } from "@/components/linear/TicketRow";
52
- import { TicketPanel } from "@/components/linear/TicketPanel";
53
- import { useLinearParticipants } from "@/hooks/useLinearParticipants";
54
- import { useLinearActiveAgents } from "@/hooks/useLinearActiveAgents";
55
- import { agentAvatarUrl } from "@/lib/linear-board-utils";
54
+ } from "@/components/tracker/TrackerBoardFilters";
55
+ import { TicketRow } from "@/components/tracker/TicketRow";
56
+ import { TicketPanel } from "@/components/tracker/TicketPanel";
57
+ import { useTrackerParticipants } from "@/hooks/useTrackerParticipants";
58
+ import { useTrackerActiveAgents } from "@/hooks/useTrackerActiveAgents";
59
+ import { agentAvatarUrl } from "@/lib/tracker-board-utils";
60
+ import { useTaskGroups, type TaskGroup } from "@/hooks/useTaskGroups";
61
+ import { FolderRow } from "@/components/tracker/FolderRow";
62
+ import { GroupPanel } from "@/components/tracker/GroupPanel";
63
+ import { GroupNamePrompt, PENDING_GROUP_DROP_ID } from "@/components/tracker/GroupNamePrompt";
64
+ import { SelectionBar } from "@/components/tracker/SelectionBar";
65
+ import {
66
+ DndContext,
67
+ DragOverlay,
68
+ closestCenter,
69
+ PointerSensor,
70
+ useSensor,
71
+ useSensors,
72
+ type DragEndEvent,
73
+ type DragStartEvent,
74
+ } from "@dnd-kit/core";
56
75
 
57
76
  const Composer = dynamic(
58
77
  () => import("@/components/chat-ui/Composer").then((module) => module.Composer),
@@ -70,34 +89,31 @@ function formatRunTime(iso: string): string {
70
89
  });
71
90
  }
72
91
 
73
- interface CycleOption {
92
+ interface GroupOption {
74
93
  id: string;
75
- number: number;
76
- name: string | null;
77
- startsAt: string;
78
- endsAt: string;
94
+ name: string;
79
95
  }
80
96
 
81
- interface LinearEntityOption {
97
+ interface TrackerEntityOption {
82
98
  id: string;
83
99
  name: string;
84
100
  }
85
101
 
86
102
  function ThreadMessageList({
87
- issue,
103
+ item,
88
104
  run,
89
105
  participants,
90
- issueStatusOptions,
91
- issueStatusUpdating,
92
- onIssueStatusChange,
106
+ itemStatusOptions,
107
+ itemStatusUpdating,
108
+ onItemStatusChange,
93
109
  onBack,
94
110
  }: {
95
- issue: LinearIssue;
96
- run: LinearRun;
111
+ item: TrackerItem;
112
+ run: TrackerRunRecord;
97
113
  participants: Participant[];
98
- issueStatusOptions: FilterOption[];
99
- issueStatusUpdating: boolean;
100
- onIssueStatusChange: (issue: LinearIssue, status: string) => void;
114
+ itemStatusOptions: FilterOption[];
115
+ itemStatusUpdating: boolean;
116
+ onItemStatusChange: (item: TrackerItem, status: string) => void;
101
117
  onBack?: () => void;
102
118
  }) {
103
119
  const { messages, setMessages, sendMessage, loadHistory, stop } = useGroupChat(
@@ -115,7 +131,7 @@ function ThreadMessageList({
115
131
  const runDisplay = useMemo(() => {
116
132
  const latestChatRun = chatRuns[0];
117
133
  if (!latestChatRun) return getRunDisplayState(run);
118
- const mappedStatus: Record<string, LinearRun["status"]> = {
134
+ const mappedStatus: Record<string, TrackerRunRecord["status"]> = {
119
135
  queued: "queued",
120
136
  running: "running",
121
137
  awaiting_user: "running",
@@ -196,7 +212,7 @@ function ThreadMessageList({
196
212
  </button>
197
213
  )}
198
214
  <span className="shrink-0 font-mono text-sm text-[var(--muted-foreground)]">
199
- {issue.identifier}
215
+ {item.identifier}
200
216
  </span>
201
217
  <div className="h-1 w-1 shrink-0 rounded-full bg-[var(--card-border)]" />
202
218
  <span className="truncate text-sm font-medium text-[var(--foreground)]">
@@ -206,11 +222,11 @@ function ThreadMessageList({
206
222
 
207
223
  <div className="flex shrink-0 items-center gap-4">
208
224
  <IssueStatusSelect
209
- status={issue.status}
210
- options={issueStatusOptions}
211
- disabled={issueStatusOptions.length === 0}
212
- updating={issueStatusUpdating}
213
- onChange={(status) => onIssueStatusChange(issue, status)}
225
+ status={item.status}
226
+ options={itemStatusOptions}
227
+ disabled={itemStatusOptions.length === 0}
228
+ updating={itemStatusUpdating}
229
+ onChange={(status) => onItemStatusChange(item, status)}
214
230
  />
215
231
  <div
216
232
  className={`flex items-center gap-2 rounded-md border px-2.5 py-1 ${STATUS_BADGE_STYLES[runDisplay.tone]}`}
@@ -355,13 +371,14 @@ function ThreadMessageList({
355
371
  );
356
372
  }
357
373
 
358
- interface LinearBoardProps {
374
+ interface TrackerBoardProps {
375
+ trackerType: string;
359
376
  projectId?: string;
360
377
  projectSlug?: string;
361
378
  initialShowSettings?: boolean;
362
379
  }
363
380
 
364
- export default function LinearBoard({ projectId, projectSlug, initialShowSettings }: LinearBoardProps) {
381
+ export default function TrackerBoard({ trackerType, projectId, projectSlug, initialShowSettings }: TrackerBoardProps) {
365
382
  const { isTouchLayout } = useInputCapabilities();
366
383
  const {
367
384
  connected,
@@ -373,32 +390,32 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
373
390
  connectWithKey,
374
391
  disconnect,
375
392
  configureMcp,
376
- } = useLinearConnection(projectId ?? "");
393
+ } = useTrackerConnection(trackerType, projectId ?? "");
377
394
 
378
- const [setupDismissed, setSetupDismissed] = useState(false);
395
+ const lastRestoredItemRef = useRef<string | null>(null);
379
396
  const [showSettings, setShowSettings] = useState(initialShowSettings ?? false);
380
397
  const [showRunScripts, setShowRunScripts] = useState(false);
381
398
  const [ticketPanelWidth, setTicketPanelWidth] = useState(() => loadLinearTicketPanelWidth() || 576);
382
399
  const [search, setSearch] = useState("");
383
400
  const [debouncedSearch, setDebouncedSearch] = useState("");
384
401
  const [filterOptionsLoaded, setFilterOptionsLoaded] = useState(false);
385
- const [assignees, setAssignees] = useState<LinearEntityOption[]>([]);
386
- const [statuses, setStatuses] = useState<string[]>([]);
387
- const [workspaces, setWorkspaces] = useState<LinearEntityOption[]>([]);
402
+ const [assignees, setAssignees] = useState<TrackerEntityOption[]>([]);
403
+ const [statusCategories, setStatusCategories] = useState<{ value: string; label: string }[]>([]);
404
+ const [workspaces, setWorkspaces] = useState<TrackerEntityOption[]>([]);
388
405
  const [selectedAssigneeIds, setSelectedAssigneeIds] = useState<string[]>([]);
389
- const [selectedStatuses, setSelectedStatuses] = useState<string[]>([]);
390
- const [cycles, setCycles] = useState<CycleOption[]>([]);
391
- const [selectedCycleId, setSelectedCycleId] = useState("");
406
+ const [selectedStatusCategories, setSelectedStatusCategories] = useState<string[]>([]);
407
+ const [groups, setGroups] = useState<GroupOption[]>([]);
408
+ const [selectedGroupId, setSelectedGroupId] = useState("");
392
409
  const [selectedWorkspaceId, setSelectedWorkspaceId] = useState("");
393
410
  const [sortBy, setSortBy] = useState<"activity" | "identifier" | "status" | "created">("activity");
394
411
  const [sortDir, setSortDir] = useState<"asc" | "desc">("desc");
395
412
  const [hasActivity, setHasActivity] = useState(false);
396
- const [pinnedIssueIds, setPinnedIssueIds] = useState<Set<string>>(() => loadPinnedIssueIds(projectSlug));
397
- const [selectedIssueFallback, setSelectedIssueFallback] = useState<LinearIssue | null>(null);
398
- const [updatingIssueId, setUpdatingIssueId] = useState<string | null>(null);
399
- const { participants } = useLinearParticipants(projectId);
400
- const { issueActiveAgents } = useLinearActiveAgents(projectId);
401
- const [pickerIssue, setPickerIssue] = useState<LinearIssue | null>(null);
413
+ const [pinnedItemIds, setPinnedItemIds] = useState<Set<string>>(() => loadPinnedTrackerItemIds(trackerType, projectSlug));
414
+ const [selectedItemFallback, setSelectedItemFallback] = useState<TrackerItem | null>(null);
415
+ const [updatingItemId, setUpdatingItemId] = useState<string | null>(null);
416
+ const { participants } = useTrackerParticipants(trackerType, projectId);
417
+ const { issueActiveAgents } = useTrackerActiveAgents(trackerType, projectId);
418
+ const [pickerItem, setPickerItem] = useState<TrackerItem | null>(null);
402
419
  const [pickerAnchor, setPickerAnchor] = useState<{ top: number; left: number } | null>(null);
403
420
  const [touchPanelTab, setTouchPanelTab] = useState<"runs" | "ticket">("runs");
404
421
  const searchDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
@@ -406,8 +423,158 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
406
423
  const runScriptsButtonRef = useRef<HTMLButtonElement | null>(null);
407
424
  const runScriptsPanelRef = useRef<HTMLDivElement | null>(null);
408
425
  const { getSelection, pushSelection, replaceSelection } = useUrlSelection();
409
- const selectedIssueId = getSelection("issue");
426
+ const selectedItemId = getSelection("issue");
410
427
  const selectedRunId = getSelection("run");
428
+ const selectedGroupTaskGroupId = getSelection("group");
429
+
430
+ // Task groups
431
+ const {
432
+ groups: taskGroups,
433
+ createGroup,
434
+ updateGroup,
435
+ deleteGroup,
436
+ addTasksToGroup,
437
+ removeTaskFromGroup: removeTaskFromGroupApi,
438
+ refetch: refetchGroups,
439
+ } = useTaskGroups(projectId);
440
+
441
+ // Multi-select state
442
+ const [multiSelectedItemIds, setMultiSelectedItemIds] = useState<Set<string>>(new Set());
443
+ const [showGroupNamePrompt, setShowGroupNamePrompt] = useState(false);
444
+ const [pendingGroupTaskIds, setPendingGroupTaskIds] = useState<string[]>([]);
445
+ const [pendingGroupTargetId, setPendingGroupTargetId] = useState<string | null>(null);
446
+
447
+ // Drag state
448
+ const dndSensors = useSensors(
449
+ useSensor(PointerSensor, {
450
+ activationConstraint: { distance: 8 },
451
+ }),
452
+ );
453
+ const [dragActiveId, setDragActiveId] = useState<string | null>(null);
454
+
455
+ const toggleItemMultiSelect = useCallback((itemId: string) => {
456
+ setMultiSelectedItemIds((prev) => {
457
+ const next = new Set(prev);
458
+ if (next.has(itemId)) {
459
+ next.delete(itemId);
460
+ } else {
461
+ next.add(itemId);
462
+ }
463
+ return next;
464
+ });
465
+ }, []);
466
+
467
+ const handleCreateGroup = useCallback(
468
+ async (name: string) => {
469
+ if (pendingGroupTaskIds.length < 2) return;
470
+ await createGroup(name, pendingGroupTaskIds);
471
+ setPendingGroupTaskIds([]);
472
+ setShowGroupNamePrompt(false);
473
+ setPendingGroupTargetId(null);
474
+ setMultiSelectedItemIds(new Set());
475
+ },
476
+ [pendingGroupTaskIds, createGroup],
477
+ );
478
+
479
+ // Ref to sortedItems so handleMultiSelectGroup can access it without
480
+ // hoisting issues (sortedItems is declared further down).
481
+ const sortedItemsRef = useRef<TrackerItem[]>([]);
482
+
483
+ const handleMultiSelectGroup = useCallback(() => {
484
+ const ids = Array.from(multiSelectedItemIds);
485
+ // Find the topmost selected item in the sorted list to position the prompt
486
+ const topmost = sortedItemsRef.current.find((i) => multiSelectedItemIds.has(i.id));
487
+ setPendingGroupTaskIds(ids);
488
+ setPendingGroupTargetId(topmost?.id ?? ids[0] ?? null);
489
+ setShowGroupNamePrompt(true);
490
+ }, [multiSelectedItemIds]);
491
+
492
+ const selectedGroup = taskGroups.find((g) => g.id === selectedGroupTaskGroupId);
493
+ const groupedItemIds = useMemo(
494
+ () => new Set(taskGroups.flatMap((g) => g.task_ids)),
495
+ [taskGroups],
496
+ );
497
+
498
+ const handleDragStart = useCallback((event: DragStartEvent) => {
499
+ setDragActiveId(event.active.id as string);
500
+ }, []);
501
+
502
+ const handleDragEnd = useCallback(
503
+ async (event: DragEndEvent) => {
504
+ setDragActiveId(null);
505
+ const { active, over } = event;
506
+
507
+ const activeItemId = active.id as string;
508
+
509
+ // While the pending group prompt is open, handle adds/removes
510
+ if (showGroupNamePrompt) {
511
+ const activeInPending = pendingGroupTaskIds.includes(activeItemId);
512
+
513
+ if (!over || active.id === over.id) {
514
+ // Dropped on nothing or self — if it was a pending item, remove it
515
+ if (activeInPending) {
516
+ setPendingGroupTaskIds((prev) => {
517
+ const next = prev.filter((id) => id !== activeItemId);
518
+ if (next.length < 2) {
519
+ setShowGroupNamePrompt(false);
520
+ setPendingGroupTargetId(null);
521
+ return [];
522
+ }
523
+ return next;
524
+ });
525
+ }
526
+ return;
527
+ }
528
+
529
+ const overId = over.id as string;
530
+ const droppedOnPending = overId === PENDING_GROUP_DROP_ID || pendingGroupTaskIds.includes(overId);
531
+
532
+ if (activeInPending && !droppedOnPending) {
533
+ // Dragged out of pending group — remove it
534
+ setPendingGroupTaskIds((prev) => {
535
+ const next = prev.filter((id) => id !== activeItemId);
536
+ if (next.length < 2) {
537
+ setShowGroupNamePrompt(false);
538
+ setPendingGroupTargetId(null);
539
+ return [];
540
+ }
541
+ return next;
542
+ });
543
+ } else if (!activeInPending) {
544
+ // Dragged into pending group — add it
545
+ setPendingGroupTaskIds((prev) => [...prev, activeItemId]);
546
+ }
547
+ return;
548
+ }
549
+
550
+ if (!over || active.id === over.id) return;
551
+ const overId = over.id as string;
552
+
553
+ // Check if dropping on a folder
554
+ const targetGroup = taskGroups.find((g) => g.id === overId);
555
+ if (targetGroup) {
556
+ await addTasksToGroup(targetGroup.id, [activeItemId]);
557
+ return;
558
+ }
559
+
560
+ // Check if dropping on another loose ticket (create folder)
561
+ const overIsLoose = !groupedItemIds.has(overId);
562
+ const activeIsLoose = !groupedItemIds.has(activeItemId);
563
+ if (activeIsLoose && overIsLoose) {
564
+ setPendingGroupTaskIds([activeItemId, overId]);
565
+ setPendingGroupTargetId(overId);
566
+ setShowGroupNamePrompt(true);
567
+ return;
568
+ }
569
+
570
+ // Ticket dragged out of a folder
571
+ const activeGroup = taskGroups.find((g) => g.task_ids.includes(activeItemId));
572
+ if (activeGroup && overIsLoose) {
573
+ await removeTaskFromGroupApi(activeGroup.id, activeItemId);
574
+ }
575
+ },
576
+ [taskGroups, groupedItemIds, addTasksToGroup, removeTaskFromGroupApi, showGroupNamePrompt, pendingGroupTaskIds],
577
+ );
411
578
 
412
579
  const handleSearchChange = useCallback((value: string) => {
413
580
  setSearch(value);
@@ -417,18 +584,18 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
417
584
  searchDebounceRef.current = setTimeout(() => setDebouncedSearch(value), 300);
418
585
  }, []);
419
586
 
420
- const togglePin = useCallback((issueId: string) => {
421
- setPinnedIssueIds((prev) => {
587
+ const togglePin = useCallback((itemId: string) => {
588
+ setPinnedItemIds((prev) => {
422
589
  const next = new Set(prev);
423
- if (next.has(issueId)) {
424
- next.delete(issueId);
590
+ if (next.has(itemId)) {
591
+ next.delete(itemId);
425
592
  } else {
426
- next.add(issueId);
593
+ next.add(itemId);
427
594
  }
428
- persistPinnedIssueIds(projectSlug, next);
595
+ persistPinnedTrackerItemIds(trackerType, projectSlug, next);
429
596
  return next;
430
597
  });
431
- }, [projectSlug]);
598
+ }, [trackerType, projectSlug]);
432
599
 
433
600
  useEffect(() => {
434
601
  return () => {
@@ -439,19 +606,19 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
439
606
  }, []);
440
607
 
441
608
  useEffect(() => {
442
- const storedFilters = loadLinearBoardFilters(projectSlug);
609
+ const storedFilters = loadTrackerBoardFilters(trackerType, projectSlug);
443
610
  skipNextFilterPersistRef.current = true;
444
611
  setSearch(storedFilters.search);
445
612
  setDebouncedSearch(storedFilters.search);
446
613
  setSelectedAssigneeIds(storedFilters.assigneeIds);
447
- setSelectedStatuses(storedFilters.statuses);
448
- setSelectedWorkspaceId(storedFilters.teamId);
449
- setSelectedCycleId(storedFilters.cycleId);
614
+ setSelectedStatusCategories(storedFilters.statusCategories);
615
+ setSelectedWorkspaceId(storedFilters.groupIds?.[0] ?? "");
616
+ setSelectedGroupId(storedFilters.groupIds?.[0] ?? "");
450
617
  setSortBy(storedFilters.sortBy);
451
618
  setSortDir(storedFilters.sortDir);
452
619
  setHasActivity(storedFilters.hasActivity);
453
- setPinnedIssueIds(loadPinnedIssueIds(projectSlug));
454
- }, [projectSlug]);
620
+ setPinnedItemIds(loadPinnedTrackerItemIds(trackerType, projectSlug));
621
+ }, [trackerType, projectSlug]);
455
622
 
456
623
  useEffect(() => {
457
624
  if (skipNextFilterPersistRef.current) {
@@ -459,17 +626,16 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
459
626
  return;
460
627
  }
461
628
 
462
- persistLinearBoardFilters(projectSlug, {
629
+ persistTrackerBoardFilters(trackerType, projectSlug, {
463
630
  search,
464
631
  assigneeIds: selectedAssigneeIds,
465
- statuses: selectedStatuses,
466
- teamId: selectedWorkspaceId,
467
- cycleId: selectedCycleId,
632
+ statusCategories: selectedStatusCategories,
633
+ groupIds: selectedGroupId ? [selectedGroupId] : [],
468
634
  sortBy,
469
635
  sortDir,
470
636
  hasActivity,
471
637
  });
472
- }, [projectSlug, search, selectedAssigneeIds, selectedStatuses, selectedWorkspaceId, selectedCycleId, sortBy, sortDir, hasActivity]);
638
+ }, [trackerType, projectSlug, search, selectedAssigneeIds, selectedStatusCategories, selectedWorkspaceId, selectedGroupId, sortBy, sortDir, hasActivity]);
473
639
 
474
640
  // Fetch filter options when connected
475
641
  useEffect(() => {
@@ -481,7 +647,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
481
647
  if (projectSlug) {
482
648
  params.set("projectSlug", projectSlug);
483
649
  }
484
- const url = `/api/linear/options?${params.toString()}`;
650
+ const url = `/api/trackers/${trackerType}/options?${params.toString()}`;
485
651
  fetch(url)
486
652
  .then((res) => res.json())
487
653
  .then((data) => {
@@ -489,24 +655,24 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
489
655
  return;
490
656
  }
491
657
  setAssignees(Array.isArray(data.assignees) ? data.assignees : []);
492
- setStatuses(Array.isArray(data.statuses) ? data.statuses : []);
658
+ setStatusCategories(Array.isArray(data.statuses) ? data.statuses.map((s: { name: string; category: string }) => ({ value: s.name, label: s.name })) : []);
493
659
  setWorkspaces(Array.isArray(data.teams) ? data.teams : []);
494
- setCycles(Array.isArray(data.cycles) ? data.cycles : []);
660
+ setGroups(Array.isArray(data.cycles) ? data.cycles : []);
495
661
  setFilterOptionsLoaded(true);
496
662
  })
497
663
  .catch(() => {
498
664
  if (!cancelled) {
499
665
  setAssignees([]);
500
- setStatuses([]);
666
+ setStatusCategories([]);
501
667
  setWorkspaces([]);
502
- setCycles([]);
668
+ setGroups([]);
503
669
  setFilterOptionsLoaded(true);
504
670
  }
505
671
  });
506
672
  return () => {
507
673
  cancelled = true;
508
674
  };
509
- }, [connected, projectId, projectSlug]);
675
+ }, [connected, trackerType, projectId, projectSlug]);
510
676
 
511
677
  useEffect(() => {
512
678
  if (!filterOptionsLoaded) {
@@ -524,11 +690,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
524
690
  if (!filterOptionsLoaded) {
525
691
  return;
526
692
  }
527
- const validStatuses = selectedStatuses.filter((status) => statuses.includes(status));
528
- if (validStatuses.length !== selectedStatuses.length) {
529
- setSelectedStatuses(validStatuses);
693
+ const validValues = statusCategories.map((s) => s.value);
694
+ const validStatuses = selectedStatusCategories.filter((status) => validValues.includes(status));
695
+ if (validStatuses.length !== selectedStatusCategories.length) {
696
+ setSelectedStatusCategories(validStatuses);
530
697
  }
531
- }, [filterOptionsLoaded, selectedStatuses, statuses]);
698
+ }, [filterOptionsLoaded, selectedStatusCategories, statusCategories]);
532
699
 
533
700
  useEffect(() => {
534
701
  if (!filterOptionsLoaded) {
@@ -548,67 +715,66 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
548
715
  if (!filterOptionsLoaded) {
549
716
  return;
550
717
  }
551
- if (selectedCycleId && !cycles.some((cycle) => cycle.id === selectedCycleId)) {
552
- setSelectedCycleId("");
718
+ if (selectedGroupId && !groups.some((group) => group.id === selectedGroupId)) {
719
+ setSelectedGroupId("");
553
720
  }
554
- }, [cycles, filterOptionsLoaded, selectedCycleId]);
721
+ }, [groups, filterOptionsLoaded, selectedGroupId]);
555
722
 
556
723
  const filters = useMemo(
557
724
  () => ({
558
725
  search: debouncedSearch || undefined,
559
726
  statuses:
560
- selectedStatuses.length > 0 && selectedStatuses.length < statuses.length
561
- ? selectedStatuses
727
+ selectedStatusCategories.length > 0 && selectedStatusCategories.length < statusCategories.length
728
+ ? selectedStatusCategories
562
729
  : undefined,
563
730
  assigneeIds: selectedAssigneeIds.length > 0 ? selectedAssigneeIds : undefined,
564
- teamId: selectedWorkspaceId || undefined,
565
- cycleId: selectedCycleId || undefined,
731
+ groupIds: selectedGroupId ? [selectedGroupId] : undefined,
566
732
  sortBy,
567
733
  sortDir,
568
734
  hasActivity: hasActivity || undefined,
569
735
  }),
570
- [debouncedSearch, selectedAssigneeIds, selectedCycleId, selectedStatuses, selectedWorkspaceId, statuses.length, sortBy, sortDir, hasActivity]
736
+ [debouncedSearch, selectedAssigneeIds, selectedGroupId, selectedStatusCategories, statusCategories.length, sortBy, sortDir, hasActivity]
571
737
  );
572
738
 
573
739
  const {
574
- issues,
575
- loading: issuesLoading,
740
+ items,
741
+ loading: itemsLoading,
576
742
  hasMore,
577
743
  loadMore,
578
- refresh: refreshIssues,
579
- updateIssue,
580
- } = useLinearIssues(filters, connected && filterOptionsLoaded && Boolean(projectId), {
744
+ refresh: refreshItems,
745
+ updateItem,
746
+ } = useTrackerItems(trackerType, filters, connected && filterOptionsLoaded && Boolean(projectId), {
581
747
  projectId: projectId ?? "",
582
- projectSlug,
583
748
  });
584
- const selectedIssueFromList = useMemo(
585
- () => (selectedIssueId ? issues.find((issue) => issue.id === selectedIssueId) ?? null : null),
586
- [issues, selectedIssueId],
749
+ const selectedItemFromList = useMemo(
750
+ () => (selectedItemId ? items.find((item) => item.id === selectedItemId) ?? null : null),
751
+ [items, selectedItemId],
587
752
  );
588
- const selectedIssue =
589
- selectedIssueFromList ??
590
- (selectedIssueFallback?.id === selectedIssueId ? selectedIssueFallback : null);
591
-
592
- const sortedIssues = useMemo(() => {
593
- if (pinnedIssueIds.size === 0) return issues;
594
- const pinned: LinearIssue[] = [];
595
- const unpinned: LinearIssue[] = [];
596
- for (const issue of issues) {
597
- if (pinnedIssueIds.has(issue.id)) {
598
- pinned.push(issue);
753
+ const selectedItem =
754
+ selectedItemFromList ??
755
+ (selectedItemFallback?.id === selectedItemId ? selectedItemFallback : null);
756
+
757
+ const sortedItems = useMemo(() => {
758
+ if (pinnedItemIds.size === 0) return items;
759
+ const pinned: TrackerItem[] = [];
760
+ const unpinned: TrackerItem[] = [];
761
+ for (const item of items) {
762
+ if (pinnedItemIds.has(item.id)) {
763
+ pinned.push(item);
599
764
  } else {
600
- unpinned.push(issue);
765
+ unpinned.push(item);
601
766
  }
602
767
  }
603
768
  return [...pinned, ...unpinned];
604
- }, [issues, pinnedIssueIds]);
769
+ }, [items, pinnedItemIds]);
770
+ sortedItemsRef.current = sortedItems;
605
771
 
606
772
  const {
607
773
  runs,
608
774
  loading: runsLoading,
609
775
  createRun,
610
776
  updateRun,
611
- } = useLinearRuns(selectedIssue?.id, projectId ?? null);
777
+ } = useTrackerRuns(trackerType, selectedItem?.id ?? null, projectId ?? null);
612
778
  const {
613
779
  scripts: runScripts,
614
780
  activeScriptId,
@@ -616,60 +782,63 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
616
782
  setActiveScriptId,
617
783
  saveScript,
618
784
  deleteScript,
619
- } = useLinearRunScripts(projectSlug);
785
+ } = useTrackerRunScripts(trackerType, projectSlug);
620
786
 
621
787
  const selectedRun = selectedRunId
622
788
  ? runs.find((run) => run.id === selectedRunId) ?? null
623
789
  : null;
790
+ const storedRunId = selectedItemId && !selectedRunId ? loadLastRunForIssue(selectedItemId) : null;
791
+ const isAwaitingRestore = !!storedRunId && lastRestoredItemRef.current !== selectedItemId;
624
792
  const assigneeOptions = useMemo<FilterOption[]>(
625
793
  () => assignees.map((assignee) => ({ value: assignee.id, label: assignee.name })),
626
794
  [assignees]
627
795
  );
628
796
  const statusOptions = useMemo<FilterOption[]>(
629
- () => statuses.map((status) => ({ value: status, label: status })),
630
- [statuses]
797
+ () => statusCategories.map((s) => ({ value: s.value, label: s.label })),
798
+ [statusCategories]
631
799
  );
632
- const issueStatusOptions = useMemo<FilterOption[]>(
633
- () =>
634
- Array.from(
635
- new Set(
636
- [selectedIssue?.status ?? "", ...statuses]
637
- .map((status) => status.trim())
638
- .filter(Boolean)
639
- )
640
- ).map((status) => ({ value: status, label: status })),
641
- [selectedIssue?.status, statuses]
800
+ const itemStatusOptions = useMemo<FilterOption[]>(
801
+ () => {
802
+ const opts = statusCategories.map((s) => ({ value: s.label, label: s.label }));
803
+ const existing = new Set(opts.map((o) => o.value));
804
+ const current = selectedItem?.status?.trim();
805
+ if (current && !existing.has(current)) {
806
+ opts.unshift({ value: current, label: current });
807
+ }
808
+ return opts;
809
+ },
810
+ [selectedItem?.status, statusCategories]
642
811
  );
643
812
  const workspaceOptions = useMemo<FilterOption[]>(
644
813
  () => [{ value: "", label: "Workspace" }, ...workspaces.map((workspace) => ({ value: workspace.id, label: workspace.name }))],
645
814
  [workspaces]
646
815
  );
647
- const cycleOptions = useMemo<FilterOption[]>(
816
+ const groupOptions = useMemo<FilterOption[]>(
648
817
  () => [
649
- { value: "", label: "Cycle" },
650
- ...cycles.map((cycle) => ({
651
- value: cycle.id,
652
- label: cycle.name || `Cycle ${cycle.number}`,
818
+ { value: "", label: "Group" },
819
+ ...groups.map((group) => ({
820
+ value: group.id,
821
+ label: group.name,
653
822
  })),
654
823
  ],
655
- [cycles]
824
+ [groups]
656
825
  );
657
826
  const showStatusFilter = statusOptions.length > 0;
658
- const showCycleFilter = cycleOptions.length > 1;
827
+ const showGroupFilter = groupOptions.length > 1;
659
828
  const showWorkspaceFilter = workspaceOptions.length > 2;
660
829
  const activeSessionScriptLabel = activeScript?.name ?? "AGX default";
661
830
 
662
- const handleIssueStatusChange = useCallback(
663
- async (issue: LinearIssue, status: string) => {
831
+ const handleItemStatusChange = useCallback(
832
+ async (item: TrackerItem, status: string) => {
664
833
  const nextStatus = status.trim();
665
- if (!nextStatus || nextStatus === issue.status) {
834
+ if (!nextStatus || nextStatus === item.status || !projectId) {
666
835
  return;
667
836
  }
668
837
 
669
- setUpdatingIssueId(issue.id);
838
+ setUpdatingItemId(item.id);
670
839
  try {
671
840
  const response = await fetch(
672
- `/api/linear/issues/${encodeURIComponent(issue.id)}?projectId=${encodeURIComponent(projectId ?? "")}`,
841
+ `/api/trackers/${trackerType}/items/${encodeURIComponent(item.id)}?projectId=${encodeURIComponent(projectId ?? "")}`,
673
842
  {
674
843
  method: "PATCH",
675
844
  headers: { "Content-Type": "application/json" },
@@ -678,40 +847,40 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
678
847
  );
679
848
  const payload = (await response.json().catch(() => ({}))) as {
680
849
  error?: string;
681
- issue?: LinearIssue;
850
+ item?: TrackerItem;
682
851
  };
683
852
 
684
- if (!response.ok || !payload.issue) {
853
+ if (!response.ok || !payload.item) {
685
854
  throw new Error(payload.error || "Failed to update ticket status");
686
855
  }
687
856
 
688
- const updatedIssue = payload.issue;
689
- updateIssue(updatedIssue);
690
- if (selectedIssueId === updatedIssue.id) {
691
- setSelectedIssueFallback(updatedIssue);
857
+ const updatedItem = payload.item;
858
+ updateItem(updatedItem);
859
+ if (selectedItemId === updatedItem.id) {
860
+ setSelectedItemFallback(updatedItem);
692
861
  }
693
- await refreshIssues();
862
+ await refreshItems();
694
863
  } catch (error) {
695
864
  if (error instanceof Error) {
696
865
  window.alert(error.message);
697
866
  }
698
867
  } finally {
699
- setUpdatingIssueId((current) => (current === issue.id ? null : current));
868
+ setUpdatingItemId((current) => (current === item.id ? null : current));
700
869
  }
701
870
  },
702
- [refreshIssues, selectedIssueId, updateIssue]
871
+ [refreshItems, selectedItemId, updateItem, trackerType, projectId]
703
872
  );
704
873
 
705
874
  useEffect(() => {
706
- if (!selectedIssueId) {
707
- setSelectedIssueFallback(null);
875
+ if (!selectedItemId || !projectId) {
876
+ setSelectedItemFallback(null);
708
877
  return;
709
878
  }
710
879
 
711
- if (selectedIssueFromList) {
712
- setSelectedIssueFallback((current) => {
713
- if (current?.id === selectedIssueId) {
714
- return selectedIssueFromList;
880
+ if (selectedItemFromList) {
881
+ setSelectedItemFallback((current: TrackerItem | null) => {
882
+ if (current?.id === selectedItemId) {
883
+ return selectedItemFromList;
715
884
  }
716
885
  return null;
717
886
  });
@@ -722,7 +891,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
722
891
 
723
892
  void (async () => {
724
893
  try {
725
- const response = await fetch(`/api/linear/issues/${encodeURIComponent(selectedIssueId)}`);
894
+ const response = await fetch(`/api/trackers/${trackerType}/items/${encodeURIComponent(selectedItemId)}?projectId=${encodeURIComponent(projectId ?? "")}`);
726
895
  if (cancelled) return;
727
896
 
728
897
  if (response.status === 404) {
@@ -731,19 +900,19 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
731
900
  }
732
901
 
733
902
  if (!response.ok) {
734
- throw new Error(`Failed to fetch selected Linear ticket: ${response.status}`);
903
+ throw new Error(`Failed to fetch selected tracker ticket: ${response.status}`);
735
904
  }
736
905
 
737
- const payload = (await response.json().catch(() => ({}))) as { issue?: LinearIssue };
738
- if (!payload.issue?.id) {
906
+ const payload = (await response.json().catch(() => ({}))) as { item?: TrackerItem };
907
+ if (!payload.item?.id) {
739
908
  replaceSelection({ issue: null, run: null });
740
909
  return;
741
910
  }
742
911
 
743
- setSelectedIssueFallback(payload.issue);
912
+ setSelectedItemFallback(payload.item);
744
913
  } catch (error) {
745
914
  if (!cancelled) {
746
- console.error("Failed to hydrate selected Linear issue", error);
915
+ console.error("Failed to hydrate selected tracker item", error);
747
916
  }
748
917
  }
749
918
  })();
@@ -751,33 +920,47 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
751
920
  return () => {
752
921
  cancelled = true;
753
922
  };
754
- }, [replaceSelection, selectedIssueFromList, selectedIssueId]);
923
+ }, [replaceSelection, selectedItemFromList, selectedItemId, trackerType, projectId]);
755
924
 
756
925
  useEffect(() => {
757
- if (!selectedIssueId) {
926
+ if (!selectedItemId) {
758
927
  if (selectedRunId) {
759
928
  replaceSelection({ run: null });
760
929
  }
761
930
  return;
762
931
  }
763
- }, [replaceSelection, selectedIssueId, selectedRunId]);
932
+ }, [replaceSelection, selectedItemId, selectedRunId]);
764
933
 
765
934
  useEffect(() => {
766
- if (!selectedIssue || !selectedRunId || runsLoading) {
935
+ if (!selectedItem || !selectedRunId || runsLoading) {
767
936
  return;
768
937
  }
769
938
 
770
939
  if (!runs.some((run) => run.id === selectedRunId)) {
771
940
  replaceSelection({ run: null });
772
941
  }
773
- }, [replaceSelection, runs, runsLoading, selectedIssue, selectedRunId]);
942
+ }, [replaceSelection, runs, runsLoading, selectedItem, selectedRunId]);
943
+
944
+ useEffect(() => {
945
+ if (selectedItemId && selectedRunId) {
946
+ persistLastRunForIssue(selectedItemId, selectedRunId);
947
+ }
948
+ }, [selectedItemId, selectedRunId]);
949
+
950
+ useEffect(() => {
951
+ if (!isAwaitingRestore || runsLoading || runs.length === 0) return;
952
+ lastRestoredItemRef.current = selectedItemId;
953
+ if (storedRunId && runs.some((r) => r.id === storedRunId)) {
954
+ replaceSelection({ run: storedRunId });
955
+ }
956
+ }, [isAwaitingRestore, storedRunId, selectedItemId, runs, runsLoading, replaceSelection]);
774
957
 
775
958
  useEffect(() => {
776
959
  if (!isTouchLayout) {
777
960
  return;
778
961
  }
779
962
 
780
- if (!selectedIssue) {
963
+ if (!selectedItem) {
781
964
  setTouchPanelTab("runs");
782
965
  return;
783
966
  }
@@ -788,7 +971,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
788
971
  }
789
972
 
790
973
  setTouchPanelTab("runs");
791
- }, [isTouchLayout, runs.length, selectedIssue, selectedRun]);
974
+ }, [isTouchLayout, runs.length, selectedItem, selectedRun]);
792
975
 
793
976
  useEffect(() => {
794
977
  if (!showRunScripts) {
@@ -821,22 +1004,22 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
821
1004
  }, [showRunScripts]);
822
1005
 
823
1006
  const executeWithAgent = useCallback(
824
- async (issue: LinearIssue, agent: Participant) => {
825
- setPickerIssue(null);
1007
+ async (item: TrackerItem, agent: Participant) => {
1008
+ setPickerItem(null);
826
1009
  setPickerAnchor(null);
827
1010
 
828
1011
  try {
829
- const response = await fetch("/api/linear/runs/scripted", {
1012
+ const response = await fetch(`/api/trackers/${trackerType}/runs/scripted`, {
830
1013
  method: "POST",
831
1014
  headers: { "Content-Type": "application/json" },
832
1015
  body: JSON.stringify({
833
1016
  projectId: projectId ?? undefined,
834
1017
  projectSlug: projectSlug ?? undefined,
835
- issueId: issue.id,
836
- issueIdentifier: issue.identifier,
837
- issueTitle: issue.title,
838
- issueStatus: issue.status,
839
- issueAssignee: issue.assignee,
1018
+ issueId: item.id,
1019
+ issueIdentifier: item.identifier,
1020
+ issueTitle: item.title,
1021
+ issueStatus: item.status,
1022
+ issueAssignee: item.assignee?.name ?? null,
840
1023
  agentId: agent.id,
841
1024
  scriptName: activeScript?.name,
842
1025
  scriptPrompt: activeScript?.prompt,
@@ -845,7 +1028,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
845
1028
 
846
1029
  const payload = (await response.json().catch(() => ({}))) as {
847
1030
  error?: string;
848
- run?: LinearRun;
1031
+ run?: TrackerRunRecord;
849
1032
  chatRunId?: string;
850
1033
  userMessageId?: string;
851
1034
  };
@@ -854,33 +1037,33 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
854
1037
  throw new Error(payload.error || "Failed to start scripted session");
855
1038
  }
856
1039
  pushSelection({
857
- issue: issue.id,
1040
+ issue: item.id,
858
1041
  run: payload.run.id,
859
1042
  });
860
1043
  } catch (error) {
861
- console.error("Failed to start scripted Linear session:", error);
1044
+ console.error("Failed to start scripted tracker session:", error);
862
1045
  if (error instanceof Error) {
863
1046
  window.alert(error.message);
864
1047
  }
865
1048
  }
866
1049
  },
867
- [activeScript, projectId, projectSlug, pushSelection]
1050
+ [activeScript, projectId, projectSlug, pushSelection, trackerType]
868
1051
  );
869
1052
 
870
1053
  const handleStartScriptedSession = useCallback(
871
- (issue: LinearIssue, event?: React.MouseEvent) => {
1054
+ (item: TrackerItem, event?: React.MouseEvent) => {
872
1055
  setShowRunScripts(false);
873
1056
  if (participants.length === 0) {
874
1057
  window.alert("Add at least one agent to this project before starting a scripted session.");
875
1058
  return;
876
1059
  }
877
1060
  if (participants.length === 1) {
878
- void executeWithAgent(issue, participants[0]);
1061
+ void executeWithAgent(item, participants[0]);
879
1062
  return;
880
1063
  }
881
1064
  // Multiple agents — show picker
882
1065
  const rect = (event?.currentTarget as HTMLElement)?.getBoundingClientRect();
883
- setPickerIssue(issue);
1066
+ setPickerItem(item);
884
1067
  setPickerAnchor(rect ? { top: rect.bottom + 4, left: rect.left } : { top: 200, left: 200 });
885
1068
  },
886
1069
  [executeWithAgent, participants],
@@ -903,28 +1086,14 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
903
1086
  return () => observer.disconnect();
904
1087
  }, [hasMore, loadMore]);
905
1088
 
906
- if (connectionLoading) {
907
- return (
908
- <div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
909
- Loading...
910
- </div>
911
- );
912
- }
913
-
914
- const needsMcpSetup = connected && !setupDismissed && !Object.values(mcpConfigured).some(Boolean);
915
-
916
- if (!connected || needsMcpSetup) {
1089
+ if (!connected) {
917
1090
  return (
918
1091
  <LinearSetup
1092
+ trackerType={trackerType}
1093
+ projectId={projectId ?? ""}
919
1094
  connected={connected}
920
- user={user}
921
- clis={clis}
922
- mcpConfigured={mcpConfigured}
923
1095
  onConnect={connect}
924
1096
  onConnectWithKey={connectWithKey}
925
- onDisconnect={disconnect}
926
- onConfigureMcp={configureMcp}
927
- onContinue={() => setSetupDismissed(true)}
928
1097
  />
929
1098
  );
930
1099
  }
@@ -949,12 +1118,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
949
1118
  <button
950
1119
  type="button"
951
1120
  className="shrink-0 rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-50"
952
- onClick={() => void refreshIssues()}
1121
+ onClick={() => void refreshItems()}
953
1122
  title="Refresh tickets"
954
1123
  aria-label="Refresh tickets"
955
- disabled={issuesLoading}
1124
+ disabled={itemsLoading}
956
1125
  >
957
- <RefreshCw size={16} className={issuesLoading ? "animate-spin" : undefined} />
1126
+ <RefreshCw size={16} className={itemsLoading ? "animate-spin" : undefined} />
958
1127
  </button>
959
1128
  <button
960
1129
  type="button"
@@ -963,7 +1132,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
963
1132
  setShowRunScripts(false);
964
1133
  setShowSettings(true);
965
1134
  }}
966
- title="Linear settings"
1135
+ title="Tracker settings"
967
1136
  >
968
1137
  <Settings size={16} />
969
1138
  </button>
@@ -972,10 +1141,10 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
972
1141
  {showStatusFilter ? (
973
1142
  <MultiFilterPopdown
974
1143
  label="Status"
975
- values={selectedStatuses}
1144
+ values={selectedStatusCategories}
976
1145
  options={statusOptions}
977
1146
  activeClasses="border-amber-500/30 bg-amber-500/10 text-amber-300"
978
- onChange={setSelectedStatuses}
1147
+ onChange={setSelectedStatusCategories}
979
1148
  emptyLabel="All statuses"
980
1149
  />
981
1150
  ) : null}
@@ -996,13 +1165,13 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
996
1165
  onChange={setSelectedWorkspaceId}
997
1166
  />
998
1167
  ) : null}
999
- {showCycleFilter ? (
1168
+ {showGroupFilter ? (
1000
1169
  <FilterSelect
1001
- label="Cycle"
1002
- value={selectedCycleId}
1003
- options={cycleOptions}
1170
+ label="Group"
1171
+ value={selectedGroupId}
1172
+ options={groupOptions}
1004
1173
  activeClasses="border-purple-500/30 bg-purple-500/10 text-purple-400"
1005
- onChange={setSelectedCycleId}
1174
+ onChange={setSelectedGroupId}
1006
1175
  />
1007
1176
  ) : null}
1008
1177
  <FilterSelect
@@ -1040,37 +1209,38 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1040
1209
  </div>
1041
1210
 
1042
1211
  <div className="flex-1 overflow-y-auto">
1043
- {issuesLoading && issues.length === 0 ? (
1212
+ {itemsLoading && items.length === 0 ? (
1044
1213
  <div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
1045
1214
  Loading tickets...
1046
1215
  </div>
1047
- ) : issues.length === 0 ? (
1216
+ ) : items.length === 0 ? (
1048
1217
  <div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
1049
1218
  No tickets found.
1050
1219
  </div>
1051
1220
  ) : (
1052
1221
  <>
1053
- {sortedIssues.map((issue, idx) => (
1054
- <React.Fragment key={issue.id}>
1055
- {pinnedIssueIds.size > 0 &&
1056
- !pinnedIssueIds.has(issue.id) &&
1057
- (idx === 0 || pinnedIssueIds.has(sortedIssues[idx - 1].id)) && (
1222
+ {sortedItems.map((item, idx) => (
1223
+ <React.Fragment key={item.id}>
1224
+ {pinnedItemIds.size > 0 &&
1225
+ !pinnedItemIds.has(item.id) &&
1226
+ (idx === 0 || pinnedItemIds.has(sortedItems[idx - 1].id)) && (
1058
1227
  <div className="mx-4 border-t border-amber-500/20" />
1059
1228
  )}
1060
1229
  <TicketRow
1061
- issue={issue}
1062
- selected={selectedIssue?.id === issue.id}
1063
- pinned={pinnedIssueIds.has(issue.id)}
1064
- activeAgents={issueActiveAgents.get(issue.id)}
1230
+ item={item}
1231
+ selected={selectedItem?.id === item.id}
1232
+ pinned={pinnedItemIds.has(item.id)}
1233
+ activeAgents={issueActiveAgents.get(item.id)}
1065
1234
  participants={participants}
1235
+ projectSlug={projectSlug}
1066
1236
  onSelect={() => {
1067
1237
  setTouchPanelTab("runs");
1068
1238
  pushSelection({
1069
- issue: issue.id,
1239
+ issue: item.id,
1070
1240
  run: null,
1071
1241
  });
1072
1242
  }}
1073
- onTogglePin={() => togglePin(issue.id)}
1243
+ onTogglePin={() => togglePin(item.id)}
1074
1244
  />
1075
1245
  </React.Fragment>
1076
1246
  ))}
@@ -1079,7 +1249,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1079
1249
  ref={sentinelRef}
1080
1250
  className="py-2 text-center text-xs text-[var(--muted-foreground)]"
1081
1251
  >
1082
- {issuesLoading ? "Loading..." : "Load more"}
1252
+ {itemsLoading ? "Loading..." : "Load more"}
1083
1253
  </div>
1084
1254
  ) : null}
1085
1255
  </>
@@ -1087,15 +1257,15 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1087
1257
  </div>
1088
1258
  </div>
1089
1259
 
1090
- {selectedIssue ? (
1260
+ {selectedItem ? (
1091
1261
  <div className="absolute inset-0 z-20 flex flex-col bg-[var(--background)]">
1092
1262
  <div className="flex items-center justify-between gap-3 border-b border-[var(--card-border)] px-4 py-3">
1093
1263
  <div className="min-w-0">
1094
1264
  <div className="text-[10px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]">
1095
- {selectedIssue.identifier}
1265
+ {selectedItem.identifier}
1096
1266
  </div>
1097
1267
  <div className="truncate text-sm font-semibold text-[var(--foreground)]">
1098
- {selectedIssue.title}
1268
+ {selectedItem.title}
1099
1269
  </div>
1100
1270
  </div>
1101
1271
  <button
@@ -1149,7 +1319,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1149
1319
  }}
1150
1320
  title="Open a fresh chat for this ticket. You can choose or edit the session script in the ticket tab."
1151
1321
  aria-label="New session"
1152
- disabled={!selectedIssue}
1322
+ disabled={!selectedItem}
1153
1323
  >
1154
1324
  <Plus size={12} />
1155
1325
  New session
@@ -1157,7 +1327,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1157
1327
  </div>
1158
1328
 
1159
1329
  <div className="flex-1 overflow-y-auto">
1160
- {runsLoading && runs.length === 0 ? (
1330
+ {(runsLoading && runs.length === 0) || isAwaitingRestore ? (
1161
1331
  <div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
1162
1332
  Loading sessions...
1163
1333
  </div>
@@ -1212,40 +1382,46 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1212
1382
  </div>
1213
1383
  ) : selectedRun ? (
1214
1384
  <ThreadMessageList
1215
- issue={selectedIssue ?? {
1385
+ item={selectedItem ?? {
1216
1386
  id: selectedRun.issueId,
1217
1387
  identifier: selectedRun.issueIdentifier,
1218
1388
  title: selectedRun.issueTitle,
1219
- url: null,
1220
1389
  status: selectedRun.issueStatus,
1221
- assignee: selectedRun.issueAssignee,
1390
+ statusCategory: "todo",
1391
+ labels: [],
1392
+ trackerId: "",
1393
+ trackerType,
1394
+ assignee: selectedRun.issueAssignee ? { id: "", name: selectedRun.issueAssignee } : undefined,
1222
1395
  updatedAt: selectedRun.updatedAt,
1396
+ createdAt: selectedRun.updatedAt,
1397
+ url: "",
1223
1398
  }}
1224
1399
  run={selectedRun}
1225
1400
  participants={participants}
1226
- issueStatusOptions={issueStatusOptions}
1227
- issueStatusUpdating={updatingIssueId === selectedRun.issueId}
1228
- onIssueStatusChange={handleIssueStatusChange}
1401
+ itemStatusOptions={itemStatusOptions}
1402
+ itemStatusUpdating={updatingItemId === selectedRun.issueId}
1403
+ onItemStatusChange={handleItemStatusChange}
1229
1404
  onBack={() => replaceSelection({ run: null })}
1230
1405
  />
1231
- ) : participants.length === 0 ? (
1406
+ ) : isAwaitingRestore ? null : participants.length === 0 ? (
1232
1407
  <div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
1233
1408
  Add at least one agent to this project to start a session.
1234
1409
  </div>
1235
1410
  ) : (
1236
1411
  <TicketPanel
1237
- key={selectedIssue.id}
1238
- issue={selectedIssue}
1412
+ key={selectedItem.id}
1413
+ item={selectedItem}
1414
+ trackerType={trackerType}
1239
1415
  runs={runs}
1240
1416
  participants={participants}
1241
1417
  projectId={projectId}
1242
1418
  projectSlug={projectSlug}
1243
- issueStatusOptions={issueStatusOptions}
1244
- issueStatusUpdating={updatingIssueId === selectedIssue.id}
1245
- onIssueStatusChange={handleIssueStatusChange}
1419
+ itemStatusOptions={itemStatusOptions}
1420
+ itemStatusUpdating={updatingItemId === selectedItem.id}
1421
+ onItemStatusChange={handleItemStatusChange}
1246
1422
  activeSessionScriptLabel={activeSessionScriptLabel}
1247
1423
  onOpenSessionScripts={() => setShowRunScripts(true)}
1248
- onStartScriptedSession={(event) => handleStartScriptedSession(selectedIssue, event)}
1424
+ onStartScriptedSession={(event) => handleStartScriptedSession(selectedItem, event)}
1249
1425
  createRun={createRun}
1250
1426
  updateRun={updateRun}
1251
1427
  onRunCreated={(runId) => pushSelection({ run: runId })}
@@ -1274,12 +1450,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1274
1450
  <button
1275
1451
  type="button"
1276
1452
  className="shrink-0 rounded p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-50"
1277
- onClick={() => void refreshIssues()}
1453
+ onClick={() => void refreshItems()}
1278
1454
  title="Refresh tickets"
1279
1455
  aria-label="Refresh tickets"
1280
- disabled={issuesLoading}
1456
+ disabled={itemsLoading}
1281
1457
  >
1282
- <RefreshCw size={16} className={issuesLoading ? "animate-spin" : undefined} />
1458
+ <RefreshCw size={16} className={itemsLoading ? "animate-spin" : undefined} />
1283
1459
  </button>
1284
1460
  <button
1285
1461
  type="button"
@@ -1288,7 +1464,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1288
1464
  setShowRunScripts(false);
1289
1465
  setShowSettings(true);
1290
1466
  }}
1291
- title="Linear settings"
1467
+ title="Tracker settings"
1292
1468
  >
1293
1469
  <Settings size={16} />
1294
1470
  </button>
@@ -1297,10 +1473,10 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1297
1473
  {showStatusFilter ? (
1298
1474
  <MultiFilterPopdown
1299
1475
  label="Status"
1300
- values={selectedStatuses}
1476
+ values={selectedStatusCategories}
1301
1477
  options={statusOptions}
1302
1478
  activeClasses="border-amber-500/30 bg-amber-500/10 text-amber-300"
1303
- onChange={setSelectedStatuses}
1479
+ onChange={setSelectedStatusCategories}
1304
1480
  emptyLabel="All statuses"
1305
1481
  />
1306
1482
  ) : null}
@@ -1321,13 +1497,13 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1321
1497
  onChange={setSelectedWorkspaceId}
1322
1498
  />
1323
1499
  ) : null}
1324
- {showCycleFilter ? (
1500
+ {showGroupFilter ? (
1325
1501
  <FilterSelect
1326
- label="Cycle"
1327
- value={selectedCycleId}
1328
- options={cycleOptions}
1502
+ label="Group"
1503
+ value={selectedGroupId}
1504
+ options={groupOptions}
1329
1505
  activeClasses="border-purple-500/30 bg-purple-500/10 text-purple-400"
1330
- onChange={setSelectedCycleId}
1506
+ onChange={setSelectedGroupId}
1331
1507
  />
1332
1508
  ) : null}
1333
1509
  <FilterSelect
@@ -1364,51 +1540,201 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1364
1540
  </div>
1365
1541
  </div>
1366
1542
 
1367
- <div className="flex-1 overflow-y-auto">
1368
- {issuesLoading && issues.length === 0 ? (
1543
+ <DndContext
1544
+ sensors={dndSensors}
1545
+ collisionDetection={closestCenter}
1546
+ onDragStart={handleDragStart}
1547
+ onDragEnd={handleDragEnd}
1548
+ >
1549
+ <div className="relative flex-1 overflow-y-auto">
1550
+ {itemsLoading && items.length === 0 ? (
1369
1551
  <div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
1370
1552
  Loading tickets...
1371
1553
  </div>
1372
- ) : issues.length === 0 ? (
1554
+ ) : items.length === 0 ? (
1373
1555
  <div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
1374
1556
  No tickets found.
1375
1557
  </div>
1376
1558
  ) : (
1377
1559
  <>
1378
- {sortedIssues.map((issue, idx) => (
1379
- <React.Fragment key={issue.id}>
1380
- {pinnedIssueIds.size > 0 &&
1381
- !pinnedIssueIds.has(issue.id) &&
1382
- (idx === 0 || pinnedIssueIds.has(sortedIssues[idx - 1].id)) && (
1383
- <div className="mx-4 border-t border-amber-500/20" />
1384
- )}
1385
- <TicketRow
1386
- issue={issue}
1387
- selected={selectedIssue?.id === issue.id}
1388
- pinned={pinnedIssueIds.has(issue.id)}
1389
- activeAgents={issueActiveAgents.get(issue.id)}
1390
- participants={participants}
1391
- onSelect={() =>
1392
- pushSelection({
1393
- issue: issue.id,
1394
- run: null,
1395
- })
1560
+ {/* Unified list: groups rendered inline at first-member position */}
1561
+ {(() => {
1562
+ const pendingSet = showGroupNamePrompt ? new Set(pendingGroupTaskIds) : null;
1563
+
1564
+ // Build a map: itemId → group (for the first member of each group)
1565
+ const firstMemberToGroup = new Map<string, typeof taskGroups[number]>();
1566
+ for (const group of taskGroups) {
1567
+ const firstInSort = sortedItems.find((i) => group.task_ids.includes(i.id));
1568
+ if (firstInSort) firstMemberToGroup.set(firstInSort.id, group);
1569
+ }
1570
+
1571
+ // Pending group prompt: find insert position
1572
+ const pendingTickets = showGroupNamePrompt
1573
+ ? pendingGroupTaskIds
1574
+ .map((id) => sortedItems.find((i) => i.id === id))
1575
+ .filter(Boolean)
1576
+ .map((i) => ({ id: i!.id, identifier: i!.identifier, title: i!.title, status: STATUS_LABELS[i!.status] ?? i!.status }))
1577
+ : [];
1578
+
1579
+ // Track which groups we've rendered
1580
+ const renderedGroups = new Set<string>();
1581
+ let looseIdx = 0;
1582
+
1583
+ return sortedItems.map((item) => {
1584
+ // Skip pending tickets
1585
+ if (pendingSet?.has(item.id)) {
1586
+ // Render prompt at target position
1587
+ if (item.id === pendingGroupTargetId && showGroupNamePrompt) {
1588
+ return (
1589
+ <GroupNamePrompt
1590
+ key="__pending-group__"
1591
+ tickets={pendingTickets}
1592
+ onConfirm={handleCreateGroup}
1593
+ onCancel={() => {
1594
+ setShowGroupNamePrompt(false);
1595
+ setPendingGroupTaskIds([]);
1596
+ setPendingGroupTargetId(null);
1597
+ }}
1598
+ />
1599
+ );
1396
1600
  }
1397
- onTogglePin={() => togglePin(issue.id)}
1398
- />
1399
- </React.Fragment>
1400
- ))}
1601
+ return null;
1602
+ }
1603
+
1604
+ // If this item is the first member of a group, render the group here
1605
+ const group = firstMemberToGroup.get(item.id);
1606
+ if (group && !renderedGroups.has(group.id)) {
1607
+ renderedGroups.add(group.id);
1608
+ const groupItems = group.task_ids
1609
+ .map((id) => sortedItems.find((i) => i.id === id))
1610
+ .filter(Boolean) as TrackerItem[];
1611
+ return (
1612
+ <React.Fragment key={`group-${group.id}`}>
1613
+ <FolderRow
1614
+ groupId={group.id}
1615
+ name={group.name}
1616
+ count={groupItems.length}
1617
+ collapsed={!!group.collapsed}
1618
+ selected={selectedGroupTaskGroupId === group.id}
1619
+ projectSlug={projectSlug}
1620
+ onToggleCollapse={() =>
1621
+ updateGroup(group.id, { collapsed: !group.collapsed })
1622
+ }
1623
+ onSelect={() =>
1624
+ pushSelection({ group: group.id, issue: null, run: null })
1625
+ }
1626
+ onUngroup={() => {
1627
+ void deleteGroup(group.id);
1628
+ if (selectedGroupTaskGroupId === group.id) {
1629
+ replaceSelection({ group: null });
1630
+ }
1631
+ }}
1632
+ />
1633
+ {!group.collapsed &&
1634
+ groupItems.map((gi, giIdx) => (
1635
+ <TicketRow
1636
+ key={gi.id}
1637
+ item={gi}
1638
+ selected={selectedItem?.id === gi.id}
1639
+ pinned={pinnedItemIds.has(gi.id)}
1640
+ activeAgents={issueActiveAgents.get(gi.id)}
1641
+ participants={participants}
1642
+ draggable
1643
+ multiSelected={multiSelectedItemIds.has(gi.id)}
1644
+ treeConnector={giIdx === groupItems.length - 1 ? "last" : "mid"}
1645
+ projectSlug={projectSlug}
1646
+ onSelect={(event) => {
1647
+ if (event && (event.metaKey || event.ctrlKey)) {
1648
+ toggleItemMultiSelect(gi.id);
1649
+ } else {
1650
+ pushSelection({
1651
+ issue: gi.id,
1652
+ run: null,
1653
+ group: null,
1654
+ });
1655
+ }
1656
+ }}
1657
+ onTogglePin={() => togglePin(gi.id)}
1658
+ />
1659
+ ))}
1660
+ </React.Fragment>
1661
+ );
1662
+ }
1663
+
1664
+ // Skip grouped items (already rendered with their group)
1665
+ if (groupedItemIds.has(item.id)) return null;
1666
+
1667
+ // Loose ticket
1668
+ const currentLooseIdx = looseIdx++;
1669
+ const prevLoose = currentLooseIdx > 0
1670
+ ? sortedItems.filter((i) => !groupedItemIds.has(i.id) && (!pendingSet || !pendingSet.has(i.id)))[currentLooseIdx - 1]
1671
+ : null;
1672
+ return (
1673
+ <React.Fragment key={item.id}>
1674
+ {pinnedItemIds.size > 0 &&
1675
+ !pinnedItemIds.has(item.id) &&
1676
+ (currentLooseIdx === 0 || (prevLoose && pinnedItemIds.has(prevLoose.id))) && (
1677
+ <div className="mx-4 border-t border-amber-500/20" />
1678
+ )}
1679
+ <TicketRow
1680
+ item={item}
1681
+ selected={selectedItem?.id === item.id}
1682
+ pinned={pinnedItemIds.has(item.id)}
1683
+ activeAgents={issueActiveAgents.get(item.id)}
1684
+ participants={participants}
1685
+ draggable
1686
+ multiSelected={multiSelectedItemIds.has(item.id)}
1687
+ projectSlug={projectSlug}
1688
+ onSelect={(event) => {
1689
+ if (event && (event.metaKey || event.ctrlKey)) {
1690
+ toggleItemMultiSelect(item.id);
1691
+ } else {
1692
+ pushSelection({
1693
+ issue: item.id,
1694
+ run: null,
1695
+ group: null,
1696
+ });
1697
+ }
1698
+ }}
1699
+ onTogglePin={() => togglePin(item.id)}
1700
+ />
1701
+ </React.Fragment>
1702
+ );
1703
+ });
1704
+ })()}
1401
1705
  {hasMore ? (
1402
1706
  <div
1403
1707
  ref={sentinelRef}
1404
1708
  className="py-2 text-center text-xs text-[var(--muted-foreground)]"
1405
1709
  >
1406
- {issuesLoading ? "Loading..." : "Load more"}
1710
+ {itemsLoading ? "Loading..." : "Load more"}
1407
1711
  </div>
1408
1712
  ) : null}
1409
1713
  </>
1410
1714
  )}
1715
+ <SelectionBar
1716
+ count={multiSelectedItemIds.size}
1717
+ onGroup={handleMultiSelectGroup}
1718
+ onClear={() => setMultiSelectedItemIds(new Set())}
1719
+ />
1411
1720
  </div>
1721
+ <DragOverlay dropAnimation={null}>
1722
+ {dragActiveId && (() => {
1723
+ const dragItem = sortedItems.find((i) => i.id === dragActiveId);
1724
+ if (!dragItem) return null;
1725
+ return (
1726
+ <div className="flex items-center gap-3 rounded-lg border border-[var(--primary)]/30 bg-[var(--card-bg)] px-4 py-2.5 text-sm shadow-xl backdrop-blur-sm">
1727
+ <span className="w-24 shrink-0 whitespace-nowrap font-mono text-xs text-[var(--muted-foreground)]">
1728
+ {dragItem.identifier}
1729
+ </span>
1730
+ <span className="min-w-0 flex-1 truncate text-xs font-medium text-[var(--foreground)]">
1731
+ {dragItem.title}
1732
+ </span>
1733
+ </div>
1734
+ );
1735
+ })()}
1736
+ </DragOverlay>
1737
+ </DndContext>
1412
1738
  </div>
1413
1739
 
1414
1740
  <ResizeHandle onResize={(delta) => setTicketPanelWidth((w) => { const next = Math.max(180, Math.min(600, w + delta)); persistLinearTicketPanelWidth(next); return next; })} />
@@ -1433,44 +1759,69 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1433
1759
  <div className="flex min-w-0 flex-1 flex-col overflow-hidden">
1434
1760
  {selectedRun ? (
1435
1761
  <ThreadMessageList
1436
- issue={selectedIssue ?? {
1762
+ item={selectedItem ?? {
1437
1763
  id: selectedRun.issueId,
1438
1764
  identifier: selectedRun.issueIdentifier,
1439
1765
  title: selectedRun.issueTitle,
1440
- url: null,
1441
1766
  status: selectedRun.issueStatus,
1442
- assignee: selectedRun.issueAssignee,
1767
+ statusCategory: "todo",
1768
+ labels: [],
1769
+ trackerId: "",
1770
+ trackerType,
1771
+ assignee: selectedRun.issueAssignee ? { id: "", name: selectedRun.issueAssignee } : undefined,
1443
1772
  updatedAt: selectedRun.updatedAt,
1773
+ createdAt: selectedRun.updatedAt,
1774
+ url: "",
1444
1775
  }}
1445
1776
  run={selectedRun}
1446
1777
  participants={participants}
1447
- issueStatusOptions={issueStatusOptions}
1448
- issueStatusUpdating={updatingIssueId === selectedRun.issueId}
1449
- onIssueStatusChange={handleIssueStatusChange}
1778
+ itemStatusOptions={itemStatusOptions}
1779
+ itemStatusUpdating={updatingItemId === selectedRun.issueId}
1780
+ onItemStatusChange={handleItemStatusChange}
1450
1781
  onBack={() => replaceSelection({ run: null })}
1451
1782
  />
1452
- ) : !selectedIssue ? (
1783
+ ) : selectedGroup && !selectedItem ? (
1784
+ <GroupPanel
1785
+ group={selectedGroup}
1786
+ items={items}
1787
+ trackerType={trackerType}
1788
+ participants={participants}
1789
+ projectId={projectId}
1790
+ projectSlug={projectSlug}
1791
+ onUpdateName={(name) => updateGroup(selectedGroup.id, { name })}
1792
+ onDelete={async () => {
1793
+ await deleteGroup(selectedGroup.id);
1794
+ replaceSelection({ group: null });
1795
+ }}
1796
+ onSelectItem={(itemId) =>
1797
+ pushSelection({ issue: itemId, group: null, run: null })
1798
+ }
1799
+ onRunCreated={(runId) => pushSelection({ run: runId })}
1800
+ onSelectRun={(runId) => pushSelection({ run: runId })}
1801
+ />
1802
+ ) : !selectedItem ? (
1453
1803
  <div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
1454
1804
  Select a ticket from the list.
1455
1805
  </div>
1456
- ) : participants.length === 0 ? (
1806
+ ) : isAwaitingRestore ? null : participants.length === 0 ? (
1457
1807
  <div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
1458
1808
  Add at least one agent to this project to start a session.
1459
1809
  </div>
1460
1810
  ) : (
1461
1811
  <TicketPanel
1462
- key={selectedIssue.id}
1463
- issue={selectedIssue}
1812
+ key={selectedItem.id}
1813
+ item={selectedItem}
1814
+ trackerType={trackerType}
1464
1815
  runs={runs}
1465
1816
  participants={participants}
1466
1817
  projectId={projectId}
1467
1818
  projectSlug={projectSlug}
1468
- issueStatusOptions={issueStatusOptions}
1469
- issueStatusUpdating={updatingIssueId === selectedIssue.id}
1470
- onIssueStatusChange={handleIssueStatusChange}
1819
+ itemStatusOptions={itemStatusOptions}
1820
+ itemStatusUpdating={updatingItemId === selectedItem.id}
1821
+ onItemStatusChange={handleItemStatusChange}
1471
1822
  activeSessionScriptLabel={activeSessionScriptLabel}
1472
1823
  onOpenSessionScripts={() => setShowRunScripts(true)}
1473
- onStartScriptedSession={(event) => handleStartScriptedSession(selectedIssue, event)}
1824
+ onStartScriptedSession={(event) => handleStartScriptedSession(selectedItem, event)}
1474
1825
  createRun={createRun}
1475
1826
  updateRun={updateRun}
1476
1827
  onRunCreated={(runId) => pushSelection({ run: runId })}
@@ -1483,7 +1834,8 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1483
1834
 
1484
1835
  {/* Settings overlay */}
1485
1836
  {showSettings && (
1486
- <LinearSettingsModal
1837
+ <TrackerSettingsModal
1838
+ trackerType={trackerType}
1487
1839
  connected={connected}
1488
1840
  user={user}
1489
1841
  clis={clis}
@@ -1516,12 +1868,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1516
1868
  ) : null}
1517
1869
 
1518
1870
  {/* Agent picker popover */}
1519
- {pickerIssue && pickerAnchor && (
1871
+ {pickerItem && pickerAnchor && (
1520
1872
  <>
1521
1873
  <div
1522
1874
  className="fixed inset-0 z-40"
1523
1875
  onClick={() => {
1524
- setPickerIssue(null);
1876
+ setPickerItem(null);
1525
1877
  setPickerAnchor(null);
1526
1878
  }}
1527
1879
  />
@@ -1537,7 +1889,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1537
1889
  key={agent.id}
1538
1890
  type="button"
1539
1891
  className="flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--card-bg)]"
1540
- onClick={() => void executeWithAgent(pickerIssue, agent)}
1892
+ onClick={() => void executeWithAgent(pickerItem, agent)}
1541
1893
  >
1542
1894
  <img
1543
1895
  src={agentAvatarUrl(agent.id, agent.color, 20)}