@chorus-aidlc/chorus 0.14.6 → 0.15.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 (613) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +448 -402
  3. package/.next/standalone/.next/app-path-routes-manifest.json +46 -41
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +15 -15
  6. package/.next/standalone/.next/routes-manifest.json +16 -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 +1 -1
  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 +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +3 -3
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  51. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  52. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
  55. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  56. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/admin/companies.html +2 -2
  58. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  59. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/admin.html +2 -2
  61. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  62. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.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_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  70. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  84. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js.nft.json +1 -1
  87. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js +1 -0
  91. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js.nft.json +1 -0
  92. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -0
  93. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
  96. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
  98. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
  102. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
  104. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
  107. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  110. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
  111. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js +1 -0
  113. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js.nft.json +1 -0
  114. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -0
  115. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js +1 -0
  116. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js.nft.json +1 -0
  117. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -0
  118. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
  119. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
  120. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
  122. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
  125. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
  126. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
  128. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
  129. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
  131. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
  132. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
  135. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
  136. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
  138. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  139. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/events/route.js +1 -1
  141. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  142. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  145. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  148. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  149. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  151. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  152. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  155. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  160. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  161. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js +1 -1
  163. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js.nft.json +1 -1
  164. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
  165. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
  166. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js.nft.json +1 -1
  167. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/api/mcp/route.js +2 -2
  169. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  170. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  171. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  172. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  173. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  175. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  176. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  178. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  179. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  182. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  184. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  185. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  186. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  187. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  188. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  189. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  190. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  191. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  193. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  194. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  195. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  197. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
  201. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  202. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js +1 -0
  203. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js.nft.json +1 -0
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route_client-reference-manifest.js +1 -0
  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_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route.js +1 -0
  231. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route.js.nft.json +1 -0
  232. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -0
  233. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  234. package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +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_client-reference-manifest.js +1 -1
  237. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  238. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  241. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
  242. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
  243. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  244. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  245. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  246. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  247. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  249. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  250. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  251. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  252. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  253. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  254. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  255. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  256. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  258. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  259. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  260. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  261. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  262. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  263. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  264. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  265. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  266. package/.next/standalone/.next/server/app/index.html +2 -2
  267. package/.next/standalone/.next/server/app/index.rsc +2 -2
  268. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  269. package/.next/standalone/.next/server/app/login/admin.html +2 -2
  270. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  271. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  272. package/.next/standalone/.next/server/app/login/callback.html +2 -2
  273. package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
  274. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  275. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  276. package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
  277. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
  278. package/.next/standalone/.next/server/app/login.html +2 -2
  279. package/.next/standalone/.next/server/app/login.rsc +2 -2
  280. package/.next/standalone/.next/server/app/onboarding/page.js +1 -1
  281. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  282. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  283. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  284. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  285. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  286. package/.next/standalone/.next/server/app/projects.html +2 -2
  287. package/.next/standalone/.next/server/app/projects.rsc +4 -4
  288. package/.next/standalone/.next/server/app/settings.html +2 -2
  289. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  290. package/.next/standalone/.next/server/app-paths-manifest.json +46 -41
  291. package/.next/standalone/.next/server/chunks/1114.js +1 -1
  292. package/.next/standalone/.next/server/chunks/1318.js +1 -1
  293. package/.next/standalone/.next/server/chunks/1524.js +1 -0
  294. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  295. package/.next/standalone/.next/server/chunks/1722.js +1 -0
  296. package/.next/standalone/.next/server/chunks/{2789.js → 2547.js} +3 -3
  297. package/.next/standalone/.next/server/chunks/2572.js +2 -0
  298. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  299. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  300. package/.next/standalone/.next/server/chunks/330.js +1 -0
  301. package/.next/standalone/.next/server/chunks/3525.js +1 -0
  302. package/.next/standalone/.next/server/chunks/4827.js +1 -1
  303. package/.next/standalone/.next/server/chunks/5245.js +1 -1
  304. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  305. package/.next/standalone/.next/server/chunks/6506.js +4 -4
  306. package/.next/standalone/.next/server/chunks/6515.js +2 -2
  307. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  308. package/.next/standalone/.next/server/chunks/7530.js +1 -1
  309. package/.next/standalone/.next/server/chunks/8454.js +1 -1
  310. package/.next/standalone/.next/server/chunks/8540.js +1 -1
  311. package/.next/standalone/.next/server/chunks/920.js +1 -1
  312. package/.next/standalone/.next/server/chunks/9213.js +1 -1
  313. package/.next/standalone/.next/server/chunks/9378.js +1 -1
  314. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  315. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  316. package/.next/standalone/.next/server/pages/404.html +2 -2
  317. package/.next/standalone/.next/server/pages/500.html +1 -1
  318. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  319. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  320. package/.next/standalone/.next/static/chunks/11595.f1e55e827d67f2bc.js +1 -0
  321. package/.next/standalone/.next/static/chunks/18351-12dc856208d79e10.js +1 -0
  322. package/.next/standalone/.next/static/chunks/22987-8fd965ab4ff87546.js +1 -0
  323. package/.next/standalone/.next/static/chunks/{33456.c48dc366aa90b234.js → 33456.4817cdce41593c7e.js} +1 -1
  324. package/.next/standalone/.next/static/chunks/37938-0b9a2b891c04b166.js +1 -0
  325. package/.next/standalone/.next/static/chunks/4340-a33120fb742af57e.js +1 -0
  326. package/.next/standalone/.next/static/chunks/4860.bb2749ebaf8eb15f.js +1 -0
  327. package/.next/standalone/.next/static/chunks/53402-be6989c3f3968e7b.js +1 -0
  328. package/.next/standalone/.next/static/chunks/6698-1c55791b2d0820d5.js +1 -0
  329. package/.next/standalone/.next/static/chunks/68326-61feeb2f6cddd338.js +1 -0
  330. package/.next/standalone/.next/static/chunks/72974-714dcca796895c40.js +1 -0
  331. package/.next/standalone/.next/static/chunks/75137-c9e8422c9d4e1f52.js +1 -0
  332. package/.next/standalone/.next/static/chunks/7777-13466138aa42bd5f.js +1 -0
  333. package/.next/standalone/.next/static/chunks/78917-f91904c6c2d12dab.js +1 -0
  334. package/.next/standalone/.next/static/chunks/80748-e971c5a5d6ef967d.js +1 -0
  335. package/.next/standalone/.next/static/chunks/94426-39b6da238425f9b7.js +10 -0
  336. package/.next/standalone/.next/static/chunks/94470-0c74a933d5a2902f.js +1 -0
  337. package/.next/standalone/.next/static/chunks/94643-ba1ebff5769d2b50.js +1 -0
  338. package/.next/standalone/.next/static/chunks/99373.ae03246bdf49c700.js +1 -0
  339. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-177a3fa88be94b4a.js +1 -0
  340. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-7462c5eb92130796.js +1 -0
  341. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-559ec0f534a12956.js +1 -0
  342. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-03b8510273520572.js +1 -0
  343. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/{page-d6c226fd56b5ebb5.js → page-4a8ac49308a4e23b.js} +1 -1
  344. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-03408be00dc4822b.js +1 -0
  345. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-be353989e67e7b55.js +1 -0
  346. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-ebf4c28014025b7b.js → page-c70af8cac7bdc483.js} +1 -1
  347. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-bbde7e85e3388813.js → page-715b000c156a080c.js} +1 -1
  348. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-6df01fa989cca27b.js → page-7a5ef281f6819ed4.js} +1 -1
  349. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-e786a59c24eb5bda.js +1 -0
  350. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-559ec0f534a12956.js +1 -0
  351. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-559ec0f534a12956.js +1 -0
  352. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-559ec0f534a12956.js +1 -0
  353. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-559ec0f534a12956.js +1 -0
  354. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-559ec0f534a12956.js +1 -0
  355. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-559ec0f534a12956.js +1 -0
  356. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-559ec0f534a12956.js +1 -0
  357. package/.next/standalone/.next/static/chunks/app/api/agents/route-559ec0f534a12956.js +1 -0
  358. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-559ec0f534a12956.js +1 -0
  359. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-559ec0f534a12956.js +1 -0
  360. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-559ec0f534a12956.js +1 -0
  361. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-559ec0f534a12956.js +1 -0
  362. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-559ec0f534a12956.js +1 -0
  363. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-559ec0f534a12956.js +1 -0
  364. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-559ec0f534a12956.js +1 -0
  365. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-559ec0f534a12956.js +1 -0
  366. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-559ec0f534a12956.js +1 -0
  367. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-559ec0f534a12956.js +1 -0
  368. package/.next/standalone/.next/static/chunks/app/api/comments/route-559ec0f534a12956.js +1 -0
  369. package/.next/standalone/.next/static/chunks/app/api/daemon/connection-heartbeat/route-559ec0f534a12956.js +1 -0
  370. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-559ec0f534a12956.js +1 -0
  371. package/.next/standalone/.next/static/chunks/app/api/daemon/directory-request/report/route-559ec0f534a12956.js +1 -0
  372. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-559ec0f534a12956.js +1 -0
  373. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-559ec0f534a12956.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-559ec0f534a12956.js +1 -0
  375. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-559ec0f534a12956.js +1 -0
  376. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-559ec0f534a12956.js +1 -0
  377. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-559ec0f534a12956.js +1 -0
  378. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-559ec0f534a12956.js +1 -0
  379. package/.next/standalone/.next/static/chunks/app/api/daemon-directory-requests/[uuid]/route-559ec0f534a12956.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/api/daemon-directory-requests/route-559ec0f534a12956.js +1 -0
  381. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-559ec0f534a12956.js +1 -0
  382. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-559ec0f534a12956.js +1 -0
  383. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-559ec0f534a12956.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-559ec0f534a12956.js +1 -0
  385. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-559ec0f534a12956.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-559ec0f534a12956.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-559ec0f534a12956.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-559ec0f534a12956.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/api/events/route-559ec0f534a12956.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/api/health/route-559ec0f534a12956.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-559ec0f534a12956.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-559ec0f534a12956.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-559ec0f534a12956.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-559ec0f534a12956.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-559ec0f534a12956.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-559ec0f534a12956.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-559ec0f534a12956.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-559ec0f534a12956.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/mcp/route-559ec0f534a12956.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-559ec0f534a12956.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-559ec0f534a12956.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-559ec0f534a12956.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-559ec0f534a12956.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-559ec0f534a12956.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-559ec0f534a12956.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/notifications/route-559ec0f534a12956.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-559ec0f534a12956.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-559ec0f534a12956.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-559ec0f534a12956.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-559ec0f534a12956.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/project-visits/pin/route-559ec0f534a12956.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/project-visits/route-559ec0f534a12956.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/project-visits/visit/route-559ec0f534a12956.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-559ec0f534a12956.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/agent-cwds/route-559ec0f534a12956.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-559ec0f534a12956.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-559ec0f534a12956.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-559ec0f534a12956.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-559ec0f534a12956.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-559ec0f534a12956.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-559ec0f534a12956.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-559ec0f534a12956.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-559ec0f534a12956.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-559ec0f534a12956.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-559ec0f534a12956.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-559ec0f534a12956.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-559ec0f534a12956.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-559ec0f534a12956.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/projects/agent-cwd-options/route-559ec0f534a12956.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/projects/route-559ec0f534a12956.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-559ec0f534a12956.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-559ec0f534a12956.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-559ec0f534a12956.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-559ec0f534a12956.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-559ec0f534a12956.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-559ec0f534a12956.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/references/route-559ec0f534a12956.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/search/route-559ec0f534a12956.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/session/route-559ec0f534a12956.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-559ec0f534a12956.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-559ec0f534a12956.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-559ec0f534a12956.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-559ec0f534a12956.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-559ec0f534a12956.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-559ec0f534a12956.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-559ec0f534a12956.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/onboarding/page-df7c97cefb508201.js +1 -0
  448. package/.next/standalone/.next/static/chunks/{webpack-af2cb28ef7bbd7c2.js → webpack-84e2db1b2418c974.js} +1 -1
  449. package/.next/standalone/.next/static/css/ef995b001437e3ef.css +1 -0
  450. package/.next/standalone/.next/static/oHZy43Le4b2I7pg7_cQ0Z/_buildManifest.js +1 -0
  451. package/.next/standalone/package.json +1 -1
  452. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  453. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  454. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +1 -1
  455. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  456. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  457. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  458. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  459. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  460. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  461. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
  462. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
  463. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +1 -1
  464. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
  465. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +1 -1
  466. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
  467. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
  468. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
  469. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +1 -1
  470. package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
  471. package/README.ja.md +2 -0
  472. package/README.ko.md +2 -0
  473. package/README.md +3 -0
  474. package/README.zh.md +2 -0
  475. package/cli/client-args.mjs +8 -0
  476. package/cli/codex-spawner.mjs +5 -5
  477. package/cli/control-handler.mjs +31 -2
  478. package/cli/daemon-config.mjs +35 -0
  479. package/cli/daemon-install-config.mjs +26 -0
  480. package/cli/daemon-rest-client.mjs +27 -2
  481. package/cli/daemon.mjs +110 -20
  482. package/cli/directory-discovery.mjs +184 -0
  483. package/cli/event-router.mjs +12 -4
  484. package/cli/turn-reporter.mjs +11 -3
  485. package/cli/waker.mjs +35 -8
  486. package/package.json +1 -1
  487. package/prisma/migrations/20260731093000_add_daemon_backend_session_id/migration.sql +1 -0
  488. package/prisma/migrations/20260801113000_add_project_agent_cwd_discovery/migration.sql +50 -0
  489. package/prisma/migrations/20260802140000_add_assignment_runtime_cwd_snapshot/migration.sql +7 -0
  490. package/prisma/schema.prisma +134 -60
  491. package/.next/standalone/.next/server/chunks/2004.js +0 -1
  492. package/.next/standalone/.next/server/chunks/2112.js +0 -1
  493. package/.next/standalone/.next/server/chunks/3219.js +0 -2
  494. package/.next/standalone/.next/static/chunks/11595.c580c5690d176cce.js +0 -1
  495. package/.next/standalone/.next/static/chunks/14160-7bcee6e9e8bc5233.js +0 -1
  496. package/.next/standalone/.next/static/chunks/15653-31c406c41bf58048.js +0 -1
  497. package/.next/standalone/.next/static/chunks/18351-2a408c4f57ddb3a7.js +0 -1
  498. package/.next/standalone/.next/static/chunks/24870-5b0be64361f5ef70.js +0 -1
  499. package/.next/standalone/.next/static/chunks/26232-110019cebde19691.js +0 -1
  500. package/.next/standalone/.next/static/chunks/33806-cb339e86820a87c4.js +0 -1
  501. package/.next/standalone/.next/static/chunks/37035-514bbb31cd13bda1.js +0 -1
  502. package/.next/standalone/.next/static/chunks/37938-c09acf52d7f85cb4.js +0 -1
  503. package/.next/standalone/.next/static/chunks/39479-5af3460208d8cc56.js +0 -1
  504. package/.next/standalone/.next/static/chunks/4860.baf6a285246198af.js +0 -1
  505. package/.next/standalone/.next/static/chunks/60178-d6276df1c07d7735.js +0 -10
  506. package/.next/standalone/.next/static/chunks/68326-924445654ed47e6f.js +0 -1
  507. package/.next/standalone/.next/static/chunks/78917-1498676a1ffe5ded.js +0 -1
  508. package/.next/standalone/.next/static/chunks/94470-1076452151689267.js +0 -1
  509. package/.next/standalone/.next/static/chunks/94643-7c7f2efab0640658.js +0 -1
  510. package/.next/standalone/.next/static/chunks/99373.ad871bd0bbfc5eb7.js +0 -1
  511. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-78259279cf6c6919.js +0 -1
  512. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-2af5f2f159c8e32b.js +0 -1
  513. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-8cf720e8efb6ac7d.js +0 -1
  514. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-59dcf0ba7ce877ec.js +0 -1
  515. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-af35d50848f01875.js +0 -1
  516. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-cb6fdf592863833c.js +0 -1
  517. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-e60bc39bf2957f77.js +0 -1
  518. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  519. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-8cf720e8efb6ac7d.js +0 -1
  520. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-8cf720e8efb6ac7d.js +0 -1
  521. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-8cf720e8efb6ac7d.js +0 -1
  522. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-8cf720e8efb6ac7d.js +0 -1
  523. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  524. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-8cf720e8efb6ac7d.js +0 -1
  525. package/.next/standalone/.next/static/chunks/app/api/agents/route-8cf720e8efb6ac7d.js +0 -1
  526. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  527. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-8cf720e8efb6ac7d.js +0 -1
  528. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-8cf720e8efb6ac7d.js +0 -1
  529. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-8cf720e8efb6ac7d.js +0 -1
  530. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-8cf720e8efb6ac7d.js +0 -1
  531. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-8cf720e8efb6ac7d.js +0 -1
  532. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-8cf720e8efb6ac7d.js +0 -1
  533. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-8cf720e8efb6ac7d.js +0 -1
  534. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-8cf720e8efb6ac7d.js +0 -1
  535. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-8cf720e8efb6ac7d.js +0 -1
  536. package/.next/standalone/.next/static/chunks/app/api/comments/route-8cf720e8efb6ac7d.js +0 -1
  537. package/.next/standalone/.next/static/chunks/app/api/daemon/connection-heartbeat/route-8cf720e8efb6ac7d.js +0 -1
  538. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-8cf720e8efb6ac7d.js +0 -1
  539. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-8cf720e8efb6ac7d.js +0 -1
  540. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-8cf720e8efb6ac7d.js +0 -1
  541. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-8cf720e8efb6ac7d.js +0 -1
  542. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-8cf720e8efb6ac7d.js +0 -1
  543. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-8cf720e8efb6ac7d.js +0 -1
  544. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-8cf720e8efb6ac7d.js +0 -1
  545. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-8cf720e8efb6ac7d.js +0 -1
  546. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-8cf720e8efb6ac7d.js +0 -1
  547. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-8cf720e8efb6ac7d.js +0 -1
  548. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-8cf720e8efb6ac7d.js +0 -1
  549. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-8cf720e8efb6ac7d.js +0 -1
  550. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-8cf720e8efb6ac7d.js +0 -1
  551. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  552. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-8cf720e8efb6ac7d.js +0 -1
  553. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-8cf720e8efb6ac7d.js +0 -1
  554. package/.next/standalone/.next/static/chunks/app/api/events/route-8cf720e8efb6ac7d.js +0 -1
  555. package/.next/standalone/.next/static/chunks/app/api/health/route-8cf720e8efb6ac7d.js +0 -1
  556. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-8cf720e8efb6ac7d.js +0 -1
  557. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-8cf720e8efb6ac7d.js +0 -1
  558. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-8cf720e8efb6ac7d.js +0 -1
  559. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-8cf720e8efb6ac7d.js +0 -1
  560. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-8cf720e8efb6ac7d.js +0 -1
  561. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  562. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-8cf720e8efb6ac7d.js +0 -1
  563. package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-8cf720e8efb6ac7d.js +0 -1
  564. package/.next/standalone/.next/static/chunks/app/api/mcp/route-8cf720e8efb6ac7d.js +0 -1
  565. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-8cf720e8efb6ac7d.js +0 -1
  566. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-8cf720e8efb6ac7d.js +0 -1
  567. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-8cf720e8efb6ac7d.js +0 -1
  568. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-8cf720e8efb6ac7d.js +0 -1
  569. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-8cf720e8efb6ac7d.js +0 -1
  570. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-8cf720e8efb6ac7d.js +0 -1
  571. package/.next/standalone/.next/static/chunks/app/api/notifications/route-8cf720e8efb6ac7d.js +0 -1
  572. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-8cf720e8efb6ac7d.js +0 -1
  573. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-8cf720e8efb6ac7d.js +0 -1
  574. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  575. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-8cf720e8efb6ac7d.js +0 -1
  576. package/.next/standalone/.next/static/chunks/app/api/project-visits/pin/route-8cf720e8efb6ac7d.js +0 -1
  577. package/.next/standalone/.next/static/chunks/app/api/project-visits/route-8cf720e8efb6ac7d.js +0 -1
  578. package/.next/standalone/.next/static/chunks/app/api/project-visits/visit/route-8cf720e8efb6ac7d.js +0 -1
  579. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-8cf720e8efb6ac7d.js +0 -1
  580. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-8cf720e8efb6ac7d.js +0 -1
  581. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-8cf720e8efb6ac7d.js +0 -1
  582. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-8cf720e8efb6ac7d.js +0 -1
  583. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-8cf720e8efb6ac7d.js +0 -1
  584. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-8cf720e8efb6ac7d.js +0 -1
  585. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-8cf720e8efb6ac7d.js +0 -1
  586. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-8cf720e8efb6ac7d.js +0 -1
  587. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-8cf720e8efb6ac7d.js +0 -1
  588. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-8cf720e8efb6ac7d.js +0 -1
  589. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  590. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-8cf720e8efb6ac7d.js +0 -1
  591. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-8cf720e8efb6ac7d.js +0 -1
  592. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-8cf720e8efb6ac7d.js +0 -1
  593. package/.next/standalone/.next/static/chunks/app/api/projects/route-8cf720e8efb6ac7d.js +0 -1
  594. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-8cf720e8efb6ac7d.js +0 -1
  595. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-8cf720e8efb6ac7d.js +0 -1
  596. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-8cf720e8efb6ac7d.js +0 -1
  597. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-8cf720e8efb6ac7d.js +0 -1
  598. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  599. package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  600. package/.next/standalone/.next/static/chunks/app/api/references/route-8cf720e8efb6ac7d.js +0 -1
  601. package/.next/standalone/.next/static/chunks/app/api/search/route-8cf720e8efb6ac7d.js +0 -1
  602. package/.next/standalone/.next/static/chunks/app/api/session/route-8cf720e8efb6ac7d.js +0 -1
  603. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  604. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-8cf720e8efb6ac7d.js +0 -1
  605. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-8cf720e8efb6ac7d.js +0 -1
  606. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-8cf720e8efb6ac7d.js +0 -1
  607. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-8cf720e8efb6ac7d.js +0 -1
  608. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
  609. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-8cf720e8efb6ac7d.js +0 -1
  610. package/.next/standalone/.next/static/chunks/app/onboarding/page-006bf9e9d6a991f1.js +0 -1
  611. package/.next/standalone/.next/static/css/f46eab37c942ff33.css +0 -1
  612. package/.next/standalone/.next/static/t-ZaS6bNyv62NUlewVISp/_buildManifest.js +0 -1
  613. /package/.next/standalone/.next/static/{t-ZaS6bNyv62NUlewVISp → oHZy43Le4b2I7pg7_cQ0Z}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@ description: Chorus Development workflow — claim tasks, report work, manage se
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.6"
7
+ version: "0.15.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.14.6"
7
+ version: "0.15.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Opt-in OpenSpec-mode authoring for Chorus PM workflows in Kiro CLI.
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.6"
7
+ version: "0.15.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -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.14.6"
7
+ version: "0.15.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.14.6"
7
+ version: "0.15.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.14.6"
7
+ version: "0.15.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Full-auto AI-DLC pipeline — from prompt to done. Automates the en
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.6"
7
+ version: "0.15.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -240,7 +240,7 @@ cmd_mcp_tool() {
240
240
  # Step 1: Initialize MCP session
241
241
  local init_payload
242
242
  init_payload=$(cat <<JSONEOF
243
- {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.14.6"}}}
243
+ {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.15.0"}}}
244
244
  JSONEOF
245
245
  )
246
246
 
package/README.ja.md CHANGED
@@ -36,6 +36,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
36
36
 
37
37
  ## 最近の更新
38
38
 
39
+ **[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — プロジェクト単位の Agent 作業ディレクトリ:各ユーザーがプロジェクト内の Agent ごとにホストと cwd を設定し、デーモンが許可したルートだけを参照できます。割り当て、ウェイク、再開、後続ターンで同じ実行先を使い、進行中のセッションは移動しません。Codex は再開可能なバックエンド thread ID を別に保存し、不要になった Chorus の session 管理手順を削除しました。
40
+
39
41
  **[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI が 4 つ目の接続方法になりました(Kiro CLI v2):ワンコマンドの `install-kiro.sh` プラグインと `--agent kiro` デーモンバックエンド、加えていくつかのデーモン修正。
40
42
 
41
43
  **[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — アプリ全体のダークモード(ライト / ダーク / システム)。参考資料をあらゆる着想・提案・課題に添付でき、インラインでも MCP 経由でも読み取れます。韓国語と日本語を追加(韓国語はコミュニティによる貢献)。グループ化のための**テーマ**着想、デーモンの「開発を開始」/「Yolo」ボタン、対話式の着想入力、クラッシュからの再開、`chorus daemon install`。
package/README.ko.md CHANGED
@@ -36,6 +36,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
36
36
 
37
37
  ## 최근 업데이트
38
38
 
39
+ **[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — 프로젝트별 Agent 작업 디렉터리: 각 사용자가 프로젝트의 Agent마다 호스트와 cwd를 지정하고, 데몬이 허용한 루트만 탐색할 수 있습니다. 배정, 웨이크, 재개, 후속 턴에서 같은 실행 위치를 사용하며 진행 중인 세션은 이동하지 않습니다. Codex는 재개 가능한 백엔드 thread ID를 별도로 저장하고, 더 이상 필요하지 않은 Chorus session 관리 단계를 제거했습니다.
40
+
39
41
  **[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI가 네 번째 연결 방식이 되었습니다(Kiro CLI v2): 명령 한 줄로 설치하는 `install-kiro.sh` 플러그인과 `--agent kiro` 데몬 백엔드, 여기에 몇 가지 데몬 수정.
40
42
 
41
43
  **[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — 앱 전체 다크 모드(라이트 / 다크 / 시스템). 참고 자료를 어떤 아이디어·제안·작업에도 첨부할 수 있고, 인라인으로도 MCP를 통해서도 읽을 수 있습니다. 한국어와 일본어 추가(한국어는 커뮤니티 기여). 그룹화를 위한 **테마** 아이디어, 그리고 데몬의 개발 시작 / Yolo 버튼, 대화식 아이디어 입력, 크래시 복구, `chorus daemon install`.
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.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — Project-level Agent working directories: each user can bind every Agent in a project to a host and cwd, browse only daemon-approved roots, and use the same target across assignment, wake, resume, and later turns without moving active sessions. Codex now persists its resumable backend thread ID separately and drops obsolete Chorus session-management steps.
40
+
39
41
  **[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI is the fourth way to connect (Kiro CLI v2): a one-command `install-kiro.sh` plugin and a `--agent kiro` daemon backend, plus daemon fixes.
40
42
 
41
43
  **[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — Dark mode across the app (light / dark / system). Reference artifacts: attach docs, repos, issues, and articles to any idea, proposal, or task, readable inline and over MCP. Korean and Japanese locales (Korean contributed by the community). **Theme** ideas for grouping, plus daemon Start Development / Yolo buttons, conversational idea entry, crash-resume, and `chorus daemon install`.
@@ -170,6 +172,7 @@ With no `--cwd`, the daemon serves the single directory it was launched from.
170
172
  | `apiKey` | string | Agent API key (`cho_…`) | `--api-key` flag → `CHORUS_API_KEY` → file |
171
173
  | `agentUuid` / `agentName` | string | Authenticated identity (recorded at login) | written by `chorus login` |
172
174
  | `cwds` | string[] | Working directories the daemon serves (multi-path) | `--cwd` flag(s) → `CHORUS_DAEMON_CWDS` → file → launch dir |
175
+ | `browseRoots` | string[] | Roots allowed for project and temporary directory browsing | `--browse-root` flag(s) → `CHORUS_DAEMON_BROWSE_ROOTS` → file → user home |
173
176
  | `agent` | string | Local agent backend to wake (`claude-code` / `codex` / `kiro`) | `--agent` flag → `CHORUS_AGENT` → file → `claude-code` |
174
177
  | `sigintTimeoutMs` | number | Grace window (ms) after SIGINT before a forceful kill (default `10000`) | `--sigint-timeout` flag → `CHORUS_DAEMON_SIGINT_TIMEOUT` → file → `10000` |
175
178
  | `yoloAckAt` | string | Internal — timestamp of a TTY yolo confirmation (managed automatically) | — |
package/README.zh.md CHANGED
@@ -27,6 +27,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
27
27
 
28
28
  ## 最近更新
29
29
 
30
+ **[v0.15.0](https://chorus-ai.dev/zh/blog/chorus-v0.15.0-release/)** — 项目级 Agent 工作目录:每位用户可以为项目中的每个 Agent 绑定主机和 cwd,只浏览 daemon 允许的目录,并让任务分配、唤醒、恢复和后续对话使用同一个执行位置,且不迁移进行中的会话。Codex 现在会单独保存可恢复的后端 thread ID,并移除不再需要的 Chorus session 管理步骤。
31
+
30
32
  **[v0.14.1](https://chorus-ai.dev/zh/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI 成为第四种接入方式(Kiro CLI v2):一条命令的 `install-kiro.sh` 插件,以及 `--agent kiro` 的 daemon 后端,另有若干 daemon 修复。
31
33
 
32
34
  **[v0.14.0](https://chorus-ai.dev/zh/blog/chorus-v0.14.0-release/)** — 全应用深色模式(浅色 / 深色 / 跟随系统)。参考资料可挂到任意想法、提案或任务上,行内可读,也能通过 MCP 读写。新增韩语和日语(韩语由社区贡献)。用于归类的**主题**想法,以及 daemon 的「开始开发」/「Yolo」按钮、对话式建想法、崩溃恢复与 `chorus daemon install`。
@@ -60,6 +60,10 @@ export function parseClientFlags(argv) {
60
60
  const value = a === "--cwd" ? argv[i + 1] : a.slice("--cwd=".length);
61
61
  if (typeof value === "string") (out.cwd ??= []).push(value);
62
62
  }
63
+ else if (a === "--browse-root" || a.startsWith("--browse-root=")) {
64
+ const value = a === "--browse-root" ? argv[i + 1] : a.slice("--browse-root=".length);
65
+ if (typeof value === "string") (out.browseRoot ??= []).push(value);
66
+ }
63
67
  else if (a === "--chorus-only") out.chorusOnly = true;
64
68
  else if (a === "--verbose") out.verbose = true;
65
69
  else if (a === "-d" || a === "--detach") out.detach = true;
@@ -133,6 +137,10 @@ OPTIONS
133
137
  connection for that path, so one daemon can serve several
134
138
  local paths at once. Default: the directory it was launched
135
139
  from. (Also configurable as "cwds":[…] in ~/.chorus/daemon.json.)
140
+ --browse-root <path> A directory root exposed to remote cwd discovery.
141
+ Repeatable; independent from --cwd and does not create
142
+ Agent connections. (env: CHORUS_DAEMON_BROWSE_ROOTS;
143
+ config: "browseRoots":[…]; default: OS user home.)
136
144
  -d, --detach Run detached in the background (pidfile + logfile)
137
145
  -y, --yes Non-interactive install: skip all 'chorus daemon
138
146
  install' prompts (credentials, served cwds, and agent
@@ -224,7 +224,7 @@ export class CodexSpawner {
224
224
  * @param {{ prompt: string, sessionId: string|null, isNew?: boolean, mcpConfigPath?: string,
225
225
  * cwd?: string, onMessage?: (obj: any) => void,
226
226
  * onChild?: (child: import("node:child_process").ChildProcess) => void }} params
227
- * @returns {Promise<{ sessionId: string, exitCode: number|null, isNew: boolean }>}
227
+ * @returns {Promise<{ sessionId: string, backendSessionId: string|null, exitCode: number|null, isNew: boolean }>}
228
228
  */
229
229
  async wake({ prompt, sessionId, cwd, onMessage, onChild }) {
230
230
  const anchor = typeof sessionId === "string" ? sessionId : "";
@@ -245,7 +245,7 @@ export class CodexSpawner {
245
245
  if (!codexPath) {
246
246
  // No crash — surface visibly and resolve with a failure result.
247
247
  this.logger.error("[Chorus] cannot locate the `codex` executable on PATH; skipping wake");
248
- return { sessionId: anchor, exitCode: null, isNew };
248
+ return { sessionId: anchor, backendSessionId: knownThreadId, exitCode: null, isNew };
249
249
  }
250
250
 
251
251
  if (!this.mcpConfigChecked) {
@@ -287,7 +287,7 @@ export class CodexSpawner {
287
287
  });
288
288
  } catch (err) {
289
289
  this.logger.error(`[Chorus] failed to spawn codex: ${err}`);
290
- resolve({ sessionId: anchor, exitCode: null, isNew });
290
+ resolve({ sessionId: anchor, backendSessionId: knownThreadId, exitCode: null, isNew });
291
291
  return;
292
292
  }
293
293
 
@@ -350,14 +350,14 @@ export class CodexSpawner {
350
350
 
351
351
  child.on("error", (err) => {
352
352
  this.logger.error(`[Chorus] codex process error: ${err}`);
353
- resolve({ sessionId: observedThreadId || anchor, exitCode: null, isNew });
353
+ resolve({ sessionId: anchor, backendSessionId: observedThreadId, exitCode: null, isNew });
354
354
  });
355
355
 
356
356
  child.on("close", (code) => {
357
357
  if (code !== 0) {
358
358
  this.logger.warn(`[Chorus] codex exited with code ${code}`);
359
359
  }
360
- resolve({ sessionId: observedThreadId || anchor, exitCode: code, isNew });
360
+ resolve({ sessionId: anchor, backendSessionId: observedThreadId, exitCode: code, isNew });
361
361
  });
362
362
 
363
363
  // Guard against an ASYNC stdin error (EPIPE) so it never becomes an
@@ -66,6 +66,8 @@ export function createControlHandler(deps) {
66
66
  const sigintTimeoutMs = deps.sigintTimeoutMs;
67
67
  const redispatchResume = deps.redispatchResume;
68
68
  const deliverTurn = deps.deliverTurn;
69
+ const handleDirectoryRequest = deps.handleDirectoryRequest;
70
+ const reportDirectoryRequest = deps.reportDirectoryRequest;
69
71
  const logger = deps.logger ?? NOOP_LOGGER;
70
72
 
71
73
  /** Registry key for a resource — MUST match waker.#execKey. */
@@ -89,7 +91,8 @@ export function createControlHandler(deps) {
89
91
  if (
90
92
  event.command !== "interrupt" &&
91
93
  event.command !== "resume" &&
92
- event.command !== "deliver_turn"
94
+ event.command !== "deliver_turn" &&
95
+ event.command !== "browse_directory"
93
96
  ) {
94
97
  // Forward-compatible: the wire enum may grow.
95
98
  logger.warn(`[Chorus] control command "${event.command}" not supported; ignoring`);
@@ -109,6 +112,28 @@ export function createControlHandler(deps) {
109
112
  return;
110
113
  }
111
114
 
115
+ if (command === "browse_directory") {
116
+ const requestUuid = event.requestUuid;
117
+ if (typeof requestUuid !== "string" || !requestUuid) {
118
+ logger.warn("[Chorus] control: browse_directory missing requestUuid; ignoring");
119
+ return;
120
+ }
121
+ Promise.resolve()
122
+ .then(() => handleDirectoryRequest?.(event))
123
+ .then((result) => reportDirectoryRequest?.({
124
+ requestUuid,
125
+ status: "succeeded",
126
+ ...result,
127
+ }))
128
+ .catch((err) => reportDirectoryRequest?.({
129
+ requestUuid,
130
+ status: "failed",
131
+ errorCode: err?.code ?? "INTERNAL_ERROR",
132
+ }))
133
+ .catch((err) => logger.warn(`[Chorus] control: directory report failed: ${err}`));
134
+ return;
135
+ }
136
+
112
137
  // --- deliver_turn: origin-only live delivery (子2). The session's origin connection
113
138
  // (THIS one — Check 1 passed) was pinged that a SPECIFIC new pending
114
139
  // `human_instruction` turn (`event.turnUuid`) awaits. Dispatch ONLY that turn — not
@@ -155,7 +180,11 @@ export function createControlHandler(deps) {
155
180
  `)`
156
181
  );
157
182
  try {
158
- redispatchResume?.(entityType, entityUuid, resumeReason);
183
+ if (typeof event.runtimeCwd === "string" && event.runtimeCwd) {
184
+ redispatchResume?.(entityType, entityUuid, resumeReason, event.runtimeCwd);
185
+ } else {
186
+ redispatchResume?.(entityType, entityUuid, resumeReason);
187
+ }
159
188
  } catch (err) {
160
189
  logger.warn(`[Chorus] control: resume re-dispatch failed for ${entityType}:${entityUuid}: ${err}`);
161
190
  }
@@ -200,3 +200,38 @@ export function resolveDaemonCwds(flags = {}, deps = {}) {
200
200
  // for (HARD-1 / single-path — exactly today's behavior).
201
201
  return [undefined];
202
202
  }
203
+
204
+ /**
205
+ * Resolve the host-local directory discovery allowlist. Unlike `cwds`, these
206
+ * roots never create connections. The whole list comes from the first
207
+ * non-empty source: flag > env > daemon.json > OS home.
208
+ */
209
+ export function resolveBrowseRoots(flags = {}, deps = {}) {
210
+ const env = deps.env ?? process.env;
211
+ const readJson = deps.readJson ?? readJsonSafe;
212
+ const loginPath = deps.loginPath ?? loginFilePath();
213
+ const home = deps.home ?? homedir();
214
+ const flagList = Array.isArray(flags.browseRoot)
215
+ ? flags.browseRoot
216
+ : typeof flags.browseRoot === "string"
217
+ ? [flags.browseRoot]
218
+ : [];
219
+ const fromFlags = cleanCwdList(flagList, home);
220
+ if (fromFlags.length) return fromFlags;
221
+
222
+ const envRaw = env.CHORUS_DAEMON_BROWSE_ROOTS;
223
+ if (typeof envRaw === "string" && envRaw.trim()) {
224
+ const separator = deps.delimiter ?? (process.platform === "win32" ? ";" : ":");
225
+ const fromEnv = cleanCwdList(
226
+ envRaw.split(envRaw.includes(",") ? "," : separator),
227
+ home,
228
+ );
229
+ if (fromEnv.length) return fromEnv;
230
+ }
231
+
232
+ const file = readJson(loginPath);
233
+ const fromFile = file && Array.isArray(file.browseRoots)
234
+ ? cleanCwdList(file.browseRoots, home)
235
+ : [];
236
+ return fromFile.length ? fromFile : [normalizeCwd(home, home)];
237
+ }
@@ -217,6 +217,32 @@ export async function resolveInstallCwds(flags = {}, opts = {}) {
217
217
  return { cwds: finalCwds };
218
218
  }
219
219
 
220
+ /** Persist explicit install-time browse roots without coupling them to `cwds`. */
221
+ export async function resolveInstallBrowseRoots(flags = {}, opts = {}) {
222
+ const readJson = opts.readJson ?? readJsonSafe;
223
+ const loginPath = opts.loginPath ?? loginFilePath();
224
+ const writeConfig = opts.writeConfig ?? updateDaemonConfig;
225
+ const home = opts.home ?? homedir();
226
+ const flagList = Array.isArray(flags.browseRoot)
227
+ ? flags.browseRoot
228
+ : typeof flags.browseRoot === "string"
229
+ ? [flags.browseRoot]
230
+ : [];
231
+ const explicit = cleanCwdList(flagList, home);
232
+ if (explicit.length) {
233
+ writeConfig({ browseRoots: explicit });
234
+ return { browseRoots: explicit };
235
+ }
236
+ const file = readJson(loginPath);
237
+ const stored = file && Array.isArray(file.browseRoots)
238
+ ? cleanCwdList(file.browseRoots, home)
239
+ : [];
240
+ if (stored.length) return { browseRoots: stored };
241
+ const browseRoots = [normalizeCwd(home, home)];
242
+ writeConfig({ browseRoots });
243
+ return { browseRoots };
244
+ }
245
+
220
246
  /**
221
247
  * The interactive agent-backend menu. Order mirrors KNOWN_AGENTS with claude-code
222
248
  * first (it is the default). Kept beside the resolver so the numbered prompt and
@@ -70,11 +70,12 @@ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
70
70
  * logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
71
71
  * }} opts
72
72
  * @returns {{
73
- * turnAdvance: (p: { sessionId: string, status: string, entityType?: string|null, entityUuid?: string|null }) => Promise<DaemonRestResult>,
73
+ * turnAdvance: (p: { sessionId: string, backendSessionId?: string|null, status: string, entityType?: string|null, entityUuid?: string|null }) => Promise<DaemonRestResult>,
74
74
  * transcript: (p: { sessionId: string, messages: Array<{ role: string, text: string }> }) => Promise<DaemonRestResult>,
75
75
  * executionState: (p: { executions: Array<Record<string, unknown>> }) => Promise<DaemonRestResult>,
76
76
  * reportInterrupt: (p: { entityType: string, entityUuid: string, reason: string }) => Promise<DaemonRestResult>,
77
77
  * heartbeat: (p: { connectionUuid: string, connectedAt: string }) => Promise<DaemonRestResult>,
78
+ * reportDirectoryRequest: (p: { requestUuid: string, status: "succeeded"|"failed", roots?: string[], items?: Array<{name:string,path:string}>, nextCursor?: string|null, normalizedPath?: string, errorCode?: string }) => Promise<DaemonRestResult>,
78
79
  * readPendingTurns: () => Promise<DaemonRestResult>,
79
80
  * }}
80
81
  */
@@ -146,7 +147,7 @@ export function createDaemonRestClient(opts) {
146
147
  * the turn's usage. Both ride the terminal edge only. Requires the connectionUuid (the
147
148
  * server addresses the turn against a connection the agent owns).
148
149
  */
149
- async turnAdvance({ sessionId, status, entityType, entityUuid, interruptedReason, transcriptRelayError, usage }) {
150
+ async turnAdvance({ sessionId, status, entityType, entityUuid, interruptedReason, transcriptRelayError, usage, backendSessionId }) {
150
151
  const connectionUuid = getConnectionUuid();
151
152
  if (!connectionUuid) {
152
153
  const error = `cannot advance turn for session ${sessionId} → ${status} — no connection uuid yet`;
@@ -171,6 +172,7 @@ export function createDaemonRestClient(opts) {
171
172
  ...(transcriptRelayError ? { transcriptRelayError } : {}),
172
173
  // The whole normalized TokenUsage object, nested under `usage`, only on a terminal edge.
173
174
  ...(usage && isTerminal ? { usage } : {}),
175
+ ...(backendSessionId && isTerminal ? { backendSessionId } : {}),
174
176
  };
175
177
  return post(
176
178
  "turn-advance",
@@ -254,6 +256,29 @@ export function createDaemonRestClient(opts) {
254
256
  );
255
257
  },
256
258
 
259
+ async reportDirectoryRequest({ requestUuid, status, roots, items, nextCursor, normalizedPath, errorCode }) {
260
+ const connectionUuid = getConnectionUuid();
261
+ if (!connectionUuid) {
262
+ const error = `cannot report directory request ${requestUuid} — no connection uuid yet`;
263
+ logger.warn(`[Chorus] ${error}`);
264
+ return { ok: false, status: null, error, skipped: true };
265
+ }
266
+ const body = { requestUuid, connectionUuid, status };
267
+ if (status === "succeeded") {
268
+ if (roots !== undefined) body.roots = roots;
269
+ if (items !== undefined) body.items = items;
270
+ if (nextCursor !== undefined) body.nextCursor = nextCursor;
271
+ if (normalizedPath !== undefined) body.normalizedPath = normalizedPath;
272
+ } else {
273
+ body.errorCode = errorCode ?? "INTERNAL_ERROR";
274
+ }
275
+ return post(
276
+ "directory-request report",
277
+ "/api/daemon/directory-request/report",
278
+ body,
279
+ );
280
+ },
281
+
257
282
  /**
258
283
  * GET /api/daemon/pending-turns?connectionUuid=… — read this connection's unstarted
259
284
  * (pending) turns from the turn table (the reconnect-backfill / deliver_turn source).
package/cli/daemon.mjs CHANGED
@@ -17,6 +17,7 @@ import { prompt, writeLoginFile, updateDaemonConfig } from "./login.mjs";
17
17
  import {
18
18
  resolveInstallCredentials,
19
19
  resolveInstallCwds,
20
+ resolveInstallBrowseRoots,
20
21
  resolveInstallAgent,
21
22
  } from "./daemon-install-config.mjs";
22
23
  import {
@@ -46,7 +47,8 @@ import { createInterruptReporter } from "./interrupt-reporter.mjs";
46
47
  import { createTurnReporter } from "./turn-reporter.mjs";
47
48
  import { createDaemonRestClient } from "./daemon-rest-client.mjs";
48
49
  import { createControlHandler } from "./control-handler.mjs";
49
- import { resolveSigintTimeoutMs, resolveDaemonCwds } from "./daemon-config.mjs";
50
+ import { resolveSigintTimeoutMs, resolveDaemonCwds, resolveBrowseRoots } from "./daemon-config.mjs";
51
+ import { discoverDirectories, validateDirectory } from "./directory-discovery.mjs";
50
52
  import {
51
53
  startBackground,
52
54
  stopDaemon,
@@ -124,6 +126,7 @@ export function buildDaemon(creds, deps = {}) {
124
126
  // the layered resolver; falls back to the resolver's default here when not given,
125
127
  // so a daemon built directly (integration tests) still gets a sane value.
126
128
  const sigintTimeoutMs = deps.sigintTimeoutMs ?? resolveSigintTimeoutMs();
129
+ const browseRoots = deps.browseRoots ?? resolveBrowseRoots();
127
130
  // ===== Shared deps (one set per daemon process) =====
128
131
  // These are process-wide — independent of how many paths (cwds) the daemon serves.
129
132
  const mcpClient =
@@ -245,7 +248,8 @@ export function buildDaemon(creds, deps = {}) {
245
248
  fetchImpl: deps.fetchImpl,
246
249
  });
247
250
 
248
- /** @type {Waker|undefined} */
251
+ /** @type {Map<string, Waker>} */
252
+ const runtimeWakers = new Map();
249
253
  let waker;
250
254
 
251
255
  // Execution + transcript upload hooks (子1), merged. Bound to THIS connection's
@@ -257,7 +261,8 @@ export function buildDaemon(creds, deps = {}) {
257
261
  url: creds.url,
258
262
  apiKey: creds.apiKey,
259
263
  getConnectionUuid: () => connectionState.connectionUuid,
260
- getSnapshot: () => waker?.buildExecutionSnapshot() ?? [],
264
+ getSnapshot: () =>
265
+ [...runtimeWakers.values()].flatMap((candidate) => candidate.buildExecutionSnapshot()),
261
266
  logger,
262
267
  fetchImpl: deps.fetchImpl,
263
268
  }),
@@ -277,20 +282,69 @@ export function buildDaemon(creds, deps = {}) {
277
282
  // transcript (new-vs-resume) and to spawn, so they never diverge (Module Contract
278
283
  // 1 — resolveCwd is the single source). `cwd` is `undefined` for the single-path /
279
284
  // old-daemon default, which the Waker degrades to process.cwd() (HARD-1).
280
- waker = new Waker({
281
- creds,
282
- lineage,
283
- spawner,
284
- cwd,
285
- hooks,
286
- logger,
287
- reportInterrupt,
288
- advanceTurn,
289
- verbose,
290
- // Graceful-shutdown kill escalation (fix-daemon-exit-orphan-running-turn):
291
- // interruptAll() reuses the SAME window the interrupt control handler uses.
292
- sigintTimeoutMs,
293
- });
285
+ const makeWaker = (boundCwd) =>
286
+ new Waker({
287
+ creds,
288
+ lineage,
289
+ spawner,
290
+ cwd: boundCwd,
291
+ hooks,
292
+ logger,
293
+ reportInterrupt,
294
+ advanceTurn,
295
+ verbose,
296
+ validateRuntimeCwd: (runtimeCwd) => validateDirectory({ cwd: runtimeCwd, browseRoots }),
297
+ killer: deps.killer,
298
+ sigintTimeoutMs,
299
+ });
300
+ const startupKey = cwd ?? process.cwd();
301
+ runtimeWakers.set(startupKey, makeWaker(cwd));
302
+ const selectWaker = (notification) => {
303
+ const runtimeCwd =
304
+ typeof notification?.runtimeCwd === "string" && notification.runtimeCwd
305
+ ? notification.runtimeCwd
306
+ : startupKey;
307
+ let selected = runtimeWakers.get(runtimeCwd);
308
+ if (!selected) {
309
+ selected = makeWaker(runtimeCwd);
310
+ runtimeWakers.set(runtimeCwd, selected);
311
+ }
312
+ return selected;
313
+ };
314
+ const startupWaker = runtimeWakers.get(startupKey);
315
+ waker = {
316
+ get executions() {
317
+ const merged = new Map();
318
+ for (const candidate of runtimeWakers.values()) {
319
+ for (const [key, value] of candidate.executions) merged.set(key, value);
320
+ }
321
+ return merged;
322
+ },
323
+ get interrupting() {
324
+ return {
325
+ has: (key) =>
326
+ [...runtimeWakers.values()].some((candidate) => candidate.interrupting.has(key)),
327
+ };
328
+ },
329
+ keyFor: (notification) => startupWaker.keyFor(notification),
330
+ resolveCwd: () => startupWaker.resolveCwd(),
331
+ markQueued: (notification, key, attribution) =>
332
+ selectWaker(notification).markQueued(notification, key, attribution),
333
+ wake: (notification, key, attribution) =>
334
+ selectWaker(notification).wake(notification, key, attribution),
335
+ markInterrupting(entityType, entityUuid) {
336
+ for (const candidate of runtimeWakers.values()) {
337
+ if (candidate.executions.has(`${entityType}:${entityUuid}`)) {
338
+ candidate.markInterrupting(entityType, entityUuid);
339
+ }
340
+ }
341
+ },
342
+ interruptAll() {
343
+ for (const candidate of runtimeWakers.values()) candidate.interruptAll();
344
+ },
345
+ buildExecutionSnapshot: () =>
346
+ [...runtimeWakers.values()].flatMap((candidate) => candidate.buildExecutionSnapshot()),
347
+ };
294
348
  // The router reads THIS connection's own uuid lazily (same source the control handler
295
349
  // uses) to suppress a DIRECTED (pinned) wake stamped for a different connection
296
350
  // (fix-pinned-wake-directed-delivery, T2). Null until the SSE handshake assigns it — a
@@ -310,8 +364,8 @@ export function buildDaemon(creds, deps = {}) {
310
364
  // all scoped to THIS connection's uuid/router/backfill (see the original wiring
311
365
  // comments retained on the shared helpers). The control handler verifies a control
312
366
  // event against this connection's own connectionUuid before acting.
313
- const redispatchResume = (entityType, entityUuid, resumeReason) => {
314
- router.dispatchResume?.({ entityType, entityUuid, resumeReason });
367
+ const redispatchResume = (entityType, entityUuid, resumeReason, runtimeCwd) => {
368
+ router.dispatchResume?.({ entityType, entityUuid, resumeReason, runtimeCwd });
315
369
  };
316
370
  const deliverTurn = (turnUuid) => backfill?.pendingTurnsOnly?.(turnUuid);
317
371
  const onControl = createControlHandler({
@@ -320,6 +374,21 @@ export function buildDaemon(creds, deps = {}) {
320
374
  sigintTimeoutMs,
321
375
  redispatchResume,
322
376
  deliverTurn,
377
+ handleDirectoryRequest: async (event) => {
378
+ if (event.operation === "roots") {
379
+ return { roots: [...browseRoots] };
380
+ }
381
+ if (event.operation === "validate") {
382
+ return validateDirectory({ cwd: event.cwd, browseRoots });
383
+ }
384
+ return discoverDirectories({
385
+ prefix: event.prefix,
386
+ cursor: event.cursor,
387
+ limit: event.limit,
388
+ browseRoots,
389
+ });
390
+ },
391
+ reportDirectoryRequest: (result) => daemonRestClient.reportDirectoryRequest(result),
323
392
  logger,
324
393
  });
325
394
 
@@ -403,7 +472,17 @@ export function buildDaemon(creds, deps = {}) {
403
472
  logger,
404
473
  });
405
474
 
406
- return { cwd, connectionState, waker, router, backfill, sseListener, hooks, outcome };
475
+ return {
476
+ cwd,
477
+ connectionState,
478
+ waker,
479
+ runtimeWakers,
480
+ router,
481
+ backfill,
482
+ sseListener,
483
+ hooks,
484
+ outcome,
485
+ };
407
486
  }
408
487
 
409
488
  // Build one connection per declared cwd. The order is the declaration order; the
@@ -569,6 +648,7 @@ export async function runDaemon(flags = {}, deps = {}) {
569
648
  // is exactly today's single-path behavior. JUST a list of paths — no project
570
649
  // binding (DEC-5: cwd ⟂ project). The daemon process's own cwd never changes.
571
650
  const cwds = resolveDaemonCwds({ cwd: flags.cwd }, { env });
651
+ const browseRoots = resolveBrowseRoots({ browseRoot: flags.browseRoot }, { env });
572
652
 
573
653
  // Foreground preflight: resolve/complete credentials + resolve the permission
574
654
  // posture (confirming yolo on a TTY). Reuses the same pfDeps bundle the detach
@@ -634,6 +714,7 @@ export async function runDaemon(flags = {}, deps = {}) {
634
714
  } else {
635
715
  log(`[Chorus] serving path: ${servedPaths[0]}`);
636
716
  }
717
+ log(`[Chorus] browse roots: ${browseRoots.join(", ")} (discovery only; no connections created)`);
637
718
 
638
719
  const daemon = build(creds, {
639
720
  logger: { info: log, warn: errLog, error: errLog },
@@ -642,6 +723,7 @@ export async function runDaemon(flags = {}, deps = {}) {
642
723
  verbose,
643
724
  sigintTimeoutMs,
644
725
  cwds,
726
+ browseRoots,
645
727
  });
646
728
 
647
729
  // Graceful shutdown on signals.
@@ -778,6 +860,7 @@ export async function handleLifecycleAction(action, { log, errLog, lifecycle, se
778
860
  const installCfg = svc.installConfig ?? {
779
861
  resolveInstallCredentials,
780
862
  resolveInstallCwds,
863
+ resolveInstallBrowseRoots,
781
864
  resolveInstallAgent,
782
865
  };
783
866
 
@@ -811,6 +894,13 @@ export async function handleLifecycleAction(action, { log, errLog, lifecycle, se
811
894
  prompt: pfDeps?.askPrompt,
812
895
  log,
813
896
  });
897
+ if (installCfg.resolveInstallBrowseRoots) {
898
+ await installCfg.resolveInstallBrowseRoots(flags, {
899
+ writeConfig: pfDeps?.writeConfig ?? updateDaemonConfig,
900
+ readJson: pfDeps?.readJson,
901
+ loginPath: pfDeps?.loginPath,
902
+ });
903
+ }
814
904
 
815
905
  // Configure + persist the agent backend to daemon.json `agent` (single source
816
906
  // of truth; the unit carries no --agent, exactly like --cwd). Prompts an