@chorus-aidlc/chorus 0.11.1 → 0.12.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 (641) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +431 -418
  3. package/.next/standalone/.next/app-path-routes-manifest.json +41 -39
  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 +8 -0
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
  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 +1 -1
  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 +1 -1
  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 +1 -1
  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 +2 -2
  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 +1 -1
  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 +3 -3
  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 +3 -3
  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 +3 -3
  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 +3 -3
  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.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/admin/companies/route.js +1 -1
  63. package/.next/standalone/.next/server/app/api/admin/companies/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/admin/login/route.js +1 -1
  66. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/admin/session/route.js +1 -1
  68. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/agent-connections/route.js +1 -1
  70. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/agents/[uuid]/route.js +1 -1
  73. package/.next/standalone/.next/server/app/api/agents/[uuid]/route.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  76. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  77. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/agents/route.js +1 -1
  79. package/.next/standalone/.next/server/app/api/agents/route.js.nft.json +1 -1
  80. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route.js +1 -1
  82. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/api-keys/route.js +1 -1
  85. package/.next/standalone/.next/server/app/api/api-keys/route.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/auth/callback/route.js +1 -1
  88. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/auth/check-default/route.js +1 -1
  90. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
  93. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/auth/identify/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/auth/logout/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/auth/refresh/route.js +1 -1
  100. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/auth/session/route.js +1 -1
  102. package/.next/standalone/.next/server/app/api/auth/session/route.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
  105. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  107. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
  110. package/.next/standalone/.next/server/app/api/daemon/control/route.js.nft.json +1 -1
  111. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
  113. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
  114. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
  116. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
  117. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
  119. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
  120. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
  122. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
  125. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
  126. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
  128. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
  129. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  131. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
  132. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
  134. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
  135. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -0
  137. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -0
  138. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -0
  139. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
  140. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
  141. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
  143. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
  144. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
  146. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
  147. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  149. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js.nft.json +1 -1
  150. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
  152. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
  153. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
  155. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  156. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/events/route.js +1 -1
  158. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  162. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  163. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  165. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  166. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  168. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  169. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  171. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  172. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  174. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  175. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  177. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  178. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/keepalive/route.js +1 -0
  180. package/.next/standalone/.next/server/app/api/keepalive/route.js.nft.json +1 -0
  181. package/.next/standalone/.next/server/app/api/keepalive/route_client-reference-manifest.js +1 -0
  182. package/.next/standalone/.next/server/app/api/mcp/route.js +5 -5
  183. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  184. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  186. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  187. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  189. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  192. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  193. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  195. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  196. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  197. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  198. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  199. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  201. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  202. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  203. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  204. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  205. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  207. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  208. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  210. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js.nft.json +1 -1
  211. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  213. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js.nft.json +1 -1
  214. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  215. package/.next/standalone/.next/server/app/api/project-groups/route.js +1 -1
  216. package/.next/standalone/.next/server/app/api/project-groups/route.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.js.nft.json +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js.nft.json +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js.nft.json +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  231. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  232. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  233. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  234. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  235. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  237. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js.nft.json +1 -1
  238. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  240. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js.nft.json +1 -1
  241. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  242. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  243. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js.nft.json +1 -1
  244. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  245. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  246. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js.nft.json +1 -1
  247. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  249. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js.nft.json +1 -1
  250. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  251. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  252. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  253. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  254. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  255. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  256. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  258. package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  259. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  260. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  261. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js.nft.json +1 -1
  262. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  263. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  264. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js.nft.json +1 -1
  265. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  266. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  267. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js.nft.json +1 -1
  268. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  269. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  270. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js.nft.json +1 -1
  271. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  272. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  273. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js.nft.json +1 -1
  274. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  275. package/.next/standalone/.next/server/app/api/search/route.js +1 -1
  276. package/.next/standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  277. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  278. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  279. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  280. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  281. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  282. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  283. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  284. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  285. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  286. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  287. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  288. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  289. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  290. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  291. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  292. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  293. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  294. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  295. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  296. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  297. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  298. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  299. package/.next/standalone/.next/server/app/index.html +1 -1
  300. package/.next/standalone/.next/server/app/index.rsc +3 -3
  301. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  302. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  303. package/.next/standalone/.next/server/app/login/admin.rsc +3 -3
  304. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  305. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  306. package/.next/standalone/.next/server/app/login/callback.rsc +4 -4
  307. package/.next/standalone/.next/server/app/login/page.js +1 -1
  308. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  309. package/.next/standalone/.next/server/app/login/pick-workspace/page.js +1 -1
  310. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  311. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  312. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +4 -4
  313. package/.next/standalone/.next/server/app/login/silent-refresh/page.js +1 -1
  314. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  315. package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
  316. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +4 -4
  317. package/.next/standalone/.next/server/app/login.html +1 -1
  318. package/.next/standalone/.next/server/app/login.rsc +4 -4
  319. package/.next/standalone/.next/server/app/onboarding/page.js +1 -1
  320. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  321. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  322. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  323. package/.next/standalone/.next/server/app/onboarding.rsc +4 -4
  324. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  325. package/.next/standalone/.next/server/app/projects.html +1 -1
  326. package/.next/standalone/.next/server/app/projects.rsc +5 -5
  327. package/.next/standalone/.next/server/app/settings.html +1 -1
  328. package/.next/standalone/.next/server/app/settings.rsc +5 -5
  329. package/.next/standalone/.next/server/app-paths-manifest.json +41 -39
  330. package/.next/standalone/.next/server/chunks/{5201.js → 1343.js} +2 -2
  331. package/.next/standalone/.next/server/chunks/1463.js +1 -0
  332. package/.next/standalone/.next/server/chunks/1596.js +2 -2
  333. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  334. package/.next/standalone/.next/server/chunks/2622.js +1 -0
  335. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  336. package/.next/standalone/.next/server/chunks/3219.js +1 -1
  337. package/.next/standalone/.next/server/chunks/3371.js +1 -1
  338. package/.next/standalone/.next/server/chunks/3419.js +1 -1
  339. package/.next/standalone/.next/server/chunks/345.js +1 -0
  340. package/.next/standalone/.next/server/chunks/4872.js +1 -0
  341. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  342. package/.next/standalone/.next/server/chunks/5581.js +1 -0
  343. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  344. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  345. package/.next/standalone/.next/server/chunks/7064.js +1 -0
  346. package/.next/standalone/.next/server/chunks/{5631.js → 7160.js} +1 -1
  347. package/.next/standalone/.next/server/chunks/7364.js +1 -0
  348. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  349. package/.next/standalone/.next/server/chunks/7427.js +1 -0
  350. package/.next/standalone/.next/server/chunks/7515.js +1 -0
  351. package/.next/standalone/.next/server/chunks/7578.js +2 -2
  352. package/.next/standalone/.next/server/chunks/7897.js +1 -1
  353. package/.next/standalone/.next/server/chunks/{4711.js → 796.js} +6 -6
  354. package/.next/standalone/.next/server/chunks/9161.js +1 -0
  355. package/.next/standalone/.next/server/chunks/920.js +1 -1
  356. package/.next/standalone/.next/server/chunks/937.js +3 -3
  357. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  358. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  359. package/.next/standalone/.next/server/pages/404.html +1 -1
  360. package/.next/standalone/.next/server/pages/500.html +1 -1
  361. package/.next/standalone/.next/server/pages-manifest.json +1 -1
  362. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  363. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  364. package/.next/standalone/.next/server/src/middleware.js +1 -1
  365. package/.next/standalone/.next/static/chunks/16467-dd4f928e725306c1.js +1 -0
  366. package/.next/standalone/.next/static/chunks/20081-a2bf5c9f24d5d589.js +1 -0
  367. package/.next/standalone/.next/static/chunks/2280-f48bf99ea9d88ece.js +1 -0
  368. package/.next/standalone/.next/static/chunks/26394-4af487a51dd62832.js +1 -0
  369. package/.next/standalone/.next/static/chunks/27378-9328bcc96ae9872e.js +1 -0
  370. package/.next/standalone/.next/static/chunks/32497-886aa4d3d7bf4967.js +1 -0
  371. package/.next/standalone/.next/static/chunks/37784-95dee37276b1067b.js +1 -0
  372. package/.next/standalone/.next/static/chunks/40867-04cc0d00205eaf9b.js +1 -0
  373. package/.next/standalone/.next/static/chunks/42111-1935df3b0dab2095.js +1 -0
  374. package/.next/standalone/.next/static/chunks/4860.f4242c493fcf182d.js +1 -0
  375. package/.next/standalone/.next/static/chunks/54637-71d281d649ea3a17.js +1 -0
  376. package/.next/standalone/.next/static/chunks/6239-d78e6f830ce0a7f8.js +1 -0
  377. package/.next/standalone/.next/static/chunks/64187-cff8a4b5e96fa8f9.js +10 -0
  378. package/.next/standalone/.next/static/chunks/78917-2b959ab0a7f610b4.js +1 -0
  379. package/.next/standalone/.next/static/chunks/80904-973284d1fe916c38.js +1 -0
  380. package/.next/standalone/.next/static/chunks/88561-0b14e1564419f215.js +1 -0
  381. package/.next/standalone/.next/static/chunks/89035-faf398b7bbc7d2ed.js +1 -0
  382. package/.next/standalone/.next/static/chunks/89644-2fee0373b890e8e3.js +1 -0
  383. package/.next/standalone/.next/static/chunks/{93346-5489d90bc2d57190.js → 93346-b3e1ebe948fc623f.js} +1 -1
  384. package/.next/standalone/.next/static/chunks/97868-9406a4014b667c2d.js +1 -0
  385. package/.next/standalone/.next/static/chunks/99373.880b43de1fa6411f.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-f04d5fa070f15acd.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-2944c6c9bc48a7d6.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-f1b0daea9f947caf.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-c4271886ef004611.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-7a8b60de97bfbd29.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-6620b9d7a2cc766f.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-0a55289b2bc510c2.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-5d09141beb5d6aee.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-d5c3dde34d6291a8.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-0da08d8b425acb6a.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-583e58d4d689d38b.js → page-fec019d974ef8d4e.js} +1 -1
  397. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-44014947a679f91c.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-f1b0daea9f947caf.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-f1b0daea9f947caf.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-f1b0daea9f947caf.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-f1b0daea9f947caf.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-f1b0daea9f947caf.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-f1b0daea9f947caf.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-f1b0daea9f947caf.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/agents/route-f1b0daea9f947caf.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-f1b0daea9f947caf.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-f1b0daea9f947caf.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-f1b0daea9f947caf.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-f1b0daea9f947caf.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-f1b0daea9f947caf.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-f1b0daea9f947caf.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-f1b0daea9f947caf.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-f1b0daea9f947caf.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-f1b0daea9f947caf.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-f1b0daea9f947caf.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-f1b0daea9f947caf.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-f1b0daea9f947caf.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/comments/route-f1b0daea9f947caf.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-f1b0daea9f947caf.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-f1b0daea9f947caf.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-f1b0daea9f947caf.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-f1b0daea9f947caf.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-f1b0daea9f947caf.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-f1b0daea9f947caf.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-f1b0daea9f947caf.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-f1b0daea9f947caf.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-f1b0daea9f947caf.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-f1b0daea9f947caf.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-f1b0daea9f947caf.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-f1b0daea9f947caf.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-f1b0daea9f947caf.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-f1b0daea9f947caf.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-f1b0daea9f947caf.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-f1b0daea9f947caf.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/events/route-f1b0daea9f947caf.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/health/route-f1b0daea9f947caf.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-f1b0daea9f947caf.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-f1b0daea9f947caf.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-f1b0daea9f947caf.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-f1b0daea9f947caf.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-f1b0daea9f947caf.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-f1b0daea9f947caf.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/keepalive/route-f1b0daea9f947caf.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/mcp/route-f1b0daea9f947caf.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-f1b0daea9f947caf.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-f1b0daea9f947caf.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-f1b0daea9f947caf.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-f1b0daea9f947caf.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-f1b0daea9f947caf.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-f1b0daea9f947caf.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/notifications/route-f1b0daea9f947caf.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-f1b0daea9f947caf.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-f1b0daea9f947caf.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-f1b0daea9f947caf.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-f1b0daea9f947caf.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-f1b0daea9f947caf.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-f1b0daea9f947caf.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-f1b0daea9f947caf.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-f1b0daea9f947caf.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-f1b0daea9f947caf.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-f1b0daea9f947caf.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-f1b0daea9f947caf.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-f1b0daea9f947caf.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-f1b0daea9f947caf.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-f1b0daea9f947caf.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-f1b0daea9f947caf.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-f1b0daea9f947caf.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-f1b0daea9f947caf.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/api/projects/route-f1b0daea9f947caf.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-f1b0daea9f947caf.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-f1b0daea9f947caf.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-f1b0daea9f947caf.js +1 -0
  473. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-f1b0daea9f947caf.js +1 -0
  474. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-f1b0daea9f947caf.js +1 -0
  475. package/.next/standalone/.next/static/chunks/app/api/search/route-f1b0daea9f947caf.js +1 -0
  476. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-f1b0daea9f947caf.js +1 -0
  477. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-f1b0daea9f947caf.js +1 -0
  478. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-f1b0daea9f947caf.js +1 -0
  479. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-f1b0daea9f947caf.js +1 -0
  480. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-f1b0daea9f947caf.js +1 -0
  481. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-f1b0daea9f947caf.js +1 -0
  482. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-f1b0daea9f947caf.js +1 -0
  483. package/.next/standalone/.next/static/chunks/app/layout-e3a49e06950a057f.js +1 -0
  484. package/.next/standalone/.next/static/chunks/app/login/callback/{page-0edd93f50cb4f6ea.js → page-6cad93f5c610b047.js} +1 -1
  485. package/.next/standalone/.next/static/chunks/app/login/{page-c64b8d40a0781b4c.js → page-e7493d55573a52f1.js} +1 -1
  486. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/{page-e0444ad8b50121f5.js → page-597e0f3377f18d29.js} +1 -1
  487. package/.next/standalone/.next/static/chunks/app/login/silent-refresh/{page-a9960ea858db6752.js → page-a26d1af61578c96e.js} +1 -1
  488. package/.next/standalone/.next/static/chunks/app/onboarding/page-9a41067d4c5d29d7.js +1 -0
  489. package/.next/standalone/.next/static/chunks/{webpack-039590181c63871d.js → webpack-1556cfd11f7e90d1.js} +1 -1
  490. package/.next/standalone/.next/static/css/6e8fd46b062fd4fc.css +1 -0
  491. package/.next/standalone/.next/static/v1yRpXkt1wNBkZMTE3tiz/_buildManifest.js +1 -0
  492. package/.next/standalone/package.json +1 -1
  493. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +4 -0
  494. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +4 -0
  495. package/README.md +47 -13
  496. package/README.zh.md +47 -13
  497. package/chorus.mjs +30 -14
  498. package/cli/client-args.mjs +17 -1
  499. package/cli/daemon-banner.mjs +11 -1
  500. package/cli/daemon-config.mjs +118 -0
  501. package/cli/daemon.mjs +216 -154
  502. package/cli/event-router.mjs +273 -12
  503. package/cli/server-signal-handlers.mjs +41 -0
  504. package/cli/sse-listener.mjs +27 -5
  505. package/cli/waker.mjs +36 -8
  506. package/package.json +1 -1
  507. package/prisma/migrations/20260622115159_add_daemon_connection_cwd/migration.sql +9 -0
  508. package/prisma/migrations/20260623020208_task_pinned_target_instance/migration.sql +3 -0
  509. package/prisma/migrations/20260624142248_add_agent_instance/migration.sql +31 -0
  510. package/prisma/migrations/20260624165025_drop_task_target_host_cwd/migration.sql +10 -0
  511. package/prisma/schema.prisma +69 -3
  512. package/.next/standalone/.next/server/chunks/1064.js +0 -1
  513. package/.next/standalone/.next/server/chunks/2213.js +0 -1
  514. package/.next/standalone/.next/server/chunks/369.js +0 -1
  515. package/.next/standalone/.next/server/chunks/5039.js +0 -1
  516. package/.next/standalone/.next/server/chunks/6461.js +0 -1
  517. package/.next/standalone/.next/server/chunks/6712.js +0 -1
  518. package/.next/standalone/.next/server/chunks/7867.js +0 -1
  519. package/.next/standalone/.next/server/chunks/8012.js +0 -1
  520. package/.next/standalone/.next/server/chunks/9629.js +0 -1
  521. package/.next/standalone/.next/server/chunks/9725.js +0 -1
  522. package/.next/standalone/.next/static/GQvpOux3M9CaxkMjL9GAI/_buildManifest.js +0 -1
  523. package/.next/standalone/.next/static/chunks/1217-323cc20b73ebfde9.js +0 -1
  524. package/.next/standalone/.next/static/chunks/16984-8ab5580b8e63a200.js +0 -1
  525. package/.next/standalone/.next/static/chunks/1879-7a8b283283218df2.js +0 -1
  526. package/.next/standalone/.next/static/chunks/19276-50b367d7b93d5f34.js +0 -1
  527. package/.next/standalone/.next/static/chunks/23466-e1176a6d814f4897.js +0 -1
  528. package/.next/standalone/.next/static/chunks/38040-a8687f86dd8e9d67.js +0 -1
  529. package/.next/standalone/.next/static/chunks/4860.8bdb37c964f92e48.js +0 -1
  530. package/.next/standalone/.next/static/chunks/59296-783831c43aa0162e.js +0 -1
  531. package/.next/standalone/.next/static/chunks/60648-36ccbee4ce232d52.js +0 -1
  532. package/.next/standalone/.next/static/chunks/60694-68232120903209df.js +0 -1
  533. package/.next/standalone/.next/static/chunks/64648-ece4e2a59672cf63.js +0 -1
  534. package/.next/standalone/.next/static/chunks/66205-8d7eae6a0f0a032d.js +0 -1
  535. package/.next/standalone/.next/static/chunks/66969-12f0b22c51f5a410.js +0 -1
  536. package/.next/standalone/.next/static/chunks/70536-b8bf71098ae11f07.js +0 -1
  537. package/.next/standalone/.next/static/chunks/76803-7ac4024b2ae89843.js +0 -1
  538. package/.next/standalone/.next/static/chunks/78389-b32edc6bd5c570a9.js +0 -1
  539. package/.next/standalone/.next/static/chunks/78584-eb2fa8cf2f266329.js +0 -1
  540. package/.next/standalone/.next/static/chunks/78917-150ed14a99844aab.js +0 -1
  541. package/.next/standalone/.next/static/chunks/84541-1f4c2a40f7722667.js +0 -10
  542. package/.next/standalone/.next/static/chunks/8574-b9739eb8d054c793.js +0 -1
  543. package/.next/standalone/.next/static/chunks/99373.12370329b9ab6beb.js +0 -1
  544. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-0a28456fea4ce95a.js +0 -1
  545. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-a79969c5c9aadacd.js +0 -1
  546. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-4bc556c2fc8f3d24.js +0 -1
  547. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-a28f0eaa6f4ac94a.js +0 -1
  548. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-ef82b871895245ea.js +0 -1
  549. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-2c9bcbd11ddb8661.js +0 -1
  550. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-630b168598513ce8.js +0 -1
  551. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-335f2450e44a0fba.js +0 -1
  552. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-4a191d69b2b6e880.js +0 -1
  553. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-0faebb478be4c85d.js +0 -1
  554. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2e8fcb72687100df.js +0 -1
  555. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  556. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-4bc556c2fc8f3d24.js +0 -1
  557. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-4bc556c2fc8f3d24.js +0 -1
  558. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-4bc556c2fc8f3d24.js +0 -1
  559. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-4bc556c2fc8f3d24.js +0 -1
  560. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  561. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-4bc556c2fc8f3d24.js +0 -1
  562. package/.next/standalone/.next/static/chunks/app/api/agents/route-4bc556c2fc8f3d24.js +0 -1
  563. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  564. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-4bc556c2fc8f3d24.js +0 -1
  565. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-4bc556c2fc8f3d24.js +0 -1
  566. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-4bc556c2fc8f3d24.js +0 -1
  567. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-4bc556c2fc8f3d24.js +0 -1
  568. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-4bc556c2fc8f3d24.js +0 -1
  569. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-4bc556c2fc8f3d24.js +0 -1
  570. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-4bc556c2fc8f3d24.js +0 -1
  571. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-4bc556c2fc8f3d24.js +0 -1
  572. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-4bc556c2fc8f3d24.js +0 -1
  573. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-4bc556c2fc8f3d24.js +0 -1
  574. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-4bc556c2fc8f3d24.js +0 -1
  575. package/.next/standalone/.next/static/chunks/app/api/comments/route-4bc556c2fc8f3d24.js +0 -1
  576. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-4bc556c2fc8f3d24.js +0 -1
  577. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-4bc556c2fc8f3d24.js +0 -1
  578. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-4bc556c2fc8f3d24.js +0 -1
  579. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-4bc556c2fc8f3d24.js +0 -1
  580. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-4bc556c2fc8f3d24.js +0 -1
  581. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-4bc556c2fc8f3d24.js +0 -1
  582. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-4bc556c2fc8f3d24.js +0 -1
  583. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-4bc556c2fc8f3d24.js +0 -1
  584. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-4bc556c2fc8f3d24.js +0 -1
  585. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-4bc556c2fc8f3d24.js +0 -1
  586. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-4bc556c2fc8f3d24.js +0 -1
  587. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-4bc556c2fc8f3d24.js +0 -1
  588. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  589. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-4bc556c2fc8f3d24.js +0 -1
  590. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-4bc556c2fc8f3d24.js +0 -1
  591. package/.next/standalone/.next/static/chunks/app/api/events/route-4bc556c2fc8f3d24.js +0 -1
  592. package/.next/standalone/.next/static/chunks/app/api/health/route-4bc556c2fc8f3d24.js +0 -1
  593. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-4bc556c2fc8f3d24.js +0 -1
  594. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-4bc556c2fc8f3d24.js +0 -1
  595. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-4bc556c2fc8f3d24.js +0 -1
  596. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-4bc556c2fc8f3d24.js +0 -1
  597. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-4bc556c2fc8f3d24.js +0 -1
  598. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  599. package/.next/standalone/.next/static/chunks/app/api/mcp/route-4bc556c2fc8f3d24.js +0 -1
  600. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-4bc556c2fc8f3d24.js +0 -1
  601. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-4bc556c2fc8f3d24.js +0 -1
  602. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-4bc556c2fc8f3d24.js +0 -1
  603. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-4bc556c2fc8f3d24.js +0 -1
  604. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-4bc556c2fc8f3d24.js +0 -1
  605. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-4bc556c2fc8f3d24.js +0 -1
  606. package/.next/standalone/.next/static/chunks/app/api/notifications/route-4bc556c2fc8f3d24.js +0 -1
  607. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-4bc556c2fc8f3d24.js +0 -1
  608. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-4bc556c2fc8f3d24.js +0 -1
  609. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  610. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-4bc556c2fc8f3d24.js +0 -1
  611. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-4bc556c2fc8f3d24.js +0 -1
  612. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-4bc556c2fc8f3d24.js +0 -1
  613. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-4bc556c2fc8f3d24.js +0 -1
  614. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-4bc556c2fc8f3d24.js +0 -1
  615. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-4bc556c2fc8f3d24.js +0 -1
  616. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-4bc556c2fc8f3d24.js +0 -1
  617. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-4bc556c2fc8f3d24.js +0 -1
  618. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-4bc556c2fc8f3d24.js +0 -1
  619. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-4bc556c2fc8f3d24.js +0 -1
  620. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  621. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-4bc556c2fc8f3d24.js +0 -1
  622. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-4bc556c2fc8f3d24.js +0 -1
  623. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-4bc556c2fc8f3d24.js +0 -1
  624. package/.next/standalone/.next/static/chunks/app/api/projects/route-4bc556c2fc8f3d24.js +0 -1
  625. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-4bc556c2fc8f3d24.js +0 -1
  626. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-4bc556c2fc8f3d24.js +0 -1
  627. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-4bc556c2fc8f3d24.js +0 -1
  628. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-4bc556c2fc8f3d24.js +0 -1
  629. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  630. package/.next/standalone/.next/static/chunks/app/api/search/route-4bc556c2fc8f3d24.js +0 -1
  631. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  632. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-4bc556c2fc8f3d24.js +0 -1
  633. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-4bc556c2fc8f3d24.js +0 -1
  634. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-4bc556c2fc8f3d24.js +0 -1
  635. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-4bc556c2fc8f3d24.js +0 -1
  636. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
  637. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-4bc556c2fc8f3d24.js +0 -1
  638. package/.next/standalone/.next/static/chunks/app/layout-9963339572e2e64e.js +0 -1
  639. package/.next/standalone/.next/static/chunks/app/onboarding/page-e9a69a0c537c704f.js +0 -1
  640. package/.next/standalone/.next/static/css/1d9aaac01758b297.css +0 -1
  641. /package/.next/standalone/.next/static/{GQvpOux3M9CaxkMjL9GAI → v1yRpXkt1wNBkZMTE3tiz}/_ssgManifest.js +0 -0
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.12.0](https://chorus-ai.dev/blog/chorus-v0.12.0-release/)** — Addressable daemon instances: one `chorus daemon` can serve multiple working directories (`--cwd`), and each `(agent, host, cwd)` becomes an individually visible, individually targetable instance across presence, @-mention, and assignment. Pin an instance once on an idea and its proposals, tasks, and wakes inherit it; pinned wakes are delivered to exactly that instance instead of broadcast. Comment @-mentions render as live online-status badges, and comments switch to cursor-based infinite scroll.
40
+
39
41
  **[v0.11.0](https://chorus-ai.dev/blog/chorus-v0.11.0-release/)** — The Chorus Daemon: `chorus daemon` turns your machine into a resident agent runtime that wakes a local Claude Code on each dispatch. An Agent Connections surface gives live observability and control — streaming transcripts, instruction injection, and interrupt / resume — and a "Verify Elaborate" button wakes the assigned agent to write the proposal.
40
42
 
41
43
  **[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.
@@ -46,18 +48,6 @@ The labels under each stage are the **permissions** an actor needs at that stage
46
48
 
47
49
  **[v0.8.0](https://chorus-ai.dev/blog/chorus-v0.8.0-release/)** — OpenSpec-aware mode (Claude Code): auto-activates when an `openspec/` directory and the `openspec` CLI are both present, adds `/opsx/{explore,propose,apply,archive}` and a post-verify archive-trigger hook.
48
50
 
49
- **[v0.7.0](https://chorus-ai.dev/blog/chorus-v0.7.0-release/)** — Fine-grained agent permissions: 5 resources × 3 actions grid replaces the PM/Developer/Admin three-way choice, with presets + a Custom option for free combination.
50
-
51
- **[v0.6.7](https://chorus-ai.dev/blog/chorus-v0.6.7-release/)** — Chorus plugin for Codex CLI (one-command installer), workspace picker when one email belongs to multiple Companies, per-client connect guides.
52
-
53
- **[v0.6.6](https://chorus-ai.dev/blog/chorus-v0.6.6-release/)** — npm one-click install (`npx @chorus-aidlc/chorus`), document export (MD/PDF/Word), proposal revoke, faster agent checkin with work status at a glance.
54
-
55
- **[v0.6.2](https://chorus-ai.dev/blog/chorus-v0.6.2-release/)** — Embedded PGlite mode (zero-dependency deployment), structured logging with Pino, stateless MCP for horizontal scaling, default port changed to 8637.
56
-
57
- **[v0.6.1](https://chorus-ai.dev/blog/chorus-v0.6.1-release/)** — `/yolo` skill: full-auto AI-DLC pipeline (Idea → Proposal → Execute → Verify) with Agent Team parallel execution.
58
-
59
- **[v0.6.0](https://chorus-ai.dev/blog/chorus-v0.6.0-release/)** — IdeaTracker dashboard, independent review agents (proposal-reviewer + task-reviewer), real-time agent presence indicators, cross-column Kanban animation.
60
-
61
51
  > Full changelog: [CHANGELOG.md](CHANGELOG.md)
62
52
 
63
53
  ---
@@ -123,14 +113,58 @@ chorus daemon logs # View daemon logs
123
113
  - **Claude Code integration** — Auto-detects `claude` CLI on your PATH
124
114
  - **Background mode** — Run with `-d` flag; manage with `stop/restart/logs`
125
115
  - **Permission modes** — Default is full access (yolo); use `--chorus-only` to restrict to Chorus MCP tools only
116
+ - **Multi-path** — Serve several working directories from one daemon with repeatable `--cwd` (see below)
126
117
  - **Interactive setup** — Prompts for credentials on first start if not already configured
127
118
 
128
119
  The daemon requires authentication. Run `chorus login` first, or it will prompt for credentials interactively on first start (if running in a terminal).
129
120
 
121
+ #### Serve multiple working directories
122
+
123
+ One daemon can serve several local working directories at once — each declared path registers as an independent connection (its own session + wake loop) under the same agent. A path is **just** a directory the daemon serves; it carries no project binding.
124
+
125
+ ```bash
126
+ chorus daemon --cwd ~/work/repo-a --cwd ~/work/repo-b # repeatable flag
127
+ CHORUS_DAEMON_CWDS="~/work/repo-a:~/work/repo-b" chorus daemon # or env (`:`- or `,`-separated)
128
+ ```
129
+
130
+ With no `--cwd`, the daemon serves the single directory it was launched from.
131
+
132
+ #### Configuration file — `~/.chorus/daemon.json`
133
+
134
+ `chorus login` writes credentials here (mode `0600`). You can also add daemon tunables to the **same** file. Every field is optional; flags and environment variables always take precedence over the file.
135
+
136
+ ```json
137
+ {
138
+ "url": "https://chorus.example.com",
139
+ "apiKey": "cho_xxxxxxxxxxxxxxxxxxxxxxxx",
140
+ "agentUuid": "00000000-0000-0000-0000-000000000000",
141
+ "agentName": "My Daemon Agent",
142
+ "cwds": ["~/work/repo-a", "~/work/repo-b"],
143
+ "sigintTimeoutMs": 10000
144
+ }
145
+ ```
146
+
147
+ | Field | Type | Written by / used for | Precedence (highest first) |
148
+ |-------|------|-----------------------|----------------------------|
149
+ | `url` | string | Remote Chorus server URL | `--url` flag → `CHORUS_URL` → file |
150
+ | `apiKey` | string | Agent API key (`cho_…`) | `--api-key` flag → `CHORUS_API_KEY` → file |
151
+ | `agentUuid` / `agentName` | string | Authenticated identity (recorded at login) | written by `chorus login` |
152
+ | `cwds` | string[] | Working directories the daemon serves (multi-path) | `--cwd` flag(s) → `CHORUS_DAEMON_CWDS` → file → launch dir |
153
+ | `sigintTimeoutMs` | number | Grace window (ms) after SIGINT before a forceful kill (default `10000`) | `--sigint-timeout` flag → `CHORUS_DAEMON_SIGINT_TIMEOUT` → file → `10000` |
154
+ | `yoloAckAt` | string | Internal — timestamp of a TTY yolo confirmation (managed automatically) | — |
155
+
156
+ On startup the daemon banner prints the **exact `daemon.json` path it read** (and whether the file exists), so you always know which file to edit.
157
+
130
158
  ---
131
159
 
132
160
  ## Screenshots
133
161
 
162
+ ### Remote Agent Wake — Dispatch to a Directory, Watch It Run
163
+
164
+ ![Remote Agent Wake](docs/images/agent-daemon-wake.gif)
165
+
166
+ Assign an idea to a specific directory on a remote agent, then open the conversation and watch the local Claude Code pick up the work and run in real time — no terminal, no manual resume.
167
+
134
168
  ### Proposal — AI Agent Generates Plans in Real Time
135
169
 
136
170
  ![Proposal Presence](docs/images/proposal-presence.gif)
@@ -257,7 +291,7 @@ A Cmd+K command palette for searching across all 6 entity types (Tasks, Ideas, P
257
291
  | Agent Integration | MCP SDK 1.26 (HTTP Streamable Transport) |
258
292
  | Auth | OIDC + PKCE / API Key / SuperAdmin |
259
293
  | i18n | next-intl (en, zh) |
260
- | Deployment | [Docker Hub](https://hub.docker.com/repository/docker/chorusaidlc/chorus-app/general) / Docker Compose / AWS CDK |
294
+ | Deployment | [Docker Hub](https://hub.docker.com/r/chorusaidlc/chorus-app) / Docker Compose / AWS CDK |
261
295
 
262
296
  ---
263
297
 
package/README.zh.md CHANGED
@@ -27,6 +27,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
27
27
 
28
28
  ## 最近更新
29
29
 
30
+ **[v0.12.0](https://chorus-ai.dev/zh/blog/chorus-v0.12.0-release/)** — 可寻址的 daemon 实例:一个 `chorus daemon` 可同时守多个工作目录(`--cwd`),每一个 `(agent, 主机, 目录)` 都成为一个能单独看见、单独点名的实例,贯穿 presence、@-mention 与任务指派。在想法上钉一次实例,其下的提案、任务与唤醒都会继承;带钉的唤醒被精确投递到那个实例,而非全员广播。评论区的 Agent @-mention 渲染为实时在线状态徽章,评论列表改为游标式无限滚动。
31
+
30
32
  **[v0.11.0](https://chorus-ai.dev/zh/blog/chorus-v0.11.0-release/)** — Chorus Daemon:`chorus daemon` 将本机变为常驻 Agent 运行时,在每次派发时唤起本地 Claude Code。Agent Connections 界面提供实时可观测与控制:流式 transcript、指令注入、打断 / 恢复;新增"完成细化"按钮,唤起被指派的 Agent 撰写提案。
31
33
 
32
34
  **[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。
@@ -37,18 +39,6 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
37
39
 
38
40
  **[v0.8.0](https://chorus-ai.dev/zh/blog/chorus-v0.8.0-release/)** — OpenSpec-aware 模式(仅 Claude Code):当仓库下同时存在 `openspec/` 目录和 `openspec` CLI 时自动启用,新增 `/opsx/{explore,propose,apply,archive}` 与 task verify 后的 archive-trigger 钩子。
39
41
 
40
- **[v0.7.0](https://chorus-ai.dev/zh/blog/chorus-v0.7.0-release/)** — 细粒度 Agent 权限:5 类资源 × 3 个动作组成的网格,取代 PM / Developer / Admin 三选一。保留原有预设,新增 Custom 选项自由组合。
41
-
42
- **[v0.6.7](https://chorus-ai.dev/zh/blog/chorus-v0.6.7-release/)** — Codex CLI 版 Chorus 插件(一条命令装完)、同一邮箱属于多个 Company 时的工作区选择器、每种客户端的接入文档。
43
-
44
- **[v0.6.6](https://chorus-ai.dev/zh/blog/chorus-v0.6.6-release/)** — npm 一键安装(`npx @chorus-aidlc/chorus`)、文档导出(MD/PDF/Word)、Proposal 撤回、优化 Agent Checkin 快速获取工作状态。
45
-
46
- **[v0.6.2](https://chorus-ai.dev/zh/blog/chorus-v0.6.2-release/)** — 嵌入式 PGlite 模式(零依赖部署)、Pino 结构化日志、无状态 MCP 支持水平扩展、默认端口改为 8637。
47
-
48
- **[v0.6.1](https://chorus-ai.dev/zh/blog/chorus-v0.6.1-release/)** — `/yolo` 技能:全自动 AI-DLC 流水线(Idea → Proposal → Execute → Verify),支持 Agent Team 并行执行。
49
-
50
- **[v0.6.0](https://chorus-ai.dev/zh/blog/chorus-v0.6.0-release/)** — IdeaTracker 面板、独立审阅 Agent(proposal-reviewer + task-reviewer)、实时 Agent Presence 指示器、跨列 Kanban 动画。
51
-
52
42
  > 完整更新日志:[CHANGELOG.md](CHANGELOG.md)
53
43
 
54
44
  ---
@@ -114,14 +104,58 @@ chorus daemon logs # 查看 daemon 日志
114
104
  - **Claude Code 集成** — 自动检测 PATH 中的 `claude` CLI
115
105
  - **后台模式** — 使用 `-d` 标志后台运行;用 `stop/restart/logs` 管理
116
106
  - **权限模式** — 默认完全访问(yolo);使用 `--chorus-only` 限制为仅 Chorus MCP 工具
107
+ - **多路径** — 用可重复的 `--cwd` 让单个 daemon 同时服务多个工作目录(见下文)
117
108
  - **交互式设置** — 首次启动时如未配置凭证会提示输入
118
109
 
119
110
  daemon 需要先认证。首次使用请先运行 `chorus login`,或者 daemon 会在首次启动时交互式提示输入凭证(如果在终端中运行)。
120
111
 
112
+ #### 服务多个工作目录
113
+
114
+ 一个 daemon 可以同时服务多个本地工作目录——每个声明的路径会注册为一条独立连接(各自拥有会话与唤起循环),归属同一个 Agent。路径**仅仅**是 daemon 服务的目录,不携带任何项目绑定。
115
+
116
+ ```bash
117
+ chorus daemon --cwd ~/work/repo-a --cwd ~/work/repo-b # 可重复传入
118
+ CHORUS_DAEMON_CWDS="~/work/repo-a:~/work/repo-b" chorus daemon # 或用环境变量(`:` 或 `,` 分隔)
119
+ ```
120
+
121
+ 不传 `--cwd` 时,daemon 只服务它的启动目录这一个路径。
122
+
123
+ #### 配置文件 —— `~/.chorus/daemon.json`
124
+
125
+ `chorus login` 会把凭证写入此文件(权限 `0600`)。你也可以把 daemon 的调优项写进**同一个**文件。所有字段都是可选的;命令行参数和环境变量的优先级始终高于文件。
126
+
127
+ ```json
128
+ {
129
+ "url": "https://chorus.example.com",
130
+ "apiKey": "cho_xxxxxxxxxxxxxxxxxxxxxxxx",
131
+ "agentUuid": "00000000-0000-0000-0000-000000000000",
132
+ "agentName": "My Daemon Agent",
133
+ "cwds": ["~/work/repo-a", "~/work/repo-b"],
134
+ "sigintTimeoutMs": 10000
135
+ }
136
+ ```
137
+
138
+ | 字段 | 类型 | 写入方 / 用途 | 优先级(从高到低) |
139
+ |------|------|---------------|--------------------|
140
+ | `url` | string | 远程 Chorus 服务器 URL | `--url` 参数 → `CHORUS_URL` → 文件 |
141
+ | `apiKey` | string | Agent API Key(`cho_…`) | `--api-key` 参数 → `CHORUS_API_KEY` → 文件 |
142
+ | `agentUuid` / `agentName` | string | 认证身份(登录时记录) | 由 `chorus login` 写入 |
143
+ | `cwds` | string[] | daemon 服务的工作目录(多路径) | `--cwd` 参数 → `CHORUS_DAEMON_CWDS` → 文件 → 启动目录 |
144
+ | `sigintTimeoutMs` | number | SIGINT 后强制结束前的宽限窗口(毫秒,默认 `10000`) | `--sigint-timeout` 参数 → `CHORUS_DAEMON_SIGINT_TIMEOUT` → 文件 → `10000` |
145
+ | `yoloAckAt` | string | 内部字段——TTY 下 yolo 确认的时间戳(自动管理) | — |
146
+
147
+ daemon 启动时的横幅会打印它**实际读取的 `daemon.json` 路径**(以及该文件是否存在),让你随时清楚该编辑哪个文件。
148
+
121
149
  ---
122
150
 
123
151
  ## 界面预览
124
152
 
153
+ ### 远程唤醒 Agent——派活到指定目录,实时看它跑
154
+
155
+ ![远程唤醒 Agent](docs/images/agent-daemon-wake.gif)
156
+
157
+ 把一条想法派给远程 Agent 的某个目录,打开对话窗口,就能实时看到本地的 Claude Code 接活、开跑,全程不用碰终端,也不用手动 resume。
158
+
125
159
  ### Proposal——AI Agent 实时生成计划
126
160
 
127
161
  ![Proposal Presence](docs/images/proposal-presence.gif)
@@ -248,7 +282,7 @@ Cmd+K 命令面板,支持跨 6 种实体类型搜索。支持范围筛选(
248
282
  | Agent 集成 | MCP SDK 1.26 (HTTP Streamable Transport) |
249
283
  | 认证 | OIDC + PKCE / API Key / SuperAdmin |
250
284
  | i18n | next-intl (en, zh) |
251
- | 部署 | [Docker Hub](https://hub.docker.com/repository/docker/chorusaidlc/chorus-app/general) / Docker Compose / AWS CDK |
285
+ | 部署 | [Docker Hub](https://hub.docker.com/r/chorusaidlc/chorus-app) / Docker Compose / AWS CDK |
252
286
 
253
287
  ---
254
288
 
package/chorus.mjs CHANGED
@@ -34,6 +34,10 @@ import {
34
34
  daemonHelpText,
35
35
  loginHelpText,
36
36
  } from "./cli/client-args.mjs";
37
+ // Server-only signal-handler installer, guarded so a client subcommand
38
+ // (`chorus daemon` / `chorus login`) never registers the server's handlers.
39
+ // Pure module → unit-testable without this entry's import-time side effects.
40
+ import { installServerSignalHandlers } from "./cli/server-signal-handlers.mjs";
37
41
 
38
42
  /** Read the package version once for help/version output. */
39
43
  function pkgVersion() {
@@ -159,10 +163,13 @@ ENVIRONMENT VARIABLES
159
163
  DAEMON / LOGIN (client mode)
160
164
  --url <url> Remote Chorus server URL (env: CHORUS_URL)
161
165
  --api-key <cho_...> Agent API key (env: CHORUS_API_KEY)
162
- --yolo Give the woken Claude FULL permissions (env: CHORUS_YOLO=1)
166
+ --chorus-only Restrict the woken Claude to Chorus MCP tools only (env: CHORUS_CHORUS_ONLY=1)
167
+ (comment/claim/report/status — no Bash / file edits).
168
+ Opt out of the default full-autonomy posture.
169
+ --yolo Full autonomy for the woken Claude — the DEFAULT (env: CHORUS_YOLO=1)
163
170
  (--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)
171
+ any command). Already on unless --chorus-only is set.
172
+ --sigint-timeout <ms> Grace window after SIGINT before a forceful kill (env: CHORUS_DAEMON_SIGINT_TIMEOUT)
166
173
  when an interrupt is received (default: 10000).
167
174
  Also configurable via ~/.chorus/daemon.json sigintTimeoutMs.
168
175
 
@@ -170,9 +177,9 @@ DAEMON / LOGIN (client mode)
170
177
  ~/.chorus/daemon.json (from 'chorus login') > Claude Code plugin config.
171
178
 
172
179
  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.
180
+ be on PATH. Override with CHORUS_CLAUDE_PATH. By default the woken Claude runs
181
+ with FULL autonomy (real code-writing AI-DLC), which is dangerous: run it
182
+ sandboxed, or pass --chorus-only to restrict it to Chorus MCP tools.
176
183
 
177
184
  EXAMPLES
178
185
  chorus # Embedded PGlite (default)
@@ -180,8 +187,8 @@ EXAMPLES
180
187
  chorus --data-dir /var/lib/chorus # Custom data directory
181
188
  DATABASE_URL=postgres://... chorus --use-pglite=false # External PostgreSQL
182
189
  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
190
+ chorus daemon # Connect & wake local Claude Code (full autonomy by default)
191
+ chorus daemon --chorus-only # Restrict the woken Claude to Chorus MCP tools only
185
192
  CHORUS_URL=https://... CHORUS_API_KEY=cho_... chorus daemon
186
193
  `);
187
194
  process.exit(0);
@@ -451,12 +458,21 @@ function shutdown() {
451
458
  }
452
459
  }
453
460
 
454
- process.on("SIGINT", shutdown);
455
- process.on("SIGTERM", shutdown);
456
- process.on("exit", () => {
457
- if (pgliteProcess && !pgliteProcess.killed) {
458
- pgliteProcess.kill("SIGKILL");
459
- }
461
+ // Install the server's SIGINT/SIGTERM/exit handlers ONLY on the server launch
462
+ // path. On a client subcommand (`chorus daemon` / `chorus login`) this installs
463
+ // nothing, so the daemon's OWN graceful shutdown handler is the sole signal
464
+ // disposition — otherwise the server's handler (registered first) would pre-empt
465
+ // it with a synchronous `process.exit(0)`, leaving the daemon to disconnect
466
+ // non-gracefully (stale presence) and printing a misleading bare "Shutting down...".
467
+ installServerSignalHandlers({
468
+ isSubcommand,
469
+ processRef: process,
470
+ shutdown,
471
+ cleanupExit: () => {
472
+ if (pgliteProcess && !pgliteProcess.killed) {
473
+ pgliteProcess.kill("SIGKILL");
474
+ }
475
+ },
460
476
  });
461
477
 
462
478
  // ---------------------------------------------------------------------------
@@ -28,10 +28,16 @@ export const KNOWN_AGENTS = new Set(["claude-code"]);
28
28
  * "false" (important for layered env/flag precedence downstream).
29
29
  *
30
30
  * @param {string[]} argv
31
+ * The new repeatable `--cwd <path>` (space + `=`) declares a working directory the
32
+ * daemon serves; repeating it (`--cwd a --cwd b`) declares the SET of paths for the
33
+ * single-daemon multi-path engine (T3). It is collected into a `cwd: string[]` array
34
+ * preserving order; absent ⇒ `cwd` is unset (the layered resolver then falls back to
35
+ * env / config / the process cwd). It is JUST a path list — no project binding.
36
+ *
31
37
  * @returns {{
32
38
  * url?: string, apiKey?: string, yolo?: boolean, sigintTimeout?: string,
33
39
  * agent?: string, chorusOnly?: boolean, verbose?: boolean, detach?: boolean,
34
- * help?: boolean,
40
+ * cwd?: string[], help?: boolean,
35
41
  * }}
36
42
  */
37
43
  export function parseClientFlags(argv) {
@@ -47,6 +53,11 @@ export function parseClientFlags(argv) {
47
53
  else if (a.startsWith("--sigint-timeout=")) out.sigintTimeout = a.slice("--sigint-timeout=".length);
48
54
  else if (a === "--agent") out.agent = argv[i + 1];
49
55
  else if (a.startsWith("--agent=")) out.agent = a.slice("--agent=".length);
56
+ else if (a === "--cwd" || a.startsWith("--cwd=")) {
57
+ // Repeatable: collect every --cwd into an ordered array (the cwd SET).
58
+ const value = a === "--cwd" ? argv[i + 1] : a.slice("--cwd=".length);
59
+ if (typeof value === "string") (out.cwd ??= []).push(value);
60
+ }
50
61
  else if (a === "--chorus-only") out.chorusOnly = true;
51
62
  else if (a === "--verbose") out.verbose = true;
52
63
  else if (a === "-d" || a === "--detach") out.detach = true;
@@ -103,6 +114,11 @@ OPTIONS
103
114
  --chorus-only Restrict the woken agent to Chorus (env: CHORUS_CHORUS_ONLY=1)
104
115
  MCP tools only (no Bash / file edits) — reclaims the
105
116
  safe posture from the default yolo.
117
+ --cwd <path> A working directory the daemon serves. Repeatable —
118
+ (env: CHORUS_DAEMON_CWDS) each --cwd registers an independent
119
+ connection for that path, so one daemon can serve several
120
+ local paths at once. Default: the directory it was launched
121
+ from. (Also configurable as "cwds":[…] in ~/.chorus/daemon.json.)
106
122
  -d, --detach Run detached in the background (pidfile + logfile)
107
123
  --verbose More detailed per-wake logging
108
124
  --sigint-timeout <ms> Grace window after SIGINT before a forceful kill
@@ -19,6 +19,8 @@
19
19
  * @property {string} agentType local agent backend (e.g. claude-code).
20
20
  * @property {string|null} claudePath resolved claude path, or null when not found.
21
21
  * @property {string} [connection] connection state line (default "connecting…").
22
+ * @property {string} [configPath] absolute path to the daemon.json the CLI reads.
23
+ * @property {boolean} [configExists] whether that daemon.json exists on disk.
22
24
  */
23
25
 
24
26
  /** Right-pad to width (banner box alignment). */
@@ -38,7 +40,7 @@ export function bannerRows(info) {
38
40
  ? "YOLO ⚠ (full autonomy — Bash/write/any command)"
39
41
  : "chorus-only (Chorus MCP tools only)";
40
42
  const claude = info.claudePath ? `found: ${info.claudePath}` : "NOT FOUND — install `claude` or set CHORUS_CLAUDE_PATH";
41
- return [
43
+ const rows = [
42
44
  ["Version", `chorus v${info.version}`],
43
45
  ["Server", info.url],
44
46
  ["Agent", `${info.agentName} (${info.agentUuid})`],
@@ -48,6 +50,14 @@ export function bannerRows(info) {
48
50
  ["Connection", info.connection ?? "connecting…"],
49
51
  ["claude CLI", claude],
50
52
  ];
53
+ // Config file row — shown only when the path is known. Tells the operator
54
+ // exactly which daemon.json the CLI read (and whether it exists), so a
55
+ // mis-located or absent config is obvious at a glance.
56
+ if (info.configPath) {
57
+ const exists = info.configExists ? "" : " (not found — using flags/env/defaults)";
58
+ rows.push(["Config", `${info.configPath}${exists}`]);
59
+ }
60
+ return rows;
51
61
  }
52
62
 
53
63
  /**
@@ -13,6 +13,8 @@
13
13
  // IO (env / file read) is injectable so this is unit-testable without real disk.
14
14
 
15
15
  import { readFileSync } from "node:fs";
16
+ import { homedir } from "node:os";
17
+ import { isAbsolute, resolve as resolvePath } from "node:path";
16
18
  import { loginFilePath } from "./credentials.mjs";
17
19
 
18
20
  /** Built-in default escalation window (ms) — matches the spec's 10 seconds. */
@@ -82,3 +84,119 @@ export function resolveSigintTimeoutMs(flags = {}, deps = {}) {
82
84
  // 4. Built-in default
83
85
  return DEFAULT_SIGINT_TIMEOUT_MS;
84
86
  }
87
+
88
+ // ===== Multi-path cwd set (T3 — 单 daemon 多路径引擎, FR-5/FR-8, DEC-2) =====
89
+ //
90
+ // A daemon may declare a SET of local working directories (a cwd LIST) it serves.
91
+ // Each declared path becomes one INDEPENDENT connection (own SSE self-report +
92
+ // own Waker bound to that cwd), so the same agent on the same host driving several
93
+ // paths registers as several distinct rows instead of one. This is JUST a set of
94
+ // paths: per the human's cwd⟂project correction (DEC-5) it carries NO path↔project
95
+ // binding and there is NO project→cwd routing — the daemon only declares which
96
+ // directories it serves.
97
+ //
98
+ // Layered resolution, mirroring resolveSigintTimeoutMs's precedence — first defined
99
+ // source wins (the WHOLE set comes from the first source that yields any path):
100
+ //
101
+ // --cwd flag(s) > CHORUS_DAEMON_CWDS env (comma/`os.delimiter`-separated)
102
+ // > ~/.chorus/daemon.json `cwds: [...]`
103
+ // > [undefined] (single connection at the daemon's process cwd)
104
+ //
105
+ // The `[undefined]` fallback is the HARD-1 / single-path default: an unspecified
106
+ // cwd set means "serve one path, the process default" — exactly today's behavior.
107
+ // The Waker/SseListener treat an `undefined` entry as "use process.cwd()".
108
+
109
+ /** Expand a leading `~` to the home dir and resolve to an absolute path. */
110
+ function normalizeCwd(value, home) {
111
+ if (typeof value !== "string") return undefined;
112
+ const trimmed = value.trim();
113
+ if (!trimmed) return undefined;
114
+ let expanded = trimmed;
115
+ if (expanded === "~") expanded = home;
116
+ else if (expanded.startsWith("~/")) expanded = resolvePath(home, expanded.slice(2));
117
+ // Resolve relative paths against the daemon's process cwd so the declared path is
118
+ // always absolute (claude --resume scopes transcripts to the ABSOLUTE cwd).
119
+ return isAbsolute(expanded) ? expanded : resolvePath(expanded);
120
+ }
121
+
122
+ /**
123
+ * De-duplicate a list of normalized paths preserving first-seen order, dropping
124
+ * blanks/undefined. Returns the cleaned array (possibly empty).
125
+ * @param {Array<unknown>} list @param {string} home
126
+ * @returns {string[]}
127
+ */
128
+ function cleanCwdList(list, home) {
129
+ const seen = new Set();
130
+ const out = [];
131
+ for (const raw of Array.isArray(list) ? list : []) {
132
+ const norm = normalizeCwd(raw, home);
133
+ if (norm === undefined || seen.has(norm)) continue;
134
+ seen.add(norm);
135
+ out.push(norm);
136
+ }
137
+ return out;
138
+ }
139
+
140
+ /**
141
+ * Resolve the SET of working directories this daemon serves (FR-5). One entry per
142
+ * connection the daemon will register. Each entry is an absolute path, EXCEPT the
143
+ * single-element `[undefined]` fallback which means "serve the process default cwd"
144
+ * (the unspecified / single-path / HARD-1 default — identical to today's behavior).
145
+ *
146
+ * Layered precedence (first source that yields ANY path wins for the whole set):
147
+ * 1. flags.cwd — a string or string[] from repeatable `--cwd` flags.
148
+ * 2. env — CHORUS_DAEMON_CWDS, split on the platform path delimiter or
149
+ * a comma (whichever the user used; both are accepted).
150
+ * 3. login/config — ~/.chorus/daemon.json `cwds` (array of strings).
151
+ * 4. default — `[undefined]` (one connection at the process cwd).
152
+ *
153
+ * The declaration is purely a list of paths — it does NOT carry, store, or upload
154
+ * any path↔project binding (DEC-5: cwd ⟂ project).
155
+ *
156
+ * @param {{ cwd?: string|string[] }} [flags] Explicit `--cwd` value(s).
157
+ * @param {{
158
+ * env?: Record<string, string|undefined>,
159
+ * readJson?: (path: string) => (Record<string, unknown>|null),
160
+ * loginPath?: string,
161
+ * home?: string,
162
+ * delimiter?: string,
163
+ * }} [deps]
164
+ * @returns {Array<string|undefined>} A non-empty list; `[undefined]` ⇒ process cwd.
165
+ */
166
+ export function resolveDaemonCwds(flags = {}, deps = {}) {
167
+ const env = deps.env ?? process.env;
168
+ const readJson = deps.readJson ?? readJsonSafe;
169
+ const loginPath = deps.loginPath ?? loginFilePath();
170
+ const home = deps.home ?? homedir();
171
+ // Accept both the OS path delimiter (":" on POSIX, ";" on Windows) and a comma, so
172
+ // CHORUS_DAEMON_CWDS=/a:/b and CHORUS_DAEMON_CWDS=/a,/b both work cross-platform.
173
+ const delimiters = new RegExp(`[${deps.delimiter ?? ""},]|${process.platform === "win32" ? ";" : ":"}`);
174
+
175
+ // 1. Explicit --cwd flag(s) — a string or an array (repeatable flag).
176
+ const flagList = Array.isArray(flags.cwd)
177
+ ? flags.cwd
178
+ : typeof flags.cwd === "string"
179
+ ? [flags.cwd]
180
+ : [];
181
+ const fromFlags = cleanCwdList(flagList, home);
182
+ if (fromFlags.length > 0) return fromFlags;
183
+
184
+ // 2. Environment variable (delimiter- or comma-separated).
185
+ const envRaw = env.CHORUS_DAEMON_CWDS;
186
+ if (typeof envRaw === "string" && envRaw.trim()) {
187
+ const fromEnv = cleanCwdList(envRaw.split(delimiters), home);
188
+ if (fromEnv.length > 0) return fromEnv;
189
+ }
190
+
191
+ // 3. Login/config file (~/.chorus/daemon.json `cwds`).
192
+ const file = readJson(loginPath);
193
+ if (file && Array.isArray(file.cwds)) {
194
+ const fromFile = cleanCwdList(file.cwds, home);
195
+ if (fromFile.length > 0) return fromFile;
196
+ }
197
+
198
+ // 4. Built-in default: a single connection at the daemon's process cwd. `undefined`
199
+ // is the "unspecified" sentinel the Waker/SseListener degrade to process.cwd()
200
+ // for (HARD-1 / single-path — exactly today's behavior).
201
+ return [undefined];
202
+ }