@chorus-aidlc/chorus 0.16.2 → 0.16.3

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 (420) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +422 -411
  3. package/.next/standalone/.next/app-path-routes-manifest.json +48 -48
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +36 -36
  6. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  46. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  50. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  51. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
  54. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  55. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/admin/companies.html +2 -2
  57. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  58. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/admin.html +2 -2
  60. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  61. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  69. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  83. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js.nft.json +1 -1
  89. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
  96. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
  100. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
  102. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  105. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
  106. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js.nft.json +1 -1
  110. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
  112. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
  115. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
  118. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
  119. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
  121. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
  122. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
  124. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
  125. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
  128. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
  129. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
  131. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  132. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/events/route.js +1 -1
  134. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  135. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  138. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  139. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  141. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  142. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  144. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  145. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  147. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  148. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  150. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  151. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js.nft.json +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/mcp/route.js +4 -4
  161. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  162. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  164. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  165. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  168. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  170. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  171. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  173. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  174. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  176. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  177. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  179. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  182. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  183. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  185. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  186. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  189. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
  193. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js.nft.json +1 -1
  195. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  197. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  201. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  202. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  203. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  205. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  206. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  207. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route.js.nft.json +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  225. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  226. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  227. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  228. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  229. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  230. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
  231. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
  232. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  233. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  234. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  235. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  236. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  237. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  238. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  239. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  241. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  242. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  243. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  244. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  245. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  246. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  247. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  248. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  249. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  250. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  251. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  252. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  253. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  254. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  255. package/.next/standalone/.next/server/app/index.html +2 -2
  256. package/.next/standalone/.next/server/app/index.rsc +2 -2
  257. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  258. package/.next/standalone/.next/server/app/login/admin.html +2 -2
  259. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  260. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  261. package/.next/standalone/.next/server/app/login/callback.html +2 -2
  262. package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
  263. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  264. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  265. package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
  266. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
  267. package/.next/standalone/.next/server/app/login.html +2 -2
  268. package/.next/standalone/.next/server/app/login.rsc +2 -2
  269. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  270. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  271. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  272. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  273. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  274. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  275. package/.next/standalone/.next/server/app/projects.html +2 -2
  276. package/.next/standalone/.next/server/app/projects.rsc +4 -4
  277. package/.next/standalone/.next/server/app/settings.html +2 -2
  278. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  279. package/.next/standalone/.next/server/app-paths-manifest.json +48 -48
  280. package/.next/standalone/.next/server/chunks/1114.js +1 -0
  281. package/.next/standalone/.next/server/chunks/1318.js +1 -1
  282. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  283. package/.next/standalone/.next/server/chunks/2572.js +1 -1
  284. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  285. package/.next/standalone/.next/server/chunks/3594.js +1 -1
  286. package/.next/standalone/.next/server/chunks/4394.js +1 -1
  287. package/.next/standalone/.next/server/chunks/4827.js +1 -1
  288. package/.next/standalone/.next/server/chunks/5245.js +1 -1
  289. package/.next/standalone/.next/server/chunks/5351.js +1 -1
  290. package/.next/standalone/.next/server/chunks/{4011.js → 5489.js} +4 -4
  291. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  292. package/.next/standalone/.next/server/chunks/6506.js +1 -1
  293. package/.next/standalone/.next/server/chunks/6667.js +1 -1
  294. package/.next/standalone/.next/server/chunks/6995.js +1 -1
  295. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  296. package/.next/standalone/.next/server/chunks/7530.js +1 -1
  297. package/.next/standalone/.next/server/chunks/8044.js +1 -0
  298. package/.next/standalone/.next/server/chunks/920.js +1 -1
  299. package/.next/standalone/.next/server/chunks/9213.js +1 -1
  300. package/.next/standalone/.next/server/chunks/9378.js +1 -1
  301. package/.next/standalone/.next/server/chunks/951.js +1 -1
  302. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  303. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  304. package/.next/standalone/.next/server/pages/404.html +2 -2
  305. package/.next/standalone/.next/server/pages/500.html +1 -1
  306. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  307. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  308. package/.next/standalone/.next/static/chunks/11595.97e534422c57aee1.js +1 -0
  309. package/.next/standalone/.next/static/chunks/17099-936da9caf4c119b8.js +1 -0
  310. package/.next/standalone/.next/static/chunks/18609-6c859f756d530e94.js +1 -0
  311. package/.next/standalone/.next/static/chunks/19887-c0bb297a78a1c7cd.js +1 -0
  312. package/.next/standalone/.next/static/chunks/20204-90d655ea14281e10.js +1 -0
  313. package/.next/standalone/.next/static/chunks/{53402-a54163001f3d953a.js → 27370-c056dee2016c9124.js} +1 -1
  314. package/.next/standalone/.next/static/chunks/{29108-b9b232255811ffa8.js → 29108-5a11eea003f4cc11.js} +1 -1
  315. package/.next/standalone/.next/static/chunks/29305-f587e7e81bc0b200.js +10 -0
  316. package/.next/standalone/.next/static/chunks/33456.6dc44a6aca1a01fd.js +1 -0
  317. package/.next/standalone/.next/static/chunks/35432-5c245212c7595169.js +1 -0
  318. package/.next/standalone/.next/static/chunks/45024-eb7c062d13d9fe08.js +1 -0
  319. package/.next/standalone/.next/static/chunks/46294-6ae5bd0480b1820f.js +1 -0
  320. package/.next/standalone/.next/static/chunks/4860.7873ebc9ba435c8c.js +1 -0
  321. package/.next/standalone/.next/static/chunks/53073-a7ed20af6538a178.js +1 -0
  322. package/.next/standalone/.next/static/chunks/65096-f756aac39efad7a3.js +1 -0
  323. package/.next/standalone/.next/static/chunks/6603-e70ddeab6ad09c50.js +1 -0
  324. package/.next/standalone/.next/static/chunks/67580-8733964ab2c7fc0e.js +1 -0
  325. package/.next/standalone/.next/static/chunks/7777-8b1b6681256e1534.js +1 -0
  326. package/.next/standalone/.next/static/chunks/78917-1b59cbb806b3ecfc.js +1 -0
  327. package/.next/standalone/.next/static/chunks/82751-3e161e1d8dbda3ac.js +1 -0
  328. package/.next/standalone/.next/static/chunks/94643-01be319472d751b3.js +1 -0
  329. package/.next/standalone/.next/static/chunks/99373.d0e808c18408b8da.js +1 -0
  330. package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-cea0bb3e3a295bea.js → layout-b742c51c0a764daf.js} +1 -1
  331. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-974781e4886529f8.js +1 -0
  332. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/{page-007278623926490f.js → page-f636e00c28f425ea.js} +1 -1
  333. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-c004f1a194af7fa5.js +1 -0
  334. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-425acbe9ade5fa83.js +1 -0
  335. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/{page-f5a351c544ed23d7.js → page-fdd617457730a116.js} +1 -1
  336. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-6b3fb08d53826d02.js +1 -0
  337. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-0a6c2d0e1b68e0e4.js +1 -0
  338. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-58b48aa0a11603c3.js +1 -0
  339. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-286faced32c6133f.js +1 -0
  340. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-7a5ef281f6819ed4.js → page-9d79e285b6fd2f8d.js} +1 -1
  341. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-1507a761e67c2aa9.js +1 -0
  342. package/.next/standalone/.next/static/chunks/app/onboarding/page-5c82cf3abd856301.js +1 -0
  343. package/.next/standalone/.next/static/chunks/f5a9da1f-6abf712b3f684cf9.js +1 -0
  344. package/.next/standalone/.next/static/chunks/{webpack-b54e0c78eded76be.js → webpack-fa066d7ff9ab2b29.js} +1 -1
  345. package/.next/standalone/.next/static/css/5f52bd39b284ccdf.css +1 -0
  346. package/.next/standalone/package.json +3 -1
  347. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  348. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  349. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +2 -1
  350. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  351. package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +1 -1
  352. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +5 -4
  353. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  354. package/.next/standalone/public/chorus-plugin/skills/orchestrate/SKILL.md +128 -0
  355. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  356. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  357. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  358. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
  359. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
  360. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +1 -1
  361. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +1 -1
  362. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +5 -4
  363. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +1 -1
  364. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-orchestrate/SKILL.md +128 -0
  365. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
  366. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
  367. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
  368. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +1 -1
  369. package/.next/standalone/public/kiro-plugin/.kiro/steering/chorus.md +2 -1
  370. package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
  371. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  372. package/.next/standalone/public/skill/chorus/SKILL.md +2 -1
  373. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
  374. package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
  375. package/.next/standalone/public/skill/docs-chorus/SKILL.md +1 -1
  376. package/.next/standalone/public/skill/idea-chorus/SKILL.md +5 -4
  377. package/.next/standalone/public/skill/orchestrate-chorus/SKILL.md +128 -0
  378. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
  379. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  380. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  381. package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
  382. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  383. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
  384. package/cli/prompts.mjs +13 -3
  385. package/package.json +3 -1
  386. package/.next/standalone/.next/server/chunks/2463.js +0 -1
  387. package/.next/standalone/.next/server/chunks/5205.js +0 -1
  388. package/.next/standalone/.next/static/chunks/11595.b6f8ad33572b32fe.js +0 -1
  389. package/.next/standalone/.next/static/chunks/19887-9f459ee9e8d0855f.js +0 -1
  390. package/.next/standalone/.next/static/chunks/22987-8fd965ab4ff87546.js +0 -1
  391. package/.next/standalone/.next/static/chunks/33456.e8550ad410031e29.js +0 -1
  392. package/.next/standalone/.next/static/chunks/35432-ee83da56c49ef6f8.js +0 -1
  393. package/.next/standalone/.next/static/chunks/38296-316ba18af72385fb.js +0 -1
  394. package/.next/standalone/.next/static/chunks/4860.b405fc235b36271b.js +0 -1
  395. package/.next/standalone/.next/static/chunks/53073-5fd399cb25a11740.js +0 -1
  396. package/.next/standalone/.next/static/chunks/6603-07faab08560f7ecd.js +0 -1
  397. package/.next/standalone/.next/static/chunks/6698-1c55791b2d0820d5.js +0 -1
  398. package/.next/standalone/.next/static/chunks/66980-652990fcf3212c94.js +0 -10
  399. package/.next/standalone/.next/static/chunks/75137-c9e8422c9d4e1f52.js +0 -1
  400. package/.next/standalone/.next/static/chunks/7777-5dad34f6bdc13482.js +0 -1
  401. package/.next/standalone/.next/static/chunks/78917-7354d3b6908da7d1.js +0 -1
  402. package/.next/standalone/.next/static/chunks/82751-de255af4418d53e4.js +0 -1
  403. package/.next/standalone/.next/static/chunks/83285-db8ae107944eb6df.js +0 -1
  404. package/.next/standalone/.next/static/chunks/86155-c9b7c2c08d3fa80e.js +0 -1
  405. package/.next/standalone/.next/static/chunks/89836-b5ab6a0b32c54f42.js +0 -1
  406. package/.next/standalone/.next/static/chunks/94643-6d31df78aa3074b5.js +0 -1
  407. package/.next/standalone/.next/static/chunks/96170-75da13decdb6f73f.js +0 -1
  408. package/.next/standalone/.next/static/chunks/99373.9dce8f30802824fc.js +0 -1
  409. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-7462c5eb92130796.js +0 -1
  410. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-b6ecaf52f6b81ec7.js +0 -1
  411. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-82404154708e48a9.js +0 -1
  412. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-3cd46bec9383b191.js +0 -1
  413. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-6abc7d1785e2b999.js +0 -1
  414. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-7f87113e5d8bcf6e.js +0 -1
  415. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-30ab1573c4bd466f.js +0 -1
  416. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-b21d4184d9ca0b25.js +0 -1
  417. package/.next/standalone/.next/static/chunks/app/onboarding/page-3b6c54f887108635.js +0 -1
  418. package/.next/standalone/.next/static/css/893d99a21153c9b0.css +0 -1
  419. /package/.next/standalone/.next/static/{YTZwWTfE0BsJnjCDYCEHi → K8qIdwvKoIWbwQ_f01mnM}/_buildManifest.js +0 -0
  420. /package/.next/standalone/.next/static/{YTZwWTfE0BsJnjCDYCEHi → K8qIdwvKoIWbwQ_f01mnM}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4860],{4860:e=>{e.exports=JSON.parse('{"common":{"appName":"Chorus","loading":"加载中...","save":"保存","cancel":"取消","delete":"删除","edit":"编辑","create":"创建","search":"搜索","done":"完成","copy":"复制","copied":"已复制!","back":"返回","viewAll":"查看全部","showMore":"展开","showLess":"收起","signOut":"退出登录","optional":"可选","unassigned":"未分配","agent":"智能体","user":"用户","status":"状态","priority":"优先级","type":"类型","created":"创建时间","updated":"更新时间","version":"版本","description":"描述","details":"详情","content":"内容","assignment":"分配","noDescription":"暂无描述","noContent":"暂无内容","creating":"创建中...","processing":"处理中...","saving":"保存中...","claim":"认领","release":"释放","assign":"分配","reassign":"重新分配","verify":"验证","reject":"拒绝","approve":"批准","selectProject":"请先选择一个项目","assignee":"负责人","activity":"动态","noActivity":"暂无动态","source":"来源","currentAssignee":"当前负责人","failedToAssign":"分配失败","actions":"操作","genericError":"发生错误,请重试。","unknown":"未知","system":"系统","confirmDelete":"确定要删除吗?"},"theme":{"toggleLabel":"主题","light":"浅色","dark":"深色","system":"跟随系统"},"activity":{"taskCreated":"{actor} 创建了此任务","taskAssigned":"{actor} 被分配到此任务","taskClaimed":"{actor} 认领了此任务","taskStarted":"{actor} 开始处理此任务","taskSubmitted":"{actor} 提交了此任务待审核","taskCompleted":"{actor} 完成了此任务","taskReleased":"{actor} 释放了此任务","taskStatusChanged":"{actor} 更改了任务状态","ideaCreated":"{actor} 创建了此想法","ideaAssigned":"{actor} 被分配到此想法","ideaClaimed":"{actor} 认领了此想法","ideaReleased":"{actor} 释放了此想法","ideaStatusChanged":"{actor} 更改了想法状态","ideaEdited":"{actor} 编辑了想法","ideaReparented":"{actor} 更改了想法的父级","elaborationStarted":"{actor} 发起了需求澄清","elaborationAnswered":"{actor} 回答了需求澄清","elaborationSkipped":"{actor} 跳过了需求澄清","elaborationResolved":"{actor} 完成了需求澄清","elaborationFollowup":"{actor} 发起了追加需求澄清","genericAction":"{actor} 执行了 {action}","entityIdea":"想法","entityProposal":"提案","entityTask":"任务","entityDocument":"文档","entityProject":"项目","actionCreated":"创建了","actionUpdated":"更新了","actionApproved":"批准了","actionRejected":"拒绝了","actionClaimed":"认领了","actionCompleted":"完成了","actionRevoked":"已撤回","title":"动态","subtitle":"项目最近活动","noActivity":"暂无动态","noActivityDesc":"当您和智能体在此项目上工作时,动态将在此显示。","loadingActivity":"加载动态中..."},"comments":{"title":"评论","noComments":"暂无评论","addComment":"添加评论...(输入 @ 提及他人)","roleAgent":"Agent","roleHuman":"用户","onBehalfOf":"代表 {name}","showMore":"展开更多","showLess":"收起","loadError":"加载评论失败","retry":"重试","loadingMore":"加载更多...","noMoreComments":"没有更多评论"},"mentions":{"noResults":"无结果","searchPlaceholder":"输入名称以提及..."},"assign":{"selectAssignee":"选择如何分配此任务","assignToMyself":"分配给我自己","assignToMyselfDesc":"您的所有开发智能体都可以查看并处理此任务","orAssignToUser":"分配给其他用户","orAssignToAgent":"分配给特定智能体","releaseAssignee":"释放(清除负责人)","releaseAssigneeDesc":"移除当前负责人,使此任务重新可用"},"assignInstance":{"workingDirectory":"工作目录","loadingInstances":"正在加载工作目录…","noInstances":"该智能体没有在线的守护进程。任务已分配并已通知该智能体,它将在下次上线时领取。","pinNote":"自主唤醒会将此任务路由到你在此固定的确切(主机,路径)实例。只能固定在线实例。路径绝不会从项目推断。","ideaPinNote":"想法是固定的根:该智能体的提案、任务和自主唤醒都会继承你在此固定的(主机,路径)。只能固定在线实例。留空则分配给普通智能体。","assignTo":"分配到 {path}","assignToWithHost":"分配到 {path} \xb7 {host}","sendingTo":"发送到 {path}","sendingToWithHost":"发送到 {path} \xb7 {host}","liveSendNote":"立即发送指令。实时发送要求该路径处于在线状态。","offlineCantRun":"离线 — 重新连接前无法运行"},"time":{"justNow":"刚刚","minutesAgo":"{minutes}分钟前","hoursAgo":"{hours}小时前","daysAgo":"{days}天前","today":"今天","yesterday":"昨天"},"nav":{"projects":"项目","settings":"设置","overview":"概览","documents":"文档","proposals":"提案","tasks":"任务","graph":"图谱","activity":"动态","logout":"退出登录","newProject":"新建项目","backToProjects":"项目","openMenu":"打开菜单"},"priority":{"low":"低","medium":"中","high":"高","lowPriority":"低优先级","mediumPriority":"中优先级","highPriority":"高优先级","critical":"紧急","criticalPriority":"紧急优先级"},"status":{"open":"开放","active":"进行中","draft":"草稿","pending":"待审核","pendingReview":"待审核","approved":"已批准","rejected":"已拒绝","done":"已完成","inProgress":"进行中","todo":"待办","toVerify":"待验证","claimed":"已认领","current":"当前","assigned":"已分配","completed":"已完成","closed":"已关闭","elaborating":"需求澄清中","elaborated":"已细化","proposalCreated":"方案已创建","proposal_created":"方案已创建","needHumanInput":"需要人工介入","humanConductRequired":"需要指挥"},"admin":{"title":"超级管理员","dashboard":"仪表盘","welcome":"欢迎使用 Chorus 超级管理后台","email":"邮箱","emailPlaceholder":"you@company.com","password":"密码","passwordPlaceholder":"输入密码","signingIn":"登录中...","signInAsAdmin":"以超级管理员身份登录","backToEmail":"返回邮箱输入","totalCompanies":"公司总数","registeredOrgs":"已注册的组织","registeredOrgsCount":"{count} 个已注册组织","totalUsers":"用户总数","humanUsers":"所有公司的人类用户","totalAgents":"智能体总数","aiAgents":"所有公司的 AI 智能体","quickActions":"快捷操作","commonTasks":"常用管理任务","addCompany":"添加公司","addCompanyDesc":"注册新的组织","manageCompanies":"管理公司","manageCompaniesDesc":"查看和配置组织","companies":"公司","oidcRedirectUri":"OIDC 重定向 URI(回调地址)","oidcRedirectUriDesc":"在您的 OIDC 提供商中配置此 URL 作为允许的重定向 URI","tableName":"名称","tableEmailDomains":"邮箱域名","tableOidcStatus":"OIDC 状态","tableUsers":"用户","tableAgents":"智能体","tableActions":"操作","noCompanies":"暂无公司。","addFirstCompany":"添加您的第一个公司","oidcConfigured":"已配置","oidcNotConfigured":"未配置","deleteCompanyConfirm":"确定要删除「{name}」吗?此操作无法撤销。","deleteCompanyConfirmFull":"确定要删除「{name}」吗?此操作无法撤销,并将删除所有关联数据。","failedToDelete":"删除公司失败","networkError":"网络错误,请重试。","backToCompanies":"返回公司列表","deleteCompany":"删除公司","createdOn":"创建于 {date}","companyNotFound":"公司未找到","failedToLoad":"加载公司失败","failedToUpdate":"更新公司失败","companyUpdated":"公司更新成功","projects":"项目","basicInfo":"基本信息","companyName":"公司名称","emailDomains":"邮箱域名","emailDomainsPlaceholder":"acme.com, acme.org","emailDomainsHelp":"以逗号分隔的邮箱域名列表","oidcConfig":"OIDC 配置","oidcEnabled":"已启用","oidcConfigDesc":"配置 OpenID Connect (PKCE) 以实现单点登录认证。当 Issuer URL 和 Client ID 都填写后,OIDC 将自动启用。","oidcIssuerUrl":"OIDC Issuer URL","oidcIssuerUrlPlaceholder":"https://login.microsoftonline.com/tenant-id/v2.0","oidcIssuerUrlHelp":"OpenID Connect 发现端点 URL","clientId":"Client ID","clientIdPlaceholder":"例如:12345678-abcd-efgh-ijkl-123456789012","clientIdHelp":"OAuth 2.0 Client ID(PKCE 模式,无需密钥)","saveChanges":"保存更改","createCompany":"创建公司","createCompanyDesc":"设置新公司并配置 OIDC 认证","emailDomain":"邮箱域名","emailDomainHelp":"使用此邮箱域名的用户将被路由到此公司","required":"必填","companyNamePlaceholder":"例如:Acme 公司","emailDomainPlaceholder":"例如:acme.com","invalidCredentials":"凭证无效","createCompanyFailed":"创建公司失败"},"dashboard":{"title":"仪表盘","subtitle":"项目活动概览","welcome":"欢迎使用 Chorus","welcomeDesc":"创建您的第一个项目或选择现有项目开始。","viewProjects":"查看项目","createProject":"创建项目","quickActions":"快捷操作","addNewIdea":"新想法","reviewProposals":"审核提案","viewTaskBoard":"任务看板","recentActivity":"最近动态","activityPlaceholder":"动态信息将在此显示","taskPipeline":"任务流水线","totalTasks":"共 {count} 个","todoCount":"待办 ({count})","inProgressCount":"进行中 ({count})","toVerifyCount":"待验证 ({count})","doneCount":"已完成 ({count})","noRecentTasks":"暂无任务","noRecentActivity":"暂无动态","viewAll":"查看全部","settings":"设置"},"projectSettings":{"title":"项目设置","basicInfo":"基本信息","projectName":"项目名称","description":"描述","saveChanges":"保存更改","saving":"保存中...","saveSuccess":"项目已更新","saveFailed":"更新项目失败","dangerZone":"危险区域","deleteTitle":"删除此项目","deleteDescription":"永久删除此项目及其所有数据,此操作无法撤销。","agentCwds":{"title":"Agent 工作目录","description":"为此项目中的每个 Agent 固定主机和目录。","loading":"正在加载工作目录...","loadFailed":"无法加载工作目录。","empty":"暂无可用 Agent。","emptyOnline":"暂无在线 Agent。","notConfigured":"每次操作临时选择目录","configure":"配置工作目录","replace":"替换工作目录","clear":"清除固定工作目录","select":"选择目录","createFailed":"Agent 工作目录保存失败,项目未创建。","status":{"valid":"可用","offline":"主机离线","invalid":"目录不可用"}}},"fixedCwdAnchor":{"title":"固定工作目录","host":"主机","cwd":"目录","status":"状态","unknown":"未知","openAgentChat":"打开 {agent} 的对话","manage":"在项目设置中管理","availability":{"ready":"可用","offline":"主机离线","invalid":"目录不可用"}},"projects":{"title":"项目","subtitle":"管理您的项目并跟踪进度","newProject":"新建项目","noProjects":"暂无项目","noProjectsDesc":"创建您的第一个项目,开始与 AI 智能体协作。","createFirst":"创建第一个项目","onboarding":{"welcomeTitle":"欢迎使用 Chorus","welcomeDesc":"Chorus 通过项目组和项目来组织工作。让我们来设置您的工作空间。","whatIsGroupTitle":"项目组","whatIsGroupDesc":"用于归类相关项目的容器。可以理解为一个团队、产品线或计划 —— 例如「移动应用」或「Q3 发布」。","whatIsProjectTitle":"项目","whatIsProjectDesc":"实际工作发生的地方。每个项目有自己的想法、提案、文档和任务。AI 智能体在项目内协作。","step1Title":"第一步:创建项目组","step1Desc":"先组织您的工作空间。创建一个分组来归类相关项目。","step2Title":"第二步:创建项目","step2Desc":"在分组中添加一个项目。这是您收集想法和分配 AI 智能体工作的地方。","createGroupBtn":"创建项目组","agentTipTitle":"有管理员智能体?让 AI 帮你完成设置","agentTipDesc":"复制以下提示词发送给管理员智能体,自动创建项目组和项目:","agentPrompt":"请帮我设置工作空间。创建一个名为「{groupName}」的项目组,描述为「{groupDesc}」,然后在其中创建一个名为「{projectName}」的项目。","agentPromptDefault":"请帮我设置工作空间。创建一个名为「我的团队」的项目组并添加简要描述,然后在其中创建一个初始项目。","copiedPrompt":"提示词已复制!"},"ideas":"个想法","tasks":"个任务","docs":"个文档","loadingProjects":"加载项目中...","createFailed":"创建项目失败","activeProjects":"活跃项目","totalTasks":"总任务数","openProposals":"待审提案","ideasCaptured":"已收集想法","taskProgress":"任务进度","createNewProject":"创建新项目","createNewProjectDesc":"开始一个新项目并邀请团队","updated":"更新于","listView":"列表","gridView":"网格","empty":"空","complete":"完成","createNew":{"title":"创建新项目","subtitle":"设置项目详情,之后再将想法分配给 产品经理智能体","gettingStartedTitle":"开始使用","gettingStartedDesc":"填写以下基本信息。创建后,您可以添加想法并分配给 产品经理智能体生成提案。","basicInfo":"基本信息","projectName":"项目名称","projectNamePlaceholder":"例如:项目 Alpha","descriptionLabel":"描述","descriptionPlaceholder":"简要描述这个项目是关于什么的...","initialIdeas":"初始想法","initialIdeasDesc":"分享任何初始想法或需求,供 产品经理智能体在生成提案时参考","ideaPlaceholder":"例如:我们需要支持 OAuth 的用户认证...","addAnother":"添加另一个想法","documents":"文档","documentsDesc":"上传 PRD、技术设计或任何参考文档供 产品经理智能体分析","dragDrop":"拖放文件到此处,或点击浏览","fileTypes":"Markdown(.md)文档","createProject":"创建项目"}},"ideas":{"title":"想法","subtitle":"捕捉并跟踪项目想法","newIdea":"新想法","all":"全部","whatIsYourIdea":"您的想法是什么?","addMoreDetails":"添加更多详情...","noIdeas":"暂无想法","noIdeasFiltered":"暂无{status}的想法","startByAdding":"从添加您的第一个想法开始。想法可以被 AI 智能体拾取进行分析。","ideasWithStatus":"此状态的想法将在此显示。","addFirstIdea":"添加第一个想法","loadingIdeas":"加载想法中...","ideaNotFound":"想法未找到","backToIdeas":"返回想法列表","claimIdea":"认领想法","assignIdea":"分配想法","source":"来源:","assignedToMe":"分配给我","usedInProposal":"已用于提案","noIdeasWithStatus":"暂无{status}的想法","selectIdeaAssignee":"选择如何分配此想法","assignToMyselfIdeaDesc":"您的所有 产品经理智能体都可以查看并处理此想法","orAssignToPmAgent":"分配给特定 产品经理智能体","onlySelectedPmAgentCanWork":"只有选中的 产品经理智能体可以处理此想法","selectPmAgent":"选择一个 产品经理智能体","noPmAgentsAvailable":"没有可用的 产品经理智能体","releaseIdeaAssigneeDesc":"移除当前负责人,使此想法重新可用","proposalGenerated":"已生成提案","viewProposal":"查看提案","assignedTo":"分配给","titleLabel":"标题","submit":"提交","editIdea":"编辑想法","saveChanges":"保存更改","titleRequired":"标题不能为空","updateFailed":"更新想法失败","deleteIdea":"删除想法","deleteIdeaConfirm":"确定要删除「{title}」吗?此操作无法撤销。","createFailed":"创建想法失败","noProjectsFound":"未找到项目","moveFailed":"移动想法失败","moving":"移动中...","ungrouped":"未分组","actions":{"move":"移动到项目..."},"moveDialog":{"title":"将 Idea 移动到其他项目","description":"选择目标项目。关联的提案、文档、任务以及活动记录都会随这个 Idea 一起迁移。","targetProjectLabel":"目标项目","targetProjectPlaceholder":"选择一个项目...","searchProjects":"搜索项目...","previewLoading":"正在计算影响范围...","previewSummary":"将一并移动:{ideas} 个 idea(含派生)、{proposals} 个提案、{documents} 个文档、{tasks} 个任务、{activities} 条活动。","previewWarning":"此操作不可撤销。","confirm":"确认移动","cancel":"取消","error":"移动失败:{message}","successToast":"已移动 {ideas} 个 idea — 更新 {proposals} 个提案、{documents} 个文档、{tasks} 个任务、{activities} 条活动。","viewMovedIdea":"查看"}},"tasks":{"title":"任务","subtitle":"任务管理看板","newTask":"新任务","agentHours":"智能体工时总计","noTasks":"暂无任务","loadingTasks":"加载任务中...","taskNotFound":"任务未找到","backToTasks":"返回任务列表","claimTask":"认领任务","assignTask":"分配任务","statusProgress":"状态进度","subtasks":"子任务","parentTask":"父任务","storyPoints":"故事点","acceptanceCriteria":"验收标准","startWork":"开始工作","submitForReview":"提交验证","markAsVerified":"标记为已验证","taskCompleted":"任务已完成","noActionsAvailable":"无可用操作","onlySelectedAgentCanWork":"仅选定的智能体可以处理此任务","selectAgent":"选择智能体","selectUser":"选择用户","noAgentsAvailable":"暂无可用的智能体","noUsersAvailable":"暂无其他用户","editTask":"编辑任务","createTaskTitle":"创建任务","deleteTask":"删除任务","deleteTaskConfirm":"确定要删除「{title}」吗?此操作无法撤销。","titleLabel":"标题","titleRequired":"标题不能为空","descriptionLabel":"描述","priorityLabel":"优先级","storyPointsLabel":"故事点(小时)","acceptanceCriteriaLabel":"验收标准","saveChanges":"保存更改","createFailed":"创建任务失败","updateFailed":"更新任务失败","dependencies":"依赖关系","dependsOn":"依赖于","blockedByThis":"被此任务阻塞","noDependencies":"无依赖","addDependency":"添加依赖","failedToAddDep":"添加依赖失败","failedToRemoveDep":"移除依赖失败","noTasksToDisplay":"暂无任务","kanbanView":"看板","dagView":"DAG","listView":"列表","allStatuses":"全部","dependencyBlocked":"依赖未完成","dependencyBlockedDescription":"此任务有未完成的前置依赖。在依赖未完成时开始工作可能会导致问题。","forceMove":"强制移动","forceMoveConfirm":"确定要将此任务移动到进行中吗?其前置依赖尚未完成。","blockerList":"阻塞任务","blockedTooltip":"被 {count} 个未完成的依赖阻塞","blockedBy":"阻塞于:{tasks}","noActiveSession":"无活跃会话","forceStatusChange":"强制状态变更","proposalFilter":{"label":"提案","allProposals":"所有提案","clear":"清除","search":"搜索提案...","taskCount":"{count} 个任务","filtered":"{filtered} / {total} 个提案","noResults":"未找到提案","filteredSubtitle":"显示 {filtered} / {total} 个任务(已筛选)"}},"proposals":{"pageTitle":"提案","subtitle":"审核和批准 AI 生成的提案","all":"全部","pendingReview":"待审核","noProposals":"暂无提案","noProposalsDesc":"当 产品经理智能体分析想法时会创建提案。它们将在此显示供您审核。","loadingProposals":"加载提案中...","proposalNotFound":"提案未找到","backToProposals":"返回提案列表","sourceIdea":"来源想法","sourceIdeas":"来源想法","noSourceIdeas":"无来源想法","awaitingReview":"等待您的审核","reviewInstructions":"审核内容并批准或拒绝此提案。","basedOn":"基于","documentDrafts":"文档草稿","documents":"文档","taskDrafts":"任务草稿","tasks":"任务","emptyContainer":"此提案容器为空。请添加文档或任务。","inputType":"输入类型","creatorType":"创建者类型","containerSummary":"容器摘要","inputs":"输入","discussion":"讨论","reviewInfo":"审核信息","reviewedBy":"审核人","reviewedAt":"审核时间","reviewNote":"审核备注","requestChanges":"请求修改","approveProposal":"批准提案","approveProposalDesc":"可选填备注给提案创建者(例如给 Agent 的指示)。","approveNotePlaceholder":"添加备注(可选)...","rejectProposal":"拒绝提案","rejectProposalDesc":"请填写拒绝此提案的原因。","rejectReasonPlaceholder":"请输入拒绝原因...","rejectionReason":"拒绝原因","createProposal":"创建提案","basicInfo":"基本信息","title":"标题","titlePlaceholder":"输入提案标题...","descriptionPlaceholder":"描述这个提案是关于什么的...","selectSourceIdeas":"选择来源想法","noAvailableIdeas":"没有可用的想法。您需要先认领一个想法。","titleRequired":"标题是必填的","selectAtLeastOneIdea":"请至少选择一个想法","createFailed":"创建提案失败","createAndEdit":"创建并编辑","addDocumentDraft":"添加文档","addTaskDraft":"添加任务","editDraft":"编辑","deleteDraft":"删除","documentType":"文档类型","documentTitle":"文档标题","documentContent":"内容(Markdown)","taskTitle":"任务标题","taskDescription":"描述","taskPriority":"优先级","taskStoryPoints":"故事点(小时)","taskAcceptanceCriteria":"验收标准","submitForReview":"提交审核","draftNotice":"此提案为草稿状态。添加内容后可提交审核。","draftStatus":"草稿","confirmSubmit":"提交此提案进行审核?","confirmSubmitDesc":"一旦提交,在审核完成前将无法编辑提案内容。","completed":"已完成","typeNewDocument":"新文档","typeDocumentUpdate":"文档更新","typeTaskBreakdown":"任务拆分","typeDocumentAndTasks":"文档 + 任务","tasksCount":"{count} 个任务","closeProposal":"关闭提案","closeProposalDesc":"关闭提案后将无法再编辑。请填写关闭原因。","closeReasonPlaceholder":"请输入关闭原因...","closedNotice":"此提案已被永久关闭。","revokeProposal":"撤回批准","revokeProposalDesc":"此操作将关闭所有由此提案生成的任务,并删除所有生成的文档。提案将回退为草稿状态。","revokeReasonPlaceholder":"请输入撤回原因...","revokeTasksToClose":"将关闭 {count} 个任务","revokeDocsToDelete":"将删除 {count} 个文档","failedToSaveDocDraft":"保存文档草稿失败","failedToSaveTaskDraft":"保存任务草稿失败","docTypePrd":"PRD","docTypeTechDesign":"技术设计","docTypeAdr":"ADR","docTypeSpec":"规格说明","docTypeGuide":"指南","docSubtitlePrd":"产品需求文档","docSubtitleTechDesign":"技术设计文档","docSubtitleAdr":"架构决策记录","docSubtitleSpec":"规格说明书","docSubtitleGuide":"指南","acCount":"{count} AC","depCount":"{count} 依赖","storyPointsPlaceholder":"例如 4","cardsView":"卡片","dependencyExists":"此依赖关系已存在","cyclicDependency":"无法添加依赖:会产生循环","failedToAddDependency":"添加依赖失败","taskDraftDetails":"任务草稿详情","newTaskDraft":"新建任务草稿","editTaskDraft":"编辑","deleteTaskDraft":"删除任务草稿","deleteTaskDraftConfirm":"确定要删除此任务草稿吗?","dependsOn":"依赖任务","noDependencies":"无依赖关系","addDependency":"添加依赖","selectDependency":"选择任务...","removeDependency":"移除","viewMode":"查看","taskDraftSaved":"任务草稿已保存","deleteProposal":"删除提案","deleteProposalDesc":"确定要删除此提案吗?此操作无法撤销。"},"proposalValidation":{"title":"提交检查清单","passed":"所有检查已通过","hasErrors":"请先修复错误再提交","loading":"正在检查...","error":"错误","warning":"警告","info":"提示","errorCount":"{count} 个错误","warningCount":"{count} 个警告","E1":"必须包含至少一个 PRD 文档","E2":"文档「{title}」内容不足(最少 100 个字符)","E3":"必须包含至少一个任务","E4":"必须关联至少一个 Idea","E5":"Idea「{title}」尚未完成需求澄清","W1":"建议添加技术设计文档","W2":"任务「{title}」缺少描述","E-AC":"任务「{title}」缺少验收标准","W4":"存在多个任务但未定义依赖关系","W5":"Proposal 缺少描述","I1":"任务「{title}」未设置优先级","I2":"任务「{title}」未设置故事点"},"documents":{"title":"文档","subtitle":"PRD、规格说明和项目文档","newDocument":"新文档","all":"全部","noDocuments":"暂无文档","noDocumentsDesc":"当提案被批准时会创建文档。您也可以手动创建文档。","createDocument":"创建文档","loadingDocuments":"加载文档中...","documentNotFound":"文档未找到","backToDocuments":"返回文档列表","updated":"更新于 {date}","sourceProposal":"来源提案","viewProposal":"查看提案","versionHistory":"版本历史","previousVersions":"个历史版本","documentContent":"文档内容...","saveChanges":"保存更改","titleLabel":"标题","titleRequired":"标题不能为空","titlePlaceholder":"输入文档标题","typeLabel":"类型","uploadMarkdown":"Markdown 文件(可选)","clickToUpload":"点击上传 Markdown 文件","characters":"个字符","createFailed":"创建文档失败","typePrd":"PRD","typeSpec":"技术规格","typeDesign":"设计文档","typeTechDesign":"技术设计","typeAdr":"ADR","typeGuide":"指南","typeNote":"笔记","typeReport":"总结报告","typeOther":"其他","deleteDocument":"删除文档","deleteDocumentDescription":"此操作将永久删除文档「{title}」,无法恢复。","deleteSuccess":"文档已删除。","deleteFailed":"删除文档失败。","deleteFailedNotFound":"该文档已不存在。"},"references":{"title":"参考资料","empty":"链接官方文档、参考实现或 issue 讨论,为它提供佐证。","loading":"加载参考资料中...","add":"添加","addReference":"添加参考资料","editReference":"编辑参考资料","deleteReference":"删除参考资料","deleteConfirm":"此操作将永久删除参考资料「{title}」,无法恢复。","typeLabel":"类型","typeDocs":"文档","typeRepo":"代码仓库","typeIssuePr":"Issue / PR","typePaperBlog":"论文 / 博客","urlLabel":"链接","urlPlaceholder":"https://example.com/...","urlRequired":"链接不能为空","titleLabel":"标题","titlePlaceholder":"输入简短的标题","titleRequired":"标题不能为空","notesLabel":"备注","notesPlaceholder":"可选的摘要或相关性说明","addFailed":"添加参考资料失败","updateFailed":"更新参考资料失败","deleteFailed":"删除参考资料失败","countLabel":"{count, plural, other {# 条参考资料}}","toggleNotes":"显示完整说明"},"export":{"exportDocument":"导出","exportAs":"导出为 {format}","formatMd":"Markdown (.md)","formatPdf":"PDF (.pdf)","formatDocx":"Word (.docx)","exporting":"导出中...","exportSuccess":"文档导出成功","exportError":"文档导出失败","fetchingContent":"加载文档中..."},"settings":{"title":"设置","subtitle":"管理您的账户和智能体配置","breadcrumb":"Chorus / 设置","language":"语言","languageDesc":"选择您的首选语言","agents":"智能体","agentsDesc":"创建 API 密钥,让您的个人智能体访问 Chorus。每个密钥可以分配不同的角色。","createApiKey":"创建 API 密钥","noApiKeys":"暂无 API 密钥。创建一个开始使用。","roles":"角色:","developerAgent":"开发智能体","developerAgentDesc":"执行任务、编写代码、报告问题、提交代码","pmAgent":"产品经理智能体","pmAgentDesc":"分析需求、撰写提案、管理任务","adminAgent":"管理员智能体","adminAgentDesc":"人类级别权限:审批提案、验证任务、创建项目","created":"创建于","apiKeyCreated":"API 密钥已创建","apiKeyCreatedDesc":"请立即复制此密钥。您将无法再次查看它!","installGuideIntro":"现在就连接你的智能体——在下方选择你的客户端。上方密钥已嵌入到代码片段中,且不会再次显示。","name":"名称","namePlaceholder":"我的智能体密钥","agentAvatarPreview":"头像预览","agentRoles":"智能体角色","agentRolesDesc":"选择此 API 密钥可以访问的角色。","agentPersona":"智能体人设","agentPersonaDesc":"选择预设或编写您自己的人设。这定义了智能体在所有交互中的行为方式。","agentPersonaDescNoRoles":"定义此智能体在所有交互中的行为方式。","personaPlaceholder":"描述此智能体应如何行为。例如:\'您是一个专注于清晰和简洁的助手...\'","personaHint":"人设会在每次 check-in 时自动注入到智能体的上下文。","personaHintNoRoles":"为您的智能体编写自定义人设。","creating":"创建中...","confirmDelete":"确定要删除此 API 密钥吗?","confirmDeleteTitle":"删除 API 密钥","confirmDeleteDesc":"确定要删除此 API 密钥吗?此操作无法撤销。","editAgent":"编辑智能体","saveChanges":"保存更改","saving":"保存中...","editAgentDesc":"更新此智能体的名称、角色和人设。","updateSuccess":"智能体更新成功","updateFailed":"更新智能体失败","setupGuide":"设置向导","setupGuideDesc":"逐步设置您的 AI 智能体连接","openSetupGuide":"打开设置向导","effectivePermissions":"生效的权限","noEffectivePermissions":"尚未授予任何权限","customRole":"自定义"},"login":{"title":"Chorus","subtitle":"AI 与人类协作平台","email":"邮箱","emailPlaceholder":"you@company.com","continue":"继续","checking":"检查中...","helpText":"输入您的邮箱以登录或创建账户","networkError":"网络错误,请重试。","processingLogin":"正在处理登录...","sessionExpired":"会话已过期,请重新登录。","completingAuth":"正在完成认证...","registeringUser":"正在注册用户...","loginSuccess":"登录成功!正在跳转...","authFailed":"认证失败","backToLogin":"返回登录","noOrganizationFound":"未找到该邮箱对应的组织","defaultAuth":{"title":"登录","email":"邮箱","password":"密码","submit":"登录","error":"邮箱或密码错误","ssoLink":"使用 SSO 登录","orDivider":"或"},"pickWorkspace":{"title":"选择一个 workspace","subtitle":"该邮箱关联 {count} 个 workspace,请选择一个登录。","differentEmail":"换个邮箱","loading":"加载 workspace...","noCandidates":"未找到该邮箱对应的 workspace。","errorLoading":"加载 workspace 失败,请重试。"},"rolePicker":{"title":"该邮箱有多种登录方式,请选择如何继续。","superAdmin":"以超级管理员身份登录","regularUser":"使用密码登录","oidcCompany":"使用 {company} 登录","oidcCompanyFallback":"使用 SSO 登录","back":"换个邮箱"}},"projectOverview":{"loadingProject":"加载项目中...","notFoundTitle":"项目未找到","backToProjects":"返回项目列表","settings":"设置","quickActions":"快捷操作","addIdea":"添加想法","viewKanban":"查看看板","browseDocuments":"浏览文档","ideasSubtext":"{open} 待处理, {inProgress} 进行中","tasksSubtext":"{open} 待处理, {toVerify} 待验证","documentsSubtext":"PRD、规格说明、笔记","proposalsSubtext":"{pending} 待审核","deleteProject":"删除项目","deleteProjectConfirm":"确定要删除「{name}」吗?此操作无法撤销,将永久删除所有关联的想法、提案、任务、文档和动态。"},"personas":{"devPm":"开发导向产品经理","devPmDesc":"您是一位优先考虑开发者体验并构建开发者优先产品的产品经理。您理解技术约束,并能与工程团队有效沟通。","fullPm":"全能产品经理","fullPmDesc":"您是一位全面的产品经理,以构建能为目标受众解决实际问题的产品为己任。您平衡业务目标、用户需求和技术可行性。","simplePm":"简约产品经理","simplePmDesc":"您是一位专注的产品经理,优先考虑核心功能,避免过度设计。您相信快速交付、收集反馈、快速迭代。","seniorDev":"高级开发者","seniorDevDesc":"您是一位经验丰富的高级软件开发者,擅长构建可扩展的系统。您编写简洁、可维护的代码并遵循最佳实践。您指导初级开发者并做出架构决策。","fullstackDev":"全栈开发者","fullstackDevDesc":"您是一位多才多艺的全栈开发者,能够在整个技术栈中自如工作。您可以构建 API、设计数据库和创建响应式 UI。您优先考虑用户体验和性能。","pragmaticDev":"务实开发者","pragmaticDevDesc":"您是一位务实的开发者,专注于快速交付可工作的解决方案。您避免过早优化,为关键路径编写测试,并偏好简单解决方案而非复杂抽象。","carefulAdmin":"谨慎管理员","carefulAdminDesc":"您是一位谨慎的管理员,在批准前会仔细审查所有提案和任务。您会验证验收标准是否满足,检查潜在问题,并记录您的推理过程。如有疑问,您更倾向于询问澄清而非盲目批准。","efficientAdmin":"高效管理员","efficientAdminDesc":"您是一位高效的管理员,在保持质量标准的同时简化审批流程。您信任团队的工作,但仍会进行必要的检查。您专注于快速解除阻塞,同时确保满足基本质量要求。"},"sessions":{"title":"会话","activeSessions":"活跃会话","noSessions":"近 1 小时内无活跃会话","close":"关闭","reopen":"重新打开","closeConfirm":"确定要关闭此会话吗?","statusActive":"活跃","statusInactive":"不活跃","statusClosed":"已关闭","activeWorkers":"活跃工作者","workerCount":"{count} 个工作者","checkedInSince":"签入于 {time}","lastActive":"最后活跃 {time}","checkins":"{count} 个任务"},"pixelCanvas":{"title":"工作区"},"notifications":{"title":"通知","markAllRead":"全部标记已读","noNotifications":"暂无通知","noUnread":"没有未读通知","viewAll":"查看全部","tabAll":"全部","tabUnread":"未读","justNow":"刚刚","minutesAgo":"{count} 分钟前","hoursAgo":"{count} 小时前","daysAgo":"{count} 天前","projectBadge":"项目","notificationPreferences":"通知偏好","loadMore":"加载更多","viewDetail":"查看","types":{"proposal_approved":"提案已通过","proposal_rejected":"提案已拒绝","proposal_submitted":"提案已提交","task_assigned":"任务已分配给你","task_status_changed":"任务状态已变更","task_submitted_for_verify":"任务已提交验证","task_verified":"任务已验证","task_reopened":"任务已重新打开","comment_added":"新评论","idea_claimed":"想法已认领","elaboration_requested":"需求澄清已请求","elaboration_answered":"需求澄清已回答","mentioned":"你被提及了","agent_checkin":"Agent 已成功连接","report_created":"新报告"},"preferences":{"title":"通知偏好","description":"配置哪些事件触发通知","taskEvents":"任务事件","proposalEvents":"提案事件","ideaEvents":"想法事件","commentEvents":"评论事件","taskAssigned":"任务分配","taskStatusChanged":"任务状态变更","taskVerified":"任务验证","taskReopened":"任务重新打开","proposalSubmitted":"提案提交","proposalApproved":"提案通过","proposalRejected":"提案拒绝","ideaClaimed":"想法认领","commentAdded":"新增评论","elaborationEvents":"需求澄清事件","elaborationRequested":"需求澄清请求","elaborationAnswered":"需求澄清回答","mentionEvents":"提及事件","mentioned":"在评论或内容中被提及"}},"elaboration":{"title":"需求澄清","answeredCounter":"已回答 {answered} / {total}","roundLabel":"第 {number} 轮","validated":"已验证","pendingAnswers":"待回答","statusAnswered":"已回答","appendedBadge":"后续补充","noAnswer":"未回答","otherOption":"其他","otherPlaceholder":"请说明...","submitAnswers":"提交回答","confirmAnswerAria":"确认回答","submitting":"提交中...","submitFailed":"提交回答失败","navCounter":"{current} / {total}","questionCount":"{count} 个问题","somethingElse":"其他答案","skipButton":"跳过需求澄清","skipConfirmTitle":"跳过需求澄清?","skipConfirmDescription":"这将跳过结构化问答,直接将需求标记为已澄清。仅建议在需求非常明确时跳过。","skipReasonLabel":"跳过原因","skipReasonPlaceholder":"例如:有明确复现步骤的bug修复","skipReasonRequired":"请提供跳过原因","verifyButton":"完成细化","verifying":"确认中...","verifyFailed":"确认细化失败","verifiedQueuedHint":"已确认 — 智能体上线后将撰写方案。","category":{"functional":"功能性","nonFunctional":"非功能性","businessContext":"业务背景","technicalContext":"技术背景","userScenario":"用户场景","scope":"范围"}},"startDevelopment":{"button":"开始开发","starting":"启动中...","startedHint":"开发已启动 —— agent 正在执行剩余任务","offlineHint":"Agent 离线,重连后可用","errorAgentOffline":"该 agent 当前离线,请等它重新连接后再开始开发。","errorInstanceOffline":"该 idea 已固定到一个离线的 daemon 实例,请等该实例重新连接后再开始开发。","errorFixedCwdHostOffline":"该项目固定工作目录所在的主机当前离线,请等该主机重新连接后再开始开发。","errorNoApprovedProposal":"该 idea 还没有已批准的 proposal","errorNoUnfinishedTasks":"所有任务都已完成","errorAssigneeNotAgent":"该 idea 的负责人不是 agent","errorGeneric":"开始开发失败"},"yolo":{"button":"Yolo","cancel":"取消","confirmTitle":"对这个 idea 执行 Yolo?","confirmDescription":"Yolo 会唤醒被分配的 agent,按 yolo skill 全自动把这个 idea 推进到完成 —— 需求澄清、方案、执行、验收。未经你确认不会合并或推送 PR。是否继续?","confirmCta":"执行 Yolo","starting":"启动中...","startedHint":"Yolo 已启动 —— agent 正在推进这个 idea 到完成","offlineHint":"Agent 离线,重连后可用","errorAgentOffline":"该 agent 当前离线,请等它重新连接后再执行 Yolo。","errorInstanceOffline":"该 idea 已固定到一个离线的 daemon 实例,请等该实例重新连接后再执行 Yolo。","errorFixedCwdHostOffline":"该项目固定工作目录所在的主机当前离线,请等该主机重新连接后再执行 Yolo。","errorAssigneeNotAgent":"该 idea 的负责人不是 agent","errorGeneric":"启动 Yolo 失败"},"projectGroups":{"newProjectGroup":"新建项目组","projectCount":"个项目","complete":"完成","openIdeas":"个待处理想法","viewDashboard":"查看仪表盘","ungrouped":"未分组","noProjectsInGroup":"此组中暂无项目。","newGroupTitle":"新建项目组","groupName":"组名称","groupNamePlaceholder":"例如:移动应用","descriptionOptional":"描述(可选)","descriptionPlaceholder":"简要描述此分组...","createGroup":"创建分组","createFailed":"创建项目组失败","newProjectTitle":"新建项目","creatingIn":"创建到:{groupName}","projectTitle":"项目标题","projectTitlePlaceholder":"例如:项目 Alpha","projectDescriptionPlaceholder":"简要描述此项目...","createProject":"创建项目","moveTitle":"将项目移动到其他分组?","moveDescription":"将「{projectName}」从 {sourceGroupName} 移动到 {targetGroupName} 分组。","confirmMove":"确认移动","moveFailed":"移动项目失败","manageGroup":"管理分组","saveChanges":"保存更改","saving":"保存中...","cancel":"取消","deleteGroup":"删除此分组","deleteConfirmTitle":"确定要删除吗?","deleteConfirmDesc":"此操作不可撤销。请选择如何处理分组内的项目。","deleteKeepProjects":"将 {count, plural, one {# 个项目} other {# 个项目}} 移至未分组","deleteWithProjects":"永久删除 {count, plural, one {# 个项目} other {# 个项目}}","confirmDelete":"删除分组","deleting":"删除中..."},"groupDashboard":{"subtitle":"{count, plural, one {# 个项目} other {# 个项目}} \xb7 聚合仪表盘","editGroup":"编辑分组","manageProjects":"管理项目","statProjects":"项目","statTotalTasks":"总任务数","statCompletionRate":"完成率","statOpenIdeas":"待处理想法","statActiveProposals":"活跃提案","projectsInGroup":"此分组中的项目","newProject":"新建项目","projectStats":"{tasks} 个任务 \xb7 {completion}% 完成","noProjects":"此分组中暂无项目","noProjectsHint":"点击上方「新建项目」添加"},"acceptanceCriteria":{"title":"验收标准","noItems":"暂无结构化验收标准","status":{"pending":"待处理","passed":"通过","failed":"未通过","notStarted":"未开始","inProgress":"进行中"},"acceptanceStatus":{"not_started":"未开始","in_progress":"进行中","passed":"全部通过","failed":"未通过"},"required":"必需","optional":"可选","devSelfCheck":"开发自检","verification":"验证","evidence":"依据","pass":"通过","fail":"不通过","undoVerification":"撤销","devEvidence":"开发依据","verifyEvidence":"验证依据","noEvidence":"暂无依据","dismiss":"知道了","progress":"已验证 {passed}/{total}","requiredProgress":"必需项 {passed}/{required} 已通过","gateBlocked":"无法验证:{count} 项必需标准尚未通过","gateReady":"所有必需标准已通过","addCriterion":"添加标准","removeCriterion":"移除","criterionPlaceholder":"描述验收标准...","atLeastOneRequired":"至少需要一条非空的验收标准。"},"onboarding":{"skip":"暂时跳过","next":"下一步","back":"返回","steps":{"welcome":"欢迎","createAgent":"创建智能体","copyKey":"复制密钥","installGuide":"安装","testConnection":"测试","completion":"完成"},"welcome":{"title":"欢迎使用 Chorus","description":"Chorus 是一个 AI 与人类协作平台。AI 智能体提出方案,人类验证 — 通过结构化的开发生命周期。","getStarted":"开始使用","pipelineTitle":"AI 驱动开发生命周期","pipeline":{"idea":"想法","proposal":"方案","task":"任务","execute":"执行","verify":"验证","done":"完成"}},"completion":{"title":"一切就绪!","description":"您的智能体已配置完成,可以开始协作了。创建一个项目或探索设置来开始使用。","summary":"配置摘要","agentName":"智能体名称","agentRoles":"角色","agentPreset":"预设","agentPermissions":"权限","permissionsCount":"{count} 项权限","goToProjects":"前往项目","goToSettings":"前往设置"},"createAgent":{"title":"创建您的 AI 智能体","description":"设置一个具有匹配您工作流程的权限和人设的 AI 智能体。这将为智能体生成一个 API 密钥。","nameLabel":"智能体名称","namePlaceholder":"例如:my-dev-agent","personaLabel":"人设(可选)","personaPlaceholder":"描述该智能体的行为方式——语气、优先级、约束。","personaHint":"人设会追加到智能体的系统提示词中,用于塑造其行为。","submit":"创建智能体","creating":"正在创建..."},"copyKey":{"title":"复制您的 API 密钥","description":"请将此 API 密钥保存到安全的地方。您需要它来配置 AI 智能体客户端。","warning":"请立即复制此密钥。此后将无法再次查看!","copy":"复制密钥","copied":"已复制!"},"install":{"description":"选择您的 AI 智能体客户端,然后按照以下说明进行设置。","tabs":{"claudeCode":"Claude Code","codex":"Codex","kiro":"Kiro","opencode":"OpenCode","openClaw":"OpenClaw","other":"其他智能体"},"claudeCode":{"step1Title":"第 1 步:设置环境变量","step1Tip":"提示:将这些添加到 ~/.bashrc 或 ~/.zshrc 以实现持久化。","step2Title":"第 2 步:打开 Claude Code 并运行"},"codex":{"step1Title":"第 1 步:设置环境变量","step1Tip":"提示:将这些添加到 ~/.bashrc 或 ~/.zshrc 以实现持久化。","step2Title":"第 2 步:运行 Codex 安装脚本","step2Tip":"脚本会自动注册 plugin marketplace 并写入 ~/.codex/config.toml 的 MCP 服务器配置。","step3Title":"第 3 步:验证连接","step3Desc":"打开 Codex,让它 check in 到 Chorus,例如输入 \\"check in to chorus\\"。"},"kiro":{"step1Title":"第 1 步:设置环境变量","step1Tip":"提示:将这些添加到 ~/.bashrc 或 ~/.zshrc,Kiro CLI 会在启动时读取这两个变量。","step2Title":"第 2 步:运行 Kiro 安装脚本","step2Tip":"默认全局安装到 ~/.kiro/,Chorus 在任意目录下均可用。若只想安装到当前项目目录下的 .kiro/,请追加参数:bash -s -- --workspace。","step3Title":"第 3 步:验证连接","step3Desc":"打开 Kiro CLI 并激活 /chorus-idea 技能,或直接以 Chorus agent 启动:kiro-cli --agent chorus。"},"opencode":{"step1Title":"第 1 步:设置环境变量","step1Tip":"提示:将这些添加到 ~/.bashrc 或 ~/.zshrc,插件会在 OpenCode 启动时读取这两个变量。","step2Title":"第 2 步:启用 Chorus 插件","step2Tip":"安装脚本会幂等地把 \\"opencode-chorus\\" 加入 ~/.config/opencode/opencode.json 的 \\"plugin\\" 数组,不会修改你的 shell rc。OpenCode 首次启动时 Bun 会自动安装该插件。","step3Title":"第 3 步:验证连接","step3Desc":"打开 OpenCode,告诉 agent \\"check in to chorus\\"。连接成功后本步骤会自动跳转。","troubleshootingTitle":"故障排除","issueCache":{"title":"插件未加载","fix":"清空插件缓存:`rm -rf ~/.cache/opencode/packages/opencode-chorus@latest`,然后重启 OpenCode。"},"issueEnv":{"title":"环境变量未生效","fix":"确认启动 OpenCode 的 shell 已 export CHORUS_URL 和 CHORUS_API_KEY。如有需要,先 re-source 一下 shell rc。"},"issueCheckin":{"title":"check-in 无响应","fix":"核对 CHORUS_API_KEY 是否有错字或多余空格。如果插件仍然加载失败,尝试升级 OpenCode。"}},"openClaw":{"step1Title":"第 1 步:安装插件","step2Title":"第 2 步:编辑 ~/.openclaw/openclaw.json","step3Title":"第 3 步:重启 OpenClaw 网关","step3Desc":"重启 OpenClaw 网关进程以加载新的配置。","step4Title":"第 4 步:验证连接","step4Desc":"在 OpenClaw 聊天窗口中,输入以下命令:","troubleshootingTitle":"故障排除","troubleshootingError":"\\"Wake agent failed: HTTP 405\\"","troubleshootingFix":"此错误表示 hooks 未启用。请在 openclaw.json 配置中将 \\"hooks.enabled\\" 设置为 true,然后重启网关。"},"other":{"description":"复制以下提示词并发送给您的 AI 智能体以配置 Chorus 连接。"}},"testConnection":{"title":"测试连接","waiting":"等待智能体连接...","waitingFor":"正在监听 {name} 的签到","connected":"智能体连接成功!","checkinHint":"复制以下提示词并发送给你的智能体,以验证连接:","checkinPrompt":"请连接到 Chorus 并执行 chorus_checkin() 验证连接。"},"placeholder":{"createAgent":"此步骤将用于创建 AI 智能体。即将推出。","copyKey":"此步骤将用于复制 API 密钥。即将推出。","installGuide":"此步骤将引导您完成安装。即将推出。","testConnection":"此步骤将测试智能体连接。即将推出。"}},"ideaTracker":{"overview":"总览","overviewSubtitle":"追踪想法、提案和任务进展","tabs":{"ideas":"想法","lineage":"血缘","stats":"统计"},"badge":{"open":"待开始","researching":"调研中","answerQuestions":"回答问题","planning":"规划中","reviewProposal":"审批提案","building":"开发中","verifyWork":"验收成果","done":"已完成","closed":"已关闭"},"status":{"todo":"待处理","inProgress":"进行中","humanConductRequired":"需要指挥","done":"已完成"},"lineage":{"derivedCount":"{count} 派生","title":"派生关系","derivedFrom":"派生自","setParent":"挂父","changeParent":"更改父级","derivedIdeas":"派生想法","derive":"派生","deriveIdea":"派生新想法","noParent":"无父级","setParentTitle":"设置父想法","setParentDescription":"为「{title}」选择一个父想法。只能选择同一项目内的想法;想法不能挂在自己或自己的后代之下(会形成环)。","searchPlaceholder":"搜索想法...","detach":"脱钩(变为顶层)","cycleBlocked":"后代 \xb7 会成环","cycleWarning":"灰显的想法是当前想法的后代,选择它们会形成环,因此已被禁用。","noCandidates":"该项目内没有可选的想法","pickerTruncated":"仅显示前 200 个想法。如果没看到想要的父级,请用标题搜索缩小范围。","save":"设为父想法","saveFailed":"设置父级失败","deriveFailed":"派生想法失败","container":"主题","containerDescription":"主题用于归拢一组相关的子想法、确立共同方向。它可以细化,但真正的交付发生在你从它派生的子想法里——主题本身不写提案。","containerBadge":"主题","typeIdea":"想法","typeTheme":"主题","makeContainer":"设为主题","containerHint":"主题通过派生子想法向前推进。","childrenDone":"{done}/{total} 已完成"},"actions":{"newIdea":"新建想法","untitledIdea":"未命名想法","search":"搜索想法...","retry":"重试","assign":"分配","reassign":"重新分配"},"empty":{"noIdeas":"暂无想法","getStarted":"想法会经过需求细化、提案和任务执行——从创建第一个想法开始","noResults":"没有匹配的想法","groupEmpty":"此状态下暂无想法"},"newIdea":{"title":"新建想法","ideaTitle":"标题","titlePlaceholder":"你的想法是什么?","description":"描述","descriptionPlaceholder":"添加背景、目标或其他有助于说明想法的细节...","modeForm":"填写表单","modeConversation":"对智能体描述","modeConversationOfflineHint":"对智能体描述需要一个在线的守护进程。","decompose":"帮我拆解为子想法","decomposeHint":"创建一个主题,并让智能体提出候选子想法供你确认。"},"error":{"loadFailed":"加载想法失败","createFailed":"创建想法失败"},"loading":"加载中...","justNow":"刚刚","minutesAgo":"{minutes}分钟前","hoursAgo":"{hours}小时前","daysAgo":"{days}天前","stats":{"totalIdeas":"想法总数","totalTasks":"任务总数","totalProposals":"提案总数","totalDocuments":"文档总数","openCount":"{count} 个待处理","activeCount":"{count} 个进行中","pendingCount":"{count} 个待审核","taskPipeline":"任务流水线","totalCount":"共 {count} 个","todoCount":"待处理:{count}","inProgressCount":"进行中:{count}","toVerifyCount":"待验证:{count}","doneCount":"已完成:{count}","noTasks":"暂无任务","recentActivity":"最近活动","viewAll":"查看全部","noActivity":"暂无活动"},"panel":{"notFound":"未找到想法","loadFailed":"加载想法失败","verifyingPlaceholder":"验证进行中...","donePlaceholder":"此想法已完成。","elaborationStatus":"细化状态","elaborationRounds":"细化问答","elaborationNotStarted":"尚未开始","elaborationNotStartedDesc":"分配给智能体以开始需求细化。","elaborationWaiting":"等待智能体","elaborationWaitingDesc":"产品经理智能体将很快开始细化。","elaboration":{"pendingAnswers":"待回答","validating":"验证中","resolved":"已完成"},"noProposals":"暂无与此想法关联的提案","viewProposal":"查看完整提案","tabs":{"overview":"概览","elaboration":"需求细化","proposal":"提案","tasks":"任务","activity":"动态"},"timeline":{"ideaCreated":"创建 Idea","elaboration":"需求细化","proposal":"提案","tasksProgress":"任务进度","noElaboration":"未开始","elaborationComplete":"已完成({count} 个问题)","elaborationInProgress":"进行中","elaborationSkipped":"已跳过","noProposal":"尚未创建","proposalApproved":"已批准","proposalsApproved":"{count}/{total} 已批准","proposalPending":"待审核","proposalDraft":"草稿","proposalRejected":"已拒绝","tasksComplete":"{done}/{total} 已完成","noTasks":"暂无任务","createdBy":"由 {name} 创建","documents":"{count} 个文档","tasks":"{count} 个任务","rounds":"{count} 轮问答","moreItems":"+{count} 更多"},"taskList":{"inProgress":"进行中","toVerify":"待验证","open":"待处理","done":"已完成","noTasks":"暂无可用任务","assigned":"已分配","closed":"已关闭","summary":"{done}/{total} 任务完成","acSummary":"{passed}/{total} 验收通过","agentWorking":"{count} 个 Agent 正在工作","workersActive":"{count} 个工作者","viewKanban":"看板"},"activityTab":{"activity":"动态","comments":"评论"}}},"search":{"placeholder":"搜索任务、想法、提案、文档...","scopeGlobal":"全局","scopeGroup":"分组","scopeProject":"当前项目","filterAll":"全部","filterTasks":"任务","filterIdeas":"想法","filterProposals":"提案","filterDocuments":"文档","filterProjects":"项目","noResults":"未找到结果","resultCount":"{count} 个结果","entityType":{"task":"任务","idea":"想法","proposal":"提案","document":"文档","project":"项目","project_group":"分组"}},"agent":{"permissions":{"title":"权限","description":"从预设开始,或直接自定义权限矩阵。","presetLabel":"预设","presetAdmin":"管理员","presetPm":"产品经理","presetDev":"开发者","presetCustom":"自定义","resourceHeader":"资源","resources":{"idea":"想法","proposal":"提案","document":"文档","task":"任务","project":"项目"},"actions":{"read":"读取","write":"写入","admin":"管理"},"help":{"admin":"对所有资源拥有完整权限,包含审批 / 验收 / 重开。推荐用于管理员 Agent。","pm":"推进工作:管理想法、提案、文档、任务、项目。没有审批或验收权限。","dev":"执行工作:可读取想法、提案、文档与项目;可创建与更新任务。无审批或验收权限。","custom":"自由勾选权限位。只有在自定义模式下,才能开启「管理」列的审批 / 验收 / 关闭动作。"}}},"idea":{"reportsList":"总结报告","reportsAcrossProposals":"覆盖所有已审批提案"},"agentConnections":{"title":"智能体连接","subtitle":"在你名下、实时连接到 Chorus 的本地智能体。仅展示你自己的连接。","summary":"{online} / {total} 在线","loading":"正在加载连接...","railHeader":"连接","statusOnline":"在线","statusOffline":"离线","fieldHost":"主机","fieldUptime":"在线时长","fieldLastActive":"最近活跃","fieldStarted":"启动于","hostUnknown":"未知主机","startedUnknown":"未知","versionUnknown":"?","unknownAgent":"未命名智能体","clientClaudeCode":"Claude Code","clientOpenclaw":"OpenClaw","clientCodex":"Codex","clientKiro":"Kiro","clientUnknown":"未知客户端","uptimeMonoDays":"{days}天 {time}","mobileBack":"返回连接列表","selectPrompt":"选择一个连接以查看详情。","execTitle":"执行状态","execRunning":"正在运行","execQueued":"排队中","execInterrupted":"已打断","execInterruptedUser":"已打断","execInterruptedCrash":"已崩溃","execCrashExited":"异常退出","execWaiting":"等待中","execLoading":"正在加载执行状态...","execElapsedLabel":"已运行时长","execSession":"Idea:{idea}","execEmptyTitle":"暂无运行中的任务","execEmptyBody":"该连接当前没有正在处理或排队的工作。派发的工作会在 daemon 接手时显示在这里。","empty":{"title":"暂无智能体连接"},"loadErrorTitle":"无法加载连接","loadErrorBody":"无法连接到连接服务。这是加载失败,并非列表为空——你的智能体可能仍在线。正在自动重试。","execEntityUnknown":"未知资源","execConversation":"对话","entityTask":"任务","entityIdea":"想法","entityProposal":"提案","entityDocument":"文档","entityUnknown":"资源","interrupt":"打断","interrupting":"正在打断…","interruptAria":"打断此正在运行的执行","interruptConfirmTitle":"确定打断此执行?","interruptConfirmBody":"这会停止 daemon 中针对「{title}」正在运行的会话。系统会先请求智能体优雅停止,若未停止则强制结束。之后你可以在本页恢复它。","interruptConfirmAction":"打断","interruptSuccess":"已请求打断「{title}」。","interruptError":"请求打断失败,请重试。","resume":"恢复","resuming":"正在恢复…","resumeAria":"恢复这个已打断的执行","resumeSuccess":"已请求恢复「{title}」。","resumeError":"请求恢复失败,请重试。","sendInstruction":"发送指令","sendInstructionPlaceholder":"为这个会话输入一条指令…","send":"发送","instructionHint":"按 Cmd/Ctrl + Enter 发送。","instructionCounter":"{count} / {max}","instructionError":"指令发送失败,请重试。","instructionEmpty":"请先输入指令再发送。","instructionTooLong":"指令过长。请精简到 {max} 个字符以内。","originOnlineTag":"源端在线","originOfflineTag":"源端离线","originOffline":"该会话的源端守护进程已离线,因此为只读状态。请改为开启一个新会话。","noOnlineConnection":"该智能体没有可发送的在线连接。请先启动它的守护进程,再发送指令。","targetConversation":"会话","newConversation":"新会话","sessionIdeaLabel":"想法 {id}","sessionAdHocLabel":"会话 {id}","adHocTitle":"开启新会话","adHocBody":"选择一个在线连接并发送第一条指令。新会话会在该连接的启动目录中运行。","pickConnection":"连接","pickConnectionPlaceholder":"选择一个在线连接","startSession":"开启会话","adHocSessionStarted":"会话已开启,智能体稍后会接手。","entityConversation":"对话"},"daemonChat":{"title":"对话","subtitle":"逐回合查看智能体做了什么。可在对话内继续发送或中断。","agentSelectLabel":"智能体","agentSelectPlaceholder":"选择一个智能体","agentSessionCount":"{count, plural, other {# 个对话}}","listHeader":"对话","loadMore":"加载更多","loadEarlier":"加载更早的消息","loadingEarlier":"正在加载更早…","transcriptLoading":"正在加载记录…","mobileBack":"对话","conversationAdHoc":"对话 {id}","conversationIdea":"想法 {id}","badgeIdea":"想法","running":"运行中","runningElapsedLabel":"本次运行已用时","statusActive":"进行中","statusEnded":"已结束","statusInterrupted":"已打断","statusError":"错误","turnStatusPending":"排队中","turnStatusRunning":"运行中","turnStatusInterrupted":"已中断","turnStatusEnded":"已结束","turnStatusMerged":"已合并","triggerTask":"任务","triggerMention":"提及","triggerElaboration":"澄清","triggerInstruction":"指令","triggerResume":"恢复","triggerElaborationVerified":"已验证","triggerStartDevelopment":"开发","triggerYoloRequested":"Yolo","triggerUnknown":"回合","turnLabel":"第 {seq} 回合","usageBadgeLabel":"{total} tok","usageBadgeAria":"Token 消耗:{total} tokens(输入 + 输出)","usageInput":"输入","usageOutput":"输出","usageCacheRead":"缓存读取","usageCacheWrite":"缓存写入","usageModel":"模型","conversationUsageAria":"对话 Token 消耗:{total} tokens(输入 + 输出)","openTask":"打开任务","openIdea":"打开想法","roleYou":"你","roleAgent":"智能体","turnNoMessages":"该回合没有保留对话记录。","turnMergedNote":"已并入一个合并处理的回合。","turnMergedCount":"合并了 {count} 个事件","turnEndedNoReply":"本回合未收到 agent 的回复。","turnRelayFailed":"agent 已回复,但回复未能上传到 Chorus:","privacyNote":"对话记录由智能体的守护进程上报,可能包含本地文件路径。仅保留最近的消息。","noAgents":{"title":"暂无对话","body":"当智能体被唤醒时(因任务、提及、澄清或你发送的指令),它的对话会显示在这里。"},"noSessions":{"title":"该智能体暂无对话","body":"在下方输入框发送一条指令以开启对话。"},"newConversationButton":"新建对话","newConversationTitle":"新建对话","newConversationBody":"向 {agent} 发送第一条指令。它会在你选择的连接上开启一个新会话。","newConversationNoAgent":"先在左侧选择一个智能体,然后发送第一条指令以开启对话。","newConversationNoOnlineTitle":"没有在线连接","newConversationNoOnlineBody":"该智能体当前没有在线的守护进程可对话。请先启动它的守护进程,再在此发送指令。","replyPlaceholder":"在此对话中回复…","selectPrompt":"选择一个对话以查看其记录。","loadErrorTitle":"无法加载该对话","loadErrorBody":"无法连接到记录服务。这是加载问题,而非空对话。重新打开时会自动重试。","originOfflineNote":"该对话的来源守护进程已离线,因此为只读。历史记录仍会显示;如需发送,请在某个在线目录中继续。","continueOnlineAction":"在在线目录中继续","continueOnlineHelp":"保留本对话,并在该智能体的某个在线工作目录中继续。它会在该目录中以全新状态接续(上方历史记录将保留为只读上下文)。","continueOnlineStarted":"正在该在线目录中继续","detailsLabel":"连接详情","detailsHostUnknown":"未知主机","detailUptime":"运行时长","detailHost":"主机","detailStarted":"启动于","copySessionId":"复制 session ID","sessionIdCopied":"已复制!"},"agentPresence":{"online":"在线","onlineUnit":"{count, plural, other {智能体在线}}","loading":"正在检查智能体…","unavailable":"智能体不可用","pillAria":"在线智能体 — 打开详情","popoverTitle":"在线智能体","connectionIdle":"空闲 — 没有正在运行或排队的工作。","openChat":"打开会话","openPixelWorkspace":"打开像素工作区","unknownPath":"未知路径","unknownHost":"未知主机","drilldown":{"instancesCount":"{count, plural, other {# 个实例}}","hostsCount":"{count, plural, other {# 台主机}}","expandAgent":"展开 {agent} 的工作目录","collapseAgent":"收起 {agent} 的工作目录","idle":"空闲","runningFor":"运行中 \xb7 {time}","queuedCount":"{count, plural, other {# 个排队}}","offlineSince":"离线 \xb7 {time}","fieldPath":"工作目录"}},"transcriptHeader":{"cwdAriaLabel":"工作目录","hostAriaLabel":"主机"},"conversationalEntry":{"noOnlineDaemon":"当前没有在线的智能体守护进程。启动一个即可用对话方式描述你的想法:","agentLabel":"智能体","agentPlaceholder":"选择智能体","instanceLabel":"工作目录","pickAgentFirst":"先选择一个智能体,查看它在线的工作目录。","placeholder":"描述你想做什么——接下来交给智能体…","charCounter":"{count} / {max}","connectionWentOffline":"该守护进程刚刚离线了。请换一个实例后重试。","sendError":"无法联系到智能体,请重试。","send":"发送给智能体","retry":"重试"},"daemonConnectCta":{"headline":"下一步:让你的智能体保持在线","body":"运行一个常驻守护进程,让你的智能体保持在线并自动接收派发的工作。","bodyLong":"安装插件只是建立一次性连接,并不能让智能体常驻在线。在终端运行一个常驻守护进程,智能体才会保持连接并自动接收派发的工作。","loginNote":"首次使用?先用 {command} 登录一次。","copy":"复制","copied":"已复制!","learnMore":"了解如何连接智能体"},"mention":{"online":"在线","offline":"离线","activeCount":"进行中 {count}","idle":"空闲","openConversation":"打开对话","host":"主机","workingDirectory":"工作目录","badgeAria":"{name} — {status}"},"mentionInstance":{"title":"选择工作目录?","subtitle":"{name} 在 {hosts, plural, other {# 台主机}}上有 {count, plural, other {# 个在线实例}}。","confirm":"固定实例","cancel":"取消","noInstances":"没有在线实例"},"wakeCwdPicker":{"title":"选择要运行的工作目录","subtitle":"{name} 在 {hosts, plural, other {# 台主机}}上有 {count, plural, other {# 个在线实例}}。请选择要固定并唤醒的实例。","confirm":"固定并继续","cancel":"取消","browseAnother":"浏览其他目录","registeredDirectories":"已注册目录","useOnce":"仅用于本次操作"},"directoryBrowser":{"chooseHost":"选择主机","unknownHost":"未知主机","chooseDirectorySource":"选择工作目录来源","daemonCwd":"Daemon 当前工作目录","configuredCwd":"Daemon 配置目录","customCwd":"此主机上的其他目录","pathPrefix":"目录路径前缀","pathPlaceholder":"/home/user/project","browseRoot":"浏览根目录","loadingRoots":"正在加载允许的根目录…","loadingCandidates":"正在加载目录建议","parent":"返回上一级目录","browse":"浏览目录","noHosts":"此 Agent 暂无在线主机。","empty":"没有匹配的目录。","selection":"已选目录","errors":{"HOST_OFFLINE":"所选主机已离线,请选择其他主机。","TIMEOUT":"主机未响应,请重试。","INVALID_PATH":"请输入有效的绝对路径。","OUTSIDE_ROOT":"该路径不在主机允许浏览的根目录内。","NOT_DIRECTORY":"所选路径不是目录。","ACCESS_DENIED":"Daemon 无法访问该目录。","STALE_TARGET":"选择已失效,请重新浏览并选择。","LIMIT_EXCEEDED":"匹配项过多,请输入更具体的前缀。","INTERNAL_ERROR":"无法加载目录,请重试。"}},"graph":{"title":"图谱","subtitle":"本项目想法、提案、任务与文档的思维导图。","emptyTitle":"暂时没有可绘制的内容","emptyDesc":"当本项目出现想法、提案、任务或文档后,它们将以相互连接的思维导图展现在这里。","loading":"正在加载图谱…","loadFailed":"无法加载项目图谱。","expandAll":"全部展开","collapseAll":"全部收起","filters":{"idea":"想法","proposal":"提案","task":"任务","document":"文档"},"nodeType":{"idea":"想法","proposal":"提案","task":"任务","document":"文档"},"edgeKind":{"derive":"派生","lineage":"脉络","depends":"依赖"},"controls":{"open":"显示图谱控制面板","close":"隐藏图谱控制面板"},"search":{"placeholder":"搜索节点…","clear":"清除搜索","noMatches":"无匹配结果","count":"{current} / {total}","prev":"上一个匹配","next":"下一个匹配"},"tooltip":{"loading":"加载中…"},"zoom":{"in":"放大","out":"缩小","fit":"适应视图"},"status":{"unknown":"未知"}},"quickAccess":{"title":"最近项目","pin":"置顶","unpin":"取消置顶","pinProject":"置顶 {name}","unpinProject":"取消置顶 {name}","pinToSidebar":"置顶到侧边栏","removeFromRecent":"从最近移除","moreActions":"{name} 的更多操作"},"resourceLinks":{"github":"GitHub","docs":"文档","githubAria":"打开 Chorus GitHub 仓库(在新标签页打开)","docsAria":"打开 Chorus 文档站(在新标签页打开)"}}')}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[53073],{6985:(e,s,t)=>{t.d(s,{A:()=>a});let a=(0,t(66206).A)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]])},70633:(e,s,t)=>{t.d(s,{A:()=>a});let a=(0,t(66206).A)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},76295:(e,s,t)=>{t.d(s,{w:()=>r});var a=t(52217);let r=(0,a.createServerReference)("60e4db282ffdb69809bc1527ff70bd7cda1a30d436",a.callServer,void 0,a.findSourceMapURL,"addTaskDependencyAction")},79507:(e,s,t)=>{t.d(s,{v:()=>ew});var a=t(90508),r=t(1856),i=t(91814),n=t(39268),c=t(76111),l=t(9160),d=t(5616),o=t(70633),u=t(57893),m=t(56770),x=t(85226),p=t(62898),h=t(42533),g=t(1861),f=t(66206);let v=(0,f.A)("timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]]);var b=t(17475),j=t(60532),N=t(94903),k=t(62482),A=t(6985);let y=(0,f.A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);var w=t(97413),F=t(57731),C=t(48416),S=t(22922),E=t(14554),D=t(15972),_=t(88064),R=t(64993),T=t(91846),U=t(51817),q=t(73693),M=t(91385),B=t(94643),L=t(29532),P=t(52217);let z=(0,P.createServerReference)("60085cf2dc6b6b2eca85087f6e36fe88f7ae106ce0",P.callServer,void 0,P.findSourceMapURL,"updateTaskStatusAction"),I=(0,P.createServerReference)("40150c206e8475c08ea39db0d6a22483abf92a0db7",P.callServer,void 0,P.findSourceMapURL,"createTaskAction"),$=(0,P.createServerReference)("400e21e11daad80005ff6d3a1f194d50f5eac3a81a",P.callServer,void 0,P.findSourceMapURL,"updateTaskFieldsAction"),V=(0,P.createServerReference)("6030b8b3cdbd5f40e4d56fdee7577d2e2bfa958229",P.callServer,void 0,P.findSourceMapURL,"deleteTaskAction"),W=(0,P.createServerReference)("60da44504661507e458433c7f312d9012b7530f018",P.callServer,void 0,P.findSourceMapURL,"markCriteriaAction"),J=(0,P.createServerReference)("6017a574e628e89283bc3d363440d2253b66c3dc0f",P.callServer,void 0,P.findSourceMapURL,"resetCriterionAction");var O=t(6603),H=t(80973);let G=(0,P.createServerReference)("4073516afd19f22e176da5a707ea05752b7c6a6f22",P.callServer,void 0,P.findSourceMapURL,"getTaskActivitiesAction"),X=(0,P.createServerReference)("4004319439155ab80f24ac48906cd7a23f99f2b8d8",P.callServer,void 0,P.findSourceMapURL,"getTaskSourceAction");var Z=t(97261),K=t(13108),Q=t(30028),Y=t(17722),ee=t(41033),es=t(78307),et=t(24900),ea=t(6930);let er=(0,P.createServerReference)("0079fb11c347a940597d65edf0d91166f53290dcda",P.callServer,void 0,P.findSourceMapURL,"getDeveloperAgentsAction"),ei=(0,P.createServerReference)("60adf0fc17efe5a4dadfd19574e8188b9ec919df1b",P.callServer,void 0,P.findSourceMapURL,"getAgentInstancesAction"),en=(0,P.createServerReference)("404bc2b80c47c7e598b53134e22f1bb93a1b95aeef",P.callServer,void 0,P.findSourceMapURL,"claimTaskAction"),ec=(0,P.createServerReference)("70ed37b33bc2784a742d324135b9b65e778a4e73e1",P.callServer,void 0,P.findSourceMapURL,"claimTaskToAgentAction"),el=(0,P.createServerReference)("60c2a3434a3f5522ef19ffaa36f6a07295f4ffbe91",P.callServer,void 0,P.findSourceMapURL,"claimTaskToUserAction"),ed=(0,P.createServerReference)("40e4f84451d92a3ccc554a833d99b35ae9631ad5f2",P.callServer,void 0,P.findSourceMapURL,"releaseTaskAction");function eo(e){var s,t;let{task:c,projectUuid:l,currentUserUuid:d,onClose:o}=e,u=(0,n.c)(),m=(0,i.r)(),[p,h]=(0,r.useState)(!1),[g,f]=(0,r.useState)("self"),[v,b]=(0,r.useState)(""),[j,k]=(0,r.useState)(""),[A,y]=(0,r.useState)([]),[w,F]=(0,r.useState)([]),[C,E]=(0,r.useState)(!0),[D,R]=(0,r.useState)(null),[U,q]=(0,r.useState)([]),[B,L]=(0,r.useState)(!1),[P,z]=(0,r.useState)(null),[I,$]=(0,r.useState)(null),V=!!c.assignee;(0,r.useEffect)(()=>{!async function(){E(!0);let e=await er();y(e.agents||[]),F((e.users||[]).filter(e=>e.uuid!==d)),E(!1)}()},[d]),(0,r.useEffect)(()=>{if("agent"!==g||!v){q([]),$(null),z(null);return}let e=!1;return L(!0),$(null),ei(v,l).then(s=>{e||(q((0,es.C)(s.instances)),z(s.resolvedTarget))}).finally(()=>{e||L(!1)}),()=>{e=!0}},[l,g,v]);let W=null!=(t=U.find(e=>e.connectionUuid===I))?t:null,J=new Set(U.map(e=>e.host)).size>1,O=async()=>{let e;if(h(!0),R(null),"self"===g)e=await en(c.uuid);else if("agent"===g&&v){var s;e=await ec(c.uuid,v,null!=(s=null==W?void 0:W.agentInstanceUuid)?s:void 0)}else if("user"===g&&j)e=await el(c.uuid,j);else{if("release"!==g)return void h(!1);e=await ed(c.uuid)}h(!1),(null==e?void 0:e.success)?(o(),m.refresh()):(null==e?void 0:e.error)&&R(e.error)},H="self"===g||"agent"===g&&v||"user"===g&&j||"release"===g&&V;return(0,a.jsxs)(Y._8,{open:!0,onOpenChange:e=>{e||o()},className:"bg-card sm:max-w-[400px]",header:(0,a.jsx)(Y.AI,{className:"text-base font-semibold text-foreground",children:u("tasks.assignTask")}),footer:(0,a.jsxs)("div",{className:"flex w-full items-center justify-end gap-4",children:[(0,a.jsx)(S.$,{variant:"outline",onClick:o,disabled:p,className:"border-border",children:u("common.cancel")}),(0,a.jsx)(S.$,{onClick:O,disabled:p||!H,className:"bg-primary hover:bg-[#B56A42] text-white",children:p?(0,a.jsx)(x.A,{className:"h-4 w-4 animate-spin"}):"release"===g?u("common.release"):function(){if("agent"!==g||!W)return u("common.assign");let e=(0,et.kn)(W.cwd),s=e.isUnknown?u(e.label):e.label,t=(0,et.g9)(W.host),a=t.isUnknown?u(t.label):t.label;return J?u("assignInstance.assignToWithHost",{path:s,host:a}):u("assignInstance.assignTo",{path:s})}()})]}),bodyClassName:"space-y-4",children:[(0,a.jsxs)("div",{className:"rounded-lg bg-background p-3",children:[(0,a.jsx)("p",{className:"text-[13px] font-medium text-foreground",children:c.title}),c.description&&(0,a.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground line-clamp-2",children:c.description})]}),V&&(0,a.jsx)("div",{className:"rounded-lg bg-[#E3F2FD] dark:bg-[#13253a] p-3",children:(0,a.jsxs)("p",{className:"text-xs text-[#1976D2] dark:text-[#5AA9F0]",children:[u("common.currentAssignee"),": ",(0,a.jsx)("span",{className:"font-medium",children:null==(s=c.assignee)?void 0:s.name})]})}),D&&(0,a.jsx)("div",{className:"rounded-lg bg-[#FEE2E2] dark:bg-[#331619] p-3",children:(0,a.jsx)("p",{className:"text-xs text-[#D32F2F] dark:text-[#F08078]",children:D})}),(0,a.jsx)("p",{className:"text-[13px] text-muted-foreground",children:u("assign.selectAssignee")}),C?(0,a.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,a.jsx)(x.A,{className:"h-6 w-6 animate-spin text-[#9A9A9A]"})}):(0,a.jsxs)(ee.z,{value:g,onValueChange:e=>f(e),className:"space-y-3",children:[(0,a.jsxs)("div",{className:"rounded-[10px] p-4 transition-colors cursor-pointer ".concat("self"===g?"bg-[#FDF8F6] dark:bg-[#201d1b] border-2 border-primary":"bg-card border border-border hover:border-primary/50"),onClick:()=>f("self"),children:[(0,a.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,a.jsx)(ee.C,{value:"self",id:"self",className:"border-primary text-primary"}),(0,a.jsx)(_.J,{htmlFor:"self",className:"text-sm font-medium text-foreground cursor-pointer",children:u("assign.assignToMyself")})]}),(0,a.jsx)("p",{className:"mt-2 ml-6 text-xs text-muted-foreground leading-relaxed",children:u("assign.assignToMyselfDesc")})]}),(0,a.jsxs)("div",{className:"rounded-[10px] p-4 transition-colors ".concat("agent"===g?"bg-[#FDF8F6] dark:bg-[#201d1b] border-2 border-primary":"bg-card border border-border"),children:[(0,a.jsxs)("div",{className:"flex items-center gap-2.5 cursor-pointer",onClick:()=>f("agent"),children:[(0,a.jsx)(ee.C,{value:"agent",id:"agent",className:"border-primary text-primary"}),(0,a.jsx)(_.J,{htmlFor:"agent",className:"text-sm font-medium text-foreground cursor-pointer",children:u("assign.orAssignToAgent")})]}),(0,a.jsx)("p",{className:"mt-2 ml-6 text-xs text-muted-foreground leading-relaxed",children:u("tasks.onlySelectedAgentCanWork")}),"agent"===g&&(0,a.jsxs)("div",{className:"mt-3 ml-6 space-y-3",children:[(0,a.jsxs)(T.l6,{value:v,onValueChange:b,children:[(0,a.jsx)(T.bq,{className:"w-full border-border",children:(0,a.jsx)(T.yv,{placeholder:u("tasks.selectAgent")})}),(0,a.jsx)(T.gC,{className:"z-[120]",children:A.length>0?A.map(e=>(0,a.jsx)(T.eb,{value:e.uuid,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(M.AgentAvatar,{name:e.name,size:16,className:"rounded-full"}),(0,a.jsx)("span",{children:e.name})]})},e.uuid)):(0,a.jsx)("div",{className:"px-3 py-2 text-xs text-[#9A9A9A]",children:u("tasks.noAgentsAvailable")})})]}),v&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:u("assignInstance.workingDirectory")}),B?(0,a.jsxs)("div",{className:"flex items-center gap-2 py-2 text-xs text-[#9A9A9A]",children:[(0,a.jsx)(x.A,{className:"h-3.5 w-3.5 animate-spin"}),u("assignInstance.loadingInstances")]}):(null==P?void 0:P.source)==="project_fixed"?(0,a.jsx)(ea.Y,{target:P}):0===U.length?(0,a.jsx)("p",{className:"rounded-lg bg-background p-2.5 text-[11px] leading-relaxed text-muted-foreground",children:u("assignInstance.noInstances")}):(0,a.jsx)(es.O,{instances:U,selectedConnectionUuid:I,onSelect:e=>$(e.connectionUuid),ariaLabel:u("assignInstance.workingDirectory")}),(null==P?void 0:P.source)!=="project_fixed"&&(0,a.jsxs)("div",{className:"flex items-start gap-1.5 text-[11px] leading-relaxed text-[#9A8C7E]",children:[(0,a.jsx)(Q.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0","aria-hidden":!0}),(0,a.jsx)("span",{children:u("assignInstance.pinNote")})]})]})]})]}),(0,a.jsxs)("div",{className:"rounded-[10px] p-4 transition-colors ".concat("user"===g?"bg-[#FDF8F6] dark:bg-[#201d1b] border-2 border-primary":"bg-card border border-border"),children:[(0,a.jsxs)("div",{className:"flex items-center gap-2.5 cursor-pointer",onClick:()=>f("user"),children:[(0,a.jsx)(ee.C,{value:"user",id:"user",className:"border-primary text-primary"}),(0,a.jsx)(_.J,{htmlFor:"user",className:"text-sm font-medium text-foreground cursor-pointer",children:u("assign.orAssignToUser")})]}),"user"===g&&(0,a.jsx)("div",{className:"mt-3 ml-6",children:(0,a.jsxs)(T.l6,{value:j,onValueChange:k,children:[(0,a.jsx)(T.bq,{className:"w-full border-border",children:(0,a.jsx)(T.yv,{placeholder:u("tasks.selectUser")})}),(0,a.jsx)(T.gC,{className:"z-[120]",children:w.length>0?w.map(e=>(0,a.jsx)(T.eb,{value:e.uuid,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(N.A,{className:"h-4 w-4 text-muted-foreground"}),(0,a.jsx)("span",{children:e.name||e.email})]})},e.uuid)):(0,a.jsx)("div",{className:"px-3 py-2 text-xs text-[#9A9A9A]",children:u("tasks.noUsersAvailable")})})]})})]}),V&&(0,a.jsxs)("div",{className:"rounded-[10px] p-4 transition-colors cursor-pointer ".concat("release"===g?"bg-[#FDF8F6] dark:bg-[#201d1b] border-2 border-primary":"bg-card border border-border hover:border-primary/50"),onClick:()=>f("release"),children:[(0,a.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,a.jsx)(ee.C,{value:"release",id:"release",className:"border-primary text-primary"}),(0,a.jsx)(_.J,{htmlFor:"release",className:"text-sm font-medium text-foreground cursor-pointer",children:u("assign.releaseAssignee")})]}),(0,a.jsx)("p",{className:"mt-2 ml-6 text-xs text-muted-foreground leading-relaxed",children:u("assign.releaseAssigneeDesc")})]})]})]})}let eu=(0,P.createServerReference)("4019d2c1e1dffc155344ac3fff1284b70ca7a57602",P.callServer,void 0,P.findSourceMapURL,"getTaskDependenciesAction"),em=(0,P.createServerReference)("40fff78d95c9bbe45f7bde0413de70c0da149d33a9",P.callServer,void 0,P.findSourceMapURL,"getProjectTasksForDependencyAction");var ex=t(76295);let ep=(0,P.createServerReference)("60411400554240c7403939dfbd73371cb91da97007",P.callServer,void 0,P.findSourceMapURL,"removeTaskDependencyAction"),eh=(0,P.createServerReference)("40c6d4b63e22141f2d6a495760511056d9f7031e30",P.callServer,void 0,P.findSourceMapURL,"getTaskSessionsAction");var eg=t(38106),ef=t(16544),ev=t(65626),eb=t(90795);let ej={open:"bg-[#FFF3E0] dark:bg-[#3a2a12] text-[#E65100] dark:text-[#F0A050]",assigned:"bg-[#E3F2FD] dark:bg-[#13253a] text-[#1976D2] dark:text-[#5AA9F0]",in_progress:"bg-[#E8F5E9] dark:bg-[#14281a] text-[#5A9E6F] dark:text-[#6FD19A]",to_verify:"bg-[#F3E5F5] dark:bg-[#281630] text-[#7B1FA2] dark:text-[#C98FE0]",done:"bg-[#E0F2F1] dark:bg-[#12292a] text-[#00796B] dark:text-[#4FD1C0]",closed:"bg-[#F5F5F5] dark:bg-[#1e1e20] text-[#9A9A9A]"},eN={open:"open",assigned:"assigned",in_progress:"inProgress",to_verify:"toVerify",done:"done",closed:"closed"},ek={low:"bg-[#F5F5F5] dark:bg-[#1e1e20] text-[#9A9A9A]",medium:"bg-[#FFF3E0] dark:bg-[#3a2a12] text-[#E65100] dark:text-[#F0A050]",high:"bg-[#FEE2E2] dark:bg-[#331619] text-[#D32F2F] dark:text-[#F08078]",critical:"bg-[#FFCDD2] dark:bg-[#3a181c] text-[#B71C1C] dark:text-[#F08078]"},eA={low:"lowPriority",medium:"mediumPriority",high:"highPriority",critical:"criticalPriority"};function ey(e,s){let t=new Date(e),a=new Date().getTime()-t.getTime(),r=Math.floor(a/6e4),i=Math.floor(a/36e5),n=Math.floor(a/864e5);return r<1?s("time.justNow"):r<60?s("time.minutesAgo",{minutes:r}):i<24?s("time.hoursAgo",{hours:i}):n<7?s("time.daysAgo",{days:n}):(0,eg.r)(t)}function ew(e){var s,t;let{task:f,projectUuid:P,currentUserUuid:Q,mode:Y="overlay",onClose:ee,onCreated:es,onDependencyChange:et,onBack:ea}=e,er=(0,n.c)(),ei=(0,i.r)(),[en,ec]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=setTimeout(()=>ec(!0),300);return()=>clearTimeout(e)},[]);let[el,ed]=(0,r.useState)(!1),[ew,eF]=(0,r.useState)([]),[eC,eS]=(0,r.useState)(!0),[eE,eD]=(0,r.useState)(null),[e_,eR]=(0,r.useState)(!1),[eT,eU]=(0,r.useState)([]),[eq,eM]=(0,r.useState)([]),[eB,eL]=(0,r.useState)(!1),[eP,ez]=(0,r.useState)([]),[eI,e$]=(0,r.useState)(null),[eV,eW]=(0,r.useState)([]),[eJ,eO]=(0,r.useState)([]),eH=null===f,[eG,eX]=(0,r.useState)(eH),[eZ,eK]=(0,r.useState)((null==f?void 0:f.title)||""),[eQ,eY]=(0,r.useState)((null==f?void 0:f.description)||""),[e0,e1]=(0,r.useState)((null==f?void 0:f.priority)||"medium"),[e2,e9]=(0,r.useState)((null==f?void 0:f.storyPoints)!=null?String(f.storyPoints):""),[e5,e3]=(0,r.useState)((null!=(s=null==f?void 0:f.acceptanceCriteriaItems)?s:[]).map(e=>{var s;return{description:e.description,required:null==(s=e.required)||s}})),[e6,e4]=(0,r.useState)(!1),[e7,e8]=(0,r.useState)(null),[se,ss]=(0,r.useState)(!1),st=(0,L.RU)(null!=(t=null==f?void 0:f.assignee)?t:null,{type:"user",uuid:Q}),sa=st&&(null==f?void 0:f.status)==="assigned",sr=st&&(null==f?void 0:f.status)==="in_progress",si=(null==f?void 0:f.status)==="to_verify";(0,r.useEffect)(()=>{async function e(){eS(!0),eF((await G(f.uuid)).activities),eS(!1)}async function s(){f.proposalUuid&&eD(await X(f.proposalUuid))}async function t(){eL(!0);let[e,s]=await Promise.all([eu(f.uuid),em(P)]);eU(e.dependsOn),eM(e.dependedBy),ez(s.tasks),eL(!1)}async function a(){let e=await eh(f.uuid);e.success&&e.data&&eW(e.data)}f&&(e(),s(),t(),a())},[null==f?void 0:f.uuid,null==f?void 0:f.proposalUuid,P]),(0,r.useEffect)(()=>{eH&&e();async function e(){ez((await em(P)).tasks)}},[eH,P]),(0,r.useEffect)(()=>{if(f){var e;eX(!1),eK(f.title),eY(f.description||""),e1(f.priority),e9(null!=f.storyPoints?String(f.storyPoints):""),e3((null!=(e=f.acceptanceCriteriaItems)?e:[]).map(e=>{var s;return{description:e.description,required:null==(s=e.required)||s}})),e8(null)}},[null==f?void 0:f.uuid,null==f?void 0:f.title,null==f?void 0:f.description,null==f?void 0:f.priority,null==f?void 0:f.storyPoints,null==f?void 0:f.acceptanceCriteriaItems]);let sn=async e=>{if(!f)return;ed(!0);let s=await z(f.uuid,e);ed(!1),s.success&&(ee(),ei.refresh())},sc=()=>{if(eH)return void ee();if(eX(!1),f){var e;eK(f.title),eY(f.description||""),e1(f.priority),e9(null!=f.storyPoints?String(f.storyPoints):""),e3((null!=(e=f.acceptanceCriteriaItems)?e:[]).map(e=>{var s;return{description:e.description,required:null==(s=e.required)||s}}))}e8(null)},sl=async()=>{if(!eZ.trim())return void e8(er("tasks.titleRequired"));e4(!0),e8(null);let e=e2.trim()?parseFloat(e2):null;if(eH){let s=await I({projectUuid:P,title:eZ.trim(),description:eQ.trim()||void 0,priority:e0,storyPoints:e,acceptanceCriteria:null});e4(!1),s.success?(eJ.length>0&&s.taskUuid&&(await Promise.all(eJ.map(e=>(0,ex.w)(s.taskUuid,e.uuid))),null==et||et()),null==es||es(),ee(),ei.refresh()):e8(s.error||er("tasks.createFailed"))}else{var s;let t=(null!=(s=f.acceptanceCriteriaItems)?s:[]).map(e=>{var s;return{description:e.description,required:null==(s=e.required)||s}}),a=e5.filter(e=>e.description.trim().length>0),r=(0,K.K)(t,a);if(r&&0===a.length){e4(!1),e8(er("acceptanceCriteria.atLeastOneRequired"));return}let i=await $({taskUuid:f.uuid,projectUuid:P,title:eZ.trim(),description:eQ.trim()||null,priority:e0,storyPoints:e,...r?{acceptanceCriteriaItems:a.map(e=>({description:e.description.trim(),required:e.required}))}:{}});e4(!1),i.success?(eX(!1),ei.refresh()):e8(i.error||er("tasks.updateFailed"))}},sd=async()=>{if(!f)return;ss(!0);let e=await V(f.uuid,P);ss(!1),e.success&&(ee(),ei.refresh())},so=async e=>{if(!f)return;e$(null);let s=await (0,ex.w)(f.uuid,e);if(s.success){let s=eP.find(s=>s.uuid===e);s&&eU(e=>[...e,s]),null==et||et()}else e$(s.error||er("tasks.failedToAddDep"))},su=async e=>{if(!f)return;e$(null);let s=await ep(f.uuid,e);s.success?(eU(s=>s.filter(s=>s.uuid!==e)),null==et||et()):e$(s.error||er("tasks.failedToRemoveDep"))},sm=async e=>{if(!f)return;e$(null);let s=await ep(e,f.uuid);s.success?(eM(s=>s.filter(s=>s.uuid!==e)),null==et||et()):e$(s.error||er("tasks.failedToRemoveDep"))},sx=eP.filter(e=>e.uuid!==(null==f?void 0:f.uuid)&&!eT.some(s=>s.uuid===e.uuid)),sp=eP.filter(e=>!eJ.some(s=>s.uuid===e.uuid)),sh="sidebyside"===Y;return(0,a.jsxs)(a.Fragment,{children:[!sh&&(0,a.jsx)("div",{className:"fixed inset-0 z-40 bg-black/20",onClick:ee}),(0,a.jsxs)("div",{className:"fixed top-14 md:top-0 flex h-[calc(100%-3.5rem)] md:h-full w-full md:w-[480px] flex-col bg-card shadow-xl border-l border-border ".concat(sh?"z-40 ".concat(en?"":"animate-in slide-in-from-right duration-300"):"z-50 right-0 ".concat(en?"":"animate-in slide-in-from-right duration-300")),style:sh?{right:"".concat(eb.L8,"px")}:void 0,children:[(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-secondary px-6 py-5",children:[ea&&(0,a.jsx)(S.$,{variant:"ghost",size:"icon",className:"mr-2 h-8 w-8 shrink-0",onClick:ea,children:(0,a.jsx)(o.A,{className:"h-4 w-4 text-muted-foreground"})}),(0,a.jsx)("div",{className:"flex-1 min-w-0",children:eG?(0,a.jsx)("h2",{className:"text-base font-semibold text-foreground",children:eH?er("tasks.createTaskTitle"):er("tasks.editTask")}):f?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("h2",{className:"text-base font-semibold text-foreground truncate",children:f.title}),(0,a.jsxs)("div",{className:"mt-1.5 flex items-center gap-2",children:[(0,a.jsx)(F.E,{className:ej[f.status]||"",children:er("status.".concat(eN[f.status]||f.status))}),(0,a.jsx)(F.E,{className:ek[f.priority]||"",children:er("priority.".concat(eA[f.priority]||f.priority))}),f.storyPoints&&(0,a.jsxs)("span",{className:"rounded bg-secondary px-2 py-0.5 text-xs font-medium text-muted-foreground",children:[f.storyPoints,"h"]})]})]}):null}),(0,a.jsxs)("div",{className:"flex items-center gap-2 ml-4",children:[f&&!eG&&(0,a.jsxs)(S.$,{variant:"outline",size:"sm",className:"h-8 gap-1.5 border-border text-foreground",onClick:()=>{var e;f&&(eK(f.title),eY(f.description||""),e1(f.priority),e9(null!=f.storyPoints?String(f.storyPoints):""),e3((null!=(e=f.acceptanceCriteriaItems)?e:[]).map(e=>{var s;return{description:e.description,required:null==(s=e.required)||s}})),e8(null),eX(!0))},children:[(0,a.jsx)(u.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,a.jsx)("span",{className:"text-xs",children:er("common.edit")})]}),(0,a.jsx)(S.$,{variant:"outline",size:"icon",className:"h-8 w-8 border-border",onClick:eG&&!eH?sc:ee,children:(0,a.jsx)(l.A,{className:"h-4 w-4 text-muted-foreground"})})]})]}),(0,a.jsx)(R.F,{className:"flex-1 min-h-0 [&_[data-slot=scroll-area-viewport]>div]:!block",children:(0,a.jsx)("div",{className:"flex min-h-full flex-col px-6 py-5",children:eG?(0,a.jsxs)("div",{className:"space-y-5",children:[e7&&(0,a.jsx)("div",{className:"rounded-lg bg-destructive/10 p-3 text-sm text-destructive",children:e7}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(_.J,{htmlFor:"edit-title",className:"text-[13px] font-medium text-foreground",children:er("tasks.titleLabel")}),(0,a.jsx)(E.p,{id:"edit-title",value:eZ,onChange:e=>eK(e.target.value),className:"border-border text-sm focus-visible:ring-primary",autoFocus:!0})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(_.J,{htmlFor:"edit-description",className:"text-[13px] font-medium text-foreground",children:er("tasks.descriptionLabel")}),(0,a.jsx)(D.T,{id:"edit-description",value:eQ,onChange:e=>eY(e.target.value),rows:4,className:"border-border text-sm resize-none focus-visible:ring-primary"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(_.J,{htmlFor:"edit-priority",className:"text-[13px] font-medium text-foreground",children:er("tasks.priorityLabel")}),(0,a.jsxs)(T.l6,{value:e0,onValueChange:e1,children:[(0,a.jsx)(T.bq,{className:"border-border text-sm focus:ring-primary",children:(0,a.jsx)(T.yv,{})}),(0,a.jsxs)(T.gC,{children:[(0,a.jsx)(T.eb,{value:"low",children:er("priority.low")}),(0,a.jsx)(T.eb,{value:"medium",children:er("priority.medium")}),(0,a.jsx)(T.eb,{value:"high",children:er("priority.high")})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(_.J,{htmlFor:"edit-story-points",className:"text-[13px] font-medium text-foreground",children:er("tasks.storyPointsLabel")}),(0,a.jsx)(E.p,{id:"edit-story-points",type:"number",min:"0",step:"0.5",value:e2,onChange:e=>e9(e.target.value),className:"border-border text-sm focus-visible:ring-primary"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(_.J,{className:"text-[13px] font-medium text-foreground",children:er("acceptanceCriteria.title")}),(0,a.jsx)(K.C,{items:e5,onChange:e3})]}),eH&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(_.J,{className:"text-[13px] font-medium text-foreground",children:er("tasks.dependencies")}),eJ.length>0&&(0,a.jsx)("div",{className:"space-y-1.5",children:eJ.map(e=>(0,a.jsxs)("div",{className:"group flex items-center justify-between rounded-lg bg-background p-2.5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,a.jsx)(c.A,{className:"h-3.5 w-3.5 shrink-0 text-primary"}),(0,a.jsx)("span",{className:"text-xs text-foreground truncate",children:e.title}),(0,a.jsx)(F.E,{className:"shrink-0 text-[10px] ".concat(ej[e.status]||""),children:er("status.".concat(eN[e.status]||e.status))})]}),(0,a.jsx)(S.$,{type:"button",variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity ml-2 shrink-0",onClick:()=>eO(s=>s.filter(s=>s.uuid!==e.uuid)),children:(0,a.jsx)(l.A,{className:"h-3.5 w-3.5 text-[#9A9A9A] hover:text-[#D32F2F]"})})]},e.uuid))}),sp.length>0&&(0,a.jsxs)(T.l6,{onValueChange:e=>{let s=eP.find(s=>s.uuid===e);s&&eO(e=>[...e,s])},children:[(0,a.jsx)(T.bq,{className:"h-8 border-border text-xs text-muted-foreground focus:ring-primary",children:(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(d.A,{className:"h-3 w-3"}),(0,a.jsx)(T.yv,{placeholder:er("tasks.addDependency")})]})}),(0,a.jsx)(T.gC,{children:sp.map(e=>(0,a.jsx)(T.eb,{value:e.uuid,children:(0,a.jsx)("span",{className:"truncate",children:e.title})},e.uuid))})]},eJ.length)]})]}):f?(0,a.jsxs)(ef.P.div,{variants:ev.qG,initial:"initial",animate:"animate",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("common.assignee")}),(0,a.jsx)("div",{className:"mt-2 flex items-center gap-2.5 rounded-lg bg-background p-3",children:f.assignee?(0,a.jsxs)(a.Fragment,{children:[(0,L.bB)(f.assignee)?(0,a.jsx)(M.AgentAvatar,{name:f.assignee.name,size:28,className:"rounded-full"}):(0,a.jsx)(q.eu,{className:"h-7 w-7",children:(0,a.jsx)(q.q5,{className:"bg-border text-muted-foreground",children:f.assignee.name.charAt(0).toUpperCase()})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("div",{className:"text-sm font-medium text-foreground",children:f.assignee.name}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:(0,L.bB)(f.assignee)?"".concat(er("common.agent")," • ").concat(f.assignee.assignedAt?(0,eg.r)(f.assignee.assignedAt):""):er("common.user")}),"agent_instance"===f.assignee.type&&f.assignee.instance&&(0,a.jsx)("div",{className:"mt-1",children:(0,a.jsx)(B.jQ,{cwd:f.assignee.instance.cwd,host:f.assignee.instance.host})})]})]}):(0,a.jsx)("span",{className:"text-sm text-[#9A9A9A]",children:er("common.unassigned")})})]}),eV.length>0&&(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("sessions.activeWorkers")}),(0,a.jsx)("div",{className:"mt-2 space-y-1.5",children:eV.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2.5 rounded-lg bg-background p-2.5",children:[(0,a.jsxs)("div",{className:"relative flex-shrink-0",children:[(0,a.jsx)(M.AgentAvatar,{name:e.agentName,size:28,className:"rounded-full"}),(0,a.jsx)("span",{className:"absolute -bottom-0.5 -right-0.5 h-2 w-2 rounded-full bg-green-500 ring-2 ring-background"})]}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("div",{className:"text-xs font-medium text-foreground truncate",children:e.sessionName}),(0,a.jsxs)("div",{className:"text-[10px] text-[#9A9A9A]",children:[e.agentName," \xb7 ",ey(e.checkinAt,er)]})]})]},e.sessionUuid))})]}),(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("common.description")}),(0,a.jsx)("div",{className:"mt-2",children:f.description?(0,a.jsx)("div",{className:"prose prose-sm max-w-none text-[13px] leading-relaxed text-foreground",children:(0,a.jsx)(Z.MarkdownContent,{children:f.description})}):(0,a.jsx)("p",{className:"text-sm italic text-[#9A9A9A]",children:er("common.noDescription")})})]}),f.acceptanceCriteria&&!(f.acceptanceCriteriaItems&&f.acceptanceCriteriaItems.length>0)&&(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("tasks.acceptanceCriteria")}),(0,a.jsx)("div",{className:"mt-2",children:(0,a.jsx)("div",{className:"prose prose-sm max-w-none text-[13px] leading-relaxed text-foreground",children:(0,a.jsx)(Z.MarkdownContent,{children:f.acceptanceCriteria})})})]}),eE&&(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("common.source")}),(0,a.jsx)("a",{href:"/projects/".concat(P,"/proposals/").concat(eE.uuid),className:"mt-2 flex items-center justify-between rounded-lg bg-background p-3 hover:bg-[#F0EDE5] dark:hover:bg-[#26241f] transition-colors",children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(m.A,{className:"h-3.5 w-3.5 text-primary"}),(0,a.jsx)("span",{className:"text-xs text-foreground",children:eE.title})]})})]}),(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("tasks.dependencies")}),eI&&(0,a.jsx)("div",{className:"mt-2 rounded-lg bg-destructive/10 p-2.5 text-xs text-destructive",children:eI}),eB?(0,a.jsx)("div",{className:"mt-2 flex items-center justify-center py-4",children:(0,a.jsx)(x.A,{className:"h-4 w-4 animate-spin text-[#9A9A9A]"})}):(0,a.jsxs)(a.Fragment,{children:[eT.length>0&&(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5",children:[(0,a.jsx)(p.A,{className:"h-3 w-3 text-[#9A9A9A]"}),(0,a.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("tasks.dependsOn")})]}),(0,a.jsx)("div",{className:"space-y-1.5",children:eT.map(e=>(0,a.jsxs)("div",{className:"group flex items-center justify-between rounded-lg bg-background p-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,a.jsx)(c.A,{className:"h-3.5 w-3.5 shrink-0 text-primary"}),(0,a.jsx)("span",{className:"text-xs text-foreground truncate",children:e.title}),(0,a.jsx)(F.E,{className:"shrink-0 text-[10px] ".concat(ej[e.status]||""),children:er("status.".concat(eN[e.status]||e.status))})]}),(0,a.jsx)(S.$,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity ml-2 shrink-0",onClick:()=>su(e.uuid),children:(0,a.jsx)(l.A,{className:"h-3.5 w-3.5 text-[#9A9A9A] hover:text-[#D32F2F]"})})]},e.uuid))})]}),eq.length>0&&(0,a.jsxs)("div",{className:"mt-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5",children:[(0,a.jsx)(p.A,{className:"h-3 w-3 rotate-180 text-[#9A9A9A]"}),(0,a.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("tasks.blockedByThis")})]}),(0,a.jsx)("div",{className:"space-y-1.5",children:eq.map(e=>(0,a.jsxs)("div",{className:"group flex items-center justify-between rounded-lg bg-background p-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,a.jsx)(c.A,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,a.jsx)("span",{className:"text-xs text-foreground truncate",children:e.title}),(0,a.jsx)(F.E,{className:"shrink-0 text-[10px] ".concat(ej[e.status]||""),children:er("status.".concat(eN[e.status]||e.status))})]}),(0,a.jsx)(S.$,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity ml-2 shrink-0",onClick:()=>sm(e.uuid),children:(0,a.jsx)(l.A,{className:"h-3.5 w-3.5 text-[#9A9A9A] hover:text-[#D32F2F]"})})]},e.uuid))})]}),0===eT.length&&0===eq.length&&(0,a.jsx)("p",{className:"mt-2 text-sm italic text-[#9A9A9A]",children:er("tasks.noDependencies")}),sx.length>0&&(0,a.jsx)("div",{className:"mt-3",children:(0,a.jsxs)(T.l6,{onValueChange:e=>so(e),children:[(0,a.jsx)(T.bq,{className:"h-8 border-border text-xs text-muted-foreground focus:ring-primary",children:(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(d.A,{className:"h-3 w-3"}),(0,a.jsx)(T.yv,{placeholder:er("tasks.addDependency")})]})}),(0,a.jsx)(T.gC,{children:sx.map(e=>(0,a.jsx)(T.eb,{value:e.uuid,children:(0,a.jsx)("span",{className:"truncate",children:e.title})},e.uuid))})]},eT.length)})]})]}),f&&f.acceptanceCriteriaItems&&f.acceptanceCriteriaItems.length>0&&(()=>{let e=f.acceptanceCriteriaItems,s=f.acceptanceSummary,t=e=>"passed"===e?(0,a.jsx)(h.A,{className:"h-4 w-4 text-green-600 dark:text-[#6FD19A]"}):"failed"===e?(0,a.jsx)(g.A,{className:"h-4 w-4 text-red-600 dark:text-[#F08078]"}):(0,a.jsx)(v,{className:"h-4 w-4 text-yellow-600 dark:text-[#E0B44E]"}),r=e=>"passed"===e?"bg-green-50 text-green-700 dark:bg-[#14281a] dark:text-[#6FD19A]":"failed"===e?"bg-red-50 text-red-700 dark:bg-[#331619] dark:text-[#F08078]":"bg-yellow-50 text-yellow-700 dark:bg-[#332a12] dark:text-[#E0B44E]",i=async(e,s)=>{(await W(f.uuid,[{uuid:e,status:s}])).success&&ei.refresh()};return(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("acceptanceCriteria.title")}),s&&(0,a.jsx)(F.E,{className:r(f.acceptanceStatus||"pending"),variant:"secondary",children:er("acceptanceCriteria.progress",{passed:s.passed,total:s.total})})]}),(0,a.jsxs)("div",{className:"mt-2 space-y-2",children:[e.map(e=>(0,a.jsx)(C.Zp,{className:"p-3",children:(0,a.jsxs)("div",{className:"flex items-start gap-2",children:[(0,a.jsx)("div",{className:"mt-0.5 shrink-0",children:t(e.status)}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,a.jsx)("span",{className:"text-xs text-foreground",children:e.description}),(0,a.jsx)(F.E,{variant:"outline",className:"text-[10px] shrink-0",children:e.required?er("acceptanceCriteria.required"):er("acceptanceCriteria.optional")})]}),(0,a.jsxs)("div",{className:"mt-2 space-y-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-[10px]",children:[(0,a.jsx)("span",{className:"text-[#9A9A9A] w-20 shrink-0",children:er("acceptanceCriteria.devSelfCheck")}),(0,a.jsxs)(F.E,{className:"text-[10px] ".concat(r(e.devStatus)),variant:"secondary",children:[t(e.devStatus),(0,a.jsx)("span",{className:"ml-1",children:er("acceptanceCriteria.status.".concat(e.devStatus))})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-[10px]",children:[(0,a.jsx)("span",{className:"text-[#9A9A9A] w-20 shrink-0",children:er("acceptanceCriteria.verification")}),(0,a.jsxs)(F.E,{className:"text-[10px] ".concat(r(e.status)),variant:"secondary",children:[t(e.status),(0,a.jsx)("span",{className:"ml-1",children:er("acceptanceCriteria.status.".concat(e.status))})]})]})]}),e.devEvidence&&(0,a.jsxs)("div",{className:"mt-2 rounded bg-background p-2",children:[(0,a.jsx)("span",{className:"text-[10px] font-medium text-[#9A9A9A]",children:er("acceptanceCriteria.devEvidence")}),(0,a.jsx)("p",{className:"text-[11px] text-foreground mt-0.5",children:e.devEvidence})]}),e.evidence&&(0,a.jsxs)("div",{className:"mt-2 rounded bg-background p-2",children:[(0,a.jsx)("span",{className:"text-[10px] font-medium text-[#9A9A9A]",children:er("acceptanceCriteria.verifyEvidence")}),(0,a.jsx)("p",{className:"text-[11px] text-foreground mt-0.5",children:e.evidence})]}),"pending"===e.status?(0,a.jsxs)("div",{className:"mt-2 flex gap-2",children:[(0,a.jsxs)(S.$,{size:"sm",variant:"outline",className:"h-8 min-h-[44px] sm:min-h-0 flex-1 sm:flex-none text-xs text-green-700 dark:text-[#6FD19A] border-green-200 dark:border-[#2a4a34] hover:bg-green-50 dark:hover:bg-[#14281a]",onClick:()=>i(e.uuid,"passed"),children:[(0,a.jsx)(h.A,{className:"h-3.5 w-3.5 mr-1"}),er("acceptanceCriteria.pass")]}),(0,a.jsxs)(S.$,{size:"sm",variant:"outline",className:"h-8 min-h-[44px] sm:min-h-0 flex-1 sm:flex-none text-xs text-red-700 dark:text-[#F08078] border-red-200 dark:border-[#5a2a2e] hover:bg-red-50 dark:hover:bg-[#331619]",onClick:()=>i(e.uuid,"failed"),children:[(0,a.jsx)(g.A,{className:"h-3.5 w-3.5 mr-1"}),er("acceptanceCriteria.fail")]})]}):(0,a.jsx)("div",{className:"mt-2",children:(0,a.jsx)(S.$,{size:"sm",variant:"ghost",className:"h-7 min-h-[44px] sm:min-h-0 text-xs text-[#9A9A9A] hover:text-foreground",onClick:async()=>{(await J(f.uuid,e.uuid)).success&&ei.refresh()},children:er("acceptanceCriteria.undoVerification")})})]})]})},e.uuid)),s&&(s.requiredPending>0||s.requiredFailed>0)&&(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded-lg bg-yellow-50 dark:bg-[#332a12] p-3 mt-2",children:[(0,a.jsx)(b.A,{className:"h-4 w-4 text-yellow-600 dark:text-[#E0B44E] shrink-0"}),(0,a.jsx)("span",{className:"text-xs text-yellow-700 dark:text-[#E0B44E]",children:er("acceptanceCriteria.gateBlocked",{count:s.requiredPending+s.requiredFailed})})]}),s&&0===s.requiredPending&&0===s.requiredFailed&&s.required>0&&(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded-lg bg-green-50 dark:bg-[#14281a] p-3 mt-2",children:[(0,a.jsx)(h.A,{className:"h-4 w-4 text-green-600 dark:text-[#6FD19A] shrink-0"}),(0,a.jsx)("span",{className:"text-xs text-green-700 dark:text-[#6FD19A]",children:er("acceptanceCriteria.gateReady")})]})]})]})})(),(0,a.jsxs)("div",{className:"mt-5 flex-1",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("common.activity")}),(0,a.jsx)("div",{className:"mt-2 space-y-3",children:eC?(0,a.jsx)("div",{className:"flex items-center justify-center py-4",children:(0,a.jsx)(x.A,{className:"h-4 w-4 animate-spin text-[#9A9A9A]"})}):0===ew.length?(0,a.jsx)("p",{className:"text-sm text-[#9A9A9A] italic",children:er("common.noActivity")}):ew.map(e=>(0,a.jsxs)("div",{className:"flex items-start gap-2.5",children:[(0,a.jsx)("div",{className:"flex h-5 w-5 items-center justify-center rounded-full bg-secondary",children:(0,a.jsx)("div",{className:"h-2 w-2 rounded-full ".concat(function(e){switch(e){case"task_created":return"bg-primary";case"task_assigned":case"task_claimed":return"bg-[#1976D2]";case"task_started":return"bg-[#5A9E6F]";case"task_submitted":return"bg-[#7B1FA2]";case"task_completed":case"task_verified":return"bg-[#00796B]";case"task_released":return"bg-[#E65100]";default:return"bg-muted-foreground"}}(e.action))})}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("p",{className:"text-xs text-foreground",children:function(e,s){let t=e.sessionName?"".concat(e.actorName," / ").concat(e.sessionName):e.actorName,{action:a}=e;switch(a){case"task_created":return s("activity.taskCreated",{actor:t});case"task_assigned":return s("activity.taskAssigned",{actor:t});case"task_claimed":return s("activity.taskClaimed",{actor:t});case"task_started":return s("activity.taskStarted",{actor:t});case"task_submitted":return s("activity.taskSubmitted",{actor:t});case"task_completed":case"task_verified":return s("activity.taskCompleted",{actor:t});case"task_released":return s("activity.taskReleased",{actor:t});case"task_status_changed":return s("activity.taskStatusChanged",{actor:t});default:return"".concat(t,": ").concat(a)}}(e,er)}),(0,a.jsx)("p",{className:"text-[10px] text-[#9A9A9A]",children:ey(e.createdAt,er)})]})]},e.uuid))})]}),(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("references.title")}),(0,a.jsx)("div",{className:"mt-2",children:(0,a.jsx)(H.ReferencesSection,{targetType:"task",targetUuid:f.uuid,canWrite:!0,compact:!0})})]}),(0,a.jsxs)("div",{className:"mt-5",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:er("comments.title")}),(0,a.jsx)("div",{className:"mt-3",children:(0,a.jsx)(O.$m,{targetType:"task",targetUuid:f.uuid,currentUserUuid:Q,compact:!0})})]})]}):null})}),(0,a.jsx)("div",{className:"border-t border-secondary px-6 py-4",children:(0,a.jsx)("div",{className:"flex items-center gap-3",children:eG?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(S.$,{variant:"outline",className:"border-border",onClick:sc,disabled:e6,children:er("common.cancel")}),(0,a.jsx)(S.$,{className:"bg-primary hover:bg-[#B56A42] text-white",onClick:sl,disabled:e6||!eZ.trim(),children:e6?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(x.A,{className:"mr-2 h-4 w-4 animate-spin"}),er("common.saving")]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(j.A,{className:"mr-2 h-4 w-4"}),eH?er("common.create"):er("tasks.saveChanges")]})})]}):f?(0,a.jsxs)(a.Fragment,{children:["done"!==f.status&&"closed"!==f.status&&(0,a.jsxs)(S.$,{variant:"outline",className:"border-border",onClick:()=>eR(!0),disabled:el,children:[(0,a.jsx)(N.A,{className:"mr-2 h-4 w-4"}),er("common.assign")]}),sa&&(0,a.jsxs)(S.$,{className:"flex-1 bg-[#1976D2] hover:bg-[#1565C0] text-white",onClick:()=>sn("in_progress"),disabled:el,children:[(0,a.jsx)(k.A,{className:"mr-2 h-4 w-4"}),er("tasks.startWork")]}),sr&&(0,a.jsxs)(S.$,{className:"flex-1 bg-[#7B1FA2] hover:bg-[#6A1B9A] text-white",onClick:()=>sn("to_verify"),disabled:el,children:[(0,a.jsx)(A.A,{className:"mr-2 h-4 w-4"}),er("tasks.submitForReview")]}),si&&(0,a.jsxs)(S.$,{className:"flex-1 bg-[#22C55E] hover:bg-[#16A34A] text-white",onClick:()=>sn("done"),disabled:el,children:[(0,a.jsx)(y,{className:"mr-2 h-4 w-4"}),er("tasks.markAsVerified")]}),("done"===f.status||"closed"===f.status)&&(0,a.jsx)("div",{className:"text-sm text-[#9A9A9A] text-center w-full",children:er("tasks.taskCompleted")}),(0,a.jsx)("div",{className:"ml-auto",children:(0,a.jsxs)(U.Lt,{children:[(0,a.jsx)(U.tv,{asChild:!0,children:(0,a.jsx)(S.$,{variant:"outline",size:"icon",className:"h-9 w-9 border-border text-[#D32F2F] dark:text-[#F08078] hover:bg-[#FFEBEE] dark:hover:bg-[#331619] hover:text-[#D32F2F] hover:border-[#D32F2F]",children:(0,a.jsx)(w.A,{className:"h-4 w-4"})})}),(0,a.jsxs)(U.EO,{children:[(0,a.jsxs)(U.wd,{children:[(0,a.jsx)(U.r7,{children:er("tasks.deleteTask")}),(0,a.jsx)(U.$v,{children:er("tasks.deleteTaskConfirm",{title:f.title})})]}),(0,a.jsxs)(U.ck,{children:[(0,a.jsx)(U.Zr,{children:er("common.cancel")}),(0,a.jsx)(U.Rx,{variant:"destructive",onClick:sd,disabled:se,children:se?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(x.A,{className:"mr-2 h-4 w-4 animate-spin"}),er("common.delete")]}):er("common.delete")})]})]})]})})]}):null})})]}),f&&e_&&(0,a.jsx)(eo,{task:f,projectUuid:P,currentUserUuid:Q,onClose:()=>eR(!1)})]})}},81531:(e,s,t)=>{t.d(s,{T:()=>i});var a=t(1856),r=t(23675);function i(e,s){var t;let i=(0,r.useSearchParams)(),n=(0,a.useRef)(!1),c=!n.current;n.current=!0;let l=null!=(t=i.get("panel"))?t:c&&null!=s?s:null,d=i.get("tab"),o=(0,a.useCallback)((s,t)=>{let a=new URLSearchParams(window.location.search);s?a.set("panel",s):a.delete("panel"),t?a.set("tab",t):a.delete("tab");let r=a.toString();return r?"".concat(e,"?").concat(r):e},[e]),u=(0,a.useCallback)((e,s)=>{window.history.replaceState(null,"",o(e,s))},[o]),m=(0,a.useCallback)(()=>{window.history.replaceState(null,"",o(null))},[o]),x=(0,a.useCallback)(e=>{l&&window.history.replaceState(null,"",o(l,e))},[o,l]);return{selectedId:l,selectedTab:d,openPanel:u,closePanel:m,switchTab:x}}},90795:(e,s,t)=>{t.d(s,{Bj:()=>l,L8:()=>r,Wl:()=>d,_5:()=>c,eT:()=>i,fw:()=>n});var a=t(38106);let r=480;function i(e){switch(e){case"done":return"bg-[#00796B]";case"in_progress":return"bg-[#1976D2]";case"to_verify":return"bg-[#7B1FA2]";case"open":case"assigned":return"bg-[#E65100]";case"closed":return"bg-[#9A9A9A]";default:return"bg-[#D9D9D9]"}}function n(e,s){let t=new Date(e),r=new Date().getTime()-t.getTime(),i=Math.floor(r/6e4),n=Math.floor(r/36e5),c=Math.floor(r/864e5);return i<1?s("time.justNow"):i<60?s("time.minutesAgo",{minutes:i}):n<24?s("time.hoursAgo",{hours:n}):c<7?s("time.daysAgo",{days:c}):(0,a.r)(t)}let c={todo:"bg-[#FFF3E0] text-[#E65100] dark:bg-[#3a2a12] dark:text-[#F0A050]",in_progress:"bg-[#E3F2FD] text-[#1976D2] dark:bg-[#13253a] dark:text-[#5AA9F0]",human_conduct_required:"bg-[#F3E5F5] text-[#7B1FA2] dark:bg-[#281630] dark:text-[#C98FE0]",done:"bg-[#E0F2F1] text-[#00796B] dark:bg-[#12292a] dark:text-[#4FD1C0]"},l={todo:"todo",in_progress:"inProgress",human_conduct_required:"humanConductRequired",done:"done"},d={open:"open",researching:"researching",answer_questions:"answerQuestions",planning:"planning",review_proposal:"reviewProposal",building:"building",verify_work:"verifyWork",done:"done"}},92657:(e,s,t)=>{t.d(s,{h:()=>r});var a=t(52217);let r=(0,a.createServerReference)("40a2074610c38d202c43658f0a74175b808edfe717",a.callServer,void 0,a.findSourceMapURL,"getBatchWorkerCountsAction")},92745:(e,s,t)=>{t.d(s,{_u:()=>A,c_:()=>f,nF:()=>k,qK:()=>j});var a=t(90508),r=t(1856),i=t(26145),n=t(75380);t(33805);var c=t(10196),l=t.n(c),d=t(39268),o=t(57731),u=t(49914);let m={open:"bg-[#FFF3E0] dark:bg-[#3a2a12] text-[#E65100] dark:text-[#F0A050]",assigned:"bg-[#E3F2FD] dark:bg-[#13253a] text-[#1976D2] dark:text-[#5AA9F0]",in_progress:"bg-[#E8F5E9] dark:bg-[#14281a] text-[#5A9E6F] dark:text-[#6FD19A]",to_verify:"bg-[#F3E5F5] dark:bg-[#281630] text-[#7B1FA2] dark:text-[#C98FE0]",done:"bg-[#E0F2F1] dark:bg-[#12292a] text-[#00796B] dark:text-[#4FD1C0]",closed:"bg-[#F5F5F5] dark:bg-[#1e1e20] text-muted-foreground"},x={open:"#E65100",assigned:"#1976D2",in_progress:"#5A9E6F",to_verify:"#7B1FA2",done:"#00796B",closed:"#9A9A9A"},p={low:"priority.low",medium:"priority.medium",high:"priority.high",critical:"priority.critical"},h={open:"status.open",assigned:"status.assigned",in_progress:"status.inProgress",to_verify:"status.toVerify",done:"status.done",closed:"status.closed"},g={low:"bg-[#9A9A9A]",medium:"bg-[#E65100]",high:"bg-[#D32F2F]",critical:"bg-[#B71C1C]"},f={taskNode:function(e){let{data:s}=e,t=(0,d.c)();return(0,a.jsxs)("div",{className:"rounded-lg border-2 border-[#E5E2DC] dark:border-[#2a2a2e] bg-card px-4 py-3 shadow-sm min-w-[200px] max-w-[260px] cursor-pointer hover:border-primary transition-colors",children:[(0,a.jsx)(i.h7,{type:"target",position:n.yX.Top,className:"!bg-primary !w-2 !h-2"}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,a.jsx)(o.E,{className:"text-[10px] ".concat(m[s.status]||""),children:t(h[s.status]||s.status)}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("div",{className:"h-1.5 w-1.5 rounded-full ".concat(g[s.priority]||"")}),(0,a.jsx)("span",{className:"text-[10px] text-muted-foreground",children:t(p[s.priority]||s.priority)})]})]}),(0,a.jsx)("p",{className:"text-xs font-medium text-foreground leading-snug line-clamp-2",children:s.title}),(0,a.jsx)(i.h7,{type:"source",position:n.yX.Bottom,className:"!bg-primary !w-2 !h-2"})]})}},v={taskNode:function(e){let{data:s}=e,t=x[s.status]||"#E5E0D8";return(0,a.jsxs)("div",{className:"rounded-md border-[1.5px] bg-card px-2.5 py-1.5 shadow-sm",style:{borderColor:t,width:b},children:[(0,a.jsx)(i.h7,{type:"target",position:n.yX.Top,className:"!bg-primary !w-1.5 !h-1.5"}),(0,a.jsx)("p",{className:"text-[10px] font-medium text-foreground leading-tight line-clamp-2",children:s.title}),(0,a.jsx)(i.h7,{type:"source",position:n.yX.Bottom,className:"!bg-primary !w-1.5 !h-1.5"})]})}},b=150,j={animated:!0,style:{stroke:"#C67A52",strokeWidth:2},markerEnd:{type:"arrowclosed",color:"#C67A52"}},N={animated:!0,style:{stroke:"#C67A52",strokeWidth:1.5},markerEnd:{type:"arrowclosed",color:"#C67A52"}};function k(e,s,t){var a,r,i,n;let c=null!=(a=null==t?void 0:t.nodeWidth)?a:240,d=null!=(r=null==t?void 0:t.nodeHeight)?r:80,o=new(l()).graphlib.Graph;return o.setDefaultEdgeLabel(()=>({})),o.setGraph({rankdir:"TB",nodesep:null!=(i=null==t?void 0:t.nodesep)?i:50,ranksep:null!=(n=null==t?void 0:t.ranksep)?n:80}),e.forEach(e=>{o.setNode(e.id,{width:c,height:d})}),s.forEach(e=>{o.setEdge(e.source,e.target)}),l().layout(o),{nodes:e.map(e=>{let s=o.node(e.id);return{...e,position:{x:s.x-c/2,y:s.y-d/2}}}),edges:s}}function A(e){let{tasks:s,edges:t,readonly:n=!1,compact:c=!1,height:l,onNodeClick:o,className:m}=e,x=(0,d.c)(),p=(0,u.W)(),{layoutedNodes:h,layoutedEdges:g}=(0,r.useMemo)(()=>{let e=s.map(e=>{var s;return{id:e.uuid,type:"taskNode",position:{x:0,y:0},data:{title:e.title,status:e.status,priority:e.priority,proposalUuid:null!=(s=e.proposalUuid)?s:null}}}),a=k(e,t.map((e,s)=>({id:"e-".concat(s),source:e.to,target:e.from,...c?N:j})),c?{nodeWidth:b,nodeHeight:50,nodesep:20,ranksep:40}:void 0);return{layoutedNodes:a.nodes,layoutedEdges:a.edges}},[s,t,c]);return 0===s.length?(0,a.jsx)("div",{className:"flex items-center justify-center text-sm text-muted-foreground ".concat(m||""),style:l?{height:l}:void 0,children:x("tasks.noTasksToDisplay")}):(0,a.jsx)("div",{className:"rounded-[10px] border border-border bg-[#F7F6F3] dark:bg-[#1e1d1b] ".concat(m||""),style:l?{height:l}:void 0,children:(0,a.jsxs)(i.Gc,{colorMode:p?"dark":"light",nodes:h,edges:g,nodeTypes:c?v:f,onNodeClick:o?(e,s)=>o(s.id):void 0,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:1.5,proOptions:{hideAttribution:!0},nodesDraggable:!n,nodesConnectable:!n,elementsSelectable:!n,panOnDrag:!0,zoomOnScroll:!0,children:[(0,a.jsx)(i.VS,{color:p?"#40392f":"#E5E0D8",gap:20}),!n&&(0,a.jsx)(i.H2,{className:"[&>button]:border-border [&>button]:bg-card [&>button]:text-foreground [&>button:hover]:bg-background"})]})})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[65096],{63197:(e,r,t)=>{t.r(r),t.d(r,{Indicator:()=>H,Item:()=>G,RadioGroup:()=>_,RadioGroupIndicator:()=>I,RadioGroupItem:()=>O,Root:()=>F,createRadioGroupScope:()=>A});var o=t(1856),n=t(33328),l=t(34124),a=t(21032),i=t(93367),s=t(94782),c=t(66249),d=t(72599),u=t(3705),p=t(72009),f=t(19900),v=t(90508),h="Radio",[w,g]=(0,a.A)(h),[m,b]=w(h),C=o.forwardRef((e,r)=>{let{__scopeRadio:t,name:a,checked:s=!1,required:c,disabled:d,value:u="on",onCheck:p,form:f,...h}=e,[w,g]=o.useState(null),b=(0,l.s)(r,e=>g(e)),C=o.useRef(!1),x=!w||f||!!w.closest("form");return(0,v.jsxs)(m,{scope:t,checked:s,disabled:d,children:[(0,v.jsx)(i.sG.button,{type:"button",role:"radio","aria-checked":s,"data-state":S(s),"data-disabled":d?"":void 0,disabled:d,value:u,...h,ref:b,onClick:(0,n.mK)(e.onClick,e=>{s||null==p||p(),x&&(C.current=e.isPropagationStopped(),C.current||e.stopPropagation())})}),x&&(0,v.jsx)(y,{control:w,bubbles:!C.current,name:a,value:u,checked:s,required:c,disabled:d,form:f,style:{transform:"translateX(-100%)"}})]})});C.displayName=h;var x="RadioIndicator",R=o.forwardRef((e,r)=>{let{__scopeRadio:t,forceMount:o,...n}=e,l=b(x,t);return(0,v.jsx)(f.C,{present:o||l.checked,children:(0,v.jsx)(i.sG.span,{"data-state":S(l.checked),"data-disabled":l.disabled?"":void 0,...n,ref:r})})});R.displayName=x;var y=o.forwardRef((e,r)=>{let{__scopeRadio:t,control:n,checked:a,bubbles:s=!0,...c}=e,d=o.useRef(null),f=(0,l.s)(d,r),h=(0,p.Z)(a),w=(0,u.X)(n);return o.useEffect(()=>{let e=d.current;if(!e)return;let r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(h!==a&&r){let t=new Event("click",{bubbles:s});r.call(e,a),e.dispatchEvent(t)}},[h,a,s]),(0,v.jsx)(i.sG.input,{type:"radio","aria-hidden":!0,defaultChecked:a,...c,tabIndex:-1,ref:f,style:{...c.style,...w,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function S(e){return e?"checked":"unchecked"}y.displayName="RadioBubbleInput";var P=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],E="RadioGroup",[j,A]=(0,a.A)(E,[s.RG,g]),T=(0,s.RG)(),L=g(),[D,k]=j(E),_=o.forwardRef((e,r)=>{let{__scopeRadioGroup:t,name:o,defaultValue:n,value:l,required:a=!1,disabled:u=!1,orientation:p,dir:f,loop:h=!0,onValueChange:w,...g}=e,m=T(t),b=(0,d.jH)(f),[C,x]=(0,c.i)({prop:l,defaultProp:null!=n?n:null,onChange:w,caller:E});return(0,v.jsx)(D,{scope:t,name:o,required:a,disabled:u,value:C,onValueChange:x,children:(0,v.jsx)(s.bL,{asChild:!0,...m,orientation:p,dir:b,loop:h,children:(0,v.jsx)(i.sG.div,{role:"radiogroup","aria-required":a,"aria-orientation":p,"data-disabled":u?"":void 0,dir:b,...g,ref:r})})})});_.displayName=E;var N="RadioGroupItem",O=o.forwardRef((e,r)=>{let{__scopeRadioGroup:t,disabled:a,...i}=e,c=k(N,t),d=c.disabled||a,u=T(t),p=L(t),f=o.useRef(null),h=(0,l.s)(r,f),w=c.value===i.value,g=o.useRef(!1);return o.useEffect(()=>{let e=e=>{P.includes(e.key)&&(g.current=!0)},r=()=>g.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",r),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",r)}},[]),(0,v.jsx)(s.q7,{asChild:!0,...u,focusable:!d,active:w,children:(0,v.jsx)(C,{disabled:d,required:c.required,checked:w,...p,...i,name:c.name,ref:h,onCheck:()=>c.onValueChange(i.value),onKeyDown:(0,n.mK)(e=>{"Enter"===e.key&&e.preventDefault()}),onFocus:(0,n.mK)(i.onFocus,()=>{var e;g.current&&(null==(e=f.current)||e.click())})})})});O.displayName=N;var I=o.forwardRef((e,r)=>{let{__scopeRadioGroup:t,...o}=e,n=L(t);return(0,v.jsx)(R,{...n,...o,ref:r})});I.displayName="RadioGroupIndicator";var F=_,G=O,H=I},65326:(e,r,t)=>{t.r(r),t.d(r,{Corner:()=>J,Root:()=>q,ScrollArea:()=>b,ScrollAreaCorner:()=>F,ScrollAreaScrollbar:()=>y,ScrollAreaThumb:()=>N,ScrollAreaViewport:()=>x,Scrollbar:()=>V,Thumb:()=>Z,Viewport:()=>B,createScrollAreaScope:()=>w});var o=t(1856),n=t(93367),l=t(19900),a=t(21032),i=t(34124),s=t(32313),c=t(72599),d=t(99457),u=t(91722),p=t(33328),f=t(90508),v="ScrollArea",[h,w]=(0,a.A)(v),[g,m]=h(v),b=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,type:l="hover",dir:a,scrollHideDelay:s=600,...d}=e,[u,p]=o.useState(null),[v,h]=o.useState(null),[w,m]=o.useState(null),[b,C]=o.useState(null),[x,R]=o.useState(null),[y,S]=o.useState(0),[P,E]=o.useState(0),[j,A]=o.useState(!1),[T,L]=o.useState(!1),D=(0,i.s)(r,e=>p(e)),k=(0,c.jH)(a);return(0,f.jsx)(g,{scope:t,type:l,dir:k,scrollHideDelay:s,scrollArea:u,viewport:v,onViewportChange:h,content:w,onContentChange:m,scrollbarX:b,onScrollbarXChange:C,scrollbarXEnabled:j,onScrollbarXEnabledChange:A,scrollbarY:x,onScrollbarYChange:R,scrollbarYEnabled:T,onScrollbarYEnabledChange:L,onCornerWidthChange:S,onCornerHeightChange:E,children:(0,f.jsx)(n.sG.div,{dir:k,...d,ref:D,style:{position:"relative","--radix-scroll-area-corner-width":y+"px","--radix-scroll-area-corner-height":P+"px",...e.style}})})});b.displayName=v;var C="ScrollAreaViewport",x=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,children:l,nonce:a,...s}=e,c=m(C,t),d=o.useRef(null),u=(0,i.s)(r,d,c.onViewportChange);return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,f.jsx)(n.sG.div,{"data-radix-scroll-area-viewport":"",...s,ref:u,style:{overflowX:c.scrollbarXEnabled?"scroll":"hidden",overflowY:c.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,f.jsx)("div",{ref:c.onContentChange,style:{minWidth:"100%",display:"table"},children:l})})]})});x.displayName=C;var R="ScrollAreaScrollbar",y=o.forwardRef((e,r)=>{let{forceMount:t,...n}=e,l=m(R,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:i}=l,s="horizontal"===e.orientation;return o.useEffect(()=>(s?a(!0):i(!0),()=>{s?a(!1):i(!1)}),[s,a,i]),"hover"===l.type?(0,f.jsx)(S,{...n,ref:r,forceMount:t}):"scroll"===l.type?(0,f.jsx)(P,{...n,ref:r,forceMount:t}):"auto"===l.type?(0,f.jsx)(E,{...n,ref:r,forceMount:t}):"always"===l.type?(0,f.jsx)(j,{...n,ref:r}):null});y.displayName=R;var S=o.forwardRef((e,r)=>{let{forceMount:t,...n}=e,a=m(R,e.__scopeScrollArea),[i,s]=o.useState(!1);return o.useEffect(()=>{let e=a.scrollArea,r=0;if(e){let t=()=>{window.clearTimeout(r),s(!0)},o=()=>{r=window.setTimeout(()=>s(!1),a.scrollHideDelay)};return e.addEventListener("pointerenter",t),e.addEventListener("pointerleave",o),()=>{window.clearTimeout(r),e.removeEventListener("pointerenter",t),e.removeEventListener("pointerleave",o)}}},[a.scrollArea,a.scrollHideDelay]),(0,f.jsx)(l.C,{present:t||i,children:(0,f.jsx)(E,{"data-state":i?"visible":"hidden",...n,ref:r})})}),P=o.forwardRef((e,r)=>{var t;let{forceMount:n,...a}=e,i=m(R,e.__scopeScrollArea),s="horizontal"===e.orientation,c=Y(()=>u("SCROLL_END"),100),[d,u]=(t={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},o.useReducer((e,r)=>{let o=t[e][r];return null!=o?o:e},"hidden"));return o.useEffect(()=>{if("idle"===d){let e=window.setTimeout(()=>u("HIDE"),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[d,i.scrollHideDelay,u]),o.useEffect(()=>{let e=i.viewport,r=s?"scrollLeft":"scrollTop";if(e){let t=e[r],o=()=>{let o=e[r];t!==o&&(u("SCROLL"),c()),t=o};return e.addEventListener("scroll",o),()=>e.removeEventListener("scroll",o)}},[i.viewport,s,u,c]),(0,f.jsx)(l.C,{present:n||"hidden"!==d,children:(0,f.jsx)(j,{"data-state":"hidden"===d?"hidden":"visible",...a,ref:r,onPointerEnter:(0,p.mK)(e.onPointerEnter,()=>u("POINTER_ENTER")),onPointerLeave:(0,p.mK)(e.onPointerLeave,()=>u("POINTER_LEAVE"))})})}),E=o.forwardRef((e,r)=>{let t=m(R,e.__scopeScrollArea),{forceMount:n,...a}=e,[i,s]=o.useState(!1),c="horizontal"===e.orientation,d=Y(()=>{if(t.viewport){let e=t.viewport.offsetWidth<t.viewport.scrollWidth,r=t.viewport.offsetHeight<t.viewport.scrollHeight;s(c?e:r)}},10);return M(t.viewport,d),M(t.content,d),(0,f.jsx)(l.C,{present:n||i,children:(0,f.jsx)(j,{"data-state":i?"visible":"hidden",...a,ref:r})})}),j=o.forwardRef((e,r)=>{let{orientation:t="vertical",...n}=e,l=m(R,e.__scopeScrollArea),a=o.useRef(null),i=o.useRef(0),[s,c]=o.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=z(s.viewport,s.content),u={...n,sizes:s,onSizesChange:c,hasThumb:!!(d>0&&d<1),onThumbChange:e=>a.current=e,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:e=>i.current=e};function p(e,r){return function(e,r,t){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ltr",n=K(t),l=r||n/2,a=t.scrollbar.paddingStart+l,i=t.scrollbar.size-t.scrollbar.paddingEnd-(n-l),s=t.content-t.viewport;return U([a,i],"ltr"===o?[0,s]:[-1*s,0])(e)}(e,i.current,s,r)}return"horizontal"===t?(0,f.jsx)(A,{...u,ref:r,onThumbPositionChange:()=>{if(l.viewport&&a.current){let e=W(l.viewport.scrollLeft,s,l.dir);a.current.style.transform="translate3d(".concat(e,"px, 0, 0)")}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollLeft=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollLeft=p(e,l.dir))}}):"vertical"===t?(0,f.jsx)(T,{...u,ref:r,onThumbPositionChange:()=>{if(l.viewport&&a.current){let e=W(l.viewport.scrollTop,s);a.current.style.transform="translate3d(0, ".concat(e,"px, 0)")}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollTop=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollTop=p(e))}}):null}),A=o.forwardRef((e,r)=>{let{sizes:t,onSizesChange:n,...l}=e,a=m(R,e.__scopeScrollArea),[s,c]=o.useState(),d=o.useRef(null),u=(0,i.s)(r,d,a.onScrollbarXChange);return o.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),(0,f.jsx)(k,{"data-orientation":"horizontal",...l,ref:u,sizes:t,style:{bottom:0,left:"rtl"===a.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===a.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":K(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.x),onDragScroll:r=>e.onDragScroll(r.x),onWheelScroll:(r,t)=>{if(a.viewport){let o=a.viewport.scrollLeft+r.deltaX;e.onWheelScroll(o),function(e,r){return e>0&&e<r}(o,t)&&r.preventDefault()}},onResize:()=>{d.current&&a.viewport&&s&&n({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:H(s.paddingLeft),paddingEnd:H(s.paddingRight)}})}})}),T=o.forwardRef((e,r)=>{let{sizes:t,onSizesChange:n,...l}=e,a=m(R,e.__scopeScrollArea),[s,c]=o.useState(),d=o.useRef(null),u=(0,i.s)(r,d,a.onScrollbarYChange);return o.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),(0,f.jsx)(k,{"data-orientation":"vertical",...l,ref:u,sizes:t,style:{top:0,right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":K(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.y),onDragScroll:r=>e.onDragScroll(r.y),onWheelScroll:(r,t)=>{if(a.viewport){let o=a.viewport.scrollTop+r.deltaY;e.onWheelScroll(o),function(e,r){return e>0&&e<r}(o,t)&&r.preventDefault()}},onResize:()=>{d.current&&a.viewport&&s&&n({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:H(s.paddingTop),paddingEnd:H(s.paddingBottom)}})}})}),[L,D]=h(R),k=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,sizes:l,hasThumb:a,onThumbChange:c,onThumbPointerUp:d,onThumbPointerDown:u,onThumbPositionChange:v,onDragScroll:h,onWheelScroll:w,onResize:g,...b}=e,C=m(R,t),[x,y]=o.useState(null),S=(0,i.s)(r,e=>y(e)),P=o.useRef(null),E=o.useRef(""),j=C.viewport,A=l.content-l.viewport,T=(0,s.c)(w),D=(0,s.c)(v),k=Y(g,10);function _(e){P.current&&h({x:e.clientX-P.current.left,y:e.clientY-P.current.top})}return o.useEffect(()=>{let e=e=>{let r=e.target;(null==x?void 0:x.contains(r))&&T(e,A)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[j,x,A,T]),o.useEffect(D,[l,D]),M(x,k),M(C.content,k),(0,f.jsx)(L,{scope:t,scrollbar:x,hasThumb:a,onThumbChange:(0,s.c)(c),onThumbPointerUp:(0,s.c)(d),onThumbPositionChange:D,onThumbPointerDown:(0,s.c)(u),children:(0,f.jsx)(n.sG.div,{...b,ref:S,style:{position:"absolute",...b.style},onPointerDown:(0,p.mK)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),P.current=x.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",C.viewport&&(C.viewport.style.scrollBehavior="auto"),_(e))}),onPointerMove:(0,p.mK)(e.onPointerMove,_),onPointerUp:(0,p.mK)(e.onPointerUp,e=>{let r=e.target;r.hasPointerCapture(e.pointerId)&&r.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,C.viewport&&(C.viewport.style.scrollBehavior=""),P.current=null})})})}),_="ScrollAreaThumb",N=o.forwardRef((e,r)=>{let{forceMount:t,...o}=e,n=D(_,e.__scopeScrollArea);return(0,f.jsx)(l.C,{present:t||n.hasThumb,children:(0,f.jsx)(O,{ref:r,...o})})}),O=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,style:l,...a}=e,s=m(_,t),c=D(_,t),{onThumbPositionChange:d}=c,u=(0,i.s)(r,e=>c.onThumbChange(e)),v=o.useRef(void 0),h=Y(()=>{v.current&&(v.current(),v.current=void 0)},100);return o.useEffect(()=>{let e=s.viewport;if(e){let r=()=>{h(),v.current||(v.current=X(e,d),d())};return d(),e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)}},[s.viewport,h,d]),(0,f.jsx)(n.sG.div,{"data-state":c.hasThumb?"visible":"hidden",...a,ref:u,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...l},onPointerDownCapture:(0,p.mK)(e.onPointerDownCapture,e=>{let r=e.target.getBoundingClientRect(),t=e.clientX-r.left,o=e.clientY-r.top;c.onThumbPointerDown({x:t,y:o})}),onPointerUp:(0,p.mK)(e.onPointerUp,c.onThumbPointerUp)})});N.displayName=_;var I="ScrollAreaCorner",F=o.forwardRef((e,r)=>{let t=m(I,e.__scopeScrollArea),o=!!(t.scrollbarX&&t.scrollbarY);return"scroll"!==t.type&&o?(0,f.jsx)(G,{...e,ref:r}):null});F.displayName=I;var G=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,...l}=e,a=m(I,t),[i,s]=o.useState(0),[c,d]=o.useState(0),u=!!(i&&c);return M(a.scrollbarX,()=>{var e;let r=(null==(e=a.scrollbarX)?void 0:e.offsetHeight)||0;a.onCornerHeightChange(r),d(r)}),M(a.scrollbarY,()=>{var e;let r=(null==(e=a.scrollbarY)?void 0:e.offsetWidth)||0;a.onCornerWidthChange(r),s(r)}),u?(0,f.jsx)(n.sG.div,{...l,ref:r,style:{width:i,height:c,position:"absolute",right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:0,...e.style}}):null});function H(e){return e?parseInt(e,10):0}function z(e,r){let t=e/r;return isNaN(t)?0:t}function K(e){let r=z(e.viewport,e.content),t=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-t)*r,18)}function W(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"ltr",o=K(r),n=r.scrollbar.paddingStart+r.scrollbar.paddingEnd,l=r.scrollbar.size-n,a=r.content-r.viewport,i=(0,u.q)(e,"ltr"===t?[0,a]:[-1*a,0]);return U([0,a],[0,l-o])(i)}function U(e,r){return t=>{if(e[0]===e[1]||r[0]===r[1])return r[0];let o=(r[1]-r[0])/(e[1]-e[0]);return r[0]+o*(t-e[0])}}var X=function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{},t={left:e.scrollLeft,top:e.scrollTop},o=0;return!function n(){let l={left:e.scrollLeft,top:e.scrollTop},a=t.left!==l.left,i=t.top!==l.top;(a||i)&&r(),t=l,o=window.requestAnimationFrame(n)}(),()=>window.cancelAnimationFrame(o)};function Y(e,r){let t=(0,s.c)(e),n=o.useRef(0);return o.useEffect(()=>()=>window.clearTimeout(n.current),[]),o.useCallback(()=>{window.clearTimeout(n.current),n.current=window.setTimeout(t,r)},[t,r])}function M(e,r){let t=(0,s.c)(r);(0,d.N)(()=>{let r=0;if(e){let o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(t)});return o.observe(e),()=>{window.cancelAnimationFrame(r),o.unobserve(e)}}},[e,t])}var q=b,B=x,V=y,Z=N,J=F},79919:(e,r,t)=>{t.r(r),t.d(r,{Anchor:()=>M,Arrow:()=>J,Close:()=>Z,Content:()=>V,Popover:()=>E,PopoverAnchor:()=>A,PopoverArrow:()=>U,PopoverClose:()=>W,PopoverContent:()=>I,PopoverPortal:()=>N,PopoverTrigger:()=>L,Portal:()=>B,Root:()=>Y,Trigger:()=>q,createPopoverScope:()=>R});var o=t(1856),n=t(33328),l=t(34124),a=t(21032),i=t(63569),s=t(12139),c=t(80491),d=t(40577),u=t(67221),p=t(17533),f=t(19900),v=t(93367),h=t(54154),w=t(66249),g=t(2188),m=t(46523),b=t(90508),C="Popover",[x,R]=(0,a.A)(C,[u.Bk]),y=(0,u.Bk)(),[S,P]=x(C),E=e=>{let{__scopePopover:r,children:t,open:n,defaultOpen:l,onOpenChange:a,modal:i=!1}=e,s=y(r),c=o.useRef(null),[p,f]=o.useState(!1),[v,h]=(0,w.i)({prop:n,defaultProp:null!=l&&l,onChange:a,caller:C});return(0,b.jsx)(u.bL,{...s,children:(0,b.jsx)(S,{scope:r,contentId:(0,d.B)(),triggerRef:c,open:v,onOpenChange:h,onOpenToggle:o.useCallback(()=>h(e=>!e),[h]),hasCustomAnchor:p,onCustomAnchorAdd:o.useCallback(()=>f(!0),[]),onCustomAnchorRemove:o.useCallback(()=>f(!1),[]),modal:i,children:t})})};E.displayName=C;var j="PopoverAnchor",A=o.forwardRef((e,r)=>{let{__scopePopover:t,...n}=e,l=P(j,t),a=y(t),{onCustomAnchorAdd:i,onCustomAnchorRemove:s}=l;return o.useEffect(()=>(i(),()=>s()),[i,s]),(0,b.jsx)(u.Mz,{...a,...n,ref:r})});A.displayName=j;var T="PopoverTrigger",L=o.forwardRef((e,r)=>{let{__scopePopover:t,...o}=e,a=P(T,t),i=y(t),s=(0,l.s)(r,a.triggerRef),c=(0,b.jsx)(v.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":X(a.open),...o,ref:s,onClick:(0,n.mK)(e.onClick,a.onOpenToggle)});return a.hasCustomAnchor?c:(0,b.jsx)(u.Mz,{asChild:!0,...i,children:c})});L.displayName=T;var D="PopoverPortal",[k,_]=x(D,{forceMount:void 0}),N=e=>{let{__scopePopover:r,forceMount:t,children:o,container:n}=e,l=P(D,r);return(0,b.jsx)(k,{scope:r,forceMount:t,children:(0,b.jsx)(f.C,{present:t||l.open,children:(0,b.jsx)(p.Portal,{asChild:!0,container:n,children:o})})})};N.displayName=D;var O="PopoverContent",I=o.forwardRef((e,r)=>{let t=_(O,e.__scopePopover),{forceMount:o=t.forceMount,...n}=e,l=P(O,e.__scopePopover);return(0,b.jsx)(f.C,{present:o||l.open,children:l.modal?(0,b.jsx)(G,{...n,ref:r}):(0,b.jsx)(H,{...n,ref:r})})});I.displayName=O;var F=(0,h.TL)("PopoverContent.RemoveScroll"),G=o.forwardRef((e,r)=>{let t=P(O,e.__scopePopover),a=o.useRef(null),i=(0,l.s)(r,a),s=o.useRef(!1);return o.useEffect(()=>{let e=a.current;if(e)return(0,g.Eq)(e)},[]),(0,b.jsx)(m.A,{as:F,allowPinchZoom:!0,children:(0,b.jsx)(z,{...e,ref:i,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,n.mK)(e.onCloseAutoFocus,e=>{var r;e.preventDefault(),s.current||null==(r=t.triggerRef.current)||r.focus()}),onPointerDownOutside:(0,n.mK)(e.onPointerDownOutside,e=>{let r=e.detail.originalEvent,t=0===r.button&&!0===r.ctrlKey;s.current=2===r.button||t},{checkForDefaultPrevented:!1}),onFocusOutside:(0,n.mK)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),H=o.forwardRef((e,r)=>{let t=P(O,e.__scopePopover),n=o.useRef(!1),l=o.useRef(!1);return(0,b.jsx)(z,{...e,ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:r=>{var o,a;null==(o=e.onCloseAutoFocus)||o.call(e,r),r.defaultPrevented||(n.current||null==(a=t.triggerRef.current)||a.focus(),r.preventDefault()),n.current=!1,l.current=!1},onInteractOutside:r=>{var o,a;null==(o=e.onInteractOutside)||o.call(e,r),r.defaultPrevented||(n.current=!0,"pointerdown"===r.detail.originalEvent.type&&(l.current=!0));let i=r.target;(null==(a=t.triggerRef.current)?void 0:a.contains(i))&&r.preventDefault(),"focusin"===r.detail.originalEvent.type&&l.current&&r.preventDefault()}})}),z=o.forwardRef((e,r)=>{let{__scopePopover:t,trapFocus:o,onOpenAutoFocus:n,onCloseAutoFocus:l,disableOutsidePointerEvents:a,onEscapeKeyDown:d,onPointerDownOutside:p,onFocusOutside:f,onInteractOutside:v,...h}=e,w=P(O,t),g=y(t);return(0,s.Oh)(),(0,b.jsx)(c.n,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:n,onUnmountAutoFocus:l,children:(0,b.jsx)(i.qW,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:v,onEscapeKeyDown:d,onPointerDownOutside:p,onFocusOutside:f,onDismiss:()=>w.onOpenChange(!1),children:(0,b.jsx)(u.UC,{"data-state":X(w.open),role:"dialog",id:w.contentId,...g,...h,ref:r,style:{...h.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),K="PopoverClose",W=o.forwardRef((e,r)=>{let{__scopePopover:t,...o}=e,l=P(K,t);return(0,b.jsx)(v.sG.button,{type:"button",...o,ref:r,onClick:(0,n.mK)(e.onClick,()=>l.onOpenChange(!1))})});W.displayName=K;var U=o.forwardRef((e,r)=>{let{__scopePopover:t,...o}=e,n=y(t);return(0,b.jsx)(u.i3,{...n,...o,ref:r})});function X(e){return e?"open":"closed"}U.displayName="PopoverArrow";var Y=E,M=A,q=L,B=N,V=I,Z=W,J=U}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6603],{6603:(e,t,n)=>{n.d(t,{$m:()=>W});var r=n(90508),l=n(1856),a=n(39268),o=n(94903),i=n(85226),c=n(95886),s=n(36755),u=n(22922),d=n(73693),m=n(91385),p=n(42242),f=n(85783),x=n(99783),h=n(24377),g=n(67712),w=n(42305);function y(e){var t;if(!e)return{pinnedHost:null,pinnedCwd:null};let n=new URLSearchParams(e),r=n.has("cwd"),l=n.has("host");if(!r&&!l)return{pinnedHost:null,pinnedCwd:null};let a=null!=(t=n.get("cwd"))?t:"",o=n.get("host"),i={pinnedCwd:r&&""!==a?a:null,pinnedHost:l?null!=o?o:"":null};return"1"===n.get("runtime")&&(i.runtimeCwd=!0),i}var v=n(78307),b=n(97438);let C=x.A.extend({addAttributes(){var e;return{...null==(e=this.parent)?void 0:e.call(this),mentionType:{default:"user",parseHTML:e=>e.getAttribute("data-mention-type")||"user",renderHTML:e=>({"data-mention-type":e.mentionType||"user"})},pinnedHost:{default:null,parseHTML:e=>e.getAttribute("data-pinned-host"),renderHTML:e=>null==e.pinnedHost?{}:{"data-pinned-host":String(e.pinnedHost)}},pinnedCwd:{default:null,parseHTML:e=>e.getAttribute("data-pinned-cwd"),renderHTML:e=>null==e.pinnedCwd?{}:{"data-pinned-cwd":String(e.pinnedCwd)}},runtimeCwd:{default:!1,parseHTML:e=>"true"===e.getAttribute("data-runtime-cwd"),renderHTML:e=>e.runtimeCwd?{"data-runtime-cwd":"true"}:{}}}}});function N(e){let t=e.getJSON();return t.content?t.content.map(e=>(function e(t){if("mention"===t.type){let e=t.attrs;if(e){var n,r;return function(e,t,n,r,l){let a=arguments.length>5&&void 0!==arguments[5]&&arguments[5];return"@[".concat(e,"](").concat(t,":").concat(n).concat(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(null==e&&null==t)return"";let r=e=>encodeURIComponent(e).replace(/\(/g,"%28").replace(/\)/g,"%29"),l=[];return l.push("cwd=".concat(null==t?"":r(t))),null!=e&&l.push("host=".concat(r(e))),n&&l.push("runtime=1"),"?".concat(l.join("&"))}(r,l,a),")")}(e.label||e.id,e.mentionType||"user",e.id,null!=(n=e.pinnedHost)?n:null,null!=(r=e.pinnedCwd)?r:null,!0===e.runtimeCwd)}return""}if("text"===t.type)return t.text||"";if("hardBreak"===t.type)return"\n";let l=t.content;return l?l.map(e).join(""):""})(e)).join("\n"):""}function j(e){if(!e)return{type:"doc",content:[{type:"paragraph"}]};let t=/@\[([^\]]+)\]\((user|agent):([a-f0-9-]+)(?:\?([^)]*))?\)/g;return{type:"doc",content:e.split("\n").map(e=>{let n,r=[],l=0,a=RegExp(t.source,"g");for(;null!==(n=a.exec(e));){n.index>l&&r.push({type:"text",text:e.slice(l,n.index)});let{pinnedHost:t,pinnedCwd:a,runtimeCwd:o}=y(n[4]);r.push({type:"mention",attrs:{id:n[3],label:n[1],mentionType:n[2],pinnedHost:t,pinnedCwd:a,runtimeCwd:!0===o}}),l=n.index+n[0].length}return l<e.length&&r.push({type:"text",text:e.slice(l)}),{type:"paragraph",content:r.length>0?r:void 0}})}}function E(e,t,n,r,l,a,o){if(l.innerHTML="",t){let e=document.createElement("div");e.className="flex items-center justify-center py-3 px-4",e.innerHTML='<div class="h-4 w-4 animate-spin rounded-full border-2 border-[#9A9A9A] border-t-transparent"></div>',l.appendChild(e);return}if(0===e.length){let e=document.createElement("div");e.className="py-2 px-3 text-xs text-muted-foreground",e.textContent="No results",l.appendChild(e);return}let i=document.createElement("div");i.className="py-1";let c=0,s=e=>{if(o)return void o(e,n);n({id:e.uuid,label:e.name,mentionType:e.type})},u=()=>{i.innerHTML="",e.forEach((e,t)=>{let n=document.createElement("button");n.type="button",n.className="flex w-full items-center gap-2.5 px-3 py-1.5 text-left text-sm transition-colors ".concat(t===c?"bg-background text-foreground":"text-muted-foreground hover:bg-background"),n.onclick=()=>s(e);let r=document.createElement("div");if(r.className="relative shrink-0","agent"===e.type){let t="function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,n=(0,m.Pf)(e.name,t?"static":"animated");if(n){let t=document.createElement("div");t.className="h-6 w-6 overflow-hidden rounded-full bg-muted";let l=document.createElement("img");l.src=n,l.alt=e.name,l.draggable=!1,l.className="h-full w-full origin-top scale-[1.5] -translate-y-[10%]",t.appendChild(l),r.appendChild(t)}else{let e=document.createElement("div");e.className="flex h-6 w-6 items-center justify-center rounded-full bg-primary text-white",e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>',r.appendChild(e)}}else{let e=document.createElement("div");e.className="flex h-6 w-6 items-center justify-center rounded-full bg-border text-muted-foreground",e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>',r.appendChild(e)}if("agent"===e.type&&e.online){let e=document.createElement("span");e.className="absolute -bottom-0.5 -right-0.5 h-2 w-2 rounded-full bg-[#22C55E] ring-2 ring-white",e.title=a.online,r.appendChild(e)}let l=document.createElement("div");l.className="min-w-0 flex-1";let o=document.createElement("div");if(o.className="truncate text-xs font-medium",o.textContent=e.name,l.appendChild(o),e.email){let t=document.createElement("div");t.className="truncate text-[10px] text-muted-foreground",t.textContent=e.email,l.appendChild(t)}if("agent"===e.type&&e.online){var u;let t=null!=(u=e.activeCount)?u:0,n=document.createElement("div");t>0?(n.className="mt-0.5 truncate text-[10px] font-medium text-[#15803D] dark:text-[#4FD07A]",n.textContent="▶ ".concat(a.activeCount(t))):(n.className="mt-0.5 truncate text-[10px] text-muted-foreground",n.textContent=a.idle),l.appendChild(n)}n.appendChild(r),n.appendChild(l),i.appendChild(n)})};u(),l.appendChild(i),r.current={onKeyDown:t=>{let{event:n}=t;return!(0,w.P)(n)&&("ArrowUp"===n.key?(c=c<=0?e.length-1:c-1,u(),!0):"ArrowDown"===n.key?(c=c>=e.length-1?0:c+1,u(),!0):"Enter"===n.key?(e[c]&&s(e[c]),!0):"Escape"===n.key)}}}function k(e){var t;let{open:n,agentName:o,instances:i,onConfirm:c,onCancel:s}=e,d=(0,a.c)("mentionInstance"),[m,p]=(0,l.useState)(null);(0,l.useEffect)(()=>{var e;n&&p(null!=(e=i[0])?e:null)},[n,i]);let f=new Set(i.map(e=>e.host)).size;return(0,r.jsx)(b.lG,{open:n,onOpenChange:e=>{e||s()},children:(0,r.jsxs)(b.Cf,{className:"z-[110] flex max-h-[85svh] flex-col gap-0 sm:max-w-md",overlayClassName:"z-[110]",children:[(0,r.jsxs)(b.c7,{className:"shrink-0",children:[(0,r.jsx)(b.L3,{children:d("title")}),(0,r.jsx)(b.rr,{children:d("subtitle",{name:o,count:i.length,hosts:f})})]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto py-3",onKeyDown:e=>{!("Enter"!==e.key||(0,w.P)(e))&&m&&(e.preventDefault(),c(m))},children:(0,r.jsx)(v.O,{instances:i,selectedConnectionUuid:null!=(t=null==m?void 0:m.connectionUuid)?t:null,onSelect:p,ariaLabel:d("title")})}),(0,r.jsxs)(b.Es,{className:"shrink-0",children:[(0,r.jsx)(u.$,{variant:"ghost",onClick:s,children:d("cancel")}),(0,r.jsx)(u.$,{disabled:!m,onClick:()=>{m&&c(m)},children:d("confirm")})]})]})})}let M=(0,l.forwardRef)((e,t)=>{var n,o;let{value:i,onChange:c,placeholder:s,className:u,disabled:d,onSubmit:m,entityType:x,entityUuid:y}=e,v=(0,l.useRef)([]),b=(0,l.useRef)(!1),M=(0,l.useRef)(null),S=(0,l.useRef)(null),T=(0,l.useRef)(null),A=(0,l.useRef)(null),[,R]=(0,l.useState)(0),D=(0,l.useRef)(!1),H=(0,a.c)("mention"),U=(0,l.useRef)({online:"",offline:"",idle:"",activeCount:()=>""});U.current={online:H("online"),offline:H("offline"),idle:H("idle"),activeCount:e=>H("activeCount",{count:e})};let _=function(e,t){let n=(0,l.useRef)(null),r=(0,l.useRef)(e);r.current=e;let a=(0,l.useCallback)(e=>{n.current&&clearTimeout(n.current),n.current=setTimeout(()=>r.current(e),250)},[250]);return(0,l.useEffect)(()=>()=>{n.current&&clearTimeout(n.current)},[]),a}((0,l.useCallback)(async e=>{b.current=!0,R(e=>e+1);try{let t="/api/mentionables?q=".concat(encodeURIComponent(e),"&limit=10&withInstances=1");x&&y&&(t+="&entityType=".concat(encodeURIComponent(x),"&entityUuid=").concat(encodeURIComponent(y)));let n=await fetch(t);if(n.ok){let e=await n.json();e.success&&(v.current=e.data)}}catch(e){v.current=[]}finally{b.current=!1,R(e=>e+1)}},[x,y]),250),[L,F]=(0,l.useState)(null),I=(0,l.useCallback)((e,t,n)=>{t({id:e.uuid,label:e.name,mentionType:e.type,pinnedHost:n?n.host:null,pinnedCwd:n?n.cwd:null,runtimeCwd:(null==n?void 0:n.runtimeCwd)===!0})},[]),O=(0,l.useRef)(()=>{});O.current=(e,t)=>{var n;let r=function(e){var t;if("agent"===e.type&&e.projectFixedCwd)return{kind:"insert",pin:{host:e.projectFixedCwd.host,cwd:e.projectFixedCwd.cwd,runtimeCwd:!0}};if(e.isIdeaAssignee&&e.ideaPin)return{kind:"insert",pin:{host:e.ideaPin.host,cwd:e.ideaPin.cwd}};let n="agent"===e.type?(null!=(t=e.instances)?t:[]).filter(e=>"online"===e.effectiveStatus):[];return n.length>=2?{kind:"pick",onlineInstances:n}:1===n.length?{kind:"insert",pin:n[0]}:{kind:"insert",pin:null}}(e);if("pick"===r.kind)return void F({item:e,onlineInstances:r.onlineInstances,command:t});I(e,t,null!=(n=r.pin)?n:void 0)};let z=(0,l.useCallback)((e,t)=>O.current(e,t),[]);(0,l.useEffect)(()=>{T.current&&A.current&&E(v.current,b.current,A.current,M,T.current,U.current,z)});let B=(0,p.hG)({immediatelyRender:!1,extensions:[f.A.configure({heading:!1,blockquote:!1,codeBlock:!1,bulletList:!1,orderedList:!1,listItem:!1,horizontalRule:!1}),C.configure({HTMLAttributes:{class:"text-blue-600 font-medium"},renderText(e){var t;let{node:n}=e;return"@".concat(null!=(t=n.attrs.label)?t:n.attrs.id)},suggestion:{char:"@",allowSpaces:!0,items:e=>{let{query:t}=e;return _(t),v.current},render:()=>({onStart:e=>{var t;let n=document.createElement("div");if(n.className="z-[100] rounded-md border border-border bg-card shadow-md min-w-[200px] max-w-[300px] overflow-hidden",T.current=n,A.current=e.command,e.clientRect){let t="function"==typeof e.clientRect?e.clientRect():e.clientRect;t&&(n.style.position="fixed",n.style.left="".concat(t.left,"px"),window.innerHeight-t.bottom<220?n.style.bottom="".concat(window.innerHeight-t.top+4,"px"):n.style.top="".concat(t.bottom+4,"px"))}(null!=(t=S.current)?t:document.body).appendChild(n),E(v.current,b.current,e.command,M,n,U.current,z)},onUpdate:e=>{if(A.current=e.command,T.current&&e.clientRect){let t="function"==typeof e.clientRect?e.clientRect():e.clientRect;t&&(T.current.style.left="".concat(t.left,"px"),window.innerHeight-t.bottom<220?(T.current.style.top="",T.current.style.bottom="".concat(window.innerHeight-t.top+4,"px")):(T.current.style.bottom="",T.current.style.top="".concat(t.bottom+4,"px")))}T.current&&E(v.current,b.current,e.command,M,T.current,U.current,z)},onKeyDown:e=>!!M.current&&M.current.onKeyDown(e),onExit:()=>{var e;null==(e=T.current)||e.remove(),T.current=null,A.current=null,v.current=[],b.current=!1}})}})],content:j(i),editable:!d,editorProps:{attributes:{class:(0,h.cn)("min-h-[36px] max-h-[120px] overflow-y-auto px-3 py-2 text-sm outline-none","prose prose-sm max-w-none [&_p]:my-0"),"data-placeholder":s||""},handleKeyDown:(e,t)=>!(0,w.P)(t)&&"Enter"===t.key&&!t.shiftKey&&!T.current&&!!m&&(t.preventDefault(),m(),!0)},onUpdate:e=>{let{editor:t}=e;D.current=!0,c(N(t))}});return(0,l.useEffect)(()=>{if(!B||D.current){D.current=!1;return}N(B)!==i&&B.commands.setContent(j(i))},[i,B]),(0,l.useEffect)(()=>{B&&B.setEditable(!d)},[d,B]),(0,l.useImperativeHandle)(t,()=>({focus:()=>null==B?void 0:B.commands.focus(),clear:()=>{null==B||B.commands.clearContent(),c("")}})),(0,r.jsxs)("div",{ref:S,className:(0,h.cn)("relative rounded-md border border-input bg-transparent shadow-xs transition-[color,box-shadow]","focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]",d&&"cursor-not-allowed opacity-50",u),children:[(0,r.jsx)(p.$Z,{editor:B}),(0,r.jsx)(k,{open:null!==L,agentName:null!=(n=null==L?void 0:L.item.name)?n:"",instances:null!=(o=null==L?void 0:L.onlineInstances)?o:[],onConfirm:e=>{!function(e,t,n){n.close(),e&&n.defer(()=>{try{n.focusEditor(),n.insert(e,t)}catch(e){n.onError(e)}})}(L,e,{close:()=>F(null),insert:(e,t)=>I(e.item,e.command,t),defer:e=>requestAnimationFrame(e),focusEditor:()=>null==B?void 0:B.commands.focus(),onError:e=>g.q.error("MentionEditor: cwd-pinned mention insert failed",e)})},onCancel:()=>F(null)}),(0,r.jsx)("style",{children:"\n .tiptap p.is-editor-empty:first-child::before {\n content: attr(data-placeholder);\n color: #9A9A9A;\n float: left;\n height: 0;\n pointer-events: none;\n }\n .tiptap .mention {\n color: #2563eb;\n font-weight: 500;\n }\n "})]})});M.displayName="MentionEditor";var S=n(67839),T=n(52217);let A=(0,T.createServerReference)("708b34f6db2e02bd860d36a9bb430bef751e9d49fe",T.callServer,void 0,T.findSourceMapURL,"createCommentAction");var R=n(97261);let D=/@\[([^\]]+)\]\((user|agent):([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:\?([^)]*))?\)/gi,H=/\u200B\u200BMENTION_(\d+)\u200B\u200B/g,U="chorus-mention";function _(e){let{children:t,renderMention:n}=e;if(!t||"string"!=typeof t)return null;if(!new RegExp(D.source,D.flags.replace("g","")).test(t))return(0,r.jsx)("div",{className:"overflow-hidden [&_pre]:overflow-x-auto",children:(0,r.jsx)(R.MarkdownContent,{children:t})});if(n)return(0,r.jsx)(L,{renderMention:n,children:t});let{processed:l,mentions:a}=function(e){let t=[],n=new RegExp(D.source,D.flags);return{processed:e.replace(n,(e,n,r,l,a)=>{let o=t.length,{pinnedHost:i,pinnedCwd:c,runtimeCwd:s}=y(a),u={displayName:n,type:r,uuid:l};return(null!==i||null!==c)&&(u.pinnedHost=i,u.pinnedCwd=c,s&&(u.runtimeCwd=!0)),t.push(u),"".concat("​​MENTION_").concat(o).concat("​​")}),mentions:t}}(t);return(0,r.jsx)(F,{mentions:a,children:(0,r.jsx)(R.MarkdownContent,{children:l})})}function L(e){let{children:t,renderMention:n}=e,{processed:a,mentions:o}=l.useMemo(()=>(function(e){let t=[],n=new RegExp(D.source,D.flags);return{processed:e.replace(n,(e,n,r,l,a)=>{let o=t.length,{pinnedHost:i,pinnedCwd:c,runtimeCwd:s}=y(a),u={type:r.toLowerCase(),uuid:l.toLowerCase(),displayName:n};(null!==i||null!==c)&&(u.pinnedHost=i,u.pinnedCwd=c,s&&(u.runtimeCwd=!0)),t.push(u);let d="@".concat(n).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return"<".concat(U," ").concat("idx",'="').concat(o,'">').concat(d,"</").concat(U,">")}),mentions:t}})(t),[t]),i=l.useMemo(()=>({[U]:e=>{let{idx:t}=e,l=void 0===t?NaN:parseInt(t,10),a=Number.isInteger(l)?o[l]:void 0;return a?(0,r.jsx)(r.Fragment,{children:n({...a,index:l})}):null}}),[o,n]);return(0,r.jsx)("div",{className:"overflow-hidden [&_pre]:overflow-x-auto",children:(0,r.jsx)(R.MarkdownContent,{components:i,allowedTags:{[U]:["idx"]},literalTagContent:[U],children:a})})}function F(e){let{children:t,mentions:n}=e,a=l.useRef(null);return l.useEffect(()=>{let e;if(!a.current||0===n.length)return;let t=document.createTreeWalker(a.current,NodeFilter.SHOW_TEXT,null),r=[];for(;e=t.nextNode();)H.test(e.textContent||"")&&r.push(e),H.lastIndex=0;for(let e of r){var l;let t,r=e.textContent||"",a=document.createDocumentFragment(),o=0,i=RegExp(H.source,"g");for(;null!==(t=i.exec(r));){t.index>o&&a.appendChild(document.createTextNode(r.slice(o,t.index)));let e=n[parseInt(t[1],10)];if(e){let t=document.createElement("span");t.className="text-blue-600 font-medium",t.title="".concat(e.type,": ").concat(e.uuid),t.textContent="@".concat(e.displayName),a.appendChild(t)}else a.appendChild(document.createTextNode(t[0]));o=t.index+t[0].length}o<r.length&&a.appendChild(document.createTextNode(r.slice(o))),null==(l=e.parentNode)||l.replaceChild(a,e)}},[n]),(0,r.jsx)("div",{ref:a,className:"overflow-hidden [&_pre]:overflow-x-auto",children:t})}var I=n(94643),O=n(63964),z=n(96213),B=n(30423),P=n(38106),$=n(67587);function q(e){return"agent"===e.type?(0,r.jsx)(I.Gm,{mention:e,displayName:e.displayName},e.index):(0,r.jsxs)("span",{className:"text-blue-600 font-medium",title:"".concat(e.type,": ").concat(e.uuid),children:["@",e.displayName]},e.index)}function K(e,t){let n=new Map;for(let t of e)n.set(t.uuid,t);for(let e of t)n.set(e.uuid,e);return[...n.values()].sort((e,t)=>e.createdAt!==t.createdAt?e.createdAt<t.createdAt?1:-1:e.uuid<t.uuid?1:-1)}async function G(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,r=new Set(e.map(e=>e.uuid)),l=[],a=null,o=!1,i=0,c=!1,s=null,u=!1;for(let e=0;e<n;e++){let e=await t(a);if(!e)break;if(u=!0,i=e.total,l.push(...e.comments),c=e.hasMore,s=e.nextCursor,e.comments.some(e=>r.has(e.uuid))||!e.hasMore){o=!0;break}a=e.nextCursor}return u?o?{comments:K(e,l),total:i,contiguous:!0,resetOldestCursor:null,resetHasMore:!1}:{comments:K([],l),total:i,contiguous:!1,resetOldestCursor:s,resetHasMore:c}:null}function W(e){let{targetType:t,targetUuid:n,currentUserUuid:m,onCountChange:p,compact:f=!1}=e,x=(0,a.c)(),[h,g]=(0,l.useState)(""),[w,y]=(0,l.useState)([]),[v,b]=(0,l.useState)(!0),[C,N]=(0,l.useState)(null),[j,E]=(0,l.useState)(!1),[k,T]=(0,l.useState)(!1),[R,D]=(0,l.useState)(null),[H,U]=(0,l.useState)(!1),[_,L]=(0,l.useState)(0),F=(0,l.useRef)(null),I=(0,l.useRef)(null),B=(0,l.useRef)(w);B.current=w;let P=(0,l.useRef)(R);P.current=R;let q=(0,l.useRef)(H);q.current=H;let W=(0,l.useRef)(j);W.current=j;let Q=(0,l.useRef)(v);Q.current=v;let V=f?"h-6 w-6":"h-[30px] w-[30px]",X=f?"gap-2":"gap-2.5";(0,l.useEffect)(()=>{null==p||p(_)},[_,p]);let Y=(0,l.useCallback)(async()=>{b(!0),N(null);let e=await (0,S.d)(t,n,{limit:10});e.success?(y(e.comments),D(e.nextCursor),U(e.hasMore),L(e.total)):N(e.error),b(!1)},[t,n]);(0,l.useEffect)(()=>{Y()},[Y]);let Z=(0,l.useCallback)(async()=>{if(W.current||Q.current||!q.current||!P.current)return;E(!0);let e=await (0,S.d)(t,n,{cursor:P.current,limit:10});e.success&&(y(t=>K(t,e.comments)),D(e.nextCursor),U(e.hasMore),L(e.total)),E(!1)},[t,n]);(0,l.useEffect)(()=>{let e=I.current;if(!e)return;let t=new IntersectionObserver(e=>{var t;(null==(t=e[0])?void 0:t.isIntersecting)&&Z()},{rootMargin:"120px"});return t.observe(e),()=>t.disconnect()},[Z,v]),(0,O.w0)(t,n,e=>{m&&e.actorUuid===m||G(B.current,async e=>{let r=await (0,S.d)(t,n,{cursor:e,limit:10});return r.success?r:null}).then(e=>{e&&(y(e.comments),L(e.total),e.contiguous||(D(e.resetOldestCursor),U(e.resetHasMore)))})});let ee=async()=>{if(!h.trim()||k)return;T(!0);let e=await A(t,n,h);if(T(!1),e.success){var r;let t=!B.current.some(t=>t.uuid===e.comment.uuid);y(t=>K(t,[e.comment])),t&&L(e=>e+1),g(""),null==(r=F.current)||r.clear()}else $.oR.error(e.error)};return(0,r.jsx)(z.D,{entityType:t,entityUuid:n,subEntityType:"comment",children:(0,r.jsxs)("div",{className:"flex flex-col gap-0",children:[(0,r.jsxs)("div",{className:"flex items-center ".concat(X," pb-3 border-b border-[#F0EDE8] dark:border-[#26241f]"),children:[(0,r.jsx)(d.eu,{className:"".concat(f?"h-6 w-6":"h-7 w-7"," shrink-0"),children:(0,r.jsx)(d.q5,{className:"bg-border text-muted-foreground",children:(0,r.jsx)(o.A,{className:"".concat(f?"h-3 w-3":"h-3.5 w-3.5")})})}),(0,r.jsx)("div",{className:"flex-1 min-w-0",children:(0,r.jsx)(M,{ref:F,value:h,onChange:g,onSubmit:ee,placeholder:x("comments.addComment"),className:"border border-border bg-card text-sm rounded-lg",disabled:k,entityType:t,entityUuid:n})}),(0,r.jsx)(u.$,{size:"sm",className:"shrink-0 gap-1 bg-[#E07A5F] text-white hover:bg-[#D06A4F]",disabled:!h.trim()||k,onClick:ee,children:k?(0,r.jsx)(i.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,r.jsx)(c.A,{className:"h-3.5 w-3.5"})})]}),v?(0,r.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,r.jsx)(i.A,{className:"h-4 w-4 animate-spin text-muted-foreground"})}):C?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2 py-8 text-sm text-muted-foreground",children:[(0,r.jsx)(s.A,{className:"h-4 w-4"}),(0,r.jsx)("p",{children:x("comments.loadError")}),(0,r.jsx)(u.$,{variant:"outline",size:"sm",onClick:Y,children:x("comments.retry")})]}):0===w.length?(0,r.jsx)("p",{className:"py-8 text-center text-sm text-muted-foreground italic",children:x("comments.noComments")}):(0,r.jsxs)("div",{children:[w.map(e=>(0,r.jsx)(J,{comment:e,compact:f,avatarSize:V,gap:X,t:x},e.uuid)),(0,r.jsx)("div",{ref:I,"aria-hidden":"true"}),j?(0,r.jsxs)("div",{className:"flex items-center justify-center py-4",children:[(0,r.jsx)(i.A,{className:"h-4 w-4 animate-spin text-muted-foreground"}),(0,r.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:x("comments.loadingMore")})]}):!H&&(0,r.jsx)("p",{className:"py-4 text-center text-xs text-muted-foreground italic",children:x("comments.noMoreComments")})]})]})})}function J(e){let{comment:t,compact:n,avatarSize:a,gap:o,t:i}=e,[c,s]=(0,l.useState)(!1),p="agent"===t.author.type,f=p?(0,B.j)(t.author.name):null,x=t.content.length>200,h=f?"".concat(f,"18"):void 0;return(0,r.jsxs)("div",{className:"flex ".concat(o," py-3 border-b border-[#F0EDE8] dark:border-[#26241f] last:border-b-0"),children:[p?(0,r.jsx)(m.AgentAvatar,{name:t.author.name,size:n?24:30,className:"shrink-0 rounded-full"}):(0,r.jsx)(d.eu,{className:"".concat(a," shrink-0"),children:(0,r.jsx)(d.q5,{className:"bg-border text-muted-foreground text-[11px] font-medium",children:t.author.name.charAt(0).toUpperCase()})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[(0,r.jsx)("span",{className:"".concat(n?"text-xs":"text-[13px]"," font-semibold text-[#1A1A1A] dark:text-[#CFCFCF]"),children:t.author.name}),(0,r.jsx)("span",{style:p?{backgroundColor:h,color:null!=f?f:void 0}:void 0,className:"inline-flex items-center rounded px-1.5 py-px text-[9px] font-medium ".concat(p?"":"bg-[#F0EDE8] dark:bg-[#1f1e1c] text-muted-foreground"),children:i(p?"comments.roleAgent":"comments.roleHuman")}),(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground",children:function(e,t){let n=new Date(e),r=new Date().getTime()-n.getTime(),l=Math.floor(r/6e4),a=Math.floor(r/36e5),o=Math.floor(r/864e5);return l<1?t("time.justNow"):l<60?t("time.minutesAgo",{minutes:l}):a<24?t("time.hoursAgo",{hours:a}):o<7?t("time.daysAgo",{days:o}):(0,P.r)(n)}(t.createdAt,i)})]}),p&&t.author.owner&&(0,r.jsx)("div",{className:"flex items-center gap-1 mt-0.5",children:(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground italic",children:i("comments.onBehalfOf",{name:t.author.owner.name})})}),(0,r.jsx)("div",{className:"mt-1 ".concat(n?"text-xs":"text-[13px]"," leading-relaxed text-[#3D3D3D] dark:text-[#d8d2ca] max-w-none [&_h1]:text-sm [&_h1]:font-semibold [&_h1]:mt-2 [&_h1]:mb-1 [&_h2]:text-[13px] [&_h2]:font-semibold [&_h2]:mt-2 [&_h2]:mb-1 [&_h3]:text-[13px] [&_h3]:font-semibold [&_h3]:mt-1.5 [&_h3]:mb-0.5 [&_p]:my-1 [&_ul]:my-1 [&_ol]:my-1 [&_li]:my-0.5 [&_code]:bg-secondary [&_code]:text-foreground [&_code]:px-1 [&_code]:py-0.5 [&_code]:rounded [&_a]:text-primary [&_pre]:bg-secondary [&_pre]:text-foreground"),children:x&&!c?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(_,{renderMention:q,children:t.content.slice(0,200)+"..."}),(0,r.jsx)(u.$,{variant:"link",size:"sm",onClick:()=>s(!0),className:"h-auto p-0 text-[#E07A5F] dark:text-[#F0A088] text-xs font-medium mt-1",children:i("comments.showMore")})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(_,{renderMention:q,children:t.content}),x&&(0,r.jsx)(u.$,{variant:"link",size:"sm",onClick:()=>s(!1),className:"h-auto p-0 text-[#E07A5F] dark:text-[#F0A088] text-xs font-medium mt-1",children:i("comments.showLess")})]})})]})]})}},30423:(e,t,n)=>{n.d(t,{j:()=>l});let r=["#E06C75","#E5C07B","#98C379","#56B6C2","#61AFEF","#C678DD","#D19A66","#BE5046","#7EC8E3","#C3E88D","#F78C6C","#A9DC76"];function l(e){let t=function(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return Math.abs(t)}(e)%r.length;return r[t]}},38106:(e,t,n)=>{function r(e){let t="string"==typeof e?new Date(e):e;if(isNaN(t.getTime()))return"";let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),o=String(t.getMinutes()).padStart(2,"0");return"".concat(n,"-").concat(r,"-").concat(l," ").concat(a,":").concat(o)}function l(e,t){let n="string"==typeof e?new Date(e):e;return isNaN(n.getTime())?"":n.toLocaleDateString(t,{month:"short",day:"numeric"})}n.d(t,{r:()=>r,s:()=>l})},47754:(e,t,n)=>{n.d(t,{fv:()=>x,xQ:()=>h});var r=n(1856),l=n(63964);let a=new Map,o=new Map,i=new Map,c=new Set,s=0;function u(e,t,n,r){return n?r?"".concat(e,":").concat(t,":").concat(n,":").concat(r):"".concat(e,":").concat(t,":").concat(n):"".concat(e,":").concat(t)}function d(){s++,c.forEach(e=>e())}function m(e){var t;let n=e.subEntityType,r=e.subEntityUuid,l=u(e.entityType,e.entityUuid,n,r),c=function(e,t,n,r,l){let a=u(e,t,r,l);return"".concat(a,":").concat(n)}(e.entityType,e.entityUuid,e.agentUuid,n,r),s=o.get(c);if(s&&Date.now()-s<3e3)return;o.set(c,Date.now());let m={agentUuid:e.agentUuid,agentName:e.agentName,action:e.action,timestamp:Date.now()},p=(null!=(t=a.get(l))?t:[]).filter(t=>t.agentUuid!==e.agentUuid);p.push(m),a.set(l,p);let f=i.get(c);f&&clearTimeout(f);let x=setTimeout(()=>{let t=a.get(l);if(t){let n=t.filter(t=>t.agentUuid!==e.agentUuid);0===n.length?a.delete(l):a.set(l,n)}o.delete(c),i.delete(c),d()},3e3);i.set(c,x),d()}function p(){return s}function f(e){return c.add(e),()=>{c.delete(e)}}function x(e){m({type:"presence",companyUuid:"",projectUuid:"",...e,timestamp:Date.now()})}function h(){return(0,r.useSyncExternalStore)(f,p,p),(0,l.S2)(m),{getPresence:(e,t,n,r)=>{if(n){var l;return null!=(l=a.get(u(e,t,n,r)))?l:[]}let o="".concat(e,":").concat(t),i=new Map;for(let[e,t]of a)if(e===o||e.startsWith(o+":"))for(let e of t){let t=i.get(e.agentUuid);(!t||e.timestamp>t.timestamp)&&i.set(e.agentUuid,e)}return[...i.values()]}}}},63964:(e,t,n)=>{n.d(t,{S2:()=>s,eV:()=>c,l9:()=>i,tS:()=>o,w0:()=>u});var r=n(90508),l=n(1856);n(91814);let a=(0,l.createContext)(null);function o(e){let{projectUuid:t,children:n}=e,o=(0,l.useRef)(new Set),i=(0,l.useRef)(new Set),c=(0,l.useRef)(new Set),s=(0,l.useRef)(new Set),u=(0,l.useCallback)(()=>{o.current.forEach(e=>e())},[]),d=(0,l.useCallback)(e=>{i.current.forEach(t=>t(e))},[]);(0,l.useEffect)(()=>{let e,n=null,r=0,l={};function a(){o(),(n=new EventSource(t?"/api/events?projectUuid=".concat(t):"/api/events")).onmessage=t=>{let n=null;try{n=JSON.parse(t.data)}catch(e){return}if(!n)return;if("presence"===n.type)return void c.current.forEach(e=>e(n));if("execution"===n.type)return void s.current.forEach(e=>e(n));let a=n;clearTimeout(e);let o=Date.now(),i=o-r;i>=3e3?(r=o,u()):e=setTimeout(()=>{r=Date.now(),u()},Math.max(1e3,3e3-i));let m=a.entityType;clearTimeout(l[m]),l[m]=setTimeout(()=>{d(a)},300)},n.onerror=()=>{}}function o(){n&&(n.close(),n=null)}function i(){if("visible"===document.visibilityState&&(!n||n.readyState===EventSource.CLOSED))for(let e of(a(),u(),["task","idea","proposal","document","project","project_group"]))d({companyUuid:"",projectUuid:"",entityType:e,entityUuid:"",action:"updated"})}return a(),document.addEventListener("visibilitychange",i),()=>{for(let t in o(),clearTimeout(e),l)clearTimeout(l[t]);document.removeEventListener("visibilitychange",i)}},[t,u,d]);let m=(0,l.useCallback)(e=>(o.current.add(e),()=>{o.current.delete(e)}),[]),p=(0,l.useCallback)(e=>(i.current.add(e),()=>{i.current.delete(e)}),[]),f=(0,l.useCallback)(e=>(c.current.add(e),()=>{c.current.delete(e)}),[]),x=(0,l.useCallback)(e=>(s.current.add(e),()=>{s.current.delete(e)}),[]),h=(0,l.useMemo)(()=>({subscribe:m,subscribeEntity:p,subscribePresence:f,subscribeExecution:x}),[m,p,f,x]);return(0,r.jsx)(a.Provider,{value:h,children:n})}function i(e){let t=(0,l.useContext)(a),n=(0,l.useRef)(e);n.current=e,(0,l.useEffect)(()=>{if(!t)return;let e=()=>n.current();return e(),t.subscribe(e)},[t])}function c(e,t){let n=(0,l.useContext)(a),r=(0,l.useRef)(t);r.current=t;let o=(0,l.useRef)(e);o.current=e,(0,l.useEffect)(()=>{if(n)return n.subscribeEntity(e=>{let t=o.current;(Array.isArray(t)?t.includes(e.entityType):e.entityType===t)&&r.current(e)})},[n])}function s(e){let t=(0,l.useContext)(a),n=(0,l.useRef)(e);n.current=e,(0,l.useEffect)(()=>{if(t)return t.subscribePresence(e=>n.current(e))},[t])}function u(e,t,n){let r=(0,l.useContext)(a),o=(0,l.useRef)(n);o.current=n,(0,l.useEffect)(()=>{if(r)return r.subscribeEntity(n=>{n.entityType===e&&n.entityUuid===t&&o.current(n)})},[r,e,t])}},67839:(e,t,n)=>{n.d(t,{d:()=>l});var r=n(52217);let l=(0,r.createServerReference)("70bae9ef8ae8fb5cbc29b1dfd9ee167aedc86e8bd3",r.callServer,void 0,r.findSourceMapURL,"getCommentsAction")},96213:(e,t,n)=>{n.d(t,{D:()=>i});var r=n(90508),l=n(47754),a=n(30423),o=n(91385);function i(e){let{entityType:t,entityUuid:n,subEntityType:o,subEntityUuid:i,children:s,badgeInside:u}=e,{getPresence:d}=(0,l.xQ)(),m=d(t,n,o,i),p=m.length>0,f=p&&m.some(e=>"mutate"===e.action),x=p?f?m.find(e=>"mutate"===e.action):m[m.length-1]:null,h=x?(0,a.j)(x.agentName):"transparent";return(0,r.jsxs)("div",{className:"relative",style:p?{outline:"2px ".concat(f?"solid":"dashed"," ").concat(h),outlineOffset:"-2px",borderRadius:"var(--radius)"}:void 0,children:[p&&(0,r.jsxs)("div",{className:"absolute flex gap-1 z-10 justify-end ".concat(u?"top-0.5 right-1.5 max-w-[70%]":"-top-2.5 right-2 max-w-[80%]"),children:[m.slice(0,3).map(e=>(0,r.jsx)(c,{entry:e},e.agentUuid)),m.length>3&&(0,r.jsxs)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded-full text-[10px] font-medium text-white bg-gray-500 whitespace-nowrap",children:["+",m.length-3]})]}),s]})}function c(e){let{entry:t}=e,n=(0,a.j)(t.agentName);return(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[10px] font-medium text-white whitespace-nowrap animate-in fade-in duration-300 ease-out sm:text-[11px] sm:px-2",style:{backgroundColor:n},children:[(0,r.jsx)(o.AgentAvatar,{name:t.agentName,size:14,className:"rounded-full"}),t.agentName]})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[67580],{5616:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},6493:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("file-spreadsheet",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M8 13h2",key:"yr2amv"}],["path",{d:"M14 13h2",key:"un5t4a"}],["path",{d:"M8 17h2",key:"2yhykz"}],["path",{d:"M14 17h2",key:"10kma7"}]])},6841:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("file-type",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M11 18h2",key:"12mj7e"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"M9 13v-.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v.5",key:"qbrxap"}]])},15044:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]])},15584:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("file-pen",[["path",{d:"M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34",key:"o6klzx"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z",key:"zhnas1"}]])},45841:(e,t,r)=>{r.r(t),r.d(t,{Arrow:()=>W,Content:()=>U,Portal:()=>Y,Provider:()=>G,Root:()=>X,Tooltip:()=>A,TooltipArrow:()=>q,TooltipContent:()=>S,TooltipPortal:()=>D,TooltipProvider:()=>T,TooltipTrigger:()=>L,Trigger:()=>F,createTooltipScope:()=>k});var n=r(1856),o=r(33328),a=r(34124),l=r(21032),i=r(63569),s=r(40577),c=r(67221),u=r(17533),d=r(19900),p=r(93367),h=r(54154),y=r(66249),f=r(78134),v=r(90508),[x,k]=(0,l.A)("Tooltip",[c.Bk]),g=(0,c.Bk)(),b="TooltipProvider",w="tooltip.open",[m,C]=x(b),T=e=>{let{__scopeTooltip:t,delayDuration:r=700,skipDelayDuration:o=300,disableHoverableContent:a=!1,children:l}=e,i=n.useRef(!0),s=n.useRef(!1),c=n.useRef(0);return n.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,v.jsx)(m,{scope:t,isOpenDelayedRef:i,delayDuration:r,onOpen:n.useCallback(()=>{window.clearTimeout(c.current),i.current=!1},[]),onClose:n.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>i.current=!0,o)},[o]),isPointerInTransitRef:s,onPointerInTransitChange:n.useCallback(e=>{s.current=e},[]),disableHoverableContent:a,children:l})};T.displayName=b;var M="Tooltip",[j,E]=x(M),A=e=>{let{__scopeTooltip:t,children:r,open:o,defaultOpen:a,onOpenChange:l,disableHoverableContent:i,delayDuration:u}=e,d=C(M,e.__scopeTooltip),p=g(t),[h,f]=n.useState(null),x=(0,s.B)(),k=n.useRef(0),b=null!=i?i:d.disableHoverableContent,m=null!=u?u:d.delayDuration,T=n.useRef(!1),[E,A]=(0,y.i)({prop:o,defaultProp:null!=a&&a,onChange:e=>{e?(d.onOpen(),document.dispatchEvent(new CustomEvent(w))):d.onClose(),null==l||l(e)},caller:M}),R=n.useMemo(()=>E?T.current?"delayed-open":"instant-open":"closed",[E]),L=n.useCallback(()=>{window.clearTimeout(k.current),k.current=0,T.current=!1,A(!0)},[A]),P=n.useCallback(()=>{window.clearTimeout(k.current),k.current=0,A(!1)},[A]),_=n.useCallback(()=>{window.clearTimeout(k.current),k.current=window.setTimeout(()=>{T.current=!0,A(!0),k.current=0},m)},[m,A]);return n.useEffect(()=>()=>{k.current&&(window.clearTimeout(k.current),k.current=0)},[]),(0,v.jsx)(c.bL,{...p,children:(0,v.jsx)(j,{scope:t,contentId:x,open:E,stateAttribute:R,trigger:h,onTriggerChange:f,onTriggerEnter:n.useCallback(()=>{d.isOpenDelayedRef.current?_():L()},[d.isOpenDelayedRef,_,L]),onTriggerLeave:n.useCallback(()=>{b?P():(window.clearTimeout(k.current),k.current=0)},[P,b]),onOpen:L,onClose:P,disableHoverableContent:b,children:r})})};A.displayName=M;var R="TooltipTrigger",L=n.forwardRef((e,t)=>{let{__scopeTooltip:r,...l}=e,i=E(R,r),s=C(R,r),u=g(r),d=n.useRef(null),h=(0,a.s)(t,d,i.onTriggerChange),y=n.useRef(!1),f=n.useRef(!1),x=n.useCallback(()=>y.current=!1,[]);return n.useEffect(()=>()=>document.removeEventListener("pointerup",x),[x]),(0,v.jsx)(c.Mz,{asChild:!0,...u,children:(0,v.jsx)(p.sG.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...l,ref:h,onPointerMove:(0,o.mK)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(f.current||s.isPointerInTransitRef.current||(i.onTriggerEnter(),f.current=!0))}),onPointerLeave:(0,o.mK)(e.onPointerLeave,()=>{i.onTriggerLeave(),f.current=!1}),onPointerDown:(0,o.mK)(e.onPointerDown,()=>{i.open&&i.onClose(),y.current=!0,document.addEventListener("pointerup",x,{once:!0})}),onFocus:(0,o.mK)(e.onFocus,()=>{y.current||i.onOpen()}),onBlur:(0,o.mK)(e.onBlur,i.onClose),onClick:(0,o.mK)(e.onClick,i.onClose)})})});L.displayName=R;var P="TooltipPortal",[_,z]=x(P,{forceMount:void 0}),D=e=>{let{__scopeTooltip:t,forceMount:r,children:n,container:o}=e,a=E(P,t);return(0,v.jsx)(_,{scope:t,forceMount:r,children:(0,v.jsx)(d.C,{present:r||a.open,children:(0,v.jsx)(u.Portal,{asChild:!0,container:o,children:n})})})};D.displayName=P;var N="TooltipContent",S=n.forwardRef((e,t)=>{let r=z(N,e.__scopeTooltip),{forceMount:n=r.forceMount,side:o="top",...a}=e,l=E(N,e.__scopeTooltip);return(0,v.jsx)(d.C,{present:n||l.open,children:l.disableHoverableContent?(0,v.jsx)(K,{side:o,...a,ref:t}):(0,v.jsx)(I,{side:o,...a,ref:t})})}),I=n.forwardRef((e,t)=>{let r=E(N,e.__scopeTooltip),o=C(N,e.__scopeTooltip),l=n.useRef(null),i=(0,a.s)(t,l),[s,c]=n.useState(null),{trigger:u,onClose:d}=r,p=l.current,{onPointerInTransitChange:h}=o,y=n.useCallback(()=>{c(null),h(!1)},[h]),f=n.useCallback((e,t)=>{let r=e.currentTarget,n={x:e.clientX,y:e.clientY},o=function(e,t){let r=Math.abs(t.top-e.y),n=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(r,n,o,a)){case a:return"left";case o:return"right";case r:return"top";case n:return"bottom";default:throw Error("unreachable")}}(n,r.getBoundingClientRect());c(function(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let r=0;r<e.length;r++){let n=e[r];for(;t.length>=2;){let e=t[t.length-1],r=t[t.length-2];if((e.x-r.x)*(n.y-r.y)>=(e.y-r.y)*(n.x-r.x))t.pop();else break}t.push(n)}t.pop();let r=[];for(let t=e.length-1;t>=0;t--){let n=e[t];for(;r.length>=2;){let e=r[r.length-1],t=r[r.length-2];if((e.x-t.x)*(n.y-t.y)>=(e.y-t.y)*(n.x-t.x))r.pop();else break}r.push(n)}return(r.pop(),1===t.length&&1===r.length&&t[0].x===r[0].x&&t[0].y===r[0].y)?t:t.concat(r)}(t)}([...function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,n=[];switch(t){case"top":n.push({x:e.x-r,y:e.y+r},{x:e.x+r,y:e.y+r});break;case"bottom":n.push({x:e.x-r,y:e.y-r},{x:e.x+r,y:e.y-r});break;case"left":n.push({x:e.x+r,y:e.y-r},{x:e.x+r,y:e.y+r});break;case"right":n.push({x:e.x-r,y:e.y-r},{x:e.x-r,y:e.y+r})}return n}(n,o),...function(e){let{top:t,right:r,bottom:n,left:o}=e;return[{x:o,y:t},{x:r,y:t},{x:r,y:n},{x:o,y:n}]}(t.getBoundingClientRect())])),h(!0)},[h]);return n.useEffect(()=>()=>y(),[y]),n.useEffect(()=>{if(u&&p){let e=e=>f(e,p),t=e=>f(e,u);return u.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{u.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}},[u,p,f,y]),n.useEffect(()=>{if(s){let e=e=>{let t=e.target,r={x:e.clientX,y:e.clientY},n=(null==u?void 0:u.contains(t))||(null==p?void 0:p.contains(t)),o=!function(e,t){let{x:r,y:n}=e,o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let l=t[e],i=t[a],s=l.x,c=l.y,u=i.x,d=i.y;c>n!=d>n&&r<(u-s)*(n-c)/(d-c)+s&&(o=!o)}return o}(r,s);n?y():o&&(y(),d())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[u,p,s,d,y]),(0,v.jsx)(K,{...e,ref:i})}),[O,H]=x(M,{isInside:!1}),B=(0,h.Dc)("TooltipContent"),K=n.forwardRef((e,t)=>{let{__scopeTooltip:r,children:o,"aria-label":a,onEscapeKeyDown:l,onPointerDownOutside:s,...u}=e,d=E(N,r),p=g(r),{onClose:h}=d;return n.useEffect(()=>(document.addEventListener(w,h),()=>document.removeEventListener(w,h)),[h]),n.useEffect(()=>{if(d.trigger){let e=e=>{let t=e.target;(null==t?void 0:t.contains(d.trigger))&&h()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[d.trigger,h]),(0,v.jsx)(i.qW,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:h,children:(0,v.jsxs)(c.UC,{"data-state":d.stateAttribute,...p,...u,ref:t,style:{...u.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,v.jsx)(B,{children:o}),(0,v.jsx)(O,{scope:r,isInside:!0,children:(0,v.jsx)(f.bL,{id:d.contentId,role:"tooltip",children:a||o})})]})})});S.displayName=N;var V="TooltipArrow",q=n.forwardRef((e,t)=>{let{__scopeTooltip:r,...n}=e,o=g(r);return H(V,r).isInside?null:(0,v.jsx)(c.i3,{...o,...n,ref:t})});q.displayName=V;var G=T,X=A,F=L,Y=D,U=S,W=q},58057:(e,t,r)=>{r.r(t),r.d(t,{Label:()=>l,Root:()=>i});var n=r(1856),o=r(93367),a=r(90508),l=n.forwardRef((e,t)=>(0,a.jsx)(o.sG.label,{...e,ref:t,onMouseDown:t=>{var r;t.target.closest("button, input, select, textarea")||(null==(r=e.onMouseDown)||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));l.displayName="Label";var i=l},59551:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]])},60322:(e,t,r)=>{r.r(t),r.d(t,{Root:()=>m,Switch:()=>x,SwitchThumb:()=>g,Thumb:()=>C,createSwitchScope:()=>y});var n=r(1856),o=r(33328),a=r(34124),l=r(21032),i=r(66249),s=r(72009),c=r(3705),u=r(93367),d=r(90508),p="Switch",[h,y]=(0,l.A)(p),[f,v]=h(p),x=n.forwardRef((e,t)=>{let{__scopeSwitch:r,name:l,checked:s,defaultChecked:c,required:h,disabled:y,value:v="on",onCheckedChange:x,form:k,...g}=e,[m,C]=n.useState(null),T=(0,a.s)(t,e=>C(e)),M=n.useRef(!1),j=!m||k||!!m.closest("form"),[E,A]=(0,i.i)({prop:s,defaultProp:null!=c&&c,onChange:x,caller:p});return(0,d.jsxs)(f,{scope:r,checked:E,disabled:y,children:[(0,d.jsx)(u.sG.button,{type:"button",role:"switch","aria-checked":E,"aria-required":h,"data-state":w(E),"data-disabled":y?"":void 0,disabled:y,value:v,...g,ref:T,onClick:(0,o.mK)(e.onClick,e=>{A(e=>!e),j&&(M.current=e.isPropagationStopped(),M.current||e.stopPropagation())})}),j&&(0,d.jsx)(b,{control:m,bubbles:!M.current,name:l,value:v,checked:E,required:h,disabled:y,form:k,style:{transform:"translateX(-100%)"}})]})});x.displayName=p;var k="SwitchThumb",g=n.forwardRef((e,t)=>{let{__scopeSwitch:r,...n}=e,o=v(k,r);return(0,d.jsx)(u.sG.span,{"data-state":w(o.checked),"data-disabled":o.disabled?"":void 0,...n,ref:t})});g.displayName=k;var b=n.forwardRef((e,t)=>{let{__scopeSwitch:r,control:o,checked:l,bubbles:i=!0,...u}=e,p=n.useRef(null),h=(0,a.s)(p,t),y=(0,s.Z)(l),f=(0,c.X)(o);return n.useEffect(()=>{let e=p.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(y!==l&&t){let r=new Event("click",{bubbles:i});t.call(e,l),e.dispatchEvent(r)}},[y,l,i]),(0,d.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:l,...u,tabIndex:-1,ref:h,style:{...u.style,...f,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function w(e){return e?"checked":"unchecked"}b.displayName="SwitchBubbleInput";var m=x,C=g},71921:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("clipboard-list",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]])},75320:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]])},78853:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(66206).A)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]])}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7777],{38280:(e,t,a)=>{a.d(t,{Dj:()=>r,gl:()=>n,sB:()=>l});let s=[{bg:"#F5C4B3",text:"#712B13",darkBg:"#4a2a1e",darkText:"#F5C4B3"},{bg:"#FAC775",text:"#633806",darkBg:"#4a3a1a",darkText:"#FAD79B"},{bg:"#CECBF6",text:"#3C3489",darkBg:"#2f2c52",darkText:"#CECBF6"},{bg:"#B5D4F4",text:"#0C447C",darkBg:"#1e3450",darkText:"#B5D4F4"},{bg:"#C0DD97",text:"#27500A",darkBg:"#2c3d1c",darkText:"#C0DD97"},{bg:"#9FE1CB",text:"#085041",darkBg:"#183d34",darkText:"#9FE1CB"},{bg:"#F4C0D1",text:"#72243E",darkBg:"#48242f",darkText:"#F4C0D1"},{bg:"#FADBB5",text:"#6B3A10",darkBg:"#463421",darkText:"#FADBB5"}];function r(e){let t=e.trim().split(/\s+/);return t.length>=2?(t[0][0]+t[1][0]).toUpperCase():e.slice(0,2).toUpperCase()}function n(e){let t=0;for(let a=0;a<e.length;a++)t=e.charCodeAt(a)+((t<<5)-t);return s[Math.abs(t)%s.length]}function l(e){return{"--icon-bg":e.bg,"--icon-text":e.text,"--icon-bg-dark":e.darkBg,"--icon-text-dark":e.darkText}}},70481:(e,t,a)=>{a.d(t,{O:()=>p});var s=a(90508),r=a(1856),n=a(39268),l=a(85226),i=a(59133),d=a(30366),o=a(97413),c=a(91385),u=a(22922),x=a(41837);let p=(0,r.forwardRef)(function(e,t){let{projectUuid:a,agentError:p}=e,g=(0,n.c)(),[m,j]=(0,r.useState)([]),[h,f]=(0,r.useState)({}),[b,v]=(0,r.useState)(new Set),[N,C]=(0,r.useState)(!0),[w,k]=(0,r.useState)(null),[y,S]=(0,r.useState)(!1),[B,E]=(0,r.useState)({}),D=(0,r.useCallback)(async()=>{C(!0),S(!1);try{let e=await fetch(a?"/api/projects/".concat(encodeURIComponent(a),"/agent-cwds"):"/api/projects/agent-cwd-options"),t=await e.json();if(!e.ok||!t.success)throw Error("load failed");j(t.data.agents)}catch(e){S(!0)}finally{C(!1)}},[a]);(0,r.useEffect)(()=>{D()},[D]);let T=(e,t)=>{f(e),v(t)};return(0,r.useImperativeHandle)(t,()=>({validate:async()=>{let e=[];for(let t of Object.values(h))try{let a=await (0,x.q)(t);e.push(a),f(e=>({...e,[t.agentUuid]:a}))}catch(a){let e=a instanceof Error?a.message:"INTERNAL_ERROR";return E(a=>({...a,[t.agentUuid]:g("directoryBrowser.errors.".concat(e))})),k(t.agentUuid),null}return{upserts:e,clears:[...b]}}}),[b,h,g]),(0,s.jsxs)("div",{className:"flex min-w-0 flex-col gap-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h3",{className:"text-[14px] font-semibold text-foreground",children:g("projectSettings.agentCwds.title")}),(0,s.jsx)("p",{className:"mt-1 text-[12px] text-muted-foreground",children:g("projectSettings.agentCwds.description")})]}),N&&(0,s.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,s.jsx)(l.A,{className:"size-4 animate-spin"}),g("projectSettings.agentCwds.loading")]}),y&&(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3",role:"alert",children:[(0,s.jsx)("span",{className:"text-xs text-destructive",children:g("projectSettings.agentCwds.loadFailed")}),(0,s.jsxs)(u.$,{type:"button",size:"sm",variant:"outline",onClick:()=>void D(),children:[(0,s.jsx)(i.A,{className:"mr-2 size-3.5"}),g("common.retry")]})]}),!N&&!y&&0===m.length&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:g("projectSettings.agentCwds.emptyOnline")}),m.map(e=>{let t=h[e.agent.uuid],r=b.has(e.agent.uuid)?null:t?{host:t.host,cwd:t.cwd,status:"valid"}:e.preference;return(0,s.jsxs)("div",{className:"min-w-0 rounded-lg border border-border p-4",children:[(0,s.jsxs)("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[(0,s.jsxs)("div",{className:"flex min-w-0 items-start gap-2.5",children:[(0,s.jsx)(c.AgentAvatar,{name:e.agent.name,size:"sm",className:"mt-0.5 rounded-md"}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"truncate text-[13px] font-semibold",children:e.agent.name}),r?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("p",{className:"mt-1 break-all font-mono text-[11px]",children:r.cwd}),(0,s.jsx)("p",{className:"mt-1 truncate text-[11px] text-muted-foreground",children:r.host}),(0,s.jsx)("p",{className:"valid"===r.status?"mt-1 text-[11px] text-emerald-700 dark:text-emerald-400":"mt-1 text-[11px] text-destructive",children:g("projectSettings.agentCwds.status.".concat(r.status))})]}):(0,s.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:g("projectSettings.agentCwds.notConfigured")})]})]}),(0,s.jsxs)("div",{className:"flex shrink-0 gap-1",children:[(0,s.jsx)(u.$,{type:"button",size:"icon",variant:"ghost",title:g(r?"projectSettings.agentCwds.replace":"projectSettings.agentCwds.configure"),"aria-label":g(r?"projectSettings.agentCwds.replace":"projectSettings.agentCwds.configure"),onClick:()=>k(w===e.agent.uuid?null:e.agent.uuid),children:(0,s.jsx)(d.A,{className:"size-4"})}),r&&(0,s.jsx)(u.$,{type:"button",size:"icon",variant:"ghost",className:"text-destructive",title:g("projectSettings.agentCwds.clear"),"aria-label":g("projectSettings.agentCwds.clear"),onClick:()=>(e=>{let t={...h};delete t[e];let s=new Set(b);a&&s.add(e),T(t,s)})(e.agent.uuid),children:(0,s.jsx)(o.A,{className:"size-4"})})]})]}),w===e.agent.uuid&&(0,s.jsxs)("div",{className:"mt-4 border-t border-border pt-4",children:[(0,s.jsx)(x.e,{agentUuid:e.agent.uuid,instances:e.onlineInstances,showConfirm:!1,onValidated:()=>void 0,onSelectionChange:t=>((e,t)=>{if(!e)return;let a=new Set(b);a.delete(t),T({...h,[t]:e},a),E(e=>{let a={...e};return delete a[t],a})})(t,e.agent.uuid)}),(B[e.agent.uuid]||(null==p?void 0:p.agentUuid)===e.agent.uuid)&&(0,s.jsx)("p",{className:"mt-2 text-xs text-destructive",role:"alert",children:B[e.agent.uuid]||(null==p?void 0:p.message)})]}),w!==e.agent.uuid&&(null==p?void 0:p.agentUuid)===e.agent.uuid&&(0,s.jsx)("p",{className:"mt-2 text-xs text-destructive",role:"alert",children:p.message})]},e.agent.uuid)})]})})},88064:(e,t,a)=>{a.d(t,{J:()=>l});var s=a(90508);a(1856);var r=a(58057),n=a(24377);function l(e){let{className:t,...a}=e;return(0,s.jsx)(r.Root,{"data-slot":"label",className:(0,n.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...a})}},88738:(e,t,a)=>{a.d(t,{C:()=>b});var s=a(90508),r=a(1856),n=a(91814),l=a(39268),i=a(67103),d=a(16544),o=a(60532),c=a(85226),u=a(5616),x=a(97438),p=a(22922),g=a(14554),m=a(88064),j=a(15972),h=a(42305),f=a(70481);function b(e){let{open:t,onOpenChange:a,groupUuid:b,groupName:v,onCreated:N}=e,C=(0,l.c)(),w=(0,n.r)(),[k,y]=(0,r.useTransition)(),[S,B]=(0,r.useState)(""),[E,D]=(0,r.useState)(""),[T,A]=(0,r.useState)(null),[F,U]=(0,r.useState)(null),[P,G]=(0,r.useState)(!1),z=(0,r.useRef)(null),O=v||C("projectGroups.ungrouped"),R=async()=>{var e;if(!S.trim())return;A(null),U(null);let t=await (null==(e=z.current)?void 0:e.validate());t&&y(async()=>{try{let s=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:S.trim(),description:E.trim()||void 0,groupUuid:b||void 0,agentCwds:t.upserts.map(e=>{let{agentUuid:t,validationRequestUuid:a}=e;return{agentUuid:t,validationRequestUuid:a}})})}),r=await s.json();if(r.success)G(!0),setTimeout(()=>{B(""),D(""),a(!1),null==N||N(),w.refresh(),G(!1)},600);else{var e;let t="object"==typeof r.error&&r.error?r.error.message:r.error,a="object"==typeof r.error&&r.error&&"string"==typeof(null==(e=r.error.details)?void 0:e.agentUuid)?r.error.details.agentUuid:null;a?U({agentUuid:a,message:t||C("projects.createFailed")}):A(t||C("projects.createFailed"))}}catch(e){A(C("common.genericError"))}})};return(0,s.jsx)(x.lG,{open:t,onOpenChange:a,children:(0,s.jsxs)(x.Cf,{className:"flex max-h-[90svh] flex-col gap-0 overflow-hidden rounded-[16px] p-0 sm:max-w-[620px]",showCloseButton:!1,children:[(0,s.jsx)(x.c7,{className:"flex flex-row items-center justify-between p-[20px_24px] border-b border-[#E5E2DC] dark:border-[#2a2a2e]",children:(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)(x.L3,{className:"text-lg font-semibold tracking-[-0.3px] text-foreground",children:C("projectGroups.newProjectTitle")}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:C("projectGroups.creatingIn",{groupName:O})})]})}),(0,s.jsx)(x.rr,{className:"sr-only",children:C("projectGroups.newProjectTitle")}),(0,s.jsxs)("div",{className:"flex min-h-0 flex-col gap-5 overflow-y-auto p-6",children:[T&&(0,s.jsx)("div",{className:"rounded-lg bg-destructive/10 p-3 text-sm text-destructive",children:T}),(0,s.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,s.jsx)(m.J,{className:"text-[13px] font-medium text-foreground",children:C("projectGroups.projectTitle")}),(0,s.jsx)(g.p,{value:S,onChange:e=>B(e.target.value),placeholder:C("projectGroups.projectTitlePlaceholder"),className:"h-10 rounded-lg border-[#E5E2DC] dark:border-[#2a2a2e]",onKeyDown:e=>{!(0,h.P)(e)&&"Enter"===e.key&&S.trim()&&R()}})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,s.jsx)(m.J,{className:"text-[13px] font-medium text-foreground",children:C("common.description")}),(0,s.jsx)(j.T,{value:E,onChange:e=>D(e.target.value),placeholder:C("projectGroups.projectDescriptionPlaceholder"),className:"min-h-[80px] rounded-lg border-[#E5E2DC] dark:border-[#2a2a2e]"})]}),(0,s.jsx)("div",{className:"border-t border-border pt-5",children:(0,s.jsx)(f.O,{ref:z,agentError:F})})]}),(0,s.jsxs)("div",{className:"flex justify-end gap-3 p-[16px_24px] border-t border-[#E5E2DC] dark:border-[#2a2a2e]",children:[(0,s.jsx)(p.$,{variant:"outline",onClick:()=>a(!1),className:"rounded-lg border-[#E5E2DC] dark:border-[#2a2a2e] text-[13px]",children:C("common.cancel")}),(0,s.jsx)(p.$,{onClick:R,disabled:k||P||!S.trim(),className:"rounded-lg bg-primary hover:bg-[#B56A42] text-white text-[13px] gap-1.5",children:(0,s.jsx)(i.N,{mode:"wait",children:P?(0,s.jsx)(d.P.span,{initial:{opacity:0,scale:.5},animate:{opacity:1,scale:1},exit:{opacity:0},transition:{duration:.15},className:"flex items-center gap-2",children:(0,s.jsx)(o.A,{className:"h-3.5 w-3.5"})},"success"):k?(0,s.jsxs)(d.P.span,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"flex items-center gap-2",children:[(0,s.jsx)(c.A,{className:"h-3.5 w-3.5 animate-spin"}),C("common.creating")]},"loading"):(0,s.jsxs)(d.P.span,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"flex items-center gap-2",children:[(0,s.jsx)(u.A,{className:"h-3.5 w-3.5"}),C("projectGroups.createProject")]},"idle")})})]})]})})}}}]);