@chorus-aidlc/chorus 0.13.0 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (659) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +392 -406
  3. package/.next/standalone/.next/app-path-routes-manifest.json +41 -43
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +27 -51
  6. package/.next/standalone/.next/react-loadable-manifest.json +2 -2
  7. package/.next/standalone/.next/routes-manifest.json +0 -6
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +2 -2
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  48. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  52. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  53. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
  56. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  57. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/admin/companies.html +1 -1
  59. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  60. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/admin.html +1 -1
  62. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  63. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/agent-connections/route.js +1 -1
  68. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  72. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/auth/callback/route.js +1 -1
  78. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
  82. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  90. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
  92. package/.next/standalone/.next/server/app/api/daemon/control/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
  96. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
  98. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
  102. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
  104. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
  107. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
  110. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
  111. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  113. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
  114. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
  116. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
  117. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
  119. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
  120. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
  122. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
  125. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
  126. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
  128. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
  129. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  131. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js.nft.json +1 -1
  132. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
  134. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
  135. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/events/notifications/route.js +4 -4
  137. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  138. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/events/route.js +6 -6
  140. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  141. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  144. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  145. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  147. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  148. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  150. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  151. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  160. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -0
  162. package/.next/standalone/.next/server/app/api/{auth/refresh → ideas/conversational}/route.js.nft.json +1 -1
  163. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -0
  164. package/.next/standalone/.next/server/app/api/mcp/route.js +2 -2
  165. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  166. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  168. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  169. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  171. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  172. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  174. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  175. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  177. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  178. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  183. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  184. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  186. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  187. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  189. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  192. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js.nft.json +1 -1
  193. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  195. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js.nft.json +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.js +1 -1
  198. package/.next/standalone/.next/server/app/api/project-groups/route.js.nft.json +1 -1
  199. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  201. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  202. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  203. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  205. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js.nft.json +1 -1
  206. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  207. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js.nft.json +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.js +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js.nft.json +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js.nft.json +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js.nft.json +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js.nft.json +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  231. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  232. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js.nft.json +1 -1
  233. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  234. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  235. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  236. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  237. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  238. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  239. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  241. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  242. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js.nft.json +1 -1
  243. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  244. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  245. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js.nft.json +1 -1
  246. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  247. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  248. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js.nft.json +1 -1
  249. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  250. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  251. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js.nft.json +1 -1
  252. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  253. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  254. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js.nft.json +1 -1
  255. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  256. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/api/session/route.js +1 -0
  258. package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -0
  259. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -0
  260. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  261. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  262. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  263. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  264. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  265. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  266. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  267. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  268. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  269. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  270. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  271. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  272. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  273. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  274. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  275. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  276. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  277. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  278. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  279. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  280. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  281. package/.next/standalone/.next/server/app/index.html +1 -1
  282. package/.next/standalone/.next/server/app/index.rsc +3 -3
  283. package/.next/standalone/.next/server/app/login/admin/page.js +2 -2
  284. package/.next/standalone/.next/server/app/login/admin/page.js.nft.json +1 -1
  285. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  286. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  287. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  288. package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
  289. package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +1 -1
  290. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  291. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  292. package/.next/standalone/.next/server/app/login/callback.rsc +3 -3
  293. package/.next/standalone/.next/server/app/login/page.js +2 -2
  294. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  295. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  296. package/.next/standalone/.next/server/app/login/pick-workspace/page.js +1 -1
  297. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  298. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  299. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +3 -3
  300. package/.next/standalone/.next/server/app/login.html +1 -1
  301. package/.next/standalone/.next/server/app/login.rsc +3 -3
  302. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  303. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  304. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  305. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  306. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  307. package/.next/standalone/.next/server/app/page.js +2 -2
  308. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  309. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  310. package/.next/standalone/.next/server/app/projects.html +1 -1
  311. package/.next/standalone/.next/server/app/projects.rsc +4 -4
  312. package/.next/standalone/.next/server/app/settings.html +1 -1
  313. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  314. package/.next/standalone/.next/server/app-paths-manifest.json +41 -43
  315. package/.next/standalone/.next/server/chunks/1463.js +1 -1
  316. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  317. package/.next/standalone/.next/server/chunks/{7258.js → 2516.js} +1 -1
  318. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  319. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  320. package/.next/standalone/.next/server/chunks/3219.js +1 -1
  321. package/.next/standalone/.next/server/chunks/3371.js +1 -0
  322. package/.next/standalone/.next/server/chunks/3373.js +1 -1
  323. package/.next/standalone/.next/server/chunks/3419.js +1 -1
  324. package/.next/standalone/.next/server/chunks/4827.js +1 -0
  325. package/.next/standalone/.next/server/chunks/4958.js +1 -0
  326. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  327. package/.next/standalone/.next/server/chunks/5631.js +1 -0
  328. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  329. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  330. package/.next/standalone/.next/server/chunks/6496.js +1 -0
  331. package/.next/standalone/.next/server/chunks/679.js +1 -1
  332. package/.next/standalone/.next/server/chunks/6817.js +1 -0
  333. package/.next/standalone/.next/server/chunks/{178.js → 704.js} +3 -3
  334. package/.next/standalone/.next/server/chunks/7364.js +1 -1
  335. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  336. package/.next/standalone/.next/server/chunks/7578.js +1 -1
  337. package/.next/standalone/.next/server/chunks/8448.js +1 -0
  338. package/.next/standalone/.next/server/chunks/{8267.js → 8481.js} +1 -1
  339. package/.next/standalone/.next/server/chunks/8577.js +153 -0
  340. package/.next/standalone/.next/server/chunks/920.js +1 -1
  341. package/.next/standalone/.next/server/chunks/9726.js +1 -0
  342. package/.next/standalone/.next/server/instrumentation.js +1 -1
  343. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  344. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  345. package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  346. package/.next/standalone/.next/server/pages/404.html +1 -1
  347. package/.next/standalone/.next/server/pages/500.html +1 -1
  348. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  349. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  350. package/.next/standalone/.next/server/src/middleware.js +5 -5
  351. package/.next/standalone/.next/static/CIg9Mtv4fKIeKqPY5Rczv/_buildManifest.js +1 -0
  352. package/.next/standalone/.next/static/chunks/15653-31c406c41bf58048.js +1 -0
  353. package/.next/standalone/.next/static/chunks/1892-9c03d4d3560ff572.js +1 -0
  354. package/.next/standalone/.next/static/chunks/225-7b0507c29df705f1.js +1 -0
  355. package/.next/standalone/.next/static/chunks/24459-3bc9657d71c77b47.js +1 -0
  356. package/.next/standalone/.next/static/chunks/38296-316ba18af72385fb.js +1 -0
  357. package/.next/standalone/.next/static/chunks/38366.62260b57e5f4b09d.js +1 -0
  358. package/.next/standalone/.next/static/chunks/46055-f786ace4b994dc40.js +1 -0
  359. package/.next/standalone/.next/static/chunks/{4860.c3c83713d1f163a5.js → 4860.18e9c1a01636e309.js} +1 -1
  360. package/.next/standalone/.next/static/chunks/{49965-fa11628d5ac8fbbe.js → 52064-74d81c8d682deb6b.js} +1 -1
  361. package/.next/standalone/.next/static/chunks/57362-9ece5cc290dab705.js +1 -0
  362. package/.next/standalone/.next/static/chunks/{14655-4f3bc7f3044c42c1.js → 58037-55d7422c6b808356.js} +1 -1
  363. package/.next/standalone/.next/static/chunks/63820-551bca4e19d0119c.js +1 -0
  364. package/.next/standalone/.next/static/chunks/68255-05c42a26602c6b37.js +1 -0
  365. package/.next/standalone/.next/static/chunks/75752-cc8fafe132943baa.js +1 -0
  366. package/.next/standalone/.next/static/chunks/80350-20c953d484f262ff.js +1 -0
  367. package/.next/standalone/.next/static/chunks/84169-71a87d06871ec9df.js +1 -0
  368. package/.next/standalone/.next/static/chunks/94743-aff8a51a7f7970a9.js +1 -0
  369. package/.next/standalone/.next/static/chunks/96752-ad15cc38599f12e2.js +1 -0
  370. package/.next/standalone/.next/static/chunks/{36493-5326c14a7240edc8.js → 97306-8834e12cdbeed920.js} +1 -1
  371. package/.next/standalone/.next/static/chunks/{99373.2b68fce200cc323e.js → 99373.c4a36dcd46ec841e.js} +1 -1
  372. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-a3747bde1ddaba52.js +1 -0
  373. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-87b79c98e46fbd04.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-47e1d397c5fcef9e.js +1 -0
  375. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-b2db3da2d7945904.js +1 -0
  376. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-0467d744b84aa2c2.js +1 -0
  377. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-7ebb779f0db4c58b.js → page-7abff55f9bfebab3.js} +1 -1
  378. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-b3b2b2ba3d60893e.js +1 -0
  379. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-0aff1fa7a814188c.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6dbfbe5d97855e42.js +1 -0
  381. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-b8fbcac7224342db.js +1 -0
  382. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-0a04a31e1b383094.js +1 -0
  383. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-e2a69b645ec9ae13.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-0bc22273214e522f.js → page-b760877bfcd12dff.js} +1 -1
  385. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-111aed4d3319d64b.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-47e1d397c5fcef9e.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-47e1d397c5fcef9e.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-47e1d397c5fcef9e.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-47e1d397c5fcef9e.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-47e1d397c5fcef9e.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/api/agents/route-47e1d397c5fcef9e.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-47e1d397c5fcef9e.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-47e1d397c5fcef9e.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-47e1d397c5fcef9e.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-47e1d397c5fcef9e.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-47e1d397c5fcef9e.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-47e1d397c5fcef9e.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-47e1d397c5fcef9e.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-47e1d397c5fcef9e.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-47e1d397c5fcef9e.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/comments/route-47e1d397c5fcef9e.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-47e1d397c5fcef9e.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-47e1d397c5fcef9e.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-47e1d397c5fcef9e.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-47e1d397c5fcef9e.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-47e1d397c5fcef9e.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-47e1d397c5fcef9e.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-47e1d397c5fcef9e.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-47e1d397c5fcef9e.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-47e1d397c5fcef9e.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-47e1d397c5fcef9e.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-47e1d397c5fcef9e.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-47e1d397c5fcef9e.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-47e1d397c5fcef9e.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-47e1d397c5fcef9e.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-47e1d397c5fcef9e.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/events/route-47e1d397c5fcef9e.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/health/route-47e1d397c5fcef9e.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-47e1d397c5fcef9e.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-47e1d397c5fcef9e.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-47e1d397c5fcef9e.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-47e1d397c5fcef9e.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-47e1d397c5fcef9e.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-47e1d397c5fcef9e.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/mcp/route-47e1d397c5fcef9e.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-47e1d397c5fcef9e.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-47e1d397c5fcef9e.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-47e1d397c5fcef9e.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-47e1d397c5fcef9e.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-47e1d397c5fcef9e.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-47e1d397c5fcef9e.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/notifications/route-47e1d397c5fcef9e.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-47e1d397c5fcef9e.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-47e1d397c5fcef9e.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-47e1d397c5fcef9e.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-47e1d397c5fcef9e.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-47e1d397c5fcef9e.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-47e1d397c5fcef9e.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-47e1d397c5fcef9e.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-47e1d397c5fcef9e.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-47e1d397c5fcef9e.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-47e1d397c5fcef9e.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-47e1d397c5fcef9e.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-47e1d397c5fcef9e.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-47e1d397c5fcef9e.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-47e1d397c5fcef9e.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-47e1d397c5fcef9e.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-47e1d397c5fcef9e.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/projects/route-47e1d397c5fcef9e.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-47e1d397c5fcef9e.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-47e1d397c5fcef9e.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-47e1d397c5fcef9e.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-47e1d397c5fcef9e.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/search/route-47e1d397c5fcef9e.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/session/route-47e1d397c5fcef9e.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-47e1d397c5fcef9e.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-47e1d397c5fcef9e.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-47e1d397c5fcef9e.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-47e1d397c5fcef9e.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-47e1d397c5fcef9e.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/login/callback/page-39a43f6d0245f8ca.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/login/page-acda3a31dc6a8280.js +1 -0
  473. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-10683852baf17426.js +1 -0
  474. package/.next/standalone/.next/static/chunks/app/onboarding/{page-500aded75bf11ed6.js → page-8e20c8aa8ff90326.js} +1 -1
  475. package/.next/standalone/.next/static/chunks/app/page-000b1349c8d5b652.js +1 -0
  476. package/.next/standalone/.next/static/chunks/{webpack-7483083a976ed3d7.js → webpack-3551a4c7f9bfe638.js} +1 -1
  477. package/.next/standalone/.next/static/css/a80bf83b9122bfc5.css +1 -0
  478. package/.next/standalone/package.json +1 -1
  479. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  480. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  481. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +1 -1
  482. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +3 -1
  483. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +11 -1
  484. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  485. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +3 -1
  486. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  487. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  488. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
  489. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  490. package/.next/standalone/public/skill/chorus/SKILL.md +1 -1
  491. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
  492. package/.next/standalone/public/skill/develop-chorus/SKILL.md +3 -1
  493. package/.next/standalone/public/skill/idea-chorus/SKILL.md +11 -1
  494. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +3 -1
  495. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  496. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  497. package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
  498. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  499. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
  500. package/README.md +15 -2
  501. package/README.zh.md +15 -2
  502. package/cli/client-args.mjs +31 -9
  503. package/cli/control-handler.mjs +22 -5
  504. package/cli/daemon-lifecycle.mjs +192 -25
  505. package/cli/daemon-rest-client.mjs +6 -2
  506. package/cli/daemon-service.mjs +422 -0
  507. package/cli/daemon.mjs +181 -13
  508. package/cli/event-router.mjs +29 -10
  509. package/cli/prompts.mjs +61 -0
  510. package/cli/turn-reporter.mjs +26 -5
  511. package/cli/wake-queue.mjs +30 -0
  512. package/cli/waker.mjs +91 -22
  513. package/package.json +1 -1
  514. package/prisma/migrations/20260704023331_add_turn_interrupted_state/migration.sql +2 -0
  515. package/prisma/migrations/20260707104706_add_idea_is_container/migration.sql +2 -0
  516. package/prisma/schema.prisma +10 -2
  517. package/.next/standalone/.next/server/app/api/auth/refresh/route.js +0 -1
  518. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +0 -1
  519. package/.next/standalone/.next/server/app/api/auth/session/route.js +0 -1
  520. package/.next/standalone/.next/server/app/api/auth/session/route.js.nft.json +0 -1
  521. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +0 -1
  522. package/.next/standalone/.next/server/app/api/keepalive/route.js +0 -1
  523. package/.next/standalone/.next/server/app/api/keepalive/route.js.nft.json +0 -1
  524. package/.next/standalone/.next/server/app/api/keepalive/route_client-reference-manifest.js +0 -1
  525. package/.next/standalone/.next/server/app/login/silent-refresh/page.js +0 -2
  526. package/.next/standalone/.next/server/app/login/silent-refresh/page.js.nft.json +0 -1
  527. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +0 -1
  528. package/.next/standalone/.next/server/app/login/silent-refresh.html +0 -1
  529. package/.next/standalone/.next/server/app/login/silent-refresh.meta +0 -7
  530. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +0 -24
  531. package/.next/standalone/.next/server/chunks/298.js +0 -1
  532. package/.next/standalone/.next/server/chunks/6813.js +0 -1
  533. package/.next/standalone/.next/server/chunks/7421.js +0 -1
  534. package/.next/standalone/.next/server/chunks/7515.js +0 -1
  535. package/.next/standalone/.next/server/chunks/7912.js +0 -1
  536. package/.next/standalone/.next/server/chunks/8821.js +0 -1
  537. package/.next/standalone/.next/server/chunks/9273.js +0 -1
  538. package/.next/standalone/.next/server/chunks/937.js +0 -153
  539. package/.next/standalone/.next/static/W3KEB0tOAICVtfAUfR_M9/_buildManifest.js +0 -1
  540. package/.next/standalone/.next/static/chunks/10919-7f63b2801a92b8c6.js +0 -1
  541. package/.next/standalone/.next/static/chunks/1891-d4a9e756fefba3a9.js +0 -1
  542. package/.next/standalone/.next/static/chunks/20081-a2bf5c9f24d5d589.js +0 -1
  543. package/.next/standalone/.next/static/chunks/26394-4af487a51dd62832.js +0 -1
  544. package/.next/standalone/.next/static/chunks/2987-c15f09093b821b24.js +0 -1
  545. package/.next/standalone/.next/static/chunks/37784-95dee37276b1067b.js +0 -1
  546. package/.next/standalone/.next/static/chunks/43741-aeea04ab873ac4e9.js +0 -1
  547. package/.next/standalone/.next/static/chunks/49852-5337f139a2f87c46.js +0 -1
  548. package/.next/standalone/.next/static/chunks/56812-a6fe5225adc0b2ff.js +0 -1
  549. package/.next/standalone/.next/static/chunks/64894-71b047ae8ef2f3d8.js +0 -1
  550. package/.next/standalone/.next/static/chunks/78966.075119c3a72135ed.js +0 -1
  551. package/.next/standalone/.next/static/chunks/8796-69e708cb8603d8b4.js +0 -1
  552. package/.next/standalone/.next/static/chunks/91666-3fd4f3512a53ff20.js +0 -1
  553. package/.next/standalone/.next/static/chunks/97263-018d631416efa5cd.js +0 -1
  554. package/.next/standalone/.next/static/chunks/97868-55f18a05fe483d85.js +0 -1
  555. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-6061b60d52262d3c.js +0 -1
  556. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-78ab05c72bcd04fd.js +0 -1
  557. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-31ae6abada6e6a64.js +0 -1
  558. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-478cce81afbfc145.js +0 -1
  559. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-494b80e61b485870.js +0 -1
  560. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-bfbfc5005de2be13.js +0 -1
  561. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-fbb4dd4124525f97.js +0 -1
  562. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-164fe175720b24a1.js +0 -1
  563. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-2742c745a90f843f.js +0 -1
  564. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-f2313bf05387b39b.js +0 -1
  565. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-955e8fd8d7b0b7c8.js +0 -1
  566. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-960ab78b5055780c.js +0 -1
  567. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-31ae6abada6e6a64.js +0 -1
  568. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-31ae6abada6e6a64.js +0 -1
  569. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-31ae6abada6e6a64.js +0 -1
  570. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-31ae6abada6e6a64.js +0 -1
  571. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-31ae6abada6e6a64.js +0 -1
  572. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-31ae6abada6e6a64.js +0 -1
  573. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-31ae6abada6e6a64.js +0 -1
  574. package/.next/standalone/.next/static/chunks/app/api/agents/route-31ae6abada6e6a64.js +0 -1
  575. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-31ae6abada6e6a64.js +0 -1
  576. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-31ae6abada6e6a64.js +0 -1
  577. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-31ae6abada6e6a64.js +0 -1
  578. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-31ae6abada6e6a64.js +0 -1
  579. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-31ae6abada6e6a64.js +0 -1
  580. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-31ae6abada6e6a64.js +0 -1
  581. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-31ae6abada6e6a64.js +0 -1
  582. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-31ae6abada6e6a64.js +0 -1
  583. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-31ae6abada6e6a64.js +0 -1
  584. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-31ae6abada6e6a64.js +0 -1
  585. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-31ae6abada6e6a64.js +0 -1
  586. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-31ae6abada6e6a64.js +0 -1
  587. package/.next/standalone/.next/static/chunks/app/api/comments/route-31ae6abada6e6a64.js +0 -1
  588. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-31ae6abada6e6a64.js +0 -1
  589. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-31ae6abada6e6a64.js +0 -1
  590. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-31ae6abada6e6a64.js +0 -1
  591. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-31ae6abada6e6a64.js +0 -1
  592. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-31ae6abada6e6a64.js +0 -1
  593. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-31ae6abada6e6a64.js +0 -1
  594. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-31ae6abada6e6a64.js +0 -1
  595. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-31ae6abada6e6a64.js +0 -1
  596. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-31ae6abada6e6a64.js +0 -1
  597. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-31ae6abada6e6a64.js +0 -1
  598. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-31ae6abada6e6a64.js +0 -1
  599. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-31ae6abada6e6a64.js +0 -1
  600. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-31ae6abada6e6a64.js +0 -1
  601. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-31ae6abada6e6a64.js +0 -1
  602. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-31ae6abada6e6a64.js +0 -1
  603. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-31ae6abada6e6a64.js +0 -1
  604. package/.next/standalone/.next/static/chunks/app/api/events/route-31ae6abada6e6a64.js +0 -1
  605. package/.next/standalone/.next/static/chunks/app/api/health/route-31ae6abada6e6a64.js +0 -1
  606. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-31ae6abada6e6a64.js +0 -1
  607. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-31ae6abada6e6a64.js +0 -1
  608. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-31ae6abada6e6a64.js +0 -1
  609. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-31ae6abada6e6a64.js +0 -1
  610. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-31ae6abada6e6a64.js +0 -1
  611. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-31ae6abada6e6a64.js +0 -1
  612. package/.next/standalone/.next/static/chunks/app/api/keepalive/route-31ae6abada6e6a64.js +0 -1
  613. package/.next/standalone/.next/static/chunks/app/api/mcp/route-31ae6abada6e6a64.js +0 -1
  614. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-31ae6abada6e6a64.js +0 -1
  615. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-31ae6abada6e6a64.js +0 -1
  616. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-31ae6abada6e6a64.js +0 -1
  617. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-31ae6abada6e6a64.js +0 -1
  618. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-31ae6abada6e6a64.js +0 -1
  619. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-31ae6abada6e6a64.js +0 -1
  620. package/.next/standalone/.next/static/chunks/app/api/notifications/route-31ae6abada6e6a64.js +0 -1
  621. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-31ae6abada6e6a64.js +0 -1
  622. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-31ae6abada6e6a64.js +0 -1
  623. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-31ae6abada6e6a64.js +0 -1
  624. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-31ae6abada6e6a64.js +0 -1
  625. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-31ae6abada6e6a64.js +0 -1
  626. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-31ae6abada6e6a64.js +0 -1
  627. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-31ae6abada6e6a64.js +0 -1
  628. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-31ae6abada6e6a64.js +0 -1
  629. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-31ae6abada6e6a64.js +0 -1
  630. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-31ae6abada6e6a64.js +0 -1
  631. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-31ae6abada6e6a64.js +0 -1
  632. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-31ae6abada6e6a64.js +0 -1
  633. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-31ae6abada6e6a64.js +0 -1
  634. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-31ae6abada6e6a64.js +0 -1
  635. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-31ae6abada6e6a64.js +0 -1
  636. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-31ae6abada6e6a64.js +0 -1
  637. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-31ae6abada6e6a64.js +0 -1
  638. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-31ae6abada6e6a64.js +0 -1
  639. package/.next/standalone/.next/static/chunks/app/api/projects/route-31ae6abada6e6a64.js +0 -1
  640. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-31ae6abada6e6a64.js +0 -1
  641. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-31ae6abada6e6a64.js +0 -1
  642. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-31ae6abada6e6a64.js +0 -1
  643. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-31ae6abada6e6a64.js +0 -1
  644. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-31ae6abada6e6a64.js +0 -1
  645. package/.next/standalone/.next/static/chunks/app/api/search/route-31ae6abada6e6a64.js +0 -1
  646. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-31ae6abada6e6a64.js +0 -1
  647. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-31ae6abada6e6a64.js +0 -1
  648. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-31ae6abada6e6a64.js +0 -1
  649. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-31ae6abada6e6a64.js +0 -1
  650. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-31ae6abada6e6a64.js +0 -1
  651. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-31ae6abada6e6a64.js +0 -1
  652. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-31ae6abada6e6a64.js +0 -1
  653. package/.next/standalone/.next/static/chunks/app/login/callback/page-6cad93f5c610b047.js +0 -1
  654. package/.next/standalone/.next/static/chunks/app/login/page-d2513f477211dd6f.js +0 -1
  655. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-597e0f3377f18d29.js +0 -1
  656. package/.next/standalone/.next/static/chunks/app/login/silent-refresh/page-a26d1af61578c96e.js +0 -1
  657. package/.next/standalone/.next/static/chunks/app/page-075afd218994d377.js +0 -1
  658. package/.next/standalone/.next/static/css/ed6baccd62b81c4e.css +0 -1
  659. /package/.next/standalone/.next/static/{W3KEB0tOAICVtfAUfR_M9 → CIg9Mtv4fKIeKqPY5Rczv}/_ssgManifest.js +0 -0
package/cli/daemon.mjs CHANGED
@@ -46,6 +46,15 @@ import {
46
46
  isRunning,
47
47
  readLog,
48
48
  } from "./daemon-lifecycle.mjs";
49
+ import {
50
+ detectSupervisor,
51
+ installService,
52
+ uninstallService,
53
+ systemctlUser,
54
+ journalctlUser,
55
+ resolveServicePaths,
56
+ SERVICE_NAME,
57
+ } from "./daemon-service.mjs";
49
58
  import { readFileSync, existsSync } from "node:fs";
50
59
  import { dirname, join } from "node:path";
51
60
  import { fileURLToPath } from "node:url";
@@ -254,7 +263,20 @@ export function buildDaemon(creds, deps = {}) {
254
263
  // transcript (new-vs-resume) and to spawn, so they never diverge (Module Contract
255
264
  // 1 — resolveCwd is the single source). `cwd` is `undefined` for the single-path /
256
265
  // old-daemon default, which the Waker degrades to process.cwd() (HARD-1).
257
- waker = new Waker({ creds, lineage, spawner, cwd, hooks, logger, reportInterrupt, advanceTurn, verbose });
266
+ waker = new Waker({
267
+ creds,
268
+ lineage,
269
+ spawner,
270
+ cwd,
271
+ hooks,
272
+ logger,
273
+ reportInterrupt,
274
+ advanceTurn,
275
+ verbose,
276
+ // Graceful-shutdown kill escalation (fix-daemon-exit-orphan-running-turn):
277
+ // interruptAll() reuses the SAME window the interrupt control handler uses.
278
+ sigintTimeoutMs,
279
+ });
258
280
  // The router reads THIS connection's own uuid lazily (same source the control handler
259
281
  // uses) to suppress a DIRECTED (pinned) wake stamped for a different connection
260
282
  // (fix-pinned-wake-directed-delivery, T2). Null until the SSE handshake assigns it — a
@@ -274,8 +296,8 @@ export function buildDaemon(creds, deps = {}) {
274
296
  // all scoped to THIS connection's uuid/router/backfill (see the original wiring
275
297
  // comments retained on the shared helpers). The control handler verifies a control
276
298
  // event against this connection's own connectionUuid before acting.
277
- const redispatchResume = (entityType, entityUuid) => {
278
- router.dispatchResume?.({ entityType, entityUuid });
299
+ const redispatchResume = (entityType, entityUuid, resumeReason) => {
300
+ router.dispatchResume?.({ entityType, entityUuid, resumeReason });
279
301
  };
280
302
  const deliverTurn = (turnUuid) => backfill?.pendingTurnsOnly?.(turnUuid);
281
303
  const onControl = createControlHandler({
@@ -399,10 +421,30 @@ export function buildDaemon(creds, deps = {}) {
399
421
  }
400
422
  },
401
423
  async stop() {
424
+ // Graceful shutdown ordering (fix-daemon-exit-orphan-running-turn):
425
+ // 1. Stop taking new work: disconnect the SSE listeners (no new notifications)
426
+ // and latch the queue (queued-but-unstarted wakes never spawn).
402
427
  for (const c of connections) {
403
428
  c.sseListener.disconnect?.();
404
429
  }
405
- // The MCP client is process-wide (shared) — disconnect it once.
430
+ queue.stop();
431
+ // 2. Interrupt every in-flight wake subprocess via the shared kill escalation.
432
+ // Each wake's exit path — seeing shuttingDown — reports its turn
433
+ // interrupted(shutdown) and suppresses the execution crash report.
434
+ for (const c of connections) {
435
+ c.waker?.interruptAll?.();
436
+ }
437
+ // 3. Await the in-flight wakes so those turn-advance reports flush, BOUNDED:
438
+ // the kill escalation window plus a hard 5s cap for the exit path's REST
439
+ // reports. A wake that outlives this does NOT hang the shutdown — its
440
+ // orphaned turn is the server-side offline reconcile's job (the backstop).
441
+ const drained = await queue.drain(sigintTimeoutMs + 5_000);
442
+ if (!drained) {
443
+ logger.warn(
444
+ "[Chorus] shutdown: in-flight wake(s) did not finish within the bound — exiting anyway (server reconcile will finalize their turns)",
445
+ );
446
+ }
447
+ // 4. The MCP client is process-wide (shared) — disconnect it once.
406
448
  await mcpClient.disconnect?.();
407
449
  },
408
450
  };
@@ -456,7 +498,25 @@ export async function runDaemon(flags = {}, deps = {}) {
456
498
  // Lifecycle subcommands (stop/status/restart/logs) operate on the pidfile/logfile
457
499
  // managed by the `-d` path — they never start the long-lived foreground daemon.
458
500
  // `run` falls through to the normal startup below. Injectable lifecycle for tests.
459
- const lifecycle = deps.lifecycle ?? { startBackground, stopDaemon, isRunning, readLog };
501
+ // stopDaemon's real signature is (io, opts); the bundle exposes (opts) with the
502
+ // default io so handleLifecycleAction can pass { force } directly.
503
+ const lifecycle = deps.lifecycle ?? {
504
+ startBackground,
505
+ stopDaemon: (opts) => stopDaemon(undefined, opts),
506
+ isRunning,
507
+ readLog,
508
+ };
509
+ // Supervisor (systemd --user) seam — install/uninstall the boot service and
510
+ // detect/delegate to it from the lifecycle subcommands. Injectable for tests
511
+ // (no real systemctl / disk). Defaults to the real daemon-service module.
512
+ const service = deps.service ?? {
513
+ detectSupervisor,
514
+ installService,
515
+ uninstallService,
516
+ systemctlUser,
517
+ journalctlUser,
518
+ resolveServicePaths: () => resolveServicePaths(env),
519
+ };
460
520
  // The preflight dep bundle — built from the same seams runDaemon resolved, so
461
521
  // the detach/restart paths run the SAME (injectable) preflight, not the real
462
522
  // implementations. Threaded into startDetached so tests can drive it offline.
@@ -464,7 +524,7 @@ export async function runDaemon(flags = {}, deps = {}) {
464
524
 
465
525
  const action = flags.action ?? "run";
466
526
  if (action !== "run") {
467
- return handleLifecycleAction(action, { log, errLog, lifecycle, pfDeps });
527
+ return handleLifecycleAction(action, { log, errLog, lifecycle, service, pfDeps });
468
528
  }
469
529
 
470
530
  // `-d` / --detach: complete any interactive preflight in THIS foreground process
@@ -665,13 +725,87 @@ export async function preflight(ctx) {
665
725
  }
666
726
 
667
727
  /**
668
- * Dispatch a daemon lifecycle subcommand (stop/status/restart/logs) against the
669
- * pidfile/logfile-managed background daemon. Each reports clearly when nothing
670
- * is running (no silent failure). `restart` performs stop-then-detached-start.
728
+ * Dispatch a daemon lifecycle subcommand. Two families:
729
+ * - install / uninstall manage the boot-autostart supervisor service
730
+ * (systemd --user on Linux; a printed template on macOS/Windows).
731
+ * - status / stop / restart / logs — when a supervisor unit is installed and
732
+ * active, DELEGATE to it (systemctl / journalctl) so a supervised daemon is
733
+ * never misreported as "not running"; otherwise operate on the
734
+ * pidfile/logfile-managed `-d` background daemon exactly as before.
735
+ * Each reports clearly (no silent failure). `restart` performs
736
+ * stop-then-detached-start on the pidfile path.
671
737
  * @returns {Promise<number>} exit code
672
738
  */
673
- export async function handleLifecycleAction(action, { log, errLog, lifecycle, pfDeps }) {
739
+ export async function handleLifecycleAction(action, { log, errLog, lifecycle, service, pfDeps }) {
740
+ // The supervisor seam is optional (older test bundles inject only lifecycle);
741
+ // a no-op fallback keeps those callers on the pure pidfile path.
742
+ const svc = service ?? { detectSupervisor: () => ({ kind: "none" }) };
743
+
744
+ if (action === "install") {
745
+ const spec = {
746
+ ...svc.resolveServicePaths(),
747
+ cwds: pfDeps?.flags?.cwd ?? [],
748
+ agent: pfDeps?.flags?.agent,
749
+ chorusOnly: pfDeps?.flags?.chorusOnly === true,
750
+ workingDir: process.cwd(),
751
+ };
752
+ const r = svc.installService(spec);
753
+ if (r.installed) {
754
+ log(`[Chorus] installed and started the daemon service:`);
755
+ for (const s of r.steps) log(`[Chorus] ${s}`);
756
+ log(`[Chorus] it will now start automatically at login. Manage it with:`);
757
+ log(`[Chorus] chorus daemon status | stop | restart | logs`);
758
+ // A --user service only survives logout with lingering enabled; and a
759
+ // separately-started `chorus daemon -d` would hold the same paths and make
760
+ // this service exit-and-retry. Surface both so neither is a silent gotcha.
761
+ log(`[Chorus] to keep it running after you log out: loginctl enable-linger "$USER"`);
762
+ log(`[Chorus] if you previously ran 'chorus daemon -d', stop it first ('chorus daemon stop') so it doesn't hold the same paths.`);
763
+ return 0;
764
+ }
765
+ if (r.platform === "linux") {
766
+ // Linux install actually failed (write / systemctl error) — surface it.
767
+ errLog(`[Chorus] service install failed: ${r.error}`);
768
+ for (const s of r.steps) errLog(`[Chorus] (did: ${s})`);
769
+ return 1;
770
+ }
771
+ // macOS / Windows: not auto-installed by design — print the template + steps.
772
+ log(`[Chorus] automatic install is Linux-only. To run the daemon as a service on this platform:`);
773
+ for (const s of r.steps) log(`[Chorus] ${s}`);
774
+ log("");
775
+ log(r.unitText);
776
+ return 0;
777
+ }
778
+ if (action === "uninstall") {
779
+ const r = svc.uninstallService();
780
+ if (r.platform === "linux") {
781
+ if (r.error) {
782
+ errLog(`[Chorus] service uninstall failed: ${r.error}`);
783
+ return 1;
784
+ }
785
+ if (r.removed) {
786
+ log(`[Chorus] removed the daemon service:`);
787
+ for (const s of r.steps) log(`[Chorus] ${s}`);
788
+ } else {
789
+ log(`[Chorus] no installed daemon service found (nothing to remove).`);
790
+ }
791
+ return 0;
792
+ }
793
+ log(`[Chorus] automatic uninstall is Linux-only. To remove the service on this platform:`);
794
+ for (const s of r.steps) log(`[Chorus] ${s}`);
795
+ return 0;
796
+ }
797
+
798
+ // For the control verbs, prefer a live supervisor unit over the pidfile.
799
+ const sup = svc.detectSupervisor();
800
+ const supervised = sup.kind === "systemd" && sup.installed;
801
+
674
802
  if (action === "status") {
803
+ if (supervised) {
804
+ log(`[Chorus] daemon is managed by systemd (${SERVICE_NAME}.service) — ${sup.active ? "active" : "installed but NOT active"}.`);
805
+ const r = svc.systemctlUser(["status", "--no-pager", `${SERVICE_NAME}.service`]);
806
+ if (r.stdout) log(r.stdout.trimEnd());
807
+ return sup.active ? 0 : 1;
808
+ }
675
809
  const s = lifecycle.isRunning();
676
810
  if (s.running) log(`[Chorus] daemon is running (pid ${s.pid}).`);
677
811
  else if (s.stale) log(`[Chorus] daemon is NOT running (stale pidfile for pid ${s.pid}).`);
@@ -679,6 +813,15 @@ export async function handleLifecycleAction(action, { log, errLog, lifecycle, pf
679
813
  return 0;
680
814
  }
681
815
  if (action === "logs") {
816
+ if (supervised) {
817
+ const r = svc.journalctlUser(["-u", `${SERVICE_NAME}.service`, "--no-pager", "-n", "200"]);
818
+ if (r.status !== 0 && !r.stdout) {
819
+ errLog(`[Chorus] could not read the service journal: ${r.stderr.trim() || `exit ${r.status}`}`);
820
+ return 1;
821
+ }
822
+ log(r.stdout.trimEnd());
823
+ return 0;
824
+ }
682
825
  const r = lifecycle.readLog();
683
826
  if (!r.ok) {
684
827
  errLog(`[Chorus] ${r.message}`);
@@ -688,11 +831,36 @@ export async function handleLifecycleAction(action, { log, errLog, lifecycle, pf
688
831
  return 0;
689
832
  }
690
833
  if (action === "stop") {
691
- const r = lifecycle.stopDaemon();
692
- (r.stopped ? log : errLog)(`[Chorus] ${r.message}`);
693
- return r.stopped ? 0 : 1;
834
+ if (supervised) {
835
+ const r = svc.systemctlUser(["stop", `${SERVICE_NAME}.service`]);
836
+ if (r.status === 0) {
837
+ log(`[Chorus] stopped the daemon service (systemctl --user stop ${SERVICE_NAME}.service).`);
838
+ log(`[Chorus] note: it is still enabled and will start again at next login. To disable: chorus daemon uninstall`);
839
+ return 0;
840
+ }
841
+ errLog(`[Chorus] failed to stop the service: ${r.stderr.trim() || `exit ${r.status}`}`);
842
+ return 1;
843
+ }
844
+ // --force: unconditional pidfile cleanup for stuck states the identity
845
+ // probe cannot resolve. Threaded from the parsed client flags.
846
+ const r = lifecycle.stopDaemon({ force: pfDeps?.flags?.force === true });
847
+ // Exit 0 whenever the end state is "no daemon, no pidfile" (stopped /
848
+ // stale-cleared / forced) so `chorus daemon stop && …` chains survive a
849
+ // self-heal; 1 for not-running and signal errors.
850
+ const ok = r.reason === "stopped" || r.reason === "stale-cleared" || r.reason === "forced";
851
+ (ok ? log : errLog)(`[Chorus] ${r.message}`);
852
+ return ok ? 0 : 1;
694
853
  }
695
854
  if (action === "restart") {
855
+ if (supervised) {
856
+ const r = svc.systemctlUser(["restart", `${SERVICE_NAME}.service`]);
857
+ if (r.status === 0) {
858
+ log(`[Chorus] restarted the daemon service (systemctl --user restart ${SERVICE_NAME}.service).`);
859
+ return 0;
860
+ }
861
+ errLog(`[Chorus] failed to restart the service: ${r.stderr.trim() || `exit ${r.status}`}`);
862
+ return 1;
863
+ }
696
864
  const r = lifecycle.stopDaemon();
697
865
  log(`[Chorus] ${r.message}`);
698
866
  // Start a fresh detached instance regardless of whether one was running.
@@ -14,12 +14,14 @@ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
14
14
  // MIRROR of the server's NOTIFICATION_ACTION_TO_TURN_TRIGGER (src/services/notification-turn.ts).
15
15
  // Used ONLY to match a re-read wake notification back to a DIRECTED autonomous pending turn
16
16
  // (the deliver_turn re-dispatch rebuilds the prompt from the notification, T2). Kept narrow
17
- // to the three triggers a `deliver_turn` ping can carry for an autonomous wake; every other
18
- // action collapses to the `task_assigned` trigger exactly as the server does, so a
17
+ // to the dedicated triggers a `deliver_turn` ping can carry for an autonomous wake; every
18
+ // other action collapses to the `task_assigned` trigger exactly as the server does, so a
19
19
  // task_assigned turn matches its task_reopened/task_verified/idea_claimed/proposal_* origins.
20
20
  const ACTION_TO_TURN_TRIGGER = {
21
21
  mentioned: "mentioned",
22
22
  elaboration_verified: "elaboration_verified",
23
+ start_development: "start_development",
24
+ yolo_requested: "yolo_requested",
23
25
  elaboration_requested: "elaboration",
24
26
  elaboration_answered: "elaboration",
25
27
  human_instruction: "human_instruction",
@@ -219,7 +221,12 @@ export class EventRouter {
219
221
  * per-direct-idea serialization holds and the spawner's on-disk transcript probe
220
222
  * naturally selects `claude --resume <directIdeaUuid>` (the session already
221
223
  * exists). Synchronous + non-throwing, mirroring `dispatch`.
222
- * @param {{ entityType?: string, entityUuid?: string }} target
224
+ *
225
+ * `resumeReason` (add-crash-execution-resume) is the interrupted row's prior
226
+ * reason ("user" | "crash") threaded from the control event; it is stamped on the
227
+ * synthetic notification as `resumedFrom` so the prompt builder can state a crash
228
+ * explicitly. Absent/unknown → not stamped → the user-resume prompt.
229
+ * @param {{ entityType?: string, entityUuid?: string, resumeReason?: string }} target
223
230
  */
224
231
  dispatchResume(target) {
225
232
  const entityType = target?.entityType;
@@ -228,7 +235,16 @@ export class EventRouter {
228
235
  this.logger.warn("[Chorus] resume dispatch missing entityType/entityUuid, skipping");
229
236
  return;
230
237
  }
231
- const n = { action: "resource_resumed", entityType, entityUuid };
238
+ const resumedFrom =
239
+ target?.resumeReason === "user" || target?.resumeReason === "crash"
240
+ ? target.resumeReason
241
+ : undefined;
242
+ const n = {
243
+ action: "resource_resumed",
244
+ entityType,
245
+ entityUuid,
246
+ ...(resumedFrom ? { resumedFrom } : {}),
247
+ };
232
248
  this.#resolveAndEnqueue(n, `resume:${entityType}:${entityUuid}`).catch((err) => {
233
249
  this.logger.error(`[Chorus] failed to dispatch resume for ${entityType}:${entityUuid}: ${err}`);
234
250
  });
@@ -278,15 +294,18 @@ export class EventRouter {
278
294
  this.logger.warn(`[Chorus] pending-turn ${turnUuid} missing sessionId, skipping`);
279
295
  return;
280
296
  }
281
- // A DIRECTED autonomous turn (mentioned / task_assigned / elaboration_verified) is
282
- // delivered by the deliver_turn ping too (T2). Its prompt must be rebuilt from the
283
- // notification (promptText is null), so it takes a separate async path. resume /
284
- // elaboration are not delivered by deliver_turn (resume is synthetic; elaboration
285
- // request/answer rides the notification broadcast), so they are not re-dispatched here.
297
+ // A DIRECTED autonomous turn (mentioned / task_assigned / elaboration_verified /
298
+ // start_development / yolo_requested) is delivered by the deliver_turn ping too (T2).
299
+ // Its prompt must be rebuilt from the notification (promptText is null), so it takes a
300
+ // separate async path. resume / elaboration are not delivered by deliver_turn (resume
301
+ // is synthetic; elaboration request/answer rides the notification broadcast), so they
302
+ // are not re-dispatched here.
286
303
  if (
287
304
  pending.trigger === "mentioned" ||
288
305
  pending.trigger === "task_assigned" ||
289
- pending.trigger === "elaboration_verified"
306
+ pending.trigger === "elaboration_verified" ||
307
+ pending.trigger === "start_development" ||
308
+ pending.trigger === "yolo_requested"
290
309
  ) {
291
310
  // Shared dedup, marked BEFORE async work (mirrors the human_instruction path and
292
311
  // `dispatch`) so concurrent deliveries collapse to one wake.
package/cli/prompts.mjs CHANGED
@@ -138,6 +138,42 @@ function buildPromptBody(n) {
138
138
  `chorus_get_elaboration, then author the proposal via the existing proposal flow ` +
139
139
  `(chorus_pm_create_proposal / the proposal skill).\n${mentionGuidance(n, "idea")}`
140
140
  );
141
+ case "start_development":
142
+ // A human clicked "Start Development" (add-stage-advance-start-development). The
143
+ // idea's proposal is approved and unfinished tasks remain. The agent's job on this
144
+ // wake is the WHOLE remaining execute stage — loop over every claimable task until
145
+ // none remain (elaboration decision Q1), never stopping after a single task.
146
+ return (
147
+ `[Chorus] A human started DEVELOPMENT for idea '${n.entityTitle}' ` +
148
+ `(ideaUuid: ${n.entityUuid}, projectUuid: ${n.projectUuid}). The idea's proposal is approved and ` +
149
+ `unfinished tasks remain. Claim and execute ALL remaining tasks of that proposal in dependency ` +
150
+ `order, following the develop workflow: repeatedly find claimable tasks (chorus_get_unblocked_tasks ` +
151
+ `with projectUuid: "${n.projectUuid}"), claim one (chorus_claim_task), implement it, self-check its ` +
152
+ `acceptance criteria (chorus_report_criteria_self_check), and submit it (chorus_submit_for_verify) — ` +
153
+ `then loop until NO claimable task remains. Do NOT stop after one task. Leave tasks already in ` +
154
+ `to_verify (awaiting human verification) and tasks claimed by other sessions untouched. If nothing ` +
155
+ `is claimable, post a brief status comment on the idea and end the turn.\n${mentionGuidance(n, "idea")}`
156
+ );
157
+ case "yolo_requested":
158
+ // A human clicked "Yolo" (add-stage-advance-yolo). Unlike start_development
159
+ // (always the execute stage), this wake can land at ANY incomplete stage, so the
160
+ // prompt must NOT hard-code a stage — it points the agent at the yolo skill and lets
161
+ // it self-select the entry phase from the idea's current state (no proposal yet →
162
+ // elaborate + write proposal; approved proposal with open tasks → execute; etc.).
163
+ // Honors the "yolo never merges" rule: drive through done + completion report, but
164
+ // never merge or push a PR without explicit human approval.
165
+ return (
166
+ `[Chorus] A human requested a YOLO run for idea '${n.entityTitle}' ` +
167
+ `(ideaUuid: ${n.entityUuid}, projectUuid: ${n.projectUuid}). Drive this idea all the ` +
168
+ `way to done following the yolo skill (the full-auto AI-DLC pipeline: Idea → ` +
169
+ `Elaboration → Proposal → Execute → Verify). First read the idea's current state with ` +
170
+ `chorus_get_idea (plus chorus_get_elaboration / chorus_get_proposals as needed) and ` +
171
+ `RESUME from whatever phase it is already in — do NOT assume a fixed stage: if ` +
172
+ `elaboration isn't resolved, self-elaborate then write the proposal; if a proposal is ` +
173
+ `approved with open tasks, execute them; and so on. Complete the pipeline through the ` +
174
+ `final done state and completion report, but do NOT merge or push a pull request ` +
175
+ `without explicit human approval.\n${mentionGuidance(n, "idea")}`
176
+ );
141
177
  case "proposal_rejected":
142
178
  return (
143
179
  `[Chorus] Proposal '${n.entityTitle}' was REJECTED (proposalUuid: ${n.entityUuid}, ` +
@@ -172,6 +208,21 @@ function buildPromptBody(n) {
172
208
  // daemon's isNewSession probe selects `claude --resume <directIdeaUuid>`
173
209
  // automatically, so the woken Claude continues the SAME session where it left
174
210
  // off. It intentionally has no @mention (a self-resume has no actor to address).
211
+ //
212
+ // `resumedFrom` (add-crash-execution-resume) distinguishes the resume kind:
213
+ // "crash" gets an explicit exited-abnormally instruction — the previous run may
214
+ // have died mid-edit, so the agent must verify state before continuing.
215
+ // "user" / absent / unknown (older server) keeps the original text unchanged.
216
+ if (n.resumedFrom === "crash") {
217
+ return (
218
+ `[Chorus] The previous run on this ${n.entityType} EXITED ABNORMALLY (crashed) ` +
219
+ `(${n.entityType}Uuid: ${n.entityUuid}), and a user asked to resume it. The crash may ` +
220
+ `have left work half-finished — first re-check the current state with the appropriate ` +
221
+ `chorus_get_* tool (e.g. chorus_get_task / chorus_get_idea) plus chorus_get_comments, ` +
222
+ `and inspect any partial local work (working tree, uncommitted changes, half-written ` +
223
+ `files). Then continue the unfinished work from where the crashed run left off.`
224
+ );
225
+ }
175
226
  return (
176
227
  `[Chorus] Your work on this ${n.entityType} was RESUMED after an interrupt ` +
177
228
  `(${n.entityType}Uuid: ${n.entityUuid}). Continue where you left off — re-check the ` +
@@ -253,6 +304,16 @@ export const WAKE_ACTIONS = new Set([
253
304
  // idea-rooted like the other elaboration wakes, so the session anchor/resume contract is
254
305
  // unchanged. See buildPrompt's `elaboration_verified` case for the write-proposal prompt.
255
306
  "elaboration_verified",
307
+ // add-stage-advance-start-development: a human clicked "Start Development" — the idea's
308
+ // proposal is approved and unfinished tasks remain. Wakes the assigned daemon agent to
309
+ // CLAIM AND EXECUTE ALL remaining tasks (dedicated trigger, session-origin-pinned like
310
+ // elaboration_verified). See buildPrompt's `start_development` case.
311
+ "start_development",
312
+ // add-stage-advance-yolo: a human clicked "Yolo" — wakes the assigned daemon agent to
313
+ // drive the WHOLE idea to done via the yolo skill (dedicated trigger, session-origin-
314
+ // pinned like start_development). Unlike start_development it is stage-adaptive — see
315
+ // buildPrompt's `yolo_requested` case.
316
+ "yolo_requested",
256
317
  "proposal_rejected",
257
318
  "proposal_approved",
258
319
  "idea_claimed",
@@ -4,7 +4,7 @@
4
4
  // persistent conversation; the server creates that turn (status `pending`) at the
5
5
  // notification chokepoint, and the daemon advances it:
6
6
  // • on spawn → pending → running
7
- // • on subprocess exit → running → ended
7
+ // • on subprocess exit → running → ended (clean) | interrupted (user/crash/shutdown)
8
8
  //
9
9
  // The daemon does NOT know the server-side turn uuid. It identifies the turn the SAME
10
10
  // way the transcript ingest does — by the session BUSINESS KEY (`sessionId` = the
@@ -27,7 +27,10 @@ import { createDaemonRestClient } from "./daemon-rest-client.mjs";
27
27
  const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
28
28
 
29
29
  /** Turn lifecycle states the server's turn-advance endpoint accepts. */
30
- export const TURN_STATUSES = new Set(["pending", "running", "ended"]);
30
+ export const TURN_STATUSES = new Set(["pending", "running", "ended", "interrupted"]);
31
+
32
+ /** Interrupt reasons a DAEMON may report (`offline` is server-reconcile-only). */
33
+ export const TURN_INTERRUPT_REASONS = new Set(["user", "crash", "shutdown"]);
31
34
 
32
35
  /**
33
36
  * Build an `advanceTurn(params)` function the waker invokes on a wake's spawn (→
@@ -43,7 +46,7 @@ export const TURN_STATUSES = new Set(["pending", "running", "ended"]);
43
46
  * logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
44
47
  * fetchImpl?: typeof fetch, Injectable for tests.
45
48
  * }} opts
46
- * @returns {(params: { sessionId: string, status: "running"|"ended", entityType?: string|null, entityUuid?: string|null }) => Promise<void>}
49
+ * @returns {(params: { sessionId: string, status: "running"|"ended"|"interrupted", entityType?: string|null, entityUuid?: string|null, interruptedReason?: "user"|"crash"|"shutdown"|null }) => Promise<void>}
47
50
  */
48
51
  export function createTurnReporter(opts) {
49
52
  const logger = opts.logger ?? NOOP_LOGGER;
@@ -58,18 +61,36 @@ export function createTurnReporter(opts) {
58
61
  logger,
59
62
  });
60
63
 
61
- return async function advanceTurn({ sessionId, status, entityType, entityUuid }) {
64
+ return async function advanceTurn({
65
+ sessionId,
66
+ status,
67
+ entityType,
68
+ entityUuid,
69
+ interruptedReason,
70
+ }) {
62
71
  if (typeof sessionId !== "string" || !sessionId || !TURN_STATUSES.has(status)) {
63
72
  logger.warn(
64
73
  `[Chorus] refusing to advance turn: bad sessionId/status (${sessionId}, ${status})`,
65
74
  );
66
75
  return;
67
76
  }
77
+ // Domain guard mirroring the server's: a reason travels only with `interrupted`
78
+ // and only from the daemon-reportable vocabulary (`offline` is the server's own
79
+ // reconcile verdict). Refusing here keeps a bad caller visible in daemon logs
80
+ // instead of as a server 400.
81
+ if (interruptedReason != null) {
82
+ if (status !== "interrupted" || !TURN_INTERRUPT_REASONS.has(interruptedReason)) {
83
+ logger.warn(
84
+ `[Chorus] refusing to advance turn: bad interruptedReason (${interruptedReason}) for status ${status}`,
85
+ );
86
+ return;
87
+ }
88
+ }
68
89
  // The client resolves the connectionUuid lazily, validates it (logging
69
90
  // "no connection uuid yet" when absent), POSTs the exact server payload — sending
70
91
  // entityType/entityUuid only when both are present — and logs the failure cause on a
71
92
  // network error / non-2xx. We swallow the structured result so a failed report can
72
93
  // never crash the wake path.
73
- await client.turnAdvance({ sessionId, status, entityType, entityUuid });
94
+ await client.turnAdvance({ sessionId, status, entityType, entityUuid, interruptedReason });
74
95
  };
75
96
  }
@@ -30,6 +30,15 @@ export class WakeQueue {
30
30
  /** @type {string[]} keys waiting for a global concurrency slot. */
31
31
  this.readyKeys = [];
32
32
  this.activeCount = 0;
33
+ // Graceful-shutdown latch: once set, #pump starts NOTHING new — in-flight tasks
34
+ // finish (drain observes them) but queued work stays queued and dies with the
35
+ // process. Never cleared; a stopping queue is on its way out.
36
+ this.stopped = false;
37
+ }
38
+
39
+ /** Stop starting new tasks (graceful shutdown). In-flight tasks are unaffected. */
40
+ stop() {
41
+ this.stopped = true;
33
42
  }
34
43
 
35
44
  /**
@@ -75,8 +84,29 @@ export class WakeQueue {
75
84
  return [...this.pending.entries()].filter(([, q]) => q.length > 0).map(([k]) => k);
76
85
  }
77
86
 
87
+ /**
88
+ * Wait (bounded) for every in-flight task to finish — the graceful-shutdown drain
89
+ * (fix-daemon-exit-orphan-running-turn). Resolves `true` when the queue went idle
90
+ * (no active task) within `timeoutMs`, `false` on timeout — the caller exits
91
+ * anyway and leaves the rest to the server-side reconcile backstop. Pending
92
+ * (not-yet-started) tasks are NOT waited for: a shutting-down daemon stops
93
+ * starting new work, so only the in-flight subprocesses (and their exit reports)
94
+ * matter. Polling (50ms) keeps this zero-dep and independent of task internals.
95
+ * @param {number} timeoutMs
96
+ * @returns {Promise<boolean>}
97
+ */
98
+ async drain(timeoutMs) {
99
+ const deadline = Date.now() + Math.max(0, timeoutMs);
100
+ while (this.activeCount > 0) {
101
+ if (Date.now() >= deadline) return false;
102
+ await new Promise((r) => setTimeout(r, 50));
103
+ }
104
+ return true;
105
+ }
106
+
78
107
  /** Try to start as many ready keys as the concurrency cap allows. */
79
108
  #pump() {
109
+ if (this.stopped) return; // shutting down — start nothing new
80
110
  while (this.activeCount < this.maxConcurrency && this.readyKeys.length > 0) {
81
111
  const key = this.readyKeys.shift();
82
112
  if (this.running.has(key)) continue; // already running under another slot