@chorus-aidlc/chorus 0.18.0 → 0.19.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 (329) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +341 -339
  3. package/.next/standalone/.next/app-path-routes-manifest.json +41 -41
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +27 -27
  6. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +2 -2
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  46. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  50. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  51. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
  54. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  55. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/admin/companies.html +2 -2
  57. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  58. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/admin.html +2 -2
  60. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  61. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
  82. package/.next/standalone/.next/server/app/api/daemon/control/route.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.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/agent-cwd-options/route_client-reference-manifest.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_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/index.html +2 -2
  161. package/.next/standalone/.next/server/app/index.rsc +2 -2
  162. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/login/admin.html +2 -2
  164. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  165. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/login/callback.html +2 -2
  167. package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
  168. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
  171. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
  172. package/.next/standalone/.next/server/app/login.html +2 -2
  173. package/.next/standalone/.next/server/app/login.rsc +2 -2
  174. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  175. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  176. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  178. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  179. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/app/projects.html +2 -2
  181. package/.next/standalone/.next/server/app/projects.rsc +3 -3
  182. package/.next/standalone/.next/server/app/settings.html +2 -2
  183. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  184. package/.next/standalone/.next/server/app-paths-manifest.json +41 -41
  185. package/.next/standalone/.next/server/chunks/1318.js +1 -1
  186. package/.next/standalone/.next/server/chunks/{5201.js → 1416.js} +2 -2
  187. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  188. package/.next/standalone/.next/server/chunks/{4810.js → 1683.js} +1 -1
  189. package/.next/standalone/.next/server/chunks/2572.js +2 -2
  190. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  191. package/.next/standalone/.next/server/chunks/3112.js +1 -1
  192. package/.next/standalone/.next/server/chunks/3341.js +1 -0
  193. package/.next/standalone/.next/server/chunks/3419.js +1 -1
  194. package/.next/standalone/.next/server/chunks/5245.js +1 -1
  195. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  196. package/.next/standalone/.next/server/chunks/6506.js +1 -1
  197. package/.next/standalone/.next/server/chunks/6607.js +1 -0
  198. package/.next/standalone/.next/server/chunks/6737.js +1 -1
  199. package/.next/standalone/.next/server/chunks/6753.js +3 -3
  200. package/.next/standalone/.next/server/chunks/679.js +1 -1
  201. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  202. package/.next/standalone/.next/server/chunks/7400.js +1 -0
  203. package/.next/standalone/.next/server/chunks/7530.js +1 -1
  204. package/.next/standalone/.next/server/chunks/7578.js +2 -2
  205. package/.next/standalone/.next/server/chunks/7789.js +1 -0
  206. package/.next/standalone/.next/server/chunks/8185.js +1 -0
  207. package/.next/standalone/.next/server/chunks/920.js +1 -1
  208. package/.next/standalone/.next/server/chunks/9213.js +1 -1
  209. package/.next/standalone/.next/server/chunks/9378.js +1 -1
  210. package/.next/standalone/.next/server/chunks/{3619.js → 9848.js} +2 -2
  211. package/.next/standalone/.next/server/chunks/9931.js +1 -1
  212. package/.next/standalone/.next/server/instrumentation.js +1 -1
  213. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  214. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  215. package/.next/standalone/.next/server/pages/404.html +2 -2
  216. package/.next/standalone/.next/server/pages/500.html +1 -1
  217. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  219. package/.next/standalone/.next/static/chunks/11595.f080a1d100972212.js +1 -0
  220. package/.next/standalone/.next/static/chunks/{29305-f587e7e81bc0b200.js → 17562-56f932146e9e6c94.js} +4 -4
  221. package/.next/standalone/.next/static/chunks/18751-3616e33050e9611e.js +1 -0
  222. package/.next/standalone/.next/static/chunks/26020-7b4756ba0aa906cf.js +1 -0
  223. package/.next/standalone/.next/static/chunks/33456.20313bd67a5c41cc.js +1 -0
  224. package/.next/standalone/.next/static/chunks/44437-d13183f50281116f.js +1 -0
  225. package/.next/standalone/.next/static/chunks/4860.3b555a398cdffb19.js +1 -0
  226. package/.next/standalone/.next/static/chunks/59713-426f81b6576173d8.js +1 -0
  227. package/.next/standalone/.next/static/chunks/60351-bdef539874e5027e.js +1 -0
  228. package/.next/standalone/.next/static/chunks/79919-1e7e294a06f2c4a0.js +1 -0
  229. package/.next/standalone/.next/static/chunks/94643-e54eff17e941a93b.js +1 -0
  230. package/.next/standalone/.next/static/chunks/99373.b8a95d1bec5ad4e7.js +1 -0
  231. package/.next/standalone/.next/static/chunks/99733-5a2e39f57fbda32d.js +1 -0
  232. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-072a6b8f0a48b1b6.js +1 -0
  233. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-198a3ff89ae871b9.js +1 -0
  234. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-a506de82e8997714.js +1 -0
  235. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-800a979f12b73f27.js → page-dc54fafa22d21863.js} +1 -1
  236. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/{page-34de35f75aa71f6d.js → page-6eb5d3cb036a78e0.js} +1 -1
  237. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-69c6f0190623e19b.js +1 -0
  238. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-2a52f747e6fac5a7.js +1 -0
  239. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-22cce567a85ea291.js +1 -0
  240. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-349b0977f3c6209a.js → page-301f21a3ae52e318.js} +1 -1
  241. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-be43cb06112fce12.js → page-dd123990c14e9768.js} +1 -1
  242. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-548231f8c9856489.js +1 -0
  243. package/.next/standalone/.next/static/chunks/app/onboarding/{page-c0090caae202eae5.js → page-5914ff3d878a3c34.js} +1 -1
  244. package/.next/standalone/.next/static/chunks/{webpack-cfb63dd1b416c92e.js → webpack-de8a36d232a91d6b.js} +1 -1
  245. package/.next/standalone/.next/static/css/44f13b43a3de716d.css +1 -0
  246. package/.next/standalone/package.json +1 -1
  247. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  248. package/.next/standalone/public/chorus-plugin/agents/code-reviewer.md +63 -6
  249. package/.next/standalone/public/chorus-plugin/agents/proposal-reviewer.md +60 -6
  250. package/.next/standalone/public/chorus-plugin/agents/task-reviewer.md +75 -8
  251. package/.next/standalone/public/chorus-plugin/bin/chorus-api.sh +1 -1
  252. package/.next/standalone/public/chorus-plugin/bin/on-pre-spawn-agent.sh +22 -9
  253. package/.next/standalone/public/chorus-plugin/bin/on-subagent-start.sh +44 -29
  254. package/.next/standalone/public/chorus-plugin/bin/on-subagent-stop.sh +100 -29
  255. package/.next/standalone/public/chorus-plugin/bin/test-syntax.sh +6 -2
  256. package/.next/standalone/public/chorus-plugin/bin/tests/test-subagent-session-name.sh +599 -0
  257. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  258. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +1 -1
  259. package/.next/standalone/public/chorus-plugin/skills/chorus-cli/SKILL.md +1 -1
  260. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  261. package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +1 -1
  262. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  263. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  264. package/.next/standalone/public/chorus-plugin/skills/orchestrate/SKILL.md +1 -1
  265. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  266. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  267. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  268. package/.next/standalone/public/chorus-plugin/skills/spec-lite/SKILL.md +1 -1
  269. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
  270. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-code-reviewer.json +56 -1
  271. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-proposal-reviewer.json +79 -1
  272. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-task-reviewer.json +56 -1
  273. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
  274. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-cli/SKILL.md +1 -1
  275. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +1 -1
  276. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +1 -1
  277. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
  278. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +1 -1
  279. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-orchestrate/SKILL.md +1 -1
  280. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
  281. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
  282. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
  283. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-spec-lite/SKILL.md +1 -1
  284. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +1 -1
  285. package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
  286. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +60 -4
  287. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +58 -5
  288. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +72 -6
  289. package/README.ja.md +3 -1
  290. package/README.ko.md +3 -1
  291. package/README.md +3 -1
  292. package/README.zh.md +3 -1
  293. package/chorus.mjs +30 -2
  294. package/cli/child-exit.mjs +77 -0
  295. package/cli/claude-spawner.mjs +4 -1
  296. package/cli/codex-spawner.mjs +4 -1
  297. package/cli/control-handler.mjs +104 -6
  298. package/cli/daemon-rest-client.mjs +98 -29
  299. package/cli/daemon.mjs +5 -1
  300. package/cli/dsh-spawner.mjs +4 -1
  301. package/cli/kiro-spawner.mjs +4 -1
  302. package/cli/pi-spawner.mjs +4 -1
  303. package/package.json +1 -1
  304. package/.next/standalone/.next/server/chunks/109.js +0 -1
  305. package/.next/standalone/.next/server/chunks/1496.js +0 -1
  306. package/.next/standalone/.next/server/chunks/731.js +0 -1
  307. package/.next/standalone/.next/server/chunks/7857.js +0 -1
  308. package/.next/standalone/.next/static/chunks/11595.0afa1a540f681fb4.js +0 -1
  309. package/.next/standalone/.next/static/chunks/22705-324a191727ae45b7.js +0 -1
  310. package/.next/standalone/.next/static/chunks/33456.4a5f4712a7e78d8f.js +0 -1
  311. package/.next/standalone/.next/static/chunks/44216-3876e84f5b02d355.js +0 -1
  312. package/.next/standalone/.next/static/chunks/4860.5719e32b95be2d93.js +0 -1
  313. package/.next/standalone/.next/static/chunks/6528-a8a562ef7d26bb43.js +0 -1
  314. package/.next/standalone/.next/static/chunks/67439-7b339b28ed0ecfc6.js +0 -1
  315. package/.next/standalone/.next/static/chunks/79919-ae8bd8d8ec1e38ce.js +0 -1
  316. package/.next/standalone/.next/static/chunks/82203-4ce5926624df7ed0.js +0 -1
  317. package/.next/standalone/.next/static/chunks/94643-37ac7b8ef8ea5e75.js +0 -1
  318. package/.next/standalone/.next/static/chunks/99373.6c1509bfaf599741.js +0 -1
  319. package/.next/standalone/.next/static/chunks/99775-697e82ee04eac6b1.js +0 -1
  320. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-2fda722cdace8147.js +0 -1
  321. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-b45c42c536eff64b.js +0 -1
  322. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-792aba7fd6b6daa3.js +0 -1
  323. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-a16002aa2a911619.js +0 -1
  324. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-e8030824994edf35.js +0 -1
  325. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-4f7f1ddbaf79be8f.js +0 -1
  326. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-6916e1abab42a6e6.js +0 -1
  327. package/.next/standalone/.next/static/css/75c761a5428611fa.css +0 -1
  328. /package/.next/standalone/.next/static/{IxKVu5zkFPTjSKAUR99yH → Pmji9kEq8T2lM6AKQkZji}/_buildManifest.js +0 -0
  329. /package/.next/standalone/.next/static/{IxKVu5zkFPTjSKAUR99yH → Pmji9kEq8T2lM6AKQkZji}/_ssgManifest.js +0 -0
@@ -40,6 +40,26 @@
40
40
 
41
41
  const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
42
42
 
43
+ // Bounded retry policy for the TERMINAL turn-advance edge only (fix-phantom-running-turn).
44
+ // A lost terminal report is the one failure that leaves a permanently phantom `running`
45
+ // turn, so it — and only it — is worth retrying. Fixed constants on purpose: one more
46
+ // configuration knob buys nothing here.
47
+ const TERMINAL_TURN_ADVANCE_ATTEMPTS = 3;
48
+ const TERMINAL_TURN_ADVANCE_DELAYS_MS = [500, 2000];
49
+
50
+ /** Real-time delay; tests inject their own so they never sleep for real. */
51
+ const realSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
52
+
53
+ /**
54
+ * A failure is retryable when repeating it can plausibly succeed: a network-level failure
55
+ * (no HTTP response at all), a `429`, or any `5xx`. Every `4xx` is a server VERDICT
56
+ * (invalid_transition, not_found, auth) — repeating it cannot make it true.
57
+ * @param {number|null} status
58
+ */
59
+ function isRetryableFailure(status) {
60
+ return status === null || status === 429 || status >= 500;
61
+ }
62
+
43
63
  /**
44
64
  * @typedef {Object} DaemonRestResult
45
65
  * @property {boolean} ok True only on a 2xx response (and, for reads, a
@@ -70,6 +90,8 @@ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
70
90
  * executionState, reportInterrupt, readPendingTurns)
71
91
  * require it; a null value skips the call (logged).
72
92
  * fetchImpl?: typeof fetch, Injectable for tests (defaults to global fetch).
93
+ * sleep?: (ms: number) => Promise<void>, Injectable retry delay (defaults to setTimeout).
94
+ * Only the terminal turn-advance edge retries.
73
95
  * logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
74
96
  * }} opts
75
97
  * @returns {{
@@ -88,6 +110,8 @@ export function createDaemonRestClient(opts) {
88
110
  const getConnectionUuid = opts.getConnectionUuid ?? (() => null);
89
111
  const fetchImpl = opts.fetchImpl ?? globalThis.fetch;
90
112
  const logger = opts.logger ?? NOOP_LOGGER;
113
+ // Injectable retry delay so tests assert the schedule without spending real seconds.
114
+ const sleepImpl = opts.sleep ?? realSleep;
91
115
 
92
116
  const jsonHeaders = {
93
117
  Authorization: `Bearer ${apiKey}`,
@@ -111,41 +135,71 @@ export function createDaemonRestClient(opts) {
111
135
  * `<op> request failed` / `<op> returned <status>` core, so the
112
136
  * failing entity stays visible in the log without disturbing the
113
137
  * established op-prefixed message.
138
+ * @param {boolean} [readData] Parse the response envelope's `data` on success.
139
+ * @param {{ attempts: number, delaysMs: number[], sleep?: (ms: number) => Promise<void> }|null} [retry]
140
+ * Optional bounded retry policy. Absent/null = today's exact
141
+ * single-shot behaviour (used by every op but the terminal
142
+ * turn-advance edge).
114
143
  * @returns {Promise<DaemonRestResult>}
115
144
  */
116
- async function post(op, path, body, successLog, context = "", readData = false) {
117
- let response;
118
- try {
119
- response = await fetchImpl(`${url}${path}`, {
120
- method: "POST",
121
- headers: jsonHeaders,
122
- body: JSON.stringify(body),
123
- });
124
- } catch (err) {
125
- // Network-level failure (DNS, connection refused, abort, …). Surface WITH cause.
126
- const error = `${op} request failed${context}: ${err}`;
127
- logger.warn(`[Chorus] ${error}`);
128
- return { ok: false, status: null, error };
129
- }
130
- if (!response.ok) {
131
- // Non-2xx. Surface WITH the status so a 4xx/5xx is debuggable.
132
- const error = `${op} returned ${response.status}${context}`;
133
- logger.warn(`[Chorus] ${error}`);
134
- return { ok: false, status: response.status, error };
135
- }
136
- let data;
137
- if (readData) {
145
+ async function post(op, path, body, successLog, context = "", readData = false, retry = null) {
146
+ const attempts = retry ? retry.attempts : 1;
147
+ const delaysMs = retry?.delaysMs ?? [];
148
+ // Named distinctly from the module-closure `sleepImpl` so this local never reads as a
149
+ // shadow: callers with a retry policy pass their own sleep explicitly.
150
+ const retrySleep = retry?.sleep ?? realSleep;
151
+
152
+ let failure;
153
+ for (let attempt = 1; attempt <= attempts; attempt += 1) {
154
+ failure = undefined;
155
+ let response;
138
156
  try {
139
- const parsed = await response.json();
140
- data = parsed && typeof parsed === "object" ? parsed.data : undefined;
157
+ response = await fetchImpl(`${url}${path}`, {
158
+ method: "POST",
159
+ headers: jsonHeaders,
160
+ body: JSON.stringify(body),
161
+ });
141
162
  } catch (err) {
142
- // Mixed-version fallback: older servers may return an empty successful body.
143
- // Keep the lifecycle report successful, but make the missing correlation visible.
144
- logger.warn(`[Chorus] ${op} response correlation unavailable: ${err}`);
163
+ // Network-level failure (DNS, connection refused, abort, …). Surface WITH cause.
164
+ // `head`/`tail` are split so the attempt ordinal can be injected before the cause.
165
+ failure = { status: null, head: `${op} request failed${context}`, tail: `: ${err}` };
166
+ }
167
+ if (!failure && !response.ok) {
168
+ // Non-2xx. Surface WITH the status so a 4xx/5xx is debuggable.
169
+ failure = { status: response.status, head: `${op} returned ${response.status}${context}`, tail: "" };
145
170
  }
171
+ if (!failure) {
172
+ let data;
173
+ if (readData) {
174
+ try {
175
+ const parsed = await response.json();
176
+ data = parsed && typeof parsed === "object" ? parsed.data : undefined;
177
+ } catch (err) {
178
+ // Mixed-version fallback: older servers may return an empty successful body.
179
+ // Keep the lifecycle report successful, but make the missing correlation visible.
180
+ logger.warn(`[Chorus] ${op} response correlation unavailable: ${err}`);
181
+ }
182
+ }
183
+ if (successLog) logger.info(`[Chorus] ${successLog}`);
184
+ return { ok: true, status: response.status, ...(data !== undefined ? { data } : {}) };
185
+ }
186
+
187
+ const canRetry = attempt < attempts && isRetryableFailure(failure.status);
188
+ // Per-attempt visibility, but ONLY when another attempt actually follows: the ordinal
189
+ // exists to explain a retry. A single-shot op, or a terminal failure that will be
190
+ // re-logged verbatim two lines below, must not emit a redundant ordinal line.
191
+ if (canRetry) {
192
+ logger.warn(`[Chorus] ${failure.head} (attempt ${attempt}/${attempts})${failure.tail}`);
193
+ }
194
+ if (!canRetry) break;
195
+ await retrySleep(delaysMs[attempt - 1] ?? delaysMs[delaysMs.length - 1] ?? 0);
146
196
  }
147
- if (successLog) logger.info(`[Chorus] ${successLog}`);
148
- return { ok: true, status: response.status, ...(data !== undefined ? { data } : {}) };
197
+
198
+ // Final failure: the message and the structured result are EXACTLY what they were
199
+ // before retries existed, so existing log-grep expectations still match.
200
+ const error = `${failure.head}${failure.tail}`;
201
+ logger.warn(`[Chorus] ${error}`);
202
+ return { ok: false, status: failure.status, error };
149
203
  }
150
204
 
151
205
  return {
@@ -203,6 +257,21 @@ export function createDaemonRestClient(opts) {
203
257
  `advanced turn for session ${sessionId} → ${status}`,
204
258
  "",
205
259
  status === "running",
260
+ // Bounded retry on the TERMINAL edge only. A lost `→ ended`/`→ interrupted` report
261
+ // is what strands a turn as phantom `running` forever; the `→ running` edge is not
262
+ // retried because the wake is about to run anyway and a stale retry could race the
263
+ // terminal edge. The repeat is safe: the daemon sends the `turnUuid` it learned
264
+ // from its own → running report, and advanceTurnForWake returns the existing
265
+ // projection for a same-turn same-terminal-status replay (no second usage rollup,
266
+ // timestamp write or SSE publish). Without a turnUuid, the FIFO lookup finds no
267
+ // `running` turn and answers not_found, changing nothing.
268
+ isTerminal
269
+ ? {
270
+ attempts: TERMINAL_TURN_ADVANCE_ATTEMPTS,
271
+ delaysMs: TERMINAL_TURN_ADVANCE_DELAYS_MS,
272
+ sleep: sleepImpl,
273
+ }
274
+ : null,
206
275
  );
207
276
  const resolvedTurnUuid =
208
277
  typeof result.data?.turn?.uuid === "string" ? result.data.turn.uuid : null;
package/cli/daemon.mjs CHANGED
@@ -126,7 +126,7 @@ function defaultLogger() {
126
126
  * maxConcurrency?: number,
127
127
  * permissionMode?: "chorus"|"yolo",
128
128
  * reportInterrupt?: (entityType: string, entityUuid: string, reason: "user"|"crash") => Promise<void>,
129
- * advanceTurn?: (params: { sessionId: string, status: "running"|"ended", entityType?: string|null, entityUuid?: string|null }) => Promise<void>,
129
+ * advanceTurn?: (params: { sessionId: string, status: "running"|"ended"|"interrupted", interruptedReason?: "user"|"crash"|"shutdown"|"invalid_path"|null, entityType?: string|null, entityUuid?: string|null }) => Promise<void>,
130
130
  * sigintTimeoutMs?: number,
131
131
  * }} [deps]
132
132
  */
@@ -430,6 +430,10 @@ export function buildDaemon(creds, deps = {}) {
430
430
  sigintTimeoutMs,
431
431
  redispatchResume,
432
432
  deliverTurn,
433
+ // The SAME turn reporter the wakers use (declared above and passed into
434
+ // makeWaker) — one transport, so a no-child interrupt can close the
435
+ // server-side `running` turn (fix-phantom-running-turn, Tech Design D).
436
+ advanceTurn,
433
437
  handleDirectoryRequest: async (event) => {
434
438
  if (event.operation === "roots") {
435
439
  return { roots: [...browseRoots] };
@@ -8,6 +8,7 @@ import { randomUUID } from "node:crypto";
8
8
  import { statSync } from "node:fs";
9
9
  import { win32 as pathWin32, posix as pathPosix } from "node:path";
10
10
  import { prepareManagedDshConfig } from "./dsh-managed-config.mjs";
11
+ import { awaitChildSettled } from "./child-exit.mjs";
11
12
 
12
13
  const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
13
14
  export const DEFAULT_DSH_TIMEOUT_MS = 30 * 60 * 1000;
@@ -376,7 +377,9 @@ export class DshSpawner {
376
377
  }
377
378
  });
378
379
  child.on?.("error", (error) => fail(`dsh runtime process error: ${safeSpawnError(error)}`));
379
- child.on?.("close", (code) => {
380
+ // Settle on process exit, not only on stdio close: a detached descendant can
381
+ // inherit the pipes and keep `close` from ever firing (see cli/child-exit.mjs).
382
+ awaitChildSettled(child, { logger: this.logger, label: "dsh" }).then((code) => {
380
383
  closeSeen = true;
381
384
  exitCode = code;
382
385
  if (stderrBuffer.trim()) this.logger.warn(`[dsh] ${stderrBuffer.trim()}`);
@@ -35,6 +35,7 @@ import { homedir } from "node:os";
35
35
  import { win32 as pathWin32, posix as pathPosix, join } from "node:path";
36
36
  import { getSessionId as defaultGetSessionId, setSessionId as defaultSetSessionId } from "./kiro-session-map.mjs";
37
37
  import { reconstructTranscript as defaultReconstructTranscript } from "./kiro-transcript.mjs";
38
+ import { awaitChildSettled } from "./child-exit.mjs";
38
39
 
39
40
  const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
40
41
 
@@ -343,7 +344,9 @@ export class KiroSpawner {
343
344
  resolve({ sessionId: knownSessionId || anchor, exitCode: null, isNew });
344
345
  });
345
346
 
346
- child.on("close", (code) => {
347
+ // Settle on process exit, not only on stdio close: a detached descendant can
348
+ // inherit the pipes and keep `close` from ever firing (see cli/child-exit.mjs).
349
+ awaitChildSettled(child, { logger: this.logger, label: "kiro-cli" }).then((code) => {
347
350
  if (code !== 0) {
348
351
  this.logger.warn(`[Chorus] kiro-cli exited with code ${code}`);
349
352
  }
@@ -43,6 +43,7 @@ import { validateAgentCliConfig, overlayAgentEnv, getAgentEnv, assertConfiguredS
43
43
  import { statSync } from "node:fs";
44
44
  import { win32 as pathWin32, posix as pathPosix } from "node:path";
45
45
  import { parseNdjsonChunk } from "./claude-spawner.mjs";
46
+ import { awaitChildSettled } from "./child-exit.mjs";
46
47
 
47
48
  const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
48
49
 
@@ -268,7 +269,9 @@ export class PiSpawner {
268
269
  resolve({ sessionId: anchor, backendSessionId: anchor || null, exitCode: null, isNew: isNewFlag });
269
270
  });
270
271
 
271
- child.on("close", (code) => {
272
+ // Settle on process exit, not only on stdio close: a detached descendant can
273
+ // inherit the pipes and keep `close` from ever firing (see cli/child-exit.mjs).
274
+ awaitChildSettled(child, { logger: this.logger, label: "pi" }).then((code) => {
272
275
  if (code !== 0) {
273
276
  this.logger.warn(`[Chorus] pi exited with code ${code}`);
274
277
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chorus-aidlc/chorus",
3
- "version": "0.18.0",
3
+ "version": "0.19.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": {
@@ -1 +0,0 @@
1
- "use strict";exports.id=109,exports.ids=[109],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})}},7086:(a,b,c)=>{function d(a,b){return!!a&&!!b&&("user"===a.type?"user"===b.type&&a.uuid===b.uuid:"agent"===a.type?"agent"===b.type&&a.uuid===b.uuid:"agent_instance"===a.type&&"agent"===b.type&&!!a.agentUuid&&a.agentUuid===b.uuid)}function e(a){return!!a&&("agent"===a.type||"agent_instance"===a.type)}c.d(b,{RU:()=>d,bB:()=>e})},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})}},26078:(a,b,c)=>{c.d(b,{RU:()=>h,s8:()=>g});let d={developer_agent:["idea:read","proposal:read","document:read","project:read","task:read","task:write"],pm_agent:["idea:read","idea:write","proposal:read","proposal:write","document:read","document:write","task:read","task:write","project:read","project:write"],admin_agent:["idea:read","idea:write","idea:admin","proposal:read","proposal:write","proposal:admin","document:read","document:write","document:admin","task:read","task:write","task:admin","project:read","project:write","project:admin"]},e=["read","write","admin"],f=new Set(["idea","proposal","document","task","project"].flatMap(a=>e.map(b=>`${a}:${b}`)));function g(a){return f.has(a)}function h(a,b){let c=new Set;if(a)for(let b of a){let a=d[b.endsWith("_agent")?b:`${b}_agent`];if(a)for(let b of a)c.add(b)}if(b)for(let a of b)g(a)&&c.add(a);return c}},28774:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A8:()=>q,CG:()=>o,Iq:()=>n,RB:()=>l,Sn:()=>i,d5:()=>m,ic:()=>p,tN:()=>k,x4:()=>j});var e=c(71255),f=c(77219),g=c(26078),h=a([e,f]);async function i({companyUuid:a,name:b,roles:c,ownerUuid:d,persona:f,systemPrompt:g,permissions:h}){return e.z.agent.create({data:{companyUuid:a,name:b,roles:c,ownerUuid:d,persona:f,systemPrompt:g,...void 0!==h&&{permissions:h}},select:{uuid:!0,name:!0,roles:!0,permissions:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,createdAt:!0}})}async function j(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,permissions:!0,persona:!0,systemPrompt:!0,ownerUuid:!0,lastActiveAt:!0,createdAt:!0}})}async function k(a,b){return e.z.apiKey.updateMany({where:{agentUuid:a,revokedAt:null},data:{name:b}})}async function l(a){return e.z.agent.delete({where:{uuid:a}})}async function m(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,permissions:!0,persona:!0}}}}),e.z.apiKey.count({where:f})]);return{apiKeys:g,total:h}}async function n({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 o(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 p(a,b,c){return(await e.z.agent.findMany({where:{companyUuid:a,...c&&{ownerUuid:c}},select:{uuid:!0,name:!0,roles:!0,permissions:!0,ownerUuid:!0},orderBy:{name:"asc"}})).filter(a=>(0,g.RU)(a.roles,a.permissions).has(b)).map(({uuid:a,name:b,roles:c,ownerUuid:d})=>({uuid:a,name:b,roles:c,ownerUuid:d}))}async function q(a){return e.z.user.findMany({where:{companyUuid:a},select:{uuid:!0,name:!0,email:!0},orderBy:{name:"asc"}})}[e,f]=h.then?(await h)():h,d()}catch(a){d(a)}})},30387:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Sy:()=>u,Xo:()=>o,Xp:()=>q,bA:()=>r,kA:()=>p});var e=c(71255),f=c(92633),g=c(62729),h=c(67738),i=c(97307),j=a([e,f,h]);[e,f,h]=j.then?(await j)():j;let s=i.default.child({module:"reference-artifact.service"}),t=["docs","repo","issue_pr","paper_blog"],u=["proposal","task","idea"],v={uuid:!0,targetType:!0,targetUuid:!0,type:!0,url:!0,title:!0,notes:!0,createdByType:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0};async function k(a){let b=await (0,f.LS)(a.createdByUuid,"user"===a.createdByType||"agent"===a.createdByType?a.createdByType:void 0);return{uuid:a.uuid,targetType:a.targetType,targetUuid:a.targetUuid,type:a.type,url:a.url,title:a.title,notes:a.notes??null,createdBy:b,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}function l(a){if(!t.includes(a))throw Error(`Invalid reference type: ${a}`)}function m(a){let b="string"==typeof a?a.trim():"";if(!b||!/^https?:\/\//i.test(b))throw Error(`Invalid reference url: ${a}`)}async function n(a,b,c){switch(b){case"proposal":{let b=await e.z.proposal.findFirst({where:{uuid:c,companyUuid:a},select:{projectUuid:!0}});if(!b)throw Error(`Target proposal with UUID ${c} not found`);return b.projectUuid}case"task":{let b=await e.z.task.findFirst({where:{uuid:c,companyUuid:a},select:{projectUuid:!0}});if(!b)throw Error(`Target task with UUID ${c} not found`);return b.projectUuid}case"idea":{let b=await e.z.idea.findFirst({where:{uuid:c,companyUuid:a},select:{projectUuid:!0}});if(!b)throw Error(`Target idea with UUID ${c} not found`);return b.projectUuid}default:throw Error(`Unsupported reference targetType: ${b}`)}}async function o({companyUuid:a,targetType:b,targetUuid:c}){let d=await e.z.referenceArtifact.findMany({where:{companyUuid:a,targetType:b,targetUuid:c},orderBy:{createdAt:"asc"},select:v});return Promise.all(d.map(a=>k(a)))}async function p(a){let{companyUuid:b,targetType:c,targetUuid:d,type:f,url:i,title:j,notes:o}=a;l(f),m(i);let p=await n(b,c,d),q=await e.z.referenceArtifact.create({data:{companyUuid:b,targetType:c,targetUuid:d,type:f,url:i,title:j,notes:o??null,createdByType:a.createdByType,createdByUuid:a.createdByUuid},select:v});try{g.B.emitChange({companyUuid:b,projectUuid:p,entityType:c,entityUuid:d,action:"updated",actorUuid:a.createdByUuid})}catch(a){s.warn({err:a,referenceUuid:q.uuid,targetType:c,targetUuid:d},"Failed to emit change event for reference artifact")}try{await h.createActivity({companyUuid:b,projectUuid:p,targetType:c,targetUuid:d,actorType:a.createdByType,actorUuid:a.createdByUuid,action:"reference_added",value:{referenceUuid:q.uuid,type:q.type,url:q.url,title:q.title}})}catch(a){s.warn({err:a,referenceUuid:q.uuid,targetType:c,targetUuid:d},"Failed to record reference_added Activity")}return k(q)}async function q(a,b,{type:c,url:d,title:f,notes:g}){if(void 0!==c&&l(c),void 0!==d&&m(d),!await e.z.referenceArtifact.findFirst({where:{uuid:b,companyUuid:a},select:{uuid:!0}}))throw Error(`Reference with UUID ${b} not found`);let h={};void 0!==c&&(h.type=c),void 0!==d&&(h.url=d),void 0!==f&&(h.title=f),void 0!==g&&(h.notes=g);let i=await e.z.referenceArtifact.update({where:{uuid:b},data:h,select:v});return k(i)}async function r(a,b){if(!await e.z.referenceArtifact.findFirst({where:{uuid:b,companyUuid:a},select:{uuid:!0}}))throw Error(`Reference with UUID ${b} not found`);await e.z.referenceArtifact.delete({where:{uuid:b}})}d()}catch(a){d(a)}})},46398:(a,b,c)=>{c.d(b,{N2:()=>j,mP:()=>h,qQ:()=>i});var d=c(84797),e=c(97731),f=c(40260),g=c(96101);let h=["docs","repo","issue_pr","paper_blog"],i={docs:{labelKey:"references.typeDocs",badgeClass:"bg-blue-50 text-blue-700 dark:bg-[#13253a] dark:text-[#5AA9F0]",icon:d.A},repo:{labelKey:"references.typeRepo",badgeClass:"bg-green-50 text-green-700 dark:bg-[#14281a] dark:text-[#6FD19A]",icon:e.A},issue_pr:{labelKey:"references.typeIssuePr",badgeClass:"bg-purple-50 text-purple-700 dark:bg-[#281630] dark:text-[#C98FE0]",icon:f.A},paper_blog:{labelKey:"references.typePaperBlog",badgeClass:"bg-amber-50 text-amber-700 dark:bg-[#332a12] dark:text-[#E0B44E]",icon:g.A}};function j(a){return h.includes(a)}},52178:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Y9:()=>l,bv:()=>n,jD:()=>k,t1:()=>m});var e=c(2613);c(50785);var f=c(9259),g=c(30387),h=c(97307),i=c(12217),j=a([f,g]);[f,g]=j.then?(await j)():j;let o=g.Sy;async function k(a,b){let c=await (0,f.d)();if(!c)return{success:!1,error:"unauthorized"};if(!o.includes(a))return{success:!1,error:`Invalid target type: ${a}`};try{let d=await (0,g.Xo)({companyUuid:c.companyUuid,targetType:a,targetUuid:b});return{success:!0,references:d}}catch(c){return h.default.error({err:c,targetType:a,targetUuid:b},"Failed to list references"),{success:!1,error:"Failed to load references"}}}async function l(a){let b=await (0,f.d)();if(!b)return{success:!1,error:"unauthorized"};if(!o.includes(a.targetType))return{success:!1,error:`Invalid target type: ${a.targetType}`};try{let c=await (0,g.kA)({companyUuid:b.companyUuid,targetType:a.targetType,targetUuid:a.targetUuid,type:a.type,url:a.url,title:a.title,notes:a.notes??null,createdByType:"user",createdByUuid:b.actorUuid});return{success:!0,reference:c}}catch(b){h.default.error({err:b},"Failed to create reference");let a=b instanceof Error?b.message:"Failed to add reference";return{success:!1,error:a}}}async function m(a){let b=await (0,f.d)();if(!b)return{success:!1,error:"unauthorized"};try{let c=await (0,g.Xp)(b.companyUuid,a.uuid,{...void 0!==a.type?{type:a.type}:{},...void 0!==a.url?{url:a.url}:{},...void 0!==a.title?{title:a.title}:{},...void 0!==a.notes?{notes:a.notes}:{}});return{success:!0,reference:c}}catch(c){h.default.error({err:c,uuid:a.uuid},"Failed to update reference");let b=c instanceof Error?c.message:"Failed to update reference";return{success:!1,error:b}}}async function n(a){let b=await (0,f.d)();if(!b)return{success:!1,error:"unauthorized"};try{return await (0,g.bA)(b.companyUuid,a),{success:!0}}catch(c){h.default.error({err:c,uuid:a},"Failed to delete reference");let b=c instanceof Error?c.message:"Failed to delete reference";return{success:!1,error:b}}}(0,i.D)([k,l,m,n]),(0,e.A)(k,"60a53632700a9a0c31ba81c5a31dc4c73bfdf261f7",null),(0,e.A)(l,"40bf1e50414cb4176288c9431a5ad1680c9cf1beb3",null),(0,e.A)(m,"40e266c9408615da8e12796090e027ef3c7baa6141",null),(0,e.A)(n,"40f3b9b941ee72f6e4bb009cc768709710996341c1",null),d()}catch(a){d(a)}})},53015:(a,b,c)=>{c.d(b,{ReferencesSection:()=>C});var d=c(10837),e=c(21968),f=c(68884),g=c(9222),h=c(59876),i=c(35312),j=c(87461),k=c(86460),l=c(79543),m=c(92900),n=c(49599),o=c(42424),p=c(9994),q=c(2852),r=c(20170),s=c(11568),t=c(55732),u=c(6019),v=c(95098),w=c(42377);let x=(0,w.createServerReference)("40e266c9408615da8e12796090e027ef3c7baa6141",w.callServer,void 0,w.findSourceMapURL,"updateReferenceAction"),y=(0,w.createServerReference)("40bf1e50414cb4176288c9431a5ad1680c9cf1beb3",w.callServer,void 0,w.findSourceMapURL,"createReferenceAction"),z=(0,w.createServerReference)("40f3b9b941ee72f6e4bb009cc768709710996341c1",w.callServer,void 0,w.findSourceMapURL,"deleteReferenceAction");var A=c(46398),B=c(61206);function C({targetType:a,targetUuid:b,canWrite:c,initialReferences:w,compact:C=!1}){let D=(0,g.c)(),E=(0,f.r)(),[F,G]=(0,e.useState)(w??[]),[H,I]=(0,e.useState)(void 0!==w),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(null),[N,O]=(0,e.useState)("docs"),[P,Q]=(0,e.useState)(""),[R,S]=(0,e.useState)(""),[T,U]=(0,e.useState)(""),[V,W]=(0,e.useState)(null),[X,Y]=(0,e.useState)(!1),[Z,$]=(0,e.useState)(null),_=(0,e.useCallback)(async()=>{let c=await (0,v.j)(a,b);c.success&&G(c.references),I(!0)},[a,b]),aa=async()=>{if(!P.trim())return void W(D("references.urlRequired"));if(!R.trim())return void W(D("references.titleRequired"));Y(!0),W(null);let c=T.trim()?T.trim():null,d=L?await x({uuid:L.uuid,type:N,url:P.trim(),title:R.trim(),notes:c}):await y({targetType:a,targetUuid:b,type:N,url:P.trim(),title:R.trim(),notes:c});Y(!1),d.success?(K(!1),await _(),E.refresh()):W(d.error||(L?D("references.updateFailed"):D("references.addFailed")))},ab=async a=>{$(a);let b=await z(a);$(null),b.success&&(await _(),E.refresh())};return(0,d.jsxs)("div",{className:C?"space-y-2":"space-y-2.5",children:[0===F.length?(0,d.jsx)("p",{className:"text-sm italic text-muted-foreground",children:H?D("references.empty"):D("references.loading")}):(0,d.jsx)("div",{className:"space-y-2",children:F.map(a=>{let b=(0,A.N2)(a.type)?A.qQ[a.type]:null,e=b?.icon??h.A;return(0,d.jsx)("div",{className:"group rounded-lg border border-border bg-background p-3",children:(0,d.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("div",{className:"mb-1 flex items-center gap-2",children:(0,d.jsxs)(n.E,{className:`gap-1 border-0 text-[10px] font-medium ${b?.badgeClass??"bg-secondary text-muted-foreground"}`,children:[(0,d.jsx)(e,{className:"h-3 w-3"}),b?D(b.labelKey):a.type]})}),(0,d.jsxs)("a",{href:a.url,target:"_blank",rel:"noopener noreferrer",title:a.title,className:"flex min-w-0 items-center gap-1 text-sm font-medium text-primary hover:underline",children:[(0,d.jsx)("span",{className:"truncate",children:a.title}),(0,d.jsx)(i.A,{className:"h-3 w-3 shrink-0"})]}),(0,d.jsx)(B.L,{notes:a.notes})]}),c&&(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5 transition-opacity md:opacity-0 md:group-hover:opacity-100 md:focus-within:opacity-100",children:[(0,d.jsx)(o.$,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{M(a),O(a.type),Q(a.url),S(a.title),U(a.notes??""),W(null),K(!0)},"aria-label":D("references.editReference"),children:(0,d.jsx)(j.A,{className:"h-3.5 w-3.5 text-muted-foreground"})}),(0,d.jsxs)(u.Lt,{children:[(0,d.jsx)(u.tv,{asChild:!0,children:(0,d.jsx)(o.$,{variant:"ghost",size:"icon",className:"h-7 w-7","aria-label":D("references.deleteReference"),children:Z===a.uuid?(0,d.jsx)(k.A,{className:"h-3.5 w-3.5 animate-spin text-muted-foreground"}):(0,d.jsx)(l.A,{className:"h-3.5 w-3.5 text-destructive"})})}),(0,d.jsxs)(u.EO,{children:[(0,d.jsxs)(u.wd,{children:[(0,d.jsx)(u.r7,{children:D("references.deleteReference")}),(0,d.jsx)(u.$v,{children:D("references.deleteConfirm",{title:a.title})})]}),(0,d.jsxs)(u.ck,{children:[(0,d.jsx)(u.Zr,{children:D("common.cancel")}),(0,d.jsx)(u.Rx,{variant:"destructive",onClick:()=>ab(a.uuid),children:D("common.delete")})]})]})]})]})]})},a.uuid)})}),c&&(0,d.jsxs)(o.$,{variant:"outline",size:"sm",className:"h-8 w-full gap-1.5 border-border border-dashed text-xs text-muted-foreground",onClick:()=>{M(null),O("docs"),Q(""),S(""),U(""),W(null),K(!0)},children:[(0,d.jsx)(m.A,{className:"h-3.5 w-3.5"}),D("references.addReference")]}),(0,d.jsx)(s.lG,{open:J,onOpenChange:K,children:(0,d.jsxs)(s.Cf,{className:"sm:max-w-[480px]",children:[(0,d.jsx)(s.c7,{children:(0,d.jsx)(s.L3,{children:L?D("references.editReference"):D("references.addReference")})}),(0,d.jsxs)("div",{className:"space-y-4 py-2",children:[V&&(0,d.jsx)("div",{className:"rounded-lg bg-destructive/10 p-3 text-sm text-destructive",children:V}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(q.J,{htmlFor:"ref-type",className:"text-[13px] font-medium text-foreground",children:D("references.typeLabel")}),(0,d.jsxs)(t.l6,{value:N,onValueChange:O,children:[(0,d.jsx)(t.bq,{id:"ref-type",className:"border-border focus:ring-primary",children:(0,d.jsx)(t.yv,{})}),(0,d.jsx)(t.gC,{children:A.mP.map(a=>(0,d.jsx)(t.eb,{value:a,children:D(A.qQ[a].labelKey)},a))})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)(q.J,{htmlFor:"ref-url",className:"text-[13px] font-medium text-foreground",children:[D("references.urlLabel")," *"]}),(0,d.jsx)(p.p,{id:"ref-url",value:P,onChange:a=>Q(a.target.value),placeholder:D("references.urlPlaceholder"),className:"border-border focus-visible:ring-primary",autoFocus:!0})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)(q.J,{htmlFor:"ref-title",className:"text-[13px] font-medium text-foreground",children:[D("references.titleLabel")," *"]}),(0,d.jsx)(p.p,{id:"ref-title",value:R,onChange:a=>S(a.target.value),placeholder:D("references.titlePlaceholder"),className:"border-border focus-visible:ring-primary"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(q.J,{htmlFor:"ref-notes",className:"text-[13px] font-medium text-foreground",children:D("references.notesLabel")}),(0,d.jsx)(r.T,{id:"ref-notes",value:T,onChange:a=>U(a.target.value),placeholder:D("references.notesPlaceholder"),rows:3,className:"resize-none border-border focus-visible:ring-primary"})]})]}),(0,d.jsxs)(s.Es,{children:[(0,d.jsx)(o.$,{variant:"outline",onClick:()=>K(!1),disabled:X,className:"border-border",children:D("common.cancel")}),(0,d.jsx)(o.$,{onClick:aa,disabled:X||!P.trim()||!R.trim(),className:"bg-primary hover:bg-primary/90 text-primary-foreground",children:X?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.A,{className:"mr-2 h-4 w-4 animate-spin"}),D("common.saving")]}):L?D("common.save"):D("references.add")})]})]})})]})}},61206:(a,b,c)=>{c.d(b,{L:()=>h});var d=c(10837),e=c(21968),f=c(9222),g=c(99127);function h({notes:a}){let b=(0,f.c)(),[c,h]=(0,e.useState)(!1),i=a?.trim();if(!i)return null;let j=(0,d.jsx)("button",{type:"button",onClick:()=>h(a=>!a),"aria-expanded":c,"aria-label":b("references.toggleNotes"),className:`mt-1 w-full cursor-pointer text-left text-xs leading-relaxed text-muted-foreground ${c?"block":"line-clamp-2"}`,children:i});return c?j:(0,d.jsx)(g.Bc,{delayDuration:200,children:(0,d.jsxs)(g.m_,{children:[(0,d.jsx)(g.k$,{asChild:!0,children:j}),(0,d.jsx)(g.ZI,{className:"max-w-xs whitespace-pre-wrap break-words",children:i})]})})}},73908:(a,b,c)=>{c.d(b,{C:()=>k,K:()=>m});var d=c(10837),e=c(9222),f=c(79543),g=c(92900),h=c(42424),i=c(9994),j=c(88536);function k({items:a,onChange:b,disabled:c}){let k=(0,e.c)(),l=(c,d)=>{let e=a.slice();e[c]={...e[c],...d},b(e)};return(0,d.jsxs)("div",{className:"space-y-3",children:[a.length>0&&(0,d.jsx)("div",{className:"space-y-2",children:a.map((e,g)=>(0,d.jsxs)("div",{className:"flex items-start gap-2 rounded-lg border border-[#E5E2DC] dark:border-[#2a2a2e] bg-background p-2.5",children:[(0,d.jsx)("div",{className:"flex-1 min-w-0",children:(0,d.jsx)(i.p,{value:e.description,onChange:a=>l(g,{description:a.target.value}),placeholder:k("acceptanceCriteria.criterionPlaceholder"),className:"border-[#E5E2DC] dark:border-[#2a2a2e] text-sm focus-visible:ring-primary h-8",disabled:c})}),(0,d.jsxs)("div",{className:"flex items-center gap-2 shrink-0 pt-1",children:[(0,d.jsx)(j.d,{checked:e.required,onCheckedChange:a=>l(g,{required:a}),className:"data-[state=checked]:bg-primary",disabled:c}),(0,d.jsx)("span",{className:"text-[10px] font-medium text-muted-foreground min-w-[52px]",children:e.required?k("acceptanceCriteria.required"):k("acceptanceCriteria.optional")}),(0,d.jsx)(h.$,{variant:"outline",size:"sm",className:"h-7 w-7 p-0 border-[#E5E2DC] dark:border-[#2a2a2e] text-muted-foreground hover:text-[#D32F2F] hover:border-[#D32F2F] hover:bg-[#FFEBEE] dark:hover:bg-[#331619]",onClick:()=>{b(a.filter((a,b)=>b!==g))},disabled:c,type:"button",children:(0,d.jsx)(f.A,{className:"h-3 w-3"})})]})]},g))}),(0,d.jsxs)(h.$,{variant:"outline",size:"sm",className:"h-8 gap-1.5 border-[#E5E2DC] dark:border-[#2a2a2e] text-xs text-muted-foreground hover:text-primary hover:border-primary",onClick:()=>{b([...a,{description:"",required:!0}])},disabled:c,type:"button",children:[(0,d.jsx)(g.A,{className:"h-3 w-3"}),k("acceptanceCriteria.addCriterion")]})]})}function l(a){return{description:a.description.trim(),required:!!a.required}}function m(a,b){if(a.length!==b.length)return!0;for(let c=0;c<a.length;c++){let d=l(a[c]),e=l(b[c]);if(d.description!==e.description||d.required!==e.required)return!0}return!1}},74798:(a,b,c)=>{c.d(b,{W:()=>e});var d=c(21968);function e(){let[a,b]=(0,d.useState)(!1);return a}},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)}})},88536:(a,b,c)=>{c.d(b,{d:()=>g});var d=c(10837);c(21968);var e=c(15644),f=c(96307);function g({className:a,...b}){return(0,d.jsx)(e.Root,{"data-slot":"switch",className:(0,f.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:ring-ring/50 inline-flex h-5 w-9 shrink-0 items-center rounded-full border-2 border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...b,children:(0,d.jsx)(e.Thumb,{"data-slot":"switch-thumb",className:(0,f.cn)("bg-background pointer-events-none block size-4 rounded-full ring-0 shadow-lg transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})})}},94214:(a,b,c)=>{c.d(b,{AI:()=>h,_8:()=>g});var d=c(10837);c(21968);var e=c(11568),f=c(96307);function g({open:a,onOpenChange:b,header:c,footer:g,children:h,className:i,bodyClassName:j,zIndexClassName:k="z-[110]",showCloseButton:l=!0}){return(0,d.jsx)(e.lG,{open:a,onOpenChange:b,children:(0,d.jsxs)(e.Cf,{className:(0,f.cn)("flex max-h-[85svh] flex-col gap-0 overflow-hidden p-0",k,i),overlayClassName:k,showCloseButton:l,children:[(0,d.jsx)(e.c7,{className:"shrink-0 border-b border-border px-6 py-5 text-left",children:c}),(0,d.jsx)("div",{className:(0,f.cn)("min-h-0 flex-1 overflow-y-auto px-6 py-4",j),children:h}),(0,d.jsx)(e.Es,{className:"shrink-0 border-t border-border px-6 py-5",children:g})]})})}let h=e.L3},95098:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(42377);let e=(0,d.createServerReference)("60a53632700a9a0c31ba81c5a31dc4c73bfdf261f7",d.callServer,void 0,d.findSourceMapURL,"listReferencesAction")},99127:(a,b,c)=>{c.d(b,{Bc:()=>g,ZI:()=>j,k$:()=>i,m_:()=>h});var d=c(10837);c(21968);var e=c(80501),f=c(96307);function g({delayDuration:a=0,...b}){return(0,d.jsx)(e.Provider,{"data-slot":"tooltip-provider",delayDuration:a,...b})}function h({...a}){return(0,d.jsx)(e.Root,{"data-slot":"tooltip",...a})}function i({...a}){return(0,d.jsx)(e.Trigger,{"data-slot":"tooltip-trigger",...a})}function j({className:a,sideOffset:b=0,children:c,...g}){return(0,d.jsx)(e.Portal,{children:(0,d.jsxs)(e.Content,{"data-slot":"tooltip-content",sideOffset:b,className:(0,f.cn)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",a),...g,children:[c,(0,d.jsx)(e.Arrow,{className:"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=1496,exports.ids=[1496],exports.modules={3259:(a,b,c)=>{c.d(b,{i:()=>y});var d=c(10837),e=c(21968),f=c(68884),g=c(9222),h=c(86460),i=c(21692),j=c(97443),k=c(42424),l=c(6871),m=c(94214),n=c(2852),o=c(11225),p=c(55732),q=c(23871),r=c(27696),s=c(27876),t=c(42377);t.callServer,t.findSourceMapURL,t.callServer,t.findSourceMapURL;let u=(0,t.createServerReference)("40f396a79ed7ca9ec7cc613eaad63507ddcf27bc92",t.callServer,void 0,t.findSourceMapURL,"claimIdeaAction"),v=(0,t.createServerReference)("7041af79d55f1793ad1eb4e13ce5d85510e3db0706",t.callServer,void 0,t.findSourceMapURL,"claimIdeaToAgentAction"),w=(0,t.createServerReference)("608038a6d70125db7c783f343befb86f3be1897bf9",t.callServer,void 0,t.findSourceMapURL,"claimIdeaToUserAction"),x=(0,t.createServerReference)("40c192e48be914a818903cc82fb062cfe8fb50eec3",t.callServer,void 0,t.findSourceMapURL,"releaseIdeaAction");function y({idea:a,projectUuid:b,currentUserUuid:c,onClose:t}){let y=(0,g.c)(),z=(0,f.r)(),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)("self"),[E,F]=(0,e.useState)(""),[G,H]=(0,e.useState)(""),[I,J]=(0,e.useState)([]),[K,L]=(0,e.useState)([]),[M,N]=(0,e.useState)(!0),[O,P]=(0,e.useState)(null),[Q,R]=(0,e.useState)([]),[S,T]=(0,e.useState)(!1),[U,V]=(0,e.useState)(null),[W,X]=(0,e.useState)(null),Y=!!a.assignee,Z=Q.find(a=>a.connectionUuid===W)??null,$=new Set(Q.map(a=>a.host)).size>1,_=async()=>{let b;if(B(!0),P(null),"self"===C)b=await u(a.uuid);else if("agent"===C&&E)b=await v(a.uuid,E,Z?.agentInstanceUuid??void 0);else if("user"===C&&G)b=await w(a.uuid,G);else{if("release"!==C)return void B(!1);b=await x(a.uuid)}B(!1),b?.success?(z.refresh(),t()):b?.error&&P(b.error)},aa="self"===C||"agent"===C&&E||"user"===C&&G||"release"===C&&Y;return(0,d.jsxs)(m._8,{open:!0,onOpenChange:a=>{a||t()},className:"bg-card sm:max-w-[400px]",header:(0,d.jsx)(m.AI,{className:"text-base font-semibold text-foreground",children:y("ideas.assignIdea")}),footer:(0,d.jsxs)("div",{className:"flex w-full items-center justify-end gap-4",children:[(0,d.jsx)(k.$,{variant:"outline",onClick:t,disabled:A,className:"border-border",children:y("common.cancel")}),(0,d.jsx)(k.$,{onClick:_,disabled:A||!aa,className:"bg-primary hover:bg-[#B56A42] text-white",children:A?(0,d.jsx)(h.A,{className:"h-4 w-4 animate-spin"}):"release"===C?y("common.release"):function(){if("agent"!==C||!Z)return y("common.assign");let a=(0,r.kn)(Z.cwd),b=a.isUnknown?y(a.label):a.label,c=(0,r.g9)(Z.host),d=c.isUnknown?y(c.label):c.label;return $?y("assignInstance.assignToWithHost",{path:b,host:d}):y("assignInstance.assignTo",{path:b})}()})]}),bodyClassName:"space-y-4",children:[Y&&(0,d.jsx)("div",{className:"rounded-lg bg-[#E3F2FD] dark:bg-[#13253a] p-3",children:(0,d.jsxs)("p",{className:"text-xs text-[#1976D2] dark:text-[#5AA9F0]",children:[y("common.currentAssignee"),": ",(0,d.jsx)("span",{className:"font-medium",children:a.assignee?.name})]})}),O&&(0,d.jsx)("div",{className:"rounded-lg bg-[#FEE2E2] dark:bg-[#331619] p-3",children:(0,d.jsx)("p",{className:"text-xs text-[#D32F2F] dark:text-[#F08078]",children:O})}),(0,d.jsx)("p",{className:"text-[13px] text-muted-foreground",children:y("ideas.selectIdeaAssignee")}),M?(0,d.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,d.jsx)(h.A,{className:"h-6 w-6 animate-spin text-[#9A9A9A]"})}):(0,d.jsxs)(o.z,{value:C,onValueChange:a=>D(a),className:"space-y-3",children:[(0,d.jsxs)("div",{className:`rounded-[10px] p-4 transition-colors cursor-pointer ${"self"===C?"bg-[#FDF8F6] dark:bg-[#201d1b] border-2 border-primary":"bg-card border border-border hover:border-primary/50"}`,onClick:()=>D("self"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)(o.C,{value:"self",id:"idea-self",className:"border-primary text-primary"}),(0,d.jsx)(n.J,{htmlFor:"idea-self",className:"text-sm font-medium text-foreground cursor-pointer",children:y("assign.assignToMyself")})]}),(0,d.jsx)("p",{className:"mt-2 ml-6 text-xs text-muted-foreground leading-relaxed",children:y("ideas.assignToMyselfIdeaDesc")})]}),(0,d.jsxs)("div",{className:`rounded-[10px] p-4 transition-colors ${"agent"===C?"bg-[#FDF8F6] dark:bg-[#201d1b] border-2 border-primary":"bg-card border border-border"}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5 cursor-pointer",onClick:()=>D("agent"),children:[(0,d.jsx)(o.C,{value:"agent",id:"idea-agent",className:"border-primary text-primary"}),(0,d.jsx)(n.J,{htmlFor:"idea-agent",className:"text-sm font-medium text-foreground cursor-pointer",children:y("ideas.orAssignToPmAgent")})]}),(0,d.jsx)("p",{className:"mt-2 ml-6 text-xs text-muted-foreground leading-relaxed",children:y("ideas.onlySelectedPmAgentCanWork")}),"agent"===C&&(0,d.jsxs)("div",{className:"mt-3 ml-6 space-y-3",children:[(0,d.jsxs)(p.l6,{value:E,onValueChange:F,children:[(0,d.jsx)(p.bq,{className:"w-full border-border",children:(0,d.jsx)(p.yv,{placeholder:y("ideas.selectPmAgent")})}),(0,d.jsx)(p.gC,{className:"z-[120]",children:I.length>0?I.map(a=>(0,d.jsx)(p.eb,{value:a.uuid,children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.AgentAvatar,{name:a.name,size:16,className:"rounded-full"}),(0,d.jsx)("span",{children:a.name})]})},a.uuid)):(0,d.jsx)("div",{className:"px-3 py-2 text-xs text-[#9A9A9A]",children:y("ideas.noPmAgentsAvailable")})})]}),E&&(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("span",{className:"text-[11px] font-medium uppercase tracking-wide text-[#9A9A9A]",children:y("assignInstance.workingDirectory")}),S?(0,d.jsxs)("div",{className:"flex items-center gap-2 py-2 text-xs text-[#9A9A9A]",children:[(0,d.jsx)(h.A,{className:"h-3.5 w-3.5 animate-spin"}),y("assignInstance.loadingInstances")]}):U?.source==="project_fixed"?(0,d.jsx)(s.Y,{target:U}):0===Q.length?(0,d.jsx)("p",{className:"rounded-lg bg-background p-2.5 text-[11px] leading-relaxed text-muted-foreground",children:y("assignInstance.noInstances")}):(0,d.jsx)(q.O,{instances:Q,selectedConnectionUuid:W,onSelect:a=>X(a.connectionUuid),ariaLabel:y("assignInstance.workingDirectory")}),U?.source!=="project_fixed"&&(0,d.jsxs)("div",{className:"flex items-start gap-1.5 text-[11px] leading-relaxed text-[#9A8C7E]",children:[(0,d.jsx)(i.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0","aria-hidden":!0}),(0,d.jsx)("span",{children:y("assignInstance.ideaPinNote")})]})]})]})]}),(0,d.jsxs)("div",{className:`rounded-[10px] p-4 transition-colors ${"user"===C?"bg-[#FDF8F6] dark:bg-[#201d1b] border-2 border-primary":"bg-card border border-border"}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5 cursor-pointer",onClick:()=>D("user"),children:[(0,d.jsx)(o.C,{value:"user",id:"idea-user",className:"border-primary text-primary"}),(0,d.jsx)(n.J,{htmlFor:"idea-user",className:"text-sm font-medium text-foreground cursor-pointer",children:y("assign.orAssignToUser")})]}),"user"===C&&(0,d.jsx)("div",{className:"mt-3 ml-6",children:(0,d.jsxs)(p.l6,{value:G,onValueChange:H,children:[(0,d.jsx)(p.bq,{className:"w-full border-border",children:(0,d.jsx)(p.yv,{placeholder:y("tasks.selectUser")})}),(0,d.jsx)(p.gC,{className:"z-[120]",children:K.length>0?K.map(a=>(0,d.jsx)(p.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-muted-foreground"}),(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:y("tasks.noUsersAvailable")})})]})})]}),Y&&(0,d.jsxs)("div",{className:`rounded-[10px] p-4 transition-colors cursor-pointer ${"release"===C?"bg-[#FDF8F6] dark:bg-[#201d1b] border-2 border-primary":"bg-card border border-border hover:border-primary/50"}`,onClick:()=>D("release"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)(o.C,{value:"release",id:"idea-release",className:"border-primary text-primary"}),(0,d.jsx)(n.J,{htmlFor:"idea-release",className:"text-sm font-medium text-foreground cursor-pointer",children:y("assign.releaseAssignee")})]}),(0,d.jsx)("p",{className:"mt-2 ml-6 text-xs text-muted-foreground leading-relaxed",children:y("ideas.releaseIdeaAssigneeDesc")})]})]})]})}},4284:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{a1:()=>g});var e=c(71255);c(62729);var f=a([e]);async function g(a){let b=await e.z.projectGroup.findMany({where:{companyUuid:a},orderBy:{createdAt:"asc"}}),c=b.map(a=>a.uuid),d=c.length>0?await e.z.project.groupBy({by:["groupUuid"],where:{companyUuid:a,groupUuid:{in:c}},_count:{_all:!0}}):[],f=new Map(d.map(a=>[a.groupUuid,a._count._all])),g=b.map(a=>({uuid:a.uuid,name:a.name,description:a.description,projectCount:f.get(a.uuid)??0,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()})),h=await e.z.project.count({where:{companyUuid:a,groupUuid:null}});return{groups:g,total:b.length,ungroupedCount:h}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},5797:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(56556).A)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]])},9952:(a,b,c)=>{c.d(b,{x:()=>e});var d=c(42377);let e=(0,d.createServerReference)("402fe092b0a647813e2e0cbc6f77153d62b3f4458a",d.callServer,void 0,d.findSourceMapURL,"getIdeaActivitiesAction")},11166:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{p:()=>g});var e=c(89998),f=a([e]);e=(f.then?(await f)():f)[0];let h={action:"yolo_requested",precondition:async({idea:a})=>{if("agent"!==a.assigneeType&&"agent_instance"!==a.assigneeType)throw new e.$("ASSIGNEE_NOT_AGENT","The Idea's assignee is not an agent — there is no daemon to wake");return{}},offlinePolicy:"require_online"};async function g({companyUuid:a,ideaUuid:b,actorUuid:c,actorType:d,temporaryCwd:f}){await (0,e.u)(h,{companyUuid:a,ideaUuid:b,actorUuid:c,actorType:d,temporaryCwd:f})}d()}catch(a){d(a)}})},22110:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{e1:()=>o,em:()=>n,yu:()=>p,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.default.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.default.error({err:a},"Failed to submit elaboration answers"),{success:!1,error:a instanceof Error?a.message:"Failed to submit answers"}}}async function o(a){let b=await (0,g.d)();if(!b)return{success:!1,error:"Unauthorized"};if("user"!==b.type&&"super_admin"!==b.type)return{success:!1,error:"Only users can verify elaboration"};try{let c=await (0,h.A7)({companyUuid:b.companyUuid,ideaUuid:a,actorUuid:b.actorUuid,actorType:b.type}),d=await i.z.idea.findFirst({where:{uuid:a,companyUuid:b.companyUuid}});return d&&((0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas`)),{success:!0,data:c}}catch(a){return j.default.error({err:a},"Failed to verify elaboration"),{success:!1,error:a instanceof Error?a.message:"Failed to verify elaboration"}}}async function p(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.default.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,p]),(0,e.A)(m,"4086007f35b03ed9ef0b684349502784a4eefb3535",null),(0,e.A)(n,"70b26431efe56950e7f4a7336e39d12749ea7b3fe5",null),(0,e.A)(o,"4024050c71c82bf79bf758729c7402b940bd5f879c",null),(0,e.A)(p,"6014e13f6d394a26469946846f65e3a4d3d8a9a0f2",null),d()}catch(a){d(a)}})},23157:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Ax:()=>q,G3:()=>v,M$:()=>s,UD:()=>u,UP:()=>r,ZL:()=>t,qN:()=>p});var e=c(2613);c(50785);var f=c(5562),g=c(9259),h=c(61212),i=c(28774),j=c(61076),k=c(25383),l=c(67738),m=c(97307),n=c(12217),o=a([g,h,i,j,k,l]);async function p(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"};return await (0,h.Xo)({ideaUuid:a,companyUuid:b.companyUuid,assigneeType:b.type,assigneeUuid:b.actorUuid,assignedByType:"user",assignedByUuid:b.actorUuid}),await (0,l.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 m.default.error({err:a},"Failed to claim idea"),{success:!1,error:"Failed to claim idea"}}}async function q(a,b,c){let d=await (0,g.d)();if(!d||"user"!==d.type)return{success:!1,error:"Unauthorized"};try{let e=await (0,h.MY)(d.companyUuid,a);if(!e)return{success:!1,error:"Idea not found"};let g=await (0,k.gt)({companyUuid:d.companyUuid,actorUserUuid:d.actorUuid,projectUuid:e.projectUuid,agentUuid:b}),i="project_fixed"===g.source?g.agentInstanceUuid:c;return await (0,h.Xo)({ideaUuid:a,companyUuid:d.companyUuid,assigneeType:"agent",assigneeUuid:b,assignedByType:"user",assignedByUuid:d.actorUuid,instanceUuid:i??void 0,cwdSource:"project_fixed"===g.source?g.source:null,cwdHost:"project_fixed"===g.source?g.host:null,runtimeCwd:"project_fixed"===g.source?g.cwd:null}),await (0,l.createActivity)({companyUuid:d.companyUuid,projectUuid:e.projectUuid,targetType:"idea",targetUuid:a,actorType:"user",actorUuid:d.actorUuid,action:"assigned",value:{assigneeType:"agent",assigneeUuid:b,...i?{instanceUuid:i}:{},..."project_fixed"===g.source?{resolvedCwdSource:g.source,resolvedCwdHost:g.host,resolvedRuntimeCwd:g.cwd}:{}}}),(0,f.revalidatePath)(`/projects/${e.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${e.projectUuid}/ideas`),{success:!0}}catch(a){return m.default.error({err:a},"Failed to claim idea to agent"),{success:!1,error:"Failed to claim idea"}}}async function r(a,b,c){let d=await (0,g.d)();if(!d||"user"!==d.type)return{success:!1,error:"Unauthorized"};try{let e=await (0,h.MY)(d.companyUuid,a);if(!e)return{success:!1,error:"Idea not found"};return await (0,h.Xo)({ideaUuid:a,companyUuid:d.companyUuid,assigneeType:"agent",assigneeUuid:b,assignedByType:"user",assignedByUuid:d.actorUuid,instanceUuid:c,allowElaboratedInstanceRepin:!0}),(0,f.revalidatePath)(`/projects/${e.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${e.projectUuid}/ideas`),{success:!0}}catch(a){return m.default.error({err:a},"Failed to reassign idea instance (no wake)"),{success:!1,error:"Failed to reassign idea"}}}async function s(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"};return await (0,h.Xo)({ideaUuid:a,companyUuid:c.companyUuid,assigneeType:"user",assigneeUuid:b,assignedByType:"user",assignedByUuid:c.actorUuid}),(0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${d.projectUuid}/ideas`),{success:!0}}catch(a){return m.default.error({err:a},"Failed to claim idea to user"),{success:!1,error:"Failed to claim idea"}}}async function t(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"};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 m.default.error({err:a},"Failed to release idea"),{success:!1,error:"Failed to release idea"}}}async function u(){let a=await (0,g.d)();if(!a||"user"!==a.type)return{agents:[],users:[]};try{let[b,c]=await Promise.all([(0,i.ic)(a.companyUuid,"idea:write",a.actorUuid),(0,i.A8)(a.companyUuid)]);return{agents:b,users:c}}catch(a){return m.default.error({err:a},"Failed to get assignable agents"),{agents:[],users:[]}}}async function v(a,b){let c=await (0,g.d)();if(!c||"user"!==c.type)return{instances:[],resolvedTarget:null};try{let[d,e]=await Promise.all([(0,j._R)(c.companyUuid,a),b?(0,k.gt)({companyUuid:c.companyUuid,actorUserUuid:c.actorUuid,projectUuid:b,agentUuid:a}):null]);return{instances:d.map(a=>({connectionUuid:a.uuid,agentInstanceUuid:a.agentInstanceUuid,host:a.host,cwd:a.cwd,effectiveStatus:a.effectiveStatus})),resolvedTarget:e}}catch(a){return m.default.error({err:a},"Failed to get agent instances"),{instances:[],resolvedTarget:null}}}[g,h,i,j,k,l]=o.then?(await o)():o,(0,n.D)([p,q,r,s,t,u,v]),(0,e.A)(p,"40f396a79ed7ca9ec7cc613eaad63507ddcf27bc92",null),(0,e.A)(q,"7041af79d55f1793ad1eb4e13ce5d85510e3db0706",null),(0,e.A)(r,"709d91d2ebcd507ccb483317b3c50a2f62b8833071",null),(0,e.A)(s,"608038a6d70125db7c783f343befb86f3be1897bf9",null),(0,e.A)(t,"40c192e48be914a818903cc82fb062cfe8fb50eec3",null),(0,e.A)(u,"00bd6369c554989603eac3fb083e74d5abcfcb5701",null),(0,e.A)(v,"60c87393841a49fce35e289166ea82a63c2eb01e24",null),d()}catch(a){d(a)}})},23733:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A7:()=>m,Rm:()=>l,Y_:()=>n,t8:()=>o});var e=c(71255),f=c(62729),g=c(85806),h=c(92633),i=c(89998),j=a([e,g,h,i]);async function k(a,b,c){if(b.assigneeUuid===c)return!0;if("agent_instance"===b.assigneeType){let d=await (0,h.wo)(a,b.assigneeType,b.assigneeUuid);return null!==d&&d===c}return!1}async function l({companyUuid:a,ideaUuid:b,roundUuid:c,actorUuid:d,actorType:h,answers:i}){let j=c;if(!j){let c=await e.z.elaborationRound.findMany({where:{ideaUuid:b,companyUuid:a,status:"pending_answers"},select:{uuid:!0}});if(0===c.length)throw Error("no active round to answer");if(c.length>1)throw Error("multiple active rounds; specify roundUuid");j=c[0].uuid}let k=await e.z.elaborationRound.findFirst({where:{uuid:j,ideaUuid:b,companyUuid:a},include:{questions:!0}});if(!k)throw Error("Elaboration round not found");if("pending_answers"!==k.status)throw Error(`Round is '${k.status}', expected 'pending_answers'`);let l=new Date;for(let a of i){let b=k.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:l,answeredByType:h,answeredByUuid:d}})}let m=(await e.z.elaborationQuestion.findMany({where:{roundUuid:j}})).filter(a=>a.required).every(a=>null!==a.answeredAt),n=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a}});m&&(await e.z.elaborationRound.update({where:{uuid:j},data:{status:"answered"}}),n?.elaborationStatus!=="resolved"&&await e.z.idea.update({where:{uuid:b},data:{elaborationStatus:"validating"}})),await g.f0.createActivity({companyUuid:a,projectUuid:n.projectUuid,targetType:"idea",targetUuid:b,actorType:h,actorUuid:d,action:"elaboration_answered",value:{roundNumber:k.roundNumber,answeredCount:i.length}}),f.B.emitChange({companyUuid:a,projectUuid:n.projectUuid,entityType:"idea",entityUuid:b,action:"updated"});let o=await e.z.elaborationRound.findUnique({where:{uuid:j},include:{questions:!0}});return p(o)}[e,g,h,i]=j.then?(await j)():j;let r={action:"elaboration_verified",precondition:async({companyUuid:a,ideaUuid:b})=>{let c=await e.z.elaborationRound.findMany({where:{ideaUuid:b,companyUuid:a}});if(0===c.length)throw new i.$("PRECONDITION_FAILED","Cannot resolve: the Idea has no elaboration rounds","no_rounds");let d=c.filter(a=>"pending_answers"===a.status);if(d.length>0)throw new i.$("PRECONDITION_FAILED",`Cannot resolve: ${d.length} round(s) still have unanswered questions`,"pending_answers");return{totalRounds:c.length}},transition:async({ideaUuid:a})=>{await e.z.idea.update({where:{uuid:a},data:{status:"elaborated",elaborationStatus:"resolved"}})},offlinePolicy:"queue"};async function m({companyUuid:a,ideaUuid:b,actorUuid:c,actorType:d}){return await (0,i.u)(r,{companyUuid:a,ideaUuid:b,actorUuid:c,actorType:d}),o({companyUuid:a,ideaUuid:b})}async function n({companyUuid:a,ideaUuid:b,actorUuid:c,actorType:d,reason:h,actorIsIdeaAdmin:i=!1}){let j=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a}});if(!j)throw Error("Idea not found");let l=await k(a,j,c);if(!l&&!i)throw Error("Only the assigned agent or an idea:admin gateway can skip elaboration");if("elaborating"!==j.status)throw Error(`Cannot skip elaboration from status '${j.status}'`);await e.z.idea.update({where:{uuid:b},data:{status:"elaborated",elaborationDepth:"minimal",elaborationStatus:"resolved"}}),await g.f0.createActivity({companyUuid:a,projectUuid:j.projectUuid,targetType:"idea",targetUuid:b,actorType:d,actorUuid:c,action:l?"elaboration_skipped":"elaboration_verified",value:l?{reason:h}:{reason:h,viaSkip:!0}}),f.B.emitChange({companyUuid:a,projectUuid:j.projectUuid,entityType:"idea",entityUuid:b,action:"updated"})}async function o({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=>"pending_answers"!==a.status),i=d.find(a=>"pending_answers"===a.status);return{ideaUuid:b,depth:c.elaborationDepth,status:c.elaborationStatus,rounds:d.map(p),summary:{totalQuestions:f.length,answeredQuestions:g.length,validatedRounds:h.length,pendingRound:i?.roundNumber||null}}}function p(a){return{uuid:a.uuid,roundNumber:a.roundNumber,status:a.status,isAppended:a.isAppended,createdBy:{type:a.createdByType,uuid:a.createdByUuid},validatedAt:a.validatedAt?.toISOString()||null,createdAt:a.createdAt.toISOString(),questions:a.questions.map(q)}}function q(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}}d()}catch(a){d(a)}})},24364:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(56556).A)("arrow-right-left",[["path",{d:"m16 3 4 4-4 4",key:"1x1c3m"}],["path",{d:"M20 7H4",key:"zbl0bi"}],["path",{d:"m8 21-4-4 4-4",key:"h9nckh"}],["path",{d:"M4 17h16",key:"g4d7ey"}]])},25525:(a,b,c)=>{c.d(b,{R:()=>w});var d=c(10837),e=c(21968),f=c(68884),g=c(9222),h=c(21790),i=c(49102),j=c(20447),k=c(67832),l=c(87461),m=c(9810),n=c(86460),o=c(42424),p=c(9994),q=c(82658),r=c(42377);let s=(0,r.createServerReference)("70b26431efe56950e7f4a7336e39d12749ea7b3fe5",r.callServer,void 0,r.findSourceMapURL,"submitElaborationAnswersAction");var t=c(42087);let u="__other__",v={functional:"functional",non_functional:"nonFunctional",business_context:"businessContext",technical_context:"technicalContext",user_scenario:"userScenario",scope:"scope"};function w({ideaUuid:a,elaboration:b,onRefresh:c}){let e=(0,g.c)("elaboration"),h=(0,f.r)();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-muted-foreground",children:e("title")}),(0,d.jsx)("span",{className:"text-xs font-medium text-primary",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)(x,{round:b,ideaUuid:a,onAnswered:async()=>{await c?.(),h.refresh()}},b.uuid))})]})}function x({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)(q.Nt,{open:l,onOpenChange:m,children:(0,d.jsxs)("div",{className:"overflow-hidden rounded-xl border border-border bg-card",children:[(0,d.jsx)(q.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-background ${l?"bg-[#F7F6F3] dark:bg-[#1e1d1b] border-b border-border":""}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[l?(0,d.jsx)(h.A,{className:"h-4 w-4 text-muted-foreground"}):(0,d.jsx)(i.A,{className:"h-4 w-4 text-muted-foreground"}),(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-primary":"bg-[#888780]"}`,children:a.roundNumber}),(0,d.jsx)("span",{className:"text-[13px] font-semibold text-foreground",children:f("roundLabel",{number:a.roundNumber})}),a.isAppended&&(0,d.jsx)("span",{className:"rounded bg-[#EDE7F6] dark:bg-[#221833] px-2 py-0.5 text-[10px] font-medium text-[#6A4FB6] dark:text-[#A99FF0]",children:f("appendedBadge")}),!l&&(0,d.jsxs)("span",{className:"text-xs text-muted-foreground",children:["\xb7 ",f("questionCount",{count:a.questions.length})]})]}),k?(0,d.jsx)("span",{className:"rounded bg-[#E8F5E9] dark:bg-[#14281a] px-2 py-0.5 text-[10px] font-medium text-[#2E7D32] dark:text-[#5FD07E]",children:f("statusAnswered")}):(0,d.jsx)("span",{className:"rounded bg-[#FFF3E0] dark:bg-[#3a2a12] px-2 py-0.5 text-[10px] font-medium text-[#E65100] dark:text-[#F0A050]",children:f("pendingAnswers")})]})}),(0,d.jsx)(q.Ke,{children:j?(0,d.jsx)(z,{round:a,ideaUuid:b,onAnswered:c}):(0,d.jsx)(y,{round:a})})]})})}function y({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=v[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-muted-foreground",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-foreground",children:["A: ",g]}),e<a.questions.length-1&&(0,d.jsx)("div",{className:"mt-4 h-px bg-[#F0EEEA] dark:bg-[#1f1e1c]"})]},c.uuid)})})}function z({round:a,ideaUuid:b,onAnswered:c}){let f=(0,g.c)("elaboration"),[h,q]=(0,e.useState)(0),r=(0,e.useRef)(h),[w,x]=(0,e.useState)("right"),[y,z]=(0,e.useState)({}),[A,B]=(0,e.useState)(!1),[C,D]=(0,e.useState)(null),E=(0,e.useCallback)((a,b)=>{x("left"===b?"right":"left"),q(a)},[]),F=a.questions,G=F[h],H=v[G.category]||G.category,I=(0,e.useCallback)((a,b)=>{if(z(c=>({...c,[a]:{questionId:a,selectedOptionId:b===u?null:b,customText:b===u?c[a]?.customText||"":null}})),b!==u){let a=Math.min(F.length-1,r.current+1);a!==r.current&&setTimeout(()=>E(a,"left"),200)}},[F.length,E]),J=(0,e.useCallback)((a,b)=>{z(c=>({...c,[a]:{...c[a],questionId:a,selectedOptionId:null,customText:b}}))},[]),K=F.filter(a=>a.required).every(a=>{let b=y[a.questionId];return!!b&&!!(b.selectedOptionId||b.customText&&b.customText.trim())}),L=async()=>{B(!0),D(null);let d=Object.values(y),e=await s(b,a.uuid,d);e.success?(await c(),B(!1)):(B(!1),D(e.error||f("submitFailed")))},M=(a=>{let b=y[a];return b?null===b.selectedOptionId&&null!==b.customText&&void 0!==b.customText?u:b.selectedOptionId||null:null})(G.questionId),N=M===u,O=h===F.length-1,P=!!(y[G.questionId]?.customText??"").trim();return(0,d.jsxs)("div",{className:"overflow-hidden p-3.5",children:[(0,d.jsxs)("div",{className:"right"===w?"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-muted-foreground",children:G.text}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,d.jsx)(o.$,{variant:"ghost",size:"icon",onClick:()=>E(h-1,"right"),disabled:0===h,className:"h-7 w-7 text-muted-foreground disabled:opacity-30",children:(0,d.jsx)(j.A,{className:"h-4 w-4"})}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:f("navCounter",{current:h+1,total:F.length})}),(0,d.jsx)(o.$,{variant:"ghost",size:"icon",onClick:()=>E(h+1,"left"),disabled:h===F.length-1,className:"h-7 w-7 text-muted-foreground disabled:opacity-30",children:(0,d.jsx)(i.A,{className:"h-4 w-4"})})]})]}),(0,d.jsxs)("div",{className:"mt-3",children:[G.options.map((a,b)=>{let c=M===a.id;return(0,d.jsxs)("div",{children:[(0,d.jsxs)(o.$,{variant:"ghost",onClick:()=>I(G.questionId,a.id),className:`flex w-full items-start justify-between gap-2.5 px-3.5 py-3 h-auto text-left transition-colors rounded-none ${c?"bg-[#F7F6F3] dark:bg-[#1e1d1b]":"hover:bg-background"}`,children:[(0,d.jsxs)("span",{className:"flex flex-1 min-w-0 items-start gap-2.5",children:[(0,d.jsx)("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-border text-xs font-medium text-foreground/80",children:b+1}),(0,d.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col items-start",children:[(0,d.jsx)("span",{className:"whitespace-normal [overflow-wrap:anywhere] text-[13px] text-foreground",children:a.label}),a.description&&(0,d.jsx)("span",{className:"whitespace-normal [overflow-wrap:anywhere] text-[11px] text-muted-foreground",children:a.description})]})]}),c&&(0,d.jsx)(k.A,{className:"mt-1 h-4 w-4 shrink-0 text-muted-foreground"})]}),b<G.options.length-1&&(0,d.jsx)("div",{className:"h-px bg-[#F0EEEA] dark:bg-[#1f1e1c]"})]},a.id)}),(0,d.jsx)("div",{className:"h-px bg-[#F0EEEA] dark:bg-[#1f1e1c]"}),(0,d.jsxs)("div",{className:`flex w-full items-center gap-2.5 px-3.5 py-3 transition-colors ${N?"bg-[#F7F6F3] dark:bg-[#1e1d1b]":"hover:bg-background"}`,children:[(0,d.jsx)("span",{className:"flex h-7 w-7 shrink-0 cursor-pointer items-center justify-center rounded-md bg-border",onClick:()=>I(G.questionId,u),children:(0,d.jsx)(l.A,{className:"h-3.5 w-3.5 text-muted-foreground"})}),N?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.p,{type:"text",value:y[G.questionId]?.customText||"",onChange:a=>J(G.questionId,a.target.value),onKeyDown:a=>{if((0,t.P)(a)||"Enter"!==a.key||a.shiftKey||a.ctrlKey||a.metaKey||(a.preventDefault(),O||!P))return;let b=r.current+1;setTimeout(()=>E(b,"left"),200)},placeholder:f("somethingElse"),className:"flex-1 border-none bg-transparent text-[13px] text-foreground placeholder:italic placeholder:text-[#B4B2A9] shadow-none focus-visible:ring-0",autoFocus:!0}),!O&&(0,d.jsx)(o.$,{type:"button",variant:"ghost",size:"icon",onClick:()=>{if(O||!P)return;let a=r.current+1;setTimeout(()=>E(a,"left"),200)},disabled:!P,"aria-label":f("confirmAnswerAria"),className:"h-7 w-7 text-muted-foreground disabled:opacity-30",children:(0,d.jsx)(m.A,{className:"h-4 w-4"})})]}):(0,d.jsx)(o.$,{variant:"ghost",onClick:()=>I(G.questionId,u),className:"flex-1 justify-start text-left text-[13px] italic text-muted-foreground h-auto p-0 hover:bg-transparent",children:f("somethingElse")})]})]})]},h),C&&(0,d.jsx)("div",{className:"mt-3 rounded-lg bg-destructive/10 p-2.5 text-[12px] text-destructive",children:C}),(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-primary"}),f(`category.${H}`)]}),(0,d.jsx)(o.$,{onClick:L,disabled:!K||A,className:"bg-primary hover:bg-[#B56A42] text-white text-[13px]",children:A?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.A,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),f("submitting")]}):f("submitAnswers")})]})]})}},26402:(a,b,c)=>{c.d(b,{o:()=>d});function d({ideaStatus:a,elaborationStatus:b,elaboration:c}){return!("elaborating"!==a||"resolved"===b||!c||0===c.rounds.length||c.rounds.some(a=>"pending_answers"===a.status))}},30259:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(71255),e=c(92633),f=c(61212),g=a([d,e,f]);[d,e,f]=g.then?(await g)():g,b()}catch(a){b(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,isContainer:a.isContainer});return(0,f.revalidatePath)(`/projects/${a.projectUuid}/ideas`),{success:!0,ideaUuid:c.uuid}}catch(a){return k.default.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,...void 0!==a.isContainer?{isContainer:a.isContainer}:{}},{actorType:b.type,actorUuid:b.actorUuid});return(0,f.revalidatePath)(`/projects/${a.projectUuid}/ideas`),{success:!0,idea:c}}catch(a){return k.default.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.default.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.default.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,"4011c83e1b12a2739edd58fcb2e95dc4b046108757",null),(0,e.A)(o,"40156cd739a0e620a2cdedd92a3202768c5a4b5ca6",null),(0,e.A)(p,"606d685c5f17fdf11e43ace02f27e25c34f8848f45",null),(0,e.A)(q,"40b712149ce916667872e5fe8bccf9bbcedc08fdc0",null),d()}catch(a){d(a)}})},35770:(a,b,c)=>{c.d(b,{z:()=>e});var d=c(42377);let e=(0,d.createServerReference)("4086007f35b03ed9ef0b684349502784a4eefb3535",d.callServer,void 0,d.findSourceMapURL,"getElaborationAction")},45133:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{X:()=>i,y:()=>h});var e=c(71255),f=c(89998),g=a([e,f]);[e,f]=g.then?(await g)():g;let i={NO_APPROVED_PROPOSAL:"no_approved_proposal",NO_UNFINISHED_TASKS:"no_unfinished_tasks"},j=["done","closed"],k={action:"start_development",precondition:async({companyUuid:a,ideaUuid:b,idea:c})=>{if("agent"!==c.assigneeType&&"agent_instance"!==c.assigneeType)throw new f.$("ASSIGNEE_NOT_AGENT","The Idea's assignee is not an agent — there is no daemon to wake");let d=await e.z.proposal.findFirst({where:{companyUuid:a,projectUuid:c.projectUuid,status:"approved",inputUuids:{array_contains:[b]}},select:{uuid:!0},orderBy:{createdAt:"desc"}});if(!d)throw new f.$("PRECONDITION_FAILED","The Idea has no approved proposal",i.NO_APPROVED_PROPOSAL);let g=await e.z.task.count({where:{companyUuid:a,proposalUuid:d.uuid,status:{notIn:j}}});if(0===g)throw new f.$("PRECONDITION_FAILED","All tasks of the approved proposal are finished",i.NO_UNFINISHED_TASKS);return{proposalUuid:d.uuid,remainingTasks:g}},offlinePolicy:"require_online"};async function h({companyUuid:a,ideaUuid:b,actorUuid:c,actorType:d,temporaryCwd:e}){await (0,f.u)(k,{companyUuid:a,ideaUuid:b,actorUuid:c,actorType:d,temporaryCwd:e})}d()}catch(a){d(a)}})},48127:(a,b,c)=>{c.d(b,{U:()=>e});var d=c(42377);let e=(0,d.createServerReference)("6027b97b896a76845c8a9b775de00ff73667c1b2da",d.callServer,void 0,d.findSourceMapURL,"getProposalsForIdeaAction")},48798:(a,b,c)=>{c.d(b,{c:()=>e});var d=c(42377);let e=(0,d.createServerReference)("600911458dec1c84a552ce0b93044e401bf9457539",d.callServer,void 0,d.findSourceMapURL,"getTasksForProposalAction")},50468:(a,b,c)=>{c.d(b,{h:()=>w});var d=c(10837),e=c(21968),f=c(9222),g=c(68884),h=c(76549),i=c(86460),j=c(56149),k=c(9810),l=c(55775),m=c(42424),n=c(2852),o=c(11568),p=c(10297),q=c(74113),r=c(96307),s=c(42377);let t=(0,s.createServerReference)("00d96491366ddec04b772baca9b56799c88de48796",s.callServer,void 0,s.findSourceMapURL,"getProjectsAndGroupsAction");s.callServer,s.findSourceMapURL;let u=(0,s.createServerReference)("602da982abe60dd5a0fbce147d37a7f671000371ef",s.callServer,void 0,s.findSourceMapURL,"moveIdeaAction");var v=c(54722);function w({open:a,onOpenChange:b,onCloseAutoFocus:c,ideaUuid:s,projectUuid:w,onMoved:x}){let y=(0,f.c)("ideas"),z=(0,f.c)("common"),A=(0,g.r)(),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(!1),J=(()=>{if(!F)return null;for(let a of B){let b=a.projects.find(a=>a.uuid===F);if(b)return b.name}return null})(),[K,L]=(0,e.useState)(null),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)(null),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(null);(0,e.useRef)(0);let U=(0,e.useCallback)(a=>{a&&a.addEventListener("wheel",a=>a.stopPropagation(),{passive:!0})},[]);(0,e.useCallback)(async()=>{G(null),L(null),P(null),T(null),E(!0);try{let a=await t();if(a.success){let{projects:b,groups:c}=a.data,d=b.filter(a=>a.uuid!==w).map(a=>({uuid:a.uuid,name:a.name,groupUuid:a.groupUuid})),e=new Map;for(let a of c)e.set(a.uuid,a.name);let f=new Map,g=[];for(let a of d)a.groupUuid&&e.has(a.groupUuid)?(f.has(a.groupUuid)||f.set(a.groupUuid,{uuid:a.groupUuid,name:e.get(a.groupUuid),projects:[]}),f.get(a.groupUuid).projects.push({uuid:a.uuid,name:a.name})):g.push({uuid:a.uuid,name:a.name});let h=[...f.values()];g.length>0&&h.push({uuid:"ungrouped",name:y("ungrouped"),projects:g}),C(h)}}catch(a){v.q.error("Failed to load projects for move dialog:",a),C([])}E(!1)},[w,y]);let V=async()=>{if(F&&K&&!Q){R(!0),T(null);try{let a=await u(s,F);if(a.success){let c=a.moved;h.oR.success(y("moveDialog.successToast",{...c}),{action:{label:y("moveDialog.viewMovedIdea"),onClick:()=>{A.push(`/projects/${F}/dashboard?panel=${s}&tab=overview`)}}}),b(!1),A.refresh(),x(c)}else T(y("moveDialog.error",{message:a.error||y("moveFailed")}))}catch(a){T(y("moveDialog.error",{message:a instanceof Error?a.message:y("moveFailed")}))}R(!1)}};return(0,d.jsx)(o.lG,{open:a,onOpenChange:b,children:(0,d.jsxs)(o.Cf,{onCloseAutoFocus:c,children:[(0,d.jsxs)(o.c7,{children:[(0,d.jsx)(o.L3,{children:y("moveDialog.title")}),(0,d.jsx)(o.rr,{children:y("moveDialog.description")})]}),(0,d.jsxs)("div",{className:"space-y-3 pt-1",children:[(0,d.jsx)(n.J,{htmlFor:"move-target-project",className:"text-[13px] font-medium text-foreground",children:y("moveDialog.targetProjectLabel")}),D?(0,d.jsx)("div",{className:"flex items-center justify-center h-10 border border-border rounded-md",children:(0,d.jsx)(i.A,{className:"h-4 w-4 animate-spin text-muted-foreground"})}):(0,d.jsxs)(q.AM,{open:H,onOpenChange:I,children:[(0,d.jsx)(q.Wv,{asChild:!0,children:(0,d.jsxs)(m.$,{id:"move-target-project",variant:"outline",role:"combobox","aria-expanded":H,className:(0,r.cn)("w-full justify-between border-border font-normal",!J&&"text-muted-foreground"),children:[J??y("moveDialog.targetProjectPlaceholder"),(0,d.jsx)(j.A,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,d.jsx)(q.hl,{ref:U,className:"w-[--radix-popover-trigger-width] p-0 pointer-events-auto",align:"start",children:(0,d.jsxs)(p.uB,{children:[(0,d.jsx)(p.G7,{placeholder:y("moveDialog.searchProjects")}),(0,d.jsxs)(p.oI,{children:[(0,d.jsx)(p.xL,{children:y("noProjectsFound")}),B.map(a=>(0,d.jsx)(p.L$,{heading:a.name,children:a.projects.map(b=>(0,d.jsxs)(p.h_,{value:`${b.name} ${a.name}`,onSelect:()=>{G(b.uuid),I(!1)},children:[(0,d.jsx)(k.A,{className:(0,r.cn)("mr-2 h-4 w-4",F===b.uuid?"opacity-100":"opacity-0")}),b.name]},b.uuid))},a.uuid))]})]})})]}),F&&(0,d.jsx)("div",{role:"status","aria-live":"polite",className:"rounded-lg border border-border bg-background p-3 text-[13px] text-foreground",children:M?(0,d.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,d.jsx)(i.A,{className:"h-3.5 w-3.5 animate-spin"}),(0,d.jsx)("span",{children:y("moveDialog.previewLoading")})]}):O?(0,d.jsxs)("div",{className:"flex items-start gap-2 text-destructive",children:[(0,d.jsx)(l.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,d.jsx)("span",{children:O})]}):K?(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)("p",{children:y("moveDialog.previewSummary",{...K})}),(0,d.jsx)("p",{className:"text-[12px] text-muted-foreground",children:y("moveDialog.previewWarning")})]}):null}),S&&(0,d.jsx)("p",{className:"text-xs text-destructive",role:"alert",children:S})]}),(0,d.jsxs)("div",{className:"flex justify-end gap-3 pt-2",children:[(0,d.jsx)(m.$,{variant:"outline",className:"border-border",onClick:()=>b(!1),disabled:Q,children:z("cancel")}),(0,d.jsx)(m.$,{className:"bg-primary hover:bg-[#B56A42] text-white",onClick:V,disabled:!F||!K||Q||M,children:Q?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.A,{className:"mr-2 h-4 w-4 animate-spin"}),y("moving")]}):y("moveDialog.confirm")})]})]})})}},51017:(a,b,c)=>{c.d(b,{J:()=>e});var d=c(42377);let e=(0,d.createServerReference)("40156cd739a0e620a2cdedd92a3202768c5a4b5ca6",d.callServer,void 0,d.findSourceMapURL,"updateIdeaAction")},56568:(a,b,c)=>{c.d(b,{Z:()=>e});var d=c(42377);let e=(0,d.createServerReference)("606d685c5f17fdf11e43ace02f27e25c34f8848f45",d.callServer,void 0,d.findSourceMapURL,"deleteIdeaAction")},57644:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Qd:()=>r,U$:()=>w,UN:()=>u,WD:()=>y,co:()=>v,cq:()=>q,d1:()=>z,nR:()=>s,s$:()=>x,wm:()=>t,zS:()=>A});var e=c(2613);c(50785);var f=c(9259),g=c(61212),h=c(97879),i=c(53870),j=c(50530),k=c(33994),l=c(4284),m=c(23733),n=c(97307),o=c(12217),p=a([f,g,h,i,j,k,l,m]);async function q(a){let b=await (0,f.d)();if(!b)return{success:!1,error:"Unauthorized"};let c=await (0,g.Zl)(b.companyUuid,a);return c?{success:!0,data:c}:{success:!1,error:"Not found"}}async function r(a){let b=await (0,f.d)();if(!b)return{success:!1,error:"Unauthorized"};let c=await (0,j.gg)(b.companyUuid,a);return c?{success:!0,data:c}:{success:!1,error:"Not found"}}async function s(a,b){let c=await (0,f.d)();if(!c)return{success:!1,error:"Unauthorized"};try{let d=await (0,g.bY)(c.companyUuid,a,b,c.actorUuid,c.type);return{success:!0,moved:d.moved}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to move idea"}}}async function t(a,b){let c=await (0,f.d)();if(!c)return{success:!1,error:"Unauthorized"};try{let d=await (0,g.MY)(c.companyUuid,a);if(!d)return{success:!1,error:"Idea not found"};if(d.projectUuid===b)return{success:!1,error:"Idea is already in the target project"};let e=await (0,g.jJ)(c.companyUuid,a,b);return{success:!0,moved:e.moved}}catch(a){return n.default.error({err:a},"Failed to preview idea move"),{success:!1,error:a instanceof Error?a.message:"Failed to preview move"}}}async function u(a,b){let c=await (0,f.d)();if(!c)return{success:!1,error:"Unauthorized"};let d=await (0,h.fS)(c.companyUuid,a,b);return{success:!0,data:d}}async function v(a,b){let c=await (0,f.d)();if(!c)return{success:!1,error:"Unauthorized"};let{tasks:d}=await (0,j.Vk)({companyUuid:c.companyUuid,projectUuid:a,proposalUuids:[b],skip:0,take:100});return{success:!0,data:d}}async function w(a,b){let c=await (0,f.d)();if(!c)return{success:!1,error:"Unauthorized"};let d=(await (0,h.fS)(c.companyUuid,a,b)).filter(a=>"approved"===a.status).map(a=>a.uuid),e=await (0,i.yZ)(c.companyUuid,d,"report");return e.sort((a,b)=>new Date(b.createdAt).getTime()-new Date(a.createdAt).getTime()),{success:!0,data:e}}async function x(){let a=await (0,f.d)();if(!a)return{success:!1,error:"Unauthorized"};let[{projects:b},{groups:c}]=await Promise.all([(0,k.hF)({companyUuid:a.companyUuid,skip:0,take:100}),(0,l.a1)(a.companyUuid)]);return{success:!0,data:{projects:b,groups:c}}}async function y(a,b){let c=await (0,f.d)();if(!c)return{success:!1,error:"Unauthorized"};try{let d=await (0,g.EZ)(a,b,c.companyUuid,{actorType:c.type,actorUuid:c.actorUuid});return{success:!0,data:d}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to set parent"}}}async function z(a){let b=await (0,f.d)();if(!b)return{success:!1,error:"Unauthorized"};let{ideas:c,total:d}=await (0,g.BB)({companyUuid:b.companyUuid,projectUuid:a,skip:0,take:200});return{success:!0,data:c.map(a=>({uuid:a.uuid,title:a.title})),total:d,hasMore:d>c.length}}async function A(a){let b=await (0,f.d)();if(!b)return{success:!1,error:"Unauthorized"};try{let c=await (0,m.t8)({companyUuid:b.companyUuid,ideaUuid:a});return{success:!0,data:c}}catch(a){return n.default.error({err:a},"Failed to get elaboration"),{success:!1,error:a instanceof Error?a.message:"Failed to get elaboration"}}}[f,g,h,i,j,k,l,m]=p.then?(await p)():p,(0,o.D)([q,r,s,t,u,v,w,x,y,z,A]),(0,e.A)(q,"40b4a0e98175441ca9bd980463fa7fedeb7b8a7e1a",null),(0,e.A)(r,"40f71cbfef2707e32c995692457638015649a998b5",null),(0,e.A)(s,"602da982abe60dd5a0fbce147d37a7f671000371ef",null),(0,e.A)(t,"60bb2e2a9ae41afffd3c04e4ad2055ea72c8dcbda8",null),(0,e.A)(u,"6027b97b896a76845c8a9b775de00ff73667c1b2da",null),(0,e.A)(v,"600911458dec1c84a552ce0b93044e401bf9457539",null),(0,e.A)(w,"60ca2eff388485dcb9faf78f94388a49be2d7795f4",null),(0,e.A)(x,"00d96491366ddec04b772baca9b56799c88de48796",null),(0,e.A)(y,"6014f58b5386dae958784423149acc09255b0ab9d1",null),(0,e.A)(z,"40f79bfbedab92ef2b2a5e10a65bfff644d6f3a5ab",null),(0,e.A)(A,"402f2e295b160fd8f940fd1f352e06efc45101c604",null),d()}catch(a){d(a)}})},68952:(a,b,c)=>{c.d(b,{s:()=>w});var d=c(10837),e=c(21968),f=c(9222),g=c(76549),h=c(77840),i=c(86460),j=c(42424),k=c(6019),l=c(99127),m=c(70028);let n=new Set(["done","closed"]);function o({assignee:a,proposals:b,tasks:c}){return!!a&&("agent"===a.type||"agent_instance"===a.type)&&!(b&&b.some(a=>"approved"===a.status)&&c&&0!==c.length&&c.every(a=>n.has(a.status)))}var p=c(42377);let q=(0,p.createServerReference)("603b4bc8a94ce336a84877d2b53900038ab5c5e6b9",p.callServer,void 0,p.findSourceMapURL,"yoloRequestedAction");var r=c(85933),s=c(76799),t=c(77078);let u={unauthorized:"errorGeneric",not_human:"errorGeneric",idea_not_found:"errorGeneric",assignee_not_agent:"errorAssigneeNotAgent",agent_offline:"errorAgentOffline",instance_offline:"errorInstanceOffline",fixed_cwd_host_offline:"errorFixedCwdHostOffline",unknown:"errorGeneric"},v="bg-[#7F5AF0] hover:bg-[#6D48DE] dark:bg-[#6E56C8] dark:hover:bg-[#7C63D8] text-white";function w({ideaUuid:a,assignee:b,assigneeName:c,proposals:n,tasks:p,onStarted:w,renderAction:x,disabledReason:y,onCloseAutoFocus:z}){var A;let B=(0,f.c)("yolo"),C=(0,m.kz)()?.connections??[],[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),{start:J,pickerState:K,confirmPick:L,confirmTemporary:M,cancelPick:N,isResolving:O}=(0,s.E)({reassignNoWake:r.U,previewIdeaUuid:a}),P=b?"agent"===b.type?b.uuid:"agent_instance"===b.type?b.instance?.agentUuid??null:null:null,Q=null!==P&&C.some(a=>a.agentUuid===P&&"online"===a.effectiveStatus),R=o({assignee:b,proposals:n,tasks:p}),S=o(A={assignee:b,proposals:n,tasks:p,agentOnline:Q})&&A.agentOnline;if(!x&&(!R||F))return F?(0,d.jsx)("span",{className:"text-[11px] text-[#00796B] dark:text-[#4FD1C0]",children:B("startedHint")}):null;let T=async b=>{E(!0);try{let c=b?await q(a,b):await q(a);c.success?(G(!0),g.oR.success(B("startedHint")),w?.()):g.oR.error(B(u[c.errorCode??"unknown"]))}catch{g.oR.error(B("errorGeneric"))}finally{E(!1)}},U=y||(D||O?B("starting"):F?B("startedHint"):P?R?S?void 0:B("offlineHint"):B("completedHint"):B("errorAssigneeNotAgent"));return x||Q?(0,d.jsxs)(d.Fragment,{children:[x?.({label:B("button"),disabledReason:U,busy:D||O||null!==K||H,onSelect:()=>{U||I(!0)}}),(0,d.jsxs)(k.Lt,{open:H,onOpenChange:I,children:[!x&&(0,d.jsx)(k.tv,{asChild:!0,children:(0,d.jsxs)(j.$,{className:v,disabled:!S||D||O,children:[(0,d.jsx)(h.A,{className:"mr-2 h-4 w-4"}),B("button")]})}),(0,d.jsxs)(k.EO,{onCloseAutoFocus:z,children:[(0,d.jsxs)(k.wd,{children:[(0,d.jsx)(k.r7,{children:B("confirmTitle")}),(0,d.jsx)(k.$v,{children:B("confirmDescription")})]}),(0,d.jsxs)(k.ck,{children:[(0,d.jsx)(k.Zr,{disabled:D,children:B("cancel")}),(0,d.jsx)(j.$,{className:v,onClick:()=>{U||(I(!1),J({ideaUuid:a,wake:T}))},disabled:!!U,children:D?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.A,{className:"mr-2 h-4 w-4 animate-spin"}),B("starting")]}):B("confirmCta")})]})]})]}),(0,d.jsx)(t.V,{open:null!==K,onCloseAutoFocus:z,agentName:c??"",instances:K?.instances??[],agentUuid:K?.agentUuid,onConfirm:L,onTemporaryConfirm:M,onCancel:N})]}):(0,d.jsx)(l.Bc,{delayDuration:300,children:(0,d.jsxs)(l.m_,{children:[(0,d.jsx)(l.k$,{asChild:!0,children:(0,d.jsx)("span",{tabIndex:0,className:"inline-flex",children:(0,d.jsxs)(j.$,{className:v,disabled:!0,children:[(0,d.jsx)(h.A,{className:"mr-2 h-4 w-4"}),B("button")]})})}),(0,d.jsx)(l.ZI,{children:B("offlineHint")})]})})}},71819:(a,b,c)=>{c.d(b,{w:()=>u});var d=c(10837),e=c(21968),f=c(9222),g=c(76549),h=c(86460),i=c(58270),j=c(42424),k=c(99127),l=c(70028);let m=new Set(["done","closed"]);function n({assignee:a,proposals:b,tasks:c}){return!!a&&("agent"===a.type||"agent_instance"===a.type)&&!!b&&!!b.some(a=>"approved"===a.status)&&!!c&&!!c.some(a=>!m.has(a.status))&&!0}var o=c(42377);let p=(0,o.createServerReference)("60ce12bdf425503f52d8183cdeecfa43f2ef170f10",o.callServer,void 0,o.findSourceMapURL,"startDevelopmentAction");var q=c(85933),r=c(76799),s=c(77078);let t={unauthorized:"errorGeneric",not_human:"errorGeneric",idea_not_found:"errorGeneric",assignee_not_agent:"errorAssigneeNotAgent",no_approved_proposal:"errorNoApprovedProposal",no_unfinished_tasks:"errorNoUnfinishedTasks",agent_offline:"errorAgentOffline",instance_offline:"errorInstanceOffline",fixed_cwd_host_offline:"errorFixedCwdHostOffline",unknown:"errorGeneric"};function u({ideaUuid:a,assignee:b,assigneeName:c,proposals:m,tasks:o,onStarted:u,renderAction:v,disabledReason:w,onCloseAutoFocus:x}){var y;let z=(0,f.c)("startDevelopment"),A=(0,l.kz)()?.connections??[],[B,C]=(0,e.useState)(!1),[D,E]=(0,e.useState)(!1),{start:F,pickerState:G,confirmPick:H,confirmTemporary:I,cancelPick:J,isResolving:K}=(0,r.E)({reassignNoWake:q.U,previewIdeaUuid:a}),L=b?"agent"===b.type?b.uuid:"agent_instance"===b.type?b.instance?.agentUuid??null:null:null,M=null!==L&&A.some(a=>a.agentUuid===L&&"online"===a.effectiveStatus),N=n({assignee:b,proposals:m,tasks:o}),O=n(y={assignee:b,proposals:m,tasks:o,agentOnline:M})&&y.agentOnline;if(!v&&(!N||D))return D?(0,d.jsx)("span",{className:"text-[11px] text-[#00796B] dark:text-[#4FD1C0]",children:z("startedHint")}):null;let P=async b=>{C(!0);try{let c=b?await p(a,b):await p(a);c.success?(E(!0),g.oR.success(z("startedHint")),u?.()):g.oR.error(z(t[c.errorCode??"unknown"]))}catch{g.oR.error(z("errorGeneric"))}finally{C(!1)}},Q=w||(B||K?z("starting"):D?z("startedHint"):L?m?.some(a=>"approved"===a.status)?N?O?void 0:z("offlineHint"):z("errorNoUnfinishedTasks"):z("errorNoApprovedProposal"):z("errorAssigneeNotAgent")),R=()=>{Q||F({ideaUuid:a,wake:P})},S=(0,d.jsx)(j.$,{className:"bg-primary hover:bg-[#B56A42] text-white",onClick:R,disabled:!O||B||K,children:B?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.A,{className:"mr-2 h-4 w-4 animate-spin"}),z("starting")]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.A,{className:"mr-2 h-4 w-4"}),z("button")]})});return v||M?(0,d.jsxs)(d.Fragment,{children:[v?v({label:z("button"),disabledReason:Q,busy:B||K||null!==G,onSelect:R}):S,(0,d.jsx)(s.V,{open:null!==G,onCloseAutoFocus:x,agentName:c??"",instances:G?.instances??[],agentUuid:G?.agentUuid,onConfirm:H,onTemporaryConfirm:I,onCancel:J})]}):(0,d.jsx)(k.Bc,{delayDuration:300,children:(0,d.jsxs)(k.m_,{children:[(0,d.jsx)(k.k$,{asChild:!0,children:(0,d.jsx)("span",{tabIndex:0,className:"inline-flex",children:S})}),(0,d.jsx)(k.ZI,{children:z("offlineHint")})]})})}},76799:(a,b,c)=>{c.d(b,{E:()=>h});var d=c(21968),e=c(54722),f=c(23871);async function g(a){try{let b=await fetch(`/api/ideas/${encodeURIComponent(a)}/wake-preview`,{headers:{Accept:"application/json"}});if(!b.ok)return null;let c=await b.json();if(!c.success||!c.data)return null;return c.data}catch(a){return e.q.error("wake-target preview fetch failed",a),null}}function h({fetchPreview:a=g,reassignNoWake:b,previewIdeaUuid:c}){let[h,i]=(0,d.useState)(null),[j,k]=(0,d.useState)(!1),[l,m]=(0,d.useState)(null),n=(0,d.useRef)("idle"),o=(0,d.useRef)(null),p=(0,d.useCallback)(()=>{n.current="idle",k(!1)},[]),q=(0,d.useCallback)(async(a,c,d)=>{try{let f=await b(a,c,d);f.success||e.q.debug("pin-then-wake reassign did not persist (continuing to wake)",f.error)}catch(a){e.q.error("pin-then-wake reassign threw (continuing to wake)",a)}},[b]),r=(0,d.useCallback)(async({ideaUuid:b,wake:c})=>{if("idle"===n.current){n.current="running",k(!0);try{let d=await a(b);if(m(d?.resolvedTarget?.source==="project_fixed"?d.resolvedTarget:null),!d||!d.assigneeAgentUuid||"direct"===d.outcome)return void await c();let e=d.assigneeAgentUuid,g=(0,f.C)(d.onlineInstances);if("pick"===d.outcome){if(0===g.length)return void await c();let a={ideaUuid:b,agentUuid:e,instances:g};o.current={state:a,wake:c},n.current="picking",i(a);return}if("auto_pin"===d.outcome){let a=g[0];a?.agentInstanceUuid&&await q(b,e,a.agentInstanceUuid),await c();return}}finally{"picking"!==n.current&&p()}}},[a,q,p]),s=(0,d.useCallback)(async a=>{if("picking"!==n.current||!o.current)return;let{state:b,wake:c}=o.current;n.current="running",o.current=null,i(null);try{a.agentInstanceUuid&&await q(b.ideaUuid,b.agentUuid,a.agentInstanceUuid),await c()}finally{p()}},[q,p]),t=(0,d.useCallback)(()=>{"picking"===n.current&&(o.current=null,i(null),p())},[p]);return{start:r,pickerState:h,confirmPick:s,confirmTemporary:(0,d.useCallback)(async a=>{if("picking"!==n.current||!o.current)return;let{wake:b}=o.current;n.current="running",o.current=null,i(null);try{await b(a)}finally{p()}},[p]),cancelPick:t,isResolving:j,fixedTarget:l}}},79097:(a,b,c)=>{c.d(b,{e:()=>e});var d=c(42377);let e=(0,d.createServerReference)("4024050c71c82bf79bf758729c7402b940bd5f879c",d.callServer,void 0,d.findSourceMapURL,"verifyElaborationAction")},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.default.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,"402fe092b0a647813e2e0cbc6f77153d62b3f4458a",null),d()}catch(a){d(a)}})},82870:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(71255),e=c(92633),f=c(30259),g=a([d,e,f]);[d,e,f]=g.then?(await g)():g,b()}catch(a){b(a)}})},84819:(a,b,c)=>{c.d(b,{Separator:()=>g});var d=c(10837);c(21968);var e=c(72229),f=c(96307);function g({className:a,orientation:b="horizontal",decorative:c=!0,...g}){return(0,d.jsx)(e.b,{"data-slot":"separator",decorative:c,orientation:b,className:(0,f.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",a),...g})}},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=c(30387),p=a([e,f,g,h,i,j,k,l,m,n,o]);[e,f,g,h,i,j,k,l,m,n,o]=p.then?(await p)():p,d()}catch(a){d(a)}})},85933:(a,b,c)=>{c.d(b,{U:()=>e});var d=c(42377);let e=(0,d.createServerReference)("709d91d2ebcd507ccb483317b3c50a2f62b8833071",d.callServer,void 0,d.findSourceMapURL,"reassignIdeaInstanceNoWakeAction")},89998:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$:()=>l,u:()=>k});var e=c(71255),f=c(62729),g=c(85806),h=c(92633),i=c(25383),j=a([e,g,h,i]);[e,g,h,i]=j.then?(await j)():j;class l extends Error{constructor(a,b,c){super(b),this.name="StageAdvanceError",this.code=a,this.reason=c}}async function k(a,{companyUuid:b,ideaUuid:c,actorUuid:d,actorType:j,temporaryCwd:k}){if("user"!==j&&"super_admin"!==j)throw new l("NOT_HUMAN","Only users can perform a stage-advance action");let m=await e.z.idea.findFirst({where:{uuid:c,companyUuid:b}});if(!m)throw new l("IDEA_NOT_FOUND","Idea not found");let n={companyUuid:b,ideaUuid:c,actorUuid:d,actorType:j,idea:{uuid:m.uuid,companyUuid:m.companyUuid,projectUuid:m.projectUuid,status:m.status,elaborationStatus:m.elaborationStatus,assigneeType:m.assigneeType,assigneeUuid:m.assigneeUuid,cwdSource:m.cwdSource,cwdHost:m.cwdHost,runtimeCwd:m.runtimeCwd}},o=await a.precondition(n),p=await (0,h.wo)(b,n.idea.assigneeType,n.idea.assigneeUuid),q=null;p&&(q=await (0,i.gt)({companyUuid:b,actorUserUuid:d,projectUuid:n.idea.projectUuid,agentUuid:p,temporaryTarget:k,registeredInstanceUuid:"agent_instance"===n.idea.assigneeType?n.idea.assigneeUuid:null,registeredSource:"project_fixed"===n.idea.cwdSource?"project_fixed":null,registeredHost:n.idea.cwdHost,registeredRuntimeCwd:n.idea.runtimeCwd}));let r={...o,...q?{resolvedCwdActorUserUuid:q.actorUserUuid,resolvedCwdSource:q.source,resolvedCwdHost:q.host,resolvedRuntimeCwd:q.cwd,resolvedCwdAvailability:q.availability,resolvedCwdPromptPolicy:q.promptPolicy,resolvedCwdAgentInstanceUuid:q.agentInstanceUuid}:{}};if("require_online"===a.offlinePolicy){if(!p){if("agent_instance"===n.idea.assigneeType)throw new l("INSTANCE_OFFLINE","The Idea is pinned to a daemon instance that no longer exists");throw new l("ASSIGNEE_NOT_AGENT","The Idea's assignee is not an agent — there is no daemon to wake")}if(q?.source==="project_fixed"&&"ready"!==q.availability)throw new l("FIXED_CWD_HOST_OFFLINE","The project's fixed cwd target is unavailable");if(q?.source==="registered_instance"&&"ready"!==q.availability)throw new l("INSTANCE_OFFLINE","The Idea is pinned to a daemon instance that has no online connection");if(q?.source==="unconfigured"&&!q.connectionUuid)throw new l("AGENT_OFFLINE","The assigned agent has no online daemon connection")}a.transition&&await a.transition(n),await g.f0.createActivity({companyUuid:b,projectUuid:n.idea.projectUuid,targetType:"idea",targetUuid:c,actorType:j,actorUuid:d,action:a.action,value:r}),f.B.emitChange({companyUuid:b,projectUuid:n.idea.projectUuid,entityType:"idea",entityUuid:c,action:"updated"})}d()}catch(a){d(a)}})},91117:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{E:()=>q,g:()=>p});var e=c(2613);c(50785);var f=c(5562),g=c(9259),h=c(45133),i=c(11166),j=c(89998),k=c(71255),l=c(97307),m=c(25383),n=c(12217),o=a([g,h,i,j,k,m]);async function p(a,b){let c=await (0,g.d)();if(!c)return{success:!1,errorCode:"unauthorized"};if("user"!==c.type&&"super_admin"!==c.type)return{success:!1,errorCode:"not_human"};try{let d=b?await (0,m.e2)({companyUuid:c.companyUuid,userUuid:c.actorUuid,...b}):null;await (0,h.y)({companyUuid:c.companyUuid,ideaUuid:a,actorUuid:c.actorUuid,actorType:c.type,temporaryCwd:d});let e=await k.z.idea.findFirst({where:{uuid:a,companyUuid:c.companyUuid}});return e&&((0,f.revalidatePath)(`/projects/${e.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${e.projectUuid}/ideas`)),{success:!0}}catch(b){return b instanceof j.$?l.default.info({code:b.code,reason:b.reason,ideaUuid:a},"Start development rejected"):l.default.error({err:b,ideaUuid:a},"Failed to start development"),{success:!1,errorCode:function(a){if(a instanceof j.$)switch(a.code){case"NOT_HUMAN":return"not_human";case"IDEA_NOT_FOUND":return"idea_not_found";case"ASSIGNEE_NOT_AGENT":return"assignee_not_agent";case"AGENT_OFFLINE":return"agent_offline";case"INSTANCE_OFFLINE":return"instance_offline";case"FIXED_CWD_HOST_OFFLINE":return"fixed_cwd_host_offline";case"PRECONDITION_FAILED":if(a.reason===h.X.NO_APPROVED_PROPOSAL)return"no_approved_proposal";if(a.reason===h.X.NO_UNFINISHED_TASKS)return"no_unfinished_tasks"}return"unknown"}(b)}}}async function q(a,b){let c=await (0,g.d)();if(!c)return{success:!1,errorCode:"unauthorized"};if("user"!==c.type&&"super_admin"!==c.type)return{success:!1,errorCode:"not_human"};try{let d=b?await (0,m.e2)({companyUuid:c.companyUuid,userUuid:c.actorUuid,...b}):null;await (0,i.p)({companyUuid:c.companyUuid,ideaUuid:a,actorUuid:c.actorUuid,actorType:c.type,temporaryCwd:d});let e=await k.z.idea.findFirst({where:{uuid:a,companyUuid:c.companyUuid}});return e&&((0,f.revalidatePath)(`/projects/${e.projectUuid}/ideas/${a}`),(0,f.revalidatePath)(`/projects/${e.projectUuid}/ideas`)),{success:!0}}catch(b){return b instanceof j.$?l.default.info({code:b.code,reason:b.reason,ideaUuid:a},"Yolo request rejected"):l.default.error({err:b,ideaUuid:a},"Failed to request yolo"),{success:!1,errorCode:function(a){if(a instanceof j.$)switch(a.code){case"NOT_HUMAN":return"not_human";case"IDEA_NOT_FOUND":return"idea_not_found";case"ASSIGNEE_NOT_AGENT":return"assignee_not_agent";case"AGENT_OFFLINE":return"agent_offline";case"INSTANCE_OFFLINE":return"instance_offline";case"FIXED_CWD_HOST_OFFLINE":return"fixed_cwd_host_offline"}return"unknown"}(b)}}}[g,h,i,j,k,m]=o.then?(await o)():o,(0,n.D)([p,q]),(0,e.A)(p,"60ce12bdf425503f52d8183cdeecfa43f2ef170f10",null),(0,e.A)(q,"603b4bc8a94ce336a84877d2b53900038ab5c5e6b9",null),d()}catch(a){d(a)}})}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=731,exports.ids=[731],exports.modules={50731:(a,b,c)=>{c.d(b,{createArchitectureServices:()=>d.S});var d=c(29855);c(85697)}};