@mndrk/agx 2.4.6 → 2.4.8

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 (364) hide show
  1. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +4 -0
  3. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
  4. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +33 -0
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/app-paths-manifest.json +3 -0
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/build-manifest.json +11 -0
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/server-reference-manifest.json +4 -0
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js +13 -0
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js.map +5 -0
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js.nft.json +1 -0
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route_client-reference-manifest.js +2 -0
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/app-paths-manifest.json +3 -0
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/build-manifest.json +11 -0
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/server-reference-manifest.json +4 -0
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js +11 -0
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js.map +5 -0
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js.nft.json +1 -0
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route_client-reference-manifest.js +2 -0
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/app-paths-manifest.json +3 -0
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/build-manifest.json +11 -0
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/server-reference-manifest.json +4 -0
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js +11 -0
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js.map +5 -0
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js.nft.json +1 -0
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route_client-reference-manifest.js +2 -0
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js.nft.json +1 -1
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js.nft.json +1 -1
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +3 -3
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page_client-reference-manifest.js +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.html +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +2 -2
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_head.segment.rsc +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_index.segment.rsc +2 -2
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_tree.segment.rsc +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos/__PAGE__.segment.rsc +1 -1
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos.segment.rsc +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github.segment.rsc +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations.segment.rsc +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page_client-reference-manifest.js +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page_client-reference-manifest.js +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/app-paths-manifest.json +3 -0
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/build-manifest.json +18 -0
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/next-font-manifest.json +11 -0
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/react-loadable-manifest.json +1 -0
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/server-reference-manifest.json +4 -0
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js +16 -0
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.map +5 -0
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.nft.json +1 -0
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page_client-reference-manifest.js +2 -0
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.nft.json +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +2 -2
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  196. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +4 -0
  197. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_projects_[id]_workspace_export_route_actions_e161f108.js +3 -0
  198. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_projects_[id]_workspace_import_route_actions_10d2bce2.js +3 -0
  199. package/cloud-runtime/standalone/apps/local/.next/server/chunks/7255d_app_api_projects_[id]_objectives_[objectiveId]_program_route_actions_e6cdbc76.js +3 -0
  200. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1563ebff._.js +2 -2
  201. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__3fdd57cb._.js +1 -1
  202. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__45af4365._.js +1 -1
  203. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__683b7ad7._.js +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__736d5859._.js +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__96b5ea56._.js +3 -0
  206. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ba72d342._.js +5 -5
  207. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c3188470._.js +1 -1
  208. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__eb69343e._.js +3 -0
  209. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_1d99e7a5._.js +1 -1
  210. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_29a06140._.js +1 -1
  211. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_4d88e4dc._.js +91 -0
  212. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_4dec65a2._.js +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_50e3a6e3._.js +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_56a2544c._.js +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_5843a1a1._.js +1 -1
  216. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_a15e73a6._.js +1 -1
  217. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_bd72806a._.js +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c101ba9e._.js +1 -1
  219. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c530bd77._.js +11 -0
  220. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_d69937f2._.js +91 -0
  221. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e2867b32._.js +3 -0
  222. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e32b0cab._.js +91 -0
  223. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_5ab8f104._.js +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_77c23d6c._.js +1 -1
  225. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0da96_local__next-internal_server_app_projects_[slug]_thread_page_actions_3ceeb59b.js +3 -0
  226. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__1e0fd816._.js +3 -0
  227. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__42499ecf._.js +3 -0
  228. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5f31e40b._.js +3 -0
  229. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__636799fb._.js +3 -0
  230. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__4bf7d5b9._.js → [root-of-the-server]__74436f61._.js} +2 -2
  231. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__9434d6d7._.js +3 -0
  232. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bd339da0._.js +3 -0
  233. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__d08d7899._.js +3 -0
  234. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e02a457c._.js +3 -0
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e3a1fef0._.js +3 -0
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__f802e7d1._.js +3 -0
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__ff96bb77._.js +3 -0
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_6a2ba8f0._.js +3 -0
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_7cb6b08a._.js +3 -0
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_a0f42923._.js +7 -0
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_a93c1059._.js +3 -0
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_components_PromptJobBoard_tsx_281b2873._.js → apps_local_04cb9fd5._.js} +3 -3
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_15502af8._.js +3 -0
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_16eaf7ae._.js +3 -0
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3c11c068._.js +8 -0
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_89b49aad._.js +7 -0
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_ae1a134f._.js +7 -0
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_2a02508d._.js +1 -1
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_72fb68e5._.js +1 -1
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_3bb31889._.js +1 -1
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_76330306._.js +1 -1
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_b8e580cc._.js +4 -0
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +2 -2
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_app_projects_[slug]_thread_[threadId]_page_tsx_2a1d1d5e._.js → apps_local_components_chat-ui_ChatContainer_tsx_47371955._.js} +2 -2
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +3 -3
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eb223411._.js +18 -0
  258. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eec36ab6._.js +1 -1
  259. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_7d1abfbf._.js → apps_local_f1c9872a._.js} +2 -2
  260. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_fed01721._.js +1 -1
  261. package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +3 -0
  262. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  263. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
  264. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +4 -0
  265. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  266. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
  267. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  268. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  269. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08e75b35d6c52269.js +1 -0
  270. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0d22a723b9b96e65.js +1 -0
  271. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{cb19d71dd7ffb935.js → 1585dd5f9ec4866a.js} +1 -1
  272. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1bc8cc9cbb99c1ed.js +1 -0
  273. package/cloud-runtime/standalone/apps/local/.next/static/chunks/2586c0baa16e9a0d.js +16 -0
  274. package/cloud-runtime/standalone/apps/local/.next/static/chunks/2aa24a251622fd06.js +5 -0
  275. package/cloud-runtime/standalone/apps/local/.next/static/chunks/39513207112d6828.js +1 -0
  276. package/cloud-runtime/standalone/apps/local/.next/static/chunks/3fce625820bc2bd4.js +16 -0
  277. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8d8fe711583a59f0.js → 41ae15220fc19bf7.js} +2 -2
  278. package/cloud-runtime/standalone/apps/local/.next/static/chunks/67b36c70b72e0e10.js +1 -0
  279. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7bfbfcd072f8d61e.js +20 -0
  280. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7cf26dd04166f32f.js +6 -0
  281. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{74e3a3e93be78db8.js → 8b87c2521c519a1f.js} +9 -9
  282. package/cloud-runtime/standalone/apps/local/.next/static/chunks/90dd4ab03ab145d1.js +16 -0
  283. package/cloud-runtime/standalone/apps/local/.next/static/chunks/93749b45e2700808.js +16 -0
  284. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{48feca51cf97c8a7.js → 9bb8f1406365af81.js} +1 -1
  285. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b4aa71020acae46f.js +16 -0
  286. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c352706a0ad7e35d.js +1 -0
  287. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c5436b2b7e8f0ca9.js +16 -0
  288. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1600dd6ff8607d8f.js → c9a2c4b55bb76f4f.js} +6 -6
  289. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1fbcd40dccee738f.js → cf33cb29946990e3.js} +2 -2
  290. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d6a9cc66254693b8.js +1 -0
  291. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{9e703dd5d95e9557.js → e3bdd1e0f385114e.js} +1 -1
  292. package/cloud-runtime/standalone/apps/local/.next/static/chunks/ed606d6f94457578.css +1 -0
  293. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{6ffcd12eabd7c65e.js → f71d73895d228547.js} +1 -1
  294. package/cloud-runtime/standalone/apps/local/.next/static/chunks/f750d2f1882d31a8.js +5 -0
  295. package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +2 -10
  296. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/program/route.ts +77 -0
  297. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/workspace/export/route.ts +35 -0
  298. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/workspace/import/route.ts +91 -0
  299. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +1 -8
  300. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +1 -1
  301. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/thread/page.tsx +14 -0
  302. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +15 -15
  303. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +7 -12
  304. package/cloud-runtime/standalone/apps/local/components/TrackerBoard.tsx +39 -1
  305. package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +51 -196
  306. package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +662 -784
  307. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +7 -10
  308. package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +4 -4
  309. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +118 -0
  310. package/cloud-runtime/standalone/apps/local/components/projects/ProjectSettings.tsx +81 -7
  311. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +13 -3
  312. package/cloud-runtime/standalone/apps/local/components/tracking/TrackerSetup.tsx +22 -14
  313. package/cloud-runtime/standalone/apps/local/hooks/useProjectWorkspace.ts +117 -0
  314. package/cloud-runtime/standalone/apps/local/lib/db/projects.ts +14 -10
  315. package/cloud-runtime/standalone/apps/local/lib/project-workspace.ts +80 -0
  316. package/cloud-runtime/standalone/apps/local/lib/task-context.ts +39 -4
  317. package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/github/adapter.tsx +40 -4
  318. package/cloud-runtime/standalone/apps/local/lib/workspace-yaml.ts +164 -0
  319. package/cloud-runtime/standalone/apps/local/src/objectives/program/index.ts +7 -0
  320. package/cloud-runtime/standalone/apps/local/src/objectives/program/repository.ts +60 -0
  321. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker.ts +12 -0
  322. package/cloud-runtime/standalone/apps/local/src/scheduling/status.ts +42 -0
  323. package/cloud-runtime/standalone/apps/local/worker/index.js +14 -9
  324. package/lib/commands/workspace.js +145 -7
  325. package/package.json +1 -1
  326. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_09d85861._.js +0 -91
  327. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_25136564._.js +0 -11
  328. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_2caf4398._.js +0 -91
  329. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_31ca7a35._.js +0 -91
  330. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/9fb8c_lucide-react_dist_esm_icons_8c8ee1bc._.js +0 -3
  331. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__23838f87._.js +0 -3
  332. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__3b4708d5._.js +0 -3
  333. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__49cbf624._.js +0 -3
  334. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__49cdd178._.js +0 -3
  335. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__55ed4ff9._.js +0 -3
  336. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7a31a76d._.js +0 -3
  337. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__a61463b8._.js +0 -7
  338. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bb42490f._.js +0 -3
  339. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__ee9351f9._.js +0 -3
  340. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ecd68e8._.js +0 -3
  341. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_347d036d._.js +0 -7
  342. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_5c140c38._.js +0 -7
  343. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_f99c22fd._.js +0 -3
  344. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_30d021de._.js +0 -3
  345. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3b90cb76._.js +0 -18
  346. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_9f36c765._.js +0 -3
  347. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_8cc1a335._.js +0 -3
  348. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1d8b2726979134e5.js +0 -16
  349. package/cloud-runtime/standalone/apps/local/.next/static/chunks/692103d55fcd0328.js +0 -5
  350. package/cloud-runtime/standalone/apps/local/.next/static/chunks/6952b44e247d594a.js +0 -16
  351. package/cloud-runtime/standalone/apps/local/.next/static/chunks/6bfdc40a24e65ca2.js +0 -1
  352. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7ff071e8a33d2fd8.js +0 -16
  353. package/cloud-runtime/standalone/apps/local/.next/static/chunks/87e4fb11329a358d.js +0 -1
  354. package/cloud-runtime/standalone/apps/local/.next/static/chunks/92467c495ad08a85.js +0 -5
  355. package/cloud-runtime/standalone/apps/local/.next/static/chunks/941f7f3626ec442c.js +0 -16
  356. package/cloud-runtime/standalone/apps/local/.next/static/chunks/94a66d2d19268d25.js +0 -5
  357. package/cloud-runtime/standalone/apps/local/.next/static/chunks/add53c2fe147af75.css +0 -1
  358. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b35865f64b56d6f4.js +0 -1
  359. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d662272e49df1950.js +0 -20
  360. package/cloud-runtime/standalone/apps/local/.next/static/chunks/e0d68c6af17c8c87.js +0 -1
  361. package/cloud-runtime/standalone/apps/local/.next/static/chunks/f154e2ed7753f8ee.js +0 -16
  362. /package/cloud-runtime/standalone/apps/local/.next/static/{fipnHmd6JPn9sTuFdYS0y → O3Yu8lY-DN5fauB8GipIL}/_buildManifest.js +0 -0
  363. /package/cloud-runtime/standalone/apps/local/.next/static/{fipnHmd6JPn9sTuFdYS0y → O3Yu8lY-DN5fauB8GipIL}/_clientMiddlewareManifest.json +0 -0
  364. /package/cloud-runtime/standalone/apps/local/.next/static/{fipnHmd6JPn9sTuFdYS0y → O3Yu8lY-DN5fauB8GipIL}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[665045,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(850985),e=a.i(285320),f=a.i(811760),g=a.i(756490),h=a.i(804632),i=a.i(627421),j=a.i(340492),k=a.i(960216),l=a.i(316099),m=a.i(667597),n=a.i(353532),o=a.i(831709);let p=(0,o.default)("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),q=(0,o.default)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]);var r=a.i(985339),s=a.i(824179),t=a.i(830284),u=a.i(8e4),v=a.i(870630);function w(a){return a?a.projects??[]:[]}let x=["Ada","Kai","Sage","Nova","Cleo","Milo","Iris","Juno","Remy","Zara","Arlo","Luna","Ezra","Wren","Nico","Thea","Fern","Orla","Kira","Dax","Lyra","Soren","Vera","Elio"];function y(){let[a,o]=(0,c.useState)([]),[y,z]=(0,c.useState)([]),{projects:A,createProject:B,addAgent:C,removeAgent:D,refresh:E}=(0,t.useProjectsWithAgents)(),[F,G]=(0,c.useState)(new Set),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(new Set),[L,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)(null),[P,Q]=(0,c.useState)(!1),[R,S]=(0,c.useState)(new Set),[T,U]=(0,c.useState)(!0),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(null),[Z,$]=(0,c.useState)(null),[_,aa]=(0,c.useState)(!1),[ab,ac]=(0,c.useState)(!1),[ad,ae]=(0,c.useState)("choice"),[af,ag]=(0,c.useState)(""),[ah,ai]=(0,c.useState)(!1),[aj,ak]=(0,c.useState)(null),[al,am]=(0,c.useState)(new Set),[an,ao]=(0,c.useState)(new Set),[ap,aq]=(0,c.useState)(!1),[ar,as]=(0,c.useState)(null),at=(0,c.useRef)(null),[au,av]=(0,c.useState)(new Set),aw=()=>{fetch("/api/participants").then(a=>a.json()).then(a=>o(Array.isArray(a)?a:[]))},ax=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/processes");if(!a.ok)return;let b=await a.json();av(new Set(b.filter(a=>"spawning"===a.state||"running"===a.state).map(a=>a.agentId)))}catch{}},[]);(0,c.useEffect)(()=>{aw(),v.threadService.listThreads().then(z),ax();let a=setInterval(ax,3e3);return()=>clearInterval(a)},[ax]);let ay=new Map(y.map(a=>[a.id,a])),az=A.filter(a=>!a.is_default),aA=async()=>{if(0!==R.size){W(!0);try{let a=await fetch("/api/agent-specs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentIds:Array.from(R),includeSelf:T})});if(!a.ok)throw Error("Share failed");let b=await a.json();Y(b.code),$(b.expires_at)}catch(a){console.error("Share error:",a)}finally{W(!1)}}},aB=async()=>{if(0!==R.size){W(!0);try{let a=Array.from(R),b=await fetch("/api/agents/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentIds:a})});if(!b.ok)throw Error("Export failed");let c=(await b.json()).agents.map(a=>({...a,self:T?a.self:null})),d={version:1,exportedAt:new Date().toISOString(),agents:c,projects:[]},e=new Blob([JSON.stringify(d,null,2)],{type:"application/json"}),f=URL.createObjectURL(e),g=document.createElement("a");g.href=f,g.download=1===c.length?`${c[0].name.toLowerCase().replace(/\s+/g,"-")}.agent.json`:"agents.bundle.json",g.click(),URL.revokeObjectURL(f),Q(!1)}catch(a){console.error("Export error:",a)}finally{W(!1)}}},aC=async()=>{if(0!==af.trim().length){ai(!0),as(null),ak(null);try{let a=await fetch(`/api/agent-specs/pull?code=${encodeURIComponent(af.trim())}`);if(!a.ok){let b=await a.json().catch(()=>({error:"Failed to pull"}));as(b.error||"Code not found or expired");return}let b=(await a.json()).bundle;ak(b),am(new Set(b.agents.map(a=>a.id))),ao(new Set(w(b).map(a=>a.name)))}catch{as("Failed to connect. Is agx-api running?")}finally{ai(!1)}}},aD=async()=>{if(aj){aq(!0);try{let b=new Set(a.map(a=>a.id));for(let a of aj.agents){if(!al.has(a.id))continue;let c={name:a.name,provider:a.provider,model:a.model,color:a.color,identity:a.identity||void 0,voice:a.voice||void 0,seed:a.seed||void 0,identityFile:a.identityFile||void 0,skills:a.skills||[],variables:a.variables||{}};b.has(a.id)?(c.id=a.id,await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)})):await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)})}for(let a of w(aj)){if(!an.has(a.name))continue;let b=await B(a.name);if(b)for(let c of a.agentIds)al.has(c)&&await C(b.id,c)}aw(),await E(),ac(!1),ak(null)}catch(a){console.error("Import error:",a),as("Import failed. Check console for details.")}finally{aq(!1)}}},aE=H?A.find(a=>a.id===H.projectId):null,aF=new Set(aE?.agents.map(a=>a.agent_id)??[]),aG=H?a.filter(a=>!aF.has(a.id)):[],aH=({checked:a})=>(0,b.jsx)("div",{className:`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${a?"bg-[var(--foreground)] border-[var(--foreground)]":"border-[var(--app-shell-soft-text)]"}`,children:a&&(0,b.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,b.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})});return(0,b.jsxs)("div",{className:"min-h-screen bg-[var(--secondary)] p-6",children:[(0,b.jsxs)("div",{className:"max-w-6xl mx-auto",children:[(0,b.jsxs)("div",{className:"desktop-titlebar sticky top-0 z-20 -mx-6 mb-6 flex items-center gap-3 border-b border-[var(--border)] bg-[var(--secondary)]/92 px-6 py-4 backdrop-blur-md",children:[(0,b.jsxs)(d.default,{href:"/",className:"inline-flex items-center gap-1 text-sm text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors",children:[(0,b.jsx)(e.ArrowLeft,{size:16}),"Back"]}),(0,b.jsx)("h1",{className:"text-2xl font-semibold text-[var(--foreground)]",children:"Manage Agents"}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-white bg-[var(--foreground)] rounded-lg hover:opacity-90 transition-colors",onClick:()=>M(!0),children:[(0,b.jsx)(n.Plus,{size:13}),"New Agent"]}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-white bg-violet-600 rounded-lg hover:bg-violet-700 transition-colors",onClick:()=>{S(new Set(a.map(a=>a.id))),U(!0),Y(null),$(null),aa(!1),Q(!0)},disabled:0===a.length,children:[(0,b.jsx)(p,{size:13}),"Share"]}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-violet-600 bg-violet-50 border border-violet-200 rounded-lg hover:bg-violet-100 transition-colors",onClick:()=>{ae("choice"),ag(""),ak(null),am(new Set),ao(new Set),as(null),ac(!0)},children:[(0,b.jsx)(j.Download,{size:13}),"Import"]}),(0,b.jsx)("input",{ref:at,type:"file",accept:".json",className:"hidden",onChange:a=>{let b=a.target.files?.[0];if(!b)return;as(null);let c=new FileReader;c.onload=()=>{try{let a=JSON.parse(c.result);if(!a.version||!Array.isArray(a.agents))throw Error("Invalid bundle format");ak(a),am(new Set(a.agents.map(a=>a.id))),ao(new Set(w(a).map(a=>a.name)))}catch{as("Invalid file. Expected an .agent.json bundle.")}},c.readAsText(b),a.target.value=""}})]})]}),ar&&!ab&&(0,b.jsxs)("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-50 border border-red-200 text-sm text-red-700 flex items-center justify-between",children:[(0,b.jsx)("span",{children:ar}),(0,b.jsx)("button",{type:"button",onClick:()=>as(null),className:"text-red-400 hover:text-red-600",children:(0,b.jsx)(s.X,{size:14})})]}),0===a.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)] text-sm",children:"No agents configured yet."}):(0,b.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:a.map(a=>(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl border border-[var(--border)] p-4 hover:shadow-md transition-shadow text-left group",children:[(0,b.jsxs)("div",{className:"flex items-start gap-3 mb-3",children:[(0,b.jsx)("img",{src:(0,u.agentAvatarUrl)(a.id,48,a.color),alt:a.name,className:"w-12 h-12 rounded-full bg-[var(--secondary)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("h3",{className:"font-medium text-[var(--foreground)] truncate",children:a.name}),(0,b.jsx)("p",{className:"text-xs text-[var(--app-shell-soft-text)] truncate mt-0.5",children:a.model}),au.has(a.id)&&(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 mt-1 text-[10px] font-medium text-emerald-600",children:[(0,b.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-emerald-500 animate-pulse"}),"Working"]})]})]}),a.skills&&a.skills.length>0&&(0,b.jsxs)("div",{className:"flex flex-wrap gap-1 mb-3",children:[a.skills.slice(0,3).map((a,c)=>(0,b.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-blue-50 text-blue-600 truncate max-w-[120px]",children:a.file.split("/").pop()},c)),a.skills.length>3&&(0,b.jsxs)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--secondary)] text-[var(--app-shell-soft-text)]",children:["+",a.skills.length-3]})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between pt-2 border-t border-[var(--border)]",children:[(0,b.jsx)("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full bg-[var(--secondary)] text-[var(--muted-foreground)] uppercase tracking-wide",children:a.provider}),(0,b.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,b.jsx)("button",{type:"button",title:"Edit",onClick:()=>O(a),className:"p-1.5 text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] rounded hover:bg-[var(--item-hover-bg)] transition-colors",children:(0,b.jsx)(m.Pencil,{size:13})}),(0,b.jsx)(d.default,{href:`/agents/${a.id}`,title:"View profile",className:"p-1.5 text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] rounded hover:bg-[var(--item-hover-bg)] transition-colors",children:(0,b.jsx)(k.Eye,{size:13})})]})]})]},a.id))}),(0,b.jsxs)("div",{className:"mt-10",children:[(0,b.jsxs)("div",{className:"mb-4",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-[var(--foreground)]",children:"Project assignments"}),(0,b.jsx)("p",{className:"mt-1 text-sm text-[var(--app-shell-soft-text)]",children:"Assign agents to existing projects."})]}),0===az.length?(0,b.jsx)("p",{className:"text-sm text-[var(--app-shell-soft-text)]",children:"No projects available for assignment."}):(0,b.jsx)("div",{className:"bg-[var(--card-bg)] rounded-xl border border-[var(--border)] divide-y divide-[var(--border)]",children:az.map(c=>{let d=F.has(c.id),e=(c.thread_ids??[]).map(a=>ay.get(a)?.title?.trim()||"Untitled").filter(Boolean);return(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 px-5 py-3.5 group",children:[(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-3 flex-1 min-w-0 text-left",onClick:()=>{var a;return a=c.id,void G(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},children:[d?(0,b.jsx)(f.ChevronDown,{size:16,className:"text-[var(--app-shell-soft-text)] flex-shrink-0"}):(0,b.jsx)(g.ChevronRight,{size:16,className:"text-[var(--app-shell-soft-text)] flex-shrink-0"}),(0,b.jsx)(r.Users,{size:16,className:"text-[var(--app-shell-soft-text)] flex-shrink-0"}),(0,b.jsx)("span",{className:"font-medium text-[var(--foreground)] text-sm",children:c.name}),(0,b.jsxs)("span",{className:"text-xs text-[var(--app-shell-soft-text)]",children:[c.agents.length," ",1===c.agents.length?"agent":"agents",e.length>0&&` \xb7 ${e.length} ${1===e.length?"thread":"threads"}`]})]}),(0,b.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--border)] px-2.5 py-1.5 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--item-hover-bg)] hover:text-[var(--foreground)]",title:"Add agents",onClick:()=>{K(new Set),I({projectId:c.id})},children:[(0,b.jsx)(n.Plus,{size:14}),"Add agents"]})})]}),d&&(0,b.jsxs)("div",{className:"px-5 pb-4 pt-1 ml-9 flex flex-col gap-1",children:[0===c.agents.length&&(0,b.jsx)("p",{className:"text-xs text-[var(--app-shell-soft-text)] py-1",children:"No agents in this project."}),c.agents.map(d=>{let e=a.find(a=>a.id===d.agent_id);return(0,b.jsxs)("div",{className:"flex items-center gap-2.5 py-1.5 group/agent",children:[(0,b.jsx)("img",{src:(0,u.agentAvatarUrl)(d.agent_id,24,e?.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsx)("span",{className:"text-sm text-[var(--secondary-foreground)] truncate flex-1",children:e?.name??d.agent_id}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--app-shell-soft-text)]",children:e?.model}),(0,b.jsx)("button",{type:"button",className:"opacity-0 group-hover/agent:opacity-100 text-[var(--app-shell-soft-text)] hover:text-red-500 transition-opacity",onClick:()=>void D(c.id,d.agent_id),title:"Remove from project",children:(0,b.jsx)(s.X,{size:14})})]},d.agent_id)}),(0,b.jsxs)("button",{type:"button",className:"mt-2 inline-flex items-center gap-1.5 self-start rounded-lg border border-[var(--border)] px-2.5 py-1.5 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--item-hover-bg)] hover:text-[var(--foreground)]",onClick:()=>{K(new Set),I({projectId:c.id})},children:[(0,b.jsx)(n.Plus,{size:12}),"Add agents"]}),e.length>0&&(0,b.jsxs)("div",{className:"mt-2 pt-2 border-t border-[var(--border)]",children:[(0,b.jsx)("p",{className:"text-[10px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide mb-1",children:"Threads"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:e.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-1 rounded-md bg-indigo-50 text-indigo-600",children:[(0,b.jsx)(l.Hash,{size:11}),a]},c))})]})]})]},c.id)})})]})]}),P&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>Q(!1),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-[440px] max-h-[80vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-5 py-3.5 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Share Agents"}),(0,b.jsx)("button",{type:"button",className:"text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>Q(!1),children:(0,b.jsx)(s.X,{size:16})})]}),X?(0,b.jsxs)("div",{className:"px-5 py-6 flex flex-col items-center gap-4",children:[(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] mb-3",children:"Share this code with the recipient:"}),(0,b.jsxs)("div",{className:"flex items-center justify-center gap-3",children:[(0,b.jsx)("span",{className:"text-3xl font-mono font-bold tracking-[0.3em] text-[var(--foreground)]",children:X}),(0,b.jsx)("button",{type:"button",className:"p-2 text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] transition-colors",onClick:()=>{X&&(navigator.clipboard.writeText(X),aa(!0),setTimeout(()=>aa(!1),2e3))},children:_?(0,b.jsx)(i.Check,{size:18,className:"text-green-500"}):(0,b.jsx)(h.Copy,{size:18})})]})]}),Z&&(0,b.jsxs)("p",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:["Expires ",new Date(Z).toLocaleTimeString()]}),(0,b.jsx)("button",{type:"button",className:"px-4 py-2 text-xs font-medium text-[var(--muted-foreground)] bg-[var(--secondary)] rounded-lg hover:bg-[var(--item-hover-bg)] transition-colors",onClick:()=>Q(!1),children:"Done"})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"overflow-y-auto flex-1",children:[az.length>0&&(0,b.jsxs)("div",{className:"border-b border-[var(--border)] px-5 py-3",children:[(0,b.jsx)("p",{className:"text-[11px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide mb-2",children:"Select by project"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:az.map(c=>{let d=c.agents.map(a=>a.agent_id),e=d.length>0&&d.every(a=>R.has(a)),f=d.some(a=>R.has(a));return(0,b.jsxs)("button",{type:"button",className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-[11px] font-medium transition-colors ${e?"bg-[var(--foreground)] text-white":f?"bg-[var(--app-shell-soft-text)] text-[var(--secondary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>{S(a=>{let b=new Set(a);return e?d.forEach(a=>b.delete(a)):d.forEach(a=>b.add(a)),b})},title:d.map(b=>a.find(a=>a.id===b)?.name??b).join(", "),children:[(0,b.jsx)(r.Users,{size:10}),c.name,(0,b.jsx)("span",{className:"text-[10px] text-[var(--app-shell-soft-text)]",children:c.agents.length})]},c.id)})})]}),(0,b.jsxs)("div",{className:"border-b border-[var(--border)]",children:[(0,b.jsxs)("div",{className:"px-5 pt-3 pb-1 flex items-center justify-between",children:[(0,b.jsx)("p",{className:"text-[11px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide",children:"Agents"}),(0,b.jsx)("button",{type:"button",className:"text-[11px] text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>{R.size===a.length?S(new Set):S(new Set(a.map(a=>a.id)))},children:R.size===a.length?"Deselect all":"Select all"})]}),a.map(a=>{let c=R.has(a.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-5 py-2 text-sm transition-colors ${c?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>{S(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},children:[(0,b.jsx)(aH,{checked:c}),(0,b.jsx)("img",{src:(0,u.agentAvatarUrl)(a.id,24,a.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsx)("span",{className:"truncate text-xs font-medium flex-1",children:a.name}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--app-shell-soft-text)]",children:a.provider})]},a.id)})]}),(0,b.jsx)("div",{className:"px-5 py-3",children:(0,b.jsxs)("button",{type:"button",className:`flex items-center gap-3 w-full px-3 py-2 rounded-lg text-sm transition-colors ${T?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>U(!T),children:[(0,b.jsx)(aH,{checked:T}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"Include self.md (agent bio)"})]})})]}),(0,b.jsxs)("div",{className:"px-5 py-3 border-t border-[var(--border)] flex items-center justify-between",children:[(0,b.jsxs)("span",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:[R.size," ",1===R.size?"agent":"agents"]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)("button",{type:"button",disabled:0===R.size||V,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-[var(--muted-foreground)] bg-[var(--card-bg)] border border-[var(--border)] rounded-lg hover:bg-[var(--item-hover-bg)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>void aB(),children:[(0,b.jsx)(j.Download,{size:12}),V?"Exporting...":"Export to File"]}),(0,b.jsxs)("button",{type:"button",disabled:0===R.size||V,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-white bg-violet-600 rounded-lg hover:bg-violet-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>void aA(),children:[(0,b.jsx)(p,{size:12}),V?"Pushing...":"Push to Hub"]}),(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors",onClick:()=>Q(!1),children:"Cancel"})]})]})]})]})}),H&&!L&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>I(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 max-h-[70vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsxs)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",aE?.name??"project"]}),(0,b.jsx)("button",{type:"button",className:"text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>I(null),children:(0,b.jsx)(s.X,{size:16})})]}),(0,b.jsxs)("div",{className:"overflow-y-auto py-1 flex-1",children:[(0,b.jsxs)("button",{type:"button",className:"w-full flex items-center gap-3 px-4 py-2.5 text-sm text-[var(--secondary-foreground)] hover:bg-[var(--item-hover-bg)] transition-colors border-b border-[var(--border)]",onClick:()=>M(!0),children:[(0,b.jsx)(n.Plus,{size:14,className:"text-[var(--app-shell-soft-text)]"}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"Create new agent"})]}),0===aG.length?(0,b.jsx)("p",{className:"px-4 py-6 text-xs text-[var(--app-shell-soft-text)] text-center",children:"All agents are already in this project"}):aG.map(a=>{let c=J.has(a.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${c?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--secondary-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>{K(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},children:[(0,b.jsx)(aH,{checked:c}),(0,b.jsx)("img",{src:(0,u.agentAvatarUrl)(a.id,24,a.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsx)("div",{className:"min-w-0 flex-1 text-left",children:(0,b.jsx)("div",{className:"truncate font-medium text-xs",children:a.name})})]},a.id)})]}),aG.length>0&&(0,b.jsxs)("div",{className:"px-4 py-3 border-t border-[var(--border)] flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors",onClick:()=>I(null),children:"Cancel"}),(0,b.jsxs)("button",{type:"button",disabled:0===J.size,className:"px-3 py-1.5 text-xs font-medium text-white bg-[var(--foreground)] rounded-lg hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>{for(let a of J)C(H.projectId,a);I(null)},children:["Add ",J.size>0?`(${J.size})`:""]})]})]})}),L&&(0,b.jsx)(u.AgentForm,{title:"Create new agent",initial:{name:x[Math.floor(Math.random()*x.length)],provider:"claude",model:"",identity:"",skills:[],skillBindings:[]},submitLabel:"Create",projects:az.map(a=>{let b=(a.thread_ids??[]).map(a=>ay.get(a)?.title?.trim()).filter(Boolean).join(", ")||"No thread";return{id:a.id,name:a.name,label:`${b} › ${a.name}`}}),initialProjectIds:H?[H.projectId]:[],onSubmit:async(b,c)=>{let d=["#D97706","#2563EB","#059669","#DC2626","#7C3AED","#DB2777","#0891B2"],e=d[a.length%d.length],f=b.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),g=c?.[0],h=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:f,name:b.name,provider:b.provider,model:b.model,color:b.color??e,...b.role?{role:b.role}:{},...b.identity?{identity:b.identity}:{},skills:b.skills??[],skillBindings:b.skillBindings??[],...g?{projectId:g}:{}})});if(h.ok){let a=await h.json().catch(()=>({})),b="string"==typeof a?.id&&a.id.trim()?a.id.trim():f;for(let a of(c??[]).slice(1))await C(a,b);M(!1),I(null),aw(),E()}},onCancel:()=>{M(!1)}}),N&&(0,b.jsx)(u.AgentForm,{title:"Edit agent",initial:{name:N.name,role:N.role||"",provider:N.provider,model:N.model||"",identity:N.identity||"",color:N.color,skills:N.skills||[],skillBindings:N.skillBindings||[]},agentId:N.id,submitLabel:"Save",projectMemberships:{current:A.filter(a=>a.agents.some(a=>a.agent_id===N.id)).map(a=>({id:a.id,name:a.name,is_default:!!a.is_default})),available:A.filter(a=>!a.agents.some(a=>a.agent_id===N.id)).map(a=>({id:a.id,name:a.name}))},onAddToProject:a=>C(a,N.id),onRemoveFromProject:a=>D(a,N.id),onSubmit:async a=>{await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:N.id,name:a.name,role:a.role||null,provider:a.provider,model:a.model,color:a.color,...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[]})}),O(null),aw()},onCancel:()=>O(null)}),ab&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>ac(!1),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-[440px] max-h-[80vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-5 py-3.5 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Import Agents"}),(0,b.jsx)("button",{type:"button",className:"text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>ac(!1),children:(0,b.jsx)(s.X,{size:16})})]}),"choice"===ad&&!aj&&(0,b.jsxs)("div",{className:"px-5 py-6 flex flex-col gap-3",children:[(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-3 px-4 py-3.5 rounded-lg border border-[var(--border)] hover:border-violet-300 hover:bg-violet-50 transition-colors text-left",onClick:()=>ae("pull"),children:[(0,b.jsx)("div",{className:"w-9 h-9 rounded-lg bg-violet-100 flex items-center justify-center flex-shrink-0",children:(0,b.jsx)(j.Download,{size:16,className:"text-violet-600"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"Pull from Hub"}),(0,b.jsx)("p",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:"Enter a share code to import agents"})]})]}),(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-3 px-4 py-3.5 rounded-lg border border-[var(--border)] hover:border-[var(--border)] hover:bg-[var(--item-hover-bg)] transition-colors text-left",onClick:()=>{ae("file"),setTimeout(()=>at.current?.click(),100)},children:[(0,b.jsx)("div",{className:"w-9 h-9 rounded-lg bg-[var(--secondary)] flex items-center justify-center flex-shrink-0",children:(0,b.jsx)(q,{size:16,className:"text-[var(--muted-foreground)]"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"Upload File"}),(0,b.jsx)("p",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:"Import from a .agent.json bundle"})]})]})]}),"pull"===ad&&!aj&&(0,b.jsxs)("div",{className:"px-5 py-5 flex flex-col gap-3",children:[(0,b.jsx)("label",{className:"text-sm text-[var(--muted-foreground)]",children:"Enter share code:"}),(0,b.jsx)("input",{autoFocus:!0,type:"text",value:af,onChange:a=>ag(a.target.value.toUpperCase()),placeholder:"e.g. A3X9K2",maxLength:6,className:"w-full px-3 py-2.5 text-center text-2xl font-mono font-bold tracking-[0.3em] border border-[var(--border)] rounded-lg outline-none focus:border-violet-400 focus:ring-1 focus:ring-violet-200 transition-all bg-[var(--card-bg)] text-[var(--foreground)]",onKeyDown:a=>{"Enter"===a.key&&aC()}}),ar&&(0,b.jsx)("p",{className:"text-xs text-red-500",children:ar}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 mt-1",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors",onClick:()=>{ae("choice"),as(null)},children:"Back"}),(0,b.jsx)("button",{type:"button",disabled:0===af.trim().length||ah,className:"px-4 py-1.5 text-xs font-medium text-white bg-violet-600 rounded-lg hover:bg-violet-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>void aC(),children:ah?"Fetching...":"Fetch"})]})]}),"file"===ad&&!aj&&(0,b.jsxs)("div",{className:"px-5 py-6 flex flex-col items-center gap-3",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Select a .agent.json file to import"}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 px-4 py-2 text-xs font-medium text-[var(--muted-foreground)] bg-[var(--secondary)] rounded-lg hover:bg-[var(--item-hover-bg)] transition-colors",onClick:()=>at.current?.click(),children:[(0,b.jsx)(q,{size:13}),"Choose File"]}),ar&&(0,b.jsx)("p",{className:"text-xs text-red-500",children:ar}),(0,b.jsx)("button",{type:"button",className:"text-xs text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] mt-1",onClick:()=>{ae("choice"),as(null)},children:"Back"})]}),aj&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"overflow-y-auto flex-1",children:[aj.exportedAt&&(0,b.jsx)("div",{className:"px-5 py-3 border-b border-[var(--border)] bg-[var(--secondary)]",children:(0,b.jsxs)("p",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:["Exported ",new Date(aj.exportedAt).toLocaleDateString()," · ",aj.agents.length," agents",w(aj).length>0?`, ${w(aj).length} projects`:""]})}),(0,b.jsxs)("div",{className:"border-b border-[var(--border)]",children:[(0,b.jsxs)("div",{className:"px-5 pt-3 pb-1 flex items-center justify-between",children:[(0,b.jsxs)("p",{className:"text-[11px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide",children:[aj.agents.length," agent",1===aj.agents.length?"":"s"," found"]}),(0,b.jsx)("button",{type:"button",className:"text-[11px] text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>{al.size===aj.agents.length?am(new Set):am(new Set(aj.agents.map(a=>a.id)))},children:al.size===aj.agents.length?"Deselect all":"Select all"})]}),aj.agents.map(c=>{let d=al.has(c.id),e=a.find(a=>a.id===c.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-5 py-2.5 text-sm transition-colors ${d?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>{am(a=>{let b=new Set(a);return b.has(c.id)?b.delete(c.id):b.add(c.id),b})},children:[(0,b.jsx)(aH,{checked:d}),(0,b.jsx)("img",{src:(0,u.agentAvatarUrl)(c.id,24,c.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,b.jsx)("div",{className:"truncate text-xs font-medium",children:c.name}),(0,b.jsxs)("div",{className:"truncate text-[10px] text-[var(--app-shell-soft-text)]",children:[c.provider,c.model?` \xb7 ${c.model}`:""]})]}),e&&(0,b.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-amber-50 text-amber-600 flex-shrink-0",children:"update"}),!e&&(0,b.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-green-50 text-green-600 flex-shrink-0",children:"new"}),c.self&&(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)] flex-shrink-0",children:"+ self.md"})]},c.id)})]}),w(aj).length>0&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-5 pt-3 pb-1",children:(0,b.jsx)("p",{className:"text-[11px] font-medium text-[var(--muted-foreground)] uppercase tracking-wide",children:"Projects"})}),w(aj).map(a=>{let c=an.has(a.name);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-5 py-2 text-sm transition-colors ${c?"bg-[var(--app-shell-subtle)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onClick:()=>{ao(b=>{let c=new Set(b);return c.has(a.name)?c.delete(a.name):c.add(a.name),c})},children:[(0,b.jsx)(aH,{checked:c}),(0,b.jsx)(r.Users,{size:14,className:"text-[var(--muted-foreground)] flex-shrink-0"}),(0,b.jsx)("span",{className:"truncate text-xs font-medium flex-1",children:a.name}),(0,b.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:[a.agentIds.length," agents"]})]},a.name)})]})]}),ar&&(0,b.jsx)("div",{className:"px-5 py-2",children:(0,b.jsx)("p",{className:"text-xs text-red-500",children:ar})}),(0,b.jsxs)("div",{className:"px-5 py-3 border-t border-[var(--border)] flex items-center justify-between",children:[(0,b.jsxs)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:[al.size," ",1===al.size?"agent":"agents",an.size>0?`, ${an.size} ${1===an.size?"project":"projects"}`:""]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>{ak(null),am(new Set),ao(new Set)},children:"Back"}),(0,b.jsxs)("button",{type:"button",disabled:0===al.size||ap,className:"inline-flex items-center gap-1.5 px-4 py-1.5 text-xs font-medium text-white bg-violet-600 rounded-lg hover:bg-violet-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>void aD(),children:[(0,b.jsx)(q,{size:12}),ap?"Importing...":`Import ${al.size} agent${1===al.size?"":"s"}`]})]})]})]})]})})]})}a.s(["default",()=>y],665045)}];
1
+ module.exports=[665045,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(850985),e=a.i(285320),f=a.i(811760),g=a.i(756490),h=a.i(804632),i=a.i(627421),j=a.i(340492),k=a.i(960216),l=a.i(316099),m=a.i(667597),n=a.i(353532);let o=(0,a.i(831709).default)("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);var p=a.i(262403),q=a.i(985339),r=a.i(824179),s=a.i(830284),t=a.i(8e4),u=a.i(870630);function v(a){return a?a.projects??[]:[]}let w=["Ada","Kai","Sage","Nova","Cleo","Milo","Iris","Juno","Remy","Zara","Arlo","Luna","Ezra","Wren","Nico","Thea","Fern","Orla","Kira","Dax","Lyra","Soren","Vera","Elio"];function x(){let[a,x]=(0,c.useState)([]),[y,z]=(0,c.useState)([]),{projects:A,createProject:B,addAgent:C,removeAgent:D,refresh:E}=(0,s.useProjectsWithAgents)(),[F,G]=(0,c.useState)(new Set),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(new Set),[L,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)(null),[P,Q]=(0,c.useState)(!1),[R,S]=(0,c.useState)(new Set),[T,U]=(0,c.useState)(!0),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(null),[Z,$]=(0,c.useState)(null),[_,aa]=(0,c.useState)(!1),[ab,ac]=(0,c.useState)(!1),[ad,ae]=(0,c.useState)("choice"),[af,ag]=(0,c.useState)(""),[ah,ai]=(0,c.useState)(!1),[aj,ak]=(0,c.useState)(null),[al,am]=(0,c.useState)(new Set),[an,ao]=(0,c.useState)(new Set),[ap,aq]=(0,c.useState)(!1),[ar,as]=(0,c.useState)(null),at=(0,c.useRef)(null),[au,av]=(0,c.useState)(new Set),aw=()=>{fetch("/api/participants").then(a=>a.json()).then(a=>x(Array.isArray(a)?a:[]))},ax=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/processes");if(!a.ok)return;let b=await a.json();av(new Set(b.filter(a=>"spawning"===a.state||"running"===a.state).map(a=>a.agentId)))}catch{}},[]);(0,c.useEffect)(()=>{aw(),u.threadService.listThreads().then(z),ax();let a=setInterval(ax,3e3);return()=>clearInterval(a)},[ax]);let ay=new Map(y.map(a=>[a.id,a])),az=A.filter(a=>!a.is_default),aA=async()=>{if(0!==R.size){W(!0);try{let a=await fetch("/api/agent-specs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentIds:Array.from(R),includeSelf:T})});if(!a.ok)throw Error("Share failed");let b=await a.json();Y(b.code),$(b.expires_at)}catch(a){console.error("Share error:",a)}finally{W(!1)}}},aB=async()=>{if(0!==R.size){W(!0);try{let a=Array.from(R),b=await fetch("/api/agents/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentIds:a})});if(!b.ok)throw Error("Export failed");let c=(await b.json()).agents.map(a=>({...a,self:T?a.self:null})),d={version:1,exportedAt:new Date().toISOString(),agents:c,projects:[]},e=new Blob([JSON.stringify(d,null,2)],{type:"application/json"}),f=URL.createObjectURL(e),g=document.createElement("a");g.href=f,g.download=1===c.length?`${c[0].name.toLowerCase().replace(/\s+/g,"-")}.agent.json`:"agents.bundle.json",g.click(),URL.revokeObjectURL(f),Q(!1)}catch(a){console.error("Export error:",a)}finally{W(!1)}}},aC=async()=>{if(0!==af.trim().length){ai(!0),as(null),ak(null);try{let a=await fetch(`/api/agent-specs/pull?code=${encodeURIComponent(af.trim())}`);if(!a.ok){let b=await a.json().catch(()=>({error:"Failed to pull"}));as(b.error||"Code not found or expired");return}let b=(await a.json()).bundle;ak(b),am(new Set(b.agents.map(a=>a.id))),ao(new Set(v(b).map(a=>a.name)))}catch{as("Failed to connect. Is agx-api running?")}finally{ai(!1)}}},aD=async()=>{if(aj){aq(!0);try{let b=new Set(a.map(a=>a.id));for(let a of aj.agents){if(!al.has(a.id))continue;let c={name:a.name,provider:a.provider,model:a.model,color:a.color,identity:a.identity||void 0,voice:a.voice||void 0,seed:a.seed||void 0,identityFile:a.identityFile||void 0,skills:a.skills||[],variables:a.variables||{}};b.has(a.id)?(c.id=a.id,await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)})):await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)})}for(let a of v(aj)){if(!an.has(a.name))continue;let b=await B(a.name);if(b)for(let c of a.agentIds)al.has(c)&&await C(b.id,c)}aw(),await E(),ac(!1),ak(null)}catch(a){console.error("Import error:",a),as("Import failed. Check console for details.")}finally{aq(!1)}}},aE=H?A.find(a=>a.id===H.projectId):null,aF=new Set(aE?.agents.map(a=>a.agent_id)??[]),aG=H?a.filter(a=>!aF.has(a.id)):[],aH=({checked:a})=>(0,b.jsx)("div",{className:`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${a?"bg-[var(--foreground)] border-[var(--foreground)]":"border-[var(--app-shell-soft-text)]"}`,children:a&&(0,b.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,b.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})});return(0,b.jsxs)("div",{className:"min-h-screen bg-[var(--secondary)] p-6",children:[(0,b.jsxs)("div",{className:"max-w-6xl mx-auto",children:[(0,b.jsxs)("div",{className:"desktop-titlebar sticky top-0 z-20 -mx-6 mb-6 flex items-center gap-3 border-b border-[var(--border)] bg-[var(--secondary)]/92 px-6 py-4 backdrop-blur-md",children:[(0,b.jsxs)(d.default,{href:"/",className:"inline-flex items-center gap-1 text-sm text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors",children:[(0,b.jsx)(e.ArrowLeft,{size:16}),"Back"]}),(0,b.jsx)("h1",{className:"text-2xl font-semibold text-[var(--foreground)]",children:"Manage Agents"}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-white bg-[var(--foreground)] rounded-lg hover:opacity-90 transition-colors",onClick:()=>M(!0),children:[(0,b.jsx)(n.Plus,{size:13}),"New Agent"]}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-white bg-violet-600 rounded-lg hover:bg-violet-700 transition-colors",onClick:()=>{S(new Set(a.map(a=>a.id))),U(!0),Y(null),$(null),aa(!1),Q(!0)},disabled:0===a.length,children:[(0,b.jsx)(o,{size:13}),"Share"]}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-violet-600 bg-violet-50 border border-violet-200 rounded-lg hover:bg-violet-100 transition-colors",onClick:()=>{ae("choice"),ag(""),ak(null),am(new Set),ao(new Set),as(null),ac(!0)},children:[(0,b.jsx)(j.Download,{size:13}),"Import"]}),(0,b.jsx)("input",{ref:at,type:"file",accept:".json",className:"hidden",onChange:a=>{let b=a.target.files?.[0];if(!b)return;as(null);let c=new FileReader;c.onload=()=>{try{let a=JSON.parse(c.result);if(!a.version||!Array.isArray(a.agents))throw Error("Invalid bundle format");ak(a),am(new Set(a.agents.map(a=>a.id))),ao(new Set(v(a).map(a=>a.name)))}catch{as("Invalid file. Expected an .agent.json bundle.")}},c.readAsText(b),a.target.value=""}})]})]}),ar&&!ab&&(0,b.jsxs)("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-50 border border-red-200 text-sm text-red-700 flex items-center justify-between",children:[(0,b.jsx)("span",{children:ar}),(0,b.jsx)("button",{type:"button",onClick:()=>as(null),className:"text-red-400 hover:text-red-600",children:(0,b.jsx)(r.X,{size:14})})]}),0===a.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)] text-sm",children:"No agents configured yet."}):(0,b.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:a.map(a=>(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl border border-[var(--border)] p-4 hover:shadow-md transition-shadow text-left group",children:[(0,b.jsxs)("div",{className:"flex items-start gap-3 mb-3",children:[(0,b.jsx)("img",{src:(0,t.agentAvatarUrl)(a.id,48,a.color),alt:a.name,className:"w-12 h-12 rounded-full bg-[var(--secondary)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("h3",{className:"font-medium text-[var(--foreground)] truncate",children:a.name}),(0,b.jsx)("p",{className:"text-xs text-[var(--app-shell-soft-text)] truncate mt-0.5",children:a.model}),au.has(a.id)&&(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 mt-1 text-[10px] font-medium text-emerald-600",children:[(0,b.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-emerald-500 animate-pulse"}),"Working"]})]})]}),a.skills&&a.skills.length>0&&(0,b.jsxs)("div",{className:"flex flex-wrap gap-1 mb-3",children:[a.skills.slice(0,3).map((a,c)=>(0,b.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-blue-50 text-blue-600 truncate max-w-[120px]",children:a.file.split("/").pop()},c)),a.skills.length>3&&(0,b.jsxs)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--secondary)] text-[var(--app-shell-soft-text)]",children:["+",a.skills.length-3]})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between pt-2 border-t border-[var(--border)]",children:[(0,b.jsx)("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full bg-[var(--secondary)] text-[var(--muted-foreground)] uppercase tracking-wide",children:a.provider}),(0,b.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,b.jsx)("button",{type:"button",title:"Edit",onClick:()=>O(a),className:"p-1.5 text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] rounded hover:bg-[var(--item-hover-bg)] transition-colors",children:(0,b.jsx)(m.Pencil,{size:13})}),(0,b.jsx)(d.default,{href:`/agents/${a.id}`,title:"View profile",className:"p-1.5 text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] rounded hover:bg-[var(--item-hover-bg)] transition-colors",children:(0,b.jsx)(k.Eye,{size:13})})]})]})]},a.id))}),(0,b.jsxs)("div",{className:"mt-10",children:[(0,b.jsxs)("div",{className:"mb-4",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-[var(--foreground)]",children:"Project assignments"}),(0,b.jsx)("p",{className:"mt-1 text-sm text-[var(--app-shell-soft-text)]",children:"Assign agents to existing projects."})]}),0===az.length?(0,b.jsx)("p",{className:"text-sm text-[var(--app-shell-soft-text)]",children:"No projects available for assignment."}):(0,b.jsx)("div",{className:"bg-[var(--card-bg)] rounded-xl border border-[var(--border)] divide-y divide-[var(--border)]",children:az.map(c=>{let d=F.has(c.id),e=(c.thread_ids??[]).map(a=>ay.get(a)?.title?.trim()||"Untitled").filter(Boolean);return(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 px-5 py-3.5 group",children:[(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-3 flex-1 min-w-0 text-left",onClick:()=>{var a;return a=c.id,void G(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},children:[d?(0,b.jsx)(f.ChevronDown,{size:16,className:"text-[var(--app-shell-soft-text)] flex-shrink-0"}):(0,b.jsx)(g.ChevronRight,{size:16,className:"text-[var(--app-shell-soft-text)] flex-shrink-0"}),(0,b.jsx)(q.Users,{size:16,className:"text-[var(--app-shell-soft-text)] flex-shrink-0"}),(0,b.jsx)("span",{className:"font-medium text-[var(--foreground)] text-sm",children:c.name}),(0,b.jsxs)("span",{className:"text-xs text-[var(--app-shell-soft-text)]",children:[c.agents.length," ",1===c.agents.length?"agent":"agents",e.length>0&&` \xb7 ${e.length} ${1===e.length?"thread":"threads"}`]})]}),(0,b.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-lg border border-[var(--border)] px-2.5 py-1.5 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--item-hover-bg)] hover:text-[var(--foreground)]",title:"Add agents",onClick:()=>{K(new Set),I({projectId:c.id})},children:[(0,b.jsx)(n.Plus,{size:14}),"Add agents"]})})]}),d&&(0,b.jsxs)("div",{className:"px-5 pb-4 pt-1 ml-9 flex flex-col gap-1",children:[0===c.agents.length&&(0,b.jsx)("p",{className:"text-xs text-[var(--app-shell-soft-text)] py-1",children:"No agents in this project."}),c.agents.map(d=>{let e=a.find(a=>a.id===d.agent_id);return(0,b.jsxs)("div",{className:"flex items-center gap-2.5 py-1.5 group/agent",children:[(0,b.jsx)("img",{src:(0,t.agentAvatarUrl)(d.agent_id,24,e?.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsx)("span",{className:"text-sm text-[var(--secondary-foreground)] truncate flex-1",children:e?.name??d.agent_id}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--app-shell-soft-text)]",children:e?.model}),(0,b.jsx)("button",{type:"button",className:"opacity-0 group-hover/agent:opacity-100 text-[var(--app-shell-soft-text)] hover:text-red-500 transition-opacity",onClick:()=>void D(c.id,d.agent_id),title:"Remove from project",children:(0,b.jsx)(r.X,{size:14})})]},d.agent_id)}),(0,b.jsxs)("button",{type:"button",className:"mt-2 inline-flex items-center gap-1.5 self-start rounded-lg border border-[var(--border)] px-2.5 py-1.5 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--item-hover-bg)] hover:text-[var(--foreground)]",onClick:()=>{K(new Set),I({projectId:c.id})},children:[(0,b.jsx)(n.Plus,{size:12}),"Add agents"]}),e.length>0&&(0,b.jsxs)("div",{className:"mt-2 pt-2 border-t border-[var(--border)]",children:[(0,b.jsx)("p",{className:"text-[10px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide mb-1",children:"Threads"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:e.map((a,c)=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-1 rounded-md bg-indigo-50 text-indigo-600",children:[(0,b.jsx)(l.Hash,{size:11}),a]},c))})]})]})]},c.id)})})]})]}),P&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>Q(!1),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-[440px] max-h-[80vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-5 py-3.5 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Share Agents"}),(0,b.jsx)("button",{type:"button",className:"text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>Q(!1),children:(0,b.jsx)(r.X,{size:16})})]}),X?(0,b.jsxs)("div",{className:"px-5 py-6 flex flex-col items-center gap-4",children:[(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] mb-3",children:"Share this code with the recipient:"}),(0,b.jsxs)("div",{className:"flex items-center justify-center gap-3",children:[(0,b.jsx)("span",{className:"text-3xl font-mono font-bold tracking-[0.3em] text-[var(--foreground)]",children:X}),(0,b.jsx)("button",{type:"button",className:"p-2 text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] transition-colors",onClick:()=>{X&&(navigator.clipboard.writeText(X),aa(!0),setTimeout(()=>aa(!1),2e3))},children:_?(0,b.jsx)(i.Check,{size:18,className:"text-green-500"}):(0,b.jsx)(h.Copy,{size:18})})]})]}),Z&&(0,b.jsxs)("p",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:["Expires ",new Date(Z).toLocaleTimeString()]}),(0,b.jsx)("button",{type:"button",className:"px-4 py-2 text-xs font-medium text-[var(--muted-foreground)] bg-[var(--secondary)] rounded-lg hover:bg-[var(--item-hover-bg)] transition-colors",onClick:()=>Q(!1),children:"Done"})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"overflow-y-auto flex-1",children:[az.length>0&&(0,b.jsxs)("div",{className:"border-b border-[var(--border)] px-5 py-3",children:[(0,b.jsx)("p",{className:"text-[11px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide mb-2",children:"Select by project"}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:az.map(c=>{let d=c.agents.map(a=>a.agent_id),e=d.length>0&&d.every(a=>R.has(a)),f=d.some(a=>R.has(a));return(0,b.jsxs)("button",{type:"button",className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-[11px] font-medium transition-colors ${e?"bg-[var(--foreground)] text-white":f?"bg-[var(--app-shell-soft-text)] text-[var(--secondary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>{S(a=>{let b=new Set(a);return e?d.forEach(a=>b.delete(a)):d.forEach(a=>b.add(a)),b})},title:d.map(b=>a.find(a=>a.id===b)?.name??b).join(", "),children:[(0,b.jsx)(q.Users,{size:10}),c.name,(0,b.jsx)("span",{className:"text-[10px] text-[var(--app-shell-soft-text)]",children:c.agents.length})]},c.id)})})]}),(0,b.jsxs)("div",{className:"border-b border-[var(--border)]",children:[(0,b.jsxs)("div",{className:"px-5 pt-3 pb-1 flex items-center justify-between",children:[(0,b.jsx)("p",{className:"text-[11px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide",children:"Agents"}),(0,b.jsx)("button",{type:"button",className:"text-[11px] text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>{R.size===a.length?S(new Set):S(new Set(a.map(a=>a.id)))},children:R.size===a.length?"Deselect all":"Select all"})]}),a.map(a=>{let c=R.has(a.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-5 py-2 text-sm transition-colors ${c?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>{S(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},children:[(0,b.jsx)(aH,{checked:c}),(0,b.jsx)("img",{src:(0,t.agentAvatarUrl)(a.id,24,a.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsx)("span",{className:"truncate text-xs font-medium flex-1",children:a.name}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--app-shell-soft-text)]",children:a.provider})]},a.id)})]}),(0,b.jsx)("div",{className:"px-5 py-3",children:(0,b.jsxs)("button",{type:"button",className:`flex items-center gap-3 w-full px-3 py-2 rounded-lg text-sm transition-colors ${T?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>U(!T),children:[(0,b.jsx)(aH,{checked:T}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"Include self.md (agent bio)"})]})})]}),(0,b.jsxs)("div",{className:"px-5 py-3 border-t border-[var(--border)] flex items-center justify-between",children:[(0,b.jsxs)("span",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:[R.size," ",1===R.size?"agent":"agents"]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)("button",{type:"button",disabled:0===R.size||V,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-[var(--muted-foreground)] bg-[var(--card-bg)] border border-[var(--border)] rounded-lg hover:bg-[var(--item-hover-bg)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>void aB(),children:[(0,b.jsx)(j.Download,{size:12}),V?"Exporting...":"Export to File"]}),(0,b.jsxs)("button",{type:"button",disabled:0===R.size||V,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-white bg-violet-600 rounded-lg hover:bg-violet-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>void aA(),children:[(0,b.jsx)(o,{size:12}),V?"Pushing...":"Push to Hub"]}),(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors",onClick:()=>Q(!1),children:"Cancel"})]})]})]})]})}),H&&!L&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>I(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 max-h-[70vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsxs)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",aE?.name??"project"]}),(0,b.jsx)("button",{type:"button",className:"text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>I(null),children:(0,b.jsx)(r.X,{size:16})})]}),(0,b.jsxs)("div",{className:"overflow-y-auto py-1 flex-1",children:[(0,b.jsxs)("button",{type:"button",className:"w-full flex items-center gap-3 px-4 py-2.5 text-sm text-[var(--secondary-foreground)] hover:bg-[var(--item-hover-bg)] transition-colors border-b border-[var(--border)]",onClick:()=>M(!0),children:[(0,b.jsx)(n.Plus,{size:14,className:"text-[var(--app-shell-soft-text)]"}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"Create new agent"})]}),0===aG.length?(0,b.jsx)("p",{className:"px-4 py-6 text-xs text-[var(--app-shell-soft-text)] text-center",children:"All agents are already in this project"}):aG.map(a=>{let c=J.has(a.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${c?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--secondary-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>{K(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},children:[(0,b.jsx)(aH,{checked:c}),(0,b.jsx)("img",{src:(0,t.agentAvatarUrl)(a.id,24,a.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsx)("div",{className:"min-w-0 flex-1 text-left",children:(0,b.jsx)("div",{className:"truncate font-medium text-xs",children:a.name})})]},a.id)})]}),aG.length>0&&(0,b.jsxs)("div",{className:"px-4 py-3 border-t border-[var(--border)] flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors",onClick:()=>I(null),children:"Cancel"}),(0,b.jsxs)("button",{type:"button",disabled:0===J.size,className:"px-3 py-1.5 text-xs font-medium text-white bg-[var(--foreground)] rounded-lg hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>{for(let a of J)C(H.projectId,a);I(null)},children:["Add ",J.size>0?`(${J.size})`:""]})]})]})}),L&&(0,b.jsx)(t.AgentForm,{title:"Create new agent",initial:{name:w[Math.floor(Math.random()*w.length)],provider:"claude",model:"",identity:"",skills:[],skillBindings:[]},submitLabel:"Create",projects:az.map(a=>{let b=(a.thread_ids??[]).map(a=>ay.get(a)?.title?.trim()).filter(Boolean).join(", ")||"No thread";return{id:a.id,name:a.name,label:`${b} › ${a.name}`}}),initialProjectIds:H?[H.projectId]:[],onSubmit:async(b,c)=>{let d=["#D97706","#2563EB","#059669","#DC2626","#7C3AED","#DB2777","#0891B2"],e=d[a.length%d.length],f=b.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),g=c?.[0],h=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:f,name:b.name,provider:b.provider,model:b.model,color:b.color??e,...b.role?{role:b.role}:{},...b.identity?{identity:b.identity}:{},skills:b.skills??[],skillBindings:b.skillBindings??[],...g?{projectId:g}:{}})});if(h.ok){let a=await h.json().catch(()=>({})),b="string"==typeof a?.id&&a.id.trim()?a.id.trim():f;for(let a of(c??[]).slice(1))await C(a,b);M(!1),I(null),aw(),E()}},onCancel:()=>{M(!1)}}),N&&(0,b.jsx)(t.AgentForm,{title:"Edit agent",initial:{name:N.name,role:N.role||"",provider:N.provider,model:N.model||"",identity:N.identity||"",color:N.color,skills:N.skills||[],skillBindings:N.skillBindings||[]},agentId:N.id,submitLabel:"Save",projectMemberships:{current:A.filter(a=>a.agents.some(a=>a.agent_id===N.id)).map(a=>({id:a.id,name:a.name,is_default:!!a.is_default})),available:A.filter(a=>!a.agents.some(a=>a.agent_id===N.id)).map(a=>({id:a.id,name:a.name}))},onAddToProject:a=>C(a,N.id),onRemoveFromProject:a=>D(a,N.id),onSubmit:async a=>{await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:N.id,name:a.name,role:a.role||null,provider:a.provider,model:a.model,color:a.color,...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[]})}),O(null),aw()},onCancel:()=>O(null)}),ab&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>ac(!1),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-[440px] max-h-[80vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-5 py-3.5 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Import Agents"}),(0,b.jsx)("button",{type:"button",className:"text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>ac(!1),children:(0,b.jsx)(r.X,{size:16})})]}),"choice"===ad&&!aj&&(0,b.jsxs)("div",{className:"px-5 py-6 flex flex-col gap-3",children:[(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-3 px-4 py-3.5 rounded-lg border border-[var(--border)] hover:border-violet-300 hover:bg-violet-50 transition-colors text-left",onClick:()=>ae("pull"),children:[(0,b.jsx)("div",{className:"w-9 h-9 rounded-lg bg-violet-100 flex items-center justify-center flex-shrink-0",children:(0,b.jsx)(j.Download,{size:16,className:"text-violet-600"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"Pull from Hub"}),(0,b.jsx)("p",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:"Enter a share code to import agents"})]})]}),(0,b.jsxs)("button",{type:"button",className:"flex items-center gap-3 px-4 py-3.5 rounded-lg border border-[var(--border)] hover:border-[var(--border)] hover:bg-[var(--item-hover-bg)] transition-colors text-left",onClick:()=>{ae("file"),setTimeout(()=>at.current?.click(),100)},children:[(0,b.jsx)("div",{className:"w-9 h-9 rounded-lg bg-[var(--secondary)] flex items-center justify-center flex-shrink-0",children:(0,b.jsx)(p.Upload,{size:16,className:"text-[var(--muted-foreground)]"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"Upload File"}),(0,b.jsx)("p",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:"Import from a .agent.json bundle"})]})]})]}),"pull"===ad&&!aj&&(0,b.jsxs)("div",{className:"px-5 py-5 flex flex-col gap-3",children:[(0,b.jsx)("label",{className:"text-sm text-[var(--muted-foreground)]",children:"Enter share code:"}),(0,b.jsx)("input",{autoFocus:!0,type:"text",value:af,onChange:a=>ag(a.target.value.toUpperCase()),placeholder:"e.g. A3X9K2",maxLength:6,className:"w-full px-3 py-2.5 text-center text-2xl font-mono font-bold tracking-[0.3em] border border-[var(--border)] rounded-lg outline-none focus:border-violet-400 focus:ring-1 focus:ring-violet-200 transition-all bg-[var(--card-bg)] text-[var(--foreground)]",onKeyDown:a=>{"Enter"===a.key&&aC()}}),ar&&(0,b.jsx)("p",{className:"text-xs text-red-500",children:ar}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 mt-1",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--secondary-foreground)] transition-colors",onClick:()=>{ae("choice"),as(null)},children:"Back"}),(0,b.jsx)("button",{type:"button",disabled:0===af.trim().length||ah,className:"px-4 py-1.5 text-xs font-medium text-white bg-violet-600 rounded-lg hover:bg-violet-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>void aC(),children:ah?"Fetching...":"Fetch"})]})]}),"file"===ad&&!aj&&(0,b.jsxs)("div",{className:"px-5 py-6 flex flex-col items-center gap-3",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Select a .agent.json file to import"}),(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1.5 px-4 py-2 text-xs font-medium text-[var(--muted-foreground)] bg-[var(--secondary)] rounded-lg hover:bg-[var(--item-hover-bg)] transition-colors",onClick:()=>at.current?.click(),children:[(0,b.jsx)(p.Upload,{size:13}),"Choose File"]}),ar&&(0,b.jsx)("p",{className:"text-xs text-red-500",children:ar}),(0,b.jsx)("button",{type:"button",className:"text-xs text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)] mt-1",onClick:()=>{ae("choice"),as(null)},children:"Back"})]}),aj&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"overflow-y-auto flex-1",children:[aj.exportedAt&&(0,b.jsx)("div",{className:"px-5 py-3 border-b border-[var(--border)] bg-[var(--secondary)]",children:(0,b.jsxs)("p",{className:"text-[11px] text-[var(--app-shell-soft-text)]",children:["Exported ",new Date(aj.exportedAt).toLocaleDateString()," · ",aj.agents.length," agents",v(aj).length>0?`, ${v(aj).length} projects`:""]})}),(0,b.jsxs)("div",{className:"border-b border-[var(--border)]",children:[(0,b.jsxs)("div",{className:"px-5 pt-3 pb-1 flex items-center justify-between",children:[(0,b.jsxs)("p",{className:"text-[11px] font-medium text-[var(--app-shell-soft-text)] uppercase tracking-wide",children:[aj.agents.length," agent",1===aj.agents.length?"":"s"," found"]}),(0,b.jsx)("button",{type:"button",className:"text-[11px] text-[var(--app-shell-soft-text)] hover:text-[var(--muted-foreground)]",onClick:()=>{al.size===aj.agents.length?am(new Set):am(new Set(aj.agents.map(a=>a.id)))},children:al.size===aj.agents.length?"Deselect all":"Select all"})]}),aj.agents.map(c=>{let d=al.has(c.id),e=a.find(a=>a.id===c.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-5 py-2.5 text-sm transition-colors ${d?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--item-hover-bg)]"}`,onClick:()=>{am(a=>{let b=new Set(a);return b.has(c.id)?b.delete(c.id):b.add(c.id),b})},children:[(0,b.jsx)(aH,{checked:d}),(0,b.jsx)("img",{src:(0,t.agentAvatarUrl)(c.id,24,c.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,b.jsx)("div",{className:"truncate text-xs font-medium",children:c.name}),(0,b.jsxs)("div",{className:"truncate text-[10px] text-[var(--app-shell-soft-text)]",children:[c.provider,c.model?` \xb7 ${c.model}`:""]})]}),e&&(0,b.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-amber-50 text-amber-600 flex-shrink-0",children:"update"}),!e&&(0,b.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-green-50 text-green-600 flex-shrink-0",children:"new"}),c.self&&(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)] flex-shrink-0",children:"+ self.md"})]},c.id)})]}),v(aj).length>0&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-5 pt-3 pb-1",children:(0,b.jsx)("p",{className:"text-[11px] font-medium text-[var(--muted-foreground)] uppercase tracking-wide",children:"Projects"})}),v(aj).map(a=>{let c=an.has(a.name);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-5 py-2 text-sm transition-colors ${c?"bg-[var(--app-shell-subtle)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onClick:()=>{ao(b=>{let c=new Set(b);return c.has(a.name)?c.delete(a.name):c.add(a.name),c})},children:[(0,b.jsx)(aH,{checked:c}),(0,b.jsx)(q.Users,{size:14,className:"text-[var(--muted-foreground)] flex-shrink-0"}),(0,b.jsx)("span",{className:"truncate text-xs font-medium flex-1",children:a.name}),(0,b.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:[a.agentIds.length," agents"]})]},a.name)})]})]}),ar&&(0,b.jsx)("div",{className:"px-5 py-2",children:(0,b.jsx)("p",{className:"text-xs text-red-500",children:ar})}),(0,b.jsxs)("div",{className:"px-5 py-3 border-t border-[var(--border)] flex items-center justify-between",children:[(0,b.jsxs)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:[al.size," ",1===al.size?"agent":"agents",an.size>0?`, ${an.size} ${1===an.size?"project":"projects"}`:""]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>{ak(null),am(new Set),ao(new Set)},children:"Back"}),(0,b.jsxs)("button",{type:"button",disabled:0===al.size||ap,className:"inline-flex items-center gap-1.5 px-4 py-1.5 text-xs font-medium text-white bg-violet-600 rounded-lg hover:bg-violet-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>void aD(),children:[(0,b.jsx)(p.Upload,{size:12}),ap?"Importing...":`Import ${al.size} agent${1===al.size?"":"s"}`]})]})]})]})]})})]})}a.s(["default",()=>x],665045)}];
2
2
 
3
3
  //# sourceMappingURL=apps_local_app_agents_page_tsx_2a02508d._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[524509,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(756490),e=a.i(804632),f=a.i(627421),g=a.i(379065),h=a.i(552605),i=a.i(736868),j=a.i(89613),k=a.i(831709);let l=(0,k.default)("folder-search",[["path",{d:"M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1",key:"1bw5m7"}],["path",{d:"m21 21-1.9-1.9",key:"1g2n9r"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}]]),m=(0,k.default)("git-branch",[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]),n=(0,k.default)("hard-drive",[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]]);var o=a.i(667597),p=a.i(353532),q=a.i(354658),r=a.i(697183),s=a.i(824179),t=a.i(830284),u=a.i(713178);function v({path:a}){let[d,g]=(0,c.useState)(!1);return(0,b.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),navigator.clipboard.writeText(a),g(!0),setTimeout(()=>g(!1),1500)},className:"rounded p-1 text-[var(--app-shell-soft-text)] transition-colors hover:text-[var(--foreground)]",title:"Copy path",children:d?(0,b.jsx)(f.Check,{className:"w-3 h-3 text-green-400"}):(0,b.jsx)(e.Copy,{className:"w-3 h-3"})})}function w({lang:a,count:c}){return(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-md bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:[a,(0,b.jsx)("span",{className:"text-[var(--app-shell-soft-text)]",children:c})]})}function x({analysis:a}){let c=Object.entries(a.languages).sort(([,a],[,b])=>b-a).slice(0,5);return(0,b.jsxs)("div",{className:"overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--card-bg)]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-4 py-2.5",children:[(0,b.jsx)(n,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--muted-foreground)]",children:"Analysis"})]}),(0,b.jsxs)("div",{className:"px-4 py-3 space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(m,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),a.isGit?(0,b.jsx)("span",{className:"text-xs text-[var(--foreground)]",children:a.branch??"detached"}):(0,b.jsx)("span",{className:"text-xs italic text-[var(--muted-foreground)]",children:"Not a git repo"})]}),a.isGit&&a.status&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)]",children:[a.status.staged>0&&(0,b.jsxs)("span",{className:"text-[var(--status-completed-text)]",children:[a.status.staged," staged"]}),a.status.modified>0&&(0,b.jsxs)("span",{className:"text-[var(--status-blocked-text)]",children:[a.status.modified," modified"]}),a.status.untracked>0&&(0,b.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[a.status.untracked," untracked"]}),0===a.status.staged&&0===a.status.modified&&0===a.status.untracked&&(0,b.jsx)("span",{className:"text-[var(--app-shell-soft-text)]",children:"clean"})]})]}),c.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:c.map(([a,c])=>(0,b.jsx)(w,{lang:a,count:c},a))})]})]})}function y({repo:a,isSelected:c,onSelect:e}){return(0,b.jsxs)("button",{type:"button",onClick:e,className:`w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors group ${c?"border border-blue-500/20 bg-blue-500/10":"border border-transparent hover:bg-[var(--secondary)]"}`,children:[c?(0,b.jsx)(j.FolderOpen,{className:"w-4 h-4 text-blue-400 flex-shrink-0"}):(0,b.jsx)(i.FolderGit2,{className:"h-4 w-4 flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:`truncate text-sm font-medium ${c?"text-blue-500":"text-[var(--foreground)]"}`,children:a.name}),(0,b.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:a.path||a.git_url||"No path set"})]}),(0,b.jsx)(d.ChevronRight,{className:`w-3.5 h-3.5 flex-shrink-0 transition-colors ${c?"text-blue-500":"text-[var(--app-shell-soft-text)] group-hover:text-[var(--muted-foreground)]"}`})]})}function z({repo:a,systemNote:d,analysis:e,analysisLoading:f,onNoteSave:i,noteSaving:k,onEdit:l,onDelete:m}){let[n,p]=(0,c.useState)(a.notes??""),[t,u]=(0,c.useState)(!1),[w,y]=(0,c.useState)(n);return(0,c.useEffect)(()=>{p(a.notes??""),y(a.notes??""),u(!1)},[a.id,a.notes]),(0,b.jsxs)("div",{className:"space-y-5",children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,b.jsx)(j.FolderOpen,{className:"w-5 h-5 text-blue-400 flex-shrink-0"}),(0,b.jsx)("h3",{className:"truncate text-lg font-semibold text-[var(--foreground)]",children:a.name})]}),a.path&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 ml-7",children:[(0,b.jsx)("code",{className:"truncate font-mono text-xs text-[var(--muted-foreground)]",children:a.path}),(0,b.jsx)(v,{path:a.path})]}),a.git_url&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 ml-7 mt-1",children:[(0,b.jsx)(g.ExternalLink,{className:"h-3 w-3 flex-shrink-0 text-[var(--app-shell-soft-text)]"}),(0,b.jsx)("a",{href:a.git_url,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-blue-400/70 hover:text-blue-400 truncate",children:a.git_url})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1 flex-shrink-0",children:[(0,b.jsx)("button",{type:"button",onClick:()=>l(a),className:"rounded-lg p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",title:"Edit folder",children:(0,b.jsx)(o.Pencil,{className:"w-3.5 h-3.5"})}),(0,b.jsx)("button",{type:"button",onClick:()=>m(a.id),className:"rounded-lg p-1.5 text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--destructive)]",title:"Delete folder",children:(0,b.jsx)(r.Trash2,{className:"w-3.5 h-3.5"})})]})]}),f&&(0,b.jsx)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-4 py-3",children:(0,b.jsx)("span",{className:"animate-pulse text-xs text-[var(--muted-foreground)]",children:"Analyzing folder..."})}),!f&&e&&(0,b.jsx)(x,{analysis:e}),(0,b.jsxs)("div",{className:"overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--card-bg)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(h.FileText,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--muted-foreground)]",children:"Notes"})]}),t?(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[10px] text-[var(--app-shell-soft-text)]",children:"Cmd+Enter to save"}),(0,b.jsxs)("button",{type:"button",onClick:()=>{u(!1),y(n)},className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(s.X,{className:"w-3 h-3"}),"Cancel"]}),(0,b.jsxs)("button",{type:"button",disabled:k,onClick:async()=>{await i(a.id,w),p(w),u(!1)},className:"flex items-center gap-1 text-xs text-blue-500 transition-colors hover:text-blue-600 disabled:opacity-50",children:[(0,b.jsx)(q.Save,{className:"w-3 h-3"}),"Save"]})]}):(0,b.jsxs)("button",{type:"button",onClick:()=>{y(n),u(!0)},className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(o.Pencil,{className:"w-3 h-3"}),"Edit"]})]}),(0,b.jsx)("div",{className:"px-4 py-3 min-h-[80px]",children:t?(0,b.jsx)("textarea",{value:w,onChange:a=>y(a.target.value),onKeyDown:b=>{"Enter"===b.key&&(b.metaKey||b.ctrlKey)?(b.preventDefault(),(async()=>{await i(a.id,w),p(w),u(!1)})()):"Escape"===b.key&&(u(!1),y(n))},className:"min-h-[120px] w-full resize-none bg-transparent text-sm text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)]",placeholder:"Add notes about this folder... (architecture, conventions, important files, etc.)",autoFocus:!0}):n?(0,b.jsx)("p",{className:"whitespace-pre-wrap text-sm text-[var(--foreground)]",children:n}):(0,b.jsx)("p",{className:"text-sm italic text-[var(--muted-foreground)]",children:"No notes yet. Click edit to describe this folder."})})]}),d&&(0,b.jsxs)("div",{className:"overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--secondary)]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-4 py-2.5",children:[(0,b.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-emerald-500/60"}),(0,b.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--muted-foreground)]",children:"Generated Knowledge"}),d.updated_at&&(0,b.jsx)("span",{className:"ml-auto text-xs text-[var(--app-shell-soft-text)]",children:new Date(d.updated_at).toLocaleDateString()})]}),(0,b.jsx)("div",{className:"whitespace-pre-wrap px-4 py-3 text-sm leading-relaxed text-[var(--muted-foreground)]",children:d.content})]})]})}function A({onAdd:a,onCancel:d}){let[e,f]=(0,c.useState)(""),[g,h]=(0,c.useState)(null),[i,k]=(0,c.useState)(!1),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),t=(0,c.useCallback)(async a=>{r(!0);try{let b=await fetch("/api/filesystem/analyze",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a})});if(b.ok){let a=await b.json();p(a.analysis)}}catch{}r(!1)},[]),v=(0,c.useCallback)(a=>{h(a),e.trim()||f(a.split("/").filter(Boolean).pop()??""),t(a)},[e,t]),w=(0,c.useCallback)(async()=>{n(!0);try{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json();b.path&&v(b.path)}catch{}n(!1)},[v]),y=(0,c.useCallback)(async()=>{if(g&&e.trim()){k(!0);try{await a(e.trim(),g)}finally{k(!1)}}},[e,g,a]);return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Add Folder"}),(0,b.jsx)("button",{type:"button",onClick:d,className:"rounded-lg p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,b.jsx)(s.X,{className:"w-4 h-4"})})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:e,onChange:a=>f(a.target.value),className:"input w-full text-sm",placeholder:"Auto-detected from path"})]}),g&&(0,b.jsxs)("div",{className:"rounded-lg border border-blue-500/20 bg-blue-500/5 px-3 py-2 flex items-center gap-2",children:[(0,b.jsx)(j.FolderOpen,{className:"w-4 h-4 text-blue-400 flex-shrink-0"}),(0,b.jsx)("code",{className:"text-xs text-blue-300 font-mono truncate flex-1",children:g}),(0,b.jsx)("button",{type:"button",onClick:()=>{h(null),p(null)},className:"p-0.5 rounded text-blue-400/50 hover:text-blue-300 transition-colors flex-shrink-0",children:(0,b.jsx)(s.X,{className:"w-3 h-3"})})]}),q&&(0,b.jsx)("div",{className:"px-1 text-xs text-[var(--muted-foreground)] animate-pulse",children:"Analyzing..."}),!q&&o&&(0,b.jsx)(x,{analysis:o}),!g&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-[var(--muted-foreground)]",children:"Choose a folder"}),(0,b.jsxs)("button",{type:"button",onClick:()=>void w(),disabled:m,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",children:[(0,b.jsx)(l,{className:"w-3 h-3"}),m?"Opening...":"System Picker"]})]}),(0,b.jsx)(u.default,{initialPath:"",onSelect:v,onCancel:d})]}),g&&(0,b.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,b.jsx)("button",{type:"button",onClick:()=>void y(),disabled:!e.trim()||i,className:"btn-primary px-4 py-1.5 text-sm disabled:opacity-40",children:i?"Adding...":"Add Folder"}),(0,b.jsx)("button",{type:"button",onClick:d,className:"px-4 py-1.5 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"})]})]})}function B({repo:a,onSave:d,onCancel:e}){let[f,g]=(0,c.useState)(a.name),[h,i]=(0,c.useState)(a.path??""),[j,k]=(0,c.useState)(!1),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(!1),q=(0,c.useCallback)(async()=>{p(!0);try{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json();b.path&&(i(b.path),k(!1))}catch{}p(!1)},[]);return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Edit Folder"}),(0,b.jsx)("button",{type:"button",onClick:e,className:"rounded-lg p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,b.jsx)(s.X,{className:"w-4 h-4"})})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:f,onChange:a=>g(a.target.value),className:"input w-full text-sm",placeholder:"Folder name",autoFocus:!0})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("button",{type:"button",onClick:()=>k(!j),className:"text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:j?"Type path":"Browse"}),(0,b.jsxs)("button",{type:"button",onClick:()=>void q(),disabled:o,className:"inline-flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] disabled:opacity-50",children:[(0,b.jsx)(l,{className:"w-3 h-3"}),o?"Opening...":"System Picker"]})]})]}),j?(0,b.jsx)(u.default,{initialPath:h,onSelect:a=>{i(a),k(!1)},onCancel:()=>k(!1)}):(0,b.jsx)("input",{value:h,onChange:a=>i(a.target.value),className:"input w-full text-sm font-mono",placeholder:"/path/to/folder"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,b.jsx)("button",{type:"button",onClick:async()=>{if(f.trim()&&h.trim()){n(!0);try{await d(f.trim(),h.trim())}finally{n(!1)}}},disabled:!f.trim()||!h.trim()||m,className:"btn-primary px-4 py-1.5 text-sm disabled:opacity-40",children:m?"Saving...":"Save"}),(0,b.jsx)("button",{type:"button",onClick:e,className:"px-4 py-1.5 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"})]})]})}function C({projectId:a}){let{projects:d,updateProject:e}=(0,t.useProjectsWithAgents)(),f=d.find(b=>b.id===a),[g,h]=(0,c.useState)(null),[j,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,u]=(0,c.useState)({}),[v,w]=(0,c.useState)({}),[x,C]=(0,c.useState)({}),D=f?.repos??[],E=D.find(a=>a.id===g)??null;(0,c.useEffect)(()=>{!g&&D.length>0&&h(D[0].id),g&&!D.find(a=>a.id===g)&&D.length>0&&h(D[0].id)},[D,g]),(0,c.useEffect)(()=>{let a=!1;return async function(){if(0===D.length)return u({});try{let b=await Promise.all(D.map(async a=>{var b;let c=await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(a.id)}`),d=c.ok?await c.json():{note:null};return[a.id,(b=d.note)?{id:b.id,content:b.content,created_at:b.createdAt,updated_at:b.updatedAt}:null]}));a||u(Object.fromEntries(b))}catch{a||u({})}}(),()=>{a=!0}},[D]),(0,c.useEffect)(()=>{if(!E?.path||v[E.id])return;let a=E.id,b=E.path;C(b=>({...b,[a]:!0})),fetch("/api/filesystem/analyze",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:b})}).then(a=>a.ok?a.json():null).then(b=>{b?.analysis&&w(c=>({...c,[a]:b.analysis}))}).catch(()=>{}).finally(()=>C(b=>({...b,[a]:!1})))},[E?.id,E?.path,v]);let F=(0,c.useCallback)(a=>{o(a),setTimeout(()=>o(null),2500)},[]),G=(0,c.useCallback)(()=>D.map(a=>({id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes})),[D]),H=(0,c.useCallback)(async(b,c)=>{try{await e(a,{repos:[...G(),{name:b,path:c}]}),k(!1),F("Folder added")}catch{F("Failed to add")}},[e,a,G,F]),I=(0,c.useCallback)(async(b,c)=>{if(!l)return;let d=G().map(a=>a.id===l.id?{...a,name:b,path:c}:a);try{await e(a,{repos:d}),m(null),w(a=>{let b={...a};return delete b[l.id],b}),F("Folder updated")}catch{F("Failed to update")}},[l,e,a,G,F]),J=(0,c.useCallback)(async b=>{try{await e(a,{repos:G().filter(a=>a.id!==b)}),g===b&&h(null),F("Folder removed")}catch{F("Failed to remove")}},[e,a,G,g,F]),K=(0,c.useCallback)(async(b,c)=>{r(!0);let d=G().map(a=>a.id===b?{...a,notes:c}:a);try{await e(a,{repos:d}),F("Notes saved")}catch{F("Failed to save notes")}finally{r(!1)}},[e,a,G,F]);return f?(0,b.jsxs)("div",{className:"h-full flex overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex w-72 flex-shrink-0 flex-col border-r border-[var(--border)] bg-[var(--app-shell-pane)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(i.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Folders"}),D.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-1.5 py-0.5 text-xs text-[var(--muted-foreground)]",children:D.length})]}),(0,b.jsx)("button",{type:"button",onClick:()=>{k(!0),m(null)},className:"rounded-lg p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-blue-500",title:"Add folder",children:(0,b.jsx)(p.Plus,{className:"w-4 h-4"})})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto px-2 py-2 space-y-0.5",children:[0===D.length&&!j&&(0,b.jsxs)("div",{className:"px-3 py-8 text-center",children:[(0,b.jsx)(i.FolderGit2,{className:"mx-auto mb-3 h-8 w-8 text-[var(--app-shell-soft-text)]"}),(0,b.jsx)("p",{className:"mb-1 text-sm text-[var(--muted-foreground)]",children:"No folders yet"}),(0,b.jsx)("p",{className:"mb-4 text-xs text-[var(--app-shell-soft-text)]",children:"Link local repos or project directories"}),(0,b.jsxs)("button",{type:"button",onClick:()=>k(!0),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",children:[(0,b.jsx)(p.Plus,{className:"w-3 h-3"}),"Add Folder"]})]}),D.map(a=>(0,b.jsx)(y,{repo:a,isSelected:g===a.id,onSelect:()=>{h(a.id),k(!1),m(null)}},a.id))]}),n&&(0,b.jsx)("div",{className:"border-t border-[var(--border)] px-4 py-2",children:(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n})})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,b.jsx)("div",{className:"max-w-2xl mx-auto px-6 py-6",children:j?(0,b.jsx)(A,{onAdd:H,onCancel:()=>k(!1)}):l?(0,b.jsx)(B,{repo:l,onSave:I,onCancel:()=>m(null)}):E?(0,b.jsx)(z,{repo:E,systemNote:s[E.id]??null,analysis:v[E.id]??null,analysisLoading:x[E.id]??!1,onNoteSave:K,noteSaving:q,onEdit:a=>m(a),onDelete:J}):D.length>0?(0,b.jsx)("div",{className:"flex h-64 items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Select a folder to view details"}):null})})]}):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading..."})}function D({params:a}){let{slug:d}=(0,c.use)(a),{projects:e}=(0,t.useProjectsWithAgents)(),f=e.find(a=>a.slug===d);return f?(0,b.jsx)(C,{projectId:f.id}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading..."})}a.s(["default",()=>D],524509)}];
1
+ module.exports=[524509,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(340492),e=a.i(552605),f=a.i(157633),g=a.i(736868),h=a.i(785630),i=a.i(349692),j=a.i(667597),k=a.i(353532),l=a.i(354658),m=a.i(642784),n=a.i(144462),o=a.i(697183),p=a.i(262403),q=a.i(824179),r=a.i(109467),s=a.i(446946),t=a.i(967878);function u(a,b){switch(a){case"repositories":return"Repository";case"docs":return"Doc";case"config":return"Config";case"scripts":return"Script";default:return b}}function v(a,b){return{category:a,name:b?.name??"",path:b?.path??"",purpose:b?.purpose??"",error:null,isSaving:!1}}function w(a){switch(a){case"repositories":return g.FolderGit2;case"docs":return e.FileText;case"config":return m.Settings;case"scripts":return n.TerminalSquare;default:return f.Folder}}function x({projectId:a}){let{workspace:e,entryCount:f,isLoading:m,error:n,refetch:x,createEntry:y,updateEntry:z,deleteEntry:A}=(0,r.useProjectWorkspace)(a),[B,C]=(0,c.useState)([]),[D,E]=(0,c.useState)(null),[F,G]=(0,c.useState)(v("repositories")),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(null),[L,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)(""),[P,Q]=(0,c.useState)(null),R=(0,c.useRef)(null),S=(0,s.buildWorkspaceCategoryGroups)(e,B),T=0===f&&0===B.length&&!D,U=(0,c.useCallback)((a,b="neutral")=>{Q({tone:b,message:a}),window.setTimeout(()=>Q(null),3500)},[]),V=(0,c.useCallback)(async()=>{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error("string"==typeof b.error?b.error:"Failed to open folder picker");return"string"==typeof b.path?b.path:null},[]),W=(0,c.useCallback)(()=>{E(null),G(v("repositories"))},[]),X=(0,c.useCallback)(a=>{E(a),G(v(a)),I(null),K(null)},[]),Y=(0,c.useCallback)(a=>{I(a.id),K(v(a.category,a)),E(null),G(v(a.category))},[]),Z=(0,c.useCallback)(()=>{I(null),K(null)},[]),$=(0,c.useCallback)(async()=>{let a=F.name.trim();if(!a)return void G(a=>({...a,error:"Name is required"}));G(a=>({...a,isSaving:!0,error:null}));try{await y({category:F.category,name:a,path:F.path.trim()||null,purpose:F.purpose.trim()||null}),W(),U(`Added ${a} to ${S.find(a=>a.id===F.category)?.label??"workspace map"}`,"success")}catch(a){G(b=>({...b,isSaving:!1,error:a instanceof Error?a.message:"Failed to add workspace entry"}))}},[F,W,y,S,U]),_=(0,c.useCallback)(async()=>{if(!H||!J)return;let a=J.name.trim();if(!a)return void K(a=>a?{...a,error:"Name is required"}:a);K(a=>a?{...a,isSaving:!0,error:null}:a);try{await z(H,{name:a,path:J.path.trim()||null,purpose:J.purpose.trim()||null}),Z(),U("Workspace entry updated","success")}catch(a){K(b=>({...b??v(""),isSaving:!1,error:a instanceof Error?a.message:"Failed to update workspace entry"}))}},[Z,J,H,U,z]),aa=(0,c.useCallback)(async a=>{if(window.confirm(`Delete ${a.name} from ${a.category}?`))try{await A(a.id),H===a.id&&Z(),U(`Deleted ${a.name}`,"success")}catch(a){U(a instanceof Error?a.message:"Failed to delete workspace entry","error")}},[Z,A,H,U]),ab=(0,c.useCallback)(async()=>{try{let a=await V();a&&G(b=>({...b,path:a,error:null}))}catch(a){G(b=>({...b,error:a instanceof Error?a.message:"Failed to pick folder"}))}},[V]),ac=(0,c.useCallback)(async()=>{if(J)try{let a=await V();a&&K(b=>b?{...b,path:a,error:null}:b)}catch(a){K(b=>b?{...b,error:a instanceof Error?a.message:"Failed to pick folder"}:b)}},[J,V]),ad=(0,c.useCallback)(async a=>{try{let b=await V();if(!b)return;await z(a.id,{path:b}),U(`Updated path for ${a.name}`,"success")}catch(a){U(a instanceof Error?a.message:"Failed to update path","error")}},[V,U,z]),ae=(0,c.useCallback)(()=>{let a=N.trim();if(!a)return;let b=S.find(b=>b.id.toLowerCase()===a.toLowerCase()||b.label.toLowerCase()===a.toLowerCase());if(b){O(""),M(!1),X(b.id);return}C(b=>[...b,a]),O(""),M(!1),X(a)},[N,S,X]),af=(0,c.useCallback)(a=>{C(b=>b.filter(b=>b!==a)),D===a&&W()},[D,W]),ag=(0,c.useCallback)(()=>{window.open(`/api/projects/${a}/workspace/export`,"_blank")},[a]),ah=(0,c.useCallback)(async b=>{let c=b.target.files?.[0];if(c)try{let b=await c.text(),d=await fetch(`/api/projects/${a}/workspace/import`,{method:"POST",headers:{"Content-Type":"application/x-yaml"},body:b});if(!d.ok){let a=await d.json().catch(()=>({}));throw Error("string"==typeof a.error?a.error:"Failed to import workspace YAML")}await x(),U("Imported workspace YAML","success")}catch(a){U(a instanceof Error?a.message:"Failed to import workspace YAML","error")}finally{R.current&&(R.current.value="")}},[a,x,U]);return(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:(0,b.jsxs)("div",{className:"mx-auto flex max-w-5xl flex-col gap-6 px-6 py-8",children:[(0,b.jsxs)("section",{className:"rounded-3xl border border-[var(--card-border)] bg-[var(--card-bg)] p-6 shadow-sm",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,b.jsxs)("div",{className:"max-w-2xl",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center gap-2 text-[11px] font-semibold uppercase tracking-[0.2em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(g.FolderGit2,{className:"h-3.5 w-3.5"}),"Project Setup"]}),(0,b.jsx)("h1",{className:"text-2xl font-semibold text-[var(--foreground)]",children:"Workspace Map"}),(0,b.jsx)("p",{className:"mt-2 text-sm leading-6 text-[var(--muted-foreground)]",children:"Map your project's folders so agents know where things live. Group repositories, docs, config, and scripts into a workspace that people and automation can navigate without guesswork."})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>M(a=>!a),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(h.FolderPlus,{className:"h-4 w-4"}),"Add Category"]}),(0,b.jsxs)("button",{type:"button",onClick:ag,className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(d.Download,{className:"h-4 w-4"}),"Export YAML"]}),(0,b.jsxs)("label",{className:"inline-flex cursor-pointer items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(p.Upload,{className:"h-4 w-4"}),"Import YAML",(0,b.jsx)("input",{ref:R,type:"file",accept:".yaml,.yml",onChange:ah,className:"hidden"})]})]})]}),L&&(0,b.jsxs)("div",{className:"mt-4 flex flex-col gap-2 rounded-2xl border border-[var(--border)] bg-[var(--secondary)]/30 p-4 md:flex-row md:items-center",children:[(0,b.jsx)("input",{value:N,onChange:a=>O(a.target.value),placeholder:"Custom category name",className:"flex-1 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)]"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:ae,disabled:!N.trim(),className:"rounded-xl bg-[var(--foreground)] px-4 py-2 text-sm font-medium text-[var(--background)] disabled:opacity-40",children:"Create Category"}),(0,b.jsx)("button",{type:"button",onClick:()=>{M(!1),O("")},className:"rounded-xl px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"})]})]}),P&&(0,b.jsx)("p",{className:`mt-4 text-sm ${"error"===P.tone?"text-[var(--destructive)]":"success"===P.tone?"text-emerald-500":"text-[var(--muted-foreground)]"}`,children:P.message})]}),m&&(0,b.jsx)("section",{className:"rounded-3xl border border-[var(--card-border)] bg-[var(--card-bg)] p-8",children:(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"}),"Loading workspace map..."]})}),!m&&n&&(0,b.jsx)("section",{className:"rounded-3xl border border-[var(--card-border)] bg-[var(--card-bg)] p-8",children:(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:n.message||"Failed to load workspace map"}),(0,b.jsx)("button",{type:"button",onClick:()=>void x(),className:"rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:"Try Again"})]})}),!m&&!n&&T&&(0,b.jsx)("section",{className:"rounded-3xl border border-dashed border-[var(--border)] bg-[var(--card-bg)] p-10 text-center",children:(0,b.jsxs)("div",{className:"mx-auto max-w-2xl",children:[(0,b.jsx)("h2",{className:"text-xl font-semibold text-[var(--foreground)]",children:"Tell your agents where things live."}),(0,b.jsx)("p",{className:"mt-3 text-sm leading-6 text-[var(--muted-foreground)]",children:"Add folders to your workspace so agents can find and work in the right places. Start with a repository, docs, or config, or import a shared workspace definition."}),(0,b.jsxs)("div",{className:"mt-6 flex flex-wrap items-center justify-center gap-3",children:[t.DEFAULT_WORKSPACE_CATEGORIES.slice(0,3).map(a=>{let c=w(a.id);return(0,b.jsxs)("button",{type:"button",onClick:()=>X(a.id),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-4 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(c,{className:"h-4 w-4"}),"Add ",u(a.id,a.label)]},a.id)}),(0,b.jsxs)("label",{className:"inline-flex cursor-pointer items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-4 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(p.Upload,{className:"h-4 w-4"}),"Import YAML",(0,b.jsx)("input",{type:"file",accept:".yaml,.yml",onChange:ah,className:"hidden"})]})]})]})}),!m&&!n&&!T&&(0,b.jsx)("div",{className:"space-y-4",children:S.map(a=>{let c=w(a.id);return(0,b.jsxs)("section",{className:"rounded-3xl border border-[var(--card-border)] bg-[var(--card-bg)] p-6",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-4 border-b border-[var(--border)] pb-4 md:flex-row md:items-start md:justify-between",children:[(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("div",{className:"rounded-2xl border border-[var(--border)] bg-[var(--secondary)]/40 p-3",children:(0,b.jsx)(c,{className:"h-5 w-5 text-[var(--muted-foreground)]"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-[var(--foreground)]",children:a.label}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:a.entries.length>0?`${a.entries.length} location${1===a.entries.length?"":"s"} mapped`:a.isPreset?`No ${a.label.toLowerCase()} mapped yet`:"Custom category ready for entries"})]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[!a.isPreset&&a.isEmpty&&(0,b.jsxs)("button",{type:"button",onClick:()=>af(a.id),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]",children:[(0,b.jsx)(o.Trash2,{className:"h-4 w-4"}),"Remove Empty Category"]}),(0,b.jsxs)("button",{type:"button",onClick:()=>X(a.id),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(k.Plus,{className:"h-4 w-4"}),"Add to ",a.label]})]})]}),(0,b.jsxs)("div",{className:"mt-4 space-y-3",children:[0===a.entries.length&&D!==a.id&&(0,b.jsx)("p",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-5 text-sm text-[var(--muted-foreground)]",children:a.isPreset?`Start this section by adding a ${u(a.id,a.label).toLowerCase()} and selecting a folder on disk.`:"This custom category is empty until you add its first folder."}),a.entries.map(a=>{let c=H===a.id&&J;return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--border)] bg-[var(--secondary)]/20 p-4",children:[!c&&(0,b.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"flex items-center gap-2",children:(0,b.jsx)("p",{className:"text-base font-medium text-[var(--foreground)]",children:a.name})}),(0,b.jsx)("p",{className:"mt-2 break-all font-mono text-xs text-[var(--muted-foreground)]",children:a.path||"No path selected yet"}),(0,b.jsx)("p",{className:"mt-3 text-sm leading-6 text-[var(--muted-foreground)]",children:a.purpose||"No purpose documented yet."})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>void ad(a),className:"rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:"Browse"}),(0,b.jsxs)("button",{type:"button",onClick:()=>Y(a),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(j.Pencil,{className:"h-4 w-4"}),"Edit"]}),(0,b.jsxs)("button",{type:"button",onClick:()=>void aa(a),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]",children:[(0,b.jsx)(o.Trash2,{className:"h-4 w-4"}),"Delete"]})]})]}),c&&J&&(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:J.name,onChange:a=>K(b=>b?{...b,name:a.target.value,error:null}:b),className:"w-full rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)]"})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{value:J.path,onChange:a=>K(b=>b?{...b,path:a.target.value,error:null}:b),className:"w-full rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)]",placeholder:"/Users/you/Projects/repo"}),(0,b.jsx)("button",{type:"button",onClick:()=>void ac(),className:"rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:"Browse"})]})]})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Purpose"}),(0,b.jsx)("textarea",{value:J.purpose,onChange:a=>K(b=>b?{...b,purpose:a.target.value,error:null}:b),className:"min-h-24 w-full rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-3 text-sm text-[var(--foreground)]",placeholder:"What should agents or teammates expect in this folder?"})]}),J.error&&(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:J.error}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>void _(),disabled:J.isSaving,className:"inline-flex items-center gap-2 rounded-xl bg-[var(--foreground)] px-4 py-2 text-sm font-medium text-[var(--background)] disabled:opacity-40",children:[J.isSaving?(0,b.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(l.Save,{className:"h-4 w-4"}),"Save Changes"]}),(0,b.jsxs)("button",{type:"button",onClick:Z,className:"inline-flex items-center gap-2 rounded-xl px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(q.X,{className:"h-4 w-4"}),"Cancel"]})]})]})]},a.id)}),D===a.id&&(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--border)] bg-[var(--background)] p-4",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center gap-2",children:[(0,b.jsx)(k.Plus,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsxs)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",a.label]})]}),(0,b.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:F.name,onChange:a=>G(b=>({...b,name:a.target.value,error:null})),className:"w-full rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)]",placeholder:"backend, handbook, deploy"})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{value:F.path,onChange:a=>G(b=>({...b,path:a.target.value,error:null})),className:"w-full rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)]",placeholder:"/Users/you/Projects/repo"}),(0,b.jsx)("button",{type:"button",onClick:()=>void ab(),className:"rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:"Browse"})]})]})]}),(0,b.jsxs)("label",{className:"mt-3 block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Purpose"}),(0,b.jsx)("textarea",{value:F.purpose,onChange:a=>G(b=>({...b,purpose:a.target.value,error:null})),className:"min-h-24 w-full rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-3 py-3 text-sm text-[var(--foreground)]",placeholder:"Describe what lives here and why it matters."})]}),F.error&&(0,b.jsx)("p",{className:"mt-3 text-sm text-[var(--destructive)]",children:F.error}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>void $(),disabled:F.isSaving,className:"inline-flex items-center gap-2 rounded-xl bg-[var(--foreground)] px-4 py-2 text-sm font-medium text-[var(--background)] disabled:opacity-40",children:[F.isSaving?(0,b.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(l.Save,{className:"h-4 w-4"}),"Save Entry"]}),(0,b.jsxs)("button",{type:"button",onClick:W,className:"inline-flex items-center gap-2 rounded-xl px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(q.X,{className:"h-4 w-4"}),"Cancel"]})]})]})]})]},a.id)})})]})})}var y=a.i(830284);function z({params:a}){let{slug:d}=(0,c.use)(a),{projects:e}=(0,y.useProjectsWithAgents)(),f=e.find(a=>a.slug===d);return f?(0,b.jsx)(x,{projectId:f.id}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading..."})}a.s(["default",()=>z],524509)}];
2
2
 
3
3
  //# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_folders_page_tsx_72fb68e5._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[657613,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(516909),e=a.i(285320),f=a.i(970393),g=a.i(508869),h=a.i(523321),i=a.i(166621),j=a.i(654340),k=a.i(296037);let l=new Set(["spawning","running"]);function m(a,b){if(!a)return{name:"Unknown",color:"#6B7280"};let c=b.find(b=>b.id===a);return c?{name:c.name,color:c.color}:{name:a.slice(0,8),color:"#6B7280"}}var n=a.i(529889),o=a.i(8e4);let p={Chat:"bg-blue-500/15 text-blue-400","Scheduled Task":"bg-amber-500/15 text-amber-400",Automation:"bg-purple-500/15 text-purple-400",Daemon:"bg-zinc-500/15 text-zinc-400"};function q({status:a}){return"running"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse shrink-0"}):"queued"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-amber-400 shrink-0"}):"failed"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-red-400 shrink-0"}):(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-zinc-500 shrink-0"})}function r({item:a}){return(0,b.jsxs)("div",{className:"flex items-center gap-2.5 px-3 py-2 hover:bg-[var(--app-shell-subtle)] transition-colors rounded-md",children:[(0,b.jsx)("img",{src:(0,o.agentAvatarUrl)(a.agentId??a.id,20,a.agentColor),alt:"",className:"h-5 w-5 rounded-full shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(q,{status:a.status}),(0,b.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)] truncate",children:a.agentName})]}),(0,b.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate mt-0.5",children:a.title})]}),(0,b.jsxs)("div",{className:"flex flex-col items-end gap-0.5 shrink-0",children:[(0,b.jsx)("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-medium ${p[a.source]??p.Daemon}`,children:a.source}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:function(a){let b=Date.now()-a;if(b<6e4)return"just now";let c=Math.floor(b/6e4);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);return`${d}h ago`}(a.startedAt)})]})]})}function s({items:a,onClose:d}){let e=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{e.current&&!e.current.contains(a.target)&&d()},b=setTimeout(()=>document.addEventListener("pointerdown",a),0);return()=>{clearTimeout(b),document.removeEventListener("pointerdown",a)}},[d]);let f=a.filter(a=>"running"===a.status||"queued"===a.status),g=a.filter(a=>"running"!==a.status&&"queued"!==a.status);return(0,b.jsx)("div",{ref:e,className:"absolute top-full right-0 z-50 mt-1.5 w-80 max-h-96 overflow-y-auto rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg",children:0===a.length?(0,b.jsx)("div",{className:"flex flex-col items-center justify-center py-8 px-4",children:(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"No recent activity"})}):(0,b.jsxs)("div",{className:"py-1.5",children:[f.length>0&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-3 py-1.5",children:(0,b.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Active Now"})}),f.map(a=>(0,b.jsx)(r,{item:a},a.id))]}),g.length>0&&(0,b.jsxs)("div",{children:[f.length>0&&(0,b.jsx)("div",{className:"mx-3 my-1 border-t border-[var(--app-shell-border)]"}),(0,b.jsx)("div",{className:"px-3 py-1.5",children:(0,b.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Recent"})}),g.map(a=>(0,b.jsx)(r,{item:a},a.id))]})]})})}function t({projectId:a,participants:d}){let{isTouchLayout:e}=(0,n.useInputCapabilities)(),{items:f,activeCount:g}=function(a,b){let[d,e]=(0,c.useState)([]),f=(0,c.useRef)(null),g=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/processes");if(!a.ok)return;let b=await a.json();e(b)}catch{}},[]);(0,c.useEffect)(()=>(g(),f.current=setInterval(g,5e3),()=>{f.current&&clearInterval(f.current)}),[g]);let{jobs:h}=(0,k.usePromptJobs)(a),{automations:i}=function(){let[a,b]=(0,c.useState)([]),[d,e]=(0,c.useState)(!0),[f,g]=(0,c.useState)(null),h=(0,c.useCallback)(async()=>{try{e(!0);let a=await fetch("/api/automations");if(!a.ok)throw Error(`Failed to fetch: ${a.status}`);let c=await a.json();b(c.automations??[]),g(null)}catch(a){g(a instanceof Error?a.message:String(a))}finally{e(!1)}},[]);(0,c.useEffect)(()=>{h();let a=setInterval(h,1e4);return()=>clearInterval(a)},[h]);let i=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pause"})});return b.ok&&await h(),b.ok},[h]),j=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resume"})});return b.ok&&await h(),b.ok},[h]),k=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"DELETE"});return b.ok&&await h(),b.ok},[h]),l=(0,c.useCallback)(async a=>{let b=await fetch("/api/schedules/poll",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:a})});if(b.ok)return await h(),{ok:!0};let c=await b.json().catch(()=>({}));return await h(),{ok:!1,skipReason:c.skipReason}},[h]);return{automations:a,loading:d,error:f,refresh:h,pauseSchedule:i,resumeSchedule:j,deleteSchedule:k,runNow:l}}(),j=(0,c.useMemo)(()=>{let c=Date.now()-36e5,e=[];for(let g of d){var f;if(a&&g.projectSlug!==a)continue;let d=(f=g.state,l.has(f)?"running":"done"===f?"completed":"error"===f||"killed"===f?"failed":"completed");if("running"!==d&&g.startedAt<c)continue;let{name:h,color:i}=m(g.agentId,b);e.push({id:`proc-${g.id}`,agentId:g.agentId,agentName:h,agentColor:i,type:g.threadId?"chat-run":"process",title:g.threadId?"Chat response":"Agent process",source:g.threadId?"Chat":"Daemon",status:d,startedAt:g.startedAt,durationMs:g.lastActivity-g.startedAt})}for(let d of h){if(a&&d.projectId!==a)continue;let f="running"===d.lastOutcome||"queued"===d.lastOutcome,g=d.lastRunAt??0;if(!f&&g<c)continue;let h=f?"queued"===d.lastOutcome?"queued":"running":"success"===d.lastOutcome?"completed":"failed"===d.lastOutcome?"failed":"completed",{name:i,color:j}=m(d.agentId,b);e.push({id:`job-${d.id}`,agentId:d.agentId,agentName:i,agentColor:j,type:"prompt-job",title:d.name,source:"Scheduled Task",status:h,startedAt:g,durationMs:null})}for(let b of i){if(a&&b.projectId!==a)continue;let d="running"===b.executionState,f=new Date(b.updatedAt).getTime();(d||!(f<c))&&e.push({id:`auto-${b.taskId}`,agentId:null,agentName:b.title,agentColor:"#7C3AED",type:"automation",title:b.title,source:"Automation",status:d?"running":"completed",startedAt:f,durationMs:null})}return e.sort((a,b)=>{let c=+("running"===a.status||"queued"===a.status),d=+("running"===b.status||"queued"===b.status);return c!==d?d-c:b.startedAt-a.startedAt}),e},[d,h,i,b,a]),n=(0,c.useMemo)(()=>j.filter(a=>"running"===a.status||"queued"===a.status).length,[j]);return{items:j,activeCount:n}}(a,d),[h,i]=(0,c.useState)(!1),o=(0,c.useCallback)(()=>i(!1),[]);return(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>i(a=>!a),className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${e?"h-9 w-9":"h-7 w-7"}`,title:"Activity stream","aria-label":"Activity stream",children:[(0,b.jsx)(j.Activity,{className:e?"h-4 w-4":"h-3.5 w-3.5"}),g>0&&(0,b.jsx)("span",{className:"absolute top-0 right-0 h-2 w-2 rounded-full bg-emerald-400 animate-pulse"})]}),h&&(0,b.jsx)(s,{items:f,onClose:o})]})}var u=a.i(971382);let v=(0,a.i(831709).default)("clock-3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6h4",key:"135r8i"}]]);var w=a.i(552605),x=a.i(349692),y=a.i(737313),z=a.i(542341),A=a.i(489461),B=a.i(985339),C=a.i(824179);function D({projectId:a}){let{isTouchLayout:e}=(0,n.useInputCapabilities)(),f=(0,d.useRouter)(),g=(0,d.usePathname)(),h=(0,c.useRef)(null),i=(0,c.useRef)(null),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)([]),[o,p]=(0,c.useState)(0),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(0),[H,I]=(0,c.useState)(new Set),J=j.trim(),K=(0,c.useMemo)(()=>l.map(a=>({...a,visibleResults:H.has(a.id)?a.results:a.results.slice(0,3),hiddenCount:Math.max(0,a.results.length-3)})),[H,l]),L=(0,c.useMemo)(()=>K.flatMap(a=>a.visibleResults),[K]),M=(0,c.useMemo)(()=>L.map(a=>`${a.kind}:${a.id}`),[L]),N=(0,c.useCallback)(()=>{k(""),m([]),p(0),t(null),r(!1),G(0)},[]),O=(0,c.useCallback)(a=>{N(),E(!1),f.push(a.href)},[N,f]);(0,c.useEffect)(()=>{N(),E(!1),I(new Set)},[N,g]),(0,c.useEffect)(()=>{let a=a=>{h.current?.contains(a.target)||E(!1)};return window.addEventListener("pointerdown",a),()=>window.removeEventListener("pointerdown",a)},[]),(0,c.useEffect)(()=>{let a=a=>{(a.metaKey||a.ctrlKey)&&"k"===a.key.toLowerCase()&&(a.preventDefault(),i.current?.focus(),i.current?.select())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[]),(0,c.useEffect)(()=>{D&&G(0)},[D,l]),(0,c.useEffect)(()=>{if(!J||J.length<2){m([]),p(0),t(null),r(!1),I(new Set);return}let b=!1;r(!0);let c=window.setTimeout(()=>{(async()=>{try{let c=new URLSearchParams({q:J}),d=await fetch(`/api/projects/${encodeURIComponent(a)}/search?${c.toString()}`,{cache:"no-store"}),e=await d.json().catch(()=>null);if(b)return;if(!d.ok){let a=e&&"object"==typeof e&&"error"in e?String(e.error):"Search failed";m([]),p(0),t(a);return}m(Array.isArray(e.sections)?e.sections:[]),p("number"==typeof e.total?e.total:0),t(null),I(new Set)}catch(a){if(b)return;console.error("Project search failed",a),m([]),p(0),t("Search failed")}finally{b||r(!1)}})()},220);return()=>{b=!0,window.clearTimeout(c)}},[J,a]);let P=D&&(J.length>0||q||null!==s),Q=L.length>0?L[Math.max(0,Math.min(F,L.length-1))]:null,R=(0,c.useCallback)(a=>{I(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);return(0,b.jsxs)("div",{ref:h,className:"relative w-full max-w-xl",children:[(0,b.jsxs)("div",{className:"group/search relative",children:[(0,b.jsx)(z.Search,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--app-shell-soft-text)] transition-colors group-focus-within/search:text-[var(--primary)]",strokeWidth:1.8}),(0,b.jsx)("input",{ref:i,type:"text",value:j,onFocus:()=>E(!0),onChange:a=>{k(a.target.value),E(!0)},onKeyDown:a=>{if("ArrowDown"===a.key&&L.length>0){a.preventDefault(),G(a=>(a+1)%L.length);return}if("ArrowUp"===a.key&&L.length>0){a.preventDefault(),G(a=>(a-1+L.length)%L.length);return}if("Enter"===a.key&&Q){a.preventDefault(),O(Q);return}"Escape"===a.key&&(J?N():(E(!1),i.current?.blur()))},placeholder:"Search objectives, tickets, tasks, teams, agents, and chat…",className:"h-8 w-full rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] pl-9 pr-16 text-xs font-medium text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)] transition-all hover:border-[var(--app-shell-border-strong)] focus:border-[var(--primary)] focus:ring-2 focus:ring-[var(--ring)]"}),J?(0,b.jsxs)("div",{className:"absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-bold text-[var(--muted-foreground)]",children:q?"…":o}),(0,b.jsx)("button",{type:"button",onClick:()=>{N(),i.current?.focus()},className:"inline-flex h-5 w-5 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]","aria-label":"Clear search",children:(0,b.jsx)(C.X,{className:"h-3.5 w-3.5"})})]}):e?null:(0,b.jsx)("kbd",{className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-1.5 py-0.5 font-sans text-[10px] font-bold text-[var(--app-shell-soft-text)]",children:"⌘K"})]}),P?(0,b.jsx)("div",{className:"absolute left-0 right-0 top-[calc(100%+0.5rem)] z-50 overflow-hidden rounded-2xl border border-[var(--app-shell-border)] bg-[var(--app-shell-surface)] shadow-2xl shadow-black/20",children:(0,b.jsxs)("div",{className:"max-h-[28rem] overflow-y-auto p-2",children:[J.length<2?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"Keep typing to search across project entities."}):null,q?(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(x.Loader2,{className:"h-4 w-4 animate-spin"}),"Searching this project…"]}):null,!q&&s?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-rose-500",children:s}):null,q||s||!(J.length>=2)||0!==l.length?null:(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"No matches in this project."}),!q&&!s&&K.map(a=>(0,b.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 px-3 pb-1 pt-2",children:[(0,b.jsxs)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--app-shell-soft-text)]",children:[a.label,(0,b.jsx)("span",{className:"ml-1.5 text-[9px] text-[var(--muted-foreground)]",children:a.results.length})]}),a.results.length>3?(0,b.jsx)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onClick:()=>R(a.id),className:"text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:H.has(a.id)?"Collapse":`Show ${a.hiddenCount} more`}):null]}),(0,b.jsx)("div",{className:"space-y-1",children:a.visibleResults.map(a=>{let c,d,e=`${a.kind}:${a.id}`,f=M.findIndex(a=>a===e),g=f===F,h=function(a){switch(a){case"objective":return A.Target;case"linear_issue":return w.FileText;case"scheduled_task":return v;case"team":return B.Users;case"agent":return u.Bot;case"chat_thread":case"chat_message":return y.MessageSquare;default:return z.Search}}(a.kind);return(0,b.jsxs)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onMouseEnter:()=>G(f),onClick:()=>O(a),className:`flex w-full items-start gap-3 rounded-xl px-3 py-2.5 text-left transition-colors ${g?"bg-[var(--app-shell-subtle)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,children:[(0,b.jsx)("span",{className:"mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--app-shell-muted)]",children:(0,b.jsx)(h,{className:"h-3.5 w-3.5",strokeWidth:1.75})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.title}),(0,b.jsx)("span",{className:"shrink-0 rounded-full bg-[var(--app-shell-subtle)] px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[var(--app-shell-soft-text)]",children:a.label})]}),a.context?(0,b.jsx)("span",{className:"mt-0.5 block truncate text-xs text-[var(--muted-foreground)]",children:a.context}):null,a.description?(0,b.jsx)("span",{className:"mt-1 block text-xs leading-5 text-[var(--muted-foreground)]",children:(c=a.description.split(/(<\/?mark>)/g),d=!1,c.map((a,c)=>"<mark>"===a?(d=!0,null):"</mark>"===a?(d=!1,null):a?d?(0,b.jsx)("mark",{className:"rounded bg-amber-200/80 px-0.5 text-inherit",children:a},`mark-${c}`):(0,b.jsx)("span",{children:a},`text-${c}`):null))}):null]})]},e)})})]},a.id))]})}):null]})}var E=a.i(550158),F=a.i(830284),G=a.i(111013),H=a.i(227444);let I={home:!0,threads:!0,terminal:!0,objectives:!0,objectivesIsNew:!1,tracking:!0,teams:!0,folders:!0,scheduledTasks:!0,envVars:!0,notifications:!0};var J=a.i(455106),K=a.i(427411);function L({children:a,params:j}){let{slug:k}=(0,c.use)(j),{isTouchLayout:l}=(0,n.useInputCapabilities)(),m=(0,d.useRouter)(),o=(0,d.usePathname)(),{projects:p,isLoading:q,createProject:r,updateProject:s,deleteProject:u,addAgent:v,removeAgent:w}=(0,F.useProjectsWithAgents)(),{threads:x,isLoading:y,isCreating:z,deletingThreadId:A,renamingThreadId:B,isRestoringActiveThread:C,createThread:L,renameThread:M,deleteThread:N}=(0,G.useThreadState)(),[O,P]=(0,c.useState)([]),[Q,R]=(0,c.useState)(!1),[S,T]=(0,c.useState)(368),[U,V]=(0,c.useState)(()=>"light");(0,c.useEffect)(()=>{R((0,J.loadWorkspaceSidebarVisible)()),T((0,K.loadWorkspaceWidth)()||368)},[]),(0,c.useEffect)(()=>{},[U]),(0,c.useEffect)(()=>{fetch("/api/participants").then(a=>a.json()).then(a=>P(Array.isArray(a)?a:[])).catch(()=>P([]))},[]);let W=(0,c.useMemo)(()=>p.find(a=>a.slug===k)??null,[p,k]),X=(0,c.useMemo)(()=>{let a=o.match(/\/projects\/[^/]+\/thread\/([^/]+)/);return a?.[1]?decodeURIComponent(a[1]):W?.thread_ids[0]??null},[W?.thread_ids,o]),Y=(0,c.useMemo)(()=>o.includes("/linear")?"linear":o.includes("/automations")?"automations":o.includes("/thread/")?"thread":o.includes("/objectives")?"objectives":o.includes("/teams")?"teams":o.includes("/folders")?"folders":o.includes("/env-vars")?"env-vars":o.includes("/notifications")?"notifications":o.includes("/terminal")?"terminal":"home",[o]),{show:Z,trackerConnections:$}=function(a){let{connections:b,loading:d}=(0,H.useTrackerConnections)(a?.id??null);return(0,c.useMemo)(()=>{let a=b.map(a=>({type:a.type,connected:a.connected,connectedAt:a.connectedAt}));return d?{stage:"stage1",loading:!0,show:{...I},trackerConnections:[]}:{stage:"stage4",loading:!1,show:{...I},trackerConnections:a}},[d,b])}(W),_=()=>{let a=!Q;R(a),(0,J.persistWorkspaceSidebarVisible)(a)},aa=(0,c.useCallback)(a=>{T(a),(0,K.persistWorkspaceWidth)(a)},[]);return q?(0,b.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}):W?(0,b.jsxs)("div",{className:"flex h-dvh min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,b.jsx)(E.WorkspaceSidebar,{threads:x,participants:O,activeThreadId:X,isLoading:y,isRestoringActiveThread:C,isCreating:z,deletingThreadId:A,renamingThreadId:B,onSelectThread:a=>m.push(`/projects/${k}/thread/${encodeURIComponent(a)}`),onCreateThread:L,onRenameThread:M,onDeleteThread:N,visible:Q,onToggle:_,width:S,onWidthChange:aa,projects:p,onCreateProject:r,onUpdateProject:s,onDeleteProject:u,onAddAgentToProject:v,onRemoveAgentFromProject:w,activeProjectId:W.id,activeProjectView:Y,stageShow:Z,trackerConnections:$,onUpdateParticipant:async a=>{let b=await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error("Failed to update agent");let c=await b.json();P(a=>a.map(a=>a.id===c.id?c:a))},onSelectProject:a=>{let b=p.find(b=>b.id===a);b&&m.push(`/projects/${b.slug}`)}}),(0,b.jsxs)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden",children:[(0,b.jsxs)("div",{className:"desktop-titlebar flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0 flex-shrink-0",children:[!Q&&(0,b.jsx)("button",{type:"button",onClick:_,className:"inline-flex h-9 w-9 items-center justify-center rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",title:"Show sidebar","aria-label":"Show sidebar",children:(0,b.jsx)(f.PanelLeftOpen,{className:"h-4 w-4"})}),o!==`/projects/${k}`&&(0,b.jsx)("button",{type:"button",onClick:()=>m.back(),className:"p-1 -ml-1 rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors",children:(0,b.jsx)(e.ArrowLeft,{className:"w-4 h-4"})}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}`),className:`text-xs transition-colors ${"home"===Y?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:W.name}),"home"!==Y&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}/${"thread"===Y?"":Y}`),className:"text-xs text-[var(--foreground)] hover:text-[var(--muted-foreground)] transition-colors",children:{objectives:"Objectives",teams:"Teams",folders:"Folders","env-vars":"Environment Variables",notifications:"Notifications",linear:"Tasks",automations:"Scheduled Jobs",thread:"Chat",terminal:"Terminal"}[Y]??Y}),(0,b.jsx)("span",{id:"topbar-breadcrumb",className:"contents"})]})]}),(0,b.jsx)("div",{className:"flex-1 flex justify-center min-w-0 px-4",children:(0,b.jsx)(D,{projectId:W.id})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,b.jsx)(i.StatusIndicator,{}),(0,b.jsx)(t,{projectId:W.id,participants:O}),(0,b.jsx)("button",{type:"button",onClick:()=>V(a=>"dark"===a?"light":"dark"),"aria-label":"dark"===U?"Switch to light theme":"Switch to dark theme",title:"dark"===U?"Switch to light theme":"Switch to dark theme",className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${l?"h-9 w-9":"h-7 w-7"}`,children:"dark"===U?(0,b.jsx)(g.Sun,{className:l?"h-4 w-4":"h-3.5 w-3.5"}):(0,b.jsx)(h.Moon,{className:l?"h-4 w-4":"h-3.5 w-3.5"})})]})]}),a]})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,b.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,b.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",k,"” does not exist or you do not have access to it."]}),(0,b.jsx)("button",{onClick:()=>m.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]})}function M({children:a,params:d}){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading project…"}),children:(0,b.jsx)(L,{params:d,children:a})})}a.s(["default",()=>M],657613)}];
1
+ module.exports=[657613,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(516909),e=a.i(285320),f=a.i(970393),g=a.i(508869),h=a.i(523321),i=a.i(166621),j=a.i(654340),k=a.i(296037);let l=new Set(["spawning","running"]);function m(a,b){if(!a)return{name:"Unknown",color:"#6B7280"};let c=b.find(b=>b.id===a);return c?{name:c.name,color:c.color}:{name:a.slice(0,8),color:"#6B7280"}}var n=a.i(529889),o=a.i(8e4);let p={Chat:"bg-blue-500/15 text-blue-400","Scheduled Task":"bg-amber-500/15 text-amber-400",Automation:"bg-purple-500/15 text-purple-400",Daemon:"bg-zinc-500/15 text-zinc-400"};function q({status:a}){return"running"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse shrink-0"}):"queued"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-amber-400 shrink-0"}):"failed"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-red-400 shrink-0"}):(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-zinc-500 shrink-0"})}function r({item:a}){return(0,b.jsxs)("div",{className:"flex items-center gap-2.5 px-3 py-2 hover:bg-[var(--app-shell-subtle)] transition-colors rounded-md",children:[(0,b.jsx)("img",{src:(0,o.agentAvatarUrl)(a.agentId??a.id,20,a.agentColor),alt:"",className:"h-5 w-5 rounded-full shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(q,{status:a.status}),(0,b.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)] truncate",children:a.agentName})]}),(0,b.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate mt-0.5",children:a.title})]}),(0,b.jsxs)("div",{className:"flex flex-col items-end gap-0.5 shrink-0",children:[(0,b.jsx)("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-medium ${p[a.source]??p.Daemon}`,children:a.source}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:function(a){let b=Date.now()-a;if(b<6e4)return"just now";let c=Math.floor(b/6e4);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);return`${d}h ago`}(a.startedAt)})]})]})}function s({items:a,onClose:d}){let e=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{e.current&&!e.current.contains(a.target)&&d()},b=setTimeout(()=>document.addEventListener("pointerdown",a),0);return()=>{clearTimeout(b),document.removeEventListener("pointerdown",a)}},[d]);let f=a.filter(a=>"running"===a.status||"queued"===a.status),g=a.filter(a=>"running"!==a.status&&"queued"!==a.status);return(0,b.jsx)("div",{ref:e,className:"absolute top-full right-0 z-50 mt-1.5 w-80 max-h-96 overflow-y-auto rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg",children:0===a.length?(0,b.jsx)("div",{className:"flex flex-col items-center justify-center py-8 px-4",children:(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"No recent activity"})}):(0,b.jsxs)("div",{className:"py-1.5",children:[f.length>0&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-3 py-1.5",children:(0,b.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Active Now"})}),f.map(a=>(0,b.jsx)(r,{item:a},a.id))]}),g.length>0&&(0,b.jsxs)("div",{children:[f.length>0&&(0,b.jsx)("div",{className:"mx-3 my-1 border-t border-[var(--app-shell-border)]"}),(0,b.jsx)("div",{className:"px-3 py-1.5",children:(0,b.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Recent"})}),g.map(a=>(0,b.jsx)(r,{item:a},a.id))]})]})})}function t({projectId:a,participants:d}){let{isTouchLayout:e}=(0,n.useInputCapabilities)(),{items:f,activeCount:g}=function(a,b){let[d,e]=(0,c.useState)([]),f=(0,c.useRef)(null),g=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/processes");if(!a.ok)return;let b=await a.json();e(b)}catch{}},[]);(0,c.useEffect)(()=>(g(),f.current=setInterval(g,5e3),()=>{f.current&&clearInterval(f.current)}),[g]);let{jobs:h}=(0,k.usePromptJobs)(a),{automations:i}=function(){let[a,b]=(0,c.useState)([]),[d,e]=(0,c.useState)(!0),[f,g]=(0,c.useState)(null),h=(0,c.useCallback)(async()=>{try{e(!0);let a=await fetch("/api/automations");if(!a.ok)throw Error(`Failed to fetch: ${a.status}`);let c=await a.json();b(c.automations??[]),g(null)}catch(a){g(a instanceof Error?a.message:String(a))}finally{e(!1)}},[]);(0,c.useEffect)(()=>{h();let a=setInterval(h,1e4);return()=>clearInterval(a)},[h]);let i=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pause"})});return b.ok&&await h(),b.ok},[h]),j=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resume"})});return b.ok&&await h(),b.ok},[h]),k=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"DELETE"});return b.ok&&await h(),b.ok},[h]),l=(0,c.useCallback)(async a=>{let b=await fetch("/api/schedules/poll",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:a})});if(b.ok)return await h(),{ok:!0};let c=await b.json().catch(()=>({}));return await h(),{ok:!1,skipReason:c.skipReason}},[h]);return{automations:a,loading:d,error:f,refresh:h,pauseSchedule:i,resumeSchedule:j,deleteSchedule:k,runNow:l}}(),j=(0,c.useMemo)(()=>{let c=Date.now()-36e5,e=[];for(let g of d){var f;if(a&&g.projectSlug!==a)continue;let d=(f=g.state,l.has(f)?"running":"done"===f?"completed":"error"===f||"killed"===f?"failed":"completed");if("running"!==d&&g.startedAt<c)continue;let{name:h,color:i}=m(g.agentId,b);e.push({id:`proc-${g.id}`,agentId:g.agentId,agentName:h,agentColor:i,type:g.threadId?"chat-run":"process",title:g.threadId?"Chat response":"Agent process",source:g.threadId?"Chat":"Daemon",status:d,startedAt:g.startedAt,durationMs:g.lastActivity-g.startedAt})}for(let d of h){if(a&&d.projectId!==a)continue;let f="running"===d.lastOutcome||"queued"===d.lastOutcome,g=d.lastRunAt??0;if(!f&&g<c)continue;let h=f?"queued"===d.lastOutcome?"queued":"running":"success"===d.lastOutcome?"completed":"failed"===d.lastOutcome?"failed":"completed",{name:i,color:j}=m(d.agentId,b);e.push({id:`job-${d.id}`,agentId:d.agentId,agentName:i,agentColor:j,type:"prompt-job",title:d.name,source:"Scheduled Task",status:h,startedAt:g,durationMs:null})}for(let b of i){if(a&&b.projectId!==a)continue;let d="running"===b.executionState,f=new Date(b.updatedAt).getTime();(d||!(f<c))&&e.push({id:`auto-${b.taskId}`,agentId:null,agentName:b.title,agentColor:"#7C3AED",type:"automation",title:b.title,source:"Automation",status:d?"running":"completed",startedAt:f,durationMs:null})}return e.sort((a,b)=>{let c=+("running"===a.status||"queued"===a.status),d=+("running"===b.status||"queued"===b.status);return c!==d?d-c:b.startedAt-a.startedAt}),e},[d,h,i,b,a]),n=(0,c.useMemo)(()=>j.filter(a=>"running"===a.status||"queued"===a.status).length,[j]);return{items:j,activeCount:n}}(a,d),[h,i]=(0,c.useState)(!1),o=(0,c.useCallback)(()=>i(!1),[]);return(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>i(a=>!a),className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${e?"h-9 w-9":"h-7 w-7"}`,title:"Activity stream","aria-label":"Activity stream",children:[(0,b.jsx)(j.Activity,{className:e?"h-4 w-4":"h-3.5 w-3.5"}),g>0&&(0,b.jsx)("span",{className:"absolute top-0 right-0 h-2 w-2 rounded-full bg-emerald-400 animate-pulse"})]}),h&&(0,b.jsx)(s,{items:f,onClose:o})]})}var u=a.i(971382);let v=(0,a.i(831709).default)("clock-3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6h4",key:"135r8i"}]]);var w=a.i(552605),x=a.i(349692),y=a.i(737313),z=a.i(542341),A=a.i(489461),B=a.i(985339),C=a.i(824179);function D({projectId:a}){let{isTouchLayout:e}=(0,n.useInputCapabilities)(),f=(0,d.useRouter)(),g=(0,d.usePathname)(),h=(0,c.useRef)(null),i=(0,c.useRef)(null),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)([]),[o,p]=(0,c.useState)(0),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(0),[H,I]=(0,c.useState)(new Set),J=j.trim(),K=(0,c.useMemo)(()=>l.map(a=>({...a,visibleResults:H.has(a.id)?a.results:a.results.slice(0,3),hiddenCount:Math.max(0,a.results.length-3)})),[H,l]),L=(0,c.useMemo)(()=>K.flatMap(a=>a.visibleResults),[K]),M=(0,c.useMemo)(()=>L.map(a=>`${a.kind}:${a.id}`),[L]),N=(0,c.useCallback)(()=>{k(""),m([]),p(0),t(null),r(!1),G(0)},[]),O=(0,c.useCallback)(a=>{N(),E(!1),f.push(a.href)},[N,f]);(0,c.useEffect)(()=>{N(),E(!1),I(new Set)},[N,g]),(0,c.useEffect)(()=>{let a=a=>{h.current?.contains(a.target)||E(!1)};return window.addEventListener("pointerdown",a),()=>window.removeEventListener("pointerdown",a)},[]),(0,c.useEffect)(()=>{let a=a=>{(a.metaKey||a.ctrlKey)&&"k"===a.key.toLowerCase()&&(a.preventDefault(),i.current?.focus(),i.current?.select())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[]),(0,c.useEffect)(()=>{D&&G(0)},[D,l]),(0,c.useEffect)(()=>{if(!J||J.length<2){m([]),p(0),t(null),r(!1),I(new Set);return}let b=!1;r(!0);let c=window.setTimeout(()=>{(async()=>{try{let c=new URLSearchParams({q:J}),d=await fetch(`/api/projects/${encodeURIComponent(a)}/search?${c.toString()}`,{cache:"no-store"}),e=await d.json().catch(()=>null);if(b)return;if(!d.ok){let a=e&&"object"==typeof e&&"error"in e?String(e.error):"Search failed";m([]),p(0),t(a);return}m(Array.isArray(e.sections)?e.sections:[]),p("number"==typeof e.total?e.total:0),t(null),I(new Set)}catch(a){if(b)return;console.error("Project search failed",a),m([]),p(0),t("Search failed")}finally{b||r(!1)}})()},220);return()=>{b=!0,window.clearTimeout(c)}},[J,a]);let P=D&&(J.length>0||q||null!==s),Q=L.length>0?L[Math.max(0,Math.min(F,L.length-1))]:null,R=(0,c.useCallback)(a=>{I(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);return(0,b.jsxs)("div",{ref:h,className:"relative w-full max-w-xl",children:[(0,b.jsxs)("div",{className:"group/search relative",children:[(0,b.jsx)(z.Search,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--app-shell-soft-text)] transition-colors group-focus-within/search:text-[var(--primary)]",strokeWidth:1.8}),(0,b.jsx)("input",{ref:i,type:"text",value:j,onFocus:()=>E(!0),onChange:a=>{k(a.target.value),E(!0)},onKeyDown:a=>{if("ArrowDown"===a.key&&L.length>0){a.preventDefault(),G(a=>(a+1)%L.length);return}if("ArrowUp"===a.key&&L.length>0){a.preventDefault(),G(a=>(a-1+L.length)%L.length);return}if("Enter"===a.key&&Q){a.preventDefault(),O(Q);return}"Escape"===a.key&&(J?N():(E(!1),i.current?.blur()))},placeholder:"Search objectives, tickets, tasks, teams, agents, and chat…",className:"h-8 w-full rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] pl-9 pr-16 text-xs font-medium text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)] transition-all hover:border-[var(--app-shell-border-strong)] focus:border-[var(--primary)] focus:ring-2 focus:ring-[var(--ring)]"}),J?(0,b.jsxs)("div",{className:"absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-bold text-[var(--muted-foreground)]",children:q?"…":o}),(0,b.jsx)("button",{type:"button",onClick:()=>{N(),i.current?.focus()},className:"inline-flex h-5 w-5 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]","aria-label":"Clear search",children:(0,b.jsx)(C.X,{className:"h-3.5 w-3.5"})})]}):e?null:(0,b.jsx)("kbd",{className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-1.5 py-0.5 font-sans text-[10px] font-bold text-[var(--app-shell-soft-text)]",children:"⌘K"})]}),P?(0,b.jsx)("div",{className:"absolute left-0 right-0 top-[calc(100%+0.5rem)] z-50 overflow-hidden rounded-2xl border border-[var(--app-shell-border)] bg-[var(--app-shell-surface)] shadow-2xl shadow-black/20",children:(0,b.jsxs)("div",{className:"max-h-[28rem] overflow-y-auto p-2",children:[J.length<2?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"Keep typing to search across project entities."}):null,q?(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(x.Loader2,{className:"h-4 w-4 animate-spin"}),"Searching this project…"]}):null,!q&&s?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-rose-500",children:s}):null,q||s||!(J.length>=2)||0!==l.length?null:(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"No matches in this project."}),!q&&!s&&K.map(a=>(0,b.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 px-3 pb-1 pt-2",children:[(0,b.jsxs)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--app-shell-soft-text)]",children:[a.label,(0,b.jsx)("span",{className:"ml-1.5 text-[9px] text-[var(--muted-foreground)]",children:a.results.length})]}),a.results.length>3?(0,b.jsx)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onClick:()=>R(a.id),className:"text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:H.has(a.id)?"Collapse":`Show ${a.hiddenCount} more`}):null]}),(0,b.jsx)("div",{className:"space-y-1",children:a.visibleResults.map(a=>{let c,d,e=`${a.kind}:${a.id}`,f=M.findIndex(a=>a===e),g=f===F,h=function(a){switch(a){case"objective":return A.Target;case"linear_issue":return w.FileText;case"scheduled_task":return v;case"team":return B.Users;case"agent":return u.Bot;case"chat_thread":case"chat_message":return y.MessageSquare;default:return z.Search}}(a.kind);return(0,b.jsxs)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onMouseEnter:()=>G(f),onClick:()=>O(a),className:`flex w-full items-start gap-3 rounded-xl px-3 py-2.5 text-left transition-colors ${g?"bg-[var(--app-shell-subtle)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,children:[(0,b.jsx)("span",{className:"mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--app-shell-muted)]",children:(0,b.jsx)(h,{className:"h-3.5 w-3.5",strokeWidth:1.75})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.title}),(0,b.jsx)("span",{className:"shrink-0 rounded-full bg-[var(--app-shell-subtle)] px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[var(--app-shell-soft-text)]",children:a.label})]}),a.context?(0,b.jsx)("span",{className:"mt-0.5 block truncate text-xs text-[var(--muted-foreground)]",children:a.context}):null,a.description?(0,b.jsx)("span",{className:"mt-1 block text-xs leading-5 text-[var(--muted-foreground)]",children:(c=a.description.split(/(<\/?mark>)/g),d=!1,c.map((a,c)=>"<mark>"===a?(d=!0,null):"</mark>"===a?(d=!1,null):a?d?(0,b.jsx)("mark",{className:"rounded bg-amber-200/80 px-0.5 text-inherit",children:a},`mark-${c}`):(0,b.jsx)("span",{children:a},`text-${c}`):null))}):null]})]},e)})})]},a.id))]})}):null]})}var E=a.i(550158),F=a.i(830284),G=a.i(111013),H=a.i(227444);let I={home:!0,threads:!0,terminal:!0,objectives:!0,objectivesIsNew:!1,tracking:!0,teams:!0,folders:!0,scheduledTasks:!0,envVars:!0,notifications:!0};var J=a.i(455106),K=a.i(427411);function L({children:a,params:j}){let{slug:k}=(0,c.use)(j),{isTouchLayout:l}=(0,n.useInputCapabilities)(),m=(0,d.useRouter)(),o=(0,d.usePathname)(),{projects:p,isLoading:q,createProject:r,updateProject:s,deleteProject:u,addAgent:v,removeAgent:w}=(0,F.useProjectsWithAgents)(),{threads:x,isLoading:y,isCreating:z,deletingThreadId:A,renamingThreadId:B,isRestoringActiveThread:C,createThread:L,renameThread:M,deleteThread:N}=(0,G.useThreadState)(),[O,P]=(0,c.useState)([]),[Q,R]=(0,c.useState)(!1),[S,T]=(0,c.useState)(368),[U,V]=(0,c.useState)(()=>"light");(0,c.useEffect)(()=>{R((0,J.loadWorkspaceSidebarVisible)()),T((0,K.loadWorkspaceWidth)()||368)},[]),(0,c.useEffect)(()=>{},[U]),(0,c.useEffect)(()=>{fetch("/api/participants").then(a=>a.json()).then(a=>P(Array.isArray(a)?a:[])).catch(()=>P([]))},[]);let W=(0,c.useMemo)(()=>p.find(a=>a.slug===k)??null,[p,k]),X=(0,c.useMemo)(()=>{let a=o.match(/\/projects\/[^/]+\/thread\/([^/]+)/);return a?.[1]?decodeURIComponent(a[1]):W?.thread_ids[0]??null},[W?.thread_ids,o]),Y=(0,c.useMemo)(()=>o.includes("/linear")?"linear":o.includes("/automations")?"automations":o.includes("/thread/")?"thread":o.includes("/objectives")?"objectives":o.includes("/teams")?"teams":o.includes("/folders")?"folders":o.includes("/env-vars")?"env-vars":o.includes("/notifications")?"notifications":o.includes("/terminal")?"terminal":"home",[o]),{show:Z,trackerConnections:$}=function(a){let{connections:b,loading:d}=(0,H.useTrackerConnections)(a?.id??null);return(0,c.useMemo)(()=>{let a=b.map(a=>({type:a.type,connected:a.connected,connectedAt:a.connectedAt}));return d?{stage:"stage1",loading:!0,show:{...I},trackerConnections:[]}:{stage:"stage4",loading:!1,show:{...I},trackerConnections:a}},[d,b])}(W),_=()=>{let a=!Q;R(a),(0,J.persistWorkspaceSidebarVisible)(a)},aa=(0,c.useCallback)(a=>{T(a),(0,K.persistWorkspaceWidth)(a)},[]);return q?(0,b.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}):W?(0,b.jsxs)("div",{className:"flex h-dvh min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,b.jsx)(E.WorkspaceSidebar,{threads:x,participants:O,activeThreadId:X,isLoading:y,isRestoringActiveThread:C,isCreating:z,deletingThreadId:A,renamingThreadId:B,onSelectThread:a=>m.push(`/projects/${k}/thread/${encodeURIComponent(a)}`),onCreateThread:L,onRenameThread:M,onDeleteThread:N,visible:Q,onToggle:_,width:S,onWidthChange:aa,projects:p,onCreateProject:r,onUpdateProject:s,onDeleteProject:u,onAddAgentToProject:v,onRemoveAgentFromProject:w,activeProjectId:W.id,activeProjectView:Y,stageShow:Z,trackerConnections:$,onUpdateParticipant:async a=>{let b=await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error("Failed to update agent");let c=await b.json();P(a=>a.map(a=>a.id===c.id?c:a))},onSelectProject:a=>{let b=p.find(b=>b.id===a);b&&m.push(`/projects/${b.slug}`)}}),(0,b.jsxs)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden",children:[(0,b.jsxs)("div",{className:"desktop-titlebar flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0 flex-shrink-0",children:[!Q&&(0,b.jsx)("button",{type:"button",onClick:_,className:"inline-flex h-9 w-9 items-center justify-center rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",title:"Show sidebar","aria-label":"Show sidebar",children:(0,b.jsx)(f.PanelLeftOpen,{className:"h-4 w-4"})}),o!==`/projects/${k}`&&(0,b.jsx)("button",{type:"button",onClick:()=>m.back(),className:"p-1 -ml-1 rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors",children:(0,b.jsx)(e.ArrowLeft,{className:"w-4 h-4"})}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}`),className:`text-xs transition-colors ${"home"===Y?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:W.name}),"home"!==Y&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}/${"thread"===Y?"":Y}`),className:"text-xs text-[var(--foreground)] hover:text-[var(--muted-foreground)] transition-colors",children:{objectives:"Objectives",teams:"Teams",folders:"Workspace Map","env-vars":"Environment Variables",notifications:"Notifications",linear:"Tasks",automations:"Scheduled Jobs",thread:"Chat",terminal:"Terminal"}[Y]??Y}),(0,b.jsx)("span",{id:"topbar-breadcrumb",className:"contents"})]})]}),(0,b.jsx)("div",{className:"flex-1 flex justify-center min-w-0 px-4",children:(0,b.jsx)(D,{projectId:W.id})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,b.jsx)(i.StatusIndicator,{}),(0,b.jsx)(t,{projectId:W.id,participants:O}),(0,b.jsx)("button",{type:"button",onClick:()=>V(a=>"dark"===a?"light":"dark"),"aria-label":"dark"===U?"Switch to light theme":"Switch to dark theme",title:"dark"===U?"Switch to light theme":"Switch to dark theme",className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${l?"h-9 w-9":"h-7 w-7"}`,children:"dark"===U?(0,b.jsx)(g.Sun,{className:l?"h-4 w-4":"h-3.5 w-3.5"}):(0,b.jsx)(h.Moon,{className:l?"h-4 w-4":"h-3.5 w-3.5"})})]})]}),a]})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,b.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,b.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",k,"” does not exist or you do not have access to it."]}),(0,b.jsx)("button",{onClick:()=>m.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]})}function M({children:a,params:d}){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading project…"}),children:(0,b.jsx)(L,{params:d,children:a})})}a.s(["default",()=>M],657613)}];
2
2
 
3
3
  //# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_layout_tsx_3bb31889._.js.map