@chorus-aidlc/chorus 0.10.0 → 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 (659) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +463 -346
  3. package/.next/standalone/.next/app-path-routes-manifest.json +50 -36
  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/routes-manifest.json +25 -0
  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 -3
  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 +5 -5
  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 +5 -5
  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 +5 -5
  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_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/auth/company-oidc/route.js +1 -1
  86. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
  88. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/auth/identify/route.js +1 -1
  90. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/auth/me/route.js +1 -1
  93. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/auth/refresh/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/auth/session/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
  99. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  102. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -0
  104. package/.next/standalone/.next/server/app/api/daemon/control/route.js.nft.json +1 -0
  105. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -0
  106. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -0
  107. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -0
  108. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -0
  109. package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -0
  110. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -0
  111. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -0
  112. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -0
  113. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -0
  114. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -0
  115. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -0
  116. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -0
  117. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -0
  118. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -0
  119. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -0
  120. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -0
  121. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -0
  122. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -0
  123. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -0
  124. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -0
  125. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -0
  126. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -0
  127. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -0
  128. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -0
  129. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -0
  130. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -0
  131. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -0
  132. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -0
  133. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -0
  134. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -0
  135. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -0
  136. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -0
  137. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -0
  138. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -0
  139. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  140. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -0
  142. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -0
  143. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -0
  144. package/.next/standalone/.next/server/app/api/events/notifications/route.js +6 -2
  145. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/events/route.js +7 -3
  148. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  149. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/health/route.js +1 -1
  151. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  160. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  162. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  163. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  165. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  166. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  168. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  169. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/mcp/route.js +5 -41
  171. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  172. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  174. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  175. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  177. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  178. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  183. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  184. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  186. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  187. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  189. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  192. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  193. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  195. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  196. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  197. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  198. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  200. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  201. package/.next/standalone/.next/server/app/api/project-groups/route.js +1 -1
  202. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  203. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.js +1 -1
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  205. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  206. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  207. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  231. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  232. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  233. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  234. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  235. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  237. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  238. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  239. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  241. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  242. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  243. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  244. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  245. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  246. package/.next/standalone/.next/server/app/api/search/route.js +1 -1
  247. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  249. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  250. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  251. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  252. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  253. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  254. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  255. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  256. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  258. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  259. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  260. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  261. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  262. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  263. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  264. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  265. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  266. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  267. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  268. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  269. package/.next/standalone/.next/server/app/index.html +1 -1
  270. package/.next/standalone/.next/server/app/index.rsc +5 -5
  271. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  272. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  273. package/.next/standalone/.next/server/app/login/admin.rsc +5 -5
  274. package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
  275. package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +1 -1
  276. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  277. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  278. package/.next/standalone/.next/server/app/login/callback.rsc +5 -5
  279. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  280. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  281. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  282. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +5 -5
  283. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  284. package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
  285. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +5 -5
  286. package/.next/standalone/.next/server/app/login.html +1 -1
  287. package/.next/standalone/.next/server/app/login.rsc +5 -5
  288. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  289. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  290. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  291. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  292. package/.next/standalone/.next/server/app/onboarding.rsc +6 -6
  293. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  294. package/.next/standalone/.next/server/app/projects.html +1 -1
  295. package/.next/standalone/.next/server/app/projects.rsc +7 -7
  296. package/.next/standalone/.next/server/app/settings.html +1 -1
  297. package/.next/standalone/.next/server/app/settings.rsc +7 -7
  298. package/.next/standalone/.next/server/app-paths-manifest.json +50 -36
  299. package/.next/standalone/.next/server/chunks/1064.js +1 -0
  300. package/.next/standalone/.next/server/chunks/1596.js +13 -0
  301. package/.next/standalone/.next/server/chunks/2213.js +1 -0
  302. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  303. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  304. package/.next/standalone/.next/server/chunks/3219.js +2 -0
  305. package/.next/standalone/.next/server/chunks/3371.js +1 -0
  306. package/.next/standalone/.next/server/chunks/3419.js +1 -0
  307. package/.next/standalone/.next/server/chunks/369.js +1 -0
  308. package/.next/standalone/.next/server/chunks/4638.js +1 -0
  309. package/.next/standalone/.next/server/chunks/4711.js +530 -0
  310. package/.next/standalone/.next/server/chunks/5039.js +1 -0
  311. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  312. package/.next/standalone/.next/server/chunks/5631.js +1 -0
  313. package/.next/standalone/.next/server/chunks/6044.js +1 -1
  314. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  315. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  316. package/.next/standalone/.next/server/chunks/6461.js +1 -0
  317. package/.next/standalone/.next/server/chunks/6712.js +1 -0
  318. package/.next/standalone/.next/server/chunks/7002.js +1 -1
  319. package/.next/standalone/.next/server/chunks/7063.js +2 -2
  320. package/.next/standalone/.next/server/chunks/7258.js +37 -0
  321. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  322. package/.next/standalone/.next/server/chunks/7578.js +2 -2
  323. package/.next/standalone/.next/server/chunks/7867.js +1 -0
  324. package/.next/standalone/.next/server/chunks/7897.js +1 -0
  325. package/.next/standalone/.next/server/chunks/8012.js +1 -0
  326. package/.next/standalone/.next/server/chunks/8245.js +31 -0
  327. package/.next/standalone/.next/server/chunks/8322.js +1 -1
  328. package/.next/standalone/.next/server/chunks/9015.js +1 -1
  329. package/.next/standalone/.next/server/chunks/920.js +1 -1
  330. package/.next/standalone/.next/server/chunks/937.js +16 -2
  331. package/.next/standalone/.next/server/chunks/9629.js +1 -0
  332. package/.next/standalone/.next/server/chunks/9725.js +1 -0
  333. package/.next/standalone/.next/server/instrumentation.js +1 -1
  334. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  335. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  336. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  337. package/.next/standalone/.next/server/next-font-manifest.json +1 -1
  338. package/.next/standalone/.next/server/pages/404.html +1 -1
  339. package/.next/standalone/.next/server/pages/500.html +1 -1
  340. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  341. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  342. package/.next/standalone/.next/server/src/middleware.js +1 -1
  343. package/.next/standalone/.next/static/519aK55QLHaVN7b1TVDkB/_buildManifest.js +1 -0
  344. package/.next/standalone/.next/static/chunks/1217-323cc20b73ebfde9.js +1 -0
  345. package/.next/standalone/.next/static/chunks/{11207-8f4b154804f5a66f.js → 15183-5734d279b26e9414.js} +2 -2
  346. package/.next/standalone/.next/static/chunks/1879-7a8b283283218df2.js +1 -0
  347. package/.next/standalone/.next/static/chunks/19276-50b367d7b93d5f34.js +1 -0
  348. package/.next/standalone/.next/static/chunks/23466-e1176a6d814f4897.js +1 -0
  349. package/.next/standalone/.next/static/chunks/38040-a8687f86dd8e9d67.js +1 -0
  350. package/.next/standalone/.next/static/chunks/{4860.e071c0b9e32bd75f.js → 4860.43f5ad8a3aaed0e8.js} +1 -1
  351. package/.next/standalone/.next/static/chunks/58245-b2ea112ace9624d2.js +1 -0
  352. package/.next/standalone/.next/static/chunks/59296-783831c43aa0162e.js +1 -0
  353. package/.next/standalone/.next/static/chunks/60648-36ccbee4ce232d52.js +1 -0
  354. package/.next/standalone/.next/static/chunks/60694-68232120903209df.js +1 -0
  355. package/.next/standalone/.next/static/chunks/64648-81f03be6f9793ab9.js +1 -0
  356. package/.next/standalone/.next/static/chunks/{94655-1c75e0590a66215e.js → 66969-12f0b22c51f5a410.js} +1 -1
  357. package/.next/standalone/.next/static/chunks/70536-b8bf71098ae11f07.js +1 -0
  358. package/.next/standalone/.next/static/chunks/71350-88c2649fc693c1e8.js +1 -0
  359. package/.next/standalone/.next/static/chunks/78389-b32edc6bd5c570a9.js +1 -0
  360. package/.next/standalone/.next/static/chunks/78584-eb2fa8cf2f266329.js +1 -0
  361. package/.next/standalone/.next/static/chunks/78917-150ed14a99844aab.js +1 -0
  362. package/.next/standalone/.next/static/chunks/8574-b9739eb8d054c793.js +1 -0
  363. package/.next/standalone/.next/static/chunks/{99373.4c336ea9ad07311e.js → 99373.0768feb3a08c7da3.js} +1 -1
  364. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-0a28456fea4ce95a.js +1 -0
  365. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-a79969c5c9aadacd.js +1 -0
  366. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-4bc556c2fc8f3d24.js +1 -0
  367. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-e00752a72c31663f.js +1 -0
  368. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-ef82b871895245ea.js +1 -0
  369. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-2c9bcbd11ddb8661.js +1 -0
  370. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-630b168598513ce8.js +1 -0
  371. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-99639479cc98965f.js +1 -0
  372. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-335f2450e44a0fba.js +1 -0
  373. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-4a191d69b2b6e880.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-0faebb478be4c85d.js +1 -0
  375. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-f198303c176c6e02.js → page-583e58d4d689d38b.js} +1 -1
  376. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2e8fcb72687100df.js +1 -0
  377. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  378. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-4bc556c2fc8f3d24.js +1 -0
  379. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-4bc556c2fc8f3d24.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-4bc556c2fc8f3d24.js +1 -0
  381. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-4bc556c2fc8f3d24.js +1 -0
  382. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  383. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-4bc556c2fc8f3d24.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/api/agents/route-4bc556c2fc8f3d24.js +1 -0
  385. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-4bc556c2fc8f3d24.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-4bc556c2fc8f3d24.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-4bc556c2fc8f3d24.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-4bc556c2fc8f3d24.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-4bc556c2fc8f3d24.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-4bc556c2fc8f3d24.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-4bc556c2fc8f3d24.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-4bc556c2fc8f3d24.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-4bc556c2fc8f3d24.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-4bc556c2fc8f3d24.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-4bc556c2fc8f3d24.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/api/comments/route-4bc556c2fc8f3d24.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-4bc556c2fc8f3d24.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-4bc556c2fc8f3d24.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-4bc556c2fc8f3d24.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-4bc556c2fc8f3d24.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-4bc556c2fc8f3d24.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-4bc556c2fc8f3d24.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-4bc556c2fc8f3d24.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-4bc556c2fc8f3d24.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-4bc556c2fc8f3d24.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-4bc556c2fc8f3d24.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-4bc556c2fc8f3d24.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-4bc556c2fc8f3d24.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-4bc556c2fc8f3d24.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-4bc556c2fc8f3d24.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/events/route-4bc556c2fc8f3d24.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/health/route-4bc556c2fc8f3d24.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-4bc556c2fc8f3d24.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-4bc556c2fc8f3d24.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-4bc556c2fc8f3d24.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-4bc556c2fc8f3d24.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-4bc556c2fc8f3d24.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/mcp/route-4bc556c2fc8f3d24.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-4bc556c2fc8f3d24.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-4bc556c2fc8f3d24.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-4bc556c2fc8f3d24.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-4bc556c2fc8f3d24.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-4bc556c2fc8f3d24.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-4bc556c2fc8f3d24.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/notifications/route-4bc556c2fc8f3d24.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-4bc556c2fc8f3d24.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-4bc556c2fc8f3d24.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-4bc556c2fc8f3d24.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-4bc556c2fc8f3d24.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-4bc556c2fc8f3d24.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-4bc556c2fc8f3d24.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-4bc556c2fc8f3d24.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-4bc556c2fc8f3d24.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-4bc556c2fc8f3d24.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-4bc556c2fc8f3d24.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-4bc556c2fc8f3d24.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-4bc556c2fc8f3d24.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-4bc556c2fc8f3d24.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-4bc556c2fc8f3d24.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-4bc556c2fc8f3d24.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/projects/route-4bc556c2fc8f3d24.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-4bc556c2fc8f3d24.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-4bc556c2fc8f3d24.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-4bc556c2fc8f3d24.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-4bc556c2fc8f3d24.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/search/route-4bc556c2fc8f3d24.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-4bc556c2fc8f3d24.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-4bc556c2fc8f3d24.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-4bc556c2fc8f3d24.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-4bc556c2fc8f3d24.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-4bc556c2fc8f3d24.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/layout-9963339572e2e64e.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/onboarding/page-e9a69a0c537c704f.js +1 -0
  462. package/.next/standalone/.next/static/chunks/{webpack-5bb5740df10ed622.js → webpack-87284a4533d77eaf.js} +1 -1
  463. package/.next/standalone/.next/static/css/{84edd78de243cde6.css → b496025c9cd768cc.css} +1 -1
  464. package/.next/standalone/.next/static/css/e78b3c856420a09f.css +1 -0
  465. package/.next/standalone/.next/static/media/013b72fa676f92e0-s.woff2 +0 -0
  466. package/.next/standalone/.next/static/media/2b5b02fc7e511755-s.woff2 +0 -0
  467. package/.next/standalone/.next/static/media/65f03d54ccadf4a8-s.woff2 +0 -0
  468. package/.next/standalone/.next/static/media/7d4881bb7e1bf84d-s.p.woff2 +0 -0
  469. package/.next/standalone/.next/static/media/b9408752a0c24fb9-s.woff2 +0 -0
  470. package/.next/standalone/.next/static/media/e038a29029a234f2-s.woff2 +0 -0
  471. package/.next/standalone/package.json +3 -1
  472. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  473. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  474. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +1 -1
  475. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  476. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +2 -1
  477. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  478. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  479. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  480. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  481. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
  482. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  483. package/.next/standalone/public/skill/chorus/SKILL.md +1 -1
  484. package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
  485. package/.next/standalone/public/skill/idea-chorus/SKILL.md +2 -1
  486. package/.next/standalone/public/skill/package.json +1 -1
  487. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
  488. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  489. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  490. package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
  491. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  492. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
  493. package/README.md +27 -0
  494. package/README.zh.md +27 -0
  495. package/chorus.mjs +120 -16
  496. package/cli/backfill.mjs +190 -0
  497. package/cli/chorus-client.mjs +154 -0
  498. package/cli/claude-spawner.mjs +415 -0
  499. package/cli/client-args.mjs +146 -0
  500. package/cli/control-handler.mjs +180 -0
  501. package/cli/credentials.mjs +155 -0
  502. package/cli/daemon-agent.mjs +38 -0
  503. package/cli/daemon-banner.mjs +80 -0
  504. package/cli/daemon-config.mjs +84 -0
  505. package/cli/daemon-lifecycle.mjs +191 -0
  506. package/cli/daemon-permission-mode.mjs +68 -0
  507. package/cli/daemon-rest-client.mjs +272 -0
  508. package/cli/daemon.mjs +572 -0
  509. package/cli/event-router.mjs +248 -0
  510. package/cli/interrupt-reporter.mjs +87 -0
  511. package/cli/lineage.mjs +155 -0
  512. package/cli/login.mjs +151 -0
  513. package/cli/mcp-config.mjs +58 -0
  514. package/cli/process-killer.mjs +205 -0
  515. package/cli/prompts.mjs +273 -0
  516. package/cli/sse-listener.mjs +258 -0
  517. package/cli/turn-reporter.mjs +75 -0
  518. package/cli/upload-hooks.mjs +400 -0
  519. package/cli/wake-queue.mjs +121 -0
  520. package/cli/waker.mjs +475 -0
  521. package/package.json +3 -1
  522. package/prisma/migrations/20260615082309_add_daemon_connection/migration.sql +37 -0
  523. package/prisma/migrations/20260616152622_add_daemon_task_execution/migration.sql +28 -0
  524. package/prisma/migrations/20260617013334_generalize_daemon_execution_to_any_resource/migration.sql +38 -0
  525. package/prisma/migrations/20260618022828_add_daemon_execution_interrupted/migration.sql +2 -0
  526. package/prisma/migrations/20260619055322_daemon_session_conversation/migration.sql +77 -0
  527. package/prisma/schema.prisma +366 -188
  528. package/.next/standalone/.next/server/chunks/1059.js +0 -1
  529. package/.next/standalone/.next/server/chunks/1165.js +0 -1
  530. package/.next/standalone/.next/server/chunks/1615.js +0 -31
  531. package/.next/standalone/.next/server/chunks/162.js +0 -16
  532. package/.next/standalone/.next/server/chunks/179.js +0 -158
  533. package/.next/standalone/.next/server/chunks/1871.js +0 -1
  534. package/.next/standalone/.next/server/chunks/2909.js +0 -98
  535. package/.next/standalone/.next/server/chunks/324.js +0 -1
  536. package/.next/standalone/.next/server/chunks/3555.js +0 -1
  537. package/.next/standalone/.next/server/chunks/4090.js +0 -13
  538. package/.next/standalone/.next/server/chunks/4343.js +0 -1
  539. package/.next/standalone/.next/server/chunks/4879.js +0 -1
  540. package/.next/standalone/.next/server/chunks/4913.js +0 -1
  541. package/.next/standalone/.next/server/chunks/5541.js +0 -1
  542. package/.next/standalone/.next/server/chunks/5561.js +0 -7
  543. package/.next/standalone/.next/server/chunks/6643.js +0 -1
  544. package/.next/standalone/.next/server/chunks/6767.js +0 -1
  545. package/.next/standalone/.next/server/chunks/7228.js +0 -2
  546. package/.next/standalone/.next/server/chunks/7462.js +0 -255
  547. package/.next/standalone/.next/server/chunks/7859.js +0 -1
  548. package/.next/standalone/.next/server/chunks/8277.js +0 -1
  549. package/.next/standalone/.next/server/chunks/8637.js +0 -1
  550. package/.next/standalone/.next/server/chunks/896.js +0 -1
  551. package/.next/standalone/.next/server/chunks/9269.js +0 -1
  552. package/.next/standalone/.next/server/chunks/9615.js +0 -1
  553. package/.next/standalone/.next/static/AKJHlhCKd44_-khht8nN0/_buildManifest.js +0 -1
  554. package/.next/standalone/.next/static/chunks/20051-c242544dafd3a690.js +0 -1
  555. package/.next/standalone/.next/static/chunks/21932-bce5ba937d1603e1.js +0 -1
  556. package/.next/standalone/.next/static/chunks/23095-5bf481236249fdd8.js +0 -1
  557. package/.next/standalone/.next/static/chunks/23466-842c126491b753bc.js +0 -1
  558. package/.next/standalone/.next/static/chunks/45436-c5427023f3f386a1.js +0 -1
  559. package/.next/standalone/.next/static/chunks/49852-5337f139a2f87c46.js +0 -1
  560. package/.next/standalone/.next/static/chunks/52206-7c1b0c695c8035eb.js +0 -1
  561. package/.next/standalone/.next/static/chunks/55469-ed5ff019ff71ef59.js +0 -1
  562. package/.next/standalone/.next/static/chunks/59296-50e66102d44d9677.js +0 -1
  563. package/.next/standalone/.next/static/chunks/60524-9811b38c62fed16e.js +0 -1
  564. package/.next/standalone/.next/static/chunks/68855-5c15991e7cf8dc8a.js +0 -1
  565. package/.next/standalone/.next/static/chunks/70093-0ff6fd59445b5cb9.js +0 -1
  566. package/.next/standalone/.next/static/chunks/74030-3a6a6b75e47f5b96.js +0 -1
  567. package/.next/standalone/.next/static/chunks/78917-ff0fda86a96cfa60.js +0 -1
  568. package/.next/standalone/.next/static/chunks/95627-8d9f6d2d88f7a641.js +0 -1
  569. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-5915ccd1a77ebcf8.js +0 -1
  570. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-94d102d945410b55.js +0 -1
  571. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-cd9411c54c8f5b35.js +0 -1
  572. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-56c45b910f914895.js +0 -1
  573. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-2e000a7010d1e9ea.js +0 -1
  574. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-75e42d130404ca2b.js +0 -1
  575. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-d7747749ae6192d8.js +0 -1
  576. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-26488809d26e1daa.js +0 -1
  577. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-8f91ed174c14d5f0.js +0 -1
  578. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-fcc9baa42e6de4d4.js +0 -1
  579. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-5233748464280e9d.js +0 -1
  580. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-ab87cbb18d0ee538.js +0 -1
  581. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  582. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-cd9411c54c8f5b35.js +0 -1
  583. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-cd9411c54c8f5b35.js +0 -1
  584. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-cd9411c54c8f5b35.js +0 -1
  585. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  586. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-cd9411c54c8f5b35.js +0 -1
  587. package/.next/standalone/.next/static/chunks/app/api/agents/route-cd9411c54c8f5b35.js +0 -1
  588. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  589. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-cd9411c54c8f5b35.js +0 -1
  590. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-cd9411c54c8f5b35.js +0 -1
  591. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-cd9411c54c8f5b35.js +0 -1
  592. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-cd9411c54c8f5b35.js +0 -1
  593. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-cd9411c54c8f5b35.js +0 -1
  594. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-cd9411c54c8f5b35.js +0 -1
  595. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-cd9411c54c8f5b35.js +0 -1
  596. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-cd9411c54c8f5b35.js +0 -1
  597. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-cd9411c54c8f5b35.js +0 -1
  598. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-cd9411c54c8f5b35.js +0 -1
  599. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-cd9411c54c8f5b35.js +0 -1
  600. package/.next/standalone/.next/static/chunks/app/api/comments/route-cd9411c54c8f5b35.js +0 -1
  601. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  602. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-cd9411c54c8f5b35.js +0 -1
  603. package/.next/standalone/.next/static/chunks/app/api/events/route-cd9411c54c8f5b35.js +0 -1
  604. package/.next/standalone/.next/static/chunks/app/api/health/route-cd9411c54c8f5b35.js +0 -1
  605. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-cd9411c54c8f5b35.js +0 -1
  606. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-cd9411c54c8f5b35.js +0 -1
  607. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-cd9411c54c8f5b35.js +0 -1
  608. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-cd9411c54c8f5b35.js +0 -1
  609. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-cd9411c54c8f5b35.js +0 -1
  610. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  611. package/.next/standalone/.next/static/chunks/app/api/mcp/route-cd9411c54c8f5b35.js +0 -1
  612. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-cd9411c54c8f5b35.js +0 -1
  613. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-cd9411c54c8f5b35.js +0 -1
  614. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-cd9411c54c8f5b35.js +0 -1
  615. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-cd9411c54c8f5b35.js +0 -1
  616. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-cd9411c54c8f5b35.js +0 -1
  617. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-cd9411c54c8f5b35.js +0 -1
  618. package/.next/standalone/.next/static/chunks/app/api/notifications/route-cd9411c54c8f5b35.js +0 -1
  619. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-cd9411c54c8f5b35.js +0 -1
  620. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-cd9411c54c8f5b35.js +0 -1
  621. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  622. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-cd9411c54c8f5b35.js +0 -1
  623. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-cd9411c54c8f5b35.js +0 -1
  624. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-cd9411c54c8f5b35.js +0 -1
  625. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-cd9411c54c8f5b35.js +0 -1
  626. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-cd9411c54c8f5b35.js +0 -1
  627. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-cd9411c54c8f5b35.js +0 -1
  628. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-cd9411c54c8f5b35.js +0 -1
  629. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-cd9411c54c8f5b35.js +0 -1
  630. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-cd9411c54c8f5b35.js +0 -1
  631. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-cd9411c54c8f5b35.js +0 -1
  632. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  633. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-cd9411c54c8f5b35.js +0 -1
  634. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-cd9411c54c8f5b35.js +0 -1
  635. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-cd9411c54c8f5b35.js +0 -1
  636. package/.next/standalone/.next/static/chunks/app/api/projects/route-cd9411c54c8f5b35.js +0 -1
  637. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-cd9411c54c8f5b35.js +0 -1
  638. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-cd9411c54c8f5b35.js +0 -1
  639. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-cd9411c54c8f5b35.js +0 -1
  640. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-cd9411c54c8f5b35.js +0 -1
  641. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  642. package/.next/standalone/.next/static/chunks/app/api/search/route-cd9411c54c8f5b35.js +0 -1
  643. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  644. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-cd9411c54c8f5b35.js +0 -1
  645. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-cd9411c54c8f5b35.js +0 -1
  646. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-cd9411c54c8f5b35.js +0 -1
  647. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-cd9411c54c8f5b35.js +0 -1
  648. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  649. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-cd9411c54c8f5b35.js +0 -1
  650. package/.next/standalone/.next/static/chunks/app/layout-482dee7dace72c88.js +0 -1
  651. package/.next/standalone/.next/static/chunks/app/onboarding/page-d9dbd817391b462b.js +0 -1
  652. package/.next/standalone/.next/static/css/4279f38594ac772a.css +0 -1
  653. package/.next/standalone/.next/static/media/0f1bdadaf30e2d5f-s.woff2 +0 -0
  654. package/.next/standalone/.next/static/media/2c34d62a75506231-s.woff2 +0 -0
  655. package/.next/standalone/.next/static/media/601f5c280d60caca-s.woff2 +0 -0
  656. package/.next/standalone/.next/static/media/a115172161b307bb-s.woff2 +0 -0
  657. package/.next/standalone/.next/static/media/d100b2a099e34044-s.woff2 +0 -0
  658. package/.next/standalone/.next/static/media/f5271587012faf78-s.p.woff2 +0 -0
  659. /package/.next/standalone/.next/static/{AKJHlhCKd44_-khht8nN0 → 519aK55QLHaVN7b1TVDkB}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@ description: Chorus AI Agent collaboration platform — overview, common tools,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.10.0"
7
+ version: "0.11.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Development workflow — claim tasks, report work, self-chec
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.10.0"
7
+ version: "0.11.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Idea workflow — claim ideas, run elaboration rounds, and p
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.10.0"
7
+ version: "0.11.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -298,4 +298,5 @@ This is a soft heuristic, not a rule — use judgment. Cycle prevention is autom
298
298
  ## Next
299
299
 
300
300
  - Once elaboration is resolved, use the `proposal-chorus` skill (`<BASE_URL>/skill/proposal-chorus/SKILL.md`) to create a Proposal with document and task drafts
301
+ - **Human "Verify Elaborate" handoff:** when a human clicks **Verify Elaborate** on the idea-detail panel, Chorus resolves the elaboration and wakes the Idea's assigned daemon agent to write the proposal — so the woken agent picks up this idea→proposal handoff automatically (no human-authored proposal needed).
301
302
  - For platform overview and shared tools, see the `chorus` skill (`<BASE_URL>/skill/chorus/SKILL.md`)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chorus-skill",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Chorus AI Agent collaboration platform skill. Supports PM, Developer, and Admin roles via MCP tools for the Idea-Proposal-Task workflow.",
5
5
  "author": "chorus",
6
6
  "license": "AGPL-3.0",
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.10.0"
7
+ version: "0.11.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus proposal reviewer — audits PRD/task
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.10.0"
7
+ version: "0.11.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Quick Task workflow — skip Idea→Proposal, create tasks directly
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.10.0"
7
+ version: "0.11.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Review workflow — approve/reject proposals, verify tasks,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.10.0"
7
+ version: "0.11.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus task reviewer — independently verifi
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.10.0"
7
+ version: "0.11.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Full-auto AI-DLC pipeline — drive a single prompt from Idea throu
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.10.0"
7
+ version: "0.11.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
package/README.md CHANGED
@@ -36,6 +36,8 @@ The labels under each stage are the **permissions** an actor needs at that stage
36
36
 
37
37
  ## What's New
38
38
 
39
+ **[v0.10.0](https://chorus-ai.dev/blog/chorus-v0.10.0-release/)** — Single-parent idea lineage: an idea may derive a child or be attached under another, forming a forest. The relation is intentionally weak — a parent surfaces a read-only "+N derived" rollup and does not constrain any child's elaboration, proposal, or task flow. Idea browsing consolidates onto the Dashboard (a three-way Ideas / Lineage / Stats view switch with an adaptive default); the standalone Idea List page is retired and its URLs 308-redirect to the Dashboard.
40
+
39
41
  **[v0.9.4](https://chorus-ai.dev/blog/chorus-v0.9.4-release/)** — OpenClaw plugin rewritten on the OpenClaw 2026.4.27 Plugin SDK (native MCP registration, `runEmbeddedAgent` for SSE wake, reviewers as native skills); Codex plugin hooks now ship inside the package, with an installer that cleans up legacy hook copies in the user directory.
40
42
 
41
43
  **[v0.9.0](https://chorus-ai.dev/blog/chorus-v0.9.0-release/)** — Brainstorm skill for fuzzy ideas (open-ended chat before structured Q&A) and idea-completion reports (every shipped idea gets a Summary / Decisions / Follow-ups writeup, surfaced on the idea overview).
@@ -98,6 +100,31 @@ DATABASE_URL=postgresql://user:pass@host:5432/chorus chorus
98
100
  | **Docker (full stack)** | [`docker compose up`](#quick-start-with-docker-recommended) (PostgreSQL + Redis + Chorus) |
99
101
  | **AWS CDK** | [Deploy to AWS](#deploy-to-aws) |
100
102
 
103
+ ### `chorus daemon` — Connect as Agent Runtime
104
+
105
+ The `chorus daemon` connects your local machine to a remote Chorus server as an agent runtime and executes tasks assigned by Chorus.
106
+
107
+ > **Current version:** Only **Claude Code** is supported. Support for other agent CLIs (Codex, Copilot, etc.) is planned for future releases.
108
+
109
+ ```bash
110
+ chorus login # Authenticate (opens browser)
111
+ chorus daemon # Start daemon in foreground
112
+ chorus daemon -d # Start daemon in background (detached)
113
+ chorus daemon stop # Stop background daemon
114
+ chorus daemon status # Check daemon status
115
+ chorus daemon restart # Restart background daemon
116
+ chorus daemon logs # View daemon logs
117
+ ```
118
+
119
+ **Key features:**
120
+
121
+ - **Claude Code integration** — Auto-detects `claude` CLI on your PATH
122
+ - **Background mode** — Run with `-d` flag; manage with `stop/restart/logs`
123
+ - **Permission modes** — Default is full access (yolo); use `--chorus-only` to restrict to Chorus MCP tools only
124
+ - **Interactive setup** — Prompts for credentials on first start if not already configured
125
+
126
+ The daemon requires authentication. Run `chorus login` first, or it will prompt for credentials interactively on first start (if running in a terminal).
127
+
101
128
  ---
102
129
 
103
130
  ## Screenshots
package/README.zh.md CHANGED
@@ -27,6 +27,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
27
27
 
28
28
  ## 最近更新
29
29
 
30
+ **[v0.10.0](https://chorus-ai.dev/zh/blog/chorus-v0.10.0-release/)** — 单父想法血缘:一条想法可派生子想法或挂靠至另一条之下,构成森林结构。该关联为弱关联,父想法仅呈现只读的 "+N derived" 汇总,不约束子想法的细化、提案与任务流程。想法浏览统一收敛至 Dashboard(Ideas / Lineage / Stats 三档视图切换,支持自适应默认);独立的 Idea List 页面下线,原 URL 经 308 重定向至 Dashboard。
31
+
30
32
  **[v0.9.4](https://chorus-ai.dev/zh/blog/chorus-v0.9.4-release/)** — OpenClaw 插件基于 OpenClaw 2026.4.27 Plugin SDK 全面重写(原生 MCP 注册、`runEmbeddedAgent` 处理 SSE 唤醒、reviewer 改为原生 skill);Codex 插件 hook 改为随插件包分发,安装器同时清理用户目录中的历史 hook 拷贝。
31
33
 
32
34
  **[v0.9.0](https://chorus-ai.dev/zh/blog/chorus-v0.9.0-release/)** — 头脑风暴 skill 帮你把模糊的想法聊出形状(在结构化多选题前先开放式对话),想法落地后自动生成总结报告(Summary / Decisions / Follow-ups 三段式,挂在想法概览页)。
@@ -89,6 +91,31 @@ DATABASE_URL=postgresql://user:pass@host:5432/chorus chorus
89
91
  | **Docker(完整版)** | [`docker compose up`](#docker-一键启动推荐)(PostgreSQL + Redis + Chorus) |
90
92
  | **AWS CDK** | [部署到 AWS](#部署到-aws) |
91
93
 
94
+ ### `chorus daemon` — 作为 Agent 运行时连接
95
+
96
+ `chorus daemon` 将你的本地机器作为 Agent 运行时连接到远程 Chorus 服务器并执行 Chorus 分配的任务。
97
+
98
+ > **当前版本:** 仅支持 **Claude Code**。对其他 Agent CLI(Codex、Copilot 等)的支持计划在未来版本中实现。
99
+
100
+ ```bash
101
+ chorus login # 认证(打开浏览器)
102
+ chorus daemon # 前台启动 daemon
103
+ chorus daemon -d # 后台启动 daemon(分离模式)
104
+ chorus daemon stop # 停止后台 daemon
105
+ chorus daemon status # 查看 daemon 状态
106
+ chorus daemon restart # 重启后台 daemon
107
+ chorus daemon logs # 查看 daemon 日志
108
+ ```
109
+
110
+ **主要特性:**
111
+
112
+ - **Claude Code 集成** — 自动检测 PATH 中的 `claude` CLI
113
+ - **后台模式** — 使用 `-d` 标志后台运行;用 `stop/restart/logs` 管理
114
+ - **权限模式** — 默认完全访问(yolo);使用 `--chorus-only` 限制为仅 Chorus MCP 工具
115
+ - **交互式设置** — 首次启动时如未配置凭证会提示输入
116
+
117
+ daemon 需要先认证。首次使用请先运行 `chorus login`,或者 daemon 会在首次启动时交互式提示输入凭证(如果在终端中运行)。
118
+
92
119
  ---
93
120
 
94
121
  ## 界面预览
package/chorus.mjs CHANGED
@@ -16,6 +16,73 @@ import { fileURLToPath, pathToFileURL } from "node:url";
16
16
 
17
17
  const __dirname = dirname(fileURLToPath(import.meta.url));
18
18
 
19
+ // ---------------------------------------------------------------------------
20
+ // Subcommand router (client-mode commands)
21
+ // ---------------------------------------------------------------------------
22
+ // `chorus` with no subcommand (or the existing server flags) launches the
23
+ // Next.js server exactly as before. `chorus daemon` and `chorus login` are
24
+ // client commands that connect OUT to a remote Chorus server. Their modules are
25
+ // lazy-imported so the server-launch path pays no startup cost.
26
+
27
+ const SUBCOMMANDS = new Set(["daemon", "login"]);
28
+
29
+ // Client-subcommand arg parsing + help text live in cli/client-args.mjs so they
30
+ // are pure and unit-testable (this entry module runs side effects at import).
31
+ import {
32
+ parseClientFlags,
33
+ parseDaemonAction,
34
+ daemonHelpText,
35
+ loginHelpText,
36
+ } from "./cli/client-args.mjs";
37
+
38
+ /** Read the package version once for help/version output. */
39
+ function pkgVersion() {
40
+ return JSON.parse(readFileSync(join(__dirname, "package.json"), "utf8")).version;
41
+ }
42
+
43
+ async function runSubcommand(name, rest) {
44
+ const flags = parseClientFlags(rest);
45
+
46
+ // Per-subcommand --help / -h fast-path: print subcommand-specific help and
47
+ // exit WITHOUT starting the daemon/login. (The server --help fast-path below
48
+ // is skipped for subcommands, so this is the only place client help is shown.)
49
+ if (flags.help) {
50
+ process.stdout.write(name === "login" ? loginHelpText(pkgVersion()) : daemonHelpText(pkgVersion()));
51
+ return 0;
52
+ }
53
+
54
+ if (name === "login") {
55
+ const { runLogin } = await import("./cli/login.mjs");
56
+ return runLogin(flags);
57
+ }
58
+ if (name === "daemon") {
59
+ const action = parseDaemonAction(rest);
60
+ const { runDaemon } = await import("./cli/daemon.mjs");
61
+ // Lifecycle sub-actions (stop/status/restart/logs) are handled by the
62
+ // background-lifecycle module the daemon wires in; `run` is the normal
63
+ // long-lived daemon. We pass the resolved action through so a later task
64
+ // can dispatch it without re-parsing.
65
+ return runDaemon({ ...flags, action });
66
+ }
67
+ return 1;
68
+ }
69
+
70
+ {
71
+ const sub = process.argv[2];
72
+ if (sub && SUBCOMMANDS.has(sub)) {
73
+ runSubcommand(sub, process.argv.slice(3))
74
+ .then((code) => process.exit(typeof code === "number" ? code : 0))
75
+ .catch((err) => {
76
+ console.error(`Fatal error in 'chorus ${sub}':`, err);
77
+ process.exit(1);
78
+ });
79
+ // Stop the server-launch module body from executing in this process tick.
80
+ // The promise above owns process lifetime from here.
81
+ }
82
+ }
83
+
84
+ const isSubcommand = SUBCOMMANDS.has(process.argv[2]);
85
+
19
86
  // ---------------------------------------------------------------------------
20
87
  // Dependency resolution (hoist-safe — see issue #214)
21
88
  // ---------------------------------------------------------------------------
@@ -57,16 +124,21 @@ function hasFlag(long, short) {
57
124
  return args.includes(long) || args.includes(short);
58
125
  }
59
126
 
60
- // --help / --version fast paths
61
- if (hasFlag("--help", "-h")) {
127
+ // --help / --version fast paths (skipped when a client subcommand was dispatched —
128
+ // e.g. `chorus login --help` belongs to the subcommand, not the server)
129
+ if (!isSubcommand && hasFlag("--help", "-h")) {
62
130
  const pkg = JSON.parse(readFileSync(join(__dirname, "package.json"), "utf8"));
63
131
  process.stdout.write(`
64
132
  Chorus v${pkg.version} — AI Agent & Human collaboration platform
65
133
 
66
134
  USAGE
67
- chorus [options]
135
+ chorus [options] Start the Chorus server (default)
136
+ chorus login [--url --api-key] Authenticate as an agent; saves ~/.chorus/daemon.json
137
+ chorus daemon [--url --api-key] Connect to a remote Chorus server, subscribe to the
138
+ agent notification stream, and wake a local headless
139
+ Claude Code on task dispatch
68
140
 
69
- OPTIONS
141
+ SERVER OPTIONS
70
142
  -p, --port <port> HTTP server port (default: 8637, env: PORT)
71
143
  -d, --data-dir <path> Data directory for PGlite (default: ~/.chorus-data, env: CHORUS_DATA_DIR)
72
144
  --hostname <host> Bind address (default: 0.0.0.0)
@@ -84,16 +156,38 @@ ENVIRONMENT VARIABLES
84
156
  NEXTAUTH_SECRET Session signing secret (auto-generated if unset)
85
157
  COOKIE_SECURE Set to "true" for HTTPS deployments
86
158
 
159
+ DAEMON / LOGIN (client mode)
160
+ --url <url> Remote Chorus server URL (env: CHORUS_URL)
161
+ --api-key <cho_...> Agent API key (env: CHORUS_API_KEY)
162
+ --yolo Give the woken Claude FULL permissions (env: CHORUS_YOLO=1)
163
+ (--dangerously-skip-permissions: Bash, file writes,
164
+ any command). Default is Chorus-MCP-tools-only.
165
+ --sigint-timeout <ms> Grace window after SIGINT before a forceful kill (env: CHORUS_DAEMON_SIGINT_TIMEOUT)
166
+ when an interrupt is received (default: 10000).
167
+ Also configurable via ~/.chorus/daemon.json sigintTimeoutMs.
168
+
169
+ Credential resolution order: flags > CHORUS_URL/CHORUS_API_KEY env >
170
+ ~/.chorus/daemon.json (from 'chorus login') > Claude Code plugin config.
171
+
172
+ The daemon spawns the local 'claude' CLI headlessly per task dispatch; it must
173
+ be on PATH. Override with CHORUS_CLAUDE_PATH. By default the woken Claude may
174
+ use only Chorus MCP tools (comment/claim/report/status) — pass --yolo for full
175
+ autonomy (real code-writing AI-DLC), which is dangerous: run it sandboxed.
176
+
87
177
  EXAMPLES
88
178
  chorus # Embedded PGlite (default)
89
179
  chorus --port 3000 # Custom port
90
180
  chorus --data-dir /var/lib/chorus # Custom data directory
91
181
  DATABASE_URL=postgres://... chorus --use-pglite=false # External PostgreSQL
182
+ chorus login # Interactive: validate key, save credentials
183
+ chorus daemon # Connect & wake local Claude Code (Chorus tools only)
184
+ chorus daemon --yolo # Full autonomy: woken Claude can run Bash / edit files
185
+ CHORUS_URL=https://... CHORUS_API_KEY=cho_... chorus daemon
92
186
  `);
93
187
  process.exit(0);
94
188
  }
95
189
 
96
- if (hasFlag("--version", "-v")) {
190
+ if (!isSubcommand && hasFlag("--version", "-v")) {
97
191
  const pkg = JSON.parse(readFileSync(join(__dirname, "package.json"), "utf8"));
98
192
  process.stdout.write(`${pkg.version}\n`);
99
193
  process.exit(0);
@@ -103,12 +197,19 @@ if (hasFlag("--version", "-v")) {
103
197
  // Configuration
104
198
  // ---------------------------------------------------------------------------
105
199
 
106
- const port = Number(getArg("--port", "-p") ?? process.env.PORT ?? 8637);
107
- const dataDir = resolve(
108
- getArg("--data-dir", "-d") ?? process.env.CHORUS_DATA_DIR ?? join(homedir(), ".chorus-data")
109
- );
110
- const hostname = getArg("--hostname") ?? "0.0.0.0";
111
- const PGLITE_PORT = Number(getArg("--pglite-port") ?? process.env.CHORUS_PGLITE_PORT ?? 5433);
200
+ // Server-only configuration. Guarded by `!isSubcommand` because these parse
201
+ // SERVER flags — notably `-d` is the server's `--data-dir` short alias, which
202
+ // collides with the daemon's `-d`/--detach. For `chorus daemon -d`, the
203
+ // subcommand dispatch above owns the process; computing `resolve(getArg("--data-dir","-d"))`
204
+ // here would see `-d` as a bare boolean `true` and throw `resolve(true)` on the
205
+ // same tick, crashing before the daemon detaches. Skipping for subcommands keeps
206
+ // the server-flag surface entirely out of the client-command path.
207
+ const port = isSubcommand ? 0 : Number(getArg("--port", "-p") ?? process.env.PORT ?? 8637);
208
+ const dataDir = isSubcommand
209
+ ? ""
210
+ : resolve(getArg("--data-dir", "-d") ?? process.env.CHORUS_DATA_DIR ?? join(homedir(), ".chorus-data"));
211
+ const hostname = isSubcommand ? "" : getArg("--hostname") ?? "0.0.0.0";
212
+ const PGLITE_PORT = isSubcommand ? 0 : Number(getArg("--pglite-port") ?? process.env.CHORUS_PGLITE_PORT ?? 5433);
112
213
 
113
214
  // ---------------------------------------------------------------------------
114
215
  // Utilities
@@ -362,8 +463,11 @@ process.on("exit", () => {
362
463
  // Run
363
464
  // ---------------------------------------------------------------------------
364
465
 
365
- main().catch((err) => {
366
- console.error("Fatal error:", err);
367
- if (pgliteProcess && !pgliteProcess.killed) pgliteProcess.kill("SIGTERM");
368
- process.exit(1);
369
- });
466
+ // Only launch the server when no client subcommand was dispatched above.
467
+ if (!isSubcommand) {
468
+ main().catch((err) => {
469
+ console.error("Fatal error:", err);
470
+ if (pgliteProcess && !pgliteProcess.killed) pgliteProcess.kill("SIGTERM");
471
+ process.exit(1);
472
+ });
473
+ }
@@ -0,0 +1,190 @@
1
+ // cli/backfill.mjs
2
+ // Reconnect backfill: after the SSE stream reconnects, recover anything that
3
+ // arrived during the gap so a dispatch made while the daemon was briefly
4
+ // disconnected is not lost (cli-daemon spec "Reconnect with backfill"). Two
5
+ // sources, both re-driven through the SAME router/queue + shared `seen` set:
6
+ //
7
+ // 1. NOTIFICATIONS — pull unread notifications via MCP and re-emit each as a
8
+ // synthetic `new_notification` event (the original OpenClaw onReconnect logic).
9
+ // This recovers autonomous wakes (task_assigned / mentioned / elaboration / …),
10
+ // whose actionable payload lives on the re-fetchable notification.
11
+ //
12
+ // 2. PENDING TURNS — re-derive UNSTARTED (status `pending`) DaemonSessionTurns for
13
+ // this connection's origin-pinned sessions from the TURN TABLE (子1 —
14
+ // daemon-session-conversation), NOT from notifications. The turn is persisted at
15
+ // the notification chokepoint before/at notification creation, so it survives a
16
+ // lost delivery ping; a `human_instruction`'s free-text body lives ONLY on the
17
+ // turn, making the turn table its sole reliable backfill source. Read via
18
+ // `GET /api/daemon/pending-turns?connectionUuid=…` (Bearer agent key, global
19
+ // fetch — zero new deps), each re-dispatched through `router.dispatchPendingTurn`.
20
+ //
21
+ // The pending-turns READ goes through the SHARED daemon REST client
22
+ // (`cli/daemon-rest-client.mjs`), which owns the `GET /api/daemon/pending-turns` request,
23
+ // Bearer auth, the connectionUuid guard, and the no-silent-errors handling (network error
24
+ // / non-2xx / bad JSON / missing turns array are all logged with cause and surfaced).
25
+ // This module keeps only the backfill-domain concerns: the notification source, the
26
+ // `onlyTurnUuid` precision filter, the `seen` dedup, and re-dispatch.
27
+ //
28
+ // De-dupes against the shared `seen` set so a reconnect storm doesn't double-wake.
29
+ //
30
+ // The returned `backfill` function also exposes `backfill.pendingTurnsOnly` — the
31
+ // connection-scoped pending-turns sweep ALONE — so the LIVE `deliver_turn` control ping
32
+ // (子2 — origin-only live delivery) can reuse the EXACT same sweep without re-running the
33
+ // notification source. Live ping and reconnect backfill therefore converge on one sweep +
34
+ // one `seen` set, so a turn runs at most once regardless of which path observes it first.
35
+
36
+ import { createDaemonRestClient } from "./daemon-rest-client.mjs";
37
+
38
+ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
39
+
40
+ /**
41
+ * Build an onReconnect handler that (1) re-emits missed unread notifications into
42
+ * `dispatch`, and (2) — when a connectionUuid + pending-turn dispatcher are wired —
43
+ * re-derives this connection's unstarted (pending) turns from the turn table and
44
+ * re-dispatches each. Both paths share the `seen` set so already-handled work is not
45
+ * re-run.
46
+ *
47
+ * @param {{
48
+ * mcpClient: { callTool: (name: string, args?: Record<string, unknown>) => Promise<unknown> },
49
+ * dispatch: (event: { type: string, notificationUuid: string }) => void,
50
+ * seen?: Set<string>,
51
+ * logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
52
+ * limit?: number,
53
+ * // 子1 — pending-turn backfill (all optional; when absent, only the notification
54
+ * // backfill runs, preserving the original behavior/wiring):
55
+ * url?: string, Chorus base URL (for the pending-turns read).
56
+ * apiKey?: string, `cho_` agent API key.
57
+ * getConnectionUuid?: () => (string|null), The daemon's registered connection uuid
58
+ * (learned from the SSE handshake). Null until
59
+ * then — the pending-turns read is skipped while null.
60
+ * dispatchPendingTurn?: (turn: { turnUuid: string, sessionId: string, directIdeaUuid: string|null, trigger: string, promptText: string|null }) => void,
61
+ * fetchImpl?: typeof fetch, Injectable for tests.
62
+ * }} opts
63
+ * @returns {() => Promise<void>}
64
+ */
65
+ export function createBackfill(opts) {
66
+ const { mcpClient, dispatch } = opts;
67
+ const seen = opts.seen ?? new Set();
68
+ const logger = opts.logger ?? NOOP_LOGGER;
69
+ const limit = opts.limit ?? 50;
70
+ // 子1 pending-turn backfill wiring (optional).
71
+ const url = opts.url ?? null;
72
+ const apiKey = opts.apiKey ?? null;
73
+ const getConnectionUuid = opts.getConnectionUuid ?? null;
74
+ const dispatchPendingTurn = opts.dispatchPendingTurn ?? null;
75
+ // The pending-turns READ is delegated to the shared client. Built only when the
76
+ // pending-turn backfill is wired (url + apiKey + getConnectionUuid present); otherwise
77
+ // backfillPendingTurns is an early no-op (notification-only callers / older tests).
78
+ const pendingTurnsClient =
79
+ url && apiKey && getConnectionUuid
80
+ ? createDaemonRestClient({ url, apiKey, getConnectionUuid, fetchImpl: opts.fetchImpl, logger })
81
+ : null;
82
+
83
+ /** Re-emit unread notifications missed during the gap (autonomous wakes). */
84
+ async function backfillNotifications() {
85
+ let result;
86
+ try {
87
+ result = /** @type {{ notifications?: Array<{ uuid: string }> }} */ (
88
+ await mcpClient.callTool("chorus_get_notifications", {
89
+ status: "unread",
90
+ limit,
91
+ autoMarkRead: false,
92
+ })
93
+ );
94
+ } catch (err) {
95
+ logger.warn(`[Chorus] backfill fetch failed: ${err}`);
96
+ return;
97
+ }
98
+
99
+ const notifications = result?.notifications;
100
+ if (!Array.isArray(notifications)) {
101
+ logger.warn("[Chorus] backfill: no notifications array in response");
102
+ return;
103
+ }
104
+
105
+ let redispatched = 0;
106
+ for (const n of notifications) {
107
+ if (!n || typeof n.uuid !== "string") continue;
108
+ // Pre-check only — do NOT mark seen here. The router (dispatch) is the
109
+ // single owner of marking-at-dispatch; if backfill marked first, the
110
+ // router's own `seen.has(...)` early-return would fire and the wake would
111
+ // never enqueue (every backfilled dispatch silently dropped). This
112
+ // pre-check is just a cheap early-out for notifications already handled.
113
+ if (seen.has(n.uuid)) continue;
114
+ redispatched++;
115
+ dispatch({ type: "new_notification", notificationUuid: n.uuid });
116
+ }
117
+ if (redispatched > 0) {
118
+ logger.info(`[Chorus] backfill re-dispatched ${redispatched} missed notification(s)`);
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Re-derive this connection's UNSTARTED (pending) turns from the turn table (子1)
124
+ * and re-dispatch them through the router. No-op (silently skipped) when the
125
+ * pending-turn wiring is absent or the connectionUuid is not known yet. Never throws
126
+ * into the reconnect path — a failure is logged and swallowed.
127
+ *
128
+ * `onlyTurnUuid` (子2 — origin-only live delivery): when set, dispatch ONLY the turn
129
+ * with that uuid out of the fetched set, so a live `deliver_turn` ping runs PRECISELY
130
+ * the turn it announced and never drags the connection's other still-pending turns
131
+ * along. When omitted (the reconnect path), dispatch ALL pending turns — the lost-ping
132
+ * safety net that recovers everything missed during a gap.
133
+ *
134
+ * @param {string} [onlyTurnUuid]
135
+ */
136
+ async function backfillPendingTurns(onlyTurnUuid) {
137
+ if (!pendingTurnsClient || !dispatchPendingTurn) {
138
+ // Pending-turn backfill not wired (e.g. notification-only callers / older tests).
139
+ return;
140
+ }
141
+ // The shared client reads `GET /api/daemon/pending-turns?connectionUuid=…`, skipping
142
+ // (no log) while the connectionUuid is not known yet — a normal early state — and
143
+ // surfacing a network error / non-2xx / bad JSON / missing turns array with its cause
144
+ // (logged) as `result.ok === false`. We just consume the parsed turns; never throw.
145
+ const result = await pendingTurnsClient.readPendingTurns();
146
+ if (!result.ok || !result.data) {
147
+ // Either nothing to read yet (skipped) or a logged failure — nothing to dispatch.
148
+ return;
149
+ }
150
+ const turns = result.data.turns;
151
+
152
+ let redispatched = 0;
153
+ for (const t of turns) {
154
+ if (!t || typeof t.turnUuid !== "string") continue;
155
+ // Live `deliver_turn` precision: when a specific turnUuid was announced, dispatch
156
+ // ONLY it — skip every other pending turn of the connection (they are recovered by
157
+ // the arg-less reconnect sweep, not by a single-turn live ping).
158
+ if (onlyTurnUuid && t.turnUuid !== onlyTurnUuid) continue;
159
+ // The router (dispatchPendingTurn) is the single owner of marking-seen (keyed
160
+ // `turn:<uuid>`), exactly like the notification path — so do NOT mark here.
161
+ if (seen.has(`turn:${t.turnUuid}`)) continue;
162
+ redispatched++;
163
+ dispatchPendingTurn(t);
164
+ }
165
+ if (redispatched > 0) {
166
+ const scope = onlyTurnUuid ? `turn ${onlyTurnUuid}` : `${redispatched} pending turn(s)`;
167
+ logger.info(`[Chorus] backfill re-derived ${scope} from the turn table`);
168
+ }
169
+ }
170
+
171
+ async function backfill() {
172
+ // Run both sources. Each swallows its own errors so one failing source never
173
+ // aborts the other (a notification-fetch failure must not lose pending turns, and
174
+ // vice versa).
175
+ await backfillNotifications();
176
+ await backfillPendingTurns();
177
+ }
178
+
179
+ // Expose the CONNECTION-SCOPED pending-turns sweep on its own so the LIVE
180
+ // `deliver_turn` control ping (子2 — origin-only live delivery) reuses the EXACT same
181
+ // sweep the reconnect path runs — no second sweep, no second code path. The control
182
+ // handler triggers `backfill.pendingTurnsOnly()`; it shares the same `seen` set +
183
+ // `dispatchPendingTurn`, so a turn delivered live and also re-derived on reconnect runs
184
+ // at most once. Non-throwing (the inner sweep swallows + logs its own errors). The live
185
+ // `deliver_turn` ping passes the precise `turnUuid` so ONLY that turn runs; an arg-less
186
+ // call (reconnect) sweeps all pending.
187
+ /** @type {(onlyTurnUuid?: string) => Promise<void>} */
188
+ backfill.pendingTurnsOnly = backfillPendingTurns;
189
+ return backfill;
190
+ }