@mndrk/agx 2.4.5 → 2.4.7

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 (360) hide show
  1. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +4 -0
  3. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
  4. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +33 -0
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/app-paths-manifest.json +3 -0
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/build-manifest.json +11 -0
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/server-reference-manifest.json +4 -0
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js +13 -0
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js.map +5 -0
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js.nft.json +1 -0
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route_client-reference-manifest.js +2 -0
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/app-paths-manifest.json +3 -0
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/build-manifest.json +11 -0
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/server-reference-manifest.json +4 -0
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js +11 -0
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js.map +5 -0
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js.nft.json +1 -0
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route_client-reference-manifest.js +2 -0
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/app-paths-manifest.json +3 -0
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/build-manifest.json +11 -0
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/server-reference-manifest.json +4 -0
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js +11 -0
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js.map +5 -0
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js.nft.json +1 -0
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route_client-reference-manifest.js +2 -0
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js.nft.json +1 -1
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js.nft.json +1 -1
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +3 -3
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page_client-reference-manifest.js +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.html +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +2 -2
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_head.segment.rsc +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_index.segment.rsc +2 -2
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_tree.segment.rsc +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos/__PAGE__.segment.rsc +1 -1
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos.segment.rsc +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github.segment.rsc +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations.segment.rsc +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page_client-reference-manifest.js +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page_client-reference-manifest.js +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/app-paths-manifest.json +3 -0
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/build-manifest.json +18 -0
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/next-font-manifest.json +11 -0
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/react-loadable-manifest.json +1 -0
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/server-reference-manifest.json +4 -0
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js +16 -0
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.map +5 -0
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.nft.json +1 -0
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page_client-reference-manifest.js +2 -0
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.nft.json +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +2 -2
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  196. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +4 -0
  197. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_projects_[id]_workspace_export_route_actions_e161f108.js +3 -0
  198. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_projects_[id]_workspace_import_route_actions_10d2bce2.js +3 -0
  199. package/cloud-runtime/standalone/apps/local/.next/server/chunks/7255d_app_api_projects_[id]_objectives_[objectiveId]_program_route_actions_e6cdbc76.js +3 -0
  200. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1563ebff._.js +2 -2
  201. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__3fdd57cb._.js +1 -1
  202. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__45af4365._.js +1 -1
  203. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__683b7ad7._.js +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__736d5859._.js +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__96b5ea56._.js +3 -0
  206. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ba72d342._.js +5 -5
  207. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c3188470._.js +1 -1
  208. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__eb69343e._.js +3 -0
  209. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_1d99e7a5._.js +1 -1
  210. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_4d88e4dc._.js +91 -0
  211. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_4dec65a2._.js +1 -1
  212. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_50e3a6e3._.js +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_56a2544c._.js +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_5843a1a1._.js +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_a15e73a6._.js +1 -1
  216. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_bd72806a._.js +1 -1
  217. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c101ba9e._.js +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c530bd77._.js +11 -0
  219. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_d69937f2._.js +91 -0
  220. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e2867b32._.js +3 -0
  221. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e32b0cab._.js +91 -0
  222. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_5ab8f104._.js +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_77c23d6c._.js +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0da96_local__next-internal_server_app_projects_[slug]_thread_page_actions_3ceeb59b.js +3 -0
  225. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__1e0fd816._.js +3 -0
  226. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__42499ecf._.js +3 -0
  227. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5f31e40b._.js +3 -0
  228. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__636799fb._.js +3 -0
  229. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__4bf7d5b9._.js → [root-of-the-server]__74436f61._.js} +2 -2
  230. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__9434d6d7._.js +3 -0
  231. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bd339da0._.js +3 -0
  232. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__d08d7899._.js +3 -0
  233. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e02a457c._.js +3 -0
  234. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e3a1fef0._.js +3 -0
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__f802e7d1._.js +3 -0
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__ff96bb77._.js +3 -0
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_6a2ba8f0._.js +3 -0
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_7cb6b08a._.js +3 -0
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_a0f42923._.js +7 -0
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_a93c1059._.js +3 -0
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_components_PromptJobBoard_tsx_281b2873._.js → apps_local_04cb9fd5._.js} +3 -3
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_15502af8._.js +3 -0
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_16eaf7ae._.js +3 -0
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3c11c068._.js +8 -0
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_89b49aad._.js +7 -0
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_ae1a134f._.js +7 -0
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_2a02508d._.js +1 -1
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_72fb68e5._.js +1 -1
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_3bb31889._.js +1 -1
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_76330306._.js +1 -1
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_page_tsx_6dcfdd52._.js +1 -1
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_b8e580cc._.js +4 -0
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +2 -2
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_app_projects_[slug]_thread_[threadId]_page_tsx_2a1d1d5e._.js → apps_local_components_chat-ui_ChatContainer_tsx_47371955._.js} +2 -2
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +3 -3
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eb223411._.js +18 -0
  258. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_7d1abfbf._.js → apps_local_f1c9872a._.js} +2 -2
  259. package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +3 -0
  260. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  261. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
  262. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +4 -0
  263. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  264. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
  265. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  266. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  267. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08e75b35d6c52269.js +1 -0
  268. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0d22a723b9b96e65.js +1 -0
  269. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{cb19d71dd7ffb935.js → 1585dd5f9ec4866a.js} +1 -1
  270. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1bc8cc9cbb99c1ed.js +1 -0
  271. package/cloud-runtime/standalone/apps/local/.next/static/chunks/2586c0baa16e9a0d.js +16 -0
  272. package/cloud-runtime/standalone/apps/local/.next/static/chunks/2aa24a251622fd06.js +5 -0
  273. package/cloud-runtime/standalone/apps/local/.next/static/chunks/39513207112d6828.js +1 -0
  274. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{74e3a3e93be78db8.js → 40857295bb9226c4.js} +7 -7
  275. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8b5d6f5bade8c4ea.js → 41ae15220fc19bf7.js} +2 -2
  276. package/cloud-runtime/standalone/apps/local/.next/static/chunks/5092f14c2bf43204.js +16 -0
  277. package/cloud-runtime/standalone/apps/local/.next/static/chunks/5159169343ce6d2f.css +1 -0
  278. package/cloud-runtime/standalone/apps/local/.next/static/chunks/67b36c70b72e0e10.js +1 -0
  279. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7bfbfcd072f8d61e.js +20 -0
  280. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7cf26dd04166f32f.js +6 -0
  281. package/cloud-runtime/standalone/apps/local/.next/static/chunks/90dcb743d23feeca.js +16 -0
  282. package/cloud-runtime/standalone/apps/local/.next/static/chunks/93749b45e2700808.js +16 -0
  283. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{48feca51cf97c8a7.js → 9bb8f1406365af81.js} +1 -1
  284. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b4aa71020acae46f.js +16 -0
  285. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c352706a0ad7e35d.js +1 -0
  286. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c5436b2b7e8f0ca9.js +16 -0
  287. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1600dd6ff8607d8f.js → c9a2c4b55bb76f4f.js} +6 -6
  288. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d6a9cc66254693b8.js +1 -0
  289. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{9e703dd5d95e9557.js → e3bdd1e0f385114e.js} +1 -1
  290. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{93b2b6aa0c9593f6.js → e6d4118b7c32d11c.js} +1 -1
  291. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{6ffcd12eabd7c65e.js → f71d73895d228547.js} +1 -1
  292. package/cloud-runtime/standalone/apps/local/.next/static/chunks/f750d2f1882d31a8.js +5 -0
  293. package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +2 -10
  294. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/program/route.ts +77 -0
  295. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/workspace/export/route.ts +35 -0
  296. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/workspace/import/route.ts +91 -0
  297. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +1 -8
  298. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +1 -1
  299. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/page.tsx +58 -2
  300. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/thread/page.tsx +14 -0
  301. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +15 -15
  302. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +80 -45
  303. package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +51 -196
  304. package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +662 -784
  305. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +85 -249
  306. package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +4 -4
  307. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +118 -0
  308. package/cloud-runtime/standalone/apps/local/components/projects/ProjectSettings.tsx +81 -7
  309. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +15 -5
  310. package/cloud-runtime/standalone/apps/local/hooks/useProjectWorkspace.ts +117 -0
  311. package/cloud-runtime/standalone/apps/local/lib/db/projects.ts +14 -10
  312. package/cloud-runtime/standalone/apps/local/lib/project-workspace.ts +80 -0
  313. package/cloud-runtime/standalone/apps/local/lib/task-context.ts +39 -4
  314. package/cloud-runtime/standalone/apps/local/lib/workspace-yaml.ts +164 -0
  315. package/cloud-runtime/standalone/apps/local/src/objectives/program/index.ts +7 -0
  316. package/cloud-runtime/standalone/apps/local/src/objectives/program/repository.ts +60 -0
  317. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker.ts +12 -0
  318. package/cloud-runtime/standalone/apps/local/src/scheduling/status.ts +42 -0
  319. package/cloud-runtime/standalone/apps/local/worker/index.js +15 -10
  320. package/lib/commands/workspace.js +145 -7
  321. package/package.json +1 -1
  322. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_09d85861._.js +0 -91
  323. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_25136564._.js +0 -11
  324. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_2caf4398._.js +0 -91
  325. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_31ca7a35._.js +0 -91
  326. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/9fb8c_lucide-react_dist_esm_icons_8c8ee1bc._.js +0 -3
  327. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__3b4708d5._.js +0 -3
  328. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__49cbf624._.js +0 -3
  329. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__49cdd178._.js +0 -3
  330. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__55ed4ff9._.js +0 -3
  331. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7a31a76d._.js +0 -3
  332. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7e3c2ea1._.js +0 -7
  333. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bb42490f._.js +0 -3
  334. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__dbda910b._.js +0 -7
  335. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__ee9351f9._.js +0 -3
  336. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_347d036d._.js +0 -7
  337. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_917d90b4._.js +0 -3
  338. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_f99c22fd._.js +0 -3
  339. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3b90cb76._.js +0 -18
  340. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_9f36c765._.js +0 -3
  341. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_a2835b49._.js +0 -3
  342. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_8cc1a335._.js +0 -3
  343. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1d8b2726979134e5.js +0 -16
  344. package/cloud-runtime/standalone/apps/local/.next/static/chunks/55a31773f8c2833f.js +0 -20
  345. package/cloud-runtime/standalone/apps/local/.next/static/chunks/6952b44e247d594a.js +0 -16
  346. package/cloud-runtime/standalone/apps/local/.next/static/chunks/6bfdc40a24e65ca2.js +0 -1
  347. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7c8515a24aeea102.js +0 -1
  348. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7ff071e8a33d2fd8.js +0 -16
  349. package/cloud-runtime/standalone/apps/local/.next/static/chunks/80446e085a3aad56.css +0 -1
  350. package/cloud-runtime/standalone/apps/local/.next/static/chunks/87e4fb11329a358d.js +0 -1
  351. package/cloud-runtime/standalone/apps/local/.next/static/chunks/941f7f3626ec442c.js +0 -16
  352. package/cloud-runtime/standalone/apps/local/.next/static/chunks/94a66d2d19268d25.js +0 -5
  353. package/cloud-runtime/standalone/apps/local/.next/static/chunks/9c29ef447bef1576.js +0 -5
  354. package/cloud-runtime/standalone/apps/local/.next/static/chunks/a9111ccc979d4933.js +0 -5
  355. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b35865f64b56d6f4.js +0 -1
  356. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d2b34ade19d9d8da.js +0 -1
  357. package/cloud-runtime/standalone/apps/local/.next/static/chunks/f154e2ed7753f8ee.js +0 -16
  358. /package/cloud-runtime/standalone/apps/local/.next/static/{C3-tP4djbU34_g7VoIFac → xVMVGrzDjtD1H0bGL76NJ}/_buildManifest.js +0 -0
  359. /package/cloud-runtime/standalone/apps/local/.next/static/{C3-tP4djbU34_g7VoIFac → xVMVGrzDjtD1H0bGL76NJ}/_clientMiddlewareManifest.json +0 -0
  360. /package/cloud-runtime/standalone/apps/local/.next/static/{C3-tP4djbU34_g7VoIFac → xVMVGrzDjtD1H0bGL76NJ}/_ssgManifest.js +0 -0
@@ -1,14 +1,18 @@
1
1
  "use client";
2
2
 
3
3
  import { useCallback, useEffect, useMemo, useState } from "react";
4
- import { Check, Clock, Pause, Play, Plus, Trash2, X, XCircle } from "lucide-react";
4
+ import { Check, Clock, Pause, Pencil, Play, Plus, Terminal, Trash2, XCircle } from "lucide-react";
5
5
  import { usePromptJobs } from "@/hooks/usePromptJobs";
6
+ import { isScheduledRunOverdue } from "@/src/scheduling/status";
6
7
  import { cronToHuman } from "@/src/graph/nl-schedule";
7
8
  import type { PromptJob, PromptRun } from "@/src/prompt-scheduler/types";
8
- import { CreateJobModal, type CreateJobData } from "@/components/PromptJobBoard";
9
+ import {
10
+ CreateJobModal,
11
+ agentAvatar,
12
+ type AgentOption,
13
+ type CreateJobData,
14
+ } from "@/components/PromptJobBoard";
9
15
  import ConfirmDialog from "@/components/ConfirmDialog";
10
- import RichTextEditor from "@/components/RichTextEditor";
11
- import { ScheduleConditionPicker } from "@/components/scheduling/ScheduleConditionPicker";
12
16
 
13
17
  export type ObjectiveScheduledTaskDraft = CreateJobData;
14
18
 
@@ -27,16 +31,12 @@ function formatCadence(job: Pick<PromptJob, "cadence" | "cronExpr">): string {
27
31
  return cronToHuman(job.cronExpr || source) ?? source;
28
32
  }
29
33
 
30
- function isJobOverdue(job: Pick<PromptJob, "nextRunAt" | "lastRunAt" | "prevScheduledAt" | "state">): boolean {
31
- if (job.state !== "active") return false;
32
- if (job.nextRunAt !== null && job.nextRunAt - Date.now() < 0) {
33
- if (job.lastRunAt && job.lastRunAt >= job.nextRunAt) return false;
34
- return true;
35
- }
36
- if (job.prevScheduledAt && job.lastRunAt) {
37
- return job.lastRunAt > job.prevScheduledAt + 5 * 60_000;
38
- }
39
- return false;
34
+ function isJobOverdue(job: Pick<PromptJob, "nextRunAt" | "lastRunAt" | "state">): boolean {
35
+ return isScheduledRunOverdue({
36
+ state: job.state,
37
+ nextScheduledAt: job.nextRunAt,
38
+ lastCompletedAt: job.lastRunAt,
39
+ });
40
40
  }
41
41
 
42
42
  function formatNextRun(epochMs: number | null, state: PromptJob["state"]): string {
@@ -51,14 +51,6 @@ function formatNextRun(epochMs: number | null, state: PromptJob["state"]): strin
51
51
  return `in ${Math.round(diff / 86_400_000)}d`;
52
52
  }
53
53
 
54
- function promptSummary(prompt: string): string {
55
- const firstLine = prompt
56
- .split("\n")
57
- .map((line) => line.trim())
58
- .find(Boolean);
59
- return firstLine || "No instructions yet";
60
- }
61
-
62
54
  function formatDateTime(value: string): string {
63
55
  const date = new Date(value);
64
56
  return date.toLocaleString(undefined, {
@@ -69,186 +61,6 @@ function formatDateTime(value: string): string {
69
61
  });
70
62
  }
71
63
 
72
- function ScheduleEditModal({
73
- job,
74
- onClose,
75
- onUpdate,
76
- }: {
77
- job: PromptJob;
78
- onClose: () => void;
79
- onUpdate: (updates: Partial<PromptJob>) => Promise<boolean>;
80
- }) {
81
- const [scheduleValue, setScheduleValue] = useState({
82
- cadence: job.cronExpr || job.cadence || "",
83
- condition: job.condition || "",
84
- });
85
- const [isValid, setIsValid] = useState(true);
86
- const [saving, setSaving] = useState(false);
87
-
88
- const handleSave = async () => {
89
- if (!isValid) return;
90
- setSaving(true);
91
- const ok = await onUpdate({
92
- cadence: scheduleValue.cadence,
93
- condition: scheduleValue.condition,
94
- } as Partial<PromptJob>);
95
- setSaving(false);
96
- if (ok) {
97
- onClose();
98
- }
99
- };
100
-
101
- return (
102
- <div className="fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4 py-6">
103
- <div className="flex w-full max-w-md max-h-[85vh] flex-col rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl">
104
- <div className="flex shrink-0 items-center justify-between border-b border-[var(--border)] px-6 py-4">
105
- <div className="flex items-center gap-2.5">
106
- <Clock className="h-4 w-4 text-[var(--muted-foreground)]" />
107
- <p className="text-sm font-semibold text-[var(--foreground)]">{job.name}</p>
108
- </div>
109
- <button
110
- type="button"
111
- onClick={onClose}
112
- className="rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)]"
113
- >
114
- <X className="h-4 w-4" />
115
- </button>
116
- </div>
117
-
118
- <div className="min-h-0 flex-1 overflow-y-auto px-6 py-5">
119
- <ScheduleConditionPicker
120
- value={scheduleValue}
121
- onChange={(next, meta) => {
122
- setScheduleValue(next);
123
- setIsValid(meta.isScheduleValid);
124
- }}
125
- scheduleLabel="Schedule"
126
- conditionLabel="Condition"
127
- conditionHelpText="Scheduled runs and Run now will check this condition before executing."
128
- />
129
- </div>
130
-
131
- <div className="flex shrink-0 items-center justify-end gap-3 border-t border-[var(--border)] px-6 py-4">
132
- <button
133
- type="button"
134
- onClick={onClose}
135
- className="rounded-xl border border-[var(--border)] px-4 py-2.5 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]"
136
- >
137
- Cancel
138
- </button>
139
- <button
140
- type="button"
141
- onClick={() => void handleSave()}
142
- disabled={saving || !isValid}
143
- className="rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-4 py-2.5 text-sm text-emerald-400 transition-colors hover:bg-emerald-500/20 disabled:opacity-50"
144
- >
145
- {saving ? "Saving..." : "Save"}
146
- </button>
147
- </div>
148
- </div>
149
- </div>
150
- );
151
- }
152
-
153
- function ObjectiveScheduledTaskDetailModal({
154
- job,
155
- onClose,
156
- onUpdate,
157
- }: {
158
- job: PromptJob;
159
- onClose: () => void;
160
- onUpdate: (updates: Partial<PromptJob>) => Promise<boolean>;
161
- }) {
162
- const [promptDraft, setPromptDraft] = useState(job.prompt || "");
163
- const [saving, setSaving] = useState(false);
164
-
165
- const savePrompt = async () => {
166
- if (promptDraft === job.prompt) return;
167
- setSaving(true);
168
- await onUpdate({ prompt: promptDraft } as Partial<PromptJob>);
169
- setSaving(false);
170
- };
171
-
172
- return (
173
- <div className="fixed inset-0 z-40 flex items-center justify-center bg-black/50 px-4 py-6">
174
- <div className="flex w-full max-w-6xl max-h-[85vh] flex-col rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl">
175
- {/* Header */}
176
- <div className="flex shrink-0 items-start justify-between gap-4 border-b border-[var(--border)] px-6 py-5">
177
- <div className="min-w-0">
178
- <div className="flex flex-wrap items-center gap-2.5">
179
- <p className="truncate text-lg font-semibold text-[var(--foreground)]">
180
- {job.name}
181
- </p>
182
- <span
183
- className={`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${stateClasses(job.state)}`}
184
- >
185
- {formatState(job.state)}
186
- </span>
187
- {job.condition ? (
188
- <span className="rounded-md border border-blue-400/20 bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-blue-400">
189
- gated
190
- </span>
191
- ) : null}
192
- </div>
193
- <div className="mt-2 flex flex-wrap items-center gap-3 text-xs text-[var(--muted-foreground)]">
194
- <span className="inline-flex items-center gap-1.5">
195
- <Clock className="h-3.5 w-3.5" />
196
- {formatCadence(job)}
197
- </span>
198
- <span>Next run {formatNextRun(job.nextRunAt, job.state)}</span>
199
- <span>Updated {formatDateTime(job.updatedAt)}</span>
200
- </div>
201
- </div>
202
- <button
203
- type="button"
204
- onClick={onClose}
205
- className="rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)]"
206
- aria-label="Close scheduled task details"
207
- >
208
- <X className="h-4 w-4" />
209
- </button>
210
- </div>
211
-
212
- {/* Scrollable editor area */}
213
- <div className="min-h-0 flex-1 overflow-y-auto px-6 py-6 space-y-5">
214
- <div>
215
- <p className="mb-2 text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]">
216
- Instructions
217
- </p>
218
- <div className="rounded-2xl border border-[var(--card-hover-border)] bg-[var(--overlay-panel-muted)] px-1 py-1 text-sm leading-6 text-[var(--foreground)]">
219
- <RichTextEditor
220
- content={promptDraft}
221
- editable
222
- onChange={setPromptDraft}
223
- placeholder="Write instructions in markdown…"
224
- />
225
- </div>
226
- </div>
227
- </div>
228
-
229
- {/* Sticky footer */}
230
- <div className="flex shrink-0 items-center justify-end gap-3 border-t border-[var(--border)] px-6 py-4">
231
- <button
232
- type="button"
233
- onClick={onClose}
234
- className="rounded-xl border border-[var(--border)] px-4 py-2.5 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]"
235
- >
236
- Cancel
237
- </button>
238
- <button
239
- type="button"
240
- onClick={() => void savePrompt()}
241
- disabled={saving}
242
- className="rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-4 py-2.5 text-sm text-emerald-400 transition-colors hover:bg-emerald-500/20 disabled:opacity-50"
243
- >
244
- {saving ? "Saving..." : "Save"}
245
- </button>
246
- </div>
247
- </div>
248
- </div>
249
- );
250
- }
251
-
252
64
  function formatState(state: PromptJob["state"]): string {
253
65
  if (state === "active") return "Active";
254
66
  if (state === "paused") return "Paused";
@@ -280,10 +92,21 @@ export function ObjectiveScheduledTasksPanel({
280
92
  const [showCreate, setShowCreate] = useState(false);
281
93
  const [busyId, setBusyId] = useState<string | null>(null);
282
94
  const [error, setError] = useState<string | null>(null);
283
- const [selectedJobId, setSelectedJobId] = useState<string | null>(null);
95
+ const [editingJobId, setEditingJobId] = useState<string | null>(null);
284
96
  const [deleteTarget, setDeleteTarget] = useState<PromptJob | null>(null);
285
- const [scheduleEditJobId, setScheduleEditJobId] = useState<string | null>(null);
286
97
  const [recentRuns, setRecentRuns] = useState<(PromptRun & { jobName: string })[]>([]);
98
+ const [agentMap, setAgentMap] = useState<Record<string, AgentOption>>({});
99
+
100
+ useEffect(() => {
101
+ fetch("/api/prompt-jobs/agents")
102
+ .then((r) => r.json())
103
+ .then((d) => {
104
+ const map: Record<string, AgentOption> = {};
105
+ for (const a of (d.agents ?? []) as AgentOption[]) map[a.id] = a;
106
+ setAgentMap(map);
107
+ })
108
+ .catch((err) => console.warn("[ObjectiveScheduledTasksPanel] fetch agents failed:", err));
109
+ }, []);
287
110
 
288
111
  const visibleJobs = useMemo(() => {
289
112
  const filtered = jobs.filter((job) => job.objectiveId === objectiveId);
@@ -294,9 +117,10 @@ export function ObjectiveScheduledTasksPanel({
294
117
  return aPin - bPin;
295
118
  });
296
119
  }, [jobs, objectiveId]);
297
- const selectedJob = useMemo(
298
- () => visibleJobs.find((job) => job.id === selectedJobId) ?? null,
299
- [selectedJobId, visibleJobs]
120
+
121
+ const editingJob = useMemo(
122
+ () => visibleJobs.find((job) => job.id === editingJobId) ?? null,
123
+ [editingJobId, visibleJobs]
300
124
  );
301
125
 
302
126
  const loadRecentRuns = useCallback(async () => {
@@ -334,9 +158,6 @@ export function ObjectiveScheduledTasksPanel({
334
158
  setError(result.error ?? `Failed to hide "${job.name}".`);
335
159
  return;
336
160
  }
337
- if (selectedJobId === job.id) {
338
- setSelectedJobId(null);
339
- }
340
161
  await refresh();
341
162
  };
342
163
 
@@ -349,16 +170,10 @@ export function ObjectiveScheduledTasksPanel({
349
170
  return ok;
350
171
  };
351
172
 
352
- const scheduleEditJob = useMemo(
353
- () => visibleJobs.find((job) => job.id === scheduleEditJobId) ?? null,
354
- [scheduleEditJobId, visibleJobs]
355
- );
356
-
357
- const handleJobUpdate = useCallback(
358
- async (jobId: string, updates: Partial<PromptJob>) => {
359
- const ok = await updateJob(jobId, updates);
173
+ const handleEditSubmit = useCallback(
174
+ async (jobId: string, data: CreateJobData) => {
175
+ const ok = await updateJob(jobId, data as Partial<PromptJob>);
360
176
  if (ok) {
361
- setSelectedJobId(jobId);
362
177
  await refresh();
363
178
  }
364
179
  return ok;
@@ -369,28 +184,32 @@ export function ObjectiveScheduledTasksPanel({
369
184
  return (
370
185
  <>
371
186
  {showCreate ? (
372
- <CreateJobModal
373
- onClose={() => setShowCreate(false)}
374
- onSubmit={async (data) => {
375
- await handleCreate(data);
376
- }}
377
- createDefaults={createDefaults}
378
- contextLabel={objectiveKey}
379
- />
380
- ) : null}
381
- {selectedJob ? (
382
- <ObjectiveScheduledTaskDetailModal
383
- job={selectedJob}
384
- onClose={() => setSelectedJobId(null)}
385
- onUpdate={(updates) => handleJobUpdate(selectedJob.id, updates)}
386
- />
187
+ <div className="fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4 py-6">
188
+ <div className="w-full max-w-5xl h-[85vh] overflow-hidden rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl">
189
+ <CreateJobModal
190
+ onClose={() => setShowCreate(false)}
191
+ onSubmit={async (data) => {
192
+ await handleCreate(data);
193
+ }}
194
+ createDefaults={createDefaults}
195
+ contextLabel={objectiveKey}
196
+ />
197
+ </div>
198
+ </div>
387
199
  ) : null}
388
- {scheduleEditJob ? (
389
- <ScheduleEditModal
390
- job={scheduleEditJob}
391
- onClose={() => setScheduleEditJobId(null)}
392
- onUpdate={(updates) => handleJobUpdate(scheduleEditJob.id, updates)}
393
- />
200
+ {editingJob ? (
201
+ <div className="fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4 py-6">
202
+ <div className="w-full max-w-5xl h-[85vh] overflow-hidden rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl">
203
+ <CreateJobModal
204
+ onClose={() => setEditingJobId(null)}
205
+ onSubmit={async (data) => {
206
+ await handleEditSubmit(editingJob.id, data);
207
+ }}
208
+ editingJob={editingJob}
209
+ contextLabel={objectiveKey}
210
+ />
211
+ </div>
212
+ </div>
394
213
  ) : null}
395
214
 
396
215
  <div className="px-1">
@@ -431,11 +250,11 @@ export function ObjectiveScheduledTasksPanel({
431
250
  visibleJobs.map((job) => (
432
251
  <div
433
252
  key={job.id}
434
- onClick={() => setSelectedJobId(job.id)}
253
+ onClick={() => setEditingJobId(job.id)}
435
254
  onKeyDown={(event) => {
436
255
  if (event.key === "Enter" || event.key === " ") {
437
256
  event.preventDefault();
438
- setSelectedJobId(job.id);
257
+ setEditingJobId(job.id);
439
258
  }
440
259
  }}
441
260
  role="button"
@@ -488,9 +307,27 @@ export function ObjectiveScheduledTasksPanel({
488
307
  </span>
489
308
  ) : null}
490
309
  </div>
491
- <p className="mt-3 line-clamp-2 text-sm leading-6 text-[var(--muted-foreground)]">
492
- {promptSummary(job.prompt)}
493
- </p>
310
+ <div className="mt-3 flex items-center gap-2 min-w-0 text-xs text-[var(--muted-foreground)]">
311
+ {job.agentId && agentMap[job.agentId] ? (
312
+ <img
313
+ src={agentAvatar(job.agentId, agentMap[job.agentId].color, 20)}
314
+ alt=""
315
+ className="size-5 rounded-full shrink-0"
316
+ />
317
+ ) : (
318
+ <Terminal className="h-3.5 w-3.5 shrink-0" />
319
+ )}
320
+ <span className="truncate font-medium text-[var(--foreground)]">
321
+ {job.agentId && agentMap[job.agentId]
322
+ ? agentMap[job.agentId].name
323
+ : job.provider}
324
+ </span>
325
+ {job.model ? (
326
+ <span className="truncate font-mono text-[11px]">
327
+ {job.model}
328
+ </span>
329
+ ) : null}
330
+ </div>
494
331
  {job.condition ? (
495
332
  <p className="mt-2 text-xs text-[var(--muted-foreground)]">
496
333
  Condition: {job.condition}
@@ -504,7 +341,6 @@ export function ObjectiveScheduledTasksPanel({
504
341
  title="Run now"
505
342
  onClick={async (event) => {
506
343
  event.stopPropagation();
507
- setSelectedJobId(job.id);
508
344
  setBusyId(job.id);
509
345
  await runNow(job.id);
510
346
  setBusyId(null);
@@ -518,14 +354,14 @@ export function ObjectiveScheduledTasksPanel({
518
354
  </button>
519
355
  <button
520
356
  type="button"
521
- title="Edit schedule"
357
+ title="Edit"
522
358
  onClick={(event) => {
523
359
  event.stopPropagation();
524
- setScheduleEditJobId(job.id);
360
+ setEditingJobId(job.id);
525
361
  }}
526
362
  className="rounded-lg border border-[var(--border)] p-2 text-[var(--muted-foreground)] transition-colors hover:border-sky-400/40 hover:text-sky-300"
527
363
  >
528
- <Clock className="h-3.5 w-3.5" />
364
+ <Pencil className="h-3.5 w-3.5" />
529
365
  </button>
530
366
  <button
531
367
  type="button"
@@ -22,10 +22,7 @@ interface ProjectHomeProps {
22
22
  export function ProjectHome({
23
23
  projectId,
24
24
  projectSlug,
25
- projectName,
26
25
  projectDescription,
27
- projectMetadata,
28
- repos,
29
26
  threadIds,
30
27
  }: ProjectHomeProps) {
31
28
  const router = useRouter();
@@ -77,7 +74,10 @@ export function ProjectHome({
77
74
 
78
75
  {/* Project context — no label */}
79
76
  <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
80
- <FoldersSummaryCard projectId={projectId} repos={repos} />
77
+ <FoldersSummaryCard
78
+ projectId={projectId}
79
+ onViewAll={() => router.push(`/projects/${projectSlug}/folders`)}
80
+ />
81
81
  <TeamsSummaryCard
82
82
  projectId={projectId}
83
83
  onViewAll={() => router.push(`/projects/${projectSlug}/teams`)}
@@ -1705,6 +1705,10 @@ export function ProjectObjectiveDetail({
1705
1705
  const [availableTrackers, setAvailableTrackers] = useState<{ type: string; displayName: string }[]>([]);
1706
1706
  const [defaultTrackerType, setDefaultTrackerType] = useState<string | null>(null);
1707
1707
  const [workingOnObjective, setWorkingOnObjective] = useState(false);
1708
+ const [programContent, setProgramContent] = useState<string | null>(null);
1709
+ const [programPath, setProgramPath] = useState<string | null>(null);
1710
+ const [programDraft, setProgramDraft] = useState<string | null>(null);
1711
+ const [isSavingProgram, setIsSavingProgram] = useState(false);
1708
1712
  const detailScrollRef = useRef<HTMLDivElement | null>(null);
1709
1713
  const [showBackToTop, setShowBackToTop] = useState(false);
1710
1714
 
@@ -1788,6 +1792,49 @@ export function ProjectObjectiveDetail({
1788
1792
  fetchNotes();
1789
1793
  }, [fetchNotes]);
1790
1794
 
1795
+ const fetchProgram = useCallback(async () => {
1796
+ if (!project?.id || !objective?.id) return;
1797
+ try {
1798
+ const res = await fetch(
1799
+ `/api/projects/${project.id}/objectives/${objective.id}/program`,
1800
+ );
1801
+ if (res.ok) {
1802
+ const data = await res.json();
1803
+ setProgramContent(data.program?.content ?? null);
1804
+ setProgramPath(data.program?.path ?? null);
1805
+ }
1806
+ } catch {
1807
+ // Silently fail — panel will show empty state
1808
+ }
1809
+ }, [project?.id, objective?.id]);
1810
+
1811
+ useEffect(() => {
1812
+ fetchProgram();
1813
+ }, [fetchProgram]);
1814
+
1815
+ const saveProgram = useCallback(async () => {
1816
+ if (!project?.id || !objective?.id || programDraft === null) return;
1817
+ setIsSavingProgram(true);
1818
+ try {
1819
+ const res = await fetch(
1820
+ `/api/projects/${project.id}/objectives/${objective.id}/program`,
1821
+ {
1822
+ method: "PUT",
1823
+ headers: { "Content-Type": "application/json" },
1824
+ body: JSON.stringify({ content: programDraft }),
1825
+ },
1826
+ );
1827
+ if (res.ok) {
1828
+ const data = await res.json();
1829
+ setProgramContent(data.program?.content ?? null);
1830
+ setProgramPath(data.program?.path ?? null);
1831
+ setProgramDraft(null);
1832
+ }
1833
+ } finally {
1834
+ setIsSavingProgram(false);
1835
+ }
1836
+ }, [project?.id, objective?.id, programDraft]);
1837
+
1791
1838
  // Refetch when switching to notes tab (in case notes changed elsewhere)
1792
1839
  useEffect(() => {
1793
1840
  if (activeTab === "notes") {
@@ -2307,6 +2354,77 @@ export function ProjectObjectiveDetail({
2307
2354
 
2308
2355
  </div>
2309
2356
 
2357
+ {/* Program — objective-level prompt (goal / definition of better / blast radius) */}
2358
+ <div className="mb-6 rounded-xl border border-[var(--border)] bg-[var(--card-bg)]">
2359
+ <div className="flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5">
2360
+ <div className="flex items-center gap-2">
2361
+ <FileText size={14} className="text-[var(--muted-foreground)]" />
2362
+ <span className="text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]">
2363
+ Program
2364
+ </span>
2365
+ {programPath ? (
2366
+ <span className="font-mono text-[10px] text-[var(--muted-foreground)] opacity-70">
2367
+ {programPath.replace(/^.*\/\.agx\//, "~/.agx/")}
2368
+ </span>
2369
+ ) : null}
2370
+ </div>
2371
+ {programDraft === null ? (
2372
+ <button
2373
+ type="button"
2374
+ onClick={() => setProgramDraft(programContent ?? "")}
2375
+ className="rounded-md p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--foreground)]"
2376
+ aria-label="Edit program"
2377
+ >
2378
+ <Pencil size={14} />
2379
+ </button>
2380
+ ) : (
2381
+ <div className="flex items-center gap-1">
2382
+ <button
2383
+ type="button"
2384
+ onClick={() => void saveProgram()}
2385
+ disabled={isSavingProgram}
2386
+ className="rounded-md p-1 text-[var(--primary)] transition-colors hover:bg-[var(--status-in-progress-bg)] disabled:opacity-50"
2387
+ aria-label="Save program"
2388
+ >
2389
+ <Check size={14} />
2390
+ </button>
2391
+ <button
2392
+ type="button"
2393
+ onClick={() => setProgramDraft(null)}
2394
+ className="rounded-md p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]"
2395
+ aria-label="Cancel editing"
2396
+ >
2397
+ <X size={14} />
2398
+ </button>
2399
+ </div>
2400
+ )}
2401
+ </div>
2402
+ <div className="px-4 py-3">
2403
+ {programDraft !== null ? (
2404
+ <textarea
2405
+ autoFocus
2406
+ value={programDraft}
2407
+ onChange={(e) => setProgramDraft(e.target.value)}
2408
+ rows={8}
2409
+ placeholder={
2410
+ "Goal: why this exists\n\nDefinition of better: the metric or signal that says we're done\n\nBlast radius: paths/systems in scope, what's off-limits\n\nNotes: things we've learned"
2411
+ }
2412
+ className="w-full resize-y rounded-md border border-[var(--border)] bg-[var(--background)] px-3 py-2 font-mono text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]"
2413
+ />
2414
+ ) : programContent && programContent.trim().length > 0 ? (
2415
+ <div className="prose prose-sm max-w-none text-sm text-[var(--foreground)]">
2416
+ <Markdown content={programContent} />
2417
+ </div>
2418
+ ) : (
2419
+ <p className="text-sm text-[var(--muted-foreground)]">
2420
+ No program yet. Define what <em>better</em> looks like for this
2421
+ objective — the metric, the scope, any constraints. Agents read this
2422
+ before every run, and will ask for it in chat if it&apos;s missing.
2423
+ </p>
2424
+ )}
2425
+ </div>
2426
+ </div>
2427
+
2310
2428
  {/* Work on objective */}
2311
2429
  <div className="mb-6">
2312
2430
  <button