@chorus-aidlc/chorus 0.14.2 → 0.14.4

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 (497) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +438 -431
  3. package/.next/standalone/.next/app-path-routes-manifest.json +49 -48
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +33 -33
  6. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +2 -2
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +2 -2
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +3 -3
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  46. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  50. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  51. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
  54. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  55. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/admin/companies.html +2 -2
  57. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  58. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/admin.html +2 -2
  60. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  61. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js +1 -0
  81. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js.nft.json +1 -0
  82. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -0
  83. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  91. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/events/notifications/route.js +5 -5
  100. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/index.html +2 -2
  158. package/.next/standalone/.next/server/app/index.rsc +2 -2
  159. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/login/admin.html +2 -2
  161. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  162. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/login/callback.html +2 -2
  164. package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
  165. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
  168. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
  169. package/.next/standalone/.next/server/app/login.html +2 -2
  170. package/.next/standalone/.next/server/app/login.rsc +2 -2
  171. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  172. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  173. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  175. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  176. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/projects.html +2 -2
  178. package/.next/standalone/.next/server/app/projects.rsc +3 -3
  179. package/.next/standalone/.next/server/app/settings.html +2 -2
  180. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  181. package/.next/standalone/.next/server/app-paths-manifest.json +49 -48
  182. package/.next/standalone/.next/server/chunks/1114.js +1 -1
  183. package/.next/standalone/.next/server/chunks/1318.js +1 -1
  184. package/.next/standalone/.next/server/chunks/1559.js +1 -1
  185. package/.next/standalone/.next/server/chunks/2004.js +1 -0
  186. package/.next/standalone/.next/server/chunks/2112.js +1 -0
  187. package/.next/standalone/.next/server/chunks/{1286.js → 2282.js} +3 -3
  188. package/.next/standalone/.next/server/chunks/2570.js +2 -2
  189. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  190. package/.next/standalone/.next/server/chunks/{6492.js → 2789.js} +2 -2
  191. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  192. package/.next/standalone/.next/server/chunks/3219.js +1 -1
  193. package/.next/standalone/.next/server/chunks/4070.js +1 -0
  194. package/.next/standalone/.next/server/chunks/4827.js +1 -1
  195. package/.next/standalone/.next/server/chunks/5245.js +1 -1
  196. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  197. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  198. package/.next/standalone/.next/server/chunks/6506.js +2 -2
  199. package/.next/standalone/.next/server/chunks/679.js +1 -1
  200. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  201. package/.next/standalone/.next/server/chunks/7530.js +1 -1
  202. package/.next/standalone/.next/server/chunks/8540.js +1 -0
  203. package/.next/standalone/.next/server/chunks/920.js +1 -1
  204. package/.next/standalone/.next/server/chunks/9213.js +1 -1
  205. package/.next/standalone/.next/server/chunks/9378.js +1 -1
  206. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  207. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  208. package/.next/standalone/.next/server/pages/404.html +2 -2
  209. package/.next/standalone/.next/server/pages/500.html +1 -1
  210. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  211. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  212. package/.next/standalone/.next/static/WVmgQzimrMNvGtHx6Cqm1/_buildManifest.js +1 -0
  213. package/.next/standalone/.next/static/chunks/{11595.fbbfc784ff9ee566.js → 11595.c580c5690d176cce.js} +1 -1
  214. package/.next/standalone/.next/static/chunks/{13867-a95a4555fcb7b13b.js → 14160-7bcee6e9e8bc5233.js} +1 -1
  215. package/.next/standalone/.next/static/chunks/{32331-87ae9bc7517c7947.js → 18351-2a408c4f57ddb3a7.js} +1 -1
  216. package/.next/standalone/.next/static/chunks/24870-5b0be64361f5ef70.js +1 -0
  217. package/.next/standalone/.next/static/chunks/26232-110019cebde19691.js +1 -0
  218. package/.next/standalone/.next/static/chunks/{33456.b67f1146831e9f2b.js → 33456.c48dc366aa90b234.js} +1 -1
  219. package/.next/standalone/.next/static/chunks/{37985-e4683195e4ca2519.js → 33806-cb339e86820a87c4.js} +1 -1
  220. package/.next/standalone/.next/static/chunks/{38526-7ffc4b7351c15bc4.js → 37938-c09acf52d7f85cb4.js} +1 -1
  221. package/.next/standalone/.next/static/chunks/{4860.3491d748fdde968e.js → 4860.baf6a285246198af.js} +1 -1
  222. package/.next/standalone/.next/static/chunks/{33277-9926b461045318b3.js → 60178-d6276df1c07d7735.js} +2 -2
  223. package/.next/standalone/.next/static/chunks/68326-924445654ed47e6f.js +1 -0
  224. package/.next/standalone/.next/static/chunks/78917-1498676a1ffe5ded.js +1 -0
  225. package/.next/standalone/.next/static/chunks/94470-1076452151689267.js +1 -0
  226. package/.next/standalone/.next/static/chunks/94643-7c7f2efab0640658.js +1 -0
  227. package/.next/standalone/.next/static/chunks/{99373.827383575665ce2f.js → 99373.ad871bd0bbfc5eb7.js} +1 -1
  228. package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-12d81eedb519461c.js → layout-78259279cf6c6919.js} +1 -1
  229. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-8cf720e8efb6ac7d.js +1 -0
  230. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/{page-996b8a87b4b986f1.js → page-59dcf0ba7ce877ec.js} +1 -1
  231. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-d6c226fd56b5ebb5.js +1 -0
  232. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-c231207c3674aa54.js → page-2c9d3f4c6e0ff807.js} +1 -1
  233. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/{page-c62c7d7cf9833060.js → page-af35d50848f01875.js} +1 -1
  234. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-cb6fdf592863833c.js +1 -0
  235. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-596d97796dd55e2f.js +1 -0
  236. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/{page-7948aa8db4813091.js → page-ed9415921188b4d3.js} +1 -1
  237. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-8eea1e0cea60758f.js → page-ebf4c28014025b7b.js} +1 -1
  238. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-658f31ac6a28ec82.js → page-bbde7e85e3388813.js} +1 -1
  239. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-e60bc39bf2957f77.js +1 -0
  240. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  241. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-8cf720e8efb6ac7d.js +1 -0
  242. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-8cf720e8efb6ac7d.js +1 -0
  243. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-8cf720e8efb6ac7d.js +1 -0
  244. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-8cf720e8efb6ac7d.js +1 -0
  245. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  246. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-8cf720e8efb6ac7d.js +1 -0
  247. package/.next/standalone/.next/static/chunks/app/api/agents/route-8cf720e8efb6ac7d.js +1 -0
  248. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  249. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-8cf720e8efb6ac7d.js +1 -0
  250. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-8cf720e8efb6ac7d.js +1 -0
  251. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-8cf720e8efb6ac7d.js +1 -0
  252. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-8cf720e8efb6ac7d.js +1 -0
  253. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-8cf720e8efb6ac7d.js +1 -0
  254. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-8cf720e8efb6ac7d.js +1 -0
  255. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-8cf720e8efb6ac7d.js +1 -0
  256. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-8cf720e8efb6ac7d.js +1 -0
  257. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-8cf720e8efb6ac7d.js +1 -0
  258. package/.next/standalone/.next/static/chunks/app/api/comments/route-8cf720e8efb6ac7d.js +1 -0
  259. package/.next/standalone/.next/static/chunks/app/api/daemon/connection-heartbeat/route-8cf720e8efb6ac7d.js +1 -0
  260. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-8cf720e8efb6ac7d.js +1 -0
  261. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-8cf720e8efb6ac7d.js +1 -0
  262. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-8cf720e8efb6ac7d.js +1 -0
  263. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-8cf720e8efb6ac7d.js +1 -0
  264. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-8cf720e8efb6ac7d.js +1 -0
  265. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-8cf720e8efb6ac7d.js +1 -0
  266. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-8cf720e8efb6ac7d.js +1 -0
  267. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-8cf720e8efb6ac7d.js +1 -0
  268. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-8cf720e8efb6ac7d.js +1 -0
  269. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-8cf720e8efb6ac7d.js +1 -0
  270. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-8cf720e8efb6ac7d.js +1 -0
  271. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-8cf720e8efb6ac7d.js +1 -0
  272. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-8cf720e8efb6ac7d.js +1 -0
  273. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  274. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-8cf720e8efb6ac7d.js +1 -0
  275. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-8cf720e8efb6ac7d.js +1 -0
  276. package/.next/standalone/.next/static/chunks/app/api/events/route-8cf720e8efb6ac7d.js +1 -0
  277. package/.next/standalone/.next/static/chunks/app/api/health/route-8cf720e8efb6ac7d.js +1 -0
  278. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-8cf720e8efb6ac7d.js +1 -0
  279. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-8cf720e8efb6ac7d.js +1 -0
  280. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-8cf720e8efb6ac7d.js +1 -0
  281. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-8cf720e8efb6ac7d.js +1 -0
  282. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-8cf720e8efb6ac7d.js +1 -0
  283. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  284. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-8cf720e8efb6ac7d.js +1 -0
  285. package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-8cf720e8efb6ac7d.js +1 -0
  286. package/.next/standalone/.next/static/chunks/app/api/mcp/route-8cf720e8efb6ac7d.js +1 -0
  287. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-8cf720e8efb6ac7d.js +1 -0
  288. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-8cf720e8efb6ac7d.js +1 -0
  289. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-8cf720e8efb6ac7d.js +1 -0
  290. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-8cf720e8efb6ac7d.js +1 -0
  291. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-8cf720e8efb6ac7d.js +1 -0
  292. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-8cf720e8efb6ac7d.js +1 -0
  293. package/.next/standalone/.next/static/chunks/app/api/notifications/route-8cf720e8efb6ac7d.js +1 -0
  294. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-8cf720e8efb6ac7d.js +1 -0
  295. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-8cf720e8efb6ac7d.js +1 -0
  296. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  297. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-8cf720e8efb6ac7d.js +1 -0
  298. package/.next/standalone/.next/static/chunks/app/api/project-visits/pin/route-8cf720e8efb6ac7d.js +1 -0
  299. package/.next/standalone/.next/static/chunks/app/api/project-visits/route-8cf720e8efb6ac7d.js +1 -0
  300. package/.next/standalone/.next/static/chunks/app/api/project-visits/visit/route-8cf720e8efb6ac7d.js +1 -0
  301. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-8cf720e8efb6ac7d.js +1 -0
  302. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-8cf720e8efb6ac7d.js +1 -0
  303. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-8cf720e8efb6ac7d.js +1 -0
  304. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-8cf720e8efb6ac7d.js +1 -0
  305. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-8cf720e8efb6ac7d.js +1 -0
  306. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-8cf720e8efb6ac7d.js +1 -0
  307. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-8cf720e8efb6ac7d.js +1 -0
  308. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-8cf720e8efb6ac7d.js +1 -0
  309. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-8cf720e8efb6ac7d.js +1 -0
  310. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-8cf720e8efb6ac7d.js +1 -0
  311. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  312. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-8cf720e8efb6ac7d.js +1 -0
  313. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-8cf720e8efb6ac7d.js +1 -0
  314. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-8cf720e8efb6ac7d.js +1 -0
  315. package/.next/standalone/.next/static/chunks/app/api/projects/route-8cf720e8efb6ac7d.js +1 -0
  316. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-8cf720e8efb6ac7d.js +1 -0
  317. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-8cf720e8efb6ac7d.js +1 -0
  318. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-8cf720e8efb6ac7d.js +1 -0
  319. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-8cf720e8efb6ac7d.js +1 -0
  320. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  321. package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  322. package/.next/standalone/.next/static/chunks/app/api/references/route-8cf720e8efb6ac7d.js +1 -0
  323. package/.next/standalone/.next/static/chunks/app/api/search/route-8cf720e8efb6ac7d.js +1 -0
  324. package/.next/standalone/.next/static/chunks/app/api/session/route-8cf720e8efb6ac7d.js +1 -0
  325. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  326. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-8cf720e8efb6ac7d.js +1 -0
  327. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-8cf720e8efb6ac7d.js +1 -0
  328. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-8cf720e8efb6ac7d.js +1 -0
  329. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-8cf720e8efb6ac7d.js +1 -0
  330. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-8cf720e8efb6ac7d.js +1 -0
  331. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-8cf720e8efb6ac7d.js +1 -0
  332. package/.next/standalone/.next/static/chunks/app/onboarding/{page-b178eb3215360d91.js → page-006bf9e9d6a991f1.js} +1 -1
  333. package/.next/standalone/.next/static/chunks/{webpack-567d9ffe31a0a5ee.js → webpack-af2cb28ef7bbd7c2.js} +1 -1
  334. package/.next/standalone/.next/static/css/f46eab37c942ff33.css +1 -0
  335. package/.next/standalone/package.json +1 -1
  336. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  337. package/.next/standalone/public/chorus-plugin/bin/on-post-verify-task.sh +1 -1
  338. package/.next/standalone/public/chorus-plugin/bin/verify-document-roundtrip.sh +28 -0
  339. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  340. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +1 -1
  341. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  342. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  343. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +8 -4
  344. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  345. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  346. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  347. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
  348. package/.next/standalone/public/install-kiro.sh +1 -1
  349. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
  350. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +1 -1
  351. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
  352. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +8 -4
  353. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
  354. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
  355. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
  356. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +1 -1
  357. package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
  358. package/.next/standalone/public/kiro-plugin/bin/verify-document-roundtrip.sh +28 -0
  359. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  360. package/.next/standalone/public/skill/chorus/SKILL.md +1 -1
  361. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
  362. package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
  363. package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
  364. package/.next/standalone/public/skill/package.json +1 -1
  365. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
  366. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  367. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  368. package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
  369. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  370. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
  371. package/README.md +2 -0
  372. package/cli/claude-spawner.mjs +4 -0
  373. package/cli/client-args.mjs +15 -8
  374. package/cli/codex-spawner.mjs +41 -10
  375. package/cli/codex-usage-map.mjs +115 -0
  376. package/cli/daemon-agent.mjs +56 -6
  377. package/cli/daemon-install-config.mjs +129 -0
  378. package/cli/daemon-rest-client.mjs +34 -3
  379. package/cli/daemon.mjs +32 -1
  380. package/cli/sse-listener.mjs +82 -5
  381. package/cli/turn-reporter.mjs +17 -5
  382. package/cli/upload-hooks.mjs +337 -12
  383. package/cli/waker.mjs +68 -13
  384. package/package.json +1 -1
  385. package/prisma/migrations/20260723014810_add_turn_relay_error/migration.sql +2 -0
  386. package/prisma/migrations/20260724031955_add_turn_token_usage/migration.sql +6 -0
  387. package/prisma/migrations/20260724082248_add_session_cache_rollup/migration.sql +3 -0
  388. package/prisma/schema.prisma +27 -0
  389. package/.next/standalone/.next/server/chunks/1173.js +0 -1
  390. package/.next/standalone/.next/server/chunks/3407.js +0 -1
  391. package/.next/standalone/.next/server/chunks/595.js +0 -1
  392. package/.next/standalone/.next/server/chunks/7762.js +0 -1
  393. package/.next/standalone/.next/static/XTQkt8fOQEK4mZkZTFQ_E/_buildManifest.js +0 -1
  394. package/.next/standalone/.next/static/chunks/24537-7d71bf10329d1be1.js +0 -1
  395. package/.next/standalone/.next/static/chunks/27030-19cd50b9d47b3be6.js +0 -1
  396. package/.next/standalone/.next/static/chunks/28680-f9c5e04f67982cb6.js +0 -1
  397. package/.next/standalone/.next/static/chunks/73510-c338cef00ca3cfaf.js +0 -1
  398. package/.next/standalone/.next/static/chunks/78917-a297b76c6daa9f5d.js +0 -1
  399. package/.next/standalone/.next/static/chunks/84219-09970ab1b85c61f0.js +0 -1
  400. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-d1c49cfe592deeb8.js +0 -1
  401. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-77771ef395e19922.js +0 -1
  402. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-d098269dcaa06de7.js +0 -1
  403. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-7bcaa11ee24b5754.js +0 -1
  404. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-7fbf5bc58d3dd5b0.js +0 -1
  405. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  406. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-d1c49cfe592deeb8.js +0 -1
  407. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-d1c49cfe592deeb8.js +0 -1
  408. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-d1c49cfe592deeb8.js +0 -1
  409. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-d1c49cfe592deeb8.js +0 -1
  410. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  411. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-d1c49cfe592deeb8.js +0 -1
  412. package/.next/standalone/.next/static/chunks/app/api/agents/route-d1c49cfe592deeb8.js +0 -1
  413. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  414. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-d1c49cfe592deeb8.js +0 -1
  415. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-d1c49cfe592deeb8.js +0 -1
  416. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-d1c49cfe592deeb8.js +0 -1
  417. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-d1c49cfe592deeb8.js +0 -1
  418. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-d1c49cfe592deeb8.js +0 -1
  419. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-d1c49cfe592deeb8.js +0 -1
  420. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-d1c49cfe592deeb8.js +0 -1
  421. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-d1c49cfe592deeb8.js +0 -1
  422. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-d1c49cfe592deeb8.js +0 -1
  423. package/.next/standalone/.next/static/chunks/app/api/comments/route-d1c49cfe592deeb8.js +0 -1
  424. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-d1c49cfe592deeb8.js +0 -1
  425. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-d1c49cfe592deeb8.js +0 -1
  426. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-d1c49cfe592deeb8.js +0 -1
  427. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-d1c49cfe592deeb8.js +0 -1
  428. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-d1c49cfe592deeb8.js +0 -1
  429. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-d1c49cfe592deeb8.js +0 -1
  430. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-d1c49cfe592deeb8.js +0 -1
  431. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-d1c49cfe592deeb8.js +0 -1
  432. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-d1c49cfe592deeb8.js +0 -1
  433. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-d1c49cfe592deeb8.js +0 -1
  434. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-d1c49cfe592deeb8.js +0 -1
  435. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-d1c49cfe592deeb8.js +0 -1
  436. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-d1c49cfe592deeb8.js +0 -1
  437. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  438. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-d1c49cfe592deeb8.js +0 -1
  439. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-d1c49cfe592deeb8.js +0 -1
  440. package/.next/standalone/.next/static/chunks/app/api/events/route-d1c49cfe592deeb8.js +0 -1
  441. package/.next/standalone/.next/static/chunks/app/api/health/route-d1c49cfe592deeb8.js +0 -1
  442. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-d1c49cfe592deeb8.js +0 -1
  443. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-d1c49cfe592deeb8.js +0 -1
  444. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-d1c49cfe592deeb8.js +0 -1
  445. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-d1c49cfe592deeb8.js +0 -1
  446. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-d1c49cfe592deeb8.js +0 -1
  447. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  448. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-d1c49cfe592deeb8.js +0 -1
  449. package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-d1c49cfe592deeb8.js +0 -1
  450. package/.next/standalone/.next/static/chunks/app/api/mcp/route-d1c49cfe592deeb8.js +0 -1
  451. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-d1c49cfe592deeb8.js +0 -1
  452. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-d1c49cfe592deeb8.js +0 -1
  453. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-d1c49cfe592deeb8.js +0 -1
  454. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-d1c49cfe592deeb8.js +0 -1
  455. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-d1c49cfe592deeb8.js +0 -1
  456. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-d1c49cfe592deeb8.js +0 -1
  457. package/.next/standalone/.next/static/chunks/app/api/notifications/route-d1c49cfe592deeb8.js +0 -1
  458. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-d1c49cfe592deeb8.js +0 -1
  459. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-d1c49cfe592deeb8.js +0 -1
  460. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  461. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-d1c49cfe592deeb8.js +0 -1
  462. package/.next/standalone/.next/static/chunks/app/api/project-visits/pin/route-d1c49cfe592deeb8.js +0 -1
  463. package/.next/standalone/.next/static/chunks/app/api/project-visits/route-d1c49cfe592deeb8.js +0 -1
  464. package/.next/standalone/.next/static/chunks/app/api/project-visits/visit/route-d1c49cfe592deeb8.js +0 -1
  465. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-d1c49cfe592deeb8.js +0 -1
  466. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-d1c49cfe592deeb8.js +0 -1
  467. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-d1c49cfe592deeb8.js +0 -1
  468. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-d1c49cfe592deeb8.js +0 -1
  469. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-d1c49cfe592deeb8.js +0 -1
  470. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-d1c49cfe592deeb8.js +0 -1
  471. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-d1c49cfe592deeb8.js +0 -1
  472. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-d1c49cfe592deeb8.js +0 -1
  473. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-d1c49cfe592deeb8.js +0 -1
  474. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-d1c49cfe592deeb8.js +0 -1
  475. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  476. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-d1c49cfe592deeb8.js +0 -1
  477. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-d1c49cfe592deeb8.js +0 -1
  478. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-d1c49cfe592deeb8.js +0 -1
  479. package/.next/standalone/.next/static/chunks/app/api/projects/route-d1c49cfe592deeb8.js +0 -1
  480. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-d1c49cfe592deeb8.js +0 -1
  481. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-d1c49cfe592deeb8.js +0 -1
  482. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-d1c49cfe592deeb8.js +0 -1
  483. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-d1c49cfe592deeb8.js +0 -1
  484. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  485. package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  486. package/.next/standalone/.next/static/chunks/app/api/references/route-d1c49cfe592deeb8.js +0 -1
  487. package/.next/standalone/.next/static/chunks/app/api/search/route-d1c49cfe592deeb8.js +0 -1
  488. package/.next/standalone/.next/static/chunks/app/api/session/route-d1c49cfe592deeb8.js +0 -1
  489. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  490. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-d1c49cfe592deeb8.js +0 -1
  491. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-d1c49cfe592deeb8.js +0 -1
  492. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-d1c49cfe592deeb8.js +0 -1
  493. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-d1c49cfe592deeb8.js +0 -1
  494. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-d1c49cfe592deeb8.js +0 -1
  495. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-d1c49cfe592deeb8.js +0 -1
  496. package/.next/standalone/.next/static/css/617133917710c831.css +0 -1
  497. /package/.next/standalone/.next/static/{XTQkt8fOQEK4mZkZTFQ_E → WVmgQzimrMNvGtHx6Cqm1}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@ description: Chorus AI Agent collaboration platform — overview, common tools,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Development workflow — claim tasks, report work, manage se
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Idea workflow — claim ideas, run elaboration rounds, and p
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Opt-in OpenSpec-mode authoring for Chorus PM workflows in Claude Co
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -90,7 +90,7 @@ chorus-api.sh mcp-tool <tool_name> "$PAYLOAD"
90
90
  with `$PAYLOAD` built using `json_encode_file` (defined in §3.4). Calling these tools directly from the agent's MCP harness with a hand-typed `content` field is a **protocol violation** for OpenSpec mode and will fail review. Reasons:
91
91
 
92
92
  1. **Token cost.** Re-typing a multi-thousand-line markdown body through the LLM burns input + output tokens for every draft. The wrapper streams bytes through `jq -Rs '.'` — content never enters LLM context. A typical 3-doc proposal mirror via the script costs roughly zero content-tokens; via direct MCP it routinely costs 20k+.
93
- 2. **Byte-equality.** `jq -Rs '.'` is a byte-faithful encoder: backslashes, quotes, newlines, code-fence content, zero-width chars all survive. LLM re-emission has a non-zero failure rate on long markdown — table alignment drifts, fence escapes get "fixed", long URLs wrap. The byte-equality guarantee (modulo trailing `\n`) holds **only** on the wrapper path.
93
+ 2. **Byte-equality.** `jq -Rs '.'` is a byte-faithful encoder: backslashes, quotes, newlines, code-fence content, zero-width chars all survive. LLM re-emission has a non-zero failure rate on long markdown — table alignment drifts, fence escapes get "fixed", long URLs wrap. The exact byte-equality guarantee holds **only** on the wrapper path.
94
94
  3. **Single source of truth.** With the wrapper, the local `openspec/changes/<slug>/*.md` is authoritative and Chorus is a mirror. With agent re-typing, authority splits between local file and whatever the LLM happened to output — a future diff cannot tell which one is correct.
95
95
 
96
96
  ### Rule 2 — Halt on error via `chorus_check_response`
@@ -226,7 +226,7 @@ json_encode_file() {
226
226
  }
227
227
  ```
228
228
 
229
- Round-trip: the Chorus backend appends a single `\n` to draft content on write, so server `content` is **byte-equal modulo a trailing newline**. Reviewers diffing local file vs server should ignore that one byte.
229
+ Round-trip verification is exact: a trailing newline difference is real drift and MUST NOT be normalized or ignored.
230
230
 
231
231
  ### 3.5 Create the proposal container with the slug provenance line
232
232
 
@@ -329,7 +329,11 @@ The hook is read-only; you (the agent) perform the archive:
329
329
 
330
330
  3. **Halt on any error** from `openspec archive` or `chorus_pm_update_document`. Print stderr verbatim, post a comment on the proposal recording the failure (`chorus_add_comment` with `targetType: "proposal"`, `targetUuid: <proposalUuid>`), then stop. No retry. Matches §6 "no silent errors." (Comment on the proposal, not the idea: the failure is in archiving proposal-derived specs, and proposals can be `inputType: "document"` with no idea attached.)
331
331
 
332
- 4. **Confirm success.** List `openspec/specs/<capability>/spec.md` files and verify they round-trip byte-equal (modulo trailing newline) with their Chorus Document counterparts.
332
+ 4. **Confirm success.** Resolve each matching Document UUID and run
333
+ `verify-document-roundtrip.sh <local-spec-path> <document-uuid>`. This
334
+ performs exact-byte comparison and metadata-only mismatch diagnostics. Do
335
+ not replace it with recursive `jq`, `head`, command substitution, or newline
336
+ normalization.
333
337
 
334
338
  **Strict opt-in:** if the verified task is not the last of its idea, OR the proposal description carries no `OpenSpec change slug: <slug>` line, OR the local shell has no `openspec` CLI, the hook exits 0 silently and no archive reminder is injected. Existing free-form behavior is preserved.
335
339
 
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Quick Task workflow — skip Idea→Proposal, create tasks directly
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Review workflow — approve/reject proposals, verify tasks,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Full-auto AI-DLC pipeline — from prompt to done. Automates the en
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -44,7 +44,7 @@ is_tty() { [ -t 0 ] && [ -t 1 ]; }
44
44
  # source modes can never diverge.
45
45
  SKILLS="chorus-idea chorus-proposal chorus-develop chorus-yolo chorus-review chorus-quick-dev chorus-brainstorm chorus-openspec-aware"
46
46
  REVIEWER_AGENTS="chorus-code-reviewer chorus-proposal-reviewer chorus-task-reviewer"
47
- HOOK_SCRIPTS="on-agent-spawn.sh on-stop.sh on-post-submit-proposal.sh on-post-submit-for-verify.sh on-post-verify-task.sh chorus-api.sh test-syntax.sh"
47
+ HOOK_SCRIPTS="on-agent-spawn.sh on-stop.sh on-post-submit-proposal.sh on-post-submit-for-verify.sh on-post-verify-task.sh chorus-api.sh verify-document-roundtrip.sh test-syntax.sh"
48
48
 
49
49
  CHORUS_URL_DEFAULT="${CHORUS_URL_DEFAULT:-http://localhost:8637/api/mcp}"
50
50
 
@@ -4,7 +4,7 @@ description: Optional divergent-then-convergent dialogue for fuzzy ideas. Invoke
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Development workflow — claim tasks, report work, manage se
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Idea workflow — claim ideas, run elaboration rounds, and p
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Opt-in OpenSpec-mode authoring for Chorus PM workflows in Kiro CLI.
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -88,7 +88,7 @@ chorus-api.sh mcp-tool <tool_name> "$PAYLOAD"
88
88
  with `$PAYLOAD` built using `json_encode_file` (defined in §3.4). Calling these tools directly from the agent's MCP harness with a hand-typed `content` field is a **protocol violation** for OpenSpec mode and will fail review. Reasons:
89
89
 
90
90
  1. **Token cost.** Re-typing a multi-thousand-line markdown body through the LLM burns input + output tokens for every draft. The wrapper streams bytes through `jq -Rs '.'` — content never enters LLM context. A typical 3-doc proposal mirror via the script costs roughly zero content-tokens; via direct MCP it routinely costs 20k+.
91
- 2. **Byte-equality.** `jq -Rs '.'` is a byte-faithful encoder: backslashes, quotes, newlines, code-fence content, zero-width chars all survive. LLM re-emission has a non-zero failure rate on long markdown — table alignment drifts, fence escapes get "fixed", long URLs wrap. The byte-equality guarantee (modulo trailing `\n`) holds **only** on the wrapper path.
91
+ 2. **Byte-equality.** `jq -Rs '.'` is a byte-faithful encoder: backslashes, quotes, newlines, code-fence content, zero-width chars all survive. LLM re-emission has a non-zero failure rate on long markdown — table alignment drifts, fence escapes get "fixed", long URLs wrap. The exact byte-equality guarantee holds **only** on the wrapper path.
92
92
  3. **Single source of truth.** With the wrapper, the local `openspec/changes/<slug>/*.md` is authoritative and Chorus is a mirror. With agent re-typing, authority splits between local file and whatever the LLM happened to output — a future diff cannot tell which one is correct.
93
93
 
94
94
  ### Rule 2 — Halt on error via `chorus_check_response`
@@ -224,7 +224,7 @@ json_encode_file() {
224
224
  }
225
225
  ```
226
226
 
227
- Round-trip: the Chorus backend appends a single `\n` to draft content on write, so server `content` is **byte-equal modulo a trailing newline**. Reviewers diffing local file vs server should ignore that one byte.
227
+ Round-trip verification is exact: a trailing newline difference is real drift and MUST NOT be normalized or ignored.
228
228
 
229
229
  ### 3.5 Create the proposal container with the slug provenance line
230
230
 
@@ -327,7 +327,11 @@ The hook is read-only; you (the agent) perform the archive:
327
327
 
328
328
  3. **Halt on any error** from `openspec archive` or `chorus_pm_update_document`. Print stderr verbatim, post a comment on the proposal recording the failure (`chorus_add_comment` with `targetType: "proposal"`, `targetUuid: <proposalUuid>`), then stop. No retry. Matches §6 "no silent errors." (Comment on the proposal, not the idea: the failure is in archiving proposal-derived specs, and proposals can be `inputType: "document"` with no idea attached.)
329
329
 
330
- 4. **Confirm success.** List `openspec/specs/<capability>/spec.md` files and verify they round-trip byte-equal (modulo trailing newline) with their Chorus Document counterparts.
330
+ 4. **Confirm success.** Resolve each matching Document UUID and run
331
+ `verify-document-roundtrip.sh <local-spec-path> <document-uuid>`. This
332
+ performs exact-byte comparison and metadata-only mismatch diagnostics. Do
333
+ not replace it with recursive `jq`, `head`, command substitution, or newline
334
+ normalization.
331
335
 
332
336
  **Strict opt-in:** if the verified task is not the last of its idea, OR the proposal description carries no `OpenSpec change slug: <slug>` line, OR the local shell has no `openspec` CLI, the hook exits 0 silently and no archive reminder is injected. Existing free-form behavior is preserved.
333
337
 
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Quick Task workflow — skip Idea→Proposal, create tasks directly
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Review workflow — approve/reject proposals, verify tasks,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Full-auto AI-DLC pipeline — from prompt to done. Automates the en
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -240,7 +240,7 @@ cmd_mcp_tool() {
240
240
  # Step 1: Initialize MCP session
241
241
  local init_payload
242
242
  init_payload=$(cat <<JSONEOF
243
- {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.14.2"}}}
243
+ {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.14.3"}}}
244
244
  JSONEOF
245
245
  )
246
246
 
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ LOCAL_FILE="${1:?local file required}"
5
+ DOCUMENT_UUID="${2:?document UUID required}"
6
+ [ -f "$LOCAL_FILE" ] || { echo "round-trip verification: local file not found" >&2; exit 2; }
7
+ command -v jq >/dev/null 2>&1 || { echo "round-trip verification: jq is required" >&2; exit 2; }
8
+
9
+ RESPONSE_FILE=$(mktemp)
10
+ REMOTE_FILE=$(mktemp)
11
+ trap 'rm -f "$RESPONSE_FILE" "$REMOTE_FILE"' EXIT
12
+ PAYLOAD=$(jq -cn --arg documentUuid "$DOCUMENT_UUID" '{documentUuid: $documentUuid}')
13
+
14
+ if [ -n "${CHORUS_MCP_CALL_BIN:-}" ]; then
15
+ "$CHORUS_MCP_CALL_BIN" chorus_get_document "$PAYLOAD" >"$RESPONSE_FILE"
16
+ else
17
+ chorus-api.sh mcp-tool chorus_get_document "$PAYLOAD" >"$RESPONSE_FILE"
18
+ fi
19
+
20
+ jq -je 'if (.content | type) == "string" then .content else error("top-level .content must be a string") end' \
21
+ "$RESPONSE_FILE" >"$REMOTE_FILE" || { echo "round-trip verification: invalid chorus_get_document response" >&2; exit 3; }
22
+ cmp -s "$LOCAL_FILE" "$REMOTE_FILE" && exit 0
23
+
24
+ hash_file() { command -v sha256sum >/dev/null 2>&1 && sha256sum "$1" | awk '{print $1}' || shasum -a 256 "$1" | awk '{print $1}'; }
25
+ echo "round-trip mismatch:" >&2
26
+ echo " local bytes=$(wc -c <"$LOCAL_FILE" | tr -d '[:space:]') sha256=$(hash_file "$LOCAL_FILE")" >&2
27
+ echo " remote bytes=$(wc -c <"$REMOTE_FILE" | tr -d '[:space:]') sha256=$(hash_file "$REMOTE_FILE")" >&2
28
+ exit 4
@@ -4,7 +4,7 @@ description: Optional divergent-then-convergent dialogue for fuzzy ideas. Invoke
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus AI Agent collaboration platform — overview, common tools,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus code-review gateway — independently
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Development workflow — claim tasks, report work, self-chec
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Idea workflow — claim ideas, run elaboration rounds, and p
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chorus-skill",
3
- "version": "0.14.2",
3
+ "version": "0.14.3",
4
4
  "description": "Chorus AI Agent collaboration platform skill. Supports PM, Developer, and Admin roles via MCP tools for the Idea-Proposal-Task workflow.",
5
5
  "author": "chorus",
6
6
  "license": "AGPL-3.0",
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus proposal reviewer — audits PRD/task
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Quick Task workflow — skip Idea→Proposal, create tasks directly
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Review workflow — approve/reject proposals, verify tasks,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus task reviewer — independently verifi
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Full-auto AI-DLC pipeline — drive a single prompt from Idea throu
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.14.2"
7
+ version: "0.14.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
package/README.md CHANGED
@@ -159,6 +159,7 @@ With no `--cwd`, the daemon serves the single directory it was launched from.
159
159
  "agentUuid": "00000000-0000-0000-0000-000000000000",
160
160
  "agentName": "My Daemon Agent",
161
161
  "cwds": ["~/work/repo-a", "~/work/repo-b"],
162
+ "agent": "codex",
162
163
  "sigintTimeoutMs": 10000
163
164
  }
164
165
  ```
@@ -169,6 +170,7 @@ With no `--cwd`, the daemon serves the single directory it was launched from.
169
170
  | `apiKey` | string | Agent API key (`cho_…`) | `--api-key` flag → `CHORUS_API_KEY` → file |
170
171
  | `agentUuid` / `agentName` | string | Authenticated identity (recorded at login) | written by `chorus login` |
171
172
  | `cwds` | string[] | Working directories the daemon serves (multi-path) | `--cwd` flag(s) → `CHORUS_DAEMON_CWDS` → file → launch dir |
173
+ | `agent` | string | Local agent backend to wake (`claude-code` / `codex` / `kiro`) | `--agent` flag → `CHORUS_AGENT` → file → `claude-code` |
172
174
  | `sigintTimeoutMs` | number | Grace window (ms) after SIGINT before a forceful kill (default `10000`) | `--sigint-timeout` flag → `CHORUS_DAEMON_SIGINT_TIMEOUT` → file → `10000` |
173
175
  | `yoloAckAt` | string | Internal — timestamp of a TTY yolo confirmation (managed automatically) | — |
174
176
 
@@ -247,6 +247,10 @@ export function parseNdjsonChunk(buffer, chunk, onObject, onWarn = () => {}) {
247
247
  export class ClaudeSpawner {
248
248
  /** @param {ClaudeSpawnerOptions} [opts] */
249
249
  constructor(opts = {}) {
250
+ this.sessionDecision = {
251
+ probeIsAuthoritative: true,
252
+ takeoverCommand: "claude --resume",
253
+ };
250
254
  this.claudePath = opts.claudePath ?? null;
251
255
  this.spawnImpl = opts.spawnImpl ?? spawn;
252
256
  this.logger = opts.logger ?? NOOP_LOGGER;
@@ -120,6 +120,8 @@ OPTIONS
120
120
  --api-key <cho_...> Agent API key (env: CHORUS_API_KEY)
121
121
  --agent <type> Local agent backend to wake (env: CHORUS_AGENT)
122
122
  (claude-code | codex | kiro; default: claude-code)
123
+ (Also configurable as "agent":"…" in ~/.chorus/daemon.json;
124
+ 'chorus daemon install' prompts for it interactively.)
123
125
  --yolo Full autonomy for the woken agent (env: CHORUS_YOLO=1)
124
126
  (--dangerously-skip-permissions: Bash, file writes, any
125
127
  command). This is the DEFAULT permission mode.
@@ -133,9 +135,12 @@ OPTIONS
133
135
  from. (Also configurable as "cwds":[…] in ~/.chorus/daemon.json.)
134
136
  -d, --detach Run detached in the background (pidfile + logfile)
135
137
  -y, --yes Non-interactive install: skip all 'chorus daemon
136
- install' prompts (credentials still resolved, persisted,
137
- and validated; install aborts if none resolve). A non-TTY
138
- install behaves as if --yes were passed.
138
+ install' prompts (credentials, served cwds, and agent
139
+ backend). Credentials are still resolved, persisted, and
140
+ validated; install aborts if none resolve. The agent
141
+ backend defaults to claude-code unless --agent/CHORUS_AGENT
142
+ is set or one is already stored. A non-TTY install behaves
143
+ as if --yes were passed.
139
144
  --verbose More detailed per-wake logging
140
145
  --sigint-timeout <ms> Grace window after SIGINT before a forceful kill
141
146
  (env: CHORUS_DAEMON_SIGINT_TIMEOUT; default 10000)
@@ -155,11 +160,13 @@ SERVICE (install)
155
160
  -d' — the daemon self-daemonizes, which systemd cannot track and which loops
156
161
  on restart. Before writing the unit, install resolves + persists + validates
157
162
  your credentials into ~/.chorus/daemon.json (so the clean boot environment can
158
- authenticate) and configures the served working directories there too (prompting
159
- interactively for one or more when none are set pass -y/--yes or run non-TTY to
160
- skip prompts). The unit captures --agent / --chorus-only but NOT --cwd (cwds live
161
- in daemon.json). On macOS/Windows install prints a correct template you install
162
- manually.
163
+ authenticate), configures the served working directories there too, and prompts
164
+ for the agent backend to wake (claude-code | codex | kiro Enter accepts the
165
+ claude-code default), then checks that backend's CLI is on PATH. Pass -y/--yes or
166
+ run non-TTY to skip all prompts (credentials are still validated). The served
167
+ cwds AND the chosen agent live in daemon.json — the unit captures only
168
+ --chorus-only, NOT --cwd or --agent. On macOS/Windows install prints a correct
169
+ template you install manually.
163
170
 
164
171
  EXAMPLES
165
172
  chorus daemon # Foreground, default yolo (TTY confirms once)
@@ -26,6 +26,11 @@ import { statSync } from "node:fs";
26
26
  import { win32 as pathWin32, posix as pathPosix } from "node:path";
27
27
  import { parseNdjsonChunk } from "./claude-spawner.mjs";
28
28
  import { getThreadId as defaultGetThreadId, setThreadId as defaultSetThreadId } from "./codex-session-map.mjs";
29
+ import {
30
+ getCodexUsageSnapshot as defaultGetUsageSnapshot,
31
+ normalizeCodexUsageEvent,
32
+ setCodexUsageSnapshot as defaultSetUsageSnapshot,
33
+ } from "./codex-usage-map.mjs";
29
34
 
30
35
  const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
31
36
 
@@ -88,9 +93,11 @@ export function buildCodexArgs({ isNew, threadId, permissionMode }) {
88
93
  */
89
94
  export function extractThreadId(obj) {
90
95
  if (!obj || typeof obj !== "object") return null;
91
- if (obj.type === "thread.started" && typeof obj.thread_id === "string") return obj.thread_id;
96
+ if (obj.type === "thread.started" && typeof obj.thread_id === "string") {
97
+ return obj.thread_id.trim() || null;
98
+ }
92
99
  if (obj.type === "session_meta" && obj.payload && typeof obj.payload.id === "string") {
93
- return obj.payload.id;
100
+ return obj.payload.id.trim() || null;
94
101
  }
95
102
  return null;
96
103
  }
@@ -163,11 +170,14 @@ export function resolveSpawnCommand(codexPath, args, platform = process.platform
163
170
  * @property {NodeJS.Platform} [platform] Injectable for tests; gates POSIX `detached`.
164
171
  * @property {(anchor: string) => string|null} [getThreadIdFn] Injectable session-map read.
165
172
  * @property {(anchor: string, threadId: string) => void} [setThreadIdFn] Injectable session-map write.
173
+ * @property {(anchor: string, threadId: string) => object|null} [getUsageSnapshotFn]
174
+ * @property {(anchor: string, threadId: string, usage: object) => void} [setUsageSnapshotFn]
166
175
  */
167
176
 
168
177
  export class CodexSpawner {
169
178
  /** @param {CodexSpawnerOptions} [opts] */
170
179
  constructor(opts = {}) {
180
+ this.sessionDecision = { probeIsAuthoritative: false };
171
181
  this.codexPath = opts.codexPath ?? null;
172
182
  this.spawnImpl = opts.spawnImpl ?? spawn;
173
183
  this.logger = opts.logger ?? NOOP_LOGGER;
@@ -176,6 +186,8 @@ export class CodexSpawner {
176
186
  this.platform = opts.platform ?? process.platform;
177
187
  this.getThreadIdFn = opts.getThreadIdFn ?? defaultGetThreadId;
178
188
  this.setThreadIdFn = opts.setThreadIdFn ?? defaultSetThreadId;
189
+ this.getUsageSnapshotFn = opts.getUsageSnapshotFn ?? defaultGetUsageSnapshot;
190
+ this.setUsageSnapshotFn = opts.setUsageSnapshotFn ?? defaultSetUsageSnapshot;
179
191
  this.resolveCodexPathFn = opts.resolveCodexPathFn ?? resolveCodexPath;
180
192
  }
181
193
 
@@ -198,6 +210,13 @@ export class CodexSpawner {
198
210
  // waker's Claude transcript probe: a recorded thread id means resume.
199
211
  const knownThreadId = anchor ? this.getThreadIdFn(anchor) : null;
200
212
  const isNew = !knownThreadId;
213
+ let previousUsage = knownThreadId
214
+ ? this.getUsageSnapshotFn(anchor, knownThreadId)
215
+ : null;
216
+ // Existing threads created before this baseline store was introduced cannot
217
+ // yield a trustworthy first delta. Seed once and omit that turn's usage
218
+ // instead of publishing the entire historical cumulative total.
219
+ let needsUsageSeed = Boolean(knownThreadId && !previousUsage);
201
220
 
202
221
  const codexPath = this.codexPath ?? this.resolveCodexPathFn();
203
222
  if (!codexPath) {
@@ -249,6 +268,7 @@ export class CodexSpawner {
249
268
 
250
269
  let stdoutBuf = "";
251
270
  let observedThreadId = knownThreadId || null;
271
+ let threadIdPersisted = false;
252
272
 
253
273
  child.stdout?.setEncoding?.("utf8");
254
274
  child.stdout?.on("data", (chunk) => {
@@ -257,10 +277,27 @@ export class CodexSpawner {
257
277
  String(chunk),
258
278
  (obj) => {
259
279
  const tid = extractThreadId(obj);
260
- if (tid) observedThreadId = tid;
280
+ if (tid) {
281
+ observedThreadId = tid;
282
+ if (isNew && anchor && !threadIdPersisted) {
283
+ threadIdPersisted = true;
284
+ this.setThreadIdFn(anchor, tid);
285
+ }
286
+ }
287
+ let delivered = obj;
288
+ if (obj?.type === "turn.completed" && obj.usage) {
289
+ delivered = needsUsageSeed
290
+ ? { ...obj, usage: null }
291
+ : normalizeCodexUsageEvent(obj, previousUsage);
292
+ if (anchor && observedThreadId) {
293
+ this.setUsageSnapshotFn(anchor, observedThreadId, obj.usage);
294
+ }
295
+ previousUsage = obj.usage;
296
+ needsUsageSeed = false;
297
+ }
261
298
  if (onMessage) {
262
299
  try {
263
- onMessage(obj);
300
+ onMessage(delivered);
264
301
  } catch (err) {
265
302
  this.logger.warn(`[Chorus] onMessage handler threw: ${err}`);
266
303
  }
@@ -285,12 +322,6 @@ export class CodexSpawner {
285
322
  if (code !== 0) {
286
323
  this.logger.warn(`[Chorus] codex exited with code ${code}`);
287
324
  }
288
- // Persist anchor→thread_id only on a fresh, successful run that produced a
289
- // new id — so a later wake for this anchor resumes it. Best-effort; the
290
- // session map swallows its own IO errors.
291
- if (code === 0 && isNew && anchor && observedThreadId) {
292
- this.setThreadIdFn(anchor, observedThreadId);
293
- }
294
325
  resolve({ sessionId: observedThreadId || anchor, exitCode: code, isNew });
295
326
  });
296
327