@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
@@ -66,7 +66,7 @@ export default function TeamDetailPage({
66
66
 
67
67
  // Add agent
68
68
  const [showAddAgent, setShowAddAgent] = useState(false);
69
- const [addMode, setAddMode] = useState<"existing" | "preset">("existing");
69
+ const [addMode, setAddMode] = useState<"existing" | "preset" | "scratch">("existing");
70
70
  const [selectedPresetId, setSelectedPresetId] = useState<string | null>(null);
71
71
  const [selectedExistingId, setSelectedExistingId] = useState<string | null>(null);
72
72
  const [addingAgent, setAddingAgent] = useState(false);
@@ -444,9 +444,65 @@ export default function TeamDetailPage({
444
444
  >
445
445
  From Preset
446
446
  </button>
447
+ <button
448
+ onClick={() => setAddMode("scratch")}
449
+ className={`text-xs font-medium px-3 py-1.5 rounded-lg transition-colors ${
450
+ addMode === "scratch"
451
+ ? "bg-[var(--primary)] text-white"
452
+ : "bg-[var(--card-bg)] border border-[var(--border)] text-[var(--muted-foreground)]"
453
+ }`}
454
+ >
455
+ From Scratch
456
+ </button>
447
457
  </div>
448
458
 
449
- {addMode === "existing" ? (
459
+ {addMode === "scratch" ? (
460
+ <AgentForm
461
+ title="Create agent"
462
+ initial={{ name: "", role: "", provider: "claude", model: "", identity: "", skills: [], skillBindings: [] }}
463
+ submitLabel="Create & Add"
464
+ onSubmit={async (data) => {
465
+ if (!project) return;
466
+ setAddingAgent(true);
467
+ try {
468
+ const createRes = await fetch("/api/participants", {
469
+ method: "POST",
470
+ headers: { "Content-Type": "application/json" },
471
+ body: JSON.stringify({
472
+ name: data.name,
473
+ role: data.role || null,
474
+ provider: data.provider,
475
+ model: data.model || null,
476
+ color: data.color,
477
+ ...(data.identity ? { identity: data.identity } : {}),
478
+ skills: data.skills ?? [],
479
+ skillBindings: data.skillBindings ?? [],
480
+ }),
481
+ });
482
+ if (!createRes.ok) throw new Error("Failed to create agent");
483
+ const created = await createRes.json();
484
+ const agentId = created.id ?? created.participant?.id;
485
+ await fetch(`/api/projects/${project.id}/agents`, {
486
+ method: "POST",
487
+ headers: { "Content-Type": "application/json" },
488
+ body: JSON.stringify({ agentId }),
489
+ });
490
+ await fetch(`/api/projects/${project.id}/teams/${teamId}/agents`, {
491
+ method: "POST",
492
+ headers: { "Content-Type": "application/json" },
493
+ body: JSON.stringify({ agentId, roleKey: "member" }),
494
+ });
495
+ setShowAddAgent(false);
496
+ await Promise.all([fetchTeam(), fetchParticipants()]);
497
+ } catch {
498
+ /* silent */
499
+ } finally {
500
+ setAddingAgent(false);
501
+ }
502
+ }}
503
+ onCancel={() => setShowAddAgent(false)}
504
+ />
505
+ ) : addMode === "existing" ? (
450
506
  <div className="space-y-3">
451
507
  {existingAgentOptions.length === 0 ? (
452
508
  <p className="text-xs text-[var(--muted-foreground)]">
@@ -0,0 +1,14 @@
1
+ "use client";
2
+
3
+ import { use } from "react";
4
+ import { ChatContainer } from "@/components/chat-ui/ChatContainer";
5
+
6
+ export default function ProjectChatPage({
7
+ params,
8
+ }: {
9
+ params: Promise<{ slug: string }>;
10
+ }) {
11
+ const { slug } = use(params);
12
+
13
+ return <ChatContainer projectSlug={slug} showSidebar={false} />;
14
+ }
@@ -14,6 +14,7 @@ import {
14
14
  AlertTriangle,
15
15
  } from "lucide-react";
16
16
  import { useAutomations, type AutomationItem } from "@/hooks/useAutomations";
17
+ import { isIntervalScheduleOverdue, isScheduledRunOverdue } from "@/src/scheduling/status";
17
18
  import type { GraphSchedule } from "@/src/graph/types";
18
19
  import { cronToHuman } from "@/src/graph/nl-schedule";
19
20
 
@@ -33,22 +34,21 @@ function formatCadence(schedule: GraphSchedule): string {
33
34
  }
34
35
 
35
36
  function isScheduleOverdue(schedule: GraphSchedule): boolean {
36
- if (schedule.state !== "active" || schedule.tickInProgress) return false;
37
- // Case 1: next tick is in the past and hasn't run yet
38
- if (schedule.nextTickAt) {
39
- if (schedule.nextTickAt - Date.now() >= 0) return false;
40
- if (schedule.lastTickAt && schedule.lastTickAt >= schedule.nextTickAt) {
41
- // Task ran, but check if it ran late vs previous scheduled time
42
- if (schedule.prevScheduledAt && schedule.lastTickAt > schedule.prevScheduledAt + 5 * 60_000) {
43
- return true;
44
- }
45
- return false;
46
- }
47
- return true;
37
+ if (schedule.nextTickAt != null) {
38
+ return isScheduledRunOverdue({
39
+ state: schedule.state,
40
+ nextScheduledAt: schedule.nextTickAt,
41
+ lastCompletedAt: schedule.lastTickAt,
42
+ inProgress: schedule.tickInProgress,
43
+ });
48
44
  }
49
- // Case 2: interval-based — check if overdue
50
- if (schedule.lastTickAt) return schedule.lastTickAt + schedule.intervalMs - Date.now() < 0;
51
- return false;
45
+
46
+ return isIntervalScheduleOverdue({
47
+ state: schedule.state,
48
+ lastCompletedAt: schedule.lastTickAt,
49
+ intervalMs: schedule.intervalMs,
50
+ inProgress: schedule.tickInProgress,
51
+ });
52
52
  }
53
53
 
54
54
  function formatNextRun(schedule: GraphSchedule): string {
@@ -16,6 +16,7 @@ import {
16
16
  Pencil,
17
17
  User,
18
18
  Sparkles,
19
+ Search,
19
20
  } from "lucide-react";
20
21
  import { useUrlSelection } from "@/hooks/useUrlSelection";
21
22
  import { usePromptJobs } from "@/hooks/usePromptJobs";
@@ -35,6 +36,7 @@ import type {
35
36
  PromptJobExecutionMode,
36
37
  } from "@/src/prompt-scheduler/types";
37
38
  import { cronToHuman } from "@/src/graph/nl-schedule";
39
+ import { isScheduledRunOverdue } from "@/src/scheduling/status";
38
40
  import { ScheduleConditionPicker } from "@/components/scheduling/ScheduleConditionPicker";
39
41
  import {
40
42
  TASK_WORKER_DEFAULT_PROMPT as LINEAR_WORKER_DEFAULT_PROMPT,
@@ -68,18 +70,12 @@ const RichTextEditor = dynamic(() => import("@/components/RichTextEditor"), {
68
70
 
69
71
  // ── Helpers ──────────────────────────────────────────────────────────────────
70
72
 
71
- function isJobOverdue(job: { nextRunAt: number | null; lastRunAt: number | null; prevScheduledAt?: number | null; state: string }): boolean {
72
- if (job.state !== "active") return false;
73
- // Case 1: next run is in the past and hasn't run yet
74
- if (job.nextRunAt !== null && job.nextRunAt - Date.now() < 0) {
75
- if (job.lastRunAt && job.lastRunAt >= job.nextRunAt) return false;
76
- return true;
77
- }
78
- // Case 2: task ran, but late — compare last run against previous scheduled time
79
- if (job.prevScheduledAt && job.lastRunAt) {
80
- return job.lastRunAt > job.prevScheduledAt + 5 * 60_000; // 5 min grace
81
- }
82
- return false;
73
+ function isJobOverdue(job: Pick<PromptJob, "nextRunAt" | "lastRunAt" | "state">): boolean {
74
+ return isScheduledRunOverdue({
75
+ state: job.state,
76
+ nextScheduledAt: job.nextRunAt,
77
+ lastCompletedAt: job.lastRunAt,
78
+ });
83
79
  }
84
80
 
85
81
  function formatNextRun(epochMs: number | null, state: string): string {
@@ -133,7 +129,7 @@ function SectionLabel({ children }: { children: React.ReactNode }) {
133
129
 
134
130
  // ── Create/Edit Modal ────────────────────────────────────────────────────────
135
131
 
136
- interface AgentOption {
132
+ export interface AgentOption {
137
133
  id: string;
138
134
  name: string;
139
135
  provider: string;
@@ -163,12 +159,12 @@ function Label({ children }: { children: React.ReactNode }) {
163
159
  );
164
160
  }
165
161
 
166
- function agentAvatar(id: string, color: string, size = 24) {
162
+ export function agentAvatar(id: string, color: string, size = 24) {
167
163
  const bg = color ? color.replace("#", "") : "e2e8f0";
168
164
  return `https://api.dicebear.com/9.x/bottts-neutral/svg?seed=${encodeURIComponent(id)}&size=${size}&backgroundColor=${bg}`;
169
165
  }
170
166
 
171
- function AgentDropdown({
167
+ export function AgentDropdown({
172
168
  agents,
173
169
  value,
174
170
  onChange,
@@ -178,8 +174,23 @@ function AgentDropdown({
178
174
  onChange: (id: string) => void;
179
175
  }) {
180
176
  const [open, setOpen] = useState(false);
177
+ const [query, setQuery] = useState("");
181
178
  const selected = agents.find((a) => a.id === value);
182
179
 
180
+ useEffect(() => {
181
+ if (!open) setQuery("");
182
+ }, [open]);
183
+
184
+ const q = query.trim().toLowerCase();
185
+ const filteredAgents = q
186
+ ? agents.filter(
187
+ (a) =>
188
+ a.name.toLowerCase().includes(q) ||
189
+ a.provider.toLowerCase().includes(q) ||
190
+ (a.model ?? "").toLowerCase().includes(q)
191
+ )
192
+ : agents;
193
+
183
194
  return (
184
195
  <div className="relative">
185
196
  <Label>Agent</Label>
@@ -217,38 +228,62 @@ function AgentDropdown({
217
228
  </button>
218
229
 
219
230
  {open && (
220
- <div className="absolute z-20 mt-1 w-full rounded-lg border border-[var(--card-border)] bg-[var(--card-bg)] shadow-lg max-h-[280px] overflow-y-auto">
221
- {agents.map((a) => (
222
- <button
223
- key={a.id}
224
- type="button"
225
- onClick={() => {
226
- onChange(a.id);
227
- setOpen(false);
228
- }}
229
- className={`w-full flex items-center gap-2.5 px-3 py-2.5 text-left transition-colors hover:bg-[var(--muted)] ${value === a.id ? "bg-[var(--muted)]" : ""}`}
230
- >
231
- <img
232
- src={agentAvatar(a.id, a.color)}
233
- alt=""
234
- className="size-6 rounded-full shrink-0"
231
+ <div className="absolute z-20 mt-1 w-full rounded-lg border border-[var(--card-border)] bg-[var(--card-bg)] shadow-lg flex flex-col max-h-[320px]">
232
+ <div className="sticky top-0 shrink-0 border-b border-[var(--card-border)] bg-[var(--card-bg)] px-2 py-2">
233
+ <div className="relative">
234
+ <Search
235
+ size={12}
236
+ className="absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)]"
235
237
  />
236
- <div className="min-w-0 flex-1">
237
- <div className="text-xs font-medium text-[var(--foreground)] truncate">
238
- {a.name}
239
- </div>
240
- <div className="text-[10px] text-[var(--muted-foreground)]">
241
- {a.provider}
242
- {a.model ? ` / ${a.model}` : ""}
243
- </div>
238
+ <input
239
+ type="text"
240
+ value={query}
241
+ onChange={(e) => setQuery(e.target.value)}
242
+ autoFocus
243
+ placeholder="Search agents..."
244
+ className="w-full rounded-md border border-[var(--card-border)] bg-[var(--muted)] pl-7 pr-2 py-1.5 text-xs text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] focus:outline-none focus:border-[var(--foreground)]"
245
+ />
246
+ </div>
247
+ </div>
248
+ <div className="min-h-0 flex-1 overflow-y-auto">
249
+ {filteredAgents.length === 0 ? (
250
+ <div className="px-3 py-4 text-center text-[11px] text-[var(--muted-foreground)]">
251
+ No agents match "{query}"
244
252
  </div>
245
- {value === a.id && (
246
- <span className="text-xs text-[var(--foreground)]">
247
- &#10003;
248
- </span>
249
- )}
250
- </button>
251
- ))}
253
+ ) : (
254
+ filteredAgents.map((a) => (
255
+ <button
256
+ key={a.id}
257
+ type="button"
258
+ onClick={() => {
259
+ onChange(a.id);
260
+ setOpen(false);
261
+ }}
262
+ className={`w-full flex items-center gap-2.5 px-3 py-2.5 text-left transition-colors hover:bg-[var(--muted)] ${value === a.id ? "bg-[var(--muted)]" : ""}`}
263
+ >
264
+ <img
265
+ src={agentAvatar(a.id, a.color)}
266
+ alt=""
267
+ className="size-6 rounded-full shrink-0"
268
+ />
269
+ <div className="min-w-0 flex-1">
270
+ <div className="text-xs font-medium text-[var(--foreground)] truncate">
271
+ {a.name}
272
+ </div>
273
+ <div className="text-[10px] text-[var(--muted-foreground)]">
274
+ {a.provider}
275
+ {a.model ? ` / ${a.model}` : ""}
276
+ </div>
277
+ </div>
278
+ {value === a.id && (
279
+ <span className="text-xs text-[var(--foreground)]">
280
+ &#10003;
281
+ </span>
282
+ )}
283
+ </button>
284
+ ))
285
+ )}
286
+ </div>
252
287
  </div>
253
288
  )}
254
289
  </div>
@@ -1,228 +1,83 @@
1
1
  "use client";
2
2
 
3
- import { useEffect, useState } from "react";
4
- import { FolderGit2, ArrowRight, Pencil, Plus, Trash2, X } from "lucide-react";
5
- import { useProjects, type ProjectRepoInput } from "@/hooks/useProjects";
6
-
7
- interface Repo {
8
- id: string;
9
- name: string;
10
- path?: string;
11
- git_url?: string;
12
- }
3
+ import { ArrowRight, FolderGit2, FolderOpen } from "lucide-react";
4
+ import { useProjectWorkspace } from "@/hooks/useProjectWorkspace";
5
+ import { buildWorkspaceCategoryGroups } from "@/lib/project-workspace";
13
6
 
14
7
  interface FoldersSummaryCardProps {
15
8
  projectId: string;
16
- repos: Repo[];
17
9
  onViewAll?: () => void;
18
10
  }
19
11
 
20
- export function FoldersSummaryCard({ projectId, repos, onViewAll }: FoldersSummaryCardProps) {
21
- const { updateProject } = useProjects();
22
- const [items, setItems] = useState(repos);
23
- const [isAdding, setIsAdding] = useState(false);
24
- const [editingId, setEditingId] = useState<string | null>(null);
25
- const [draftName, setDraftName] = useState("");
26
- const [draftPath, setDraftPath] = useState("");
27
- const [status, setStatus] = useState<string | null>(null);
28
-
29
- useEffect(() => {
30
- setItems(repos);
31
- }, [repos]);
32
-
33
- const setFeedback = (message: string) => {
34
- setStatus(message);
35
- window.setTimeout(() => setStatus(null), 2500);
36
- };
37
-
38
- const toPayload = (nextRepos: Repo[]): ProjectRepoInput[] =>
39
- nextRepos.map((repo) => ({
40
- id: repo.id,
41
- name: repo.name,
42
- path: repo.path,
43
- git_url: repo.git_url,
44
- }));
45
-
46
- const resetDraft = () => {
47
- setDraftName("");
48
- setDraftPath("");
49
- setEditingId(null);
50
- setIsAdding(false);
51
- };
52
-
53
- const startAdd = () => {
54
- setEditingId(null);
55
- setDraftName("");
56
- setDraftPath("");
57
- setIsAdding(true);
58
- };
59
-
60
- const startEdit = (repo: Repo) => {
61
- setIsAdding(false);
62
- setEditingId(repo.id);
63
- setDraftName(repo.name);
64
- setDraftPath(repo.path ?? "");
65
- };
66
-
67
- const handleSaveNew = async () => {
68
- const name = draftName.trim();
69
- const path = draftPath.trim();
70
- if (!name || !path) return;
71
-
72
- const nextItems = [...items, { id: `tmp-${Date.now()}`, name, path }];
73
- setItems(nextItems);
74
- resetDraft();
75
- try {
76
- await updateProject(projectId, {
77
- repos: [...toPayload(items), { name, path }],
78
- });
79
- setFeedback("Folder added");
80
- } catch {
81
- setItems(items);
82
- setFeedback("Failed to add folder");
83
- }
84
- };
85
-
86
- const handleSaveEdit = async (repoId: string) => {
87
- const name = draftName.trim();
88
- const path = draftPath.trim();
89
- if (!name || !path) return;
90
-
91
- const previousItems = items;
92
- const nextItems = items.map((repo) => (repo.id === repoId ? { ...repo, name, path } : repo));
93
- setItems(nextItems);
94
- resetDraft();
95
- try {
96
- await updateProject(projectId, {
97
- repos: toPayload(nextItems),
98
- });
99
- setFeedback("Folder updated");
100
- } catch {
101
- setItems(previousItems);
102
- setFeedback("Failed to update folder");
103
- }
104
- };
105
-
106
- const handleDelete = async (repoId: string) => {
107
- const previousItems = items;
108
- const nextItems = items.filter((repo) => repo.id !== repoId);
109
- setItems(nextItems);
110
- if (editingId === repoId) {
111
- resetDraft();
112
- }
113
- try {
114
- await updateProject(projectId, {
115
- repos: toPayload(nextItems),
116
- });
117
- setFeedback("Folder deleted");
118
- } catch {
119
- setItems(previousItems);
120
- setFeedback("Failed to delete folder");
121
- }
122
- };
12
+ export function FoldersSummaryCard({ projectId, onViewAll }: FoldersSummaryCardProps) {
13
+ const { workspace, entryCount, isLoading, error } = useProjectWorkspace(projectId);
14
+ const visibleGroups = buildWorkspaceCategoryGroups(workspace).filter((group) => group.entries.length > 0).slice(0, 3);
123
15
 
124
16
  return (
125
17
  <div className="rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4">
126
- <div className="flex items-center justify-between mb-3">
18
+ <div className="mb-3 flex items-center justify-between">
127
19
  <div className="flex items-center gap-2">
128
20
  <FolderGit2 className="h-4 w-4 text-[var(--muted-foreground)]" />
129
- <span className="text-sm font-medium text-[var(--foreground)]">Folders</span>
130
- {items.length > 0 && (
21
+ <span className="text-sm font-medium text-[var(--foreground)]">Workspace Map</span>
22
+ {entryCount > 0 && (
131
23
  <span className="rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]">
132
- {items.length}
24
+ {entryCount}
133
25
  </span>
134
26
  )}
135
27
  </div>
136
- <div className="flex items-center gap-2">
28
+ {onViewAll && (
137
29
  <button
138
30
  type="button"
139
- onClick={startAdd}
31
+ onClick={onViewAll}
140
32
  className="flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]"
141
33
  >
142
- <Plus className="w-3 h-3" />
143
- Add
34
+ View all <ArrowRight className="h-3 w-3" />
144
35
  </button>
145
- {onViewAll && (
146
- <button onClick={onViewAll} className="flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]">
147
- View all <ArrowRight className="w-3 h-3" />
148
- </button>
149
- )}
150
- </div>
36
+ )}
151
37
  </div>
152
38
 
153
- {status && <p className="mb-3 text-xs text-[var(--muted-foreground)]">{status}</p>}
39
+ {isLoading && (
40
+ <p className="text-sm text-[var(--muted-foreground)]">Loading workspace map...</p>
41
+ )}
154
42
 
155
- {(isAdding || editingId) && (
156
- <div className="mb-3 space-y-2 rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-3">
157
- <input
158
- value={draftName}
159
- onChange={(e) => setDraftName(e.target.value)}
160
- className="input w-full text-sm"
161
- placeholder="Folder name"
162
- autoFocus
163
- />
164
- <input
165
- value={draftPath}
166
- onChange={(e) => setDraftPath(e.target.value)}
167
- className="input w-full text-sm"
168
- placeholder="Local path"
169
- />
170
- <div className="flex items-center gap-2">
171
- <button
172
- type="button"
173
- onClick={() => {
174
- if (editingId) {
175
- void handleSaveEdit(editingId);
176
- } else {
177
- void handleSaveNew();
178
- }
179
- }}
180
- disabled={!draftName.trim() || !draftPath.trim()}
181
- className="rounded-lg bg-[var(--foreground)] px-3 py-1.5 text-xs font-medium text-[var(--background)] disabled:opacity-40"
182
- >
183
- Save
184
- </button>
185
- <button
186
- type="button"
187
- onClick={resetDraft}
188
- className="flex items-center gap-1 rounded-lg px-2 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]"
189
- >
190
- <X className="w-3 h-3" />
191
- Cancel
192
- </button>
193
- </div>
194
- </div>
43
+ {!isLoading && error && (
44
+ <p className="text-sm text-[var(--destructive)]">Unable to load the workspace map right now.</p>
195
45
  )}
196
46
 
197
- {items.length === 0 ? (
198
- <p className="text-sm text-[var(--muted-foreground)]">No folders linked</p>
199
- ) : (
200
- <div className="space-y-2">
201
- {items.slice(0, 5).map((repo) => (
202
- <div key={repo.id} className="flex items-center gap-2 text-sm">
203
- <FolderGit2 className="h-4 w-4 shrink-0 text-[var(--muted-foreground)]" />
204
- <div className="min-w-0 flex-1">
205
- <div className="truncate text-[var(--foreground)]">{repo.name}</div>
206
- {repo.path && (
207
- <div className="truncate text-xs text-[var(--muted-foreground)]">{repo.path}</div>
47
+ {!isLoading && !error && entryCount === 0 && (
48
+ <p className="text-sm text-[var(--muted-foreground)]">
49
+ No workspace locations mapped yet. Add repositories, docs, or scripts so agents know where to work.
50
+ </p>
51
+ )}
52
+
53
+ {!isLoading && !error && entryCount > 0 && (
54
+ <div className="space-y-3">
55
+ {visibleGroups.map((group) => (
56
+ <div key={group.id} className="rounded-xl border border-[var(--border)] bg-[var(--secondary)]/30 px-3 py-2.5">
57
+ <div className="mb-2 flex items-center justify-between gap-2">
58
+ <span className="text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]">
59
+ {group.label}
60
+ </span>
61
+ <span className="text-[11px] text-[var(--muted-foreground)]">{group.entries.length}</span>
62
+ </div>
63
+ <div className="space-y-2">
64
+ {group.entries.slice(0, 2).map((entry) => (
65
+ <div key={entry.id} className="flex items-start gap-2 text-sm">
66
+ <FolderOpen className="mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]" />
67
+ <div className="min-w-0 flex-1">
68
+ <div className="truncate text-[var(--foreground)]">{entry.name}</div>
69
+ <div className="truncate text-xs text-[var(--muted-foreground)]">
70
+ {entry.path || entry.purpose || "No path set yet"}
71
+ </div>
72
+ </div>
73
+ </div>
74
+ ))}
75
+ {group.entries.length > 2 && (
76
+ <p className="text-xs text-[var(--muted-foreground)]">
77
+ + {group.entries.length - 2} more
78
+ </p>
208
79
  )}
209
80
  </div>
210
- <button
211
- type="button"
212
- onClick={() => startEdit(repo)}
213
- className="p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]"
214
- aria-label={`Edit ${repo.name}`}
215
- >
216
- <Pencil className="w-3 h-3" />
217
- </button>
218
- <button
219
- type="button"
220
- onClick={() => void handleDelete(repo.id)}
221
- className="p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]"
222
- aria-label={`Delete ${repo.name}`}
223
- >
224
- <Trash2 className="w-3 h-3" />
225
- </button>
226
81
  </div>
227
82
  ))}
228
83
  </div>