@chorus-aidlc/chorus 0.6.8 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +347 -345
  3. package/.next/standalone/.next/app-path-routes-manifest.json +34 -34
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +45 -45
  6. package/.next/standalone/.next/react-loadable-manifest.json +2 -2
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +2 -2
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +2 -2
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +2 -2
  47. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  50. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  54. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  55. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
  58. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  59. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/admin/companies.html +1 -1
  61. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  62. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/admin.html +1 -1
  64. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  65. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/agents/[uuid]/route.js +1 -1
  70. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/agents/route.js +1 -1
  73. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  88. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  93. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  99. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/mcp/route.js +6 -6
  101. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  111. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  113. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/project-groups/route.js +1 -1
  115. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.js +1 -1
  117. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  119. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  121. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js +1 -1
  123. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  125. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  127. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  129. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  131. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  133. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  135. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  137. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  139. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  141. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  143. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  145. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  147. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  149. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  151. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  157. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  159. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  161. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  163. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  165. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/index.html +1 -1
  169. package/.next/standalone/.next/server/app/index.rsc +2 -2
  170. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  171. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  172. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  173. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  175. package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
  176. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  179. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
  180. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
  182. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +2 -2
  183. package/.next/standalone/.next/server/app/login.html +1 -1
  184. package/.next/standalone/.next/server/app/login.rsc +2 -2
  185. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  186. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  187. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  189. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  190. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/projects.html +1 -1
  192. package/.next/standalone/.next/server/app/projects.rsc +4 -4
  193. package/.next/standalone/.next/server/app/settings.html +1 -1
  194. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  195. package/.next/standalone/.next/server/app-paths-manifest.json +34 -34
  196. package/.next/standalone/.next/server/chunks/1596.js +1 -1
  197. package/.next/standalone/.next/server/chunks/1639.js +1 -0
  198. package/.next/standalone/.next/server/chunks/1871.js +1 -0
  199. package/.next/standalone/.next/server/chunks/2570.js +1 -1
  200. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  201. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  202. package/.next/standalone/.next/server/chunks/{3408.js → 3300.js} +1 -1
  203. package/.next/standalone/.next/server/chunks/3611.js +158 -0
  204. package/.next/standalone/.next/server/chunks/3890.js +1 -1
  205. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  206. package/.next/standalone/.next/server/chunks/5869.js +16 -0
  207. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  208. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  209. package/.next/standalone/.next/server/chunks/6753.js +3 -3
  210. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  211. package/.next/standalone/.next/server/chunks/8251.js +1 -0
  212. package/.next/standalone/.next/server/chunks/8584.js +1 -0
  213. package/.next/standalone/.next/server/chunks/9051.js +1 -0
  214. package/.next/standalone/.next/server/chunks/920.js +1 -1
  215. package/.next/standalone/.next/server/chunks/937.js +1 -1
  216. package/.next/standalone/.next/server/chunks/9508.js +2 -2
  217. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  218. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  219. package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  220. package/.next/standalone/.next/server/pages/404.html +1 -1
  221. package/.next/standalone/.next/server/pages/500.html +1 -1
  222. package/.next/standalone/.next/server/pages-manifest.json +1 -1
  223. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  225. package/.next/standalone/.next/static/chunks/10739-5c185aa0432f5d56.js +1 -0
  226. package/.next/standalone/.next/static/chunks/{14945-45ab8dcd7d1460b0.js → 14945-0bc0086add441ba7.js} +1 -1
  227. package/.next/standalone/.next/static/chunks/19126-858a24cab6fd338a.js +1 -0
  228. package/.next/standalone/.next/static/chunks/21932-bce5ba937d1603e1.js +1 -0
  229. package/.next/standalone/.next/static/chunks/29445-04c4ab36da85b7da.js +1 -0
  230. package/.next/standalone/.next/static/chunks/34775-387b9a9967a35ccb.js +1 -0
  231. package/.next/standalone/.next/static/chunks/39611-cc227784ed679a6d.js +1 -0
  232. package/.next/standalone/.next/static/chunks/4457-b86052b2e954e357.js +1 -0
  233. package/.next/standalone/.next/static/chunks/4842-95cf4b7efd540e89.js +1 -0
  234. package/.next/standalone/.next/static/chunks/4860.d626399834b496e5.js +1 -0
  235. package/.next/standalone/.next/static/chunks/53298-82b9c818cd70686d.js +1 -0
  236. package/.next/standalone/.next/static/chunks/{72156-693a7612a0a1927c.js → 53664-a2be2eaacce03f0f.js} +1 -1
  237. package/.next/standalone/.next/static/chunks/55434-622522b242e7747f.js +1 -0
  238. package/.next/standalone/.next/static/chunks/95750-3d0d1d48995d1088.js +1 -0
  239. package/.next/standalone/.next/static/chunks/96919-8cbf6310c703e7af.js +1 -0
  240. package/.next/standalone/.next/static/chunks/{52162.90c7520be06645a7.js → 96924.93f7dab7363f09ac.js} +1 -1
  241. package/.next/standalone/.next/static/chunks/{99373.dddf0d83066106d0.js → 99373.aedaca88297c6d8b.js} +1 -1
  242. package/.next/standalone/.next/static/chunks/99513-24849ff68a8098e1.js +1 -0
  243. package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-bf420c745be7631b.js → layout-acddb9c84f5d1607.js} +1 -1
  244. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/{page-cb9454c2d5a8390c.js → page-63a6a5b6cf9ecf87.js} +1 -1
  245. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-b4c6141dd26cc506.js +1 -0
  246. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-4bf7bff8d68509f9.js +1 -0
  247. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-37a0cea0ba40c31b.js +1 -0
  248. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page-2d820769aa7bcaf6.js +1 -0
  249. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/page-dec0e71221d77928.js +1 -0
  250. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-355321010dd82e56.js +1 -0
  251. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/{page-59f6f1967c3dfcad.js → page-bc66567cb9c40bf0.js} +1 -1
  252. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/{page-a4995a788651e9bc.js → page-86cfeb421fa97830.js} +1 -1
  253. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-7fe70579023330da.js +1 -0
  254. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-8c51993bb3866a55.js +1 -0
  255. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-7c30b3f9f2b8f520.js → page-80566dcc1cd42bee.js} +1 -1
  256. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-8db25385236a9bbf.js +1 -0
  257. package/.next/standalone/.next/static/chunks/app/onboarding/page-e9409a2935c3c480.js +1 -0
  258. package/.next/standalone/.next/static/chunks/{webpack-121b5a7960550fef.js → webpack-da41e6b9f3fe2f48.js} +1 -1
  259. package/.next/standalone/.next/static/css/ca9796ac54f96058.css +1 -0
  260. package/.next/standalone/package.json +1 -1
  261. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  262. package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +11 -4
  263. package/.next/standalone/public/chorus-plugin/bin/on-subagent-start.sh +1 -1
  264. package/.next/standalone/public/chorus-plugin/bin/on-subagent-stop.sh +5 -5
  265. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +43 -18
  266. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  267. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  268. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +2 -2
  269. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +3 -3
  270. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  271. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +15 -18
  272. package/.next/standalone/public/skill/chorus/SKILL.md +44 -19
  273. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +2 -2
  274. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +3 -3
  275. package/package.json +1 -1
  276. package/prisma/migrations/20260430034110_add_agent_permissions/migration.sql +2 -0
  277. package/prisma/schema.prisma +1 -0
  278. package/.next/standalone/.next/server/chunks/1386.js +0 -1
  279. package/.next/standalone/.next/server/chunks/1526.js +0 -1
  280. package/.next/standalone/.next/server/chunks/3088.js +0 -1
  281. package/.next/standalone/.next/server/chunks/4152.js +0 -1
  282. package/.next/standalone/.next/server/chunks/4772.js +0 -158
  283. package/.next/standalone/.next/server/chunks/8104.js +0 -16
  284. package/.next/standalone/.next/server/chunks/9408.js +0 -1
  285. package/.next/standalone/.next/static/chunks/10739-f8a95983c740edff.js +0 -1
  286. package/.next/standalone/.next/static/chunks/19126-ce11a472a7b46715.js +0 -1
  287. package/.next/standalone/.next/static/chunks/192-2fe41d1be4cf52c7.js +0 -1
  288. package/.next/standalone/.next/static/chunks/36940-1a052dcfd7a51c42.js +0 -1
  289. package/.next/standalone/.next/static/chunks/4860.32370b32f23e5ea7.js +0 -1
  290. package/.next/standalone/.next/static/chunks/53011-6c6e5c3c761b4229.js +0 -1
  291. package/.next/standalone/.next/static/chunks/55203-e226f28d874a003b.js +0 -1
  292. package/.next/standalone/.next/static/chunks/58245-b2ea112ace9624d2.js +0 -1
  293. package/.next/standalone/.next/static/chunks/59703-726546958cd4cf44.js +0 -1
  294. package/.next/standalone/.next/static/chunks/62326-65d43abf563d7ce2.js +0 -1
  295. package/.next/standalone/.next/static/chunks/67312-2b0c88796d8a1f83.js +0 -1
  296. package/.next/standalone/.next/static/chunks/71350-88c2649fc693c1e8.js +0 -1
  297. package/.next/standalone/.next/static/chunks/89310-e7dd1f2b9518aeb2.js +0 -1
  298. package/.next/standalone/.next/static/chunks/96924-847b528f7abad0e5.js +0 -1
  299. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-61ad25356f1bcf61.js +0 -1
  300. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-cfd59c5238497200.js +0 -1
  301. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-9d721a820e1058b5.js +0 -1
  302. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page-9199629492f0d6cc.js +0 -1
  303. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/page-164acb03167c8257.js +0 -1
  304. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-642981c5c760bfef.js +0 -1
  305. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-38e4430e5591fbff.js +0 -1
  306. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-cb3978ef57e7197a.js +0 -1
  307. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-94169bdcca8cb817.js +0 -1
  308. package/.next/standalone/.next/static/chunks/app/onboarding/page-1aadff0d5227df18.js +0 -1
  309. package/.next/standalone/.next/static/css/5d7e316311e46db1.css +0 -1
  310. /package/.next/standalone/.next/static/{oJIidfE9Dj5iwDkFfuZP9 → CQcM9hNpa5m8P_K5qveuk}/_buildManifest.js +0 -0
  311. /package/.next/standalone/.next/static/{oJIidfE9Dj5iwDkFfuZP9 → CQcM9hNpa5m8P_K5qveuk}/_ssgManifest.js +0 -0
@@ -86,10 +86,26 @@ creates analyzes drafts PRD codes & reviews closes
86
86
 
87
87
  | Role | Responsibility | MCP Tools |
88
88
  |------|---------------|-----------|
89
- | **PM Agent** | Analyze Ideas, create Proposals (PRD + Task drafts), manage documents | Public + `chorus_pm_*` + `chorus_*_idea` |
89
+ | **PM Agent** | Analyze Ideas, create Proposals (PRD + Task drafts), manage documents | Public + `chorus_pm_*` + `chorus_*_idea` + `task:write` tools (claim/release/submit/report) |
90
90
  | **Developer Agent** | Claim Tasks, write code, report work, submit for verification | Public + `chorus_*_task` + `chorus_report_work` |
91
91
  | **Admin Agent** | Create projects/ideas, approve/reject proposals, verify tasks, manage lifecycle | Public + `chorus_admin_*` + PM + Developer tools |
92
92
 
93
+ ### Permissions
94
+
95
+ Each agent's tool visibility is driven by a **permission set**, not by the role label alone. Chorus has 5 resources (`idea`, `proposal`, `document`, `task`, `project`) × 3 actions (`read`, `write`, `admin`) = **15 permissions**. Each permission-gated MCP tool declares a single required permission (see `<BASE_URL>/docs/MCP_TOOLS.md` for the full table).
96
+
97
+ **Role presets** map to permission sets:
98
+
99
+ | Preset | Permissions |
100
+ |--------|-------------|
101
+ | `developer_agent` | all `*:read` + `task:write` |
102
+ | `pm_agent` | all `*:read` + `idea:write` + `proposal:write` + `document:write` + `task:write` + `project:write` |
103
+ | `admin_agent` | all 15 permissions (every `read` + `write` + `admin`) |
104
+
105
+ **Custom permissions** are also supported: when creating an agent you can pick a preset AND/OR add individual permissions. The effective permission set is the union. Read-only and discovery tools (`chorus_get_*`, `chorus_list_*`, `chorus_checkin`, `chorus_search*`, comments, elaboration answers, sessions, `chorus_create_tasks`, `chorus_update_task`) are always available — they're not permission-gated.
106
+
107
+ > **Note**: possessing `task:write` grants *tool visibility*, not unconditional authority. Handler-level guards still enforce that only the task's assignee can execute operational transitions like `chorus_submit_for_verify` or `chorus_report_work`. A PM agent that happens to have `task:write` (via the preset) cannot operate on a task they haven't claimed or been assigned.
108
+
93
109
  ---
94
110
 
95
111
  ## Common Tools (All Roles)
@@ -125,9 +141,9 @@ Results can be filtered by project(s) using optional HTTP headers in your MCP co
125
141
 
126
142
  ### MCP Connection
127
143
 
128
- - MCP sessions expire after 30 minutes of **inactivity** (sliding window)
129
- - Each MCP request automatically renews the session
130
- - If you receive a "Session not found" error, reinitialize the MCP connection
144
+ - The Chorus MCP endpoint is **stateless** each HTTP request creates a fresh server instance, so there is no client-side session to keep alive
145
+ - Supply your API Key in the `Authorization: Bearer cho_...` header on every request (your MCP client handles this automatically)
146
+ - Horizontal scaling works out of the box; no sticky sessions required
131
147
 
132
148
  ### Project Groups
133
149
 
@@ -257,11 +273,14 @@ API Keys are created by the user in the Chorus Web UI.
257
273
  **Ask the user to:**
258
274
  1. Open the Chorus settings page (e.g., `http://localhost:8637/settings`)
259
275
  2. Click **Create API Key**
260
- 3. Enter Agent name, select role (Developer / PM / Admin)
276
+ 3. Enter Agent name, then either:
277
+ - Pick a **role preset** (Developer / PM / Admin) — recommended for the common case
278
+ - Or pick a preset and **add/remove individual permissions** (5 resources × 3 actions = 15 permissions) to get a precise custom set
261
279
  4. Click create and **immediately copy the key** (shown only once)
262
280
 
263
281
  **Security notes:**
264
- - Each Agent should have its own API Key with the minimum required role
282
+ - Each Agent should have its own API Key with the minimum required permissions
283
+ - Presets are the fastest path; custom permissions let you grant narrowly (e.g. a dev agent that also needs `idea:write` to file bugs)
265
284
  - API Keys should not be committed to version control
266
285
 
267
286
  ### 2. MCP Server Configuration
@@ -297,19 +316,25 @@ chorus_checkin()
297
316
 
298
317
  If it fails, check: API Key correct (`cho_` prefix)? URL reachable? IDE restarted?
299
318
 
300
- ### 4. Role-Specific Tool Access
301
-
302
- | Tool Prefix | Developer | PM | Admin |
303
- |-------------|-----------|------|-------|
304
- | `chorus_get_*` / `chorus_list_*` | Yes | Yes | Yes |
305
- | `chorus_checkin` | Yes | Yes | Yes |
306
- | `chorus_add_comment` / `chorus_get_comments` | Yes | Yes | Yes |
307
- | `chorus_claim_task` / `chorus_release_task` | Yes | No | Yes |
308
- | `chorus_update_task` / `chorus_submit_for_verify` | Yes | No | Yes |
309
- | `chorus_report_work` | Yes | No | Yes |
310
- | `chorus_claim_idea` / `chorus_release_idea` | No | Yes | Yes |
311
- | `chorus_pm_*` | No | Yes | Yes |
312
- | `chorus_admin_*` | No | No | Yes |
319
+ ### 4. Tool Access by Preset
320
+
321
+ The table below shows default tool availability for each preset (no custom permissions). Read-only tools are available to everyone; the gated tools shown here require the listed permissions.
322
+
323
+ | Tool Group | Required Permission | Developer | PM | Admin |
324
+ |------------|--------------------|-----------|------|-------|
325
+ | `chorus_get_*` / `chorus_list_*` / `chorus_search*` | (public, read) | Yes | Yes | Yes |
326
+ | `chorus_checkin` | (public) | Yes | Yes | Yes |
327
+ | `chorus_add_comment` / `chorus_get_comments` | (public) | Yes | Yes | Yes |
328
+ | `chorus_update_task` (field edits + status) | (public; assignee required for status) | Yes | Yes | Yes |
329
+ | `chorus_claim_task` / `chorus_release_task` / `chorus_submit_for_verify` / `chorus_report_work` / `chorus_report_criteria_self_check` | `task:write` | Yes | **Yes** (0.7.0+) | Yes |
330
+ | `chorus_claim_idea` / `chorus_release_idea` / `chorus_move_idea` / `chorus_pm_create_idea` / `chorus_pm_*_elaboration` | `idea:write` | No | Yes | Yes |
331
+ | `chorus_pm_create_proposal` / `chorus_pm_*_proposal` / `chorus_pm_*_draft` / `chorus_pm_create_tasks` / `chorus_pm_assign_task` / `chorus_*_task_dependency` | `proposal:write` | No | Yes | Yes |
332
+ | `chorus_pm_create_document` / `chorus_pm_update_document` | `document:write` | No | Yes | Yes |
333
+ | `chorus_admin_create_project` / `chorus_admin_*_project_group` / `chorus_admin_move_project_to_group` | `project:write` | No | **Yes** (0.7.0+) | Yes |
334
+ | `chorus_admin_approve_proposal` / `chorus_admin_close_proposal` | `proposal:admin` | No | No | Yes |
335
+ | `chorus_admin_verify_task` / `chorus_admin_reopen_task` / `chorus_admin_close_task` / `chorus_mark_acceptance_criteria` / `chorus_admin_delete_task` | `task:admin` | No | No | Yes |
336
+ | `chorus_admin_delete_idea` | `idea:admin` | No | No | Yes |
337
+ | `chorus_admin_delete_document` | `document:admin` | No | No | Yes |
313
338
 
314
339
  ---
315
340
 
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.2.0"
7
+ version: "0.2.1"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -244,7 +244,7 @@ chorus_pm_assign_task({ taskUuid: "<task-uuid>", agentUuid: "<developer-agent-uu
244
244
  ```
245
245
 
246
246
  - Task should be `open` or `assigned`
247
- - Target agent should have `developer` or `developer_agent` role
247
+ - Target agent must have `task: ["write"]` permission
248
248
 
249
249
  ---
250
250
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: quick-dev-chorus
3
- version: 0.1.0
3
+ version: 0.1.1
4
4
  description: Quick Task workflow — skip Idea→Proposal, create tasks directly, execute, and verify.
5
5
  ---
6
6
 
@@ -37,7 +37,7 @@ For complex work, consider using the idea and proposal skills instead.
37
37
 
38
38
  ## Pre-Flight: Admin Self-Verify Check
39
39
 
40
- **Before creating tasks**, if you have the `admin_agent` role, ask the user:
40
+ **Before creating tasks**, if `chorus_checkin().agent.permissions.task` includes `"admin"`, ask the user:
41
41
 
42
42
  > "I have admin privileges. After development, should I verify the task myself, or leave it for another admin to verify?"
43
43
 
@@ -143,7 +143,7 @@ chorus_submit_for_verify({
143
143
  })
144
144
  ```
145
145
 
146
- **Admin self-verification:** If you have the `admin_agent` role and the user approved self-verification in the Pre-Flight check, you can verify the task yourself immediately after submitting:
146
+ **Admin self-verification:** If you have `task: ["admin"]` in `permissions` and the user approved self-verification in the Pre-Flight check, you can verify the task yourself immediately after submitting:
147
147
 
148
148
  ```
149
149
  chorus_admin_verify_task({ taskUuid: "<task-uuid>" })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chorus-aidlc/chorus",
3
- "version": "0.6.8",
3
+ "version": "0.7.0",
4
4
  "description": "The Agent Harness for AI-Human Collaboration — session lifecycle, task state, sub-agent orchestration, observability, and failure recovery",
5
5
  "homepage": "https://github.com/Chorus-AIDLC/Chorus",
6
6
  "repository": {
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "Agent" ADD COLUMN "permissions" TEXT[] DEFAULT ARRAY[]::TEXT[];
@@ -63,6 +63,7 @@ model Agent {
63
63
  company Company @relation(fields: [companyUuid], references: [uuid])
64
64
  name String
65
65
  roles String[] @default(["developer"]) // pm | developer (multi-select)
66
+ permissions String[] @default([]) // Custom permission bits (resource:action); merged with role presets at auth time
66
67
  // Agent persona definition (Zero Context Injection)
67
68
  persona String? // Custom persona description (brief)
68
69
  systemPrompt String? // Full system prompt (optional, overrides default template)
@@ -1 +0,0 @@
1
- exports.id=1386,exports.ids=[1386],exports.modules={2852:(a,b,c)=>{"use strict";c.d(b,{J:()=>g});var d=c(10837);c(21968);var e=c(13277),f=c(96307);function g({className:a,...b}){return(0,d.jsx)(e.Root,{"data-slot":"label",className:(0,f.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",a),...b})}},5514:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{y:()=>B});var e=c(10837),f=c(21968),g=c(9222),h=c(44787),i=c(22727),j=c(24383),k=c(55775),l=c(27936),m=c(24879),n=c(31009),o=c(45148),p=c(35198),q=c(49599),r=c(42424),s=c(11568),t=c(77736),u=c(53651),v=c(61320),w=c(54722),x=c(86104),y=c(18493),z=c(76172),A=a([x]);x=(A.then?(await A)():A)[0];let C={open:"bg-[#FFF3E0] text-[#E65100]",assigned:"bg-[#E3F2FD] text-[#1976D2]",in_progress:"bg-[#E8F5E9] text-[#5A9E6F]",to_verify:"bg-[#F3E5F5] text-[#7B1FA2]",done:"bg-[#E0F2F1] text-[#00796B]",closed:"bg-[#F5F5F5] text-[#9A9A9A]"},D={open:"open",assigned:"assigned",in_progress:"inProgress",to_verify:"toVerify",done:"done",closed:"closed"},E={in_progress:"bg-[#FFF3E0] text-[#E65100]",assigned:"bg-[#E8F5E9] text-[#2E7D32]",open:"bg-[#F5F5F5] text-[#6B6B6B]",to_verify:"bg-[#E3F2FD] text-[#1565C0]"},F=[{id:"todo",labelKey:"todo",statuses:["open","assigned"]},{id:"in_progress",labelKey:"inProgress",statuses:["in_progress"]},{id:"to_verify",labelKey:"toVerify",statuses:["to_verify"]},{id:"done",labelKey:"done",statuses:["done","closed"]}];function B({projectUuid:a,initialTasks:b,currentUserUuid:c,selectedTaskUuid:d,onTaskSelect:A,onPanelClose:B,proposalUuidFilter:G}){let H=(0,g.c)(),[I,J]=(0,f.useState)(b),[K,L]=(0,f.useState)({}),[M,N]=(0,f.useState)(!1),[O,P]=(0,f.useState)(null),[Q,R]=(0,f.useState)([]),[S,T]=(0,f.useState)(!1),[U,V]=(0,f.useState)([]),[W,X]=(0,f.useState)(!1),[Y,Z]=(0,f.useState)(!1),$=(0,f.useCallback)(async()=>{let b=await (0,t.p)(a);if(b.success){let a=G?b.data.filter(a=>a.proposalUuid&&G.has(a.proposalUuid)):b.data;J(a);let c=await (0,y.h)(a.map(a=>a.uuid));c.success&&c.data&&L(c.data)}},[a,G]);(0,z.eV)("task",$),(0,f.useRef)(G);let _=(0,f.useMemo)(()=>d?I.find(a=>a.uuid===d)??null:null,[d,I]),aa=a=>I.filter(b=>a.includes(b.status)),ab=a=>aa(a).reduce((a,b)=>a+(b.storyPoints||0),0),ac=async b=>{let c;Z(!1);let{destination:d,source:e,draggableId:f}=b;if(!d||d.droppableId===e.droppableId&&d.index===e.index)return;let g=d.droppableId;e.droppableId;let h=I.find(a=>a.uuid===f);if(!h)return;if(F.find(a=>a.id===g),"todo"===g)c="assigned"===h.status?"assigned":"open";else if("in_progress"===g)c="in_progress";else if("to_verify"===g)c="to_verify";else{if("done"!==g)return;c="to_verify"===h.status?"done":"to_verify"}J(a=>a.map(a=>a.uuid===f?{...a,status:c}:a));let i=await (0,u.y)(f,g,a);if(i.success)$();else{if("blocked"in i&&i.blocked&&"blockers"in i){J(a=>a.map(a=>a.uuid===f?{...a,status:h.status}:a)),P(h),R(i.blockers),N(!0);return}if(J(a=>a.map(a=>a.uuid===f?{...a,status:h.status}:a)),"gateBlocked"in i&&i.gateBlocked){let a="unresolvedCriteria"in i&&Array.isArray(i.unresolvedCriteria)?i.unresolvedCriteria:[];V(a),T(!0)}}},ad=async()=>{if(O){X(!0);try{let a=await (0,v.H)(O.uuid,"in_progress");a.success?(N(!1),P(null),R([]),$()):w.q.error("Failed to force move task:",a.error)}finally{X(!1)}}},ae=()=>{N(!1),P(null),R([])};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(h.JY,{onDragStart:()=>{Z(!0)},onDragEnd:ac,children:(0,e.jsx)(m.o,{children:(0,e.jsx)("div",{className:"flex flex-1 gap-4 overflow-x-auto pb-4",children:F.map(a=>{let b=aa(a.statuses);return(0,e.jsxs)("div",{className:"flex w-[300px] flex-shrink-0 flex-col rounded-xl bg-[#F5F2EC] p-4",children:[(0,e.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,e.jsxs)("div",{className:"flex items-center gap-2",children:[(0,e.jsx)("h3",{className:"font-medium text-[#2C2C2C]",children:H(`status.${a.labelKey}`)}),(0,e.jsx)("span",{className:"rounded-full bg-white px-2 py-0.5 text-xs font-medium text-[#6B6B6B]",children:b.length})]}),ab(a.statuses)>0&&(0,e.jsxs)("span",{className:"flex items-center gap-1 text-xs text-[#9A9A9A]",children:[(0,e.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-3 w-3",children:[(0,e.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,e.jsx)("polyline",{points:"12 6 12 12 16 14"})]}),ab(a.statuses),"h"]})]}),(0,e.jsx)(h.gL,{droppableId:a.id,children:(a,c)=>(0,e.jsxs)("div",{ref:a.innerRef,...a.droppableProps,className:`flex-1 space-y-3 overflow-y-auto min-h-[100px] rounded-lg pt-3 pr-3 transition-colors ${c.isDraggingOver?"bg-[#E5E0D8]":""}`,children:[0!==b.length||c.isDraggingOver?b.map((a,b)=>{let c=!!a.dependsOn&&0!==a.dependsOn.length&&a.dependsOn.some(a=>"done"!==a.status&&"closed"!==a.status),d=(c?!a.dependsOn?[]:a.dependsOn.filter(a=>"done"!==a.status&&"closed"!==a.status):[]).map(a=>a.title).join(", ");return(0,e.jsx)(h.sx,{draggableId:a.uuid,index:b,children:(b,f)=>(0,e.jsx)("div",{ref:b.innerRef,...b.draggableProps,...b.dragHandleProps,onClick:()=>{f.isDragging||A(a.uuid)},style:b.draggableProps.style,children:(0,e.jsxs)(n.P.div,{className:"relative",layoutId:Y?void 0:`task-card-${a.uuid}`,transition:o.Yv.spring,children:[K[a.uuid]>0&&(0,e.jsx)("div",{className:"absolute -top-3 -right-3 z-10 flex h-11 w-11 items-center justify-center rounded-full border-2 border-green-400 bg-white shadow-sm",children:(0,e.jsx)("img",{src:"/typing-animation.gif",alt:"",className:"h-8 w-8"})}),(0,e.jsx)(i.D,{entityType:"task",entityUuid:a.uuid,children:(0,e.jsxs)(p.Zp,{className:`cursor-pointer p-4 transition-all ${c?"border-dashed border-[#D1D1D1] opacity-60":"border-[#E5E0D8] hover:border-[#C67A52]"} bg-white hover:shadow-sm ${f.isDragging?"shadow-lg rotate-2":""}`,children:[(0,e.jsxs)("div",{className:"mb-2 flex items-start justify-between",children:[(0,e.jsx)(q.E,{className:C[a.status]||"",children:H(`status.${D[a.status]||a.status}`)}),(0,e.jsx)("div",{className:"flex items-center gap-1.5",children:a.storyPoints&&(0,e.jsxs)("span",{className:"flex items-center gap-1 rounded bg-[#FFF3E0] px-2 py-0.5 text-xs font-medium text-[#E65100]",children:[(0,e.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-3 w-3",children:[(0,e.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,e.jsx)("polyline",{points:"12 6 12 12 16 14"})]}),a.storyPoints,"h"]})})]}),(0,e.jsx)("h4",{className:"mb-1 font-medium text-[#2C2C2C]",children:a.title}),a.description&&(0,e.jsx)("p",{className:"mb-2 line-clamp-2 text-sm text-[#6B6B6B]",children:a.description}),c&&(0,e.jsxs)("div",{className:"mb-2 flex items-center gap-1.5 rounded-md bg-[#FFF3E0] px-2 py-1",children:[(0,e.jsx)(j.A,{className:"h-3 w-3 shrink-0 text-[#E65100]"}),(0,e.jsx)("span",{className:"text-[9px] font-medium leading-tight text-[#E65100] line-clamp-1",children:H("tasks.blockedBy",{tasks:d})})]}),(0,e.jsxs)("div",{className:"flex items-center justify-between text-xs text-[#9A9A9A]",children:[a.assignee?(0,e.jsxs)("span",{className:"flex items-center gap-1",children:[(0,e.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-3 w-3",children:[(0,e.jsx)("path",{d:"M12 8V4H8"}),(0,e.jsx)("rect",{width:"16",height:"12",x:"4",y:"8",rx:"2"})]}),a.assignee.name]}):"open"===a.status?(0,e.jsx)("span",{className:"text-[#C67A52]",children:H("common.assign")}):(0,e.jsx)("span",{children:H("common.unassigned")}),(0,e.jsxs)("span",{className:"flex items-center gap-1",children:[K[a.uuid]>0&&(0,e.jsxs)(q.E,{variant:"outline",className:"h-4 gap-1 border-green-300 px-1.5 text-[10px] text-green-700",children:[(0,e.jsx)("span",{className:"inline-block h-1.5 w-1.5 rounded-full bg-green-500"}),H("sessions.workerCount",{count:K[a.uuid]})]}),a.acceptanceSummary&&a.acceptanceSummary.total>0&&(()=>{let b=a.acceptanceSummary,c="to_verify"===a.status,d=b.requiredPassed===b.required&&b.required>0,f=b.requiredFailed>0,g="bg-[#F5F2EC] text-[#9A9A9A]";return c&&(g=d?"bg-green-50 text-green-700":f?"bg-red-50 text-[#C4574C]":"bg-amber-50 text-[#D97706]"),(0,e.jsxs)(q.E,{className:`h-4 gap-1 border-0 px-1.5 text-[9px] ${g}`,children:[(0,e.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-2.5 w-2.5",children:[(0,e.jsx)("path",{d:"M9 11l3 3L22 4"}),(0,e.jsx)("path",{d:"M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11"})]}),b.passed,"/",b.total]})})()]})]})]})})]})})},a.uuid)}):(0,e.jsx)("div",{className:"flex h-24 items-center justify-center rounded-lg border-2 border-dashed border-[#E5E0D8] text-sm text-[#9A9A9A]",children:H("tasks.noTasks")}),a.placeholder]})})]},a.id)})})})}),_&&(0,e.jsx)(x.v,{task:_,projectUuid:a,currentUserUuid:c,onClose:B}),(0,e.jsx)(s.lG,{open:M,onOpenChange:a=>{a||ae()},children:(0,e.jsxs)(s.Cf,{className:"max-w-md rounded-2xl",children:[(0,e.jsxs)(s.c7,{children:[(0,e.jsxs)(s.L3,{className:"flex items-center gap-2",children:[(0,e.jsx)(k.A,{className:"h-5 w-5 text-[#E65100]"}),H("tasks.dependencyBlocked")]}),(0,e.jsx)(s.rr,{children:H("tasks.dependencyBlockedDescription")})]}),(0,e.jsxs)("div",{className:"rounded-lg bg-[#FAF8F4] p-3",children:[(0,e.jsx)("p",{className:"mb-2 text-xs font-medium text-[#6B6B6B]",children:H("tasks.blockerList")}),(0,e.jsx)("div",{className:"space-y-2",children:Q.map(a=>(0,e.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-[#E5E0D8] bg-white p-3",children:[(0,e.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,e.jsx)("p",{className:"truncate text-sm font-medium text-[#2C2C2C]",children:a.title}),(0,e.jsxs)("div",{className:"mt-1 flex items-center gap-2",children:[a.assignee&&(0,e.jsx)("span",{className:"text-xs text-[#6B6B6B]",children:a.assignee.name}),a.sessionCheckin&&(0,e.jsxs)("span",{className:"flex items-center gap-1 text-xs text-[#6B6B6B]",children:[(0,e.jsx)(l.A,{className:"h-3 w-3"}),a.sessionCheckin.sessionName]})]})]}),(0,e.jsx)(q.E,{className:`shrink-0 ${E[a.status]||"bg-[#F5F5F5] text-[#6B6B6B]"}`,children:H(`status.${D[a.status]||a.status}`)})]},a.uuid))})]}),(0,e.jsxs)(s.Es,{className:"gap-2 sm:gap-0",children:[(0,e.jsx)(r.$,{variant:"outline",onClick:ae,children:H("common.cancel")}),(0,e.jsx)(r.$,{className:"bg-[#E65100] hover:bg-[#BF4400] text-white",onClick:ad,disabled:W,children:W?H("common.processing"):H("tasks.forceMove")})]})]})}),(0,e.jsx)(s.lG,{open:S,onOpenChange:T,children:(0,e.jsxs)(s.Cf,{className:"max-w-[520px] rounded-2xl p-0 gap-0",children:[(0,e.jsxs)(s.c7,{className:"px-6 pt-6 pb-4",children:[(0,e.jsxs)(s.L3,{className:"flex items-center gap-2.5",children:[(0,e.jsx)(k.A,{className:"h-5 w-5 text-[#C4574C]"}),H("acceptanceCriteria.title")]}),(0,e.jsx)(s.rr,{className:"text-[13px] leading-relaxed text-[#6B6B6B]",children:H("acceptanceCriteria.gateBlocked",{count:U.filter(a=>a.required&&"passed"!==a.status).length})})]}),(0,e.jsxs)("div",{className:"px-6 pb-4 space-y-3",children:[(0,e.jsx)("p",{className:"text-[11px] font-semibold text-[#9A9A9A] uppercase tracking-wide",children:H("acceptanceCriteria.title")}),U.map(a=>(0,e.jsxs)("div",{className:`rounded-lg border p-3 space-y-2 ${"failed"===a.status?"border-red-200 bg-white":"border-[#E5E0D8] bg-white"}`,children:[(0,e.jsxs)("div",{className:"flex items-center gap-2",children:[(0,e.jsx)("div",{className:`h-2 w-2 rounded-full shrink-0 ${"failed"===a.status?"bg-[#C4574C]":"bg-[#F59E0B]"}`}),(0,e.jsx)("span",{className:"text-xs font-semibold text-[#2C2C2C]",children:a.description})]}),(0,e.jsxs)("div",{className:"flex items-center gap-2 pl-4",children:[(0,e.jsx)(q.E,{className:`text-[10px] border-0 ${"failed"===a.status?"bg-red-50 text-[#C4574C]":"bg-amber-50 text-[#D97706]"}`,children:H(`acceptanceCriteria.status.${a.status}`)}),(0,e.jsx)(q.E,{className:"text-[10px] border-0 bg-[#FAF8F4] text-[#9A9A9A]",children:a.required?H("acceptanceCriteria.required"):H("acceptanceCriteria.optional")}),!a.evidence&&(0,e.jsx)("span",{className:"text-[10px] italic text-[#9A9A9A]",children:H("acceptanceCriteria.noEvidence")})]}),a.evidence&&(0,e.jsxs)("div",{className:"rounded-md bg-red-50 p-2 ml-4",children:[(0,e.jsx)("span",{className:"text-[10px] font-medium text-[#9A9A9A]",children:H("acceptanceCriteria.verifyEvidence")}),(0,e.jsx)("p",{className:"text-[11px] text-[#2C2C2C] mt-0.5",children:a.evidence})]})]},a.uuid))]}),(0,e.jsx)(s.Es,{className:"border-t border-[#E5E2DC] px-6 py-4",children:(0,e.jsx)(r.$,{className:"rounded-lg bg-[#C4574C] hover:bg-[#A3433A] text-white",onClick:()=>T(!1),children:H("acceptanceCriteria.dismiss")})})]})})]})}d()}catch(a){d(a)}})},6019:(a,b,c)=>{"use strict";c.d(b,{$v:()=>p,EO:()=>l,Lt:()=>h,Rx:()=>q,Zr:()=>r,ck:()=>n,r7:()=>o,tv:()=>i,wd:()=>m});var d=c(10837);c(21968);var e=c(81093),f=c(96307),g=c(42424);function h({...a}){return(0,d.jsx)(e.Root,{"data-slot":"alert-dialog",...a})}function i({...a}){return(0,d.jsx)(e.Trigger,{"data-slot":"alert-dialog-trigger",...a})}function j({...a}){return(0,d.jsx)(e.Portal,{"data-slot":"alert-dialog-portal",...a})}function k({className:a,...b}){return(0,d.jsx)(e.Overlay,{"data-slot":"alert-dialog-overlay",className:(0,f.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...b})}function l({className:a,size:b="default",...c}){return(0,d.jsxs)(j,{children:[(0,d.jsx)(k,{}),(0,d.jsx)(e.Content,{"data-slot":"alert-dialog-content","data-size":b,className:(0,f.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg",a),...c})]})}function m({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,f.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",a),...b})}function n({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,f.cn)("flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",a),...b})}function o({className:a,...b}){return(0,d.jsx)(e.Title,{"data-slot":"alert-dialog-title",className:(0,f.cn)("text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",a),...b})}function p({className:a,...b}){return(0,d.jsx)(e.Description,{"data-slot":"alert-dialog-description",className:(0,f.cn)("text-muted-foreground text-sm",a),...b})}function q({className:a,variant:b="default",size:c="default",...h}){return(0,d.jsx)(g.$,{variant:b,size:c,asChild:!0,children:(0,d.jsx)(e.Action,{"data-slot":"alert-dialog-action",className:(0,f.cn)(a),...h})})}function r({className:a,variant:b="outline",size:c="default",...h}){return(0,d.jsx)(g.$,{variant:b,size:c,asChild:!0,children:(0,d.jsx)(e.Cancel,{"data-slot":"alert-dialog-cancel",className:(0,f.cn)(a),...h})})}},10297:(a,b,c)=>{"use strict";c.d(b,{G7:()=>i,L$:()=>l,h_:()=>m,oI:()=>j,uB:()=>h,xL:()=>k});var d=c(10837);c(21968);var e=c(28918),f=c(75888),g=c(96307);function h({className:a,...b}){return(0,d.jsx)(e.uB,{"data-slot":"command",className:(0,g.cn)("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",a),...b})}function i({className:a,...b}){return(0,d.jsxs)("div",{"data-slot":"command-input-wrapper",className:"flex h-9 items-center gap-2 border-b px-3",children:[(0,d.jsx)(f.A,{className:"size-4 shrink-0 opacity-50"}),(0,d.jsx)(e.uB.Input,{"data-slot":"command-input",className:(0,g.cn)("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",a),...b})]})}function j({className:a,...b}){return(0,d.jsx)(e.uB.List,{"data-slot":"command-list",className:(0,g.cn)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",a),...b})}function k({...a}){return(0,d.jsx)(e.uB.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...a})}function l({className:a,...b}){return(0,d.jsx)(e.uB.Group,{"data-slot":"command-group",className:(0,g.cn)("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",a),...b})}function m({className:a,...b}){return(0,d.jsx)(e.uB.Item,{"data-slot":"command-item",className:(0,g.cn)("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",a),...b})}},11225:(a,b,c)=>{"use strict";c.d(b,{C:()=>i,z:()=>h});var d=c(10837);c(21968);var e=c(90856),f=c(28121),g=c(96307);function h({className:a,...b}){return(0,d.jsx)(f.Root,{"data-slot":"radio-group",className:(0,g.cn)("grid gap-3",a),...b})}function i({className:a,...b}){return(0,d.jsx)(f.Item,{"data-slot":"radio-group-item",className:(0,g.cn)("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...b,children:(0,d.jsx)(f.Indicator,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:(0,d.jsx)(e.A,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}},15107:(a,b,c)=>{Promise.resolve().then(c.bind(c,29334))},15913:(a,b,c)=>{"use strict";c.d(b,{i:()=>p});var d=c(10837),e=c(21968),f=c(47797);c(63410);var g=c(9222),h=c(1007),i=c(86460),j=c(10694),k=c(42424),l=c(60265),m=c(42377);let n=(0,m.createServerReference)("404eb0bd5641543a0625e2baec7420b276ffa4d44b",m.callServer,void 0,m.findSourceMapURL,"getProjectDependenciesAction");var o=c(53013);function p({projectUuid:a,onTaskSelect:b,refreshKey:c}){let m=(0,g.c)(),p=(0,h.useSearchParams)(),[q,r,s]=(0,f.ck)([]),[t,u,v]=(0,f.fM)([]),[w,x]=(0,e.useState)(!0),[y,z]=(0,e.useState)(null),A=(0,e.useMemo)(()=>{let a=p.get("proposalUuids");if(!a)return null;let b=a.split(",").filter(Boolean);return b.length>0?new Set(b):null},[p]),B=(0,e.useCallback)(async()=>{x(!0);let b=await n(a),c=b.nodes,d=b.edges;if(A){let a=new Set((c=b.nodes.filter(a=>null!==a.proposalUuid&&A.has(a.proposalUuid))).map(a=>a.uuid));d=b.edges.filter(b=>a.has(b.from)&&a.has(b.to))}let e=c.map(a=>({id:a.uuid,type:"taskNode",position:{x:0,y:0},data:{title:a.title,status:a.status,priority:a.priority,proposalUuid:a.proposalUuid}})),f=d.map((a,b)=>({id:`e-${b}`,source:a.to,target:a.from,...l.qK})),{nodes:g,edges:h}=(0,l.nF)(e,f);r(g),u(h),x(!1)},[a,A,r,u]),C=(0,e.useCallback)(async a=>{if(!a.source||!a.target)return;z(null);let b=a.target,c=a.source,d=await (0,o.w)(b,c);if(!d.success)return void z(d.error||m("tasks.failedToAddDep"));await B()},[B]),D=(0,e.useCallback)((a,c)=>{b(c.id)},[b]);return w?(0,d.jsx)("div",{className:"flex flex-1 items-center justify-center",children:(0,d.jsx)(i.A,{className:"h-6 w-6 animate-spin text-[#9A9A9A]"})}):0===q.length?(0,d.jsx)("div",{className:"flex flex-1 items-center justify-center text-sm text-[#9A9A9A]",children:m("tasks.noTasksToDisplay")}):(0,d.jsxs)("div",{className:"flex-1 rounded-xl border border-[#E5E0D8] bg-[#FAFAF8] relative",children:[y&&(0,d.jsxs)("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-10 rounded-lg bg-red-50 border border-red-200 px-4 py-2 text-xs text-red-700 shadow-sm",children:[y,(0,d.jsx)(k.$,{variant:"ghost",size:"icon",className:"ml-2 h-5 w-5 font-medium hover:text-red-900",onClick:()=>z(null),children:(0,d.jsx)(j.A,{className:"h-3 w-3"})})]}),(0,d.jsxs)(f.Gc,{nodes:q,edges:t,onNodesChange:s,onEdgesChange:v,onConnect:C,onNodeClick:D,nodeTypes:l.c_,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:1.5,proOptions:{hideAttribution:!0},children:[(0,d.jsx)(f.VS,{color:"#E5E0D8",gap:20}),(0,d.jsx)(f.H2,{className:"[&>button]:border-[#E5E0D8] [&>button]:bg-white [&>button]:text-[#2C2C2C] [&>button:hover]:bg-[#FAF8F4]"})]})]})}},19520:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Hd:()=>n,nk:()=>p,pw:()=>o,yq:()=>m});var e=c(2613);c(50785);var f=c(5562),g=c(9259),h=c(50530),i=c(67738),j=c(97307),k=c(12217),l=a([g,h,i]);[g,h,i]=l.then?(await l)():l;let q={todo:"open",in_progress:"in_progress",to_verify:"to_verify",done:"done"};async function m(a,b,c){let d=await (0,g.d)();if(!d)return{success:!1,error:"Unauthorized"};try{let e=await (0,h.K4)(d.companyUuid,a);if(!e)return{success:!1,error:"Task not found"};let g=q[b];if(!g)return{success:!1,error:"Invalid column"};if("in_progress"===g){let b=await (0,h.IM)(a);if(!b.resolved)return{success:!1,error:"Dependencies not resolved",blocked:!0,blockers:b.blockers}}if("done"===g&&"to_verify"!==e.status)await (0,h.lC)(a,{status:"to_verify"});else if("done"===g&&"to_verify"===e.status){let b=await (0,h.Ew)(a);if(!b.allowed)return{success:!1,error:b.reason||"Not all required acceptance criteria are passed",gateBlocked:!0,unresolvedCriteria:b.unresolvedCriteria||[]};await (0,h.lC)(a,{status:"done"})}else await (0,h.lC)(a,{status:g});return(0,f.revalidatePath)(`/projects/${c}/tasks`),{success:!0}}catch(a){return j.A.error({err:a},"Failed to move task"),{success:!1,error:"Failed to move task"}}}async function n(a,b){let c=await (0,g.d)();if(!c)return{success:!1,error:"Unauthorized"};try{let d=await (0,h.K4)(c.companyUuid,a);if(!d)return{success:!1,error:"Task not found"};return await (0,h.lC)(a,{status:b}),await (0,i.createActivity)({companyUuid:c.companyUuid,projectUuid:d.projectUuid,targetType:"task",targetUuid:d.uuid,actorType:c.type,actorUuid:c.actorUuid,action:"force_status_change",value:JSON.stringify({from:d.status,to:b})}),{success:!0}}catch(a){return j.A.error({err:a},"Failed to force move task"),{success:!1,error:"Failed to force move task"}}}async function o(a){let b=await (0,g.d)();if(!b)return{success:!1,error:"Unauthorized"};try{let{tasks:c}=await (0,h.Vk)({companyUuid:b.companyUuid,projectUuid:a,skip:0,take:1e3});return{success:!0,data:c}}catch(a){return j.A.error({err:a},"Failed to fetch tasks"),{success:!1,error:"Failed to fetch tasks"}}}async function p(a){let b=await (0,g.d)();if(!b)return{nodes:[],edges:[]};try{return await (0,h.Cm)(b.companyUuid,a)}catch(a){return j.A.error({err:a},"Failed to get project dependencies"),{nodes:[],edges:[]}}}(0,k.D)([m,n,o,p]),(0,e.A)(m,"70374bb782995e3ff6414e8ec52d4adb967f1fdfc3",null),(0,e.A)(n,"60c5d2f45e60e14024eeb27c0961bbf0e543bd2290",null),(0,e.A)(o,"40b53dde2a5b26473091311fd9e0bef4f2f9ce3267",null),(0,e.A)(p,"404eb0bd5641543a0625e2baec7420b276ffa4d44b",null),d()}catch(a){d(a)}})},20170:(a,b,c)=>{"use strict";c.d(b,{T:()=>f});var d=c(10837);c(21968);var e=c(96307);function f({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,e.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...b})}},24383:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(56556).A)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},24879:(a,b,c)=>{"use strict";c.d(b,{o:()=>k});var d=c(10837),e=c(21968),f=c(46005);let g=(0,e.createContext)(null);var h=c(46801),i=c(72443);let j=a=>!a.isLayoutDirty&&a.willUpdate(!1),k=({children:a,id:b,inherit:c=!0})=>{let k=(0,e.useContext)(f.L),l=(0,e.useContext)(g),[m,n]=function(){let a=function(){let a=(0,e.useRef)(!1);return(0,i.E)(()=>(a.current=!0,()=>{a.current=!1}),[]),a}(),[b,c]=(0,e.useState)(0),d=(0,e.useCallback)(()=>{a.current&&c(b+1)},[b]);return[(0,e.useCallback)(()=>h.Gt.postRender(d),[d]),b]}(),o=(0,e.useRef)(null),p=k.id||l;null===o.current&&((a=>!0==(!0===a)||"id"===a)(c)&&p&&(b=b?p+"-"+b:p),o.current={id:b,group:!0===c&&k.group||function(){let a=new Set,b=new WeakMap,c=()=>a.forEach(j);return{add:d=>{a.add(d),b.set(d,d.addEventListener("willUpdate",c))},remove:d=>{a.delete(d);let e=b.get(d);e&&(e(),b.delete(d)),c()},dirty:c}}()});let q=(0,e.useMemo)(()=>({...o.current,forceRender:m}),[n]);return(0,d.jsx)(f.L.Provider,{value:q,children:a})}},27936:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(56556).A)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]])},28774:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A8:()=>p,Ad:()=>o,CG:()=>n,Iq:()=>m,RB:()=>k,Sn:()=>h,d5:()=>l,tN:()=>j,x4:()=>i});var e=c(71255),f=c(77219),g=a([e,f]);async function h({companyUuid:a,name:b,roles:c,ownerUuid:d,persona:f,systemPrompt:g}){return e.z.agent.create({data:{companyUuid:a,name:b,roles:c,ownerUuid:d,persona:f,systemPrompt:g},select:{uuid:!0,name:!0,roles:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,createdAt:!0}})}async function i(a,b,c){if(c&&!await e.z.agent.findFirst({where:{uuid:a,companyUuid:c},select:{uuid:!0}}))throw Error("Agent not found");return e.z.agent.update({where:{uuid:a},data:b,select:{uuid:!0,name:!0,roles:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,lastActiveAt:!0,createdAt:!0}})}async function j(a,b){return e.z.apiKey.updateMany({where:{agentUuid:a,revokedAt:null},data:{name:b}})}async function k(a){return e.z.agent.delete({where:{uuid:a}})}async function l(a,b,c,d){let f={companyUuid:a,revokedAt:null,...d&&{agent:{ownerUuid:d}}},[g,h]=await Promise.all([e.z.apiKey.findMany({where:f,skip:b,take:c,orderBy:{createdAt:"desc"},include:{agent:{select:{uuid:!0,name:!0,roles:!0,persona:!0}}}}),e.z.apiKey.count({where:f})]);return{apiKeys:g,total:h}}async function m({companyUuid:a,agentUuid:b,name:c,expiresAt:d}){let{key:g,hash:h,prefix:i}=(0,f.XH)();return{...await e.z.apiKey.create({data:{companyUuid:a,agentUuid:b,keyHash:h,keyPrefix:i,name:c,expiresAt:d},select:{uuid:!0,keyPrefix:!0,name:!0,expiresAt:!0,createdAt:!0}}),key:g}}async function n(a,b,c){return e.z.apiKey.findFirst({where:{uuid:b,companyUuid:a,...c&&{agent:{ownerUuid:c}}},select:{uuid:!0,agentUuid:!0,revokedAt:!0}})}async function o(a,b,c){return e.z.agent.findMany({where:{companyUuid:a,...c&&{ownerUuid:c},OR:[{roles:{has:b}},{roles:{has:`${b}_agent`}}]},select:{uuid:!0,name:!0,roles:!0,ownerUuid:!0},orderBy:{name:"asc"}})}async function p(a){return e.z.user.findMany({where:{companyUuid:a},select:{uuid:!0,name:!0,email:!0},orderBy:{name:"asc"}})}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},29179:(a,b,c)=>{Promise.resolve().then(c.bind(c,90436))},29334:(a,b,c)=>{"use strict";c.d(b,{TaskViewToggle:()=>d});let d=(0,c(37143).registerClientReference)(function(){throw Error("Attempted to call TaskViewToggle() from the server but TaskViewToggle is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/ubuntu/dev/ai-pm/src/app/(dashboard)/projects/[uuid]/tasks/task-view-toggle.tsx","TaskViewToggle")},53651:(a,b,c)=>{"use strict";c.d(b,{y:()=>e});var d=c(42377);let e=(0,d.createServerReference)("70374bb782995e3ff6414e8ec52d4adb967f1fdfc3",d.callServer,void 0,d.findSourceMapURL,"moveTaskToColumnAction")},61320:(a,b,c)=>{"use strict";c.d(b,{H:()=>e});var d=c(42377);let e=(0,d.createServerReference)("60c5d2f45e60e14024eeb27c0961bbf0e543bd2290",d.callServer,void 0,d.findSourceMapURL,"forceMoveTaskToColumnAction")},63748:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{X:()=>n});var e=c(10023),f=c(66530),g=c(26555),h=c(82858),i=c(29662),j=c(71165),k=c(61413),l=c(29334),m=a([i,j,k]);async function n({projectUuid:a,initialSelectedTaskUuid:b}){let c=await (0,i.d)();c||(0,f.redirect)("/login");let d=await (0,g.A)();await (0,k.Yi)(c.companyUuid,a)||(0,f.redirect)("/projects");let{tasks:m}=await (0,j.Vk)({companyUuid:c.companyUuid,projectUuid:a,skip:0,take:1e3}),n=m.reduce((a,b)=>a+(b.storyPoints||0),0);return(0,e.jsxs)("div",{className:"flex h-full flex-col p-4 md:p-8",children:[(0,e.jsx)("div",{className:"mb-6 flex items-center justify-between",children:(0,e.jsxs)("div",{children:[(0,e.jsx)("h1",{className:"text-2xl font-semibold text-[#2C2C2C]",children:d("tasks.title")}),(0,e.jsxs)("div",{className:"mt-1 flex items-center gap-4",children:[(0,e.jsx)("p",{className:"text-sm text-[#6B6B6B]",children:d("tasks.subtitle")}),n>0&&(0,e.jsxs)("div",{className:"flex items-center gap-1.5 rounded-full bg-[#F5F2EC] px-3 py-1",children:[(0,e.jsx)(h.A,{className:"h-3.5 w-3.5 text-[#C67A52]"}),(0,e.jsxs)("span",{className:"text-xs font-medium text-[#6B6B6B]",children:[(0,e.jsx)("span",{className:"text-[#2C2C2C]",children:n.toFixed(1)})," ",d("tasks.agentHours")]})]})]})]})}),(0,e.jsx)(l.TaskViewToggle,{projectUuid:a,initialTasks:m,currentUserUuid:c.actorUuid,initialSelectedTaskUuid:b})]})}[i,j,k]=m.then?(await m)():m,d()}catch(a){d(a)}})},77219:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{XH:()=>h});var e=c(55511),f=c(71255);c(97307);var g=a([f]);f=(g.then?(await g)():g)[0];let i="cho_";function h(){var a;let b=(0,e.randomBytes)(32).toString("base64url"),c=`${i}${b}`,d=(a=c,(0,e.createHash)("sha256").update(a).digest("hex")),f=`${i}${b.slice(0,4)}...${b.slice(-4)}`;return{key:c,hash:d,prefix:f}}d()}catch(a){d(a)}})},77736:(a,b,c)=>{"use strict";c.d(b,{p:()=>e});var d=c(42377);let e=(0,d.createServerReference)("40b53dde2a5b26473091311fd9e0bef4f2f9ce3267",d.callServer,void 0,d.findSourceMapURL,"fetchTasksAction")},82858:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(91533).A)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]])},86018:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"00616de2d52bb8e77310fbe14c3e8133a62cee49d7":()=>g.vq,"400f3e7e7d42eae5e9bc653e9ce8479c4c10843076":()=>g.hR,"402f020928a463239761a6b3410450792fcfe3f31f":()=>g.Yw,"40357728332e1ec640d7177f7ac4c6c2816d9f2405":()=>g.A0,"4049dc3e059628e290908f0083c790c7607c1861ea":()=>m.h,"404eb0bd5641543a0625e2baec7420b276ffa4d44b":()=>f.nk,"405eefb03b1c1759e647d3f4bdf37eb362517b025f":()=>j.f,"406c09f1fb889b1607ec79823088008667e27a450c":()=>e.v5,"40829355f4d02cf40318d3220ca6e0a25f735fe037":()=>l.xo,"40b53dde2a5b26473091311fd9e0bef4f2f9ce3267":()=>f.pw,"40ce0af7dfa1bd89d1e7a891abaf44bd1a719cfeb1":()=>l.kq,"40d6a34177f9c4da3a912c04641793a7d06aca2697":()=>e.Dv,"40dea86063ba378cbe90a07ae2070da856bbce4e92":()=>k.F,"40f6ff93b5d24043d020215f88a5b18f49dd538a9f":()=>g.p2,"40fb8913e75b876ce47259fbbc11b87995a26413e7":()=>m.J,"40fce8d7d0d349f7640901c5ef24ff1be7fd131d66":()=>g.iY,"601f33bf800e26b5d0b25b5778a8cfdccc4bbd8aa4":()=>h.hD,"60299137928c321338941f7df476f14870d86d9837":()=>l.TK,"6031eb40ef45a1ede28d58fddd8cb3cc5529012f6d":()=>g.qb,"604c55ec4c0922c3a9ec0007f8c6d8af4e10905e6b":()=>g.TV,"6062fb32640da63dd5c6a61bf200752e626ac4e3e1":()=>e.Tg,"607f0ab99ad3340a5337764efaac2de338a3666b4b":()=>h.Nq,"60aaaf09814b29767a23a36b59555df07282407555":()=>i.d,"60c42062120a341a67a3a1905453b500068a3f156d":()=>h.IY,"60c573ce9bba78fe5288c4c38fc538661052e7587e":()=>l.wG,"60c5d2f45e60e14024eeb27c0961bbf0e543bd2290":()=>f.Hd,"60e7e9249f93231503071a49fccf2b7f16a3517765":()=>g.y9,"60fc6412a66d963fbb894017819bea66356e19b5f5":()=>g.bd,"70374bb782995e3ff6414e8ec52d4adb967f1fdfc3":()=>f.yq,"70b2bba30986179182b8c1ff03c83ce22ac6c8090b":()=>i.s});var e=c(22299),f=c(19520),g=c(73393),h=c(71353),i=c(98581),j=c(64029),k=c(72189),l=c(22293),m=c(81751),n=a([e,f,g,h,i,j,k,l,m]);[e,f,g,h,i,j,k,l,m]=n.then?(await n)():n,d()}catch(a){d(a)}})},90436:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{TaskViewToggle:()=>x});var e=c(10837),f=c(21968),g=c(1007),h=c(9222),i=c(32552),j=c(45519),k=c(33407),l=c(92900),m=c(42424),n=c(49599),o=c(35198),p=c(96013),q=c(98625),r=c(95979),s=c(5514),t=c(15913),u=c(86104),v=c(31009),w=a([s,u]);[s,u]=w.then?(await w)():w;let y={open:"bg-[#FFF3E0] text-[#E65100]",assigned:"bg-[#E3F2FD] text-[#1976D2]",in_progress:"bg-[#E8F5E9] text-[#5A9E6F]",to_verify:"bg-[#F3E5F5] text-[#7B1FA2]",done:"bg-[#E0F2F1] text-[#00796B]",closed:"bg-[#F5F5F5] text-[#9A9A9A]"},z={open:"open",assigned:"assigned",in_progress:"inProgress",to_verify:"toVerify",done:"done",closed:"closed"},A=[{id:"all",labelKey:"allStatuses",statuses:[]},{id:"todo",labelKey:"todo",statuses:["open","assigned"]},{id:"in_progress",labelKey:"inProgress",statuses:["in_progress"]},{id:"to_verify",labelKey:"toVerify",statuses:["to_verify"]},{id:"done",labelKey:"done",statuses:["done","closed"]}],B={high:"bg-red-100 text-red-700",medium:"bg-yellow-100 text-yellow-700",low:"bg-blue-100 text-blue-700"};function x({projectUuid:a,initialTasks:b,currentUserUuid:c,initialSelectedTaskUuid:d}){let w=(0,h.c)(),x=(0,p.a)(),C=(0,g.useSearchParams)(),[D,E]=(0,f.useState)("kanban"),F=`/projects/${a}/tasks`,{selectedId:G,openPanel:H,closePanel:I}=(0,q.T)(F,d),J=(0,f.useMemo)(()=>{let a=C.get("proposalUuids");if(!a)return null;let b=a.split(",").filter(Boolean);return b.length>0?new Set(b):null},[C]),[K,L]=(0,f.useState)(!1),[M,N]=(0,f.useState)(0),[O,P]=(0,f.useState)("all"),Q=(0,f.useMemo)(()=>G?b.find(a=>a.uuid===G)??null:null,[G,b]),R=(0,f.useCallback)(()=>{N(a=>a+1)},[]),S=(0,f.useMemo)(()=>J?b.filter(a=>a.proposalUuid&&J.has(a.proposalUuid)):b,[b,J]),T=(0,f.useMemo)(()=>{let a=A.find(a=>a.id===O);return a&&0!==a.statuses.length?S.filter(b=>a.statuses.includes(b.status)):S},[S,O]);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"mb-4 overflow-x-auto",children:(0,e.jsx)(r.T,{projectUuid:a})}),(0,e.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,e.jsxs)("div",{className:"flex items-center gap-1 rounded-lg bg-[#F5F2EC] p-1 w-fit",children:[x&&(0,e.jsxs)(m.$,{variant:"ghost",size:"sm",className:`h-8 gap-1.5 rounded-md px-3 text-xs ${"list"===D?"bg-white text-[#2C2C2C] shadow-sm":"text-[#6B6B6B] hover:text-[#2C2C2C]"}`,onClick:()=>E("list"),children:[(0,e.jsx)(i.A,{className:"h-3.5 w-3.5"}),w("tasks.listView")]}),!x&&(0,e.jsxs)(m.$,{variant:"ghost",size:"sm",className:`h-8 gap-1.5 rounded-md px-3 text-xs ${"kanban"===D?"bg-white text-[#2C2C2C] shadow-sm":"text-[#6B6B6B] hover:text-[#2C2C2C]"}`,onClick:()=>E("kanban"),children:[(0,e.jsx)(j.A,{className:"h-3.5 w-3.5"}),w("tasks.kanbanView")]}),(0,e.jsxs)(m.$,{variant:"ghost",size:"sm",className:`h-8 gap-1.5 rounded-md px-3 text-xs ${"dag"===D?"bg-white text-[#2C2C2C] shadow-sm":"text-[#6B6B6B] hover:text-[#2C2C2C]"}`,onClick:()=>E("dag"),children:[(0,e.jsx)(k.A,{className:"h-3.5 w-3.5"}),w("tasks.dagView")]})]}),(0,e.jsxs)(m.$,{className:"bg-[#C67A52] hover:bg-[#B56A42] text-white",onClick:()=>{I(),L(!0)},children:[(0,e.jsx)(l.A,{className:"mr-2 h-4 w-4"}),w("tasks.newTask")]})]}),"list"===D?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"mb-4 flex gap-1 overflow-x-auto border-b border-[#E5E0D8] pb-2",children:A.map(a=>{let b=0===a.statuses.length?S.length:S.filter(b=>a.statuses.includes(b.status)).length;return(0,e.jsxs)(m.$,{variant:"ghost",size:"sm",className:`h-8 shrink-0 rounded-md px-3 text-xs ${O===a.id?"bg-[#F5F2EC] text-[#2C2C2C] font-medium":"text-[#6B6B6B] hover:text-[#2C2C2C]"}`,onClick:()=>P(a.id),children:["all"===a.id?w(`tasks.${a.labelKey}`):w(`status.${a.labelKey}`),(0,e.jsx)("span",{className:"ml-1.5 rounded-full bg-white px-1.5 py-0.5 text-[10px] font-medium text-[#6B6B6B]",children:b})]},a.id)})}),(0,e.jsx)("div",{className:"flex-1 space-y-2 overflow-y-auto",children:0===T.length?(0,e.jsx)(v.P.div,{initial:{opacity:0,scale:.98},animate:{opacity:1,scale:1},transition:{duration:.2,ease:[0,0,.2,1]},className:"flex h-24 items-center justify-center rounded-lg border-2 border-dashed border-[#E5E0D8] text-sm text-[#9A9A9A]",children:w("tasks.noTasks")}):T.map(a=>(0,e.jsxs)(o.Zp,{className:"cursor-pointer border-[#E5E0D8] bg-white p-4 transition-all hover:border-[#C67A52] hover:shadow-sm",onClick:()=>H(a.uuid),children:[(0,e.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,e.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,e.jsx)("h4",{className:"font-medium text-[#2C2C2C] truncate",children:a.title}),a.description&&(0,e.jsx)("p",{className:"mt-1 line-clamp-1 text-sm text-[#6B6B6B]",children:a.description})]}),(0,e.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[null!=a.storyPoints&&a.storyPoints>0&&(0,e.jsxs)("span",{className:"rounded bg-[#FFF3E0] px-2 py-0.5 text-xs font-medium text-[#E65100]",children:[a.storyPoints,"h"]}),(0,e.jsx)(n.E,{className:B[a.priority]||"",children:w(`priority.${a.priority}`)}),(0,e.jsx)(n.E,{className:y[a.status]||"",children:w(`status.${z[a.status]||a.status}`)})]})]}),a.assignee&&(0,e.jsx)("div",{className:"mt-2 flex items-center gap-1.5 text-xs text-[#9A9A9A]",children:(0,e.jsx)("span",{className:"truncate",children:a.assignee.name})})]},a.uuid))}),Q&&(0,e.jsx)(u.v,{task:Q,projectUuid:a,currentUserUuid:c,onClose:I,onDependencyChange:R})]}):"kanban"===D?(0,e.jsx)(s.y,{projectUuid:a,initialTasks:S,currentUserUuid:c,selectedTaskUuid:G,onTaskSelect:H,onPanelClose:I,proposalUuidFilter:J}):(0,e.jsxs)("div",{className:"flex flex-1 flex-col",children:[(0,e.jsx)(t.i,{projectUuid:a,onTaskSelect:a=>H(a),refreshKey:M}),Q&&(0,e.jsx)(u.v,{task:Q,projectUuid:a,currentUserUuid:c,onClose:I,onDependencyChange:R})]}),K&&!Q&&(0,e.jsx)(u.v,{task:null,projectUuid:a,currentUserUuid:c,onClose:()=>L(!1),onCreated:()=>L(!1)})]})}d()}catch(a){d(a)}})},91533:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(73426);let e=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),f=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var g={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let h=(0,d.forwardRef)(({color:a="currentColor",size:b=24,strokeWidth:c=2,absoluteStrokeWidth:f,className:h="",children:i,iconNode:j,...k},l)=>(0,d.createElement)("svg",{ref:l,...g,width:b,height:b,stroke:a,strokeWidth:f?24*Number(c)/Number(b):c,className:e("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,b])=>(0,d.createElement)(a,b)),...Array.isArray(i)?i:[i]])),i=(a,b)=>{let c=(0,d.forwardRef)(({className:c,...g},i)=>(0,d.createElement)(h,{ref:i,iconNode:b,className:e(`lucide-${f(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,c),...g}));return c.displayName=f(a),c}},95979:(a,b,c)=>{"use strict";c.d(b,{T:()=>q});var d=c(10837),e=c(21968),f=c(1007),g=c(9222),h=c(65956);let i=(0,c(56556).A)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var j=c(9810),k=c(10694),l=c(96307),m=c(42424),n=c(49599),o=c(74113),p=c(10297);function q({projectUuid:a}){let b=(0,g.c)("tasks"),c=(0,f.useRouter)(),q=(0,f.usePathname)(),r=(0,f.useSearchParams)(),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)([]),[w,x]=(0,e.useState)(new Set),y=(0,e.useCallback)(a=>{let b=new URLSearchParams(r.toString());a.size>0?b.set("proposalUuids",Array.from(a).join(",")):b.delete("proposalUuids");let d=b.toString();c.replace(`${q}${d?`?${d}`:""}`,{scroll:!1})},[c,q,r]),z=(0,e.useCallback)(a=>{x(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),y(c),c})},[y]),A=(0,e.useCallback)(()=>{x(new Set),y(new Set)},[y]),B=w.size>0;return(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-sm text-muted-foreground shrink-0",children:[(0,d.jsx)(h.A,{className:"size-4"}),(0,d.jsxs)("span",{children:[b("proposalFilter.label"),":"]})]}),(0,d.jsxs)(o.AM,{open:s,onOpenChange:t,children:[(0,d.jsx)(o.Wv,{asChild:!0,children:(0,d.jsxs)(m.$,{variant:"outline",size:"sm",role:"combobox","aria-expanded":s,className:(0,l.cn)("justify-between gap-1 min-w-[120px] max-w-[200px] md:min-w-[160px] md:max-w-none",B&&"border-[#C67A52] bg-[#FFF8F4]"),children:[(0,d.jsx)("span",{className:"truncate",children:B?b("proposalFilter.filtered",{filtered:w.size,total:u.length}):b("proposalFilter.allProposals")}),(0,d.jsx)(i,{className:"size-4 shrink-0 opacity-50"})]})}),(0,d.jsx)(o.hl,{className:"w-[300px] p-0",align:"start",children:(0,d.jsxs)(p.uB,{children:[(0,d.jsx)(p.G7,{placeholder:b("proposalFilter.search")}),(0,d.jsxs)(p.oI,{children:[(0,d.jsx)(p.xL,{children:b("proposalFilter.noResults")}),(0,d.jsx)(p.L$,{children:u.map(a=>{let c=w.has(a.uuid);return(0,d.jsxs)(p.h_,{value:a.title,onSelect:()=>z(a.uuid),className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,d.jsx)("div",{className:(0,l.cn)("flex size-4 shrink-0 items-center justify-center rounded-sm border",c?"border-[#C67A52] bg-[#C67A52] text-white":"border-muted-foreground/30"),children:c&&(0,d.jsx)(j.A,{className:"size-3"})}),(0,d.jsx)("span",{className:"truncate",children:a.title})]}),(0,d.jsx)(n.E,{variant:"secondary",className:"ml-2 shrink-0",children:b("proposalFilter.taskCount",{count:a.taskCount})})]},a.uuid)})})]})]})})]}),B&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"flex flex-wrap gap-1 max-w-full",children:u.filter(a=>w.has(a.uuid)).map(a=>(0,d.jsxs)(n.E,{variant:"outline",className:"gap-1 border-[#C67A52] bg-[#FFF8F4] text-[#C67A52]",children:[a.title,(0,d.jsx)("button",{type:"button",className:"ml-0.5 rounded-full hover:bg-[#C67A52]/20",onClick:()=>z(a.uuid),children:(0,d.jsx)(k.A,{className:"size-3"})})]},a.uuid))}),(0,d.jsx)(m.$,{variant:"ghost",size:"xs",onClick:A,className:"text-muted-foreground",children:b("proposalFilter.clear")})]})]})}},96013:(a,b,c)=>{"use strict";c.d(b,{a:()=>e});var d=c(21968);function e(){let[a,b]=(0,d.useState)(!1);return a}}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=1526,exports.ids=[1526,6643],exports.modules={2852:(a,b,c)=>{c.d(b,{J:()=>g});var d=c(10837);c(21968);var e=c(13277),f=c(96307);function g({className:a,...b}){return(0,d.jsx)(e.Root,{"data-slot":"label",className:(0,f.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",a),...b})}},6019:(a,b,c)=>{c.d(b,{$v:()=>p,EO:()=>l,Lt:()=>h,Rx:()=>q,Zr:()=>r,ck:()=>n,r7:()=>o,tv:()=>i,wd:()=>m});var d=c(10837);c(21968);var e=c(81093),f=c(96307),g=c(42424);function h({...a}){return(0,d.jsx)(e.Root,{"data-slot":"alert-dialog",...a})}function i({...a}){return(0,d.jsx)(e.Trigger,{"data-slot":"alert-dialog-trigger",...a})}function j({...a}){return(0,d.jsx)(e.Portal,{"data-slot":"alert-dialog-portal",...a})}function k({className:a,...b}){return(0,d.jsx)(e.Overlay,{"data-slot":"alert-dialog-overlay",className:(0,f.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...b})}function l({className:a,size:b="default",...c}){return(0,d.jsxs)(j,{children:[(0,d.jsx)(k,{}),(0,d.jsx)(e.Content,{"data-slot":"alert-dialog-content","data-size":b,className:(0,f.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg",a),...c})]})}function m({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,f.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",a),...b})}function n({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,f.cn)("flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",a),...b})}function o({className:a,...b}){return(0,d.jsx)(e.Title,{"data-slot":"alert-dialog-title",className:(0,f.cn)("text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",a),...b})}function p({className:a,...b}){return(0,d.jsx)(e.Description,{"data-slot":"alert-dialog-description",className:(0,f.cn)("text-muted-foreground text-sm",a),...b})}function q({className:a,variant:b="default",size:c="default",...h}){return(0,d.jsx)(g.$,{variant:b,size:c,asChild:!0,children:(0,d.jsx)(e.Action,{"data-slot":"alert-dialog-action",className:(0,f.cn)(a),...h})})}function r({className:a,variant:b="outline",size:c="default",...h}){return(0,d.jsx)(g.$,{variant:b,size:c,asChild:!0,children:(0,d.jsx)(e.Cancel,{"data-slot":"alert-dialog-cancel",className:(0,f.cn)(a),...h})})}},7046:(a,b,c)=>{c.d(b,{kX:()=>e,od:()=>f,sO:()=>j});var d=c(70936);function e(a,b){return d.NextResponse.json({success:!0,data:a,meta:b})}function f(a,b,c,e){return d.NextResponse.json({success:!0,data:a,meta:{page:b,pageSize:c,total:e}})}let g={BAD_REQUEST:"BAD_REQUEST",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",NOT_FOUND:"NOT_FOUND",CONFLICT:"CONFLICT",VALIDATION_ERROR:"VALIDATION_ERROR",ALREADY_CLAIMED:"ALREADY_CLAIMED",NOT_CLAIMED:"NOT_CLAIMED",INVALID_STATUS_TRANSITION:"INVALID_STATUS_TRANSITION",PERMISSION_DENIED:"PERMISSION_DENIED",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR"},h={[g.BAD_REQUEST]:400,[g.UNAUTHORIZED]:401,[g.FORBIDDEN]:403,[g.NOT_FOUND]:404,[g.CONFLICT]:409,[g.VALIDATION_ERROR]:422,[g.ALREADY_CLAIMED]:409,[g.NOT_CLAIMED]:400,[g.INVALID_STATUS_TRANSITION]:400,[g.PERMISSION_DENIED]:403,[g.INTERNAL_ERROR]:500,[g.DATABASE_ERROR]:500};function i(a,b,c){let e=h[a]||500;return d.NextResponse.json({success:!1,error:{code:a,message:b,details:c}},{status:e})}let j={badRequest:(a,b)=>i(g.BAD_REQUEST,a,b),unauthorized:(a="Authentication required")=>i(g.UNAUTHORIZED,a),forbidden:(a="Access denied")=>i(g.FORBIDDEN,a),notFound:(a="Resource")=>i(g.NOT_FOUND,`${a} not found`),conflict:a=>i(g.CONFLICT,a),validationError:a=>i(g.VALIDATION_ERROR,"Validation failed",a),alreadyClaimed:()=>i(g.ALREADY_CLAIMED,"Resource is already claimed"),notClaimed:()=>i(g.NOT_CLAIMED,"Resource is not claimed"),invalidStatusTransition:(a,b)=>i(g.INVALID_STATUS_TRANSITION,`Invalid status transition from ${a} to ${b}`),permissionDenied:a=>i(g.PERMISSION_DENIED,`Permission denied: ${a}`),internal:(a="Internal server error")=>i(g.INTERNAL_ERROR,a),database:(a="Database error")=>i(g.DATABASE_ERROR,a)}},10297:(a,b,c)=>{c.d(b,{G7:()=>i,L$:()=>l,h_:()=>m,oI:()=>j,uB:()=>h,xL:()=>k});var d=c(10837);c(21968);var e=c(28918),f=c(75888),g=c(96307);function h({className:a,...b}){return(0,d.jsx)(e.uB,{"data-slot":"command",className:(0,g.cn)("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",a),...b})}function i({className:a,...b}){return(0,d.jsxs)("div",{"data-slot":"command-input-wrapper",className:"flex h-9 items-center gap-2 border-b px-3",children:[(0,d.jsx)(f.A,{className:"size-4 shrink-0 opacity-50"}),(0,d.jsx)(e.uB.Input,{"data-slot":"command-input",className:(0,g.cn)("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",a),...b})]})}function j({className:a,...b}){return(0,d.jsx)(e.uB.List,{"data-slot":"command-list",className:(0,g.cn)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",a),...b})}function k({...a}){return(0,d.jsx)(e.uB.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...a})}function l({className:a,...b}){return(0,d.jsx)(e.uB.Group,{"data-slot":"command-group",className:(0,g.cn)("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",a),...b})}function m({className:a,...b}){return(0,d.jsx)(e.uB.Item,{"data-slot":"command-item",className:(0,g.cn)("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",a),...b})}},11225:(a,b,c)=>{c.d(b,{C:()=>i,z:()=>h});var d=c(10837);c(21968);var e=c(90856),f=c(28121),g=c(96307);function h({className:a,...b}){return(0,d.jsx)(f.Root,{"data-slot":"radio-group",className:(0,g.cn)("grid gap-3",a),...b})}function i({className:a,...b}){return(0,d.jsx)(f.Item,{"data-slot":"radio-group-item",className:(0,g.cn)("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...b,children:(0,d.jsx)(f.Indicator,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:(0,d.jsx)(e.A,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}},12735:(a,b,c)=>{c.d(b,{hD:()=>d}),c(33513),c(86099),c(97307),new(c(16698)).AsyncLocalStorage;class d extends Error{constructor(a,b,c=400,d){super(b),this.code=a,this.status=c,this.details=d,this.name="ApiError"}}},17613:(a,b,c)=>{c.d(b,{R:()=>u});var d=c(10837),e=c(21968),f=c(1007),g=c(9222),h=c(21790),i=c(49102),j=c(20447),k=c(67832),l=c(87461),m=c(86460),n=c(42424),o=c(9994),p=c(82658),q=c(42377);let r=(0,q.createServerReference)("70d3900f5f1021cd79369856a120fc844bf3b45684",q.callServer,void 0,q.findSourceMapURL,"submitElaborationAnswersAction"),s="__other__",t={functional:"functional",non_functional:"nonFunctional",business_context:"businessContext",technical_context:"technicalContext",user_scenario:"userScenario",scope:"scope"};function u({ideaUuid:a,elaboration:b,onRefresh:c}){let e=(0,g.c)("elaboration"),h=(0,f.useRouter)();if(!b||0===b.rounds.length)return null;let{summary:i,rounds:j}=b;return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("label",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:e("title")}),(0,d.jsx)("span",{className:"text-xs font-medium text-[#C67A52]",children:e("answeredCounter",{answered:i.answeredQuestions,total:i.totalQuestions})})]}),(0,d.jsx)("div",{className:"space-y-2.5",children:j.map(b=>(0,d.jsx)(v,{round:b,ideaUuid:a,onAnswered:async()=>{await c?.(),h.refresh()}},b.uuid))})]})}function v({round:a,ideaUuid:b,onAnswered:c}){let f=(0,g.c)("elaboration"),j="pending_answers"===a.status,k="answered"===a.status||"validated"===a.status||"needs_followup"===a.status,[l,m]=(0,e.useState)(j);return(0,d.jsx)(p.Nt,{open:l,onOpenChange:m,children:(0,d.jsxs)("div",{className:"overflow-hidden rounded-xl border border-[#E5E0D8] bg-white",children:[(0,d.jsx)(p.R6,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:`flex w-full items-center justify-between px-4 py-3 text-left transition-colors cursor-pointer hover:bg-[#FAF8F4] ${l?"bg-[#F7F6F3] border-b border-[#E5E0D8]":""}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[l?(0,d.jsx)(h.A,{className:"h-4 w-4 text-[#6B6B6B]"}):(0,d.jsx)(i.A,{className:"h-4 w-4 text-[#6B6B6B]"}),(0,d.jsx)("span",{className:`flex h-[22px] w-[22px] shrink-0 items-center justify-center rounded-full text-[11px] font-semibold text-white ${j?"bg-[#C67A52]":"bg-[#888780]"}`,children:a.roundNumber}),(0,d.jsx)("span",{className:"text-[13px] font-semibold text-[#2C2C2C]",children:f("roundLabel",{number:a.roundNumber})}),!l&&(0,d.jsxs)("span",{className:"text-xs text-[#9A9A9A]",children:["\xb7 ",f("questionCount",{count:a.questions.length})]})]}),k?(0,d.jsx)("span",{className:"rounded bg-[#E8F5E9] px-2 py-0.5 text-[10px] font-medium text-[#2E7D32]",children:f("statusAnswered")}):(0,d.jsx)("span",{className:"rounded bg-[#FFF3E0] px-2 py-0.5 text-[10px] font-medium text-[#E65100]",children:f("pendingAnswers")})]})}),(0,d.jsx)(p.Ke,{children:j?(0,d.jsx)(x,{round:a,ideaUuid:b,onAnswered:c}):(0,d.jsx)(w,{round:a})})]})})}function w({round:a}){let b=(0,g.c)("elaboration");return(0,d.jsx)("div",{className:"space-y-4 px-4 py-4",children:a.questions.map((c,e)=>{let f=c.answer?.selectedOptionId?c.options.find(a=>a.id===c.answer?.selectedOptionId):null,g=c.answer?.customText||f?.label||b("noAnswer"),h=t[c.category]||c.category;return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,d.jsxs)("span",{className:"text-xs leading-relaxed text-[#6B6B6B]",children:["Q: ",c.text]}),(0,d.jsx)("span",{className:"shrink-0 text-[11px] italic text-[#B0B0B0]",children:b(`category.${h}`)})]}),(0,d.jsxs)("p",{className:"mt-1 text-xs font-medium leading-relaxed text-[#2C2C2C]",children:["A: ",g]}),e<a.questions.length-1&&(0,d.jsx)("div",{className:"mt-4 h-px bg-[#F0EEEA]"})]},c.uuid)})})}function x({round:a,ideaUuid:b,onAnswered:c}){let f=(0,g.c)("elaboration"),[h,p]=(0,e.useState)(0),q=(0,e.useRef)(h),[u,v]=(0,e.useState)("right"),[w,x]=(0,e.useState)({}),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),C=(0,e.useCallback)((a,b)=>{v("left"===b?"right":"left"),p(a)},[]),D=a.questions,E=D[h],F=t[E.category]||E.category,G=(0,e.useCallback)((a,b)=>{if(x(c=>({...c,[a]:{questionId:a,selectedOptionId:b===s?null:b,customText:b===s?c[a]?.customText||"":null}})),b!==s){let a=Math.min(D.length-1,q.current+1);a!==q.current&&setTimeout(()=>C(a,"left"),200)}},[D.length,C]),H=(0,e.useCallback)((a,b)=>{x(c=>({...c,[a]:{...c[a],questionId:a,selectedOptionId:null,customText:b}}))},[]),I=D.filter(a=>a.required).every(a=>{let b=w[a.questionId];return!!b&&!!(b.selectedOptionId||b.customText&&b.customText.trim())}),J=async()=>{z(!0),B(null);let d=Object.values(w),e=await r(b,a.uuid,d);e.success?(await c(),z(!1)):(z(!1),B(e.error||f("submitFailed")))},K=(a=>{let b=w[a];return b?null===b.selectedOptionId&&null!==b.customText&&void 0!==b.customText?s:b.selectedOptionId||null:null})(E.questionId),L=K===s;return(0,d.jsxs)("div",{className:"overflow-hidden p-3.5",children:[(0,d.jsxs)("div",{className:"right"===u?"animate-in slide-in-from-right-4 duration-200":"animate-in slide-in-from-left-4 duration-200",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsx)("div",{className:"flex-1 text-sm text-[#6B6B6B]",children:E.text}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,d.jsx)(n.$,{variant:"ghost",size:"icon",onClick:()=>C(h-1,"right"),disabled:0===h,className:"h-7 w-7 text-[#6B6B6B] disabled:opacity-30",children:(0,d.jsx)(j.A,{className:"h-4 w-4"})}),(0,d.jsx)("span",{className:"text-xs text-[#9A9A9A]",children:f("navCounter",{current:h+1,total:D.length})}),(0,d.jsx)(n.$,{variant:"ghost",size:"icon",onClick:()=>C(h+1,"left"),disabled:h===D.length-1,className:"h-7 w-7 text-[#6B6B6B] disabled:opacity-30",children:(0,d.jsx)(i.A,{className:"h-4 w-4"})})]})]}),(0,d.jsxs)("div",{className:"mt-3",children:[E.options.map((a,b)=>{let c=K===a.id;return(0,d.jsxs)("div",{children:[(0,d.jsxs)(n.$,{variant:"ghost",onClick:()=>G(E.questionId,a.id),className:`flex w-full items-center justify-between px-3.5 py-3 h-auto text-left transition-colors rounded-none ${c?"bg-[#F7F6F3]":"hover:bg-[#FAF8F4]"}`,children:[(0,d.jsxs)("span",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-[#E5E0D8] text-xs font-medium text-[#5F5E5A]",children:b+1}),(0,d.jsxs)("span",{className:"flex flex-col items-start",children:[(0,d.jsx)("span",{className:"text-[13px] text-[#2C2C2A]",children:a.label}),a.description&&(0,d.jsx)("span",{className:"text-[11px] text-[#9A9A9A]",children:a.description})]})]}),c&&(0,d.jsx)(k.A,{className:"h-4 w-4 text-[#888780]"})]}),b<E.options.length-1&&(0,d.jsx)("div",{className:"h-px bg-[#F0EEEA]"})]},a.id)}),(0,d.jsx)("div",{className:"h-px bg-[#F0EEEA]"}),(0,d.jsxs)("div",{className:`flex w-full items-center gap-2.5 px-3.5 py-3 transition-colors ${L?"bg-[#F7F6F3]":"hover:bg-[#FAF8F4]"}`,children:[(0,d.jsx)("span",{className:"flex h-7 w-7 shrink-0 cursor-pointer items-center justify-center rounded-md bg-[#E5E0D8]",onClick:()=>G(E.questionId,s),children:(0,d.jsx)(l.A,{className:"h-3.5 w-3.5 text-[#B4B2A9]"})}),L?(0,d.jsx)(o.p,{type:"text",value:w[E.questionId]?.customText||"",onChange:a=>H(E.questionId,a.target.value),placeholder:f("somethingElse"),className:"flex-1 border-none bg-transparent text-[13px] text-[#2C2C2A] placeholder:italic placeholder:text-[#B4B2A9] shadow-none focus-visible:ring-0",autoFocus:!0}):(0,d.jsx)(n.$,{variant:"ghost",onClick:()=>G(E.questionId,s),className:"flex-1 justify-start text-left text-[13px] italic text-[#B4B2A9] h-auto p-0 hover:bg-transparent",children:f("somethingElse")})]})]})]},h),A&&(0,d.jsx)("div",{className:"mt-3 rounded-lg bg-destructive/10 p-2.5 text-[12px] text-destructive",children:A}),(0,d.jsxs)("div",{className:"mt-3 flex items-center justify-between",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1.5 text-[11px] text-[#B0B0B0]",children:[(0,d.jsx)("span",{className:"inline-block h-1.5 w-1.5 rounded-full bg-[#C67A52]"}),f(`category.${F}`)]}),(0,d.jsx)(n.$,{onClick:J,disabled:!I||y,className:"bg-[#C67A52] hover:bg-[#B56A42] text-white text-[13px]",children:y?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(m.A,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),f("submitting")]}):f("submitAnswers")})]})]})}},18789:(a,b,c)=>{c.d(b,{z:()=>e});var d=c(42377);let e=(0,d.createServerReference)("40f1d031575599d39a8547990fd376cc8de623255a",d.callServer,void 0,d.findSourceMapURL,"getElaborationAction")},20170:(a,b,c)=>{c.d(b,{T:()=>f});var d=c(10837);c(21968);var e=c(96307);function f({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,e.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...b})}},22110:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{em:()=>n,yu:()=>o,zS:()=>m});var e=c(2613);c(50785);var f=c(5562),g=c(9259),h=c(23733),i=c(71255),j=c(97307),k=c(12217),l=a([g,h,i]);async function m(a){let b=await (0,g.d)();if(!b)return{success:!1,error:"Unauthorized"};try{let c=await (0,h.t8)({companyUuid:b.companyUuid,ideaUuid:a});return{success:!0,data:c}}catch(a){return j.A.error({err:a},"Failed to get elaboration"),{success:!1,error:a instanceof Error?a.message:"Failed to get elaboration"}}}async function n(a,b,c){let d=await (0,g.d)();if(!d)return{success:!1,error:"Unauthorized"};try{let e=await (0,h.Rm)({companyUuid:d.companyUuid,ideaUuid:a,roundUuid:b,actorUuid:d.actorUuid,actorType:d.type,answers:c}),g=await i.z.idea.findFirst({where:{uuid:a,companyUuid:d.companyUuid}});return g&&((0,f.revalidatePath)(`/projects/${g.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${g.projectUuid}/ideas`)),{success:!0,data:e}}catch(a){return j.A.error({err:a},"Failed to submit elaboration answers"),{success:!1,error:a instanceof Error?a.message:"Failed to submit answers"}}}async function o(a,b){let c=await (0,g.d)();if(!c)return{success:!1,error:"Unauthorized"};try{await (0,h.Y_)({companyUuid:c.companyUuid,ideaUuid:a,actorUuid:c.actorUuid,actorType:c.type,reason:b});let d=await i.z.idea.findFirst({where:{uuid:a,companyUuid:c.companyUuid}});return d&&((0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas`)),{success:!0}}catch(a){return j.A.error({err:a},"Failed to skip elaboration"),{success:!1,error:a instanceof Error?a.message:"Failed to skip elaboration"}}}[g,h,i]=l.then?(await l)():l,(0,k.D)([m,n,o]),(0,e.A)(m,"40f1d031575599d39a8547990fd376cc8de623255a",null),(0,e.A)(n,"70d3900f5f1021cd79369856a120fc844bf3b45684",null),(0,e.A)(o,"602890c9422ea07604ec0728f0486c48f543fd709f",null),d()}catch(a){d(a)}})},23157:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Ax:()=>o,M$:()=>p,UD:()=>r,ZL:()=>q,qN:()=>n});var e=c(2613);c(50785);var f=c(5562),g=c(9259),h=c(61212),i=c(28774),j=c(67738),k=c(97307),l=c(12217),m=a([g,h,i,j]);async function n(a){let b=await (0,g.d)();if(!b)return{success:!1,error:"Unauthorized"};try{let c=await (0,h.MY)(b.companyUuid,a);if(!c)return{success:!1,error:"Idea not found"};if("elaborated"===c.status)return{success:!1,error:"Idea is not available for assignment"};return await (0,h.Xo)({ideaUuid:a,companyUuid:b.companyUuid,assigneeType:b.type,assigneeUuid:b.actorUuid,assignedByUuid:b.actorUuid}),await (0,j.createActivity)({companyUuid:b.companyUuid,projectUuid:c.projectUuid,targetType:"idea",targetUuid:a,actorType:b.type,actorUuid:b.actorUuid,action:"assigned",value:{assigneeType:b.type,assigneeUuid:b.actorUuid}}),(0,f.revalidatePath)(`/projects/${c.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${c.projectUuid}/ideas`),{success:!0}}catch(a){return k.A.error({err:a},"Failed to claim idea"),{success:!1,error:"Failed to claim idea"}}}async function o(a,b){let c=await (0,g.d)();if(!c||"user"!==c.type)return{success:!1,error:"Unauthorized"};try{let d=await (0,h.MY)(c.companyUuid,a);if(!d)return{success:!1,error:"Idea not found"};if("elaborated"===d.status)return{success:!1,error:"Idea is not available for assignment"};return await (0,h.Xo)({ideaUuid:a,companyUuid:c.companyUuid,assigneeType:"agent",assigneeUuid:b,assignedByUuid:c.actorUuid}),await (0,j.createActivity)({companyUuid:c.companyUuid,projectUuid:d.projectUuid,targetType:"idea",targetUuid:a,actorType:"user",actorUuid:c.actorUuid,action:"assigned",value:{assigneeType:"agent",assigneeUuid:b}}),(0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas`),{success:!0}}catch(a){return k.A.error({err:a},"Failed to claim idea to agent"),{success:!1,error:"Failed to claim idea"}}}async function p(a,b){let c=await (0,g.d)();if(!c||"user"!==c.type)return{success:!1,error:"Unauthorized"};try{let d=await (0,h.MY)(c.companyUuid,a);if(!d)return{success:!1,error:"Idea not found"};if("elaborated"===d.status)return{success:!1,error:"Idea is not available for assignment"};return await (0,h.Xo)({ideaUuid:a,companyUuid:c.companyUuid,assigneeType:"user",assigneeUuid:b,assignedByUuid:c.actorUuid}),(0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas`),{success:!0}}catch(a){return k.A.error({err:a},"Failed to claim idea to user"),{success:!1,error:"Failed to claim idea"}}}async function q(a){let b=await (0,g.d)();if(!b)return{success:!1,error:"Unauthorized"};try{let c=await (0,h.MY)(b.companyUuid,a);if(!c)return{success:!1,error:"Idea not found"};if("elaborated"===c.status)return{success:!1,error:"Idea cannot be released from current status"};return await (0,h.h_)(c.uuid),(0,f.revalidatePath)(`/projects/${c.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${c.projectUuid}/ideas`),{success:!0}}catch(a){return k.A.error({err:a},"Failed to release idea"),{success:!1,error:"Failed to release idea"}}}async function r(){let a=await (0,g.d)();if(!a||"user"!==a.type)return{agents:[],users:[]};try{let[b,c]=await Promise.all([(0,i.Ad)(a.companyUuid,"pm",a.actorUuid),(0,i.A8)(a.companyUuid)]);return{agents:b,users:c}}catch(a){return k.A.error({err:a},"Failed to get PM agents"),{agents:[],users:[]}}}[g,h,i,j]=m.then?(await m)():m,(0,l.D)([n,o,p,q,r]),(0,e.A)(n,"401a617abde35cf231d54433eb7d2172d5b67b29b5",null),(0,e.A)(o,"60ee973370af5656f1064f9a3434dd6b5c59f82be7",null),(0,e.A)(p,"60510837a34467ddf55ce1b8b60a51bee984841bad",null),(0,e.A)(q,"403412cf70fcbe757ea7aad982d57b94b8a60a35ce",null),(0,e.A)(r,"008416c6ee52d97fee682f61913c9a7e679a9a9fbe",null),d()}catch(a){d(a)}})},23733:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Rm:()=>i,Y_:()=>j,t8:()=>k});var e=c(71255),f=c(62729),g=c(85806),h=a([e,g]);async function i({companyUuid:a,ideaUuid:b,roundUuid:c,actorUuid:d,actorType:h,answers:i}){let j=await e.z.elaborationRound.findFirst({where:{uuid:c,ideaUuid:b,companyUuid:a},include:{questions:!0}});if(!j)throw Error("Elaboration round not found");if("pending_answers"!==j.status)throw Error(`Round is '${j.status}', expected 'pending_answers'`);let k=new Date;for(let a of i){let b=j.questions.find(b=>b.questionId===a.questionId);if(!b)throw Error(`Question '${a.questionId}' not found in round`);if(null!==a.selectedOptionId){if(!b.options.find(b=>b.id===a.selectedOptionId))throw Error(`Invalid option '${a.selectedOptionId}' for question '${a.questionId}'`)}else if(!a.customText?.trim())throw Error(`Question '${a.questionId}': custom text is required when no option is selected`);await e.z.elaborationQuestion.update({where:{uuid:b.uuid},data:{selectedOptionId:a.selectedOptionId,customText:a.customText,answeredAt:k,answeredByType:h,answeredByUuid:d}})}(await e.z.elaborationQuestion.findMany({where:{roundUuid:c}})).filter(a=>a.required).every(a=>null!==a.answeredAt)&&(await e.z.elaborationRound.update({where:{uuid:c},data:{status:"answered"}}),await e.z.idea.update({where:{uuid:b},data:{elaborationStatus:"validating"}}));let m=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a}});await g.f0.createActivity({companyUuid:a,projectUuid:m.projectUuid,targetType:"idea",targetUuid:b,actorType:h,actorUuid:d,action:"elaboration_answered",value:{roundNumber:j.roundNumber,answeredCount:i.length}}),f.B.emitChange({companyUuid:a,projectUuid:m.projectUuid,entityType:"idea",entityUuid:b,action:"updated"});let n=await e.z.elaborationRound.findUnique({where:{uuid:c},include:{questions:!0}});return l(n)}async function j({companyUuid:a,ideaUuid:b,actorUuid:c,actorType:d,reason:h}){let i=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a}});if(!i)throw Error("Idea not found");if(i.assigneeUuid!==c)throw Error("Only the assigned agent can skip elaboration");if("elaborating"!==i.status)throw Error(`Cannot skip elaboration from status '${i.status}'`);await e.z.idea.update({where:{uuid:b},data:{status:"elaborated",elaborationDepth:"minimal",elaborationStatus:"resolved"}}),await g.f0.createActivity({companyUuid:a,projectUuid:i.projectUuid,targetType:"idea",targetUuid:b,actorType:d,actorUuid:c,action:"elaboration_skipped",value:{reason:h}}),f.B.emitChange({companyUuid:a,projectUuid:i.projectUuid,entityType:"idea",entityUuid:b,action:"updated"})}async function k({companyUuid:a,ideaUuid:b}){let c=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a}});if(!c)throw Error("Idea not found");let d=await e.z.elaborationRound.findMany({where:{ideaUuid:b,companyUuid:a},include:{questions:!0},orderBy:{roundNumber:"asc"}}),f=d.flatMap(a=>a.questions),g=f.filter(a=>null!==a.answeredAt),h=d.filter(a=>"validated"===a.status),i=d.find(a=>"pending_answers"===a.status);return{ideaUuid:b,depth:c.elaborationDepth,status:c.elaborationStatus,rounds:d.map(l),summary:{totalQuestions:f.length,answeredQuestions:g.length,validatedRounds:h.length,pendingRound:i?.roundNumber||null}}}function l(a){return{uuid:a.uuid,roundNumber:a.roundNumber,status:a.status,createdBy:{type:a.createdByType,uuid:a.createdByUuid},validatedAt:a.validatedAt?.toISOString()||null,createdAt:a.createdAt.toISOString(),questions:a.questions.map(m)}}function m(a){return{uuid:a.uuid,questionId:a.questionId,text:a.text,category:a.category,options:a.options,required:a.required,answer:a.answeredAt?{selectedOptionId:a.selectedOptionId,customText:a.customText,answeredAt:a.answeredAt.toISOString(),answeredBy:{type:a.answeredByType,uuid:a.answeredByUuid}}:null,issue:a.issueType?{type:a.issueType,description:a.issueDescription||""}:null}}[e,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},27473:(a,b,c)=>{c.d(b,{hD:()=>h,OG:()=>k,YB:()=>m,mA:()=>l,FB:()=>j});var d=c(70936),e=c(7046),f=c(65582);let g=new(c(16698)).AsyncLocalStorage;class h extends Error{constructor(a,b,c=400,d){super(b),this.code=a,this.status=c,this.details=d,this.name="ApiError"}}let i={P2002:"Unique constraint violation",P2025:"Record not found",P2003:"Foreign key constraint violation"};function j(a){return async(b,c)=>{let j=crypto.randomUUID(),k=(0,f.q)({requestId:j});return g.run({requestId:j,logger:k},async()=>{try{return await a(b,c)}catch(a){if((g.getStore()?.logger??f.A).error({err:a},"API error"),a instanceof h)return d.NextResponse.json({success:!1,error:{code:a.code,message:a.message,details:a.details}},{status:a.status});if(a&&"object"==typeof a&&"code"in a){let b=i[a.code];if(b){if("P2025"===a.code)return e.sO.notFound();if("P2002"===a.code)return e.sO.conflict(b);return e.sO.database(b)}}if(a instanceof Error)return e.sO.internal("Internal server error");return e.sO.internal()}})}}async function k(a){try{return await a.json()}catch{throw new h("BAD_REQUEST","Invalid JSON body",400)}}function l(a){let b=new URL(a.url),c={};return b.searchParams.forEach((a,b)=>{c[b]=a}),c}function m(a){let b=l(a),c=Math.max(1,parseInt(b.page||"1",10)),d=Math.min(100,Math.max(1,parseInt(b.pageSize||"20",10)));return{page:c,pageSize:d,skip:(c-1)*d,take:d}}},28774:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A8:()=>p,Ad:()=>o,CG:()=>n,Iq:()=>m,RB:()=>k,Sn:()=>h,d5:()=>l,tN:()=>j,x4:()=>i});var e=c(71255),f=c(77219),g=a([e,f]);async function h({companyUuid:a,name:b,roles:c,ownerUuid:d,persona:f,systemPrompt:g}){return e.z.agent.create({data:{companyUuid:a,name:b,roles:c,ownerUuid:d,persona:f,systemPrompt:g},select:{uuid:!0,name:!0,roles:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,createdAt:!0}})}async function i(a,b,c){if(c&&!await e.z.agent.findFirst({where:{uuid:a,companyUuid:c},select:{uuid:!0}}))throw Error("Agent not found");return e.z.agent.update({where:{uuid:a},data:b,select:{uuid:!0,name:!0,roles:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,lastActiveAt:!0,createdAt:!0}})}async function j(a,b){return e.z.apiKey.updateMany({where:{agentUuid:a,revokedAt:null},data:{name:b}})}async function k(a){return e.z.agent.delete({where:{uuid:a}})}async function l(a,b,c,d){let f={companyUuid:a,revokedAt:null,...d&&{agent:{ownerUuid:d}}},[g,h]=await Promise.all([e.z.apiKey.findMany({where:f,skip:b,take:c,orderBy:{createdAt:"desc"},include:{agent:{select:{uuid:!0,name:!0,roles:!0,persona:!0}}}}),e.z.apiKey.count({where:f})]);return{apiKeys:g,total:h}}async function m({companyUuid:a,agentUuid:b,name:c,expiresAt:d}){let{key:g,hash:h,prefix:i}=(0,f.XH)();return{...await e.z.apiKey.create({data:{companyUuid:a,agentUuid:b,keyHash:h,keyPrefix:i,name:c,expiresAt:d},select:{uuid:!0,keyPrefix:!0,name:!0,expiresAt:!0,createdAt:!0}}),key:g}}async function n(a,b,c){return e.z.apiKey.findFirst({where:{uuid:b,companyUuid:a,...c&&{agent:{ownerUuid:c}}},select:{uuid:!0,agentUuid:!0,revokedAt:!0}})}async function o(a,b,c){return e.z.agent.findMany({where:{companyUuid:a,...c&&{ownerUuid:c},OR:[{roles:{has:b}},{roles:{has:`${b}_agent`}}]},select:{uuid:!0,name:!0,roles:!0,ownerUuid:!0},orderBy:{name:"asc"}})}async function p(a){return e.z.user.findMany({where:{companyUuid:a},select:{uuid:!0,name:!0,email:!0},orderBy:{name:"asc"}})}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},31138:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{JQ:()=>o,Z$:()=>p,w$:()=>n,zK:()=>q});var e=c(2613);c(50785);var f=c(5562),g=c(9259),h=c(61212),i=c(97879),j=c(466),k=c(97307),l=c(12217),m=a([g,h,i,j]);async function n(a){let b=await (0,g.d)();if(!b)return{success:!1,error:"Unauthorized"};try{let c=await (0,h.i1)({companyUuid:b.companyUuid,projectUuid:a.projectUuid,title:a.title,content:a.content||null,attachments:a.attachments||null,createdByUuid:b.actorUuid});return(0,f.revalidatePath)(`/projects/${a.projectUuid}/ideas`),{success:!0,ideaUuid:c.uuid}}catch(a){return k.A.error({err:a},"Failed to create idea"),{success:!1,error:"Failed to create idea"}}}async function o(a){let b=await (0,g.d)();if(!b)return{success:!1,error:"Unauthorized"};try{let c=await (0,h.JF)(a.ideaUuid,b.companyUuid,{title:a.title,content:a.content});return(0,f.revalidatePath)(`/projects/${a.projectUuid}/ideas`),{success:!0,idea:c}}catch(a){return k.A.error({err:a},"Failed to update idea"),{success:!1,error:"Failed to update idea"}}}async function p(a,b){if(!await (0,g.d)())return{success:!1,error:"Unauthorized"};try{return await (0,h.Nm)(a),(0,f.revalidatePath)(`/projects/${b}/ideas`),{success:!0}}catch(a){return k.A.error({err:a},"Failed to delete idea"),{success:!1,error:"Failed to delete idea"}}}async function q(a){let b=await (0,g.d)();if(!b)return{success:!1,error:"Unauthorized"};try{let{ideas:c}=await (0,h.BB)({companyUuid:b.companyUuid,projectUuid:a,skip:0,take:1e3}),d=c.map(a=>a.uuid),[e,f]=await Promise.all([d.length>0?(0,i.e1)(b.companyUuid,d):Promise.resolve({usedIdeas:[]}),d.length>0?(0,j.uA)(b.companyUuid,"idea",d):Promise.resolve({})]),g=e.usedIdeas.map(a=>a.uuid),k={};for(let a of e.usedIdeas)k[a.uuid]=a.proposalUuid;let l=c.map(a=>({...a,commentCount:f[a.uuid]||0}));return{success:!0,data:{ideas:l,usedIdeaUuids:g,ideaProposalMap:k}}}catch(a){return k.A.error({err:a},"Failed to fetch ideas"),{success:!1,error:"Failed to fetch ideas"}}}[g,h,i,j]=m.then?(await m)():m,(0,l.D)([n,o,p,q]),(0,e.A)(n,"40e6ae68c4b35afee4979600dba9f9ab11eeab5369",null),(0,e.A)(o,"40da9c2f3549a360f769975b5a4d3949293cae4580",null),(0,e.A)(p,"60f9f8caa58b86b0831d6c8e20fed84f4d1c0feefc",null),(0,e.A)(q,"409bf475361eb370f4354b0769530ad8868031cccb",null),d()}catch(a){d(a)}})},35568:(a,b,c)=>{c.d(b,{x:()=>e});var d=c(42377);let e=(0,d.createServerReference)("40621ceb201365f5a86001f682b43d02d29bc2a847",d.callServer,void 0,d.findSourceMapURL,"getIdeaActivitiesAction")},40869:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(77219);c(86099),c(71902);var e=c(86963),f=a([d,e]);[d,e]=f.then?(await f)():f,b()}catch(a){b(a)}})},53870:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Cs:()=>i,lU:()=>k,ui:()=>j});var e=c(71255),f=c(92633),g=a([e,f]);async function h(a,b=!1){let c=await (0,f.LS)(a.createdByUuid),d={uuid:a.uuid,type:a.type,title:a.title,version:a.version,proposalUuid:a.proposalUuid,createdBy:c,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()};return b&&void 0!==a.content&&(d.content=a.content),a.project&&(d.project=a.project),d}async function i(a,b){return e.z.document.findFirst({where:{uuid:b,companyUuid:a}})}async function j(a){let b=await e.z.document.create({data:{companyUuid:a.companyUuid,projectUuid:a.projectUuid,type:a.type,title:a.title,content:a.content,version:1,proposalUuid:a.proposalUuid,createdByUuid:a.createdByUuid},select:{uuid:!0,type:!0,title:!0,content:!0,version:!0,proposalUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}});return h(b,!0)}async function k(a,{title:b,content:c,incrementVersion:d}){let f={};void 0!==b&&(f.title=b),void 0!==c&&(f.content=c),d&&(f.version={increment:1});let g=await e.z.document.update({where:{uuid:a},data:f,include:{project:{select:{uuid:!0,name:!0}}}});return h(g,!0)}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},61212:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{BB:()=>o,JF:()=>s,MY:()=>q,Nm:()=>w,Xo:()=>t,Zl:()=>y,bY:()=>x,h_:()=>u,i1:()=>r});var e=c(71255),f=c(92633),g=c(62729);c(5134);var h=c(12735),i=c(34923),j=c(67738),k=c(97307),l=a([e,f,i,j]);function m(a){switch(a){case"assigned":case"in_progress":return"elaborating";case"proposal_created":case"completed":case"closed":case"pending_review":return"elaborated";default:return a}}async function n(a){let[b,c]=await Promise.all([(0,f.ir)(a.assigneeType,a.assigneeUuid,a.assignedAt,a.assignedByUuid),(0,f.LS)(a.createdByUuid)]);return{uuid:a.uuid,title:a.title,content:a.content,attachments:a.attachments,status:m(a.status),assignee:b,...a.project&&{project:a.project},...null!=a.elaborationStatus&&{elaborationStatus:a.elaborationStatus},...null!=a.elaborationDepth&&{elaborationDepth:a.elaborationDepth},createdBy:c,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}async function o({companyUuid:a,projectUuid:b,skip:c,take:d,status:f,assignedToMe:g,actorUuid:h,actorType:i}){let j={projectUuid:b,companyUuid:a,...f&&{status:f}};g&&h&&i&&(j.assigneeUuid=h,j.assigneeType=i);let[k,l]=await Promise.all([e.z.idea.findMany({where:j,skip:c,take:d,orderBy:{createdAt:"desc"},select:{uuid:!0,title:!0,content:!0,attachments:!0,status:!0,elaborationStatus:!0,elaborationDepth:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,assignedByUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}}),e.z.idea.count({where:j})]);return{ideas:await Promise.all(k.map(n)),total:l}}async function p(a,b){let c=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}}}});return c?n(c):null}async function q(a,b){return e.z.idea.findFirst({where:{uuid:b,companyUuid:a}})}async function r(a){let b=await e.z.idea.create({data:{companyUuid:a.companyUuid,projectUuid:a.projectUuid,title:a.title,content:a.content,attachments:a.attachments||void 0,status:"open",createdByUuid:a.createdByUuid},select:{uuid:!0,title:!0,content:!0,attachments:!0,status:!0,elaborationStatus:!0,elaborationDepth:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,assignedByUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}});return g.B.emitChange({companyUuid:a.companyUuid,projectUuid:a.projectUuid,entityType:"idea",entityUuid:b.uuid,action:"created"}),n(b)}async function s(a,b,c,d){let f=null;if(void 0!==c.content&&d){let b=await e.z.idea.findUnique({where:{uuid:a},select:{content:!0}});f=b?.content??null}let h=await e.z.idea.update({where:{uuid:a},data:c,include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:h.companyUuid,projectUuid:h.project.uuid,entityType:"idea",entityUuid:h.uuid,action:"updated"}),void 0!==c.content&&d&&c.content&&v(h.companyUuid,h.project.uuid,h.uuid,h.title,f,c.content,d.actorType,d.actorUuid).catch(a=>k.A.error({err:a},"Failed to process idea mentions")),n(h)}async function t({ideaUuid:a,companyUuid:b,assigneeType:c,assigneeUuid:d,assignedByUuid:f}){let h=await e.z.idea.findFirst({where:{uuid:a,companyUuid:b}});if(!h)throw Error("Idea not found");let i=m(h.status);if("elaborated"===i)throw Error("Cannot assign an elaborated Idea");let j="open"===h.status?"elaborating":h.status,k=await e.z.idea.update({where:{uuid:a},data:{status:j,assigneeType:c,assigneeUuid:d,assignedAt:new Date,assignedByUuid:f},include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:k.companyUuid,projectUuid:k.project.uuid,entityType:"idea",entityUuid:k.uuid,action:"updated"}),n(k)}async function u(a){let b=await e.z.idea.findUnique({where:{uuid:a}});if(!b)throw Error("Idea not found");let c=m(b.status);if("elaborated"===c)throw Error("Cannot release an elaborated Idea");let d=await e.z.idea.update({where:{uuid:a},data:{status:"open",assigneeType:null,assigneeUuid:null,assignedAt:null,assignedByUuid:null,elaborationDepth:null,elaborationStatus:null},include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:d.companyUuid,projectUuid:d.project.uuid,entityType:"idea",entityUuid:d.uuid,action:"updated"}),n(d)}async function v(a,b,c,d,e,f,g,h){let k=e?i.Xs(e):[],l=i.Xs(f),m=new Set(k.map(a=>`${a.type}:${a.uuid}`)),n=l.filter(a=>!m.has(`${a.type}:${a.uuid}`));if(0!==n.length)for(let e of(await i.AM({companyUuid:a,sourceType:"idea",sourceUuid:c,content:f,actorType:g,actorUuid:h,projectUuid:b,entityTitle:d}),n))(e.type!==g||e.uuid!==h)&&await j.createActivity({companyUuid:a,projectUuid:b,targetType:"idea",targetUuid:c,actorType:g,actorUuid:h,action:"mentioned",value:{mentionedType:e.type,mentionedUuid:e.uuid,mentionedName:e.displayName,sourceType:"idea",sourceUuid:c}})}async function w(a){let b=await e.z.idea.delete({where:{uuid:a}});return g.B.emitChange({companyUuid:b.companyUuid,projectUuid:b.projectUuid,entityType:"idea",entityUuid:b.uuid,action:"deleted"}),b}async function x(a,b,c,d,f="user"){let i=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}}}});if(!i)throw new h.hD("NOT_FOUND","Idea not found",404);let k=await e.z.project.findFirst({where:{uuid:c,companyUuid:a},select:{uuid:!0,name:!0}});if(!k)throw new h.hD("NOT_FOUND","Target project not found",404);if(i.projectUuid===c)throw new h.hD("BAD_REQUEST","Idea is already in the target project",400);let l=i.projectUuid;await e.z.$transaction(async d=>{await d.idea.update({where:{uuid:b},data:{projectUuid:c}}),await d.proposal.updateMany({where:{companyUuid:a,inputType:"idea",inputUuids:{array_contains:[b]},status:{in:["draft","pending"]}},data:{projectUuid:c}})}),await j.createActivity({companyUuid:a,projectUuid:c,targetType:"idea",targetUuid:b,actorType:f,actorUuid:d,action:"moved",value:{fromProjectUuid:l,fromProjectName:i.project.name,toProjectUuid:c,toProjectName:k.name}}),g.B.emitChange({companyUuid:a,projectUuid:l,entityType:"idea",entityUuid:b,action:"updated"}),g.B.emitChange({companyUuid:a,projectUuid:c,entityType:"idea",entityUuid:b,action:"updated"});let m=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}}}});return n(m)}async function y(a,b){let c=await p(a,b);if(!c)return null;let d=await e.z.proposal.findMany({where:{companyUuid:a,projectUuid:c.project?.uuid,status:{in:["approved","pending"]},inputUuids:{array_contains:[b]}},select:{uuid:!0,status:!0,createdAt:!0},orderBy:{createdAt:"desc"}}),f=d.find(a=>"approved"===a.status)??null,g=[];f&&(g=(await e.z.task.findMany({where:{companyUuid:a,proposalUuid:f.uuid},select:{status:!0}})).map(a=>a.status));let h=function(a){switch(m(a.ideaStatus)){case"open":default:return{derivedStatus:"todo",badgeHint:"open"};case"elaborating":if("pending_answers"===a.elaborationStatus)return{derivedStatus:"human_conduct_required",badgeHint:"answer_questions"};return{derivedStatus:"in_progress",badgeHint:"researching"};case"elaborated":if(a.hasPendingProposal)return{derivedStatus:"human_conduct_required",badgeHint:"review_proposal"};if(a.hasApprovedProposal){if(a.taskStatuses.some(a=>"to_verify"===a))return{derivedStatus:"human_conduct_required",badgeHint:"verify_work"};if(a.taskStatuses.length>0&&a.taskStatuses.every(a=>"done"===a||"closed"===a))return{derivedStatus:"done",badgeHint:"done"};return{derivedStatus:"in_progress",badgeHint:"building"}}return{derivedStatus:"in_progress",badgeHint:"planning"}}}({ideaStatus:c.status,elaborationStatus:c.elaborationStatus,hasPendingProposal:d.some(a=>"pending"===a.status),hasApprovedProposal:!!f,taskStatuses:g});return{...c,...h}}[e,f,i,j]=l.then?(await l)():l,d()}catch(a){d(a)}})},66643:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{BB:()=>q,JF:()=>u,MY:()=>s,Nm:()=>y,Q7:()=>r,XB:()=>C,bO:()=>o,bY:()=>z,h_:()=>w,i1:()=>t,w9:()=>v,xo:()=>A});var e=c(52618),f=c(76872),g=c(42558),h=c(48873),i=c(27473),j=c(90494),k=c(88437),l=c(65582),m=a([e,f,j,k]);[e,f,j,k]=m.then?(await m)():m;let D={open:["elaborating"],elaborating:["elaborated"],elaborated:[]};function n(a){switch(a){case"assigned":case"in_progress":return"elaborating";case"proposal_created":case"completed":case"closed":case"pending_review":return"elaborated";default:return a}}function o(a,b){return(D[n(a)]||[]).includes(b)}async function p(a){let[b,c]=await Promise.all([(0,f.ir)(a.assigneeType,a.assigneeUuid,a.assignedAt,a.assignedByUuid),(0,f.LS)(a.createdByUuid)]);return{uuid:a.uuid,title:a.title,content:a.content,attachments:a.attachments,status:n(a.status),assignee:b,...a.project&&{project:a.project},...null!=a.elaborationStatus&&{elaborationStatus:a.elaborationStatus},...null!=a.elaborationDepth&&{elaborationDepth:a.elaborationDepth},createdBy:c,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}async function q({companyUuid:a,projectUuid:b,skip:c,take:d,status:f,assignedToMe:g,actorUuid:h,actorType:i}){let j={projectUuid:b,companyUuid:a,...f&&{status:f}};g&&h&&i&&(j.assigneeUuid=h,j.assigneeType=i);let[k,l]=await Promise.all([e.z.idea.findMany({where:j,skip:c,take:d,orderBy:{createdAt:"desc"},select:{uuid:!0,title:!0,content:!0,attachments:!0,status:!0,elaborationStatus:!0,elaborationDepth:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,assignedByUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}}),e.z.idea.count({where:j})]);return{ideas:await Promise.all(k.map(p)),total:l}}async function r(a,b){let c=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}}}});return c?p(c):null}async function s(a,b){return e.z.idea.findFirst({where:{uuid:b,companyUuid:a}})}async function t(a){let b=await e.z.idea.create({data:{companyUuid:a.companyUuid,projectUuid:a.projectUuid,title:a.title,content:a.content,attachments:a.attachments||void 0,status:"open",createdByUuid:a.createdByUuid},select:{uuid:!0,title:!0,content:!0,attachments:!0,status:!0,elaborationStatus:!0,elaborationDepth:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,assignedByUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}});return g.B.emitChange({companyUuid:a.companyUuid,projectUuid:a.projectUuid,entityType:"idea",entityUuid:b.uuid,action:"created"}),p(b)}async function u(a,b,c,d){let f=null;if(void 0!==c.content&&d){let b=await e.z.idea.findUnique({where:{uuid:a},select:{content:!0}});f=b?.content??null}let h=await e.z.idea.update({where:{uuid:a},data:c,include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:h.companyUuid,projectUuid:h.project.uuid,entityType:"idea",entityUuid:h.uuid,action:"updated"}),void 0!==c.content&&d&&c.content&&x(h.companyUuid,h.project.uuid,h.uuid,h.title,f,c.content,d.actorType,d.actorUuid).catch(a=>l.A.error({err:a},"Failed to process idea mentions")),p(h)}async function v({ideaUuid:a,companyUuid:b,assigneeType:c,assigneeUuid:d,assignedByUuid:f}){let i=await e.z.idea.findFirst({where:{uuid:a,companyUuid:b}});if(!i||i.assigneeUuid)throw new h.Yy("Idea");let j=n(i.status);if("elaborated"===j)throw Error("Cannot claim an elaborated Idea");let k=await e.z.idea.update({where:{uuid:a},data:{status:"elaborating",assigneeType:c,assigneeUuid:d,assignedAt:new Date,assignedByUuid:f},include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:k.companyUuid,projectUuid:k.project.uuid,entityType:"idea",entityUuid:k.uuid,action:"updated"}),p(k)}async function w(a){let b=await e.z.idea.findUnique({where:{uuid:a}});if(!b)throw Error("Idea not found");let c=n(b.status);if("elaborated"===c)throw Error("Cannot release an elaborated Idea");let d=await e.z.idea.update({where:{uuid:a},data:{status:"open",assigneeType:null,assigneeUuid:null,assignedAt:null,assignedByUuid:null,elaborationDepth:null,elaborationStatus:null},include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:d.companyUuid,projectUuid:d.project.uuid,entityType:"idea",entityUuid:d.uuid,action:"updated"}),p(d)}async function x(a,b,c,d,e,f,g,h){let i=e?j.Xs(e):[],l=j.Xs(f),m=new Set(i.map(a=>`${a.type}:${a.uuid}`)),n=l.filter(a=>!m.has(`${a.type}:${a.uuid}`));if(0!==n.length)for(let e of(await j.AM({companyUuid:a,sourceType:"idea",sourceUuid:c,content:f,actorType:g,actorUuid:h,projectUuid:b,entityTitle:d}),n))(e.type!==g||e.uuid!==h)&&await k.createActivity({companyUuid:a,projectUuid:b,targetType:"idea",targetUuid:c,actorType:g,actorUuid:h,action:"mentioned",value:{mentionedType:e.type,mentionedUuid:e.uuid,mentionedName:e.displayName,sourceType:"idea",sourceUuid:c}})}async function y(a){let b=await e.z.idea.delete({where:{uuid:a}});return g.B.emitChange({companyUuid:b.companyUuid,projectUuid:b.projectUuid,entityType:"idea",entityUuid:b.uuid,action:"deleted"}),b}async function z(a,b,c,d,f="user"){let h=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}}}});if(!h)throw new i.hD("NOT_FOUND","Idea not found",404);let j=await e.z.project.findFirst({where:{uuid:c,companyUuid:a},select:{uuid:!0,name:!0}});if(!j)throw new i.hD("NOT_FOUND","Target project not found",404);if(h.projectUuid===c)throw new i.hD("BAD_REQUEST","Idea is already in the target project",400);let l=h.projectUuid;await e.z.$transaction(async d=>{await d.idea.update({where:{uuid:b},data:{projectUuid:c}}),await d.proposal.updateMany({where:{companyUuid:a,inputType:"idea",inputUuids:{array_contains:[b]},status:{in:["draft","pending"]}},data:{projectUuid:c}})}),await k.createActivity({companyUuid:a,projectUuid:c,targetType:"idea",targetUuid:b,actorType:f,actorUuid:d,action:"moved",value:{fromProjectUuid:l,fromProjectName:h.project.name,toProjectUuid:c,toProjectName:j.name}}),g.B.emitChange({companyUuid:a,projectUuid:l,entityType:"idea",entityUuid:b,action:"updated"}),g.B.emitChange({companyUuid:a,projectUuid:c,entityType:"idea",entityUuid:b,action:"updated"});let m=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}}}});return p(m)}function A(a){switch(n(a.ideaStatus)){case"open":default:return{derivedStatus:"todo",badgeHint:"open"};case"elaborating":if("pending_answers"===a.elaborationStatus)return{derivedStatus:"human_conduct_required",badgeHint:"answer_questions"};return{derivedStatus:"in_progress",badgeHint:"researching"};case"elaborated":if(a.hasPendingProposal)return{derivedStatus:"human_conduct_required",badgeHint:"review_proposal"};if(a.hasApprovedProposal){if(a.taskStatuses.some(a=>"to_verify"===a))return{derivedStatus:"human_conduct_required",badgeHint:"verify_work"};if(a.taskStatuses.length>0&&a.taskStatuses.every(a=>"done"===a||"closed"===a))return{derivedStatus:"done",badgeHint:"done"};return{derivedStatus:"in_progress",badgeHint:"building"}}return{derivedStatus:"in_progress",badgeHint:"planning"}}}async function B(a,b){let c=await e.z.idea.findMany({where:{companyUuid:a,projectUuid:b},select:{uuid:!0,title:!0,status:!0,elaborationStatus:!0,createdAt:!0,updatedAt:!0},orderBy:{createdAt:"desc"}}),d=await e.z.proposal.findMany({where:{companyUuid:a,projectUuid:b,status:{in:["approved","pending"]}},select:{uuid:!0,status:!0,inputUuids:!0,createdAt:!0},orderBy:{createdAt:"desc"}}),f=new Map,g=new Set,h=new Map;for(let a of d){let b=a.inputUuids;if(Array.isArray(b)){for(let c of b)if(h.set(c,(h.get(c)??0)+1),"pending"===a.status)g.add(c);else if("approved"===a.status){let b=f.get(c);(!b||a.createdAt>b.createdAt)&&f.set(c,{uuid:a.uuid,createdAt:a.createdAt})}}}let i=[...new Set([...f.values()].map(a=>a.uuid))],j=new Map;if(i.length>0)for(let b of(await e.z.task.findMany({where:{companyUuid:a,proposalUuid:{in:i}},select:{proposalUuid:!0,status:!0}}))){if(!b.proposalUuid)continue;let a=j.get(b.proposalUuid)||[];a.push(b.status),j.set(b.proposalUuid,a)}return c.map(a=>{let c=f.get(a.uuid),d=c&&j.get(c.uuid)||[],{derivedStatus:e,badgeHint:i}=A({ideaStatus:a.status,elaborationStatus:a.elaborationStatus,hasPendingProposal:g.has(a.uuid),hasApprovedProposal:!!c,taskStatuses:d});return{uuid:a.uuid,title:a.title,status:a.status,derivedStatus:e,badgeHint:i,createdAt:a.createdAt,updatedAt:a.updatedAt,projectUuid:b,proposalCount:h.get(a.uuid)??0,taskCount:d.length}})}let E=["todo","in_progress","human_conduct_required","done"];async function C(a,b){let c=await B(a,b),d={},e={};for(let a of E)d[a]=[],e[a]=0;for(let a of c){let b=a.derivedStatus,c={uuid:a.uuid,title:a.title,status:a.status,derivedStatus:b,badgeHint:a.badgeHint,createdAt:a.createdAt.toISOString()};d[b]&&(d[b].push(c),e[b]++)}return{groups:d,counts:e}}d()}catch(a){d(a)}})},69391:(a,b,c)=>{c.d(b,{Z:()=>e});var d=c(42377);let e=(0,d.createServerReference)("60f9f8caa58b86b0831d6c8e20fed84f4d1c0feefc",d.callServer,void 0,d.findSourceMapURL,"deleteIdeaAction")},71902:(a,b,c)=>{c(68537),c(97307)},76605:(a,b,c)=>{c.d(b,{i:()=>u});var d=c(10837),e=c(21968),f=c(1007),g=c(9222),h=c(10694),i=c(86460),j=c(16235),k=c(97443),l=c(42424),m=c(2852),n=c(11225),o=c(55732),p=c(42377);p.callServer,p.findSourceMapURL;let q=(0,p.createServerReference)("401a617abde35cf231d54433eb7d2172d5b67b29b5",p.callServer,void 0,p.findSourceMapURL,"claimIdeaAction"),r=(0,p.createServerReference)("60ee973370af5656f1064f9a3434dd6b5c59f82be7",p.callServer,void 0,p.findSourceMapURL,"claimIdeaToAgentAction"),s=(0,p.createServerReference)("60510837a34467ddf55ce1b8b60a51bee984841bad",p.callServer,void 0,p.findSourceMapURL,"claimIdeaToUserAction"),t=(0,p.createServerReference)("403412cf70fcbe757ea7aad982d57b94b8a60a35ce",p.callServer,void 0,p.findSourceMapURL,"releaseIdeaAction");function u({idea:a,projectUuid:b,currentUserUuid:c,onClose:p}){let u=(0,g.c)(),v=(0,f.useRouter)(),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)("self"),[A,B]=(0,e.useState)(""),[C,D]=(0,e.useState)(""),[E,F]=(0,e.useState)([]),[G,H]=(0,e.useState)([]),[I,J]=(0,e.useState)(!0),K=!!a.assignee,L=async()=>{let b;if(x(!0),"self"===y)b=await q(a.uuid);else if("agent"===y&&A)b=await r(a.uuid,A);else if("user"===y&&C)b=await s(a.uuid,C);else{if("release"!==y)return void x(!1);b=await t(a.uuid)}x(!1),b?.success&&(v.refresh(),p())},M="self"===y||"agent"===y&&A||"user"===y&&C||"release"===y&&K;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"fixed inset-0 z-50 bg-black/40",onClick:p}),(0,d.jsxs)("div",{className:"fixed left-1/2 top-1/2 z-50 w-[400px] -translate-x-1/2 -translate-y-1/2 rounded-2xl bg-white shadow-xl border border-[#E5E0D8]",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-[#E5E0D8] px-6 py-5",children:[(0,d.jsx)("h2",{className:"text-base font-semibold text-[#2C2C2C]",children:u("ideas.assignIdea")}),(0,d.jsx)("button",{onClick:p,className:"text-[#9A9A9A] hover:text-[#6B6B6B] transition-colors",children:(0,d.jsx)(h.A,{className:"h-5 w-5"})})]}),(0,d.jsxs)("div",{className:"p-6 space-y-4",children:[(0,d.jsxs)("div",{className:"rounded-lg bg-[#FAF8F4] p-3",children:[(0,d.jsx)("p",{className:"text-[13px] font-medium text-[#2C2C2C]",children:a.title}),a.content&&(0,d.jsx)("p",{className:"mt-1 text-[11px] text-[#6B6B6B] line-clamp-2",children:a.content})]}),K&&(0,d.jsx)("div",{className:"rounded-lg bg-[#E3F2FD] p-3",children:(0,d.jsxs)("p",{className:"text-xs text-[#1976D2]",children:[u("common.currentAssignee"),": ",(0,d.jsx)("span",{className:"font-medium",children:a.assignee?.name})]})}),(0,d.jsx)("p",{className:"text-[13px] text-[#6B6B6B]",children:u("ideas.selectIdeaAssignee")}),I?(0,d.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,d.jsx)(i.A,{className:"h-6 w-6 animate-spin text-[#9A9A9A]"})}):(0,d.jsxs)(n.z,{value:y,onValueChange:a=>z(a),className:"space-y-3",children:[(0,d.jsxs)("div",{className:`rounded-[10px] p-4 transition-colors cursor-pointer ${"self"===y?"bg-[#FDF8F6] border-2 border-[#C67A52]":"bg-white border border-[#E5E0D8] hover:border-[#C67A52]/50"}`,onClick:()=>z("self"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)(n.C,{value:"self",id:"idea-self",className:"border-[#C67A52] text-[#C67A52]"}),(0,d.jsx)(m.J,{htmlFor:"idea-self",className:"text-sm font-medium text-[#2C2C2C] cursor-pointer",children:u("assign.assignToMyself")})]}),(0,d.jsx)("p",{className:"mt-2 ml-6 text-xs text-[#6B6B6B] leading-relaxed",children:u("ideas.assignToMyselfIdeaDesc")})]}),(0,d.jsxs)("div",{className:`rounded-[10px] p-4 transition-colors ${"agent"===y?"bg-[#FDF8F6] border-2 border-[#C67A52]":"bg-white border border-[#E5E0D8]"}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5 cursor-pointer",onClick:()=>z("agent"),children:[(0,d.jsx)(n.C,{value:"agent",id:"idea-agent",className:"border-[#C67A52] text-[#C67A52]"}),(0,d.jsx)(m.J,{htmlFor:"idea-agent",className:"text-sm font-medium text-[#2C2C2C] cursor-pointer",children:u("ideas.orAssignToPmAgent")})]}),(0,d.jsx)("p",{className:"mt-2 ml-6 text-xs text-[#6B6B6B] leading-relaxed",children:u("ideas.onlySelectedPmAgentCanWork")}),"agent"===y&&(0,d.jsx)("div",{className:"mt-3 ml-6",children:(0,d.jsxs)(o.l6,{value:A,onValueChange:B,children:[(0,d.jsx)(o.bq,{className:"w-full border-[#E5E0D8]",children:(0,d.jsx)(o.yv,{placeholder:u("ideas.selectPmAgent")})}),(0,d.jsx)(o.gC,{children:E.length>0?E.map(a=>(0,d.jsx)(o.eb,{value:a.uuid,children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(j.A,{className:"h-4 w-4 text-[#C67A52]"}),(0,d.jsx)("span",{children:a.name})]})},a.uuid)):(0,d.jsx)("div",{className:"px-3 py-2 text-xs text-[#9A9A9A]",children:u("ideas.noPmAgentsAvailable")})})]})})]}),(0,d.jsxs)("div",{className:`rounded-[10px] p-4 transition-colors ${"user"===y?"bg-[#FDF8F6] border-2 border-[#C67A52]":"bg-white border border-[#E5E0D8]"}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5 cursor-pointer",onClick:()=>z("user"),children:[(0,d.jsx)(n.C,{value:"user",id:"idea-user",className:"border-[#C67A52] text-[#C67A52]"}),(0,d.jsx)(m.J,{htmlFor:"idea-user",className:"text-sm font-medium text-[#2C2C2C] cursor-pointer",children:u("assign.orAssignToUser")})]}),"user"===y&&(0,d.jsx)("div",{className:"mt-3 ml-6",children:(0,d.jsxs)(o.l6,{value:C,onValueChange:D,children:[(0,d.jsx)(o.bq,{className:"w-full border-[#E5E0D8]",children:(0,d.jsx)(o.yv,{placeholder:u("tasks.selectUser")})}),(0,d.jsx)(o.gC,{children:G.length>0?G.map(a=>(0,d.jsx)(o.eb,{value:a.uuid,children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(k.A,{className:"h-4 w-4 text-[#6B6B6B]"}),(0,d.jsx)("span",{children:a.name||a.email})]})},a.uuid)):(0,d.jsx)("div",{className:"px-3 py-2 text-xs text-[#9A9A9A]",children:u("tasks.noUsersAvailable")})})]})})]}),K&&(0,d.jsxs)("div",{className:`rounded-[10px] p-4 transition-colors cursor-pointer ${"release"===y?"bg-[#FDF8F6] border-2 border-[#C67A52]":"bg-white border border-[#E5E0D8] hover:border-[#C67A52]/50"}`,onClick:()=>z("release"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)(n.C,{value:"release",id:"idea-release",className:"border-[#C67A52] text-[#C67A52]"}),(0,d.jsx)(m.J,{htmlFor:"idea-release",className:"text-sm font-medium text-[#2C2C2C] cursor-pointer",children:u("assign.releaseAssignee")})]}),(0,d.jsx)("p",{className:"mt-2 ml-6 text-xs text-[#6B6B6B] leading-relaxed",children:u("ideas.releaseIdeaAssigneeDesc")})]})]})]}),(0,d.jsxs)("div",{className:"flex items-center justify-end gap-4 rounded-b-2xl bg-white px-6 py-6 border-t border-[#E5E0D8]",children:[(0,d.jsx)(l.$,{variant:"outline",onClick:p,disabled:w,className:"border-[#E5E0D8]",children:u("common.cancel")}),(0,d.jsx)(l.$,{onClick:L,disabled:w||!M,className:"bg-[#C67A52] hover:bg-[#B56A42] text-white",children:w?(0,d.jsx)(i.A,{className:"h-4 w-4 animate-spin"}):u("release"===y?"common.release":"common.assign")})]})]})]})}},77219:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{XH:()=>h});var e=c(55511),f=c(71255);c(97307);var g=a([f]);f=(g.then?(await g)():g)[0];let i="cho_";function h(){var a;let b=(0,e.randomBytes)(32).toString("base64url"),c=`${i}${b}`,d=(a=c,(0,e.createHash)("sha256").update(a).digest("hex")),f=`${i}${b.slice(0,4)}...${b.slice(-4)}`;return{key:c,hash:d,prefix:f}}d()}catch(a){d(a)}})},78714:(a,b,c)=>{c.d(b,{J:()=>e});var d=c(42377);let e=(0,d.createServerReference)("40da9c2f3549a360f769975b5a4d3949293cae4580",d.callServer,void 0,d.findSourceMapURL,"updateIdeaAction")},80041:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{x:()=>l});var e=c(2613);c(50785);var f=c(9259),g=c(67738),h=c(61212),i=c(97307),j=c(12217),k=a([f,g,h]);async function l(a){let b=await (0,f.d)();if(!b)return{activities:[],total:0};try{let c=await (0,h.MY)(b.companyUuid,a);if(!c)return{activities:[],total:0};return await (0,g.listActivitiesWithActorNames)({companyUuid:b.companyUuid,projectUuid:c.projectUuid,targetType:"idea",targetUuid:a,skip:0,take:50})}catch(a){return i.A.error({err:a},"Failed to get idea activities"),{activities:[],total:0}}}[f,g,h]=k.then?(await k)():k,(0,j.D)([l]),(0,e.A)(l,"40621ceb201365f5a86001f682b43d02d29bc2a847",null),d()}catch(a){d(a)}})},82658:(a,b,c)=>{c.d(b,{Ke:()=>i,Nt:()=>g,R6:()=>h});var d=c(10837),e=c(70952),f=c(96307);function g({...a}){return(0,d.jsx)(e.Root,{"data-slot":"collapsible",...a})}function h({...a}){return(0,d.jsx)(e.Trigger,{"data-slot":"collapsible-trigger",...a})}function i({className:a,...b}){return(0,d.jsx)(e.Content,{"data-slot":"collapsible-content",className:(0,f.cn)("overflow-hidden data-[state=open]:animate-[collapsible-down_250ms_ease-in-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-in-out]",a),...b})}},82870:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(71255),e=c(40869),f=c(92633),g=a([d,e,f]);[d,e,f]=g.then?(await g)():g,b()}catch(a){b(a)}})},85806:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{f0:()=>l});var e=c(33994),f=c(61212),g=c(50530),h=c(53870),i=c(97879),j=c(28774),k=c(466),l=c(67738),m=c(82870),n=c(23733),o=a([e,f,g,h,i,j,k,l,m,n]);[e,f,g,h,i,j,k,l,m,n]=o.then?(await o)():o,d()}catch(a){d(a)}})},86099:(a,b,c)=>{c(33513);let d={BAD_REQUEST:"BAD_REQUEST",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",NOT_FOUND:"NOT_FOUND",CONFLICT:"CONFLICT",VALIDATION_ERROR:"VALIDATION_ERROR",ALREADY_CLAIMED:"ALREADY_CLAIMED",NOT_CLAIMED:"NOT_CLAIMED",INVALID_STATUS_TRANSITION:"INVALID_STATUS_TRANSITION",PERMISSION_DENIED:"PERMISSION_DENIED",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR"};d.BAD_REQUEST,d.UNAUTHORIZED,d.FORBIDDEN,d.NOT_FOUND,d.CONFLICT,d.VALIDATION_ERROR,d.ALREADY_CLAIMED,d.NOT_CLAIMED,d.INVALID_STATUS_TRANSITION,d.PERMISSION_DENIED,d.INTERNAL_ERROR,d.DATABASE_ERROR}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=3088,exports.ids=[3088],exports.modules={2852:(a,b,c)=>{c.d(b,{J:()=>g});var d=c(10837);c(21968);var e=c(13277),f=c(96307);function g({className:a,...b}){return(0,d.jsx)(e.Root,{"data-slot":"label",className:(0,f.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",a),...b})}},8495:(a,b,c)=>{c.d(b,{S:()=>h});var d=c(10837);c(21968);var e=c(9810),f=c(25711),g=c(96307);function h({className:a,...b}){return(0,d.jsx)(f.Root,{"data-slot":"checkbox",className:(0,g.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...b,children:(0,d.jsx)(f.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:(0,d.jsx)(e.A,{className:"size-3.5"})})})}},20170:(a,b,c)=>{c.d(b,{T:()=>f});var d=c(10837);c(21968);var e=c(96307);function f({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,e.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...b})}},25711:(a,b,c)=>{c.r(b),c.d(b,{Checkbox:()=>v,CheckboxIndicator:()=>x,Indicator:()=>x,Root:()=>v,createCheckboxScope:()=>p,unstable_BubbleInput:()=>z,unstable_CheckboxBubbleInput:()=>z,unstable_CheckboxProvider:()=>s,unstable_CheckboxTrigger:()=>u,unstable_Provider:()=>s,unstable_Trigger:()=>u});var d=c(21968),e=c(96090),f=c(42990),g=c(22546),h=c(15035),i=c(29851),j=c(7579),k=c(5030),l=c(16551),m=c(10837),n="Checkbox",[o,p]=(0,f.A)(n),[q,r]=o(n);function s(a){let{__scopeCheckbox:b,checked:c,children:e,defaultChecked:f,disabled:g,form:i,name:j,onCheckedChange:k,required:l,value:o="on",internal_do_not_use_render:p}=a,[r,s]=(0,h.i)({prop:c,defaultProp:f??!1,onChange:k,caller:n}),[t,u]=d.useState(null),[v,w]=d.useState(null),x=d.useRef(!1),y=!t||!!i||!!t.closest("form"),z={checked:r,disabled:g,setChecked:s,control:t,setControl:u,name:j,form:i,value:o,hasConsumerStoppedPropagationRef:x,required:l,defaultChecked:!A(f)&&f,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,m.jsx)(q,{scope:b,...z,children:"function"==typeof p?p(z):e})}var t="CheckboxTrigger",u=d.forwardRef(({__scopeCheckbox:a,onKeyDown:b,onClick:c,...f},h)=>{let{control:i,value:j,disabled:k,checked:n,required:o,setControl:p,setChecked:q,hasConsumerStoppedPropagationRef:s,isFormControl:u,bubbleInput:v}=r(t,a),w=(0,e.s)(h,p),x=d.useRef(n);return d.useEffect(()=>{let a=i?.form;if(a){let b=()=>q(x.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[i,q]),(0,m.jsx)(l.sG.button,{type:"button",role:"checkbox","aria-checked":A(n)?"mixed":n,"aria-required":o,"data-state":B(n),"data-disabled":k?"":void 0,disabled:k,value:j,...f,ref:w,onKeyDown:(0,g.mK)(b,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,g.mK)(c,a=>{q(a=>!!A(a)||!a),v&&u&&(s.current=a.isPropagationStopped(),s.current||a.stopPropagation())})})});u.displayName=t;var v=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,name:d,checked:e,defaultChecked:f,required:g,disabled:h,value:i,onCheckedChange:j,form:k,...l}=a;return(0,m.jsx)(s,{__scopeCheckbox:c,checked:e,defaultChecked:f,disabled:h,required:g,onCheckedChange:j,name:d,form:k,value:i,internal_do_not_use_render:({isFormControl:a})=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(u,{...l,ref:b,__scopeCheckbox:c}),a&&(0,m.jsx)(z,{__scopeCheckbox:c})]})})});v.displayName=n;var w="CheckboxIndicator",x=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,forceMount:d,...e}=a,f=r(w,c);return(0,m.jsx)(k.C,{present:d||A(f.checked)||!0===f.checked,children:(0,m.jsx)(l.sG.span,{"data-state":B(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:b,style:{pointerEvents:"none",...a.style}})})});x.displayName=w;var y="CheckboxBubbleInput",z=d.forwardRef(({__scopeCheckbox:a,...b},c)=>{let{control:f,hasConsumerStoppedPropagationRef:g,checked:h,defaultChecked:k,required:n,disabled:o,name:p,value:q,form:s,bubbleInput:t,setBubbleInput:u}=r(y,a),v=(0,e.s)(c,u),w=(0,i.Z)(h),x=(0,j.X)(f);d.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!g.current;if(w!==h&&a){let c=new Event("click",{bubbles:b});t.indeterminate=A(h),a.call(t,!A(h)&&h),t.dispatchEvent(c)}},[t,w,h,g]);let z=d.useRef(!A(h)&&h);return(0,m.jsx)(l.sG.input,{type:"checkbox","aria-hidden":!0,defaultChecked:k??z.current,required:n,disabled:o,name:p,value:q,form:s,...b,tabIndex:-1,ref:v,style:{...b.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function A(a){return"indeterminate"===a}function B(a){return A(a)?"indeterminate":a?"checked":"unchecked"}z.displayName=y},28774:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A8:()=>p,Ad:()=>o,CG:()=>n,Iq:()=>m,RB:()=>k,Sn:()=>h,d5:()=>l,tN:()=>j,x4:()=>i});var e=c(71255),f=c(77219),g=a([e,f]);async function h({companyUuid:a,name:b,roles:c,ownerUuid:d,persona:f,systemPrompt:g}){return e.z.agent.create({data:{companyUuid:a,name:b,roles:c,ownerUuid:d,persona:f,systemPrompt:g},select:{uuid:!0,name:!0,roles:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,createdAt:!0}})}async function i(a,b,c){if(c&&!await e.z.agent.findFirst({where:{uuid:a,companyUuid:c},select:{uuid:!0}}))throw Error("Agent not found");return e.z.agent.update({where:{uuid:a},data:b,select:{uuid:!0,name:!0,roles:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,lastActiveAt:!0,createdAt:!0}})}async function j(a,b){return e.z.apiKey.updateMany({where:{agentUuid:a,revokedAt:null},data:{name:b}})}async function k(a){return e.z.agent.delete({where:{uuid:a}})}async function l(a,b,c,d){let f={companyUuid:a,revokedAt:null,...d&&{agent:{ownerUuid:d}}},[g,h]=await Promise.all([e.z.apiKey.findMany({where:f,skip:b,take:c,orderBy:{createdAt:"desc"},include:{agent:{select:{uuid:!0,name:!0,roles:!0,persona:!0}}}}),e.z.apiKey.count({where:f})]);return{apiKeys:g,total:h}}async function m({companyUuid:a,agentUuid:b,name:c,expiresAt:d}){let{key:g,hash:h,prefix:i}=(0,f.XH)();return{...await e.z.apiKey.create({data:{companyUuid:a,agentUuid:b,keyHash:h,keyPrefix:i,name:c,expiresAt:d},select:{uuid:!0,keyPrefix:!0,name:!0,expiresAt:!0,createdAt:!0}}),key:g}}async function n(a,b,c){return e.z.apiKey.findFirst({where:{uuid:b,companyUuid:a,...c&&{agent:{ownerUuid:c}}},select:{uuid:!0,agentUuid:!0,revokedAt:!0}})}async function o(a,b,c){return e.z.agent.findMany({where:{companyUuid:a,...c&&{ownerUuid:c},OR:[{roles:{has:b}},{roles:{has:`${b}_agent`}}]},select:{uuid:!0,name:!0,roles:!0,ownerUuid:!0},orderBy:{name:"asc"}})}async function p(a){return e.z.user.findMany({where:{companyUuid:a},select:{uuid:!0,name:!0,email:!0},orderBy:{name:"asc"}})}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},29806:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(56556).A)("shield-alert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]])},30356:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$y:()=>q,Fv:()=>o,IF:()=>n,KT:()=>r,Zh:()=>m,fG:()=>s,p3:()=>p});var e=c(2613);c(50785);var f=c(4687),g=c(9259),h=c(28774),i=c(30457),j=c(97307),k=c(12217),l=a([g,h,i]);async function m(){let a=await (0,g.d)();a||(0,f.redirect)("/login");try{let{apiKeys:b}=await (0,h.d5)(a.companyUuid,0,100,a.actorUuid),c=b.map(a=>({uuid:a.uuid,keyPrefix:a.keyPrefix,name:a.agent?.name||a.name,lastUsed:null,expiresAt:a.expiresAt?.toISOString()||null,createdAt:a.createdAt.toISOString(),roles:a.agent?.roles||[],agentUuid:a.agent?.uuid||"",persona:a.agent?.persona||null}));return{success:!0,data:c}}catch(a){return j.A.error({err:a},"Failed to fetch API keys"),{success:!1,error:"Failed to fetch API keys"}}}async function n(a){let b=await (0,g.d)();b||(0,f.redirect)("/login");try{let c=await (0,h.Sn)({companyUuid:b.companyUuid,name:a.name,roles:a.roles,ownerUuid:b.actorUuid,persona:a.persona}),d=await (0,h.Iq)({companyUuid:b.companyUuid,agentUuid:c.uuid,name:a.name});return{success:!0,key:d.key,agentUuid:c.uuid}}catch(a){return j.A.error({err:a},"Failed to create agent and API key"),{success:!1,error:"Failed to create API key"}}}async function o(a){let b=await (0,g.d)();b||(0,f.redirect)("/login");try{let c=await (0,h.CG)(b.companyUuid,a,b.actorUuid);if(!c)return{success:!1,error:"API key not found"};return await (0,h.RB)(c.agentUuid),{success:!0}}catch(a){return j.A.error({err:a},"Failed to delete API key"),{success:!1,error:"Failed to delete API key"}}}async function p(a){let b=await (0,g.d)();b||(0,f.redirect)("/login");try{let c=await (0,i.Xo)(b.companyUuid,a);return{success:!0,data:c}}catch(a){return j.A.error({err:a},"Failed to fetch agent sessions"),{success:!1,error:"Failed to fetch agent sessions"}}}async function q(a){let b=await (0,g.d)();b||(0,f.redirect)("/login");try{return await (0,i.Vu)(b.companyUuid,a),{success:!0}}catch(a){return j.A.error({err:a},"Failed to close session"),{success:!1,error:"Failed to close session"}}}async function r(a){let b=await (0,g.d)();b||(0,f.redirect)("/login");try{return await (0,i.aQ)(b.companyUuid,a),{success:!0}}catch(a){return j.A.error({err:a},"Failed to reopen session"),{success:!1,error:"Failed to reopen session"}}}async function s(a){let b=await (0,g.d)();if(!b)return{success:!1,error:"Unauthorized"};try{return await (0,h.x4)(a.agentUuid,{name:a.name,roles:a.roles,persona:a.persona},b.companyUuid),await (0,h.tN)(a.agentUuid,a.name),{success:!0}}catch(a){return j.A.error({err:a},"Failed to update agent"),{success:!1,error:"Failed to update agent"}}}[g,h,i]=l.then?(await l)():l,(0,k.D)([m,n,o,p,q,r,s]),(0,e.A)(m,"008a9ed79223f10e9ca1caf48896019c7f21b38add",null),(0,e.A)(n,"402bcf93c4635f677664128715686b5f7b959926a3",null),(0,e.A)(o,"40086b2399a617bc51f91f8fa80d162db83b8ffa54",null),(0,e.A)(p,"40bb0cba40b62f2f1b8d0baae9f78962afc6007829",null),(0,e.A)(q,"401096824323ce6398812a63797ef04ca13d22dd6e",null),(0,e.A)(r,"40618d133401eae3416249f788b6bdf364e634cd7f",null),(0,e.A)(s,"4095b0073985001eb5860517ce180c577d6c3cf380",null),d()}catch(a){d(a)}})},35198:(a,b,c)=>{c.d(b,{BT:()=>i,Wu:()=>k,X9:()=>j,ZB:()=>h,Zp:()=>f,aR:()=>g,wL:()=>l});var d=c(10837);c(21968);var e=c(96307);function f({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card",className:(0,e.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",a),...b})}function g({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-header",className:(0,e.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...b})}function h({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-title",className:(0,e.cn)("leading-none font-semibold",a),...b})}function i({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-description",className:(0,e.cn)("text-muted-foreground text-sm",a),...b})}function j({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-action",className:(0,e.cn)("col-start-2 row-span-2 row-start-1 self-start justify-self-end",a),...b})}function k({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-content",className:(0,e.cn)("px-6",a),...b})}function l({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-footer",className:(0,e.cn)("flex items-center px-6 [.border-t]:pt-6",a),...b})}},38957:(a,b,c)=>{c.d(b,{I:()=>e});var d=c(42377);let e=(0,d.createServerReference)("402bcf93c4635f677664128715686b5f7b959926a3",d.callServer,void 0,d.findSourceMapURL,"createAgentAndKeyAction")},55775:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(56556).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},67328:(a,b,c)=>{c.d(b,{Y:()=>t});var d=c(10837),e=c(21968),f=c(9222),g=c(42424),h=c(9994),i=c(2852),j=c(20170),k=c(8495),l=c(9810),m=c(10694),n=c(29806),o=c(55775),p=c(54722);let q=[{id:"dev_pm",labelKey:"personas.devPm",descKey:"personas.devPmDesc"},{id:"full_pm",labelKey:"personas.fullPm",descKey:"personas.fullPmDesc"},{id:"simple_pm",labelKey:"personas.simplePm",descKey:"personas.simplePmDesc"}],r=[{id:"senior_dev",labelKey:"personas.seniorDev",descKey:"personas.seniorDevDesc"},{id:"fullstack_dev",labelKey:"personas.fullstackDev",descKey:"personas.fullstackDevDesc"},{id:"pragmatic_dev",labelKey:"personas.pragmaticDev",descKey:"personas.pragmaticDevDesc"}],s=[{id:"careful_admin",labelKey:"personas.carefulAdmin",descKey:"personas.carefulAdminDesc"},{id:"efficient_admin",labelKey:"personas.efficientAdmin",descKey:"personas.efficientAdminDesc"}];function t({onAgentCreated:a,createAgentAndKey:b,onClose:c}){let t=(0,f.c)(),[u,v]=(0,e.useState)(""),[w,x]=(0,e.useState)([]),[y,z]=(0,e.useState)(""),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(null),[G,H]=(0,e.useState)(!1),I=a=>{x(b=>{let c=b.includes(a)?b.filter(b=>b!==a):[...b,a];return"admin_agent"===a&&b.includes(a)&&B(!1),c})},J=async c=>{if(c.preventDefault(),u&&0!==w.length){D(!0);try{let c=await b({name:u,roles:w,persona:y||null});c.success&&c.key?(F(c.key),a({uuid:c.agentUuid||"",name:u,roles:w},c.key)):p.q.error("Failed to create API key:",c.error)}catch(a){p.q.error("Failed to create API key:",a)}finally{D(!1)}}},K=async a=>{try{await navigator.clipboard.writeText(a),H(!0),setTimeout(()=>H(!1),2e3)}catch(a){p.q.error("Failed to copy to clipboard:",a)}},L=()=>{v(""),x([]),z(""),F(null),B(!1),c?.()},M=w.includes("admin_agent");return E?(0,d.jsxs)("div",{className:"p-6",children:[(0,d.jsxs)("div",{className:"mb-4 flex items-center gap-2 text-green-600",children:[(0,d.jsx)(l.A,{className:"h-5 w-5"}),(0,d.jsx)("span",{className:"font-medium",children:t("settings.apiKeyCreated")})]}),(0,d.jsx)("p",{className:"mb-4 text-sm text-muted-foreground",children:t("settings.apiKeyCreatedDesc")}),(0,d.jsxs)("div",{className:"mb-4 flex items-center gap-2",children:[(0,d.jsx)("code",{className:"flex-1 rounded bg-foreground px-3 py-2 font-mono text-sm text-background",children:E}),(0,d.jsx)(g.$,{variant:"outline",size:"sm",onClick:()=>K(E),children:G?t("common.copied"):t("common.copy")})]}),(0,d.jsx)(g.$,{onClick:L,className:"w-full",children:t("common.done")})]}):(0,d.jsxs)("form",{onSubmit:J,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-6 py-5",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold text-foreground",children:t("settings.createApiKey")}),c&&(0,d.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",onClick:L,className:"h-8 w-8",children:(0,d.jsx)(m.A,{className:"h-4 w-4"})})]}),(0,d.jsxs)("div",{className:"space-y-5 p-6",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(i.J,{htmlFor:"keyName",className:"text-[13px]",children:t("settings.name")}),(0,d.jsx)(h.p,{id:"keyName",value:u,onChange:a=>v(a.target.value),placeholder:t("settings.namePlaceholder"),className:"border-[#E5E0D8]",required:!0})]}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)(i.J,{className:"text-[13px]",children:t("settings.agentRoles")}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:t("settings.agentRolesDesc")}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)(g.$,{type:"button",variant:"outline",onClick:()=>I("developer_agent"),className:`flex h-auto w-full items-start justify-start gap-3 rounded-lg border p-3 text-left transition-colors ${w.includes("developer_agent")?"border-primary bg-primary/5":"border-border hover:border-primary"}`,children:[(0,d.jsx)("div",{className:`mt-0.5 flex h-[18px] w-[18px] flex-shrink-0 items-center justify-center rounded ${w.includes("developer_agent")?"bg-primary":"border-2 border-border"}`,children:w.includes("developer_agent")&&(0,d.jsx)(l.A,{className:"h-3 w-3 text-primary-foreground",strokeWidth:3})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:t("settings.developerAgent")}),(0,d.jsx)("div",{className:"text-xs font-normal text-muted-foreground",children:t("settings.developerAgentDesc")})]})]}),(0,d.jsxs)(g.$,{type:"button",variant:"outline",onClick:()=>I("pm_agent"),className:`flex h-auto w-full items-start justify-start gap-3 rounded-lg border p-3 text-left transition-colors ${w.includes("pm_agent")?"border-primary bg-primary/5":"border-border hover:border-primary"}`,children:[(0,d.jsx)("div",{className:`mt-0.5 flex h-[18px] w-[18px] flex-shrink-0 items-center justify-center rounded ${w.includes("pm_agent")?"bg-primary":"border-2 border-border"}`,children:w.includes("pm_agent")&&(0,d.jsx)(l.A,{className:"h-3 w-3 text-primary-foreground",strokeWidth:3})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:t("settings.pmAgent")}),(0,d.jsx)("div",{className:"text-xs font-normal text-muted-foreground",children:t("settings.pmAgentDesc")})]})]}),(0,d.jsxs)(g.$,{type:"button",variant:"outline",onClick:()=>I("admin_agent"),className:`flex h-auto w-full items-start justify-start gap-3 rounded-lg border p-3 text-left transition-colors ${w.includes("admin_agent")?"border-red-500 bg-red-50 dark:bg-red-950":"border-border hover:border-red-400"}`,children:[(0,d.jsx)("div",{className:`mt-0.5 flex h-[18px] w-[18px] flex-shrink-0 items-center justify-center rounded ${w.includes("admin_agent")?"bg-red-500":"border-2 border-red-300"}`,children:w.includes("admin_agent")&&(0,d.jsx)(l.A,{className:"h-3 w-3 text-white",strokeWidth:3})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-red-600 dark:text-red-400",children:[(0,d.jsx)(n.A,{className:"h-4 w-4"}),t("settings.adminAgent")]}),(0,d.jsx)("div",{className:"text-xs font-normal text-red-500/80 dark:text-red-400/80",children:t("settings.adminAgentDesc")})]})]})]}),M&&(0,d.jsx)("div",{className:"mt-3 rounded-lg border border-red-300 bg-red-50 p-4 dark:border-red-800 dark:bg-red-950",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)(o.A,{className:"h-5 w-5 flex-shrink-0 text-red-600 dark:text-red-400"}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("p",{className:"text-sm font-semibold text-red-700 dark:text-red-300",children:t("settings.adminWarningTitle")}),(0,d.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",children:t("settings.adminWarningDesc")}),(0,d.jsxs)("ul",{className:"list-inside list-disc space-y-1 text-xs text-red-600 dark:text-red-400",children:[(0,d.jsx)("li",{children:t("settings.adminWarningItem1")}),(0,d.jsx)("li",{children:t("settings.adminWarningItem2")}),(0,d.jsx)("li",{children:t("settings.adminWarningItem3")}),(0,d.jsx)("li",{children:t("settings.adminWarningItem4")})]}),(0,d.jsxs)("div",{className:"mt-3 flex cursor-pointer items-center gap-2",children:[(0,d.jsx)(k.S,{id:"adminConfirm",checked:A,onCheckedChange:a=>B(!0===a),className:"border-red-300 data-[state=checked]:bg-red-600 data-[state=checked]:border-red-600"}),(0,d.jsx)(i.J,{htmlFor:"adminConfirm",className:"cursor-pointer text-xs font-medium text-red-700 dark:text-red-300",children:t("settings.adminConfirmCheckbox")})]})]})]})})]}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)(i.J,{className:"text-[13px]",children:t("settings.agentPersona")}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:w.length>0?t("settings.agentPersonaDesc"):t("settings.agentPersonaDescNoRoles")}),w.length>0&&(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:(()=>{let a=[];return w.includes("pm_agent")&&a.push(...q),w.includes("developer_agent")&&a.push(...r),w.includes("admin_agent")&&a.push(...s),a})().map(a=>(0,d.jsx)(g.$,{type:"button",variant:y===t(a.descKey)?"default":"outline",size:"sm",onClick:()=>{z(t(a.descKey))},className:"rounded-full",children:t(a.labelKey)},a.id))}),(0,d.jsx)(j.T,{value:y,onChange:a=>z(a.target.value),placeholder:t("settings.personaPlaceholder"),rows:4}),(0,d.jsx)("p",{className:"text-[11px] text-muted-foreground",children:w.length>0?t("settings.personaHint"):t("settings.personaHintNoRoles")})]})]}),(0,d.jsxs)("div",{className:"flex justify-end gap-3 border-t border-border px-6 py-4",children:[c&&(0,d.jsx)(g.$,{type:"button",variant:"outline",onClick:L,children:t("common.cancel")}),(0,d.jsx)(g.$,{type:"submit",disabled:!u||0===w.length||C||M&&!A,className:M?"bg-red-600 hover:bg-red-700":"",children:C?t("settings.creating"):t("settings.createApiKey")})]})]})}},77219:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{XH:()=>h});var e=c(55511),f=c(71255);c(97307);var g=a([f]);f=(g.then?(await g)():g)[0];let i="cho_";function h(){var a;let b=(0,e.randomBytes)(32).toString("base64url"),c=`${i}${b}`,d=(a=c,(0,e.createHash)("sha256").update(a).digest("hex")),f=`${i}${b.slice(0,4)}...${b.slice(-4)}`;return{key:c,hash:d,prefix:f}}d()}catch(a){d(a)}})}};