@mndrk/agx 2.0.55 → 2.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/README.md +5 -0
  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 +1 -0
  4. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  6. package/cloud-runtime/standalone/apps/local/.next/required-server-files.json +5 -0
  7. package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +8 -0
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js +2 -2
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +3 -2
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +17 -7
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +13 -13
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js +2 -2
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +4 -4
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +5 -5
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +5 -5
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +2 -2
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/app-paths-manifest.json +3 -0
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/build-manifest.json +18 -0
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/next-font-manifest.json +11 -0
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/react-loadable-manifest.json +1 -0
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/server-reference-manifest.json +4 -0
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js +14 -0
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.map +5 -0
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -0
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +3 -0
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +2 -2
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +3 -3
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  215. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  216. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  217. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  219. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  220. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  221. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  222. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  225. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  226. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  227. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  228. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  229. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  230. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  231. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  232. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  233. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  234. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +1 -0
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__09joc_o._.js +1 -1
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g50c6p._.js +237 -0
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0o315az._.js +1 -1
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0t2jk2r._.js +2 -2
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tdixb0._.js +49 -0
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0gvjvx7._.js → [root-of-the-server]__0xdp_8-._.js} +25 -25
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0y42h_~._.js +2 -2
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~fjhfa._.js +3 -0
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_12yasaj._.js +9 -0
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_022nz2u._.js +3 -0
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_0i1av_r._.js +11 -10
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0yvelwy.js +3 -0
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/02dz_local__next-internal_server_app_projects_[slug]_folders_page_actions_03fg4j9.js +3 -0
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0qzjdog._.js +3 -0
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0a-mbbj._.js +3 -0
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0e2_v_.._.js +3 -0
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0w3hl3p._.js +3 -0
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__07johgg._.js +3 -0
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__08d5c~o._.js +3 -0
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0_n~ybp._.js +3 -0
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0fl7_-o._.js +18 -0
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0h~rb5r._.js +3 -0
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r3w68h._.js +18 -0
  258. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0x7k~pk._.js +3 -0
  259. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0hd2vo4._.js → [root-of-the-server]__0y8j6el._.js} +2 -2
  260. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0yme9fy._.js +3 -0
  261. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~7q5sw._.js +3 -0
  262. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13eqcxp._.js +3 -0
  263. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0s~0ump._.js → _064h43p._.js} +2 -2
  264. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0742x_.._.js +3 -0
  265. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_09b42z9._.js → _09~glsn._.js} +2 -2
  266. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +3 -0
  267. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0fwy5tm._.js +7 -0
  268. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ndrb_0._.js +2 -2
  269. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +3 -0
  270. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ufdu.z._.js +7 -0
  271. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_03rf_sb._.js → _0wk3skw._.js} +2 -2
  272. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yffwm4._.js +2 -2
  273. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +3 -0
  274. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_04hvzn_._.js +3 -0
  275. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_4hk8x._.js +3 -0
  276. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +1 -1
  277. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +3 -0
  278. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0h3mfm7._.js +3 -0
  279. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0nvzo3y._.js +3 -0
  280. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +1 -1
  281. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_execution-graph_page_tsx_0tn2sx9._.js +2 -2
  282. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_0ju618z._.js +3 -0
  283. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_graph_[taskId]_page_tsx_0bctfd-._.js +1 -1
  284. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
  285. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +2 -2
  286. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
  287. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_page_tsx_06czvz-._.js +3 -0
  288. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +12 -12
  289. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_orphans_page_tsx_0sdv.11._.js +4 -4
  290. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TaskCard_tsx_0e35_z5._.js +6 -6
  291. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +3 -3
  292. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +4 -4
  293. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
  294. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mk0s0o.js +4 -0
  295. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  296. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  297. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
  298. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +4 -0
  299. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  300. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  301. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  302. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  303. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-_ukhpeg429c.js +16 -0
  304. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-olq~7zw3wjy.js +1 -0
  305. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0142ce0jj3j7r.js → 0-vo_x2cxmjm3.js} +1 -1
  306. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.4d8rshxivwh.js +20 -0
  307. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 00lise4d-u8d1.js} +1 -1
  308. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0~apd0q5_i88z.js → 02p3n7faotpr9.js} +2 -2
  309. package/cloud-runtime/standalone/apps/local/.next/static/chunks/02zcxdul-1jaf.js +28 -0
  310. package/cloud-runtime/standalone/apps/local/.next/static/chunks/055bzj5jfgzr0.js +1 -0
  311. package/cloud-runtime/standalone/apps/local/.next/static/chunks/05c-~4v_jrblf.css +1 -0
  312. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07646a0h94826.js +3 -0
  313. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08~pgzjb13k_v.js +5 -0
  314. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09wzd7y~tk-3~.js +1 -0
  315. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0px65ynyk3t1d.js → 0bchtyu6m.2yv.js} +7 -7
  316. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0brmd4~76pthy.js +20 -0
  317. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +1 -0
  318. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0.a4-dh~x9sa3.js → 0hudzktaaxr4g.js} +2 -2
  319. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{09-_2lcshmjl5.js → 0hzq698w6f4m6.js} +1 -1
  320. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0i.su2yr26wb6.js +37 -0
  321. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jonp-o8lh-4j.js +1 -0
  322. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jsbvcyub73d9.js +1 -0
  323. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l2pt2td_87wr.js +5 -0
  324. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +1 -0
  325. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lgb.0~i1xvv-.js +1 -0
  326. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lkal3uvr6_~2.js +1 -0
  327. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mvqoz13v0o2a.js +5 -0
  328. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0o9cxba_5mv2c.js +5 -0
  329. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p7s38p3bcffh.js +1 -0
  330. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0q2dgbluvgxf2.js +16 -0
  331. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +1 -0
  332. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0h_bwlg~kk8lz.js → 0rey9zfvm3yhd.js} +2 -2
  333. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ucg8e2wkd8gf.js +1 -0
  334. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0uve8xrt~0a2e.js +1 -0
  335. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0x_pewz9npq~q.js +1 -0
  336. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +1 -0
  337. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0ov5lu0tz2o2e.js → 104xjvrf6y-zq.js} +1 -1
  338. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0rm7v.1y6qcni.js → 11-u35xqxu~i-.js} +1 -1
  339. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +1 -0
  340. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0826uh6nmsi5l.js → 1503vb7lb6.g1.js} +1 -1
  341. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0o0hwfzwwty4b.js → 15jlly_p-g4c8.js} +2 -2
  342. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16nozeadjid9-.js +5 -0
  343. package/cloud-runtime/standalone/apps/local/.next/static/chunks/177-q0wwdi0qe.js +1 -0
  344. package/cloud-runtime/standalone/apps/local/agx-server.js +4055 -0
  345. package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +10 -2
  346. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.ts +16 -0
  347. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +8 -1
  348. package/cloud-runtime/standalone/apps/local/app/globals.css +67 -5
  349. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/folders/page.tsx +25 -0
  350. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +19 -5
  351. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/objectives/[objectiveId]/page.tsx +7 -2
  352. package/cloud-runtime/standalone/apps/local/bundled-server.ts +45 -0
  353. package/cloud-runtime/standalone/apps/local/components/ActionToolbar.tsx +5 -2
  354. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +35 -3
  355. package/cloud-runtime/standalone/apps/local/components/ContextMenu.tsx +2 -2
  356. package/cloud-runtime/standalone/apps/local/components/FloatingPanel.tsx +36 -14
  357. package/cloud-runtime/standalone/apps/local/components/IconButton.tsx +10 -2
  358. package/cloud-runtime/standalone/apps/local/components/KanbanBoard.tsx +84 -3
  359. package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +382 -13
  360. package/cloud-runtime/standalone/apps/local/components/LogTimeline.tsx +4 -1
  361. package/cloud-runtime/standalone/apps/local/components/NowRunningPanel.tsx +3 -1
  362. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +46 -6
  363. package/cloud-runtime/standalone/apps/local/components/SearchCombo.tsx +3 -3
  364. package/cloud-runtime/standalone/apps/local/components/SortableTaskCard.tsx +21 -3
  365. package/cloud-runtime/standalone/apps/local/components/StatusCircle.tsx +3 -3
  366. package/cloud-runtime/standalone/apps/local/components/TaskCard.tsx +51 -1
  367. package/cloud-runtime/standalone/apps/local/components/chat-ui/ChatContainer.tsx +15 -2
  368. package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +3 -3
  369. package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +76 -9
  370. package/cloud-runtime/standalone/apps/local/components/graph/ExecutionGraphPanel.tsx +4 -1
  371. package/cloud-runtime/standalone/apps/local/components/graph/GraphFirstView.tsx +6 -2
  372. package/cloud-runtime/standalone/apps/local/components/graph/NodeDetailPanel.tsx +29 -14
  373. package/cloud-runtime/standalone/apps/local/components/graph/NodeInspector.tsx +9 -6
  374. package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +16 -16
  375. package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +856 -0
  376. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveActivityTimeline.tsx +40 -32
  377. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +172 -49
  378. package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +4 -4
  379. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +347 -168
  380. package/cloud-runtime/standalone/apps/local/components/projects/ProjectSearchBar.tsx +4 -2
  381. package/cloud-runtime/standalone/apps/local/components/projects/ScheduledTasksSummaryCard.tsx +19 -19
  382. package/cloud-runtime/standalone/apps/local/components/projects/TeamsSummaryCard.tsx +10 -10
  383. package/cloud-runtime/standalone/apps/local/components/projects/TeamsView.tsx +50 -50
  384. package/cloud-runtime/standalone/apps/local/components/projects/WorkingNowCard.tsx +12 -12
  385. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectiveCard.tsx +13 -10
  386. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectivesSection.tsx +7 -7
  387. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathCard.tsx +2 -2
  388. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathsSection.tsx +9 -9
  389. package/cloud-runtime/standalone/apps/local/components/scheduling/ScheduleConditionPicker.tsx +3 -3
  390. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +211 -77
  391. package/cloud-runtime/standalone/apps/local/components/terminal/TerminalSessionList.tsx +3 -1
  392. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +72 -21
  393. package/cloud-runtime/standalone/apps/local/hooks/useInputCapabilities.ts +74 -0
  394. package/cloud-runtime/standalone/apps/local/lib/app-config.ts +35 -0
  395. package/cloud-runtime/standalone/apps/local/lib/pty-manager.ts +5 -1
  396. package/cloud-runtime/standalone/apps/local/lib/terminal-server.ts +182 -0
  397. package/cloud-runtime/standalone/apps/local/next.config.ts +2 -1
  398. package/cloud-runtime/standalone/apps/local/package.json +2 -2
  399. package/cloud-runtime/standalone/apps/local/playwright.config.ts +8 -0
  400. package/cloud-runtime/standalone/apps/local/server.js +1 -1
  401. package/cloud-runtime/standalone/apps/local/server.ts +14 -158
  402. package/cloud-runtime/standalone/apps/local/src/graph/types.ts +2 -0
  403. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/cron.ts +11 -0
  404. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +325 -88
  405. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +20 -0
  406. package/cloud-runtime/standalone/apps/local/state/windowState.ts +11 -0
  407. package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +65 -0
  408. package/cloud-runtime/standalone/apps/local/worker/index.js +0 -4
  409. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  410. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  411. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  412. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  413. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  414. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  415. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  416. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  417. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  418. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  419. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.node +0 -0
  420. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.pdb +0 -0
  421. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  422. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  423. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.dll +0 -0
  424. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.pdb +0 -0
  425. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  426. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  427. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  428. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  429. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  430. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  431. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
  432. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.pdb +0 -0
  433. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
  434. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  435. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
  436. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.pdb +0 -0
  437. package/lib/cli/daemon.js +13 -2
  438. package/lib/cli/onboarding.js +5 -6
  439. package/lib/cli/runCli.js +1 -1
  440. package/lib/cloud/client.js +1 -1
  441. package/lib/commands/chat.js +37 -11
  442. package/lib/commands/daemonBoard.js +19 -13
  443. package/lib/config/cloudConfig.js +1 -1
  444. package/lib/orchestrator/httpClient.js +1 -1
  445. package/lib/prompts/templates.js +8 -9
  446. package/package.json +1 -1
  447. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__01ol22y._.js +0 -3
  448. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__088h0r2._.js +0 -3
  449. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__094z9yf._.js +0 -9
  450. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0avz575._.js +0 -49
  451. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0xxf2a0.js +0 -3
  452. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0xd_mxu._.js +0 -3
  453. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__044xm0q._.js +0 -3
  454. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__066ay_e._.js +0 -3
  455. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__09smg3p._.js +0 -18
  456. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0iix1sf._.js +0 -3
  457. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r54zr9._.js +0 -3
  458. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0s8z2_c._.js +0 -18
  459. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w1mm2j._.js +0 -3
  460. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0wq3ukc._.js +0 -3
  461. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13h-0om._.js +0 -3
  462. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03-mlx0._.js +0 -7
  463. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ag3.tl._.js +0 -7
  464. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0dh_hx0._.js +0 -3
  465. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0h8cbsi._.js +0 -3
  466. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0i1ffhz._.js +0 -3
  467. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0nlki7b._.js +0 -3
  468. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_q01av._.js +0 -3
  469. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0eh.4j7._.js +0 -3
  470. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0qaowqy._.js +0 -3
  471. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0s0iy2_._.js +0 -3
  472. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0zr-_na._.js +0 -3
  473. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_10qsqky._.js +0 -3
  474. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.bv3h68wo33z.js +0 -1
  475. package/cloud-runtime/standalone/apps/local/.next/static/chunks/016.x9zt9~rsh.js +0 -16
  476. package/cloud-runtime/standalone/apps/local/.next/static/chunks/027-6dwgpb0cy.js +0 -1
  477. package/cloud-runtime/standalone/apps/local/.next/static/chunks/031720jijg_th.js +0 -1
  478. package/cloud-runtime/standalone/apps/local/.next/static/chunks/03m1xs0rztynh.js +0 -16
  479. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07o~9mm~xds_b.js +0 -1
  480. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08zgoptetnxjj.css +0 -1
  481. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09_yj-9nfh48m.js +0 -1
  482. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09c7ssmgohk7l.js +0 -1
  483. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0awbe2r3qazge.css +0 -1
  484. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0dro-bz6f72z0.js +0 -1
  485. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gbunx8z.~i4x.js +0 -5
  486. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ge81r~ap.u7n.js +0 -28
  487. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ghg5160qeazw.js +0 -5
  488. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gl_8hdxl5qnd.js +0 -37
  489. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0g~v8p6_pc46-.js +0 -1
  490. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jb4f8425s.-2.js +0 -1
  491. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kukkarp4un0o.js +0 -1
  492. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0m.2b-cekea8b.js +0 -1
  493. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pt8_y9asrg~7.js +0 -1
  494. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0wyg4lymaq0hg.js +0 -3
  495. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xl~1ux2f~rcu.js +0 -1
  496. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y7-eze-w7~b4.js +0 -5
  497. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y8e--tok1214.js +0 -5
  498. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0yy~0bgsz~o6-.js +0 -1
  499. package/cloud-runtime/standalone/apps/local/.next/static/chunks/100xrwo-45nrg.js +0 -20
  500. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14h3qxwuo~1q9.js +0 -20
  501. package/cloud-runtime/standalone/apps/local/.next/static/chunks/17oesq5eds3xi.js +0 -1
  502. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_buildManifest.js +0 -0
  503. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_clientMiddlewareManifest.js +0 -0
  504. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_ssgManifest.js +0 -0
@@ -26,6 +26,7 @@ import {
26
26
  FALLBACK_STAGE_CONFIG,
27
27
  type StageConfig
28
28
  } from "@/hooks/useWorkflows";
29
+ import { useInputCapabilities } from "@/hooks/useInputCapabilities";
29
30
 
30
31
  // Re-export for backward compatibility
31
32
  export const STAGES = FALLBACK_STAGES;
@@ -60,6 +61,7 @@ export default function KanbanBoard({
60
61
  creatingStage,
61
62
  graphColumnFn,
62
63
  }: KanbanBoardProps) {
64
+ const { isTouchLayout } = useInputCapabilities();
63
65
  // Use props or fallbacks
64
66
  const stages = propStages || FALLBACK_STAGES;
65
67
  const stageConfigMap = propStageConfig || FALLBACK_STAGE_CONFIG;
@@ -387,6 +389,46 @@ export default function KanbanBoard({
387
389
  }
388
390
  }
389
391
 
392
+ const handleStageMove = useCallback(async (task: Task, targetStage: string) => {
393
+ const originalStage = getColumn(task);
394
+ if (!checkTransition(originalStage || "", targetStage)) {
395
+ return;
396
+ }
397
+
398
+ const targetTasks = localTasks.filter((entry) => entry.id !== task.id && getColumn(entry) === targetStage);
399
+ const nextPriority =
400
+ targetTasks.length > 0
401
+ ? Math.max(...targetTasks.map((entry) => entry.priority || 0)) + 1
402
+ : 0;
403
+
404
+ const nextTasks = localTasks.map((entry) =>
405
+ entry.id === task.id
406
+ ? {
407
+ ...entry,
408
+ stage: targetStage as Task["stage"],
409
+ priority: nextPriority,
410
+ }
411
+ : entry
412
+ );
413
+
414
+ setLocalTasks(nextTasks);
415
+ onTasksChange?.(nextTasks);
416
+
417
+ if (!onTaskUpdate) {
418
+ return;
419
+ }
420
+
421
+ try {
422
+ await onTaskUpdate(task.id, {
423
+ stage: targetStage as Task["stage"],
424
+ priority: nextPriority,
425
+ });
426
+ } catch (error) {
427
+ console.error("Failed to update task:", error);
428
+ setLocalTasks(tasks);
429
+ }
430
+ }, [checkTransition, localTasks, onTaskUpdate, onTasksChange, tasks]);
431
+
390
432
  return (
391
433
  <DndContext
392
434
  sensors={sensors}
@@ -443,10 +485,13 @@ export default function KanbanBoard({
443
485
  stage={stage}
444
486
  tasks={grouped[stage] || []}
445
487
  allTasks={localTasks}
488
+ stages={stages}
489
+ isTouchLayout={isTouchLayout}
446
490
  selectedTaskId={selectedTaskId}
447
491
  setSelectedTaskId={setSelectedTaskId}
448
492
  onSelectTask={onSelectTask}
449
493
  onTaskUpdate={onTaskUpdate}
494
+ onStageMove={handleStageMove}
450
495
  index={index}
451
496
  onAddTask={onAddTask}
452
497
  config={stageConfigMap[stage] || { icon: '📌', label: stage, color: 'var(--primary)' }}
@@ -471,10 +516,13 @@ interface StageColumnProps {
471
516
  stage: string;
472
517
  tasks: Task[];
473
518
  allTasks: Task[];
519
+ stages: readonly string[];
520
+ isTouchLayout: boolean;
474
521
  selectedTaskId: string | null;
475
522
  setSelectedTaskId: (id: string | null) => void;
476
523
  onSelectTask?: (task: Task) => void;
477
524
  onTaskUpdate?: (taskId: string, updates: Partial<Task>) => Promise<void>;
525
+ onStageMove?: (task: Task, targetStage: string) => void | Promise<void>;
478
526
  index: number;
479
527
  onAddTask?: (title: string, stage: string) => void;
480
528
  config: StageConfig;
@@ -485,10 +533,13 @@ function StageColumn({
485
533
  stage,
486
534
  tasks,
487
535
  allTasks,
536
+ stages,
537
+ isTouchLayout,
488
538
  selectedTaskId,
489
539
  setSelectedTaskId,
490
540
  onSelectTask,
491
541
  onTaskUpdate,
542
+ onStageMove,
492
543
  index,
493
544
  onAddTask,
494
545
  config,
@@ -527,10 +578,13 @@ function StageColumn({
527
578
  stage={stage}
528
579
  tasks={tasks}
529
580
  allTasks={allTasks}
581
+ stages={stages}
582
+ isTouchLayout={isTouchLayout}
530
583
  selectedTaskId={selectedTaskId}
531
584
  setSelectedTaskId={setSelectedTaskId}
532
585
  onSelectTask={onSelectTask}
533
586
  onTaskUpdate={onTaskUpdate}
587
+ onStageMove={onStageMove}
534
588
  config={config}
535
589
  onAddTask={onAddTask}
536
590
  isCreating={isCreating}
@@ -543,16 +597,33 @@ interface FlatColumnContentProps {
543
597
  stage: string;
544
598
  tasks: Task[];
545
599
  allTasks: Task[];
600
+ stages: readonly string[];
601
+ isTouchLayout: boolean;
546
602
  selectedTaskId: string | null;
547
603
  setSelectedTaskId: (id: string | null) => void;
548
604
  onSelectTask?: (task: Task) => void;
549
605
  onTaskUpdate?: (taskId: string, updates: Partial<Task>) => Promise<void>;
606
+ onStageMove?: (task: Task, targetStage: string) => void | Promise<void>;
550
607
  config: StageConfig;
551
608
  onAddTask?: (title: string, stage: string) => void;
552
609
  isCreating?: boolean;
553
610
  }
554
611
 
555
- function FlatColumnContent({ stage, tasks, allTasks, selectedTaskId, setSelectedTaskId, onSelectTask, onTaskUpdate, config, onAddTask, isCreating }: FlatColumnContentProps) {
612
+ function FlatColumnContent({
613
+ stage,
614
+ tasks,
615
+ allTasks,
616
+ stages,
617
+ isTouchLayout,
618
+ selectedTaskId,
619
+ setSelectedTaskId,
620
+ onSelectTask,
621
+ onTaskUpdate,
622
+ onStageMove,
623
+ config,
624
+ onAddTask,
625
+ isCreating,
626
+ }: FlatColumnContentProps) {
556
627
  const allIds = useMemo(() => tasks.map(t => t.id), [tasks]);
557
628
  const [isAdding, setIsAdding] = useState(false);
558
629
  const [newTitle, setNewTitle] = useState('');
@@ -655,6 +726,18 @@ function FlatColumnContent({ stage, tasks, allTasks, selectedTaskId, setSelected
655
726
  onClick={() => onSelectTask?.(task)}
656
727
  onStatusChange={onTaskUpdate ? (s) => onTaskUpdate(task.id, { status: s }) : undefined}
657
728
  onApprovalModeChange={onTaskUpdate ? (m) => onTaskUpdate(task.id, { approval_mode: m }) : undefined}
729
+ onStageChange={
730
+ isTouchLayout && onStageMove
731
+ ? (nextStage) => {
732
+ if (nextStage) {
733
+ void onStageMove(task, nextStage);
734
+ }
735
+ }
736
+ : undefined
737
+ }
738
+ stageOptions={isTouchLayout ? stages : undefined}
739
+ currentStage={stage}
740
+ dragDisabled={isTouchLayout}
658
741
  allTasks={allTasks}
659
742
  relationship={rel}
660
743
  />
@@ -677,5 +760,3 @@ function FlatColumnContent({ stage, tasks, allTasks, selectedTaskId, setSelected
677
760
  </SortableContext>
678
761
  );
679
762
  }
680
-
681
-
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import dynamic from "next/dynamic";
5
- import { ArrowDown, ArrowUp, Check, ChevronDown, Clock, ExternalLink, FileText, Link2, Play, Plus, RefreshCw, Search, Settings, User } from "lucide-react";
5
+ import { ArrowDown, ArrowUp, Check, ChevronDown, Clock, ExternalLink, FileText, Link2, Play, Plus, RefreshCw, Search, Settings, User, X } from "lucide-react";
6
6
  import { useUrlSelection } from "@/hooks/useUrlSelection";
7
7
  import { useLinearIssues, type LinearIssue } from "@/hooks/useLinearIssues";
8
8
  import { useLinearConnection } from "@/hooks/useLinearConnection";
@@ -13,6 +13,7 @@ import { useProcessPolling } from "@/hooks/useProcessPolling";
13
13
  import { Markdown } from "@/components/chat-ui/Markdown";
14
14
  import RunScriptManager from "@/components/linear/RunScriptManager";
15
15
  import { stripMarkers } from "@/lib/chat-utils";
16
+ import { useInputCapabilities } from "@/hooks/useInputCapabilities";
16
17
  import {
17
18
  loadLinearBoardFilters,
18
19
  persistLinearBoardFilters,
@@ -36,6 +37,10 @@ const Composer = dynamic(
36
37
  { ssr: false }
37
38
  );
38
39
 
40
+ function createThreadId() {
41
+ return globalThis.crypto?.randomUUID?.() ?? `thread-${Date.now()}-${Math.random().toString(36).slice(2)}`;
42
+ }
43
+
39
44
  function ResizeHandle({
40
45
  onResize,
41
46
  }: {
@@ -316,14 +321,14 @@ function FilterPopdown({
316
321
  return;
317
322
  }
318
323
 
319
- const handlePointerDown = (event: MouseEvent) => {
324
+ const handlePointerDown = (event: PointerEvent) => {
320
325
  if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) {
321
326
  setOpen(false);
322
327
  }
323
328
  };
324
329
 
325
- document.addEventListener("mousedown", handlePointerDown);
326
- return () => document.removeEventListener("mousedown", handlePointerDown);
330
+ document.addEventListener("pointerdown", handlePointerDown);
331
+ return () => document.removeEventListener("pointerdown", handlePointerDown);
327
332
  }, [open]);
328
333
 
329
334
  useEffect(() => {
@@ -420,14 +425,14 @@ function MultiFilterPopdown({
420
425
  return;
421
426
  }
422
427
 
423
- const handlePointerDown = (event: MouseEvent) => {
428
+ const handlePointerDown = (event: PointerEvent) => {
424
429
  if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) {
425
430
  setOpen(false);
426
431
  }
427
432
  };
428
433
 
429
- document.addEventListener("mousedown", handlePointerDown);
430
- return () => document.removeEventListener("mousedown", handlePointerDown);
434
+ document.addEventListener("pointerdown", handlePointerDown);
435
+ return () => document.removeEventListener("pointerdown", handlePointerDown);
431
436
  }, [open]);
432
437
 
433
438
  const toggleValue = useCallback(
@@ -591,7 +596,10 @@ function TicketChatStarter({
591
596
  const defaultAgent = participants[0];
592
597
  const sessionScriptButtonLabel =
593
598
  activeSessionScriptLabel === "AGX default" ? "Session script" : activeSessionScriptLabel;
594
- const threadIdRef = useRef(crypto.randomUUID());
599
+ const threadIdRef = useRef<string | null>(null);
600
+ if (!threadIdRef.current) {
601
+ threadIdRef.current = createThreadId();
602
+ }
595
603
  const { messages, setMessages, sendMessage, chatRuns } = useGroupChat(threadIdRef.current);
596
604
  const { processes, streaming } = useProcessPolling(
597
605
  { workspaceId: threadIdRef.current },
@@ -1201,6 +1209,7 @@ interface LinearBoardProps {
1201
1209
  }
1202
1210
 
1203
1211
  export default function LinearBoard({ projectId, projectSlug, initialShowSettings }: LinearBoardProps) {
1212
+ const { isTouchLayout } = useInputCapabilities();
1204
1213
  const {
1205
1214
  connected,
1206
1215
  loading: connectionLoading,
@@ -1238,6 +1247,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1238
1247
  const [issueActiveAgents, setIssueActiveAgents] = useState<Map<string, Array<{ agentId: string; agentName: string }>>>(new Map());
1239
1248
  const [pickerIssue, setPickerIssue] = useState<LinearIssue | null>(null);
1240
1249
  const [pickerAnchor, setPickerAnchor] = useState<{ top: number; left: number } | null>(null);
1250
+ const [touchPanelTab, setTouchPanelTab] = useState<"runs" | "ticket">("runs");
1241
1251
  const searchDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
1242
1252
  const skipNextFilterPersistRef = useRef(true);
1243
1253
  const runScriptsButtonRef = useRef<HTMLButtonElement | null>(null);
@@ -1303,7 +1313,8 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1303
1313
  if (projectSlug) {
1304
1314
  params.set("projectSlug", projectSlug);
1305
1315
  }
1306
- const url = params.size > 0 ? `/api/linear/options?${params.toString()}` : "/api/linear/options";
1316
+ const query = params.toString();
1317
+ const url = query ? `/api/linear/options?${query}` : "/api/linear/options";
1307
1318
  fetch(url)
1308
1319
  .then((res) => res.json())
1309
1320
  .then((data) => {
@@ -1574,6 +1585,24 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1574
1585
  }
1575
1586
  }, [replaceSelection, runs, runsLoading, selectedIssue, selectedRunId]);
1576
1587
 
1588
+ useEffect(() => {
1589
+ if (!isTouchLayout) {
1590
+ return;
1591
+ }
1592
+
1593
+ if (!selectedIssue) {
1594
+ setTouchPanelTab("runs");
1595
+ return;
1596
+ }
1597
+
1598
+ if (selectedRunId === NEW_SESSION_PANEL_ID || selectedRun || runs.length === 0) {
1599
+ setTouchPanelTab("ticket");
1600
+ return;
1601
+ }
1602
+
1603
+ setTouchPanelTab("runs");
1604
+ }, [isTouchLayout, runs.length, selectedIssue, selectedRun, selectedRunId]);
1605
+
1577
1606
  useEffect(() => {
1578
1607
  let cancelled = false;
1579
1608
 
@@ -1661,7 +1690,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1661
1690
  return;
1662
1691
  }
1663
1692
 
1664
- const handlePointerDown = (event: MouseEvent) => {
1693
+ const handlePointerDown = (event: PointerEvent) => {
1665
1694
  const target = event.target as Node;
1666
1695
  if (runScriptsPanelRef.current?.contains(target)) {
1667
1696
  return;
@@ -1678,10 +1707,10 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1678
1707
  }
1679
1708
  };
1680
1709
 
1681
- document.addEventListener("mousedown", handlePointerDown);
1710
+ document.addEventListener("pointerdown", handlePointerDown);
1682
1711
  document.addEventListener("keydown", handleKeyDown);
1683
1712
  return () => {
1684
- document.removeEventListener("mousedown", handlePointerDown);
1713
+ document.removeEventListener("pointerdown", handlePointerDown);
1685
1714
  document.removeEventListener("keydown", handleKeyDown);
1686
1715
  };
1687
1716
  }, [showRunScripts]);
@@ -1797,7 +1826,327 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
1797
1826
 
1798
1827
  return (
1799
1828
  <div className="relative flex h-full overflow-hidden">
1800
- <div className="flex shrink-0 flex-col border-r border-[var(--card-border)]" style={{ width: ticketPanelWidth }}>
1829
+ {isTouchLayout ? (
1830
+ <>
1831
+ <div className="flex min-h-0 flex-1 flex-col">
1832
+ <div className="shrink-0 border-b border-[var(--card-border)]">
1833
+ <div className="flex h-12 items-center gap-2 px-3">
1834
+ <div className="flex flex-1 items-center gap-2 rounded-md border border-[var(--card-border)] bg-[var(--background)] px-2.5 py-1.5 transition-all focus-within:border-[var(--muted-foreground)] focus-within:ring-1 focus-within:ring-[var(--muted-foreground)]">
1835
+ <Search size={14} className="shrink-0 text-[var(--muted-foreground)]" />
1836
+ <input
1837
+ type="text"
1838
+ className="flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]"
1839
+ placeholder="Search tickets..."
1840
+ value={search}
1841
+ onChange={(event) => handleSearchChange(event.target.value)}
1842
+ />
1843
+ </div>
1844
+ <button
1845
+ type="button"
1846
+ 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"
1847
+ onClick={() => void refreshIssues()}
1848
+ title="Refresh tickets"
1849
+ aria-label="Refresh tickets"
1850
+ disabled={issuesLoading}
1851
+ >
1852
+ <RefreshCw size={16} className={issuesLoading ? "animate-spin" : undefined} />
1853
+ </button>
1854
+ <button
1855
+ type="button"
1856
+ className="shrink-0 rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"
1857
+ onClick={() => {
1858
+ setShowRunScripts(false);
1859
+ setShowSettings(true);
1860
+ }}
1861
+ title="Linear settings"
1862
+ >
1863
+ <Settings size={16} />
1864
+ </button>
1865
+ </div>
1866
+ <div className="flex flex-wrap items-center gap-1.5 px-3 pb-2">
1867
+ {showStatusFilter ? (
1868
+ <MultiFilterPopdown
1869
+ label="Status"
1870
+ values={selectedStatuses}
1871
+ options={statusOptions}
1872
+ activeClasses="border-amber-500/30 bg-amber-500/10 text-amber-300"
1873
+ onChange={setSelectedStatuses}
1874
+ emptyLabel="All statuses"
1875
+ />
1876
+ ) : null}
1877
+ <MultiFilterPopdown
1878
+ label="Assignee"
1879
+ values={selectedAssigneeIds}
1880
+ options={assigneeOptions}
1881
+ activeClasses="border-blue-500/30 bg-blue-500/10 text-blue-400"
1882
+ onChange={setSelectedAssigneeIds}
1883
+ emptyLabel="All assignees"
1884
+ />
1885
+ {showWorkspaceFilter ? (
1886
+ <FilterSelect
1887
+ label="Workspace"
1888
+ value={selectedWorkspaceId}
1889
+ options={workspaceOptions}
1890
+ activeClasses="border-emerald-500/30 bg-emerald-500/10 text-emerald-400"
1891
+ onChange={setSelectedWorkspaceId}
1892
+ />
1893
+ ) : null}
1894
+ {showCycleFilter ? (
1895
+ <FilterSelect
1896
+ label="Cycle"
1897
+ value={selectedCycleId}
1898
+ options={cycleOptions}
1899
+ activeClasses="border-purple-500/30 bg-purple-500/10 text-purple-400"
1900
+ onChange={setSelectedCycleId}
1901
+ />
1902
+ ) : null}
1903
+ <FilterSelect
1904
+ label="Sort"
1905
+ value={sortBy}
1906
+ options={[
1907
+ { value: "activity", label: "Activity" },
1908
+ { value: "identifier", label: "Ticket ID" },
1909
+ { value: "status", label: "Status" },
1910
+ { value: "created", label: "Created" },
1911
+ ]}
1912
+ activeClasses="border-sky-500/30 bg-sky-500/10 text-sky-400"
1913
+ onChange={(value) => setSortBy(value as typeof sortBy)}
1914
+ />
1915
+ <button
1916
+ type="button"
1917
+ className="rounded-full border border-[var(--card-border)] p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"
1918
+ title={sortDir === "desc" ? "Descending" : "Ascending"}
1919
+ onClick={() => setSortDir((d) => (d === "desc" ? "asc" : "desc"))}
1920
+ >
1921
+ {sortDir === "desc" ? <ArrowDown size={12} /> : <ArrowUp size={12} />}
1922
+ </button>
1923
+ <button
1924
+ type="button"
1925
+ className={`flex items-center gap-1 rounded-full border px-2.5 py-1 text-[11px] font-medium transition-colors ${
1926
+ hasActivity
1927
+ ? "border-orange-500/30 bg-orange-500/10 text-orange-400"
1928
+ : "border-[var(--card-border)] text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]"
1929
+ }`}
1930
+ onClick={() => setHasActivity((v) => !v)}
1931
+ >
1932
+ My activity
1933
+ </button>
1934
+ </div>
1935
+ </div>
1936
+
1937
+ <div className="flex-1 overflow-y-auto">
1938
+ {issuesLoading && issues.length === 0 ? (
1939
+ <div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
1940
+ Loading tickets...
1941
+ </div>
1942
+ ) : issues.length === 0 ? (
1943
+ <div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
1944
+ No tickets found.
1945
+ </div>
1946
+ ) : (
1947
+ <>
1948
+ {issues.map((issue) => (
1949
+ <TicketRow
1950
+ key={issue.id}
1951
+ issue={issue}
1952
+ selected={selectedIssue?.id === issue.id}
1953
+ activeAgents={issueActiveAgents.get(issue.id)}
1954
+ participants={participants}
1955
+ onSelect={() => {
1956
+ setTouchPanelTab("runs");
1957
+ pushSelection({
1958
+ issue: issue.id,
1959
+ run: null,
1960
+ });
1961
+ }}
1962
+ />
1963
+ ))}
1964
+ {hasMore ? (
1965
+ <div
1966
+ ref={sentinelRef}
1967
+ className="py-2 text-center text-xs text-[var(--muted-foreground)]"
1968
+ >
1969
+ {issuesLoading ? "Loading..." : "Load more"}
1970
+ </div>
1971
+ ) : null}
1972
+ </>
1973
+ )}
1974
+ </div>
1975
+ </div>
1976
+
1977
+ {selectedIssue ? (
1978
+ <div className="absolute inset-0 z-20 flex flex-col bg-[var(--background)]">
1979
+ <div className="flex items-center justify-between gap-3 border-b border-[var(--card-border)] px-4 py-3">
1980
+ <div className="min-w-0">
1981
+ <div className="text-[10px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]">
1982
+ {selectedIssue.identifier}
1983
+ </div>
1984
+ <div className="truncate text-sm font-semibold text-[var(--foreground)]">
1985
+ {selectedIssue.title}
1986
+ </div>
1987
+ </div>
1988
+ <button
1989
+ type="button"
1990
+ className="rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"
1991
+ onClick={() => replaceSelection({ issue: null, run: null })}
1992
+ aria-label="Close ticket panel"
1993
+ >
1994
+ <X size={16} />
1995
+ </button>
1996
+ </div>
1997
+
1998
+ <div className="flex items-center gap-2 border-b border-[var(--card-border)] px-3 py-2">
1999
+ <button
2000
+ type="button"
2001
+ className={`rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${
2002
+ touchPanelTab === "runs"
2003
+ ? "bg-[var(--card-bg)] text-[var(--foreground)]"
2004
+ : "text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"
2005
+ }`}
2006
+ onClick={() => setTouchPanelTab("runs")}
2007
+ >
2008
+ Runs
2009
+ </button>
2010
+ <button
2011
+ type="button"
2012
+ className={`rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${
2013
+ touchPanelTab === "ticket"
2014
+ ? "bg-[var(--card-bg)] text-[var(--foreground)]"
2015
+ : "text-[var(--muted-foreground)] hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]"
2016
+ }`}
2017
+ onClick={() => setTouchPanelTab("ticket")}
2018
+ >
2019
+ Ticket
2020
+ </button>
2021
+ </div>
2022
+
2023
+ <div className="min-h-0 flex-1 overflow-hidden">
2024
+ {touchPanelTab === "runs" ? (
2025
+ <div className="flex h-full flex-col overflow-hidden">
2026
+ <div className="relative flex items-center justify-between border-b border-[var(--card-border)] px-3 py-2">
2027
+ <h3 className="text-xs font-semibold text-[var(--foreground)]">Sessions</h3>
2028
+ <button
2029
+ ref={runScriptsButtonRef}
2030
+ type="button"
2031
+ className="inline-flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-40"
2032
+ onClick={() => {
2033
+ setShowRunScripts(false);
2034
+ setTouchPanelTab("ticket");
2035
+ pushSelection({ run: NEW_SESSION_PANEL_ID });
2036
+ }}
2037
+ title="Open a fresh chat for this ticket. You can choose or edit the session script in the ticket tab."
2038
+ aria-label="New session"
2039
+ disabled={!selectedIssue}
2040
+ >
2041
+ <Plus size={12} />
2042
+ New session
2043
+ </button>
2044
+ </div>
2045
+
2046
+ <div className="flex-1 overflow-y-auto">
2047
+ {runsLoading && runs.length === 0 ? (
2048
+ <div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
2049
+ Loading sessions...
2050
+ </div>
2051
+ ) : runs.length === 0 ? (
2052
+ <div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
2053
+ No previous sessions yet.
2054
+ </div>
2055
+ ) : (
2056
+ runs.map((run) => {
2057
+ const runDisplay = getRunDisplayState(run);
2058
+
2059
+ return (
2060
+ <button
2061
+ key={run.id}
2062
+ type="button"
2063
+ className={`w-full px-3 py-2 text-left text-xs transition-colors ${
2064
+ selectedRun?.id === run.id
2065
+ ? "bg-[var(--card-bg)]"
2066
+ : "hover:bg-[var(--card-bg)]"
2067
+ }`}
2068
+ onClick={() => {
2069
+ setTouchPanelTab("ticket");
2070
+ pushSelection({ run: run.id });
2071
+ }}
2072
+ >
2073
+ <div className="flex items-center justify-between gap-1">
2074
+ <span className="min-w-0 flex-1 truncate text-[11px] font-medium text-[var(--foreground)]">
2075
+ {getRunTitle(run)}
2076
+ </span>
2077
+ <span className="text-[10px] text-[var(--muted-foreground)]">
2078
+ {formatRunTime(run.startedAt)}
2079
+ </span>
2080
+ </div>
2081
+ <div className="mt-0.5 flex items-center gap-1.5 text-[10px]">
2082
+ <span className={`font-medium ${STATUS_TEXT_COLORS[runDisplay.tone]}`}>
2083
+ {runDisplay.label}
2084
+ </span>
2085
+ <span className="truncate text-[var(--muted-foreground)]">
2086
+ {run.agentName}
2087
+ </span>
2088
+ </div>
2089
+ {run.durationMs != null ? (
2090
+ <div className="text-[10px] text-[var(--muted-foreground)]">
2091
+ {(run.durationMs / 1000).toFixed(1)}s
2092
+ </div>
2093
+ ) : null}
2094
+ </button>
2095
+ );
2096
+ })
2097
+ )}
2098
+ </div>
2099
+ </div>
2100
+ ) : selectedRun ? (
2101
+ <ThreadMessageList
2102
+ issue={selectedIssue ?? {
2103
+ id: selectedRun.issueId,
2104
+ identifier: selectedRun.issueIdentifier,
2105
+ title: selectedRun.issueTitle,
2106
+ url: null,
2107
+ status: selectedRun.issueStatus,
2108
+ assignee: selectedRun.issueAssignee,
2109
+ updatedAt: selectedRun.updatedAt,
2110
+ }}
2111
+ run={selectedRun}
2112
+ participants={participants}
2113
+ issueStatusOptions={issueStatusOptions}
2114
+ issueStatusUpdating={updatingIssueId === selectedRun.issueId}
2115
+ onIssueStatusChange={handleIssueStatusChange}
2116
+ />
2117
+ ) : participants.length === 0 ? (
2118
+ <div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
2119
+ Add at least one agent to this project to start a session.
2120
+ </div>
2121
+ ) : selectedRunId === NEW_SESSION_PANEL_ID || runs.length === 0 ? (
2122
+ <TicketChatStarter
2123
+ key={selectedIssue.id}
2124
+ issue={selectedIssue}
2125
+ participants={participants}
2126
+ projectId={projectId}
2127
+ projectSlug={projectSlug}
2128
+ issueStatusOptions={issueStatusOptions}
2129
+ issueStatusUpdating={updatingIssueId === selectedIssue.id}
2130
+ onIssueStatusChange={handleIssueStatusChange}
2131
+ activeSessionScriptLabel={activeSessionScriptLabel}
2132
+ onOpenSessionScripts={() => setShowRunScripts(true)}
2133
+ onStartScriptedSession={(event) => handleStartScriptedSession(selectedIssue, event)}
2134
+ createRun={createRun}
2135
+ updateRun={updateRun}
2136
+ onRunCreated={(runId) => pushSelection({ run: runId })}
2137
+ />
2138
+ ) : (
2139
+ <div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
2140
+ {runsLoading ? "Loading sessions..." : "Select a session to continue."}
2141
+ </div>
2142
+ )}
2143
+ </div>
2144
+ </div>
2145
+ ) : null}
2146
+ </>
2147
+ ) : (
2148
+ <>
2149
+ <div className="flex shrink-0 flex-col border-r border-[var(--card-border)]" style={{ width: ticketPanelWidth }}>
1801
2150
  <div className="shrink-0 border-b border-[var(--card-border)]">
1802
2151
  <div className="flex h-12 items-center gap-2 px-3">
1803
2152
  <div className="flex flex-1 items-center gap-2 rounded-md border border-[var(--card-border)] bg-[var(--background)] px-2.5 py-1.5 transition-all focus-within:border-[var(--muted-foreground)] focus-within:ring-1 focus-within:ring-[var(--muted-foreground)]">
@@ -2091,6 +2440,8 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
2091
2440
  </div>
2092
2441
  )}
2093
2442
  </div>
2443
+ </>
2444
+ )}
2094
2445
 
2095
2446
  {/* Settings overlay */}
2096
2447
  {showSettings && (
@@ -2120,6 +2471,24 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
2120
2471
  </div>
2121
2472
  )}
2122
2473
 
2474
+ {showRunScripts && isTouchLayout ? (
2475
+ <div className="absolute inset-0 z-30 flex items-center justify-center bg-black/50 p-4">
2476
+ <div
2477
+ ref={runScriptsPanelRef}
2478
+ className="max-h-[85vh] w-full max-w-3xl overflow-y-auto rounded-2xl border border-[var(--card-border)] bg-[var(--background)] p-4 shadow-2xl"
2479
+ >
2480
+ <RunScriptManager
2481
+ projectSlug={projectSlug}
2482
+ scripts={runScripts}
2483
+ activeScriptId={activeScriptId}
2484
+ onSetActiveScriptId={setActiveScriptId}
2485
+ onSaveScript={saveScript}
2486
+ onDeleteScript={deleteScript}
2487
+ />
2488
+ </div>
2489
+ </div>
2490
+ ) : null}
2491
+
2123
2492
  {/* Agent picker popover */}
2124
2493
  {pickerIssue && pickerAnchor && (
2125
2494
  <>