@chorus-aidlc/chorus 0.16.3 → 0.17.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 (355) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +445 -445
  3. package/.next/standalone/.next/app-path-routes-manifest.json +54 -54
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +42 -42
  6. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  40. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  44. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  45. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
  48. package/.next/standalone/.next/server/app/admin/companies/new.rsc +1 -1
  49. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/admin/companies.html +2 -2
  51. package/.next/standalone/.next/server/app/admin/companies.rsc +1 -1
  52. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/admin.html +2 -2
  54. package/.next/standalone/.next/server/app/admin.rsc +1 -1
  55. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  84. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/mcp/route.js +3 -3
  106. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  108. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  125. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/index.html +2 -2
  157. package/.next/standalone/.next/server/app/index.rsc +1 -1
  158. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/login/admin.html +2 -2
  160. package/.next/standalone/.next/server/app/login/admin.rsc +1 -1
  161. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/login/callback.html +2 -2
  163. package/.next/standalone/.next/server/app/login/callback.rsc +1 -1
  164. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  165. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
  167. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +1 -1
  168. package/.next/standalone/.next/server/app/login.html +2 -2
  169. package/.next/standalone/.next/server/app/login.rsc +1 -1
  170. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  171. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  172. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  174. package/.next/standalone/.next/server/app/onboarding.rsc +2 -2
  175. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/projects.html +2 -2
  177. package/.next/standalone/.next/server/app/projects.rsc +2 -2
  178. package/.next/standalone/.next/server/app/settings.html +2 -2
  179. package/.next/standalone/.next/server/app/settings.rsc +3 -3
  180. package/.next/standalone/.next/server/app-paths-manifest.json +54 -54
  181. package/.next/standalone/.next/server/chunks/1114.js +1 -1
  182. package/.next/standalone/.next/server/chunks/1318.js +1 -1
  183. package/.next/standalone/.next/server/chunks/1437.js +1 -0
  184. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  185. package/.next/standalone/.next/server/chunks/2572.js +1 -1
  186. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  187. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  188. package/.next/standalone/.next/server/chunks/{9793.js → 3045.js} +1 -1
  189. package/.next/standalone/.next/server/chunks/3831.js +37 -0
  190. package/.next/standalone/.next/server/chunks/4827.js +1 -1
  191. package/.next/standalone/.next/server/chunks/5245.js +1 -1
  192. package/.next/standalone/.next/server/chunks/{4394.js → 5706.js} +1 -1
  193. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  194. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  195. package/.next/standalone/.next/server/chunks/6506.js +2 -2
  196. package/.next/standalone/.next/server/chunks/6515.js +2 -2
  197. package/.next/standalone/.next/server/chunks/679.js +1 -1
  198. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  199. package/.next/standalone/.next/server/chunks/7530.js +1 -1
  200. package/.next/standalone/.next/server/chunks/8454.js +1 -1
  201. package/.next/standalone/.next/server/chunks/920.js +1 -1
  202. package/.next/standalone/.next/server/chunks/9213.js +1 -1
  203. package/.next/standalone/.next/server/chunks/9378.js +1 -1
  204. package/.next/standalone/.next/server/chunks/9449.js +1 -0
  205. package/.next/standalone/.next/server/chunks/9458.js +1 -0
  206. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  207. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  208. package/.next/standalone/.next/server/pages/404.html +2 -2
  209. package/.next/standalone/.next/server/pages/500.html +1 -1
  210. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  211. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  212. package/.next/standalone/.next/static/chunks/{11595.97e534422c57aee1.js → 11595.bbe40924d18958bf.js} +1 -1
  213. package/.next/standalone/.next/static/chunks/18139-e6ef4b5869593f8e.js +1 -0
  214. package/.next/standalone/.next/static/chunks/28856-ef2cb58fbd404ef9.js +1 -0
  215. package/.next/standalone/.next/static/chunks/{31308-fda6febfb2882a28.js → 31308-bb4a97b3f39c22dd.js} +1 -1
  216. package/.next/standalone/.next/static/chunks/{33456.6dc44a6aca1a01fd.js → 33456.5499eb8e892b110a.js} +1 -1
  217. package/.next/standalone/.next/static/chunks/{4860.7873ebc9ba435c8c.js → 4860.be77046fb2b3a2bd.js} +1 -1
  218. package/.next/standalone/.next/static/chunks/66873-e3be53f41b3f2255.js +1 -0
  219. package/.next/standalone/.next/static/chunks/70303-aec3d52ad87602a3.js +1 -0
  220. package/.next/standalone/.next/static/chunks/76201-83b26515f85ce37c.js +1 -0
  221. package/.next/standalone/.next/static/chunks/78917-a8a8dff98857c045.js +1 -0
  222. package/.next/standalone/.next/static/chunks/{94643-01be319472d751b3.js → 94643-ffa140f765c73daf.js} +1 -1
  223. package/.next/standalone/.next/static/chunks/97663-9c3ae4fd60b353db.js +1 -0
  224. package/.next/standalone/.next/static/chunks/{99373.d0e808c18408b8da.js → 99373.111493dc260a2a04.js} +1 -1
  225. package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-b742c51c0a764daf.js → layout-40fe7d026c5a7c6d.js} +1 -1
  226. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-87d4d0fe90fca28c.js +1 -0
  227. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-1206abaee85dc915.js +1 -0
  228. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-425acbe9ade5fa83.js → page-474e494097c8945f.js} +1 -1
  229. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-e902b19328092ccf.js +1 -0
  230. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-f273288c3530aa0f.js +1 -0
  231. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6568a7b08bf9a54b.js +1 -0
  232. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-fbd3c27b68666234.js +1 -0
  233. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-58b48aa0a11603c3.js → page-15bb6e1696668512.js} +1 -1
  234. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-286faced32c6133f.js → page-2bea97214b1595cc.js} +1 -1
  235. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2bf7ceee62b574c7.js +1 -0
  236. package/.next/standalone/.next/static/chunks/app/onboarding/{page-5c82cf3abd856301.js → page-540da64d7ba16dc7.js} +1 -1
  237. package/.next/standalone/.next/static/chunks/{webpack-fa066d7ff9ab2b29.js → webpack-7cbb3ba6792f1fb3.js} +1 -1
  238. package/.next/standalone/package.json +1 -1
  239. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  240. package/.next/standalone/public/chorus-plugin/bin/chorus-api.sh +44 -1
  241. package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +4 -3
  242. package/.next/standalone/public/chorus-plugin/bin/tests/test-mcp-cli-delegation.sh +244 -0
  243. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  244. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +19 -1
  245. package/.next/standalone/public/chorus-plugin/skills/chorus-cli/SKILL.md +57 -0
  246. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +2 -2
  247. package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +1 -1
  248. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  249. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +85 -42
  250. package/.next/standalone/public/chorus-plugin/skills/orchestrate/SKILL.md +1 -1
  251. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +2 -2
  252. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  253. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  254. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +3 -3
  255. package/.next/standalone/public/dsh-credentials.sh +30 -0
  256. package/.next/standalone/public/install-codex.sh +21 -406
  257. package/.next/standalone/public/install-kiro.sh +20 -344
  258. package/.next/standalone/public/install-opencode.sh +20 -275
  259. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
  260. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-cli/SKILL.md +57 -0
  261. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +2 -2
  262. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +1 -1
  263. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
  264. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +85 -42
  265. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-orchestrate/SKILL.md +1 -1
  266. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +2 -2
  267. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
  268. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
  269. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +3 -3
  270. package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +44 -1
  271. package/.next/standalone/public/kiro-plugin/bin/on-agent-spawn.sh +6 -4
  272. package/.next/standalone/public/kiro-plugin/manifest.txt +41 -0
  273. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  274. package/.next/standalone/public/skill/chorus/SKILL.md +19 -1
  275. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
  276. package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
  277. package/.next/standalone/public/skill/docs-chorus/SKILL.md +1 -1
  278. package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
  279. package/.next/standalone/public/skill/orchestrate-chorus/SKILL.md +1 -1
  280. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
  281. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  282. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  283. package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
  284. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  285. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
  286. package/.next/standalone/public/test-dsh-credentials.sh +39 -0
  287. package/.next/standalone/public/test-install-codex.sh +31 -79
  288. package/README.ja.md +5 -3
  289. package/README.ko.md +5 -3
  290. package/README.md +5 -3
  291. package/README.zh.md +5 -3
  292. package/chorus.mjs +35 -1
  293. package/cli/agent-backend-prompt.mjs +94 -0
  294. package/cli/agents.mjs +329 -0
  295. package/cli/chorus-client.mjs +69 -0
  296. package/cli/claude-spawner.mjs +4 -0
  297. package/cli/client-args.mjs +11 -5
  298. package/cli/codex-spawner.mjs +11 -6
  299. package/cli/credentials.mjs +185 -3
  300. package/cli/daemon-agent.mjs +30 -5
  301. package/cli/daemon-banner.mjs +3 -3
  302. package/cli/daemon-config.mjs +27 -2
  303. package/cli/daemon-install-config.mjs +21 -14
  304. package/cli/daemon-rest-client.mjs +31 -8
  305. package/cli/daemon-service.mjs +120 -33
  306. package/cli/daemon.mjs +175 -28
  307. package/cli/dsh-managed-config.mjs +407 -0
  308. package/cli/dsh-spawner.mjs +445 -0
  309. package/cli/init/adapters.mjs +137 -0
  310. package/cli/init/agent-type-map.mjs +60 -0
  311. package/cli/init/chorus-plugin-consts.mjs +16 -0
  312. package/cli/init/codex-mcp-config.mjs +183 -0
  313. package/cli/init/contracts.mjs +120 -0
  314. package/cli/init/detect.mjs +97 -0
  315. package/cli/init/file-template.mjs +248 -0
  316. package/cli/init/install-methods.mjs +508 -0
  317. package/cli/init/registry.mjs +74 -0
  318. package/cli/init/run-command.mjs +30 -0
  319. package/cli/init/select.mjs +111 -0
  320. package/cli/init/steps/credential-seed.mjs +751 -0
  321. package/cli/init/steps/daemon-setup.mjs +246 -0
  322. package/cli/init/steps/plugin-install.mjs +37 -0
  323. package/cli/init-args.mjs +137 -0
  324. package/cli/init.mjs +198 -0
  325. package/cli/kiro-spawner.mjs +4 -0
  326. package/cli/login.mjs +26 -4
  327. package/cli/mcp-args.mjs +280 -0
  328. package/cli/mcp.mjs +164 -0
  329. package/cli/spawner-select.mjs +54 -2
  330. package/cli/turn-reporter.mjs +5 -2
  331. package/cli/upload-hooks.mjs +31 -1
  332. package/cli/waker.mjs +49 -6
  333. package/package.json +1 -1
  334. package/prisma/migrations/20260818024700_add_turn_backend_session_id/migration.sql +1 -0
  335. package/prisma/schema.prisma +3 -0
  336. package/.next/standalone/.next/server/chunks/3594.js +0 -1
  337. package/.next/standalone/.next/server/chunks/5351.js +0 -32
  338. package/.next/standalone/.next/server/chunks/6667.js +0 -1
  339. package/.next/standalone/.next/server/chunks/6995.js +0 -1
  340. package/.next/standalone/.next/static/chunks/19887-c0bb297a78a1c7cd.js +0 -1
  341. package/.next/standalone/.next/static/chunks/29108-5a11eea003f4cc11.js +0 -1
  342. package/.next/standalone/.next/static/chunks/53073-a7ed20af6538a178.js +0 -1
  343. package/.next/standalone/.next/static/chunks/6603-e70ddeab6ad09c50.js +0 -1
  344. package/.next/standalone/.next/static/chunks/78917-1b59cbb806b3ecfc.js +0 -1
  345. package/.next/standalone/.next/static/chunks/82751-3e161e1d8dbda3ac.js +0 -1
  346. package/.next/standalone/.next/static/chunks/99366-425e9ef22e60e3e2.js +0 -1
  347. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-f636e00c28f425ea.js +0 -1
  348. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-c004f1a194af7fa5.js +0 -1
  349. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-fdd617457730a116.js +0 -1
  350. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-6b3fb08d53826d02.js +0 -1
  351. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-d5b222f379b2e8ca.js +0 -1
  352. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-0a6c2d0e1b68e0e4.js +0 -1
  353. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-1507a761e67c2aa9.js +0 -1
  354. /package/.next/standalone/.next/static/{K8qIdwvKoIWbwQ_f01mnM → 0spgxl3lP26Fl1otd1D7R}/_buildManifest.js +0 -0
  355. /package/.next/standalone/.next/static/{K8qIdwvKoIWbwQ_f01mnM → 0spgxl3lP26Fl1otd1D7R}/_ssgManifest.js +0 -0
@@ -1,414 +1,29 @@
1
1
  #!/usr/bin/env bash
2
- # Chorus + Codex CLI one-shot installer
2
+ # Chorus + Codex CLI installer — DEPRECATED.
3
3
  #
4
- # Usage:
5
- # curl -sSL https://raw.githubusercontent.com/Chorus-AIDLC/Chorus/main/public/install-codex.sh | bash
6
- # # or non-interactive:
7
- # CHORUS_URL=https://... CHORUS_API_KEY=cho_... \
8
- # bash <(curl -sSL https://raw.githubusercontent.com/Chorus-AIDLC/Chorus/main/public/install-codex.sh)
4
+ # Chorus setup is now a global install plus a single command that configures
5
+ # every supported agent (claude / codex / opencode / kiro / openclaw / dsh):
9
6
  #
10
- # What this does (idempotent, safe to re-run):
11
- # 1. Verifies `codex` CLI is installed.
12
- # 2. Registers (or upgrades) the Chorus plugin marketplace.
13
- # 3. Writes [mcp_servers.chorus] (url + Authorization header) and
14
- # [plugins."chorus@chorus-plugins"] enabled = true into ~/.codex/config.toml,
15
- # so Codex auto-enables the plugin on first launch (falls back to one-click
16
- # `/plugins Install` if auto-install does not fire).
17
- # 4. Enables Codex lifecycle hooks. Chorus hook scripts are bundled in the
18
- # plugin manifest and loaded by Codex after the plugin is installed/enabled.
7
+ # npm install -g @chorus-aidlc/chorus@0.17.0
8
+ # chorus agents add
9
+ #
10
+ # This script is still fetched via curl for backward compatibility, but it no
11
+ # longer installs anything itself — it just points you at `chorus agents add`.
12
+ #
13
+ # Bash 3.2 compatible (macOS /bin/bash): no case-conversion parameter expansion,
14
+ # no associative arrays.
19
15
 
20
16
  set -euo pipefail
21
17
 
22
- # ---------- cosmetics ----------
23
- BOLD=$'\033[1m'; DIM=$'\033[2m'; GREEN=$'\033[32m'; YELLOW=$'\033[33m'; RED=$'\033[31m'; RESET=$'\033[0m'
24
- ok() { printf "${GREEN}✓${RESET} %s\n" "$*"; }
25
- warn() { printf "${YELLOW}!${RESET} %s\n" "$*" >&2; }
26
- die() { printf "${RED}✗${RESET} %s\n" "$*" >&2; exit 1; }
27
- hdr() { printf "\n${BOLD}%s${RESET}\n" "$*"; }
28
-
29
- # ---------- config ----------
30
- MARKETPLACE_NAME="chorus-plugins"
31
- MARKETPLACE_SOURCE_DEFAULT="${CHORUS_MARKETPLACE_SOURCE:-https://github.com/Chorus-AIDLC/Chorus}"
32
- CHORUS_URL_DEFAULT="${CHORUS_URL_DEFAULT:-http://localhost:8637/api/mcp}"
33
- CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
34
- CONFIG_TOML="$CODEX_HOME/config.toml"
35
-
36
- is_tty() { [ -t 0 ] && [ -t 1 ]; }
37
-
38
- clean_legacy_chorus_hooks_json() {
39
- local hooks_json="$1"
40
- local tmp backup removed
41
-
42
- tmp="$(mktemp "${TMPDIR:-/tmp}/chorus-hooks.XXXXXX")"
43
- backup="${hooks_json}.chorus-legacy-bak"
44
- cp "$hooks_json" "$backup"
45
-
46
- if command -v node >/dev/null 2>&1; then
47
- removed="$(node - "$hooks_json" "$tmp" <<'NODE'
48
- const fs = require("fs");
49
- const input = process.argv[2];
50
- const output = process.argv[3];
51
- let removed = 0;
52
-
53
- function isLegacyCommand(value) {
54
- return typeof value === "string" && value.indexOf("hooks/chorus/run-hook.sh") !== -1;
55
- }
56
-
57
- function clean(value, parentKey) {
58
- if (Array.isArray(value)) {
59
- return value
60
- .map((item) => clean(item, parentKey))
61
- .filter((item) => item !== undefined);
62
- }
63
-
64
- if (value && typeof value === "object") {
65
- if (isLegacyCommand(value.command)) {
66
- removed += 1;
67
- return undefined;
68
- }
69
-
70
- const hadHooksArray = Array.isArray(value.hooks);
71
- const out = {};
72
- for (const [key, child] of Object.entries(value)) {
73
- const cleaned = clean(child, key);
74
- if (cleaned === undefined) continue;
75
- if (Array.isArray(cleaned) && cleaned.length === 0 && (key === "hooks" || parentKey === "hooks")) continue;
76
- out[key] = cleaned;
77
- }
78
-
79
- if (hadHooksArray && (!Array.isArray(out.hooks) || out.hooks.length === 0)) {
80
- return undefined;
81
- }
82
- return out;
83
- }
84
-
85
- return value;
86
- }
87
-
88
- let data = JSON.parse(fs.readFileSync(input, "utf8"));
89
- data = clean(data, "") || {};
90
- if (data.hooks && typeof data.hooks === "object" && !Array.isArray(data.hooks)) {
91
- for (const key of Object.keys(data.hooks)) {
92
- if (Array.isArray(data.hooks[key]) && data.hooks[key].length === 0) {
93
- delete data.hooks[key];
94
- }
95
- }
96
- if (Object.keys(data.hooks).length === 0) {
97
- delete data.hooks;
98
- }
99
- }
100
- fs.writeFileSync(output, JSON.stringify(data, null, 2) + "\n");
101
- process.stdout.write(String(removed));
102
- NODE
103
- )" || {
104
- rm -f "$tmp"
105
- warn "Could not parse $hooks_json with node; leaving legacy hooks unchanged."
106
- warn "Backup created at $backup"
107
- return 1
108
- }
109
- elif command -v python3 >/dev/null 2>&1; then
110
- removed="$(python3 - "$hooks_json" "$tmp" <<'PY'
111
- import json
112
- import sys
113
-
114
- input_path = sys.argv[1]
115
- output_path = sys.argv[2]
116
- removed = 0
117
-
118
- def is_legacy_command(value):
119
- return isinstance(value, str) and "hooks/chorus/run-hook.sh" in value
120
-
121
- def clean(value, parent_key=""):
122
- global removed
123
- if isinstance(value, list):
124
- return [item for item in (clean(child, parent_key) for child in value) if item is not None]
125
- if isinstance(value, dict):
126
- if is_legacy_command(value.get("command")):
127
- removed += 1
128
- return None
129
- had_hooks_array = isinstance(value.get("hooks"), list)
130
- out = {}
131
- for key, child in value.items():
132
- cleaned = clean(child, key)
133
- if cleaned is None:
134
- continue
135
- if isinstance(cleaned, list) and not cleaned and (key == "hooks" or parent_key == "hooks"):
136
- continue
137
- out[key] = cleaned
138
- if had_hooks_array and (not isinstance(out.get("hooks"), list) or not out["hooks"]):
139
- return None
140
- return out
141
- return value
142
-
143
- with open(input_path, "r", encoding="utf-8") as f:
144
- data = json.load(f)
145
-
146
- data = clean(data) or {}
147
- if isinstance(data.get("hooks"), dict):
148
- for key in list(data["hooks"].keys()):
149
- if isinstance(data["hooks"][key], list) and not data["hooks"][key]:
150
- del data["hooks"][key]
151
- if not data["hooks"]:
152
- del data["hooks"]
153
-
154
- with open(output_path, "w", encoding="utf-8") as f:
155
- json.dump(data, f, indent=2)
156
- f.write("\n")
157
-
158
- print(removed, end="")
159
- PY
160
- )" || {
161
- rm -f "$tmp"
162
- warn "Could not parse $hooks_json with python3; leaving legacy hooks unchanged."
163
- warn "Backup created at $backup"
164
- return 1
165
- }
166
- else
167
- rm -f "$tmp"
168
- warn "Cannot auto-clean $hooks_json because neither node nor python3 is available."
169
- warn "Backup created at $backup"
170
- return 1
171
- fi
172
-
173
- if [ "${removed:-0}" = "0" ]; then
174
- rm -f "$tmp"
175
- warn "No legacy Chorus hook entries were removed from $hooks_json."
176
- warn "Backup created at $backup"
177
- return 1
178
- fi
179
-
180
- if grep -q '[^[:space:]{}]' "$tmp" 2>/dev/null; then
181
- mv "$tmp" "$hooks_json"
182
- ok "Removed $removed legacy Chorus hook entr$( [ "$removed" = "1" ] && printf 'y' || printf 'ies' ) from $hooks_json"
183
- else
184
- rm -f "$tmp" "$hooks_json"
185
- ok "Removed $removed legacy Chorus hook entr$( [ "$removed" = "1" ] && printf 'y' || printf 'ies' ) and deleted now-empty $hooks_json"
186
- fi
187
- ok "Backup saved at $backup"
188
- }
189
-
190
- # If piped through `curl | bash`, stdin is the script body. Re-open from /dev/tty
191
- # so interactive prompts still work — but only if a real TTY is available AND we
192
- # actually need to prompt for input. Both CHORUS_URL and CHORUS_API_KEY being set
193
- # lets us run fully non-interactively (useful in CI or unified-exec sandboxes).
194
- if [ -z "${CHORUS_API_KEY:-}" ] && ! is_tty; then
195
- if [ -r /dev/tty ] && [ -w /dev/tty ]; then
196
- exec < /dev/tty
197
- fi
198
- fi
199
-
200
- # ---------- step 1: check codex ----------
201
- hdr "1/5 Checking Codex CLI"
202
- command -v codex >/dev/null 2>&1 || die "codex not found in PATH. Install it first: npm i -g @openai/codex"
203
- ok "Found $(codex --version 2>/dev/null | head -1)"
204
-
205
- # ---------- step 2: register marketplace ----------
206
- hdr "2/5 Registering the Chorus plugin marketplace"
207
- # Extract the currently registered source (if any) for chorus-plugins.
208
- # awk scoped between the matching [marketplaces.<name>] header and the next [section].
209
- existing_source=""
210
- if [ -f "$CONFIG_TOML" ]; then
211
- existing_source="$(awk -v name="$MARKETPLACE_NAME" '
212
- $0 ~ "^\\[marketplaces\\." name "\\][[:space:]]*$" { in_block=1; next }
213
- in_block && /^\[/ { in_block=0 }
214
- in_block && /^source[[:space:]]*=/ {
215
- sub(/^source[[:space:]]*=[[:space:]]*/, "")
216
- gsub(/^"|"$/, "")
217
- print
218
- exit
219
- }
220
- ' "$CONFIG_TOML" 2>/dev/null || true)"
221
- fi
222
-
223
- if [ -z "$existing_source" ]; then
224
- codex plugin marketplace add "$MARKETPLACE_SOURCE_DEFAULT" >/dev/null
225
- ok "Added marketplace: $MARKETPLACE_SOURCE_DEFAULT"
226
- elif [ "$existing_source" = "$MARKETPLACE_SOURCE_DEFAULT" ]; then
227
- # Same source — pull the latest plugin manifest/version.
228
- if codex plugin marketplace upgrade "$MARKETPLACE_NAME" >/dev/null 2>&1; then
229
- ok "Upgraded marketplace '${MARKETPLACE_NAME}' to latest"
230
- else
231
- warn "Marketplace '${MARKETPLACE_NAME}' already registered; upgrade skipped"
232
- fi
233
- else
234
- # Source changed — remove the stale registration and re-add.
235
- warn "Marketplace '${MARKETPLACE_NAME}' points at a different source; re-registering"
236
- warn " old: $existing_source"
237
- warn " new: $MARKETPLACE_SOURCE_DEFAULT"
238
- codex plugin marketplace remove "$MARKETPLACE_NAME" >/dev/null 2>&1 || true
239
- codex plugin marketplace add "$MARKETPLACE_SOURCE_DEFAULT" >/dev/null
240
- ok "Re-added marketplace: $MARKETPLACE_SOURCE_DEFAULT"
241
- fi
242
-
243
- # ---------- step 3: collect Chorus URL + API key ----------
244
- hdr "3/5 Configuring the Chorus MCP server"
245
-
246
- # URL
247
- if [ -n "${CHORUS_URL:-}" ]; then
248
- url="$CHORUS_URL"
249
- ok "Using CHORUS_URL from env: $url"
250
- elif [ -t 0 ]; then
251
- printf " Chorus MCP URL ${DIM}[default: $CHORUS_URL_DEFAULT]${RESET}: "
252
- read -r url
253
- url="${url:-$CHORUS_URL_DEFAULT}"
254
- else
255
- url="$CHORUS_URL_DEFAULT"
256
- warn "No TTY and CHORUS_URL unset — using default: $url"
257
- fi
258
-
259
- # API key
260
- if [ -n "${CHORUS_API_KEY:-}" ]; then
261
- apikey="$CHORUS_API_KEY"
262
- ok "Using CHORUS_API_KEY from env"
263
- elif [ -t 0 ]; then
264
- printf " Chorus API key (starts with cho_): "
265
- stty -echo 2>/dev/null || true
266
- read -r apikey
267
- stty echo 2>/dev/null || true
268
- printf "\n"
269
- [ -n "$apikey" ] || die "API key is required"
270
- else
271
- die "No TTY and CHORUS_API_KEY unset — cannot continue"
272
- fi
273
-
274
- # Must be http(s).
275
- case "$url" in
276
- http://*|https://*) ;;
277
- *) die "URL must start with http:// or https:// — got: $url" ;;
278
- esac
279
-
280
- # Normalize: the Chorus MCP endpoint lives under /api/mcp. If the user gave us
281
- # just a host (or a host with trailing slash, or any path that doesn't already
282
- # end in /api/mcp), append it so the MCP handshake hits the right route.
283
- case "$url" in
284
- */api/mcp) ;;
285
- */api/mcp/) url="${url%/}" ;;
286
- */) url="${url}api/mcp" ;;
287
- *) url="${url}/api/mcp" ;;
288
- esac
289
- ok "MCP endpoint: $url"
290
-
291
- # ---------- step 4: write config.toml ----------
292
- hdr "4/5 Writing ~/.codex/config.toml"
293
- mkdir -p "$CODEX_HOME"
294
- [ -f "$CONFIG_TOML" ] || touch "$CONFIG_TOML"
295
-
296
- # Back up once
297
- if [ ! -f "$CONFIG_TOML.chorus-bak" ]; then
298
- cp "$CONFIG_TOML" "$CONFIG_TOML.chorus-bak"
299
- ok "Backed up original config to ${CONFIG_TOML}.chorus-bak"
300
- fi
301
-
302
- # Remove any existing [mcp_servers.chorus] and [mcp_servers.chorus.*] sub-tables
303
- # (idempotent — old rotated keys / headers are wiped, then fresh section appended).
304
- # Pure awk so we do not require Python on the user's machine.
305
- tmp="$(mktemp "${TMPDIR:-/tmp}/chorus-config.XXXXXX")"
306
- awk '
307
- # A TOML table header line. Match [mcp_servers.chorus] and any
308
- # [mcp_servers.chorus.<subtable>], plus [plugins."chorus@chorus-plugins"],
309
- # and suppress lines until the next [section] header appears.
310
- /^\[mcp_servers\.chorus(\..*)?\][[:space:]]*$/ { skip = 1; next }
311
- /^\[plugins\."chorus@chorus-plugins"\][[:space:]]*$/ { skip = 1; next }
312
- /^\[/ { skip = 0 }
313
- skip != 1 { print }
314
- ' "$CONFIG_TOML" > "$tmp"
315
- mv "$tmp" "$CONFIG_TOML"
316
-
317
- # Ensure user-owned file mode 600 (contains secret).
318
- chmod 600 "$CONFIG_TOML"
319
-
320
- # Append [mcp_servers.chorus] with literal URL + Authorization header.
321
- # (Codex does NOT expand ${VAR}; the token is a literal string in the header.)
322
- cat >> "$CONFIG_TOML" <<TOML
323
-
324
- [mcp_servers.chorus]
325
- url = "${url}"
326
-
327
- [mcp_servers.chorus.http_headers]
328
- Authorization = "Bearer ${apikey}"
329
-
330
- [plugins."chorus@chorus-plugins"]
331
- enabled = true
332
- TOML
333
-
334
- ok "Wrote [mcp_servers.chorus] and [plugins.\"chorus@chorus-plugins\"] → ${CONFIG_TOML}"
335
-
336
- # ---------- step 5: enable hooks ----------
337
- hdr "5/5 Enabling Codex lifecycle hooks"
338
-
339
- HOOKS_JSON="$CODEX_HOME/hooks.json"
340
- if [ -f "$HOOKS_JSON" ] && grep -q "hooks/chorus/run-hook.sh" "$HOOKS_JSON" 2>/dev/null; then
341
- warn "Found legacy copied Chorus hook entries in $HOOKS_JSON."
342
- warn "These can duplicate the plugin-bundled Chorus hooks now loaded by Codex."
343
- warn "Legacy entries:"
344
- grep -n "hooks/chorus/run-hook.sh" "$HOOKS_JSON" 2>/dev/null | sed 's/^/ /' >&2 || true
345
-
346
- if [ -r /dev/tty ] && [ -w /dev/tty ]; then
347
- printf " Clean legacy Chorus entries from %s now? [y/N]: " "$HOOKS_JSON" > /dev/tty
348
- read -r clean_legacy_hooks_answer < /dev/tty
349
- case "$clean_legacy_hooks_answer" in
350
- y|Y|yes|YES|Yes)
351
- clean_legacy_chorus_hooks_json "$HOOKS_JSON" || true
352
- ;;
353
- *)
354
- warn "Keeping legacy hooks unchanged. Use /hooks to disable them or remove matching entries manually to avoid duplicates."
355
- ;;
356
- esac
357
- else
358
- warn "No interactive TTY available; keeping legacy hooks unchanged."
359
- warn "Re-run this installer in a terminal to auto-clean them, or remove matching entries manually."
360
- fi
361
- fi
362
-
363
- # Keep the current canonical feature key. `codex_hooks` is a deprecated alias;
364
- # remove any old hook feature setting from [features] before writing `hooks = true`
365
- # so reruns do not create duplicate TOML keys.
366
- if grep -qE "^\[features\]" "$CONFIG_TOML"; then
367
- tmp="$(mktemp "${TMPDIR:-/tmp}/chorus-features.XXXXXX")"
368
- awk '
369
- /^\[features\][[:space:]]*$/ {
370
- in_features = 1
371
- print
372
- print "hooks = true"
373
- next
374
- }
375
- /^\[/ {
376
- in_features = 0
377
- }
378
- in_features && /^[[:space:]]*(hooks|codex_hooks)[[:space:]]*=/ {
379
- next
380
- }
381
- { print }
382
- ' "$CONFIG_TOML" > "$tmp" && mv "$tmp" "$CONFIG_TOML"
383
- ok "Set [features] hooks = true"
384
- else
385
- cat >> "$CONFIG_TOML" <<'TFEAT'
386
-
387
- [features]
388
- hooks = true
389
- TFEAT
390
- ok "Appended [features] hooks = true"
391
- fi
392
-
393
- # ---------- epilogue ----------
394
- hdr "Done."
395
- cat <<NEXT
396
-
397
- Start Codex — the plugin is registered as INSTALLED_BY_DEFAULT so it
398
- should activate on first launch:
399
-
400
- ${BOLD}codex${RESET}
401
-
402
- If /plugins does not show "chorus" as installed on first launch, open it
403
- and click Install once (Codex has no \`plugin install\` CLI command yet,
404
- so one manual click is the fallback path).
405
-
406
- Verify anytime:
407
- ${BOLD}codex mcp list${RESET} # 'chorus' row, Auth = 'Bearer token'
408
- ${BOLD}codex features list${RESET} # hooks + plugins both true
409
- ${BOLD}/hooks${RESET} # review/trust bundled Chorus hooks after launch
18
+ BOLD=$'\033[1m'; YELLOW=$'\033[33m'; RESET=$'\033[0m'
19
+ INSTALL_CMD="npm install -g @chorus-aidlc/chorus@0.17.0"
20
+ INIT_CMD="chorus agents add"
410
21
 
411
- Then in Codex type ${BOLD}\$chorus${RESET} (or \$develop, \$review, \$proposal, …) to
412
- activate a skill. To change your API key later, just re-run this installer.
22
+ printf "${YELLOW}!${RESET} install-codex.sh is deprecated and installs nothing.\n" >&2
23
+ printf " Chorus setup is now: ${BOLD}%s${RESET} then ${BOLD}%s${RESET}\n" "$INSTALL_CMD" "$INIT_CMD" >&2
413
24
 
414
- NEXT
25
+ # This stub installs nothing. Print the exact commands and exit non-zero so
26
+ # both interactive users and automation that piped the old installer notice
27
+ # they must install the Chorus CLI globally, then run `chorus agents add`.
28
+ printf "\n Run these to set up Chorus:\n\n %s\n %s\n\n" "$INSTALL_CMD" "$INIT_CMD" >&2
29
+ exit 1