@chorus-aidlc/chorus 0.9.4 → 0.11.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 (695) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +481 -430
  3. package/.next/standalone/.next/app-path-routes-manifest.json +57 -44
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +33 -33
  6. package/.next/standalone/.next/routes-manifest.json +33 -17
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +2 -2
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +2 -2
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +2 -2
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +2 -2
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +2 -2
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +3 -3
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -8
  44. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  48. package/.next/standalone/.next/server/app/_not-found.rsc +5 -5
  49. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
  52. package/.next/standalone/.next/server/app/admin/companies/new.rsc +6 -6
  53. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/admin/companies.html +1 -1
  55. package/.next/standalone/.next/server/app/admin/companies.rsc +6 -6
  56. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/admin.html +1 -1
  58. package/.next/standalone/.next/server/app/admin.rsc +6 -6
  59. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route.js +1 -1
  60. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/admin/companies/route.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.js +1 -1
  64. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/admin/session/route.js +1 -1
  66. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/agent-connections/route.js +1 -0
  68. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -0
  69. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -0
  70. package/.next/standalone/.next/server/app/api/agents/[uuid]/route.js +1 -1
  71. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  73. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/agents/route.js +1 -1
  76. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route.js +1 -1
  78. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/api-keys/route.js +1 -1
  80. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/auth/callback/route.js +1 -1
  82. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/auth/check-default/route.js +1 -1
  84. package/.next/standalone/.next/server/app/api/auth/check-default/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/auth/company-oidc/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/auth/identify/route.js +1 -1
  91. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/auth/me/route.js +1 -1
  94. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/auth/refresh/route.js +1 -1
  96. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/auth/session/route.js +1 -1
  98. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
  100. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  102. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -0
  105. package/.next/standalone/.next/server/app/api/daemon/control/route.js.nft.json +1 -0
  106. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -0
  107. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -0
  108. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -0
  109. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -0
  110. package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -0
  111. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -0
  112. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -0
  113. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -0
  114. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -0
  115. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -0
  116. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -0
  117. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -0
  118. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -0
  119. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -0
  120. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -0
  121. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -0
  122. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -0
  123. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -0
  124. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -0
  125. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -0
  126. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -0
  127. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -0
  128. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -0
  129. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -0
  130. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -0
  131. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -0
  132. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -0
  133. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -0
  134. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -0
  135. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -0
  136. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -0
  137. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -0
  138. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -0
  139. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -0
  140. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  141. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -0
  143. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -0
  144. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -0
  145. package/.next/standalone/.next/server/app/api/events/notifications/route.js +6 -2
  146. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  147. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/events/route.js +7 -3
  149. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  150. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/health/route.js +1 -1
  152. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  155. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  160. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  161. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -0
  163. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -0
  164. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -0
  165. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  166. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  167. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  169. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  170. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  171. package/.next/standalone/.next/server/app/api/mcp/route.js +6 -42
  172. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  173. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  175. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  176. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  178. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  179. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  182. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  184. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  185. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  186. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  187. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  188. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  189. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  190. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  191. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  193. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  194. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  195. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  196. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  197. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  199. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  201. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  202. package/.next/standalone/.next/server/app/api/project-groups/route.js +1 -1
  203. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.js +1 -1
  205. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  207. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  231. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  232. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  233. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  234. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  235. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  236. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  237. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  238. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  240. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  241. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  242. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  243. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  244. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  245. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  246. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  247. package/.next/standalone/.next/server/app/api/search/route.js +1 -1
  248. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  249. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  250. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  251. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  252. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  253. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  254. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  255. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  256. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  257. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  258. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  259. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  260. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  261. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  262. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  263. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  264. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  265. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  266. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  267. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  268. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  269. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  270. package/.next/standalone/.next/server/app/index.html +1 -1
  271. package/.next/standalone/.next/server/app/index.rsc +5 -5
  272. package/.next/standalone/.next/server/app/login/admin/page.js +1 -1
  273. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  274. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  275. package/.next/standalone/.next/server/app/login/admin.rsc +6 -6
  276. package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
  277. package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +1 -1
  278. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  279. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  280. package/.next/standalone/.next/server/app/login/callback.rsc +6 -6
  281. package/.next/standalone/.next/server/app/login/page.js +2 -2
  282. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  283. package/.next/standalone/.next/server/app/login/pick-workspace/page.js +1 -1
  284. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  285. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  286. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +6 -6
  287. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  288. package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
  289. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +5 -5
  290. package/.next/standalone/.next/server/app/login.html +1 -1
  291. package/.next/standalone/.next/server/app/login.rsc +6 -6
  292. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  293. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  294. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  295. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  296. package/.next/standalone/.next/server/app/onboarding.rsc +6 -6
  297. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  298. package/.next/standalone/.next/server/app/projects.html +1 -1
  299. package/.next/standalone/.next/server/app/projects.rsc +7 -7
  300. package/.next/standalone/.next/server/app/settings.html +1 -1
  301. package/.next/standalone/.next/server/app/settings.rsc +7 -7
  302. package/.next/standalone/.next/server/app-paths-manifest.json +57 -44
  303. package/.next/standalone/.next/server/chunks/1064.js +1 -0
  304. package/.next/standalone/.next/server/chunks/1596.js +13 -0
  305. package/.next/standalone/.next/server/chunks/2213.js +1 -0
  306. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  307. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  308. package/.next/standalone/.next/server/chunks/3219.js +2 -0
  309. package/.next/standalone/.next/server/chunks/3371.js +1 -0
  310. package/.next/standalone/.next/server/chunks/3419.js +1 -0
  311. package/.next/standalone/.next/server/chunks/369.js +1 -0
  312. package/.next/standalone/.next/server/chunks/4638.js +1 -0
  313. package/.next/standalone/.next/server/chunks/4711.js +530 -0
  314. package/.next/standalone/.next/server/chunks/4958.js +1 -1
  315. package/.next/standalone/.next/server/chunks/5039.js +1 -0
  316. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  317. package/.next/standalone/.next/server/chunks/5631.js +1 -0
  318. package/.next/standalone/.next/server/chunks/6044.js +1 -1
  319. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  320. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  321. package/.next/standalone/.next/server/chunks/6461.js +1 -0
  322. package/.next/standalone/.next/server/chunks/6712.js +1 -0
  323. package/.next/standalone/.next/server/chunks/7002.js +1 -1
  324. package/.next/standalone/.next/server/chunks/7063.js +2 -2
  325. package/.next/standalone/.next/server/chunks/7258.js +37 -0
  326. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  327. package/.next/standalone/.next/server/chunks/7578.js +2 -2
  328. package/.next/standalone/.next/server/chunks/7867.js +1 -0
  329. package/.next/standalone/.next/server/chunks/7897.js +1 -0
  330. package/.next/standalone/.next/server/chunks/8012.js +1 -0
  331. package/.next/standalone/.next/server/chunks/8245.js +31 -0
  332. package/.next/standalone/.next/server/chunks/8322.js +1 -1
  333. package/.next/standalone/.next/server/chunks/8551.js +1 -1
  334. package/.next/standalone/.next/server/chunks/9015.js +1 -1
  335. package/.next/standalone/.next/server/chunks/920.js +1 -1
  336. package/.next/standalone/.next/server/chunks/937.js +16 -2
  337. package/.next/standalone/.next/server/chunks/9629.js +1 -0
  338. package/.next/standalone/.next/server/chunks/9725.js +1 -0
  339. package/.next/standalone/.next/server/instrumentation.js +1 -1
  340. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  341. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  342. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  343. package/.next/standalone/.next/server/next-font-manifest.json +1 -1
  344. package/.next/standalone/.next/server/pages/404.html +1 -1
  345. package/.next/standalone/.next/server/pages/500.html +1 -1
  346. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  347. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  348. package/.next/standalone/.next/server/src/middleware.js +2 -2
  349. package/.next/standalone/.next/static/519aK55QLHaVN7b1TVDkB/_buildManifest.js +1 -0
  350. package/.next/standalone/.next/static/chunks/1217-323cc20b73ebfde9.js +1 -0
  351. package/.next/standalone/.next/static/chunks/{11207-8f4b154804f5a66f.js → 15183-5734d279b26e9414.js} +2 -2
  352. package/.next/standalone/.next/static/chunks/1879-7a8b283283218df2.js +1 -0
  353. package/.next/standalone/.next/static/chunks/19276-50b367d7b93d5f34.js +1 -0
  354. package/.next/standalone/.next/static/chunks/23466-e1176a6d814f4897.js +1 -0
  355. package/.next/standalone/.next/static/chunks/38040-a8687f86dd8e9d67.js +1 -0
  356. package/.next/standalone/.next/static/chunks/4860.43f5ad8a3aaed0e8.js +1 -0
  357. package/.next/standalone/.next/static/chunks/58245-b2ea112ace9624d2.js +1 -0
  358. package/.next/standalone/.next/static/chunks/59296-783831c43aa0162e.js +1 -0
  359. package/.next/standalone/.next/static/chunks/60648-36ccbee4ce232d52.js +1 -0
  360. package/.next/standalone/.next/static/chunks/60694-68232120903209df.js +1 -0
  361. package/.next/standalone/.next/static/chunks/64648-81f03be6f9793ab9.js +1 -0
  362. package/.next/standalone/.next/static/chunks/{94655-1c75e0590a66215e.js → 66969-12f0b22c51f5a410.js} +1 -1
  363. package/.next/standalone/.next/static/chunks/70536-b8bf71098ae11f07.js +1 -0
  364. package/.next/standalone/.next/static/chunks/71350-88c2649fc693c1e8.js +1 -0
  365. package/.next/standalone/.next/static/chunks/78389-b32edc6bd5c570a9.js +1 -0
  366. package/.next/standalone/.next/static/chunks/78584-eb2fa8cf2f266329.js +1 -0
  367. package/.next/standalone/.next/static/chunks/78917-150ed14a99844aab.js +1 -0
  368. package/.next/standalone/.next/static/chunks/8574-b9739eb8d054c793.js +1 -0
  369. package/.next/standalone/.next/static/chunks/93346-5489d90bc2d57190.js +1 -0
  370. package/.next/standalone/.next/static/chunks/99373.0768feb3a08c7da3.js +1 -0
  371. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-0a28456fea4ce95a.js +1 -0
  372. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/{page-63a6a5b6cf9ecf87.js → page-a79969c5c9aadacd.js} +1 -1
  373. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-4bc556c2fc8f3d24.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-e00752a72c31663f.js +1 -0
  375. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-ef82b871895245ea.js +1 -0
  376. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-2c9bcbd11ddb8661.js +1 -0
  377. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-630b168598513ce8.js +1 -0
  378. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-99639479cc98965f.js +1 -0
  379. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-335f2450e44a0fba.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-4a191d69b2b6e880.js +1 -0
  381. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-0faebb478be4c85d.js +1 -0
  382. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-c36345b80cc5bf5c.js → page-583e58d4d689d38b.js} +1 -1
  383. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2e8fcb72687100df.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/admin/companies/[uuid]/page-cc2fe0c5b749cd2f.js +1 -0
  385. package/.next/standalone/.next/static/chunks/app/admin/companies/new/{page-55fb2107f955c9ed.js → page-4f3b3c449c61f6d2.js} +1 -1
  386. package/.next/standalone/.next/static/chunks/app/admin/companies/page-ef720c2b0856166c.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/admin/page-0cc8cf246db43e5d.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-4bc556c2fc8f3d24.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-4bc556c2fc8f3d24.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-4bc556c2fc8f3d24.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-4bc556c2fc8f3d24.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-4bc556c2fc8f3d24.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/api/agents/route-4bc556c2fc8f3d24.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-4bc556c2fc8f3d24.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-4bc556c2fc8f3d24.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-4bc556c2fc8f3d24.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-4bc556c2fc8f3d24.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-4bc556c2fc8f3d24.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-4bc556c2fc8f3d24.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-4bc556c2fc8f3d24.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-4bc556c2fc8f3d24.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-4bc556c2fc8f3d24.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-4bc556c2fc8f3d24.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-4bc556c2fc8f3d24.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/comments/route-4bc556c2fc8f3d24.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-4bc556c2fc8f3d24.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-4bc556c2fc8f3d24.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-4bc556c2fc8f3d24.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-4bc556c2fc8f3d24.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-4bc556c2fc8f3d24.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-4bc556c2fc8f3d24.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-4bc556c2fc8f3d24.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-4bc556c2fc8f3d24.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-4bc556c2fc8f3d24.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-4bc556c2fc8f3d24.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-4bc556c2fc8f3d24.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-4bc556c2fc8f3d24.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-4bc556c2fc8f3d24.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-4bc556c2fc8f3d24.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/events/route-4bc556c2fc8f3d24.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/health/route-4bc556c2fc8f3d24.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-4bc556c2fc8f3d24.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-4bc556c2fc8f3d24.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-4bc556c2fc8f3d24.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-4bc556c2fc8f3d24.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-4bc556c2fc8f3d24.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/mcp/route-4bc556c2fc8f3d24.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-4bc556c2fc8f3d24.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-4bc556c2fc8f3d24.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-4bc556c2fc8f3d24.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-4bc556c2fc8f3d24.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-4bc556c2fc8f3d24.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-4bc556c2fc8f3d24.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/notifications/route-4bc556c2fc8f3d24.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-4bc556c2fc8f3d24.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-4bc556c2fc8f3d24.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-4bc556c2fc8f3d24.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-4bc556c2fc8f3d24.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-4bc556c2fc8f3d24.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-4bc556c2fc8f3d24.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-4bc556c2fc8f3d24.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-4bc556c2fc8f3d24.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-4bc556c2fc8f3d24.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-4bc556c2fc8f3d24.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-4bc556c2fc8f3d24.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-4bc556c2fc8f3d24.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-4bc556c2fc8f3d24.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-4bc556c2fc8f3d24.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-4bc556c2fc8f3d24.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/projects/route-4bc556c2fc8f3d24.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-4bc556c2fc8f3d24.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-4bc556c2fc8f3d24.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-4bc556c2fc8f3d24.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-4bc556c2fc8f3d24.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/search/route-4bc556c2fc8f3d24.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-4bc556c2fc8f3d24.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-4bc556c2fc8f3d24.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-4bc556c2fc8f3d24.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-4bc556c2fc8f3d24.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-4bc556c2fc8f3d24.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/layout-9963339572e2e64e.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/login/admin/page-d470135f7aab6c5e.js +1 -0
  473. package/.next/standalone/.next/static/chunks/app/login/callback/{page-48a34c31a0f8e58c.js → page-0edd93f50cb4f6ea.js} +1 -1
  474. package/.next/standalone/.next/static/chunks/app/login/page-c64b8d40a0781b4c.js +1 -0
  475. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-e0444ad8b50121f5.js +1 -0
  476. package/.next/standalone/.next/static/chunks/app/onboarding/page-e9a69a0c537c704f.js +1 -0
  477. package/.next/standalone/.next/static/chunks/{webpack-4a8c75a0d40c2106.js → webpack-87284a4533d77eaf.js} +1 -1
  478. package/.next/standalone/.next/static/css/{84edd78de243cde6.css → b496025c9cd768cc.css} +1 -1
  479. package/.next/standalone/.next/static/css/e78b3c856420a09f.css +1 -0
  480. package/.next/standalone/.next/static/media/013b72fa676f92e0-s.woff2 +0 -0
  481. package/.next/standalone/.next/static/media/2b5b02fc7e511755-s.woff2 +0 -0
  482. package/.next/standalone/.next/static/media/65f03d54ccadf4a8-s.woff2 +0 -0
  483. package/.next/standalone/.next/static/media/7d4881bb7e1bf84d-s.p.woff2 +0 -0
  484. package/.next/standalone/.next/static/media/b9408752a0c24fb9-s.woff2 +0 -0
  485. package/.next/standalone/.next/static/media/e038a29029a234f2-s.woff2 +0 -0
  486. package/.next/standalone/package.json +3 -1
  487. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  488. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  489. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +2 -2
  490. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  491. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +19 -3
  492. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  493. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  494. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  495. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  496. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
  497. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  498. package/.next/standalone/public/skill/chorus/SKILL.md +2 -2
  499. package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
  500. package/.next/standalone/public/skill/idea-chorus/SKILL.md +19 -3
  501. package/.next/standalone/public/skill/package.json +1 -1
  502. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
  503. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  504. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  505. package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
  506. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  507. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
  508. package/README.md +29 -0
  509. package/README.zh.md +29 -0
  510. package/chorus.mjs +120 -16
  511. package/cli/backfill.mjs +190 -0
  512. package/cli/chorus-client.mjs +154 -0
  513. package/cli/claude-spawner.mjs +415 -0
  514. package/cli/client-args.mjs +146 -0
  515. package/cli/control-handler.mjs +180 -0
  516. package/cli/credentials.mjs +155 -0
  517. package/cli/daemon-agent.mjs +38 -0
  518. package/cli/daemon-banner.mjs +80 -0
  519. package/cli/daemon-config.mjs +84 -0
  520. package/cli/daemon-lifecycle.mjs +191 -0
  521. package/cli/daemon-permission-mode.mjs +68 -0
  522. package/cli/daemon-rest-client.mjs +272 -0
  523. package/cli/daemon.mjs +572 -0
  524. package/cli/event-router.mjs +248 -0
  525. package/cli/interrupt-reporter.mjs +87 -0
  526. package/cli/lineage.mjs +155 -0
  527. package/cli/login.mjs +151 -0
  528. package/cli/mcp-config.mjs +58 -0
  529. package/cli/process-killer.mjs +205 -0
  530. package/cli/prompts.mjs +273 -0
  531. package/cli/sse-listener.mjs +258 -0
  532. package/cli/turn-reporter.mjs +75 -0
  533. package/cli/upload-hooks.mjs +400 -0
  534. package/cli/wake-queue.mjs +121 -0
  535. package/cli/waker.mjs +475 -0
  536. package/package.json +3 -1
  537. package/prisma/migrations/20260611101056_add_idea_lineage/migration.sql +5 -0
  538. package/prisma/migrations/20260615082309_add_daemon_connection/migration.sql +37 -0
  539. package/prisma/migrations/20260616152622_add_daemon_task_execution/migration.sql +28 -0
  540. package/prisma/migrations/20260617013334_generalize_daemon_execution_to_any_resource/migration.sql +38 -0
  541. package/prisma/migrations/20260618022828_add_daemon_execution_interrupted/migration.sql +2 -0
  542. package/prisma/migrations/20260619055322_daemon_session_conversation/migration.sql +77 -0
  543. package/prisma/schema.prisma +368 -185
  544. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js +0 -2
  545. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js.nft.json +0 -1
  546. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page_client-reference-manifest.js +0 -1
  547. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js +0 -2
  548. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js.nft.json +0 -1
  549. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page_client-reference-manifest.js +0 -1
  550. package/.next/standalone/.next/server/chunks/1059.js +0 -1
  551. package/.next/standalone/.next/server/chunks/1165.js +0 -1
  552. package/.next/standalone/.next/server/chunks/1615.js +0 -31
  553. package/.next/standalone/.next/server/chunks/162.js +0 -16
  554. package/.next/standalone/.next/server/chunks/1871.js +0 -1
  555. package/.next/standalone/.next/server/chunks/2909.js +0 -98
  556. package/.next/standalone/.next/server/chunks/2990.js +0 -1
  557. package/.next/standalone/.next/server/chunks/3139.js +0 -1
  558. package/.next/standalone/.next/server/chunks/324.js +0 -1
  559. package/.next/standalone/.next/server/chunks/3555.js +0 -1
  560. package/.next/standalone/.next/server/chunks/3576.js +0 -1
  561. package/.next/standalone/.next/server/chunks/3611.js +0 -158
  562. package/.next/standalone/.next/server/chunks/4090.js +0 -13
  563. package/.next/standalone/.next/server/chunks/4343.js +0 -1
  564. package/.next/standalone/.next/server/chunks/4974.js +0 -1
  565. package/.next/standalone/.next/server/chunks/5491.js +0 -1
  566. package/.next/standalone/.next/server/chunks/5541.js +0 -1
  567. package/.next/standalone/.next/server/chunks/5561.js +0 -7
  568. package/.next/standalone/.next/server/chunks/6643.js +0 -1
  569. package/.next/standalone/.next/server/chunks/6767.js +0 -1
  570. package/.next/standalone/.next/server/chunks/7228.js +0 -2
  571. package/.next/standalone/.next/server/chunks/7462.js +0 -255
  572. package/.next/standalone/.next/server/chunks/7621.js +0 -1
  573. package/.next/standalone/.next/server/chunks/8144.js +0 -1
  574. package/.next/standalone/.next/server/chunks/8637.js +0 -1
  575. package/.next/standalone/.next/server/chunks/896.js +0 -1
  576. package/.next/standalone/.next/server/chunks/9508.js +0 -2
  577. package/.next/standalone/.next/server/chunks/9615.js +0 -1
  578. package/.next/standalone/.next/static/YJZurE1onX9K-RDNIplc5/_buildManifest.js +0 -1
  579. package/.next/standalone/.next/static/chunks/19126-12ce8ade288ce1dc.js +0 -1
  580. package/.next/standalone/.next/static/chunks/19898-2a3d83a3996794cd.js +0 -1
  581. package/.next/standalone/.next/static/chunks/20051-d9233fd4578d66cc.js +0 -1
  582. package/.next/standalone/.next/static/chunks/21932-bce5ba937d1603e1.js +0 -1
  583. package/.next/standalone/.next/static/chunks/23466-842c126491b753bc.js +0 -1
  584. package/.next/standalone/.next/static/chunks/35486-592daa5c9fdf701d.js +0 -1
  585. package/.next/standalone/.next/static/chunks/37880-4395be5cee4112fa.js +0 -1
  586. package/.next/standalone/.next/static/chunks/3853-f94afe2f83089c0d.js +0 -1
  587. package/.next/standalone/.next/static/chunks/4842-95cf4b7efd540e89.js +0 -1
  588. package/.next/standalone/.next/static/chunks/4860.1bebb2a898b170f6.js +0 -1
  589. package/.next/standalone/.next/static/chunks/51841-0e4e0e63b437dcfd.js +0 -1
  590. package/.next/standalone/.next/static/chunks/52206-6048525f57a21502.js +0 -1
  591. package/.next/standalone/.next/static/chunks/55469-ed5ff019ff71ef59.js +0 -1
  592. package/.next/standalone/.next/static/chunks/59296-4fa84fe82e2c7789.js +0 -1
  593. package/.next/standalone/.next/static/chunks/60011-b602fea2afba6992.js +0 -1
  594. package/.next/standalone/.next/static/chunks/70093-0ff6fd59445b5cb9.js +0 -1
  595. package/.next/standalone/.next/static/chunks/93346-c4468893138daac7.js +0 -1
  596. package/.next/standalone/.next/static/chunks/95627-8d9f6d2d88f7a641.js +0 -1
  597. package/.next/standalone/.next/static/chunks/95750-3d0d1d48995d1088.js +0 -1
  598. package/.next/standalone/.next/static/chunks/99373.13c8ac5da1ddabe9.js +0 -1
  599. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-b55a8d6d9bd27276.js +0 -1
  600. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-99297f77cce24151.js +0 -1
  601. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-fd10bca891f0f73a.js +0 -1
  602. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-2e000a7010d1e9ea.js +0 -1
  603. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-75e42d130404ca2b.js +0 -1
  604. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page-6a38c21b164cdc07.js +0 -1
  605. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/page-48c840cb3011bf97.js +0 -1
  606. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-7ec535fac7bbc75d.js +0 -1
  607. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-414b398806324ad1.js +0 -1
  608. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-8f91ed174c14d5f0.js +0 -1
  609. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-f6814f25bbacdbea.js +0 -1
  610. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-92e8980da0d98d48.js +0 -1
  611. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-ab87cbb18d0ee538.js +0 -1
  612. package/.next/standalone/.next/static/chunks/app/admin/companies/[uuid]/page-81682b4aa6859615.js +0 -1
  613. package/.next/standalone/.next/static/chunks/app/admin/companies/page-bbd92a7b214ddbf5.js +0 -1
  614. package/.next/standalone/.next/static/chunks/app/admin/page-c4167418611b4a6b.js +0 -1
  615. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-99297f77cce24151.js +0 -1
  616. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-99297f77cce24151.js +0 -1
  617. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-99297f77cce24151.js +0 -1
  618. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-99297f77cce24151.js +0 -1
  619. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-99297f77cce24151.js +0 -1
  620. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-99297f77cce24151.js +0 -1
  621. package/.next/standalone/.next/static/chunks/app/api/agents/route-99297f77cce24151.js +0 -1
  622. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-99297f77cce24151.js +0 -1
  623. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-99297f77cce24151.js +0 -1
  624. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-99297f77cce24151.js +0 -1
  625. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-99297f77cce24151.js +0 -1
  626. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-99297f77cce24151.js +0 -1
  627. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-99297f77cce24151.js +0 -1
  628. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-99297f77cce24151.js +0 -1
  629. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-99297f77cce24151.js +0 -1
  630. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-99297f77cce24151.js +0 -1
  631. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-99297f77cce24151.js +0 -1
  632. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-99297f77cce24151.js +0 -1
  633. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-99297f77cce24151.js +0 -1
  634. package/.next/standalone/.next/static/chunks/app/api/comments/route-99297f77cce24151.js +0 -1
  635. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-99297f77cce24151.js +0 -1
  636. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-99297f77cce24151.js +0 -1
  637. package/.next/standalone/.next/static/chunks/app/api/events/route-99297f77cce24151.js +0 -1
  638. package/.next/standalone/.next/static/chunks/app/api/health/route-99297f77cce24151.js +0 -1
  639. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-99297f77cce24151.js +0 -1
  640. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-99297f77cce24151.js +0 -1
  641. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-99297f77cce24151.js +0 -1
  642. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-99297f77cce24151.js +0 -1
  643. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-99297f77cce24151.js +0 -1
  644. package/.next/standalone/.next/static/chunks/app/api/mcp/route-99297f77cce24151.js +0 -1
  645. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-99297f77cce24151.js +0 -1
  646. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-99297f77cce24151.js +0 -1
  647. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-99297f77cce24151.js +0 -1
  648. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-99297f77cce24151.js +0 -1
  649. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-99297f77cce24151.js +0 -1
  650. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-99297f77cce24151.js +0 -1
  651. package/.next/standalone/.next/static/chunks/app/api/notifications/route-99297f77cce24151.js +0 -1
  652. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-99297f77cce24151.js +0 -1
  653. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-99297f77cce24151.js +0 -1
  654. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-99297f77cce24151.js +0 -1
  655. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-99297f77cce24151.js +0 -1
  656. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-99297f77cce24151.js +0 -1
  657. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-99297f77cce24151.js +0 -1
  658. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-99297f77cce24151.js +0 -1
  659. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-99297f77cce24151.js +0 -1
  660. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-99297f77cce24151.js +0 -1
  661. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-99297f77cce24151.js +0 -1
  662. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-99297f77cce24151.js +0 -1
  663. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-99297f77cce24151.js +0 -1
  664. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-99297f77cce24151.js +0 -1
  665. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-99297f77cce24151.js +0 -1
  666. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-99297f77cce24151.js +0 -1
  667. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-99297f77cce24151.js +0 -1
  668. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-99297f77cce24151.js +0 -1
  669. package/.next/standalone/.next/static/chunks/app/api/projects/route-99297f77cce24151.js +0 -1
  670. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-99297f77cce24151.js +0 -1
  671. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-99297f77cce24151.js +0 -1
  672. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-99297f77cce24151.js +0 -1
  673. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-99297f77cce24151.js +0 -1
  674. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-99297f77cce24151.js +0 -1
  675. package/.next/standalone/.next/static/chunks/app/api/search/route-99297f77cce24151.js +0 -1
  676. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-99297f77cce24151.js +0 -1
  677. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-99297f77cce24151.js +0 -1
  678. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-99297f77cce24151.js +0 -1
  679. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-99297f77cce24151.js +0 -1
  680. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-99297f77cce24151.js +0 -1
  681. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-99297f77cce24151.js +0 -1
  682. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-99297f77cce24151.js +0 -1
  683. package/.next/standalone/.next/static/chunks/app/layout-482dee7dace72c88.js +0 -1
  684. package/.next/standalone/.next/static/chunks/app/login/admin/page-4e72e6e4327ee7cd.js +0 -1
  685. package/.next/standalone/.next/static/chunks/app/login/page-dcb689dfe6e69879.js +0 -1
  686. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-ee9bda8bfc4e0697.js +0 -1
  687. package/.next/standalone/.next/static/chunks/app/onboarding/page-922a196db6eb2385.js +0 -1
  688. package/.next/standalone/.next/static/css/bfe962487ee66da7.css +0 -1
  689. package/.next/standalone/.next/static/media/0f1bdadaf30e2d5f-s.woff2 +0 -0
  690. package/.next/standalone/.next/static/media/2c34d62a75506231-s.woff2 +0 -0
  691. package/.next/standalone/.next/static/media/601f5c280d60caca-s.woff2 +0 -0
  692. package/.next/standalone/.next/static/media/a115172161b307bb-s.woff2 +0 -0
  693. package/.next/standalone/.next/static/media/d100b2a099e34044-s.woff2 +0 -0
  694. package/.next/standalone/.next/static/media/f5271587012faf78-s.p.woff2 +0 -0
  695. /package/.next/standalone/.next/static/{YJZurE1onX9K-RDNIplc5 → 519aK55QLHaVN7b1TVDkB}/_ssgManifest.js +0 -0
@@ -0,0 +1,400 @@
1
+ // cli/upload-hooks.mjs
2
+ // Execution-state upload hook for the daemon's observability layer
3
+ // (daemon-execution-state spec, design.md "Implementation Plan" step 3).
4
+ //
5
+ // The daemon already knows, in process memory, which tasks it is running and
6
+ // which are queued (the WakeQueue's scheduling state, joined with the waker's
7
+ // per-task lineage map). This module turns that into the snapshot the server's
8
+ // ingest endpoint expects and POSTs it:
9
+ //
10
+ // POST /api/daemon/execution-state
11
+ // { connectionUuid, executions: [{ taskUuid, rootIdeaUuid|null, status, startedAt|null }] }
12
+ //
13
+ // Reuses global fetch (Node 18+) and the daemon's existing Bearer credentials —
14
+ // exactly like lineage.mjs / sse-listener.mjs — so it adds ZERO new dependency
15
+ // (CLAUDE.md pitfall #9), no shell-out, no platform-specific paths. The POST is
16
+ // fire-and-forget: it never blocks or breaks the wake path, and a failed upload
17
+ // is LOGGED (no silent errors) and non-fatal — it never throws to the caller.
18
+ //
19
+ // `status` is constrained to "running"/"queued"; "ended" is a server-only
20
+ // terminal state the daemon never reports (the server rejects it).
21
+ //
22
+ // Transport: both the transcript POST and the execution-state POST go through the SHARED
23
+ // daemon REST client (`cli/daemon-rest-client.mjs`), which owns the request, Bearer auth,
24
+ // and the no-silent-errors transport contract. These hooks keep only the host-side
25
+ // concerns the client does not own — batching/debounce + content extraction for the
26
+ // transcript, and the snapshot build + serialized fire-and-forget chaining for both.
27
+
28
+ import { createDaemonRestClient } from "./daemon-rest-client.mjs";
29
+
30
+ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
31
+
32
+ /**
33
+ * @typedef {Object} SnapshotExecution
34
+ * @property {string} taskUuid
35
+ * @property {string|null} [rootIdeaUuid] null for a task with no root-idea lineage.
36
+ * @property {"running"|"queued"} status
37
+ * @property {string|null} [startedAt] ISO-8601; null while merely queued.
38
+ */
39
+
40
+ /**
41
+ * @typedef {Object} UploadHooks
42
+ * @property {(info: { host: string, agentUuid?: string }) => Promise<void>} onConnect
43
+ * @property {(info: { rootIdeaKey: string, sessionId: string, isNew: boolean }) => Promise<void>} onSessionStart
44
+ * @property {(info: { rootIdeaKey: string, sessionId: string, message: any }) => Promise<void>} onTranscriptMessage
45
+ * @property {() => void} [onExecutionChange] Fire-and-forget: upload a fresh
46
+ * execution snapshot. The waker calls this on every lifecycle transition
47
+ * (enqueue / wake start / wake finish). No-op in the noop hooks.
48
+ */
49
+
50
+ /**
51
+ * The default no-op hooks. Each resolves immediately and does nothing — no
52
+ * network, no disk. Used in tests and as a safe default where execution upload
53
+ * is not wired (e.g. the daemon could not learn its connectionUuid).
54
+ * @returns {UploadHooks}
55
+ */
56
+ export function createNoopUploadHooks() {
57
+ return {
58
+ async onConnect() {},
59
+ async onSessionStart() {},
60
+ async onTranscriptMessage() {},
61
+ onExecutionChange() {},
62
+ };
63
+ }
64
+
65
+ /**
66
+ * Compose several `UploadHooks` into one. The waker takes a SINGLE hooks object, but
67
+ * the daemon now has two independent concerns — execution-state snapshots and
68
+ * transcript relay — each built by its own factory. This merges them so each named
69
+ * hook fans out to every set that defines it: `onSessionStart`/`onTranscriptMessage`
70
+ * route to the transcript hooks, `onExecutionChange` to the execution hooks, etc. Async
71
+ * hooks are awaited (all in parallel); the synchronous `onExecutionChange` is called
72
+ * directly. Each delegate is invoked inside its own try/catch so one set throwing can
73
+ * never break another or the wake path (warn-not-throw).
74
+ *
75
+ * @param {...(UploadHooks|undefined|null)} hookSets
76
+ * @param {{ logger?: { warn(m:string):void } }} [optsLast] Last arg may be an options
77
+ * object (logger). Distinguished from a hook set by the absence of hook methods.
78
+ * @returns {UploadHooks}
79
+ */
80
+ export function mergeUploadHooks(...args) {
81
+ // Allow an optional trailing `{ logger }` options object.
82
+ let logger = NOOP_LOGGER;
83
+ const sets = [];
84
+ for (const a of args) {
85
+ if (!a) continue;
86
+ const looksLikeHooks =
87
+ typeof a.onConnect === "function" ||
88
+ typeof a.onSessionStart === "function" ||
89
+ typeof a.onTranscriptMessage === "function" ||
90
+ typeof a.onExecutionChange === "function";
91
+ if (!looksLikeHooks && a.logger) {
92
+ logger = a.logger;
93
+ continue;
94
+ }
95
+ sets.push(a);
96
+ }
97
+
98
+ async function fanOutAsync(name, info) {
99
+ await Promise.all(
100
+ sets.map(async (s) => {
101
+ const fn = s[name];
102
+ if (typeof fn !== "function") return;
103
+ try {
104
+ await fn.call(s, info);
105
+ } catch (err) {
106
+ logger.warn(`[Chorus] ${name} hook failed: ${err}`);
107
+ }
108
+ })
109
+ );
110
+ }
111
+
112
+ return {
113
+ onConnect: (info) => fanOutAsync("onConnect", info),
114
+ onSessionStart: (info) => fanOutAsync("onSessionStart", info),
115
+ onTranscriptMessage: (info) => fanOutAsync("onTranscriptMessage", info),
116
+ onExecutionChange: () => {
117
+ for (const s of sets) {
118
+ if (typeof s.onExecutionChange !== "function") continue;
119
+ try {
120
+ s.onExecutionChange();
121
+ } catch (err) {
122
+ logger.warn(`[Chorus] onExecutionChange hook failed: ${err}`);
123
+ }
124
+ }
125
+ },
126
+ };
127
+ }
128
+
129
+ // ─── Transcript upload (子1 — daemon-session-conversation) ──────────────────
130
+ //
131
+ // The daemon's stream-json consumer (claude-spawner → waker.onMessage) hands every
132
+ // NDJSON object to `onTranscriptMessage`. Claude Code's stream-json (verified against
133
+ // CLI 2.1.183) wraps each conversation message as:
134
+ //
135
+ // { "type": "assistant" | "user", "session_id": "...",
136
+ // "message": { "role": "assistant" | "user",
137
+ // "content": [ { "type": "text", "text": "..." },
138
+ // { "type": "thinking", ... },
139
+ // { "type": "tool_use", ... },
140
+ // { "type": "tool_result", ... } ] } }
141
+ //
142
+ // `system` (init / hooks / thinking_tokens) and `result` envelopes are NOT
143
+ // conversation messages. A `tool_result` block rides inside a `type:"user"` message,
144
+ // so filtering MUST happen at the content-BLOCK level (keep only `text`), not at the
145
+ // top-level type — otherwise a tool-result-only user message would leak. The server
146
+ // ingest stores ONLY `user`/`assistant` text (see /api/daemon/transcript), so this
147
+ // filter mirrors exactly what the server will persist.
148
+
149
+ /** Top-level stream-json envelope types that carry a conversation message. */
150
+ const CONVERSATION_TYPES = new Set(["user", "assistant"]);
151
+
152
+ /**
153
+ * Extract the plain user/assistant TEXT from one Claude Code stream-json object,
154
+ * dropping everything that is not a conversation text block (system/result
155
+ * envelopes, thinking, tool_use, tool_result). Returns null when the object is not a
156
+ * keepable conversation message (so the caller can skip it). Never throws — a shape
157
+ * it doesn't recognize yields null rather than an error (defensive against CLI drift).
158
+ *
159
+ * @param {any} obj One parsed stream-json NDJSON object.
160
+ * @returns {{ role: "user"|"assistant", text: string } | null}
161
+ */
162
+ export function extractTranscriptText(obj) {
163
+ if (!obj || typeof obj !== "object") return null;
164
+ if (!CONVERSATION_TYPES.has(obj.type)) return null;
165
+
166
+ const message = obj.message;
167
+ if (!message || typeof message !== "object") return null;
168
+ // The persisted role is the message's role; fall back to the envelope type (they
169
+ // agree in practice, but the envelope is the documented discriminator).
170
+ const role = message.role === "user" || message.role === "assistant" ? message.role : obj.type;
171
+ if (role !== "user" && role !== "assistant") return null;
172
+
173
+ const content = message.content;
174
+ let text = "";
175
+ if (typeof content === "string") {
176
+ // Some message variants carry a bare string (e.g. an echoed initial prompt).
177
+ text = content;
178
+ } else if (Array.isArray(content)) {
179
+ // Keep ONLY `text` blocks — drop thinking / tool_use / tool_result. Concatenate
180
+ // the text blocks of one message into a single transcript entry (mirrors how a
181
+ // reader sees the message; the server stores one row per posted message).
182
+ const parts = [];
183
+ for (const block of content) {
184
+ if (block && typeof block === "object" && block.type === "text" && typeof block.text === "string") {
185
+ parts.push(block.text);
186
+ }
187
+ }
188
+ text = parts.join("");
189
+ } else {
190
+ return null;
191
+ }
192
+
193
+ // A message with no text (e.g. a user message that was purely a tool_result, or an
194
+ // assistant message that was purely tool_use/thinking) is dropped — nothing to store.
195
+ if (!text.trim()) return null;
196
+ return { role, text };
197
+ }
198
+
199
+ /**
200
+ * Build the transcript upload hooks (子1). The daemon's stream-json consumer calls
201
+ * `onTranscriptMessage` for every NDJSON object; this keeps only user/assistant text
202
+ * and batch-POSTs it to `POST /api/daemon/transcript`, targeting the current turn by
203
+ * the session BUSINESS KEY (`sessionId` = directIdeaUuid or the entity uuid — exactly
204
+ * what the waker anchors the Claude session on, and what turn-reporter advances). The
205
+ * server resolves the agent's `(agentUuid, sessionId)` session and appends to its
206
+ * most-recent turn. `onSessionStart` resets per-session batching state so a new run's
207
+ * messages attach to the right turn.
208
+ *
209
+ * Mirrors `createExecutionUploadHooks`: injectable `fetchImpl`, the daemon's existing
210
+ * Bearer creds, ZERO new deps (global fetch, Node 18+). Fire-and-forget + warn-not-throw:
211
+ * a failed upload is LOGGED (no-silent-errors) and never blocks/breaks the wake. Uploads
212
+ * are batched (debounced) so a burst of stream-json lines becomes few POSTs, and
213
+ * serialized on a chain so an earlier batch can't land after a later one.
214
+ *
215
+ * @param {{
216
+ * url: string, Chorus base URL.
217
+ * apiKey: string, `cho_` agent API key.
218
+ * logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
219
+ * fetchImpl?: typeof fetch, Injectable for tests.
220
+ * batchDelayMs?: number, Debounce window for coalescing messages into one POST
221
+ * (default 50ms). 0 → flush on the next microtask.
222
+ * setTimeoutImpl?: typeof setTimeout, Injectable timer for tests.
223
+ * clearTimeoutImpl?: typeof clearTimeout,
224
+ * }} opts
225
+ * @returns {UploadHooks}
226
+ */
227
+ export function createTranscriptUploadHooks(opts) {
228
+ const logger = opts.logger ?? NOOP_LOGGER;
229
+ const batchDelayMs = opts.batchDelayMs ?? 50;
230
+ const setTimeoutImpl = opts.setTimeoutImpl ?? setTimeout;
231
+ const clearTimeoutImpl = opts.clearTimeoutImpl ?? clearTimeout;
232
+ // Transport via the shared client (transcript has no connectionUuid concern — the agent
233
+ // key + sessionId resolve the turn server-side, so getConnectionUuid is unused here).
234
+ const client = createDaemonRestClient({
235
+ url: opts.url,
236
+ apiKey: opts.apiKey,
237
+ fetchImpl: opts.fetchImpl,
238
+ logger,
239
+ });
240
+
241
+ // The session this batch belongs to (set by onSessionStart, and re-affirmed by each
242
+ // message's observed session id from the stream). Messages queued for one session
243
+ // are flushed before the session changes, so they always target the right turn.
244
+ let currentSessionId = null;
245
+ /** @type {Array<{ role: "user"|"assistant", text: string }>} */
246
+ let pending = [];
247
+ let timer = null;
248
+ // Serialize POSTs so an earlier batch can never land after a later one on the wire.
249
+ let chain = Promise.resolve();
250
+
251
+ /** POST one batch for a session via the shared client. Never throws. */
252
+ async function upload(sessionId, messages) {
253
+ if (!sessionId || messages.length === 0) return;
254
+ // The client POSTs `{ sessionId, messages }` to /api/daemon/transcript with Bearer
255
+ // auth and logs "transcript upload request failed" / "transcript upload returned N"
256
+ // on failure (no-silent-errors) and "transcript uploaded (N msg) ..." on success. We
257
+ // swallow the structured result so a failed upload never breaks the wake path.
258
+ await client.transcript({ sessionId, messages });
259
+ }
260
+
261
+ /** Drain `pending` for `currentSessionId` into a serialized fire-and-forget POST. */
262
+ function flush() {
263
+ if (timer !== null) {
264
+ clearTimeoutImpl(timer);
265
+ timer = null;
266
+ }
267
+ if (pending.length === 0) return;
268
+ const sessionId = currentSessionId;
269
+ const batch = pending;
270
+ pending = [];
271
+ if (!sessionId) {
272
+ // No session to attribute the messages to (onSessionStart never ran / no id on
273
+ // the stream). Drop with a visible warning rather than mis-route (no-silent).
274
+ logger.warn(`[Chorus] dropping ${batch.length} transcript msg — no session id yet`);
275
+ return;
276
+ }
277
+ const run = () => upload(sessionId, batch);
278
+ chain = chain.then(run, run);
279
+ }
280
+
281
+ function scheduleFlush() {
282
+ if (timer !== null) return;
283
+ if (batchDelayMs <= 0) {
284
+ // Microtask flush — coalesces a synchronous burst, still off the hot path.
285
+ timer = setTimeoutImpl(flush, 0);
286
+ } else {
287
+ timer = setTimeoutImpl(flush, batchDelayMs);
288
+ }
289
+ }
290
+
291
+ return {
292
+ async onConnect() {},
293
+ /**
294
+ * A new (or resumed) Claude run started for this session. Flush any leftover
295
+ * messages from a prior session, then pin the batch to this session id so
296
+ * subsequent messages attach to the right turn. (子1 — onSessionStart contract.)
297
+ * @param {{ rootIdeaKey: string, sessionId: string, isNew: boolean }} info
298
+ */
299
+ async onSessionStart({ sessionId } = {}) {
300
+ // If the session changed mid-stream, flush the old session's pending batch first
301
+ // so its messages don't get re-tagged to the new session.
302
+ if (currentSessionId && currentSessionId !== sessionId) flush();
303
+ currentSessionId = sessionId || currentSessionId || null;
304
+ },
305
+ /**
306
+ * One stream-json object. Keep only user/assistant text; queue it for a batched
307
+ * POST. Fire-and-forget + non-throwing: any failure is logged inside `flush`/`upload`.
308
+ * @param {{ rootIdeaKey: string, sessionId: string, message: any }} info
309
+ */
310
+ async onTranscriptMessage({ sessionId, message } = {}) {
311
+ // The stream stamps the authoritative session id on every line; prefer it so a
312
+ // session resolved only from the stream (not onSessionStart) is still attributed.
313
+ if (sessionId) currentSessionId = sessionId;
314
+ let extracted;
315
+ try {
316
+ extracted = extractTranscriptText(message);
317
+ } catch (err) {
318
+ logger.warn(`[Chorus] transcript extract failed: ${err}`);
319
+ return;
320
+ }
321
+ if (!extracted) return; // not a keepable conversation text message
322
+ pending.push(extracted);
323
+ scheduleFlush();
324
+ },
325
+ onExecutionChange() {},
326
+ };
327
+ }
328
+
329
+ /**
330
+ * Build the execution-state upload hooks. The returned `onExecutionChange()` is
331
+ * synchronous and non-throwing: it kicks off a fire-and-forget POST and returns
332
+ * immediately, so the wake path is never blocked. The transcript/session/connect
333
+ * hooks remain no-ops (reserved for a later observability slice).
334
+ *
335
+ * @param {{
336
+ * url: string, Chorus base URL.
337
+ * apiKey: string, `cho_` agent API key.
338
+ * getConnectionUuid: () => (string|null), The connection this daemon registered
339
+ * as (null until the SSE handshake
340
+ * reports it — uploads are skipped while null).
341
+ * getSnapshot: () => SnapshotExecution[], Builds the current snapshot from live
342
+ * daemon state (WakeQueue + waker lineage map).
343
+ * logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
344
+ * fetchImpl?: typeof fetch, Injectable for tests.
345
+ * }} opts
346
+ * @returns {UploadHooks}
347
+ */
348
+ export function createExecutionUploadHooks(opts) {
349
+ const getSnapshot = opts.getSnapshot;
350
+ const logger = opts.logger ?? NOOP_LOGGER;
351
+ // Transport via the shared client. It owns the connectionUuid guard (silent skip while
352
+ // the SSE handshake hasn't reported it — a normal early state, not an error), the
353
+ // request, Bearer auth, and the failure logging ("execution-state upload request failed"
354
+ // / "execution-state upload returned N") + success log.
355
+ const client = createDaemonRestClient({
356
+ url: opts.url,
357
+ apiKey: opts.apiKey,
358
+ getConnectionUuid: opts.getConnectionUuid,
359
+ fetchImpl: opts.fetchImpl,
360
+ logger,
361
+ });
362
+
363
+ // Serialize uploads so two rapid transitions can't reorder on the wire (a
364
+ // later snapshot must not land before an earlier one). The snapshot is
365
+ // captured SYNCHRONOUSLY at emit time (not re-read at send time): each
366
+ // lifecycle transition's state is preserved even when transitions happen
367
+ // faster than uploads flush — so a brief "running" state is never silently
368
+ // collapsed into the subsequent "finished" upload.
369
+ let chain = Promise.resolve();
370
+
371
+ /** POST a captured snapshot via the shared client. Never throws. */
372
+ async function upload(executions) {
373
+ await client.executionState({ executions });
374
+ }
375
+
376
+ return {
377
+ async onConnect() {},
378
+ async onSessionStart() {},
379
+ async onTranscriptMessage() {},
380
+ /**
381
+ * Fire-and-forget upload of the current snapshot. Synchronous + non-throwing
382
+ * so it never blocks/breaks the wake path. The snapshot is captured here, at
383
+ * call time, then queued behind any in-flight upload; failures are logged
384
+ * inside `upload()`. A snapshot-build error is logged and skips the POST.
385
+ */
386
+ onExecutionChange() {
387
+ let executions;
388
+ try {
389
+ executions = getSnapshot();
390
+ } catch (err) {
391
+ logger.warn(`[Chorus] execution snapshot build failed: ${err}`);
392
+ return;
393
+ }
394
+ // Chain on both fulfill and reject so one failed upload can't wedge the
395
+ // chain; `upload` already swallows its own errors, this is belt-and-braces.
396
+ const run = () => upload(executions);
397
+ chain = chain.then(run, run);
398
+ },
399
+ };
400
+ }
@@ -0,0 +1,121 @@
1
+ // cli/wake-queue.mjs
2
+ // Per-key FIFO scheduler with a global concurrency cap. This is what makes the
3
+ // idea_root session anchor safe (cli-daemon spec "Per-root-idea wake
4
+ // serialization", design.md "Concurrency model"):
5
+ // • within one key (root idea) → strictly serial, FIFO. The 2nd wake waits
6
+ // for the 1st subprocess to exit, so we never run two
7
+ // `claude --resume <sameSessionId>` against one session.
8
+ // • across keys → concurrent, bounded by maxConcurrency.
9
+ // • enqueue() returns immediately — never blocks the SSE loop.
10
+ // • a task that throws is logged and the next task for that key proceeds (a
11
+ // poisoned wake must not wedge the key's queue forever).
12
+ // Plain ESM, zero deps, in-memory.
13
+
14
+ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
15
+
16
+ export class WakeQueue {
17
+ /**
18
+ * @param {{
19
+ * maxConcurrency?: number,
20
+ * logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
21
+ * }} [opts]
22
+ */
23
+ constructor(opts = {}) {
24
+ this.maxConcurrency = opts.maxConcurrency ?? 4;
25
+ this.logger = opts.logger ?? NOOP_LOGGER;
26
+ /** @type {Map<string, Array<() => Promise<void>>>} pending tasks per key. */
27
+ this.pending = new Map();
28
+ /** @type {Set<string>} keys with a task currently running. */
29
+ this.running = new Set();
30
+ /** @type {string[]} keys waiting for a global concurrency slot. */
31
+ this.readyKeys = [];
32
+ this.activeCount = 0;
33
+ }
34
+
35
+ /**
36
+ * Enqueue a wake task under a key. Returns immediately. The task is a thunk
37
+ * returning a promise (the actual wake). Same key → serialized; different
38
+ * keys → concurrent up to maxConcurrency.
39
+ * @param {string} key
40
+ * @param {() => Promise<void>} task
41
+ */
42
+ enqueue(key, task) {
43
+ if (!this.pending.has(key)) this.pending.set(key, []);
44
+ this.pending.get(key).push(task);
45
+ // A key becomes "ready" to claim a global slot only when it's not already
46
+ // running (serial-per-key) and not already queued for a slot.
47
+ if (!this.running.has(key) && !this.readyKeys.includes(key)) {
48
+ this.readyKeys.push(key);
49
+ }
50
+ this.#pump();
51
+ }
52
+
53
+ /** Number of keys with pending work (for tests/observability). */
54
+ get pendingKeyCount() {
55
+ return [...this.pending.values()].filter((q) => q.length > 0).length;
56
+ }
57
+
58
+ /**
59
+ * Snapshot of the keys with a task currently running (observability read).
60
+ * Returns a fresh array so a caller can't mutate the internal Set.
61
+ * @returns {string[]}
62
+ */
63
+ runningKeys() {
64
+ return [...this.running];
65
+ }
66
+
67
+ /**
68
+ * Snapshot of the keys that have at least one task still waiting to run —
69
+ * i.e. enqueued but not yet started (observability read). A key that is
70
+ * currently running with no further queued work is NOT pending. Returns a
71
+ * fresh array so a caller can't mutate internal state.
72
+ * @returns {string[]}
73
+ */
74
+ pendingKeys() {
75
+ return [...this.pending.entries()].filter(([, q]) => q.length > 0).map(([k]) => k);
76
+ }
77
+
78
+ /** Try to start as many ready keys as the concurrency cap allows. */
79
+ #pump() {
80
+ while (this.activeCount < this.maxConcurrency && this.readyKeys.length > 0) {
81
+ const key = this.readyKeys.shift();
82
+ if (this.running.has(key)) continue; // already running under another slot
83
+ const queue = this.pending.get(key);
84
+ if (!queue || queue.length === 0) continue;
85
+ this.#runNext(key);
86
+ }
87
+ }
88
+
89
+ /** Run the next task for a key, then chain to the following one. */
90
+ #runNext(key) {
91
+ const queue = this.pending.get(key);
92
+ if (!queue || queue.length === 0) {
93
+ this.running.delete(key);
94
+ return;
95
+ }
96
+ const task = queue.shift();
97
+ this.running.add(key);
98
+ this.activeCount++;
99
+
100
+ Promise.resolve()
101
+ .then(task)
102
+ .catch((err) => {
103
+ // Poisoned wake: log, do NOT let it wedge the key's queue.
104
+ this.logger.warn(`[Chorus] wake task for ${key} failed: ${err}`);
105
+ })
106
+ .finally(() => {
107
+ this.activeCount--;
108
+ const remaining = this.pending.get(key);
109
+ if (remaining && remaining.length > 0) {
110
+ // Same key still has work → it must run serially. Re-mark ready;
111
+ // #pump will pick it up (respecting the global cap).
112
+ if (!this.readyKeys.includes(key)) this.readyKeys.push(key);
113
+ this.running.delete(key); // free the key so #pump can re-claim it
114
+ } else {
115
+ this.running.delete(key);
116
+ this.pending.delete(key);
117
+ }
118
+ this.#pump();
119
+ });
120
+ }
121
+ }