@chorus-aidlc/chorus 0.10.0 → 0.11.1

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 (665) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +457 -340
  3. package/.next/standalone/.next/app-path-routes-manifest.json +39 -25
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +30 -30
  6. package/.next/standalone/.next/routes-manifest.json +25 -0
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +2 -2
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +2 -2
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -3
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +2 -2
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +2 -2
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +2 -2
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +3 -3
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -8
  44. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  48. package/.next/standalone/.next/server/app/_not-found.rsc +5 -5
  49. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
  52. package/.next/standalone/.next/server/app/admin/companies/new.rsc +5 -5
  53. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/admin/companies.html +1 -1
  55. package/.next/standalone/.next/server/app/admin/companies.rsc +5 -5
  56. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/admin.html +1 -1
  58. package/.next/standalone/.next/server/app/admin.rsc +5 -5
  59. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route.js +1 -1
  60. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/admin/companies/route.js +1 -1
  62. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/admin/login/route.js +1 -1
  64. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/admin/session/route.js +1 -1
  66. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/agent-connections/route.js +1 -0
  68. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -0
  69. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -0
  70. package/.next/standalone/.next/server/app/api/agents/[uuid]/route.js +1 -1
  71. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  73. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/agents/route.js +1 -1
  76. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route.js +1 -1
  78. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/api-keys/route.js +1 -1
  80. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/auth/callback/route.js +1 -1
  82. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/auth/check-default/route.js +1 -1
  84. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/auth/company-oidc/route.js +1 -1
  86. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
  88. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/auth/identify/route.js +1 -1
  90. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/auth/me/route.js +1 -1
  93. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/auth/refresh/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/auth/session/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
  99. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  102. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -0
  104. package/.next/standalone/.next/server/app/api/daemon/control/route.js.nft.json +1 -0
  105. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -0
  106. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -0
  107. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -0
  108. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -0
  109. package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -0
  110. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -0
  111. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -0
  112. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -0
  113. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -0
  114. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -0
  115. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -0
  116. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -0
  117. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -0
  118. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -0
  119. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -0
  120. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -0
  121. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -0
  122. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -0
  123. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -0
  124. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -0
  125. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -0
  126. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -0
  127. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -0
  128. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -0
  129. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -0
  130. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -0
  131. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -0
  132. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -0
  133. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -0
  134. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -0
  135. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -0
  136. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -0
  137. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -0
  138. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -0
  139. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  140. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -0
  142. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -0
  143. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -0
  144. package/.next/standalone/.next/server/app/api/events/notifications/route.js +6 -2
  145. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/events/route.js +7 -3
  148. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  149. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/health/route.js +1 -1
  151. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  160. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  162. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  163. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  165. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  166. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  168. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  169. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/mcp/route.js +5 -41
  171. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  172. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  174. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  175. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  177. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  178. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  183. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  184. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  186. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  187. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  189. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  192. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  193. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  195. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  196. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  197. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  198. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  200. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  201. package/.next/standalone/.next/server/app/api/project-groups/route.js +1 -1
  202. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  203. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.js +1 -1
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  205. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  206. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  207. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  231. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  232. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  233. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  234. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  235. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  237. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  238. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  239. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  241. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  242. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  243. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  244. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  245. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  246. package/.next/standalone/.next/server/app/api/search/route.js +1 -1
  247. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  249. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  250. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  251. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  252. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  253. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  254. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  255. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  256. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  258. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  259. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  260. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  261. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  262. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  263. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  264. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  265. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  266. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  267. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  268. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  269. package/.next/standalone/.next/server/app/index.html +1 -1
  270. package/.next/standalone/.next/server/app/index.rsc +5 -5
  271. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  272. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  273. package/.next/standalone/.next/server/app/login/admin.rsc +5 -5
  274. package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
  275. package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +1 -1
  276. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  277. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  278. package/.next/standalone/.next/server/app/login/callback.rsc +5 -5
  279. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  280. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  281. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  282. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +5 -5
  283. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  284. package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
  285. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +5 -5
  286. package/.next/standalone/.next/server/app/login.html +1 -1
  287. package/.next/standalone/.next/server/app/login.rsc +5 -5
  288. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  289. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  290. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  291. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  292. package/.next/standalone/.next/server/app/onboarding.rsc +6 -6
  293. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  294. package/.next/standalone/.next/server/app/projects.html +1 -1
  295. package/.next/standalone/.next/server/app/projects.rsc +7 -7
  296. package/.next/standalone/.next/server/app/settings.html +1 -1
  297. package/.next/standalone/.next/server/app/settings.rsc +7 -7
  298. package/.next/standalone/.next/server/app-paths-manifest.json +39 -25
  299. package/.next/standalone/.next/server/chunks/1064.js +1 -0
  300. package/.next/standalone/.next/server/chunks/1596.js +13 -0
  301. package/.next/standalone/.next/server/chunks/2213.js +1 -0
  302. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  303. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  304. package/.next/standalone/.next/server/chunks/3219.js +2 -0
  305. package/.next/standalone/.next/server/chunks/3371.js +1 -0
  306. package/.next/standalone/.next/server/chunks/3419.js +1 -0
  307. package/.next/standalone/.next/server/chunks/369.js +1 -0
  308. package/.next/standalone/.next/server/chunks/4638.js +1 -0
  309. package/.next/standalone/.next/server/chunks/4711.js +530 -0
  310. package/.next/standalone/.next/server/chunks/5039.js +1 -0
  311. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  312. package/.next/standalone/.next/server/chunks/{4913.js → 5631.js} +1 -1
  313. package/.next/standalone/.next/server/chunks/6044.js +1 -1
  314. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  315. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  316. package/.next/standalone/.next/server/chunks/6461.js +1 -0
  317. package/.next/standalone/.next/server/chunks/6712.js +1 -0
  318. package/.next/standalone/.next/server/chunks/7002.js +1 -1
  319. package/.next/standalone/.next/server/chunks/7063.js +1 -1
  320. package/.next/standalone/.next/server/chunks/7258.js +37 -0
  321. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  322. package/.next/standalone/.next/server/chunks/7578.js +2 -2
  323. package/.next/standalone/.next/server/chunks/7867.js +1 -0
  324. package/.next/standalone/.next/server/chunks/7897.js +1 -0
  325. package/.next/standalone/.next/server/chunks/8012.js +1 -0
  326. package/.next/standalone/.next/server/chunks/8245.js +31 -0
  327. package/.next/standalone/.next/server/chunks/8322.js +1 -1
  328. package/.next/standalone/.next/server/chunks/9015.js +1 -1
  329. package/.next/standalone/.next/server/chunks/920.js +1 -1
  330. package/.next/standalone/.next/server/chunks/937.js +16 -2
  331. package/.next/standalone/.next/server/chunks/9629.js +1 -0
  332. package/.next/standalone/.next/server/chunks/9725.js +1 -0
  333. package/.next/standalone/.next/server/instrumentation.js +1 -1
  334. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  335. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  336. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  337. package/.next/standalone/.next/server/next-font-manifest.json +1 -1
  338. package/.next/standalone/.next/server/pages/404.html +1 -1
  339. package/.next/standalone/.next/server/pages/500.html +1 -1
  340. package/.next/standalone/.next/server/pages-manifest.json +1 -1
  341. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  342. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  343. package/.next/standalone/.next/server/src/middleware.js +1 -1
  344. package/.next/standalone/.next/static/GQvpOux3M9CaxkMjL9GAI/_buildManifest.js +1 -0
  345. package/.next/standalone/.next/static/chunks/1217-323cc20b73ebfde9.js +1 -0
  346. package/.next/standalone/.next/static/chunks/{11207-8f4b154804f5a66f.js → 15183-5734d279b26e9414.js} +2 -2
  347. package/.next/standalone/.next/static/chunks/1879-7a8b283283218df2.js +1 -0
  348. package/.next/standalone/.next/static/chunks/19276-50b367d7b93d5f34.js +1 -0
  349. package/.next/standalone/.next/static/chunks/23466-e1176a6d814f4897.js +1 -0
  350. package/.next/standalone/.next/static/chunks/38040-a8687f86dd8e9d67.js +1 -0
  351. package/.next/standalone/.next/static/chunks/4860.8bdb37c964f92e48.js +1 -0
  352. package/.next/standalone/.next/static/chunks/58245-b2ea112ace9624d2.js +1 -0
  353. package/.next/standalone/.next/static/chunks/59296-783831c43aa0162e.js +1 -0
  354. package/.next/standalone/.next/static/chunks/60648-36ccbee4ce232d52.js +1 -0
  355. package/.next/standalone/.next/static/chunks/60694-68232120903209df.js +1 -0
  356. package/.next/standalone/.next/static/chunks/64648-ece4e2a59672cf63.js +1 -0
  357. package/.next/standalone/.next/static/chunks/{94655-1c75e0590a66215e.js → 66969-12f0b22c51f5a410.js} +1 -1
  358. package/.next/standalone/.next/static/chunks/70536-b8bf71098ae11f07.js +1 -0
  359. package/.next/standalone/.next/static/chunks/71350-88c2649fc693c1e8.js +1 -0
  360. package/.next/standalone/.next/static/chunks/78389-b32edc6bd5c570a9.js +1 -0
  361. package/.next/standalone/.next/static/chunks/78584-eb2fa8cf2f266329.js +1 -0
  362. package/.next/standalone/.next/static/chunks/78917-150ed14a99844aab.js +1 -0
  363. package/.next/standalone/.next/static/chunks/8574-b9739eb8d054c793.js +1 -0
  364. package/.next/standalone/.next/static/chunks/99373.12370329b9ab6beb.js +1 -0
  365. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-0a28456fea4ce95a.js +1 -0
  366. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-a79969c5c9aadacd.js +1 -0
  367. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-4bc556c2fc8f3d24.js +1 -0
  368. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-a28f0eaa6f4ac94a.js +1 -0
  369. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-ef82b871895245ea.js +1 -0
  370. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-2c9bcbd11ddb8661.js +1 -0
  371. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-630b168598513ce8.js +1 -0
  372. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-99639479cc98965f.js +1 -0
  373. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-335f2450e44a0fba.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-4a191d69b2b6e880.js +1 -0
  375. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-0faebb478be4c85d.js +1 -0
  376. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-f198303c176c6e02.js → page-583e58d4d689d38b.js} +1 -1
  377. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2e8fcb72687100df.js +1 -0
  378. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  379. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-4bc556c2fc8f3d24.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-4bc556c2fc8f3d24.js +1 -0
  381. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-4bc556c2fc8f3d24.js +1 -0
  382. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-4bc556c2fc8f3d24.js +1 -0
  383. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-4bc556c2fc8f3d24.js +1 -0
  385. package/.next/standalone/.next/static/chunks/app/api/agents/route-4bc556c2fc8f3d24.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-4bc556c2fc8f3d24.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-4bc556c2fc8f3d24.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-4bc556c2fc8f3d24.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-4bc556c2fc8f3d24.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-4bc556c2fc8f3d24.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-4bc556c2fc8f3d24.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-4bc556c2fc8f3d24.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-4bc556c2fc8f3d24.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-4bc556c2fc8f3d24.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-4bc556c2fc8f3d24.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-4bc556c2fc8f3d24.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/comments/route-4bc556c2fc8f3d24.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-4bc556c2fc8f3d24.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-4bc556c2fc8f3d24.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-4bc556c2fc8f3d24.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-4bc556c2fc8f3d24.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-4bc556c2fc8f3d24.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-4bc556c2fc8f3d24.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-4bc556c2fc8f3d24.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-4bc556c2fc8f3d24.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-4bc556c2fc8f3d24.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-4bc556c2fc8f3d24.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-4bc556c2fc8f3d24.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-4bc556c2fc8f3d24.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-4bc556c2fc8f3d24.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-4bc556c2fc8f3d24.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/events/route-4bc556c2fc8f3d24.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/health/route-4bc556c2fc8f3d24.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-4bc556c2fc8f3d24.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-4bc556c2fc8f3d24.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-4bc556c2fc8f3d24.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-4bc556c2fc8f3d24.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-4bc556c2fc8f3d24.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/mcp/route-4bc556c2fc8f3d24.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-4bc556c2fc8f3d24.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-4bc556c2fc8f3d24.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-4bc556c2fc8f3d24.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-4bc556c2fc8f3d24.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-4bc556c2fc8f3d24.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-4bc556c2fc8f3d24.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/notifications/route-4bc556c2fc8f3d24.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-4bc556c2fc8f3d24.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-4bc556c2fc8f3d24.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-4bc556c2fc8f3d24.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-4bc556c2fc8f3d24.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-4bc556c2fc8f3d24.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-4bc556c2fc8f3d24.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-4bc556c2fc8f3d24.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-4bc556c2fc8f3d24.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-4bc556c2fc8f3d24.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-4bc556c2fc8f3d24.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-4bc556c2fc8f3d24.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-4bc556c2fc8f3d24.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-4bc556c2fc8f3d24.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-4bc556c2fc8f3d24.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-4bc556c2fc8f3d24.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/projects/route-4bc556c2fc8f3d24.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-4bc556c2fc8f3d24.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-4bc556c2fc8f3d24.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-4bc556c2fc8f3d24.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-4bc556c2fc8f3d24.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/search/route-4bc556c2fc8f3d24.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-4bc556c2fc8f3d24.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-4bc556c2fc8f3d24.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-4bc556c2fc8f3d24.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-4bc556c2fc8f3d24.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-4bc556c2fc8f3d24.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-4bc556c2fc8f3d24.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/layout-9963339572e2e64e.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/onboarding/page-e9a69a0c537c704f.js +1 -0
  463. package/.next/standalone/.next/static/chunks/{webpack-5bb5740df10ed622.js → webpack-039590181c63871d.js} +1 -1
  464. package/.next/standalone/.next/static/css/1d9aaac01758b297.css +1 -0
  465. package/.next/standalone/.next/static/css/{84edd78de243cde6.css → b496025c9cd768cc.css} +1 -1
  466. package/.next/standalone/.next/static/media/013b72fa676f92e0-s.woff2 +0 -0
  467. package/.next/standalone/.next/static/media/2b5b02fc7e511755-s.woff2 +0 -0
  468. package/.next/standalone/.next/static/media/65f03d54ccadf4a8-s.woff2 +0 -0
  469. package/.next/standalone/.next/static/media/7d4881bb7e1bf84d-s.p.woff2 +0 -0
  470. package/.next/standalone/.next/static/media/b9408752a0c24fb9-s.woff2 +0 -0
  471. package/.next/standalone/.next/static/media/e038a29029a234f2-s.woff2 +0 -0
  472. package/.next/standalone/package.json +3 -1
  473. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +13 -1
  474. package/.next/standalone/public/chorus-plugin/agents/code-reviewer.md +167 -0
  475. package/.next/standalone/public/chorus-plugin/bin/on-post-verify-task.sh +97 -17
  476. package/.next/standalone/public/chorus-plugin/bin/tests/test-on-post-verify-task.sh +191 -1
  477. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  478. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +7 -4
  479. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +3 -1
  480. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +2 -1
  481. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  482. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  483. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  484. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +12 -3
  485. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +40 -1
  486. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  487. package/.next/standalone/public/skill/chorus/SKILL.md +16 -11
  488. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +225 -0
  489. package/.next/standalone/public/skill/develop-chorus/SKILL.md +3 -1
  490. package/.next/standalone/public/skill/idea-chorus/SKILL.md +2 -1
  491. package/.next/standalone/public/skill/package.json +3 -1
  492. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
  493. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  494. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  495. package/.next/standalone/public/skill/review-chorus/SKILL.md +12 -1
  496. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  497. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +35 -1
  498. package/README.md +29 -0
  499. package/README.zh.md +29 -0
  500. package/chorus.mjs +120 -16
  501. package/cli/backfill.mjs +190 -0
  502. package/cli/chorus-client.mjs +154 -0
  503. package/cli/claude-spawner.mjs +415 -0
  504. package/cli/client-args.mjs +146 -0
  505. package/cli/control-handler.mjs +180 -0
  506. package/cli/credentials.mjs +155 -0
  507. package/cli/daemon-agent.mjs +38 -0
  508. package/cli/daemon-banner.mjs +80 -0
  509. package/cli/daemon-config.mjs +84 -0
  510. package/cli/daemon-lifecycle.mjs +191 -0
  511. package/cli/daemon-permission-mode.mjs +68 -0
  512. package/cli/daemon-rest-client.mjs +272 -0
  513. package/cli/daemon.mjs +572 -0
  514. package/cli/event-router.mjs +248 -0
  515. package/cli/interrupt-reporter.mjs +87 -0
  516. package/cli/lineage.mjs +155 -0
  517. package/cli/login.mjs +151 -0
  518. package/cli/mcp-config.mjs +58 -0
  519. package/cli/process-killer.mjs +205 -0
  520. package/cli/prompts.mjs +273 -0
  521. package/cli/sse-listener.mjs +258 -0
  522. package/cli/turn-reporter.mjs +75 -0
  523. package/cli/upload-hooks.mjs +400 -0
  524. package/cli/wake-queue.mjs +121 -0
  525. package/cli/waker.mjs +475 -0
  526. package/package.json +3 -1
  527. package/prisma/migrations/20260615082309_add_daemon_connection/migration.sql +37 -0
  528. package/prisma/migrations/20260616152622_add_daemon_task_execution/migration.sql +28 -0
  529. package/prisma/migrations/20260617013334_generalize_daemon_execution_to_any_resource/migration.sql +38 -0
  530. package/prisma/migrations/20260618022828_add_daemon_execution_interrupted/migration.sql +2 -0
  531. package/prisma/migrations/20260619055322_daemon_session_conversation/migration.sql +77 -0
  532. package/prisma/schema.prisma +366 -188
  533. package/.next/standalone/.next/server/chunks/1059.js +0 -1
  534. package/.next/standalone/.next/server/chunks/1165.js +0 -1
  535. package/.next/standalone/.next/server/chunks/1615.js +0 -31
  536. package/.next/standalone/.next/server/chunks/162.js +0 -16
  537. package/.next/standalone/.next/server/chunks/179.js +0 -158
  538. package/.next/standalone/.next/server/chunks/1871.js +0 -1
  539. package/.next/standalone/.next/server/chunks/2909.js +0 -98
  540. package/.next/standalone/.next/server/chunks/324.js +0 -1
  541. package/.next/standalone/.next/server/chunks/3555.js +0 -1
  542. package/.next/standalone/.next/server/chunks/4090.js +0 -13
  543. package/.next/standalone/.next/server/chunks/4343.js +0 -1
  544. package/.next/standalone/.next/server/chunks/4879.js +0 -1
  545. package/.next/standalone/.next/server/chunks/5541.js +0 -1
  546. package/.next/standalone/.next/server/chunks/5561.js +0 -7
  547. package/.next/standalone/.next/server/chunks/6643.js +0 -1
  548. package/.next/standalone/.next/server/chunks/6767.js +0 -1
  549. package/.next/standalone/.next/server/chunks/7228.js +0 -2
  550. package/.next/standalone/.next/server/chunks/7462.js +0 -255
  551. package/.next/standalone/.next/server/chunks/7859.js +0 -1
  552. package/.next/standalone/.next/server/chunks/8277.js +0 -1
  553. package/.next/standalone/.next/server/chunks/8637.js +0 -1
  554. package/.next/standalone/.next/server/chunks/896.js +0 -1
  555. package/.next/standalone/.next/server/chunks/9269.js +0 -1
  556. package/.next/standalone/.next/server/chunks/9615.js +0 -1
  557. package/.next/standalone/.next/static/AKJHlhCKd44_-khht8nN0/_buildManifest.js +0 -1
  558. package/.next/standalone/.next/static/chunks/20051-c242544dafd3a690.js +0 -1
  559. package/.next/standalone/.next/static/chunks/21932-bce5ba937d1603e1.js +0 -1
  560. package/.next/standalone/.next/static/chunks/23095-5bf481236249fdd8.js +0 -1
  561. package/.next/standalone/.next/static/chunks/23466-842c126491b753bc.js +0 -1
  562. package/.next/standalone/.next/static/chunks/45436-c5427023f3f386a1.js +0 -1
  563. package/.next/standalone/.next/static/chunks/4860.e071c0b9e32bd75f.js +0 -1
  564. package/.next/standalone/.next/static/chunks/49852-5337f139a2f87c46.js +0 -1
  565. package/.next/standalone/.next/static/chunks/52206-7c1b0c695c8035eb.js +0 -1
  566. package/.next/standalone/.next/static/chunks/55469-ed5ff019ff71ef59.js +0 -1
  567. package/.next/standalone/.next/static/chunks/59296-50e66102d44d9677.js +0 -1
  568. package/.next/standalone/.next/static/chunks/60524-9811b38c62fed16e.js +0 -1
  569. package/.next/standalone/.next/static/chunks/68855-5c15991e7cf8dc8a.js +0 -1
  570. package/.next/standalone/.next/static/chunks/70093-0ff6fd59445b5cb9.js +0 -1
  571. package/.next/standalone/.next/static/chunks/74030-3a6a6b75e47f5b96.js +0 -1
  572. package/.next/standalone/.next/static/chunks/78917-ff0fda86a96cfa60.js +0 -1
  573. package/.next/standalone/.next/static/chunks/95627-8d9f6d2d88f7a641.js +0 -1
  574. package/.next/standalone/.next/static/chunks/99373.4c336ea9ad07311e.js +0 -1
  575. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-5915ccd1a77ebcf8.js +0 -1
  576. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-94d102d945410b55.js +0 -1
  577. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-cd9411c54c8f5b35.js +0 -1
  578. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-56c45b910f914895.js +0 -1
  579. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-2e000a7010d1e9ea.js +0 -1
  580. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-75e42d130404ca2b.js +0 -1
  581. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-d7747749ae6192d8.js +0 -1
  582. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-26488809d26e1daa.js +0 -1
  583. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-8f91ed174c14d5f0.js +0 -1
  584. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-fcc9baa42e6de4d4.js +0 -1
  585. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-5233748464280e9d.js +0 -1
  586. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-ab87cbb18d0ee538.js +0 -1
  587. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  588. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-cd9411c54c8f5b35.js +0 -1
  589. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-cd9411c54c8f5b35.js +0 -1
  590. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-cd9411c54c8f5b35.js +0 -1
  591. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  592. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-cd9411c54c8f5b35.js +0 -1
  593. package/.next/standalone/.next/static/chunks/app/api/agents/route-cd9411c54c8f5b35.js +0 -1
  594. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  595. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-cd9411c54c8f5b35.js +0 -1
  596. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-cd9411c54c8f5b35.js +0 -1
  597. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-cd9411c54c8f5b35.js +0 -1
  598. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-cd9411c54c8f5b35.js +0 -1
  599. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-cd9411c54c8f5b35.js +0 -1
  600. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-cd9411c54c8f5b35.js +0 -1
  601. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-cd9411c54c8f5b35.js +0 -1
  602. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-cd9411c54c8f5b35.js +0 -1
  603. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-cd9411c54c8f5b35.js +0 -1
  604. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-cd9411c54c8f5b35.js +0 -1
  605. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-cd9411c54c8f5b35.js +0 -1
  606. package/.next/standalone/.next/static/chunks/app/api/comments/route-cd9411c54c8f5b35.js +0 -1
  607. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  608. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-cd9411c54c8f5b35.js +0 -1
  609. package/.next/standalone/.next/static/chunks/app/api/events/route-cd9411c54c8f5b35.js +0 -1
  610. package/.next/standalone/.next/static/chunks/app/api/health/route-cd9411c54c8f5b35.js +0 -1
  611. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-cd9411c54c8f5b35.js +0 -1
  612. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-cd9411c54c8f5b35.js +0 -1
  613. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-cd9411c54c8f5b35.js +0 -1
  614. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-cd9411c54c8f5b35.js +0 -1
  615. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-cd9411c54c8f5b35.js +0 -1
  616. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  617. package/.next/standalone/.next/static/chunks/app/api/mcp/route-cd9411c54c8f5b35.js +0 -1
  618. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-cd9411c54c8f5b35.js +0 -1
  619. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-cd9411c54c8f5b35.js +0 -1
  620. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-cd9411c54c8f5b35.js +0 -1
  621. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-cd9411c54c8f5b35.js +0 -1
  622. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-cd9411c54c8f5b35.js +0 -1
  623. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-cd9411c54c8f5b35.js +0 -1
  624. package/.next/standalone/.next/static/chunks/app/api/notifications/route-cd9411c54c8f5b35.js +0 -1
  625. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-cd9411c54c8f5b35.js +0 -1
  626. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-cd9411c54c8f5b35.js +0 -1
  627. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  628. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-cd9411c54c8f5b35.js +0 -1
  629. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-cd9411c54c8f5b35.js +0 -1
  630. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-cd9411c54c8f5b35.js +0 -1
  631. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-cd9411c54c8f5b35.js +0 -1
  632. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-cd9411c54c8f5b35.js +0 -1
  633. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-cd9411c54c8f5b35.js +0 -1
  634. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-cd9411c54c8f5b35.js +0 -1
  635. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-cd9411c54c8f5b35.js +0 -1
  636. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-cd9411c54c8f5b35.js +0 -1
  637. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-cd9411c54c8f5b35.js +0 -1
  638. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  639. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-cd9411c54c8f5b35.js +0 -1
  640. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-cd9411c54c8f5b35.js +0 -1
  641. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-cd9411c54c8f5b35.js +0 -1
  642. package/.next/standalone/.next/static/chunks/app/api/projects/route-cd9411c54c8f5b35.js +0 -1
  643. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-cd9411c54c8f5b35.js +0 -1
  644. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-cd9411c54c8f5b35.js +0 -1
  645. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-cd9411c54c8f5b35.js +0 -1
  646. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-cd9411c54c8f5b35.js +0 -1
  647. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  648. package/.next/standalone/.next/static/chunks/app/api/search/route-cd9411c54c8f5b35.js +0 -1
  649. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  650. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-cd9411c54c8f5b35.js +0 -1
  651. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-cd9411c54c8f5b35.js +0 -1
  652. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-cd9411c54c8f5b35.js +0 -1
  653. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-cd9411c54c8f5b35.js +0 -1
  654. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-cd9411c54c8f5b35.js +0 -1
  655. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-cd9411c54c8f5b35.js +0 -1
  656. package/.next/standalone/.next/static/chunks/app/layout-482dee7dace72c88.js +0 -1
  657. package/.next/standalone/.next/static/chunks/app/onboarding/page-d9dbd817391b462b.js +0 -1
  658. package/.next/standalone/.next/static/css/4279f38594ac772a.css +0 -1
  659. package/.next/standalone/.next/static/media/0f1bdadaf30e2d5f-s.woff2 +0 -0
  660. package/.next/standalone/.next/static/media/2c34d62a75506231-s.woff2 +0 -0
  661. package/.next/standalone/.next/static/media/601f5c280d60caca-s.woff2 +0 -0
  662. package/.next/standalone/.next/static/media/a115172161b307bb-s.woff2 +0 -0
  663. package/.next/standalone/.next/static/media/d100b2a099e34044-s.woff2 +0 -0
  664. package/.next/standalone/.next/static/media/f5271587012faf78-s.p.woff2 +0 -0
  665. /package/.next/standalone/.next/static/{AKJHlhCKd44_-khht8nN0 → GQvpOux3M9CaxkMjL9GAI}/_ssgManifest.js +0 -0
package/cli/waker.mjs ADDED
@@ -0,0 +1,475 @@
1
+ // cli/waker.mjs
2
+ // Executes a single wake: resolve the event to its idea attribution, derive the
3
+ // deterministic session id (= the DIRECT idea uuid), build the --mcp-config, spawn
4
+ // headless Claude (new vs resume decided by probing the on-disk transcript), and
5
+ // fire the (no-op) upload hooks. The WakeQueue schedules these per DIRECT idea so
6
+ // two wakes for the same idea never run concurrently against the same session.
7
+ //
8
+ // TWO-ID CONTRACT (do not conflate): the session is anchored on the DIRECT idea
9
+ // (so a human can `claude --resume <idea-uuid>`), while the execution snapshot
10
+ // reports the ROOT idea (for the observability UI). Both ids come from one lineage
11
+ // resolution and are threaded SEPARATELY — the root reported in the snapshot is
12
+ // the server-resolved root, NEVER re-derived from the (direct-idea) serialization
13
+ // key.
14
+ //
15
+ // Module contract (design.md): Waker.wake(notification, key, attribution) →
16
+ // Promise<void>. A failure is logged and swallowed — it must never crash the
17
+ // daemon (no-silent-errors: visible log, no throw).
18
+
19
+ import { buildPrompt } from "./prompts.mjs";
20
+ import { writeMcpConfig } from "./mcp-config.mjs";
21
+ import { isNewSession } from "./claude-spawner.mjs";
22
+
23
+ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
24
+
25
+ export class Waker {
26
+ /**
27
+ * @param {{
28
+ * creds: { url: string, apiKey: string },
29
+ * lineage: { resolve: (event: any) => Promise<{ rootIdeaUuid: string|null, directIdeaUuid: string|null }> },
30
+ * spawner: { wake: (params: any) => Promise<{ sessionId: string, exitCode: number|null, isNew: boolean }> },
31
+ * cwd?: string, Spawn working directory; used BOTH for the transcript probe and the spawn (default process.cwd()).
32
+ * hooks?: import("./upload-hooks.mjs").UploadHooks,
33
+ * logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
34
+ * writeMcpConfigFn?: typeof writeMcpConfig,
35
+ * isNewSessionFn?: typeof isNewSession, Injectable for tests (disk probe).
36
+ * reportInterrupt?: (entityType: string, entityUuid: string, reason: "user"|"crash") => Promise<void>,
37
+ * Injectable interrupt reporter (子3). Called when a wake's subprocess exits in
38
+ * an interrupted (user) or crashed (non-zero, no interrupt flag) state. Defaults
39
+ * to a no-op that logs — the daemon wires the REST reporter (interrupt-reporter.mjs).
40
+ * advanceTurn?: (params: { sessionId: string, status: "running"|"ended", entityType?: string|null, entityUuid?: string|null }) => Promise<void>,
41
+ * Injectable turn-lifecycle reporter (子1 — daemon-session-conversation). Called
42
+ * on spawn (→ running) and on subprocess exit (→ ended) to advance the server-side
43
+ * DaemonSessionTurn the notification chokepoint created (status `pending`). The
44
+ * server resolves the turn by the session business key (`sessionId`) and stamps
45
+ * the weak executionUuid link from entityType/entityUuid. Defaults to a no-op that
46
+ * logs — the daemon wires the REST reporter (turn-reporter.mjs).
47
+ * }} opts
48
+ */
49
+ constructor(opts) {
50
+ this.creds = opts.creds;
51
+ this.lineage = opts.lineage;
52
+ this.spawner = opts.spawner;
53
+ // Verbose per-wake logging (daemon-startup-output). Default: one compact
54
+ // line per lifecycle event (arrival / spawn new-vs-resume / completion).
55
+ // When true, additional detail is emitted alongside those lines.
56
+ this.verbose = opts.verbose ?? false;
57
+ // The daemon spawns in one fixed working directory; the transcript probe must
58
+ // use the SAME cwd as the spawn, or it would decide new-vs-resume against the
59
+ // wrong directory (claude scopes --resume to cwd).
60
+ this.cwd = opts.cwd ?? process.cwd();
61
+ this.hooks = opts.hooks;
62
+ this.logger = opts.logger ?? NOOP_LOGGER;
63
+ this.writeMcpConfigFn = opts.writeMcpConfigFn ?? writeMcpConfig;
64
+ this.isNewSessionFn = opts.isNewSessionFn ?? isNewSession;
65
+ // Interrupt reporter (子3): default no-op-with-log so a Waker built without one
66
+ // (existing tests) keeps working; the daemon injects the REST reporter.
67
+ this.reportInterrupt =
68
+ opts.reportInterrupt ??
69
+ (async (entityType, entityUuid, reason) => {
70
+ this.logger.info(
71
+ `[Chorus] (no reporter wired) would report ${entityType}:${entityUuid} interrupted (reason=${reason})`
72
+ );
73
+ });
74
+ // Turn-lifecycle reporter (子1): default no-op-with-log so a Waker built without one
75
+ // (existing tests) keeps working; the daemon injects the REST reporter
76
+ // (turn-reporter.mjs). Advances the server-side turn pending→running on spawn and
77
+ // running→ended on subprocess exit, identified by the session business key.
78
+ this.advanceTurn =
79
+ opts.advanceTurn ??
80
+ (async ({ sessionId, status }) => {
81
+ this.logger.info(
82
+ `[Chorus] (no turn reporter wired) would advance turn for session ${sessionId} → ${status}`
83
+ );
84
+ });
85
+ // Per-entity "interrupting" flags, set by the control handler the moment an
86
+ // authorized interrupt is verified for a running child (markInterrupting). The
87
+ // wake's exit path reads + clears it to decide reason=user vs reason=crash.
88
+ /** @type {Set<string>} */
89
+ this.interrupting = new Set();
90
+
91
+ // Per-resource execution registry — the source of truth for the execution
92
+ // snapshot uploaded to the server. Keyed by `${entityType}:${entityUuid}`
93
+ // (the wake-triggering notification's target resource), so a resource appears
94
+ // at most once regardless of how many notifications target it. EVERY wake is
95
+ // tracked — task, idea (@-mention / elaboration under an idea), proposal, and
96
+ // document — not only task dispatches, so the server/UI can show "this daemon
97
+ // is processing <resource>" for any wake. Each entry carries the rootIdeaUuid
98
+ // the waker ALREADY resolved (reused, never re-walked) plus the daemon-side
99
+ // status/startedAt.
100
+ // The entry also holds the live `child` ChildProcess while RUNNING (子3) so the
101
+ // control handler can target it for an interrupt. `child` is null while queued.
102
+ // buildExecutionSnapshot() maps ONLY the serializable fields and NEVER emits
103
+ // `child` — the handle stays daemon-local and never leaks onto the wire.
104
+ /** @type {Map<string, { entityType: string, entityUuid: string, rootIdeaUuid: string|null, status: "running"|"queued", startedAt: string|null, child: import("node:child_process").ChildProcess|null }>} */
105
+ this.executions = new Map();
106
+ }
107
+
108
+ /**
109
+ * Mark a running entity as INTERRUPTING (子3) — called by the control handler the
110
+ * moment an authorized interrupt is verified, BEFORE the killer signals the child.
111
+ * The wake's exit path reads this flag to report reason="user" (vs "crash"). Keyed
112
+ * the same as the execution registry so a control event and a wake agree on the
113
+ * entity. Idempotent; never throws.
114
+ * @param {string} entityType @param {string} entityUuid
115
+ */
116
+ markInterrupting(entityType, entityUuid) {
117
+ this.interrupting.add(this.#execKey(entityType, entityUuid));
118
+ }
119
+
120
+ /** Recognized wake-triggering resource kinds the server's DaemonExecution accepts. */
121
+ // `daemon_session` is the ad-hoc conversation's own execution entity (子3 follow-up):
122
+ // an ad-hoc human_instruction wake has no task/idea/proposal/document behind it, so
123
+ // its running/interrupted state is reported against the DaemonSession itself, keyed by
124
+ // the session BUSINESS id (`sessionId`) — which is ALSO the Claude `--resume` anchor for
125
+ // an ad-hoc session, so the execution entity, the per-session UI match key, and the
126
+ // resume anchor are one and the same value (no identity divergence).
127
+ static #EXECUTION_ENTITY_TYPES = new Set([
128
+ "task",
129
+ "idea",
130
+ "proposal",
131
+ "document",
132
+ "daemon_session",
133
+ ]);
134
+
135
+ /**
136
+ * Extract the resource an execution row keys on for this notification — its
137
+ * `{ entityType, entityUuid }` — or null when the notification has no reportable
138
+ * target (missing fields, or an entityType outside the recognized set). Every
139
+ * recognized wake (task/idea/proposal/document) is reported, not only tasks.
140
+ * @param {{ entityType?: string, entityUuid?: string }} notification
141
+ * @returns {{ entityType: string, entityUuid: string }|null}
142
+ */
143
+ #entityOf(notification) {
144
+ const { entityType, entityUuid } = notification ?? {};
145
+ if (
146
+ typeof entityType === "string" &&
147
+ typeof entityUuid === "string" &&
148
+ entityUuid.length > 0 &&
149
+ Waker.#EXECUTION_ENTITY_TYPES.has(entityType)
150
+ ) {
151
+ return { entityType, entityUuid };
152
+ }
153
+ return null;
154
+ }
155
+
156
+ /** Registry key for a resource. */
157
+ #execKey(entityType, entityUuid) {
158
+ return `${entityType}:${entityUuid}`;
159
+ }
160
+
161
+ /**
162
+ * Build the current execution snapshot for upload: one entry per tracked
163
+ * resource (running or queued), carrying entityType/entityUuid, the reused
164
+ * rootIdeaUuid, and the daemon-side status/startedAt. Returns a fresh array each
165
+ * call so the caller can't mutate internal state. Never throws.
166
+ * @returns {Array<{ entityType: string, entityUuid: string, rootIdeaUuid: string|null, status: "running"|"queued", startedAt: string|null }>}
167
+ */
168
+ buildExecutionSnapshot() {
169
+ return [...this.executions.values()].map((e) => ({
170
+ entityType: e.entityType,
171
+ entityUuid: e.entityUuid,
172
+ rootIdeaUuid: e.rootIdeaUuid,
173
+ status: e.status,
174
+ startedAt: e.startedAt,
175
+ }));
176
+ }
177
+
178
+ /**
179
+ * Record the wake's resource as QUEUED and emit a fresh snapshot. Called by the
180
+ * router at enqueue time (before the wake runs), so the server sees the resource
181
+ * waiting even while it sits behind a same-direct-idea wake. The rootIdeaUuid is
182
+ * the SERVER-RESOLVED root from `attribution` (NOT sliced from `key`, which now
183
+ * carries the direct idea) — the two-id contract. A notification with no
184
+ * reportable resource (missing fields, or an entityType outside the recognized
185
+ * task/idea/proposal/document set) is ignored. Never throws.
186
+ * @param {{ entityType?: string, entityUuid?: string }} notification
187
+ * @param {string} key The serialization key from keyFor (idea:<direct> | entity:…).
188
+ * @param {{ rootIdeaUuid?: string|null }} [attribution] Server-resolved root idea.
189
+ */
190
+ markQueued(notification, key, attribution) {
191
+ const entity = this.#entityOf(notification);
192
+ if (!entity) return;
193
+ const execKey = this.#execKey(entity.entityType, entity.entityUuid);
194
+ const rootIdeaUuid = attribution?.rootIdeaUuid ?? null;
195
+ const existing = this.executions.get(execKey);
196
+ // Don't downgrade a running resource to queued if a duplicate dispatch
197
+ // arrives while it's mid-wake; only (re)mark queued when not already running.
198
+ if (existing && existing.status === "running") return;
199
+ this.executions.set(execKey, {
200
+ entityType: entity.entityType,
201
+ entityUuid: entity.entityUuid,
202
+ rootIdeaUuid,
203
+ status: "queued",
204
+ startedAt: existing?.startedAt ?? null,
205
+ // Queued entries hold no live child yet — only the running entry does (子3).
206
+ child: null,
207
+ });
208
+ this.#emitExecutionChange();
209
+ }
210
+
211
+ /** Fire-and-forget snapshot upload. Never throws into the wake path. */
212
+ #emitExecutionChange() {
213
+ try {
214
+ this.hooks?.onExecutionChange?.();
215
+ } catch (err) {
216
+ this.logger.warn(`[Chorus] execution-change hook failed: ${err}`);
217
+ }
218
+ }
219
+
220
+ /**
221
+ * Resolve an event to its serialization key + idea attribution WITHOUT running
222
+ * the wake. Used by the router to enqueue under the right key and to pass the
223
+ * resolved root down to markQueued/wake (so the snapshot's root is never derived
224
+ * from the key). The key — and the Claude session anchor — is the DIRECT idea;
225
+ * falls back to a per-entity key when there's no direct idea (so unrelated
226
+ * entities still get their own serial lane). One lineage resolution (cached).
227
+ * @param {any} notification
228
+ * @returns {Promise<{ key: string, rootIdeaUuid: string|null, directIdeaUuid: string|null }>}
229
+ */
230
+ async keyFor(notification) {
231
+ const { rootIdeaUuid, directIdeaUuid } = await this.lineage.resolve(notification);
232
+ const key = directIdeaUuid
233
+ ? `idea:${directIdeaUuid}`
234
+ : `entity:${notification.entityType}:${notification.entityUuid}`;
235
+ return { key, rootIdeaUuid, directIdeaUuid };
236
+ }
237
+
238
+ /**
239
+ * Run one wake. Never throws.
240
+ * @param {import("./prompts.mjs").NotificationDetail} notification
241
+ * @param {string} key The serialization key (from keyFor) — anchored on the direct idea.
242
+ * @param {{ rootIdeaUuid?: string|null, directIdeaUuid?: string|null }} [attribution]
243
+ * Server-resolved ids from keyFor. `rootIdeaUuid` → execution snapshot;
244
+ * `directIdeaUuid` → the deterministic Claude session id (when the entity has
245
+ * an idea ancestor). When there is no direct idea, the session is anchored on
246
+ * the entity's own uuid instead (see below).
247
+ */
248
+ async wake(notification, key, attribution) {
249
+ let cfg;
250
+ const entity = this.#entityOf(notification);
251
+ const execKey = entity ? this.#execKey(entity.entityType, entity.entityUuid) : null;
252
+ // Both ids come from the resolved `attribution` (supplied by keyFor via the
253
+ // router) and are threaded SEPARATELY — NEVER sliced from `key`. The ROOT idea
254
+ // is reported in the snapshot; the DIRECT idea is the preferred session anchor.
255
+ const rootIdeaUuid = attribution?.rootIdeaUuid ?? null;
256
+ const directIdeaUuid = attribution?.directIdeaUuid ?? null;
257
+ // Per-wake lifecycle logging: stamp the start so completion can report a
258
+ // duration. `Date.now()` is fine here (runtime metric, not a resume seed).
259
+ const startMs = Date.now();
260
+ const target = entity ? `${entity.entityType}:${entity.entityUuid}` : key;
261
+ try {
262
+ const prompt = buildPrompt(notification);
263
+ if (!prompt) {
264
+ this.logger.info(`[Chorus] no wake prompt for action "${notification.action}" — skipping`);
265
+ return;
266
+ }
267
+
268
+ // Lifecycle line 1 — arrival: which action targets which idea/task/entity.
269
+ this.logger.info(`[Chorus] ▶ wake: ${notification.action} → ${target}`);
270
+
271
+ // Transition this resource to RUNNING with a start timestamp and emit a
272
+ // fresh snapshot, so the server/UI sees it leave the queue and begin
273
+ // executing. Report the server-resolved ROOT idea (not the direct-idea key).
274
+ // `child` starts null and is filled in by the spawner's onChild the moment the
275
+ // subprocess spawns (子3) — so the control handler can target it for interrupt.
276
+ if (entity && execKey) {
277
+ this.executions.set(execKey, {
278
+ entityType: entity.entityType,
279
+ entityUuid: entity.entityUuid,
280
+ rootIdeaUuid,
281
+ status: "running",
282
+ startedAt: new Date().toISOString(),
283
+ child: null,
284
+ });
285
+ this.#emitExecutionChange();
286
+ }
287
+
288
+ // Session anchor: the DIRECT idea uuid when the entity has an idea ancestor;
289
+ // otherwise the entity's OWN uuid (quick task, standalone doc, non-idea
290
+ // proposal). Both are deterministic Chorus uuids, so the session stays
291
+ // human-resumable (`claude --resume <uuid>`) and same-entity wakes continue
292
+ // the same session — and we never drop a wake just because there's no idea
293
+ // (the daemon's headline `task_assigned` for a quick task must still spawn).
294
+ // Decide new-vs-resume by probing the on-disk transcript in the SAME cwd we
295
+ // spawn in. The spawner re-validates the id is a lowercase UUID before
296
+ // spawning, so a garbage id surfaces visibly rather than misanchoring.
297
+ const sessionId = directIdeaUuid ?? notification.entityUuid ?? null;
298
+ const isNew = sessionId ? this.isNewSessionFn(sessionId, this.cwd) : true;
299
+
300
+ // Lifecycle line 2 — spawn: new vs resume, plus the (otherwise hidden)
301
+ // `claude --resume <id>` takeover hint so an operator can attach to the
302
+ // session from this daemon's working directory.
303
+ this.logger.info(
304
+ `[Chorus] ${isNew ? "spawning new" : "resuming"} session ${sessionId ?? "(none)"}` +
305
+ (sessionId ? ` — take over with: claude --resume ${sessionId}` : "")
306
+ );
307
+ if (this.verbose) {
308
+ this.logger.info(`[Chorus] cwd=${this.cwd} action=${notification.action} root=${rootIdeaUuid ?? "(none)"}`);
309
+ }
310
+
311
+ cfg = this.writeMcpConfigFn(this.creds);
312
+
313
+ await this.hooks?.onSessionStart?.({ rootIdeaKey: key, sessionId: sessionId ?? "", isNew });
314
+
315
+ // Turn lifecycle (子1): the server created a `pending` turn for this wake at the
316
+ // notification chokepoint, keyed on the same session business key the daemon
317
+ // anchors the Claude session on (`sessionId` = directIdeaUuid, or the entity uuid
318
+ // for an ad-hoc session). Advance it pending→running the moment the subprocess
319
+ // spawns (in onChild — guaranteed to fire only on a successful spawn), and
320
+ // running→ended after it exits. `turnAdvancedToRunning` gates the ended report so
321
+ // a spawn that never started (onChild never fired) does not attempt an illegal
322
+ // pending→ended transition. There is no separate turn registry — the turn is
323
+ // identified server-side by `sessionId`, which the waker already has here.
324
+ let turnAdvancedToRunning = false;
325
+
326
+ // Track the session id the stream reports so the transcript hook can use
327
+ // it even before spawner.wake() returns. (Do NOT reference the awaited
328
+ // `result` inside onMessage — it's in the temporal dead zone there.)
329
+ let observedSessionId = sessionId ?? "";
330
+ const result = await this.spawner.wake({
331
+ prompt,
332
+ sessionId,
333
+ isNew,
334
+ cwd: this.cwd,
335
+ mcpConfigPath: cfg.path,
336
+ // Capture the live child into the running execution entry the instant it
337
+ // spawns (子3) so the control handler can interrupt it mid-wake. Guarded so
338
+ // a re-keyed/dropped entry never throws here. ALSO advance the server turn
339
+ // pending→running here (子1) — same hook keying, no parallel registry — since
340
+ // this is the precise moment the subprocess actually started.
341
+ onChild: (child) => {
342
+ const entry = execKey ? this.executions.get(execKey) : null;
343
+ if (entry && entry.status === "running") entry.child = child;
344
+ if (sessionId) {
345
+ turnAdvancedToRunning = true;
346
+ // Fire-and-forget; #advanceTurn swallows + logs its own failures so a
347
+ // turn-report error never crashes the spawn callback (no-silent-errors).
348
+ this.#advanceTurn(sessionId, "running", entity).catch(() => {});
349
+ }
350
+ },
351
+ onMessage: (message) => {
352
+ if (message && typeof message.session_id === "string") observedSessionId = message.session_id;
353
+ // Fire-and-forget transcript hook (子1): keeps only user/assistant text and
354
+ // batch-POSTs to /api/daemon/transcript for the current turn. Warn-not-throw
355
+ // inside the hook; the trailing .catch is belt-and-braces so a rejected hook
356
+ // promise can never surface as an unhandled rejection in the wake path.
357
+ this.hooks
358
+ ?.onTranscriptMessage?.({ rootIdeaKey: key, sessionId: observedSessionId, message })
359
+ .catch(() => {});
360
+ },
361
+ });
362
+
363
+ // No session map to persist anymore — the id is deterministic (= direct idea
364
+ // uuid) and the next wake re-derives new-vs-resume from disk. Just log a
365
+ // non-zero exit visibly (no-silent-errors).
366
+ if (result && result.exitCode !== 0) {
367
+ this.logger.warn(
368
+ `[Chorus] wake for ${key} exited non-zero (${result.exitCode})`
369
+ );
370
+ }
371
+
372
+ // Turn lifecycle (子1): the subprocess has exited — advance the server turn
373
+ // running→ended, regardless of exit code (a turn ends whether the run was clean,
374
+ // crashed, or interrupted). Only when it actually reached `running` (a never-
375
+ // spawned wake left the turn `pending`; a pending→ended skip is rejected server-
376
+ // side as invalid_transition). Swallow-safe; never throws into the wake path.
377
+ if (sessionId && turnAdvancedToRunning) {
378
+ await this.#advanceTurn(sessionId, "ended", entity);
379
+ }
380
+
381
+ // Interrupt-vs-crash reporting (子3, Tech Design "Interrupt vs crash
382
+ // reporting"). Decide from the per-entity "interrupting" flag the control
383
+ // handler may have set while the subprocess was running:
384
+ // • interrupting flag set → interrupted(reason="user")
385
+ // • no flag AND non-zero/null exit → interrupted(reason="crash")
386
+ // • clean exit (code 0) → nothing (unchanged)
387
+ // The interrupted state is entity-generic — it lives on the DaemonExecution
388
+ // row (keyed connection+entity), so the reporter records it for ANY recognized
389
+ // wake resource (task/idea/proposal/document), not only tasks.
390
+ if (entity && execKey) {
391
+ const wasInterrupting = this.interrupting.has(execKey);
392
+ const cleanExit = result && result.exitCode === 0;
393
+ if (wasInterrupting) {
394
+ await this.#report(entity, "user");
395
+ } else if (!cleanExit) {
396
+ // No interrupt requested but the subprocess did not exit cleanly (non-zero
397
+ // code, or null from a spawn/transport failure) → treat as a crash.
398
+ await this.#report(entity, "crash");
399
+ }
400
+ }
401
+
402
+ // Lifecycle line 3 — completion: duration + exit code, one compact line.
403
+ const durationMs = Date.now() - startMs;
404
+ this.logger.info(
405
+ `[Chorus] ✓ wake done: ${target} (exit=${result?.exitCode ?? "?"}, ${durationMs}ms)`
406
+ );
407
+ if (this.verbose) {
408
+ this.logger.info(
409
+ `[Chorus] action=${notification.action} session=${result?.sessionId} key=${key}`
410
+ );
411
+ }
412
+ } catch (err) {
413
+ this.logger.warn(`[Chorus] wake failed for ${key}: ${err}`);
414
+ } finally {
415
+ // Wake finished (cleanly or not): the resource leaves the active set. Drop
416
+ // it and emit a fresh snapshot so the server ends its running/queued row.
417
+ // The server reconcile is snapshot-authoritative, so absence == ended. Also
418
+ // clear the per-entity interrupting flag so it can never leak into a later
419
+ // wake of the same entity.
420
+ if (execKey) {
421
+ this.interrupting.delete(execKey);
422
+ if (this.executions.delete(execKey)) {
423
+ this.#emitExecutionChange();
424
+ }
425
+ }
426
+ try {
427
+ cfg?.cleanup?.();
428
+ } catch {
429
+ // best-effort
430
+ }
431
+ }
432
+ }
433
+
434
+ /**
435
+ * Report an interrupted/crashed outcome via the injected reporter. Never throws
436
+ * into the wake path — a reporter failure is logged and swallowed (the reporter
437
+ * itself already swallows, this is belt-and-braces).
438
+ * @param {{ entityType: string, entityUuid: string }} entity
439
+ * @param {"user"|"crash"} reason
440
+ */
441
+ async #report(entity, reason) {
442
+ try {
443
+ await this.reportInterrupt(entity.entityType, entity.entityUuid, reason);
444
+ } catch (err) {
445
+ this.logger.warn(
446
+ `[Chorus] reportInterrupt failed for ${entity.entityType}:${entity.entityUuid} (${reason}): ${err}`
447
+ );
448
+ }
449
+ }
450
+
451
+ /**
452
+ * Advance the server-side DaemonSessionTurn for this wake (子1) via the injected
453
+ * reporter. Identified server-side by the session business key (`sessionId`); the
454
+ * optional `entity` ({ entityType, entityUuid }) lets the server stamp the weak
455
+ * executionUuid link from the live execution row. Never throws into the wake path —
456
+ * a reporter failure is logged and swallowed (the REST reporter already swallows;
457
+ * this is belt-and-braces, matching #report).
458
+ * @param {string} sessionId @param {"running"|"ended"} status
459
+ * @param {{ entityType: string, entityUuid: string }|null} entity
460
+ */
461
+ async #advanceTurn(sessionId, status, entity) {
462
+ try {
463
+ await this.advanceTurn({
464
+ sessionId,
465
+ status,
466
+ entityType: entity?.entityType ?? null,
467
+ entityUuid: entity?.entityUuid ?? null,
468
+ });
469
+ } catch (err) {
470
+ this.logger.warn(
471
+ `[Chorus] advanceTurn failed for session ${sessionId} → ${status}: ${err}`
472
+ );
473
+ }
474
+ }
475
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chorus-aidlc/chorus",
3
- "version": "0.10.0",
3
+ "version": "0.11.1",
4
4
  "description": "The Agent Harness for AI-Human Collaboration — session lifecycle, task state, sub-agent orchestration, observability, and failure recovery",
5
5
  "homepage": "https://github.com/Chorus-AIDLC/Chorus",
6
6
  "repository": {
@@ -22,6 +22,8 @@
22
22
  },
23
23
  "files": [
24
24
  "chorus.mjs",
25
+ "cli/**/*.mjs",
26
+ "!cli/**/__tests__/**",
25
27
  ".next/standalone/",
26
28
  "prisma/schema.prisma",
27
29
  "prisma/migrations/",
@@ -0,0 +1,37 @@
1
+ -- CreateTable
2
+ CREATE TABLE "DaemonConnection" (
3
+ "id" SERIAL NOT NULL,
4
+ "uuid" TEXT NOT NULL,
5
+ "companyUuid" TEXT NOT NULL,
6
+ "agentUuid" TEXT NOT NULL,
7
+ "clientType" TEXT NOT NULL,
8
+ "clientVersion" TEXT,
9
+ "host" TEXT NOT NULL DEFAULT '',
10
+ "startedAt" TIMESTAMP(3),
11
+ "status" TEXT NOT NULL DEFAULT 'online',
12
+ "connectedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
13
+ "lastSeenAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
14
+ "disconnectedAt" TIMESTAMP(3),
15
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
16
+ "updatedAt" TIMESTAMP(3) NOT NULL,
17
+
18
+ CONSTRAINT "DaemonConnection_pkey" PRIMARY KEY ("id")
19
+ );
20
+
21
+ -- CreateIndex
22
+ CREATE UNIQUE INDEX "DaemonConnection_uuid_key" ON "DaemonConnection"("uuid");
23
+
24
+ -- CreateIndex
25
+ CREATE INDEX "DaemonConnection_companyUuid_idx" ON "DaemonConnection"("companyUuid");
26
+
27
+ -- CreateIndex
28
+ CREATE INDEX "DaemonConnection_agentUuid_idx" ON "DaemonConnection"("agentUuid");
29
+
30
+ -- CreateIndex
31
+ CREATE INDEX "DaemonConnection_status_idx" ON "DaemonConnection"("status");
32
+
33
+ -- CreateIndex
34
+ CREATE INDEX "DaemonConnection_lastSeenAt_idx" ON "DaemonConnection"("lastSeenAt");
35
+
36
+ -- CreateIndex
37
+ CREATE UNIQUE INDEX "DaemonConnection_agentUuid_clientType_host_key" ON "DaemonConnection"("agentUuid", "clientType", "host");
@@ -0,0 +1,28 @@
1
+ -- CreateTable
2
+ CREATE TABLE "DaemonTaskExecution" (
3
+ "id" SERIAL NOT NULL,
4
+ "uuid" TEXT NOT NULL,
5
+ "companyUuid" TEXT NOT NULL,
6
+ "agentUuid" TEXT NOT NULL,
7
+ "connectionUuid" TEXT NOT NULL,
8
+ "taskUuid" TEXT NOT NULL,
9
+ "rootIdeaUuid" TEXT,
10
+ "status" TEXT NOT NULL,
11
+ "startedAt" TIMESTAMP(3),
12
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
13
+ "updatedAt" TIMESTAMP(3) NOT NULL,
14
+
15
+ CONSTRAINT "DaemonTaskExecution_pkey" PRIMARY KEY ("id")
16
+ );
17
+
18
+ -- CreateIndex
19
+ CREATE UNIQUE INDEX "DaemonTaskExecution_uuid_key" ON "DaemonTaskExecution"("uuid");
20
+
21
+ -- CreateIndex
22
+ CREATE INDEX "DaemonTaskExecution_connectionUuid_status_idx" ON "DaemonTaskExecution"("connectionUuid", "status");
23
+
24
+ -- CreateIndex
25
+ CREATE INDEX "DaemonTaskExecution_companyUuid_agentUuid_idx" ON "DaemonTaskExecution"("companyUuid", "agentUuid");
26
+
27
+ -- CreateIndex
28
+ CREATE UNIQUE INDEX "DaemonTaskExecution_connectionUuid_taskUuid_key" ON "DaemonTaskExecution"("connectionUuid", "taskUuid");
@@ -0,0 +1,38 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the `DaemonTaskExecution` table. If the table is not empty, all the data it contains will be lost.
5
+
6
+ */
7
+ -- DropTable
8
+ DROP TABLE "DaemonTaskExecution";
9
+
10
+ -- CreateTable
11
+ CREATE TABLE "DaemonExecution" (
12
+ "id" SERIAL NOT NULL,
13
+ "uuid" TEXT NOT NULL,
14
+ "companyUuid" TEXT NOT NULL,
15
+ "agentUuid" TEXT NOT NULL,
16
+ "connectionUuid" TEXT NOT NULL,
17
+ "entityType" TEXT NOT NULL,
18
+ "entityUuid" TEXT NOT NULL,
19
+ "rootIdeaUuid" TEXT,
20
+ "status" TEXT NOT NULL,
21
+ "startedAt" TIMESTAMP(3),
22
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
23
+ "updatedAt" TIMESTAMP(3) NOT NULL,
24
+
25
+ CONSTRAINT "DaemonExecution_pkey" PRIMARY KEY ("id")
26
+ );
27
+
28
+ -- CreateIndex
29
+ CREATE UNIQUE INDEX "DaemonExecution_uuid_key" ON "DaemonExecution"("uuid");
30
+
31
+ -- CreateIndex
32
+ CREATE INDEX "DaemonExecution_connectionUuid_status_idx" ON "DaemonExecution"("connectionUuid", "status");
33
+
34
+ -- CreateIndex
35
+ CREATE INDEX "DaemonExecution_companyUuid_agentUuid_idx" ON "DaemonExecution"("companyUuid", "agentUuid");
36
+
37
+ -- CreateIndex
38
+ CREATE UNIQUE INDEX "DaemonExecution_connectionUuid_entityType_entityUuid_key" ON "DaemonExecution"("connectionUuid", "entityType", "entityUuid");
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "DaemonExecution" ADD COLUMN "interruptedReason" TEXT;