@mndrk/agx 2.0.13 → 2.0.15

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 (495) hide show
  1. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/app-path-routes-manifest.json +8 -0
  3. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/build-manifest.json +2 -2
  4. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/prerender-manifest.json +27 -3
  5. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/routes-manifest.json +58 -0
  6. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.html +2 -2
  9. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.rsc +1 -1
  10. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.html +2 -2
  18. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.rsc +2 -2
  19. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  20. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  21. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  22. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  24. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  25. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/[id]/page/app-paths-manifest.json +3 -0
  26. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/[id]/page/build-manifest.json +18 -0
  27. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/[id]/page/next-font-manifest.json +11 -0
  28. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/[id]/page/react-loadable-manifest.json +1 -0
  29. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/[id]/page/server-reference-manifest.json +4 -0
  30. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/[id]/page.js +16 -0
  31. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/[id]/page.js.map +5 -0
  32. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/[id]/page.js.nft.json +1 -0
  33. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/[id]/page_client-reference-manifest.js +2 -0
  34. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/page/app-paths-manifest.json +3 -0
  35. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/page/build-manifest.json +18 -0
  36. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/page/next-font-manifest.json +11 -0
  37. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/page/react-loadable-manifest.json +1 -0
  38. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/page/server-reference-manifest.json +4 -0
  39. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/page.js +16 -0
  40. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/page.js.map +5 -0
  41. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/page.js.nft.json +1 -0
  42. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents/page_client-reference-manifest.js +2 -0
  43. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents.html +9 -0
  44. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents.meta +15 -0
  45. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents.rsc +23 -0
  46. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents.segments/_full.segment.rsc +23 -0
  47. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents.segments/_head.segment.rsc +5 -0
  48. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents.segments/_index.segment.rsc +9 -0
  49. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents.segments/_tree.segment.rsc +5 -0
  50. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +9 -0
  51. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/agents.segments/agents.segment.rsc +4 -0
  52. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/messages/route/app-paths-manifest.json +3 -0
  53. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/messages/route/build-manifest.json +11 -0
  54. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/messages/route/server-reference-manifest.json +4 -0
  55. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/messages/route.js +6 -0
  56. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/messages/route.js.map +5 -0
  57. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/messages/route.js.nft.json +1 -0
  58. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/messages/route_client-reference-manifest.js +2 -0
  59. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/profile/route/app-paths-manifest.json +3 -0
  60. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/profile/route/build-manifest.json +11 -0
  61. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/profile/route/server-reference-manifest.json +4 -0
  62. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/profile/route.js +6 -0
  63. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/profile/route.js.map +5 -0
  64. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -0
  65. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/[id]/profile/route_client-reference-manifest.js +2 -0
  66. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/export/route/app-paths-manifest.json +3 -0
  67. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/export/route/build-manifest.json +11 -0
  68. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/export/route/server-reference-manifest.json +4 -0
  69. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/export/route.js +6 -0
  70. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/export/route.js.map +5 -0
  71. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/export/route.js.nft.json +1 -0
  72. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/agents/export/route_client-reference-manifest.js +2 -0
  73. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/attachments/[id]/route.js +1 -1
  74. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/attachments/[id]/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/chat/route.js +2 -1
  76. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/chat/route.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/file-search/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/health/route.js +1 -1
  79. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/health/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/history/route.js +3 -3
  81. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/history/route.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/learnings/route.js +1 -1
  83. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/learnings/route.js.nft.json +1 -1
  84. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/logs/route.js +1 -1
  85. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/logs/route.js.nft.json +1 -1
  86. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/logs/stream/route.js +1 -1
  87. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/memories/route.js +1 -1
  89. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/memories/route.js.nft.json +1 -1
  90. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/cancel/route.js +1 -1
  91. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/cancel/route.js.nft.json +1 -1
  92. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/signal/route.js +1 -1
  93. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/signal/route.js.nft.json +1 -1
  94. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js +1 -1
  95. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
  96. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js +1 -1
  97. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
  98. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/participants/route.js +2 -1
  99. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/participants/route.js.nft.json +1 -1
  100. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/migrate-v1/route.js +1 -1
  101. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
  102. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/migrate-v2/route.js +1 -1
  103. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
  104. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/route.js +1 -1
  105. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  106. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/route.js +1 -1
  107. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/route.js.nft.json +1 -1
  108. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/providers/route.js +1 -1
  109. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/providers/route.js.nft.json +1 -1
  110. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/complete/route.js +1 -1
  111. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
  112. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/route.js +1 -1
  113. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/route.js.nft.json +1 -1
  114. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/reactions/route.js +1 -1
  115. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/reactions/route.js.nft.json +1 -1
  116. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/search/route.js +1 -1
  117. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/search/route.js.nft.json +1 -1
  118. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/status/route.js +1 -1
  119. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/status/route.js.nft.json +1 -1
  120. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/summarize/route.js +1 -1
  121. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/summarize/route.js.nft.json +1 -1
  122. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/system/db-status/route.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/task-drafts/route.js +1 -1
  124. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/task-drafts/route.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js +1 -1
  126. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/route.js +1 -1
  128. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/costs/route.js +1 -1
  130. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -1
  132. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/events/route.js +1 -1
  134. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/history/route.js +1 -1
  136. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/metrics/route.js +1 -1
  138. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/pause/route.js +1 -1
  140. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/pause/route.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/replan/route.js +1 -1
  142. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/restart/route.js +1 -1
  144. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/resume/route.js +1 -1
  146. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/rollback/route.js +1 -1
  148. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/route.js +1 -1
  150. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/start/route.js +1 -1
  152. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/stop/route.js +1 -1
  154. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/heartbeat/route.js +1 -1
  156. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/heartbeat/route.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/history/route.js +1 -1
  158. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/logs/route.js +1 -1
  160. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/logs/stream/route.js +1 -1
  162. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/logs/stream/route.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js +1 -1
  164. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js +1 -1
  166. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js +1 -1
  168. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  169. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js +1 -1
  170. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  171. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js +1 -1
  172. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  173. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js +1 -1
  174. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  175. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js +1 -1
  176. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  177. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/route.js +1 -1
  178. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  179. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/assign-orphans/route.js +1 -1
  180. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
  181. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/extract/route.js +1 -1
  182. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  183. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/route.js +1 -1
  184. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/route.js.nft.json +1 -1
  185. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/stream/route.js +1 -1
  186. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/stream/route.js.nft.json +1 -1
  187. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/agents/route/app-paths-manifest.json +3 -0
  188. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/agents/route/build-manifest.json +11 -0
  189. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/agents/route/server-reference-manifest.json +4 -0
  190. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/agents/route.js +8 -0
  191. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/agents/route.js.map +5 -0
  192. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/agents/route.js.nft.json +1 -0
  193. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/agents/route_client-reference-manifest.js +2 -0
  194. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/route/app-paths-manifest.json +3 -0
  195. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/route/build-manifest.json +11 -0
  196. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/route/server-reference-manifest.json +4 -0
  197. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/route.js +8 -0
  198. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/route.js.map +5 -0
  199. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/route.js.nft.json +1 -0
  200. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/[id]/route_client-reference-manifest.js +2 -0
  201. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/route/app-paths-manifest.json +3 -0
  202. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/route/build-manifest.json +11 -0
  203. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/route/server-reference-manifest.json +4 -0
  204. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/route.js +8 -0
  205. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/route.js.map +5 -0
  206. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/route.js.nft.json +1 -0
  207. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/teams/route_client-reference-manifest.js +2 -0
  208. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/upload/[id]/route.js +1 -1
  209. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/upload/[id]/route.js.nft.json +1 -1
  210. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/upload/route.js +1 -1
  211. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/upload/route.js.nft.json +1 -1
  212. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/user-settings/route.js +1 -1
  213. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/user-settings/route.js.nft.json +1 -1
  214. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board/page.js.nft.json +1 -1
  215. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board/page_client-reference-manifest.js +1 -1
  216. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.html +2 -2
  217. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.rsc +2 -2
  218. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_full.segment.rsc +2 -2
  219. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_head.segment.rsc +1 -1
  220. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_index.segment.rsc +2 -2
  221. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  222. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  223. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/board.segments/board.segment.rsc +1 -1
  224. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph/page.js.nft.json +1 -1
  225. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  226. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.html +2 -2
  227. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.rsc +3 -3
  228. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  229. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  230. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  231. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  232. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  233. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  234. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.html +2 -2
  235. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.rsc +4 -4
  236. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  237. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_full.segment.rsc +4 -4
  238. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_head.segment.rsc +1 -1
  239. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_index.segment.rsc +2 -2
  240. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.segments/_tree.segment.rsc +3 -3
  241. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/page.js.nft.json +1 -1
  242. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/page_client-reference-manifest.js +1 -1
  243. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  244. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  245. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  246. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  247. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  248. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  249. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.html +1 -1
  250. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.rsc +3 -3
  251. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
  252. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  253. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  254. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  255. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
  256. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  257. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  258. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/page.js.nft.json +1 -1
  259. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  260. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.html +2 -2
  261. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.rsc +3 -3
  262. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  263. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  264. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  265. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  266. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  267. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  268. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings/page.js.nft.json +1 -1
  269. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  270. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.html +2 -2
  271. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.rsc +2 -2
  272. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  273. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  274. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  275. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  276. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  277. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  278. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status/page.js.nft.json +1 -1
  279. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status/page_client-reference-manifest.js +1 -1
  280. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.html +2 -2
  281. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.rsc +3 -3
  282. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_full.segment.rsc +3 -3
  283. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_head.segment.rsc +1 -1
  284. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_index.segment.rsc +2 -2
  285. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  286. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  287. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/status.segments/status.segment.rsc +1 -1
  288. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page.js.nft.json +1 -1
  289. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  290. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.html +2 -2
  291. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.rsc +3 -3
  292. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_full.segment.rsc +3 -3
  293. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
  294. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_index.segment.rsc +2 -2
  295. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
  296. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +2 -2
  297. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
  298. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app-paths-manifest.json +8 -0
  299. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/7e210_Agents_agx-cloud__next-internal_server_app_api_teams_route_actions_e76eb762.js +3 -0
  300. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/Projects_Agents_agx-cloud_d237c059._.js +1 -1
  301. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/Projects_Agents_agx-cloud_lib_6041e016._.js +3 -3
  302. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/Projects_Agents_agx-cloud_lib_6a5d1c80._.js +9 -9
  303. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/Projects_Agents_agx-cloud_lib_8c82981b._.js +3 -3
  304. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__02ca2128._.js → [root-of-the-server]__11b52378._.js} +2 -2
  305. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__bbf5f222._.js → [root-of-the-server]__138cda76._.js} +2 -2
  306. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__b478bb36._.js → [root-of-the-server]__14c4cd90._.js} +2 -2
  307. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__ccb0a291._.js → [root-of-the-server]__1af3c133._.js} +2 -2
  308. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__7fae991f._.js → [root-of-the-server]__1d6b3dc4._.js} +2 -2
  309. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__c6bd42f9._.js → [root-of-the-server]__2435226f._.js} +2 -2
  310. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__094cda80._.js → [root-of-the-server]__24676138._.js} +2 -2
  311. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__325b119d._.js +162 -0
  312. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__0469e3c4._.js → [root-of-the-server]__34e15c3b._.js} +2 -2
  313. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__84058042._.js → [root-of-the-server]__374c51fe._.js} +2 -2
  314. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__5e048929._.js → [root-of-the-server]__3a60a457._.js} +17 -14
  315. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__bca6e014._.js → [root-of-the-server]__3da4ecb4._.js} +2 -2
  316. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__4005f2fb._.js +3 -0
  317. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__42ab2b45._.js +205 -0
  318. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__9db4ed07._.js → [root-of-the-server]__45a42d30._.js} +2 -2
  319. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__45d4a92e._.js → [root-of-the-server]__46443bd1._.js} +2 -2
  320. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__6a99c121._.js → [root-of-the-server]__4964be9e._.js} +2 -2
  321. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__b3d06607._.js → [root-of-the-server]__49732c7a._.js} +2 -2
  322. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__c24f04db._.js → [root-of-the-server]__4e8944f5._.js} +2 -2
  323. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__e6839bac._.js → [root-of-the-server]__541b6536._.js} +17 -14
  324. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__a5ebf587._.js → [root-of-the-server]__5aa0850a._.js} +2 -2
  325. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__5ad371f3._.js +197 -0
  326. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__5d4e1eab._.js → [root-of-the-server]__61362d2c._.js} +2 -2
  327. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__f8f5dd3f._.js → [root-of-the-server]__63e6c5cb._.js} +2 -2
  328. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__c6a83450._.js → [root-of-the-server]__74d2fecb._.js} +2 -2
  329. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__a085810b._.js → [root-of-the-server]__757bd844._.js} +2 -2
  330. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__a798a81b._.js → [root-of-the-server]__7f3fb99b._.js} +2 -2
  331. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__8f70f57a._.js → [root-of-the-server]__862414fb._.js} +2 -2
  332. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__33b4886e._.js → [root-of-the-server]__8c335165._.js} +2 -2
  333. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__843bda67._.js → [root-of-the-server]__950e925a._.js} +2 -2
  334. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__9dbd4061._.js +30 -0
  335. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__9a8408c2._.js → [root-of-the-server]__abc1c78f._.js} +2 -2
  336. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__9d711adb._.js → [root-of-the-server]__b1710728._.js} +2 -2
  337. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__b1ee8259._.js +3 -0
  338. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__086fd26c._.js → [root-of-the-server]__b773a26b._.js} +2 -2
  339. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__6d540484._.js → [root-of-the-server]__b8bfcfcb._.js} +2 -2
  340. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__68eac206._.js → [root-of-the-server]__b92cc388._.js} +2 -2
  341. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__bd492c8b._.js +3 -0
  342. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__754f11c3._.js → [root-of-the-server]__bde5cdeb._.js} +19 -16
  343. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__be6f07e4._.js +35 -0
  344. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__8d27656d._.js → [root-of-the-server]__be72cd19._.js} +2 -2
  345. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__bf0cbc6e._.js → [root-of-the-server]__bf5839ef._.js} +2 -2
  346. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__23d4344c._.js → [root-of-the-server]__c07f5dbd._.js} +17 -14
  347. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__d5556385._.js → [root-of-the-server]__c7021bce._.js} +2 -2
  348. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__5231c027._.js → [root-of-the-server]__cbc1e994._.js} +2 -2
  349. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__ccad2301._.js +16 -0
  350. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__d339de9d._.js +201 -0
  351. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__7c2d99de._.js → [root-of-the-server]__ede3487d._.js} +2 -2
  352. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__3dfd0006._.js → [root-of-the-server]__ee1d4f22._.js} +2 -2
  353. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__29975f5f._.js → [root-of-the-server]__f1ce0903._.js} +2 -2
  354. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__c0525aa9._.js → [root-of-the-server]__fb7ad71b._.js} +2 -2
  355. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__ffe75a5a._.js +22 -0
  356. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/{[root-of-the-server]__10254e41._.js → [root-of-the-server]__fffe72ac._.js} +2 -2
  357. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/a2576__next-internal_server_app_api_agents_[id]_messages_route_actions_4a5b93aa.js +3 -0
  358. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/a2576__next-internal_server_app_api_agents_[id]_profile_route_actions_3a7d8cf0.js +3 -0
  359. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/a2576__next-internal_server_app_api_teams_[id]_agents_route_actions_97fafccc.js +3 -0
  360. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ad555_agx-cloud__next-internal_server_app_api_agents_export_route_actions_5d64c0cd.js +3 -0
  361. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ad555_agx-cloud__next-internal_server_app_api_teams_[id]_route_actions_2f771636.js +3 -0
  362. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ae43b_next_dist_esm_build_templates_app-route_122e31fe.js +33 -20
  363. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/7e210_Agents_agx-cloud__next-internal_server_app_agents_[id]_page_actions_f250f955.js +3 -0
  364. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_199f4916._.js +3 -0
  365. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_1a89ff22._.js +3 -0
  366. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_23a74345._.js +3 -0
  367. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_274b1253._.js +100 -0
  368. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_5defd267._.js +3 -0
  369. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_7bc01e46._.js +5 -5
  370. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_8feb2597._.js +2 -2
  371. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_97e800de._.js +5 -5
  372. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud__next-internal_server_app_agents_page_actions_e400c0d2.js +3 -0
  373. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_app_agents_[id]_page_tsx_8537539a._.js +3 -0
  374. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_app_agents_layout_tsx_7aedca18._.js +3 -0
  375. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_app_agents_page_tsx_ff7a8da5._.js +3 -0
  376. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_app_execution-graph_page_tsx_a9c51dd9._.js +2 -2
  377. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_b0381c73._.js +3 -0
  378. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_b5ebb745._.js +3 -0
  379. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_ba18e49a._.js +3 -0
  380. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_d2d4c5b2._.js +2 -2
  381. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_d74432d4._.js +4 -0
  382. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_dee298a4._.js +3 -0
  383. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_edc80ce4._.js +4 -0
  384. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/{[root-of-the-server]__c76acf29._.js → [root-of-the-server]__14d40aef._.js} +2 -2
  385. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__43df8b74._.js +3 -0
  386. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__6e065405._.js +3 -0
  387. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/{[root-of-the-server]__99fa92e8._.js → [root-of-the-server]__7764ec5b._.js} +2 -2
  388. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/{[root-of-the-server]__00507cd5._.js → [root-of-the-server]__8c7946de._.js} +2 -2
  389. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__9602ff02._.js +3 -0
  390. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__96241c2a._.js +3 -0
  391. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__d78a9d61._.js +3 -0
  392. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/ae43b_lucide-react_dist_esm_4dbe1295._.js +3 -0
  393. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/functions-config-manifest.json +6 -0
  394. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/middleware-manifest.json +5 -5
  395. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/next-font-manifest.js +1 -1
  396. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/next-font-manifest.json +8 -0
  397. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/404.html +1 -1
  398. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/500.html +2 -2
  399. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.js +1 -1
  400. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.json +1 -1
  401. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/05abf1bd00d94cf8.js +5 -0
  402. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/0921d653d52e4010.js +1 -0
  403. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/0ca3d85999e974cd.js +1 -0
  404. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/{60a9c7b6ddb4f3f5.js → 2d8cc58676973d4c.js} +7 -7
  405. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/3192d43fdf9f54f2.js +30 -0
  406. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/3e48187863c47db7.js +1 -0
  407. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/{c19172117f196735.js → 4a8f67c6ca864f30.js} +1 -1
  408. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/55c07b9b3795a4db.js +1 -0
  409. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/{7d2c10033c8a8554.js → 77c849083402f61f.js} +1 -1
  410. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/{ae26536f21ac3989.js → 79db9e451bfa80a8.js} +1 -1
  411. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/7eabb545e691cc51.js +1 -0
  412. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/95901ed98d4ed7b1.css +1 -0
  413. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/a25163733aaa771d.js +1 -0
  414. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/a5524fedec1d4539.js +30 -0
  415. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/ae11a9833582a364.css +2 -0
  416. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/beaa6c9ec1984b1a.js +1 -0
  417. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/bfb2423083fa77ea.js +1 -0
  418. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/c9a61a2b91917a11.js +1 -0
  419. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/e081d11e088dfd04.js +98 -0
  420. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/agents/[id]/page.tsx +723 -0
  421. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/agents/layout.tsx +3 -0
  422. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/agents/page.tsx +1093 -0
  423. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/agents/[id]/messages/route.ts +91 -0
  424. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/agents/[id]/profile/route.ts +87 -0
  425. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/agents/export/route.ts +51 -0
  426. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/chat/route.ts +47 -0
  427. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/history/route.ts +17 -0
  428. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/participants/route.ts +35 -0
  429. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/teams/[id]/agents/route.ts +118 -0
  430. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/teams/[id]/route.ts +80 -0
  431. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/api/teams/route.ts +132 -0
  432. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/app/projects/[slug]/layout.tsx +42 -23
  433. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/KanbanBoard.tsx +1 -0
  434. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/SortableTaskCard.tsx +3 -1
  435. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/TaskCard.tsx +27 -1
  436. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/chat-ui/ChatContainer.tsx +79 -25
  437. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/chat-ui/Composer.tsx +25 -9
  438. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/chat-ui/MentionPopover.tsx +84 -31
  439. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/chat-ui/MessageBubble.tsx +22 -11
  440. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/chat-ui/MessageList.tsx +236 -28
  441. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/chat-ui/ParticipantBar.tsx +117 -13
  442. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/chat-ui/ThreadView.tsx +6 -3
  443. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/thread/ThreadItem.tsx +1 -1
  444. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/thread/ThreadList.tsx +1 -1
  445. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/thread/WorkspaceSidebar.tsx +1376 -0
  446. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/db/sqlite/001_agx_board_schema.sql +41 -0
  447. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/hooks/useGroupChat.ts +6 -2
  448. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/hooks/useMentionAutocomplete.ts +86 -31
  449. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/hooks/useTeams.ts +171 -0
  450. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/hooks/useThreadState.ts +75 -7
  451. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/history-store.ts +34 -4
  452. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/participants-store.ts +22 -3
  453. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/sqlite-query-adapter.ts +13 -0
  454. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/storage/local-thread-adapter.ts +6 -0
  455. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/storage/thread-adapter.ts +11 -0
  456. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/stream-multiplexer.ts +59 -8
  457. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/teams.ts +130 -0
  458. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/tiptap/composer-mentions.ts +1 -0
  459. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/lib/types.ts +5 -0
  460. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/migrations/sqlite_schema.sql +41 -0
  461. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/services/threadService.ts +65 -1
  462. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/state/uiSettings.ts +2 -2
  463. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/styles/{threadSidebar.css → workspaceSidebar.css} +79 -57
  464. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/tsconfig.json +2 -1
  465. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/tsconfig.tsbuildinfo +1 -1
  466. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/worker/index.js +8 -0
  467. package/lib/cli/onboarding.js +67 -16
  468. package/lib/commands/chat.js +4 -0
  469. package/package.json +1 -1
  470. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__384eb9c5._.js +0 -194
  471. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__4dc3c88e._.js +0 -202
  472. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__8c40bccb._.js +0 -159
  473. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__cac59af9._.js +0 -198
  474. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/[root-of-the-server]__e5230b89._.js +0 -16
  475. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_304dc58c._.js +0 -3
  476. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_components_chat-ui_f59beea5._.js +0 -95
  477. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_e7635878._.js +0 -3
  478. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/Projects_Agents_agx-cloud_ef78b9d7._.js +0 -3
  479. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__a4a5c57b._.js +0 -3
  480. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/[root-of-the-server]__a73fd1ea._.js +0 -3
  481. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/ssr/ae43b_lucide-react_dist_esm_6c755856._.js +0 -3
  482. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/04612fc0fdf7b4ef.css +0 -1
  483. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/122dafa7cd2594e4.js +0 -30
  484. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/38cf24cf2de25782.js +0 -1
  485. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/49b2630db3ff37fe.js +0 -5
  486. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/55e870d6246760c7.js +0 -93
  487. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/870ea0d4e47d21ce.js +0 -1
  488. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/a56604cde5f45ff6.js +0 -30
  489. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/b3af23a09f4d9204.js +0 -1
  490. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/cdd364319efbfb0a.js +0 -1
  491. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/e479bda541d8b5c4.css +0 -2
  492. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/components/thread/ThreadSidebar.tsx +0 -359
  493. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{XZDiIYejKYJCT3rT4mrnp → 1fdQDYVXlcwnVGQtgask4}/_buildManifest.js +0 -0
  494. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{XZDiIYejKYJCT3rT4mrnp → 1fdQDYVXlcwnVGQtgask4}/_clientMiddlewareManifest.json +0 -0
  495. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{XZDiIYejKYJCT3rT4mrnp → 1fdQDYVXlcwnVGQtgask4}/_ssgManifest.js +0 -0
@@ -0,0 +1,1376 @@
1
+ "use client";
2
+
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ import {
5
+ ChevronDown,
6
+ ChevronRight,
7
+ Hash,
8
+ Bot,
9
+ Check,
10
+ GripVertical,
11
+ Minus,
12
+ PanelLeftClose,
13
+ Pencil,
14
+ Plus,
15
+ Search,
16
+ Trash2,
17
+ Users,
18
+ X,
19
+ } from "lucide-react";
20
+ import Link from "next/link";
21
+ import {
22
+ DndContext,
23
+ closestCenter,
24
+ KeyboardSensor,
25
+ PointerSensor,
26
+ useSensor,
27
+ useSensors,
28
+ type DragEndEvent,
29
+ } from "@dnd-kit/core";
30
+ import {
31
+ SortableContext,
32
+ sortableKeyboardCoordinates,
33
+ useSortable,
34
+ verticalListSortingStrategy,
35
+ } from "@dnd-kit/sortable";
36
+ import { CSS } from "@dnd-kit/utilities";
37
+ import type { Thread } from "@/lib/storage";
38
+ import type { ChatProvider, Participant } from "@/lib/types";
39
+ import type { Team, TeamAgent } from "@/hooks/useTeams";
40
+ import { useFocusManagement } from "@/hooks/useFocusManagement";
41
+ import { useProjects } from "@/hooks/useProjects";
42
+ import { agentAvatarUrl, AgentForm, type AgentFormData } from "@/components/chat-ui/ParticipantBar";
43
+ import RichTextEditor from "@/components/RichTextEditor";
44
+
45
+ interface WorkspaceSidebarProps {
46
+ threads: Thread[];
47
+ participants?: Participant[];
48
+ activeThreadId: string | null;
49
+ isLoading: boolean;
50
+ isCreating: boolean;
51
+ onSelectThread: (threadId: string) => void;
52
+ onCreateThread: (input?: { title?: string }) => Promise<unknown> | void;
53
+ onRenameThread: (threadId: string, title: string) => Promise<unknown> | void;
54
+ onDeleteThread: (threadId: string) => void;
55
+ deletingThreadId?: string | null;
56
+ renamingThreadId?: string | null;
57
+ activeParticipantIds?: string[];
58
+ onToggleParticipantActive?: (participantId: string, active: boolean) => void;
59
+ visible?: boolean;
60
+ isRestoringActiveThread?: boolean;
61
+ onToggle?: () => void;
62
+ onSearch?: () => void;
63
+ // Teams
64
+ teams?: Team[];
65
+ onCreateTeam?: (name: string, threadId?: string) => Promise<unknown>;
66
+ onRenameTeam?: (id: string, name: string) => Promise<unknown>;
67
+ onDeleteTeam?: (id: string) => Promise<unknown>;
68
+ onAddAgentToTeam?: (teamId: string, agentId: string) => Promise<unknown>;
69
+ onRemoveAgentFromTeam?: (teamId: string, agentId: string) => Promise<unknown>;
70
+ onMoveAgent?: (agentId: string, fromTeamId: string, toTeamId: string) => Promise<unknown>;
71
+ onReorderAgents?: (teamId: string, orderedAgentIds: string[]) => Promise<unknown>;
72
+ onAddAgentViaForm?: (teamId: string) => void;
73
+ onUpdateParticipant?: (participant: Participant) => Promise<unknown>;
74
+ onSelectTeam?: (teamId: string) => void;
75
+ }
76
+
77
+ function SortableTeamAgentItem({
78
+ ta,
79
+ agent,
80
+ index,
81
+ onClick,
82
+ }: {
83
+ ta: TeamAgent;
84
+ agent: Participant | undefined;
85
+ index: number;
86
+ onClick?: () => void;
87
+ }) {
88
+ const {
89
+ attributes,
90
+ listeners,
91
+ setNodeRef,
92
+ transform,
93
+ transition,
94
+ isDragging,
95
+ } = useSortable({ id: ta.agent_id });
96
+
97
+ const style = {
98
+ transform: CSS.Transform.toString(transform),
99
+ transition,
100
+ opacity: isDragging ? 0.5 : 1,
101
+ };
102
+
103
+ return (
104
+ <div
105
+ ref={setNodeRef}
106
+ style={style}
107
+ className="flex items-center gap-1 px-2 py-0.5 text-xs text-slate-500 group/agent-row cursor-pointer hover:bg-slate-50 rounded"
108
+ onClick={onClick}
109
+ role="button"
110
+ tabIndex={0}
111
+ >
112
+ <button
113
+ type="button"
114
+ className="cursor-grab active:cursor-grabbing p-0 bg-transparent border-none text-slate-300 hover:text-slate-500 flex-shrink-0"
115
+ onClick={(e) => e.stopPropagation()}
116
+ {...attributes}
117
+ {...listeners}
118
+ >
119
+ <GripVertical size={10} />
120
+ </button>
121
+ <img
122
+ src={agentAvatarUrl(ta.agent_id, 14, agent?.color)}
123
+ alt=""
124
+ className="w-3.5 h-3.5 rounded-full flex-shrink-0"
125
+ />
126
+ <span className="truncate">{agent?.name ?? ta.agent_id}</span>
127
+ {index === 0 && (
128
+ <span className="ml-auto text-[9px] font-medium text-indigo-400 uppercase tracking-wider">primary</span>
129
+ )}
130
+ </div>
131
+ );
132
+ }
133
+
134
+ export function WorkspaceSidebar({
135
+ threads,
136
+ participants = [],
137
+ activeThreadId,
138
+ isLoading,
139
+ isCreating,
140
+ onSelectThread,
141
+ onCreateThread,
142
+ onRenameThread,
143
+ onDeleteThread,
144
+ deletingThreadId = null,
145
+ renamingThreadId = null,
146
+ activeParticipantIds = [],
147
+ onToggleParticipantActive,
148
+ visible = false,
149
+ isRestoringActiveThread = false,
150
+ onToggle,
151
+ onSearch,
152
+ teams = [],
153
+ onCreateTeam,
154
+ onRenameTeam,
155
+ onDeleteTeam,
156
+ onAddAgentToTeam,
157
+ onRemoveAgentFromTeam,
158
+ onMoveAgent,
159
+ onReorderAgents,
160
+ onAddAgentViaForm,
161
+ onUpdateParticipant,
162
+ onSelectTeam,
163
+ }: WorkspaceSidebarProps) {
164
+ const emptyCtaRef = useRef<HTMLButtonElement | null>(null);
165
+ const [expandedTeams, setExpandedTeams] = useState<Set<string>>(new Set());
166
+ const [expandedWorkspaces, setExpandedWorkspaces] = useState<Set<string>>(new Set());
167
+ const [addAgentModal, setAddAgentModal] = useState<{ teamId: string } | null>(null);
168
+ const [addAgentSelection, setAddAgentSelection] = useState<Set<string>>(new Set());
169
+ const [creatingNewAgent, setCreatingNewAgent] = useState(false);
170
+ const [createTeamModal, setCreateTeamModal] = useState<{ threadId: string } | null>(null);
171
+ const [createTeamName, setCreateTeamName] = useState("");
172
+ const [createTeamAgents, setCreateTeamAgents] = useState<Set<string>>(new Set());
173
+ const { projects } = useProjects();
174
+
175
+ // Generic text input modal state
176
+ const [inputModal, setInputModal] = useState<{
177
+ title: string;
178
+ placeholder: string;
179
+ defaultValue: string;
180
+ onSubmit: (value: string) => void;
181
+ } | null>(null);
182
+ const inputModalRef = useCallback((el: HTMLInputElement | null) => {
183
+ if (el) {
184
+ el.focus();
185
+ el.select();
186
+ }
187
+ }, []);
188
+
189
+ // Confirm modal state
190
+ const [confirmModal, setConfirmModal] = useState<{
191
+ title: string;
192
+ message: string;
193
+ onConfirm: () => void;
194
+ } | null>(null);
195
+
196
+ // Agent detail modal
197
+ const [agentDetailId, setAgentDetailId] = useState<string | null>(null);
198
+ const agentDetailAgent = agentDetailId ? participants.find((p) => p.id === agentDetailId) ?? null : null;
199
+
200
+ const toggleTeamExpanded = (teamId: string) => {
201
+ setExpandedTeams((prev) => {
202
+ const next = new Set(prev);
203
+ if (next.has(teamId)) next.delete(teamId);
204
+ else next.add(teamId);
205
+ return next;
206
+ });
207
+ };
208
+
209
+ const handleCreateTeam = (threadId?: string) => {
210
+ if (threadId) {
211
+ setCreateTeamName("");
212
+ setCreateTeamAgents(new Set());
213
+ setCreateTeamModal({ threadId });
214
+ } else {
215
+ setInputModal({
216
+ title: "Create team",
217
+ placeholder: "Team name",
218
+ defaultValue: "",
219
+ onSubmit: (name) => void onCreateTeam?.(name),
220
+ });
221
+ }
222
+ };
223
+
224
+ const handleCreateTeamSubmit = async () => {
225
+ if (!createTeamModal || !createTeamName.trim()) return;
226
+ const team = await onCreateTeam?.(createTeamName.trim(), createTeamModal.threadId) as Team | null | undefined;
227
+ if (team && onAddAgentToTeam) {
228
+ for (const agentId of createTeamAgents) {
229
+ await onAddAgentToTeam(team.id, agentId);
230
+ }
231
+ }
232
+ setCreateTeamModal(null);
233
+ };
234
+
235
+ const toggleWorkspaceExpanded = (workspaceId: string) => {
236
+ setExpandedWorkspaces((prev) => {
237
+ const next = new Set(prev);
238
+ if (next.has(workspaceId)) next.delete(workspaceId);
239
+ else next.add(workspaceId);
240
+ return next;
241
+ });
242
+ };
243
+
244
+ const handleRenameTeam = (teamId: string, currentName: string) => {
245
+ setInputModal({
246
+ title: "Rename team",
247
+ placeholder: "Team name",
248
+ defaultValue: currentName,
249
+ onSubmit: (name) => void onRenameTeam?.(teamId, name),
250
+ });
251
+ };
252
+
253
+ const handleDeleteTeam = (teamId: string) => {
254
+ const team = teams.find((t) => t.id === teamId);
255
+ setConfirmModal({
256
+ title: "Delete team",
257
+ message: `Delete "${team?.name ?? "team"}"? Its agents will move to the Default team.`,
258
+ onConfirm: () => void onDeleteTeam?.(teamId),
259
+ });
260
+ };
261
+
262
+ const handleAddAgentToTeam = (teamId: string) => {
263
+ if (onAddAgentViaForm) {
264
+ onAddAgentViaForm(teamId);
265
+ return;
266
+ }
267
+ setAddAgentSelection(new Set());
268
+ setAddAgentModal({ teamId });
269
+ };
270
+
271
+ const addAgentModalTeam = addAgentModal ? teams.find((t) => t.id === addAgentModal.teamId) : null;
272
+ const addAgentModalMemberIds = new Set(addAgentModalTeam?.agents.map((a) => a.agent_id) ?? []);
273
+ const addAgentModalAvailable = addAgentModal ? participants.filter((p) => !addAgentModalMemberIds.has(p.id)) : [];
274
+
275
+ const dndSensors = useSensors(
276
+ useSensor(PointerSensor, { activationConstraint: { distance: 4 } }),
277
+ useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })
278
+ );
279
+
280
+ const handleTeamDragEnd = useCallback(
281
+ (teamId: string) => (event: DragEndEvent) => {
282
+ const { active, over } = event;
283
+ if (!over || active.id === over.id || !onReorderAgents) return;
284
+ const team = teams.find((t) => t.id === teamId);
285
+ if (!team) return;
286
+ const ids = team.agents.map((a) => a.agent_id);
287
+ const oldIndex = ids.indexOf(active.id as string);
288
+ const newIndex = ids.indexOf(over.id as string);
289
+ if (oldIndex === -1 || newIndex === -1) return;
290
+ const reordered = [...ids];
291
+ const [moved] = reordered.splice(oldIndex, 1);
292
+ reordered.splice(newIndex, 0, moved);
293
+ void onReorderAgents(teamId, reordered);
294
+ },
295
+ [teams, onReorderAgents]
296
+ );
297
+
298
+ const hasThreads = threads.length > 0;
299
+ const showRestoringState = isRestoringActiveThread && hasThreads;
300
+ const showLoadingState = (isLoading && !hasThreads) || showRestoringState;
301
+ const showEmptyState = !showLoadingState && !hasThreads;
302
+ const isVisible = Boolean(visible);
303
+ const sortedWorkspaces = [...threads].sort((a, b) => (a.title ?? "").localeCompare(b.title ?? ""));
304
+
305
+ useFocusManagement({
306
+ focusTarget: emptyCtaRef,
307
+ shouldFocus: isVisible && showEmptyState && !isCreating,
308
+ });
309
+
310
+ const handleCreateClick = () => {
311
+ setInputModal({
312
+ title: "Create workspace",
313
+ placeholder: "Workspace title",
314
+ defaultValue: "",
315
+ onSubmit: (title) => void onCreateThread({ title }),
316
+ });
317
+ };
318
+
319
+ const handleDeleteClick = (workspaceId: string) => {
320
+ const ws = threads.find((t) => t.id === workspaceId);
321
+ setConfirmModal({
322
+ title: "Delete workspace",
323
+ message: `Delete "${ws?.title ?? "workspace"}"? This cannot be undone.`,
324
+ onConfirm: () => void onDeleteThread(workspaceId),
325
+ });
326
+ };
327
+
328
+ const handleRenameClick = (workspaceId: string, currentTitle: string) => {
329
+ setInputModal({
330
+ title: "Rename workspace",
331
+ placeholder: "Workspace title",
332
+ defaultValue: currentTitle,
333
+ onSubmit: (title) => void onRenameThread(workspaceId, title),
334
+ });
335
+ };
336
+
337
+ if (!isVisible) {
338
+ return (
339
+ <aside
340
+ id="workspace-sidebar"
341
+ className="workspace-sidebar workspace-sidebar--collapsed"
342
+ aria-label="Workspace sidebar"
343
+ >
344
+ <div className="workspace-sidebar__brand">
345
+ <button
346
+ type="button"
347
+ onClick={onToggle}
348
+ className="workspace-sidebar__brand-icon p-0 bg-transparent hover:bg-transparent border-none outline-none"
349
+ aria-label="Show workspaces"
350
+ title="Show workspaces"
351
+ >
352
+ <svg
353
+ width="52"
354
+ height="31"
355
+ viewBox="0 0 64 38"
356
+ fill="none"
357
+ xmlns="http://www.w3.org/2000/svg"
358
+ className="transition-transform hover:scale-105"
359
+ >
360
+ <rect width="64" height="38" rx="8" fill="black" />
361
+ <g stroke="white" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
362
+ <path d="M 14 27 C 17 16 19 10 20 8 C 21 12 23 20 25 27" />
363
+ <path d="M 16 20 C 19 19 21 21 23 20" />
364
+ <path d="M 40 13 C 35 10 30 13 30 19 C 30 25 34 28 38 27 C 40 26 40 22 40 20 L 36 20" />
365
+ <path d="M 46 11 C 48 16 51 22 54 27" />
366
+ <path d="M 54 11 C 52 16 49 22 46 27" />
367
+ </g>
368
+ </svg>
369
+ </button>
370
+ </div>
371
+ <div className="mt-auto p-2">
372
+ <a
373
+ href="https://discord.gg/y77e9Euz"
374
+ target="_blank"
375
+ rel="noopener noreferrer"
376
+ className="flex items-center justify-center w-8 h-8 rounded-lg text-white transition-colors"
377
+ style={{ backgroundColor: '#5865F2' }}
378
+ onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#4752C4')}
379
+ onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = '#5865F2')}
380
+ title="Join Discord"
381
+ >
382
+ <svg width="14" height="14" viewBox="0 0 71 55" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
383
+ <path d="M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"/>
384
+ </svg>
385
+ </a>
386
+ </div>
387
+ </aside>
388
+ );
389
+ }
390
+
391
+ return (
392
+ <aside
393
+ id="workspace-sidebar"
394
+ className="workspace-sidebar"
395
+ aria-label="Workspace sidebar"
396
+ aria-busy={isLoading ? "true" : undefined}
397
+ >
398
+ <div className="workspace-sidebar__brand">
399
+ <div className="flex items-center justify-center mr-2" aria-hidden="true">
400
+ <svg
401
+ width="52"
402
+ height="31"
403
+ viewBox="0 0 64 38"
404
+ fill="none"
405
+ xmlns="http://www.w3.org/2000/svg"
406
+ >
407
+ <rect width="64" height="38" rx="8" fill="black" />
408
+ <g stroke="white" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
409
+ <path d="M 14 27 C 17 16 19 10 20 8 C 21 12 23 20 25 27" />
410
+ <path d="M 16 20 C 19 19 21 21 23 20" />
411
+ <path d="M 40 13 C 35 10 30 13 30 19 C 30 25 34 28 38 27 C 40 26 40 22 40 20 L 36 20" />
412
+ <path d="M 46 11 C 48 16 51 22 54 27" />
413
+ <path d="M 54 11 C 52 16 49 22 46 27" />
414
+ </g>
415
+ </svg>
416
+ </div>
417
+ {onToggle && (
418
+ <button
419
+ type="button"
420
+ onClick={onToggle}
421
+ aria-label="Hide workspaces"
422
+ title="Hide workspaces"
423
+ className="ml-auto inline-flex h-7 w-7 items-center justify-center rounded-md text-slate-400 transition-all hover:bg-slate-100 hover:text-slate-600"
424
+ >
425
+ <PanelLeftClose className="h-4 w-4" strokeWidth={1.75} />
426
+ </button>
427
+ )}
428
+ </div>
429
+
430
+ <div className="workspace-sidebar__content">
431
+ {onSearch && (
432
+ <div className="px-3 pt-2 pb-1">
433
+ <button
434
+ type="button"
435
+ onClick={onSearch}
436
+ className="flex items-center gap-2 w-full h-8 px-2.5 rounded-lg border border-slate-200 bg-white text-slate-400 text-xs hover:border-slate-300 hover:text-slate-500 transition-all"
437
+ >
438
+ <Search className="h-3.5 w-3.5 shrink-0" strokeWidth={1.75} />
439
+ <span>Search...</span>
440
+ <kbd className="ml-auto text-[10px] font-sans font-medium text-slate-300 bg-slate-50 border border-slate-200 rounded px-1 py-0.5">&#8984;K</kbd>
441
+ </button>
442
+ </div>
443
+ )}
444
+
445
+ <nav className="workspace-sidebar__section">
446
+ <div className="workspace-sidebar__section-header">
447
+ <Link
448
+ href="/agents"
449
+ className="workspace-sidebar__section-link"
450
+ >
451
+ <Bot size={13} className="flex-shrink-0" />
452
+ Manage Agents
453
+ </Link>
454
+ </div>
455
+ </nav>
456
+
457
+ <nav className="workspace-sidebar__section">
458
+ <div className="workspace-sidebar__section-header">
459
+ <p className="workspace-sidebar__section-label">Workspaces</p>
460
+ <div className="workspace-sidebar__header-actions">
461
+ <button
462
+ type="button"
463
+ className="workspace-sidebar__action"
464
+ onClick={handleCreateClick}
465
+ disabled={isCreating}
466
+ aria-label={isCreating ? "Creating workspace" : "Create workspace"}
467
+ title={isCreating ? "Creating..." : "Create workspace"}
468
+ >
469
+ <Plus size={14} />
470
+ </button>
471
+ </div>
472
+ </div>
473
+ {sortedWorkspaces.map((workspace) => {
474
+ const isActive = workspace.id === activeThreadId;
475
+ const isDeletingWorkspace = deletingThreadId === workspace.id;
476
+ const isRenamingWorkspace = renamingThreadId === workspace.id;
477
+ const title = workspace.title?.trim() || "Untitled workspace";
478
+ const isExpanded = expandedWorkspaces.has(workspace.id);
479
+ const workspaceTeams = teams.filter((t) => !t.is_default && t.workspace_ids?.includes(workspace.id));
480
+
481
+ return (
482
+ <div key={workspace.id}>
483
+ <div className="workspace-sidebar__workspace-item group">
484
+ <button
485
+ type="button"
486
+ className={`workspace-sidebar__nav-item workspace-sidebar__workspace-nav-item ${isActive ? "workspace-sidebar__nav-item--active workspace-sidebar__workspace-nav-item--active" : ""}`}
487
+ onClick={() => {
488
+ onSelectThread(workspace.id);
489
+ if (!isExpanded) toggleWorkspaceExpanded(workspace.id);
490
+ }}
491
+ aria-current={isActive ? "page" : undefined}
492
+ >
493
+ {isExpanded ? (
494
+ <ChevronDown size={14} className="flex-shrink-0 text-slate-400" onClick={(e) => { e.stopPropagation(); toggleWorkspaceExpanded(workspace.id); }} />
495
+ ) : (
496
+ <ChevronRight size={14} className="flex-shrink-0 text-slate-400" onClick={(e) => { e.stopPropagation(); toggleWorkspaceExpanded(workspace.id); }} />
497
+ )}
498
+ <span className="workspace-sidebar__workspace-title">{title}</span>
499
+ {workspaceTeams.length > 0 && (
500
+ <span className="ml-auto text-[10px] text-slate-400">{workspaceTeams.length}</span>
501
+ )}
502
+ </button>
503
+ <div className="workspace-sidebar__workspace-actions">
504
+ <button
505
+ type="button"
506
+ className="workspace-sidebar__workspace-action"
507
+ onClick={() => handleCreateTeam(workspace.id)}
508
+ aria-label={`Add team to ${title}`}
509
+ title="Add team"
510
+ >
511
+ <Users size={12} />
512
+ </button>
513
+ <button
514
+ type="button"
515
+ className="workspace-sidebar__workspace-action"
516
+ onClick={() => handleRenameClick?.(workspace.id, title)}
517
+ disabled={isRenamingWorkspace || isDeletingWorkspace}
518
+ aria-label={`Rename workspace ${title}`}
519
+ title={`Rename workspace ${title}`}
520
+ >
521
+ <Pencil size={12} />
522
+ </button>
523
+ <button
524
+ type="button"
525
+ className="workspace-sidebar__workspace-action workspace-sidebar__workspace-action--delete"
526
+ onClick={() => handleDeleteClick(workspace.id)}
527
+ disabled={isDeletingWorkspace || isRenamingWorkspace}
528
+ aria-label={`Delete workspace ${title}`}
529
+ title={`Delete workspace ${title}`}
530
+ >
531
+ <Trash2 size={12} />
532
+ </button>
533
+ </div>
534
+ </div>
535
+ {isExpanded && (
536
+ <div className="pl-4 py-0.5 flex flex-col gap-0.5">
537
+ {workspaceTeams.map((team) => {
538
+ const teamIsExpanded = expandedTeams.has(team.id);
539
+ return (
540
+ <div key={team.id}>
541
+ <div className="workspace-sidebar__workspace-item group">
542
+ <button
543
+ type="button"
544
+ className="workspace-sidebar__nav-item"
545
+ onClick={() => {
546
+ if (onSelectTeam) onSelectTeam(team.id);
547
+ toggleTeamExpanded(team.id);
548
+ }}
549
+ >
550
+ {teamIsExpanded ? (
551
+ <ChevronDown size={12} className="flex-shrink-0 text-slate-400" />
552
+ ) : (
553
+ <ChevronRight size={12} className="flex-shrink-0 text-slate-400" />
554
+ )}
555
+ <Users size={12} className="flex-shrink-0 text-slate-400" />
556
+ <span className="workspace-sidebar__workspace-title text-xs">{team.name}</span>
557
+ <span className="ml-auto text-[10px] text-slate-400">{team.agents.length}</span>
558
+ </button>
559
+ <div className="workspace-sidebar__workspace-actions">
560
+ <button
561
+ type="button"
562
+ className="workspace-sidebar__workspace-action"
563
+ onClick={() => handleAddAgentToTeam(team.id)}
564
+ aria-label={`Add agent to ${team.name}`}
565
+ title="Add agent"
566
+ >
567
+ <Plus size={11} />
568
+ </button>
569
+ <button
570
+ type="button"
571
+ className="workspace-sidebar__workspace-action"
572
+ onClick={() => handleRenameTeam(team.id, team.name)}
573
+ aria-label={`Rename team ${team.name}`}
574
+ title="Rename team"
575
+ >
576
+ <Pencil size={11} />
577
+ </button>
578
+ <button
579
+ type="button"
580
+ className="workspace-sidebar__workspace-action workspace-sidebar__workspace-action--delete"
581
+ onClick={() => handleDeleteTeam(team.id)}
582
+ aria-label={`Delete team ${team.name}`}
583
+ title="Delete team"
584
+ >
585
+ <Trash2 size={11} />
586
+ </button>
587
+ </div>
588
+ </div>
589
+ {teamIsExpanded && team.agents.length > 0 && (
590
+ <div className="pl-4 py-0.5 flex flex-col gap-0.5">
591
+ <DndContext
592
+ sensors={dndSensors}
593
+ collisionDetection={closestCenter}
594
+ onDragEnd={handleTeamDragEnd(team.id)}
595
+ >
596
+ <SortableContext
597
+ items={team.agents.map((a) => a.agent_id)}
598
+ strategy={verticalListSortingStrategy}
599
+ >
600
+ {team.agents.map((ta, idx) => {
601
+ const agent = participants.find((p) => p.id === ta.agent_id);
602
+ return (
603
+ <SortableTeamAgentItem
604
+ key={ta.agent_id}
605
+ ta={ta}
606
+ agent={agent}
607
+ index={idx}
608
+ onClick={() => setAgentDetailId(ta.agent_id)}
609
+ />
610
+ );
611
+ })}
612
+ </SortableContext>
613
+ </DndContext>
614
+ </div>
615
+ )}
616
+ {teamIsExpanded && team.agents.length === 0 && (
617
+ <p className="pl-6 py-0.5 text-[11px] text-slate-400">No agents</p>
618
+ )}
619
+ </div>
620
+ );
621
+ })}
622
+ <button
623
+ type="button"
624
+ className="flex items-center gap-1.5 px-2 py-1 text-[11px] text-slate-400 hover:text-slate-600 transition-colors"
625
+ onClick={() => handleCreateTeam(workspace.id)}
626
+ >
627
+ <Plus size={11} />
628
+ <span>team</span>
629
+ </button>
630
+ </div>
631
+ )}
632
+ </div>
633
+ );
634
+ })}
635
+ </nav>
636
+
637
+ <nav className="workspace-sidebar__section">
638
+ <div className="workspace-sidebar__section-header">
639
+ <Link
640
+ href="/projects"
641
+ className="workspace-sidebar__section-label hover:text-slate-700 transition-colors cursor-pointer"
642
+ >
643
+ Boards
644
+ </Link>
645
+ </div>
646
+ <div className="workspace-sidebar__workspace-list">
647
+ {projects.map((p) => (
648
+ <div key={p.slug} className="workspace-sidebar__workspace-item group">
649
+ <Link
650
+ href={`/projects/${p.slug}`}
651
+ className="workspace-sidebar__nav-item workspace-sidebar__workspace-nav-item flex items-center gap-3"
652
+ >
653
+ <Minus size={16} className="flex-shrink-0 text-slate-400" />
654
+ <span className="workspace-sidebar__workspace-title">{p.name}</span>
655
+ </Link>
656
+ </div>
657
+ ))}
658
+ </div>
659
+ </nav>
660
+ </div>
661
+
662
+ <div className="mt-auto px-3 pb-3">
663
+ <a
664
+ href="https://discord.gg/y77e9Euz"
665
+ target="_blank"
666
+ rel="noopener noreferrer"
667
+ className="flex items-center justify-center gap-2 w-full py-2 rounded-lg text-white text-sm font-medium transition-colors"
668
+ style={{ backgroundColor: '#5865F2' }}
669
+ onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#4752C4')}
670
+ onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = '#5865F2')}
671
+ >
672
+ <svg width="14" height="14" viewBox="0 0 71 55" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
673
+ <path d="M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"/>
674
+ </svg>
675
+ Join Discord
676
+ </a>
677
+ </div>
678
+
679
+ {/* Agent profiles are now at /agents/[id] */}
680
+
681
+ {/* Add Agent to Team modal */}
682
+ {addAgentModal && !creatingNewAgent && (
683
+ <div
684
+ className="fixed inset-0 z-50 flex items-center justify-center bg-black/30"
685
+ onClick={() => setAddAgentModal(null)}
686
+ >
687
+ <div
688
+ className="bg-white rounded-xl shadow-xl border border-slate-200 w-80 max-h-[70vh] flex flex-col"
689
+ onClick={(e) => e.stopPropagation()}
690
+ >
691
+ <div className="flex items-center justify-between px-4 py-3 border-b border-slate-100">
692
+ <h3 className="text-sm font-medium text-slate-900">
693
+ Add to {addAgentModalTeam?.name ?? "team"}
694
+ </h3>
695
+ <button
696
+ type="button"
697
+ className="text-slate-400 hover:text-slate-600"
698
+ onClick={() => setAddAgentModal(null)}
699
+ >
700
+ <X size={16} />
701
+ </button>
702
+ </div>
703
+ <div className="overflow-y-auto py-1 flex-1">
704
+ <button
705
+ type="button"
706
+ className="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-slate-700 hover:bg-slate-50 transition-colors border-b border-slate-100"
707
+ onClick={() => setCreatingNewAgent(true)}
708
+ >
709
+ <Plus size={14} className="text-slate-400" />
710
+ <span className="text-xs font-medium">Create new agent</span>
711
+ </button>
712
+ {addAgentModalAvailable.length === 0 ? (
713
+ <p className="px-4 py-6 text-xs text-slate-400 text-center">
714
+ All agents are already in this team
715
+ </p>
716
+ ) : (
717
+ addAgentModalAvailable.map((p) => {
718
+ const selected = addAgentSelection.has(p.id);
719
+ return (
720
+ <button
721
+ key={p.id}
722
+ type="button"
723
+ className={`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${selected ? "bg-slate-100 text-slate-900" : "text-slate-700 hover:bg-slate-50"}`}
724
+ onClick={() => {
725
+ setAddAgentSelection((prev) => {
726
+ const next = new Set(prev);
727
+ if (next.has(p.id)) next.delete(p.id);
728
+ else next.add(p.id);
729
+ return next;
730
+ });
731
+ }}
732
+ >
733
+ <div className={`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${selected ? "bg-slate-900 border-slate-900" : "border-slate-300"}`}>
734
+ {selected && (
735
+ <svg width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M2 5l2 2 4-4" stroke="white" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/></svg>
736
+ )}
737
+ </div>
738
+ <img
739
+ src={agentAvatarUrl(p.id, 24, p.color)}
740
+ alt=""
741
+ className="w-6 h-6 rounded-full flex-shrink-0"
742
+ />
743
+ <div className="min-w-0 flex-1 text-left">
744
+ <div className="truncate font-medium text-xs">{p.name}</div>
745
+ <div className="truncate text-[11px] text-slate-400">{p.model}</div>
746
+ </div>
747
+ </button>
748
+ );
749
+ })
750
+ )}
751
+ </div>
752
+ {addAgentModalAvailable.length > 0 && (
753
+ <div className="px-4 py-3 border-t border-slate-100 flex justify-end gap-2">
754
+ <button
755
+ type="button"
756
+ className="px-3 py-1.5 text-xs text-slate-500 hover:text-slate-700 transition-colors"
757
+ onClick={() => setAddAgentModal(null)}
758
+ >
759
+ Cancel
760
+ </button>
761
+ <button
762
+ type="button"
763
+ disabled={addAgentSelection.size === 0}
764
+ className="px-3 py-1.5 text-xs font-medium text-white bg-slate-900 rounded-lg hover:bg-slate-800 disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
765
+ onClick={() => {
766
+ for (const agentId of addAgentSelection) {
767
+ void onAddAgentToTeam?.(addAgentModal.teamId, agentId);
768
+ }
769
+ setAddAgentModal(null);
770
+ }}
771
+ >
772
+ Add {addAgentSelection.size > 0 ? `(${addAgentSelection.size})` : ""}
773
+ </button>
774
+ </div>
775
+ )}
776
+ </div>
777
+ </div>
778
+ )}
779
+
780
+ {/* Create New Agent modal (AgentForm) */}
781
+ {creatingNewAgent && (
782
+ <AgentForm
783
+ title="Create new agent"
784
+ initial={{ name: "", provider: "claude", model: "", identity: "", identityFile: "", skills: [], variables: {} }}
785
+ submitLabel="Create & Add"
786
+ teams={teams?.filter((t) => !t.is_default).map((t) => {
787
+ const wsName = (t.workspace_ids ?? []).map((wid) => threads.find((th) => th.id === wid)?.title?.trim()).filter(Boolean).join(", ") || "No workspace";
788
+ return { id: t.id, name: t.name, label: `${wsName} › ${t.name}` };
789
+ })}
790
+ initialTeamIds={addAgentModal ? [addAgentModal.teamId] : []}
791
+ onSubmit={async (data: AgentFormData, teamIds?: string[]) => {
792
+ const colors = ["#D97706", "#2563EB", "#059669", "#DC2626", "#7C3AED", "#DB2777", "#0891B2"];
793
+ const color = colors[participants.length % colors.length];
794
+ const id = data.name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
795
+ const firstTeamId = teamIds?.[0];
796
+ const res = await fetch("/api/participants", {
797
+ method: "POST",
798
+ headers: { "Content-Type": "application/json" },
799
+ body: JSON.stringify({
800
+ id, name: data.name, provider: data.provider, model: data.model, color,
801
+ ...(data.identity ? { identity: data.identity } : {}),
802
+ ...(data.identityFile ? { identityFile: data.identityFile } : {}),
803
+ skills: data.skills,
804
+ variables: data.variables,
805
+ ...(firstTeamId ? { teamId: firstTeamId } : {}),
806
+ }),
807
+ });
808
+ if (res.ok) {
809
+ // Add to remaining teams
810
+ for (const tid of (teamIds ?? []).slice(1)) {
811
+ void onAddAgentToTeam?.(tid, id);
812
+ }
813
+ setCreatingNewAgent(false);
814
+ setAddAgentModal(null);
815
+ }
816
+ }}
817
+ onCancel={() => { setCreatingNewAgent(false); }}
818
+ />
819
+ )}
820
+
821
+ {/* Text input modal (create/rename) */}
822
+ {inputModal && (
823
+ <div
824
+ className="fixed inset-0 z-50 flex items-center justify-center bg-black/30"
825
+ onClick={() => setInputModal(null)}
826
+ >
827
+ <div
828
+ className="bg-white rounded-xl shadow-xl border border-slate-200 w-80 flex flex-col"
829
+ onClick={(e) => e.stopPropagation()}
830
+ >
831
+ <div className="flex items-center justify-between px-4 py-3 border-b border-slate-100">
832
+ <h3 className="text-sm font-medium text-slate-900">{inputModal.title}</h3>
833
+ <button
834
+ type="button"
835
+ className="text-slate-400 hover:text-slate-600"
836
+ onClick={() => setInputModal(null)}
837
+ >
838
+ <X size={16} />
839
+ </button>
840
+ </div>
841
+ <form
842
+ className="px-4 py-4 flex flex-col gap-3"
843
+ onSubmit={(e) => {
844
+ e.preventDefault();
845
+ const fd = new FormData(e.currentTarget);
846
+ const value = (fd.get("value") as string)?.trim();
847
+ if (!value) return;
848
+ inputModal.onSubmit(value);
849
+ setInputModal(null);
850
+ }}
851
+ >
852
+ <input
853
+ ref={inputModalRef}
854
+ name="value"
855
+ type="text"
856
+ defaultValue={inputModal.defaultValue}
857
+ placeholder={inputModal.placeholder}
858
+ className="w-full px-3 py-2 text-sm border border-slate-200 rounded-lg outline-none focus:border-slate-400 focus:ring-1 focus:ring-slate-200 transition-all"
859
+ />
860
+ <div className="flex justify-end gap-2">
861
+ <button
862
+ type="button"
863
+ className="px-3 py-1.5 text-xs text-slate-500 hover:text-slate-700 transition-colors"
864
+ onClick={() => setInputModal(null)}
865
+ >
866
+ Cancel
867
+ </button>
868
+ <button
869
+ type="submit"
870
+ className="px-3 py-1.5 text-xs font-medium text-white bg-slate-900 rounded-lg hover:bg-slate-800 transition-colors"
871
+ >
872
+ {inputModal.defaultValue ? "Save" : "Create"}
873
+ </button>
874
+ </div>
875
+ </form>
876
+ </div>
877
+ </div>
878
+ )}
879
+
880
+ {/* Confirm modal (delete) */}
881
+ {confirmModal && (
882
+ <div
883
+ className="fixed inset-0 z-50 flex items-center justify-center bg-black/30"
884
+ onClick={() => setConfirmModal(null)}
885
+ >
886
+ <div
887
+ className="bg-white rounded-xl shadow-xl border border-slate-200 w-80 flex flex-col"
888
+ onClick={(e) => e.stopPropagation()}
889
+ >
890
+ <div className="flex items-center justify-between px-4 py-3 border-b border-slate-100">
891
+ <h3 className="text-sm font-medium text-slate-900">{confirmModal.title}</h3>
892
+ <button
893
+ type="button"
894
+ className="text-slate-400 hover:text-slate-600"
895
+ onClick={() => setConfirmModal(null)}
896
+ >
897
+ <X size={16} />
898
+ </button>
899
+ </div>
900
+ <div className="px-4 py-4 flex flex-col gap-4">
901
+ <p className="text-sm text-slate-600">{confirmModal.message}</p>
902
+ <div className="flex justify-end gap-2">
903
+ <button
904
+ type="button"
905
+ className="px-3 py-1.5 text-xs text-slate-500 hover:text-slate-700 transition-colors"
906
+ onClick={() => setConfirmModal(null)}
907
+ >
908
+ Cancel
909
+ </button>
910
+ <button
911
+ type="button"
912
+ className="px-3 py-1.5 text-xs font-medium text-white bg-red-600 rounded-lg hover:bg-red-700 transition-colors"
913
+ onClick={() => {
914
+ confirmModal.onConfirm();
915
+ setConfirmModal(null);
916
+ }}
917
+ >
918
+ Delete
919
+ </button>
920
+ </div>
921
+ </div>
922
+ </div>
923
+ </div>
924
+ )}
925
+
926
+ {/* Create Team modal (name + agent checklist) */}
927
+ {createTeamModal && (
928
+ <div
929
+ className="fixed inset-0 z-50 flex items-center justify-center bg-black/30"
930
+ onClick={() => setCreateTeamModal(null)}
931
+ >
932
+ <div
933
+ className="bg-white rounded-xl shadow-xl border border-slate-200 w-80 max-h-[70vh] flex flex-col"
934
+ onClick={(e) => e.stopPropagation()}
935
+ >
936
+ <div className="flex items-center justify-between px-4 py-3 border-b border-slate-100">
937
+ <h3 className="text-sm font-medium text-slate-900">Create team</h3>
938
+ <button
939
+ type="button"
940
+ className="text-slate-400 hover:text-slate-600"
941
+ onClick={() => setCreateTeamModal(null)}
942
+ >
943
+ <X size={16} />
944
+ </button>
945
+ </div>
946
+ <div className="px-4 py-3 border-b border-slate-100">
947
+ <input
948
+ ref={inputModalRef}
949
+ type="text"
950
+ value={createTeamName}
951
+ onChange={(e) => setCreateTeamName(e.target.value)}
952
+ placeholder="Team name"
953
+ className="w-full px-3 py-2 text-sm border border-slate-200 rounded-lg outline-none focus:border-slate-400 focus:ring-1 focus:ring-slate-200 transition-all"
954
+ />
955
+ </div>
956
+ <div className="overflow-y-auto py-1 flex-1">
957
+ <p className="px-4 py-1.5 text-[11px] font-medium text-slate-400 uppercase tracking-wide">Agents</p>
958
+ {participants.map((p) => {
959
+ const selected = createTeamAgents.has(p.id);
960
+ return (
961
+ <button
962
+ key={p.id}
963
+ type="button"
964
+ className={`w-full flex items-center gap-3 px-4 py-2 text-sm transition-colors ${selected ? "bg-slate-100 text-slate-900" : "text-slate-700 hover:bg-slate-50"}`}
965
+ onClick={() => {
966
+ setCreateTeamAgents((prev) => {
967
+ const next = new Set(prev);
968
+ if (next.has(p.id)) next.delete(p.id);
969
+ else next.add(p.id);
970
+ return next;
971
+ });
972
+ }}
973
+ >
974
+ <div className={`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${selected ? "bg-slate-900 border-slate-900" : "border-slate-300"}`}>
975
+ {selected && (
976
+ <svg width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M2 5l2 2 4-4" stroke="white" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/></svg>
977
+ )}
978
+ </div>
979
+ <img
980
+ src={agentAvatarUrl(p.id, 24, p.color)}
981
+ alt=""
982
+ className="w-6 h-6 rounded-full flex-shrink-0"
983
+ />
984
+ <span className="truncate text-xs font-medium">{p.name}</span>
985
+ </button>
986
+ );
987
+ })}
988
+ </div>
989
+ <div className="px-4 py-3 border-t border-slate-100 flex justify-end gap-2">
990
+ <button
991
+ type="button"
992
+ className="px-3 py-1.5 text-xs text-slate-500 hover:text-slate-700 transition-colors"
993
+ onClick={() => setCreateTeamModal(null)}
994
+ >
995
+ Cancel
996
+ </button>
997
+ <button
998
+ type="button"
999
+ disabled={!createTeamName.trim()}
1000
+ className="px-3 py-1.5 text-xs font-medium text-white bg-slate-900 rounded-lg hover:bg-slate-800 disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
1001
+ onClick={() => void handleCreateTeamSubmit()}
1002
+ >
1003
+ Create{createTeamAgents.size > 0 ? ` (${createTeamAgents.size} agents)` : ""}
1004
+ </button>
1005
+ </div>
1006
+ </div>
1007
+ </div>
1008
+ )}
1009
+
1010
+ {agentDetailAgent && (
1011
+ <AgentDetailModal
1012
+ agent={agentDetailAgent}
1013
+ teams={teams}
1014
+ onClose={() => setAgentDetailId(null)}
1015
+ onSave={onUpdateParticipant}
1016
+ onAddToTeam={onAddAgentToTeam}
1017
+ onRemoveFromTeam={onRemoveAgentFromTeam}
1018
+ />
1019
+ )}
1020
+ </aside>
1021
+ );
1022
+ }
1023
+
1024
+ // ── Agent Detail/Edit Modal ─────────────────────────────────────────────────
1025
+
1026
+ const PROVIDERS: ChatProvider[] = ["claude", "gemini", "ollama", "codex"];
1027
+
1028
+ function AgentDetailModal({
1029
+ agent,
1030
+ teams,
1031
+ onClose,
1032
+ onSave,
1033
+ onAddToTeam,
1034
+ onRemoveFromTeam,
1035
+ }: {
1036
+ agent: Participant | null;
1037
+ teams: Team[];
1038
+ onClose: () => void;
1039
+ onSave?: (updated: Participant) => Promise<unknown>;
1040
+ onAddToTeam?: (teamId: string, agentId: string) => Promise<unknown>;
1041
+ onRemoveFromTeam?: (teamId: string, agentId: string) => Promise<unknown>;
1042
+ }) {
1043
+ const [editing, setEditing] = useState(false);
1044
+ const [name, setName] = useState("");
1045
+ const [provider, setProvider] = useState<ChatProvider>("claude");
1046
+ const [model, setModel] = useState("");
1047
+ const [identity, setIdentity] = useState("");
1048
+ const [identityFile, setIdentityFile] = useState("");
1049
+ const [color, setColor] = useState("#6B7280");
1050
+ const [skills, setSkills] = useState<{ file: string; condition: string }[]>([]);
1051
+ const [variableEntries, setVariableEntries] = useState<{ key: string; value: string }[]>([]);
1052
+ const [saving, setSaving] = useState(false);
1053
+
1054
+ // Reset form when agent changes
1055
+ const resetForm = useCallback(() => {
1056
+ if (!agent) return;
1057
+ setName(agent.name);
1058
+ setProvider(agent.provider);
1059
+ setModel(agent.model ?? "");
1060
+ setIdentity(agent.identity ?? "");
1061
+ setIdentityFile(agent.identityFile ?? "");
1062
+ setColor(agent.color ?? "#6B7280");
1063
+ setSkills((agent.skills ?? []).map((s) => ({ file: s.file, condition: s.condition })));
1064
+ setVariableEntries(
1065
+ agent.variables && Object.keys(agent.variables).length > 0
1066
+ ? Object.entries(agent.variables).map(([key, value]) => ({ key, value }))
1067
+ : [{ key: "", value: "" }],
1068
+ );
1069
+ }, [agent]);
1070
+
1071
+ // Initialize on open
1072
+ useEffect(() => { resetForm(); }, [resetForm]);
1073
+
1074
+ if (!agent) return null;
1075
+
1076
+ const agentTeams = teams.filter((t) => t.agents.some((a) => a.agent_id === agent.id));
1077
+ const availableTeams = teams.filter((t) => !t.agents.some((a) => a.agent_id === agent.id));
1078
+
1079
+ const handleSave = async () => {
1080
+ if (!onSave || !name.trim() || !model.trim()) return;
1081
+ const parsedVars: Record<string, string> = {};
1082
+ for (const entry of variableEntries) {
1083
+ if (entry.key.trim()) parsedVars[entry.key.trim()] = entry.value;
1084
+ }
1085
+ setSaving(true);
1086
+ try {
1087
+ await onSave({
1088
+ ...agent,
1089
+ name: name.trim(),
1090
+ provider,
1091
+ model: model.trim(),
1092
+ color,
1093
+ skills: skills.filter((s) => s.file.trim()),
1094
+ ...(identity.trim() ? { identity: identity.trim() } : {}),
1095
+ ...(identityFile.trim() ? { identityFile: identityFile.trim() } : {}),
1096
+ ...(Object.keys(parsedVars).length > 0 ? { variables: parsedVars } : {}),
1097
+ });
1098
+ onClose();
1099
+ } finally {
1100
+ setSaving(false);
1101
+ }
1102
+ };
1103
+
1104
+ const inputClass = "w-full px-3 py-2 text-sm border border-slate-200 rounded-lg outline-none focus:border-slate-400 focus:ring-1 focus:ring-slate-200 transition-all";
1105
+ const labelClass = "text-[10px] font-medium text-slate-400 uppercase tracking-wide mb-1 block";
1106
+
1107
+ return (
1108
+ <div
1109
+ className="fixed inset-0 z-50 flex items-center justify-center bg-black/30"
1110
+ onClick={onClose}
1111
+ >
1112
+ <div
1113
+ className="bg-white rounded-xl shadow-xl border border-slate-200 w-[640px] max-h-[85vh] flex flex-col overflow-hidden"
1114
+ onClick={(e) => e.stopPropagation()}
1115
+ >
1116
+ {/* Header */}
1117
+ <div className="flex items-center justify-between px-5 py-4 border-b border-slate-100">
1118
+ <h3 className="text-sm font-medium text-slate-900">Agent Details</h3>
1119
+ <button
1120
+ type="button"
1121
+ className="text-slate-400 hover:text-slate-600 transition-colors"
1122
+ onClick={onClose}
1123
+ >
1124
+ <X size={16} />
1125
+ </button>
1126
+ </div>
1127
+
1128
+ {/* Body */}
1129
+ <div className="overflow-y-auto px-5 py-5 flex flex-col gap-4">
1130
+ {/* Avatar + Name */}
1131
+ <div className="flex items-center gap-4">
1132
+ <img
1133
+ src={agentAvatarUrl(agent.id, 64, color)}
1134
+ alt={agent.name}
1135
+ className="w-16 h-16 rounded-full bg-slate-100"
1136
+ />
1137
+ <div className="min-w-0 flex-1">
1138
+ <div className="flex flex-col gap-2">
1139
+ <input
1140
+ type="text"
1141
+ value={name}
1142
+ onChange={(e) => setName(e.target.value)}
1143
+ placeholder="Agent name"
1144
+ className={inputClass}
1145
+ />
1146
+ <div className="flex items-center gap-2">
1147
+ <label className="text-[10px] text-slate-400">Color</label>
1148
+ <input
1149
+ type="color"
1150
+ value={color}
1151
+ onChange={(e) => setColor(e.target.value)}
1152
+ className="w-6 h-6 rounded border border-slate-200 cursor-pointer p-0"
1153
+ />
1154
+ </div>
1155
+ </div>
1156
+ </div>
1157
+ </div>
1158
+
1159
+ {/* Provider + Model */}
1160
+ <div className="grid grid-cols-2 gap-3">
1161
+ <div>
1162
+ <label className={labelClass}>Provider</label>
1163
+ <select
1164
+ value={provider}
1165
+ onChange={(e) => setProvider(e.target.value as ChatProvider)}
1166
+ className={inputClass}
1167
+ >
1168
+ {PROVIDERS.map((p) => (
1169
+ <option key={p} value={p}>{p}</option>
1170
+ ))}
1171
+ </select>
1172
+ </div>
1173
+ <div>
1174
+ <label className={labelClass}>Model</label>
1175
+ <input
1176
+ type="text"
1177
+ value={model}
1178
+ onChange={(e) => setModel(e.target.value)}
1179
+ placeholder="e.g. claude-sonnet-4-20250514"
1180
+ className={`${inputClass} font-mono`}
1181
+ />
1182
+ </div>
1183
+ </div>
1184
+
1185
+ {/* Identity File */}
1186
+ <div>
1187
+ <label className={labelClass}>Identity file</label>
1188
+ <input
1189
+ type="text"
1190
+ value={identityFile}
1191
+ onChange={(e) => setIdentityFile(e.target.value)}
1192
+ placeholder="/path/to/identity.md"
1193
+ className={`${inputClass} font-mono`}
1194
+ />
1195
+ </div>
1196
+
1197
+ {/* Identity text */}
1198
+ <div>
1199
+ <label className={labelClass}>Identity prompt</label>
1200
+ <div className="border border-slate-200 rounded-lg overflow-hidden focus-within:border-slate-400 focus-within:ring-1 focus-within:ring-slate-200 transition-all">
1201
+ <RichTextEditor
1202
+ content={identity}
1203
+ onChange={(md) => setIdentity(md)}
1204
+ placeholder="System prompt / identity text…"
1205
+ />
1206
+ </div>
1207
+ </div>
1208
+
1209
+ {/* Variables */}
1210
+ <div>
1211
+ <label className={labelClass}>Variables</label>
1212
+ <div className="flex flex-col gap-2">
1213
+ {variableEntries.map((entry, i) => (
1214
+ <div key={i} className="flex items-center gap-2">
1215
+ <input
1216
+ value={entry.key}
1217
+ onChange={(e) => {
1218
+ const next = [...variableEntries];
1219
+ next[i] = { ...next[i], key: e.target.value };
1220
+ setVariableEntries(next);
1221
+ }}
1222
+ placeholder="key"
1223
+ className={`${inputClass} flex-1 font-mono !text-xs`}
1224
+ />
1225
+ <input
1226
+ value={entry.value}
1227
+ onChange={(e) => {
1228
+ const next = [...variableEntries];
1229
+ next[i] = { ...next[i], value: e.target.value };
1230
+ setVariableEntries(next);
1231
+ }}
1232
+ placeholder="value"
1233
+ className={`${inputClass} flex-1 font-mono !text-xs`}
1234
+ />
1235
+ <button
1236
+ type="button"
1237
+ onClick={() => {
1238
+ const next = variableEntries.filter((_, j) => j !== i);
1239
+ setVariableEntries(next.length ? next : [{ key: "", value: "" }]);
1240
+ }}
1241
+ className="text-slate-400 hover:text-red-500 transition-colors text-xs shrink-0"
1242
+ >
1243
+ ×
1244
+ </button>
1245
+ </div>
1246
+ ))}
1247
+ <button
1248
+ type="button"
1249
+ onClick={() => setVariableEntries([...variableEntries, { key: "", value: "" }])}
1250
+ className="text-xs text-slate-400 hover:text-slate-600 transition-colors self-start"
1251
+ >
1252
+ + Add variable
1253
+ </button>
1254
+ </div>
1255
+ <p className="text-[10px] text-slate-400 mt-1">
1256
+ {"Use {{key}} in identity or skill conditions."}
1257
+ </p>
1258
+ </div>
1259
+
1260
+ {/* Skills */}
1261
+ <div>
1262
+ <label className={labelClass}>Skills</label>
1263
+ <div className="flex flex-col gap-2">
1264
+ {skills.map((s, i) => (
1265
+ <div key={i} className="bg-slate-50 rounded-lg px-3 py-2.5 relative group/skill">
1266
+ <button
1267
+ type="button"
1268
+ className="absolute top-2 right-2 opacity-0 group-hover/skill:opacity-100 text-slate-400 hover:text-red-500 transition-all"
1269
+ onClick={() => setSkills(skills.filter((_, j) => j !== i))}
1270
+ >
1271
+ <X size={12} />
1272
+ </button>
1273
+ <div className="flex flex-col gap-1.5">
1274
+ <div>
1275
+ <label className="text-[9px] text-slate-400 uppercase tracking-wide">File path</label>
1276
+ <input
1277
+ type="text"
1278
+ value={s.file}
1279
+ onChange={(e) => {
1280
+ const next = [...skills];
1281
+ next[i] = { ...next[i], file: e.target.value };
1282
+ setSkills(next);
1283
+ }}
1284
+ placeholder="/path/to/skill.md"
1285
+ className={`${inputClass} font-mono !text-xs !py-1.5`}
1286
+ />
1287
+ </div>
1288
+ <div>
1289
+ <label className="text-[9px] text-slate-400 uppercase tracking-wide">Condition</label>
1290
+ <input
1291
+ type="text"
1292
+ value={s.condition}
1293
+ onChange={(e) => {
1294
+ const next = [...skills];
1295
+ next[i] = { ...next[i], condition: e.target.value };
1296
+ setSkills(next);
1297
+ }}
1298
+ placeholder="e.g. when editing React files"
1299
+ className={`${inputClass} !text-xs !py-1.5`}
1300
+ />
1301
+ </div>
1302
+ </div>
1303
+ </div>
1304
+ ))}
1305
+ <button
1306
+ type="button"
1307
+ className="inline-flex items-center gap-1 text-xs text-slate-500 hover:text-slate-700 transition-colors self-start px-1 py-0.5"
1308
+ onClick={() => setSkills([...skills, { file: "", condition: "" }])}
1309
+ >
1310
+ <Plus size={12} />
1311
+ Add skill
1312
+ </button>
1313
+ </div>
1314
+ </div>
1315
+
1316
+ {/* Teams (multi-team) */}
1317
+ <div>
1318
+ <label className={labelClass}>Teams</label>
1319
+ {agentTeams.length > 0 ? (
1320
+ <div className="flex flex-col gap-1">
1321
+ {agentTeams.map((t) => (
1322
+ <div key={t.id} className="flex items-center gap-2 text-xs bg-slate-50 rounded-lg px-3 py-2">
1323
+ <Users size={12} className="text-slate-400 shrink-0" />
1324
+ <span className="truncate flex-1">{t.name}</span>
1325
+ {onRemoveFromTeam && !t.is_default && (
1326
+ <button
1327
+ type="button"
1328
+ className="text-slate-400 hover:text-red-500 transition-colors"
1329
+ onClick={() => onRemoveFromTeam(t.id, agent.id)}
1330
+ title="Remove from team"
1331
+ >
1332
+ <X size={12} />
1333
+ </button>
1334
+ )}
1335
+ </div>
1336
+ ))}
1337
+ </div>
1338
+ ) : (
1339
+ <p className="text-xs text-slate-400 italic">Not in any team</p>
1340
+ )}
1341
+ {availableTeams.length > 0 && onAddToTeam && (
1342
+ <div className="mt-2 flex flex-wrap gap-1">
1343
+ {availableTeams.map((t) => (
1344
+ <button
1345
+ key={t.id}
1346
+ type="button"
1347
+ className="inline-flex items-center gap-1 text-[10px] px-2 py-1 rounded-lg border border-dashed border-slate-300 text-slate-500 hover:border-slate-400 hover:text-slate-700 transition-colors"
1348
+ onClick={() => onAddToTeam(t.id, agent.id)}
1349
+ >
1350
+ <Plus size={10} />
1351
+ {t.name}
1352
+ </button>
1353
+ ))}
1354
+ </div>
1355
+ )}
1356
+ </div>
1357
+ </div>
1358
+
1359
+ {/* Footer */}
1360
+ {onSave && (
1361
+ <div className="px-5 py-3 border-t border-slate-100 flex justify-end">
1362
+ <button
1363
+ type="button"
1364
+ disabled={saving || !name.trim() || !model.trim()}
1365
+ className="px-3 py-1.5 text-xs font-medium text-white bg-slate-900 rounded-lg hover:bg-slate-800 disabled:opacity-40 disabled:cursor-not-allowed transition-colors flex items-center gap-1"
1366
+ onClick={() => void handleSave()}
1367
+ >
1368
+ <Check size={12} />
1369
+ Save
1370
+ </button>
1371
+ </div>
1372
+ )}
1373
+ </div>
1374
+ </div>
1375
+ );
1376
+ }