@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
@@ -4,7 +4,7 @@ import { homedir } from 'os';
4
4
 
5
5
  import { getPromptJobStore } from './get-store';
6
6
  import { pollDueJobs } from './engine';
7
- import { getAgent, getAgentSkills, getProjectAgents } from '@/lib/db';
7
+ import { getAgent, getAgentSkills, getProjectAgents, getTeamAgents } from '@/lib/db';
8
8
  import { LOCAL_USER } from '@/lib/auth-mode';
9
9
  import { loadDbParticipants } from '@/lib/agent-participants';
10
10
  import { runCliResponse, buildCliAttempts } from '@/lib/cli-runner';
@@ -40,12 +40,17 @@ let pumpScheduled = false;
40
40
  let pumpRunning = false;
41
41
 
42
42
  const AGENTS_DIR = join(homedir(), '.agx', 'agents');
43
- const OBJECTIVE_LINEAR_CONTROLLER_SYSTEM_CONTEXT = [
44
- 'You are deciding whether a scheduled objective worker should start exactly one Linear work session.',
43
+ const OBJECTIVE_CONTROLLER_SYSTEM_CONTEXT = [
44
+ 'You are deciding what action an objective worker should take next.',
45
45
  'Return ONLY raw JSON with no markdown fences or commentary.',
46
46
  'Valid responses:',
47
- '{"decision":"stop","reason":"short reason","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}',
48
- '{"decision":"work","ticketId":"ticket-id-from-list","reason":"short reason","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}',
47
+ '{"action":"work_ticket","ticketId":"ticket-id-from-list","reason":"short reason","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}',
48
+ '{"action":"run_prompt","prompt":"detailed instructions for the agent to execute","reason":"short reason","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}',
49
+ '{"action":"stop","reason":"short reason","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}',
50
+ 'Rules:',
51
+ '- "work_ticket": Use when a specific eligible Linear ticket should be worked now. ticketId must exactly match one of the listed ids in ELIGIBLE TICKETS.',
52
+ '- "run_prompt": Use when the objective needs work not captured by an existing ticket — creating new tickets, drafting docs, reviewing PRs, research, or other non-ticket work. Provide a detailed prompt.',
53
+ '- "stop": Use when no action should be taken right now.',
49
54
  'Percentages must be integers from 0 to 100.',
50
55
  'Statuses must be one of: on_track, at_risk, off_track, done.',
51
56
  ].join('\n');
@@ -294,9 +299,11 @@ function buildObjectiveLinearControllerPrompt(input: {
294
299
 
295
300
  sections.push(
296
301
  '',
297
- 'Choose "work" only when one listed ticket is clearly the right next ticket to start now.',
298
- 'Choose "stop" when none of the listed tickets should be worked right now.',
299
- 'If you choose "work", ticketId must exactly match one of the listed ids.',
302
+ 'Choose "work_ticket" when one listed ticket is clearly the right next ticket to start now.',
303
+ 'Choose "run_prompt" when the objective needs work not captured by an existing ticket (e.g. creating tickets, drafting docs, reviewing PRs).',
304
+ 'Choose "stop" when no action should be taken right now.',
305
+ 'If you choose "work_ticket", ticketId must exactly match one of the listed ids.',
306
+ 'If you choose "run_prompt", provide a detailed prompt the executing agent will follow.',
300
307
  );
301
308
 
302
309
  return sections.join('\n');
@@ -316,7 +323,10 @@ function normalizeAssessmentStatus(value: unknown): ProjectObjectiveHealth | nul
316
323
  return normalizeProjectHealthStatus(value);
317
324
  }
318
325
 
319
- async function resolveObjectiveWorkerAgent(job: PromptJob): Promise<Participant> {
326
+ async function resolveObjectiveWorkerAgent(
327
+ job: PromptJob,
328
+ teamId?: string | null,
329
+ ): Promise<Participant> {
320
330
  const participants = await loadDbParticipants();
321
331
 
322
332
  if (job.agentId) {
@@ -327,6 +337,17 @@ async function resolveObjectiveWorkerAgent(job: PromptJob): Promise<Participant>
327
337
  return assigned;
328
338
  }
329
339
 
340
+ if (teamId) {
341
+ const teamAgents = await getTeamAgents(teamId);
342
+ for (const teamAgent of teamAgents) {
343
+ const participant = participants.find((entry) => entry.id === teamAgent.agent_id) ?? null;
344
+ if (participant) {
345
+ return participant;
346
+ }
347
+ }
348
+ throw new Error('No agent in the assigned team is available to work this objective.');
349
+ }
350
+
330
351
  if (!job.projectId) {
331
352
  throw new Error('Objective Linear worker requires a project context to resolve an agent.');
332
353
  }
@@ -358,6 +379,43 @@ async function appendObjectiveWorkerActivity(input: {
358
379
  });
359
380
  }
360
381
 
382
+ export async function logActionReceipt(
383
+ receipt: import('./types').ActionReceipt,
384
+ context: { jobId: string; projectId: string; objectiveId: string },
385
+ ): Promise<void> {
386
+ try {
387
+ const objectiveContext = await loadProjectObjectiveContext(
388
+ context.projectId,
389
+ context.objectiveId,
390
+ );
391
+ if (!objectiveContext) return;
392
+
393
+ const lines: string[] = [
394
+ `**${receipt.jobName}** — ${receipt.status}`,
395
+ '',
396
+ receipt.result,
397
+ ];
398
+ if (receipt.reason) {
399
+ lines.push('', `Reason: ${receipt.reason}`);
400
+ }
401
+ if (receipt.linearRunId) {
402
+ lines.push('', `Linear run: ${receipt.linearRunId}`);
403
+ }
404
+ if (receipt.chatRunId) {
405
+ lines.push('', `Chat run: ${receipt.chatRunId}`);
406
+ }
407
+
408
+ await appendObjectiveWorkerActivity({
409
+ jobId: context.jobId,
410
+ projectSlug: objectiveContext.project.slug,
411
+ objectiveKey: objectiveContext.objective.key,
412
+ body: lines.join('\n'),
413
+ });
414
+ } catch {
415
+ // Activity logging is best-effort
416
+ }
417
+ }
418
+
361
419
  async function executeObjectiveLinearWorker(opts: {
362
420
  job: PromptJob;
363
421
  controllerContext: {
@@ -405,6 +463,7 @@ async function executeObjectiveLinearWorker(opts: {
405
463
  activeObjectiveAgents.map((entry) => entry.issueId),
406
464
  );
407
465
 
466
+ // Phase 1: Controller decides what action to take
408
467
  const controllerPrompt = buildObjectiveLinearControllerPrompt({
409
468
  jobPrompt: opts.job.prompt,
410
469
  objective: {
@@ -427,7 +486,7 @@ async function executeObjectiveLinearWorker(opts: {
427
486
  const controllerResult = await executePrompt({
428
487
  ...opts.controllerContext,
429
488
  prompt: controllerPrompt,
430
- systemContext: OBJECTIVE_LINEAR_CONTROLLER_SYSTEM_CONTEXT,
489
+ systemContext: OBJECTIVE_CONTROLLER_SYSTEM_CONTEXT,
431
490
  cliArgs: opts.cliArgs,
432
491
  onSpawn: opts.onSpawn,
433
492
  });
@@ -435,12 +494,18 @@ async function executeObjectiveLinearWorker(opts: {
435
494
  if (controllerResult.status !== 'success') {
436
495
  return {
437
496
  ...controllerResult,
438
- output: controllerResult.output || 'Objective controller failed before selecting a ticket.',
497
+ output: controllerResult.output || 'Objective controller failed before selecting an action.',
439
498
  };
440
499
  }
441
500
 
442
501
  const parsed = extractFirstJsonObject(controllerResult.output);
443
- const decision = typeof parsed?.decision === 'string' ? parsed.decision.trim().toLowerCase() : '';
502
+ // Support both new "action" field and legacy "decision" field
503
+ const rawAction = typeof parsed?.action === 'string'
504
+ ? parsed.action.trim().toLowerCase()
505
+ : typeof parsed?.decision === 'string'
506
+ ? parsed.decision.trim().toLowerCase()
507
+ : '';
508
+ const action = rawAction === 'work' ? 'work_ticket' : rawAction;
444
509
  const reason = typeof parsed?.reason === 'string' ? parsed.reason.trim() : '';
445
510
  const objectiveProgress = normalizeAssessmentProgress(parsed?.objectiveProgress);
446
511
  const objectiveStatus = normalizeAssessmentStatus(parsed?.objectiveStatus);
@@ -450,6 +515,7 @@ async function executeObjectiveLinearWorker(opts: {
450
515
  const objectiveNote = typeof parsed?.objectiveNote === 'string' ? parsed.objectiveNote.trim() : '';
451
516
  const nowIso = new Date().toISOString();
452
517
 
518
+ // Health side-effects (applied regardless of action type)
453
519
  const objectiveHealthSummary =
454
520
  objectiveProgress !== null && objectiveStatus
455
521
  ? formatHealthSummary('Objective health', objectiveProgress, objectiveStatus)
@@ -503,60 +569,167 @@ async function executeObjectiveLinearWorker(opts: {
503
569
  });
504
570
  }
505
571
 
506
- if (decision === 'stop') {
507
- const hasNonTerminalIssues = issues.some((issue) => !isObjectiveLinearTerminalStatus(issue.status));
508
- const fallbackReason =
509
- issues.length === 0
510
- ? 'No objective-labeled Linear tickets were found.'
511
- : eligibleIssues.length === 0
512
- ? hasNonTerminalIssues
513
- ? 'All actionable objective tickets already have active sessions.'
514
- : 'All objective tickets are already in a terminal state.'
515
- : 'The controller decided that no ticket should be started right now.';
516
- const stopReason = reason || fallbackReason;
517
- await appendObjectiveWorkerActivity({
518
- jobId: opts.job.id,
519
- projectSlug: objectiveContext.project.slug,
520
- objectiveKey: objectiveContext.objective.key,
521
- body: [
522
- 'No actionable objective tickets.',
523
- `Reason: ${stopReason}`,
524
- objectiveHealthSummary,
525
- objectiveNote || null,
526
- projectHealthSummary,
527
- projectNote || null,
528
- ]
529
- .filter((line): line is string => Boolean(line))
530
- .join('\n\n'),
531
- });
572
+ // Phase 2: Dispatch the action
573
+ const receipt = await dispatchObjectiveAction({
574
+ action,
575
+ parsed,
576
+ reason,
577
+ job: opts.job,
578
+ controllerContext: opts.controllerContext,
579
+ sessionAgent: opts.sessionAgent,
580
+ objectiveContext,
581
+ eligibleIssues,
582
+ issues,
583
+ healthSummaries: {
584
+ objectiveHealthSummary,
585
+ projectHealthSummary,
586
+ objectiveNote,
587
+ projectNote,
588
+ },
589
+ cliArgs: opts.cliArgs,
590
+ onSpawn: opts.onSpawn,
591
+ startMs,
592
+ });
593
+
594
+ // Phase 3: Log receipt to activity timeline
595
+ await logActionReceipt(receipt, {
596
+ jobId: opts.job.id,
597
+ projectId: opts.job.projectId,
598
+ objectiveId: opts.job.objectiveId!,
599
+ });
600
+
601
+ return {
602
+ output: receipt.result,
603
+ error: receipt.status === 'failed' ? receipt.result : '',
604
+ durationMs: Date.now() - startMs,
605
+ status: receipt.status,
606
+ };
607
+ } catch (err) {
608
+ return {
609
+ output: '',
610
+ error: err instanceof Error ? err.message : String(err),
611
+ durationMs: Date.now() - startMs,
612
+ status: 'failed',
613
+ };
614
+ }
615
+ }
616
+
617
+ async function dispatchObjectiveAction(opts: {
618
+ action: string;
619
+ parsed: Record<string, unknown> | null;
620
+ reason: string;
621
+ job: PromptJob;
622
+ controllerContext: {
623
+ provider: ChatProvider;
624
+ model: string | null;
625
+ identity: string | undefined;
626
+ self: string | undefined;
627
+ skills: string | undefined;
628
+ };
629
+ sessionAgent: Participant;
630
+ objectiveContext: NonNullable<Awaited<ReturnType<typeof loadProjectObjectiveContext>>>;
631
+ eligibleIssues: LinearIssueSummary[];
632
+ issues: LinearIssueSummary[];
633
+ healthSummaries: {
634
+ objectiveHealthSummary: string | null;
635
+ projectHealthSummary: string | null;
636
+ objectiveNote: string;
637
+ projectNote: string;
638
+ };
639
+ cliArgs?: string;
640
+ onSpawn?: (pid: number) => void;
641
+ startMs: number;
642
+ }): Promise<import('./types').ActionReceipt> {
643
+ const { action, parsed, reason, healthSummaries } = opts;
644
+
645
+ if (action === 'stop') {
646
+ const hasNonTerminalIssues = opts.issues.some((issue) => !isObjectiveLinearTerminalStatus(issue.status));
647
+ const fallbackReason =
648
+ opts.issues.length === 0
649
+ ? 'No objective-labeled Linear tickets were found.'
650
+ : opts.eligibleIssues.length === 0
651
+ ? hasNonTerminalIssues
652
+ ? 'All actionable objective tickets already have active sessions.'
653
+ : 'All objective tickets are already in a terminal state.'
654
+ : 'The controller decided that no ticket should be started right now.';
655
+ const stopReason = reason || fallbackReason;
656
+
657
+ return {
658
+ action: 'stop',
659
+ jobName: opts.job.name,
660
+ reason: stopReason,
661
+ result: [
662
+ 'No action taken.',
663
+ `Reason: ${stopReason}`,
664
+ healthSummaries.objectiveHealthSummary,
665
+ healthSummaries.objectiveNote || null,
666
+ healthSummaries.projectHealthSummary,
667
+ healthSummaries.projectNote || null,
668
+ ]
669
+ .filter((line): line is string => Boolean(line))
670
+ .join('\n\n'),
671
+ durationMs: Date.now() - opts.startMs,
672
+ status: 'success',
673
+ };
674
+ }
675
+
676
+ if (action === 'run_prompt') {
677
+ const promptText = typeof parsed?.prompt === 'string' ? parsed.prompt.trim() : '';
678
+ if (!promptText) {
532
679
  return {
533
- output: [
534
- 'No actionable objective tickets.',
535
- `Reason: ${stopReason}`,
536
- objectiveHealthSummary,
537
- projectHealthSummary,
538
- ]
539
- .filter((line): line is string => Boolean(line))
540
- .join('\n'),
541
- error: '',
542
- durationMs: Date.now() - startMs,
543
- status: 'success',
680
+ action: 'run_prompt',
681
+ jobName: opts.job.name,
682
+ reason,
683
+ result: 'Controller returned run_prompt but provided no prompt text.',
684
+ durationMs: Date.now() - opts.startMs,
685
+ status: 'failed',
544
686
  };
545
687
  }
546
688
 
547
- if (decision !== 'work') {
548
- throw new Error(`Objective worker controller returned an invalid decision: ${controllerResult.output}`);
549
- }
689
+ const promptResult = await executePrompt({
690
+ ...opts.controllerContext,
691
+ prompt: promptText,
692
+ cliArgs: opts.cliArgs,
693
+ onSpawn: opts.onSpawn,
694
+ });
695
+
696
+ const summary = promptResult.status === 'success'
697
+ ? (promptResult.output || '').split('\n').filter(Boolean).slice(0, 10).join('\n') || 'Prompt completed.'
698
+ : `Prompt failed: ${promptResult.error || 'unknown error'}`;
699
+
700
+ return {
701
+ action: 'run_prompt',
702
+ jobName: opts.job.name,
703
+ reason,
704
+ result: [
705
+ summary,
706
+ healthSummaries.objectiveHealthSummary,
707
+ healthSummaries.projectHealthSummary,
708
+ ]
709
+ .filter((line): line is string => Boolean(line))
710
+ .join('\n\n'),
711
+ durationMs: Date.now() - opts.startMs,
712
+ status: promptResult.status,
713
+ };
714
+ }
550
715
 
716
+ if (action === 'work_ticket') {
551
717
  const ticketId = typeof parsed?.ticketId === 'string' ? parsed.ticketId.trim() : '';
552
- const selectedIssue = eligibleIssues.find((issue) => issue.id === ticketId) ?? null;
718
+ const selectedIssue = opts.eligibleIssues.find((issue) => issue.id === ticketId) ?? null;
553
719
  if (!selectedIssue) {
554
- throw new Error(`Objective worker controller selected an unknown ticket: ${ticketId || '(empty)'}`);
720
+ return {
721
+ action: 'work_ticket',
722
+ jobName: opts.job.name,
723
+ reason,
724
+ result: `Controller selected an unknown ticket: ${ticketId || '(empty)'}`,
725
+ durationMs: Date.now() - opts.startMs,
726
+ status: 'failed',
727
+ };
555
728
  }
556
729
 
557
730
  const launch = await startScriptedLinearSession({
558
- projectId: objectiveContext.project.id,
559
- projectSlug: objectiveContext.project.slug,
731
+ projectId: opts.objectiveContext.project.id,
732
+ projectSlug: opts.objectiveContext.project.slug,
560
733
  issue: {
561
734
  id: selectedIssue.id,
562
735
  identifier: selectedIssue.identifier,
@@ -570,46 +743,38 @@ async function executeObjectiveLinearWorker(opts: {
570
743
  const issueLink = selectedIssue.url
571
744
  ? `[${selectedIssue.identifier}](${selectedIssue.url})`
572
745
  : selectedIssue.identifier;
573
- await appendObjectiveWorkerActivity({
574
- jobId: opts.job.id,
575
- projectSlug: objectiveContext.project.slug,
576
- objectiveKey: objectiveContext.objective.key,
577
- body: [
578
- `Started work on ${issueLink}: ${selectedIssue.title}`,
579
- reason ? `Reason: ${reason}` : null,
580
- objectiveHealthSummary,
581
- objectiveNote || null,
582
- projectHealthSummary,
583
- projectNote || null,
584
- `Linear run: ${launch.run.id}`,
585
- ]
586
- .filter((line): line is string => Boolean(line))
587
- .join('\n\n'),
588
- });
589
746
 
590
747
  return {
591
- output: [
592
- `Started work on ${selectedIssue.identifier}: ${selectedIssue.title}`,
748
+ action: 'work_ticket',
749
+ jobName: opts.job.name,
750
+ reason,
751
+ result: [
752
+ `Started work on ${issueLink}: ${selectedIssue.title}`,
593
753
  reason ? `Reason: ${reason}` : null,
594
- objectiveHealthSummary,
595
- projectHealthSummary,
754
+ healthSummaries.objectiveHealthSummary,
755
+ healthSummaries.objectiveNote || null,
756
+ healthSummaries.projectHealthSummary,
757
+ healthSummaries.projectNote || null,
596
758
  `Linear run: ${launch.run.id}`,
597
- `Chat run: ${launch.chatRunId}`,
598
759
  ]
599
760
  .filter((line): line is string => Boolean(line))
600
- .join('\n'),
601
- error: '',
602
- durationMs: Date.now() - startMs,
761
+ .join('\n\n'),
762
+ linearRunId: launch.run.id,
763
+ chatRunId: launch.chatRunId,
764
+ durationMs: Date.now() - opts.startMs,
603
765
  status: 'success',
604
766
  };
605
- } catch (err) {
606
- return {
607
- output: '',
608
- error: err instanceof Error ? err.message : String(err),
609
- durationMs: Date.now() - startMs,
610
- status: 'failed',
611
- };
612
767
  }
768
+
769
+ // Unknown action
770
+ return {
771
+ action: action || 'unknown',
772
+ jobName: opts.job.name,
773
+ reason,
774
+ result: `Controller returned an invalid action: ${action || '(empty)'}`,
775
+ durationMs: Date.now() - opts.startMs,
776
+ status: 'failed',
777
+ };
613
778
  }
614
779
 
615
780
  async function executeJobAction(
@@ -626,7 +791,34 @@ async function executeJobAction(
626
791
  } = {},
627
792
  ): Promise<{ output: string; error: string; durationMs: number; status: 'success' | 'failed' }> {
628
793
  if (job.executionMode === 'objective_linear_ticket') {
629
- const sessionAgent = await resolveObjectiveWorkerAgent(job);
794
+ let teamId: string | null = null;
795
+
796
+ if (job.projectId && job.objectiveId) {
797
+ const objectiveContext = await loadProjectObjectiveContext(job.projectId, job.objectiveId);
798
+ teamId = objectiveContext?.objective.teamId ?? null;
799
+
800
+ if (!teamId) {
801
+ await logActionReceipt(
802
+ {
803
+ action: 'team_gate',
804
+ jobName: job.name,
805
+ status: 'failed',
806
+ result: 'Execution blocked: no team assigned to this objective.',
807
+ reason: 'Assign a team before scheduled work can run.',
808
+ durationMs: 0,
809
+ },
810
+ { jobId: job.id, projectId: job.projectId, objectiveId: job.objectiveId },
811
+ );
812
+ return {
813
+ output: '',
814
+ error: 'Execution blocked: no team assigned to this objective.',
815
+ durationMs: 0,
816
+ status: 'failed',
817
+ };
818
+ }
819
+ }
820
+
821
+ const sessionAgent = await resolveObjectiveWorkerAgent(job, teamId);
630
822
  const controllerContext = await resolveJobContextForAgent(job, sessionAgent.id);
631
823
  return executeObjectiveLinearWorker({
632
824
  job,
@@ -678,6 +870,19 @@ async function fireConditionGate(job: PromptJob, run: PromptRun) {
678
870
  finishedAt: new Date().toISOString(),
679
871
  });
680
872
  store.updateJob(job.id, { lastOutcome: 'success', lastRunAt: Date.now() });
873
+ if (job.objectiveId && job.projectId) {
874
+ await logActionReceipt(
875
+ {
876
+ action: 'gated_skip',
877
+ jobName: job.name,
878
+ reason: 'condition not met',
879
+ result: `Gate: ${answer}\n(condition not met — skipped action)`,
880
+ durationMs: gateResult.durationMs,
881
+ status: 'success',
882
+ },
883
+ { jobId: job.id, projectId: job.projectId, objectiveId: job.objectiveId },
884
+ );
885
+ }
681
886
  return;
682
887
  }
683
888
 
@@ -694,6 +899,22 @@ async function fireConditionGate(job: PromptJob, run: PromptRun) {
694
899
  finishedAt: new Date().toISOString(),
695
900
  });
696
901
  store.updateJob(job.id, { lastOutcome: actionResult.status, lastRunAt: Date.now() });
902
+
903
+ if (job.objectiveId && job.projectId) {
904
+ await logActionReceipt(
905
+ {
906
+ action: 'prompt',
907
+ jobName: job.name,
908
+ reason: 'condition gate passed',
909
+ result: actionResult.status === 'success'
910
+ ? (actionResult.output || '').split('\n').filter(Boolean).slice(0, 3).join('\n') || 'Task completed successfully.'
911
+ : `Task failed: ${actionResult.error || 'unknown error'}`,
912
+ durationMs: gateResult.durationMs + actionResult.durationMs,
913
+ status: actionResult.status,
914
+ },
915
+ { jobId: job.id, projectId: job.projectId, objectiveId: job.objectiveId },
916
+ );
917
+ }
697
918
  }
698
919
 
699
920
  async function fireRun(job: PromptJob, run: PromptRun) {
@@ -723,6 +944,22 @@ async function fireRun(job: PromptJob, run: PromptRun) {
723
944
  finishedAt: new Date().toISOString(),
724
945
  });
725
946
  store.updateJob(job.id, { lastOutcome: result.status, lastRunAt: Date.now() });
947
+
948
+ if (job.objectiveId && job.projectId) {
949
+ await logActionReceipt(
950
+ {
951
+ action: 'prompt',
952
+ jobName: job.name,
953
+ reason: '',
954
+ result: result.status === 'success'
955
+ ? (result.output || '').split('\n').filter(Boolean).slice(0, 3).join('\n') || 'Task completed successfully.'
956
+ : `Task failed: ${result.error || 'unknown error'}`,
957
+ durationMs: result.durationMs,
958
+ status: result.status,
959
+ },
960
+ { jobId: job.id, projectId: job.projectId, objectiveId: job.objectiveId },
961
+ );
962
+ }
726
963
  }
727
964
 
728
965
  function dispatchRun(job: PromptJob, run: PromptRun) {
@@ -5,6 +5,24 @@ export type RunStatus = 'queued' | 'running' | 'success' | 'failed' | 'cancelled
5
5
  export type TriggerType = 'scheduled' | 'condition';
6
6
  export type PromptJobExecutionMode = 'prompt' | 'objective_linear_ticket';
7
7
 
8
+ export type ObjectiveActionType = 'work_ticket' | 'run_prompt' | 'stop';
9
+
10
+ export type ObjectiveAction =
11
+ | { action: 'work_ticket'; ticketId: string; reason: string }
12
+ | { action: 'run_prompt'; prompt: string; reason: string }
13
+ | { action: 'stop'; reason: string };
14
+
15
+ export interface ActionReceipt {
16
+ action: string;
17
+ jobName: string;
18
+ reason: string;
19
+ result: string;
20
+ linearRunId?: string;
21
+ chatRunId?: string;
22
+ durationMs: number;
23
+ status: 'success' | 'failed';
24
+ }
25
+
8
26
  export const DEFAULT_PROMPT_JOB_EXECUTION_MODE: PromptJobExecutionMode = 'prompt';
9
27
  export const DEFAULT_OBJECTIVE_LINEAR_WORKER_NAME = 'Work objective Linear tickets';
10
28
  export const DEFAULT_OBJECTIVE_LINEAR_WORKER_PROMPT = [
@@ -35,6 +53,8 @@ export interface PromptJob {
35
53
  condition: string;
36
54
  nextRunAt: number | null;
37
55
  lastRunAt: number | null;
56
+ /** Computed: previous cron occurrence (not persisted) */
57
+ prevScheduledAt?: number | null;
38
58
  lastOutcome: RunStatus | null;
39
59
  createdAt: string;
40
60
  updatedAt: string;
@@ -21,6 +21,7 @@ export interface SidebarState {
21
21
  linearTicketPanelWidth: number;
22
22
  linearRunsPanelWidth: number;
23
23
  objectiveChatPanelWidth: number;
24
+ objectiveListPanelWidth: number;
24
25
  }
25
26
 
26
27
  export interface ScrollState {
@@ -42,6 +43,7 @@ const DEFAULT_SIDEBAR: SidebarState = {
42
43
  linearTicketPanelWidth: 576,
43
44
  linearRunsPanelWidth: 224,
44
45
  objectiveChatPanelWidth: 440,
46
+ objectiveListPanelWidth: 320,
45
47
  };
46
48
 
47
49
  const DEFAULT_SCROLL: ScrollState = {
@@ -203,6 +205,15 @@ export function persistObjectiveChatPanelWidth(width: number): void {
203
205
  persistSidebarState({ objectiveChatPanelWidth: width });
204
206
  }
205
207
 
208
+ // Objective list panel width
209
+ export function loadObjectiveListPanelWidth(): number {
210
+ return loadSidebarState().objectiveListPanelWidth;
211
+ }
212
+
213
+ export function persistObjectiveListPanelWidth(width: number): void {
214
+ persistSidebarState({ objectiveListPanelWidth: width });
215
+ }
216
+
206
217
  // Clear all window state (for logout/reset)
207
218
  export function clearWindowState(): void {
208
219
  if (!isStorageAvailable()) return;
@@ -17,6 +17,32 @@
17
17
  overflow: hidden;
18
18
  }
19
19
 
20
+ .workspace-sidebar__backdrop {
21
+ position: fixed;
22
+ inset: 0;
23
+ z-index: 54;
24
+ border: 0;
25
+ background: rgba(15, 23, 42, 0.48);
26
+ padding: 0;
27
+ margin: 0;
28
+ }
29
+
30
+ .workspace-sidebar--drawer {
31
+ position: fixed;
32
+ left: 0;
33
+ top: 0;
34
+ z-index: 55;
35
+ width: min(360px, 80vw);
36
+ min-width: min(360px, 80vw);
37
+ height: 100dvh;
38
+ box-shadow: 0 18px 48px rgba(15, 23, 42, 0.28);
39
+ }
40
+
41
+ .workspace-sidebar--drawer-phone {
42
+ width: min(100vw, 26rem);
43
+ min-width: min(100vw, 26rem);
44
+ }
45
+
20
46
  .workspace-sidebar--collapsed {
21
47
  width: 3.5rem;
22
48
  min-width: 3.5rem;
@@ -562,3 +588,42 @@
562
588
  background: var(--app-shell-subtle);
563
589
  color: var(--foreground);
564
590
  }
591
+
592
+ @media (hover: none), (pointer: coarse) {
593
+ .workspace-sidebar__nav-item,
594
+ .workspace-sidebar__section-link,
595
+ .workspace-sidebar__settings-button,
596
+ .workspace-sidebar__action,
597
+ .workspace-sidebar__workspace-action {
598
+ min-height: 2.75rem;
599
+ }
600
+
601
+ .workspace-sidebar__brand {
602
+ padding-top: calc(0.75rem + env(safe-area-inset-top));
603
+ }
604
+
605
+ .workspace-sidebar__content {
606
+ padding-bottom: calc(1rem + env(safe-area-inset-bottom));
607
+ }
608
+
609
+ .workspace-sidebar__workspace-nav-item {
610
+ padding-right: 5.5rem;
611
+ }
612
+
613
+ .workspace-sidebar__workspace-actions {
614
+ opacity: 1;
615
+ gap: 0.35rem;
616
+ right: 0.5rem;
617
+ }
618
+
619
+ .workspace-sidebar__workspace-action {
620
+ width: 2rem;
621
+ height: 2rem;
622
+ border-color: var(--app-shell-border);
623
+ }
624
+
625
+ .workspace-sidebar__action {
626
+ width: 2.25rem;
627
+ height: 2.25rem;
628
+ }
629
+ }