@chorus-aidlc/chorus 0.13.0 → 0.13.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 (641) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +410 -425
  3. package/.next/standalone/.next/app-path-routes-manifest.json +39 -41
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +33 -57
  6. package/.next/standalone/.next/routes-manifest.json +0 -6
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +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 +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  47. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  51. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  52. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
  55. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  56. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/admin/companies.html +1 -1
  58. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  59. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/admin.html +1 -1
  61. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  62. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/agent-connections/route.js +1 -1
  67. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  71. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/auth/callback/route.js +1 -1
  77. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
  81. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
  86. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  88. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  89. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
  91. package/.next/standalone/.next/server/app/api/daemon/control/route.js.nft.json +1 -1
  92. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
  94. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
  100. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
  103. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
  106. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
  109. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
  110. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  112. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
  115. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
  118. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
  119. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
  121. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
  122. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
  124. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
  125. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
  127. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
  128. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  130. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js.nft.json +1 -1
  131. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
  133. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
  134. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/events/notifications/route.js +4 -4
  136. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  137. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/events/route.js +6 -6
  139. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  140. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  143. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  144. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  146. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  147. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  149. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  150. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  152. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  153. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  155. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -0
  161. package/.next/standalone/.next/server/app/api/{auth/refresh → ideas/conversational}/route.js.nft.json +1 -1
  162. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -0
  163. package/.next/standalone/.next/server/app/api/mcp/route.js +2 -2
  164. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  165. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  168. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  170. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  171. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  173. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  174. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  176. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  177. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  179. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  182. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  183. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  185. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  186. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  188. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  189. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  191. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js.nft.json +1 -1
  192. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  193. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  194. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js.nft.json +1 -1
  195. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/project-groups/route.js +1 -1
  197. package/.next/standalone/.next/server/app/api/project-groups/route.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  201. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  202. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  203. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js.nft.json +1 -1
  205. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js +1 -1
  207. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js.nft.json +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js.nft.json +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js.nft.json +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]/resource-graph/route.js +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js.nft.json +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  231. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js.nft.json +1 -1
  232. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  233. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  234. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  235. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  237. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  238. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  241. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js.nft.json +1 -1
  242. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  243. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  244. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js.nft.json +1 -1
  245. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  246. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  247. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js.nft.json +1 -1
  248. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  249. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  250. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js.nft.json +1 -1
  251. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  252. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  253. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js.nft.json +1 -1
  254. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  255. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  256. package/.next/standalone/.next/server/app/api/session/route.js +1 -0
  257. package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -0
  258. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -0
  259. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  260. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  261. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  262. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  263. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  264. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  265. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  266. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  267. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  268. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  269. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  270. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  271. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  272. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  273. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  274. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  275. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  276. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  277. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  278. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  279. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  280. package/.next/standalone/.next/server/app/index.html +1 -1
  281. package/.next/standalone/.next/server/app/index.rsc +3 -3
  282. package/.next/standalone/.next/server/app/login/admin/page.js +2 -2
  283. package/.next/standalone/.next/server/app/login/admin/page.js.nft.json +1 -1
  284. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  285. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  286. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  287. package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
  288. package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +1 -1
  289. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  290. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  291. package/.next/standalone/.next/server/app/login/callback.rsc +3 -3
  292. package/.next/standalone/.next/server/app/login/page.js +2 -2
  293. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  294. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  295. package/.next/standalone/.next/server/app/login/pick-workspace/page.js +1 -1
  296. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  297. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  298. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +3 -3
  299. package/.next/standalone/.next/server/app/login.html +1 -1
  300. package/.next/standalone/.next/server/app/login.rsc +3 -3
  301. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  302. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  303. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  304. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  305. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  306. package/.next/standalone/.next/server/app/page.js +2 -2
  307. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  308. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  309. package/.next/standalone/.next/server/app/projects.html +1 -1
  310. package/.next/standalone/.next/server/app/projects.rsc +4 -4
  311. package/.next/standalone/.next/server/app/settings.html +1 -1
  312. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  313. package/.next/standalone/.next/server/app-paths-manifest.json +39 -41
  314. package/.next/standalone/.next/server/chunks/1114.js +1 -0
  315. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  316. package/.next/standalone/.next/server/chunks/{7258.js → 2516.js} +1 -1
  317. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  318. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  319. package/.next/standalone/.next/server/chunks/3219.js +1 -1
  320. package/.next/standalone/.next/server/chunks/3371.js +1 -0
  321. package/.next/standalone/.next/server/chunks/3373.js +1 -1
  322. package/.next/standalone/.next/server/chunks/3419.js +1 -1
  323. package/.next/standalone/.next/server/chunks/4827.js +1 -0
  324. package/.next/standalone/.next/server/chunks/4958.js +1 -0
  325. package/.next/standalone/.next/server/chunks/{9855.js → 5095.js} +2 -2
  326. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  327. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  328. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  329. package/.next/standalone/.next/server/chunks/6496.js +1 -0
  330. package/.next/standalone/.next/server/chunks/679.js +1 -1
  331. package/.next/standalone/.next/server/chunks/6817.js +1 -0
  332. package/.next/standalone/.next/server/chunks/{178.js → 704.js} +3 -3
  333. package/.next/standalone/.next/server/chunks/7160.js +1 -1
  334. package/.next/standalone/.next/server/chunks/7364.js +1 -1
  335. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  336. package/.next/standalone/.next/server/chunks/8448.js +1 -0
  337. package/.next/standalone/.next/server/chunks/{8267.js → 8481.js} +1 -1
  338. package/.next/standalone/.next/server/chunks/8497.js +1 -0
  339. package/.next/standalone/.next/server/chunks/8577.js +153 -0
  340. package/.next/standalone/.next/server/chunks/8895.js +1 -0
  341. package/.next/standalone/.next/server/chunks/920.js +1 -1
  342. package/.next/standalone/.next/server/chunks/9726.js +1 -0
  343. package/.next/standalone/.next/server/instrumentation.js +1 -1
  344. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  345. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  346. package/.next/standalone/.next/server/pages/404.html +1 -1
  347. package/.next/standalone/.next/server/pages/500.html +1 -1
  348. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  349. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  350. package/.next/standalone/.next/server/src/middleware.js +5 -5
  351. package/.next/standalone/.next/static/chunks/15653-31c406c41bf58048.js +1 -0
  352. package/.next/standalone/.next/static/chunks/1892-9c03d4d3560ff572.js +1 -0
  353. package/.next/standalone/.next/static/chunks/225-8a41a800021f3d11.js +1 -0
  354. package/.next/standalone/.next/static/chunks/24459-3bc9657d71c77b47.js +1 -0
  355. package/.next/standalone/.next/static/chunks/38296-316ba18af72385fb.js +1 -0
  356. package/.next/standalone/.next/static/chunks/46055-f786ace4b994dc40.js +1 -0
  357. package/.next/standalone/.next/static/chunks/{4860.c3c83713d1f163a5.js → 4860.7844c573cb3914f3.js} +1 -1
  358. package/.next/standalone/.next/static/chunks/{49965-fa11628d5ac8fbbe.js → 52064-74d81c8d682deb6b.js} +1 -1
  359. package/.next/standalone/.next/static/chunks/57362-9ece5cc290dab705.js +1 -0
  360. package/.next/standalone/.next/static/chunks/{14655-4f3bc7f3044c42c1.js → 58037-55d7422c6b808356.js} +1 -1
  361. package/.next/standalone/.next/static/chunks/58262-395c00e04f610a32.js +1 -0
  362. package/.next/standalone/.next/static/chunks/68255-05c42a26602c6b37.js +1 -0
  363. package/.next/standalone/.next/static/chunks/75752-cc8fafe132943baa.js +1 -0
  364. package/.next/standalone/.next/static/chunks/80350-8ac8d602965bb4df.js +1 -0
  365. package/.next/standalone/.next/static/chunks/84169-71a87d06871ec9df.js +1 -0
  366. package/.next/standalone/.next/static/chunks/94528-ed3f03485480f5e5.js +1 -0
  367. package/.next/standalone/.next/static/chunks/94743-aff8a51a7f7970a9.js +1 -0
  368. package/.next/standalone/.next/static/chunks/{36493-5326c14a7240edc8.js → 97306-8834e12cdbeed920.js} +1 -1
  369. package/.next/standalone/.next/static/chunks/{99373.2b68fce200cc323e.js → 99373.6f0ec031fb759d88.js} +1 -1
  370. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-a3747bde1ddaba52.js +1 -0
  371. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-87b79c98e46fbd04.js +1 -0
  372. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-47e1d397c5fcef9e.js +1 -0
  373. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-f72f17eb58614d2b.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-0467d744b84aa2c2.js +1 -0
  375. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-7ebb779f0db4c58b.js → page-7abff55f9bfebab3.js} +1 -1
  376. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-3238e0b5474c60f6.js +1 -0
  377. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-9f0ebba7e855b2f9.js +1 -0
  378. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6dbfbe5d97855e42.js +1 -0
  379. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-b8fbcac7224342db.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-0a04a31e1b383094.js +1 -0
  381. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-e2a69b645ec9ae13.js +1 -0
  382. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-0bc22273214e522f.js → page-b760877bfcd12dff.js} +1 -1
  383. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-111aed4d3319d64b.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  385. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-47e1d397c5fcef9e.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-47e1d397c5fcef9e.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-47e1d397c5fcef9e.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-47e1d397c5fcef9e.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-47e1d397c5fcef9e.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/api/agents/route-47e1d397c5fcef9e.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-47e1d397c5fcef9e.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-47e1d397c5fcef9e.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-47e1d397c5fcef9e.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-47e1d397c5fcef9e.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-47e1d397c5fcef9e.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-47e1d397c5fcef9e.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-47e1d397c5fcef9e.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-47e1d397c5fcef9e.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-47e1d397c5fcef9e.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/comments/route-47e1d397c5fcef9e.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-47e1d397c5fcef9e.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-47e1d397c5fcef9e.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-47e1d397c5fcef9e.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-47e1d397c5fcef9e.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-47e1d397c5fcef9e.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-47e1d397c5fcef9e.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-47e1d397c5fcef9e.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-47e1d397c5fcef9e.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-47e1d397c5fcef9e.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-47e1d397c5fcef9e.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-47e1d397c5fcef9e.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-47e1d397c5fcef9e.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-47e1d397c5fcef9e.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-47e1d397c5fcef9e.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-47e1d397c5fcef9e.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/events/route-47e1d397c5fcef9e.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/health/route-47e1d397c5fcef9e.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-47e1d397c5fcef9e.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-47e1d397c5fcef9e.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-47e1d397c5fcef9e.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-47e1d397c5fcef9e.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-47e1d397c5fcef9e.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-47e1d397c5fcef9e.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/mcp/route-47e1d397c5fcef9e.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-47e1d397c5fcef9e.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-47e1d397c5fcef9e.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-47e1d397c5fcef9e.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-47e1d397c5fcef9e.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-47e1d397c5fcef9e.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-47e1d397c5fcef9e.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/notifications/route-47e1d397c5fcef9e.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-47e1d397c5fcef9e.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-47e1d397c5fcef9e.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-47e1d397c5fcef9e.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-47e1d397c5fcef9e.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-47e1d397c5fcef9e.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-47e1d397c5fcef9e.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-47e1d397c5fcef9e.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-47e1d397c5fcef9e.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-47e1d397c5fcef9e.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-47e1d397c5fcef9e.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-47e1d397c5fcef9e.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-47e1d397c5fcef9e.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-47e1d397c5fcef9e.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-47e1d397c5fcef9e.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-47e1d397c5fcef9e.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-47e1d397c5fcef9e.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/projects/route-47e1d397c5fcef9e.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-47e1d397c5fcef9e.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-47e1d397c5fcef9e.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-47e1d397c5fcef9e.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-47e1d397c5fcef9e.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/search/route-47e1d397c5fcef9e.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/session/route-47e1d397c5fcef9e.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-47e1d397c5fcef9e.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-47e1d397c5fcef9e.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-47e1d397c5fcef9e.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-47e1d397c5fcef9e.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-47e1d397c5fcef9e.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-47e1d397c5fcef9e.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/login/callback/page-39a43f6d0245f8ca.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/login/page-acda3a31dc6a8280.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-10683852baf17426.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/onboarding/{page-500aded75bf11ed6.js → page-8e20c8aa8ff90326.js} +1 -1
  473. package/.next/standalone/.next/static/chunks/app/page-000b1349c8d5b652.js +1 -0
  474. package/.next/standalone/.next/static/chunks/{webpack-7483083a976ed3d7.js → webpack-fe12dfe2e0d0e4f3.js} +1 -1
  475. package/.next/standalone/.next/static/css/3f3ae2bdc9e55259.css +1 -0
  476. package/.next/standalone/.next/static/eORNzMShbzkJbNfQT8MbW/_buildManifest.js +1 -0
  477. package/.next/standalone/package.json +1 -1
  478. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +2 -0
  479. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +2 -0
  480. package/.next/standalone/public/skill/develop-chorus/SKILL.md +2 -0
  481. package/.next/standalone/public/skill/idea-chorus/SKILL.md +2 -0
  482. package/README.md +15 -2
  483. package/README.zh.md +15 -2
  484. package/cli/client-args.mjs +31 -9
  485. package/cli/control-handler.mjs +22 -5
  486. package/cli/daemon-lifecycle.mjs +192 -25
  487. package/cli/daemon-rest-client.mjs +6 -2
  488. package/cli/daemon-service.mjs +422 -0
  489. package/cli/daemon.mjs +181 -13
  490. package/cli/event-router.mjs +29 -10
  491. package/cli/prompts.mjs +61 -0
  492. package/cli/turn-reporter.mjs +26 -5
  493. package/cli/wake-queue.mjs +30 -0
  494. package/cli/waker.mjs +91 -22
  495. package/package.json +1 -1
  496. package/prisma/migrations/20260704023331_add_turn_interrupted_state/migration.sql +2 -0
  497. package/prisma/schema.prisma +9 -2
  498. package/.next/standalone/.next/server/app/api/auth/refresh/route.js +0 -1
  499. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +0 -1
  500. package/.next/standalone/.next/server/app/api/auth/session/route.js +0 -1
  501. package/.next/standalone/.next/server/app/api/auth/session/route.js.nft.json +0 -1
  502. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +0 -1
  503. package/.next/standalone/.next/server/app/api/keepalive/route.js +0 -1
  504. package/.next/standalone/.next/server/app/api/keepalive/route.js.nft.json +0 -1
  505. package/.next/standalone/.next/server/app/api/keepalive/route_client-reference-manifest.js +0 -1
  506. package/.next/standalone/.next/server/app/login/silent-refresh/page.js +0 -2
  507. package/.next/standalone/.next/server/app/login/silent-refresh/page.js.nft.json +0 -1
  508. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +0 -1
  509. package/.next/standalone/.next/server/app/login/silent-refresh.html +0 -1
  510. package/.next/standalone/.next/server/app/login/silent-refresh.meta +0 -7
  511. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +0 -24
  512. package/.next/standalone/.next/server/chunks/1463.js +0 -1
  513. package/.next/standalone/.next/server/chunks/298.js +0 -1
  514. package/.next/standalone/.next/server/chunks/5011.js +0 -1
  515. package/.next/standalone/.next/server/chunks/6813.js +0 -1
  516. package/.next/standalone/.next/server/chunks/7421.js +0 -1
  517. package/.next/standalone/.next/server/chunks/7515.js +0 -1
  518. package/.next/standalone/.next/server/chunks/7912.js +0 -1
  519. package/.next/standalone/.next/server/chunks/8821.js +0 -1
  520. package/.next/standalone/.next/server/chunks/9273.js +0 -1
  521. package/.next/standalone/.next/server/chunks/937.js +0 -153
  522. package/.next/standalone/.next/static/W3KEB0tOAICVtfAUfR_M9/_buildManifest.js +0 -1
  523. package/.next/standalone/.next/static/chunks/10919-7f63b2801a92b8c6.js +0 -1
  524. package/.next/standalone/.next/static/chunks/1891-d4a9e756fefba3a9.js +0 -1
  525. package/.next/standalone/.next/static/chunks/20081-a2bf5c9f24d5d589.js +0 -1
  526. package/.next/standalone/.next/static/chunks/26394-4af487a51dd62832.js +0 -1
  527. package/.next/standalone/.next/static/chunks/2987-c15f09093b821b24.js +0 -1
  528. package/.next/standalone/.next/static/chunks/37784-95dee37276b1067b.js +0 -1
  529. package/.next/standalone/.next/static/chunks/43741-aeea04ab873ac4e9.js +0 -1
  530. package/.next/standalone/.next/static/chunks/49852-5337f139a2f87c46.js +0 -1
  531. package/.next/standalone/.next/static/chunks/56812-a6fe5225adc0b2ff.js +0 -1
  532. package/.next/standalone/.next/static/chunks/64894-71b047ae8ef2f3d8.js +0 -1
  533. package/.next/standalone/.next/static/chunks/8796-69e708cb8603d8b4.js +0 -1
  534. package/.next/standalone/.next/static/chunks/91666-3fd4f3512a53ff20.js +0 -1
  535. package/.next/standalone/.next/static/chunks/97263-018d631416efa5cd.js +0 -1
  536. package/.next/standalone/.next/static/chunks/97868-55f18a05fe483d85.js +0 -1
  537. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-6061b60d52262d3c.js +0 -1
  538. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-78ab05c72bcd04fd.js +0 -1
  539. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-31ae6abada6e6a64.js +0 -1
  540. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-478cce81afbfc145.js +0 -1
  541. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-494b80e61b485870.js +0 -1
  542. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-bfbfc5005de2be13.js +0 -1
  543. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-fbb4dd4124525f97.js +0 -1
  544. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-164fe175720b24a1.js +0 -1
  545. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-2742c745a90f843f.js +0 -1
  546. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-f2313bf05387b39b.js +0 -1
  547. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-955e8fd8d7b0b7c8.js +0 -1
  548. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-960ab78b5055780c.js +0 -1
  549. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-31ae6abada6e6a64.js +0 -1
  550. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-31ae6abada6e6a64.js +0 -1
  551. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-31ae6abada6e6a64.js +0 -1
  552. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-31ae6abada6e6a64.js +0 -1
  553. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-31ae6abada6e6a64.js +0 -1
  554. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-31ae6abada6e6a64.js +0 -1
  555. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-31ae6abada6e6a64.js +0 -1
  556. package/.next/standalone/.next/static/chunks/app/api/agents/route-31ae6abada6e6a64.js +0 -1
  557. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-31ae6abada6e6a64.js +0 -1
  558. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-31ae6abada6e6a64.js +0 -1
  559. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-31ae6abada6e6a64.js +0 -1
  560. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-31ae6abada6e6a64.js +0 -1
  561. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-31ae6abada6e6a64.js +0 -1
  562. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-31ae6abada6e6a64.js +0 -1
  563. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-31ae6abada6e6a64.js +0 -1
  564. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-31ae6abada6e6a64.js +0 -1
  565. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-31ae6abada6e6a64.js +0 -1
  566. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-31ae6abada6e6a64.js +0 -1
  567. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-31ae6abada6e6a64.js +0 -1
  568. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-31ae6abada6e6a64.js +0 -1
  569. package/.next/standalone/.next/static/chunks/app/api/comments/route-31ae6abada6e6a64.js +0 -1
  570. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-31ae6abada6e6a64.js +0 -1
  571. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-31ae6abada6e6a64.js +0 -1
  572. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-31ae6abada6e6a64.js +0 -1
  573. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-31ae6abada6e6a64.js +0 -1
  574. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-31ae6abada6e6a64.js +0 -1
  575. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-31ae6abada6e6a64.js +0 -1
  576. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-31ae6abada6e6a64.js +0 -1
  577. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-31ae6abada6e6a64.js +0 -1
  578. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-31ae6abada6e6a64.js +0 -1
  579. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-31ae6abada6e6a64.js +0 -1
  580. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-31ae6abada6e6a64.js +0 -1
  581. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-31ae6abada6e6a64.js +0 -1
  582. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-31ae6abada6e6a64.js +0 -1
  583. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-31ae6abada6e6a64.js +0 -1
  584. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-31ae6abada6e6a64.js +0 -1
  585. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-31ae6abada6e6a64.js +0 -1
  586. package/.next/standalone/.next/static/chunks/app/api/events/route-31ae6abada6e6a64.js +0 -1
  587. package/.next/standalone/.next/static/chunks/app/api/health/route-31ae6abada6e6a64.js +0 -1
  588. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-31ae6abada6e6a64.js +0 -1
  589. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-31ae6abada6e6a64.js +0 -1
  590. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-31ae6abada6e6a64.js +0 -1
  591. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-31ae6abada6e6a64.js +0 -1
  592. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-31ae6abada6e6a64.js +0 -1
  593. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-31ae6abada6e6a64.js +0 -1
  594. package/.next/standalone/.next/static/chunks/app/api/keepalive/route-31ae6abada6e6a64.js +0 -1
  595. package/.next/standalone/.next/static/chunks/app/api/mcp/route-31ae6abada6e6a64.js +0 -1
  596. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-31ae6abada6e6a64.js +0 -1
  597. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-31ae6abada6e6a64.js +0 -1
  598. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-31ae6abada6e6a64.js +0 -1
  599. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-31ae6abada6e6a64.js +0 -1
  600. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-31ae6abada6e6a64.js +0 -1
  601. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-31ae6abada6e6a64.js +0 -1
  602. package/.next/standalone/.next/static/chunks/app/api/notifications/route-31ae6abada6e6a64.js +0 -1
  603. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-31ae6abada6e6a64.js +0 -1
  604. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-31ae6abada6e6a64.js +0 -1
  605. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-31ae6abada6e6a64.js +0 -1
  606. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-31ae6abada6e6a64.js +0 -1
  607. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-31ae6abada6e6a64.js +0 -1
  608. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-31ae6abada6e6a64.js +0 -1
  609. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-31ae6abada6e6a64.js +0 -1
  610. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-31ae6abada6e6a64.js +0 -1
  611. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-31ae6abada6e6a64.js +0 -1
  612. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-31ae6abada6e6a64.js +0 -1
  613. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-31ae6abada6e6a64.js +0 -1
  614. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-31ae6abada6e6a64.js +0 -1
  615. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-31ae6abada6e6a64.js +0 -1
  616. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-31ae6abada6e6a64.js +0 -1
  617. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-31ae6abada6e6a64.js +0 -1
  618. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-31ae6abada6e6a64.js +0 -1
  619. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-31ae6abada6e6a64.js +0 -1
  620. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-31ae6abada6e6a64.js +0 -1
  621. package/.next/standalone/.next/static/chunks/app/api/projects/route-31ae6abada6e6a64.js +0 -1
  622. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-31ae6abada6e6a64.js +0 -1
  623. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-31ae6abada6e6a64.js +0 -1
  624. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-31ae6abada6e6a64.js +0 -1
  625. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-31ae6abada6e6a64.js +0 -1
  626. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-31ae6abada6e6a64.js +0 -1
  627. package/.next/standalone/.next/static/chunks/app/api/search/route-31ae6abada6e6a64.js +0 -1
  628. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-31ae6abada6e6a64.js +0 -1
  629. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-31ae6abada6e6a64.js +0 -1
  630. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-31ae6abada6e6a64.js +0 -1
  631. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-31ae6abada6e6a64.js +0 -1
  632. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-31ae6abada6e6a64.js +0 -1
  633. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-31ae6abada6e6a64.js +0 -1
  634. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-31ae6abada6e6a64.js +0 -1
  635. package/.next/standalone/.next/static/chunks/app/login/callback/page-6cad93f5c610b047.js +0 -1
  636. package/.next/standalone/.next/static/chunks/app/login/page-d2513f477211dd6f.js +0 -1
  637. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-597e0f3377f18d29.js +0 -1
  638. package/.next/standalone/.next/static/chunks/app/login/silent-refresh/page-a26d1af61578c96e.js +0 -1
  639. package/.next/standalone/.next/static/chunks/app/page-075afd218994d377.js +0 -1
  640. package/.next/standalone/.next/static/css/ed6baccd62b81c4e.css +0 -1
  641. /package/.next/standalone/.next/static/{W3KEB0tOAICVtfAUfR_M9 → eORNzMShbzkJbNfQT8MbW}/_ssgManifest.js +0 -0
@@ -11,7 +11,7 @@
11
11
  * default long-lived daemon) is intentionally NOT in this set — it is the
12
12
  * absence of a recognized sub-action token.
13
13
  */
14
- export const DAEMON_ACTIONS = new Set(["stop", "status", "restart", "logs"]);
14
+ export const DAEMON_ACTIONS = new Set(["stop", "status", "restart", "logs", "install", "uninstall"]);
15
15
 
16
16
  /** Known agent backends. Only `claude-code` is implemented; the rest reserve
17
17
  * the extension point (see daemon-agent-selection). Exported for the resolver
@@ -22,7 +22,8 @@ export const KNOWN_AGENTS = new Set(["claude-code"]);
22
22
  * Parse the client-subcommand flags out of an arg list. Recognizes the
23
23
  * pre-existing `--url` / `--api-key` / `--sigint-timeout` (space and `=` forms)
24
24
  * and boolean `--yolo`, plus the new `--agent <type>` (space + `=`), boolean
25
- * `--chorus-only`, `--verbose`, `-d`/`--detach`, and `--help`/`-h`.
25
+ * `--chorus-only`, `--verbose`, `-d`/`--detach`, `--force` (stop's forced
26
+ * pidfile cleanup), and `--help`/`-h`.
26
27
  *
27
28
  * Only keys that appear are set, so callers can distinguish "unset" from
28
29
  * "false" (important for layered env/flag precedence downstream).
@@ -37,7 +38,7 @@ export const KNOWN_AGENTS = new Set(["claude-code"]);
37
38
  * @returns {{
38
39
  * url?: string, apiKey?: string, yolo?: boolean, sigintTimeout?: string,
39
40
  * agent?: string, chorusOnly?: boolean, verbose?: boolean, detach?: boolean,
40
- * cwd?: string[], help?: boolean,
41
+ * cwd?: string[], force?: boolean, help?: boolean,
41
42
  * }}
42
43
  */
43
44
  export function parseClientFlags(argv) {
@@ -61,6 +62,7 @@ export function parseClientFlags(argv) {
61
62
  else if (a === "--chorus-only") out.chorusOnly = true;
62
63
  else if (a === "--verbose") out.verbose = true;
63
64
  else if (a === "-d" || a === "--detach") out.detach = true;
65
+ else if (a === "--force") out.force = true;
64
66
  else if (a === "--help" || a === "-h") out.help = true;
65
67
  }
66
68
  return out;
@@ -76,7 +78,7 @@ export function parseClientFlags(argv) {
76
78
  * or an unknown leading token) is the normal long-lived daemon (`run`).
77
79
  *
78
80
  * @param {string[]} rest argv after the `daemon` subcommand token
79
- * @returns {"run"|"stop"|"status"|"restart"|"logs"}
81
+ * @returns {"run"|"stop"|"status"|"restart"|"logs"|"install"|"uninstall"}
80
82
  */
81
83
  export function parseDaemonAction(rest) {
82
84
  const first = rest[0];
@@ -98,10 +100,18 @@ agent notification stream, and wake a local headless agent on task dispatch.
98
100
  USAGE
99
101
  chorus daemon [options] Run the daemon (foreground)
100
102
  chorus daemon -d [options] Run the daemon in the background (detached)
101
- chorus daemon stop Stop the background daemon
102
- chorus daemon status Show whether the background daemon is running
103
- chorus daemon restart Restart the background daemon
104
- chorus daemon logs Show the background daemon log
103
+ chorus daemon install [options] Install as a boot-autostart service and
104
+ start it now (Linux systemd --user;
105
+ macOS/Windows print a template + steps)
106
+ chorus daemon uninstall Remove the installed service (Linux) /
107
+ print removal steps (macOS/Windows)
108
+ chorus daemon stop Stop the daemon (delegates to the service
109
+ manager when installed, else the pidfile)
110
+ chorus daemon stop --force Force-clean the pidfile when a stuck or
111
+ unverifiable pid blocks a normal stop
112
+ chorus daemon status Show whether the daemon is running
113
+ chorus daemon restart Restart the daemon
114
+ chorus daemon logs Show the daemon log (journal when installed)
105
115
 
106
116
  OPTIONS
107
117
  --url <url> Remote Chorus server URL (env: CHORUS_URL)
@@ -130,11 +140,23 @@ CREDENTIALS
130
140
  ~/.chorus/daemon.json (from 'chorus login') > Claude Code plugin config.
131
141
  On a TTY with no resolvable credentials, the daemon prompts to complete them.
132
142
 
143
+ SERVICE (install)
144
+ 'chorus daemon install' is the recommended way to run the daemon permanently.
145
+ On Linux it generates a systemd --user unit that runs the daemon in the
146
+ FOREGROUND (Type=simple, no -d) so systemd owns the process directly: it
147
+ starts at login, restarts on failure, and 'systemctl --user stop' shuts it
148
+ down gracefully. Do NOT hand-write a Type=forking unit around 'chorus daemon
149
+ -d' — the daemon self-daemonizes, which systemd cannot track and which loops
150
+ on restart. The install captures the --cwd / --agent / --chorus-only flags you
151
+ pass. On macOS/Windows install prints a correct template you install manually.
152
+
133
153
  EXAMPLES
134
154
  chorus daemon # Foreground, default yolo (TTY confirms once)
135
155
  chorus daemon --chorus-only # Restrict the woken agent to Chorus tools
136
156
  chorus daemon -d # Background; see 'chorus daemon logs'
137
- chorus daemon stop # Stop the background daemon
157
+ chorus daemon install --cwd ~/proj # Install + start as a boot service (Linux)
158
+ chorus daemon uninstall # Remove the installed service
159
+ chorus daemon stop # Stop the daemon
138
160
  `;
139
161
  }
140
162
 
@@ -38,8 +38,13 @@ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
38
38
  * (null until the SSE handshake reports it).
39
39
  * killer?: (child: any, opts: any) => Promise<any>, Injectable; defaults to killProcessTree.
40
40
  * sigintTimeoutMs?: number, Layered-resolved escalation window.
41
- * redispatchResume?: (entityType: string, entityUuid: string) => void, Re-run a wake
42
- * for a resumed entity (子3); injected by the daemon.
41
+ * redispatchResume?: (entityType: string, entityUuid: string, resumeReason?: string) => void,
42
+ * Re-run a wake for a resumed entity (子3); injected
43
+ * by the daemon. `resumeReason` ("user" | "crash",
44
+ * add-crash-execution-resume) is the row's prior
45
+ * interruptedReason from the control event — it
46
+ * selects the continue-instruction variant; absent
47
+ * or unknown degrades to the user-resume prompt.
43
48
  * deliverTurn?: (turnUuid?: string) => void, Dispatch a PRECISE pending turn by uuid
44
49
  * (子2 — origin-only live delivery). On a
45
50
  * `deliver_turn` control event (after the Check-1
@@ -134,11 +139,23 @@ export function createControlHandler(deps) {
134
139
 
135
140
  // --- resume: re-dispatch the wake for this entity (子3). No running-child
136
141
  // check — the subprocess is gone (it was interrupted); the wake path will
137
- // re-spawn and `--resume` the existing session. ---
142
+ // re-spawn and `--resume` the existing session. `resumeReason` (the row's
143
+ // prior interruptedReason, add-crash-execution-resume) is threaded through
144
+ // so the wake prompt can state a crash explicitly; anything but the two
145
+ // known values (or an older server sending none) degrades to undefined →
146
+ // the existing user-resume prompt. ---
138
147
  if (command === "resume") {
139
- logger.info(`[Chorus] control: resuming ${entityType}:${entityUuid} (re-dispatch wake)`);
148
+ const resumeReason =
149
+ event.resumeReason === "user" || event.resumeReason === "crash"
150
+ ? event.resumeReason
151
+ : undefined;
152
+ logger.info(
153
+ `[Chorus] control: resuming ${entityType}:${entityUuid} (re-dispatch wake` +
154
+ (resumeReason ? `, reason=${resumeReason}` : "") +
155
+ `)`
156
+ );
140
157
  try {
141
- redispatchResume?.(entityType, entityUuid);
158
+ redispatchResume?.(entityType, entityUuid, resumeReason);
142
159
  } catch (err) {
143
160
  logger.warn(`[Chorus] control: resume re-dispatch failed for ${entityType}:${entityUuid}: ${err}`);
144
161
  }
@@ -7,10 +7,11 @@
7
7
  // are unit-testable from a single host.
8
8
  //
9
9
  // State files live alongside the credentials in ~/.chorus:
10
- // pidfile ~/.chorus/daemon.pid (the background daemon's pid)
10
+ // pidfile ~/.chorus/daemon.pid (JSON {pid, startedAt?, argsHint?}; legacy
11
+ // bare-number files from older CLIs still read)
11
12
  // logfile ~/.chorus/daemon.log (its redirected stdout+stderr)
12
13
 
13
- import { spawn } from "node:child_process";
14
+ import { spawn, spawnSync } from "node:child_process";
14
15
  import {
15
16
  existsSync,
16
17
  mkdirSync,
@@ -32,6 +33,7 @@ function defaultIO() {
32
33
  unlinkSync,
33
34
  writeFileSync,
34
35
  spawn,
36
+ spawnSync,
35
37
  // process.kill with signal 0 is the portable liveness probe (no signal sent).
36
38
  kill: (pid, sig) => process.kill(pid, sig),
37
39
  platform: process.platform,
@@ -50,48 +52,183 @@ export function logFilePath(io = defaultIO()) {
50
52
  }
51
53
 
52
54
  /**
53
- * Read the recorded pid, or null when absent / unreadable / malformed.
55
+ * The cmdline marker every legacy (pre-identity) chorus daemon carries the
56
+ * fallback identity check when the pidfile recorded no argsHint.
57
+ */
58
+ const DAEMON_CMD_MARKER = "daemon";
59
+
60
+ /**
61
+ * Read the recorded pidfile as a structured record, or null when absent /
62
+ * unreadable / malformed. Two on-disk formats:
63
+ * - JSON `{pid, startedAt?, argsHint?}` (current — written by startBackground)
64
+ * - bare pid number (legacy — pre-identity CLIs) → `{ pid, legacy: true }`
54
65
  * @param {object} [io]
55
- * @returns {number|null}
66
+ * @returns {{ pid: number, startedAt?: string, argsHint?: string, legacy?: boolean }|null}
56
67
  */
57
- export function readPid(io = defaultIO()) {
68
+ export function readPidRecord(io = defaultIO()) {
58
69
  const path = pidFilePath(io);
59
70
  try {
60
71
  if (!io.existsSync(path)) return null;
61
- const raw = io.readFileSync(path, "utf8");
62
- const pid = Number.parseInt(String(raw).trim(), 10);
63
- return Number.isInteger(pid) && pid > 0 ? pid : null;
72
+ const raw = String(io.readFileSync(path, "utf8")).trim();
73
+ if (raw.startsWith("{")) {
74
+ const parsed = JSON.parse(raw);
75
+ const pid = Number.parseInt(String(parsed.pid), 10);
76
+ if (!Number.isInteger(pid) || pid <= 0) return null;
77
+ const record = { pid };
78
+ if (typeof parsed.startedAt === "string" && parsed.startedAt) record.startedAt = parsed.startedAt;
79
+ if (typeof parsed.argsHint === "string" && parsed.argsHint) record.argsHint = parsed.argsHint;
80
+ return record;
81
+ }
82
+ const pid = Number.parseInt(raw, 10);
83
+ return Number.isInteger(pid) && pid > 0 ? { pid, legacy: true } : null;
64
84
  } catch {
65
85
  return null;
66
86
  }
67
87
  }
68
88
 
69
89
  /**
70
- * Is `pid` a live process? Uses signal 0 (sends nothing; throws ESRCH when the
71
- * pid is gone, EPERM when alive-but-not-ours → still "alive").
90
+ * Read the recorded pid, or null when absent / unreadable / malformed.
91
+ * Thin compatibility wrapper over readPidRecord.
92
+ * @param {object} [io]
93
+ * @returns {number|null}
94
+ */
95
+ export function readPid(io = defaultIO()) {
96
+ return readPidRecord(io)?.pid ?? null;
97
+ }
98
+
99
+ /**
100
+ * Query the identity (command line + start time) of the process currently
101
+ * occupying `pid`. One subprocess invocation, argument arrays only (no
102
+ * `shell:true`), pure JS:
103
+ * - POSIX: `ps -p <pid> -o lstart=,args=` (lstart is second-resolution and
104
+ * stable across probes of the same process). busybox `ps` rejects `-p` and
105
+ * `-o lstart` → retry `ps -o pid=,args=` (full-table) and filter by the
106
+ * pid column for cmdline-only verification.
107
+ * - Windows: PowerShell `Get-CimInstance Win32_Process` (wmic is deprecated).
72
108
  * @param {number} pid @param {object} [io]
109
+ * @returns {{ cmdline: string, startedAt: string|null }|null} null = query failed
73
110
  */
74
- export function processAlive(pid, io = defaultIO()) {
75
- if (!Number.isInteger(pid) || pid <= 0) return false;
111
+ export function queryProcessIdentity(pid, io = defaultIO()) {
112
+ if (!Number.isInteger(pid) || pid <= 0) return null;
76
113
  try {
77
- io.kill(pid, 0);
78
- return true;
114
+ if (io.platform === "win32") {
115
+ const r = io.spawnSync(
116
+ "powershell",
117
+ [
118
+ "-NoProfile",
119
+ "-Command",
120
+ `Get-CimInstance Win32_Process -Filter 'ProcessId=${pid}' | Select-Object CommandLine,CreationDate | ConvertTo-Json`,
121
+ ],
122
+ { encoding: "utf8", windowsHide: true }
123
+ );
124
+ if (!r || r.status !== 0 || !r.stdout) return null;
125
+ const parsed = JSON.parse(r.stdout);
126
+ if (!parsed || typeof parsed.CommandLine !== "string") return null;
127
+ return { cmdline: parsed.CommandLine, startedAt: parsed.CreationDate ? String(parsed.CreationDate) : null };
128
+ }
129
+ // POSIX: lstart= + args= in one call. Output shape (no headers):
130
+ // "Thu Jul 2 21:22:55 2026 /usr/bin/node /x/chorus.mjs daemon"
131
+ // lstart is a fixed 5-field prefix (dow mon dd hh:mm:ss yyyy).
132
+ const full = io.spawnSync("ps", ["-p", String(pid), "-o", "lstart=,args="], { encoding: "utf8" });
133
+ if (full && full.status === 0 && full.stdout && full.stdout.trim()) {
134
+ const line = full.stdout.trim();
135
+ const fields = line.split(/\s+/);
136
+ if (fields.length >= 6) {
137
+ const startedAt = fields.slice(0, 5).join(" ");
138
+ const cmdline = fields.slice(5).join(" ");
139
+ if (cmdline) return { cmdline, startedAt };
140
+ }
141
+ }
142
+ // busybox fallback: busybox ps rejects -p AND -o lstart (it only knows -o
143
+ // and -T), so list every process as "pid args" and filter by the pid
144
+ // column ourselves. Cmdline verification still possible; no start time.
145
+ const argsOnly = io.spawnSync("ps", ["-o", "pid=,args="], { encoding: "utf8" });
146
+ if (argsOnly && argsOnly.status === 0 && argsOnly.stdout) {
147
+ for (const line of argsOnly.stdout.split("\n")) {
148
+ const m = line.trim().match(/^(\d+)\s+(.+)$/);
149
+ if (m && Number.parseInt(m[1], 10) === pid) {
150
+ return { cmdline: m[2].trim(), startedAt: null };
151
+ }
152
+ }
153
+ }
154
+ return null;
155
+ } catch {
156
+ return null;
157
+ }
158
+ }
159
+
160
+ /**
161
+ * Is the process recorded by `record` still OUR live daemon? Identity-verified
162
+ * probe (fix-daemon-stale-pid-identity): pid existence alone is not enough —
163
+ * after a reboot the OS recycles pids, and a foreign owner surfaces as EPERM,
164
+ * which the old probe misread as "daemon alive". Decision table (tech design):
165
+ * - ESRCH / invalid pid → false (stale)
166
+ * - pid exists (OK or EPERM):
167
+ * identity recorded → argsHint (when recorded) decides ALONE: cmdline
168
+ * contains it → true, else false. startedAt only
169
+ * decides when no argsHint was recorded; query
170
+ * failed → true (never auto-clean an identity we
171
+ * could not verify)
172
+ * legacy record → cmdline contains the daemon marker → true;
173
+ * foreign cmdline → false; query failed → EPERM
174
+ * proves it is not ours (same-user daemon) → false,
175
+ * while a signalable pid stays conservatively true
176
+ * Accepts a bare pid (number) for backward compatibility → treated as legacy.
177
+ * @param {number|{pid:number,startedAt?:string,argsHint?:string,legacy?:boolean}} record
178
+ * @param {object} [io]
179
+ */
180
+ export function processAlive(record, io = defaultIO()) {
181
+ const rec = typeof record === "number" ? { pid: record, legacy: true } : record;
182
+ if (!rec || !Number.isInteger(rec.pid) || rec.pid <= 0) return false;
183
+ let eperm = false;
184
+ try {
185
+ io.kill(rec.pid, 0);
79
186
  } catch (err) {
80
- return err && err.code === "EPERM";
187
+ if (!err || err.code !== "EPERM") return false;
188
+ eperm = true;
81
189
  }
190
+ // The pid exists. Verify the occupant is still our daemon.
191
+ const identity = queryProcessIdentity(rec.pid, io);
192
+ const hasRecordedIdentity = Boolean(rec.startedAt || rec.argsHint);
193
+ if (hasRecordedIdentity) {
194
+ if (identity === null) return true; // unverifiable → conservative: running
195
+ // Collapse whitespace on both sides: the ps parse re-joins fields with
196
+ // single spaces, so an argsHint containing consecutive spaces must not
197
+ // read as a mismatch (false-stale is the dangerous direction).
198
+ const liveCmd = identity.cmdline.replace(/\s+/g, " ");
199
+ const hint = rec.argsHint ? rec.argsHint.replace(/\s+/g, " ") : null;
200
+ // argsHint decides ALONE when recorded (fix-daemon-stop-ntp-false-stale):
201
+ // startedAt strings are clock-derived (POSIX lstart is recomputed from
202
+ // btime + start ticks at query time), so an NTP step after spawn shifts
203
+ // them for the SAME process — it must never veto a matching argsHint, or
204
+ // a boot-autostarted daemon becomes unstoppable once chrony corrects the
205
+ // clock. startedAt still decides for records without an argsHint.
206
+ if (hint) return liveCmd.includes(hint);
207
+ if (rec.startedAt && identity.startedAt !== null && identity.startedAt !== rec.startedAt) return false;
208
+ return true;
209
+ }
210
+ // Legacy record (no identity metadata): cmdline-marker fallback.
211
+ if (identity === null) {
212
+ // EPERM on a legacy record already proves the process belongs to another
213
+ // user — the CLI and daemon always run as the same user (q3=a self-heal,
214
+ // covers busybox systems where ps cannot report identity).
215
+ return !eperm;
216
+ }
217
+ return identity.cmdline.includes(DAEMON_CMD_MARKER);
82
218
  }
83
219
 
84
220
  /**
85
221
  * Current daemon status from the pidfile.
86
222
  * @param {object} [io]
87
223
  * @returns {{ running: boolean, pid: number|null, stale: boolean }}
88
- * `stale` = a pidfile exists but its pid is dead (left behind by a crash).
224
+ * `stale` = a pidfile exists but its pid is dead OR its identity no longer
225
+ * matches (pid recycled after a reboot / crash).
89
226
  */
90
227
  export function isRunning(io = defaultIO()) {
91
- const pid = readPid(io);
92
- if (pid == null) return { running: false, pid: null, stale: false };
93
- const alive = processAlive(pid, io);
94
- return { running: alive, pid, stale: !alive };
228
+ const record = readPidRecord(io);
229
+ if (record == null) return { running: false, pid: null, stale: false };
230
+ const alive = processAlive(record, io);
231
+ return { running: alive, pid: record.pid, stale: !alive };
95
232
  }
96
233
 
97
234
  /** Ensure ~/.chorus exists for the pid/log files. */
@@ -145,22 +282,43 @@ export function startBackground(spec, io = defaultIO()) {
145
282
  // Let the parent exit without waiting on the child (POSIX + Windows).
146
283
  child.unref?.();
147
284
 
285
+ // Record the child's IDENTITY alongside its pid so later probes can tell
286
+ // "our daemon" from "a reboot-recycled pid" (fix-daemon-stale-pid-identity).
287
+ // argsHint: a distinguishing substring of the spawned command line. startedAt:
288
+ // the same query the probe uses (string-equality comparison, no clock math);
289
+ // a failed post-spawn query degrades to a record without startedAt.
290
+ const record = { pid: child.pid };
291
+ const argsHint = (spec.args ?? []).join(" ").trim();
292
+ if (argsHint) record.argsHint = argsHint;
293
+ const identity = queryProcessIdentity(child.pid, io);
294
+ if (identity?.startedAt) record.startedAt = identity.startedAt;
295
+
148
296
  ensureDir(pidFile, io);
149
- io.writeFileSync(pidFile, `${child.pid}\n`, { mode: 0o600 });
297
+ io.writeFileSync(pidFile, `${JSON.stringify(record)}\n`, { mode: 0o600 });
150
298
  return { started: true, pid: child.pid, logFile, pidFile };
151
299
  }
152
300
 
153
301
  /**
154
302
  * Stop the recorded background daemon: signal it, then remove the pidfile.
155
- * @param {object} [io]
156
- * @returns {{ stopped: boolean, pid: number|null, reason: "stopped"|"not-running"|"stale-cleared"|"error", message: string }}
303
+ *
304
+ * `opts.force` (the `chorus daemon stop --force` escape hatch): best-effort
305
+ * SIGTERM (failure ignored), then unlink the pidfile UNCONDITIONALLY — for
306
+ * stuck states the identity probe cannot resolve (e.g. an unverifiable pid the
307
+ * operator knows is not the daemon).
308
+ * @param {object} [io] @param {{ force?: boolean }} [opts]
309
+ * @returns {{ stopped: boolean, pid: number|null, reason: "stopped"|"not-running"|"stale-cleared"|"forced"|"error", message: string }}
157
310
  */
158
- export function stopDaemon(io = defaultIO()) {
311
+ export function stopDaemon(io = defaultIO(), opts = {}) {
159
312
  const pidFile = pidFilePath(io);
160
313
  const status = isRunning(io);
161
314
  if (status.pid == null) {
162
315
  return { stopped: false, pid: null, reason: "not-running", message: "no daemon is running (no pidfile)" };
163
316
  }
317
+ if (opts.force) {
318
+ try { io.kill(status.pid, "SIGTERM"); } catch { /* best-effort by design */ }
319
+ try { io.unlinkSync(pidFile); } catch { /* best-effort */ }
320
+ return { stopped: true, pid: status.pid, reason: "forced", message: `forced cleanup: signalled pid ${status.pid} (best-effort) and removed the pidfile` };
321
+ }
164
322
  if (!status.running) {
165
323
  // Stale pidfile — clean it up, report clearly (no silent failure).
166
324
  try { io.unlinkSync(pidFile); } catch { /* best-effort */ }
@@ -169,7 +327,16 @@ export function stopDaemon(io = defaultIO()) {
169
327
  try {
170
328
  io.kill(status.pid, "SIGTERM");
171
329
  } catch (err) {
172
- return { stopped: false, pid: status.pid, reason: "error", message: `failed to signal pid ${status.pid}: ${err instanceof Error ? err.message : String(err)}` };
330
+ // Keep the pidfile: deleting a record we could not act on risks orphaning a
331
+ // genuinely live daemon. The message names the recovery path instead.
332
+ return {
333
+ stopped: false,
334
+ pid: status.pid,
335
+ reason: "error",
336
+ message:
337
+ `failed to signal pid ${status.pid}: ${err instanceof Error ? err.message : String(err)}` +
338
+ ` — the pid may have been recycled by the OS; if you are sure no daemon is running: chorus daemon stop --force`,
339
+ };
173
340
  }
174
341
  try { io.unlinkSync(pidFile); } catch { /* best-effort */ }
175
342
  return { stopped: true, pid: status.pid, reason: "stopped", message: `stopped daemon (pid ${status.pid})` };
@@ -134,10 +134,12 @@ export function createDaemonRestClient(opts) {
134
134
  /**
135
135
  * POST /api/daemon/turn-advance — advance a wake's DaemonSessionTurn lifecycle. The
136
136
  * server resolves the turn by the session BUSINESS KEY (`sessionId`); the optional
137
- * `entityType`/`entityUuid` stamp the weak executionUuid link. Requires the
137
+ * `entityType`/`entityUuid` stamp the weak executionUuid link. An `interrupted`
138
+ * status may carry `interruptedReason` (`user`/`crash`/`shutdown` — the server
139
+ * rejects `offline`, which is its own reconcile verdict). Requires the
138
140
  * connectionUuid (the server addresses the turn against a connection the agent owns).
139
141
  */
140
- async turnAdvance({ sessionId, status, entityType, entityUuid }) {
142
+ async turnAdvance({ sessionId, status, entityType, entityUuid, interruptedReason }) {
141
143
  const connectionUuid = getConnectionUuid();
142
144
  if (!connectionUuid) {
143
145
  const error = `cannot advance turn for session ${sessionId} → ${status} — no connection uuid yet`;
@@ -150,6 +152,8 @@ export function createDaemonRestClient(opts) {
150
152
  status,
151
153
  // Only sent when BOTH are present, so the server never gets a partial linkage.
152
154
  ...(entityType && entityUuid ? { entityType, entityUuid } : {}),
155
+ // Only meaningful alongside status=interrupted; never sent otherwise.
156
+ ...(status === "interrupted" && interruptedReason ? { interruptedReason } : {}),
153
157
  };
154
158
  return post(
155
159
  "turn-advance",