@chorus-aidlc/chorus 0.16.4 → 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 (435) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +420 -420
  3. package/.next/standalone/.next/app-path-routes-manifest.json +53 -53
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +45 -45
  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.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  41. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  45. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  46. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
  49. package/.next/standalone/.next/server/app/admin/companies/new.rsc +1 -1
  50. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/admin/companies.html +2 -2
  52. package/.next/standalone/.next/server/app/admin/companies.rsc +1 -1
  53. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/admin.html +2 -2
  55. package/.next/standalone/.next/server/app/admin.rsc +1 -1
  56. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  64. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  78. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
  90. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  100. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
  107. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
  110. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
  111. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
  113. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
  114. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
  116. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
  117. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
  119. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
  120. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
  123. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
  124. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
  126. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
  127. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/events/route.js +1 -1
  129. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  130. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  133. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  134. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  136. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  137. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  139. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  140. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  142. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  143. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  145. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  148. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  149. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js.nft.json +1 -1
  151. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js.nft.json +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/mcp/route.js +4 -4
  156. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  157. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  159. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  160. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  162. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  163. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  165. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  166. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  168. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  169. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  171. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  172. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  174. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  175. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  177. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  178. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
  186. package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  189. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  192. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  193. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  195. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  197. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  200. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  201. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  202. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  203. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  205. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
  206. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
  207. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  221. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  223. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  225. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
  226. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
  227. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  228. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  229. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  230. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  231. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  232. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  233. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  234. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  235. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  236. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  237. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  238. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  239. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  240. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  241. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  242. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  243. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  244. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  245. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  246. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  247. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  248. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  249. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  250. package/.next/standalone/.next/server/app/index.html +2 -2
  251. package/.next/standalone/.next/server/app/index.rsc +1 -1
  252. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  253. package/.next/standalone/.next/server/app/login/admin.html +2 -2
  254. package/.next/standalone/.next/server/app/login/admin.rsc +1 -1
  255. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  256. package/.next/standalone/.next/server/app/login/callback.html +2 -2
  257. package/.next/standalone/.next/server/app/login/callback.rsc +1 -1
  258. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  259. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  260. package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
  261. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +1 -1
  262. package/.next/standalone/.next/server/app/login.html +2 -2
  263. package/.next/standalone/.next/server/app/login.rsc +1 -1
  264. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  265. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  266. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  267. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  268. package/.next/standalone/.next/server/app/onboarding.rsc +2 -2
  269. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  270. package/.next/standalone/.next/server/app/projects.html +2 -2
  271. package/.next/standalone/.next/server/app/projects.rsc +2 -2
  272. package/.next/standalone/.next/server/app/settings.html +2 -2
  273. package/.next/standalone/.next/server/app/settings.rsc +3 -3
  274. package/.next/standalone/.next/server/app-paths-manifest.json +53 -53
  275. package/.next/standalone/.next/server/chunks/{5205.js → 1114.js} +1 -1
  276. package/.next/standalone/.next/server/chunks/1318.js +1 -1
  277. package/.next/standalone/.next/server/chunks/1437.js +1 -0
  278. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  279. package/.next/standalone/.next/server/chunks/2572.js +1 -1
  280. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  281. package/.next/standalone/.next/server/chunks/{9793.js → 3045.js} +1 -1
  282. package/.next/standalone/.next/server/chunks/3831.js +37 -0
  283. package/.next/standalone/.next/server/chunks/4827.js +1 -1
  284. package/.next/standalone/.next/server/chunks/5245.js +1 -1
  285. package/.next/standalone/.next/server/chunks/{4394.js → 5706.js} +1 -1
  286. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  287. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  288. package/.next/standalone/.next/server/chunks/6515.js +2 -2
  289. package/.next/standalone/.next/server/chunks/679.js +1 -1
  290. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  291. package/.next/standalone/.next/server/chunks/7530.js +1 -1
  292. package/.next/standalone/.next/server/chunks/8454.js +1 -1
  293. package/.next/standalone/.next/server/chunks/920.js +1 -1
  294. package/.next/standalone/.next/server/chunks/9213.js +1 -1
  295. package/.next/standalone/.next/server/chunks/9378.js +1 -1
  296. package/.next/standalone/.next/server/chunks/9449.js +1 -0
  297. package/.next/standalone/.next/server/chunks/9458.js +1 -0
  298. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  299. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  300. package/.next/standalone/.next/server/pages/404.html +2 -2
  301. package/.next/standalone/.next/server/pages/500.html +1 -1
  302. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  303. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  304. package/.next/standalone/.next/static/chunks/{11595.a6268c75ca8a2163.js → 11595.bbe40924d18958bf.js} +1 -1
  305. package/.next/standalone/.next/static/chunks/18139-e6ef4b5869593f8e.js +1 -0
  306. package/.next/standalone/.next/static/chunks/28856-ef2cb58fbd404ef9.js +1 -0
  307. package/.next/standalone/.next/static/chunks/{31308-fda6febfb2882a28.js → 31308-bb4a97b3f39c22dd.js} +1 -1
  308. package/.next/standalone/.next/static/chunks/{33456.16ff7edf00137539.js → 33456.5499eb8e892b110a.js} +1 -1
  309. package/.next/standalone/.next/static/chunks/{4860.9e06848eb531e667.js → 4860.be77046fb2b3a2bd.js} +1 -1
  310. package/.next/standalone/.next/static/chunks/66873-e3be53f41b3f2255.js +1 -0
  311. package/.next/standalone/.next/static/chunks/70303-aec3d52ad87602a3.js +1 -0
  312. package/.next/standalone/.next/static/chunks/76201-83b26515f85ce37c.js +1 -0
  313. package/.next/standalone/.next/static/chunks/78917-a8a8dff98857c045.js +1 -0
  314. package/.next/standalone/.next/static/chunks/97663-9c3ae4fd60b353db.js +1 -0
  315. package/.next/standalone/.next/static/chunks/{99373.81b79c91858f9099.js → 99373.111493dc260a2a04.js} +1 -1
  316. package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-b742c51c0a764daf.js → layout-40fe7d026c5a7c6d.js} +1 -1
  317. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-87d4d0fe90fca28c.js +1 -0
  318. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-1206abaee85dc915.js +1 -0
  319. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-425acbe9ade5fa83.js → page-474e494097c8945f.js} +1 -1
  320. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-e902b19328092ccf.js +1 -0
  321. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-f273288c3530aa0f.js +1 -0
  322. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6568a7b08bf9a54b.js +1 -0
  323. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-fbd3c27b68666234.js +1 -0
  324. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-58b48aa0a11603c3.js → page-15bb6e1696668512.js} +1 -1
  325. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-286faced32c6133f.js → page-2bea97214b1595cc.js} +1 -1
  326. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2bf7ceee62b574c7.js +1 -0
  327. package/.next/standalone/.next/static/chunks/app/onboarding/{page-5c82cf3abd856301.js → page-540da64d7ba16dc7.js} +1 -1
  328. package/.next/standalone/.next/static/chunks/{webpack-4d1cc14b13e247b6.js → webpack-7cbb3ba6792f1fb3.js} +1 -1
  329. package/.next/standalone/package.json +1 -1
  330. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  331. package/.next/standalone/public/chorus-plugin/bin/chorus-api.sh +44 -1
  332. package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +4 -3
  333. package/.next/standalone/public/chorus-plugin/bin/tests/test-mcp-cli-delegation.sh +244 -0
  334. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  335. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +19 -1
  336. package/.next/standalone/public/chorus-plugin/skills/chorus-cli/SKILL.md +57 -0
  337. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +2 -2
  338. package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +1 -1
  339. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  340. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +85 -42
  341. package/.next/standalone/public/chorus-plugin/skills/orchestrate/SKILL.md +1 -1
  342. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +2 -2
  343. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  344. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  345. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +3 -3
  346. package/.next/standalone/public/dsh-credentials.sh +20 -127
  347. package/.next/standalone/public/install-codex.sh +21 -406
  348. package/.next/standalone/public/install-kiro.sh +20 -344
  349. package/.next/standalone/public/install-opencode.sh +20 -275
  350. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
  351. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-cli/SKILL.md +57 -0
  352. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +2 -2
  353. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +1 -1
  354. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
  355. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +85 -42
  356. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-orchestrate/SKILL.md +1 -1
  357. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +2 -2
  358. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
  359. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
  360. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +3 -3
  361. package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +44 -1
  362. package/.next/standalone/public/kiro-plugin/bin/on-agent-spawn.sh +6 -4
  363. package/.next/standalone/public/kiro-plugin/manifest.txt +41 -0
  364. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  365. package/.next/standalone/public/skill/chorus/SKILL.md +19 -1
  366. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
  367. package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
  368. package/.next/standalone/public/skill/docs-chorus/SKILL.md +1 -1
  369. package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
  370. package/.next/standalone/public/skill/orchestrate-chorus/SKILL.md +1 -1
  371. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
  372. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  373. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  374. package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
  375. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  376. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
  377. package/.next/standalone/public/test-dsh-credentials.sh +22 -38
  378. package/.next/standalone/public/test-install-codex.sh +31 -79
  379. package/README.ja.md +2 -2
  380. package/README.ko.md +2 -2
  381. package/README.md +2 -2
  382. package/README.zh.md +2 -2
  383. package/chorus.mjs +35 -1
  384. package/cli/agent-backend-prompt.mjs +3 -2
  385. package/cli/agents.mjs +329 -0
  386. package/cli/chorus-client.mjs +69 -0
  387. package/cli/claude-spawner.mjs +4 -0
  388. package/cli/codex-spawner.mjs +11 -6
  389. package/cli/credentials.mjs +185 -3
  390. package/cli/daemon-agent.mjs +26 -2
  391. package/cli/daemon-config.mjs +27 -2
  392. package/cli/daemon-service.mjs +120 -33
  393. package/cli/daemon.mjs +128 -22
  394. package/cli/dsh-spawner.mjs +7 -0
  395. package/cli/init/adapters.mjs +137 -0
  396. package/cli/init/agent-type-map.mjs +60 -0
  397. package/cli/init/chorus-plugin-consts.mjs +16 -0
  398. package/cli/init/codex-mcp-config.mjs +183 -0
  399. package/cli/init/contracts.mjs +120 -0
  400. package/cli/init/detect.mjs +97 -0
  401. package/cli/init/file-template.mjs +248 -0
  402. package/cli/init/install-methods.mjs +508 -0
  403. package/cli/init/registry.mjs +74 -0
  404. package/cli/init/run-command.mjs +30 -0
  405. package/cli/init/select.mjs +111 -0
  406. package/cli/init/steps/credential-seed.mjs +751 -0
  407. package/cli/init/steps/daemon-setup.mjs +246 -0
  408. package/cli/init/steps/plugin-install.mjs +37 -0
  409. package/cli/init-args.mjs +137 -0
  410. package/cli/init.mjs +198 -0
  411. package/cli/kiro-spawner.mjs +4 -0
  412. package/cli/mcp-args.mjs +280 -0
  413. package/cli/mcp.mjs +164 -0
  414. package/cli/spawner-select.mjs +45 -2
  415. package/package.json +1 -1
  416. package/.next/standalone/.next/server/chunks/3594.js +0 -1
  417. package/.next/standalone/.next/server/chunks/5351.js +0 -33
  418. package/.next/standalone/.next/server/chunks/6667.js +0 -1
  419. package/.next/standalone/.next/server/chunks/6995.js +0 -1
  420. package/.next/standalone/.next/static/chunks/19887-b805e1dcee8c367b.js +0 -1
  421. package/.next/standalone/.next/static/chunks/29108-5a11eea003f4cc11.js +0 -1
  422. package/.next/standalone/.next/static/chunks/53073-a7ed20af6538a178.js +0 -1
  423. package/.next/standalone/.next/static/chunks/6603-e70ddeab6ad09c50.js +0 -1
  424. package/.next/standalone/.next/static/chunks/78917-1b59cbb806b3ecfc.js +0 -1
  425. package/.next/standalone/.next/static/chunks/82751-3e161e1d8dbda3ac.js +0 -1
  426. package/.next/standalone/.next/static/chunks/99366-425e9ef22e60e3e2.js +0 -1
  427. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-f636e00c28f425ea.js +0 -1
  428. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-c004f1a194af7fa5.js +0 -1
  429. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-fdd617457730a116.js +0 -1
  430. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-b9eb4e0692996657.js +0 -1
  431. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-d5b222f379b2e8ca.js +0 -1
  432. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-0a6c2d0e1b68e0e4.js +0 -1
  433. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-1507a761e67c2aa9.js +0 -1
  434. /package/.next/standalone/.next/static/{6sHDgeKioa0SJR1MAbcYG → 0spgxl3lP26Fl1otd1D7R}/_buildManifest.js +0 -0
  435. /package/.next/standalone/.next/static/{6sHDgeKioa0SJR1MAbcYG → 0spgxl3lP26Fl1otd1D7R}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@ description: Multi-agent orchestration playbook — coordinate OTHER agents and
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.16.4"
7
+ version: "0.17.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.16.4"
7
+ version: "0.17.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus proposal reviewer — audits PRD/task
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.16.4"
7
+ version: "0.17.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Quick Task workflow — skip Idea→Proposal, create tasks directly
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.16.4"
7
+ version: "0.17.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Chorus Review workflow — approve/reject proposals, verify tasks,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.16.4"
7
+ version: "0.17.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus task reviewer — independently verifi
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.16.4"
7
+ version: "0.17.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Full-auto AI-DLC pipeline — drive a single prompt from Idea throu
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.16.4"
7
+ version: "0.17.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env bash
2
- # Tests for public/dsh-credentials.sh — write/merge/mode/idempotency/validation.
3
- # Runs the real script against disposable $DSH_HOME dirs. Bash 3.2 compatible.
2
+ # Tests for public/dsh-credentials.sh — now a DEPRECATION STUB that redirects to
3
+ # `chorus agents add`. Verifies the stub shape: a non-interactive run names the
4
+ # replacement command, prints a deprecation notice, exits non-zero, and writes
5
+ # NO $DSH_HOME/.env (installs/writes nothing). Bash 3.2 compatible.
4
6
  set -uo pipefail
5
7
 
6
8
  HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -10,46 +12,28 @@ fail=0
10
12
  ok() { printf 'ok %s\n' "$1"; }
11
13
  no() { printf 'FAIL %s\n' "$1"; fail=1; }
12
14
 
13
- # run the script with a clean env (no ambient CHORUS_*), stdin from /dev/null.
14
- run() {
15
- local home="$1"; shift
16
- env -u CHORUS_URL -u CHORUS_API_KEY DSH_HOME="$home" "$@" bash "$SCRIPT" </dev/null >/dev/null 2>&1
17
- }
18
-
19
- # 1. writes both keys, preserves unrelated lines, mode 0600, normalizes URL
20
- T="$(mktemp -d)"; printf 'DEEPSEEK_API_KEY=sk-keep\nOTHER=1\n' > "$T/.env"
21
- run "$T" CHORUS_URL="https://c.example/api/mcp/" CHORUS_API_KEY="cho_test123"
22
- grep -qx 'CHORUS_URL=https://c.example' "$T/.env" && ok "writes+normalizes CHORUS_URL" || no "writes+normalizes CHORUS_URL"
23
- grep -qx 'CHORUS_API_KEY=cho_test123' "$T/.env" && ok "writes CHORUS_API_KEY" || no "writes CHORUS_API_KEY"
24
- grep -qx 'DEEPSEEK_API_KEY=sk-keep' "$T/.env" && ok "preserves DEEPSEEK line" || no "preserves DEEPSEEK line"
25
- grep -qx 'OTHER=1' "$T/.env" && ok "preserves OTHER line" || no "preserves OTHER line"
26
- [ "$(stat -c '%a' "$T/.env" 2>/dev/null || stat -f '%A' "$T/.env")" = "600" ] && ok "mode 0600" || no "mode 0600"
27
-
28
- # 2. idempotent: re-run replaces, no duplicate lines
29
- run "$T" CHORUS_URL="https://c.example" CHORUS_API_KEY="cho_new"
30
- [ "$(grep -c '^CHORUS_URL=' "$T/.env")" = "1" ] && ok "no duplicate CHORUS_URL" || no "no duplicate CHORUS_URL"
31
- [ "$(grep -c '^CHORUS_API_KEY=' "$T/.env")" = "1" ] && ok "no duplicate CHORUS_API_KEY" || no "no duplicate CHORUS_API_KEY"
32
- grep -qx 'CHORUS_API_KEY=cho_new' "$T/.env" && ok "replaced key value" || no "replaced key value"
33
- rm -rf "$T"
34
-
35
- # 3. drops a prior `export CHORUS_*` form too, keeps others
36
- T="$(mktemp -d)"; printf 'export CHORUS_URL=https://old\nexport CHORUS_API_KEY=cho_old\nKEEP=2\n' > "$T/.env"
37
- run "$T" CHORUS_URL="https://c.example" CHORUS_API_KEY="cho_fresh"
38
- grep -q 'export CHORUS_URL' "$T/.env" && no "drops export CHORUS_URL" || ok "drops export CHORUS_URL"
39
- grep -q 'export CHORUS_API_KEY' "$T/.env" && no "drops export CHORUS_API_KEY" || ok "drops export CHORUS_API_KEY"
40
- grep -qx 'KEEP=2' "$T/.env" && ok "KEEP preserved" || no "KEEP preserved"
15
+ # 1. Non-interactive (no TTY): prints the chorus agents add command + deprecation
16
+ # notice, exits non-zero, and writes no .env. stdin from /dev/null and stdout
17
+ # captured (command substitution) → neither is a TTY → print-and-fail path.
18
+ T="$(mktemp -d)"
19
+ out="$(env -u CHORUS_URL -u CHORUS_API_KEY DSH_HOME="$T" bash "$SCRIPT" </dev/null 2>&1)"
20
+ rc=$?
21
+ [ "$rc" -ne 0 ] && ok "exits non-zero when non-interactive" || no "exits non-zero when non-interactive"
22
+ printf '%s\n' "$out" | grep -q 'npm install -g @chorus-aidlc/chorus' && ok "names npm install -g @chorus-aidlc/chorus" || no "names npm install -g @chorus-aidlc/chorus"
23
+ printf '%s\n' "$out" | grep -q 'chorus agents add' && ok "names chorus agents add" || no "names chorus agents add"
24
+ printf '%s\n' "$out" | grep -qi 'deprecat' && ok "prints a deprecation notice" || no "prints a deprecation notice"
25
+ [ ! -f "$T/.env" ] && ok "writes no .env" || no "writes no .env"
41
26
  rm -rf "$T"
42
27
 
43
- # 4. validation: missing creds (no TTY) / bad URL / bad key all exit non-zero, write nothing
28
+ # 2. Even with CHORUS_URL/CHORUS_API_KEY set, the stub installs nothing: it still
29
+ # exits non-zero (no TTY) and writes no .env. This proves the old inline
30
+ # credential-writing logic is gone.
44
31
  T="$(mktemp -d)"
45
- run "$T" && no "missing creds exits non-zero" || ok "missing creds exits non-zero"
46
- [ ! -f "$T/.env" ] && ok "no .env written on failure" || no "no .env written on failure"
47
- run "$T" CHORUS_URL="ftp://x" CHORUS_API_KEY="cho_x" && no "bad URL exits non-zero" || ok "bad URL exits non-zero"
48
- run "$T" CHORUS_URL="https://x" CHORUS_API_KEY="nope" && no "bad key exits non-zero" || ok "bad key exits non-zero"
32
+ env DSH_HOME="$T" CHORUS_URL="https://c.example" CHORUS_API_KEY="cho_x" bash "$SCRIPT" </dev/null >/dev/null 2>&1
33
+ rc=$?
34
+ [ "$rc" -ne 0 ] && ok "non-zero even with creds set (installs nothing)" || no "non-zero even with creds set"
35
+ [ ! -f "$T/.env" ] && ok "writes no .env even with creds set" || no "writes no .env even with creds set"
49
36
  rm -rf "$T"
50
37
 
51
- # 5. --help exits 0
52
- bash "$SCRIPT" --help >/dev/null 2>&1 && ok "--help exits 0" || no "--help exits 0"
53
-
54
38
  if [ "$fail" -eq 0 ]; then printf '\nALL PASS\n'; else printf '\nFAILURES\n'; fi
55
39
  exit "$fail"
@@ -1,5 +1,10 @@
1
1
  #!/usr/bin/env bash
2
- # Test public/install-codex.sh for macOS bash 3.2 compatibility.
2
+ # Test public/install-codex.sh now a DEPRECATION STUB that redirects to
3
+ # `chorus agents add`. Verifies bash 3.2 compatibility + the stub shape:
4
+ # - names the replacement `npm install -g @chorus-aidlc/chorus@0.17.0` + `chorus agents add`
5
+ # - prints a deprecation notice
6
+ # - run non-interactively (no TTY, e.g. curl | bash in CI) it exits non-zero
7
+ # - installs nothing (writes no config.toml)
3
8
  #
4
9
  # Usage:
5
10
  # bash public/test-install-codex.sh
@@ -24,7 +29,7 @@ else
24
29
  TEST_BASH="$(command -v bash)"
25
30
  fi
26
31
 
27
- BOLD=$'\033[1m'; GREEN=$'\033[32m'; RED=$'\033[31m'; DIM=$'\033[2m'; RESET=$'\033[0m'
32
+ BOLD=$'\033[1m'; GREEN=$'\033[32m'; RED=$'\033[31m'; RESET=$'\033[0m'
28
33
 
29
34
  PASS=0; FAIL=0; FAIL_NOTES=""
30
35
 
@@ -36,8 +41,8 @@ echo "${BOLD}Testing:${RESET} $SCRIPT"
36
41
  echo "${BOLD}Using:${RESET} $TEST_BASH ($("$TEST_BASH" --version | head -1))"
37
42
  echo ""
38
43
 
39
- # [1/4] Static scan — reject bash 4+ constructs
40
- echo "${BOLD}[1/4]${RESET} Static scan for bash 4+ constructs"
44
+ # [1/3] Static scan — reject bash 4+ constructs
45
+ echo "${BOLD}[1/3]${RESET} Static scan for bash 4+ constructs"
41
46
  scan() {
42
47
  local label="$1"; local pattern="$2"
43
48
  if grep -nE "$pattern" "$SCRIPT" >/tmp/install-codex-scan.$$ 2>/dev/null; then
@@ -55,9 +60,9 @@ scan 'no "&>" redirection' '[^|]&>[^>]'
55
60
  scan 'no "|&" redirection' '\|&'
56
61
  scan 'no ";;&" case fallthrough' ';;&'
57
62
 
58
- # [2/4] Parse
63
+ # [2/3] Parse
59
64
  echo ""
60
- echo "${BOLD}[2/4]${RESET} Parse with $TEST_BASH -n"
65
+ echo "${BOLD}[2/3]${RESET} Parse with $TEST_BASH -n"
61
66
  if "$TEST_BASH" -n "$SCRIPT" 2>/tmp/install-codex-parse.$$; then
62
67
  pass "parses without syntax errors"
63
68
  else
@@ -66,99 +71,46 @@ else
66
71
  fi
67
72
  rm -f /tmp/install-codex-parse.$$
68
73
 
69
- # [3/4] End-to-end dry run with an isolated CODEX_HOME
74
+ # [3/3] Non-interactive stub behavior: redirect to `chorus agents add`, exit non-zero,
75
+ # install nothing. Stdin from /dev/null + stdout redirected to a file → neither
76
+ # is a TTY, so the stub must take the print-and-fail path (never exec).
70
77
  echo ""
71
- echo "${BOLD}[3/4]${RESET} End-to-end dry run (isolated CODEX_HOME)"
78
+ echo "${BOLD}[3/3]${RESET} Non-interactive stub behavior (no TTY → print + non-zero)"
72
79
 
73
80
  TMP_HOME="$(mktemp -d -t chorus-install-test.XXXXXX)"
74
81
  trap 'rm -rf "$TMP_HOME"' EXIT
75
82
 
76
- FAKE_BIN="$TMP_HOME/bin"
77
- mkdir -p "$FAKE_BIN"
78
- cat > "$FAKE_BIN/codex" <<'FAKE'
79
- #!/usr/bin/env bash
80
- case "${1:-}" in
81
- --version) echo "codex 0.125.0-test" ;;
82
- plugin)
83
- if [ "${2:-}" = "marketplace" ] && [ "${3:-}" = "list" ]; then
84
- echo ""
85
- exit 0
86
- fi
87
- exit 0
88
- ;;
89
- *) exit 0 ;;
90
- esac
91
- FAKE
92
- chmod +x "$FAKE_BIN/codex"
93
-
94
83
  run_out="$TMP_HOME/run.log"
95
84
  set +e
96
85
  env \
97
- PATH="$FAKE_BIN:$PATH" \
98
86
  HOME="$TMP_HOME" \
99
87
  CODEX_HOME="$TMP_HOME/.codex" \
100
- CHORUS_URL="https://chorus.test/api/mcp" \
101
- CHORUS_API_KEY="cho_test_key_abc123" \
102
- CHORUS_MARKETPLACE_SOURCE="https://github.com/Chorus-AIDLC/Chorus" \
103
- "$TEST_BASH" "$SCRIPT" >"$run_out" 2>&1
88
+ "$TEST_BASH" "$SCRIPT" </dev/null >"$run_out" 2>&1
104
89
  rc=$?
105
90
  set -e
106
91
 
107
92
  if [ "$rc" -ne 0 ]; then
108
- fail "installer exited non-zero ($rc)"
109
- sed 's/^/ /' "$run_out"
93
+ pass "exits non-zero when non-interactive (rc=$rc)"
110
94
  else
111
- pass "installer exited 0"
95
+ fail "exited 0 (expected non-zero for a no-TTY deprecation stub)"
96
+ sed 's/^/ /' "$run_out"
112
97
  fi
113
98
 
114
- cfg="$TMP_HOME/.codex/config.toml"
115
- if [ ! -f "$cfg" ]; then
116
- fail "config.toml not created at $cfg"
117
- else
118
- pass "config.toml created"
119
- grep -q '^\[mcp_servers\.chorus\]' "$cfg" && pass "[mcp_servers.chorus] block present" || fail "[mcp_servers.chorus] missing"
120
- grep -q 'url = "https://chorus.test/api/mcp"' "$cfg" && pass "url written literally" || fail "url not literal"
121
- grep -q 'Authorization = "Bearer cho_test_key_abc123"' "$cfg" && pass "Authorization header literal" || fail "Authorization not literal"
122
- grep -q '^hooks = true' "$cfg" && pass "hooks feature enabled" || fail "hooks feature not enabled"
123
- grep -q '^codex_hooks =' "$cfg" && fail "deprecated codex_hooks key written" || pass "deprecated codex_hooks key not written"
124
- [ ! -f "$TMP_HOME/.codex/hooks.json" ] && pass "installer does not write user hooks.json" || fail "installer wrote user hooks.json"
125
- [ ! -e "$TMP_HOME/.codex/hooks/chorus/run-hook.sh" ] && pass "installer does not write hook wrapper" || fail "installer wrote hook wrapper"
126
- if command -v stat >/dev/null 2>&1; then
127
- mode="$(stat -c '%a' "$cfg" 2>/dev/null || stat -f '%OLp' "$cfg" 2>/dev/null || echo "")"
128
- if [ "$mode" = "600" ]; then
129
- pass "config.toml mode=600"
130
- elif [ -n "$mode" ]; then
131
- fail "config.toml mode=$mode (expected 600)"
132
- fi
133
- fi
134
- fi
99
+ grep -q 'npm install -g @chorus-aidlc/chorus' "$run_out" \
100
+ && pass "names 'npm install -g @chorus-aidlc/chorus'" \
101
+ || { fail "did not print the npm install guidance"; sed 's/^/ /' "$run_out"; }
135
102
 
136
- # [4/4] Idempotent re-run with a rotated key
137
- echo ""
138
- echo "${BOLD}[4/4]${RESET} Idempotent re-run with a rotated key"
139
- set +e
140
- env \
141
- PATH="$FAKE_BIN:$PATH" \
142
- HOME="$TMP_HOME" \
143
- CODEX_HOME="$TMP_HOME/.codex" \
144
- CHORUS_URL="https://chorus.test/api/mcp" \
145
- CHORUS_API_KEY="cho_rotated_key_xyz789" \
146
- "$TEST_BASH" "$SCRIPT" >"$run_out" 2>&1
147
- rc=$?
148
- set -e
149
- [ "$rc" -eq 0 ] && pass "rerun exited 0" || { fail "rerun exited non-zero ($rc)"; sed 's/^/ /' "$run_out"; }
150
-
151
- blocks="$(grep -c '^\[mcp_servers\.chorus\]' "$cfg" 2>/dev/null || echo 0)"
152
- [ "$blocks" = "1" ] && pass "exactly one [mcp_servers.chorus] block" || fail "found $blocks [mcp_servers.chorus] blocks"
103
+ grep -q 'chorus agents add' "$run_out" \
104
+ && pass "names 'chorus agents add'" \
105
+ || { fail "did not print the chorus agents add command"; sed 's/^/ /' "$run_out"; }
153
106
 
154
- hdr_blocks="$(grep -c '^\[mcp_servers\.chorus\.http_headers\]' "$cfg" 2>/dev/null || echo 0)"
155
- [ "$hdr_blocks" = "1" ] && pass "exactly one [mcp_servers.chorus.http_headers] block" || fail "found $hdr_blocks http_headers blocks"
107
+ grep -qi 'deprecat' "$run_out" \
108
+ && pass "prints a deprecation notice" \
109
+ || { fail "no deprecation notice printed"; sed 's/^/ /' "$run_out"; }
156
110
 
157
- if grep -q 'Authorization = "Bearer cho_rotated_key_xyz789"' "$cfg" && ! grep -q 'cho_test_key_abc123' "$cfg"; then
158
- pass "rotated key replaced the previous key"
159
- else
160
- fail "rotated key not applied cleanly"
161
- fi
111
+ [ ! -f "$TMP_HOME/.codex/config.toml" ] \
112
+ && pass "installs nothing (no config.toml written)" \
113
+ || fail "wrote config.toml (stub must install nothing)"
162
114
 
163
115
  echo ""
164
116
  echo "${BOLD}Summary:${RESET} $PASS passed, $FAIL failed"
package/README.ja.md CHANGED
@@ -46,7 +46,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
46
46
 
47
47
  **[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — プロジェクト単位の Agent 作業ディレクトリ:各ユーザーがプロジェクト内の Agent ごとにホストと cwd を設定し、デーモンが許可したルートだけを参照できます。割り当て、ウェイク、再開、後続ターンで同じ実行先を使い、進行中のセッションは移動しません。Codex は再開可能なバックエンド thread ID を別に保存し、不要になった Chorus の session 管理手順を削除しました。
48
48
 
49
- **[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI が 4 つ目の接続方法になりました(Kiro CLI v2):ワンコマンドの `install-kiro.sh` プラグインと `--agent kiro` デーモンバックエンド、加えていくつかのデーモン修正。
49
+ **[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI が 4 つ目の接続方法になりました(Kiro CLI v2):`chorus agents add` によるワンコマンドの Kiro プラグイン導入と `--agent kiro` デーモンバックエンド、加えていくつかのデーモン修正。
50
50
 
51
51
  **[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — アプリ全体のダークモード(ライト / ダーク / システム)。参考資料をあらゆる着想・提案・課題に添付でき、インラインでも MCP 経由でも読み取れます。韓国語と日本語を追加(韓国語はコミュニティによる貢献)。グループ化のための**テーマ**着想、デーモンの「開発を開始」/「Yolo」ボタン、対話式の着想入力、クラッシュからの再開、`chorus daemon install`。
52
52
 
@@ -59,7 +59,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
59
59
  2 つのコマンドだけです — データベースも Docker も設定ファイルも不要です。
60
60
 
61
61
  ```bash
62
- npm install -g @chorus-aidlc/chorus
62
+ npm install -g @chorus-aidlc/chorus@0.17.0
63
63
  chorus
64
64
  ```
65
65
 
package/README.ko.md CHANGED
@@ -46,7 +46,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
46
46
 
47
47
  **[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — 프로젝트별 Agent 작업 디렉터리: 각 사용자가 프로젝트의 Agent마다 호스트와 cwd를 지정하고, 데몬이 허용한 루트만 탐색할 수 있습니다. 배정, 웨이크, 재개, 후속 턴에서 같은 실행 위치를 사용하며 진행 중인 세션은 이동하지 않습니다. Codex는 재개 가능한 백엔드 thread ID를 별도로 저장하고, 더 이상 필요하지 않은 Chorus session 관리 단계를 제거했습니다.
48
48
 
49
- **[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI가 네 번째 연결 방식이 되었습니다(Kiro CLI v2): 명령 한 줄로 설치하는 `install-kiro.sh` 플러그인과 `--agent kiro` 데몬 백엔드, 여기에 몇 가지 데몬 수정.
49
+ **[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI가 네 번째 연결 방식이 되었습니다(Kiro CLI v2): `chorus agents add` 명령 한 줄로 설치하는 Kiro 플러그인과 `--agent kiro` 데몬 백엔드, 여기에 몇 가지 데몬 수정.
50
50
 
51
51
  **[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — 앱 전체 다크 모드(라이트 / 다크 / 시스템). 참고 자료를 어떤 아이디어·제안·작업에도 첨부할 수 있고, 인라인으로도 MCP를 통해서도 읽을 수 있습니다. 한국어와 일본어 추가(한국어는 커뮤니티 기여). 그룹화를 위한 **테마** 아이디어, 그리고 데몬의 개발 시작 / Yolo 버튼, 대화식 아이디어 입력, 크래시 복구, `chorus daemon install`.
52
52
 
@@ -59,7 +59,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
59
59
  두 개의 명령이면 됩니다. 데이터베이스도, Docker도, 설정 파일도 필요 없습니다.
60
60
 
61
61
  ```bash
62
- npm install -g @chorus-aidlc/chorus
62
+ npm install -g @chorus-aidlc/chorus@0.17.0
63
63
  chorus
64
64
  ```
65
65
 
package/README.md CHANGED
@@ -46,7 +46,7 @@ The labels under each stage are the **permissions** an actor needs there — gra
46
46
 
47
47
  **[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — Project-level Agent working directories: each user can bind every Agent in a project to a host and cwd, browse only daemon-approved roots, and use the same target across assignment, wake, resume, and later turns without moving active sessions. Codex now persists its resumable backend thread ID separately and drops obsolete Chorus session-management steps.
48
48
 
49
- **[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI is the fourth way to connect (Kiro CLI v2): a one-command `install-kiro.sh` plugin and a `--agent kiro` daemon backend, plus daemon fixes.
49
+ **[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI is the fourth way to connect (Kiro CLI v2): a one-command Kiro plugin via `chorus agents add` and a `--agent kiro` daemon backend, plus daemon fixes.
50
50
 
51
51
  **[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — Dark mode across the app (light / dark / system). Reference artifacts: attach docs, repos, issues, and articles to any idea, proposal, or task, readable inline and over MCP. Korean and Japanese locales (Korean contributed by the community). **Theme** ideas for grouping, plus daemon Start Development / Yolo buttons, conversational idea entry, crash-resume, and `chorus daemon install`.
52
52
 
@@ -59,7 +59,7 @@ The labels under each stage are the **permissions** an actor needs there — gra
59
59
  Two commands. No database, no Docker, no config files.
60
60
 
61
61
  ```bash
62
- npm install -g @chorus-aidlc/chorus
62
+ npm install -g @chorus-aidlc/chorus@0.17.0
63
63
  chorus
64
64
  ```
65
65
 
package/README.zh.md CHANGED
@@ -37,7 +37,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
37
37
 
38
38
  **[v0.15.0](https://chorus-ai.dev/zh/blog/chorus-v0.15.0-release/)** — 项目级 Agent 工作目录:每位用户可以为项目中的每个 Agent 绑定主机和 cwd,只浏览 daemon 允许的目录,并让任务分配、唤醒、恢复和后续对话使用同一个执行位置,且不迁移进行中的会话。Codex 现在会单独保存可恢复的后端 thread ID,并移除不再需要的 Chorus session 管理步骤。
39
39
 
40
- **[v0.14.1](https://chorus-ai.dev/zh/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI 成为第四种接入方式(Kiro CLI v2):一条命令的 `install-kiro.sh` 插件,以及 `--agent kiro` 的 daemon 后端,另有若干 daemon 修复。
40
+ **[v0.14.1](https://chorus-ai.dev/zh/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI 成为第四种接入方式(Kiro CLI v2):通过 `chorus agents add` 一条命令安装的 Kiro 插件,以及 `--agent kiro` 的 daemon 后端,另有若干 daemon 修复。
41
41
 
42
42
  **[v0.14.0](https://chorus-ai.dev/zh/blog/chorus-v0.14.0-release/)** — 全应用深色模式(浅色 / 深色 / 跟随系统)。参考资料可挂到任意想法、提案或任务上,行内可读,也能通过 MCP 读写。新增韩语和日语(韩语由社区贡献)。用于归类的**主题**想法,以及 daemon 的「开始开发」/「Yolo」按钮、对话式建想法、崩溃恢复与 `chorus daemon install`。
43
43
 
@@ -50,7 +50,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
50
50
  两条命令即可,无需数据库、无需 Docker、无需配置文件。
51
51
 
52
52
  ```bash
53
- npm install -g @chorus-aidlc/chorus
53
+ npm install -g @chorus-aidlc/chorus@0.17.0
54
54
  chorus
55
55
  ```
56
56
 
package/chorus.mjs CHANGED
@@ -24,7 +24,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
24
24
  // client commands that connect OUT to a remote Chorus server. Their modules are
25
25
  // lazy-imported so the server-launch path pays no startup cost.
26
26
 
27
- const SUBCOMMANDS = new Set(["daemon", "login"]);
27
+ const SUBCOMMANDS = new Set(["daemon", "login", "mcp", "agents"]);
28
28
 
29
29
  // Client-subcommand arg parsing + help text live in cli/client-args.mjs so they
30
30
  // are pure and unit-testable (this entry module runs side effects at import).
@@ -54,6 +54,19 @@ function pkgVersion() {
54
54
  }
55
55
 
56
56
  async function runSubcommand(name, rest) {
57
+ // `agents` and `mcp` own their arg parsing + help (they handle `--help`
58
+ // themselves), so they are dispatched before the shared client-flag/help
59
+ // block below. (`chorus init` was renamed to `chorus agents add` — the bare
60
+ // `chorus init` word is intercepted with a rename hint before server boot.)
61
+ if (name === "mcp") {
62
+ const { runMcp } = await import("./cli/mcp.mjs");
63
+ return runMcp(rest, { version: pkgVersion() });
64
+ }
65
+ if (name === "agents") {
66
+ const { runAgents } = await import("./cli/agents.mjs");
67
+ return runAgents(rest, { version: pkgVersion() });
68
+ }
69
+
57
70
  const flags = parseClientFlags(rest);
58
71
 
59
72
  // Per-subcommand --help / -h fast-path: print subcommand-specific help and
@@ -82,6 +95,18 @@ async function runSubcommand(name, rest) {
82
95
 
83
96
  {
84
97
  const sub = process.argv[2];
98
+ // `chorus init` was renamed to `chorus agents add`. Intercept the old word
99
+ // with an actionable hint and exit — never fall through to the server-launch
100
+ // path below (a muscle-memory `chorus init` must not silently boot Postgres).
101
+ if (sub === "init") {
102
+ process.stderr.write(
103
+ "`chorus init` has been renamed to `chorus agents add`.\n" +
104
+ " • configure agents: chorus agents add (same flags as before)\n" +
105
+ " • list configured: chorus agents\n" +
106
+ " • remove one: chorus agents remove <name|uuid>\n",
107
+ );
108
+ process.exit(1);
109
+ }
85
110
  if (sub && SUBCOMMANDS.has(sub)) {
86
111
  runSubcommand(sub, process.argv.slice(3))
87
112
  .then((code) => process.exit(typeof code === "number" ? code : 0))
@@ -146,10 +171,16 @@ Chorus v${pkg.version} — AI Agent & Human collaboration platform
146
171
 
147
172
  USAGE
148
173
  chorus [options] Start the Chorus server (default)
174
+ chorus agents [list|add|remove] Manage this machine's configured agents:
175
+ list (default), add (detect + install plugin + seed
176
+ creds; formerly 'chorus init'), remove <name|uuid>
177
+ (see 'chorus agents --help')
149
178
  chorus login [--url --api-key] Authenticate as an agent; saves ~/.chorus/daemon.json
150
179
  chorus daemon [--url --api-key] Connect to a remote Chorus server, subscribe to the
151
180
  agent notification stream, and wake a local headless
152
181
  Claude Code on task dispatch
182
+ chorus mcp <call|whoami|list> Native MCP client — call any tool, print this agent's
183
+ UUID, or list callable tools (see 'chorus mcp --help')
153
184
 
154
185
  SERVER OPTIONS
155
186
  -p, --port <port> HTTP server port (default: 8637, env: PORT)
@@ -203,6 +234,9 @@ EXAMPLES
203
234
  chorus daemon # Connect & wake local Claude Code (full autonomy by default)
204
235
  chorus daemon --chorus-only # Restrict the woken Claude to Chorus MCP tools only
205
236
  CHORUS_URL=https://... CHORUS_API_KEY=cho_... chorus daemon
237
+ chorus mcp whoami # Print this agent's own UUID
238
+ chorus mcp call chorus_get_task '{"taskUuid":"..."}' # Call a tool with JSON args
239
+ chorus mcp call chorus_pm_add_document_draft --arg proposalUuid=P1 --arg type=prd --arg-file content=doc.md
206
240
  `);
207
241
  process.exit(0);
208
242
  }
@@ -84,8 +84,9 @@ export async function promptAgentBackend({ ask, log = () => {}, isTTY = false }
84
84
  if (Number.isInteger(n) && n >= 1 && n <= AGENT_MENU.length) {
85
85
  return AGENT_MENU[n - 1].value;
86
86
  }
87
- // A backend typed by name (muscle memory). KNOWN_AGENTS includes de-advertised
88
- // backends (dsh), so a by-name pick can still reach them.
87
+ // A backend typed by name (muscle memory). KNOWN_AGENTS includes the
88
+ // de-advertised `dsh` backend AND the non-wakeable `offline` classification, so a
89
+ // by-name pick can still reach either even though neither is in the numbered menu.
89
90
  if (KNOWN_AGENTS.includes(answer)) return answer;
90
91
 
91
92
  // Out-of-range / garbage → no explicit choice; the caller inherits the default.