@mndrk/agx 2.0.55 → 2.1.0

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 (762) 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 +3 -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 +23 -0
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page.js +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page.js.nft.json +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page.js +1 -1
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js +1 -1
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js +4 -3
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/route.js +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js +2 -2
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js +2 -2
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js +5 -4
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/app-paths-manifest.json +3 -0
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/build-manifest.json +9 -0
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/server-reference-manifest.json +4 -0
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js +13 -0
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js.map +5 -0
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js.nft.json +1 -0
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route_client-reference-manifest.js +3 -0
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js +4 -4
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js +4 -4
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js +2 -2
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js +2 -2
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js +3 -3
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +19 -8
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js +3 -3
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route/app-paths-manifest.json +3 -0
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route/build-manifest.json +9 -0
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route/server-reference-manifest.json +4 -0
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js +28 -0
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.map +5 -0
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -0
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route_client-reference-manifest.js +3 -0
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js +9 -5
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js +4 -4
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js.nft.json +1 -1
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js +1 -1
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +16 -15
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/route.js +5 -5
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +2 -2
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/pause/route.js.nft.json +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +9 -8
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js +1 -1
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js.nft.json +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +15 -15
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +15 -15
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page.js +1 -1
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page.js.nft.json +1 -1
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js +1 -1
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js +1 -1
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js.nft.json +1 -1
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  216. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  217. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  219. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  220. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +2 -2
  221. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js +1 -1
  222. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js +1 -1
  225. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  226. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  227. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/app-paths-manifest.json +3 -0
  228. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/build-manifest.json +18 -0
  229. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/next-font-manifest.json +11 -0
  230. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/react-loadable-manifest.json +1 -0
  231. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/server-reference-manifest.json +4 -0
  232. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js +14 -0
  233. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.map +5 -0
  234. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -0
  235. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +3 -0
  236. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js +1 -1
  237. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  238. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  239. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js +1 -1
  240. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  241. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  242. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +8 -2
  243. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js +1 -1
  244. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  245. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  246. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js +1 -1
  247. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  248. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  249. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js +1 -1
  250. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  251. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  252. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js +1 -1
  253. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  254. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  255. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js +1 -1
  256. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
  257. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  258. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js +1 -1
  259. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  260. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  261. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js +1 -1
  262. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  263. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  264. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js +1 -1
  265. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  266. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  267. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js +1 -1
  268. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  269. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  270. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js +1 -1
  271. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  272. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  273. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js +1 -1
  274. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  275. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  276. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js +1 -1
  277. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  278. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  279. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js +1 -1
  280. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  281. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  282. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js +1 -1
  283. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  284. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  285. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  286. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +3 -3
  287. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
  288. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  289. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  290. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  291. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
  292. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  293. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  294. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js +1 -1
  295. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  296. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  297. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  298. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  299. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  300. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  301. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  302. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  303. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  304. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  305. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page.js +1 -1
  306. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page.js.nft.json +1 -1
  307. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  308. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  309. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  310. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  311. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  312. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  313. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  314. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  315. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  316. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js +1 -1
  317. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  318. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  319. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  320. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
  321. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
  322. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  323. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  324. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  325. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  326. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  327. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page.js +1 -1
  328. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page.js.nft.json +1 -1
  329. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  330. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  331. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  332. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  333. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  334. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  335. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  336. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  337. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  338. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js +1 -1
  339. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
  340. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  341. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  342. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  343. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  344. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  345. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  346. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  347. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  348. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  349. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js +1 -1
  350. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  351. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  352. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +3 -0
  353. package/cloud-runtime/standalone/apps/local/.next/server/chunks/0jps_app_api_projects_[id]_objectives_[objectiveId]_worker_route_actions_0v8q3zz.js +3 -0
  354. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__0_au5u1._.js +3 -0
  355. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__13x93ar._.js +3 -0
  356. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0_10qfd._.js → [root-of-the-server]__0.6yz1u._.js} +2 -2
  357. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__01lsgl~._.js +4 -0
  358. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0205scg._.js → [root-of-the-server]__03.9arn._.js} +2 -2
  359. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__01ol22y._.js → [root-of-the-server]__03h0gqp._.js} +2 -2
  360. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__094z9yf._.js → [root-of-the-server]__08jo91s._.js} +2 -2
  361. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__09j9jpf._.js +3 -0
  362. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0-nye63._.js → [root-of-the-server]__09jghbu._.js} +2 -2
  363. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0_7hiof._.js +43 -0
  364. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0.jam.l._.js → [root-of-the-server]__0a0cq38._.js} +2 -2
  365. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0asvfdo._.js +54 -0
  366. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0c86535._.js +3 -0
  367. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0cj1krd._.js +3 -0
  368. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0aa-88e._.js → [root-of-the-server]__0dy3h2i._.js} +2 -2
  369. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0touqng._.js → [root-of-the-server]__0e8-2k_._.js} +2 -2
  370. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0enhv5p._.js +3 -0
  371. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0f9byr.._.js +1 -1
  372. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7hc1-._.js +18 -0
  373. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7p6pw._.js +55 -0
  374. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__019q25b._.js → [root-of-the-server]__0gj~dap._.js} +7 -7
  375. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0e6cj2y._.js → [root-of-the-server]__0hc45jw._.js} +2 -2
  376. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0avz575._.js → [root-of-the-server]__0hkcw03._.js} +2 -2
  377. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hmw36u._.js +1 -1
  378. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0l53ok5._.js +54 -0
  379. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0n.momw._.js +8 -0
  380. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tjo9we._.js +7 -0
  381. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0-~t2br._.js → [root-of-the-server]__0v7jjvl._.js} +2 -2
  382. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0x6w64i._.js +3 -0
  383. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__11nke7t._.js → [root-of-the-server]__0y3qxv1._.js} +2 -2
  384. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__10z8f9h._.js → [root-of-the-server]__0ygidxe._.js} +2 -2
  385. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0z82z0-._.js +49 -0
  386. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0zsv-tb._.js +8 -0
  387. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~nnfjr._.js +3 -0
  388. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~x4jbk._.js +3 -0
  389. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10d.dhd._.js +229 -0
  390. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__12qy318._.js +3 -0
  391. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_039.xxy._.js +1 -1
  392. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_06oeti1._.js +49 -0
  393. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0dyy7h.._.js +3 -0
  394. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0gi7c9x._.js +2 -2
  395. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0gr.psg._.js +1 -1
  396. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0sd8z0i._.js +21 -0
  397. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0y42h_~._.js +2 -2
  398. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~ah49q._.js +1 -1
  399. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_01kqgle._.js +11 -0
  400. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_06qet8g._.js +36 -0
  401. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_0m2ly._.js +397 -0
  402. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_a~bj0._.js +25 -0
  403. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0a15wtk._.js +397 -0
  404. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0bjdpen._.js +29 -0
  405. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0fr1qq6._.js +1 -1
  406. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0g.q2r6._.js +41 -0
  407. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0h7wd0e._.js +29 -0
  408. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0i7fs.i._.js +397 -0
  409. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0ipg-p6._.js +3 -0
  410. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0npxy21._.js +11 -0
  411. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0uhfa93._.js +21 -0
  412. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_12wpldq._.js +25 -0
  413. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_worker_route_actions_116303i.js +3 -0
  414. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01hd2_5._.js +3 -0
  415. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01pvj2g._.js +34 -0
  416. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0ik933l._.js +55 -0
  417. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0o1v.j4._.js +79 -0
  418. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0pxj122._.js +55 -0
  419. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_automations_index_ts_0_8ch28._.js +10 -0
  420. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js +41 -0
  421. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_0.xgxyl._.js +4 -0
  422. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_0yu3--n._.js +4 -0
  423. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_0ze8hzc._.js +4 -0
  424. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_get-store_ts_0p0aod1._.js +5 -5
  425. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_linear-worker_ts_0ycjwem._.js +5 -0
  426. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0gips_c.js +1 -1
  427. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0u_5kfo.js +1 -1
  428. 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
  429. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0tvwux2._.js +3 -0
  430. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0e2_v_.._.js +3 -0
  431. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0hvpc.y._.js +3 -0
  432. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0w3hl3p._.js +3 -0
  433. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__006vr7.._.js +3 -0
  434. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__08d5c~o._.js +3 -0
  435. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0_n~ybp._.js +3 -0
  436. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0d18x53._.js +18 -0
  437. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0fl7_-o._.js +18 -0
  438. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0h~rb5r._.js +3 -0
  439. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0j9m72.._.js +18 -0
  440. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__02.r909._.js → [root-of-the-server]__0n5g8ml._.js} +2 -2
  441. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w.zmt6._.js +3 -0
  442. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0z7nw_r._.js +3 -0
  443. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__10h_7t0._.js +3 -0
  444. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_00trrg8._.js +3 -0
  445. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0s~0ump._.js → _064h43p._.js} +2 -2
  446. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0742x_.._.js +3 -0
  447. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +3 -0
  448. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0fwy5tm._.js +7 -0
  449. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +3 -0
  450. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ufdu.z._.js +7 -0
  451. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0wk3skw._.js +3 -0
  452. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yeuuy1._.js +25 -0
  453. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +3 -0
  454. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +1 -1
  455. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +3 -0
  456. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0h3mfm7._.js +3 -0
  457. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_075cq2j._.js → apps_local_0k4~c1x._.js} +2 -2
  458. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0n80y4_._.js → apps_local_0nvzo3y._.js} +2 -2
  459. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0t6p.qm._.js +3 -0
  460. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0v~bvwg._.js +3 -0
  461. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +1 -1
  462. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_[id]_page_tsx_06n47n~._.js +1 -1
  463. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_execution-graph_page_tsx_0tn2sx9._.js +2 -2
  464. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_0ju618z._.js +3 -0
  465. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_graph_[taskId]_page_tsx_0bctfd-._.js +1 -1
  466. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
  467. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +2 -2
  468. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
  469. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_new_page_tsx_0yqd0a5._.js +3 -0
  470. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_page_tsx_06czvz-._.js +3 -0
  471. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +12 -12
  472. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_orphans_page_tsx_0sdv.11._.js +4 -4
  473. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_0ql2qmr._.js +1 -1
  474. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +8 -0
  475. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TaskCard_tsx_0e35_z5._.js +6 -6
  476. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +3 -3
  477. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +6 -6
  478. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
  479. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mk0s0o.js +4 -0
  480. package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +2 -0
  481. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  482. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  483. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
  484. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +4 -0
  485. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  486. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  487. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  488. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  489. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-_ukhpeg429c.js +16 -0
  490. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-olq~7zw3wjy.js +1 -0
  491. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0142ce0jj3j7r.js → 0-vo_x2cxmjm3.js} +1 -1
  492. package/cloud-runtime/standalone/apps/local/.next/static/chunks/003q-y3exxalk.js +1 -0
  493. package/cloud-runtime/standalone/apps/local/.next/static/chunks/00po4v2x~0x_z.js +1 -0
  494. package/cloud-runtime/standalone/apps/local/.next/static/chunks/013gtut17~fne.js +23 -0
  495. package/cloud-runtime/standalone/apps/local/.next/static/chunks/014z_yruiincl.js +1 -0
  496. package/cloud-runtime/standalone/apps/local/.next/static/chunks/041-dhls9zkl1.js +1 -0
  497. package/cloud-runtime/standalone/apps/local/.next/static/chunks/04yoml2rqnuot.js +16 -0
  498. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07646a0h94826.js +3 -0
  499. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0_mrpyqcoyb_5.js +1 -0
  500. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0rm7v.1y6qcni.js → 0aewbg0i704w7.js} +1 -1
  501. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0px65ynyk3t1d.js → 0bchtyu6m.2yv.js} +7 -7
  502. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0dnw31436wd~..js +5 -0
  503. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e307b-0c2jbx.js +1 -0
  504. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0edewt9l~cs~k.css +1 -0
  505. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +1 -0
  506. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0fonouj2i9qnb.js +5 -0
  507. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gj98094p~zn4.js +1 -0
  508. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jrkacz_dyem6.js +37 -0
  509. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +1 -0
  510. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lgb.0~i1xvv-.js +1 -0
  511. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lkal3uvr6_~2.js +1 -0
  512. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mig99af4~uos.js +28 -0
  513. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pdrpsy-zdxp0.js +5 -0
  514. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p~l5ap6qqx2o.js +1 -0
  515. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +1 -0
  516. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0stvi5btlxl4m.js +20 -0
  517. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0h_bwlg~kk8lz.js → 0tt1oh112yv-l.js} +2 -2
  518. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0uve8xrt~0a2e.js +1 -0
  519. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0w94x-v00osq0.js +1 -0
  520. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0wh6p5~ft5rma.js +5 -0
  521. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0x_pewz9npq~q.js +1 -0
  522. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +1 -0
  523. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zw85-xl9ysjs.js +1 -0
  524. package/cloud-runtime/standalone/apps/local/.next/static/chunks/119v0-idpg-cv.js +16 -0
  525. package/cloud-runtime/standalone/apps/local/.next/static/chunks/11l2tww5f0hsk.js +20 -0
  526. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +1 -0
  527. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0826uh6nmsi5l.js → 1503vb7lb6.g1.js} +1 -1
  528. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16d~es6h6k~rj.js +6 -0
  529. package/cloud-runtime/standalone/apps/local/.next/static/chunks/177-q0wwdi0qe.js +1 -0
  530. package/cloud-runtime/standalone/apps/local/agx-server.js +4055 -0
  531. package/cloud-runtime/standalone/apps/local/app/agents/[id]/page.tsx +40 -5
  532. package/cloud-runtime/standalone/apps/local/app/api/agents/[id]/profile/route.ts +10 -0
  533. package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +10 -2
  534. package/cloud-runtime/standalone/apps/local/app/api/linear/worker/route.ts +151 -0
  535. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/route.ts +0 -8
  536. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.ts +22 -27
  537. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/worker/route.ts +89 -0
  538. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/route.ts +13 -0
  539. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/search/route.ts +4 -4
  540. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/teams/route.ts +5 -3
  541. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +15 -5
  542. package/cloud-runtime/standalone/apps/local/app/globals.css +67 -5
  543. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/folders/page.tsx +25 -0
  544. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +19 -5
  545. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/objectives/[objectiveId]/page.tsx +7 -2
  546. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/new/page.tsx +236 -10
  547. package/cloud-runtime/standalone/apps/local/app/setup/page.tsx +9 -1
  548. package/cloud-runtime/standalone/apps/local/bundled-server.ts +45 -0
  549. package/cloud-runtime/standalone/apps/local/components/ActionToolbar.tsx +5 -2
  550. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +35 -3
  551. package/cloud-runtime/standalone/apps/local/components/ContextMenu.tsx +2 -2
  552. package/cloud-runtime/standalone/apps/local/components/FloatingPanel.tsx +70 -20
  553. package/cloud-runtime/standalone/apps/local/components/IconButton.tsx +10 -2
  554. package/cloud-runtime/standalone/apps/local/components/KanbanBoard.tsx +84 -3
  555. package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +434 -36
  556. package/cloud-runtime/standalone/apps/local/components/LogTimeline.tsx +4 -1
  557. package/cloud-runtime/standalone/apps/local/components/NowRunningPanel.tsx +3 -1
  558. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +119 -6
  559. package/cloud-runtime/standalone/apps/local/components/SearchCombo.tsx +3 -3
  560. package/cloud-runtime/standalone/apps/local/components/SortableTaskCard.tsx +21 -3
  561. package/cloud-runtime/standalone/apps/local/components/StatusCircle.tsx +3 -3
  562. package/cloud-runtime/standalone/apps/local/components/TaskCard.tsx +51 -1
  563. package/cloud-runtime/standalone/apps/local/components/chat-ui/ChatContainer.tsx +15 -2
  564. package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +3 -3
  565. package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +76 -9
  566. package/cloud-runtime/standalone/apps/local/components/graph/ExecutionGraphPanel.tsx +4 -1
  567. package/cloud-runtime/standalone/apps/local/components/graph/GraphFirstView.tsx +6 -2
  568. package/cloud-runtime/standalone/apps/local/components/graph/NodeDetailPanel.tsx +45 -25
  569. package/cloud-runtime/standalone/apps/local/components/graph/NodeInspector.tsx +9 -6
  570. package/cloud-runtime/standalone/apps/local/components/linear/LinearSettingsModal.tsx +105 -0
  571. package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerConfig.tsx +367 -0
  572. package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +16 -16
  573. package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +856 -0
  574. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveActivityTimeline.tsx +40 -32
  575. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveHealthTrend.tsx +215 -0
  576. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +338 -91
  577. package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +12 -6
  578. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +489 -467
  579. package/cloud-runtime/standalone/apps/local/components/projects/ProjectSearchBar.tsx +4 -2
  580. package/cloud-runtime/standalone/apps/local/components/projects/RecentlyCompletedCard.tsx +213 -0
  581. package/cloud-runtime/standalone/apps/local/components/projects/ScheduledTasksSummaryCard.tsx +19 -19
  582. package/cloud-runtime/standalone/apps/local/components/projects/TeamsSummaryCard.tsx +10 -10
  583. package/cloud-runtime/standalone/apps/local/components/projects/TeamsView.tsx +171 -56
  584. package/cloud-runtime/standalone/apps/local/components/projects/WorkingNowCard.tsx +12 -12
  585. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectiveCard.tsx +13 -10
  586. package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectivesSection.tsx +7 -7
  587. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathCard.tsx +2 -2
  588. package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathsSection.tsx +9 -9
  589. package/cloud-runtime/standalone/apps/local/components/scheduling/ScheduleConditionPicker.tsx +4 -4
  590. package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +242 -0
  591. package/cloud-runtime/standalone/apps/local/components/setup/ProjectStep.tsx +2 -2
  592. package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +1 -1
  593. package/cloud-runtime/standalone/apps/local/components/setup/TeamsStep.tsx +288 -15
  594. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +233 -89
  595. package/cloud-runtime/standalone/apps/local/components/terminal/TerminalSessionList.tsx +3 -1
  596. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +72 -21
  597. package/cloud-runtime/standalone/apps/local/hooks/useInputCapabilities.ts +74 -0
  598. package/cloud-runtime/standalone/apps/local/hooks/useSetupFlow.ts +16 -2
  599. package/cloud-runtime/standalone/apps/local/lib/app-config.ts +35 -0
  600. package/cloud-runtime/standalone/apps/local/lib/objective-health-history.ts +198 -0
  601. package/cloud-runtime/standalone/apps/local/lib/project-objective-context.ts +10 -0
  602. package/cloud-runtime/standalone/apps/local/lib/project-objectives.ts +0 -9
  603. package/cloud-runtime/standalone/apps/local/lib/pty-manager.ts +5 -1
  604. package/cloud-runtime/standalone/apps/local/lib/terminal-server.ts +182 -0
  605. package/cloud-runtime/standalone/apps/local/next.config.ts +2 -1
  606. package/cloud-runtime/standalone/apps/local/package.json +2 -2
  607. package/cloud-runtime/standalone/apps/local/playwright.config.ts +8 -0
  608. package/cloud-runtime/standalone/apps/local/server.js +1 -1
  609. package/cloud-runtime/standalone/apps/local/server.ts +14 -158
  610. package/cloud-runtime/standalone/apps/local/skills-lock.json +20 -0
  611. package/cloud-runtime/standalone/apps/local/src/automations/adapters.ts +5 -0
  612. package/cloud-runtime/standalone/apps/local/src/automations/types.ts +5 -0
  613. package/cloud-runtime/standalone/apps/local/src/automations/validation.ts +12 -5
  614. package/cloud-runtime/standalone/apps/local/src/graph/types.ts +2 -0
  615. package/cloud-runtime/standalone/apps/local/src/objectives/parser.ts +0 -2
  616. package/cloud-runtime/standalone/apps/local/src/objectives/serializer.ts +0 -2
  617. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/cron.ts +11 -0
  618. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker-constants.ts +38 -0
  619. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker-job.ts +47 -0
  620. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker.ts +482 -0
  621. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker-job.ts +47 -0
  622. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker.ts +511 -0
  623. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +239 -368
  624. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/store.ts +19 -4
  625. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +32 -8
  626. package/cloud-runtime/standalone/apps/local/state/terminalTabs.ts +182 -106
  627. package/cloud-runtime/standalone/apps/local/state/windowState.ts +11 -0
  628. package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +65 -0
  629. package/cloud-runtime/standalone/apps/local/worker/index.js +9 -14
  630. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  631. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  632. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  633. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  634. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  635. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  636. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  637. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  638. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  639. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  640. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.node +0 -0
  641. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.pdb +0 -0
  642. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  643. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  644. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.dll +0 -0
  645. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.pdb +0 -0
  646. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  647. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  648. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  649. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  650. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  651. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  652. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
  653. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.pdb +0 -0
  654. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
  655. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  656. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
  657. package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.pdb +0 -0
  658. package/lib/cli/daemon.js +13 -2
  659. package/lib/cli/onboarding.js +5 -6
  660. package/lib/cli/runCli.js +1 -1
  661. package/lib/cloud/client.js +1 -1
  662. package/lib/commands/chat.js +37 -11
  663. package/lib/commands/daemonBoard.js +19 -13
  664. package/lib/config/cloudConfig.js +1 -1
  665. package/lib/orchestrator/httpClient.js +1 -1
  666. package/lib/prompts/templates.js +8 -9
  667. package/package.json +1 -1
  668. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0-0479y._.js +0 -54
  669. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__088h0r2._.js +0 -3
  670. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08oj_ky._.js +0 -49
  671. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08y2lkj._.js +0 -3
  672. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__09joc_o._.js +0 -3
  673. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gtv0rq._.js +0 -8
  674. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gvjvx7._.js +0 -237
  675. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ksbs9p._.js +0 -3
  676. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0o315az._.js +0 -3
  677. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0pz~m67._.js +0 -3
  678. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0q93mk3._.js +0 -7
  679. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0t2jk2r._.js +0 -18
  680. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0vhcrdv._.js +0 -229
  681. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__11s20j6._.js +0 -3
  682. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__12xhcor._.js +0 -54
  683. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_01rag2f._.js +0 -49
  684. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_03y4xss._.js +0 -21
  685. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0cm4i3i._.js +0 -3
  686. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0ijzgnb._.js +0 -3
  687. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_03q7_.q._.js +0 -21
  688. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0m3e2d~._.js +0 -30
  689. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0r-oiga._.js +0 -30
  690. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_00cwfvi._.js +0 -34
  691. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0hx7xyz._.js +0 -34
  692. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0rqcat4._.js +0 -55
  693. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0sc_lek._.js +0 -79
  694. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_135ddsu._.js +0 -55
  695. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_store_ts_0h.2qy9._.js +0 -43
  696. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_0i1av_r._.js +0 -474
  697. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0xxf2a0.js +0 -3
  698. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0xd_mxu._.js +0 -3
  699. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__044xm0q._.js +0 -3
  700. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__066ay_e._.js +0 -3
  701. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__09smg3p._.js +0 -18
  702. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0bf346q._.js +0 -3
  703. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0hd2vo4._.js +0 -18
  704. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0iix1sf._.js +0 -3
  705. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r54zr9._.js +0 -3
  706. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0s8z2_c._.js +0 -18
  707. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0wq3ukc._.js +0 -3
  708. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03-mlx0._.js +0 -7
  709. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03rf_sb._.js +0 -3
  710. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_09b42z9._.js +0 -3
  711. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ag3.tl._.js +0 -7
  712. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0dh_hx0._.js +0 -3
  713. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0h8cbsi._.js +0 -3
  714. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0i1ffhz._.js +0 -3
  715. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ndrb_0._.js +0 -8
  716. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0nlki7b._.js +0 -3
  717. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ut3k~7._.js +0 -3
  718. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0vibfch._.js +0 -3
  719. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yffwm4._.js +0 -8
  720. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_q01av._.js +0 -3
  721. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0eh.4j7._.js +0 -3
  722. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0qaowqy._.js +0 -3
  723. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0s0iy2_._.js +0 -3
  724. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0zr-_na._.js +0 -3
  725. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_10qsqky._.js +0 -3
  726. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.a4-dh~x9sa3.js +0 -6
  727. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.bv3h68wo33z.js +0 -1
  728. package/cloud-runtime/standalone/apps/local/.next/static/chunks/016.x9zt9~rsh.js +0 -16
  729. package/cloud-runtime/standalone/apps/local/.next/static/chunks/027-6dwgpb0cy.js +0 -1
  730. package/cloud-runtime/standalone/apps/local/.next/static/chunks/031720jijg_th.js +0 -1
  731. package/cloud-runtime/standalone/apps/local/.next/static/chunks/03m1xs0rztynh.js +0 -16
  732. package/cloud-runtime/standalone/apps/local/.next/static/chunks/051-7k0nnm-vm.js +0 -1
  733. package/cloud-runtime/standalone/apps/local/.next/static/chunks/07o~9mm~xds_b.js +0 -1
  734. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08zgoptetnxjj.css +0 -1
  735. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09-_2lcshmjl5.js +0 -1
  736. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09_yj-9nfh48m.js +0 -1
  737. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09c7ssmgohk7l.js +0 -1
  738. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0awbe2r3qazge.css +0 -1
  739. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0dro-bz6f72z0.js +0 -1
  740. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gbunx8z.~i4x.js +0 -5
  741. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ge81r~ap.u7n.js +0 -28
  742. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ghg5160qeazw.js +0 -5
  743. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gl_8hdxl5qnd.js +0 -37
  744. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0g~v8p6_pc46-.js +0 -1
  745. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jb4f8425s.-2.js +0 -1
  746. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kukkarp4un0o.js +0 -1
  747. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0m.2b-cekea8b.js +0 -1
  748. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0o0hwfzwwty4b.js +0 -6
  749. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ov5lu0tz2o2e.js +0 -1
  750. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pt8_y9asrg~7.js +0 -1
  751. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0wyg4lymaq0hg.js +0 -3
  752. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xl~1ux2f~rcu.js +0 -1
  753. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y7-eze-w7~b4.js +0 -5
  754. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y8e--tok1214.js +0 -5
  755. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0yy~0bgsz~o6-.js +0 -1
  756. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0~apd0q5_i88z.js +0 -16
  757. package/cloud-runtime/standalone/apps/local/.next/static/chunks/100xrwo-45nrg.js +0 -20
  758. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14h3qxwuo~1q9.js +0 -20
  759. package/cloud-runtime/standalone/apps/local/.next/static/chunks/17oesq5eds3xi.js +0 -1
  760. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → RnYHmEXBwXJjVrVVx2CuP}/_buildManifest.js +0 -0
  761. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → RnYHmEXBwXJjVrVVx2CuP}/_clientMiddlewareManifest.js +0 -0
  762. /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → RnYHmEXBwXJjVrVVx2CuP}/_ssgManifest.js +0 -0
@@ -0,0 +1,856 @@
1
+ "use client";
2
+
3
+ import { useCallback, useEffect, useState } from "react";
4
+ import {
5
+ ChevronRight,
6
+ Copy,
7
+ Check,
8
+ ExternalLink,
9
+ FileText,
10
+ FolderGit2,
11
+ FolderOpen,
12
+ FolderSearch,
13
+ GitBranch,
14
+ HardDrive,
15
+ Pencil,
16
+ Plus,
17
+ Save,
18
+ Trash2,
19
+ X,
20
+ } from "lucide-react";
21
+ import { useProjectsWithAgents, type ProjectRepoInput, type ProjectRepo } from "@/hooks/useProjects";
22
+ import DirectoryBrowser from "@/components/DirectoryBrowser";
23
+
24
+ interface FoldersViewProps {
25
+ projectId: string;
26
+ }
27
+
28
+ type SystemNote = {
29
+ id: string;
30
+ content: string;
31
+ created_at?: string;
32
+ updated_at?: string;
33
+ };
34
+
35
+ interface RepoAnalysis {
36
+ isGit: boolean;
37
+ branch?: string;
38
+ status?: { modified: number; untracked: number; staged: number };
39
+ languages: Record<string, number>;
40
+ }
41
+
42
+ function mapNote(note: { id: string; content: string; createdAt?: string; updatedAt?: string } | null | undefined): SystemNote | null {
43
+ if (!note) return null;
44
+ return { id: note.id, content: note.content, created_at: note.createdAt, updated_at: note.updatedAt };
45
+ }
46
+
47
+ function CopyPathButton({ path }: { path: string }) {
48
+ const [copied, setCopied] = useState(false);
49
+ return (
50
+ <button
51
+ type="button"
52
+ onClick={(e) => {
53
+ e.stopPropagation();
54
+ void navigator.clipboard.writeText(path);
55
+ setCopied(true);
56
+ setTimeout(() => setCopied(false), 1500);
57
+ }}
58
+ className="rounded p-1 text-[var(--app-shell-soft-text)] transition-colors hover:text-[var(--foreground)]"
59
+ title="Copy path"
60
+ >
61
+ {copied ? <Check className="w-3 h-3 text-green-400" /> : <Copy className="w-3 h-3" />}
62
+ </button>
63
+ );
64
+ }
65
+
66
+ function LanguageBadge({ lang, count }: { lang: string; count: number }) {
67
+ return (
68
+ <span className="inline-flex items-center gap-1 rounded-md bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]">
69
+ {lang}
70
+ <span className="text-[var(--app-shell-soft-text)]">{count}</span>
71
+ </span>
72
+ );
73
+ }
74
+
75
+ function AnalysisSummary({ analysis }: { analysis: RepoAnalysis }) {
76
+ const topLangs = Object.entries(analysis.languages)
77
+ .sort(([, a], [, b]) => b - a)
78
+ .slice(0, 5);
79
+
80
+ return (
81
+ <div className="overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--card-bg)]">
82
+ <div className="flex items-center gap-2 border-b border-[var(--border)] px-4 py-2.5">
83
+ <HardDrive className="h-3.5 w-3.5 text-[var(--muted-foreground)]" />
84
+ <span className="text-xs font-medium uppercase tracking-wider text-[var(--muted-foreground)]">Analysis</span>
85
+ </div>
86
+ <div className="px-4 py-3 space-y-3">
87
+ {/* Git info */}
88
+ <div className="flex items-center gap-3">
89
+ <div className="flex items-center gap-1.5">
90
+ <GitBranch className="h-3.5 w-3.5 text-[var(--muted-foreground)]" />
91
+ {analysis.isGit ? (
92
+ <span className="text-xs text-[var(--foreground)]">
93
+ {analysis.branch ?? "detached"}
94
+ </span>
95
+ ) : (
96
+ <span className="text-xs italic text-[var(--muted-foreground)]">Not a git repo</span>
97
+ )}
98
+ </div>
99
+ {analysis.isGit && analysis.status && (
100
+ <div className="flex items-center gap-2 text-xs text-[var(--muted-foreground)]">
101
+ {analysis.status.staged > 0 && (
102
+ <span className="text-[var(--status-completed-text)]">{analysis.status.staged} staged</span>
103
+ )}
104
+ {analysis.status.modified > 0 && (
105
+ <span className="text-[var(--status-blocked-text)]">{analysis.status.modified} modified</span>
106
+ )}
107
+ {analysis.status.untracked > 0 && (
108
+ <span className="text-[var(--muted-foreground)]">{analysis.status.untracked} untracked</span>
109
+ )}
110
+ {analysis.status.staged === 0 && analysis.status.modified === 0 && analysis.status.untracked === 0 && (
111
+ <span className="text-[var(--app-shell-soft-text)]">clean</span>
112
+ )}
113
+ </div>
114
+ )}
115
+ </div>
116
+
117
+ {/* Languages */}
118
+ {topLangs.length > 0 && (
119
+ <div className="flex flex-wrap gap-1.5">
120
+ {topLangs.map(([lang, count]) => (
121
+ <LanguageBadge key={lang} lang={lang} count={count} />
122
+ ))}
123
+ </div>
124
+ )}
125
+ </div>
126
+ </div>
127
+ );
128
+ }
129
+
130
+ function FolderRow({
131
+ repo,
132
+ isSelected,
133
+ onSelect,
134
+ }: {
135
+ repo: ProjectRepo;
136
+ isSelected: boolean;
137
+ onSelect: () => void;
138
+ }) {
139
+ return (
140
+ <button
141
+ type="button"
142
+ onClick={onSelect}
143
+ className={`w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors group ${
144
+ isSelected
145
+ ? "border border-blue-500/20 bg-blue-500/10"
146
+ : "border border-transparent hover:bg-[var(--secondary)]"
147
+ }`}
148
+ >
149
+ {isSelected ? (
150
+ <FolderOpen className="w-4 h-4 text-blue-400 flex-shrink-0" />
151
+ ) : (
152
+ <FolderGit2 className="h-4 w-4 flex-shrink-0 text-[var(--muted-foreground)]" />
153
+ )}
154
+ <div className="min-w-0 flex-1">
155
+ <div className={`truncate text-sm font-medium ${isSelected ? "text-blue-500" : "text-[var(--foreground)]"}`}>
156
+ {repo.name}
157
+ </div>
158
+ <div className="truncate text-xs text-[var(--muted-foreground)]">
159
+ {repo.path || repo.git_url || "No path set"}
160
+ </div>
161
+ </div>
162
+ <ChevronRight
163
+ className={`w-3.5 h-3.5 flex-shrink-0 transition-colors ${
164
+ isSelected ? "text-blue-500" : "text-[var(--app-shell-soft-text)] group-hover:text-[var(--muted-foreground)]"
165
+ }`}
166
+ />
167
+ </button>
168
+ );
169
+ }
170
+
171
+ function FolderDetail({
172
+ repo,
173
+ systemNote,
174
+ analysis,
175
+ analysisLoading,
176
+ onNoteSave,
177
+ noteSaving,
178
+ onEdit,
179
+ onDelete,
180
+ }: {
181
+ repo: ProjectRepo;
182
+ systemNote: SystemNote | null;
183
+ analysis: RepoAnalysis | null;
184
+ analysisLoading: boolean;
185
+ onNoteSave: (repoId: string, content: string) => Promise<void>;
186
+ noteSaving: boolean;
187
+ onEdit: (repo: ProjectRepo) => void;
188
+ onDelete: (repoId: string) => void;
189
+ }) {
190
+ const [notes, setNotes] = useState(repo.notes ?? "");
191
+ const [editingNotes, setEditingNotes] = useState(false);
192
+ const [localNotes, setLocalNotes] = useState(notes);
193
+
194
+ useEffect(() => {
195
+ setNotes(repo.notes ?? "");
196
+ setLocalNotes(repo.notes ?? "");
197
+ setEditingNotes(false);
198
+ }, [repo.id, repo.notes]);
199
+
200
+ return (
201
+ <div className="space-y-5">
202
+ {/* Header */}
203
+ <div className="flex items-start justify-between gap-3">
204
+ <div className="min-w-0 flex-1">
205
+ <div className="flex items-center gap-2 mb-1">
206
+ <FolderOpen className="w-5 h-5 text-blue-400 flex-shrink-0" />
207
+ <h3 className="truncate text-lg font-semibold text-[var(--foreground)]">{repo.name}</h3>
208
+ </div>
209
+ {repo.path && (
210
+ <div className="flex items-center gap-1.5 ml-7">
211
+ <code className="truncate font-mono text-xs text-[var(--muted-foreground)]">{repo.path}</code>
212
+ <CopyPathButton path={repo.path} />
213
+ </div>
214
+ )}
215
+ {repo.git_url && (
216
+ <div className="flex items-center gap-1.5 ml-7 mt-1">
217
+ <ExternalLink className="h-3 w-3 flex-shrink-0 text-[var(--app-shell-soft-text)]" />
218
+ <a
219
+ href={repo.git_url}
220
+ target="_blank"
221
+ rel="noopener noreferrer"
222
+ className="text-xs text-blue-400/70 hover:text-blue-400 truncate"
223
+ >
224
+ {repo.git_url}
225
+ </a>
226
+ </div>
227
+ )}
228
+ </div>
229
+ <div className="flex items-center gap-1 flex-shrink-0">
230
+ <button
231
+ type="button"
232
+ onClick={() => onEdit(repo)}
233
+ className="rounded-lg p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"
234
+ title="Edit folder"
235
+ >
236
+ <Pencil className="w-3.5 h-3.5" />
237
+ </button>
238
+ <button
239
+ type="button"
240
+ onClick={() => onDelete(repo.id)}
241
+ className="rounded-lg p-1.5 text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--destructive)]"
242
+ title="Delete folder"
243
+ >
244
+ <Trash2 className="w-3.5 h-3.5" />
245
+ </button>
246
+ </div>
247
+ </div>
248
+
249
+ {/* Analysis */}
250
+ {analysisLoading && (
251
+ <div className="rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-4 py-3">
252
+ <span className="animate-pulse text-xs text-[var(--muted-foreground)]">Analyzing folder...</span>
253
+ </div>
254
+ )}
255
+ {!analysisLoading && analysis && <AnalysisSummary analysis={analysis} />}
256
+
257
+ {/* Notes section */}
258
+ <div className="overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--card-bg)]">
259
+ <div className="flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5">
260
+ <div className="flex items-center gap-2">
261
+ <FileText className="h-3.5 w-3.5 text-[var(--muted-foreground)]" />
262
+ <span className="text-xs font-medium uppercase tracking-wider text-[var(--muted-foreground)]">Notes</span>
263
+ </div>
264
+ {!editingNotes ? (
265
+ <button
266
+ type="button"
267
+ onClick={() => {
268
+ setLocalNotes(notes);
269
+ setEditingNotes(true);
270
+ }}
271
+ className="flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]"
272
+ >
273
+ <Pencil className="w-3 h-3" />
274
+ Edit
275
+ </button>
276
+ ) : (
277
+ <div className="flex items-center gap-2">
278
+ <span className="text-[10px] text-[var(--app-shell-soft-text)]">Cmd+Enter to save</span>
279
+ <button
280
+ type="button"
281
+ onClick={() => {
282
+ setEditingNotes(false);
283
+ setLocalNotes(notes);
284
+ }}
285
+ className="flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]"
286
+ >
287
+ <X className="w-3 h-3" />
288
+ Cancel
289
+ </button>
290
+ <button
291
+ type="button"
292
+ disabled={noteSaving}
293
+ onClick={async () => {
294
+ await onNoteSave(repo.id, localNotes);
295
+ setNotes(localNotes);
296
+ setEditingNotes(false);
297
+ }}
298
+ className="flex items-center gap-1 text-xs text-blue-500 transition-colors hover:text-blue-600 disabled:opacity-50"
299
+ >
300
+ <Save className="w-3 h-3" />
301
+ Save
302
+ </button>
303
+ </div>
304
+ )}
305
+ </div>
306
+ <div className="px-4 py-3 min-h-[80px]">
307
+ {editingNotes ? (
308
+ <textarea
309
+ value={localNotes}
310
+ onChange={(e) => setLocalNotes(e.target.value)}
311
+ onKeyDown={(e) => {
312
+ if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
313
+ e.preventDefault();
314
+ void (async () => {
315
+ await onNoteSave(repo.id, localNotes);
316
+ setNotes(localNotes);
317
+ setEditingNotes(false);
318
+ })();
319
+ } else if (e.key === "Escape") {
320
+ setEditingNotes(false);
321
+ setLocalNotes(notes);
322
+ }
323
+ }}
324
+ className="min-h-[120px] w-full resize-none bg-transparent text-sm text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)]"
325
+ placeholder="Add notes about this folder... (architecture, conventions, important files, etc.)"
326
+ autoFocus
327
+ />
328
+ ) : notes ? (
329
+ <p className="whitespace-pre-wrap text-sm text-[var(--foreground)]">{notes}</p>
330
+ ) : (
331
+ <p className="text-sm italic text-[var(--muted-foreground)]">No notes yet. Click edit to describe this folder.</p>
332
+ )}
333
+ </div>
334
+ </div>
335
+
336
+ {/* System-generated knowledge */}
337
+ {systemNote && (
338
+ <div className="overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--secondary)]">
339
+ <div className="flex items-center gap-2 border-b border-[var(--border)] px-4 py-2.5">
340
+ <span className="w-1.5 h-1.5 rounded-full bg-emerald-500/60" />
341
+ <span className="text-xs font-medium uppercase tracking-wider text-[var(--muted-foreground)]">
342
+ Generated Knowledge
343
+ </span>
344
+ {systemNote.updated_at && (
345
+ <span className="ml-auto text-xs text-[var(--app-shell-soft-text)]">
346
+ {new Date(systemNote.updated_at).toLocaleDateString()}
347
+ </span>
348
+ )}
349
+ </div>
350
+ <div className="whitespace-pre-wrap px-4 py-3 text-sm leading-relaxed text-[var(--muted-foreground)]">
351
+ {systemNote.content}
352
+ </div>
353
+ </div>
354
+ )}
355
+ </div>
356
+ );
357
+ }
358
+
359
+ /** Add-folder flow: name input + directory browser + native picker option */
360
+ function AddFolderPanel({
361
+ onAdd,
362
+ onCancel,
363
+ }: {
364
+ onAdd: (name: string, path: string) => Promise<void>;
365
+ onCancel: () => void;
366
+ }) {
367
+ const [name, setName] = useState("");
368
+ const [selectedPath, setSelectedPath] = useState<string | null>(null);
369
+ const [saving, setSaving] = useState(false);
370
+ const [pickingNative, setPickingNative] = useState(false);
371
+ const [analysis, setAnalysis] = useState<RepoAnalysis | null>(null);
372
+ const [analyzing, setAnalyzing] = useState(false);
373
+
374
+ const analyzePath = useCallback(async (dirPath: string) => {
375
+ setAnalyzing(true);
376
+ try {
377
+ const res = await fetch("/api/filesystem/analyze", {
378
+ method: "POST",
379
+ headers: { "Content-Type": "application/json" },
380
+ body: JSON.stringify({ path: dirPath }),
381
+ });
382
+ if (res.ok) {
383
+ const data = await res.json();
384
+ setAnalysis(data.analysis);
385
+ }
386
+ } catch { /* ignore */ }
387
+ setAnalyzing(false);
388
+ }, []);
389
+
390
+ const handleSelectPath = useCallback((path: string) => {
391
+ setSelectedPath(path);
392
+ // Auto-fill name from last path segment if empty
393
+ if (!name.trim()) {
394
+ const segment = path.split("/").filter(Boolean).pop() ?? "";
395
+ setName(segment);
396
+ }
397
+ void analyzePath(path);
398
+ }, [name, analyzePath]);
399
+
400
+ const handleNativePick = useCallback(async () => {
401
+ setPickingNative(true);
402
+ try {
403
+ const res = await fetch("/api/filesystem/pick-folder", { method: "POST" });
404
+ const data = await res.json();
405
+ if (data.path) {
406
+ handleSelectPath(data.path);
407
+ }
408
+ } catch { /* ignore */ }
409
+ setPickingNative(false);
410
+ }, [handleSelectPath]);
411
+
412
+ const handleSave = useCallback(async () => {
413
+ if (!selectedPath || !name.trim()) return;
414
+ setSaving(true);
415
+ try {
416
+ await onAdd(name.trim(), selectedPath);
417
+ } finally {
418
+ setSaving(false);
419
+ }
420
+ }, [name, selectedPath, onAdd]);
421
+
422
+ return (
423
+ <div className="space-y-4">
424
+ <div className="flex items-center justify-between">
425
+ <h3 className="text-sm font-medium text-[var(--foreground)]">Add Folder</h3>
426
+ <button
427
+ type="button"
428
+ onClick={onCancel}
429
+ className="rounded-lg p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"
430
+ >
431
+ <X className="w-4 h-4" />
432
+ </button>
433
+ </div>
434
+
435
+ {/* Name input */}
436
+ <div className="space-y-1.5">
437
+ <label className="text-xs font-medium text-[var(--muted-foreground)]">Name</label>
438
+ <input
439
+ value={name}
440
+ onChange={(e) => setName(e.target.value)}
441
+ className="input w-full text-sm"
442
+ placeholder="Auto-detected from path"
443
+ />
444
+ </div>
445
+
446
+ {/* Selected path preview */}
447
+ {selectedPath && (
448
+ <div className="rounded-lg border border-blue-500/20 bg-blue-500/5 px-3 py-2 flex items-center gap-2">
449
+ <FolderOpen className="w-4 h-4 text-blue-400 flex-shrink-0" />
450
+ <code className="text-xs text-blue-300 font-mono truncate flex-1">{selectedPath}</code>
451
+ <button
452
+ type="button"
453
+ onClick={() => { setSelectedPath(null); setAnalysis(null); }}
454
+ className="p-0.5 rounded text-blue-400/50 hover:text-blue-300 transition-colors flex-shrink-0"
455
+ >
456
+ <X className="w-3 h-3" />
457
+ </button>
458
+ </div>
459
+ )}
460
+
461
+ {/* Analysis preview */}
462
+ {analyzing && (
463
+ <div className="px-1 text-xs text-[var(--muted-foreground)] animate-pulse">Analyzing...</div>
464
+ )}
465
+ {!analyzing && analysis && <AnalysisSummary analysis={analysis} />}
466
+
467
+ {/* Directory browser or native picker */}
468
+ {!selectedPath && (
469
+ <div className="space-y-2">
470
+ <div className="flex items-center gap-2">
471
+ <span className="text-xs font-medium text-[var(--muted-foreground)]">Choose a folder</span>
472
+ <button
473
+ type="button"
474
+ onClick={() => void handleNativePick()}
475
+ disabled={pickingNative}
476
+ className="ml-auto inline-flex items-center gap-1.5 rounded-lg border border-[var(--border)] bg-[var(--secondary)] px-2.5 py-1 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)] disabled:opacity-50"
477
+ >
478
+ <FolderSearch className="w-3 h-3" />
479
+ {pickingNative ? "Opening..." : "System Picker"}
480
+ </button>
481
+ </div>
482
+ <DirectoryBrowser
483
+ initialPath=""
484
+ onSelect={handleSelectPath}
485
+ onCancel={onCancel}
486
+ />
487
+ </div>
488
+ )}
489
+
490
+ {/* Save action */}
491
+ {selectedPath && (
492
+ <div className="flex items-center gap-2 pt-1">
493
+ <button
494
+ type="button"
495
+ onClick={() => void handleSave()}
496
+ disabled={!name.trim() || saving}
497
+ className="btn-primary px-4 py-1.5 text-sm disabled:opacity-40"
498
+ >
499
+ {saving ? "Adding..." : "Add Folder"}
500
+ </button>
501
+ <button
502
+ type="button"
503
+ onClick={onCancel}
504
+ className="px-4 py-1.5 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]"
505
+ >
506
+ Cancel
507
+ </button>
508
+ </div>
509
+ )}
510
+ </div>
511
+ );
512
+ }
513
+
514
+ /** Edit-folder panel: name + path with directory browser */
515
+ function EditFolderPanel({
516
+ repo,
517
+ onSave,
518
+ onCancel,
519
+ }: {
520
+ repo: ProjectRepo;
521
+ onSave: (name: string, path: string) => Promise<void>;
522
+ onCancel: () => void;
523
+ }) {
524
+ const [name, setName] = useState(repo.name);
525
+ const [selectedPath, setSelectedPath] = useState(repo.path ?? "");
526
+ const [showBrowser, setShowBrowser] = useState(false);
527
+ const [saving, setSaving] = useState(false);
528
+ const [pickingNative, setPickingNative] = useState(false);
529
+
530
+ const handleNativePick = useCallback(async () => {
531
+ setPickingNative(true);
532
+ try {
533
+ const res = await fetch("/api/filesystem/pick-folder", { method: "POST" });
534
+ const data = await res.json();
535
+ if (data.path) {
536
+ setSelectedPath(data.path);
537
+ setShowBrowser(false);
538
+ }
539
+ } catch { /* ignore */ }
540
+ setPickingNative(false);
541
+ }, []);
542
+
543
+ return (
544
+ <div className="space-y-4">
545
+ <div className="flex items-center justify-between">
546
+ <h3 className="text-sm font-medium text-[var(--foreground)]">Edit Folder</h3>
547
+ <button
548
+ type="button"
549
+ onClick={onCancel}
550
+ className="rounded-lg p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"
551
+ >
552
+ <X className="w-4 h-4" />
553
+ </button>
554
+ </div>
555
+
556
+ <div className="space-y-1.5">
557
+ <label className="text-xs font-medium text-[var(--muted-foreground)]">Name</label>
558
+ <input
559
+ value={name}
560
+ onChange={(e) => setName(e.target.value)}
561
+ className="input w-full text-sm"
562
+ placeholder="Folder name"
563
+ autoFocus
564
+ />
565
+ </div>
566
+
567
+ <div className="space-y-1.5">
568
+ <div className="flex items-center justify-between">
569
+ <label className="text-xs font-medium text-[var(--muted-foreground)]">Path</label>
570
+ <div className="flex items-center gap-1.5">
571
+ <button
572
+ type="button"
573
+ onClick={() => setShowBrowser(!showBrowser)}
574
+ className="text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]"
575
+ >
576
+ {showBrowser ? "Type path" : "Browse"}
577
+ </button>
578
+ <button
579
+ type="button"
580
+ onClick={() => void handleNativePick()}
581
+ disabled={pickingNative}
582
+ className="inline-flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] disabled:opacity-50"
583
+ >
584
+ <FolderSearch className="w-3 h-3" />
585
+ {pickingNative ? "Opening..." : "System Picker"}
586
+ </button>
587
+ </div>
588
+ </div>
589
+ {showBrowser ? (
590
+ <DirectoryBrowser
591
+ initialPath={selectedPath}
592
+ onSelect={(path) => { setSelectedPath(path); setShowBrowser(false); }}
593
+ onCancel={() => setShowBrowser(false)}
594
+ />
595
+ ) : (
596
+ <input
597
+ value={selectedPath}
598
+ onChange={(e) => setSelectedPath(e.target.value)}
599
+ className="input w-full text-sm font-mono"
600
+ placeholder="/path/to/folder"
601
+ />
602
+ )}
603
+ </div>
604
+
605
+ <div className="flex items-center gap-2 pt-1">
606
+ <button
607
+ type="button"
608
+ onClick={async () => {
609
+ if (!name.trim() || !selectedPath.trim()) return;
610
+ setSaving(true);
611
+ try { await onSave(name.trim(), selectedPath.trim()); }
612
+ finally { setSaving(false); }
613
+ }}
614
+ disabled={!name.trim() || !selectedPath.trim() || saving}
615
+ className="btn-primary px-4 py-1.5 text-sm disabled:opacity-40"
616
+ >
617
+ {saving ? "Saving..." : "Save"}
618
+ </button>
619
+ <button
620
+ type="button"
621
+ onClick={onCancel}
622
+ className="px-4 py-1.5 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]"
623
+ >
624
+ Cancel
625
+ </button>
626
+ </div>
627
+ </div>
628
+ );
629
+ }
630
+
631
+ export function FoldersView({ projectId }: FoldersViewProps) {
632
+ const { projects, updateProject } = useProjectsWithAgents();
633
+ const project = projects.find((p) => p.id === projectId);
634
+
635
+ const [selectedRepoId, setSelectedRepoId] = useState<string | null>(null);
636
+ const [addingRepo, setAddingRepo] = useState(false);
637
+ const [editingRepo, setEditingRepo] = useState<ProjectRepo | null>(null);
638
+ const [repoStatus, setRepoStatus] = useState<string | null>(null);
639
+ const [noteSaving, setNoteSaving] = useState(false);
640
+ const [systemNotes, setSystemNotes] = useState<Record<string, SystemNote | null>>({});
641
+ const [analyses, setAnalyses] = useState<Record<string, RepoAnalysis>>({});
642
+ const [analysisLoading, setAnalysisLoading] = useState<Record<string, boolean>>({});
643
+
644
+ const repos = project?.repos ?? [];
645
+ const selectedRepo = repos.find((r) => r.id === selectedRepoId) ?? null;
646
+
647
+ // Auto-select first folder
648
+ useEffect(() => {
649
+ if (!selectedRepoId && repos.length > 0) {
650
+ setSelectedRepoId(repos[0].id);
651
+ }
652
+ if (selectedRepoId && !repos.find((r) => r.id === selectedRepoId) && repos.length > 0) {
653
+ setSelectedRepoId(repos[0].id);
654
+ }
655
+ }, [repos, selectedRepoId]);
656
+
657
+ // Load system notes for all repos
658
+ useEffect(() => {
659
+ let cancelled = false;
660
+ async function load() {
661
+ if (repos.length === 0) { setSystemNotes({}); return; }
662
+ try {
663
+ const entries = await Promise.all(
664
+ repos.map(async (repo) => {
665
+ const res = await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(repo.id)}`);
666
+ const data = res.ok ? await res.json() : { note: null };
667
+ return [repo.id, mapNote(data.note)] as const;
668
+ })
669
+ );
670
+ if (!cancelled) setSystemNotes(Object.fromEntries(entries));
671
+ } catch {
672
+ if (!cancelled) setSystemNotes({});
673
+ }
674
+ }
675
+ void load();
676
+ return () => { cancelled = true; };
677
+ }, [repos]);
678
+
679
+ // Analyze selected repo on selection
680
+ useEffect(() => {
681
+ if (!selectedRepo?.path || analyses[selectedRepo.id]) return;
682
+ const repoId = selectedRepo.id;
683
+ const repoPath = selectedRepo.path;
684
+ setAnalysisLoading((prev) => ({ ...prev, [repoId]: true }));
685
+ fetch("/api/filesystem/analyze", {
686
+ method: "POST",
687
+ headers: { "Content-Type": "application/json" },
688
+ body: JSON.stringify({ path: repoPath }),
689
+ })
690
+ .then((res) => (res.ok ? res.json() : null))
691
+ .then((data) => {
692
+ if (data?.analysis) {
693
+ setAnalyses((prev) => ({ ...prev, [repoId]: data.analysis }));
694
+ }
695
+ })
696
+ .catch(() => {})
697
+ .finally(() => setAnalysisLoading((prev) => ({ ...prev, [repoId]: false })));
698
+ }, [selectedRepo?.id, selectedRepo?.path, analyses]);
699
+
700
+ const setFeedback = useCallback((msg: string) => {
701
+ setRepoStatus(msg);
702
+ setTimeout(() => setRepoStatus(null), 2500);
703
+ }, []);
704
+
705
+ const toInputs = useCallback((): ProjectRepoInput[] =>
706
+ repos.map((r) => ({ id: r.id, name: r.name, path: r.path, git_url: r.git_url, notes: r.notes })),
707
+ [repos]
708
+ );
709
+
710
+ const handleAdd = useCallback(async (name: string, path: string) => {
711
+ try {
712
+ await updateProject(projectId, { repos: [...toInputs(), { name, path }] });
713
+ setAddingRepo(false);
714
+ setFeedback("Folder added");
715
+ } catch { setFeedback("Failed to add"); }
716
+ }, [updateProject, projectId, toInputs, setFeedback]);
717
+
718
+ const handleEditSave = useCallback(async (name: string, path: string) => {
719
+ if (!editingRepo) return;
720
+ const updated = toInputs().map((r) =>
721
+ r.id === editingRepo.id ? { ...r, name, path } : r
722
+ );
723
+ try {
724
+ await updateProject(projectId, { repos: updated });
725
+ setEditingRepo(null);
726
+ // Invalidate analysis cache for this repo since path may have changed
727
+ setAnalyses((prev) => {
728
+ const next = { ...prev };
729
+ delete next[editingRepo.id];
730
+ return next;
731
+ });
732
+ setFeedback("Folder updated");
733
+ } catch { setFeedback("Failed to update"); }
734
+ }, [editingRepo, updateProject, projectId, toInputs, setFeedback]);
735
+
736
+ const handleDelete = useCallback(async (repoId: string) => {
737
+ try {
738
+ await updateProject(projectId, { repos: toInputs().filter((r) => r.id !== repoId) });
739
+ if (selectedRepoId === repoId) setSelectedRepoId(null);
740
+ setFeedback("Folder removed");
741
+ } catch { setFeedback("Failed to remove"); }
742
+ }, [updateProject, projectId, toInputs, selectedRepoId, setFeedback]);
743
+
744
+ const handleNoteSave = useCallback(async (repoId: string, content: string) => {
745
+ setNoteSaving(true);
746
+ const updated = toInputs().map((r) =>
747
+ r.id === repoId ? { ...r, notes: content } : r
748
+ );
749
+ try {
750
+ await updateProject(projectId, { repos: updated });
751
+ setFeedback("Notes saved");
752
+ } catch {
753
+ setFeedback("Failed to save notes");
754
+ } finally {
755
+ setNoteSaving(false);
756
+ }
757
+ }, [updateProject, projectId, toInputs, setFeedback]);
758
+
759
+ if (!project) {
760
+ return (
761
+ <div className="flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]">
762
+ Loading...
763
+ </div>
764
+ );
765
+ }
766
+
767
+ return (
768
+ <div className="h-full flex overflow-hidden">
769
+ {/* Left panel: folder list */}
770
+ <div className="flex w-72 flex-shrink-0 flex-col border-r border-[var(--border)] bg-[var(--app-shell-pane)]">
771
+ <div className="flex items-center justify-between border-b border-[var(--border)] px-4 py-3">
772
+ <div className="flex items-center gap-2">
773
+ <FolderGit2 className="h-4 w-4 text-[var(--muted-foreground)]" />
774
+ <span className="text-sm font-medium text-[var(--foreground)]">Folders</span>
775
+ {repos.length > 0 && (
776
+ <span className="rounded-full bg-[var(--secondary)] px-1.5 py-0.5 text-xs text-[var(--muted-foreground)]">
777
+ {repos.length}
778
+ </span>
779
+ )}
780
+ </div>
781
+ <button
782
+ type="button"
783
+ onClick={() => { setAddingRepo(true); setEditingRepo(null); }}
784
+ className="rounded-lg p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-blue-500"
785
+ title="Add folder"
786
+ >
787
+ <Plus className="w-4 h-4" />
788
+ </button>
789
+ </div>
790
+
791
+ <div className="flex-1 overflow-y-auto px-2 py-2 space-y-0.5">
792
+ {repos.length === 0 && !addingRepo && (
793
+ <div className="px-3 py-8 text-center">
794
+ <FolderGit2 className="mx-auto mb-3 h-8 w-8 text-[var(--app-shell-soft-text)]" />
795
+ <p className="mb-1 text-sm text-[var(--muted-foreground)]">No folders yet</p>
796
+ <p className="mb-4 text-xs text-[var(--app-shell-soft-text)]">Link local repos or project directories</p>
797
+ <button
798
+ type="button"
799
+ onClick={() => setAddingRepo(true)}
800
+ className="inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium text-blue-400 border border-blue-500/20 hover:bg-blue-500/10 transition-colors"
801
+ >
802
+ <Plus className="w-3 h-3" />
803
+ Add Folder
804
+ </button>
805
+ </div>
806
+ )}
807
+
808
+ {repos.map((repo) => (
809
+ <FolderRow
810
+ key={repo.id}
811
+ repo={repo}
812
+ isSelected={selectedRepoId === repo.id}
813
+ onSelect={() => { setSelectedRepoId(repo.id); setAddingRepo(false); setEditingRepo(null); }}
814
+ />
815
+ ))}
816
+ </div>
817
+
818
+ {repoStatus && (
819
+ <div className="border-t border-[var(--border)] px-4 py-2">
820
+ <span className="text-xs text-[var(--muted-foreground)]">{repoStatus}</span>
821
+ </div>
822
+ )}
823
+ </div>
824
+
825
+ {/* Right panel: detail / form */}
826
+ <div className="flex-1 overflow-y-auto">
827
+ <div className="max-w-2xl mx-auto px-6 py-6">
828
+ {addingRepo ? (
829
+ <AddFolderPanel onAdd={handleAdd} onCancel={() => setAddingRepo(false)} />
830
+ ) : editingRepo ? (
831
+ <EditFolderPanel
832
+ repo={editingRepo}
833
+ onSave={handleEditSave}
834
+ onCancel={() => setEditingRepo(null)}
835
+ />
836
+ ) : selectedRepo ? (
837
+ <FolderDetail
838
+ repo={selectedRepo}
839
+ systemNote={systemNotes[selectedRepo.id] ?? null}
840
+ analysis={analyses[selectedRepo.id] ?? null}
841
+ analysisLoading={analysisLoading[selectedRepo.id] ?? false}
842
+ onNoteSave={handleNoteSave}
843
+ noteSaving={noteSaving}
844
+ onEdit={(r) => setEditingRepo(r)}
845
+ onDelete={handleDelete}
846
+ />
847
+ ) : repos.length > 0 ? (
848
+ <div className="flex h-64 items-center justify-center text-sm text-[var(--muted-foreground)]">
849
+ Select a folder to view details
850
+ </div>
851
+ ) : null}
852
+ </div>
853
+ </div>
854
+ </div>
855
+ );
856
+ }