@mndrk/agx 2.0.55 → 2.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/README.md +5 -0
  2. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  3. package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +1 -0
  4. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  6. package/cloud-runtime/standalone/apps/local/.next/required-server-files.json +5 -0
  7. package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +8 -0
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js +2 -2
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +3 -2
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +17 -7
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +13 -13
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js +2 -2
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +4 -4
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +5 -5
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +5 -5
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +2 -2
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/app-paths-manifest.json +3 -0
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/build-manifest.json +18 -0
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/next-font-manifest.json +11 -0
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/react-loadable-manifest.json +1 -0
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/server-reference-manifest.json +4 -0
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js +14 -0
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.map +5 -0
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -0
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +3 -0
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +2 -2
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +3 -3
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  215. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  216. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  217. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  219. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  220. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  221. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  222. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  225. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  226. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  227. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  228. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  229. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  230. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  231. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  232. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  233. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  234. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +1 -0
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__09joc_o._.js +1 -1
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g50c6p._.js +237 -0
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0o315az._.js +1 -1
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0t2jk2r._.js +2 -2
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tdixb0._.js +49 -0
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0gvjvx7._.js → [root-of-the-server]__0xdp_8-._.js} +25 -25
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0y42h_~._.js +2 -2
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~fjhfa._.js +3 -0
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_12yasaj._.js +9 -0
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_022nz2u._.js +3 -0
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_0i1av_r._.js +11 -10
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0yvelwy.js +3 -0
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/02dz_local__next-internal_server_app_projects_[slug]_folders_page_actions_03fg4j9.js +3 -0
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0qzjdog._.js +3 -0
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0a-mbbj._.js +3 -0
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0e2_v_.._.js +3 -0
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0w3hl3p._.js +3 -0
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__07johgg._.js +3 -0
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__08d5c~o._.js +3 -0
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0_n~ybp._.js +3 -0
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0fl7_-o._.js +18 -0
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0h~rb5r._.js +3 -0
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r3w68h._.js +18 -0
  258. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0x7k~pk._.js +3 -0
  259. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0hd2vo4._.js → [root-of-the-server]__0y8j6el._.js} +2 -2
  260. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0yme9fy._.js +3 -0
  261. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~7q5sw._.js +3 -0
  262. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13eqcxp._.js +3 -0
  263. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0s~0ump._.js → _064h43p._.js} +2 -2
  264. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0742x_.._.js +3 -0
  265. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_09b42z9._.js → _09~glsn._.js} +2 -2
  266. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +3 -0
  267. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0fwy5tm._.js +7 -0
  268. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ndrb_0._.js +2 -2
  269. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +3 -0
  270. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ufdu.z._.js +7 -0
  271. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_03rf_sb._.js → _0wk3skw._.js} +2 -2
  272. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yffwm4._.js +2 -2
  273. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +3 -0
  274. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_04hvzn_._.js +3 -0
  275. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_4hk8x._.js +3 -0
  276. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +1 -1
  277. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +3 -0
  278. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0h3mfm7._.js +3 -0
  279. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0nvzo3y._.js +3 -0
  280. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +1 -1
  281. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_execution-graph_page_tsx_0tn2sx9._.js +2 -2
  282. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_0ju618z._.js +3 -0
  283. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_graph_[taskId]_page_tsx_0bctfd-._.js +1 -1
  284. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
  285. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +2 -2
  286. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
  287. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_page_tsx_06czvz-._.js +3 -0
  288. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +12 -12
  289. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_orphans_page_tsx_0sdv.11._.js +4 -4
  290. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TaskCard_tsx_0e35_z5._.js +6 -6
  291. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +3 -3
  292. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +4 -4
  293. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
  294. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mk0s0o.js +4 -0
  295. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  296. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  297. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
  298. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +4 -0
  299. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  300. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  301. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  302. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  303. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-_ukhpeg429c.js +16 -0
  304. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-olq~7zw3wjy.js +1 -0
  305. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0142ce0jj3j7r.js → 0-vo_x2cxmjm3.js} +1 -1
  306. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.4d8rshxivwh.js +20 -0
  307. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 00lise4d-u8d1.js} +1 -1
  308. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0~apd0q5_i88z.js → 02p3n7faotpr9.js} +2 -2
  309. package/cloud-runtime/standalone/apps/local/.next/static/chunks/02zcxdul-1jaf.js +28 -0
  310. package/cloud-runtime/standalone/apps/local/.next/static/chunks/055bzj5jfgzr0.js +1 -0
  311. package/cloud-runtime/standalone/apps/local/.next/static/chunks/05c-~4v_jrblf.css +1 -0
  312. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07646a0h94826.js +3 -0
  313. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08~pgzjb13k_v.js +5 -0
  314. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09wzd7y~tk-3~.js +1 -0
  315. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0px65ynyk3t1d.js → 0bchtyu6m.2yv.js} +7 -7
  316. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0brmd4~76pthy.js +20 -0
  317. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +1 -0
  318. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0.a4-dh~x9sa3.js → 0hudzktaaxr4g.js} +2 -2
  319. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{09-_2lcshmjl5.js → 0hzq698w6f4m6.js} +1 -1
  320. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0i.su2yr26wb6.js +37 -0
  321. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jonp-o8lh-4j.js +1 -0
  322. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jsbvcyub73d9.js +1 -0
  323. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l2pt2td_87wr.js +5 -0
  324. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +1 -0
  325. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lgb.0~i1xvv-.js +1 -0
  326. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lkal3uvr6_~2.js +1 -0
  327. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mvqoz13v0o2a.js +5 -0
  328. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0o9cxba_5mv2c.js +5 -0
  329. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p7s38p3bcffh.js +1 -0
  330. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0q2dgbluvgxf2.js +16 -0
  331. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +1 -0
  332. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0h_bwlg~kk8lz.js → 0rey9zfvm3yhd.js} +2 -2
  333. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ucg8e2wkd8gf.js +1 -0
  334. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0uve8xrt~0a2e.js +1 -0
  335. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0x_pewz9npq~q.js +1 -0
  336. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +1 -0
  337. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0ov5lu0tz2o2e.js → 104xjvrf6y-zq.js} +1 -1
  338. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0rm7v.1y6qcni.js → 11-u35xqxu~i-.js} +1 -1
  339. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +1 -0
  340. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0826uh6nmsi5l.js → 1503vb7lb6.g1.js} +1 -1
  341. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0o0hwfzwwty4b.js → 15jlly_p-g4c8.js} +2 -2
  342. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16nozeadjid9-.js +5 -0
  343. package/cloud-runtime/standalone/apps/local/.next/static/chunks/177-q0wwdi0qe.js +1 -0
  344. package/cloud-runtime/standalone/apps/local/agx-server.js +4055 -0
  345. package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +10 -2
  346. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.ts +16 -0
  347. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +8 -1
  348. package/cloud-runtime/standalone/apps/local/app/globals.css +67 -5
  349. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/folders/page.tsx +25 -0
  350. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +19 -5
  351. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/objectives/[objectiveId]/page.tsx +7 -2
  352. package/cloud-runtime/standalone/apps/local/bundled-server.ts +45 -0
  353. package/cloud-runtime/standalone/apps/local/components/ActionToolbar.tsx +5 -2
  354. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +35 -3
  355. package/cloud-runtime/standalone/apps/local/components/ContextMenu.tsx +2 -2
  356. package/cloud-runtime/standalone/apps/local/components/FloatingPanel.tsx +36 -14
  357. package/cloud-runtime/standalone/apps/local/components/IconButton.tsx +10 -2
  358. package/cloud-runtime/standalone/apps/local/components/KanbanBoard.tsx +84 -3
  359. package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +382 -13
  360. package/cloud-runtime/standalone/apps/local/components/LogTimeline.tsx +4 -1
  361. package/cloud-runtime/standalone/apps/local/components/NowRunningPanel.tsx +3 -1
  362. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +46 -6
  363. package/cloud-runtime/standalone/apps/local/components/SearchCombo.tsx +3 -3
  364. package/cloud-runtime/standalone/apps/local/components/SortableTaskCard.tsx +21 -3
  365. package/cloud-runtime/standalone/apps/local/components/StatusCircle.tsx +3 -3
  366. package/cloud-runtime/standalone/apps/local/components/TaskCard.tsx +51 -1
  367. package/cloud-runtime/standalone/apps/local/components/chat-ui/ChatContainer.tsx +15 -2
  368. package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +3 -3
  369. package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +76 -9
  370. package/cloud-runtime/standalone/apps/local/components/graph/ExecutionGraphPanel.tsx +4 -1
  371. package/cloud-runtime/standalone/apps/local/components/graph/GraphFirstView.tsx +6 -2
  372. package/cloud-runtime/standalone/apps/local/components/graph/NodeDetailPanel.tsx +29 -14
  373. package/cloud-runtime/standalone/apps/local/components/graph/NodeInspector.tsx +9 -6
  374. package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +16 -16
  375. package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +856 -0
  376. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveActivityTimeline.tsx +40 -32
  377. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +172 -49
  378. package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +4 -4
  379. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +347 -168
  380. package/cloud-runtime/standalone/apps/local/components/projects/ProjectSearchBar.tsx +4 -2
  381. package/cloud-runtime/standalone/apps/local/components/projects/ScheduledTasksSummaryCard.tsx +19 -19
  382. package/cloud-runtime/standalone/apps/local/components/projects/TeamsSummaryCard.tsx +10 -10
  383. package/cloud-runtime/standalone/apps/local/components/projects/TeamsView.tsx +50 -50
  384. package/cloud-runtime/standalone/apps/local/components/projects/WorkingNowCard.tsx +12 -12
  385. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectiveCard.tsx +13 -10
  386. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectivesSection.tsx +7 -7
  387. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathCard.tsx +2 -2
  388. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathsSection.tsx +9 -9
  389. package/cloud-runtime/standalone/apps/local/components/scheduling/ScheduleConditionPicker.tsx +3 -3
  390. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +211 -77
  391. package/cloud-runtime/standalone/apps/local/components/terminal/TerminalSessionList.tsx +3 -1
  392. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +72 -21
  393. package/cloud-runtime/standalone/apps/local/hooks/useInputCapabilities.ts +74 -0
  394. package/cloud-runtime/standalone/apps/local/lib/app-config.ts +35 -0
  395. package/cloud-runtime/standalone/apps/local/lib/pty-manager.ts +5 -1
  396. package/cloud-runtime/standalone/apps/local/lib/terminal-server.ts +182 -0
  397. package/cloud-runtime/standalone/apps/local/next.config.ts +2 -1
  398. package/cloud-runtime/standalone/apps/local/package.json +2 -2
  399. package/cloud-runtime/standalone/apps/local/playwright.config.ts +8 -0
  400. package/cloud-runtime/standalone/apps/local/server.js +1 -1
  401. package/cloud-runtime/standalone/apps/local/server.ts +14 -158
  402. package/cloud-runtime/standalone/apps/local/src/graph/types.ts +2 -0
  403. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/cron.ts +11 -0
  404. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +325 -88
  405. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +20 -0
  406. package/cloud-runtime/standalone/apps/local/state/windowState.ts +11 -0
  407. package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +65 -0
  408. package/cloud-runtime/standalone/apps/local/worker/index.js +0 -4
  409. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  410. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  411. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  412. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  413. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  414. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  415. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  416. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  417. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  418. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  419. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.node +0 -0
  420. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.pdb +0 -0
  421. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  422. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  423. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.dll +0 -0
  424. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.pdb +0 -0
  425. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  426. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  427. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  428. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  429. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  430. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  431. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
  432. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.pdb +0 -0
  433. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
  434. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  435. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
  436. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.pdb +0 -0
  437. package/lib/cli/daemon.js +13 -2
  438. package/lib/cli/onboarding.js +5 -6
  439. package/lib/cli/runCli.js +1 -1
  440. package/lib/cloud/client.js +1 -1
  441. package/lib/commands/chat.js +37 -11
  442. package/lib/commands/daemonBoard.js +19 -13
  443. package/lib/config/cloudConfig.js +1 -1
  444. package/lib/orchestrator/httpClient.js +1 -1
  445. package/lib/prompts/templates.js +8 -9
  446. package/package.json +1 -1
  447. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__01ol22y._.js +0 -3
  448. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__088h0r2._.js +0 -3
  449. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__094z9yf._.js +0 -9
  450. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0avz575._.js +0 -49
  451. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0xxf2a0.js +0 -3
  452. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0xd_mxu._.js +0 -3
  453. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__044xm0q._.js +0 -3
  454. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__066ay_e._.js +0 -3
  455. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__09smg3p._.js +0 -18
  456. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0iix1sf._.js +0 -3
  457. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r54zr9._.js +0 -3
  458. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0s8z2_c._.js +0 -18
  459. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w1mm2j._.js +0 -3
  460. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0wq3ukc._.js +0 -3
  461. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13h-0om._.js +0 -3
  462. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03-mlx0._.js +0 -7
  463. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ag3.tl._.js +0 -7
  464. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0dh_hx0._.js +0 -3
  465. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0h8cbsi._.js +0 -3
  466. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0i1ffhz._.js +0 -3
  467. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0nlki7b._.js +0 -3
  468. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_q01av._.js +0 -3
  469. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0eh.4j7._.js +0 -3
  470. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0qaowqy._.js +0 -3
  471. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0s0iy2_._.js +0 -3
  472. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0zr-_na._.js +0 -3
  473. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_10qsqky._.js +0 -3
  474. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.bv3h68wo33z.js +0 -1
  475. package/cloud-runtime/standalone/apps/local/.next/static/chunks/016.x9zt9~rsh.js +0 -16
  476. package/cloud-runtime/standalone/apps/local/.next/static/chunks/027-6dwgpb0cy.js +0 -1
  477. package/cloud-runtime/standalone/apps/local/.next/static/chunks/031720jijg_th.js +0 -1
  478. package/cloud-runtime/standalone/apps/local/.next/static/chunks/03m1xs0rztynh.js +0 -16
  479. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07o~9mm~xds_b.js +0 -1
  480. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08zgoptetnxjj.css +0 -1
  481. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09_yj-9nfh48m.js +0 -1
  482. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09c7ssmgohk7l.js +0 -1
  483. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0awbe2r3qazge.css +0 -1
  484. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0dro-bz6f72z0.js +0 -1
  485. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gbunx8z.~i4x.js +0 -5
  486. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ge81r~ap.u7n.js +0 -28
  487. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ghg5160qeazw.js +0 -5
  488. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gl_8hdxl5qnd.js +0 -37
  489. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0g~v8p6_pc46-.js +0 -1
  490. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jb4f8425s.-2.js +0 -1
  491. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kukkarp4un0o.js +0 -1
  492. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0m.2b-cekea8b.js +0 -1
  493. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pt8_y9asrg~7.js +0 -1
  494. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0wyg4lymaq0hg.js +0 -3
  495. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xl~1ux2f~rcu.js +0 -1
  496. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y7-eze-w7~b4.js +0 -5
  497. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y8e--tok1214.js +0 -5
  498. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0yy~0bgsz~o6-.js +0 -1
  499. package/cloud-runtime/standalone/apps/local/.next/static/chunks/100xrwo-45nrg.js +0 -20
  500. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14h3qxwuo~1q9.js +0 -20
  501. package/cloud-runtime/standalone/apps/local/.next/static/chunks/17oesq5eds3xi.js +0 -1
  502. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_buildManifest.js +0 -0
  503. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_clientMiddlewareManifest.js +0 -0
  504. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,794731,e=>{"use strict";let r=(0,e.i(363732).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",0,r],794731)},196630,e=>{"use strict";let r=(0,e.i(363732).default)("folder-git-2",[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);e.s(["FolderGit2",0,r],196630)},564957,e=>{"use strict";let r=(0,e.i(363732).default)("brain-circuit",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M9 13a4.5 4.5 0 0 0 3-4",key:"10igwf"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M12 13h4",key:"1ku699"}],["path",{d:"M12 18h6a2 2 0 0 1 2 2v1",key:"105ag5"}],["path",{d:"M12 8h8",key:"1lhi5i"}],["path",{d:"M16 8V5a2 2 0 0 1 2-2",key:"u6izg6"}],["circle",{cx:"16",cy:"13",r:".5",key:"ry7gng"}],["circle",{cx:"18",cy:"3",r:".5",key:"1aiba7"}],["circle",{cx:"20",cy:"21",r:".5",key:"yhc1fs"}],["circle",{cx:"20",cy:"8",r:".5",key:"1e43v0"}]]);e.s(["BrainCircuit",0,r],564957)},109851,e=>{"use strict";var r=e.i(843476),t=e.i(271645),a=e.i(208343),s=e.i(564957),o=e.i(575479),l=e.i(196630),n=e.i(929870),d=e.i(8707);let i=(0,e.i(363732).default)("square-pen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);var c=e.i(794731),x=e.i(797167),u=e.i(524123);function m(e){return e?{id:e.id,content:e.content,created_at:e.createdAt,updated_at:e.updatedAt,source:e.sourceType}:null}function p({active:e,onClick:t,icon:a,label:s}){return(0,r.jsxs)("button",{onClick:t,className:`flex items-center gap-2 rounded-lg px-4 py-1.5 text-xs font-semibold transition-all ${e?"bg-[var(--card-bg)] text-[var(--foreground)] shadow-[var(--shadow-sm)] ring-1 ring-[var(--border)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:[a,s]})}function v({label:e,value:t,sub:a}){return(0,r.jsxs)("div",{className:"flex flex-col rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-4",children:[(0,r.jsx)("span",{className:"text-[10px] font-black uppercase tracking-[0.2em] text-[var(--app-shell-soft-text)]",children:e}),(0,r.jsx)("span",{className:"mt-1 text-2xl font-bold text-[var(--foreground)]",children:t}),(0,r.jsx)("span",{className:"mt-1 text-[10px] text-[var(--app-shell-soft-text)]",children:a})]})}function g({note:e,emptyLabel:s,scope:o,subjectId:l,onSaved:n}){let[d,c]=(0,t.useState)(!1),[u,p]=(0,t.useState)(e?.content??""),[v,h]=(0,t.useState)(!1),[b,f]=(0,t.useState)(null);(0,t.useEffect)(()=>{p(e?.content??"")},[e?.id,e?.content]);let j=!!e?.content.trim(),y=e?.updated_at??e?.created_at,N=e?.source;async function w(){if(l){h(!0),f(null);try{let e=await fetch("/api/knowledge-notes",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scope:o,subjectId:l,content:u})}),r=await e.json().catch(()=>({}));if(!e.ok)throw Error(r.error||"Failed to save knowledge note");let t=m(r.note);n(t),p(t?.content??""),c(!1)}catch(e){f(e instanceof Error?e.message:"Failed to save knowledge note")}finally{h(!1)}}}return j?(0,r.jsxs)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-4",children:[(0,r.jsxs)("div",{className:"mb-3 flex items-start justify-between gap-3",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-[11px] text-[var(--app-shell-soft-text)]",children:[y?(0,r.jsxs)("span",{children:["Updated ",new Date(y).toLocaleString()]}):null,N?(0,r.jsx)("span",{children:N}):null]}),d?null:(0,r.jsxs)("button",{type:"button",onClick:()=>{p(e?.content??""),f(null),c(!0)},className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--border)] bg-[var(--card-bg)] px-3 py-1.5 text-xs font-medium text-[var(--foreground)]",children:[(0,r.jsx)(i,{className:"h-3.5 w-3.5"}),"Edit"]})]}),d?(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)("textarea",{value:u,onChange:e=>p(e.target.value),rows:12,className:"w-full resize-y rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-4 py-3 text-sm text-[var(--foreground)] focus:border-[var(--primary)] focus:outline-none focus:ring-2 focus:ring-[var(--ring)]",placeholder:"Write the living knowledge note in markdown..."}),b?(0,r.jsx)("p",{className:"text-xs text-red-500",children:b}):null,(0,r.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>{p(e?.content??""),f(null),c(!1)},className:"inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-xs font-medium text-[var(--muted-foreground)]",disabled:v,children:[(0,r.jsx)(x.X,{className:"h-3.5 w-3.5"}),"Cancel"]}),(0,r.jsx)("button",{type:"button",onClick:()=>void w(),disabled:v,className:"inline-flex items-center gap-1.5 rounded-lg bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-[var(--primary-foreground)] disabled:opacity-60",children:v?"Saving...":"Save"})]})]}):(0,r.jsx)("div",{className:"text-sm leading-relaxed text-[var(--secondary-foreground)]",children:(0,r.jsx)(a.Markdown,{content:e?.content??""})})]}):(0,r.jsxs)("div",{className:"rounded-xl border border-dashed border-[var(--border)] px-4 py-6 text-sm text-[var(--muted-foreground)]",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,r.jsx)("span",{children:s}),(0,r.jsxs)("button",{type:"button",onClick:()=>{p(e?.content??""),f(null),c(!0)},className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--border)] bg-[var(--secondary)] px-3 py-1.5 text-xs font-medium text-[var(--foreground)]",children:[(0,r.jsx)(i,{className:"h-3.5 w-3.5"}),"Edit"]})]}),d?(0,r.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,r.jsx)("textarea",{value:u,onChange:e=>p(e.target.value),rows:10,className:"w-full resize-y rounded-xl border border-[var(--border)] bg-[var(--secondary)] px-4 py-3 text-sm text-[var(--foreground)] focus:border-[var(--primary)] focus:outline-none focus:ring-2 focus:ring-[var(--ring)]",placeholder:"Write the living knowledge note in markdown..."}),b?(0,r.jsx)("p",{className:"text-xs text-red-500",children:b}):null,(0,r.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>{p(e?.content??""),f(null),c(!1)},className:"inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-xs font-medium text-[var(--muted-foreground)]",disabled:v,children:[(0,r.jsx)(x.X,{className:"h-3.5 w-3.5"}),"Cancel"]}),(0,r.jsx)("button",{type:"button",onClick:()=>void w(),disabled:v,className:"inline-flex items-center gap-1.5 rounded-lg bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-[var(--primary-foreground)] disabled:opacity-60",children:v?"Saving...":"Save"})]})]}):null]})}function h({repo:e,systemNote:t,systemNoteMatches:a,onSystemNoteSaved:s}){return(0,r.jsxs)("div",{className:"group flex flex-col rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] p-5 shadow-[var(--shadow-sm)] transition-colors hover:border-[var(--card-hover-border)]",children:[(0,r.jsx)("div",{className:"mb-3 flex items-start justify-between",children:(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("div",{className:"flex h-9 w-9 items-center justify-center rounded-xl bg-[var(--secondary)] text-[var(--muted-foreground)]",children:(0,r.jsx)(l.FolderGit2,{size:20})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-[var(--foreground)]",children:e.name}),(0,r.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:e.path||"No path set"})]})]})}),(0,r.jsxs)("div",{className:"mb-3",children:[(0,r.jsx)("p",{className:"mb-2 text-[10px] font-black uppercase tracking-[0.16em] text-[var(--app-shell-soft-text)]",children:"Living Repo Note"}),(0,r.jsx)(g,{note:a?t:t?.content?{...t,content:""}:null,emptyLabel:"No repo note yet.",scope:"repo",subjectId:e.id,onSaved:s})]})]})}e.s(["default",0,function({params:e}){let{slug:a}=(0,t.use)(e),{projects:x,updateProject:b}=(0,u.useProjects)(),f=x.find(e=>e.slug===a),j=f?.id??null,{skills:y,addSkill:N,removeSkill:w}=function(e){let[r,a]=(0,t.useState)([]),[s,o]=(0,t.useState)(!0),l=(0,t.useCallback)(async()=>{if(!e){a([]),o(!1);return}try{let r=await fetch(`/api/projects/${e}/skills`);if(!r.ok)return;let t=await r.json();a(t.skills??[])}catch{}finally{o(!1)}},[e]);return(0,t.useEffect)(()=>{l()},[l]),{skills:r,isLoading:s,addSkill:(0,t.useCallback)(async(r,t)=>{if(e)try{(await fetch(`/api/projects/${e}/skills`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:r,condition:t})})).ok&&await l()}catch{}},[e,l]),removeSkill:(0,t.useCallback)(async r=>{if(e)try{(await fetch(`/api/projects/${e}/skills?skillId=${r}`,{method:"DELETE"})).ok&&a(e=>e.filter(e=>e.id!==r))}catch{}},[e]),refresh:l}}(j),[k,C]=(0,t.useState)("project"),[S,F]=(0,t.useState)(""),[L,M]=(0,t.useState)(!1),[T,z]=(0,t.useState)(""),[E,A]=(0,t.useState)(""),[P,R]=(0,t.useState)(null),[$,I]=(0,t.useState)({}),[O,_]=(0,t.useState)(!1),[U,B]=(0,t.useState)(""),[G,H]=(0,t.useState)(""),[V,q]=(0,t.useState)(null),[D,K]=(0,t.useState)(""),[J,W]=(0,t.useState)(""),[X,Z]=(0,t.useState)(null);(0,t.useEffect)(()=>{let e=!1;return async function(){if(!j)return R(null);try{let r=await fetch(`/api/knowledge-notes?scope=project&subjectId=${encodeURIComponent(j)}`),t=r.ok?await r.json():{note:null};e||R(m(t.note))}catch{e||R(null)}}(),()=>{e=!0}},[j]),(0,t.useEffect)(()=>{let e=!1;return async function(){let r=f?.repos??[];if(0===r.length)return I({});try{let t=await Promise.all(r.map(async e=>{let r=await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(e.id)}`),t=r.ok?await r.json():{note:null};return[e.id,m(t.note)]}));e||I(Object.fromEntries(t))}catch{e||I({})}}(),()=>{e=!0}},[f?.repos]);let Q=y.filter(e=>!S||e.file.toLowerCase().includes(S.toLowerCase())||(e.condition??"").toLowerCase().includes(S.toLowerCase())),Y=!S||P?.content.toLowerCase().includes(S.toLowerCase()),ee=(f?.repos??[]).filter(e=>{if(!S)return!0;let r=S.toLowerCase(),t=($[e.id]?.content??"").toLowerCase();return e.name.toLowerCase().includes(r)||(e.path??"").toLowerCase().includes(r)||t.includes(r)}),er=e=>{Z(e),window.setTimeout(()=>Z(null),2500)},et=()=>(f?.repos??[]).map(e=>({id:e.id,name:e.name,path:e.path,git_url:e.git_url,notes:e.notes})),ea=async()=>{let e=U.trim(),r=G.trim();if(f&&e&&r)try{await b(f.id,{repos:[...et(),{name:e,path:r}]}),_(!1),B(""),H(""),er("Folder added")}catch{er("Failed to add folder")}},es=async e=>{if(f)try{await b(f.id,{repos:et().filter(r=>r.id!==e)}),V===e&&(q(null),K(""),W("")),er("Folder deleted")}catch{er("Failed to delete folder")}},eo=async e=>{let r=D.trim(),t=J.trim();if(f&&r&&t)try{await b(f.id,{repos:et().map(a=>a.id===e?{...a,name:r,path:t}:a)}),q(null),K(""),W(""),er("Folder updated")}catch{er("Failed to update folder")}};return f?(0,r.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,r.jsx)("div",{className:"flex-shrink-0 border-b border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 backdrop-blur-md sm:h-14 sm:px-6 sm:py-0",children:(0,r.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,r.jsx)("span",{className:"font-semibold text-[var(--foreground)]",children:f.name}),(0,r.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"/"}),(0,r.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"Knowledge"})]}),(0,r.jsxs)("div",{className:"relative w-full sm:max-w-xs",children:[(0,r.jsx)(d.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 text-[var(--app-shell-soft-text)]",size:14}),(0,r.jsx)("input",{type:"text",placeholder:"Search notes...",value:S,onChange:e=>F(e.target.value),className:"w-full rounded-full border border-[var(--border)] bg-[var(--secondary)] py-1.5 pl-9 pr-4 text-xs focus:outline-none focus:ring-2 focus:ring-[var(--ring)] focus:border-[var(--primary)]"})]})]})}),(0,r.jsx)("div",{className:"flex-shrink-0 px-3 pb-2 pt-4 sm:px-6",children:(0,r.jsxs)("div",{className:"flex w-fit gap-1 rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-1",children:[(0,r.jsx)(p,{active:"project"===k,onClick:()=>C("project"),icon:(0,r.jsx)(s.BrainCircuit,{size:14}),label:"Project"}),(0,r.jsx)(p,{active:"repos"===k,onClick:()=>C("repos"),icon:(0,r.jsx)(l.FolderGit2,{size:14}),label:"Folders"})]})}),(0,r.jsx)("div",{className:"flex-1 overflow-y-auto px-3 pb-8 sm:px-6",children:"project"===k?(0,r.jsxs)("div",{className:"mt-2 grid grid-cols-12 gap-4 sm:gap-6",children:[(0,r.jsxs)("div",{className:"col-span-12 lg:col-span-4 space-y-4",children:[(0,r.jsxs)("div",{className:"rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] p-5 shadow-[var(--shadow-sm)]",children:[(0,r.jsx)("h3",{className:"mb-4 text-[10px] font-black uppercase tracking-[0.2em] text-[var(--app-shell-soft-text)]",children:"Overview"}),(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,r.jsx)(v,{label:"References",value:Q.length,sub:"File-backed"}),(0,r.jsx)(v,{label:"Folders",value:f.repos.length,sub:"Attached folders"})]}),(0,r.jsx)("div",{className:"mt-3",children:(0,r.jsx)(v,{label:"System Note",value:+!!P?.content,sub:"Living doc"})})]}),(0,r.jsxs)("section",{className:"rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] p-5 shadow-[var(--shadow-sm)]",children:[(0,r.jsxs)("div",{className:"mb-4 flex items-start justify-between gap-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("h2",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--foreground)]",children:[(0,r.jsx)(l.FolderGit2,{size:16,className:"text-[var(--primary)]"}),"Folders"]}),(0,r.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:"Add, edit, or remove project folders from home."})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>{_(e=>!e),q(null)},className:"inline-flex items-center gap-1 rounded-lg border border-[var(--border)] px-2.5 py-1.5 text-xs font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,r.jsx)(n.Plus,{className:"h-3.5 w-3.5"}),"Add"]})]}),X?(0,r.jsx)("p",{className:"mb-3 text-xs text-[var(--muted-foreground)]",children:X}):null,O?(0,r.jsxs)("div",{className:"mb-3 rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-3",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("input",{type:"text",value:U,onChange:e=>B(e.target.value),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--ring)]",placeholder:"Folder name"}),(0,r.jsx)("input",{type:"text",value:G,onChange:e=>H(e.target.value),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--ring)]",placeholder:"Local path"})]}),(0,r.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:()=>void ea(),disabled:!U.trim()||!G.trim(),className:"rounded-lg bg-[var(--primary)] px-3 py-1.5 text-xs font-semibold text-[var(--primary-foreground)] disabled:cursor-not-allowed disabled:opacity-50",children:"Save"}),(0,r.jsx)("button",{type:"button",onClick:()=>{_(!1),B(""),H("")},className:"rounded-lg px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:"Cancel"})]})]}):null,0===(f.repos??[]).length?(0,r.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No folders linked yet."}):(0,r.jsx)("div",{className:"space-y-2",children:f.repos.map(e=>{let t=V===e.id;return(0,r.jsx)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-3",children:t?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("input",{type:"text",value:D,onChange:e=>K(e.target.value),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--ring)]",placeholder:"Folder name"}),(0,r.jsx)("input",{type:"text",value:J,onChange:e=>W(e.target.value),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--ring)]",placeholder:"Local path"})]}),(0,r.jsxs)("div",{className:"mt-3 flex items-center gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:()=>void eo(e.id),disabled:!D.trim()||!J.trim(),className:"rounded-lg bg-[var(--primary)] px-3 py-1.5 text-xs font-semibold text-[var(--primary-foreground)] disabled:cursor-not-allowed disabled:opacity-50",children:"Save"}),(0,r.jsx)("button",{type:"button",onClick:()=>{q(null),K(""),W("")},className:"rounded-lg px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:bg-[var(--card-bg)]",children:"Cancel"})]})]}):(0,r.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("p",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:e.name}),(0,r.jsx)("p",{className:"truncate text-xs text-[var(--muted-foreground)]",children:e.path||e.git_url||"No path set"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsx)("button",{type:"button",onClick:()=>{q(e.id),K(e.name),W(e.path??"")},className:"rounded-lg p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)]","aria-label":`Edit ${e.name}`,children:(0,r.jsx)(i,{className:"h-3.5 w-3.5"})}),(0,r.jsx)("button",{type:"button",onClick:()=>void es(e.id),className:"rounded-lg p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-red-500","aria-label":`Delete ${e.name}`,children:(0,r.jsx)(c.Trash2,{className:"h-3.5 w-3.5"})})]})]})},e.id)})})]})]}),(0,r.jsxs)("div",{className:"col-span-12 lg:col-span-8 space-y-4",children:[(0,r.jsxs)("section",{className:"rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] p-5 shadow-[var(--shadow-sm)]",children:[(0,r.jsxs)("div",{className:"mb-4",children:[(0,r.jsxs)("h2",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--foreground)]",children:[(0,r.jsx)(s.BrainCircuit,{size:16,className:"text-[var(--primary)]"}),"Living Project Note"]}),(0,r.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:"Auto-maintained project knowledge. It updates in place instead of creating review candidates."})]}),(0,r.jsx)(g,{note:Y?P:P?.content?{...P,content:""}:null,emptyLabel:S?"No matching project note content.":"No project note yet.",scope:"project",subjectId:j??"",onSaved:R})]}),(0,r.jsxs)("section",{className:"rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] p-5 shadow-[var(--shadow-sm)]",children:[(0,r.jsxs)("div",{className:"mb-4",children:[(0,r.jsxs)("h2",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--foreground)]",children:[(0,r.jsx)(o.FileText,{size:16,className:"text-[var(--primary)]"}),"Project References"]}),(0,r.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:"File-backed project knowledge for project-specific instructions."})]}),Q.length>0&&(0,r.jsx)("div",{className:"mb-4 grid grid-cols-1 gap-2 md:grid-cols-2",children:Q.map(e=>(0,r.jsxs)("div",{className:"group flex items-start gap-3 rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-3",children:[(0,r.jsx)("div",{className:"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-[var(--primary-muted)]",children:(0,r.jsx)(o.FileText,{size:14,className:"text-[var(--primary)]"})}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("div",{className:"truncate break-all font-mono text-xs text-[var(--secondary-foreground)]",children:e.file}),e.condition&&(0,r.jsx)("div",{className:"mt-0.5 text-[11px] text-[var(--muted-foreground)]",children:e.condition})]}),(0,r.jsx)("button",{type:"button",onClick:()=>void w(e.id),className:"rounded-lg p-1.5 text-[var(--app-shell-soft-text)] opacity-0 transition-all group-hover:opacity-100 hover:bg-[var(--card-bg)] hover:text-red-500","aria-label":"Remove reference",children:(0,r.jsx)(c.Trash2,{className:"h-3.5 w-3.5"})})]},e.id))}),L?(0,r.jsxs)("div",{className:"space-y-2 rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-3",children:[(0,r.jsx)("input",{type:"text",value:T,onChange:e=>z(e.target.value),placeholder:"path/to/project-knowledge.md",className:"w-full rounded-lg border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--ring)] focus:border-[var(--primary)]",autoFocus:!0}),(0,r.jsx)("input",{type:"text",value:E,onChange:e=>A(e.target.value),placeholder:"Optional condition",className:"w-full rounded-lg border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--ring)] focus:border-[var(--primary)]"}),(0,r.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:()=>{M(!1),z(""),A("")},className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)]",children:"Cancel"}),(0,r.jsxs)("button",{type:"button",onClick:async()=>{let e=T.trim();e&&(await N(e,E.trim()||void 0),z(""),A(""),M(!1))},className:"inline-flex items-center gap-1.5 rounded-lg bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-[var(--primary-foreground)]",children:[(0,r.jsx)(n.Plus,{className:"h-3.5 w-3.5"}),"Add"]})]})]}):(0,r.jsxs)("button",{type:"button",onClick:()=>M(!0),className:"group flex w-full items-center justify-center gap-2 rounded-xl border-2 border-dashed border-[var(--border)] py-3 text-sm text-[var(--muted-foreground)] transition-all hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:[(0,r.jsx)(n.Plus,{size:16,className:"transition-transform group-hover:scale-110"}),"Add Reference"]})]})]})]}):(0,r.jsx)("div",{className:"mt-2 space-y-4",children:0===ee.length?(0,r.jsxs)("div",{className:"rounded-2xl border border-dashed border-[var(--border)] px-6 py-12 text-center",children:[(0,r.jsx)(l.FolderGit2,{size:32,className:"mx-auto mb-3 text-[var(--app-shell-soft-text)]"}),(0,r.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:0===f.repos.length?"This project has no folders attached yet.":"No matching folders."})]}):(0,r.jsx)("div",{className:"grid grid-cols-1 gap-4 xl:grid-cols-2",children:ee.map(e=>(0,r.jsx)(h,{repo:e,systemNote:$[e.id]??null,systemNoteMatches:!S||($[e.id]?.content??"").toLowerCase().includes(S.toLowerCase()),onSystemNoteSaved:r=>I(t=>({...t,[e.id]:r}))},e.id))})})})]}):(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading..."})})}],109851)}]);
@@ -1,20 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,568656,e=>{"use strict";var t=e.i(843476),s=e.i(522016),r=e.i(618566),a=e.i(271645),i=e.i(958164),n=e.i(429056),o=e.i(417442),l=e.i(363732);let d=(0,l.default)("calendar-clock",[["path",{d:"M16 14v2.2l1.6 1",key:"fo4ql5"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]]);var c=e.i(529471),u=e.i(580873),m=e.i(575479),x=e.i(640481),p=e.i(929870),h=e.i(794731),b=e.i(169610),f=e.i(572665),v=e.i(797167),g=e.i(524123),j=e.i(945028),y=e.i(490011),w=e.i(984242),N=e.i(208343),k=e.i(884564),z=e.i(40527),S=e.i(378764),C=e.i(667480),I=e.i(519132),$=e.i(715908),E=e.i(553069),O=e.i(827430);function T(e){let t=e.cadence||e.cronExpr;return t?(0,E.cronToHuman)(e.cronExpr||t)??t:"No frequency"}function A(e,t){if("paused"===t)return"Paused";if("stopped"===t)return"Stopped";if(null===e)return"Pending";let s=e-Date.now();return s<0?"Overdue":s<6e4?`in ${Math.round(s/1e3)}s`:s<36e5?`in ${Math.round(s/6e4)}m`:s<864e5?`in ${Math.round(s/36e5)}h`:`in ${Math.round(s/864e5)}d`}function M({job:e,onClose:s,onHide:r,hiding:a}){return(0,t.jsx)("div",{className:"fixed inset-0 z-40 flex items-center justify-center bg-black/50 px-4 py-6",children:(0,t.jsxs)("div",{className:"w-full max-w-2xl rounded-[28px] border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4 border-b border-[var(--border)] px-6 py-5",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2.5",children:[(0,t.jsx)("p",{className:"truncate text-lg font-semibold text-[var(--foreground)]",children:e.name}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${L(e.state)}`,children:P(e.state)}),e.condition?(0,t.jsx)("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",children:"gated"}):null]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),T(e)]}),(0,t.jsxs)("span",{children:["Next run ",A(e.nextRunAt,e.state)]}),(0,t.jsxs)("span",{children:["Updated ",new Date(e.updatedAt).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})]})]})]}),(0,t.jsx)("button",{type:"button",onClick:s,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)]","aria-label":"Close scheduled task details",children:(0,t.jsx)(v.X,{className:"h-4 w-4"})})]}),(0,t.jsxs)("div",{className:"space-y-5 px-6 py-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Instructions"}),(0,t.jsx)("div",{className:"rounded-2xl border border-[var(--border)] bg-[rgba(15,23,42,0.28)] px-4 py-4 text-sm leading-6 text-[var(--foreground)] whitespace-pre-wrap",children:e.prompt||"No instructions yet"})]}),e.condition?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Condition"}),(0,t.jsx)("div",{className:"rounded-2xl border border-[var(--border)] bg-[rgba(15,23,42,0.28)] px-4 py-4 text-sm leading-6 text-[var(--foreground)]",children:e.condition})]}):null,(0,t.jsxs)("div",{className:"flex items-center justify-end gap-3 border-t border-[var(--border)] pt-5",children:[(0,t.jsx)("button",{type:"button",onClick:s,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)]",children:"Close"}),(0,t.jsxs)("button",{type:"button",onClick:()=>void r(),disabled:a,className:"inline-flex items-center gap-2 rounded-xl border border-rose-500/20 px-4 py-2.5 text-sm text-rose-100 transition-colors hover:bg-rose-500/10 disabled:cursor-not-allowed disabled:opacity-50",children:[(0,t.jsx)(h.Trash2,{className:"h-4 w-4"}),a?"Hiding...":"Hide task"]})]})]})]})})}function P(e){return"active"===e?"Active":"paused"===e?"Paused":"Stopped"}function L(e){return"active"===e?"border-emerald-500/20 bg-emerald-500/10 text-emerald-300":"paused"===e?"border-amber-500/20 bg-amber-500/10 text-amber-300":"border-zinc-700 bg-zinc-800/80 text-zinc-300"}function R({projectId:e,objectiveId:s,objectiveKey:r,createDefaults:i,onCreateTask:n,onCreateObjectiveLinearWorker:o}){let{jobs:l,loading:d,refresh:c,deleteJob:m}=(0,$.usePromptJobs)(e,{requireProjectId:!0,includeObjectiveJobs:!0,objectiveId:s}),[x,b]=(0,a.useState)(!1),[f,v]=(0,a.useState)(!1),[g,j]=(0,a.useState)(null),[y,w]=(0,a.useState)(null),[N,k]=(0,a.useState)(null),z=(0,a.useMemo)(()=>l.filter(e=>e.objectiveId===s),[l,s]),S=(0,a.useMemo)(()=>z.find(e=>e.id===N)??null,[N,z]),C=async e=>{j(e.id),w(null);let t=await m(e.id);(j(null),t)?(N===e.id&&k(null),await c()):w(`Failed to hide "${e.name}".`)},E=async e=>{w(null);let t=await n(e);return t&&await c(),t},F=async()=>{v(!0),w(null);let e=await o();(v(!1),e)?await c():w("Failed to create the objective Linear worker.")};return(0,t.jsxs)(t.Fragment,{children:[x?(0,t.jsx)(O.CreateJobModal,{onClose:()=>b(!1),onSubmit:async e=>{await E(e)},createDefaults:i,contextLabel:r}):null,S?(0,t.jsx)(M,{job:S,onClose:()=>k(null),onHide:async()=>{await C(S)},hiding:g===S.id}):null,(0,t.jsxs)("div",{className:"px-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-semibold text-[var(--foreground)]",children:"Scheduled Tasks"}),(0,t.jsxs)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:["Shared scheduled-task list filtered to objective label"," ",(0,t.jsx)("span",{className:"font-mono text-[var(--foreground)]",children:r}),"."]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>void F(),disabled:f,className:"inline-flex items-center gap-2 rounded-xl border border-emerald-500/20 bg-emerald-500/10 px-3 py-2 text-sm text-emerald-100 transition-colors hover:bg-emerald-500/15 disabled:cursor-not-allowed disabled:opacity-50",children:[(0,t.jsx)(I.Sparkles,{className:"h-4 w-4"}),f?"Creating...":"Work Linear tickets"]}),(0,t.jsxs)("button",{type:"button",onClick:()=>b(!0),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:border-[var(--card-hover-border)]",children:[(0,t.jsx)(p.Plus,{className:"h-4 w-4"}),"New task"]})]})]}),y?(0,t.jsx)("p",{className:"mt-4 text-sm text-red-300",children:y}):null,(0,t.jsx)("div",{className:"mt-5 space-y-3",children:d&&0===z.length?(0,t.jsx)("div",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-8 text-sm text-[var(--muted-foreground)]",children:"Loading scheduled tasks..."}):0===z.length?(0,t.jsx)("div",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-8 text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks for this objective yet."}):z.map(e=>(0,t.jsx)("div",{onClick:()=>k(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),k(e.id))},role:"button",tabIndex:0,className:"block w-full rounded-2xl border border-[var(--border)] bg-[rgba(15,23,42,0.28)] px-4 py-4 text-left transition-colors hover:border-[var(--card-hover-border)] focus:outline-none focus:ring-2 focus:ring-[var(--card-hover-border)]",children:(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2.5",children:[(0,t.jsx)("span",{className:`inline-block size-2 shrink-0 rounded-full ${"active"===e.state?"bg-emerald-400":"paused"===e.state?"bg-amber-400":"bg-zinc-500"}`}),(0,t.jsx)("p",{className:"truncate text-sm font-semibold text-[var(--foreground)]",children:e.name}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] ${L(e.state)}`,children:P(e.state)})]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5"}),"Next run ",A(e.nextRunAt,e.state)]}),(0,t.jsx)("span",{className:"inline-flex items-center gap-1.5",children:T(e)}),e.condition?(0,t.jsx)("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",children:"gated"}):null]}),(0,t.jsx)("p",{className:"mt-3 line-clamp-2 text-sm leading-6 text-[var(--muted-foreground)]",children:e.prompt.split("\n").map(e=>e.trim()).find(Boolean)||"No instructions yet"}),e.condition?(0,t.jsxs)("p",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:["Condition: ",e.condition]}):null]}),(0,t.jsxs)("button",{type:"button",onClick:t=>{t.stopPropagation(),C(e)},disabled:g===e.id,className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--border)] px-3 py-2 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:border-red-400/40 hover:text-red-300 disabled:cursor-not-allowed disabled:opacity-50",children:[(0,t.jsx)(h.Trash2,{className:"h-3.5 w-3.5"}),g===e.id?"Hiding...":"Hide"]})]})},e.id))})]})]})}var F=e.i(498027),D=e.i(367859);let _=(0,l.default)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]),U={"metric-check":{label:"Metric",className:"bg-blue-500/15 text-blue-400 border-blue-500/30"},"status-update":{label:"Status",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30"},milestone:{label:"Milestone",className:"bg-amber-500/15 text-amber-400 border-amber-500/30"},note:{label:"Note",className:"bg-zinc-500/15 text-zinc-400 border-zinc-500/30"}},q=["metric-check","status-update","milestone","note"];function J({activity:e}){let[s,r]=(0,a.useState)(!1),i=U[e.type]??U.note,n=e.body.length>200?`${e.body.slice(0,200).trim()}…`:e.body,o=e.body.length>200;return(0,t.jsxs)("div",{className:"relative pl-6 pb-6 last:pb-0",children:[(0,t.jsx)("div",{className:"absolute left-0 top-1.5 w-3 h-3 rounded-full border-2 border-zinc-600 bg-[#131315]"}),(0,t.jsx)("div",{className:"absolute left-[5px] top-4 bottom-0 w-px bg-zinc-800 last:hidden"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,t.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] ${i.className}`,children:i.label}),(0,t.jsx)("span",{className:"text-[11px] text-zinc-500",children:function(e){let t=Date.now(),s=Date.parse(e);if(Number.isNaN(s))return e;let r=Math.floor((t-s)/6e4);if(r<1)return"just now";if(r<60)return`${r}m ago`;let a=Math.floor(r/60);if(a<24)return`${a}h ago`;let i=Math.floor(a/24);return i<30?`${i}d ago`:new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",year:i>365?"numeric":void 0})}(e.createdAt)}),"manual"!==e.source&&(0,t.jsx)("span",{className:"text-[11px] text-zinc-600 font-mono truncate max-w-[180px]",children:e.source})]}),s?(0,t.jsx)("div",{className:"text-sm text-zinc-300 prose prose-invert prose-sm max-w-none",children:(0,t.jsx)(N.Markdown,{content:e.body})}):(0,t.jsx)("p",{className:"text-sm text-zinc-400 leading-relaxed",children:n}),o&&(0,t.jsxs)("button",{type:"button",onClick:()=>r(!s),className:"mt-1.5 flex items-center gap-1 text-xs text-zinc-500 hover:text-zinc-300 transition-colors",children:[s?(0,t.jsx)(F.ChevronDown,{size:12}):(0,t.jsx)(D.ChevronRight,{size:12}),s?"Show less":"Show more"]})]})}function H({projectId:e,objectiveId:s,onCreated:r,onCancel:i}){let[n,o]=(0,a.useState)("note"),[l,d]=(0,a.useState)(""),[c,u]=(0,a.useState)(!1),m=(0,a.useRef)(null);(0,a.useEffect)(()=>{m.current?.focus()},[]);let x=async()=>{let t=l.trim();if(t&&!c){u(!0);try{let a=await fetch(`/api/projects/${e}/objectives/${s}/activities`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:n,body:t})});if(!a.ok)throw Error("Failed to create activity");let i=await a.json();r(i)}catch(e){console.error("Failed to create activity:",e)}finally{u(!1)}}};return(0,t.jsxs)("div",{className:"rounded-lg border border-zinc-700/60 bg-zinc-900/50 p-3 mb-4",children:[(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5 mb-3",children:q.map(e=>{let s=U[e],r=n===e;return(0,t.jsx)("button",{type:"button",onClick:()=>o(e),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${r?"bg-zinc-200 text-zinc-900 border-zinc-200":`${s.className} hover:opacity-80`}`,children:s.label},e)})}),(0,t.jsx)("textarea",{ref:m,value:l,onChange:e=>d(e.target.value),placeholder:"What did you do?",rows:3,className:"w-full rounded-md border border-zinc-700/60 bg-zinc-800/50 px-3 py-2 text-sm text-zinc-200 placeholder:text-zinc-600 focus:outline-none focus:border-zinc-500 resize-none"}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 mt-2",children:[(0,t.jsx)("button",{type:"button",onClick:i,className:"px-3 py-1.5 text-xs text-zinc-400 hover:text-zinc-200 transition-colors",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:x,disabled:!l.trim()||c,className:"px-3 py-1.5 text-xs font-medium rounded-md bg-sky-600 text-white hover:bg-sky-500 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",children:c?"Saving...":"Log activity"})]})]})}function W({projectId:e,objectiveId:s,onTotalChange:r}){let[i,n]=(0,a.useState)([]),[o,l]=(0,a.useState)(0),[d,c]=(0,a.useState)(!1),[u,m]=(0,a.useState)(1),[x,h]=(0,a.useState)(!0),[b,f]=(0,a.useState)("all"),[g,j]=(0,a.useState)(!1),[y,w]=(0,a.useState)(!1),N=(0,a.useCallback)(async(t,a,i)=>{h(!0);try{let o=new URLSearchParams({page:String(t),limit:"25"});"all"!==a&&o.set("type",a);let d=await fetch(`/api/projects/${e}/objectives/${s}/activities?${o}`);if(!d.ok)throw Error("Failed to load activities");let u=await d.json();n(e=>i?[...e,...u.activities]:u.activities),l(u.total),r?.(u.total),c(u.hasMore)}catch(e){console.error("Failed to fetch activities:",e)}finally{h(!1)}},[e,s]);return(0,a.useEffect)(()=>{m(1),N(1,b,!1)},[N,b]),(0,t.jsxs)("section",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsx)("p",{className:"text-sm text-zinc-500",children:"Time-ordered log of outputs from scheduled tasks and manual entries."}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>w(!y),className:`flex items-center gap-1 px-2.5 py-1 rounded-md text-xs font-medium transition-colors ${y?"text-sky-400 bg-sky-500/10":"text-zinc-400 hover:text-zinc-200 hover:bg-zinc-800/50"}`,children:[y?(0,t.jsx)(v.X,{size:12}):(0,t.jsx)(p.Plus,{size:12}),"Log activity"]}),(0,t.jsx)("button",{type:"button",onClick:()=>j(!g),className:`p-1.5 rounded-md transition-colors ${g||"all"!==b?"text-sky-400 bg-sky-500/10":"text-zinc-500 hover:text-zinc-300 hover:bg-zinc-800/50"}`,"aria-label":"Filter activities",children:(0,t.jsx)(_,{size:14})})]})]}),g&&(0,t.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-4",children:[(0,t.jsx)("button",{type:"button",onClick:()=>f("all"),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${"all"===b?"bg-zinc-200 text-zinc-900 border-zinc-200":"bg-zinc-800/50 text-zinc-400 border-zinc-700 hover:border-zinc-500"}`,children:"All"}),q.map(e=>{let s=U[e],r=b===e;return(0,t.jsx)("button",{type:"button",onClick:()=>f(e),className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.14em] transition-colors ${r?"bg-zinc-200 text-zinc-900 border-zinc-200":`${s.className} hover:opacity-80`}`,children:s.label},e)})]}),y&&(0,t.jsx)(H,{projectId:e,objectiveId:s,onCreated:e=>{n(t=>[e,...t]),l(e=>{let t=e+1;return r?.(t),t}),w(!1)},onCancel:()=>w(!1)}),x&&0===i.length?(0,t.jsx)("div",{className:"text-sm text-zinc-500 py-6 text-center",children:"Loading activities..."}):0===i.length?(0,t.jsxs)("div",{className:"rounded-xl border border-dashed border-zinc-700/60 bg-zinc-900/30 p-6 text-center",children:[(0,t.jsx)("p",{className:"text-sm text-zinc-500",children:"No activities yet."}),(0,t.jsx)("p",{className:"text-xs text-zinc-600 mt-1",children:"Activities are created by scheduled tasks and agent actions."})]}):(0,t.jsxs)("div",{children:[i.map(e=>(0,t.jsx)(J,{activity:e},e.id)),d&&(0,t.jsx)("div",{className:"pt-2 pl-6",children:(0,t.jsx)("button",{type:"button",onClick:()=>{let e=u+1;m(e),N(e,b,!0)},disabled:x,className:"text-xs text-sky-400 hover:text-sky-300 transition-colors disabled:opacity-50",children:x?"Loading...":"Load more"})})]})]})}var V=e.i(644660),B=e.i(434405),K=e.i(169433),G=e.i(902572);let X={on_track:{label:"On track",chipClass:"border-emerald-500/20 bg-emerald-500/10 text-emerald-200",toneClass:"text-emerald-300"},at_risk:{label:"At risk",chipClass:"border-amber-500/20 bg-amber-500/10 text-amber-100",toneClass:"text-amber-300"},off_track:{label:"Off track",chipClass:"border-rose-500/20 bg-rose-500/10 text-rose-100",toneClass:"text-rose-300"},done:{label:"Done",chipClass:"border-sky-500/20 bg-sky-500/10 text-sky-100",toneClass:"text-sky-300"}};function Y({onResize:e}){let s=(0,a.useRef)(!1),r=(0,a.useRef)(0);return(0,a.useEffect)(()=>{if(!s.current)return;let t=t=>{let s=r.current-t.clientX;r.current=t.clientX,e(s)},a=()=>{s.current=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",t),window.removeEventListener("mouseup",a)};return window.addEventListener("mousemove",t),window.addEventListener("mouseup",a),()=>{window.removeEventListener("mousemove",t),window.removeEventListener("mouseup",a)}}),(0,t.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize objective chat panel",className:"group relative z-10 hidden w-0 shrink-0 cursor-col-resize xl:block",onMouseDown:e=>{e.preventDefault(),s.current=!0,r.current=e.clientX,document.body.style.cursor="col-resize",document.body.style.userSelect="none"},children:(0,t.jsx)("div",{className:"absolute inset-y-0 -left-0.5 w-1 transition-colors group-hover:bg-[var(--primary)]/40"})})}function Q(e){return new Date(e).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function Z(e){return{id:e.id,title:e.title,teamId:e.teamId,summary:e.summary,cadence:e.cadence,condition:e.condition}}function ee(e,t){return`/projects/${e}/objectives/${encodeURIComponent(t)}`}function et(e,t,s){return t?e.objectives.find(e=>e.teamId===t&&e.id!==s)??null:null}function es(e,t,s){return e.filter(e=>!et(t,e.id,s))}function er(e){let t=e.trim();return t?(0,E.cronToHuman)(t)??t:"Not set yet"}function ea(e){let{projects:t,isLoading:s,refetch:r,updateProject:i}=(0,g.useProjects)(),[n,o]=(0,a.useState)([]),l=(0,a.useMemo)(()=>t.find(t=>t.slug===e)??null,[e,t]),d=(0,a.useMemo)(()=>(0,G.readProjectObjectivesWorkspace)(l?.metadata),[l?.metadata]),c=(0,a.useCallback)(async e=>{if(!l)throw Error("Project not found.");await i(l.id,{metadata:(0,G.writeProjectObjectivesWorkspace)(l.metadata??{},e)})},[l,i]);return(0,a.useEffect)(()=>{let e=!0;return async function(){if(!l?.id)return o([]);try{let t=await fetch(`/api/projects/${l.id}/teams`);if(!t.ok)throw Error("Failed to fetch teams");let s=await t.json();if(!e)return;o((s.teams??[]).map(e=>({id:"string"==typeof e.id?e.id:"",name:"string"==typeof e.name?e.name:"Untitled team"})).filter(e=>e.id))}catch{if(!e)return;o([])}}(),()=>{e=!1}},[l?.id]),{isLoading:s,project:l,workspace:d,teams:n,persistWorkspace:c,refetchProject:r}}function ei(e){return"user"===e.role&&!e.rootMessageId}function en({projectId:e,projectSlug:s,objective:r,teamName:i,onThreadLinked:l,onObjectiveUpdated:d}){let[c,u]=(0,a.useState)(()=>(0,K.loadObjectiveChatPanelWidth)()||800),[m,x]=(0,a.useState)(r.threadId??(r.id?`objective-chat:${r.id}`:null)),[p,h]=(0,a.useState)("list"),[f,v]=(0,a.useState)(null),[g,z]=(0,a.useState)(!1),[S,C]=(0,a.useState)(r.chatSessionVersion),[I,$]=(0,a.useState)([]),[E,O]=(0,a.useState)(null),T=(0,a.useRef)(!1),A=(0,a.useRef)(!1),M=window.location?.origin?window.location.origin:null,{messages:P,setMessages:L,sendMessage:R,loadHistory:F,setChatRuns:D,stop:_,chatRuns:U}=(0,j.useGroupChat)(m),{processes:q,streaming:J,chatRuns:H,poll:W}=(0,y.useProcessPolling)(m?{workspaceId:m}:null,{messages:P,setMessages:L});(0,a.useEffect)(()=>{r.threadId&&r.threadId!==m&&x(r.threadId)},[r.threadId,m]),(0,a.useEffect)(()=>{h("list"),v(null),z(!1),A.current=!1},[r.id]),(0,a.useEffect)(()=>{C(r.chatSessionVersion),r.chatSessionVersion>=G.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION&&(A.current=!0)},[r.chatSessionVersion]);let V=(0,a.useCallback)(async t=>{let s=t.trim();if(s&&!(await fetch(`/api/projects/${e}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:s})})).ok)throw Error("Failed to link objective chat to the project.")},[e]);(0,a.useEffect)(()=>{let e=!1;return m?(z(!1),(async()=>{await F(m),e||z(!0)})(),()=>{e=!0}):void z(!0)},[F,m]),(0,a.useEffect)(()=>{let t=!1;return async function(){try{let[s,r]=await Promise.all([fetch("/api/participants"),fetch(`/api/projects/${e}/agents`)]),a=s.ok?await s.json():[],i=Array.isArray(a)?a:[],n=r.ok?await r.json():{agents:[]};if(t)return;let o=((n&&"object"==typeof n?n:{agents:[]}).agents??[]).slice().sort((e,t)=>e.routing_order-t.routing_order).map(e=>e.agent_id);if(0===o.length)return void $(i);let l=new Map(i.map(e=>[e.id,e]));$(o.map(e=>l.get(e)).filter(e=>!!e))}catch(e){if(t)return;console.error("Failed to load objective chat participants",e),$([])}}(),()=>{t=!0}},[e]),(0,a.useEffect)(()=>{r.threadId&&V(r.threadId).catch(e=>{console.warn("Failed to re-link objective chat thread to project",e)})},[V,r.threadId]),(0,a.useEffect)(()=>{if(!r.threadId||!m||!g||S>=G.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION||A.current)return;A.current=!0;let t=function(e){let t=e.filter(ei).sort((e,t)=>e.timestamp-t.timestamp);if(t.length<=1)return null;let s=t[0]?.id;if(!s)return null;let r=t.slice(1).map(e=>e.id),a=new Set(r);return{messages:[...e].map(e=>{let t=a.has(e.id)&&ei(e),r="string"==typeof e.rootMessageId&&a.has(e.rootMessageId);return t||r?{...e,rootMessageId:s,parentMessageId:s,depth:1}:e}).sort((e,t)=>e.timestamp-t.timestamp),primaryRootMessageId:s,mergedRootMessageIds:r}}(P),s=!1;return(async()=>{O(null);try{if(t){if(!(await fetch("/api/history",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:m,messages:t.messages})})).ok)throw Error("Failed to migrate the objective chat history.");if(s)return;L(t.messages),v(e=>e&&t.mergedRootMessageIds.includes(e)?t.primaryRootMessageId:e)}if(!(await fetch(`/api/projects/${e}/objectives/${r.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatSessionVersion:G.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION})})).ok)throw Error("Failed to update the objective chat session version.");if(s)return;C(G.CURRENT_OBJECTIVE_CHAT_SESSION_VERSION),d().catch(e=>{console.warn("Failed to refresh objective after objective chat migration",e)})}catch(e){if(s)return;console.warn("Failed to migrate legacy objective chat sessions",e),O(e instanceof Error?e.message:"Failed to migrate the objective chat history.")}})(),()=>{s=!0}},[S,g,P,r.id,r.threadId,d,e,L,m]);let X=(0,a.useCallback)(async()=>{if(r.threadId)return r.threadId;let t=m??(r.id?`objective-chat:${r.id}`:null);if(!t)return null;O(null);try{let a=await B.threadService.createThread({id:t,title:r.title,metadata:{scope:"objective",objectiveId:r.id,projectId:e,projectSlug:s}});return x(a.id),await V(a.id),await l(a.id),a.id}catch(e){return O(e instanceof Error?e.message:"Failed to create the objective chat."),null}},[V,r.id,r.threadId,r.title,l,e,s,m]),Z=(0,a.useMemo)(()=>new Map(I.map(e=>[e.id,e])),[I]);(0,a.useEffect)(()=>{D(e=>{let t=Date.now(),s=new Map(e.filter(e=>"string"==typeof e.chatRunId&&e.chatRunId.length>0).map(e=>[e.chatRunId,e]));for(let e of H)e?.chatRunId&&s.set(e.chatRunId,e);return Array.from(s.values()).filter(e=>!!(!e.optimistic||H.some(t=>t.chatRunId===e.chatRunId))||t-(e.enqueuedAt??0)<=5e3).sort((e,t)=>String(e.chatRunId||"").localeCompare(String(t.chatRunId||"")))})},[H,D]);let ee=(0,a.useMemo)(()=>{let e=Date.now(),t=new Map(H.map(e=>[e.chatRunId,e]));for(let s of U)!(!s.optimistic||t.has(s.chatRunId))&&(e-(s.enqueuedAt??0)>5e3||t.set(s.chatRunId,s));return Array.from(t.values()).filter(e=>"queued"===e.status||"running"===e.status||"awaiting_user"===e.status||"blocked"===e.status)},[U,H]),et=(0,a.useMemo)(()=>P.filter(ei).sort((e,t)=>t.timestamp-e.timestamp).map(e=>{let t,s=P.filter(t=>t.rootMessageId===e.id).sort((e,t)=>e.timestamp-t.timestamp),r=[e,...s],a=r[r.length-1]??e;return{rootMessageId:e.id,title:(t=e.content.replace(/\s+/g," ").trim())?t.length>56?`${t.slice(0,56).trim()}...`:t:"Untitled session",updatedAt:a.timestamp,messageCount:r.length,messages:r}}),[P]),es=(0,a.useMemo)(()=>f?et.find(e=>e.rootMessageId===f)??null:null,[f,et]),ea="detail"===p&&!!f,eo=new Set(["queued","running","awaiting_user","blocked"]),ed=ee.length>0||q.some(e=>"spawning"===e.state||"running"===e.state),ec=(0,a.useMemo)(()=>{let e=new Map;for(let t of ee){if(!t.rootMessageId||!eo.has(t.status))continue;let s="queued"===t.status?"queued":"working";"working"!==e.get(t.rootMessageId)&&e.set(t.rootMessageId,s)}for(let t of q)t.threadId&&("spawning"===t.state||"running"===t.state)&&e.set(t.threadId,"working");return e},[ee,q]),eu=(0,a.useMemo)(()=>q.some(e=>"spawning"===e.state||"running"===e.state)||ee.some(e=>eo.has(e.status)&&"queued"!==e.status)?"working":ee.some(e=>"queued"===e.status)?"queued":"ready",[ee,eo,q]);(0,a.useEffect)(()=>{T.current&&!ed&&d().catch(e=>{console.warn("Failed to refresh objective after objective chat activity",e)}),T.current=ed},[ed,d]);let em=(0,a.useCallback)(async e=>{await fetch(`/api/chat-runs/${encodeURIComponent(e)}/signal`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({signal:"cancel",reason:"Interrupted by a new objective chat message"})}).catch(e=>{console.warn("Failed to cancel objective chat run",e)})},[]),ex=(0,a.useCallback)(async()=>{let e=Array.from(new Set(ee.map(e=>e.chatRunId).filter(e=>!!e)));await Promise.all(e.map(e=>em(e))),await _(),await W()},[ee,em,W,_]),ep=(0,a.useCallback)(async(t,a,n,o,l,d,c)=>{let u,m,x,p,b,g,j,y,w;ed&&await ex(),O(null);let N=await X();if(!N)return;let k=I.map(e=>e.id),z=ea?f:null,S=[(u=`/api/projects/${e}/objectives/${r.id}`,m=M?`${M}${u}`:u,x=`${m}/scheduled-tasks`,p=`${m}/linear-issues`,b=`${m}/notes`,g=`~/.agx/projects/${s}/objectives/${r.key}.md`,j=`~/.agx/projects/${s}/objectives/${r.key}/notes/`,y=`${m}/validate`,w=r.notes?.length?r.notes.map(e=>`- **${e.title}**: ${e.body.slice(0,120)}${e.body.length>120?"...":""}`).join("\n"):null,["You are working inside a strategy session for this project objective.",`Project slug: ${s}`,`Objective: ${r.title}`,`Objective label: ${r.key}`,i?`Owning team: ${i}`:"",w?`Current notes:
2
- ${w}`:"Current notes: none yet.",r.cadence?`Wake schedule: ${er(r.cadence)}`:"Wake schedule: not set yet.",r.condition?`Wake condition: ${r.condition}`:"",`## Objective file (source of truth)
3
-
4
- This objective is stored as a frontmatter markdown file at:
5
- \`${g}\`
6
-
7
- File format:
8
- - YAML frontmatter between \`---\` delimiters contains all metadata (title, teamId, key, status, progress, cadence, condition, scheduledTaskIds, threadId, chatSessionVersion, createdAt, updatedAt).
9
- - \`## Activities\` section contains the activity timeline; each activity is a \`### Title\` block with metadata lines (\`- **id:**\`, \`- **source:**\`, \`- **created:**\`, \`- **body:**\`) and optional \`#### Replies\` sub-section.
10
-
11
- Notes are stored as separate files in \`${j}\`. Each note is a markdown file with YAML frontmatter (id, title, objectiveId, createdAt, updatedAt) and a markdown body.
12
-
13
- When updating the objective, you can edit this file directly. Rules:
14
- - NEVER remove or break the \`---\` frontmatter delimiters.
15
- - NEVER change the \`id\` or \`createdAt\` fields.
16
- - Always update \`updatedAt\` to the current ISO timestamp when making changes.
17
- - After any edit, call \`GET ${y}\` to verify the file is still valid.
18
- - If validation fails, fix the errors immediately before doing anything else.`,"Scheduled tasks live in the shared scheduled-task list and are filtered by this objective label.","Your job is to help the team develop the strategy needed to reach the goal, including the right combination of objective notes, wake cadence/condition, scheduled tasks, and Linear tickets.","Use the current session history to build on prior reasoning. Only reset and start from scratch when the user explicitly starts a new session.","Use this thread to pressure-test strategy, suggest better tactics, rewrite the objective when asked, propose the right operational cadence, and take concrete follow-up actions when the user wants them applied.","When suggesting edits, prefer editing the frontmatter file directly or using the notes API. When the user asks you to make a change, edit the file, validate, then confirm.","Local objective APIs:",`- PATCH ${m} with JSON fields such as {"title","cadence","condition","teamId","key"} to update the objective itself.`,`- GET ${b} to list all notes for this objective. Returns {"notes":[...],"total","page","limit","hasMore"}.`,`- POST ${b} with {"title","body"} to create a new note.`,`- GET ${b}/{noteId} to read a single note.`,`- PATCH ${b}/{noteId} with {"title","body"} to update a note.`,`- DELETE ${b}/{noteId} to delete a note.`,`- GET ${x} to inspect the scheduled tasks already tracked for this objective.`,`- POST ${x} with {"name","prompt","cadence","condition","agentId","syncObjectiveSchedule":true} to create a scheduled task for this objective.`,`- GET ${p} to inspect Linear tickets carrying the objective label "${r.key}".`,`- POST ${p} with {"title","description","teamId","assigneeId","cycleId","stateId","priority"} to create a Linear ticket labeled "${r.key}".`,`- GET ${y} to validate the objective file on disk. Returns {"valid":true} or {"valid":false,"errors":[...]}.`].filter(Boolean).join("\n\n")),d].filter(Boolean).join("\n\n"),C=await R(t,a,N,z,n,o,l?[l]:k,s,S,c);!z&&C&&(v(C),h("detail"))},[M,X,ed,ex,ea,r,I,e,s,f,R,i]),eh=(0,a.useMemo)(()=>ea?es?.messages??[]:[],[ea,es]),eb=(0,a.useMemo)(()=>ea&&f?Object.entries(J).filter(([,e])=>e.rootMessageId===f):[],[ea,f,J]),ef=(0,a.useCallback)(e=>{u(t=>{let s=Math.max(320,Math.min(1200,t+e));return(0,K.persistObjectiveChatPanelWidth)(s),s})},[]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(Y,{onResize:ef}),(0,t.jsxs)("aside",{className:"relative flex h-full min-h-[420px] w-full flex-col overflow-hidden border-t border-[var(--border)] bg-[rgba(8,12,18,0.72)] xl:min-h-0 xl:w-[var(--objective-chat-panel-width)] xl:shrink-0 xl:self-stretch xl:border-l xl:border-t-0",style:{"--objective-chat-panel-width":`${c}px`},children:[(0,t.jsx)(el,{message:E}),ea?(0,t.jsx)("div",{className:"border-b border-[var(--border)] px-4 py-4",children:(0,t.jsxs)("button",{type:"button",onClick:()=>h("list"),"aria-label":"Back to sessions",className:"inline-flex min-w-0 items-center gap-2 text-left text-sm font-medium text-[var(--foreground)] transition-colors hover:text-sky-100",children:[(0,t.jsx)(n.ArrowLeft,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"truncate",children:es?.title??"Loading session..."})]})}):(0,t.jsx)("div",{className:"border-b border-[var(--border)] px-4 py-4",children:(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Strategy Sessions"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"Start a new strategy conversation below, or open an earlier session to keep building on it."})]})}),(0,t.jsx)("div",{className:`min-h-0 flex-1 overflow-y-auto pb-[calc(15rem+env(safe-area-inset-bottom))] ${ea?"px-4 py-4":"px-0 py-0"}`,children:ea?0===eh.length?(0,t.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 px-4 text-center text-[var(--muted-foreground)]",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"Loading strategy session"}),(0,t.jsx)("p",{className:"max-w-sm text-xs",children:"The conversation will appear here once the session history is ready."})]}):(0,t.jsxs)("div",{className:"space-y-5",children:[eh.map(e=>{let s=e.participantId?Z.get(e.participantId):null;return(0,t.jsxs)("div",{className:"flex gap-3",children:["user"===e.role?(0,t.jsx)("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[rgba(15,23,42,0.55)] text-[var(--muted-foreground)]",children:(0,t.jsx)(b.User,{className:"h-4 w-4"})}):(0,t.jsx)("img",{src:(0,k.agentAvatarUrl)(e.participantId??"assistant",32,s?.color),alt:s?.name??"Agent",className:"h-8 w-8 shrink-0 rounded-full border border-[var(--border)] object-cover"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"user"===e.role?"You":s?.name??"Agent"}),(0,t.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:new Date(e.timestamp).toLocaleString([],{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})})]}),(0,t.jsx)("div",{className:"mt-2 rounded-2xl border border-[var(--border)] bg-[rgba(15,23,42,0.32)] px-4 py-3 text-sm text-[var(--foreground)]",children:(0,t.jsx)(N.Markdown,{content:e.content,isUser:"user"===e.role})})]})]},e.id)}),eb.map(([e])=>{let s=Z.get(e);return(0,t.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)("img",{src:(0,k.agentAvatarUrl)(e,32,s?.color),alt:s?.name??"Agent",className:"h-8 w-8 shrink-0 rounded-full border border-[var(--border)] object-cover"}),(0,t.jsxs)("span",{children:[s?.name??"Agent"," is thinking..."]})]},`stream-${e}`)})]}):0===et.length?(0,t.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 px-4 text-center text-[var(--muted-foreground)]",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"No strategy sessions yet"}),(0,t.jsx)("p",{className:"max-w-sm text-xs",children:"Use the composer below to start the first conversation about how this objective should be reached."})]}):(0,t.jsx)("div",{className:"divide-y divide-[var(--border)]",children:et.map(e=>{var s;let r=ec.get(e.rootMessageId)??null;return(0,t.jsxs)("button",{type:"button",onClick:()=>{v(e.rootMessageId),h("detail")},className:"flex w-full items-start justify-between gap-3 px-4 py-3 text-left transition-colors hover:bg-white/[0.02]",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:e.title}),(0,t.jsxs)("p",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:[1===(s=e.messageCount)?"1 message":`${s} messages`," · Last"," ",Q(e.updatedAt)]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[r?(0,t.jsx)("span",{className:"rounded-full border border-sky-400/30 bg-sky-400/10 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-sky-100",children:"queued"===r?"Queued":"Working"}):null,(0,t.jsx)(o.ArrowRight,{className:"mt-0.5 h-4 w-4 text-[var(--muted-foreground)]"})]})]},e.rootMessageId)})})}),(0,t.jsx)("div",{className:"absolute bottom-0 left-0 right-0 p-3 pb-[calc(0.75rem+env(safe-area-inset-bottom))] bg-[rgba(8,12,18,0.72)]",children:(0,t.jsx)(w.Composer,{onSend:ep,onStop:ex,participants:I,commands:[],projectSlug:s,loading:"ready"!==eu,activityStatus:eu,sendInterruptsBusy:!0,placeholder:ea?`Continue strategy for "${r.title}"...`:`Start a new strategy session for "${r.title}"...`,initialPinnedParticipantId:I[0]?.id})})]})]})}function eo({label:e}){return(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:e})}function el({message:e}){return e?(0,t.jsxs)("div",{className:"mt-3 flex items-center gap-2 rounded-2xl border border-rose-500/20 bg-rose-500/10 px-3 py-2 text-sm text-rose-100",children:[(0,t.jsx)(i.AlertTriangle,{className:"h-4 w-4"}),(0,t.jsx)("span",{children:e})]}):null}function ed({content:e,editable:s=!1,onChange:r,placeholder:a}){let i=e.trim().length>0;return s||i?(0,t.jsx)("div",{className:"overflow-hidden border-l-2 border-zinc-700/60 pl-4 transition-all focus-within:border-indigo-500/60",children:s||i?(0,t.jsx)(z.default,{content:e,editable:s,onChange:r,placeholder:a}):null}):null}function ec({projectSlug:e,objective:r,activityCount:a,lastActivityAt:i,activeAgentIds:n,participants:l}){let d,c=(d=1===a?"1 activity":`${a} activities`,i?`${d} \xb7 Last ${Q(i)}`:`${d} \xb7 No activity yet`);return(0,t.jsx)("article",{className:"px-2",children:(0,t.jsxs)(s.default,{href:ee(e,r.id),"aria-label":`Open details for ${r.title}`,className:"group flex items-center gap-3 rounded-2xl py-2 transition-colors hover:bg-white/[0.02] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-400/40",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1 px-1 py-1.5",children:[(0,t.jsx)("div",{className:"flex min-w-0 items-center gap-3",children:(0,t.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:r.title})}),(0,t.jsx)("div",{className:"mt-1 text-xs text-[var(--muted-foreground)] sm:hidden",children:c})]}),(0,t.jsx)("div",{className:"hidden shrink-0 text-right text-xs text-[var(--muted-foreground)] sm:block",children:(0,t.jsx)("div",{children:c})}),n&&n.length>0&&(0,t.jsx)("span",{className:"inline-flex items-center -space-x-1 shrink-0",children:n.slice(0,3).map(e=>{let s=l?.find(t=>t.id===e);return(0,t.jsxs)("span",{className:"relative inline-block",title:s?.name??e,children:[(0,t.jsx)("img",{src:(0,k.agentAvatarUrl)(e,16,s?.color??void 0),alt:s?.name??e,className:"h-3 w-3 rounded-full ring-[1.5px] ring-[var(--background)]"}),(0,t.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--background)]"})]},e)})}),(0,t.jsx)("span",{className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-[var(--muted-foreground)] transition-colors group-hover:bg-white/5 group-hover:text-[var(--foreground)] group-focus-visible:bg-white/5 group-focus-visible:text-[var(--foreground)]",children:(0,t.jsx)(o.ArrowRight,{className:"h-4 w-4"})})]})})}function eu({label:e}){return(0,t.jsx)("div",{className:"border border-dashed border-zinc-700/80 rounded-xl p-6 flex items-center bg-[#151517]",children:(0,t.jsx)("p",{className:"text-sm text-zinc-500",children:e})})}function em({mode:e,draft:s,teams:r=[],isSaving:a,onChange:i,onClose:n,onSave:o}){return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/45 p-4",children:(0,t.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"edit"===e?"Edit objective":"New objective",className:"w-full max-w-3xl overflow-hidden rounded-[32px] border border-[var(--border)] bg-[rgba(6,10,16,0.96)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"border-b border-[var(--border)] px-5 py-4",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--foreground)]",children:"edit"===e?"Edit objective":"New objective"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:"edit"===e?"Update the tracking details for this objective.":"Keep the statement measurable and use notes only for context that matters."})]}),(0,t.jsxs)("div",{className:"space-y-4 px-5 py-5",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(ep,{label:"Objective statement"}),(0,t.jsx)("input",{value:s.title,onChange:e=>i({...s,title:e.target.value}),className:"w-full rounded-2xl border border-[var(--border)] bg-[rgba(15,23,42,0.55)] px-4 py-3 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-sky-500/50",placeholder:"Get 50 qualified visitors daily"})]}),"create"===e?(0,t.jsxs)("div",{children:[(0,t.jsx)(ep,{label:"Team"}),(0,t.jsxs)("select",{value:s.teamId,onChange:e=>i({...s,teamId:e.target.value}),className:"w-full rounded-2xl border border-[var(--border)] bg-[rgba(15,23,42,0.55)] px-3 py-3 text-sm text-[var(--foreground)] outline-none transition-colors focus:border-sky-500/50",children:[(0,t.jsx)("option",{value:"",children:"Select a team"}),r.map(e=>(0,t.jsx)("option",{value:e.id,children:e.name},e.id))]}),(0,t.jsx)("p",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:"Teams can only own one objective at a time."})]}):null]}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-5 py-4",children:[(0,t.jsx)("button",{type:"button",onClick:n,className:"rounded-xl border border-[var(--border)] px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:o,disabled:a,className:"rounded-xl border border-sky-500/30 bg-sky-500/10 px-3 py-2 text-sm font-medium text-sky-100 transition-colors hover:bg-sky-500/20 disabled:cursor-not-allowed disabled:opacity-50",children:a?"Saving...":"edit"===e?"Save objective":"Create objective"})]})]})})}function ex({draft:e,isSaving:s,onChange:r,onClose:a,onSave:i}){return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/45 p-4",children:(0,t.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"Edit wake schedule",className:"w-full max-w-2xl overflow-hidden rounded-[32px] border border-[var(--border)] bg-[rgba(6,10,16,0.96)] shadow-2xl",children:[(0,t.jsxs)("div",{className:"border-b border-[var(--border)] px-5 py-4",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--foreground)]",children:"Edit wake schedule"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:"Control when agents should wake up and whether they should gate execution on a condition."})]}),(0,t.jsx)("div",{className:"px-5 py-5",children:(0,t.jsx)(C.ScheduleConditionPicker,{value:{cadence:e.cadence,condition:e.condition},onChange:t=>r({...e,cadence:t.cadence,condition:t.condition}),allowEmptySchedule:!0,scheduleLabel:"Schedule",conditionLabel:"Condition",conditionHelpText:"Use a condition when agents should only work on this objective in specific circumstances."})}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-5 py-4",children:[(0,t.jsx)("button",{type:"button",onClick:a,className:"rounded-xl border border-[var(--border)] px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"}),(0,t.jsx)("button",{type:"button",onClick:i,disabled:s,className:"rounded-xl border border-sky-500/30 bg-sky-500/10 px-3 py-2 text-sm font-medium text-sky-100 transition-colors hover:bg-sky-500/20 disabled:cursor-not-allowed disabled:opacity-50",children:s?"Saving...":"Save schedule"})]})]})})}function ep({label:e}){return(0,t.jsx)("label",{className:"mb-2 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:e})}e.s(["ProjectObjectiveDetail",0,function({projectSlug:e,objectiveId:i}){var n;let o,l,b,g,j=(0,r.useRouter)(),{isLoading:y,project:w,workspace:k,teams:z,persistWorkspace:C,refetchProject:I}=ea(e),E=(0,a.useMemo)(()=>k.objectives.find(e=>e.id===i)??null,[i,k.objectives]),O=(0,a.useMemo)(()=>es(z,k,i),[i,z,k]),T=E?(n=E.teamId,z.find(e=>e.id===n)?.name??null):null,[A,M]=(0,a.useState)(null),[P,L]=(0,a.useState)(null),[F,D]=(0,a.useState)(null),[_,U]=(0,a.useState)("activity"),[q,J]=(0,a.useState)(0),[H,B]=(0,a.useState)(!1),[K,Y]=(0,a.useState)(null),[ee,ei]=(0,a.useState)([]),[ec,em]=(0,a.useState)(!1),[ep,eh]=(0,a.useState)(null),[eb,ef]=(0,a.useState)({}),[ev,eg]=(0,a.useState)({}),[ej,ey]=(0,a.useState)(new Set),[ew,eN]=(0,a.useState)(""),[ek,ez]=(0,a.useState)(!1),[eS,eC]=(0,a.useState)([]),[eI,e$]=(0,a.useState)(!0),{jobs:eE}=(0,$.usePromptJobs)(w?.id??null,{requireProjectId:!0,includeObjectiveJobs:!0,objectiveId:i}),eO=(0,a.useMemo)(()=>eE.filter(e=>e.objectiveId===i).length,[eE,i]),eT=async e=>{B(!0),Y(null);try{await C(e)}catch(e){throw Y(e instanceof Error?e.message:"Failed to save objective updates."),e}finally{B(!1)}},eA=async()=>{if(!A||!E)return;let e=A.title.trim();if(!e)return void Y("Objective statement is required.");let t={...E,title:e,updatedAt:new Date().toISOString()};await eT((0,G.upsertProjectObjective)(k,t)),M(null)},eM=(0,a.useCallback)(async()=>{if(w?.id&&E?.id){em(!0);try{let e=await fetch(`/api/projects/${w.id}/objectives/${E.id}/notes?limit=100`);if(e.ok){let t=await e.json();ei(t.notes??[])}}catch{}finally{em(!1)}}},[w?.id,E?.id]);(0,a.useEffect)(()=>{eM()},[eM]),(0,a.useEffect)(()=>{"notes"===_&&eM()},[_,eM]),(0,a.useEffect)(()=>{if(!w?.id||!E?.id)return;let e=new Set;for(let[t,s]of Object.entries(eb)){let r=ee.find(e=>e.id===t);r&&r.body!==s&&e.add(t)}for(let[t,s]of Object.entries(ev)){let r=ee.find(e=>e.id===t);r&&r.title!==s&&e.add(t)}if(0===e.size)return;let t=[];for(let s of e){let e={},r=eb[s],a=ev[s],i=ee.find(e=>e.id===s);if(!i||(void 0!==r&&r!==i.body&&(e.body=r),void 0!==a&&a!==i.title&&a.trim()&&(e.title=a.trim()),0===Object.keys(e).length))continue;let n=window.setTimeout(async()=>{ey(e=>new Set(e).add(s));try{let t=await fetch(`/api/projects/${w.id}/objectives/${E.id}/notes/${s}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(t.ok){let e=await t.json();ei(t=>t.map(t=>t.id===s?e.note:t))}}catch{Y("Failed to save note.")}finally{ey(e=>{let t=new Set(e);return t.delete(s),t})}},700);t.push(n)}return()=>{for(let e of t)window.clearTimeout(e)}},[eb,ev,ee,w?.id,E?.id]);let eP=async()=>{if(!w?.id||!E?.id)return;let e=ew.trim()||"Untitled";ez(!0);try{let t=await fetch(`/api/projects/${w.id}/objectives/${E.id}/notes`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:e,body:""})});if(t.ok){let e=await t.json();ei(t=>[e.note,...t]),eh(e.note.id),eN("")}}catch{Y("Failed to create note.")}finally{ez(!1)}},eL=async e=>{if(w?.id&&E?.id)try{let t=await fetch(`/api/projects/${w.id}/objectives/${E.id}/notes/${e}`,{method:"DELETE"});(t.ok||204===t.status)&&(ei(t=>t.filter(t=>t.id!==e)),ep===e&&eh(null))}catch{Y("Failed to delete note.")}},eR=async()=>{if(!F||!E)return;let e={...E,cadence:F.cadence.trim(),condition:F.condition.trim(),updatedAt:new Date().toISOString()};await eT((0,G.upsertProjectObjective)(k,e)),D(null)},eF=async()=>{!E||window.confirm(`Delete "${E.title}"?`)&&(await eT((0,G.removeProjectObjective)(k,E.id)),j.push(`/projects/${e}`))},eD=(0,a.useCallback)(async e=>{E&&E.threadId!==e&&await eT((0,G.upsertProjectObjective)(k,{...E,threadId:e,updatedAt:new Date().toISOString()}))},[E,eT,k]),e_=(0,a.useCallback)(async e=>{if(!w?.id||!E?.id)return Y("Objective not found."),!1;Y(null);try{let t=await fetch(`/api/projects/${w.id}/objectives/${E.id}/scheduled-tasks`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,prompt:"objective_linear_ticket"===e.executionMode?e.prompt:function(e,t){let s=t.trim();if(!s)return s;let r=`Objective label: ${e.key}`;return s.toLowerCase().includes(r.toLowerCase())?s:[r,`Write your output as an activity file at ~/.agx/projects/<project>/objectives/${e.key}/activities/<timestamp>-<slug>.md
19
- The file must have YAML frontmatter with: id (unique), source (your task ID), objectiveLabel: "${e.key}", createdAt (ISO), type (one of: metric-check, status-update, milestone, note).
20
- The markdown body below the frontmatter contains your output.`,s].join("\n\n")}(E,e.prompt)})}),s=await t.json().catch(()=>({}));if(!t.ok)throw Error(s.error||"Failed to create scheduled task.");return await I(),!0}catch(e){return Y(e instanceof Error?e.message:"Failed to create scheduled task."),!1}},[E,w?.id,I]),eU=(0,a.useCallback)(async()=>{if(!w?.id||!E?.id)return Y("Objective not found."),!1;Y(null);try{let e=await fetch(`/api/projects/${w.id}/objectives/${E.id}/scheduled-tasks`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:"Work objective Linear tickets",executionMode:"objective_linear_ticket"})}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error||"Failed to create objective Linear worker.");return await I(),!0}catch(e){return Y(e instanceof Error?e.message:"Failed to create objective Linear worker."),!1}},[E,w?.id,I]);return((0,a.useEffect)(()=>{if(!w?.id||!E?.id){eC([]),e$(!0);return}let e=w.id,t=E.id,s=!1;return async function(){try{let r=await fetch(`/api/projects/${e}/objectives/${t}/linear-issues`),a=401===r.status?{connected:!1,issues:[]}:r.ok?await r.json():{connected:!0,issues:[]};if(s)return;eC(Array.isArray(a.issues)?a.issues:[]),e$(!1!==a.connected)}catch(e){if(s)return;console.warn("Failed to load objective resources",e),eC([]),e$(!0)}}(),()=>{s=!0}},[E?.id,E?.key,w?.id]),y&&!w)?(0,t.jsx)(eo,{label:"Loading objective..."}):w?E?(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-col bg-[#131315] text-zinc-200",children:[(0,t.jsx)("div",{className:"flex-1 min-h-0 overflow-hidden",children:(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-col xl:flex-row",children:[(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,t.jsxs)("div",{className:"max-w-5xl mx-auto pt-16 px-8 pb-20",children:[(0,t.jsx)(el,{message:K}),(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,t.jsx)("span",{className:"px-2.5 py-0.5 rounded-full text-[10px] font-mono tracking-wider bg-zinc-800/60 text-zinc-400 border border-zinc-700 uppercase",children:E.key}),(0,t.jsx)("span",{className:`rounded-full border px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.18em] ${X[E.status].chipClass}`,children:X[E.status].label})]}),(0,t.jsx)("div",{className:"mb-6",children:A?(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("input",{autoFocus:!0,value:A.title,onChange:e=>M({...A,title:e.target.value}),onKeyDown:e=>{"Enter"===e.key&&eA(),"Escape"===e.key&&M(null)},className:"flex-1 text-[28px] leading-tight font-semibold text-zinc-100 bg-transparent border-b-2 border-sky-500/50 outline-none px-0 py-1",placeholder:"Objective statement"}),(0,t.jsx)("button",{type:"button",onClick:()=>void eA(),disabled:H,className:"p-1.5 rounded-md text-sky-400 hover:bg-sky-500/10 transition-colors","aria-label":"Save objective",children:(0,t.jsx)(c.Check,{size:18})}),(0,t.jsx)("button",{type:"button",onClick:()=>M(null),className:"p-1.5 rounded-md text-zinc-400 hover:bg-zinc-800/50 transition-colors","aria-label":"Cancel editing",children:(0,t.jsx)(v.X,{size:18})})]}):(0,t.jsxs)("div",{className:"flex items-center gap-3 group cursor-pointer",onClick:()=>M(Z(E)),children:[(0,t.jsx)("h1",{className:"text-[28px] leading-tight font-semibold text-zinc-100",children:E.title}),(0,t.jsx)(x.Pencil,{size:16,className:"text-zinc-500 opacity-0 group-hover:opacity-100 transition-opacity shrink-0"})]})}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-6 gap-y-3 mb-10",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"text-xs font-semibold text-zinc-500 uppercase tracking-wider flex items-center gap-1.5",children:[(0,t.jsx)(f.Users,{size:12})," Team"]}),(0,t.jsx)("span",{className:"text-zinc-600",children:"·"}),P?(0,t.jsx)("div",{className:"min-w-[180px]",children:(0,t.jsx)(S.default,{options:O.map(e=>({id:e.id,label:e.name})),value:P.teamId,onChange:e=>{L({teamId:e});let t=e.trim();if(!t||!E)return;let s=et(k,t,E.id);s?Y(`Team is already assigned to "${s.title}".`):(eT((0,G.upsertProjectObjective)(k,{...E,teamId:t,updatedAt:new Date().toISOString()})),L(null))},placeholder:"Select a team…"})}):(0,t.jsxs)("button",{type:"button",onClick:()=>L({teamId:E.teamId}),className:"flex items-center gap-2 group rounded px-1.5 py-0.5 -mx-1.5 -my-0.5 hover:bg-zinc-800 transition-colors",children:[(0,t.jsx)("div",{className:"w-5 h-5 rounded-full bg-blue-500/20 text-blue-400 flex items-center justify-center text-[10px] font-bold border border-blue-500/30",children:(T??"?").charAt(0).toUpperCase()}),(0,t.jsx)("span",{className:"text-sm text-zinc-200 group-hover:text-zinc-50 transition-colors",children:T??"Not assigned"})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"text-xs font-semibold text-zinc-500 uppercase tracking-wider flex items-center gap-1.5",children:[(0,t.jsx)(u.Clock,{size:12})," Check-in"]}),(0,t.jsx)("span",{className:"text-zinc-600",children:"·"}),(0,t.jsx)("button",{type:"button",onClick:()=>D(Z(E)),className:"text-sm text-zinc-200 hover:text-zinc-50 rounded px-1.5 py-0.5 -my-0.5 hover:bg-zinc-800 transition-colors",children:er(E.cadence)}),E.condition?(0,t.jsxs)("span",{className:"text-xs text-zinc-500 truncate max-w-[200px]",children:["· ",E.condition]}):null]})]}),(0,t.jsx)("div",{className:"border-b border-zinc-800/80 mb-8",children:(0,t.jsx)("nav",{className:"flex gap-1 -mb-px","aria-label":"Objective sections",children:[{id:"activity",label:"Activity",icon:u.Clock},{id:"notes",label:"Notes",icon:m.FileText},{id:"linear",label:"Linear",icon:V.LinearIcon},{id:"scheduled-tasks",label:"Scheduled Tasks",icon:d}].map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>U(e.id),className:`flex items-center gap-2 px-3 py-2.5 text-sm font-medium border-b-2 transition-colors ${_===e.id?"border-sky-500 text-zinc-100":"border-transparent text-zinc-500 hover:text-zinc-300 hover:border-zinc-700"}`,children:[(0,t.jsx)(e.icon,{size:14}),e.label,"activity"===e.id&&q>0&&(0,t.jsx)("span",{className:"text-[10px] bg-zinc-800 text-zinc-400 rounded-full px-1.5 py-0.5 font-mono",children:q}),"notes"===e.id&&ee.length>0&&(0,t.jsx)("span",{className:"text-[10px] bg-zinc-800 text-zinc-400 rounded-full px-1.5 py-0.5 font-mono",children:ee.length}),"linear"===e.id&&eS.length>0&&(0,t.jsx)("span",{className:"text-[10px] bg-zinc-800 text-zinc-400 rounded-full px-1.5 py-0.5 font-mono",children:eS.length}),"scheduled-tasks"===e.id&&eO>0&&(0,t.jsx)("span",{className:"text-[10px] bg-zinc-800 text-zinc-400 rounded-full px-1.5 py-0.5 font-mono",children:eO})]},e.id))})}),(0,t.jsxs)("div",{className:"space-y-10",children:["notes"===_&&(0,t.jsxs)("section",{className:"space-y-4",children:[(0,t.jsx)("div",{className:"flex justify-between items-end",children:(0,t.jsx)("p",{className:"text-sm text-zinc-500",children:"Capture the strategy, constraints, and what better looks like."})}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("input",{type:"text",value:ew,onChange:e=>eN(e.target.value),onKeyDown:e=>{"Enter"===e.key&&eP()},placeholder:"New note title...",className:"flex-1 bg-zinc-900 border border-zinc-800 rounded-md px-3 py-1.5 text-sm text-zinc-200 placeholder:text-zinc-600 focus:outline-none focus:border-zinc-600"}),(0,t.jsxs)("button",{type:"button",onClick:eP,disabled:ek,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium text-zinc-200 bg-zinc-800 hover:bg-zinc-700 rounded-md transition-colors disabled:opacity-50",children:[(0,t.jsx)(p.Plus,{size:14}),"Add"]})]}),ec?(0,t.jsx)("p",{className:"text-sm text-zinc-500 py-4",children:"Loading notes..."}):0===ee.length?(0,t.jsx)("p",{className:"text-sm text-zinc-600 py-4",children:"No notes yet. Add one above."}):(0,t.jsx)("div",{className:"space-y-3",children:ee.map(e=>{let s=ep===e.id,r=ej.has(e.id),a=eb[e.id]??e.body,i=ev[e.id]??e.title;return(0,t.jsxs)("div",{className:"border border-zinc-800/80 rounded-lg overflow-hidden",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 bg-zinc-900/50",children:[s?(0,t.jsxs)("div",{className:"flex items-center gap-2 flex-1 mr-2",children:[(0,t.jsx)(m.FileText,{size:14,className:"text-zinc-500 shrink-0"}),(0,t.jsx)("input",{type:"text",value:i,onChange:t=>eg(s=>({...s,[e.id]:t.target.value})),className:"flex-1 bg-transparent border-b border-zinc-700 text-sm font-medium text-zinc-200 focus:outline-none focus:border-zinc-400 py-0.5"})]}):(0,t.jsxs)("button",{type:"button",onClick:()=>eh(e.id),className:"flex items-center gap-2 text-sm font-medium text-zinc-200 hover:text-zinc-50 transition-colors",children:[(0,t.jsx)(m.FileText,{size:14,className:"text-zinc-500"}),e.title]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-[11px] text-zinc-600",children:r?"Saving...":new Date(e.updatedAt).toLocaleDateString()}),(0,t.jsx)("button",{type:"button",onClick:()=>eh(s?null:e.id),className:"p-1 text-zinc-500 hover:text-zinc-300 transition-colors",children:(0,t.jsx)(x.Pencil,{size:12})}),(0,t.jsx)("button",{type:"button",onClick:()=>eL(e.id),className:"p-1 text-zinc-500 hover:text-red-400 transition-colors",children:(0,t.jsx)(h.Trash2,{size:12})})]})]}),s?(0,t.jsx)("div",{className:"px-4 py-3",children:(0,t.jsx)(ed,{content:a,editable:!0,onChange:t=>ef(s=>({...s,[e.id]:t})),placeholder:"Write your note..."})}):e.body.trim()?(0,t.jsx)("div",{className:"px-4 py-3 text-sm text-zinc-400 cursor-pointer hover:bg-zinc-900/30 transition-colors",onClick:()=>eh(e.id),children:(0,t.jsx)("div",{className:"line-clamp-3",children:(0,t.jsx)(N.Markdown,{content:e.body})})}):(0,t.jsx)("div",{className:"px-4 py-3 text-sm text-zinc-600 italic cursor-pointer hover:bg-zinc-900/30 transition-colors",onClick:()=>eh(e.id),children:"Empty note — click to edit"})]},e.id)})})]}),"activity"===_&&w.id&&E.id&&(0,t.jsx)(W,{projectId:w.id,objectiveId:E.id,onTotalChange:J}),"linear"===_&&(o=eS.filter((e,t,s)=>s.findIndex(t=>t.id===e.id)===t),l=["done","canceled","cancelled","completed","duplicate"],b=o.filter(e=>!l.includes(e.status.toLowerCase())),g=o.filter(e=>l.includes(e.status.toLowerCase())).slice(-5),(0,t.jsxs)("section",{children:[(0,t.jsxs)("p",{className:"text-sm text-zinc-500 mb-4",children:["Tickets tracked by the objective label"," ",(0,t.jsx)("code",{className:"font-mono text-[11px] bg-zinc-800/80 px-1.5 py-0.5 rounded text-zinc-300",children:E.key}),"."]}),eI?0===o.length?(0,t.jsx)(eu,{label:`No Linear tickets with label ${E.key} yet.`}):(0,t.jsxs)(t.Fragment,{children:[b.length>0&&(0,t.jsx)("div",{className:"space-y-3",children:b.map(e=>(0,t.jsxs)("div",{className:"bg-[#1c212b] border border-[#2d3748] rounded-xl p-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-zinc-500",children:e.identifier}),e.url?(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noreferrer",className:"mt-1 block text-sm font-medium text-zinc-200 transition-colors hover:text-sky-200",children:e.title}):(0,t.jsx)("p",{className:"mt-1 text-sm font-medium text-zinc-200",children:e.title})]}),(0,t.jsx)("span",{className:"rounded-full border border-zinc-700 px-2 py-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-zinc-500",children:e.status})]}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2 text-[11px] text-zinc-500",children:[(0,t.jsxs)("span",{children:["Updated ",Q(e.updatedAt)]}),(0,t.jsx)("span",{children:e.assignee?`Assigned to ${e.assignee}`:"Unassigned"})]})]},e.id))}),g.length>0&&(0,t.jsxs)("div",{className:b.length>0?"mt-6":"",children:[(0,t.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.18em] text-zinc-600 mb-2",children:"Completed"}),(0,t.jsx)("div",{className:"space-y-0.5",children:g.map(e=>(0,t.jsxs)("a",{href:e.url??"#",target:"_blank",rel:"noreferrer",className:"flex items-center gap-3 py-1.5 px-2 rounded-md text-zinc-500 hover:text-zinc-400 hover:bg-zinc-800/40 transition-colors group",children:[(0,t.jsx)("span",{className:"text-[11px] font-mono shrink-0",children:e.identifier}),(0,t.jsx)("span",{className:"text-[12px] truncate",children:e.title}),(0,t.jsx)("span",{className:"ml-auto text-[10px] shrink-0 text-zinc-600 group-hover:text-zinc-500",children:e.status})]},e.id))})]})]}):(0,t.jsx)(eu,{label:"Connect Linear to create and track tickets for this objective."})]})),"scheduled-tasks"===_&&(0,t.jsx)("section",{children:(0,t.jsx)(R,{projectId:w.id,objectiveId:E.id,objectiveKey:E.key,createDefaults:{name:`Work on ${E.title}`,cadence:E.cadence,condition:E.condition},onCreateTask:e_,onCreateObjectiveLinearWorker:eU})}),(0,t.jsxs)("section",{className:"pt-10",children:[(0,t.jsx)("div",{className:"mb-4",children:(0,t.jsx)("h2",{className:"text-sm font-semibold text-red-400",children:"Danger Zone"})}),(0,t.jsxs)("div",{className:"border border-red-900/30 rounded-xl p-5 flex items-center justify-between bg-red-950/5",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-sm font-medium text-zinc-200",children:"Delete Objective"}),(0,t.jsx)("p",{className:"text-sm text-zinc-500 mt-1",children:"Once you delete an objective, there is no going back."})]}),(0,t.jsxs)("button",{type:"button",onClick:()=>void eF(),"aria-label":`Delete objective ${E.title}`,className:"flex items-center gap-2 px-3 py-1.5 rounded-md border border-red-900/40 text-red-400 text-sm font-medium hover:bg-red-950/40 transition-colors bg-red-950/20 whitespace-nowrap",children:[(0,t.jsx)(h.Trash2,{size:14})," Delete"]})]})]})]})]})}),(0,t.jsx)(en,{projectId:w.id,projectSlug:e,objective:E,teamName:T,onThreadLinked:eD,onObjectiveUpdated:I})]})}),F?(0,t.jsx)(ex,{draft:F,isSaving:H,onChange:D,onClose:()=>D(null),onSave:()=>void eR()}):null]}):(0,t.jsx)("div",{className:"flex h-full items-center justify-center px-4 bg-[#131315]",children:(0,t.jsxs)("div",{className:"rounded-xl border border-zinc-700/80 bg-[#18181b] p-8 text-center",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-zinc-100",children:"Objective not found"}),(0,t.jsx)("p",{className:"mt-2 text-sm text-zinc-500",children:"It may have been deleted or the link is stale."}),(0,t.jsx)(s.default,{href:`/projects/${e}`,className:"mt-4 inline-flex items-center gap-2 rounded-md border border-zinc-700/80 px-3 py-1.5 text-sm text-zinc-300 transition-colors hover:bg-zinc-800/50 bg-[#1a1a1c]",children:"Back to objectives"})]})}):(0,t.jsx)(eo,{label:"Project not found."})},"ProjectObjectivesOverview",0,function({projectSlug:e}){let s=(0,r.useRouter)(),{isLoading:i,project:n,workspace:o,teams:l,persistWorkspace:d}=ea(e),c=o.objectives,u=(0,a.useMemo)(()=>es(l,o),[l,o]),[m,x]=(0,a.useState)(null),[h,b]=(0,a.useState)(!1),[f,v]=(0,a.useState)(null),[g,j]=(0,a.useState)(new Map),[y,w]=(0,a.useState)([]);(0,a.useEffect)(()=>{let e=!1;return async function(){try{let t=await fetch("/api/participants");t.ok&&!e&&w(await t.json())}catch{}}(),()=>{e=!0}},[]),(0,a.useEffect)(()=>{let e=new Map;for(let t of c)t.threadId&&e.set(t.threadId,t.id);if(0===e.size)return;let t=!1;async function s(){try{let s=Array.from(e.keys()).join(","),r=await fetch(`/api/chat-runs/active-agents?threadIds=${encodeURIComponent(s)}`);if(!r.ok||t)return;let a=await r.json(),i=new Map;for(let[t,s]of Object.entries(a.activeAgents??{})){let r=e.get(t);r&&Array.isArray(s)&&s.length>0&&i.set(r,s)}t||j(i)}catch{}}s();let r=setInterval(()=>void s(),5e3);return()=>{t=!0,clearInterval(r)}},[c]);let N=async()=>{if(!m)return;let t=m.title.trim();if(!t)return void v("Objective statement is required.");let r=m.teamId.trim();if(!r)return void v("Team is required.");let a=et(o,r);if(a)return void v(`Team is already assigned to "${a.title}".`);let i=new Date().toISOString(),n=(0,G.createProjectObjective)({title:t,teamId:r,key:(0,G.generateProjectObjectiveKey)(t,o.objectives),summary:m.summary,cadence:m.cadence,condition:m.condition,now:i});b(!0),v(null);try{await d((0,G.upsertProjectObjective)(o,n)),x(null),s.push(ee(e,n.id))}catch(e){v(e instanceof Error?e.message:"Failed to save objective updates.")}finally{b(!1)}};return i&&!n?(0,t.jsx)(eo,{label:"Loading objectives..."}):n?(0,t.jsxs)("div",{className:"flex h-full min-h-0 flex-col bg-[radial-gradient(circle_at_top_left,rgba(59,130,246,0.14),transparent_28%),var(--background)] text-[var(--foreground)]",children:[(0,t.jsxs)("div",{className:"border-b border-[var(--border)] bg-[rgba(10,14,20,0.7)] px-4 py-5 backdrop-blur md:px-6",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-4 md:flex-row md:items-end md:justify-between",children:[(0,t.jsx)("div",{className:"space-y-2",children:(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:0===c.length?"Add an objective to start tracking work in this project.":"Click an objective to open its detail view."})}),(0,t.jsxs)("button",{type:"button",onClick:()=>x({title:"",teamId:"",summary:"",cadence:"",condition:""}),className:"inline-flex items-center gap-2 self-start rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-3 py-2 text-sm font-medium text-emerald-100 transition-colors hover:bg-emerald-500/20",children:[(0,t.jsx)(p.Plus,{className:"h-4 w-4"}),"New objective"]})]}),(0,t.jsx)(el,{message:f})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto px-4 py-5 md:px-6 md:py-6",children:0===c.length?(0,t.jsxs)("div",{className:"mx-auto max-w-3xl rounded-[32px] border border-dashed border-[var(--border)] bg-[var(--card-bg)] p-8 text-center",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-[var(--foreground)]",children:"No objectives yet"}),(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"Keep the root view simple: objective list first, detail after click-through."})]}):(0,t.jsx)("div",{className:"mx-auto max-w-4xl divide-y divide-[var(--border)] overflow-hidden rounded-[24px] border border-[var(--border)] bg-[rgba(8,12,18,0.58)]",children:c.map(s=>{let r=(0,G.buildObjectiveTimelineActivities)({objective:s,workspace:o});return(0,t.jsx)(ec,{projectSlug:e,objective:s,activityCount:r.length,lastActivityAt:r[0]?.createdAt??null,activeAgentIds:g.get(s.id),participants:y},s.id)})})}),m?(0,t.jsx)(em,{mode:"create",draft:m,teams:u,isSaving:h,onChange:x,onClose:()=>x(null),onSave:()=>void N()}):null]}):(0,t.jsx)(eo,{label:"Project not found."})}],568656)}]);