@chorus-aidlc/chorus 0.17.0 → 0.17.1

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 (440) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +537 -537
  3. package/.next/standalone/.next/app-path-routes-manifest.json +43 -43
  4. package/.next/standalone/.next/build-manifest.json +6 -6
  5. package/.next/standalone/.next/prerender-manifest.json +33 -33
  6. package/.next/standalone/.next/react-loadable-manifest.json +1 -1
  7. package/.next/standalone/.next/required-server-files.json +4 -4
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +2 -2
  9. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +2 -2
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +2 -2
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +2 -2
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +2 -2
  42. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +3 -3
  45. package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
  48. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
  51. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  53. package/.next/standalone/.next/server/app/_not-found.rsc +5 -5
  54. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page.js +2 -2
  55. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/admin/companies/new/page.js +2 -2
  58. package/.next/standalone/.next/server/app/admin/companies/new/page.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
  61. package/.next/standalone/.next/server/app/admin/companies/new.rsc +7 -7
  62. package/.next/standalone/.next/server/app/admin/companies/page.js +2 -2
  63. package/.next/standalone/.next/server/app/admin/companies/page.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/admin/companies.html +2 -2
  66. package/.next/standalone/.next/server/app/admin/companies.rsc +7 -7
  67. package/.next/standalone/.next/server/app/admin/page.js +2 -2
  68. package/.next/standalone/.next/server/app/admin/page.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/admin.html +2 -2
  71. package/.next/standalone/.next/server/app/admin.rsc +7 -7
  72. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route.js +1 -1
  73. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/admin/companies/route.js +1 -1
  75. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/admin/login/route.js +1 -1
  77. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/admin/session/route.js +1 -1
  79. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/agent-connections/route.js +1 -1
  81. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/agents/[uuid]/route.js +1 -1
  83. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  85. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/agents/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/api-keys/route.js +1 -1
  91. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/auth/callback/route.js +1 -1
  93. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/auth/check-default/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/auth/company-oidc/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
  99. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/auth/identify/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/auth/logout/route.js +1 -1
  103. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/auth/me/route.js +1 -1
  105. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
  107. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  109. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js +1 -1
  111. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
  113. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js +1 -1
  115. package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
  117. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
  119. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
  121. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
  123. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
  125. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
  127. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  129. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js +1 -1
  131. package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js +1 -1
  133. package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
  135. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
  137. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
  139. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
  141. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
  143. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  145. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
  147. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
  149. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/events/route.js +9 -3
  151. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/health/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  155. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  161. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  163. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  165. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
  169. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/mcp/route.js +4 -4
  171. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  173. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  175. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  177. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  179. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  181. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  183. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  185. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  186. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  187. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
  189. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route.js +1 -1
  191. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/api/project-groups/route.js +1 -1
  193. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/project-visits/pin/route.js +1 -1
  195. package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/project-visits/route.js +1 -1
  197. package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/app/api/project-visits/visit/route.js +1 -1
  199. package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.js +1 -1
  201. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  202. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js +1 -1
  203. package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  205. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  207. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route.js +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route.js +1 -1
  231. package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
  232. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  233. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  234. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  235. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  237. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  238. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  239. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  241. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  242. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  243. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  244. package/.next/standalone/.next/server/app/api/references/[uuid]/route.js +1 -1
  245. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
  246. package/.next/standalone/.next/server/app/api/references/route.js +1 -1
  247. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/api/search/route.js +1 -1
  249. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  250. package/.next/standalone/.next/server/app/api/session/route.js +1 -1
  251. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  252. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  253. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  254. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  255. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  256. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  257. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  258. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  259. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  260. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  261. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  262. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  263. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  264. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  265. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  266. package/.next/standalone/.next/server/app/favicon.ico/route.js +1 -1
  267. package/.next/standalone/.next/server/app/index.html +2 -2
  268. package/.next/standalone/.next/server/app/index.rsc +6 -6
  269. package/.next/standalone/.next/server/app/login/admin/page.js +2 -2
  270. package/.next/standalone/.next/server/app/login/admin/page.js.nft.json +1 -1
  271. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  272. package/.next/standalone/.next/server/app/login/admin.html +2 -2
  273. package/.next/standalone/.next/server/app/login/admin.rsc +6 -6
  274. package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
  275. package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +1 -1
  276. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  277. package/.next/standalone/.next/server/app/login/callback.html +2 -2
  278. package/.next/standalone/.next/server/app/login/callback.rsc +6 -6
  279. package/.next/standalone/.next/server/app/login/page.js +2 -2
  280. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  281. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  282. package/.next/standalone/.next/server/app/login/pick-workspace/page.js +2 -2
  283. package/.next/standalone/.next/server/app/login/pick-workspace/page.js.nft.json +1 -1
  284. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  285. package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
  286. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +6 -6
  287. package/.next/standalone/.next/server/app/login.html +2 -2
  288. package/.next/standalone/.next/server/app/login.rsc +6 -6
  289. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  290. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  291. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  292. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  293. package/.next/standalone/.next/server/app/onboarding.rsc +6 -6
  294. package/.next/standalone/.next/server/app/page.js +2 -2
  295. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  296. package/.next/standalone/.next/server/app/projects.html +2 -2
  297. package/.next/standalone/.next/server/app/projects.rsc +7 -7
  298. package/.next/standalone/.next/server/app/settings.html +2 -2
  299. package/.next/standalone/.next/server/app/settings.rsc +7 -7
  300. package/.next/standalone/.next/server/app-paths-manifest.json +43 -43
  301. package/.next/standalone/.next/server/chunks/1073.js +1 -0
  302. package/.next/standalone/.next/server/chunks/1114.js +1 -1
  303. package/.next/standalone/.next/server/chunks/1267.js +1 -0
  304. package/.next/standalone/.next/server/chunks/1318.js +1 -1
  305. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  306. package/.next/standalone/.next/server/chunks/2570.js +2 -2
  307. package/.next/standalone/.next/server/chunks/2572.js +1 -1
  308. package/.next/standalone/.next/server/chunks/2940.js +1 -1
  309. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  310. package/.next/standalone/.next/server/chunks/3197.js +1 -1
  311. package/.next/standalone/.next/server/chunks/378.js +4 -4
  312. package/.next/standalone/.next/server/chunks/5245.js +1 -1
  313. package/.next/standalone/.next/server/chunks/{3831.js → 5737.js} +2 -2
  314. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  315. package/.next/standalone/.next/server/chunks/6145.js +1 -0
  316. package/.next/standalone/.next/server/chunks/6487.js +1 -0
  317. package/.next/standalone/.next/server/chunks/6506.js +1 -1
  318. package/.next/standalone/.next/server/chunks/6515.js +2 -2
  319. package/.next/standalone/.next/server/chunks/6753.js +3 -3
  320. package/.next/standalone/.next/server/chunks/679.js +1 -1
  321. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  322. package/.next/standalone/.next/server/chunks/7530.js +1 -1
  323. package/.next/standalone/.next/server/chunks/7770.js +1 -0
  324. package/.next/standalone/.next/server/chunks/{5706.js → 7822.js} +1 -1
  325. package/.next/standalone/.next/server/chunks/8454.js +1 -1
  326. package/.next/standalone/.next/server/chunks/8586.js +1 -0
  327. package/.next/standalone/.next/server/chunks/920.js +1 -1
  328. package/.next/standalone/.next/server/chunks/9213.js +1 -1
  329. package/.next/standalone/.next/server/chunks/9378.js +1 -1
  330. package/.next/standalone/.next/server/chunks/9931.js +1 -0
  331. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  332. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  333. package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  334. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  335. package/.next/standalone/.next/server/next-font-manifest.json +1 -1
  336. package/.next/standalone/.next/server/pages/404.html +2 -2
  337. package/.next/standalone/.next/server/pages/500.html +1 -1
  338. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  339. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  340. package/.next/standalone/.next/server/src/middleware.js +2 -2
  341. package/.next/standalone/.next/static/chunks/{11595.bbe40924d18958bf.js → 11595.32f7dedc4fd7e3e1.js} +1 -1
  342. package/.next/standalone/.next/static/chunks/11998-27dcf858173fc015.js +1 -0
  343. package/.next/standalone/.next/static/chunks/12070-426bb88f5179812b.js +1 -0
  344. package/.next/standalone/.next/static/chunks/17409-67dbc0a3f4cbc207.js +1 -0
  345. package/.next/standalone/.next/static/chunks/{97663-9c3ae4fd60b353db.js → 26494-5a04e150431b0233.js} +1 -1
  346. package/.next/standalone/.next/static/chunks/{33456.5499eb8e892b110a.js → 33456.87f86ce6041405e0.js} +1 -1
  347. package/.next/standalone/.next/static/chunks/38366.fb931fab9c756890.js +1 -0
  348. package/.next/standalone/.next/static/chunks/4166-85352630c29e2c2b.js +1 -0
  349. package/.next/standalone/.next/static/chunks/{4860.be77046fb2b3a2bd.js → 4860.9457e021394e9399.js} +1 -1
  350. package/.next/standalone/.next/static/chunks/{65096-f756aac39efad7a3.js → 65096-8295f53f97c40d47.js} +1 -1
  351. package/.next/standalone/.next/static/chunks/65807-086d83649f593a5a.js +1 -0
  352. package/.next/standalone/.next/static/chunks/79919-56796c262f51fa82.js +1 -0
  353. package/.next/standalone/.next/static/chunks/94643-87ee1ede6d955937.js +1 -0
  354. package/.next/standalone/.next/static/chunks/{99373.111493dc260a2a04.js → 99373.aed267aa48c5bdd0.js} +1 -1
  355. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-9219c4de1012f0fb.js +1 -0
  356. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/{page-974781e4886529f8.js → page-82e90e222d6bc547.js} +1 -1
  357. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/activity/page-f1eccb50d38d8982.js +1 -0
  358. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-f4810f1b9f39d1ae.js +1 -0
  359. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-721d2152f1a28c88.js +1 -0
  360. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-9bcff40805f39b25.js +1 -0
  361. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-f31ad2eebe257628.js +1 -0
  362. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-a4fb04068539c4ce.js +1 -0
  363. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-b1d2af10e9bc7e09.js +1 -0
  364. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-2cb245b0602a3c85.js +1 -0
  365. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-15bb6e1696668512.js → page-53ce4468844cc84f.js} +1 -1
  366. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-2bea97214b1595cc.js → page-1c374d19e8046d9a.js} +1 -1
  367. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-31d6f8e82c7f5366.js +1 -0
  368. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-32bff791b19a0a58.js +1 -0
  369. package/.next/standalone/.next/static/chunks/app/_not-found/{page-166b410da84336d4.js → page-b9d672df79b35e87.js} +1 -1
  370. package/.next/standalone/.next/static/chunks/app/admin/companies/[uuid]/{page-b2458ed001dc8177.js → page-56118c51122ad639.js} +1 -1
  371. package/.next/standalone/.next/static/chunks/app/admin/companies/new/page-4e20deb41357171c.js +1 -0
  372. package/.next/standalone/.next/static/chunks/app/admin/companies/page-0632f245bf9c1c27.js +1 -0
  373. package/.next/standalone/.next/static/chunks/app/admin/layout-725ab2331c642f36.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/admin/{page-0cc8cf246db43e5d.js → page-5a0271dd2b8b36fd.js} +1 -1
  375. package/.next/standalone/.next/static/chunks/app/{layout-985054e973f66999.js → layout-098288cec4490c5d.js} +1 -1
  376. package/.next/standalone/.next/static/chunks/app/login/admin/page-c8e40259e5d3d9e0.js +1 -0
  377. package/.next/standalone/.next/static/chunks/app/login/callback/page-527652f6c1a39274.js +1 -0
  378. package/.next/standalone/.next/static/chunks/app/login/{page-9b34375d1b5579d7.js → page-0a16a64855b771ef.js} +1 -1
  379. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-47375a86e2375202.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/onboarding/{page-540da64d7ba16dc7.js → page-d082f9b60ad03057.js} +1 -1
  381. package/.next/standalone/.next/static/chunks/app/{page-79e2d32e69788bd2.js → page-91dbf7dfd85f805f.js} +1 -1
  382. package/.next/standalone/.next/static/chunks/main-app-1a7cacecc8900a4d.js +1 -0
  383. package/.next/standalone/.next/static/chunks/{webpack-7cbb3ba6792f1fb3.js → webpack-e2e0ef50652d5791.js} +1 -1
  384. package/.next/standalone/.next/static/css/1d9cf83f50b6db00.css +1 -0
  385. package/.next/standalone/package.json +2 -1
  386. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  387. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
  388. package/.next/standalone/public/kiro-plugin/manifest.txt +1 -0
  389. package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
  390. package/.next/standalone/server.js +1 -1
  391. package/README.ja.md +3 -1
  392. package/README.ko.md +3 -1
  393. package/README.md +3 -1
  394. package/README.zh.md +3 -1
  395. package/cli/claude-spawner.mjs +52 -15
  396. package/cli/credentials.mjs +5 -1
  397. package/cli/init/contracts.mjs +2 -0
  398. package/cli/init/install-methods.mjs +82 -21
  399. package/cli/init-args.mjs +4 -1
  400. package/cli/init.mjs +47 -2
  401. package/cli/kiro-spawner.mjs +1 -0
  402. package/cli/waker.mjs +89 -38
  403. package/package.json +2 -1
  404. package/.next/standalone/.env +0 -18
  405. package/.next/standalone/.next/server/chunks/1437.js +0 -1
  406. package/.next/standalone/.next/server/chunks/3045.js +0 -1
  407. package/.next/standalone/.next/server/chunks/4545.js +0 -1
  408. package/.next/standalone/.next/server/chunks/6207.js +0 -1
  409. package/.next/standalone/.next/server/chunks/7091.js +0 -1
  410. package/.next/standalone/.next/server/chunks/9449.js +0 -1
  411. package/.next/standalone/.next/server/chunks/9458.js +0 -1
  412. package/.next/standalone/.next/static/chunks/18139-e6ef4b5869593f8e.js +0 -1
  413. package/.next/standalone/.next/static/chunks/28856-ef2cb58fbd404ef9.js +0 -1
  414. package/.next/standalone/.next/static/chunks/38366.e6e0132b8ba873d6.js +0 -1
  415. package/.next/standalone/.next/static/chunks/66873-e3be53f41b3f2255.js +0 -1
  416. package/.next/standalone/.next/static/chunks/70303-aec3d52ad87602a3.js +0 -1
  417. package/.next/standalone/.next/static/chunks/76201-83b26515f85ce37c.js +0 -1
  418. package/.next/standalone/.next/static/chunks/78917-a8a8dff98857c045.js +0 -1
  419. package/.next/standalone/.next/static/chunks/94643-ffa140f765c73daf.js +0 -1
  420. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-40fe7d026c5a7c6d.js +0 -1
  421. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/activity/page-20632dbec5a6dbc0.js +0 -1
  422. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-87d4d0fe90fca28c.js +0 -1
  423. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-1206abaee85dc915.js +0 -1
  424. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-474e494097c8945f.js +0 -1
  425. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-e902b19328092ccf.js +0 -1
  426. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-f273288c3530aa0f.js +0 -1
  427. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6568a7b08bf9a54b.js +0 -1
  428. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-fbd3c27b68666234.js +0 -1
  429. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-9d79e285b6fd2f8d.js +0 -1
  430. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2bf7ceee62b574c7.js +0 -1
  431. package/.next/standalone/.next/static/chunks/app/admin/companies/new/page-e35dce890d6dfd8d.js +0 -1
  432. package/.next/standalone/.next/static/chunks/app/admin/companies/page-ef720c2b0856166c.js +0 -1
  433. package/.next/standalone/.next/static/chunks/app/admin/layout-c66ce38cbd88982a.js +0 -1
  434. package/.next/standalone/.next/static/chunks/app/login/admin/page-f032b6db3bd20a2c.js +0 -1
  435. package/.next/standalone/.next/static/chunks/app/login/callback/page-ec23211506e688ee.js +0 -1
  436. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-7e4664af2c787d08.js +0 -1
  437. package/.next/standalone/.next/static/chunks/main-app-ec87f2c9ef083ff1.js +0 -1
  438. package/.next/standalone/.next/static/css/5f52bd39b284ccdf.css +0 -1
  439. /package/.next/standalone/.next/static/{0spgxl3lP26Fl1otd1D7R → _s4RZW3efB1g0lrKgLiZ7}/_buildManifest.js +0 -0
  440. /package/.next/standalone/.next/static/{0spgxl3lP26Fl1otd1D7R → _s4RZW3efB1g0lrKgLiZ7}/_ssgManifest.js +0 -0
@@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
9
9
  const hostname = process.env.HOSTNAME || '0.0.0.0'
10
10
 
11
11
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
12
- const nextConfig = {"env":{},"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"maximumResponseBody":50000000,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","remotePatterns":[],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/ubuntu/dev/ai-pm","experimental":{"useSkewCookie":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":4294967294}},"cacheHandlers":{},"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientSegmentCache":false,"clientParamParsing":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":15,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"routerBFCache":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"cacheComponents":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"devtoolSegmentExplorer":true,"browserDebugInfoInTerminal":false,"optimizeRouterScrolling":false,"middlewareClientMaxBodySize":10485760,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","serverExternalPackages":["pino"],"turbopack":{"resolveAlias":{"fs":{"browser":"./src/lib/empty.ts"}},"root":"/home/ubuntu/dev/ai-pm"}}
12
+ const nextConfig = {"env":{},"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"maximumResponseBody":50000000,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","remotePatterns":[],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/Chorus/Chorus","experimental":{"useSkewCookie":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":4294967294}},"cacheHandlers":{},"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientSegmentCache":false,"clientParamParsing":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"routerBFCache":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"cacheComponents":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"devtoolSegmentExplorer":true,"browserDebugInfoInTerminal":false,"optimizeRouterScrolling":false,"middlewareClientMaxBodySize":10485760,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","serverExternalPackages":["pino"],"turbopack":{"resolveAlias":{"fs":{"browser":"./src/lib/empty.ts"}},"root":"/home/runner/work/Chorus/Chorus"}}
13
13
 
14
14
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
15
15
 
package/README.ja.md CHANGED
@@ -38,6 +38,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
38
38
 
39
39
  ## 最近の更新
40
40
 
41
+ **[v0.17.0–0.17.1](https://github.com/Chorus-AIDLC/Chorus/releases/tag/v0.17.1)** — 1 つの CLI で各コーディングエージェントに Chorus を導入・更新できるようになりました。Tracker、Graph、Idea 詳細ではデーモンの活動をリアルタイムに確認できます。
42
+
41
43
  **[v0.16.4](https://chorus-ai.dev/blog/chorus-v0.16.4-release/)** — DeepSeek Harness(dsh)が 6 つ目の接続方法に。`@chorus-aidlc/chorus-dsh` バンドルが Chorus のスキル・ペルソナ・MCP 設定を任意の dsh プロファイルに追加します。現時点は対話的な利用のみ、デーモンウェイクは後日対応。
42
44
 
43
45
  **[v0.16.1](https://chorus-ai.dev/blog/chorus-v0.16.1-release/)** — 1 つの `chorus daemon` が、互いに独立した複数のエージェントを同時に扱えるようになりました。各エージェントは `agents[]` 配列で自分のキー・作業ディレクトリ・バックエンド・権限を持ちます。エージェント同士は @メンションで作業を渡し合え、各ウェイクはそのエージェント自身のプロジェクトディレクトリに届きます。
@@ -59,7 +61,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
59
61
  2 つのコマンドだけです — データベースも Docker も設定ファイルも不要です。
60
62
 
61
63
  ```bash
62
- npm install -g @chorus-aidlc/chorus@0.17.0
64
+ npm install -g @chorus-aidlc/chorus@0.17.1
63
65
  chorus
64
66
  ```
65
67
 
package/README.ko.md CHANGED
@@ -38,6 +38,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
38
38
 
39
39
  ## 최근 업데이트
40
40
 
41
+ **[v0.17.0–0.17.1](https://github.com/Chorus-AIDLC/Chorus/releases/tag/v0.17.1)** — 하나의 CLI로 여러 코딩 에이전트에 Chorus를 설치하고 업데이트할 수 있습니다. 이제 Tracker, Graph, Idea 상세 화면에서 데몬 활동도 실시간으로 확인할 수 있습니다.
42
+
41
43
  **[v0.16.4](https://chorus-ai.dev/blog/chorus-v0.16.4-release/)** — DeepSeek Harness(dsh)가 여섯 번째 연결 방식으로 추가됩니다: `@chorus-aidlc/chorus-dsh` 번들이 Chorus의 스킬·페르소나·MCP 설정을 임의의 dsh 프로파일에 추가합니다. 현재는 대화식 사용만, 데몬 웨이크는 추후 지원.
42
44
 
43
45
  **[v0.16.1](https://chorus-ai.dev/blog/chorus-v0.16.1-release/)** — 이제 하나의 `chorus daemon`이 서로 독립적인 여러 에이전트를 동시에 서비스합니다. 각 에이전트는 `agents[]` 배열로 자신의 키·작업 디렉터리·백엔드·권한을 가집니다. 에이전트끼리 @멘션으로 작업을 넘길 수 있고, 각 웨이크는 해당 에이전트 자신의 프로젝트 디렉터리에 도착합니다.
@@ -59,7 +61,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
59
61
  두 개의 명령이면 됩니다. 데이터베이스도, Docker도, 설정 파일도 필요 없습니다.
60
62
 
61
63
  ```bash
62
- npm install -g @chorus-aidlc/chorus@0.17.0
64
+ npm install -g @chorus-aidlc/chorus@0.17.1
63
65
  chorus
64
66
  ```
65
67
 
package/README.md CHANGED
@@ -38,6 +38,8 @@ The labels under each stage are the **permissions** an actor needs there — gra
38
38
 
39
39
  ## What's New
40
40
 
41
+ **[v0.17.0–0.17.1](https://github.com/Chorus-AIDLC/Chorus/releases/tag/v0.17.1)** — One CLI now installs and refreshes Chorus across your coding agents. Live daemon activity is visible directly on Ideas in Tracker, Graph, and detail views.
42
+
41
43
  **[v0.16.4](https://chorus-ai.dev/blog/chorus-v0.16.4-release/)** — DeepSeek Harness (dsh) is the sixth way to connect: the `@chorus-aidlc/chorus-dsh` bundle drops Chorus's skills, persona, and MCP config into any dsh profile. Interactive for now; daemon wake comes later.
42
44
 
43
45
  **[v0.16.1](https://chorus-ai.dev/blog/chorus-v0.16.1-release/)** — One `chorus daemon` now serves many independent agents at once — each with its own key, working directories, backend, and permissions via an `agents[]` array — and agents can hand work to each other by @-mention, with each wake landing in that agent's own project directory.
@@ -59,7 +61,7 @@ The labels under each stage are the **permissions** an actor needs there — gra
59
61
  Two commands. No database, no Docker, no config files.
60
62
 
61
63
  ```bash
62
- npm install -g @chorus-aidlc/chorus@0.17.0
64
+ npm install -g @chorus-aidlc/chorus@0.17.1
63
65
  chorus
64
66
  ```
65
67
 
package/README.zh.md CHANGED
@@ -29,6 +29,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
29
29
 
30
30
  ## 最近更新
31
31
 
32
+ **[v0.17.0–0.17.1](https://github.com/Chorus-AIDLC/Chorus/releases/tag/v0.17.1)** — 一个 CLI 即可为各类编程 Agent 安装和更新 Chorus。现在还能在 Tracker、Graph 和 Idea 详情中直接看到 daemon 的实时活动。
33
+
32
34
  **[v0.16.4](https://chorus-ai.dev/zh/blog/chorus-v0.16.4-release/)** — DeepSeek Harness(dsh)成为第六种接入方式:`@chorus-aidlc/chorus-dsh` bundle 把 Chorus 的 skill、persona 和 MCP 配置装进任意 dsh profile。目前仅交互式使用,daemon 唤醒稍后支持。
33
35
 
34
36
  **[v0.16.1](https://chorus-ai.dev/zh/blog/chorus-v0.16.1-release/)** — 一个 `chorus daemon` 现在可以同时服务多个互相独立的 agent,每个都有自己的密钥、工作目录、后端和权限(通过 `agents[]` 配置);agent 之间还能通过 @ 把活递给对方,每次唤醒都落在该 agent 自己的项目目录里。
@@ -50,7 +52,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
50
52
  两条命令即可,无需数据库、无需 Docker、无需配置文件。
51
53
 
52
54
  ```bash
53
- npm install -g @chorus-aidlc/chorus@0.17.0
55
+ npm install -g @chorus-aidlc/chorus@0.17.1
54
56
  chorus
55
57
  ```
56
58
 
@@ -3,7 +3,7 @@
3
3
  // engineering point of the daemon: parsing stream-json is plain JS and
4
4
  // platform-neutral; the real work is spawning, and it is all Windows.
5
5
  //
6
- // Verified against Claude Code CLI 2.1.177:
6
+ // Verified against Claude Code CLI 2.1.251:
7
7
  // • `-p/--print` + `--output-format stream-json` emits NDJSON (one JSON object
8
8
  // per line); every line carries `session_id`.
9
9
  // • `--session-id <uuid>` sets the session id for a fresh run, and
@@ -32,6 +32,28 @@ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
32
32
  /** Matches a canonical lowercase UUID (any version). Chorus idea uuids are v4. */
33
33
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
34
34
 
35
+ /** Backend-neutral failure classification consumed by the wake orchestrator. */
36
+ export const SESSION_CONFLICT_FAILURE = "session_conflict";
37
+
38
+ const STDERR_BUFFER_LIMIT = 64 * 1024;
39
+ const SESSION_CONFLICT_RE = /\bsession id\b[^\r\n]{0,200}\bis already in use\b/i;
40
+ const CLAUDE_PROJECT_KEY_CAP = 200;
41
+
42
+ /**
43
+ * Claude Code 2.1.251's Java-style signed 32-bit string hash, rendered as the
44
+ * absolute value in base36. Iterating by index intentionally hashes UTF-16 code
45
+ * units (including each surrogate in an astral character) rather than code points.
46
+ * @param {string} value
47
+ * @returns {string}
48
+ */
49
+ function projectKeyHash(value) {
50
+ let hash = 0;
51
+ for (let index = 0; index < value.length; index += 1) {
52
+ hash = ((hash << 5) - hash + value.charCodeAt(index)) | 0;
53
+ }
54
+ return Math.abs(hash).toString(36);
55
+ }
56
+
35
57
  /**
36
58
  * True iff `id` is a well-formed, lowercase UUID. The daemon anchors the Claude
37
59
  * session id on a Chorus idea uuid (already lowercase v4); we validate before
@@ -45,22 +67,27 @@ export function isValidSessionId(id) {
45
67
  }
46
68
 
47
69
  /**
48
- * Claude Code's transcript directory for a working directory. Verified against the
49
- * live install: claude escapes the ABSOLUTE cwd by replacing both `/` and `.` with
50
- * `-` (e.g. `/home/u/dev/ai-pm` `-home-u-dev-ai-pm`,
51
- * `/home/u/.cfg/x` `-home-u--cfg-x`). On Windows the separators/drive differ, so
52
- * we escape backslashes and colons too; the rule there is best-effort and must be
53
- * re-verified against a Windows claude before claiming Windows resume support.
70
+ * Claude Code's transcript directory for a working directory. Verified against
71
+ * Claude Code 2.1.251's live Linux install and on-disk transcripts: every
72
+ * non-ASCII-alphanumeric UTF-16 code unit becomes `-`. That includes separators,
73
+ * dots, spaces, underscores, and non-ASCII characters; existing hyphens remain
74
+ * byte-identical because replacing `-` with `-` is a no-op. Escaped keys longer
75
+ * than 200 characters use the first 200 characters plus `-` and the base36
76
+ * Java-style signed 32-bit hash of the original cwd. The same expression produces
77
+ * the established Windows fixture, though the Windows on-disk layout remains
78
+ * best-effort until verified on a Windows Claude installation.
54
79
  * @param {string} cwd Absolute working directory.
55
80
  * @param {NodeJS.Platform} [platform]
56
81
  * @returns {string}
57
82
  */
58
83
  export function escapeCwd(cwd, platform = process.platform) {
59
- // Replace path separators and dots with `-`. On POSIX that's `/` and `.`; on
60
- // Windows also `\` and the drive-colon. Collapsing both `/` and `.` is what
61
- // produces the verified double-dash on a leading-dot segment.
62
- const re = platform === "win32" ? /[\\/.:]/g : /[/.]/g;
63
- return cwd.replace(re, "-");
84
+ // `platform` remains in the signature for fixture/API compatibility. Claude's
85
+ // observed sanitizer is platform-independent; platform path syntax supplies
86
+ // the differing separator/drive characters that this expression normalizes.
87
+ void platform;
88
+ const escaped = cwd.replace(/[^a-zA-Z0-9]/g, "-");
89
+ if (escaped.length <= CLAUDE_PROJECT_KEY_CAP) return escaped;
90
+ return `${escaped.slice(0, CLAUDE_PROJECT_KEY_CAP)}-${projectKeyHash(cwd)}`;
64
91
  }
65
92
 
66
93
  /**
@@ -284,7 +311,8 @@ export class ClaudeSpawner {
284
311
  * so the waker can store the handle in its execution registry for the interrupt
285
312
  * path BEFORE this promise resolves. It is invoked once, synchronously, only on a
286
313
  * successful spawn; a spawn failure never calls it.
287
- * @returns {Promise<{ sessionId: string, backendSessionId: string|null, exitCode: number|null, isNew: boolean }>}
314
+ * @returns {Promise<{ sessionId: string, backendSessionId: string|null, exitCode: number|null, isNew: boolean,
315
+ * failureClassification?: "session_conflict" }>}
288
316
  * `backendSessionId` is the Claude `--resume` anchor (the input `sessionId`) on a
289
317
  * terminal resolution after a spawn, so the conversation UI can offer a resumable
290
318
  * id — mirrors codex-spawner's shape. `null` on the pre-spawn failure paths (no
@@ -369,6 +397,8 @@ export class ClaudeSpawner {
369
397
  }
370
398
 
371
399
  let stdoutBuf = "";
400
+ let stderrBuf = "";
401
+ let sessionConflictSeen = false;
372
402
  let observedSessionId = id;
373
403
 
374
404
  child.stdout?.setEncoding?.("utf8");
@@ -392,7 +422,10 @@ export class ClaudeSpawner {
392
422
 
393
423
  child.stderr?.setEncoding?.("utf8");
394
424
  child.stderr?.on("data", (chunk) => {
395
- const text = String(chunk).trim();
425
+ const rawText = String(chunk);
426
+ stderrBuf = (stderrBuf + rawText).slice(-STDERR_BUFFER_LIMIT);
427
+ if (SESSION_CONFLICT_RE.test(stderrBuf)) sessionConflictSeen = true;
428
+ const text = rawText.trim();
396
429
  if (text) this.logger.warn(`[Chorus] claude stderr: ${text}`);
397
430
  });
398
431
 
@@ -411,7 +444,11 @@ export class ClaudeSpawner {
411
444
  }
412
445
  // backendSessionId is the `--resume` anchor (`id`), NOT observedSessionId (see
413
446
  // the process-error handler above for why the anchor is the resumable value).
414
- resolve({ sessionId: observedSessionId, backendSessionId: id, exitCode: code, isNew });
447
+ const result = { sessionId: observedSessionId, backendSessionId: id, exitCode: code, isNew };
448
+ if (code !== null && code !== 0 && sessionConflictSeen) {
449
+ result.failureClassification = SESSION_CONFLICT_FAILURE;
450
+ }
451
+ resolve(result);
415
452
  });
416
453
 
417
454
  // Guard against an ASYNC stdin error (EPIPE): if claude exits/closes
@@ -18,15 +18,19 @@
18
18
 
19
19
  import { readFileSync } from "node:fs";
20
20
  import { homedir } from "node:os";
21
- import { join } from "node:path";
21
+ import { join, resolve } from "node:path";
22
22
 
23
23
  /** Absolute path to the login file written by `chorus login`. */
24
24
  export function loginFilePath() {
25
+ const override = process.env.CHORUS_DAEMON_CONFIG_PATH?.trim();
26
+ if (override) return resolve(override);
25
27
  return join(homedir(), ".chorus", "daemon.json");
26
28
  }
27
29
 
28
30
  /** Absolute path to the Claude Code user settings file (plugin fallback source). */
29
31
  export function claudeSettingsPath() {
32
+ const override = process.env.CHORUS_CLAUDE_SETTINGS_PATH?.trim();
33
+ if (override) return resolve(override);
30
34
  return join(homedir(), ".claude", "settings.json");
31
35
  }
32
36
 
@@ -108,6 +108,8 @@ export const FAILURE_ACTIONS = Object.freeze([OUTCOME_ACTIONS.FAILED]);
108
108
  * @property {string} [agentId] The current agent id (per-agent steps only).
109
109
  * @property {AgentAdapter} [adapter] The current agent's adapter (per-agent steps only).
110
110
  * @property {object} flags Parsed init flags (see cli/init-args.mjs).
111
+ * `flags.updateInstalled` is the orchestrator-resolved, invocation-wide
112
+ * decision to refresh selected installed plugin payloads.
111
113
  * @property {{ log: (m: string) => void, ask: Function, isTTY: boolean }} io
112
114
  * @property {(path: string) => (string|null)} backup Copy a file to <path>.chorus-bak
113
115
  * once before overwrite; returns the backup path or null if the source is absent.
@@ -66,9 +66,10 @@ function readJsonSafe(path) {
66
66
  }
67
67
 
68
68
  // ---------------------------------------------------------------------------
69
- // Claude Code — VERIFIED against Claude Code 2.1.235:
69
+ // Claude Code — VERIFIED LIVE against Claude Code 2.1.250:
70
70
  // `claude plugin marketplace add <url|path|repo>`
71
71
  // `claude plugin install <plugin@marketplace> -y` (-y required when non-TTY)
72
+ // `claude plugin update <plugin@marketplace> -y`
72
73
  // State is read from ~/.claude/plugins/installed_plugins.json (read-only).
73
74
  // ---------------------------------------------------------------------------
74
75
  export function installClaude(ctx) {
@@ -77,6 +78,11 @@ export function installClaude(ctx) {
77
78
  const source = env.CHORUS_MARKETPLACE_SOURCE || CHORUS_MARKETPLACE_SOURCE;
78
79
  const state = safeState(ctx);
79
80
  if (state.pluginInstalled) {
81
+ if (ctx.flags?.updateInstalled) {
82
+ const r = run("claude", ["plugin", "update", CHORUS_PLUGIN_ID, "-y"], { env });
83
+ if (!r.ok) return out("claude", FAILED, `claude plugin update failed: ${errText(r)}`);
84
+ return out("claude", REPAIRED, `updated ${CHORUS_PLUGIN_ID} to latest via claude plugin update`);
85
+ }
80
86
  return out("claude", SKIPPED, `already installed${state.version ? ` (v${state.version})` : ""}`);
81
87
  }
82
88
  if (!state.marketplaceRegistered) {
@@ -91,6 +97,7 @@ export function installClaude(ctx) {
91
97
  // ---------------------------------------------------------------------------
92
98
  // Codex — VERIFIED against codex-cli 0.146.1 / 0.150.1:
93
99
  // `codex plugin marketplace add <SOURCE>` (SOURCE = local path | owner/repo[@ref] | Git URL)
100
+ // `codex plugin marketplace upgrade [MARKETPLACE_NAME]`
94
101
  // `codex plugin add <PLUGIN@MARKETPLACE> --json`
95
102
  // config.toml is backed up before the CLI mutates it.
96
103
  //
@@ -153,6 +160,21 @@ export function installCodex(ctx) {
153
160
 
154
161
  if (state.pluginInstalled) {
155
162
  ctx.backup?.(configPath); // back up before we normalize the MCP block
163
+ if (ctx.flags?.updateInstalled) {
164
+ if (!state.marketplaceRegistered) {
165
+ const ra = run("codex", ["plugin", "marketplace", "add", source], { env });
166
+ if (!ra.ok) return out("codex", FAILED, `codex plugin marketplace add failed: ${errText(ra)}`);
167
+ }
168
+ const ru = run("codex", ["plugin", "marketplace", "upgrade", CHORUS_MARKETPLACE_NAME], { env });
169
+ if (!ru.ok) return out("codex", FAILED, `codex plugin marketplace upgrade failed: ${errText(ru)}`);
170
+ const rp = run("codex", ["plugin", "add", CHORUS_PLUGIN_ID, "--json"], { env });
171
+ if (!rp.ok) return out("codex", FAILED, `codex plugin add failed: ${errText(rp)}`);
172
+ return out(
173
+ "codex",
174
+ REPAIRED,
175
+ `refreshed ${CHORUS_MARKETPLACE_NAME} and reinstalled ${CHORUS_PLUGIN_ID}${ensureMcp()}`,
176
+ );
177
+ }
156
178
  return out("codex", SKIPPED, `already installed (config.toml)${ensureMcp()}`);
157
179
  }
158
180
 
@@ -171,8 +193,9 @@ export function installCodex(ctx) {
171
193
  }
172
194
 
173
195
  // ---------------------------------------------------------------------------
174
- // opencode — VERIFIED against opencode 1.14.33:
196
+ // opencode — VERIFIED LIVE against opencode 1.14.33:
175
197
  // `opencode plugin <module>` ("install plugin and update config")
198
+ // `--global` targets the user config; `--force` replaces an existing version.
176
199
  // module name "opencode-chorus" from public/install-opencode.sh. opencode.json
177
200
  // is backed up before the CLI mutates it.
178
201
  // ---------------------------------------------------------------------------
@@ -195,15 +218,21 @@ export function installOpencode(ctx) {
195
218
  const home = env.HOME || homedir();
196
219
  const dir = env.OPENCODE_CONFIG_DIR || join(home, ".config", "opencode");
197
220
  const state = safeState(ctx);
198
- if (state.pluginInstalled) return out("opencode", SKIPPED, "already in opencode.json plugin list");
221
+ if (state.pluginInstalled && !ctx.flags?.updateInstalled) {
222
+ return out("opencode", SKIPPED, "already in opencode.json plugin list");
223
+ }
199
224
 
200
225
  ctx.backup?.(join(dir, "opencode.json")); // back up before the CLI edits it
201
226
  // `-g` writes the GLOBAL ~/.config/opencode/opencode.json (the same file
202
227
  // readOpencodeInstallState checks); without it opencode installs project-local
203
228
  // (cwd), which would defeat idempotency for a machine-wide `chorus init`.
204
- const r = run("opencode", ["plugin", OPENCODE_PLUGIN_MODULE, "-g"], { env });
229
+ const args = ["plugin", OPENCODE_PLUGIN_MODULE, "-g"];
230
+ if (state.pluginInstalled) args.push("--force");
231
+ const r = run("opencode", args, { env });
205
232
  if (!r.ok) return out("opencode", FAILED, `opencode plugin install failed: ${errText(r)}`);
206
- return out("opencode", INSTALLED, `installed ${OPENCODE_PLUGIN_MODULE} via opencode plugin -g`);
233
+ return state.pluginInstalled
234
+ ? out("opencode", REPAIRED, `updated ${OPENCODE_PLUGIN_MODULE} to latest via opencode plugin -g --force`)
235
+ : out("opencode", INSTALLED, `installed ${OPENCODE_PLUGIN_MODULE} via opencode plugin -g`);
207
236
  }
208
237
 
209
238
  // ---------------------------------------------------------------------------
@@ -225,18 +254,35 @@ const DSH_BUNDLE = "@chorus-aidlc/chorus-dsh";
225
254
  export function readDshInstallState({ env = process.env, profile } = {}) {
226
255
  // Best-effort, per-profile idempotency probe. A dsh profile is a pnpm workspace
227
256
  // root under $DSH_HOME (docs/CONNECT_DSH.md); a profile that has added the bundle
228
- // records it in that root's package.json. The exact layout is NOT verifiable here,
229
- // so this degrades to "not installed" if it differs (dsh's own `add` is idempotent)
230
- // never a false positive, never a throw. Called with no `profile` (registry-level
231
- // detection, which does not know the user's pick) it reports not-installed.
232
- if (!profile) return { marketplaceRegistered: false, pluginInstalled: false };
257
+ // records it in that root's package.json. Before an interactive profile has
258
+ // been chosen, inspect the live profiles/<name> store so runInit can include
259
+ // dsh in its one invocation-wide installed-plugin refresh decision.
233
260
  const home = env.HOME || homedir();
234
261
  const dshHome = env.DSH_HOME || join(home, ".dsh");
235
- const pkg = readJsonSafe(join(dshHome, profile, "package.json"));
236
- const deps = { ...(pkg?.dependencies ?? {}), ...(pkg?.devDependencies ?? {}) };
262
+ let candidates;
263
+ if (profile) {
264
+ candidates = [
265
+ join(dshHome, "profiles", profile, "package.json"),
266
+ join(dshHome, profile, "package.json"),
267
+ ];
268
+ } else {
269
+ try {
270
+ candidates = readdirSync(join(dshHome, "profiles"), { withFileTypes: true })
271
+ .filter((entry) => entry.isDirectory())
272
+ .map((entry) => join(dshHome, "profiles", entry.name, "package.json"));
273
+ } catch {
274
+ candidates = [];
275
+ }
276
+ }
277
+ const packagePath = candidates.find((path) => {
278
+ const pkg = readJsonSafe(path);
279
+ const deps = { ...(pkg?.dependencies ?? {}), ...(pkg?.devDependencies ?? {}) };
280
+ return Object.prototype.hasOwnProperty.call(deps, DSH_BUNDLE);
281
+ });
237
282
  return {
238
283
  marketplaceRegistered: false, // dsh has no marketplace concept
239
- pluginInstalled: Object.prototype.hasOwnProperty.call(deps, DSH_BUNDLE),
284
+ pluginInstalled: !!packagePath,
285
+ packagePath: packagePath ?? (profile ? candidates[0] : undefined),
240
286
  };
241
287
  }
242
288
 
@@ -276,11 +322,16 @@ export async function installDsh(ctx) {
276
322
 
277
323
  // Idempotency: skip when the chosen profile already carries the bundle.
278
324
  const state = safeState(ctx, { profile });
279
- if (state.pluginInstalled) return out("dsh", SKIPPED, `already installed in dsh profile '${profile}'`);
325
+ if (state.pluginInstalled && !ctx.flags?.updateInstalled) {
326
+ return out("dsh", SKIPPED, `already installed in dsh profile '${profile}'`);
327
+ }
328
+ if (state.pluginInstalled) ctx.backup?.(state.packagePath);
280
329
 
281
330
  const r = run("dsh", ["plugin", "--profile", profile, "add", DSH_BUNDLE, "-w"], { env });
282
331
  if (!r.ok) return out("dsh", FAILED, `dsh plugin add failed: ${errText(r)}`);
283
- return out("dsh", INSTALLED, `installed ${DSH_BUNDLE} into dsh profile '${profile}'`);
332
+ return state.pluginInstalled
333
+ ? out("dsh", REPAIRED, `updated ${DSH_BUNDLE} to latest in dsh profile '${profile}'`)
334
+ : out("dsh", INSTALLED, `installed ${DSH_BUNDLE} into dsh profile '${profile}'`);
284
335
  }
285
336
 
286
337
  // ---------------------------------------------------------------------------
@@ -377,7 +428,7 @@ export function installOpenclaw(ctx) {
377
428
 
378
429
  // Already installed AND enabled → nothing to do. No version probe needed: an
379
430
  // enabled-and-loaded plugin necessarily already satisfied the host floor.
380
- if (state.pluginInstalled && state.pluginEnabled) {
431
+ if (state.pluginInstalled && state.pluginEnabled && !ctx.flags?.updateInstalled) {
381
432
  return out("openclaw", SKIPPED, "already installed and enabled");
382
433
  }
383
434
 
@@ -395,18 +446,26 @@ export function installOpenclaw(ctx) {
395
446
  }
396
447
 
397
448
  // Installed-but-disabled → enable only (repair).
398
- if (state.pluginInstalled) {
449
+ if (state.pluginInstalled && !ctx.flags?.updateInstalled) {
399
450
  const re = run("openclaw", ["plugins", "enable", OPENCLAW_PLUGIN_ID], { env });
400
451
  if (!re.ok) return out("openclaw", FAILED, `openclaw plugins enable failed: ${errText(re)}`);
401
452
  return out("openclaw", REPAIRED, `enabled ${OPENCLAW_PLUGIN_ID} (was installed but disabled)`);
402
453
  }
403
454
 
404
- // Fresh → install from npm, then enable.
455
+ // Fresh or accepted refresh → install from npm, then ensure enabled. Back up
456
+ // the mutable host config before an installed payload is refreshed.
457
+ if (state.pluginInstalled) {
458
+ const home = env.HOME || homedir();
459
+ const dir = env.OPENCLAW_CONFIG_DIR || join(home, ".openclaw");
460
+ ctx.backup?.(join(dir, "openclaw.json"));
461
+ }
405
462
  const ri = run("openclaw", ["plugins", "install", OPENCLAW_NPM_SPEC], { env });
406
463
  if (!ri.ok) return out("openclaw", FAILED, `openclaw plugins install failed: ${errText(ri)}`);
407
464
  const re = run("openclaw", ["plugins", "enable", OPENCLAW_PLUGIN_ID], { env });
408
465
  if (!re.ok) return out("openclaw", FAILED, `openclaw plugins enable failed: ${errText(re)}`);
409
- return out("openclaw", INSTALLED, `installed ${OPENCLAW_NPM_SPEC} and enabled ${OPENCLAW_PLUGIN_ID}`);
466
+ return state.pluginInstalled
467
+ ? out("openclaw", REPAIRED, `reinstalled latest ${OPENCLAW_NPM_SPEC} and ensured ${OPENCLAW_PLUGIN_ID} is enabled`)
468
+ : out("openclaw", INSTALLED, `installed ${OPENCLAW_NPM_SPEC} and enabled ${OPENCLAW_PLUGIN_ID}`);
410
469
  }
411
470
 
412
471
  // ---------------------------------------------------------------------------
@@ -457,14 +516,16 @@ export async function installKiro(ctx) {
457
516
  const chorusUrl = nonEmpty(ctx.flags?.url) ?? nonEmpty(env.CHORUS_URL);
458
517
 
459
518
  const state = safeState(ctx);
460
- if (state.pluginInstalled) return out("kiro", SKIPPED, `already installed (${kiroDir})`);
519
+ if (state.pluginInstalled && !ctx.flags?.updateInstalled) {
520
+ return out("kiro", SKIPPED, `already installed (${kiroDir})`);
521
+ }
461
522
 
462
523
  if (!chorusUrl) {
463
524
  return out("kiro", FAILED, "no Chorus URL — pass --url or set CHORUS_URL so the .kiro/ template can be downloaded from the connected instance");
464
525
  }
465
526
 
466
527
  // Any chorus-* asset already present ⇒ this is a delta repair, not a fresh drop.
467
- const repairing = !!(state.skillsPresent || state.agentPresent || state.mcpServerPresent);
528
+ const repairing = !!(state.pluginInstalled || state.skillsPresent || state.agentPresent || state.mcpServerPresent);
468
529
  try {
469
530
  const res = await installFileTemplate({
470
531
  chorusUrl,
package/cli/init-args.mjs CHANGED
@@ -113,7 +113,8 @@ OPTIONS
113
113
  auto-start is unsupported (e.g. Windows). In an
114
114
  interactive TTY run the daemon-setup step prompts instead
115
115
  (default: No).
116
- -y, --yes Skip confirmation prompts (implied when non-TTY).
116
+ -y, --yes Accept confirmation prompts, including refreshing
117
+ installed plugins to latest (implied when non-TTY).
117
118
  -h, --help Show this help message.
118
119
 
119
120
  NON-INTERACTIVE
@@ -121,6 +122,8 @@ NON-INTERACTIVE
121
122
  will not guess which agents to configure and aborts otherwise. The daemon boot service is
122
123
  installed non-interactively ONLY when you pass --daemon-autostart; otherwise the
123
124
  daemon config is written and you start it yourself with 'chorus daemon'.
125
+ With an explicit selection, --yes and non-TTY runs refresh selected installed
126
+ plugins to their latest available versions without prompting.
124
127
 
125
128
  SCOPE
126
129
  This installs the plugin SURFACE, seeds credentials into the daemon config, and
package/cli/init.mjs CHANGED
@@ -97,11 +97,26 @@ export async function runInit(argv = [], deps = {}) {
97
97
 
98
98
  io.log(`[chorus agents add] Configuring: ${selectedIds.join(", ")}`);
99
99
 
100
+ // Resolve adapters once: update-intent detection and per-agent steps must see
101
+ // the same adapter instances/state readers.
102
+ const adapters = new Map();
103
+ for (const agentId of selectedIds) {
104
+ adapters.set(agentId, await getAdapter(agentId));
105
+ }
106
+ const updateInstalled = await resolveUpdateInstalled({
107
+ selectedIds,
108
+ adapters,
109
+ flags,
110
+ env,
111
+ io,
112
+ });
113
+ const resolvedFlags = { ...flags, updateInstalled };
114
+
100
115
  const steps = await orderedSteps();
101
116
  // `ctxExtras` lets a caller/test inject step-context collaborators (e.g. a
102
117
  // fake credential validator or command runner) so an end-to-end run is
103
118
  // hermetic; production passes none and steps use their real defaults.
104
- const baseCtx = { selection: selectedIds, flags, io, env, backup, ...(deps.ctxExtras ?? {}) };
119
+ const baseCtx = { selection: selectedIds, flags: resolvedFlags, io, env, backup, ...(deps.ctxExtras ?? {}) };
105
120
  /** @type {import("./init/contracts.mjs").StepOutcome[]} */
106
121
  const outcomes = [];
107
122
 
@@ -109,7 +124,7 @@ export async function runInit(argv = [], deps = {}) {
109
124
  try {
110
125
  if (step.scope === STEP_SCOPES.PER_AGENT) {
111
126
  for (const agentId of selectedIds) {
112
- const adapter = await getAdapter(agentId);
127
+ const adapter = adapters.get(agentId);
113
128
  outcomes.push(await step.run({ ...baseCtx, agentId, adapter }));
114
129
  }
115
130
  } else {
@@ -129,6 +144,36 @@ export async function runInit(argv = [], deps = {}) {
129
144
  return outcomes.flat().some(isFailureOutcome) ? 1 : 0;
130
145
  }
131
146
 
147
+ /**
148
+ * Resolve one installed-plugin update decision for the whole invocation.
149
+ * Unsupported/guided adapters and selected adapters without an installed
150
+ * Chorus payload do not trigger the question. `--yes` and non-TTY runs accept
151
+ * automatically; an interactive answer defaults to no.
152
+ */
153
+ export async function resolveUpdateInstalled({ selectedIds, adapters, flags, env, io }) {
154
+ let anyInstalled = false;
155
+ for (const agentId of selectedIds) {
156
+ const adapter = adapters.get(agentId);
157
+ if (!adapter || typeof adapter.readInstallState !== "function") continue;
158
+ try {
159
+ const profile = flags.dshProfile ?? env.CHORUS_DSH_PROFILE;
160
+ const state = await adapter.readInstallState({ env, profile });
161
+ if (state?.supported === true && state?.pluginInstalled === true) {
162
+ anyInstalled = true;
163
+ break;
164
+ }
165
+ } catch {
166
+ // State probes are advisory and read-only. A broken probe must not block
167
+ // normal repair/install work; the installer will report its own outcome.
168
+ }
169
+ }
170
+ if (!anyInstalled) return false;
171
+ if (flags.yes || !io.isTTY) return true;
172
+ if (typeof io.ask !== "function") return false;
173
+ const answer = String(await io.ask("Update installed Chorus plugins to the latest available versions? [y/N] ")).trim();
174
+ return /^(?:y|yes)$/i.test(answer);
175
+ }
176
+
132
177
  /** Print the per-outcome summary table. */
133
178
  export function summarize(outcomes, io, selectedIds = []) {
134
179
  io.log("");
@@ -222,6 +222,7 @@ export function pickNewSessionId(before, after) {
222
222
  export class KiroSpawner {
223
223
  /** @param {KiroSpawnerOptions} [opts] */
224
224
  constructor(opts = {}) {
225
+ this.sessionDecision = { probeIsAuthoritative: false };
225
226
  this.kiroPath = opts.kiroPath ?? null;
226
227
  this.spawnImpl = opts.spawnImpl ?? spawn;
227
228
  this.logger = opts.logger ?? NOOP_LOGGER;