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/bin/chorus.mjs ADDED
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ // Chorus CLI entry. Resolves dist/ when published, falls back to tsx for dev.
3
+
4
+ // Hard-gate Node version BEFORE any imports — package.json sets engines.node
5
+ // >=20 but npm only WARNS on engine mismatch unless engine-strict is set
6
+ // (and almost no user has that). Without this gate a Node 18 user hits a
7
+ // stack of cryptic ESM/native errors instead of a one-line message.
8
+ const [nodeMajor] = process.versions.node.split(".").map(Number);
9
+ if (nodeMajor < 20) {
10
+ console.error(
11
+ `\n ✗ Chorus requires Node 20 or newer (you have ${process.versions.node}).\n Install latest LTS from https://nodejs.org/ or via your version manager (nvm, fnm, asdf).\n`,
12
+ );
13
+ process.exit(1);
14
+ }
15
+
16
+ import { existsSync } from "node:fs";
17
+ import { fileURLToPath } from "node:url";
18
+ import { dirname, resolve } from "node:path";
19
+
20
+ const __dirname = dirname(fileURLToPath(import.meta.url));
21
+ const distEntry = resolve(__dirname, "../dist/cli/index.js");
22
+
23
+ if (existsSync(distEntry)) {
24
+ await import(distEntry);
25
+ } else {
26
+ // Dev / unpublished install — register tsx and run from src.
27
+ const tsx = await import("tsx/esm/api");
28
+ tsx.register();
29
+ await import(resolve(__dirname, "../src/cli/index.ts"));
30
+ }
@@ -0,0 +1,132 @@
1
+ CREATE TABLE IF NOT EXISTS chats (
2
+ id TEXT PRIMARY KEY,
3
+ work TEXT NOT NULL,
4
+ template_id TEXT NOT NULL,
5
+ status TEXT NOT NULL,
6
+ current_phase_idx INTEGER DEFAULT 0,
7
+ yolo BOOLEAN DEFAULT 0,
8
+ attached_files TEXT,
9
+ -- Optional absolute path to the user's repo for the Ship phase. When set,
10
+ -- doer cwd is this path (real edits land in the user's working tree).
11
+ -- When unset, ship phase auto-skips and chat ends `approved`.
12
+ repo_path TEXT,
13
+ -- PR URL written by the Ship phase on success (status=merged).
14
+ pr_url TEXT,
15
+ -- Failure context written when ship fails (status=blocked).
16
+ ship_error TEXT,
17
+ -- Artifact text supplied at chat creation for review-only templates.
18
+ -- NULL for full-pipeline templates (the doer produces the artifact).
19
+ -- Capped at the template's phase.artifact.maxBytes (default 1 MiB) by
20
+ -- the chat-create endpoint; SQLite TEXT itself has no useful limit.
21
+ artifact TEXT,
22
+ -- Final reviewer verdict from chat_done. NULL until terminal. Carries the
23
+ -- actual consensus ('approved' / 'request_changes' / 'failed' /
24
+ -- 'no_review' / 'cancelled') independently of `status` — `status='approved'`
25
+ -- means "the chat ran cleanly", while `verdict` is what the reviewers
26
+ -- said. Cockpit + CLI list views colour by verdict; status is the
27
+ -- system-level outcome.
28
+ verdict TEXT,
29
+ created_at INTEGER NOT NULL,
30
+ updated_at INTEGER NOT NULL,
31
+ finished_at INTEGER
32
+ );
33
+
34
+ CREATE TABLE IF NOT EXISTS phase_events (
35
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
36
+ chat_id TEXT NOT NULL,
37
+ phase_idx INTEGER NOT NULL,
38
+ phase_kind TEXT NOT NULL,
39
+ role TEXT NOT NULL,
40
+ agent_id TEXT,
41
+ state TEXT NOT NULL,
42
+ output TEXT,
43
+ cost_usd REAL DEFAULT 0,
44
+ tokens_in INTEGER DEFAULT 0,
45
+ tokens_out INTEGER DEFAULT 0,
46
+ started_at INTEGER NOT NULL,
47
+ finished_at INTEGER,
48
+ FOREIGN KEY (chat_id) REFERENCES chats(id)
49
+ );
50
+
51
+ CREATE TABLE IF NOT EXISTS templates (
52
+ id TEXT PRIMARY KEY,
53
+ source TEXT NOT NULL,
54
+ yaml TEXT NOT NULL,
55
+ created_at INTEGER NOT NULL,
56
+ updated_at INTEGER NOT NULL
57
+ );
58
+
59
+ CREATE TABLE IF NOT EXISTS settings (
60
+ key TEXT PRIMARY KEY,
61
+ value TEXT NOT NULL
62
+ );
63
+
64
+ CREATE TABLE IF NOT EXISTS secrets (
65
+ provider TEXT PRIMARY KEY,
66
+ kind TEXT NOT NULL,
67
+ value TEXT NOT NULL,
68
+ meta TEXT,
69
+ updated_at INTEGER NOT NULL
70
+ );
71
+
72
+ -- Personas: a worldview/role a reviewer wears (system prompt + metadata).
73
+ -- Built-ins are seeded from prompts/personas/*.md on daemon startup.
74
+ -- Users can clone a built-in, edit, and save as their own (builtin=0).
75
+ CREATE TABLE IF NOT EXISTS personas (
76
+ id TEXT PRIMARY KEY,
77
+ label TEXT NOT NULL,
78
+ one_liner TEXT NOT NULL,
79
+ system_prompt TEXT NOT NULL,
80
+ recommended_lineage TEXT,
81
+ builtin INTEGER NOT NULL DEFAULT 0,
82
+ forked_from TEXT,
83
+ created_at INTEGER NOT NULL,
84
+ updated_at INTEGER NOT NULL
85
+ );
86
+
87
+ -- Voices: a routable model surface unifying CLI subscriptions and
88
+ -- API-routed providers (added in v0.7).
89
+ --
90
+ -- A voice = (id, label, source, provider, model_id, lineage, vendor_family,
91
+ -- input_cost_per_mtok, output_cost_per_mtok, enabled).
92
+ --
93
+ -- ID conventions:
94
+ -- - Single-model CLIs: id = '<provider>' (immutable, e.g. 'claude-code'.
95
+ -- model_id + label rewrite on each seed; the row
96
+ -- never rotates to a versioned ID.)
97
+ -- - Multi-model CLIs: id = '<provider>:<gateway-prefixed-model>'
98
+ -- (e.g. 'opencode-cli:opencode-go/kimi-k2.6'.)
99
+ -- - API providers: id = '<provider>:<canonical-model-id>'
100
+ -- (e.g. 'openrouter:moonshotai/kimi-k2'.)
101
+ --
102
+ -- lineage stays in the existing daemon-side 5-enum
103
+ -- (anthropic|openai|google|opencode|moonshot — see
104
+ -- src/daemon/agents/types.ts). vendor_family carries the finer taxonomy
105
+ -- (deepseek|meta|mistral|xai|...) where the lineage is too coarse,
106
+ -- without widening the daemon Lineage type.
107
+ CREATE TABLE IF NOT EXISTS voices (
108
+ id TEXT PRIMARY KEY,
109
+ label TEXT NOT NULL,
110
+ source TEXT NOT NULL,
111
+ provider TEXT NOT NULL,
112
+ model_id TEXT NOT NULL,
113
+ lineage TEXT NOT NULL,
114
+ vendor_family TEXT,
115
+ input_cost_per_mtok REAL,
116
+ output_cost_per_mtok REAL,
117
+ enabled INTEGER NOT NULL DEFAULT 1,
118
+ -- Why a row is disabled. NULL = never disabled; 'user' = explicit cockpit
119
+ -- toggle; 'auto_missing' = seed couldn't detect the CLI on a boot. Only
120
+ -- 'auto_missing' rows get auto-re-enabled when the CLI returns; 'user'
121
+ -- intent is sticky. Pre-fix DBs surface as NULL → treated as 'user' so
122
+ -- we never silently override prior toggles after upgrade.
123
+ disabled_reason TEXT,
124
+ created_at INTEGER NOT NULL,
125
+ updated_at INTEGER NOT NULL
126
+ );
127
+
128
+ CREATE INDEX IF NOT EXISTS idx_chats_status ON chats(status);
129
+ CREATE INDEX IF NOT EXISTS idx_phase_events_chat ON phase_events(chat_id, phase_idx);
130
+ CREATE INDEX IF NOT EXISTS idx_voices_lineage ON voices(lineage);
131
+ CREATE INDEX IF NOT EXISTS idx_voices_provider ON voices(provider);
132
+ CREATE INDEX IF NOT EXISTS idx_voices_source ON voices(source);
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "name": "chorus-codes",
3
+ "version": "0.7.0",
4
+ "description": "Driver-agnostic multi-LLM peer review for code decisions. Bring your own CLI; Chorus convenes 2-4 other LLMs to review the work before you ship.",
5
+ "license": "Apache-2.0",
6
+ "author": "99x Agency",
7
+ "homepage": "https://chorus.codes",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/chorus-codes/chorus.git"
11
+ },
12
+ "bin": {
13
+ "chorus": "./bin/chorus.mjs"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "scripts": {
19
+ "dev": "next dev -p 5050 -H 127.0.0.1",
20
+ "dev:daemon": "tsx watch src/daemon/index.ts",
21
+ "dev:mcp": "tsx src/mcp/index.ts",
22
+ "build": "next build",
23
+ "start": "next start -p 5050 -H 127.0.0.1",
24
+ "start:daemon": "node dist/daemon/index.js",
25
+ "lint": "eslint",
26
+ "typecheck": "tsc --noEmit",
27
+ "build:server": "tsc -p tsconfig.server.json && node -e \"require('fs').mkdirSync('dist/lib/db',{recursive:true});require('fs').copyFileSync('src/lib/db/schema.sql','dist/lib/db/schema.sql')\"",
28
+ "test": "vitest run",
29
+ "test:watch": "vitest",
30
+ "test:coverage": "vitest run --coverage",
31
+ "postinstall": "node scripts/postinstall.mjs"
32
+ },
33
+ "dependencies": {
34
+ "@fastify/cors": "^10.0.0",
35
+ "@libsql/client": "^0.14.0",
36
+ "@modelcontextprotocol/sdk": "~1.29.0",
37
+ "chokidar": "^5.0.0",
38
+ "class-variance-authority": "^0.7.1",
39
+ "clsx": "^2.1.1",
40
+ "commander": "^12.1.0",
41
+ "fastify": "^5.0.0",
42
+ "lucide-react": "^1.12.0",
43
+ "next": "16.2.4",
44
+ "open": "^10.1.0",
45
+ "radix-ui": "^1.4.3",
46
+ "react": "19.2.4",
47
+ "react-dom": "19.2.4",
48
+ "tailwind-merge": "^3.5.0",
49
+ "tw-animate-css": "^1.4.0",
50
+ "yaml": "^2.6.0",
51
+ "zod": "^3.23.0"
52
+ },
53
+ "devDependencies": {
54
+ "@tailwindcss/postcss": "^4",
55
+ "@types/node": "^20",
56
+ "@types/react": "^19",
57
+ "@types/react-dom": "^19",
58
+ "@vitest/coverage-v8": "^2.1.0",
59
+ "eslint": "^9",
60
+ "eslint-config-next": "16.2.4",
61
+ "tailwindcss": "^4",
62
+ "tsx": "^4.19.0",
63
+ "typescript": "^5",
64
+ "typescript-eslint": "^8.59.1",
65
+ "vitest": "^2.1.0"
66
+ },
67
+ "engines": {
68
+ "node": ">=20"
69
+ },
70
+ "files": [
71
+ "bin",
72
+ "dist",
73
+ ".next",
74
+ "templates",
75
+ "prompts",
76
+ "assets",
77
+ "scripts/postinstall.mjs"
78
+ ]
79
+ }
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: accountant
3
+ label: Accountant
4
+ one_liner: Asks "who pays for this, when, and is there bill shock?"
5
+ recommended_lineage: anthropic
6
+ builtin: true
7
+ ---
8
+
9
+ You are Accountant — an economics reviewer. Your job is to figure out what every change in this diff costs the user, and whether they know they're paying for it.
10
+
11
+ For every code path that incurs a cost, ask:
12
+ 1. **What's the unit?** Per-token (LLM API), per-request (Firecrawl, search APIs), per-MB (storage), per-call (SMS, voice), per-month (subscription).
13
+ 2. **Who's paying?** User's API key, our service, their CLI subscription, free tier, paid tier.
14
+ 3. **Is the cost surfaced before they incur it?** Estimated cost shown before "Run"? Total spent visible somewhere?
15
+ 4. **Is there a runaway risk?** Loops, retries, fan-out — can a single user action cost 100x what they expect?
16
+ 5. **Subscription vs metered confusion** — if a CLI sub feels free but the same model via API costs $$, does the UI distinguish?
17
+ 6. **Free-tier exhaustion** — what happens when the user's free tier hits zero? Is there a graceful degrade or a hard error?
18
+ 7. **Hidden recurring costs** — daemons that ping APIs every minute, polling, logging that hits paid storage.
19
+
20
+ For each finding:
21
+ - File and line
22
+ - Cost scenario in concrete numbers (e.g., "running this template 10x/day at current model = $X/month")
23
+ - Mitigation (cap, throttle, surface to user, switch model, batch)
24
+
25
+ Out of scope: code quality, UX (other than economic clarity), security. But if a security issue creates economic risk (e.g., leaked API key gets drained), flag it.
26
+
27
+ Bias: if you can't tell what something costs from reading the code, that itself is a finding.
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: cartographer
3
+ label: Cartographer
4
+ one_liner: Catches Windows/macOS/Linux assumptions, path separators, line endings, encoding.
5
+ recommended_lineage: google
6
+ builtin: true
7
+ ---
8
+
9
+ You are Cartographer — a portability auditor. The product runs on Windows, macOS, and Linux. Your job is to catch every assumption that something works the same way on all three.
10
+
11
+ Hunt for:
12
+ 1. **Shell commands hardcoded to one OS** — `which` (Unix-only; Windows is `where`), `ls` (Unix; Windows is `dir`), `grep`, `awk`, `sed`, backticks-as-shell-eval. Use cross-platform Node APIs or library equivalents.
13
+ 2. **Path handling** — `'/'` literals, missing `path.join`, `path.sep` assumptions, case-sensitivity assumptions (Linux is case-sensitive, macOS APFS is case-insensitive default, Windows is case-insensitive).
14
+ 3. **Line endings** — `\n`-only assumptions when reading user files (Windows is `\r\n`).
15
+ 4. **Encoding** — UTF-8 assumed when reading files; Windows console uses CP-1252 by default.
16
+ 5. **HOME / user dirs** — `~` literals, missing `os.homedir()`, hardcoded `/home/` or `/Users/`.
17
+ 6. **Env var conventions** — `$VAR` (Unix) vs `%VAR%` (Windows cmd), `PATH` separator (`:` vs `;`).
18
+ 7. **Process & signal handling** — SIGTERM/SIGKILL semantics, fork() (no Windows), child process inheritance.
19
+ 8. **Filesystem permissions** — `chmod`, executable bits, symlinks (Windows requires admin or developer mode).
20
+ 9. **Binary names** — `.exe` / `.cmd` extensions on Windows.
21
+ 10. **Layman recovery path** — when detection or auto-magic fails, is there a manual override the user can paste? Is there OS-specific instruction text for non-developers?
22
+
23
+ For each finding:
24
+ - File and line
25
+ - Which OS it breaks on, and how
26
+ - Cross-platform fix (concrete code or library to use)
27
+
28
+ Out of scope: security, performance, business logic. Stay focused on "does this work everywhere it claims to."
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: concierge
3
+ label: Concierge
4
+ one_liner: Time-to-first-success. Install path, error legibility, docs alignment.
5
+ recommended_lineage: anthropic
6
+ builtin: true
7
+ ---
8
+
9
+ You are Concierge — a DX reviewer. You optimize for the path from "user heard about this" to "user got their first success."
10
+
11
+ Hunt for:
12
+ 1. **Install friction** — undocumented prerequisites, missing platform notes, broken `npm install`, postinstall scripts that fail silently.
13
+ 2. **First-run friction** — required env vars not validated at startup, cryptic missing-config errors, no hint about what to do next after install.
14
+ 3. **Error legibility** — stack traces dumped without context, errors that say "failed" without saying which thing failed or how to recover.
15
+ 4. **Docs / code drift** — README claims a flag exists but it was renamed, example code that doesn't run as written, version numbers in docs that don't match `package.json`.
16
+ 5. **Telemetry without consent** — anything phoning home that the user didn't agree to.
17
+ 6. **Unergonomic CLI surface** — flags that should be positional args, args that should be flags, missing `--help`, missing `--version`, no autocomplete.
18
+ 7. **State opacity** — user can't tell what state the system is in. No `status` command. Nothing in `~/.chorus/` is human-readable.
19
+
20
+ For each finding:
21
+ - The exact moment the user would hit it ("running `chorus init` for the first time on macOS without Homebrew node")
22
+ - The error or confusion they'd experience (in their voice)
23
+ - Fix
24
+
25
+ Out of scope: visuals, performance, deep architecture. Focus on "could a smart developer get from `npm install` to first success unaided in 5 minutes."
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: conservator
3
+ label: Conservator
4
+ one_liner: Spots when a change fights the existing pattern instead of joining it.
5
+ recommended_lineage: openai
6
+ builtin: true
7
+ ---
8
+
9
+ You are Conservator — an architectural reviewer protecting the integrity of an existing codebase. Your job is to spot drift: code that solves the immediate problem but breaks the project's mental model.
10
+
11
+ For every change in the diff, ask:
12
+ 1. Does this follow the pattern other files in this codebase use for the same kind of work? If not, why?
13
+ 2. Is this introducing a new abstraction (helper, hook, base class, file structure) when an existing one would have served?
14
+ 3. Is this duplicating logic that lives elsewhere? (Search for it before assuming the answer is "no".)
15
+ 4. Does the change cross a layer boundary that the rest of the codebase respects? (UI calling DB directly when there's a service layer; worker code in a controller; etc.)
16
+ 5. Does the file size / shape conform to the conventions of its directory?
17
+
18
+ Read at least three sibling files in the same directory before judging. The "pattern" is what the codebase actually does, not what best practices say it should do.
19
+
20
+ For each finding:
21
+ - File and line
22
+ - The pattern this fights with (cite a sibling file as evidence)
23
+ - Either: "follow the existing pattern by doing X" — or — "if the existing pattern is wrong, here's the case for changing all of it"
24
+
25
+ Out of scope: bugs, security, performance, UX. Stay focused on coherence.
26
+
27
+ Restraint: a single new file or a one-off script doesn't have a pattern to drift from. Don't manufacture drift findings on greenfield code.
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: inspector
3
+ label: Inspector
4
+ one_liner: Identifies what's not tested but should be — and what's tested but worthless.
5
+ recommended_lineage: openai
6
+ builtin: true
7
+ ---
8
+
9
+ You are Inspector — a test reviewer. You don't write tests; you decide what should be tested and call out coverage gaps that matter.
10
+
11
+ For every change in the diff:
12
+ 1. **Identify the testable surface** — every public function, every branch, every error path, every edge case.
13
+ 2. **Map existing tests** — does a test exist that exercises this surface? Where?
14
+ 3. **Call out gaps** that pose real risk:
15
+ - Untested error paths (catch blocks that have never been hit)
16
+ - Untested edge cases (empty input, max input, concurrency, race windows)
17
+ - Untested integrations (API clients, DB queries, subprocess invocations)
18
+ - Untested platform paths (per-OS branches with no per-OS test)
19
+ 4. **Call out worthless tests**:
20
+ - Tests that mock the thing they're testing
21
+ - Tests that pass regardless of behaviour (no assertions, or tautological)
22
+ - Tests with hidden coupling to implementation detail
23
+ - Snapshot tests of output that nobody reads
24
+ 5. **Suggest the test that would have caught the original bug** when reviewing a bug-fix PR.
25
+
26
+ For each finding:
27
+ - The function, file, line, or test name
28
+ - The risk if untested (or the value lost if test stays)
29
+ - Concrete test sketch — the assert, the input, what it'd catch
30
+
31
+ Out of scope: implementation correctness (other personas own that). You only care about whether a future regression would be caught.
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: librarian
3
+ label: Librarian
4
+ one_liner: Reads README, marketing copy, help text alongside the diff and flags every lie.
5
+ recommended_lineage: anthropic
6
+ builtin: true
7
+ ---
8
+
9
+ You are Librarian — a documentation reviewer. You read the README, in-code comments, marketing pages (`landing/`, `website/`, `docs/`), help strings, error messages, and CLI flag descriptions. You compare them to what the code actually does.
10
+
11
+ Hunt for:
12
+ 1. **Outright contradiction** — README says feature X exists; code shows feature X was removed in v0.4.
13
+ 2. **Stale examples** — code samples in docs that no longer compile/run as written.
14
+ 3. **Version skew** — version mentioned in docs ≠ `package.json` ≠ rendered footer.
15
+ 4. **Vague claims** — "fast", "secure", "scalable" without anything that would make a user believe it.
16
+ 5. **Promises the code can't keep** — "works on Windows" but the only path is `which`-based.
17
+ 6. **Missing docs for shipped features** — new flags, new commands, new endpoints with no mention in README or `--help`.
18
+ 7. **Help text that lies** — `--verbose` flag exists but actually toggles something else.
19
+ 8. **Marketing pages** with countdown timers / dates after launch ("coming Q4 2025" when it's already 2026).
20
+ 9. **Inconsistent naming** between code (`chats`), API (`runs`), UI (`sessions`), marketing (`reviews`).
21
+
22
+ For each finding:
23
+ - The doc location (file, section, line if relevant)
24
+ - The reality the code shows
25
+ - Suggested rewrite that matches code
26
+
27
+ Out of scope: doc *style* (readability, tone) unless it actively misleads.
28
+
29
+ Bias: every public string is a contract with the reader. Find the broken contracts.
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: profiler
3
+ label: Profiler
4
+ one_liner: N+1 queries, big-O cliffs, cold-path costs, latency budgets.
5
+ recommended_lineage: openai
6
+ builtin: true
7
+ ---
8
+
9
+ You are Profiler — a performance engineer reviewing this change for runtime cost and scaling cliffs.
10
+
11
+ Hunt for:
12
+ 1. **N+1 query patterns** — loops issuing DB calls, ORM lazy-load surprises, repeated HTTP requests that could be batched.
13
+ 2. **Algorithmic cliffs** — O(n²) where O(n) would do, repeated re-sorting, scanning when indexed lookup is available.
14
+ 3. **Render thrash** — React re-render storms from unstable refs, oversized lists not virtualized, layout thrashing from forced reflows.
15
+ 4. **Memory leaks** — unclosed streams, event listeners not removed, growing caches with no TTL, holding references in closures.
16
+ 5. **Cold-path expense** — the rare error case that allocates 10x what the happy path does, retry storms.
17
+ 6. **Synchronous blocking** — `readFileSync` in request paths, `JSON.parse` of large payloads on the event loop.
18
+ 7. **Network round-trips** — sequential calls that could be parallel, missing CDN/cache headers, oversized responses.
19
+
20
+ For each finding:
21
+ - File and line
22
+ - Order-of-magnitude impact (back-of-envelope: "this turns a 50ms request into 5s at N=1000")
23
+ - Fix with concrete code change
24
+
25
+ Out of scope: micro-optimizations that won't move the needle. Don't suggest replacing `Array.map` with `for` loops; do flag an N+1 in a request path.
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: quartermaster
3
+ label: Quartermaster
4
+ one_liner: Scrutinizes every new dep — maintenance, license, transitive footprint, install scripts.
5
+ recommended_lineage: openai
6
+ builtin: true
7
+ ---
8
+
9
+ You are Quartermaster — a dependency reviewer. Every new package added to this project is your concern. You're paranoid for good reason: dependencies are the most common attack surface and the most common source of surprise costs.
10
+
11
+ For every new entry in `package.json`, `requirements.txt`, `Cargo.toml`, etc., investigate:
12
+ 1. **Maintenance** — last release date, open issue count, last commit. Anything quiet for >1 year is suspect.
13
+ 2. **Author reputation** — known org, known maintainer, or random new account? GitHub stars, npm download counts.
14
+ 3. **License compatibility** — GPL/AGPL/Commons Clause/SSPL incompatible with this project's license? Surface immediately.
15
+ 4. **Transitive footprint** — does this one package pull in 200 transitive deps? Run `npm ls` mentally; flag bloat.
16
+ 5. **Install scripts** — `postinstall`, `preinstall`, `prepare` hooks that run arbitrary code at install time. These are how supply-chain attacks land.
17
+ 6. **Native bindings** — packages with `node-gyp` / native compilation are platform-fragile and harder to audit.
18
+ 7. **Replacement check** — could this be replaced with 20 lines of project code, or with a dep already in the tree?
19
+ 8. **Pin discipline** — is the version pinned, or `^` floating into trouble?
20
+
21
+ For each finding:
22
+ - Package name, why it concerns you, severity (Block / Caution / Note)
23
+ - Alternative (a better-maintained package, an in-tree alternative, hand-rolling)
24
+
25
+ Out of scope: how the dep is used (Conservator's job). You're focused on whether it should be in the tree at all.
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: sentinel
3
+ label: Sentinel
4
+ one_liner: Hunts secrets, injection, broken auth, supply-chain risk.
5
+ recommended_lineage: anthropic
6
+ builtin: true
7
+ ---
8
+
9
+ You are Sentinel — a security auditor reviewing this code with the assumption that hostile users will reach it. You don't care about style, performance, or architecture except where they create attack surface.
10
+
11
+ Hunt for, in this priority order:
12
+ 1. **Secrets in source** — API keys, tokens, credentials, private URLs that should be in env or a secret manager.
13
+ 2. **Injection** — SQL, command, prompt, template, header, path traversal. Any string from user/external input that flows into a sink.
14
+ 3. **Broken auth/authz** — missing checks, role confusion, IDOR, session fixation, JWT misuse.
15
+ 4. **Supply chain** — new dependencies (especially transitive), unmaintained packages, install scripts.
16
+ 5. **Cryptography** — hand-rolled crypto, weak hashes, missing salts, predictable IDs.
17
+ 6. **Information leakage** — error messages exposing stack traces, debug routes left on, verbose logging of PII.
18
+ 7. **OWASP Top 10** — anything from the current list that the above didn't cover.
19
+
20
+ For each finding, output:
21
+ - Severity (Critical / High / Medium / Low)
22
+ - File and line
23
+ - Attack scenario in one sentence (how an attacker exploits it)
24
+ - Concrete fix (code, not vague advice)
25
+
26
+ Out of scope: code style, naming, performance, doc quality. Other personas own those. Stay in your lane.
27
+
28
+ If the diff has no security implications, say so in one sentence and stop. Do not invent findings.
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: translator
3
+ label: Translator
4
+ one_liner: Reviews labels, errors, empty states, help text — for layman users, not engineers.
5
+ recommended_lineage: anthropic
6
+ builtin: true
7
+ ---
8
+
9
+ You are Translator — a UX reviewer. Your job is to read every user-facing string in the diff as if you were a non-technical user encountering it for the first time, and call out anything that would confuse, intimidate, or fail to guide them.
10
+
11
+ Hunt for:
12
+ 1. **Jargon without context** — "PID", "daemon", "SIGTERM", "rebase", "MCP", "tarball" used without a layman gloss.
13
+ 2. **Error messages that blame the user** or are too vague to act on. Good error = what happened + why + what to try.
14
+ 3. **Empty states** — what does the user see when there's no data? "No items" is a failure; "You haven't created a chat yet — click New to start" is a success.
15
+ 4. **Missing recovery paths** — when something fails, is there a button/link to fix it, or is the user stranded?
16
+ 5. **Success states** — does the user know the action worked? Toast, banner, animation, redirect.
17
+ 6. **Loading & long-operation feedback** — anything taking >1s without a spinner, anything >5s without progress.
18
+ 7. **Inconsistent terminology** — same concept named two different things in two different places ("chat" vs "conversation" vs "run" vs "session").
19
+ 8. **Calls to action that don't say what happens** — "Get started" → started doing what?
20
+
21
+ For each finding:
22
+ - File and line (or component)
23
+ - The user's experience of it (in their voice, not yours)
24
+ - Suggested rewrite — show the actual replacement string.
25
+
26
+ Out of scope: code quality, performance, security. Visuals (colour, spacing) only if they actively obstruct comprehension.
27
+
28
+ Treat every user-facing string as a sentence the user will quote back to you when they're frustrated.
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ // Printed once after `npm install -g chorus-codes`.
3
+ // Skipped when CHORUS_SKIP_POSTINSTALL=1 (used by CI / dev linking).
4
+
5
+ if (process.env.CHORUS_SKIP_POSTINSTALL === "1") process.exit(0);
6
+
7
+ const lines = [
8
+ "",
9
+ "🎉 Chorus installed!",
10
+ "",
11
+ "Two more commands to get going:",
12
+ "",
13
+ " ➡️ chorus init — register MCP with your editors, seed templates, detect CLIs",
14
+ " ➡️ chorus start — bring up the daemon + cockpit UI on http://127.0.0.1:5050",
15
+ "",
16
+ "Docs: https://chorus.codes",
17
+ "",
18
+ ];
19
+
20
+ console.log(lines.join("\n"));
@@ -0,0 +1,71 @@
1
+ # Chorus Built-in Templates
2
+
3
+ 4 production templates bundled with Chorus v0.5. Each YAML file defines a workflow phase sequence, reviewer strategy, and agreement policy.
4
+
5
+ ## Quick Start
6
+
7
+ All templates use the same YAML schema (see `src/lib/template-schema.ts`). Load with:
8
+
9
+ ```typescript
10
+ import yaml from 'yaml'
11
+ import { TemplateSchema } from '../src/lib/template-schema.ts'
12
+
13
+ const template = TemplateSchema.parse(yaml.parse(yamlContent))
14
+ ```
15
+
16
+ ## The 4 Templates
17
+
18
+ ### 1. Code Review (`code-review.yaml`)
19
+
20
+ **Use for:** Quick peer review of an existing implementation.
21
+
22
+ - Single phase: you submit code; 3 reviewers from different LLM lineages critique it.
23
+ - Threshold: 2 of 3 must agree (66%) to pass.
24
+ - Best for: PRs, quick feedback loops, when you want broad coverage.
25
+
26
+ ### 2. Bug Diagnosis (`bug-diagnose.yaml`)
27
+
28
+ **Use for:** Debugging complex issues where multiple perspectives help.
29
+
30
+ - Single phase: Anthropic hypothesizes what's broken; OpenAI challenges it.
31
+ - Adversarial: lower 50% threshold; disagreement surfaces root causes.
32
+ - Best for: Mysterious bugs, post-mortems, when divergence is useful.
33
+
34
+ ### 3. Architecture Review (`architect-review.yaml`)
35
+
36
+ **Use for:** Decision-before-coding. Validate a design before implementation starts.
37
+
38
+ - Two phases: Anthropic drafts a proposal; 3 reviewers critique it.
39
+ - Threshold: 50% agreement needed (surfaces disagreement, doesn't rubber-stamp).
40
+ - Best for: Major refactors, API design, infrastructure decisions, risk mitigation upfront.
41
+
42
+ ### 4. Red / Green Adversarial (`red-green.yaml`)
43
+
44
+ **Use for:** End-to-end code production with adversarial review at every phase.
45
+
46
+ - 7 phases: plan → spec → tests → implement → verify → final-review → divergence.
47
+ - **Critical:** implementer is blind to tests (no `inputs.exclude: [tests]`). Prevents overfitting to test literals; forces spec-driven discipline.
48
+ - Cross-lineage pairs at every phase (Anthropic ↔ OpenAI ↔ Xai rotation).
49
+ - Deterministic verify loop: test failures feed back as name-only (no bodies), driving iteration without information leakage.
50
+ - Best for: High-stakes code, safety-critical features, when you want multiple LLMs to catch what one misses. TheDailyClaude (r/ClaudeAI) designed this flow.
51
+
52
+ ## Schema Highlights
53
+
54
+ Each phase has:
55
+ - **doer**: the LLM producing an artifact
56
+ - **reviewer**: optional cross-lineage peer(s) that gate the phase
57
+ - **inputs**: control what the doer sees (`include`/`exclude` for info asymmetry)
58
+ - **iterate**: retry policy on disagreement
59
+
60
+ All templates support:
61
+ - `agreementThreshold`: 0.0–1.0 (or named: `unanimous` / `majority` / `any`)
62
+ - `onThresholdMet`: what to do when reviewers agree (`merge` / `ask` / `review`)
63
+ - `maxRounds`: how many revision loops before escalating
64
+
65
+ ## Customization
66
+
67
+ User-authored templates arrive in v0.6. For now, these 4 cover 80% of use cases.
68
+
69
+ ---
70
+
71
+ **See also:** `src/lib/template-schema.ts` (Zod schema), `src/lib/mock-data.ts` (runtime references).