chorus-codes 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 (496) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +18 -0
  3. package/.next/build/chunks/[root-of-the-server]__0d-m0h0._.js +206 -0
  4. package/.next/build/chunks/[root-of-the-server]__0d-m0h0._.js.map +8 -0
  5. package/.next/build/chunks/[root-of-the-server]__0ubbtyl._.js +500 -0
  6. package/.next/build/chunks/[root-of-the-server]__0ubbtyl._.js.map +11 -0
  7. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_06e.r3r._.js +13 -0
  8. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_06e.r3r._.js.map +5 -0
  9. package/.next/build/chunks/[turbopack]_runtime.js +890 -0
  10. package/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
  11. package/.next/build/chunks/node_modules__pnpm_0e-dfa2._.js +6681 -0
  12. package/.next/build/chunks/node_modules__pnpm_0e-dfa2._.js.map +47 -0
  13. package/.next/build/package.json +1 -0
  14. package/.next/build/postcss.js +6 -0
  15. package/.next/build/postcss.js.map +5 -0
  16. package/.next/build-manifest.json +21 -0
  17. package/.next/cache/.previewinfo +1 -0
  18. package/.next/cache/.rscinfo +1 -0
  19. package/.next/cache/.tsbuildinfo +1 -0
  20. package/.next/dev/static/chunks/05w9_next_dist_shared_lib_0beh7rg._.js +6077 -0
  21. package/.next/dev/static/chunks/05w9_next_dist_shared_lib_0beh7rg._.js.map +69 -0
  22. package/.next/dev/static/chunks/05w9_next_dist_shared_lib_0pjsj.j._.js +6318 -0
  23. package/.next/dev/static/chunks/05w9_next_dist_shared_lib_0pjsj.j._.js.map +71 -0
  24. package/.next/dev/types/cache-life.d.ts +145 -0
  25. package/.next/dev/types/routes.d.ts +84 -0
  26. package/.next/dev/types/validator.ts +178 -0
  27. package/.next/diagnostics/build-diagnostics.json +6 -0
  28. package/.next/diagnostics/framework.json +1 -0
  29. package/.next/diagnostics/route-bundle-stats.json +176 -0
  30. package/.next/export-marker.json +6 -0
  31. package/.next/fallback-build-manifest.json +13 -0
  32. package/.next/images-manifest.json +68 -0
  33. package/.next/next-minimal-server.js.nft.json +1 -0
  34. package/.next/next-server.js.nft.json +1 -0
  35. package/.next/package.json +1 -0
  36. package/.next/prerender-manifest.json +239 -0
  37. package/.next/required-server-files.js +332 -0
  38. package/.next/required-server-files.json +332 -0
  39. package/.next/routes-manifest.json +148 -0
  40. package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  41. package/.next/server/app/_global-error/page/build-manifest.json +17 -0
  42. package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  43. package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  44. package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  45. package/.next/server/app/_global-error/page.js +10 -0
  46. package/.next/server/app/_global-error/page.js.map +5 -0
  47. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  48. package/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
  49. package/.next/server/app/_global-error.html +1 -0
  50. package/.next/server/app/_global-error.meta +15 -0
  51. package/.next/server/app/_global-error.rsc +15 -0
  52. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
  53. package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
  54. package/.next/server/app/_global-error.segments/_head.segment.rsc +6 -0
  55. package/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
  56. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  57. package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  58. package/.next/server/app/_not-found/page/build-manifest.json +17 -0
  59. package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  60. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  61. package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  62. package/.next/server/app/_not-found/page.js +13 -0
  63. package/.next/server/app/_not-found/page.js.map +5 -0
  64. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  65. package/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
  66. package/.next/server/app/_not-found.html +1 -0
  67. package/.next/server/app/_not-found.meta +16 -0
  68. package/.next/server/app/_not-found.rsc +16 -0
  69. package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -0
  70. package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
  71. package/.next/server/app/_not-found.segments/_index.segment.rsc +5 -0
  72. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  73. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
  74. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
  75. package/.next/server/app/api/daemon/[...path]/route/app-paths-manifest.json +3 -0
  76. package/.next/server/app/api/daemon/[...path]/route/build-manifest.json +9 -0
  77. package/.next/server/app/api/daemon/[...path]/route/server-reference-manifest.json +4 -0
  78. package/.next/server/app/api/daemon/[...path]/route.js +7 -0
  79. package/.next/server/app/api/daemon/[...path]/route.js.map +5 -0
  80. package/.next/server/app/api/daemon/[...path]/route.js.nft.json +1 -0
  81. package/.next/server/app/api/daemon/[...path]/route_client-reference-manifest.js +3 -0
  82. package/.next/server/app/api/run-artifacts/[chatId]/route/app-paths-manifest.json +3 -0
  83. package/.next/server/app/api/run-artifacts/[chatId]/route/build-manifest.json +9 -0
  84. package/.next/server/app/api/run-artifacts/[chatId]/route/server-reference-manifest.json +4 -0
  85. package/.next/server/app/api/run-artifacts/[chatId]/route.js +6 -0
  86. package/.next/server/app/api/run-artifacts/[chatId]/route.js.map +5 -0
  87. package/.next/server/app/api/run-artifacts/[chatId]/route.js.nft.json +1 -0
  88. package/.next/server/app/api/run-artifacts/[chatId]/route_client-reference-manifest.js +3 -0
  89. package/.next/server/app/connect/page/app-paths-manifest.json +3 -0
  90. package/.next/server/app/connect/page/build-manifest.json +17 -0
  91. package/.next/server/app/connect/page/next-font-manifest.json +11 -0
  92. package/.next/server/app/connect/page/react-loadable-manifest.json +1 -0
  93. package/.next/server/app/connect/page/server-reference-manifest.json +4 -0
  94. package/.next/server/app/connect/page.js +15 -0
  95. package/.next/server/app/connect/page.js.map +5 -0
  96. package/.next/server/app/connect/page.js.nft.json +1 -0
  97. package/.next/server/app/connect/page_client-reference-manifest.js +3 -0
  98. package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
  99. package/.next/server/app/favicon.ico/route/build-manifest.json +9 -0
  100. package/.next/server/app/favicon.ico/route.js +8 -0
  101. package/.next/server/app/favicon.ico/route.js.map +5 -0
  102. package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  103. package/.next/server/app/favicon.ico.body +0 -0
  104. package/.next/server/app/favicon.ico.meta +1 -0
  105. package/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
  106. package/.next/server/app/icon.svg/route/build-manifest.json +9 -0
  107. package/.next/server/app/icon.svg/route.js +7 -0
  108. package/.next/server/app/icon.svg/route.js.map +5 -0
  109. package/.next/server/app/icon.svg/route.js.nft.json +1 -0
  110. package/.next/server/app/icon.svg.body +6 -0
  111. package/.next/server/app/icon.svg.meta +1 -0
  112. package/.next/server/app/new/page/app-paths-manifest.json +3 -0
  113. package/.next/server/app/new/page/build-manifest.json +17 -0
  114. package/.next/server/app/new/page/next-font-manifest.json +11 -0
  115. package/.next/server/app/new/page/react-loadable-manifest.json +1 -0
  116. package/.next/server/app/new/page/server-reference-manifest.json +4 -0
  117. package/.next/server/app/new/page.js +14 -0
  118. package/.next/server/app/new/page.js.map +5 -0
  119. package/.next/server/app/new/page.js.nft.json +1 -0
  120. package/.next/server/app/new/page_client-reference-manifest.js +3 -0
  121. package/.next/server/app/new.html +1 -0
  122. package/.next/server/app/new.meta +15 -0
  123. package/.next/server/app/new.rsc +22 -0
  124. package/.next/server/app/new.segments/_full.segment.rsc +22 -0
  125. package/.next/server/app/new.segments/_head.segment.rsc +6 -0
  126. package/.next/server/app/new.segments/_index.segment.rsc +5 -0
  127. package/.next/server/app/new.segments/_tree.segment.rsc +4 -0
  128. package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +9 -0
  129. package/.next/server/app/new.segments/new.segment.rsc +5 -0
  130. package/.next/server/app/onboarding/page/app-paths-manifest.json +3 -0
  131. package/.next/server/app/onboarding/page/build-manifest.json +17 -0
  132. package/.next/server/app/onboarding/page/next-font-manifest.json +11 -0
  133. package/.next/server/app/onboarding/page/react-loadable-manifest.json +1 -0
  134. package/.next/server/app/onboarding/page/server-reference-manifest.json +4 -0
  135. package/.next/server/app/onboarding/page.js +14 -0
  136. package/.next/server/app/onboarding/page.js.map +5 -0
  137. package/.next/server/app/onboarding/page.js.nft.json +1 -0
  138. package/.next/server/app/onboarding/page_client-reference-manifest.js +3 -0
  139. package/.next/server/app/onboarding.html +1 -0
  140. package/.next/server/app/onboarding.meta +15 -0
  141. package/.next/server/app/onboarding.rsc +22 -0
  142. package/.next/server/app/onboarding.segments/_full.segment.rsc +22 -0
  143. package/.next/server/app/onboarding.segments/_head.segment.rsc +6 -0
  144. package/.next/server/app/onboarding.segments/_index.segment.rsc +5 -0
  145. package/.next/server/app/onboarding.segments/_tree.segment.rsc +4 -0
  146. package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +9 -0
  147. package/.next/server/app/onboarding.segments/onboarding.segment.rsc +5 -0
  148. package/.next/server/app/page/app-paths-manifest.json +3 -0
  149. package/.next/server/app/page/build-manifest.json +17 -0
  150. package/.next/server/app/page/next-font-manifest.json +11 -0
  151. package/.next/server/app/page/react-loadable-manifest.json +1 -0
  152. package/.next/server/app/page/server-reference-manifest.json +4 -0
  153. package/.next/server/app/page.js +17 -0
  154. package/.next/server/app/page.js.map +5 -0
  155. package/.next/server/app/page.js.nft.json +1 -0
  156. package/.next/server/app/page_client-reference-manifest.js +3 -0
  157. package/.next/server/app/personas/page/app-paths-manifest.json +3 -0
  158. package/.next/server/app/personas/page/build-manifest.json +17 -0
  159. package/.next/server/app/personas/page/next-font-manifest.json +11 -0
  160. package/.next/server/app/personas/page/react-loadable-manifest.json +1 -0
  161. package/.next/server/app/personas/page/server-reference-manifest.json +4 -0
  162. package/.next/server/app/personas/page.js +14 -0
  163. package/.next/server/app/personas/page.js.map +5 -0
  164. package/.next/server/app/personas/page.js.nft.json +1 -0
  165. package/.next/server/app/personas/page_client-reference-manifest.js +3 -0
  166. package/.next/server/app/personas.html +1 -0
  167. package/.next/server/app/personas.meta +15 -0
  168. package/.next/server/app/personas.rsc +22 -0
  169. package/.next/server/app/personas.segments/_full.segment.rsc +22 -0
  170. package/.next/server/app/personas.segments/_head.segment.rsc +6 -0
  171. package/.next/server/app/personas.segments/_index.segment.rsc +5 -0
  172. package/.next/server/app/personas.segments/_tree.segment.rsc +4 -0
  173. package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +9 -0
  174. package/.next/server/app/personas.segments/personas.segment.rsc +5 -0
  175. package/.next/server/app/runs/[runId]/page/app-paths-manifest.json +3 -0
  176. package/.next/server/app/runs/[runId]/page/build-manifest.json +17 -0
  177. package/.next/server/app/runs/[runId]/page/next-font-manifest.json +11 -0
  178. package/.next/server/app/runs/[runId]/page/react-loadable-manifest.json +1 -0
  179. package/.next/server/app/runs/[runId]/page/server-reference-manifest.json +4 -0
  180. package/.next/server/app/runs/[runId]/page.js +16 -0
  181. package/.next/server/app/runs/[runId]/page.js.map +5 -0
  182. package/.next/server/app/runs/[runId]/page.js.nft.json +1 -0
  183. package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +3 -0
  184. package/.next/server/app/runs/page/app-paths-manifest.json +3 -0
  185. package/.next/server/app/runs/page/build-manifest.json +17 -0
  186. package/.next/server/app/runs/page/next-font-manifest.json +11 -0
  187. package/.next/server/app/runs/page/react-loadable-manifest.json +1 -0
  188. package/.next/server/app/runs/page/server-reference-manifest.json +4 -0
  189. package/.next/server/app/runs/page.js +15 -0
  190. package/.next/server/app/runs/page.js.map +5 -0
  191. package/.next/server/app/runs/page.js.nft.json +1 -0
  192. package/.next/server/app/runs/page_client-reference-manifest.js +3 -0
  193. package/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  194. package/.next/server/app/settings/page/build-manifest.json +17 -0
  195. package/.next/server/app/settings/page/next-font-manifest.json +11 -0
  196. package/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  197. package/.next/server/app/settings/page/server-reference-manifest.json +4 -0
  198. package/.next/server/app/settings/page.js +14 -0
  199. package/.next/server/app/settings/page.js.map +5 -0
  200. package/.next/server/app/settings/page.js.nft.json +1 -0
  201. package/.next/server/app/settings/page_client-reference-manifest.js +3 -0
  202. package/.next/server/app/settings/permissions/page/app-paths-manifest.json +3 -0
  203. package/.next/server/app/settings/permissions/page/build-manifest.json +17 -0
  204. package/.next/server/app/settings/permissions/page/next-font-manifest.json +11 -0
  205. package/.next/server/app/settings/permissions/page/react-loadable-manifest.json +1 -0
  206. package/.next/server/app/settings/permissions/page/server-reference-manifest.json +4 -0
  207. package/.next/server/app/settings/permissions/page.js +14 -0
  208. package/.next/server/app/settings/permissions/page.js.map +5 -0
  209. package/.next/server/app/settings/permissions/page.js.nft.json +1 -0
  210. package/.next/server/app/settings/permissions/page_client-reference-manifest.js +3 -0
  211. package/.next/server/app/settings.html +1 -0
  212. package/.next/server/app/settings.meta +15 -0
  213. package/.next/server/app/settings.rsc +22 -0
  214. package/.next/server/app/settings.segments/_full.segment.rsc +22 -0
  215. package/.next/server/app/settings.segments/_head.segment.rsc +6 -0
  216. package/.next/server/app/settings.segments/_index.segment.rsc +5 -0
  217. package/.next/server/app/settings.segments/_tree.segment.rsc +4 -0
  218. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +9 -0
  219. package/.next/server/app/settings.segments/settings.segment.rsc +5 -0
  220. package/.next/server/app/templates/page/app-paths-manifest.json +3 -0
  221. package/.next/server/app/templates/page/build-manifest.json +17 -0
  222. package/.next/server/app/templates/page/next-font-manifest.json +11 -0
  223. package/.next/server/app/templates/page/react-loadable-manifest.json +1 -0
  224. package/.next/server/app/templates/page/server-reference-manifest.json +4 -0
  225. package/.next/server/app/templates/page.js +14 -0
  226. package/.next/server/app/templates/page.js.map +5 -0
  227. package/.next/server/app/templates/page.js.nft.json +1 -0
  228. package/.next/server/app/templates/page_client-reference-manifest.js +3 -0
  229. package/.next/server/app/templates.html +1 -0
  230. package/.next/server/app/templates.meta +15 -0
  231. package/.next/server/app/templates.rsc +22 -0
  232. package/.next/server/app/templates.segments/_full.segment.rsc +22 -0
  233. package/.next/server/app/templates.segments/_head.segment.rsc +6 -0
  234. package/.next/server/app/templates.segments/_index.segment.rsc +5 -0
  235. package/.next/server/app/templates.segments/_tree.segment.rsc +4 -0
  236. package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +9 -0
  237. package/.next/server/app/templates.segments/templates.segment.rsc +5 -0
  238. package/.next/server/app-paths-manifest.json +18 -0
  239. package/.next/server/chunks/05w9_next_0xdex7s._.js +13 -0
  240. package/.next/server/chunks/05w9_next_0xdex7s._.js.map +1 -0
  241. package/.next/server/chunks/05w9_next_dist_esm_build_templates_app-route_0.73kst.js +3 -0
  242. package/.next/server/chunks/05w9_next_dist_esm_build_templates_app-route_0.73kst.js.map +1 -0
  243. package/.next/server/chunks/[externals]_next_dist_0arv.vj._.js +3 -0
  244. package/.next/server/chunks/[externals]_next_dist_0arv.vj._.js.map +1 -0
  245. package/.next/server/chunks/[root-of-the-server]__02xvj_h._.js +3 -0
  246. package/.next/server/chunks/[root-of-the-server]__02xvj_h._.js.map +1 -0
  247. package/.next/server/chunks/[root-of-the-server]__0i7ddmr._.js +3 -0
  248. package/.next/server/chunks/[root-of-the-server]__0i7ddmr._.js.map +1 -0
  249. package/.next/server/chunks/[root-of-the-server]__0sxhm1i._.js +3 -0
  250. package/.next/server/chunks/[root-of-the-server]__0sxhm1i._.js.map +1 -0
  251. package/.next/server/chunks/[root-of-the-server]__12xxby8._.js +3 -0
  252. package/.next/server/chunks/[root-of-the-server]__12xxby8._.js.map +1 -0
  253. package/.next/server/chunks/[turbopack]_runtime.js +903 -0
  254. package/.next/server/chunks/[turbopack]_runtime.js.map +11 -0
  255. package/.next/server/chunks/_next-internal_server_app_api_daemon_[___path]_route_actions_0a5g-ar.js +3 -0
  256. package/.next/server/chunks/_next-internal_server_app_api_daemon_[___path]_route_actions_0a5g-ar.js.map +1 -0
  257. package/.next/server/chunks/_next-internal_server_app_api_run-artifacts_[chatId]_route_actions_07e2ul1.js +3 -0
  258. package/.next/server/chunks/_next-internal_server_app_api_run-artifacts_[chatId]_route_actions_07e2ul1.js.map +1 -0
  259. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_095lj93.js +3 -0
  260. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_095lj93.js.map +1 -0
  261. package/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_0-0ehc~.js +3 -0
  262. package/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_0-0ehc~.js.map +1 -0
  263. package/.next/server/chunks/ssr/05w9_next_dist_0q4woef._.js +3 -0
  264. package/.next/server/chunks/ssr/05w9_next_dist_0q4woef._.js.map +1 -0
  265. package/.next/server/chunks/ssr/05w9_next_dist_0ybpwn1._.js +6 -0
  266. package/.next/server/chunks/ssr/05w9_next_dist_0ybpwn1._.js.map +1 -0
  267. package/.next/server/chunks/ssr/05w9_next_dist_0~859ji._.js +6 -0
  268. package/.next/server/chunks/ssr/05w9_next_dist_0~859ji._.js.map +1 -0
  269. package/.next/server/chunks/ssr/05w9_next_dist_client_components_12u3mib._.js +3 -0
  270. package/.next/server/chunks/ssr/05w9_next_dist_client_components_12u3mib._.js.map +1 -0
  271. package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_forbidden_04fbe_..js +3 -0
  272. package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_forbidden_04fbe_..js.map +1 -0
  273. package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_global-error_0brpl_..js +3 -0
  274. package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_global-error_0brpl_..js.map +1 -0
  275. package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_unauthorized_0~2g66g.js +3 -0
  276. package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_unauthorized_0~2g66g.js.map +1 -0
  277. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0-f~6r1.js +4 -0
  278. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0-f~6r1.js.map +1 -0
  279. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_00czn99.js +4 -0
  280. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_00czn99.js.map +1 -0
  281. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_01nm1_6.js +4 -0
  282. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_01nm1_6.js.map +1 -0
  283. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0jcydv7.js +4 -0
  284. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0jcydv7.js.map +1 -0
  285. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0km.hvi.js +4 -0
  286. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0km.hvi.js.map +1 -0
  287. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0ln8_qt.js +4 -0
  288. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0ln8_qt.js.map +1 -0
  289. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0n3h-j1.js +4 -0
  290. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0n3h-j1.js.map +1 -0
  291. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0nc~v.o.js +4 -0
  292. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0nc~v.o.js.map +1 -0
  293. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0o6nct3.js +4 -0
  294. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0o6nct3.js.map +1 -0
  295. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0veve6-.js +4 -0
  296. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0veve6-.js.map +1 -0
  297. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0wh5tpo.js +4 -0
  298. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0wh5tpo.js.map +1 -0
  299. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_10~fsfu.js +4 -0
  300. package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_10~fsfu.js.map +1 -0
  301. package/.next/server/chunks/ssr/[root-of-the-server]__0-7oo8o._.js +3 -0
  302. package/.next/server/chunks/ssr/[root-of-the-server]__0-7oo8o._.js.map +1 -0
  303. package/.next/server/chunks/ssr/[root-of-the-server]__01t9qm2._.js +3 -0
  304. package/.next/server/chunks/ssr/[root-of-the-server]__01t9qm2._.js.map +1 -0
  305. package/.next/server/chunks/ssr/[root-of-the-server]__076~t6~._.js +3 -0
  306. package/.next/server/chunks/ssr/[root-of-the-server]__076~t6~._.js.map +1 -0
  307. package/.next/server/chunks/ssr/[root-of-the-server]__0_tow-j._.js +3 -0
  308. package/.next/server/chunks/ssr/[root-of-the-server]__0_tow-j._.js.map +1 -0
  309. package/.next/server/chunks/ssr/[root-of-the-server]__0bsym8v._.js +3 -0
  310. package/.next/server/chunks/ssr/[root-of-the-server]__0bsym8v._.js.map +1 -0
  311. package/.next/server/chunks/ssr/[root-of-the-server]__0bwjwxi._.js +3 -0
  312. package/.next/server/chunks/ssr/[root-of-the-server]__0bwjwxi._.js.map +1 -0
  313. package/.next/server/chunks/ssr/[root-of-the-server]__0c2e5js._.js +3 -0
  314. package/.next/server/chunks/ssr/[root-of-the-server]__0c2e5js._.js.map +1 -0
  315. package/.next/server/chunks/ssr/[root-of-the-server]__0d_59pi._.js +3 -0
  316. package/.next/server/chunks/ssr/[root-of-the-server]__0d_59pi._.js.map +1 -0
  317. package/.next/server/chunks/ssr/[root-of-the-server]__0dxp2sg._.js +3 -0
  318. package/.next/server/chunks/ssr/[root-of-the-server]__0dxp2sg._.js.map +1 -0
  319. package/.next/server/chunks/ssr/[root-of-the-server]__0e58.k_._.js +3 -0
  320. package/.next/server/chunks/ssr/[root-of-the-server]__0e58.k_._.js.map +1 -0
  321. package/.next/server/chunks/ssr/[root-of-the-server]__0ek20dj._.js +3 -0
  322. package/.next/server/chunks/ssr/[root-of-the-server]__0ek20dj._.js.map +1 -0
  323. package/.next/server/chunks/ssr/[root-of-the-server]__0h2o43u._.js +3 -0
  324. package/.next/server/chunks/ssr/[root-of-the-server]__0h2o43u._.js.map +1 -0
  325. package/.next/server/chunks/ssr/[root-of-the-server]__0hn95cc._.js +33 -0
  326. package/.next/server/chunks/ssr/[root-of-the-server]__0hn95cc._.js.map +1 -0
  327. package/.next/server/chunks/ssr/[root-of-the-server]__0ic.~tw._.js +3 -0
  328. package/.next/server/chunks/ssr/[root-of-the-server]__0ic.~tw._.js.map +1 -0
  329. package/.next/server/chunks/ssr/[root-of-the-server]__0jltd-t._.js +3 -0
  330. package/.next/server/chunks/ssr/[root-of-the-server]__0jltd-t._.js.map +1 -0
  331. package/.next/server/chunks/ssr/[root-of-the-server]__0k_96yx._.js +3 -0
  332. package/.next/server/chunks/ssr/[root-of-the-server]__0k_96yx._.js.map +1 -0
  333. package/.next/server/chunks/ssr/[root-of-the-server]__0l5ko41._.js +19 -0
  334. package/.next/server/chunks/ssr/[root-of-the-server]__0l5ko41._.js.map +1 -0
  335. package/.next/server/chunks/ssr/[root-of-the-server]__0p~21w8._.js +3 -0
  336. package/.next/server/chunks/ssr/[root-of-the-server]__0p~21w8._.js.map +1 -0
  337. package/.next/server/chunks/ssr/[root-of-the-server]__0tc4gl8._.js +3 -0
  338. package/.next/server/chunks/ssr/[root-of-the-server]__0tc4gl8._.js.map +1 -0
  339. package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js +3 -0
  340. package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js.map +1 -0
  341. package/.next/server/chunks/ssr/[root-of-the-server]__0we1ana._.js +3 -0
  342. package/.next/server/chunks/ssr/[root-of-the-server]__0we1ana._.js.map +1 -0
  343. package/.next/server/chunks/ssr/[root-of-the-server]__0xlzjhk._.js +3 -0
  344. package/.next/server/chunks/ssr/[root-of-the-server]__0xlzjhk._.js.map +1 -0
  345. package/.next/server/chunks/ssr/[root-of-the-server]__0ygksjc._.js +33 -0
  346. package/.next/server/chunks/ssr/[root-of-the-server]__0ygksjc._.js.map +1 -0
  347. package/.next/server/chunks/ssr/[root-of-the-server]__0yhjl35._.js +3 -0
  348. package/.next/server/chunks/ssr/[root-of-the-server]__0yhjl35._.js.map +1 -0
  349. package/.next/server/chunks/ssr/[root-of-the-server]__0~cqs-9._.js +3 -0
  350. package/.next/server/chunks/ssr/[root-of-the-server]__0~cqs-9._.js.map +1 -0
  351. package/.next/server/chunks/ssr/[root-of-the-server]__109.1j0._.js +3 -0
  352. package/.next/server/chunks/ssr/[root-of-the-server]__109.1j0._.js.map +1 -0
  353. package/.next/server/chunks/ssr/[root-of-the-server]__10gepjv._.js +3 -0
  354. package/.next/server/chunks/ssr/[root-of-the-server]__10gepjv._.js.map +1 -0
  355. package/.next/server/chunks/ssr/[turbopack]_runtime.js +903 -0
  356. package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +11 -0
  357. package/.next/server/chunks/ssr/_01t~nag._.js +30 -0
  358. package/.next/server/chunks/ssr/_01t~nag._.js.map +1 -0
  359. package/.next/server/chunks/ssr/_097xk3e._.js +3 -0
  360. package/.next/server/chunks/ssr/_097xk3e._.js.map +1 -0
  361. package/.next/server/chunks/ssr/_0bxoss0._.js +30 -0
  362. package/.next/server/chunks/ssr/_0bxoss0._.js.map +1 -0
  363. package/.next/server/chunks/ssr/_0ck1n8_._.js +7 -0
  364. package/.next/server/chunks/ssr/_0ck1n8_._.js.map +1 -0
  365. package/.next/server/chunks/ssr/_0d-304b._.js +30 -0
  366. package/.next/server/chunks/ssr/_0d-304b._.js.map +1 -0
  367. package/.next/server/chunks/ssr/_0p-_ahq._.js +30 -0
  368. package/.next/server/chunks/ssr/_0p-_ahq._.js.map +1 -0
  369. package/.next/server/chunks/ssr/_0qlx_85._.js +7 -0
  370. package/.next/server/chunks/ssr/_0qlx_85._.js.map +1 -0
  371. package/.next/server/chunks/ssr/_0y43gyn._.js +27 -0
  372. package/.next/server/chunks/ssr/_0y43gyn._.js.map +1 -0
  373. package/.next/server/chunks/ssr/_11i54x9._.js +30 -0
  374. package/.next/server/chunks/ssr/_11i54x9._.js.map +1 -0
  375. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0k77kol.js +3 -0
  376. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0k77kol.js.map +1 -0
  377. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0eq97pa.js +3 -0
  378. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0eq97pa.js.map +1 -0
  379. package/.next/server/chunks/ssr/_next-internal_server_app_connect_page_actions_0vb8s6u.js +3 -0
  380. package/.next/server/chunks/ssr/_next-internal_server_app_connect_page_actions_0vb8s6u.js.map +1 -0
  381. package/.next/server/chunks/ssr/_next-internal_server_app_new_page_actions_08q6mx5.js +3 -0
  382. package/.next/server/chunks/ssr/_next-internal_server_app_new_page_actions_08q6mx5.js.map +1 -0
  383. package/.next/server/chunks/ssr/_next-internal_server_app_onboarding_page_actions_0qdby58.js +3 -0
  384. package/.next/server/chunks/ssr/_next-internal_server_app_onboarding_page_actions_0qdby58.js.map +1 -0
  385. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js +3 -0
  386. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js.map +1 -0
  387. package/.next/server/chunks/ssr/_next-internal_server_app_personas_page_actions_08fq21v.js +3 -0
  388. package/.next/server/chunks/ssr/_next-internal_server_app_personas_page_actions_08fq21v.js.map +1 -0
  389. package/.next/server/chunks/ssr/_next-internal_server_app_runs_[runId]_page_actions_0z6r2tz.js +3 -0
  390. package/.next/server/chunks/ssr/_next-internal_server_app_runs_[runId]_page_actions_0z6r2tz.js.map +1 -0
  391. package/.next/server/chunks/ssr/_next-internal_server_app_runs_page_actions_04_e1xr.js +3 -0
  392. package/.next/server/chunks/ssr/_next-internal_server_app_runs_page_actions_04_e1xr.js.map +1 -0
  393. package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_0mr68ai.js +3 -0
  394. package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_0mr68ai.js.map +1 -0
  395. package/.next/server/chunks/ssr/_next-internal_server_app_settings_permissions_page_actions_0cr.qtc.js +3 -0
  396. package/.next/server/chunks/ssr/_next-internal_server_app_settings_permissions_page_actions_0cr.qtc.js.map +1 -0
  397. package/.next/server/chunks/ssr/_next-internal_server_app_templates_page_actions_0n8gow3.js +3 -0
  398. package/.next/server/chunks/ssr/_next-internal_server_app_templates_page_actions_0n8gow3.js.map +1 -0
  399. package/.next/server/chunks/ssr/node_modules__pnpm_0~j0k.e._.js +33 -0
  400. package/.next/server/chunks/ssr/node_modules__pnpm_0~j0k.e._.js.map +1 -0
  401. package/.next/server/chunks/ssr/src_app_new_page_tsx_0av4n2k._.js +3 -0
  402. package/.next/server/chunks/ssr/src_app_new_page_tsx_0av4n2k._.js.map +1 -0
  403. package/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +3 -0
  404. package/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js.map +1 -0
  405. package/.next/server/chunks/ssr/src_app_personas_page_tsx_0jx9vyh._.js +3 -0
  406. package/.next/server/chunks/ssr/src_app_personas_page_tsx_0jx9vyh._.js.map +1 -0
  407. package/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +27 -0
  408. package/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js.map +1 -0
  409. package/.next/server/chunks/ssr/src_app_templates_page_tsx_0tml2wg._.js +3 -0
  410. package/.next/server/chunks/ssr/src_app_templates_page_tsx_0tml2wg._.js.map +1 -0
  411. package/.next/server/chunks/ssr/src_components_0j77o23._.js +3 -0
  412. package/.next/server/chunks/ssr/src_components_0j77o23._.js.map +1 -0
  413. package/.next/server/chunks/ssr/src_components_0lc2g58._.js +3 -0
  414. package/.next/server/chunks/ssr/src_components_0lc2g58._.js.map +1 -0
  415. package/.next/server/chunks/ssr/src_components_live-run-real_index_tsx_0zzsdt9._.js +3 -0
  416. package/.next/server/chunks/ssr/src_components_live-run-real_index_tsx_0zzsdt9._.js.map +1 -0
  417. package/.next/server/functions-config-manifest.json +6 -0
  418. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  419. package/.next/server/middleware-build-manifest.js +21 -0
  420. package/.next/server/middleware-manifest.json +6 -0
  421. package/.next/server/next-font-manifest.js +1 -0
  422. package/.next/server/next-font-manifest.json +51 -0
  423. package/.next/server/pages/404.html +1 -0
  424. package/.next/server/pages/500.html +1 -0
  425. package/.next/server/pages-manifest.json +4 -0
  426. package/.next/server/prefetch-hints.json +1 -0
  427. package/.next/server/server-reference-manifest.js +1 -0
  428. package/.next/server/server-reference-manifest.json +5 -0
  429. package/.next/static/chunks/0-xxtuzaqzyzy.css +3 -0
  430. package/.next/static/chunks/0.dctgbd3j_xg.js +2 -0
  431. package/.next/static/chunks/0.~gqf.-9g-fh.js +1 -0
  432. package/.next/static/chunks/01as9r5n5k.xo.js +1 -0
  433. package/.next/static/chunks/034b~pjm7y20e.js +1 -0
  434. package/.next/static/chunks/03~yq9q893hmn.js +1 -0
  435. package/.next/static/chunks/05o4oa_9xfaun.js +1 -0
  436. package/.next/static/chunks/08dnw-0gzytmy.js +5 -0
  437. package/.next/static/chunks/08f2b7tuf53ep.js +1 -0
  438. package/.next/static/chunks/0a_u3vdu6tc~f.js +1 -0
  439. package/.next/static/chunks/0am72irwq2bx0.js +5 -0
  440. package/.next/static/chunks/0c-d1bhb8byrx.js +1 -0
  441. package/.next/static/chunks/0s4~w2~is76y1.js +1 -0
  442. package/.next/static/chunks/0ue4qcctkv016.js +4 -0
  443. package/.next/static/chunks/0uok5~eqi6zku.js +1 -0
  444. package/.next/static/chunks/0v3lyuj75aq50.js +1 -0
  445. package/.next/static/chunks/0whnu9t5k-ij7.js +1 -0
  446. package/.next/static/chunks/0x00t3du13-u4.js +25 -0
  447. package/.next/static/chunks/0xs3ktzdh4rw4.js +1 -0
  448. package/.next/static/chunks/0~8r6nhrrl~f9.js +1 -0
  449. package/.next/static/chunks/10jdu00ksgu69.js +1 -0
  450. package/.next/static/chunks/10ld26~0f71ye.js +25 -0
  451. package/.next/static/chunks/11k2wbc04r__f.js +25 -0
  452. package/.next/static/chunks/13-.xgv2t5u6m.js +31 -0
  453. package/.next/static/chunks/152ec.u3_e~ya.js +25 -0
  454. package/.next/static/chunks/172tpttbumwi1.js +25 -0
  455. package/.next/static/chunks/turbopack-0-al833jv3to~.js +1 -0
  456. package/.next/static/dJlbRLlhISA0JGtHKVqgQ/_buildManifest.js +11 -0
  457. package/.next/static/dJlbRLlhISA0JGtHKVqgQ/_clientMiddlewareManifest.js +1 -0
  458. package/.next/static/dJlbRLlhISA0JGtHKVqgQ/_ssgManifest.js +1 -0
  459. package/.next/static/media/4fa387ec64143e14-s.0q3udbd2bu5yp.woff2 +0 -0
  460. package/.next/static/media/7178b3e590c64307-s.11.cyxs5p-0z~.woff2 +0 -0
  461. package/.next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2 +0 -0
  462. package/.next/static/media/8a480f0b521d4e75-s.06d3mdzz5bre_.woff2 +0 -0
  463. package/.next/static/media/bbc41e54d2fcbd21-s.0gw~uztddq1df.woff2 +0 -0
  464. package/.next/static/media/caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2 +0 -0
  465. package/.next/static/media/favicon.0i~66t__91s97.ico +0 -0
  466. package/.next/static/media/icon.15.86wme~cdlv.svg +6 -0
  467. package/.next/trace +1 -0
  468. package/.next/trace-build +1 -0
  469. package/.next/turbopack +0 -0
  470. package/.next/types/cache-life.d.ts +145 -0
  471. package/.next/types/routes.d.ts +83 -0
  472. package/.next/types/validator.ts +169 -0
  473. package/LICENSE +201 -0
  474. package/README.md +423 -0
  475. package/assets/slash-commands/chorus.md +35 -0
  476. package/bin/chorus.mjs +30 -0
  477. package/dist/lib/db/schema.sql +132 -0
  478. package/package.json +79 -0
  479. package/prompts/personas/accountant.md +27 -0
  480. package/prompts/personas/cartographer.md +28 -0
  481. package/prompts/personas/concierge.md +25 -0
  482. package/prompts/personas/conservator.md +27 -0
  483. package/prompts/personas/inspector.md +31 -0
  484. package/prompts/personas/librarian.md +29 -0
  485. package/prompts/personas/profiler.md +25 -0
  486. package/prompts/personas/quartermaster.md +25 -0
  487. package/prompts/personas/sentinel.md +28 -0
  488. package/prompts/personas/translator.md +28 -0
  489. package/scripts/postinstall.mjs +20 -0
  490. package/templates/README.md +71 -0
  491. package/templates/architect-review.yaml +52 -0
  492. package/templates/bug-diagnose.yaml +31 -0
  493. package/templates/code-review.yaml +46 -0
  494. package/templates/red-green.yaml +169 -0
  495. package/templates/review-only.yaml +73 -0
  496. package/templates/tri-review.yaml +41 -0
package/LICENSE ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for describing the origin of the Work and
141
+ reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Support. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or support.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2026 99x Agency
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
200
+ implied. See the License for the specific language governing permissions
201
+ and limitations under the License.
package/README.md ADDED
@@ -0,0 +1,423 @@
1
+ <div align="center">
2
+
3
+ <img src="docs/images/logo.png" alt="Chorus" width="120" />
4
+
5
+ # Chorus
6
+
7
+ **A second opinion (and a third) before you ship AI-written code — using the AI subscriptions you already pay for.**
8
+
9
+ 2–3 *different* AI tools review the same change in parallel, only green-lighting when they agree. Runs on your existing Claude Pro / ChatGPT Plus / Gemini Advanced — typical review costs **$0** out of pocket.
10
+
11
+ [![CI](https://github.com/chorus-codes/chorus/actions/workflows/ci.yml/badge.svg)](https://github.com/chorus-codes/chorus/actions/workflows/ci.yml)
12
+ [![npm](https://img.shields.io/npm/v/chorus-codes?color=22c55e)](https://www.npmjs.com/package/chorus-codes)
13
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue)](./LICENSE)
14
+ [![Status](https://img.shields.io/badge/status-v0.7-brightgreen)]()
15
+ [![Node](https://img.shields.io/badge/node-%E2%89%A520-339933)]()
16
+
17
+ [Website](https://chorus.codes) · [Roadmap](./ROADMAP.md) · [Issues](https://github.com/chorus-codes/chorus/issues)
18
+
19
+ </div>
20
+
21
+ ---
22
+
23
+ <div align="center">
24
+
25
+ <img src="docs/images/hero-demo.gif" alt="Six AI reviewers streaming verdicts in parallel — Chorus running live" width="800" />
26
+
27
+ **One AI writes. Three review. You ship only when they agree — using AI subscriptions you already pay for.**
28
+
29
+ </div>
30
+
31
+ ---
32
+
33
+ ## The problem Chorus solves
34
+
35
+ 🤖 **AI coding tools are confident — and wrong about 5% of the time** in subtle ways that are hard to spot until production.
36
+
37
+ 🪞 **The model that wrote your code can't see its own blind spots.**
38
+ Asking GPT to review GPT's work is theatre — same training, same biases.
39
+
40
+ 💸 **Multi-AI review on raw API keys gets expensive fast.**
41
+ Every diff × 3 reviewers × pay-per-token = real money. So nobody does it routinely.
42
+
43
+ ### Chorus fixes all three
44
+
45
+ ✅ **Different vendors review each other.**
46
+ Claude writes, GPT and Gemini check it. Different blind spots cover each other. Disagreement = red flag *before* you merge.
47
+
48
+ ✅ **Uses your existing AI subscriptions.**
49
+ You're already paying for Claude Pro / ChatGPT Plus / Gemini Advanced (~$20/mo each). Chorus drives them headlessly through their CLIs — every multi-AI review costs **$0 out of pocket**, just counts against the quota you already have. Per-token API users save 10-100× vs running the same prompts directly.
50
+
51
+ ✅ **Local-first, zero markup.**
52
+ Your code never reaches a new vendor. Chorus runs on your laptop, talks to the AI tools you already trust, and shuts up. Open source, Apache-2.0.
53
+
54
+ That's the whole pitch.
55
+
56
+ ---
57
+
58
+ ## Real moments where this matters
59
+
60
+ 🚨 **You asked Claude to write a `divide(a, b)` helper.**
61
+ It says "looks correct!" You ship. Production crashes at 2am because nobody handled `b = 0`.
62
+ *With Chorus: GPT or Gemini would have flagged it in the review pass before you merged.*
63
+
64
+ 🔧 **You're refactoring a critical path.**
65
+ Your AI rewrote 200 lines and says it's behaviour-equivalent. You're tired and skeptical.
66
+ *Run it through Chorus. Three different AIs all saying "yes, equivalent" lets you sleep.*
67
+
68
+ 🏗️ **Big architectural call** — queue vs polling, sync vs async, this DB vs that one.
69
+ Write a paragraph, hit Chorus. *Three different models give you three angles you hadn't thought of.*
70
+
71
+ 📝 **Reviewing a 600-line PR.**
72
+ You're short on time. Paste the diff into Chorus. *Three reviewers spot the obvious bugs in 90 seconds. Your job becomes the 5% they couldn't catch.*
73
+
74
+ ⚔️ **Test-driven development where neither AI cheats.**
75
+ *One AI writes tests blind to the code; another AI writes code to pass them.* Use the `red-green` template.
76
+
77
+ 🐛 **Hunting a flaky bug.**
78
+ Reproduces 1-in-20, no obvious pattern. Drop the failing test + suspect code into Chorus.
79
+ *Each reviewer attacks the bug from a different angle — race? clock skew? off-by-one? — and you land on the cause faster than walking it alone.*
80
+
81
+ ---
82
+
83
+ ## Quick start
84
+
85
+ ```bash
86
+ npm i -g chorus-codes # install
87
+ chorus init # finds AI tools you already have
88
+ chorus start --ui # opens http://localhost:5050
89
+ ```
90
+
91
+ Paste a task. Hit submit. Watch the AIs argue.
92
+
93
+ **Requires** Node 20+ and at least *one* of these (you probably already have one):
94
+
95
+ - Claude Code, Codex CLI, Gemini CLI, OpenCode, or Kimi CLI — uses your existing subscription, no extra cost
96
+ - *or* an OpenRouter API key (one key, 200+ models, pay-per-use)
97
+
98
+ <details>
99
+ <summary><b>Don't have any of those?</b></summary>
100
+
101
+ ```bash
102
+ npm i -g @anthropic-ai/claude-code # Anthropic — uses Claude Pro sub
103
+ npm i -g @openai/codex # OpenAI — uses ChatGPT Plus sub
104
+ npm i -g @google/gemini-cli # Google — uses Gemini Advanced sub
105
+ ```
106
+
107
+ Pick whichever vendor you already pay for. Or skip CLIs entirely and add an OpenRouter key in Settings after `chorus init`.
108
+
109
+ </details>
110
+
111
+ ---
112
+
113
+ ## What it looks like
114
+
115
+ <table>
116
+ <tr>
117
+ <td width="50%" align="center">
118
+ <b>Live review</b><br/>
119
+ <img src="docs/images/run-page.png" alt="Three reviewers streaming verdicts in real-time" width="100%" /><br/>
120
+ <sub>Each AI streams its thinking live as it reviews.</sub>
121
+ </td>
122
+ <td width="50%" align="center">
123
+ <b>Verdict</b><br/>
124
+ <img src="docs/images/verdict.png" alt="Final converged verdict with merged diff" width="100%" /><br/>
125
+ <sub>Agreement = green. Disagreement = retry with their feedback.</sub>
126
+ </td>
127
+ </tr>
128
+ <tr>
129
+ <td width="50%" align="center">
130
+ <b>Templates</b><br/>
131
+ <img src="docs/images/templates.png" alt="Template editor" width="100%" /><br/>
132
+ <sub>Pre-built review patterns. Make your own in YAML.</sub>
133
+ </td>
134
+ <td width="50%" align="center">
135
+ <b>From inside Claude / Cursor</b><br/>
136
+ <img src="docs/images/mcp.png" alt="Claude Code calling Chorus" width="100%" /><br/>
137
+ <sub>Any AI tool that speaks MCP can trigger a Chorus run.</sub>
138
+ </td>
139
+ </tr>
140
+ </table>
141
+
142
+ ---
143
+
144
+ ## A real example
145
+
146
+ You ask Claude to write this:
147
+
148
+ ```js
149
+ function divide(a, b) {
150
+ return a / b;
151
+ }
152
+ ```
153
+
154
+ Submit to Chorus with the **Code Review** template (1 writer + 2 reviewers, both must agree to ship):
155
+
156
+ | Step | What happens |
157
+ |---|---|
158
+ | 1. Claude writes | "Looks correct to me!" |
159
+ | 2. GPT reviews in parallel | 🚨 *No type validation — `divide('a','b')` returns `NaN`* |
160
+ | 3. Gemini reviews in parallel | 🚨 *Missing zero-check — `divide(1, 0)` returns `Infinity`* |
161
+ | 4. Verdict | ❌ **REJECT** — both reviewers flagged real bugs |
162
+
163
+ Now you know what to fix **before** you push.
164
+
165
+ ---
166
+
167
+ ## Templates: pre-built review patterns
168
+
169
+ Don't figure out which AIs to use yourself. Pick a pattern that fits the moment:
170
+
171
+ | Use this when... | Template |
172
+ |---|---|
173
+ | Pre-merge sanity check | `code-review` — 1 writer + 2 reviewers, both must agree |
174
+ | Diagnosing a weird bug | `bug-diagnose` — one hypothesises, one challenges |
175
+ | Big architectural call | `architect-review` — 3 different vendors critique your plan |
176
+ | TDD where neither AI cheats | `red-green` — tests written blind to code |
177
+ | Quick audit of a diff someone else wrote | `review-only` — paste, get 3 opinions, no writer |
178
+
179
+ Make your own by dropping a YAML file in `~/.chorus/templates/`. Or duplicate one of the built-ins and tweak.
180
+
181
+ <details>
182
+ <summary><b>Custom template example</b></summary>
183
+
184
+ ```yaml
185
+ id: security-pre-merge
186
+ label: Security Pre-Merge
187
+ description: Sentinel persona on every reviewer; everyone must approve.
188
+ slots:
189
+ doer:
190
+ lineage: anthropic
191
+ model: claude-sonnet-4-6
192
+ reviewers:
193
+ - { lineage: openai, model: codex, persona: sentinel }
194
+ - { lineage: google, model: gemini-2.5-pro, persona: sentinel }
195
+ - { lineage: opencode, model: opencode-go/kimi-k2.6, persona: sentinel }
196
+ quorum:
197
+ type: unanimous
198
+ ```
199
+
200
+ </details>
201
+
202
+ ---
203
+
204
+ ## Reviewer personas
205
+
206
+ Each reviewer can wear a "hat" — a focus area Chorus prepends to their prompt:
207
+
208
+ | Persona | What they look for |
209
+ |---|---|
210
+ | 🛡️ **Sentinel** | Security holes, auth bypass, injection |
211
+ | 🗺️ **Cartographer** | Cross-platform issues (Windows vs Mac, browser support) |
212
+ | 💰 **Accountant** | Cost regressions (extra DB queries, API calls) |
213
+ | ⚡ **Profiler** | Performance regressions |
214
+ | 🔍 **Inspector**, 📦 **Quartermaster**, 🛎️ **Concierge**, 🏛️ **Conservator**, 📚 **Librarian**, 🌐 **Translator** | …and more — see Personas page in cockpit |
215
+
216
+ Different personas reviewing the same change = wider net.
217
+
218
+ ---
219
+
220
+ ## Why "different vendors" matters
221
+
222
+ You can run Chorus with three Claudes. We let you. But the value drops a lot.
223
+
224
+ A second Claude reviewing the first Claude's work is theatre — same training, same blind spots. Mix vendors (Claude + GPT + Gemini) and you get genuinely different angles, because they were trained on different data with different biases.
225
+
226
+ Templates let you encode this: each reviewer slot has a `lineage` (anthropic / openai / google / opencode / moonshot). Built-in templates mix vendors automatically.
227
+
228
+ ---
229
+
230
+ ## What does it cost?
231
+
232
+ Two paths, depending on how you already pay for AI:
233
+
234
+ **Using subscriptions** (Claude Pro / ChatGPT Plus / Gemini Advanced — ~$20/mo each)
235
+ A typical review = **$0** out of pocket. Counts against the quota you already have.
236
+
237
+ **Using API keys** (pay-per-use)
238
+ A typical code-review run = **$0.30 to $1.50**, depending on diff size. If reviewers disagree and retry, 2–3× worst case.
239
+
240
+ Chorus adds **zero markup**. We don't see your tokens.
241
+
242
+ ---
243
+
244
+ ## Permissions & safety
245
+
246
+ Reviewers run on your machine. You decide how much trust to give them:
247
+
248
+ | Mode | Read code | Write code | Network | When to use |
249
+ |---|:---:|:---:|:---:|---|
250
+ | 🔒 **Strict** | ✅ | ❌ | ❌ | Reviewing a diff you don't trust |
251
+ | 📁 **Workspace** *(default)* | ✅ | ✅ inside chat dir | ❌ | Day-to-day |
252
+ | 🔓 **Full** | ✅ | ✅ anywhere | ✅ | Personal machine, full trust |
253
+
254
+ Configure on first run, or anytime at *Settings → Permissions*.
255
+
256
+ > **Trust model in plain English.** "Workspace" means the reviewer can write files inside its working directory and run scoped commands, but can't reach the internet or write outside the sandbox. "Full" means anything-goes — only enable on a personal machine you own. Run `chorus doctor` to verify each AI tool got the sandbox you set.
257
+
258
+ ---
259
+
260
+ ## Use it from inside another AI tool
261
+
262
+ Chorus speaks MCP — the protocol Claude Code, Cursor, Codex, Gemini CLI etc. use to talk to other tools. So you can trigger a Chorus run *from inside* the AI tool you're already using.
263
+
264
+ Example, inside Claude Code:
265
+
266
+ > *"Run code-review on the diff against main using Chorus"*
267
+
268
+ Claude Code calls Chorus → Chorus fans out to other AI tools → results stream back into Claude Code. Useful when you want a second opinion without leaving the editor.
269
+
270
+ `chorus init` wires up MCP for the orchestrators it detects (Claude / Codex / Gemini / Cursor / Windsurf, etc.).
271
+
272
+ ---
273
+
274
+ ## Compared to other code-review tools
275
+
276
+ | | **Chorus** | CodeRabbit | Greptile | Cursor Review | GitHub Copilot |
277
+ |---|:---:|:---:|:---:|:---:|:---:|
278
+ | Multiple AI vendors review the same change | ✅ | ❌ | ❌ | ❌ | ❌ |
279
+ | Uses your existing AI subscriptions | ✅ | ❌ | ❌ | ❌ | ❌ |
280
+ | Runs locally (your code never leaves your existing AI vendors) | ✅ | ❌ | ❌ | partial | ❌ |
281
+ | Open source (modify + self-host) | ✅ Apache-2.0 | ❌ | ❌ | ❌ | ❌ |
282
+ | Custom review patterns | ✅ | partial | ❌ | ❌ | ❌ |
283
+
284
+ **The unique thing:** your code never goes to a new vendor. Chorus just orchestrates the AI tools you already use.
285
+
286
+ ---
287
+
288
+ ## Commands
289
+
290
+ ```bash
291
+ chorus init # one-time: detect + connect AI tools
292
+ chorus start --ui # boot + open browser
293
+ chorus stop # shut it down
294
+ chorus status # is it running?
295
+ chorus doctor # diagnose AI tool detection / sandbox issues
296
+ ```
297
+
298
+ ---
299
+
300
+ ## Telemetry
301
+
302
+ Chorus pings home once on startup and once every 24h. The payload is fixed:
303
+
304
+ ```json
305
+ {
306
+ "schema": 1,
307
+ "installId": "<random uuid>",
308
+ "version": "0.7.0",
309
+ "os": "linux", "arch": "x64", "node": "22",
310
+ "daemonUptimeSeconds": 86400,
311
+ "chatsLast24h": 12
312
+ }
313
+ ```
314
+
315
+ **Never sent:** chat content, prompts, file paths, repo paths, model names, voice/template names, hostnames, IPs, API keys.
316
+
317
+ Turn it off any of three ways:
318
+
319
+ ```bash
320
+ export CHORUS_TELEMETRY=0 # env var
321
+ touch ~/.chorus/no-telemetry # touch-file
322
+ # or click "Off" in cockpit Settings → Telemetry
323
+ ```
324
+
325
+ The install ID lives at `~/.chorus/install-id` — `rm` it for a fresh one.
326
+
327
+ ---
328
+
329
+ ## Roadmap
330
+
331
+ - [x] **v0.5** — Daemon + cockpit + 4 AI vendors
332
+ - [x] **v0.6** — MCP server, persona system
333
+ - [x] **v0.7** — OpenRouter integration, voices table, real-time sidebar
334
+ - [ ] **v0.8** — Multi-stage review (write → review → fix → re-review)
335
+ - [ ] **v0.9** — Per-voice persona overrides
336
+ - [ ] **v1.0** — Hosted GitHub App + cloud fan-out
337
+
338
+ Full picture in [ROADMAP.md](./ROADMAP.md).
339
+
340
+ ---
341
+
342
+ <details>
343
+ <summary><b>How it works (under the hood)</b></summary>
344
+
345
+ ```mermaid
346
+ flowchart TB
347
+ User([👤 You])
348
+ Cockpit[Cockpit<br/>:5050 · web UI]
349
+ Daemon[Chorus daemon<br/>:7707 · local server]
350
+ DB[(SQLite<br/>~/.chorus/chorus.db)]
351
+ MCP[MCP server<br/>for editor integrations]
352
+
353
+ Claude[🤖 Claude<br/>writer]
354
+ Codex[🦾 GPT<br/>reviewer]
355
+ Gemini[💎 Gemini<br/>reviewer]
356
+
357
+ User -->|paste task| Cockpit
358
+ Cockpit <-->|REST + live updates| Daemon
359
+ Daemon <--> DB
360
+ Daemon -->|spawn| Claude
361
+ Daemon -->|spawn| Codex
362
+ Daemon -->|spawn| Gemini
363
+ User -.->|"call Chorus from your AI"| MCP --> Daemon
364
+
365
+ classDef user fill:#fef3c7,stroke:#f59e0b,color:#000
366
+ classDef chorus fill:#dbeafe,stroke:#3b82f6,color:#000
367
+ classDef llm fill:#fce7f3,stroke:#ec4899,color:#000
368
+ class User user
369
+ class Daemon,Cockpit,MCP,DB chorus
370
+ class Claude,Codex,Gemini llm
371
+ ```
372
+
373
+ **Three pieces:**
374
+
375
+ - **Daemon** — small local server (port 7707) that spawns AI tools as subprocesses, parses their output, and tracks state in a SQLite database at `~/.chorus/chorus.db`.
376
+ - **Cockpit** — the web UI at port 5050 (Next.js). Templates, chats, voices, settings.
377
+ - **MCP server** — lets *other* AI tools (Claude Code, Cursor, etc.) call Chorus programmatically.
378
+
379
+ Each AI runs as an isolated subprocess. Chorus reads their structured output (stream-JSON), compares against the template's quorum rule, and emits a verdict. Nothing leaves your machine except the calls to the AI vendors you already use.
380
+
381
+ Code layout:
382
+ - `src/daemon/` — Fastify server + agent shims (one per AI tool)
383
+ - `src/app/` — Next.js cockpit
384
+ - `src/mcp/` — JSON-RPC MCP server
385
+ - `src/lib/db/` — schema + migrations
386
+
387
+ </details>
388
+
389
+ ---
390
+
391
+ ## Contributing
392
+
393
+ PRs welcome.
394
+
395
+ ```bash
396
+ git clone https://github.com/chorus-codes/chorus.git
397
+ cd chorus && pnpm install
398
+ pnpm dev:daemon # daemon on :7707
399
+ pnpm dev # cockpit on :5050
400
+ pnpm test # full suite
401
+ ```
402
+
403
+ Read [`AGENTS.md`](./AGENTS.md) first — Next.js 16 has breaking changes from older versions. Coverage target on new code: 80%+.
404
+
405
+ We dogfood: PRs to Chorus go through Chorus before merging.
406
+
407
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for the full guide.
408
+
409
+ ---
410
+
411
+ ## Links
412
+
413
+ - 🌐 Website: <https://chorus.codes>
414
+ - 🗺️ Roadmap: [./ROADMAP.md](./ROADMAP.md)
415
+ - 🐛 Issues: <https://github.com/chorus-codes/chorus/issues>
416
+ - 💬 Discussions: <https://github.com/chorus-codes/chorus/discussions>
417
+ - 🐦 Twitter / X: [@chorus_codes](https://twitter.com/chorus_codes)
418
+
419
+ ---
420
+
421
+ ## License
422
+
423
+ [Apache-2.0](./LICENSE). Use it however you want, including commercially.
@@ -0,0 +1,35 @@
1
+ ---
2
+ description: Run a multi-LLM Chorus peer review on a task
3
+ argument-hint: [template] <work description>
4
+ ---
5
+
6
+ Route this request to the Chorus MCP server. Use the `mcp__chorus__*` tools — do NOT try to do the review yourself.
7
+
8
+ **Arguments:** $ARGUMENTS
9
+
10
+ ## Steps
11
+
12
+ 1. **Resolve the template.** If $ARGUMENTS starts with a known template id (e.g. `bug-diagnose`, `code-review`, `red-green`, `architecture`), peel it off as the template and treat the rest as the work payload. Otherwise call `mcp__chorus__list_templates`, show the user `name + description` for each, and ask which to use. Don't guess — picking the wrong template wastes a multi-minute, multi-LLM run.
13
+
14
+ 2. **Create the chat.** Call `mcp__chorus__create_chat` with `{ template, work }`. Capture the returned `chatId`.
15
+
16
+ 3. **Wait for the result.** Call `mcp__chorus__wait_for_chat({ chatId })`. Stream any progress notifications back to the user as they arrive (template phases, reviewer verdicts).
17
+
18
+ 4. **Summarise.** When the chat completes, report:
19
+ - The final verdict (approved / changes-requested / blocked)
20
+ - The 3-5 highest-priority findings, each with a one-line rationale and a file:line pointer if the reviewer gave one
21
+ - The Chorus cockpit URL for the run if available (typically `http://127.0.0.1:5050/runs/<chatId>`)
22
+
23
+ Do not paste the full transcript. The user can open the run page for that.
24
+
25
+ ## Failure handling
26
+
27
+ - If `create_chat` returns `MCP server chorus not connected` or any tool throws a connection error, tell the user to run `chorus start` (or `chorus status` to check) and retry. Do not fall back to doing the review yourself.
28
+ - If the chat is `blocked` (waiting for human input), surface the question verbatim and stop — let the user respond via `mcp__chorus__resume_chat`.
29
+ - If the chat fails (`failed` status), report the error from `get_chat_status` and suggest the cockpit URL for the full log.
30
+
31
+ ## Hard rules
32
+
33
+ - Never substitute your own review for a Chorus run when the user asked for `/chorus` — the whole point is cross-lineage second opinions.
34
+ - Never invent a template id. If $ARGUMENTS doesn't match a real template, ask.
35
+ - Never call `cancel_chat` unless the user explicitly asks to abort.