@chorus-aidlc/chorus 0.13.2 → 0.14.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 (714) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +485 -409
  3. package/.next/standalone/.next/app-path-routes-manifest.json +30 -27
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +36 -36
  6. package/.next/standalone/.next/react-loadable-manifest.json +1 -1
  7. package/.next/standalone/.next/routes-manifest.json +16 -0
  8. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
  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 +1 -1
  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 +1 -1
  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.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/_not-found.html +122 -1
  54. package/.next/standalone/.next/server/app/_not-found.rsc +18 -16
  55. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page.js +2 -2
  56. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/admin/companies/new/page.js +1 -1
  59. package/.next/standalone/.next/server/app/admin/companies/new/page.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/admin/companies/new.html +122 -1
  62. package/.next/standalone/.next/server/app/admin/companies/new.rsc +25 -23
  63. package/.next/standalone/.next/server/app/admin/companies/page.js +1 -1
  64. package/.next/standalone/.next/server/app/admin/companies/page.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/admin/companies.html +122 -1
  67. package/.next/standalone/.next/server/app/admin/companies.rsc +25 -23
  68. package/.next/standalone/.next/server/app/admin/page.js +1 -1
  69. package/.next/standalone/.next/server/app/admin/page.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/admin.html +122 -1
  72. package/.next/standalone/.next/server/app/admin.rsc +25 -23
  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_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/admin/login/route.js +1 -1
  76. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/admin/session/route.js +1 -1
  78. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
  80. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  83. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/auth/callback/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/auth/check-default/route.js +1 -1
  91. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/auth/company-oidc/route.js +1 -1
  93. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/auth/identify/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/auth/me/route.js +1 -1
  100. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
  102. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
  104. package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
  108. package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
  109. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
  111. package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
  112. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
  114. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
  117. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
  118. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
  120. package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
  121. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
  123. package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
  124. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
  126. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
  127. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
  129. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
  130. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
  132. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
  133. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
  135. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
  136. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
  138. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
  139. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
  141. package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
  142. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
  145. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
  148. package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +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 +1 -1
  151. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  152. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.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.js.nft.json +1 -1
  156. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  158. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  161. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  162. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
  164. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
  165. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  168. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  170. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  171. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js +1 -0
  173. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js.nft.json +1 -0
  174. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -0
  175. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
  176. package/.next/standalone/.next/server/app/api/ideas/conversational/route.js.nft.json +1 -1
  177. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/mcp/route.js +6 -6
  179. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  180. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  182. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  183. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
  185. package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
  186. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
  188. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
  189. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
  191. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
  192. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  193. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
  194. package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
  195. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
  197. package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  200. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  201. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  202. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
  203. package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
  204. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  205. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  207. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  208. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  210. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  211. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  213. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  214. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  215. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  216. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  217. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  218. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  219. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  221. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  223. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
  224. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
  225. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  226. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  227. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  228. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  229. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  230. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  231. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  232. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  233. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  234. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.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_client-reference-manifest.js +1 -1
  237. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  238. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/api/references/[uuid]/route.js +1 -0
  241. package/.next/standalone/.next/server/app/api/references/[uuid]/route.js.nft.json +1 -0
  242. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -0
  243. package/.next/standalone/.next/server/app/api/references/route.js +1 -0
  244. package/.next/standalone/.next/server/app/api/references/route.js.nft.json +1 -0
  245. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -0
  246. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  247. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  249. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  250. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  251. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  252. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  253. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  254. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  255. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  256. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  258. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +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.js.nft.json +1 -1
  262. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  263. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  264. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  265. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  266. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  267. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  268. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  269. package/.next/standalone/.next/server/app/index.html +122 -1
  270. package/.next/standalone/.next/server/app/index.rsc +22 -20
  271. package/.next/standalone/.next/server/app/login/admin/page.js +2 -2
  272. package/.next/standalone/.next/server/app/login/admin/page.js.nft.json +1 -1
  273. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  274. package/.next/standalone/.next/server/app/login/admin.html +122 -1
  275. package/.next/standalone/.next/server/app/login/admin.rsc +22 -20
  276. package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
  277. package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +1 -1
  278. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  279. package/.next/standalone/.next/server/app/login/callback.html +122 -1
  280. package/.next/standalone/.next/server/app/login/callback.rsc +22 -20
  281. package/.next/standalone/.next/server/app/login/page.js +2 -2
  282. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  283. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  284. package/.next/standalone/.next/server/app/login/pick-workspace/page.js +2 -2
  285. package/.next/standalone/.next/server/app/login/pick-workspace/page.js.nft.json +1 -1
  286. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  287. package/.next/standalone/.next/server/app/login/pick-workspace.html +122 -1
  288. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +22 -20
  289. package/.next/standalone/.next/server/app/login.html +122 -1
  290. package/.next/standalone/.next/server/app/login.rsc +22 -20
  291. package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
  292. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  293. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  294. package/.next/standalone/.next/server/app/onboarding.html +122 -1
  295. package/.next/standalone/.next/server/app/onboarding.rsc +22 -20
  296. package/.next/standalone/.next/server/app/page.js +2 -2
  297. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  298. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  299. package/.next/standalone/.next/server/app/projects.html +122 -1
  300. package/.next/standalone/.next/server/app/projects.rsc +25 -23
  301. package/.next/standalone/.next/server/app/settings.html +122 -1
  302. package/.next/standalone/.next/server/app/settings.rsc +25 -23
  303. package/.next/standalone/.next/server/app-paths-manifest.json +30 -27
  304. package/.next/standalone/.next/server/chunks/1114.js +1 -0
  305. package/.next/standalone/.next/server/chunks/1173.js +1 -0
  306. package/.next/standalone/.next/server/chunks/1286.js +32 -0
  307. package/.next/standalone/.next/server/chunks/1559.js +2 -2
  308. package/.next/standalone/.next/server/chunks/2382.js +1 -0
  309. package/.next/standalone/.next/server/chunks/2463.js +1 -0
  310. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  311. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  312. package/.next/standalone/.next/server/chunks/3219.js +1 -1
  313. package/.next/standalone/.next/server/chunks/3419.js +1 -1
  314. package/.next/standalone/.next/server/chunks/{8322.js → 378.js} +125 -2
  315. package/.next/standalone/.next/server/chunks/4545.js +1 -0
  316. package/.next/standalone/.next/server/chunks/{5957.js → 4797.js} +1 -1
  317. package/.next/standalone/.next/server/chunks/4827.js +1 -1
  318. package/.next/standalone/.next/server/chunks/{1343.js → 5201.js} +2 -2
  319. package/.next/standalone/.next/server/chunks/5245.js +1 -0
  320. package/.next/standalone/.next/server/chunks/5300.js +1 -1
  321. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  322. package/.next/standalone/.next/server/chunks/6207.js +1 -1
  323. package/.next/standalone/.next/server/chunks/6396.js +1 -0
  324. package/.next/standalone/.next/server/chunks/{796.js → 6492.js} +10 -10
  325. package/.next/standalone/.next/server/chunks/{8577.js → 6506.js} +3 -3
  326. package/.next/standalone/.next/server/chunks/6515.js +6 -0
  327. package/.next/standalone/.next/server/chunks/6646.js +1 -0
  328. package/.next/standalone/.next/server/chunks/679.js +1 -1
  329. package/.next/standalone/.next/server/chunks/7091.js +1 -0
  330. package/.next/standalone/.next/server/chunks/7364.js +1 -1
  331. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  332. package/.next/standalone/.next/server/chunks/7530.js +1 -0
  333. package/.next/standalone/.next/server/chunks/7635.js +1 -0
  334. package/.next/standalone/.next/server/chunks/7762.js +1 -0
  335. package/.next/standalone/.next/server/chunks/8062.js +1 -0
  336. package/.next/standalone/.next/server/chunks/8204.js +1 -0
  337. package/.next/standalone/.next/server/chunks/8396.js +1 -0
  338. package/.next/standalone/.next/server/chunks/8454.js +1 -0
  339. package/.next/standalone/.next/server/chunks/920.js +1 -1
  340. package/.next/standalone/.next/server/chunks/9213.js +1 -0
  341. package/.next/standalone/.next/server/chunks/9378.js +1 -0
  342. package/.next/standalone/.next/server/chunks/951.js +1 -0
  343. package/.next/standalone/.next/server/chunks/9979.js +1 -0
  344. package/.next/standalone/.next/server/instrumentation.js +1 -1
  345. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  346. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  347. package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  348. package/.next/standalone/.next/server/pages/404.html +122 -1
  349. package/.next/standalone/.next/server/pages/500.html +1 -1
  350. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  351. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  352. package/.next/standalone/.next/static/C9o43aSSZ0ebgki6mQ0-b/_buildManifest.js +1 -0
  353. package/.next/standalone/.next/static/chunks/11595.7784dfe509c100a4.js +1 -0
  354. package/.next/standalone/.next/static/chunks/{58037-55d7422c6b808356.js → 14655-4f3bc7f3044c42c1.js} +1 -1
  355. package/.next/standalone/.next/static/chunks/{15183-5734d279b26e9414.js → 15183-3f43af926186f7ef.js} +2 -2
  356. package/.next/standalone/.next/static/chunks/21188-43211c9e40bf0d63.js +10 -0
  357. package/.next/standalone/.next/static/chunks/21932-bce5ba937d1603e1.js +1 -0
  358. package/.next/standalone/.next/static/chunks/24537-ef5b301140cf3a58.js +1 -0
  359. package/.next/standalone/.next/static/chunks/27030-3ae1d0e29245b23e.js +1 -0
  360. package/.next/standalone/.next/static/chunks/27290-2f874213668491c8.js +124 -0
  361. package/.next/standalone/.next/static/chunks/28680-dff79c4467712199.js +1 -0
  362. package/.next/standalone/.next/static/chunks/32331-87ae9bc7517c7947.js +1 -0
  363. package/.next/standalone/.next/static/chunks/33456.3bd7ba05bd39259b.js +1 -0
  364. package/.next/standalone/.next/static/chunks/37985-e4683195e4ca2519.js +1 -0
  365. package/.next/standalone/.next/static/chunks/38366.e6e0132b8ba873d6.js +1 -0
  366. package/.next/standalone/.next/static/chunks/38526-7ffc4b7351c15bc4.js +1 -0
  367. package/.next/standalone/.next/static/chunks/39025-13049f9c48e08d6c.js +1 -0
  368. package/.next/standalone/.next/static/chunks/42605-029b5426175cdee9.js +1 -0
  369. package/.next/standalone/.next/static/chunks/43111-7a4e08dc82bb3022.js +1 -0
  370. package/.next/standalone/.next/static/chunks/4860.4803e40814d50dd0.js +1 -0
  371. package/.next/standalone/.next/static/chunks/4939-ff22e2b42ad57f7f.js +1 -0
  372. package/.next/standalone/.next/static/chunks/51603-7fa00971493ae223.js +1 -0
  373. package/.next/standalone/.next/static/chunks/78917-c0a9a11fe437a752.js +1 -0
  374. package/.next/standalone/.next/static/chunks/83285-db8ae107944eb6df.js +1 -0
  375. package/.next/standalone/.next/static/chunks/84169-5beb288902aea242.js +1 -0
  376. package/.next/standalone/.next/static/chunks/84219-09970ab1b85c61f0.js +1 -0
  377. package/.next/standalone/.next/static/chunks/86155-c9b7c2c08d3fa80e.js +1 -0
  378. package/.next/standalone/.next/static/chunks/{27378-9328bcc96ae9872e.js → 87325-dc3239012edcacdc.js} +1 -1
  379. package/.next/standalone/.next/static/chunks/89836-b5ab6a0b32c54f42.js +1 -0
  380. package/.next/standalone/.next/static/chunks/93346-1d4cd71b8713a8a6.js +1 -0
  381. package/.next/standalone/.next/static/chunks/94170-fb8ea86f938a27a5.js +1 -0
  382. package/.next/standalone/.next/static/chunks/99373.0457580c532530bc.js +1 -0
  383. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-00ff2f6753bb4603.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-5824e6affe244f83.js +1 -0
  385. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-55ce87d16bc689f3.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-e5202e9b7669576c.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-d9323dc8b6c974f7.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-c231207c3674aa54.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-20054b1cec8ed1d2.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-c83c5d1b4599e737.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-7bcaa11ee24b5754.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-7948aa8db4813091.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-278d30ee1dd7e315.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-5a22db5f8504e61d.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-47a17dbadfbc75ad.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-7fbf5bc58d3dd5b0.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/admin/companies/[uuid]/page-b2458ed001dc8177.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/admin/companies/new/page-e35dce890d6dfd8d.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/admin/layout-c66ce38cbd88982a.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-55ce87d16bc689f3.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-55ce87d16bc689f3.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-55ce87d16bc689f3.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-55ce87d16bc689f3.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-55ce87d16bc689f3.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-55ce87d16bc689f3.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-55ce87d16bc689f3.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/agents/route-55ce87d16bc689f3.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-55ce87d16bc689f3.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-55ce87d16bc689f3.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-55ce87d16bc689f3.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-55ce87d16bc689f3.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-55ce87d16bc689f3.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-55ce87d16bc689f3.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-55ce87d16bc689f3.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-55ce87d16bc689f3.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-55ce87d16bc689f3.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-55ce87d16bc689f3.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/comments/route-55ce87d16bc689f3.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-55ce87d16bc689f3.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-55ce87d16bc689f3.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-55ce87d16bc689f3.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-55ce87d16bc689f3.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-55ce87d16bc689f3.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-55ce87d16bc689f3.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-55ce87d16bc689f3.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-55ce87d16bc689f3.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-55ce87d16bc689f3.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-55ce87d16bc689f3.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-55ce87d16bc689f3.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-55ce87d16bc689f3.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-55ce87d16bc689f3.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-55ce87d16bc689f3.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-55ce87d16bc689f3.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-55ce87d16bc689f3.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/events/route-55ce87d16bc689f3.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/health/route-55ce87d16bc689f3.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-55ce87d16bc689f3.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-55ce87d16bc689f3.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-55ce87d16bc689f3.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-55ce87d16bc689f3.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-55ce87d16bc689f3.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-55ce87d16bc689f3.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-55ce87d16bc689f3.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-55ce87d16bc689f3.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/mcp/route-55ce87d16bc689f3.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-55ce87d16bc689f3.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-55ce87d16bc689f3.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-55ce87d16bc689f3.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-55ce87d16bc689f3.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-55ce87d16bc689f3.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-55ce87d16bc689f3.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/notifications/route-55ce87d16bc689f3.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-55ce87d16bc689f3.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-55ce87d16bc689f3.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-55ce87d16bc689f3.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-55ce87d16bc689f3.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-55ce87d16bc689f3.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-55ce87d16bc689f3.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-55ce87d16bc689f3.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-55ce87d16bc689f3.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-55ce87d16bc689f3.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-55ce87d16bc689f3.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-55ce87d16bc689f3.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-55ce87d16bc689f3.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-55ce87d16bc689f3.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-55ce87d16bc689f3.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-55ce87d16bc689f3.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-55ce87d16bc689f3.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-55ce87d16bc689f3.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-55ce87d16bc689f3.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/api/projects/route-55ce87d16bc689f3.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-55ce87d16bc689f3.js +1 -0
  473. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-55ce87d16bc689f3.js +1 -0
  474. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-55ce87d16bc689f3.js +1 -0
  475. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-55ce87d16bc689f3.js +1 -0
  476. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-55ce87d16bc689f3.js +1 -0
  477. package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-55ce87d16bc689f3.js +1 -0
  478. package/.next/standalone/.next/static/chunks/app/api/references/route-55ce87d16bc689f3.js +1 -0
  479. package/.next/standalone/.next/static/chunks/app/api/search/route-55ce87d16bc689f3.js +1 -0
  480. package/.next/standalone/.next/static/chunks/app/api/session/route-55ce87d16bc689f3.js +1 -0
  481. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-55ce87d16bc689f3.js +1 -0
  482. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-55ce87d16bc689f3.js +1 -0
  483. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-55ce87d16bc689f3.js +1 -0
  484. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-55ce87d16bc689f3.js +1 -0
  485. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-55ce87d16bc689f3.js +1 -0
  486. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-55ce87d16bc689f3.js +1 -0
  487. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-55ce87d16bc689f3.js +1 -0
  488. package/.next/standalone/.next/static/chunks/app/layout-985054e973f66999.js +1 -0
  489. package/.next/standalone/.next/static/chunks/app/login/admin/page-f032b6db3bd20a2c.js +1 -0
  490. package/.next/standalone/.next/static/chunks/app/login/callback/page-ec23211506e688ee.js +1 -0
  491. package/.next/standalone/.next/static/chunks/app/login/page-9b34375d1b5579d7.js +1 -0
  492. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-7e4664af2c787d08.js +1 -0
  493. package/.next/standalone/.next/static/chunks/app/onboarding/{page-8e20c8aa8ff90326.js → page-ece3f647133d446e.js} +1 -1
  494. package/.next/standalone/.next/static/chunks/app/page-79e2d32e69788bd2.js +1 -0
  495. package/.next/standalone/.next/static/chunks/webpack-96be8d6bd0d3d25f.js +1 -0
  496. package/.next/standalone/.next/static/css/5f09fa856a63632f.css +1 -0
  497. package/.next/standalone/package.json +4 -1
  498. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  499. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  500. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +8 -1
  501. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  502. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +32 -1
  503. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  504. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  505. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  506. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  507. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
  508. package/.next/standalone/public/install-kiro.sh +350 -0
  509. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-code-reviewer.json +10 -0
  510. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-proposal-reviewer.json +10 -0
  511. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-task-reviewer.json +10 -0
  512. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus.json +50 -0
  513. package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus.md +62 -0
  514. package/.next/standalone/public/kiro-plugin/.kiro/settings/mcp.json +12 -0
  515. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +158 -0
  516. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +421 -0
  517. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +332 -0
  518. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +434 -0
  519. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +386 -0
  520. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +193 -0
  521. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +360 -0
  522. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +547 -0
  523. package/.next/standalone/public/kiro-plugin/.kiro/steering/chorus.md +391 -0
  524. package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +392 -0
  525. package/.next/standalone/public/kiro-plugin/bin/on-agent-spawn.sh +81 -0
  526. package/.next/standalone/public/kiro-plugin/bin/on-post-submit-for-verify.sh +68 -0
  527. package/.next/standalone/public/kiro-plugin/bin/on-post-submit-proposal.sh +76 -0
  528. package/.next/standalone/public/kiro-plugin/bin/on-post-verify-task.sh +119 -0
  529. package/.next/standalone/public/kiro-plugin/bin/on-stop.sh +45 -0
  530. package/.next/standalone/public/kiro-plugin/bin/test-syntax.sh +108 -0
  531. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  532. package/.next/standalone/public/skill/chorus/SKILL.md +8 -1
  533. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
  534. package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
  535. package/.next/standalone/public/skill/idea-chorus/SKILL.md +32 -1
  536. package/.next/standalone/public/skill/package.json +1 -1
  537. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +2 -1
  538. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  539. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  540. package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
  541. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  542. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
  543. package/README.ja.md +464 -0
  544. package/README.ko.md +463 -0
  545. package/README.md +8 -3
  546. package/README.zh.md +8 -3
  547. package/chorus.mjs +4 -0
  548. package/cli/client-args.mjs +19 -8
  549. package/cli/codex-session-map.mjs +9 -79
  550. package/cli/daemon-agent.mjs +12 -7
  551. package/cli/daemon-config.mjs +2 -2
  552. package/cli/daemon-install-config.mjs +213 -0
  553. package/cli/daemon-service.mjs +12 -7
  554. package/cli/daemon.mjs +68 -9
  555. package/cli/kiro-session-map.mjs +49 -0
  556. package/cli/kiro-spawner.mjs +409 -0
  557. package/cli/kiro-transcript.mjs +262 -0
  558. package/cli/prompts.mjs +19 -2
  559. package/cli/session-map.mjs +126 -0
  560. package/cli/spawner-select.mjs +7 -1
  561. package/cli/waker.mjs +18 -3
  562. package/package.json +4 -1
  563. package/prisma/migrations/20260710171801_add_reference_artifact/migration.sql +27 -0
  564. package/prisma/migrations/20260714091007_add_daemon_execution_direct_idea/migration.sql +2 -0
  565. package/prisma/schema.prisma +33 -0
  566. package/.next/standalone/.next/server/chunks/1463.js +0 -1
  567. package/.next/standalone/.next/server/chunks/1512.js +0 -1
  568. package/.next/standalone/.next/server/chunks/3371.js +0 -1
  569. package/.next/standalone/.next/server/chunks/3373.js +0 -1
  570. package/.next/standalone/.next/server/chunks/4958.js +0 -1
  571. package/.next/standalone/.next/server/chunks/5011.js +0 -1
  572. package/.next/standalone/.next/server/chunks/5631.js +0 -1
  573. package/.next/standalone/.next/server/chunks/6496.js +0 -1
  574. package/.next/standalone/.next/server/chunks/6817.js +0 -1
  575. package/.next/standalone/.next/server/chunks/704.js +0 -31
  576. package/.next/standalone/.next/server/chunks/7160.js +0 -1
  577. package/.next/standalone/.next/server/chunks/8448.js +0 -1
  578. package/.next/standalone/.next/server/chunks/8551.js +0 -1
  579. package/.next/standalone/.next/server/chunks/9516.js +0 -1
  580. package/.next/standalone/.next/server/chunks/9855.js +0 -6
  581. package/.next/standalone/.next/static/CIg9Mtv4fKIeKqPY5Rczv/_buildManifest.js +0 -1
  582. package/.next/standalone/.next/static/chunks/16467-dd4f928e725306c1.js +0 -1
  583. package/.next/standalone/.next/static/chunks/1892-9c03d4d3560ff572.js +0 -1
  584. package/.next/standalone/.next/static/chunks/225-7b0507c29df705f1.js +0 -1
  585. package/.next/standalone/.next/static/chunks/24459-3bc9657d71c77b47.js +0 -1
  586. package/.next/standalone/.next/static/chunks/38366.62260b57e5f4b09d.js +0 -1
  587. package/.next/standalone/.next/static/chunks/46055-f786ace4b994dc40.js +0 -1
  588. package/.next/standalone/.next/static/chunks/4860.18e9c1a01636e309.js +0 -1
  589. package/.next/standalone/.next/static/chunks/52064-74d81c8d682deb6b.js +0 -1
  590. package/.next/standalone/.next/static/chunks/57362-9ece5cc290dab705.js +0 -1
  591. package/.next/standalone/.next/static/chunks/63820-551bca4e19d0119c.js +0 -1
  592. package/.next/standalone/.next/static/chunks/64187-cff8a4b5e96fa8f9.js +0 -10
  593. package/.next/standalone/.next/static/chunks/68255-05c42a26602c6b37.js +0 -1
  594. package/.next/standalone/.next/static/chunks/71350-88c2649fc693c1e8.js +0 -1
  595. package/.next/standalone/.next/static/chunks/75752-cc8fafe132943baa.js +0 -1
  596. package/.next/standalone/.next/static/chunks/80350-20c953d484f262ff.js +0 -1
  597. package/.next/standalone/.next/static/chunks/84169-71a87d06871ec9df.js +0 -1
  598. package/.next/standalone/.next/static/chunks/89644-2fee0373b890e8e3.js +0 -1
  599. package/.next/standalone/.next/static/chunks/93346-b3e1ebe948fc623f.js +0 -1
  600. package/.next/standalone/.next/static/chunks/94743-aff8a51a7f7970a9.js +0 -1
  601. package/.next/standalone/.next/static/chunks/96752-ad15cc38599f12e2.js +0 -1
  602. package/.next/standalone/.next/static/chunks/97306-8834e12cdbeed920.js +0 -1
  603. package/.next/standalone/.next/static/chunks/99373.c4a36dcd46ec841e.js +0 -1
  604. package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-a3747bde1ddaba52.js +0 -1
  605. package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-87b79c98e46fbd04.js +0 -1
  606. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-47e1d397c5fcef9e.js +0 -1
  607. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-b2db3da2d7945904.js +0 -1
  608. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-0467d744b84aa2c2.js +0 -1
  609. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-7abff55f9bfebab3.js +0 -1
  610. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-b3b2b2ba3d60893e.js +0 -1
  611. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-0aff1fa7a814188c.js +0 -1
  612. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6dbfbe5d97855e42.js +0 -1
  613. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-b8fbcac7224342db.js +0 -1
  614. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-0a04a31e1b383094.js +0 -1
  615. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-e2a69b645ec9ae13.js +0 -1
  616. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-b760877bfcd12dff.js +0 -1
  617. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-111aed4d3319d64b.js +0 -1
  618. package/.next/standalone/.next/static/chunks/app/admin/companies/[uuid]/page-cc2fe0c5b749cd2f.js +0 -1
  619. package/.next/standalone/.next/static/chunks/app/admin/companies/new/page-4f3b3c449c61f6d2.js +0 -1
  620. package/.next/standalone/.next/static/chunks/app/admin/layout-50c9b40750f734be.js +0 -1
  621. package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  622. package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-47e1d397c5fcef9e.js +0 -1
  623. package/.next/standalone/.next/static/chunks/app/api/admin/login/route-47e1d397c5fcef9e.js +0 -1
  624. package/.next/standalone/.next/static/chunks/app/api/admin/session/route-47e1d397c5fcef9e.js +0 -1
  625. package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-47e1d397c5fcef9e.js +0 -1
  626. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  627. package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-47e1d397c5fcef9e.js +0 -1
  628. package/.next/standalone/.next/static/chunks/app/api/agents/route-47e1d397c5fcef9e.js +0 -1
  629. package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  630. package/.next/standalone/.next/static/chunks/app/api/api-keys/route-47e1d397c5fcef9e.js +0 -1
  631. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-47e1d397c5fcef9e.js +0 -1
  632. package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-47e1d397c5fcef9e.js +0 -1
  633. package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-47e1d397c5fcef9e.js +0 -1
  634. package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-47e1d397c5fcef9e.js +0 -1
  635. package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-47e1d397c5fcef9e.js +0 -1
  636. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-47e1d397c5fcef9e.js +0 -1
  637. package/.next/standalone/.next/static/chunks/app/api/auth/me/route-47e1d397c5fcef9e.js +0 -1
  638. package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-47e1d397c5fcef9e.js +0 -1
  639. package/.next/standalone/.next/static/chunks/app/api/comments/route-47e1d397c5fcef9e.js +0 -1
  640. package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-47e1d397c5fcef9e.js +0 -1
  641. package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-47e1d397c5fcef9e.js +0 -1
  642. package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-47e1d397c5fcef9e.js +0 -1
  643. package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-47e1d397c5fcef9e.js +0 -1
  644. package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-47e1d397c5fcef9e.js +0 -1
  645. package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-47e1d397c5fcef9e.js +0 -1
  646. package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-47e1d397c5fcef9e.js +0 -1
  647. package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-47e1d397c5fcef9e.js +0 -1
  648. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-47e1d397c5fcef9e.js +0 -1
  649. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-47e1d397c5fcef9e.js +0 -1
  650. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-47e1d397c5fcef9e.js +0 -1
  651. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-47e1d397c5fcef9e.js +0 -1
  652. package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-47e1d397c5fcef9e.js +0 -1
  653. package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  654. package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-47e1d397c5fcef9e.js +0 -1
  655. package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-47e1d397c5fcef9e.js +0 -1
  656. package/.next/standalone/.next/static/chunks/app/api/events/route-47e1d397c5fcef9e.js +0 -1
  657. package/.next/standalone/.next/static/chunks/app/api/health/route-47e1d397c5fcef9e.js +0 -1
  658. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-47e1d397c5fcef9e.js +0 -1
  659. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-47e1d397c5fcef9e.js +0 -1
  660. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-47e1d397c5fcef9e.js +0 -1
  661. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-47e1d397c5fcef9e.js +0 -1
  662. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-47e1d397c5fcef9e.js +0 -1
  663. package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  664. package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-47e1d397c5fcef9e.js +0 -1
  665. package/.next/standalone/.next/static/chunks/app/api/mcp/route-47e1d397c5fcef9e.js +0 -1
  666. package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-47e1d397c5fcef9e.js +0 -1
  667. package/.next/standalone/.next/static/chunks/app/api/mentionables/route-47e1d397c5fcef9e.js +0 -1
  668. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-47e1d397c5fcef9e.js +0 -1
  669. package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-47e1d397c5fcef9e.js +0 -1
  670. package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-47e1d397c5fcef9e.js +0 -1
  671. package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-47e1d397c5fcef9e.js +0 -1
  672. package/.next/standalone/.next/static/chunks/app/api/notifications/route-47e1d397c5fcef9e.js +0 -1
  673. package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-47e1d397c5fcef9e.js +0 -1
  674. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-47e1d397c5fcef9e.js +0 -1
  675. package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  676. package/.next/standalone/.next/static/chunks/app/api/project-groups/route-47e1d397c5fcef9e.js +0 -1
  677. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-47e1d397c5fcef9e.js +0 -1
  678. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-47e1d397c5fcef9e.js +0 -1
  679. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-47e1d397c5fcef9e.js +0 -1
  680. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-47e1d397c5fcef9e.js +0 -1
  681. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-47e1d397c5fcef9e.js +0 -1
  682. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-47e1d397c5fcef9e.js +0 -1
  683. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-47e1d397c5fcef9e.js +0 -1
  684. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-47e1d397c5fcef9e.js +0 -1
  685. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-47e1d397c5fcef9e.js +0 -1
  686. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-47e1d397c5fcef9e.js +0 -1
  687. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  688. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-47e1d397c5fcef9e.js +0 -1
  689. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-47e1d397c5fcef9e.js +0 -1
  690. package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-47e1d397c5fcef9e.js +0 -1
  691. package/.next/standalone/.next/static/chunks/app/api/projects/route-47e1d397c5fcef9e.js +0 -1
  692. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-47e1d397c5fcef9e.js +0 -1
  693. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-47e1d397c5fcef9e.js +0 -1
  694. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-47e1d397c5fcef9e.js +0 -1
  695. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-47e1d397c5fcef9e.js +0 -1
  696. package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  697. package/.next/standalone/.next/static/chunks/app/api/search/route-47e1d397c5fcef9e.js +0 -1
  698. package/.next/standalone/.next/static/chunks/app/api/session/route-47e1d397c5fcef9e.js +0 -1
  699. package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  700. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-47e1d397c5fcef9e.js +0 -1
  701. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-47e1d397c5fcef9e.js +0 -1
  702. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-47e1d397c5fcef9e.js +0 -1
  703. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-47e1d397c5fcef9e.js +0 -1
  704. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-47e1d397c5fcef9e.js +0 -1
  705. package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-47e1d397c5fcef9e.js +0 -1
  706. package/.next/standalone/.next/static/chunks/app/layout-e3a49e06950a057f.js +0 -1
  707. package/.next/standalone/.next/static/chunks/app/login/admin/page-d470135f7aab6c5e.js +0 -1
  708. package/.next/standalone/.next/static/chunks/app/login/callback/page-39a43f6d0245f8ca.js +0 -1
  709. package/.next/standalone/.next/static/chunks/app/login/page-acda3a31dc6a8280.js +0 -1
  710. package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-10683852baf17426.js +0 -1
  711. package/.next/standalone/.next/static/chunks/app/page-000b1349c8d5b652.js +0 -1
  712. package/.next/standalone/.next/static/chunks/webpack-3551a4c7f9bfe638.js +0 -1
  713. package/.next/standalone/.next/static/css/a80bf83b9122bfc5.css +0 -1
  714. /package/.next/standalone/.next/static/{CIg9Mtv4fKIeKqPY5Rczv → C9o43aSSZ0ebgki6mQ0-b}/_ssgManifest.js +0 -0
@@ -0,0 +1,409 @@
1
+ // cli/kiro-spawner.mjs
2
+ // Cross-platform headless Amazon Kiro CLI spawner — the `kiro` counterpart to
3
+ // ClaudeSpawner / CodexSpawner, satisfying the SAME backend-agnostic
4
+ // Spawner.wake(...) contract so the daemon's wake pipeline (queue, waker,
5
+ // directed delivery, headless guard, reporters) stays backend-neutral.
6
+ //
7
+ // Kiro diverges from BOTH Claude and Codex (verified against kiro-cli 2.12.1 +
8
+ // the live CLI/store on this host):
9
+ // • `kiro-cli chat --no-interactive` runs a headless turn; the prompt is read
10
+ // from STDIN (never argv). It runs under the `chorus` agent profile
11
+ // (`--agent chorus`) so the woken session loads the Kiro plugin's Chorus MCP
12
+ // server + AI-DLC skills + steering (parity with an interactive plugin user).
13
+ // • Kiro GENERATES its own per-cwd `sessionId` (like Codex's thread_id, unlike
14
+ // Claude's client-supplied --session-id) — BUT there is NO id-bearing stream
15
+ // event (Kiro emits plain text/markdown on stdout; `--format json` is
16
+ // list-commands-only). So we capture the id POST-RUN by diffing the session
17
+ // store, and persist anchor→sessionId (kiro-session-map.mjs) so a later wake
18
+ // can `--resume-id <sessionId>`.
19
+ // • No `--mcp-config`: MCP comes from the plugin's .kiro/settings/mcp.json
20
+ // (loaded via --agent chorus), which references ${env:CHORUS_API_KEY}; the
21
+ // daemon key reaches it via that env var — never argv.
22
+ // • Permission is a TOOL-TRUST posture (--trust-all-tools / --trust-tools=…),
23
+ // not a sandbox mode and not a per-tool allowlist.
24
+ //
25
+ // Transcript capture (task 4) is layered on top: this spawner reads the session
26
+ // store for the run's sessionId post-run and, if a `reconstructTranscript` hook is
27
+ // injected, feeds the reconstructed entries to `onMessage`; otherwise it is a
28
+ // no-op here (this task owns spawn/resume/trust/interrupt + sessionId capture).
29
+
30
+ import { spawn } from "node:child_process";
31
+ import { readdirSync, readFileSync, statSync } from "node:fs";
32
+ import { homedir } from "node:os";
33
+ import { win32 as pathWin32, posix as pathPosix, join } from "node:path";
34
+ import { getSessionId as defaultGetSessionId, setSessionId as defaultSetSessionId } from "./kiro-session-map.mjs";
35
+ import { reconstructTranscript as defaultReconstructTranscript } from "./kiro-transcript.mjs";
36
+
37
+ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
38
+
39
+ /** Directory Kiro persists its CLI session store under (per-cwd conversations). */
40
+ export function kiroSessionsDir() {
41
+ return join(homedir(), ".kiro", "sessions", "cli");
42
+ }
43
+
44
+ /**
45
+ * Map the daemon's backend-agnostic permission mode to a Kiro tool-trust posture.
46
+ * A headless turn can never answer an approval prompt, so trust must be granted
47
+ * upfront:
48
+ * yolo → --trust-all-tools (full autonomy for code-writing work)
49
+ * chorus → --trust-tools=fs_read,@chorus (read-only filesystem + the Chorus
50
+ * MCP server's tools; no shell exec / file writes). MCP tools are
51
+ * namespaced by server in Kiro, so `@chorus` trusts the whole Chorus
52
+ * server (verified against the plugin's agent def — matcher `@chorus`).
53
+ * Anything other than yolo falls back to the restricted posture.
54
+ * @param {"yolo"|"chorus"|undefined} permissionMode
55
+ * @returns {string[]}
56
+ */
57
+ export function trustFlags(permissionMode) {
58
+ if (permissionMode === "yolo") return ["--trust-all-tools"];
59
+ return ["--trust-tools=fs_read,@chorus"];
60
+ }
61
+
62
+ /**
63
+ * Build the argv for a headless kiro-cli run. Prompt is NEVER here — it goes over
64
+ * stdin. Runs under the `chorus` agent profile on the default v2 engine (no
65
+ * `--v3`). A resume passes the recorded sessionId via `--resume-id`.
66
+ * @param {{ isNew: boolean, sessionId?: string|null, permissionMode?: "yolo"|"chorus" }} o
67
+ * @returns {string[]}
68
+ */
69
+ export function buildKiroArgs({ isNew, sessionId, permissionMode }) {
70
+ const trust = trustFlags(permissionMode);
71
+ const base = ["chat", "--no-interactive", "--agent", "chorus", ...trust];
72
+ if (!isNew && sessionId) {
73
+ return ["chat", "--no-interactive", "--resume-id", sessionId, "--agent", "chorus", ...trust];
74
+ }
75
+ return base;
76
+ }
77
+
78
+ /**
79
+ * Resolve the real `kiro-cli` executable WITHOUT a shell — same approach as
80
+ * resolveCodexPath. On Windows the bin may be `kiro-cli.cmd` (npm shim), which
81
+ * `spawn` can't exec directly without shell:true; we walk PATH for the platform
82
+ * candidates. `CHORUS_KIRO_PATH` overrides.
83
+ * @param {{ env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform, isFile?: (p: string) => boolean }} [deps]
84
+ * @returns {string | null}
85
+ */
86
+ export function resolveKiroPath(deps = {}) {
87
+ const env = deps.env ?? process.env;
88
+ const platform = deps.platform ?? process.platform;
89
+ const isFile =
90
+ deps.isFile ??
91
+ ((p) => {
92
+ try {
93
+ return statSync(p).isFile();
94
+ } catch {
95
+ return false;
96
+ }
97
+ });
98
+
99
+ if (env.CHORUS_KIRO_PATH && isFile(env.CHORUS_KIRO_PATH)) {
100
+ return env.CHORUS_KIRO_PATH;
101
+ }
102
+
103
+ const isWin = platform === "win32";
104
+ const p = isWin ? pathWin32 : pathPosix;
105
+ const names = isWin ? ["kiro-cli.cmd", "kiro-cli.exe", "kiro-cli"] : ["kiro-cli"];
106
+ const pathVar = env.PATH || env.Path || "";
107
+ const dirs = pathVar.split(p.delimiter).filter(Boolean);
108
+ for (const dir of dirs) {
109
+ for (const name of names) {
110
+ const candidate = p.join(dir, name);
111
+ if (isFile(candidate)) return candidate;
112
+ }
113
+ }
114
+ return null;
115
+ }
116
+
117
+ /**
118
+ * Resolve the actual command + argv to spawn. On Windows a `.cmd`/`.bat` shim is
119
+ * not a PE executable, so it must run via `cmd.exe /d /s /c <path> ...args`; we
120
+ * keep shell:false and pass argv as an array (no shell word-splitting/injection).
121
+ * @param {string} kiroPath @param {string[]} args
122
+ * @param {NodeJS.Platform} [platform] @param {NodeJS.ProcessEnv} [env]
123
+ * @returns {{ command: string, argv: string[] }}
124
+ */
125
+ export function resolveSpawnCommand(kiroPath, args, platform = process.platform, env = process.env) {
126
+ const isWin = platform === "win32";
127
+ const lower = kiroPath.toLowerCase();
128
+ if (isWin && (lower.endsWith(".cmd") || lower.endsWith(".bat"))) {
129
+ const comspec = env.ComSpec || env.COMSPEC || "cmd.exe";
130
+ return { command: comspec, argv: ["/d", "/s", "/c", kiroPath, ...args] };
131
+ }
132
+ return { command: kiroPath, argv: args };
133
+ }
134
+
135
+ /**
136
+ * Snapshot the session store as a map of `sessionId → updatedAtMillis` for the
137
+ * given cwd. Kiro writes `<sessionsDir>/<sessionId>.json` metadata files carrying
138
+ * `{ session_id, cwd, updated_at, ... }`. Best-effort: any IO/parse failure yields
139
+ * an empty map (never throws) — a missed capture just means the run isn't
140
+ * resumable, logged by the caller.
141
+ * @param {string} cwd
142
+ * @param {{ dir?: string, readdir?: (d: string) => string[], read?: (p: string) => string, logger?: any }} [deps]
143
+ * @returns {Map<string, number>}
144
+ */
145
+ export function snapshotSessions(cwd, deps = {}) {
146
+ const dir = deps.dir ?? kiroSessionsDir();
147
+ const readdir = deps.readdir ?? ((d) => readdirSync(d));
148
+ const read = deps.read ?? ((p) => readFileSync(p, "utf8"));
149
+ const logger = deps.logger ?? NOOP_LOGGER;
150
+ const out = new Map();
151
+ let files;
152
+ try {
153
+ files = readdir(dir);
154
+ } catch (err) {
155
+ if (!(err && err.code === "ENOENT")) {
156
+ logger.warn(`[Chorus] kiro session snapshot: readdir failed (${err}) — treating as empty`);
157
+ }
158
+ return out;
159
+ }
160
+ for (const f of files) {
161
+ if (!f.endsWith(".json")) continue; // .jsonl / .history are not the metadata file
162
+ let meta;
163
+ try {
164
+ meta = JSON.parse(read(join(dir, f)));
165
+ } catch {
166
+ continue; // skip an unreadable/partial metadata file
167
+ }
168
+ if (!meta || typeof meta !== "object") continue;
169
+ const sid = typeof meta.session_id === "string" ? meta.session_id : f.replace(/\.json$/, "");
170
+ // Scope to this daemon's cwd so a concurrent run in a different cwd can't be
171
+ // mis-attributed. When cwd is unknown, accept all (single-path daemon).
172
+ if (cwd && typeof meta.cwd === "string" && meta.cwd !== cwd) continue;
173
+ const updated = Date.parse(meta.updated_at ?? meta.updatedAt ?? "") || 0;
174
+ out.set(sid, updated);
175
+ }
176
+ return out;
177
+ }
178
+
179
+ /**
180
+ * Decide the run's sessionId by diffing a before/after store snapshot, UNAMBIGUOUSLY.
181
+ *
182
+ * Concurrency (reviewer N1): the WakeQueue serializes wakes per idea-key but runs
183
+ * DIFFERENT keys concurrently (default maxConcurrency 4), and all keys share the
184
+ * daemon's single repo cwd — so two fresh Kiro runs can be in flight in the same
185
+ * cwd at once. A "newest new id wins" heuristic would then mis-attribute one run's
186
+ * sessionId to the other's anchor. To stay correct we require the id to be
187
+ * UNAMBIGUOUS: return the new id ONLY when EXACTLY ONE brand-new id appeared in the
188
+ * window (present in `after`, absent in `before`). If zero or several new ids
189
+ * appeared, return null — the caller degrades to "not resumable this time" (a
190
+ * missed resume is a minor efficiency loss; a wrong resume would cross-wire two
191
+ * ideas' conversations, which is a correctness bug). No "updated_at advanced"
192
+ * fallback: on a fresh run the id is always new-to-the-store; on a resume the
193
+ * caller already knows the id and never calls this.
194
+ * @param {Map<string, number>} before @param {Map<string, number>} after
195
+ * @returns {string|null}
196
+ */
197
+ export function pickNewSessionId(before, after) {
198
+ const fresh = [];
199
+ for (const sid of after.keys()) {
200
+ if (!before.has(sid)) fresh.push(sid);
201
+ }
202
+ // Exactly one new session created in this run's window → unambiguous.
203
+ return fresh.length === 1 ? fresh[0] : null;
204
+ }
205
+
206
+ /**
207
+ * @typedef {Object} KiroSpawnerOptions
208
+ * @property {string} [kiroPath] Resolved kiro-cli path (resolved lazily if omitted).
209
+ * @property {(o: object) => any} [spawnImpl] Injectable spawn (tests).
210
+ * @property {{info(m:string):void,warn(m:string):void,error(m:string):void}} [logger]
211
+ * @property {"chorus"|"yolo"} [permissionMode] Maps to a Kiro tool-trust posture.
212
+ * @property {{ url: string, apiKey: string }} [creds] Daemon creds — apiKey is exported
213
+ * into the child env as CHORUS_API_KEY (the var the plugin's .kiro/settings/mcp.json references).
214
+ * @property {NodeJS.Platform} [platform] Injectable for tests; gates POSIX `detached`.
215
+ * @property {(anchor: string) => string|null} [getSessionIdFn] Injectable session-map read.
216
+ * @property {(anchor: string, id: string) => void} [setSessionIdFn] Injectable session-map write.
217
+ * @property {(cwd: string) => Map<string, number>} [snapshotSessionsFn] Injectable store snapshot.
218
+ * @property {(o: {sessionId: string, cwd: string, onMessage?: Function, stdout: string, logger: any}) => void} [reconstructTranscript]
219
+ * Injectable transcript reconstruction (task 4) — invoked post-run; a no-op if absent.
220
+ */
221
+
222
+ export class KiroSpawner {
223
+ /** @param {KiroSpawnerOptions} [opts] */
224
+ constructor(opts = {}) {
225
+ this.kiroPath = opts.kiroPath ?? null;
226
+ this.spawnImpl = opts.spawnImpl ?? spawn;
227
+ this.logger = opts.logger ?? NOOP_LOGGER;
228
+ this.permissionMode = opts.permissionMode ?? "chorus";
229
+ this.creds = opts.creds ?? null;
230
+ this.platform = opts.platform ?? process.platform;
231
+ this.getSessionIdFn = opts.getSessionIdFn ?? defaultGetSessionId;
232
+ this.setSessionIdFn = opts.setSessionIdFn ?? defaultSetSessionId;
233
+ this.resolveKiroPathFn = opts.resolveKiroPathFn ?? resolveKiroPath;
234
+ this.snapshotSessionsFn = opts.snapshotSessionsFn ?? snapshotSessions;
235
+ // Post-run transcript reconstruction from Kiro's on-disk session store (task 4).
236
+ // Defaults to the real reader; injectable/nullable for tests.
237
+ this.reconstructTranscript =
238
+ opts.reconstructTranscript === undefined ? defaultReconstructTranscript : opts.reconstructTranscript;
239
+ }
240
+
241
+ /**
242
+ * Spawn a headless Kiro run. Resolves when the subprocess exits. The prompt is
243
+ * written to stdin (never argv). `sessionId` is the Chorus anchor (direct idea
244
+ * uuid, or entity uuid). Kiro owns its session id, so we IGNORE the passed
245
+ * `isNew`/`mcpConfigPath` and decide new-vs-resume from the persisted
246
+ * anchor→sessionId map: a recorded id → `--resume-id`, otherwise a fresh run.
247
+ *
248
+ * @param {{ prompt: string, sessionId: string|null, isNew?: boolean, mcpConfigPath?: string,
249
+ * cwd?: string, onMessage?: (obj: any) => void,
250
+ * onChild?: (child: import("node:child_process").ChildProcess) => void }} params
251
+ * @returns {Promise<{ sessionId: string, exitCode: number|null, isNew: boolean }>}
252
+ */
253
+ async wake({ prompt, sessionId, cwd, onMessage, onChild }) {
254
+ const anchor = typeof sessionId === "string" ? sessionId : "";
255
+ const runCwd = cwd ?? process.cwd();
256
+
257
+ // new-vs-resume is OWNED by this backend (Kiro session model), not the waker's
258
+ // Claude transcript probe: a recorded sessionId means resume via --resume-id.
259
+ const knownSessionId = anchor ? this.getSessionIdFn(anchor) : null;
260
+ const isNew = !knownSessionId;
261
+
262
+ const kiroPath = this.kiroPath ?? this.resolveKiroPathFn();
263
+ if (!kiroPath) {
264
+ // No crash — surface visibly and resolve with a failure result.
265
+ this.logger.error("[Chorus] cannot locate the `kiro-cli` executable on PATH; skipping wake");
266
+ return { sessionId: anchor, exitCode: null, isNew };
267
+ }
268
+
269
+ const args = buildKiroArgs({ isNew, sessionId: knownSessionId, permissionMode: this.permissionMode });
270
+ const { command, argv } = resolveSpawnCommand(kiroPath, args, this.platform);
271
+
272
+ // POSIX: detached process group so the interrupt path can group-kill the tree
273
+ // (kiro-cli forks child shells for tools). Windows uses taskkill /T. stdio
274
+ // stays piped — prompt over stdin + stdout capture are unaffected.
275
+ const detached = this.platform !== "win32";
276
+
277
+ // Daemon key via ENV as CHORUS_API_KEY — the var the plugin's
278
+ // [mcpServers.chorus] header references (${env:CHORUS_API_KEY}). NEVER argv.
279
+ // Merged over the inherited env so PATH / model auth / KIRO_* survive.
280
+ const childEnv = { ...process.env, CHORUS_DAEMON_HEADLESS: "1" };
281
+ if (this.creds && this.creds.apiKey) childEnv.CHORUS_API_KEY = this.creds.apiKey;
282
+
283
+ // Snapshot the session store BEFORE the run so we can identify the sessionId
284
+ // this run creates (Kiro has no id-bearing stream event). On resume we already
285
+ // know the id, so the snapshot is only needed for a fresh run.
286
+ const before = isNew ? this.#safeSnapshot(runCwd) : new Map();
287
+
288
+ return new Promise((resolve) => {
289
+ let child;
290
+ try {
291
+ child = this.spawnImpl(command, argv, {
292
+ cwd: runCwd,
293
+ stdio: ["pipe", "pipe", "pipe"],
294
+ env: childEnv,
295
+ shell: false,
296
+ detached,
297
+ windowsHide: true,
298
+ });
299
+ } catch (err) {
300
+ this.logger.error(`[Chorus] failed to spawn kiro-cli: ${err}`);
301
+ resolve({ sessionId: anchor, exitCode: null, isNew });
302
+ return;
303
+ }
304
+
305
+ // Hand the live child to the caller (interrupt registry) before resolving.
306
+ // Never let a throwing callback escape into the spawn path.
307
+ if (onChild) {
308
+ try {
309
+ onChild(child);
310
+ } catch (err) {
311
+ this.logger.warn(`[Chorus] onChild handler threw: ${err}`);
312
+ }
313
+ }
314
+
315
+ let stdoutBuf = "";
316
+
317
+ child.stdout?.setEncoding?.("utf8");
318
+ child.stdout?.on("data", (chunk) => {
319
+ stdoutBuf += String(chunk);
320
+ });
321
+
322
+ child.stderr?.setEncoding?.("utf8");
323
+ child.stderr?.on("data", (chunk) => {
324
+ const text = String(chunk).trim();
325
+ if (text) this.logger.warn(`[Chorus] kiro-cli stderr: ${text}`);
326
+ });
327
+
328
+ child.on("error", (err) => {
329
+ this.logger.error(`[Chorus] kiro-cli process error: ${err}`);
330
+ resolve({ sessionId: knownSessionId || anchor, exitCode: null, isNew });
331
+ });
332
+
333
+ child.on("close", (code) => {
334
+ if (code !== 0) {
335
+ this.logger.warn(`[Chorus] kiro-cli exited with code ${code}`);
336
+ }
337
+
338
+ // Resolve the run's sessionId. On resume it's the id we passed; on a fresh
339
+ // run, diff the store snapshot to find the newly-created conversation.
340
+ let observedSessionId = knownSessionId || null;
341
+ if (isNew && code === 0) {
342
+ const after = this.#safeSnapshot(runCwd);
343
+ const found = pickNewSessionId(before, after);
344
+ if (found) {
345
+ observedSessionId = found;
346
+ if (anchor) this.setSessionIdFn(anchor, found);
347
+ } else {
348
+ // Zero or MULTIPLE new sessions in the window (e.g. a concurrent wake
349
+ // in the same cwd — reviewer N1). We refuse to guess: not persisting
350
+ // means a missed resume next time (minor), whereas guessing could
351
+ // cross-wire two ideas' conversations (a correctness bug).
352
+ this.logger.warn(
353
+ "[Chorus] kiro wake: run sessionId ambiguous or absent in the store " +
354
+ "(0 or >1 new sessions this window) — not persisting; next wake starts fresh"
355
+ );
356
+ }
357
+ }
358
+
359
+ // Transcript reconstruction (task 4) — post-run, best-effort. Runs even
360
+ // when no sessionId was captured: `kiro-cli chat --no-interactive` does NOT
361
+ // persist a session to the cli store (verified live on 2.12.1 — only
362
+ // interactive/TUI runs do), so the store path finds nothing and the
363
+ // reconstructor falls back to the raw `stdout` blob (the authorized option-1
364
+ // fallback). Gating this on `observedSessionId` would suppress that fallback
365
+ // and leave headless turns with an empty transcript. Never throws into the
366
+ // wake path (the reconstructor is also internally wrapped).
367
+ if (this.reconstructTranscript) {
368
+ try {
369
+ this.reconstructTranscript({
370
+ sessionId: observedSessionId ?? "",
371
+ cwd: runCwd,
372
+ onMessage,
373
+ stdout: stdoutBuf,
374
+ logger: this.logger,
375
+ });
376
+ } catch (err) {
377
+ this.logger.warn(`[Chorus] kiro transcript reconstruction threw (ignored): ${err}`);
378
+ }
379
+ }
380
+
381
+ resolve({ sessionId: observedSessionId || anchor, exitCode: code, isNew });
382
+ });
383
+
384
+ // Guard against an ASYNC stdin error (EPIPE) so it never becomes an
385
+ // uncaughtException that kills the daemon.
386
+ child.stdin?.on?.("error", (err) => {
387
+ this.logger.warn(`[Chorus] kiro-cli stdin error (ignored): ${err}`);
388
+ });
389
+
390
+ // Feed the prompt over stdin, then close it so the model runs.
391
+ try {
392
+ child.stdin?.write(prompt);
393
+ child.stdin?.end();
394
+ } catch (err) {
395
+ this.logger.warn(`[Chorus] failed writing prompt to kiro-cli stdin: ${err}`);
396
+ }
397
+ });
398
+ }
399
+
400
+ /** Snapshot the store, swallowing any failure (best-effort id capture). */
401
+ #safeSnapshot(cwd) {
402
+ try {
403
+ return this.snapshotSessionsFn(cwd, { logger: this.logger });
404
+ } catch (err) {
405
+ this.logger.warn(`[Chorus] kiro session snapshot failed (${err}) — id capture degraded`);
406
+ return new Map();
407
+ }
408
+ }
409
+ }
@@ -0,0 +1,262 @@
1
+ // cli/kiro-transcript.mjs
2
+ // Transcript reconstruction for the Kiro backend. `kiro-cli chat --no-interactive`
3
+ // emits no structured per-message stream (its `--format json` is list-commands-
4
+ // only), so unlike Claude/Codex there is nothing to parse live off stdout. Instead
5
+ // we reconstruct the transcript POST-RUN from Kiro's on-disk session store, and
6
+ // fall back to a single plain-text stdout blob if the store can't be read. This
7
+ // encodes the human's transcript decision: prefer store reconstruction, fall back
8
+ // to plain text.
9
+ //
10
+ // ⚠️ VERIFIED LIVE (kiro-cli 2.12.1, integration checkpoint): a `chat
11
+ // --no-interactive` run does NOT persist a session to the cli store — only
12
+ // interactive/TUI runs write `~/.kiro/sessions/cli/<id>.{jsonl,json}`. So on the
13
+ // DAEMON's headless path the store lookup normally finds nothing and the
14
+ // PLAIN-TEXT FALLBACK is the effective path. The store-reconstruction path is kept
15
+ // (it is correct and richer) for two reasons: it works if a future Kiro version
16
+ // persists headless sessions, and it captures reviewer-subagent child sessions
17
+ // when they ARE written. The fallback is not a rare degrade here — it is the
18
+ // common case — so it must produce clean text (see stripAnsi below): headless
19
+ // stdout is ANSI-styled with spinner frames, which must be stripped before storing.
20
+ //
21
+ // Store schema (verified live against kiro-cli 2.12.1):
22
+ // ~/.kiro/sessions/cli/<sessionId>.jsonl — one JSON object per line:
23
+ // { version, kind, data: { message_id, content: [ { kind, data }, ... ] } }
24
+ // kind ∈ { Prompt, AssistantMessage, ToolResults, ... }
25
+ // A content block's kind ∈ { text, thinking, toolUse, toolResult, ... };
26
+ // ONLY `text` blocks are conversation text (data is the string) — thinking /
27
+ // toolUse / toolResult are dropped (parallels the Claude extractor keeping
28
+ // only `text` content blocks).
29
+ // ~/.kiro/sessions/cli/<sessionId>.json — metadata:
30
+ // { session_id, cwd, updated_at, created_at, parent_session_id,
31
+ // session_created_reason, ... }
32
+ // Reviewer subagents get their OWN session with parent_session_id === the
33
+ // run's sessionId. NOTE: session_created_reason can be "subagent" even on a
34
+ // root session, so child detection keys on parent_session_id, NOT on the
35
+ // reason field.
36
+ //
37
+ // Entries are emitted in the CLAUDE stream-json envelope shape
38
+ // { type: "user"|"assistant", message: { role, content: [ { type:"text", text } ] } }
39
+ // so the existing upload-hooks `extractTranscriptText` consumes them with NO
40
+ // dialect change (it already recognizes that shape).
41
+ //
42
+ // CONTRACT: best-effort, MUST NEVER throw into the wake path (the caller also
43
+ // wraps it in try/catch). Any IO/parse failure degrades — worst case, nothing (or
44
+ // the plain-text fallback) is emitted, with a visible log.
45
+
46
+ import { readdirSync, readFileSync } from "node:fs";
47
+ import { join } from "node:path";
48
+ import { kiroSessionsDir } from "./kiro-spawner.mjs";
49
+
50
+ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
51
+
52
+ // `kiro-cli chat --no-interactive` writes ANSI-styled text + braille spinner
53
+ // frames to stdout (it renders for a terminal even headless). Strip them so the
54
+ // plain-text fallback stores clean conversation text, not escape soup.
55
+ // - CSI sequences: ESC [ … <final byte>
56
+ // - OSC sequences: ESC ] … (BEL | ESC \)
57
+ // - braille spinner glyphs U+2800–U+28FF
58
+ // - a leading "> " prompt marker Kiro prints before the answer
59
+ const ANSI_CSI = /\x1b\[[0-9;?]*[ -/]*[@-~]/g;
60
+ const ANSI_OSC = /\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g;
61
+ const SPINNER = /[⠀-⣿]/g;
62
+
63
+ /**
64
+ * Strip ANSI escapes + spinner frames from a headless-CLI stdout blob and tidy
65
+ * whitespace. Exported for testing.
66
+ * @param {string} s
67
+ * @returns {string}
68
+ */
69
+ export function stripAnsi(s) {
70
+ if (typeof s !== "string") return "";
71
+ let out = s.replace(ANSI_OSC, "").replace(ANSI_CSI, "").replace(SPINNER, "");
72
+ // Drop a leading "> " answer marker and collapse runs of blank lines.
73
+ out = out.replace(/^[ \t]*>[ \t]?/gm, "");
74
+ out = out.replace(/\n{3,}/g, "\n\n");
75
+ return out.trim();
76
+ }
77
+
78
+ /** Map a store line's `kind` to a transcript role, or null to skip the line. */
79
+ function roleForKind(kind) {
80
+ if (kind === "Prompt") return "user";
81
+ if (kind === "AssistantMessage") return "assistant";
82
+ return null; // ToolResults / lifecycle / unknown → not conversation text
83
+ }
84
+
85
+ /**
86
+ * Concatenate the `text` content blocks of one store line's `data.content[]`,
87
+ * dropping thinking / toolUse / toolResult / non-text blocks. Returns "" when the
88
+ * line carries no conversation text.
89
+ * @param {any} data the line's `data` object
90
+ * @returns {string}
91
+ */
92
+ export function extractLineText(data) {
93
+ if (!data || typeof data !== "object") return "";
94
+ const content = data.content;
95
+ if (typeof content === "string") return content; // defensive: bare string
96
+ if (!Array.isArray(content)) return "";
97
+ const parts = [];
98
+ for (const block of content) {
99
+ if (block && typeof block === "object" && block.kind === "text" && typeof block.data === "string") {
100
+ parts.push(block.data);
101
+ }
102
+ }
103
+ return parts.join("");
104
+ }
105
+
106
+ /**
107
+ * Parse one session `.jsonl` into ordered transcript entries (Claude-dialect
108
+ * envelopes). Skips blank / malformed lines and non-conversation kinds. Never
109
+ * throws — a malformed line is warned-and-skipped.
110
+ * @param {string} raw full file contents
111
+ * @param {{warn(m:string):void}} logger
112
+ * @returns {Array<{ type: "user"|"assistant", message: { role: string, content: Array<{type:"text",text:string}> } }>}
113
+ */
114
+ export function parseSessionJsonl(raw, logger = NOOP_LOGGER) {
115
+ const out = [];
116
+ const lines = raw.split("\n");
117
+ for (const line of lines) {
118
+ const trimmed = line.trim();
119
+ if (!trimmed) continue;
120
+ let obj;
121
+ try {
122
+ obj = JSON.parse(trimmed);
123
+ } catch {
124
+ logger.warn("[Chorus] kiro-transcript: skipping a malformed store line");
125
+ continue;
126
+ }
127
+ if (!obj || typeof obj !== "object") continue;
128
+ const role = roleForKind(obj.kind);
129
+ if (!role) continue;
130
+ const text = extractLineText(obj.data);
131
+ if (!text.trim()) continue; // a message with no conversation text → nothing to store
132
+ out.push({ type: role, message: { role, content: [{ type: "text", text }] } });
133
+ }
134
+ return out;
135
+ }
136
+
137
+ /**
138
+ * List the run's session plus any CHILD sessions (reviewer subagents), ordered so
139
+ * the parent precedes its children and children are in creation order. Each entry
140
+ * is `{ sessionId, createdAt }`. Best-effort: unreadable metadata is skipped.
141
+ * @param {string} sessionId the run's (parent) sessionId
142
+ * @param {{ dir?: string, readdir?: (d:string)=>string[], read?: (p:string)=>string, logger?: any }} [deps]
143
+ * @returns {Array<{ sessionId: string, createdAt: number }>}
144
+ */
145
+ export function collectSessionChain(sessionId, deps = {}) {
146
+ const dir = deps.dir ?? kiroSessionsDir();
147
+ const readdir = deps.readdir ?? ((d) => readdirSync(d));
148
+ const read = deps.read ?? ((p) => readFileSync(p, "utf8"));
149
+ // (no logging here — collectSessionChain silently skips unreadable metadata.)
150
+
151
+ const children = [];
152
+ let files = [];
153
+ try {
154
+ files = readdir(dir);
155
+ } catch {
156
+ // No store dir → just the run's own session (its jsonl may still exist elsewhere).
157
+ return [{ sessionId, createdAt: 0 }];
158
+ }
159
+ for (const f of files) {
160
+ if (!f.endsWith(".json")) continue;
161
+ let meta;
162
+ try {
163
+ meta = JSON.parse(read(join(dir, f)));
164
+ } catch {
165
+ continue;
166
+ }
167
+ if (!meta || typeof meta !== "object") continue;
168
+ // Child detection keys on parent_session_id (NOT session_created_reason, which
169
+ // can be "subagent" on a root session too).
170
+ if (meta.parent_session_id === sessionId) {
171
+ const sid = typeof meta.session_id === "string" ? meta.session_id : f.replace(/\.json$/, "");
172
+ children.push({ sessionId: sid, createdAt: Date.parse(meta.created_at ?? meta.updated_at ?? "") || 0 });
173
+ }
174
+ }
175
+ children.sort((a, b) => a.createdAt - b.createdAt);
176
+ // Parent first, then children in creation order.
177
+ return [{ sessionId, createdAt: 0 }, ...children];
178
+ }
179
+
180
+ /**
181
+ * Reconstruct the transcript for a completed Kiro run and feed each entry to
182
+ * `onMessage`. This is the hook KiroSpawner invokes post-run. Reads the run's
183
+ * session `.jsonl` (and any child subagent sessions) from the store; if that
184
+ * yields nothing usable, falls back to a single plain-text `stdout` entry. Emits
185
+ * Claude-dialect envelopes so the existing upload-hooks extractor consumes them
186
+ * unchanged. Never throws.
187
+ *
188
+ * @param {{
189
+ * sessionId: string,
190
+ * cwd?: string,
191
+ * onMessage?: (obj: any) => void,
192
+ * stdout?: string,
193
+ * logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
194
+ * dir?: string,
195
+ * readdir?: (d: string) => string[],
196
+ * read?: (p: string) => string,
197
+ * }} params
198
+ * @returns {void}
199
+ */
200
+ export function reconstructTranscript(params) {
201
+ const { sessionId, onMessage, stdout } = params;
202
+ const logger = params.logger ?? NOOP_LOGGER;
203
+ if (!onMessage) return; // nothing to feed
204
+ if (typeof sessionId !== "string" || !sessionId) {
205
+ emitFallback(stdout, onMessage, logger, "no sessionId");
206
+ return;
207
+ }
208
+
209
+ const dir = params.dir ?? kiroSessionsDir();
210
+ const read = params.read ?? ((p) => readFileSync(p, "utf8"));
211
+
212
+ let emitted = 0;
213
+ let anyStoreRead = false;
214
+ try {
215
+ const chain = collectSessionChain(sessionId, { dir, readdir: params.readdir, read, logger });
216
+ for (const { sessionId: sid } of chain) {
217
+ let raw;
218
+ try {
219
+ raw = read(join(dir, `${sid}.jsonl`));
220
+ } catch {
221
+ continue; // this session has no readable jsonl — skip it
222
+ }
223
+ anyStoreRead = true;
224
+ const entries = parseSessionJsonl(raw, logger);
225
+ for (const entry of entries) {
226
+ try {
227
+ onMessage(entry);
228
+ emitted++;
229
+ } catch (err) {
230
+ logger.warn(`[Chorus] kiro-transcript: onMessage threw (ignored): ${err}`);
231
+ }
232
+ }
233
+ }
234
+ } catch (err) {
235
+ logger.warn(`[Chorus] kiro-transcript: store reconstruction failed (${err}) — trying plain-text fallback`);
236
+ }
237
+
238
+ // Fallback (option 1): the store was missing / unreadable / empty of
239
+ // conversation text — emit the raw stdout as a single plain-text entry so the
240
+ // turn is not left with an empty transcript.
241
+ if (emitted === 0) {
242
+ emitFallback(stdout, onMessage, logger, anyStoreRead ? "store had no conversation text" : "store unreadable");
243
+ }
244
+ }
245
+
246
+ /**
247
+ * Emit the run's raw stdout as one plain-text assistant transcript entry. No-op
248
+ * when there is no stdout. Logs the degrade. Never throws.
249
+ */
250
+ function emitFallback(stdout, onMessage, logger, reason) {
251
+ const text = stripAnsi(stdout);
252
+ if (!text) {
253
+ logger.warn(`[Chorus] kiro-transcript: ${reason} and no stdout — transcript left empty for this turn`);
254
+ return;
255
+ }
256
+ logger.warn(`[Chorus] kiro-transcript: ${reason} — falling back to a plain-text stdout entry`);
257
+ try {
258
+ onMessage({ type: "assistant", message: { role: "assistant", content: [{ type: "text", text }] } });
259
+ } catch (err) {
260
+ logger.warn(`[Chorus] kiro-transcript: fallback onMessage threw (ignored): ${err}`);
261
+ }
262
+ }