@chorus-aidlc/chorus 0.6.7 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/.next/standalone/.env +2 -1
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/app-build-manifest.json +398 -379
  4. package/.next/standalone/.next/app-path-routes-manifest.json +42 -40
  5. package/.next/standalone/.next/build-manifest.json +5 -5
  6. package/.next/standalone/.next/prerender-manifest.json +59 -35
  7. package/.next/standalone/.next/react-loadable-manifest.json +2 -2
  8. package/.next/standalone/.next/routes-manifest.json +6 -0
  9. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +2 -2
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +2 -2
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  46. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +2 -2
  49. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  52. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  56. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  57. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
  60. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  61. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/admin/companies.html +1 -1
  63. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  64. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/admin.html +1 -1
  66. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  67. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route.js +1 -1
  68. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/admin/companies/route.js +1 -1
  70. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/agents/[uuid]/route.js +1 -1
  74. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/agents/route.js +1 -1
  77. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/auth/company-oidc/route.js +1 -0
  83. package/.next/standalone/.next/server/app/api/auth/company-oidc/route.js.nft.json +1 -0
  84. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -0
  85. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/auth/identify/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  100. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  102. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  104. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  106. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/mcp/route.js +6 -6
  108. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  118. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  120. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/project-groups/route.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/projects/[uuid]/activity/route.js +1 -1
  124. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  126. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.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.js +1 -1
  130. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  132. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  134. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  136. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  138. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  140. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  142. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  144. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  146. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  148. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  150. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  152. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  154. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  156. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  158. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  160. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  164. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  165. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  166. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  168. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  170. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  171. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  172. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  174. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/index.html +1 -1
  176. package/.next/standalone/.next/server/app/index.rsc +2 -2
  177. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  179. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  180. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  182. package/.next/standalone/.next/server/app/login/callback.rsc +3 -3
  183. package/.next/standalone/.next/server/app/login/page.js +1 -1
  184. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/login/pick-workspace/page.js +2 -0
  186. package/.next/standalone/.next/server/app/login/pick-workspace/page.js.nft.json +1 -0
  187. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -0
  188. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -0
  189. package/.next/standalone/.next/server/app/login/pick-workspace.meta +7 -0
  190. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +24 -0
  191. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
  193. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +2 -2
  194. package/.next/standalone/.next/server/app/login.html +1 -1
  195. package/.next/standalone/.next/server/app/login.rsc +3 -3
  196. package/.next/standalone/.next/server/app/onboarding/page.js +5 -4
  197. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  200. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  201. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  202. package/.next/standalone/.next/server/app/projects.html +1 -1
  203. package/.next/standalone/.next/server/app/projects.rsc +4 -4
  204. package/.next/standalone/.next/server/app/settings.html +1 -1
  205. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  206. package/.next/standalone/.next/server/app-paths-manifest.json +42 -40
  207. package/.next/standalone/.next/server/chunks/1596.js +1 -1
  208. package/.next/standalone/.next/server/chunks/1639.js +1 -0
  209. package/.next/standalone/.next/server/chunks/1871.js +1 -0
  210. package/.next/standalone/.next/server/chunks/2570.js +1 -1
  211. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  212. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  213. package/.next/standalone/.next/server/chunks/{3408.js → 3300.js} +1 -1
  214. package/.next/standalone/.next/server/chunks/3611.js +158 -0
  215. package/.next/standalone/.next/server/chunks/3890.js +1 -1
  216. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  217. package/.next/standalone/.next/server/chunks/5869.js +16 -0
  218. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  219. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  220. package/.next/standalone/.next/server/chunks/6753.js +3 -3
  221. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  222. package/.next/standalone/.next/server/chunks/8251.js +1 -0
  223. package/.next/standalone/.next/server/chunks/8584.js +1 -0
  224. package/.next/standalone/.next/server/chunks/9051.js +1 -0
  225. package/.next/standalone/.next/server/chunks/920.js +1 -1
  226. package/.next/standalone/.next/server/chunks/937.js +1 -1
  227. package/.next/standalone/.next/server/chunks/9508.js +2 -2
  228. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  229. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  230. package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  231. package/.next/standalone/.next/server/pages/404.html +1 -1
  232. package/.next/standalone/.next/server/pages/500.html +1 -1
  233. package/.next/standalone/.next/server/pages-manifest.json +1 -1
  234. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  235. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  236. package/.next/standalone/.next/static/CQcM9hNpa5m8P_K5qveuk/_buildManifest.js +1 -0
  237. package/.next/standalone/.next/static/chunks/10739-5c185aa0432f5d56.js +1 -0
  238. package/.next/standalone/.next/static/chunks/{14945-45ab8dcd7d1460b0.js → 14945-0bc0086add441ba7.js} +1 -1
  239. package/.next/standalone/.next/static/chunks/19126-858a24cab6fd338a.js +1 -0
  240. package/.next/standalone/.next/static/chunks/21932-bce5ba937d1603e1.js +1 -0
  241. package/.next/standalone/.next/static/chunks/29445-04c4ab36da85b7da.js +1 -0
  242. package/.next/standalone/.next/static/chunks/34775-387b9a9967a35ccb.js +1 -0
  243. package/.next/standalone/.next/static/chunks/39611-cc227784ed679a6d.js +1 -0
  244. package/.next/standalone/.next/static/chunks/4457-b86052b2e954e357.js +1 -0
  245. package/.next/standalone/.next/static/chunks/4842-95cf4b7efd540e89.js +1 -0
  246. package/.next/standalone/.next/static/chunks/4860.d626399834b496e5.js +1 -0
  247. package/.next/standalone/.next/static/chunks/53298-82b9c818cd70686d.js +1 -0
  248. package/.next/standalone/.next/static/chunks/{72156-693a7612a0a1927c.js → 53664-a2be2eaacce03f0f.js} +1 -1
  249. package/.next/standalone/.next/static/chunks/55434-622522b242e7747f.js +1 -0
  250. package/.next/standalone/.next/static/chunks/95750-3d0d1d48995d1088.js +1 -0
  251. package/.next/standalone/.next/static/chunks/96919-8cbf6310c703e7af.js +1 -0
  252. package/.next/standalone/.next/static/chunks/{52162.90c7520be06645a7.js → 96924.93f7dab7363f09ac.js} +1 -1
  253. package/.next/standalone/.next/static/chunks/{99373.5b5e7a2cd5147b83.js → 99373.aedaca88297c6d8b.js} +1 -1
  254. package/.next/standalone/.next/static/chunks/99513-24849ff68a8098e1.js +1 -0
  255. package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-45973b20578f2dd7.js → layout-acddb9c84f5d1607.js} +1 -1
  256. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-63a6a5b6cf9ecf87.js +1 -0
  257. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-e81d22f021f61318.js +1 -0
  258. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-b4c6141dd26cc506.js +1 -0
  259. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-4bf7bff8d68509f9.js +1 -0
  260. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-37a0cea0ba40c31b.js +1 -0
  261. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page-2d820769aa7bcaf6.js +1 -0
  262. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/page-dec0e71221d77928.js +1 -0
  263. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-355321010dd82e56.js +1 -0
  264. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/{page-59f6f1967c3dfcad.js → page-bc66567cb9c40bf0.js} +1 -1
  265. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/{page-a4995a788651e9bc.js → page-86cfeb421fa97830.js} +1 -1
  266. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-7fe70579023330da.js +1 -0
  267. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-8c51993bb3866a55.js +1 -0
  268. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-7c30b3f9f2b8f520.js → page-80566dcc1cd42bee.js} +1 -1
  269. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-8db25385236a9bbf.js +1 -0
  270. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-e81d22f021f61318.js +1 -0
  271. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-e81d22f021f61318.js +1 -0
  272. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-e81d22f021f61318.js +1 -0
  273. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-e81d22f021f61318.js +1 -0
  274. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-e81d22f021f61318.js +1 -0
  275. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-e81d22f021f61318.js +1 -0
  276. package/.next/standalone/.next/static/chunks/app/api/agents/route-e81d22f021f61318.js +1 -0
  277. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-e81d22f021f61318.js +1 -0
  278. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-e81d22f021f61318.js +1 -0
  279. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-e81d22f021f61318.js +1 -0
  280. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-e81d22f021f61318.js +1 -0
  281. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-e81d22f021f61318.js +1 -0
  282. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-e81d22f021f61318.js +1 -0
  283. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-e81d22f021f61318.js +1 -0
  284. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-e81d22f021f61318.js +1 -0
  285. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-e81d22f021f61318.js +1 -0
  286. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-e81d22f021f61318.js +1 -0
  287. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-e81d22f021f61318.js +1 -0
  288. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-e81d22f021f61318.js +1 -0
  289. package/.next/standalone/.next/static/chunks/app/api/comments/route-e81d22f021f61318.js +1 -0
  290. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-e81d22f021f61318.js +1 -0
  291. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-e81d22f021f61318.js +1 -0
  292. package/.next/standalone/.next/static/chunks/app/api/events/route-e81d22f021f61318.js +1 -0
  293. package/.next/standalone/.next/static/chunks/app/api/health/route-e81d22f021f61318.js +1 -0
  294. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-e81d22f021f61318.js +1 -0
  295. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-e81d22f021f61318.js +1 -0
  296. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-e81d22f021f61318.js +1 -0
  297. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-e81d22f021f61318.js +1 -0
  298. package/.next/standalone/.next/static/chunks/app/api/mcp/route-e81d22f021f61318.js +1 -0
  299. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-e81d22f021f61318.js +1 -0
  300. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-e81d22f021f61318.js +1 -0
  301. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-e81d22f021f61318.js +1 -0
  302. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-e81d22f021f61318.js +1 -0
  303. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-e81d22f021f61318.js +1 -0
  304. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-e81d22f021f61318.js +1 -0
  305. package/.next/standalone/.next/static/chunks/app/api/notifications/route-e81d22f021f61318.js +1 -0
  306. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-e81d22f021f61318.js +1 -0
  307. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-e81d22f021f61318.js +1 -0
  308. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-e81d22f021f61318.js +1 -0
  309. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-e81d22f021f61318.js +1 -0
  310. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-e81d22f021f61318.js +1 -0
  311. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-e81d22f021f61318.js +1 -0
  312. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-e81d22f021f61318.js +1 -0
  313. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-e81d22f021f61318.js +1 -0
  314. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-e81d22f021f61318.js +1 -0
  315. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-e81d22f021f61318.js +1 -0
  316. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-e81d22f021f61318.js +1 -0
  317. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-e81d22f021f61318.js +1 -0
  318. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-e81d22f021f61318.js +1 -0
  319. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-e81d22f021f61318.js +1 -0
  320. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-e81d22f021f61318.js +1 -0
  321. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-e81d22f021f61318.js +1 -0
  322. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-e81d22f021f61318.js +1 -0
  323. package/.next/standalone/.next/static/chunks/app/api/projects/route-e81d22f021f61318.js +1 -0
  324. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-e81d22f021f61318.js +1 -0
  325. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-e81d22f021f61318.js +1 -0
  326. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-e81d22f021f61318.js +1 -0
  327. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-e81d22f021f61318.js +1 -0
  328. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-e81d22f021f61318.js +1 -0
  329. package/.next/standalone/.next/static/chunks/app/api/search/route-e81d22f021f61318.js +1 -0
  330. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-e81d22f021f61318.js +1 -0
  331. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-e81d22f021f61318.js +1 -0
  332. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-e81d22f021f61318.js +1 -0
  333. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-e81d22f021f61318.js +1 -0
  334. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-e81d22f021f61318.js +1 -0
  335. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-e81d22f021f61318.js +1 -0
  336. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-e81d22f021f61318.js +1 -0
  337. package/.next/standalone/.next/static/chunks/app/login/callback/{page-e756563d2407e942.js → page-48a34c31a0f8e58c.js} +1 -1
  338. package/.next/standalone/.next/static/chunks/app/login/page-dcb689dfe6e69879.js +1 -0
  339. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-ee9bda8bfc4e0697.js +1 -0
  340. package/.next/standalone/.next/static/chunks/app/onboarding/page-e9409a2935c3c480.js +1 -0
  341. package/.next/standalone/.next/static/chunks/{webpack-17a45e2f5f3cd686.js → webpack-da41e6b9f3fe2f48.js} +1 -1
  342. package/.next/standalone/.next/static/css/ca9796ac54f96058.css +1 -0
  343. package/.next/standalone/package.json +7 -1
  344. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  345. package/.next/standalone/public/chorus-plugin/agents/proposal-reviewer.md +5 -2
  346. package/.next/standalone/public/chorus-plugin/agents/task-reviewer.md +5 -2
  347. package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +11 -4
  348. package/.next/standalone/public/chorus-plugin/bin/on-subagent-start.sh +1 -1
  349. package/.next/standalone/public/chorus-plugin/bin/on-subagent-stop.sh +5 -5
  350. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +43 -18
  351. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +3 -1
  352. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  353. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +2 -2
  354. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +3 -3
  355. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +4 -3
  356. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +19 -18
  357. package/.next/standalone/public/install-codex.sh +304 -0
  358. package/.next/standalone/public/skill/chorus/SKILL.md +44 -19
  359. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +2 -2
  360. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +3 -3
  361. package/.next/standalone/public/test-install-codex.sh +165 -0
  362. package/README.md +11 -38
  363. package/README.zh.md +11 -38
  364. package/package.json +7 -1
  365. package/prisma/migrations/20260430034110_add_agent_permissions/migration.sql +2 -0
  366. package/prisma/schema.prisma +1 -0
  367. package/.next/standalone/.next/server/chunks/1386.js +0 -1
  368. package/.next/standalone/.next/server/chunks/1526.js +0 -1
  369. package/.next/standalone/.next/server/chunks/3088.js +0 -1
  370. package/.next/standalone/.next/server/chunks/4152.js +0 -1
  371. package/.next/standalone/.next/server/chunks/4772.js +0 -158
  372. package/.next/standalone/.next/server/chunks/8104.js +0 -16
  373. package/.next/standalone/.next/server/chunks/9408.js +0 -1
  374. package/.next/standalone/.next/static/chunks/10739-f8a95983c740edff.js +0 -1
  375. package/.next/standalone/.next/static/chunks/19126-ce11a472a7b46715.js +0 -1
  376. package/.next/standalone/.next/static/chunks/192-2fe41d1be4cf52c7.js +0 -1
  377. package/.next/standalone/.next/static/chunks/36940-1a052dcfd7a51c42.js +0 -1
  378. package/.next/standalone/.next/static/chunks/4860.e2abb2e82b6cc9b4.js +0 -1
  379. package/.next/standalone/.next/static/chunks/53011-6c6e5c3c761b4229.js +0 -1
  380. package/.next/standalone/.next/static/chunks/55203-e226f28d874a003b.js +0 -1
  381. package/.next/standalone/.next/static/chunks/58245-b2ea112ace9624d2.js +0 -1
  382. package/.next/standalone/.next/static/chunks/59703-726546958cd4cf44.js +0 -1
  383. package/.next/standalone/.next/static/chunks/62326-65d43abf563d7ce2.js +0 -1
  384. package/.next/standalone/.next/static/chunks/67312-2b0c88796d8a1f83.js +0 -1
  385. package/.next/standalone/.next/static/chunks/71350-88c2649fc693c1e8.js +0 -1
  386. package/.next/standalone/.next/static/chunks/89310-e7dd1f2b9518aeb2.js +0 -1
  387. package/.next/standalone/.next/static/chunks/96924-847b528f7abad0e5.js +0 -1
  388. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-78f88c60bbff6c0f.js +0 -1
  389. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-0e35b9b3fc9b614e.js +0 -1
  390. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-61ad25356f1bcf61.js +0 -1
  391. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-cfd59c5238497200.js +0 -1
  392. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-9d721a820e1058b5.js +0 -1
  393. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page-9199629492f0d6cc.js +0 -1
  394. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/page-164acb03167c8257.js +0 -1
  395. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-642981c5c760bfef.js +0 -1
  396. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-38e4430e5591fbff.js +0 -1
  397. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-cb3978ef57e7197a.js +0 -1
  398. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-94169bdcca8cb817.js +0 -1
  399. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  400. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-0e35b9b3fc9b614e.js +0 -1
  401. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-0e35b9b3fc9b614e.js +0 -1
  402. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-0e35b9b3fc9b614e.js +0 -1
  403. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  404. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-0e35b9b3fc9b614e.js +0 -1
  405. package/.next/standalone/.next/static/chunks/app/api/agents/route-0e35b9b3fc9b614e.js +0 -1
  406. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  407. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-0e35b9b3fc9b614e.js +0 -1
  408. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-0e35b9b3fc9b614e.js +0 -1
  409. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-0e35b9b3fc9b614e.js +0 -1
  410. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-0e35b9b3fc9b614e.js +0 -1
  411. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-0e35b9b3fc9b614e.js +0 -1
  412. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-0e35b9b3fc9b614e.js +0 -1
  413. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-0e35b9b3fc9b614e.js +0 -1
  414. package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-0e35b9b3fc9b614e.js +0 -1
  415. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-0e35b9b3fc9b614e.js +0 -1
  416. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-0e35b9b3fc9b614e.js +0 -1
  417. package/.next/standalone/.next/static/chunks/app/api/comments/route-0e35b9b3fc9b614e.js +0 -1
  418. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  419. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-0e35b9b3fc9b614e.js +0 -1
  420. package/.next/standalone/.next/static/chunks/app/api/events/route-0e35b9b3fc9b614e.js +0 -1
  421. package/.next/standalone/.next/static/chunks/app/api/health/route-0e35b9b3fc9b614e.js +0 -1
  422. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-0e35b9b3fc9b614e.js +0 -1
  423. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-0e35b9b3fc9b614e.js +0 -1
  424. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-0e35b9b3fc9b614e.js +0 -1
  425. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  426. package/.next/standalone/.next/static/chunks/app/api/mcp/route-0e35b9b3fc9b614e.js +0 -1
  427. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-0e35b9b3fc9b614e.js +0 -1
  428. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-0e35b9b3fc9b614e.js +0 -1
  429. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-0e35b9b3fc9b614e.js +0 -1
  430. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-0e35b9b3fc9b614e.js +0 -1
  431. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-0e35b9b3fc9b614e.js +0 -1
  432. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-0e35b9b3fc9b614e.js +0 -1
  433. package/.next/standalone/.next/static/chunks/app/api/notifications/route-0e35b9b3fc9b614e.js +0 -1
  434. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-0e35b9b3fc9b614e.js +0 -1
  435. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-0e35b9b3fc9b614e.js +0 -1
  436. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  437. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-0e35b9b3fc9b614e.js +0 -1
  438. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-0e35b9b3fc9b614e.js +0 -1
  439. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-0e35b9b3fc9b614e.js +0 -1
  440. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-0e35b9b3fc9b614e.js +0 -1
  441. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-0e35b9b3fc9b614e.js +0 -1
  442. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-0e35b9b3fc9b614e.js +0 -1
  443. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-0e35b9b3fc9b614e.js +0 -1
  444. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-0e35b9b3fc9b614e.js +0 -1
  445. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-0e35b9b3fc9b614e.js +0 -1
  446. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-0e35b9b3fc9b614e.js +0 -1
  447. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  448. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-0e35b9b3fc9b614e.js +0 -1
  449. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-0e35b9b3fc9b614e.js +0 -1
  450. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-0e35b9b3fc9b614e.js +0 -1
  451. package/.next/standalone/.next/static/chunks/app/api/projects/route-0e35b9b3fc9b614e.js +0 -1
  452. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-0e35b9b3fc9b614e.js +0 -1
  453. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-0e35b9b3fc9b614e.js +0 -1
  454. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-0e35b9b3fc9b614e.js +0 -1
  455. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-0e35b9b3fc9b614e.js +0 -1
  456. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  457. package/.next/standalone/.next/static/chunks/app/api/search/route-0e35b9b3fc9b614e.js +0 -1
  458. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  459. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-0e35b9b3fc9b614e.js +0 -1
  460. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-0e35b9b3fc9b614e.js +0 -1
  461. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-0e35b9b3fc9b614e.js +0 -1
  462. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-0e35b9b3fc9b614e.js +0 -1
  463. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-0e35b9b3fc9b614e.js +0 -1
  464. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-0e35b9b3fc9b614e.js +0 -1
  465. package/.next/standalone/.next/static/chunks/app/login/page-d7e41e281967f94d.js +0 -1
  466. package/.next/standalone/.next/static/chunks/app/onboarding/page-834ecbaf55d82ba5.js +0 -1
  467. package/.next/standalone/.next/static/css/99c7a0c50ad6bd32.css +0 -1
  468. package/.next/standalone/.next/static/kc2HwRxZUiMeDzrPiJW6z/_buildManifest.js +0 -1
  469. /package/.next/standalone/.next/static/{kc2HwRxZUiMeDzrPiJW6z → CQcM9hNpa5m8P_K5qveuk}/_ssgManifest.js +0 -0
@@ -2,7 +2,7 @@
2
2
  description: "Review submitted Chorus tasks — verify implementation against AC and proposal documents. Spawn after chorus_submit_for_verify."
3
3
  model: inherit
4
4
  color: red
5
- maxTurns: 20
5
+ maxTurns: 25
6
6
  disallowedTools:
7
7
  - Agent
8
8
  - ExitPlanMode
@@ -16,6 +16,7 @@ criticalSystemReminder_EXPERIMENTAL: >
16
16
  Classify every finding as BLOCKER (blocks correctness: build/test failure, AC not implemented, semantic contradiction) or NOTE (non-blocking: pseudocode mismatch, wording difference, style suggestion).
17
17
  You MUST end with VERDICT: PASS, VERDICT: PASS WITH NOTES, or VERDICT: FAIL. Has BLOCKERs → FAIL. Only NOTEs → PASS WITH NOTES. Nothing → PASS.
18
18
  If this is Round 2+, focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs.
19
+ Turn budget rule: When ≤3 turns remain in your budget, STOP reading files AND stop running bash/tests immediately and post your current findings as a comment via chorus_add_comment. Incomplete findings posted are strictly better than no comment at all.
19
20
  Do NOT confirm — find what's wrong. Be efficient: batch data gathering, then one final comment.
20
21
  ---
21
22
 
@@ -50,6 +51,8 @@ You will receive a taskUuid. Your job is to fetch the task, its AC, and the prop
50
51
 
51
52
  **Efficiency rule:** Gather ALL context in Steps 1-2 before verifying. Batch your tool calls — do not alternate between fetching and writing conclusions.
52
53
 
54
+ **Turn budget rule:** When ≤3 turns remain in your budget, STOP reading files AND stop running bash/tests immediately and post your current findings as a comment via chorus_add_comment. Incomplete findings posted are strictly better than no comment at all.
55
+
53
56
  **Step 1: Gather context**
54
57
  ```
55
58
  chorus_get_task({ taskUuid: "<uuid>" })
@@ -111,7 +114,7 @@ VERDICT decision: has BLOCKERs → FAIL. Only NOTEs → PASS WITH NOTES. Nothing
111
114
 
112
115
  You may receive the current review round number in your context.
113
116
  - **Round 1**: Full review, normal strictness.
114
- - **Round 2+**: Focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged in previous rounds. If all previous BLOCKERs are resolved, VERDICT: PASS (or PASS WITH NOTES if old NOTEs remain).
117
+ - **Round 2+**: Focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged in previous rounds. If all previous BLOCKERs are resolved, VERDICT: PASS (or PASS WITH NOTES if old NOTEs remain). Round 1 already did the full-depth review. Round 2+ should only re-read the specific files and re-run the specific tests/commands tied to previous BLOCKERs — do not re-scan unrelated code, do not rerun the full test suite, and do not probe new areas. Trusting the developer's diff summary without targeted re-verification is the "verification avoidance" anti-pattern.
115
118
 
116
119
  === RECOGNIZE YOUR OWN RATIONALIZATIONS ===
117
120
  - "The code looks correct based on my reading" — reading is not verification. Run it.
@@ -46,10 +46,17 @@ if command -v jq >/dev/null 2>&1; then
46
46
  "$API" state-set "owner_uuid" "$_OWNER_UUID"
47
47
  fi
48
48
 
49
- # Cache agent roles for TaskCompleted and Stop hooks (e.g. "developer_agent,pm_agent,admin_agent")
50
- _ROLES=$(echo "$CHECKIN_RESULT" | jq -r '.agent.roles | join(",") // empty' 2>/dev/null) || true
51
- if [ -n "$_ROLES" ]; then
52
- "$API" state-set "agent_roles" "$_ROLES"
49
+ # Cache effective permissions for downstream hooks.
50
+ # Stored as comma-separated "resource:action" pairs so hooks can substring-match
51
+ # without re-parsing JSON. Example: "idea:read,idea:write,task:read,task:write,task:admin".
52
+ _PERMS=$(echo "$CHECKIN_RESULT" | jq -r '
53
+ .agent.permissions // {}
54
+ | to_entries
55
+ | map(.key as $r | .value[] | "\($r):\(.)")
56
+ | join(",")
57
+ ' 2>/dev/null) || true
58
+ if [ -n "$_PERMS" ]; then
59
+ "$API" state-set "agent_permissions" "$_PERMS"
53
60
  fi
54
61
 
55
62
  fi
@@ -236,7 +236,7 @@ When you finish and return your summary, you MUST end it with:
236
236
  Next steps for main agent:
237
237
  1. REVIEW — spawn chorus:task-reviewer agent, then read its VERDICT comment
238
238
  2. ACT ON VERDICT: PASS/PASS WITH NOTES → mark AC passed + verify task. FAIL → reopen task and fix BLOCKERs.
239
- 3. If no admin_agent role, stop and ask the user to review and verify this task
239
+ 3. If you do not have the task:admin permission, stop and ask the user to review and verify this task
240
240
  \`\`\`
241
241
  This ensures the main agent knows to run review and verification.
242
242
 
@@ -107,13 +107,13 @@ if [ "$CLOSE_OK" = true ] && [ -n "$SESSION_DETAIL" ]; then
107
107
  TASK_STATUS=$(echo "$TASK_DETAIL" | jq -r '.status // empty' 2>/dev/null) || true
108
108
 
109
109
  if [ "$TASK_STATUS" = "to_verify" ]; then
110
- AGENT_ROLES=$("$API" state-get "agent_roles" 2>/dev/null) || true
111
- IS_ADMIN="false"
112
- case ",$AGENT_ROLES," in
113
- *,admin_agent,*) IS_ADMIN="true" ;;
110
+ AGENT_PERMS=$("$API" state-get "agent_permissions" 2>/dev/null) || true
111
+ CAN_VERIFY_TASK="false"
112
+ case ",$AGENT_PERMS," in
113
+ *,task:admin,*) CAN_VERIFY_TASK="true" ;;
114
114
  esac
115
115
 
116
- if [ "$IS_ADMIN" = "true" ]; then
116
+ if [ "$CAN_VERIFY_TASK" = "true" ]; then
117
117
  AC_TOTAL=$(echo "$TASK_DETAIL" | jq -r '.acceptanceSummary.required // 0' 2>/dev/null) || true
118
118
  ADMIN_PASSED=$(echo "$TASK_DETAIL" | jq -r '.acceptanceSummary.requiredPassed // 0' 2>/dev/null) || true
119
119
 
@@ -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.7.4"
7
+ version: "0.8.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -35,10 +35,26 @@ creates analyzes drafts PRD codes & reviews closes
35
35
 
36
36
  | Role | Responsibility | MCP Tools |
37
37
  |------|---------------|-----------|
38
- | **PM Agent** | Analyze Ideas, create Proposals (PRD + Task drafts), manage documents | Public + `chorus_pm_*` + `chorus_*_idea` |
38
+ | **PM Agent** | Analyze Ideas, create Proposals (PRD + Task drafts), manage documents | Public + `chorus_pm_*` + `chorus_*_idea` + `task:write` tools (claim/release/submit/report) |
39
39
  | **Developer Agent** | Claim Tasks, write code, report work, submit for verification | Public + `chorus_*_task` + `chorus_report_work` |
40
40
  | **Admin Agent** | Create projects/ideas, approve/reject proposals, verify tasks, manage lifecycle | Public + `chorus_admin_*` + PM + Developer tools |
41
41
 
42
+ ### Permissions
43
+
44
+ Each agent's tool visibility is driven by a **permission set**, not by the role label alone. Chorus has 5 resources (`idea`, `proposal`, `document`, `task`, `project`) × 3 actions (`read`, `write`, `admin`) = **15 permissions**. Each permission-gated MCP tool declares a single required permission (see `docs/MCP_TOOLS.md` for the full table).
45
+
46
+ **Role presets** map to permission sets:
47
+
48
+ | Preset | Permissions |
49
+ |--------|-------------|
50
+ | `developer_agent` | all `*:read` + `task:write` |
51
+ | `pm_agent` | all `*:read` + `idea:write` + `proposal:write` + `document:write` + `task:write` + `project:write` |
52
+ | `admin_agent` | all 15 permissions (every `read` + `write` + `admin`) |
53
+
54
+ **Custom permissions** are also supported: when creating an agent you can pick a preset AND/OR add individual permissions. The effective permission set is the union. Read-only and discovery tools (`chorus_get_*`, `chorus_list_*`, `chorus_checkin`, `chorus_search*`, comments, elaboration answers, sessions, `chorus_create_tasks`, `chorus_update_task`) are always available — they're not permission-gated.
55
+
56
+ > **Note**: possessing `task:write` grants *tool visibility*, not unconditional authority. Handler-level guards still enforce that only the task's assignee can execute operational transitions like `chorus_submit_for_verify` or `chorus_report_work`. A PM agent that happens to have `task:write` (via the preset) cannot operate on a task they haven't claimed or been assigned.
57
+
42
58
  ---
43
59
 
44
60
  ## Common Tools (All Roles)
@@ -228,11 +244,14 @@ API Keys must be created manually by the user in the Chorus Web UI.
228
244
  **Ask the user to:**
229
245
  1. Open the Chorus settings page (e.g., `http://localhost:8637/settings`)
230
246
  2. Click **Create API Key**
231
- 3. Enter Agent name, select role (Developer / PM / Admin)
247
+ 3. Enter Agent name, then either:
248
+ - Pick a **role preset** (Developer / PM / Admin) — recommended for the common case
249
+ - Or pick a preset and **add/remove individual permissions** (5 resources × 3 actions = 15 permissions) to get a precise custom set
232
250
  4. Click create and **immediately copy the key** (shown only once)
233
251
 
234
252
  **Security notes:**
235
- - Each Agent should have its own API Key with the minimum required role
253
+ - Each Agent should have its own API Key with the minimum required permissions
254
+ - Presets are the fastest path; custom permissions let you grant narrowly (e.g. a dev agent that also needs `idea:write` to file bugs)
236
255
  - API Keys should not be committed to version control
237
256
 
238
257
  ### 2. MCP Server Configuration
@@ -263,19 +282,25 @@ chorus_checkin()
263
282
 
264
283
  If it fails, check: API Key correct (`cho_` prefix)? URL reachable? Claude Code restarted?
265
284
 
266
- ### 4. Role-Specific Tool Access
267
-
268
- | Tool Prefix | Developer | PM | Admin |
269
- |-------------|-----------|------|-------|
270
- | `chorus_get_*` / `chorus_list_*` | Yes | Yes | Yes |
271
- | `chorus_checkin` | Yes | Yes | Yes |
272
- | `chorus_add_comment` / `chorus_get_comments` | Yes | Yes | Yes |
273
- | `chorus_claim_task` / `chorus_release_task` | Yes | No | Yes |
274
- | `chorus_update_task` / `chorus_submit_for_verify` | Yes | No | Yes |
275
- | `chorus_report_work` | Yes | No | Yes |
276
- | `chorus_claim_idea` / `chorus_release_idea` | No | Yes | Yes |
277
- | `chorus_pm_*` | No | Yes | Yes |
278
- | `chorus_admin_*` | No | No | Yes |
285
+ ### 4. Tool Access by Preset
286
+
287
+ The table below shows default tool availability for each preset (no custom permissions). Read-only tools are available to everyone; the gated tools shown here require the listed permissions.
288
+
289
+ | Tool Group | Required Permission | Developer | PM | Admin |
290
+ |------------|--------------------|-----------|------|-------|
291
+ | `chorus_get_*` / `chorus_list_*` / `chorus_search*` | (public, read) | Yes | Yes | Yes |
292
+ | `chorus_checkin` | (public) | Yes | Yes | Yes |
293
+ | `chorus_add_comment` / `chorus_get_comments` | (public) | Yes | Yes | Yes |
294
+ | `chorus_update_task` (field edits + status) | (public; assignee required for status) | Yes | Yes | Yes |
295
+ | `chorus_claim_task` / `chorus_release_task` / `chorus_submit_for_verify` / `chorus_report_work` / `chorus_report_criteria_self_check` | `task:write` | Yes | **Yes** (0.7.0+) | Yes |
296
+ | `chorus_claim_idea` / `chorus_release_idea` / `chorus_move_idea` / `chorus_pm_create_idea` / `chorus_pm_*_elaboration` | `idea:write` | No | Yes | Yes |
297
+ | `chorus_pm_create_proposal` / `chorus_pm_*_proposal` / `chorus_pm_*_draft` / `chorus_pm_create_tasks` / `chorus_pm_assign_task` / `chorus_*_task_dependency` | `proposal:write` | No | Yes | Yes |
298
+ | `chorus_pm_create_document` / `chorus_pm_update_document` | `document:write` | No | Yes | Yes |
299
+ | `chorus_admin_create_project` / `chorus_admin_*_project_group` / `chorus_admin_move_project_to_group` | `project:write` | No | **Yes** (0.7.0+) | Yes |
300
+ | `chorus_admin_approve_proposal` / `chorus_admin_close_proposal` | `proposal:admin` | No | No | Yes |
301
+ | `chorus_admin_verify_task` / `chorus_admin_reopen_task` / `chorus_admin_close_task` / `chorus_mark_acceptance_criteria` / `chorus_admin_delete_task` | `task:admin` | No | No | Yes |
302
+ | `chorus_admin_delete_idea` | `idea:admin` | No | No | Yes |
303
+ | `chorus_admin_delete_document` | `document:admin` | No | No | Yes |
279
304
 
280
305
  ### 5. Review Agent Configuration
281
306
 
@@ -367,7 +392,7 @@ This is the core overview skill. For stage-specific workflows, use:
367
392
 
368
393
  1. Call `chorus_checkin()` to learn your role and assignments
369
394
  2. Based on your role, use the appropriate skill:
370
- - **Full Auto** → `/yolo` — give a prompt, agent handles everything (requires all 3 roles: admin + pm + developer)
395
+ - **Full Auto** → `/yolo` — give a prompt, agent handles everything (requires Admin-preset permissions: write on every resource + approve/verify admin bits)
371
396
  - PM Agent → `/idea` then `/proposal`
372
397
  - Developer Agent → `/develop`
373
398
  - Admin Agent → `/review` (also has access to all PM and Developer tools)
@@ -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.7.4"
7
+ version: "0.8.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -226,6 +226,8 @@ Find the most recent comment containing `VERDICT:` and act on it:
226
226
  - **VERDICT: PASS WITH NOTES** — All AC verified, minor notes. Proceed to admin verification (notes are non-blocking).
227
227
  - **VERDICT: FAIL** — BLOCKERs found. Do NOT verify. Fix the BLOCKERs listed in the reviewer's comment, then resubmit.
228
228
 
229
+ If no new `VERDICT:` comment appears after the reviewer returns, it exhausted its `maxTurns` budget before posting. Respawn it ONCE with a concise-budget hint in the prompt: *"Stay within turn budget. Skip deep verification. Fetch task/proposal/comments, run only the core tests, and post your VERDICT comment within the first 12 turns."* If the second attempt still produces no VERDICT, review manually using the checklist and proceed.
230
+
229
231
  ### Step 9: Handle Review Feedback
230
232
 
231
233
  If the reviewer returns **FAIL**, or the task is reopened after verification:
@@ -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.7.4"
7
+ version: "0.8.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.7.4"
7
+ version: "0.8.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -266,7 +266,7 @@ chorus_pm_assign_task({ taskUuid: "<task-uuid>", agentUuid: "<developer-agent-uu
266
266
  ```
267
267
 
268
268
  - Task must be `open` or `assigned`
269
- - Target agent must have `developer` or `developer_agent` role
269
+ - Target agent must have `task: ["write"]` permission
270
270
 
271
271
  ---
272
272
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: quick-dev
3
- version: 0.7.4
3
+ version: 0.8.0
4
4
  description: Quick Task workflow — skip Idea→Proposal, create tasks directly, execute, and verify.
5
5
  ---
6
6
 
@@ -37,7 +37,7 @@ For complex work, use `/idea` + `/proposal` instead.
37
37
 
38
38
  ## Pre-Flight: Admin Self-Verify Check
39
39
 
40
- **Before creating tasks**, if you have the `admin_agent` role, ask the user:
40
+ **Before creating tasks**, if `chorus_checkin().agent.permissions.task` includes `"admin"`, ask the user:
41
41
 
42
42
  > "I have admin privileges. After development, should I verify the task myself, or leave it for another admin to verify?"
43
43
 
@@ -149,7 +149,7 @@ chorus_submit_for_verify({
149
149
  })
150
150
  ```
151
151
 
152
- **Admin self-verification:** If you have the `admin_agent` role and the user approved self-verification in the Pre-Flight check, you can verify the task yourself immediately after submitting:
152
+ **Admin self-verification:** If you have `task: ["admin"]` in `permissions` and the user approved self-verification in the Pre-Flight check, you can verify the task yourself immediately after submitting:
153
153
 
154
154
  ```
155
155
  chorus_admin_verify_task({ taskUuid: "<task-uuid>" })
@@ -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.7.4"
7
+ version: "0.8.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -69,8 +69,9 @@ When reviewing proposals or tasks, prefer spawning an independent reviewer sub-a
69
69
  - **VERDICT: PASS** — No issues found. Approve (proposals) or mark AC passed and verify (tasks).
70
70
  - **VERDICT: PASS WITH NOTES** — Minor non-blocking notes. Still approve/verify. Notes are informational.
71
71
  - **VERDICT: FAIL** — BLOCKERs found. Reject (proposals) or reopen (tasks). Fix the specific BLOCKERs listed in the comment before resubmitting.
72
- 3. **Track rounds.** Count existing VERDICT comments before spawning. After 3 rounds of FAIL on the same item, stop the loop and escalate to human review.
73
- 4. **Fallback.** If the reviewer is unavailable (e.g., agent type not registered, sub-agent spawn fails), review the item yourself using the quality checklists in the workflows below.
72
+ 3. **No new VERDICT comment?** The reviewer exhausted its `maxTurns` budget before posting. Respawn it ONCE with an explicit prompt like: *"Stay within your turn budget. Skip deep source verification — batch all MCP fetches up front, skim for obvious BLOCKERs only, and reserve your last few turns to post the VERDICT comment."* If the second attempt also fails to post, review manually using the checklists below.
73
+ 4. **Track rounds.** Count existing VERDICT comments before spawning. After 3 rounds of FAIL on the same item, stop the loop and escalate to human review.
74
+ 5. **Fallback.** If the reviewer is unavailable (e.g., agent type not registered, sub-agent spawn fails), review the item yourself using the quality checklists in the workflows below.
74
75
 
75
76
  ---
76
77
 
@@ -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.7.4"
7
+ version: "0.8.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -53,28 +53,25 @@ Full-auto AI-DLC pipeline. User provides a prompt; agent drives the entire lifec
53
53
 
54
54
  ## Prerequisites
55
55
 
56
- **All 3 agent roles are required on the API key:**
56
+ The API key needs write + admin on every resource it touches:
57
57
 
58
- | Role | Why |
58
+ | Needs | Why |
59
59
  |------|-----|
60
- | `pm_agent` | Idea creation, elaboration, proposal management (`chorus_pm_*` tools) |
61
- | `admin_agent` | Proposal approval, task verification (`chorus_admin_*` tools) |
62
- | `developer_agent` | Sub-agents claim and execute tasks (`chorus_claim_task`, `chorus_update_task`) |
63
-
64
- Sub-agents share the same API key as the main agent. The plugin injects session info into sub-agents, but **roles come from the API key itself**, not from hook injection.
60
+ | `idea: [write]` | Create ideas, run elaboration |
61
+ | `proposal: [write, admin]` | Create proposals; approve them |
62
+ | `task: [write, admin]` | Create, execute, verify tasks |
63
+ | `project: [write]` | Create the project if none is given |
65
64
 
66
65
  **Check at startup:**
67
66
 
68
67
  ```
69
- result = chorus_checkin()
70
- roles = result.agent.roles
71
-
72
- required = ["pm_agent", "admin_agent", "developer_agent"]
73
- missing = [r for r in required if r not in roles]
68
+ perms = chorus_checkin().agent.permissions
69
+ need = { idea: ["write"], proposal: ["write","admin"],
70
+ task: ["write","admin"], project: ["write"] }
74
71
 
75
- if missing:
76
- ABORT: "Cannot run /yolo. Missing required roles: {missing}.
77
- Your API key must have all 3 roles: pm_agent, admin_agent, developer_agent."
72
+ for resource, actions in need:
73
+ missing = [a for a in actions if a not in (perms[resource] or [])]
74
+ if missing: ABORT "/yolo needs {resource}: {missing}. Use an Admin-preset API key."
78
75
  ```
79
76
 
80
77
  ---
@@ -288,6 +285,8 @@ After `chorus_pm_submit_proposal`, the PostToolUse hook injects context instruct
288
285
  Proposal UUID: <uuid>"
289
286
  ```
290
287
 
288
+ 4. **No new VERDICT comment after reviewer returns?** The reviewer exhausted its `maxTurns` budget. Respawn it ONCE with a concise-budget hint: *"Stay within turn budget. Skip deep source verification. Fetch proposal + comments + idea only, skim for obvious BLOCKERs, and post your VERDICT within the first 10 turns."* If the second attempt still produces no VERDICT, treat the proposal as PASS WITH NOTES and proceed — the pipeline cannot loop forever on a silent reviewer.
289
+
291
290
  ---
292
291
 
293
292
  ### Phase 3: Task Execution (Wave-Based)
@@ -415,6 +414,8 @@ ESCALATE: "Task '{title}' failed review after {maxRounds} rounds.
415
414
 
416
415
  Continue with remaining tasks -- do not halt the entire pipeline for one stuck task.
417
416
 
417
+ **No new VERDICT comment after the task-reviewer returns?** It exhausted its `maxTurns` budget. Respawn it ONCE with a concise-budget hint: *"Stay within turn budget. Skip deep verification. Fetch task/proposal/comments, run only the core tests, and post your VERDICT within the first 12 turns."* If the second attempt also produces no VERDICT, treat as PASS WITH NOTES and proceed — do not loop indefinitely.
418
+
418
419
  ---
419
420
 
420
421
  ### Phase 5: Report
@@ -448,7 +449,7 @@ After all waves complete, output a markdown summary:
448
449
 
449
450
  | Scenario | Action |
450
451
  |----------|--------|
451
- | Missing roles at startup | Abort with message listing all 3 required roles and which are missing |
452
+ | Missing permissions at startup | Abort with message listing the missing resource/action pairs (see Prerequisites). Recommend an Admin-preset API key. |
452
453
  | Project creation fails | Report error, suggest user create project manually and retry with `--project` |
453
454
  | Proposal reviewer FAIL after maxRounds | Stop pipeline, report persisting BLOCKERs, suggest manual review |
454
455
  | Task reviewer FAIL after maxRounds | Flag task as escalation-needed, continue with other tasks |
@@ -464,7 +465,7 @@ After all waves complete, output a markdown summary:
464
465
  - Watch the wave count -- if tasks keep getting reopened, consider Ctrl+C and manually reviewing the feedback
465
466
  - All audit trail is preserved: elaboration Q&A, reviewer VERDICTs, work reports. Check Chorus UI for full history
466
467
  - For small/simple tasks, consider `/quick-dev` instead -- it skips the Idea->Proposal overhead
467
- - Sub-agents share your API key; ensure it has all 3 roles before starting
468
+ - Sub-agents share your API key; ensure it has the permissions listed in Prerequisites before starting
468
469
 
469
470
  ---
470
471