@aoagents/ao-web 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +160 -94
  3. package/.next/app-path-routes-manifest.json +17 -10
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +26 -26
  6. package/.next/react-loadable-manifest.json +12 -12
  7. package/.next/required-server-files.json +5 -3
  8. package/.next/routes-manifest.json +33 -0
  9. package/.next/server/app/_not-found/page.js +2 -2
  10. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +2 -2
  14. package/.next/server/app/api/backlog/route.js +1 -1
  15. package/.next/server/app/api/backlog/route.js.nft.json +1 -1
  16. package/.next/server/app/api/backlog/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/browse-directory/route.js +1 -0
  18. package/.next/server/app/api/browse-directory/route.js.nft.json +1 -0
  19. package/.next/server/app/api/browse-directory/route_client-reference-manifest.js +1 -0
  20. package/.next/server/app/api/events/route.js +3 -3
  21. package/.next/server/app/api/events/route.js.nft.json +1 -1
  22. package/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/filesystem/browse/route.js +1 -0
  24. package/.next/server/app/api/filesystem/browse/route.js.nft.json +1 -0
  25. package/.next/server/app/api/filesystem/browse/route_client-reference-manifest.js +1 -0
  26. package/.next/server/app/api/issues/route.js +1 -1
  27. package/.next/server/app/api/issues/route.js.nft.json +1 -1
  28. package/.next/server/app/api/issues/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/observability/route.js +1 -1
  30. package/.next/server/app/api/observability/route.js.nft.json +1 -1
  31. package/.next/server/app/api/observability/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/orchestrators/route.js +1 -1
  33. package/.next/server/app/api/orchestrators/route.js.nft.json +1 -1
  34. package/.next/server/app/api/orchestrators/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/projects/[id]/route.js +1 -0
  36. package/.next/server/app/api/projects/[id]/route.js.nft.json +1 -0
  37. package/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -0
  38. package/.next/server/app/api/projects/reload/route.js +1 -0
  39. package/.next/server/app/api/projects/reload/route.js.nft.json +1 -0
  40. package/.next/server/app/api/projects/reload/route_client-reference-manifest.js +1 -0
  41. package/.next/server/app/api/projects/route.js +1 -1
  42. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  43. package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/prs/[id]/merge/route.js +1 -1
  45. package/.next/server/app/api/prs/[id]/merge/route.js.nft.json +1 -1
  46. package/.next/server/app/api/prs/[id]/merge/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/runtime/terminal/route.js +1 -1
  48. package/.next/server/app/api/runtime/terminal/route.js.nft.json +1 -1
  49. package/.next/server/app/api/runtime/terminal/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/sessions/[id]/kill/route.js +1 -1
  51. package/.next/server/app/api/sessions/[id]/kill/route.js.nft.json +1 -1
  52. package/.next/server/app/api/sessions/[id]/kill/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/sessions/[id]/message/route.js +1 -1
  54. package/.next/server/app/api/sessions/[id]/message/route.js.nft.json +1 -1
  55. package/.next/server/app/api/sessions/[id]/message/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/sessions/[id]/remap/route.js +1 -1
  57. package/.next/server/app/api/sessions/[id]/remap/route.js.nft.json +1 -1
  58. package/.next/server/app/api/sessions/[id]/remap/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/sessions/[id]/restore/route.js +1 -1
  60. package/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -1
  61. package/.next/server/app/api/sessions/[id]/restore/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  63. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/sessions/[id]/send/route.js +1 -1
  66. package/.next/server/app/api/sessions/[id]/send/route.js.nft.json +1 -1
  67. package/.next/server/app/api/sessions/[id]/send/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/sessions/patches/route.js +1 -1
  69. package/.next/server/app/api/sessions/patches/route.js.nft.json +1 -1
  70. package/.next/server/app/api/sessions/patches/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/sessions/route.js +1 -1
  72. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  73. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/setup-labels/route.js +1 -1
  75. package/.next/server/app/api/setup-labels/route.js.nft.json +1 -1
  76. package/.next/server/app/api/setup-labels/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/spawn/route.js +1 -1
  78. package/.next/server/app/api/spawn/route.js.nft.json +1 -1
  79. package/.next/server/app/api/spawn/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/verify/route.js +1 -1
  81. package/.next/server/app/api/verify/route.js.nft.json +1 -1
  82. package/.next/server/app/api/verify/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/webhooks/[...slug]/route.js +1 -1
  84. package/.next/server/app/api/webhooks/[...slug]/route.js.nft.json +1 -1
  85. package/.next/server/app/api/webhooks/[...slug]/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/apple-icon/route.js +1 -1
  87. package/.next/server/app/apple-icon/route.js.nft.json +1 -1
  88. package/.next/server/app/apple-icon/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/dev/terminal-test/page.js +2 -2
  90. package/.next/server/app/dev/terminal-test/page.js.nft.json +1 -1
  91. package/.next/server/app/dev/terminal-test/page_client-reference-manifest.js +1 -1
  92. package/.next/server/app/dev/terminal-test.html +1 -1
  93. package/.next/server/app/dev/terminal-test.rsc +3 -3
  94. package/.next/server/app/icon/route.js +1 -1
  95. package/.next/server/app/icon/route.js.nft.json +1 -1
  96. package/.next/server/app/icon/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/icon-192/route.js +1 -1
  98. package/.next/server/app/icon-192/route.js.nft.json +1 -1
  99. package/.next/server/app/icon-192/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/icon-512/route.js +1 -1
  101. package/.next/server/app/icon-512/route.js.nft.json +1 -1
  102. package/.next/server/app/icon-512/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  104. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  105. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/orchestrators/page.js +2 -2
  107. package/.next/server/app/orchestrators/page.js.nft.json +1 -1
  108. package/.next/server/app/orchestrators/page_client-reference-manifest.js +1 -1
  109. package/.next/server/app/page.js +2 -2
  110. package/.next/server/app/page.js.nft.json +1 -1
  111. package/.next/server/app/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/projects/[projectId]/page.js +2 -0
  113. package/.next/server/app/projects/[projectId]/page.js.nft.json +1 -0
  114. package/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -0
  115. package/.next/server/app/projects/[projectId]/sessions/[id]/page.js +2 -0
  116. package/.next/server/app/projects/[projectId]/sessions/[id]/page.js.nft.json +1 -0
  117. package/.next/server/app/projects/[projectId]/sessions/[id]/page_client-reference-manifest.js +1 -0
  118. package/.next/server/app/projects/[projectId]/settings/page.js +2 -0
  119. package/.next/server/app/projects/[projectId]/settings/page.js.nft.json +1 -0
  120. package/.next/server/app/projects/[projectId]/settings/page_client-reference-manifest.js +1 -0
  121. package/.next/server/app/prs/page.js +2 -2
  122. package/.next/server/app/prs/page.js.nft.json +1 -1
  123. package/.next/server/app/prs/page_client-reference-manifest.js +1 -1
  124. package/.next/server/app/sessions/[id]/page.js +2 -12
  125. package/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  126. package/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  127. package/.next/server/app/test-direct/page.js +2 -2
  128. package/.next/server/app/test-direct/page.js.nft.json +1 -1
  129. package/.next/server/app/test-direct/page_client-reference-manifest.js +1 -1
  130. package/.next/server/app/test-direct.html +1 -1
  131. package/.next/server/app/test-direct.rsc +3 -3
  132. package/.next/server/app-paths-manifest.json +17 -10
  133. package/.next/server/chunks/1172.js +1 -0
  134. package/.next/server/chunks/1271.js +1 -0
  135. package/.next/server/chunks/2106.js +1 -0
  136. package/.next/server/chunks/252.js +11 -0
  137. package/.next/server/chunks/2810.js +1 -0
  138. package/.next/server/chunks/3602.js +382 -0
  139. package/.next/server/chunks/3667.js +277 -0
  140. package/.next/server/chunks/3714.js +1 -0
  141. package/.next/server/chunks/4520.js +1 -0
  142. package/.next/server/chunks/6086.js +25 -0
  143. package/.next/server/chunks/6172.js +9 -0
  144. package/.next/server/chunks/8367.js +3 -0
  145. package/.next/server/chunks/8386.js +1 -0
  146. package/.next/server/chunks/{803.js → 8803.js} +1 -1
  147. package/.next/server/chunks/{561.js → 9561.js} +1 -1
  148. package/.next/server/middleware-build-manifest.js +1 -1
  149. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  150. package/.next/server/next-font-manifest.js +1 -1
  151. package/.next/server/next-font-manifest.json +1 -1
  152. package/.next/server/pages/404.html +1 -1
  153. package/.next/server/pages/500.html +1 -1
  154. package/.next/server/pages/_document.js +1 -1
  155. package/.next/server/pages/_document.js.nft.json +1 -1
  156. package/.next/server/pages/_error.js +2 -2
  157. package/.next/server/pages/_error.js.nft.json +1 -1
  158. package/.next/server/server-reference-manifest.json +1 -1
  159. package/.next/server/webpack-runtime.js +1 -1
  160. package/.next/static/chunks/1d2d5650.1ef8611b5325bd83.js +18 -0
  161. package/.next/static/chunks/3697.4d6d86c5f0caf73e.js +1 -0
  162. package/.next/static/chunks/4465-aaba60a6355de914.js +1 -0
  163. package/.next/static/chunks/6078.47ce88bee96cfaee.js +1 -0
  164. package/.next/static/chunks/6607-405ce4d15e595f4a.js +1 -0
  165. package/.next/static/chunks/7008-71ebb186f0549f41.js +1 -0
  166. package/.next/static/chunks/9331-fcdd652218ac6f68.js +1 -0
  167. package/.next/static/chunks/app/_not-found/page-e2dea9178b4af8db.js +1 -0
  168. package/.next/static/chunks/app/api/backlog/route-e2dea9178b4af8db.js +1 -0
  169. package/.next/static/chunks/app/api/browse-directory/route-e2dea9178b4af8db.js +1 -0
  170. package/.next/static/chunks/app/api/events/route-e2dea9178b4af8db.js +1 -0
  171. package/.next/static/chunks/app/api/filesystem/browse/route-e2dea9178b4af8db.js +1 -0
  172. package/.next/static/chunks/app/api/issues/route-e2dea9178b4af8db.js +1 -0
  173. package/.next/static/chunks/app/api/observability/route-e2dea9178b4af8db.js +1 -0
  174. package/.next/static/chunks/app/api/orchestrators/route-e2dea9178b4af8db.js +1 -0
  175. package/.next/static/chunks/app/api/projects/[id]/route-e2dea9178b4af8db.js +1 -0
  176. package/.next/static/chunks/app/api/projects/reload/route-e2dea9178b4af8db.js +1 -0
  177. package/.next/static/chunks/app/api/projects/route-e2dea9178b4af8db.js +1 -0
  178. package/.next/static/chunks/app/api/prs/[id]/merge/route-e2dea9178b4af8db.js +1 -0
  179. package/.next/static/chunks/app/api/runtime/terminal/route-e2dea9178b4af8db.js +1 -0
  180. package/.next/static/chunks/app/api/sessions/[id]/kill/route-e2dea9178b4af8db.js +1 -0
  181. package/.next/static/chunks/app/api/sessions/[id]/message/route-e2dea9178b4af8db.js +1 -0
  182. package/.next/static/chunks/app/api/sessions/[id]/remap/route-e2dea9178b4af8db.js +1 -0
  183. package/.next/static/chunks/app/api/sessions/[id]/restore/route-e2dea9178b4af8db.js +1 -0
  184. package/.next/static/chunks/app/api/sessions/[id]/route-e2dea9178b4af8db.js +1 -0
  185. package/.next/static/chunks/app/api/sessions/[id]/send/route-e2dea9178b4af8db.js +1 -0
  186. package/.next/static/chunks/app/api/sessions/patches/route-e2dea9178b4af8db.js +1 -0
  187. package/.next/static/chunks/app/api/sessions/route-e2dea9178b4af8db.js +1 -0
  188. package/.next/static/chunks/app/api/setup-labels/route-e2dea9178b4af8db.js +1 -0
  189. package/.next/static/chunks/app/api/spawn/route-e2dea9178b4af8db.js +1 -0
  190. package/.next/static/chunks/app/api/verify/route-e2dea9178b4af8db.js +1 -0
  191. package/.next/static/chunks/app/api/webhooks/[...slug]/route-e2dea9178b4af8db.js +1 -0
  192. package/.next/static/chunks/app/apple-icon/route-e2dea9178b4af8db.js +1 -0
  193. package/.next/static/chunks/app/dev/terminal-test/{page-4912fa9e6459f124.js → page-5765f0465db56fed.js} +1 -1
  194. package/.next/static/chunks/app/icon/route-e2dea9178b4af8db.js +1 -0
  195. package/.next/static/chunks/app/icon-192/route-e2dea9178b4af8db.js +1 -0
  196. package/.next/static/chunks/app/icon-512/route-e2dea9178b4af8db.js +1 -0
  197. package/.next/static/chunks/app/loading-e2dea9178b4af8db.js +1 -0
  198. package/.next/static/chunks/app/manifest.webmanifest/route-e2dea9178b4af8db.js +1 -0
  199. package/.next/static/chunks/app/orchestrators/page-4c190484788aaaa3.js +1 -0
  200. package/.next/static/chunks/app/page-d3b83ad5f09b6ec7.js +1 -0
  201. package/.next/static/chunks/app/projects/[projectId]/loading-e2dea9178b4af8db.js +1 -0
  202. package/.next/static/chunks/app/projects/[projectId]/page-9f3dfbea006747cf.js +1 -0
  203. package/.next/static/chunks/app/projects/[projectId]/sessions/[id]/page-a7090a06948f9a6b.js +1 -0
  204. package/.next/static/chunks/app/projects/[projectId]/settings/page-219df6dcbc6d1107.js +1 -0
  205. package/.next/static/chunks/app/prs/page-a285e930235a23af.js +1 -0
  206. package/.next/static/chunks/app/sessions/[id]/loading-e2dea9178b4af8db.js +1 -0
  207. package/.next/static/chunks/app/sessions/[id]/page-98f398b822092218.js +1 -0
  208. package/.next/static/chunks/app/test-direct/{page-1fd63edb9a9ca8be.js → page-f9bff7d7b4dfe728.js} +1 -1
  209. package/.next/static/chunks/{webpack-ab6c08c78ffc8113.js → webpack-d4ff5ed5e153ca3e.js} +1 -1
  210. package/.next/static/css/577ea7f5ad4f0576.css +1 -0
  211. package/.next/static/css/659eccb5db697b76.css +1 -0
  212. package/.next/static/q6yh3n8jgvyI9JIbexzuH/_buildManifest.js +1 -0
  213. package/next.config.js +5 -1
  214. package/package.json +17 -14
  215. package/.next/server/chunks/100.js +0 -1
  216. package/.next/server/chunks/106.js +0 -1
  217. package/.next/server/chunks/172.js +0 -9
  218. package/.next/server/chunks/180.js +0 -25
  219. package/.next/server/chunks/333.js +0 -1
  220. package/.next/server/chunks/367.js +0 -3
  221. package/.next/server/chunks/627.js +0 -408
  222. package/.next/server/chunks/886.js +0 -384
  223. package/.next/server/chunks/907.js +0 -1
  224. package/.next/static/OyzSw2fQpoJHXyoBWoZ2X/_buildManifest.js +0 -1
  225. package/.next/static/chunks/6923-ef8434dfec6f2a3c.js +0 -1
  226. package/.next/static/chunks/7097.fc904e5f313c4994.js +0 -1
  227. package/.next/static/chunks/8785-6b4b3ff260617997.js +0 -1
  228. package/.next/static/chunks/9478.656c9c263bc55893.js +0 -1
  229. package/.next/static/chunks/app/_not-found/page-019391920005654f.js +0 -1
  230. package/.next/static/chunks/app/api/backlog/route-019391920005654f.js +0 -1
  231. package/.next/static/chunks/app/api/events/route-019391920005654f.js +0 -1
  232. package/.next/static/chunks/app/api/issues/route-019391920005654f.js +0 -1
  233. package/.next/static/chunks/app/api/observability/route-019391920005654f.js +0 -1
  234. package/.next/static/chunks/app/api/orchestrators/route-019391920005654f.js +0 -1
  235. package/.next/static/chunks/app/api/projects/route-019391920005654f.js +0 -1
  236. package/.next/static/chunks/app/api/prs/[id]/merge/route-019391920005654f.js +0 -1
  237. package/.next/static/chunks/app/api/runtime/terminal/route-019391920005654f.js +0 -1
  238. package/.next/static/chunks/app/api/sessions/[id]/kill/route-019391920005654f.js +0 -1
  239. package/.next/static/chunks/app/api/sessions/[id]/message/route-019391920005654f.js +0 -1
  240. package/.next/static/chunks/app/api/sessions/[id]/remap/route-019391920005654f.js +0 -1
  241. package/.next/static/chunks/app/api/sessions/[id]/restore/route-019391920005654f.js +0 -1
  242. package/.next/static/chunks/app/api/sessions/[id]/route-019391920005654f.js +0 -1
  243. package/.next/static/chunks/app/api/sessions/[id]/send/route-019391920005654f.js +0 -1
  244. package/.next/static/chunks/app/api/sessions/patches/route-019391920005654f.js +0 -1
  245. package/.next/static/chunks/app/api/sessions/route-019391920005654f.js +0 -1
  246. package/.next/static/chunks/app/api/setup-labels/route-019391920005654f.js +0 -1
  247. package/.next/static/chunks/app/api/spawn/route-019391920005654f.js +0 -1
  248. package/.next/static/chunks/app/api/verify/route-019391920005654f.js +0 -1
  249. package/.next/static/chunks/app/api/webhooks/[...slug]/route-019391920005654f.js +0 -1
  250. package/.next/static/chunks/app/apple-icon/route-019391920005654f.js +0 -1
  251. package/.next/static/chunks/app/icon/route-019391920005654f.js +0 -1
  252. package/.next/static/chunks/app/icon-192/route-019391920005654f.js +0 -1
  253. package/.next/static/chunks/app/icon-512/route-019391920005654f.js +0 -1
  254. package/.next/static/chunks/app/loading-019391920005654f.js +0 -1
  255. package/.next/static/chunks/app/manifest.webmanifest/route-019391920005654f.js +0 -1
  256. package/.next/static/chunks/app/orchestrators/page-4da04720a09483d2.js +0 -1
  257. package/.next/static/chunks/app/page-abf3e3c98cac072f.js +0 -1
  258. package/.next/static/chunks/app/prs/page-46455c406183ffbf.js +0 -1
  259. package/.next/static/chunks/app/sessions/[id]/loading-019391920005654f.js +0 -1
  260. package/.next/static/chunks/app/sessions/[id]/page-7eb67fd32f39b15f.js +0 -1
  261. package/.next/static/chunks/df4ed4d4.b6997d8b8ce9d79b.js +0 -3
  262. package/.next/static/css/6ef2fa08dd043252.css +0 -1
  263. package/.next/static/css/a5398483e6b75ad3.css +0 -1
  264. /package/.next/static/{OyzSw2fQpoJHXyoBWoZ2X → q6yh3n8jgvyI9JIbexzuH}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3697],{5611:()=>{},6078:(e,t,r)=>{"use strict";r.r(t),r.d(t,{DirectTerminal:()=>f,buildTerminalThemes:()=>m,resolveMonoFontFamily:()=>h});var n=r(3817),o=r(6749),l=r(7594),a=r(2286),s=r(4901),i=r(5184);let c={deadZone:8,verticalDominance:1.5,maxLinesPerEvent:6,speedMultiplier:3,tmuxPrefix:"\x02"};r(5611);let d="ao-terminal-font-size",u='"JetBrains Mono", "SF Mono", Menlo, Monaco, "Courier New", monospace';function h(){try{let e=getComputedStyle(document.documentElement).getPropertyValue("--font-jetbrains-mono").trim();return e?"".concat(e,", ").concat(u):u}catch(e){return u}}function m(e){let t="#5b7ef8",r="rgba(91, 126, 248, 0.30)",n="rgba(91, 126, 248, 0.25)";return{dark:{background:"#0a0a0f",foreground:"#d4d4d8",cursor:t,cursorAccent:"#0a0a0f",selectionBackground:r,selectionInactiveBackground:"rgba(128, 128, 128, 0.2)",black:"#1a1a24",red:"#ef4444",green:"#22c55e",yellow:"#f59e0b",blue:"#5b7ef8",magenta:"#a371f7",cyan:"#22d3ee",white:"#d4d4d8",brightBlack:"#50506a",brightRed:"#f87171",brightGreen:"#4ade80",brightYellow:"#fbbf24",brightBlue:"#7b9cfb",brightMagenta:"#c084fc",brightCyan:"#67e8f9",brightWhite:"#eeeef5"},light:{background:"#fafafa",foreground:"#24292f",cursor:t,cursorAccent:"#fafafa",selectionBackground:n,selectionInactiveBackground:"rgba(128, 128, 128, 0.15)",black:"#24292f",red:"#b42318",green:"#1f7a3d",yellow:"#8a5a00",blue:"#175cd3",magenta:"#8e24aa",cyan:"#0b7285",white:"#4b5563",brightBlack:"#374151",brightRed:"#912018",brightGreen:"#176639",brightYellow:"#6f4a00",brightBlue:"#1d4ed8",brightMagenta:"#7b1fa2",brightCyan:"#155e75",brightWhite:"#374151"}}}function f(e){let{sessionId:t,startFullscreen:u=!1,variant:f="agent",appearance:p="theme",height:x="max(440px, calc(100dvh - 440px))",isOpenCodeSession:b=!1,reloadCommand:v,chromeless:g=!1,autoFocus:y=!1}=e,w=(0,l.useRouter)(),j=(0,l.usePathname)(),k=(0,l.useSearchParams)(),{resolvedTheme:C}=(0,a.D)(),S=(0,o.useMemo)(()=>m(f),[f]),{subscribeTerminal:E,writeTerminal:N,resizeTerminal:T,openTerminal:M,closeTerminal:L,status:A}=(0,i.Ug)(),F=(0,o.useRef)(null),R=(0,o.useRef)(null),B=(0,o.useRef)(null),P=(0,o.useRef)(A);P.current=A;let[I,z]=(0,o.useState)(u),[D,O]=(0,o.useState)(null),[_,H]=(0,o.useState)(!1),[W,K]=(0,o.useState)(null),[q,Y]=(0,o.useState)(function(){try{let e=localStorage.getItem(d);if(e){let t=parseInt(e,10);if(!Number.isNaN(t))return Math.max(9,Math.min(18,t))}}catch(e){}return 13}()),U=(0,o.useRef)(!0),[X,J]=(0,o.useState)(!0);async function V(){if(b&&!_){K(null),H(!0);try{let e=v;if(!e){let r=await fetch("/api/sessions/".concat(encodeURIComponent(t),"/remap"),{method:"POST"});if(!r.ok)throw Error("Failed to remap OpenCode session: ".concat(r.status));let n=await r.json();if("string"!=typeof n.opencodeSessionId||0===n.opencodeSessionId.length)throw Error("Missing OpenCode session id after remap");e="/exit\nopencode --session ".concat(n.opencodeSessionId,"\n")}let r=await fetch("/api/sessions/".concat(encodeURIComponent(t),"/send"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e})});if(!r.ok)throw Error("Failed to send reload command: ".concat(r.status))}catch(e){K(e instanceof Error?e.message:"Failed to reload OpenCode session")}finally{H(!1)}}}(0,o.useEffect)(()=>{let e=new URLSearchParams(k.toString());I?e.set("fullscreen","true"):e.delete("fullscreen");let t=e.toString()?"".concat(j,"?").concat(e.toString()):j;w.replace(t,{scroll:!1})},[I,j,w,k]),(0,o.useEffect)(()=>{if(!F.current)return;let e=!0,n=null,o=null,l=null;return Promise.all([r.e(4560).then(r.bind(r,5627)).then(e=>e.Terminal),r.e(2529).then(r.bind(r,2529)).then(e=>e.FitAddon),r.e(5491).then(r.bind(r,5491)).then(e=>e.WebLinksAddon),document.fonts.ready]).then(r=>{var a,s;let[i,d,u]=r;if(!e||!F.current)return;let m="dark"===p||"light"!==C,f=m?S.dark:S.light,x=new i({cursorBlink:!0,fontSize:q,fontFamily:h(),lineHeight:1.2,theme:f,minimumContrastRatio:m?1:7,scrollback:1e4,allowProposedApi:!0,fastScrollSensitivity:3,scrollSensitivity:1}),b=new d;x.loadAddon(b),B.current=b;let v=new u;x.loadAddon(v),x.parser.registerCsiHandler({prefix:">",final:"q"},()=>(x.write("\x1bP>|XTerm(370)\x1b\\"),console.log("[DirectTerminal] Sent XDA response for clipboard support"),!0)),x.parser.registerOscHandler(52,e=>{let t=e.split(";");if(t.length<2)return!1;let r=t[t.length-1];try{var n;let e=atob(r),t=Uint8Array.from(e,e=>e.charCodeAt(0)),o=new TextDecoder().decode(t);null==(n=navigator.clipboard)||n.writeText(o).catch(()=>{})}catch(e){}return!0}),x.open(F.current),R.current=x,y&&x.focus(),b.fit();let g=setTimeout(()=>{if(e&&B.current)try{B.current.fit(),T(t,x.cols,x.rows)}catch(e){}},100),w=()=>{if(e&&B.current&&R.current)try{var r,n;R.current.options.fontFamily=h(),null==(r=(n=R.current).clearTextureAtlas)||r.call(n),B.current.fit(),T(t,R.current.cols,R.current.rows)}catch(e){}},j="undefined"!=typeof document?document.fonts:void 0,k=!!j&&"function"==typeof j.addEventListener;k&&j.addEventListener("loadingdone",w);let A=null!=(s=null==(a=x.element)?void 0:a.querySelector(".xterm-viewport"))?s:null,P=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n={...c,...r},o=e.element;if(!o)return()=>{};let l=o.style.touchAction;o.style.touchAction="none";let a=o.querySelector(".xterm-viewport");a&&(a.style.touchAction="none");let s=0,i=0,d=0,u=null,h=!1,m=e=>{"touch"===e.pointerType&&(s=e.clientX,i=e.clientY,d=e.clientY,u=null,h=!1)},f=l=>{var a,c,m;if("touch"!==l.pointerType)return;let f=l.clientX-s,p=l.clientY-i,x=Math.abs(f),b=Math.abs(p);if(null===u){if(Math.max(x,b)<n.deadZone)return;if(b<n.verticalDominance*x){u=!1;return}u=!0;try{o.setPointerCapture(l.pointerId)}catch(e){}}if(!0!==u)return;l.preventDefault();let v=Math.round((l.clientY-d)/((null!=(m=e.options.fontSize)?m:13)*1.2));if(v>n.maxLinesPerEvent&&(v=n.maxLinesPerEvent),v<-n.maxLinesPerEvent&&(v=-n.maxLinesPerEvent),0===v)return;d=l.clientY;let g=v*n.speedMultiplier;if(v>0?null==(a=r.onScrollAway)||a.call(r):null==(c=r.onScrollTowardLatest)||c.call(r),"normal"===e.buffer.active.type)e.scrollLines(-g);else{h||(h=!0,t(n.tmuxPrefix+"["));let e=v>0?"\x1b[A":"\x1b[B",r=Math.abs(g);for(let n=0;n<r;n++)t(e)}},p=e=>{if("touch"===e.pointerType){try{o.hasPointerCapture(e.pointerId)&&o.releasePointerCapture(e.pointerId)}catch(e){}u=null}},x={capture:!0},b={capture:!0,passive:!1};return o.addEventListener("pointerdown",m,x),o.addEventListener("pointermove",f,b),o.addEventListener("pointerup",p,x),o.addEventListener("pointercancel",p,x),()=>{o.removeEventListener("pointerdown",m,x),o.removeEventListener("pointermove",f,b),o.removeEventListener("pointerup",p,x),o.removeEventListener("pointercancel",p,x),o.style.touchAction=l}}(x,e=>{N(t,e)},{onScrollAway:()=>{U.current=!1,J(!1)},onScrollTowardLatest:()=>{U.current=!0,J(!0)}}),I=null;F.current&&(I=new ResizeObserver(()=>{if(e&&B.current)try{B.current.fit(),T(t,x.cols,x.rows)}catch(e){}})).observe(F.current);let z=[],D=!1,O=null,_=0,H=()=>{O&&(clearTimeout(O),O=null),z.length>0&&(x.write(z.join("")),z.length=0,_=0)},W=x.onSelectionChange(()=>{x.hasSelection()?(D=!0,O||(O=setTimeout(()=>{D=!1,H()},5e3))):(D=!1,H())});x.attachCustomKeyEventHandler(e=>{if("keydown"!==e.type)return!0;if((e.metaKey&&!e.ctrlKey&&!e.altKey&&"KeyC"===e.code||e.ctrlKey&&e.shiftKey&&"KeyC"===e.code)&&x.hasSelection()){var t;return null==(t=navigator.clipboard)||t.writeText(x.getSelection()).catch(()=>{}),x.clearSelection(),!1}return!0}),M(t),l=E(t,e=>{D?(z.push(e),(_+=e.length)>1048576&&(D=!1,H())):(x.write(e),U.current&&A&&(K=!0,A.scrollTop=A.scrollHeight))});let K=!1,Y=()=>{if(A){if(K){K=!1;return}A.scrollHeight-A.scrollTop-A.clientHeight<24?(U.current=!0,J(!0)):(U.current=!1,J(!1))}};null==A||A.addEventListener("scroll",Y,{passive:!0});let X=()=>{b&&(b.fit(),T(t,x.cols,x.rows))};window.addEventListener("resize",X),o=x.onData(e=>{N(t,e)}),T(t,x.cols,x.rows),n=()=>{clearTimeout(g),null==I||I.disconnect(),P(),W.dispose(),O&&clearTimeout(O),window.removeEventListener("resize",X),k&&j&&j.removeEventListener("loadingdone",w),null==A||A.removeEventListener("scroll",Y),null==o||o.dispose(),o=null,null==l||l(),L(t),x.dispose()}}).catch(e=>{console.error("[DirectTerminal] Failed to load xterm.js:",e),O("Failed to load terminal")}),()=>{e=!1,null==n||n()}},[p,t,f,C,S,E,N,T,M,L]),(0,o.useEffect)(()=>{if("connected"!==A)return;let e=B.current,r=R.current;e&&r&&(e.fit(),T(t,r.cols,r.rows))},[A,t,T]),(0,o.useEffect)(()=>{let e=R.current;if(!e)return;let t="dark"===p||"light"!==C;e.options.theme=t?S.dark:S.light,e.options.minimumContrastRatio=t?1:7},[p,C,S]),(0,o.useEffect)(()=>{let e=R.current,r=B.current;if(e&&r){e.options.fontSize=q;try{localStorage.setItem(d,String(q))}catch(e){}r.fit(),T(t,e.cols,e.rows)}},[q,t,T]),(0,o.useEffect)(()=>{let e=B.current,r=R.current,n=F.current;if(!e||!r||"connected"!==P.current||!n)return;let o=0,l=!1,a=0,s=-1,i=()=>{if(l)return;o++;let c=n.getBoundingClientRect().height,d=s>=0&&1>Math.abs(c-s);if(s=c,!d&&o<60){a=requestAnimationFrame(i);return}r.refresh(0,r.rows-1),e.fit(),r.refresh(0,r.rows-1),T(t,r.cols,r.rows)};a=requestAnimationFrame(i);let c=e=>{l||e.target===n.parentElement&&(o=0,s=-1,setTimeout(()=>{l||(a=requestAnimationFrame(i))},50))},d=n.parentElement;null==d||d.addEventListener("transitionend",c);let u=setTimeout(()=>{l||(o=0,s=-1,i())},300),h=setTimeout(()=>{l||(o=0,s=-1,i())},600);return()=>{l=!0,cancelAnimationFrame(a),null==d||d.removeEventListener("transitionend",c),clearTimeout(u),clearTimeout(h)}},[I,t,T]);let G="var(--color-accent)",Z=D?"error":A,Q="dark"===p||"light"!==C,$=(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("button",{onClick:()=>Y(e=>Math.max(9,e-1)),disabled:q<=9,className:"w-5 h-5 text-xs flex items-center justify-center rounded hover:bg-white/10 disabled:opacity-40 disabled:cursor-not-allowed transition-colors","aria-label":"Decrease font size",children:"−"}),(0,n.jsxs)("span",{className:"w-9 text-center text-xs font-medium text-[var(--color-text-secondary)]",children:[q,"px"]}),(0,n.jsx)("button",{onClick:()=>Y(e=>Math.min(18,e+1)),disabled:q>=18,className:"w-5 h-5 text-xs flex items-center justify-center rounded hover:bg-white/10 disabled:opacity-40 disabled:cursor-not-allowed transition-colors","aria-label":"Increase font size",children:"+"})]}),ee=(0,n.jsx)("button",{onClick:()=>z(!I),className:(0,s.cn)("flex items-center gap-1 px-2 py-0.5 text-[11px] text-[var(--color-text-tertiary)] transition-colors hover:bg-[var(--color-bg-subtle)] hover:text-[var(--color-text-primary)]",!b&&!g&&"ml-auto"),"aria-label":I?"exit fullscreen":"fullscreen",children:I?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M8 3v3a2 2 0 01-2 2H3m18 0h-3a2 2 0 01-2-2V3m0 18v-3a2 2 0 012-2h3M3 16h3a2 2 0 012 2v3"})}),"exit fullscreen"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M8 3H5a2 2 0 00-2 2v3m18 0V5a2 2 0 00-2-2h-3m0 18h3a2 2 0 002-2v-3M3 16v3a2 2 0 002 2h3"})}),"fullscreen"]})});return(0,n.jsxs)("div",{className:(0,s.cn)("overflow-hidden border border-[var(--color-border-default)] flex flex-col",I?"fixed inset-0 z-50 rounded-none border-0":"relative h-full",Q?"bg-[#0a0a0f]":"bg-[#fafafa]",g&&"border-0"),children:[g?null:(0,n.jsxs)("div",{className:"terminal-chrome-bar flex items-center gap-2 border-b border-[var(--color-border-subtle)] bg-[var(--color-bg-elevated)] px-3 py-2",children:[(0,n.jsx)("span",{className:"terminal-chrome-pane-label",children:"TERMINAL"}),(0,n.jsxs)("div",{className:"terminal-chrome-identity",children:[(0,n.jsx)("span",{className:"terminal-chrome-session-id font-[var(--font-mono)] text-[11px]",style:{color:G},children:t}),(0,n.jsxs)("div",{className:"terminal-chrome-status-row",children:[(0,n.jsx)("div",{className:(0,s.cn)("h-2 w-2 shrink-0 rounded-full","connected"===Z?"bg-[var(--color-status-ready)]":"error"===Z||"disconnected"===Z?"bg-[var(--color-status-error)]":"bg-[var(--color-status-attention)] animate-[pulse_1.5s_ease-in-out_infinite]")}),(0,n.jsx)("span",{className:(0,s.cn)("text-[10px] font-medium uppercase tracking-[0.06em]","connected"===Z?"text-[var(--color-status-ready)]":"error"===Z||"disconnected"===Z?"text-[var(--color-status-error)]":"text-[var(--color-text-tertiary)]"),children:"connected"===Z?"Connected":"error"===Z?null!=D?D:"Error":"disconnected"===Z?"Disconnected":"Connecting…"}),(0,n.jsx)("span",{className:"px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-[0.06em]",style:{color:G,background:"color-mix(in srgb, ".concat(G," 12%, transparent)")},children:"XDA"})]})]}),(0,n.jsx)("div",{className:"flex-1"}),$,b?(0,n.jsx)("button",{onClick:V,disabled:_||"connected"!==A,title:"Restart OpenCode session (/exit then resume mapped session)","aria-label":"Restart OpenCode session",className:"flex items-center gap-1 px-2 py-0.5 text-[11px] text-[var(--color-text-tertiary)] transition-colors hover:bg-[var(--color-bg-subtle)] hover:text-[var(--color-text-primary)] disabled:cursor-not-allowed disabled:opacity-70",children:_?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3 animate-spin",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M12 3a9 9 0 109 9"})}),"restarting"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 11-2.64-6.36"}),(0,n.jsx)("path",{d:"M21 3v6h-6"})]}),"restart"]})}):null,W?(0,n.jsx)("span",{className:"max-w-[40ch] truncate text-[10px] font-medium text-[var(--color-status-error)]",title:W,children:W}):null,ee]}),g?(0,n.jsxs)("div",{className:"absolute right-3 top-3 z-10 flex items-center gap-1 rounded-[6px] border border-[var(--color-border-subtle)] bg-[color-mix(in_srgb,var(--color-bg-elevated)_92%,transparent)] px-1.5 py-1 shadow-[0_8px_24px_rgba(0,0,0,0.18)] backdrop-blur-sm",children:[b?(0,n.jsx)("button",{onClick:V,disabled:_||"connected"!==A,title:"Restart OpenCode session (/exit then resume mapped session)","aria-label":"Restart OpenCode session",className:"flex items-center gap-1 px-2 py-0.5 text-[11px] text-[var(--color-text-tertiary)] transition-colors hover:bg-[var(--color-bg-subtle)] hover:text-[var(--color-text-primary)] disabled:cursor-not-allowed disabled:opacity-70",children:_?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3 animate-spin",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M12 3a9 9 0 109 9"})}),"restarting"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 11-2.64-6.36"}),(0,n.jsx)("path",{d:"M21 3v6h-6"})]}),"restart"]})}):null,ee]}):null,(0,n.jsxs)("div",{className:"relative flex-1 min-h-0 flex flex-col",children:[X?null:(0,n.jsx)("button",{type:"button",onClick:()=>{U.current=!0,J(!0);let e=R.current;if(e){var t;let r=null==(t=e.element)?void 0:t.querySelector(".xterm-viewport");r&&(r.scrollTop=r.scrollHeight)}},className:"absolute bottom-3 right-3 z-20 flex h-8 w-8 items-center justify-center rounded-full border border-[var(--color-border-default)] bg-[var(--color-bg-elevated)] text-[var(--color-text-primary)] shadow-md active:scale-95","aria-label":"Jump to latest",title:"Jump to latest",children:(0,n.jsx)("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M19 14l-7 7m0 0l-7-7m7 7V3"})})}),(0,n.jsx)("div",{ref:F,className:"w-full flex flex-col flex-1 min-h-0 overflow-hidden"})]})]})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4465],{2466:(e,s,r)=>{r.d(s,{I:()=>a});let a=(0,r(6749).createContext)(null)},4465:(e,s,r)=>{r.d(s,{Dashboard:()=>A});var a=r(3817),t=r(6749),n=r(8713),o=r.n(n),l=r(7594),i=r(9120),c=r(545),d=r(4901),h=r(7387),x=r(4906),u=r(1237),p=r(8450);let m=(0,t.memo)(function(e){var s,r,n,o,l,i;let{session:m,onSend:v,onKill:g,onMerge:b,onRestore:j}=e,[f,_]=(0,t.useState)(!1),[k,y]=(0,t.useState)(null),[N,w]=(0,t.useState)(null),[C,M]=(0,t.useState)(null),[S,P]=(0,t.useState)(null),[R,W]=(0,t.useState)(!1),[I,T]=(0,t.useState)(""),B=(0,t.useRef)(null),D=(0,t.useRef)(null),A=(0,c.ng)(m),O=m.pr,F=async e=>{let s=e.trim();if(!s||null!==C)return!1;M(s),P(null);try{return await Promise.resolve(null==v?void 0:v(m.id,s)),P(s),D.current&&clearTimeout(D.current),D.current=setTimeout(()=>P(null),2e3),!0}catch(e){return!1}finally{M(null)}},L=async e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),await F(I)&&T(""))};(0,t.useEffect)(()=>()=>{B.current&&clearTimeout(B.current),D.current&&clearTimeout(D.current)},[]);let E=async(e,s)=>{if(null===k){y(e),w(null);try{await Promise.resolve(null==v?void 0:v(m.id,s)),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>y(null),2e3)}catch(s){y(null),w(e),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>w(null),2e3)}}},H=!!O&&(0,c.fZ)(O),K=!!O&&(0,c.sZ)(O),Z=function(e){var s,r,t,n,o;let l=e.pr;if(!l||"open"!==l.state||(0,c.fZ)(l)||(0,c.sZ)(l))return[];let i=e.metadata,d=[],h=null!=(r=null==(s=e.lifecycle)?void 0:s.prReason)?r:null,x=i.status,u=l.ciStatus===c.U1.FAILING||"ci_failing"===h||"ci_failed"===x,p="changes_requested"===l.reviewDecision||"changes_requested"===h||"changes_requested"===x,m=!l.mergeability.noConflicts;if(u){let e=l.ciChecks.find(e=>"failed"===e.status),s=l.ciChecks.filter(e=>"failed"===e.status).length;0===s&&l.ciStatus!==c.U1.FAILING?d.push({key:"ci-fail",type:"ci",icon:"✗",label:"CI failing",url:l.url+"/checks",notified:!!i.lastCIFailureDispatchHash,actionLabel:"Ask to fix",actionMessage:"Please fix the failing CI checks on ".concat(l.url)}):0===s?d.push({key:"ci-unknown",type:"ci",icon:"?",label:"CI unknown",url:l.url+"/checks"}):d.push({key:"ci-fail",type:"ci",icon:"✗",count:s,label:"check".concat(s>1?"s":""," failing"),url:null!=(t=null==e?void 0:e.url)?t:l.url+"/checks",notified:!!i.lastCIFailureDispatchHash,actionLabel:"Ask to fix",actionMessage:"Please fix the failing CI checks on ".concat(l.url)})}if(p?d.push({key:"changes",type:"changes",icon:"↻",label:"changes requested",url:l.url,notified:!!i.lastPendingReviewDispatchHash,actionLabel:"Ask to address",actionMessage:"Please address the requested changes on ".concat(l.url)}):l.isDraft||"pending"!==l.reviewDecision&&"none"!==l.reviewDecision||d.push({key:"review",type:"review",icon:(0,a.jsxs)("svg",{width:"9",height:"9",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),(0,a.jsx)("circle",{cx:"9",cy:"7",r:"4"}),(0,a.jsx)("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75"})]}),label:"needs review",url:l.url,actionLabel:"Ask to post",actionMessage:"Post ".concat(l.url," on slack asking for a review.")}),m&&d.push({key:"conflict",type:"conflict",icon:"⚠",label:"merge conflict",url:l.url,notified:"true"===i.lastMergeConflictDispatched,actionLabel:"Ask to fix",actionMessage:"Please resolve the merge conflicts on ".concat(l.url," by rebasing on the base branch")}),l.unresolvedThreads>0){let e=null!=(o=null==(n=l.unresolvedComments[0])?void 0:n.url)?o:l.url+"/files";d.push({key:"comments",type:"comment",icon:"\uD83D\uDCAC",label:"unresolved comments",count:l.unresolvedThreads,url:e,actionLabel:"Ask to resolve",actionMessage:"Please address all unresolved review comments on ".concat(l.url)})}return d}(m),U=!H&&(null==O?void 0:O.mergeability.mergeable)&&"open"===O.state,q=(0,c.nH)(m),z=(0,c.wy)(m),V=(0,h.Pn)(m),G=(n=m,o=A,U||"merge"===o?"mergeable":(null==(l=n.lifecycle)?void 0:l.sessionState)==="detecting"?"detecting":"respond"===o?(0,c.Ou)(n):(null==(i=n.lifecycle)?void 0:i.prReason)==="ci_failing"||"ci_failed"===n.status?"ci failing":"review"===o?(0,c.of)(n):(0,c.Ou)(n)),J=H||!O||K?[]:O.ciChecks.filter(e=>"passed"===e.status).slice(0,3),$=(0,c.dG)(m)||"done"===A,Q=m.lifecycle?["Session ".concat((0,c.Ou)(m)),"PR ".concat((0,c.of)(m)),"Runtime ".concat((0,c.Kw)(m))].join(" \xb7 "):null,X=(0,c.p$)(m),Y=m.issueLabel?"".concat(m.issueLabel).concat(m.issueTitle?" \xb7 ".concat(m.issueTitle):""):null!=(s=m.issueTitle)?s:m.summary&&m.summary!==V?m.summary:null,ee=U?"session-card--merge-frame":Z.length>0?"session-card--alert-frame":"session-card--fixed",es=U?"session-card--accent-merge":"working"===A?"session-card--accent-working":"respond"===A?"session-card--accent-respond":"review"===A||"pending"===A?"session-card--accent-attention":"session-card--accent-default";if($){let e=function(e){var s,r,t,n;let o=e.activity,l=e.status,i=null!=(n=null==(s=e.lifecycle)?void 0:s.prState)?n:null==(r=e.pr)?void 0:r.state;return"merged"===i||"merged"===l?{label:"merged",pillClass:"done-status-pill--merged",icon:(0,a.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",className:"h-3 w-3",children:(0,a.jsx)("path",{d:"M20 6 9 17l-5-5"})})}:"closed"===i?{label:"closed",pillClass:"done-status-pill--exited",icon:(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",className:"h-3 w-3",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,a.jsx)("path",{d:"M9 12h6"})]})}:(null==(t=e.lifecycle)?void 0:t.sessionState)==="terminated"||"killed"===l||"terminated"===l?{label:(0,c.Ou)(e),pillClass:"done-status-pill--killed",icon:(0,a.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",className:"h-3 w-3",children:(0,a.jsx)("path",{d:"M18 6 6 18M6 6l12 12"})})}:{label:"exited"===o?"exited":(0,c.Ou)(e),pillClass:"done-status-pill--exited",icon:(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",className:"h-3 w-3",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,a.jsx)("path",{d:"M9 12h6"})]})}}(m);return(0,a.jsxs)("div",{className:(0,d.cn)("session-card-done",f&&"done-expanded"),onClick:e=>{e.target.closest("a, button, textarea")||_(!f)},children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3.5 pt-3 pb-1.5",children:[(0,a.jsxs)("span",{className:(0,d.cn)("done-status-pill",e.pillClass),children:[e.icon,e.label]}),(0,a.jsx)("span",{className:"font-[var(--font-mono)] text-[10px] tracking-wide text-[var(--color-text-muted)]",children:m.id}),(0,a.jsx)("div",{className:"flex-1"}),z&&(0,a.jsxs)("button",{onClick:e=>{e.stopPropagation(),null==j||j(m.id)},className:"done-restore-btn",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",className:"h-3 w-3",children:[(0,a.jsx)("polyline",{points:"1 4 1 10 7 10"}),(0,a.jsx)("path",{d:"M3.51 15a9 9 0 1 0 2.13-9.36L1 10"})]}),"restore"]})]}),(0,a.jsx)("div",{className:"px-3.5 pb-2",children:(0,a.jsx)("p",{className:"session-card-done__title text-[13px] font-semibold leading-snug [display:-webkit-box] [-webkit-box-orient:vertical] [-webkit-line-clamp:2] overflow-hidden",children:V})}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 px-3.5 pb-3",children:[m.branch&&(0,a.jsxs)("span",{className:"done-meta-chip font-[var(--font-mono)]",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",className:"h-2.5 w-2.5 opacity-50",children:[(0,a.jsx)("path",{d:"M6 3v12M18 9a3 3 0 0 1-3 3H9a3 3 0 0 0-3 3"}),(0,a.jsx)("circle",{cx:"18",cy:"6",r:"3"})]}),m.branch]}),O&&(0,a.jsxs)("a",{href:O.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"done-meta-chip font-[var(--font-mono)] font-bold text-[var(--color-text-primary)] no-underline underline-offset-2 hover:underline",children:["#",O.number]}),O&&!H&&(K?(0,a.jsx)("span",{className:"inline-block h-[14px] w-16 animate-pulse rounded-full bg-[var(--color-bg-subtle)]"}):(0,a.jsxs)("span",{className:"done-meta-chip font-[var(--font-mono)]",children:[(0,a.jsxs)("span",{className:"text-[var(--color-status-ready)]",children:["+",O.additions]})," ",(0,a.jsxs)("span",{className:"text-[var(--color-status-error)]",children:["-",O.deletions]})," ",(0,u.i_)(O.additions,O.deletions),(0,a.jsx)("span",{className:"sr-only",children:"+".concat(O.additions," -").concat(O.deletions," ").concat((0,u.i_)(O.additions,O.deletions))})]}))]}),f&&(0,a.jsxs)("div",{className:"done-expand-section px-3.5 py-3",children:[m.summary&&(null==O?void 0:O.title)&&m.summary!==O.title&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("div",{className:"done-detail-heading",children:[(0,a.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M4 6h16M4 12h16M4 18h10"})}),"Summary"]}),(0,a.jsx)("p",{className:"text-[12px] leading-relaxed text-[var(--color-text-secondary)]",children:m.summary})]}),m.issueUrl&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("div",{className:"done-detail-heading",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,a.jsx)("path",{d:"M12 8v4M12 16h.01"})]}),"Issue"]}),(0,a.jsxs)("a",{href:m.issueUrl,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"text-[12px] text-[var(--color-accent)] hover:underline",children:[m.issueLabel||m.issueUrl,m.issueTitle&&": ".concat(m.issueTitle)]})]}),O&&O.ciChecks.length>0&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("div",{className:"done-detail-heading",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("path",{d:"M9 12l2 2 4-4"}),(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"})]}),"CI Checks"]}),(0,a.jsx)(x.zm,{checks:O.ciChecks})]}),O&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("div",{className:"done-detail-heading",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4"}),(0,a.jsx)("path",{d:"M9 18c-4.51 2-5-2-7-2"})]}),"PR"]}),(0,a.jsxs)("p",{className:"text-[12px] text-[var(--color-text-secondary)]",children:[(0,a.jsx)("a",{href:O.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"hover:underline",children:O.title}),K?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("br",{}),(0,a.jsxs)("span",{className:"mt-1 inline-flex items-center gap-2 text-[10px] text-[var(--color-text-muted)]",children:[(0,a.jsx)("span",{className:"inline-block h-3 w-12 animate-pulse rounded bg-[var(--color-bg-subtle)]"}),(0,a.jsx)("span",{children:"PR details loading..."})]})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("br",{}),(0,a.jsxs)("span",{className:"mt-1 inline-flex items-center gap-2",children:[(0,a.jsxs)("span",{className:"done-meta-chip font-[var(--font-mono)]",children:[(0,a.jsxs)("span",{className:"text-[var(--color-status-ready)]",children:["+",O.additions]})," ",(0,a.jsxs)("span",{className:"text-[var(--color-status-error)]",children:["-",O.deletions]})]}),(0,a.jsx)("span",{className:"text-[var(--color-text-muted)]",children:"\xb7"}),(0,a.jsxs)("span",{className:"text-[10px] text-[var(--color-text-muted)]",children:["mergeable: ",O.mergeability.mergeable?"yes":"no"]}),(0,a.jsx)("span",{className:"text-[var(--color-text-muted)]",children:"\xb7"}),(0,a.jsxs)("span",{className:"text-[10px] text-[var(--color-text-muted)]",children:["review: ",O.reviewDecision]})]})]})]})]}),!O&&(0,a.jsx)("p",{className:"text-[12px] text-[var(--color-text-tertiary)]",children:"No PR associated with this session."})]})]})}let er=q?"exited":U||"merge"===A||"review"===A?"ready":"respond"===A?"waiting":"pending"===A?"idle":"working"===A?"working":"idle";return(0,a.jsxs)("div",{className:(0,d.cn)("session-card kanban-card-enter border",ee,es,U&&"card-merge-ready"),children:[(0,a.jsxs)("div",{className:"session-card__header",children:[(0,a.jsx)("span",{className:(0,d.cn)("card__adot","working"===er&&"card__adot--working","ready"===er&&"card__adot--ready","idle"===er&&"card__adot--idle","waiting"===er&&"card__adot--waiting","exited"===er&&"card__adot--exited")}),(0,a.jsx)("span",{className:"card__id",children:m.id}),(0,a.jsx)("div",{className:"flex-1"}),z&&(0,a.jsxs)("button",{onClick:e=>{e.stopPropagation(),null==j||j(m.id)},className:"inline-flex items-center gap-1 border border-[color-mix(in_srgb,var(--color-accent)_35%,transparent)] px-2 py-0.5 text-[11px] text-[var(--color-accent)] transition-colors hover:bg-[var(--color-tint-blue)]",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",className:"h-3 w-3",children:[(0,a.jsx)("polyline",{points:"1 4 1 10 7 10"}),(0,a.jsx)("path",{d:"M3.51 15a9 9 0 1 0 2.13-9.36L1 10"})]}),"restore"]}),!q&&(0,a.jsxs)("a",{href:(0,p.$l)(m.projectId,m.id,"#session-terminal-section"),onClick:e=>e.stopPropagation(),className:"session-card__control session-card__terminal-link",children:[(0,a.jsxs)("svg",{className:"session-card__control-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2"}),(0,a.jsx)("path",{d:"M6 10l4 2-4 2"}),(0,a.jsx)("path",{d:"M14 14h4"})]}),"terminal"]})]}),(0,a.jsxs)("div",{className:"session-card__body flex min-h-0 flex-1 flex-col",children:[(0,a.jsx)("div",{className:"card__title-wrap",children:(0,a.jsx)("p",{className:"card__title",children:V})}),(0,a.jsxs)("div",{className:"card__meta",children:[m.branch&&(0,a.jsx)("span",{className:"card__branch",children:m.branch}),m.branch&&O?(0,a.jsx)("span",{className:"card__meta-sep","aria-hidden":"true",children:"\xb7"}):null,O&&(0,a.jsxs)("a",{href:O.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"card__pr",children:["#",O.number]}),O&&!H&&(K?(0,a.jsx)("span",{className:"inline-block h-[14px] w-16 animate-pulse rounded-full bg-[var(--color-bg-subtle)]"}):(0,a.jsxs)("span",{className:"card__diff inline-flex items-center",children:[(0,a.jsxs)("span",{className:"card__diff-add",children:["+",O.additions]})," ",(0,a.jsxs)("span",{className:"card__diff-del",children:["-",O.deletions]})," ",(0,a.jsx)("span",{className:"card__diff-size",children:(0,u.i_)(O.additions,O.deletions)}),(0,a.jsx)("span",{className:"sr-only",children:"+".concat(O.additions," -").concat(O.deletions," ").concat((0,u.i_)(O.additions,O.deletions))})]}))]}),Y&&(0,a.jsx)("div",{className:"px-[10px] pb-[5px]",children:"merge"===A||U?(0,a.jsxs)("p",{className:"session-card__secondary session-card__secondary--merge",children:[(0,a.jsx)("svg",{width:"9",height:"9",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M20 6 9 17l-5-5"})}),(0,a.jsx)("span",{children:Y})]}):(0,a.jsx)("p",{className:"session-card__secondary",children:Y})}),Q&&(0,a.jsx)("div",{className:"px-[10px] pb-[5px]",children:(0,a.jsx)("p",{className:"text-[10px] leading-relaxed text-[var(--color-text-tertiary)]",children:Q})}),X&&(0,a.jsx)("div",{className:"px-[10px] pb-[6px]",children:(0,a.jsx)("p",{className:"inline-flex items-center gap-1 rounded-full border border-[color-mix(in_srgb,var(--color-status-attention)_35%,transparent)] bg-[color-mix(in_srgb,var(--color-status-attention)_9%,transparent)] px-2 py-1 text-[10px] leading-none text-[var(--color-status-attention)]",children:X})}),H&&(null==O?void 0:O.state)==="open"&&(0,a.jsx)("div",{className:"px-[10px] pb-[5px]",children:(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 text-[10px] text-[var(--color-text-muted)]",children:[(0,a.jsxs)("svg",{className:"h-3 w-3 text-[var(--color-text-tertiary)]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,a.jsx)("path",{d:"M12 8v4M12 16h.01"})]}),"PR data rate limited"]})}),J.length>0&&(0,a.jsx)("div",{className:"card__ci",children:J.map(e=>{let s=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("svg",{width:"8",height:"8",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M20 6 9 17l-5-5"})}),e.name]});return e.url?(0,a.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"ci-chip ci-chip--pass",onClick:e=>e.stopPropagation(),children:s},e.name):(0,a.jsx)("span",{className:"ci-chip ci-chip--pass",children:s},e.name)})}),!H&&Z.length>0&&(0,a.jsx)("div",{className:"card__alerts flex flex-col",children:Z.slice(0,3).map(e=>(0,a.jsxs)("div",{className:(0,d.cn)("alert-row","alert-row--".concat(e.type)),children:[(0,a.jsx)("span",{className:"alert-row__icon",children:e.icon}),(0,a.jsxs)("span",{className:"alert-row__text",children:[(0,a.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:[void 0!==e.count&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"font-bold",children:e.count})," "]}),e.label]}),e.notified&&(0,a.jsxs)("span",{className:"alert-row__notified",title:"Agent has been notified",children:[" ","\xb7 notified"]})]}),e.actionLabel&&(0,a.jsx)("button",{onClick:s=>{var r;s.stopPropagation(),E(e.key,null!=(r=e.actionMessage)?r:"")},disabled:k===e.key,className:"alert-row__action",children:k===e.key?"sent!":N===e.key?"failed":e.actionLabel})]},e.key))}),"respond"===A&&(0,a.jsxs)("div",{className:"quick-reply",onClick:e=>e.stopPropagation(),children:[m.summary&&!m.summaryIsFallback&&(0,a.jsxs)("div",{className:"card__agent-msg",children:[(0,a.jsx)("svg",{className:"card__agent-msg-icon",width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})}),(0,a.jsx)("span",{children:m.summary})]}),(0,a.jsx)("a",{href:(0,p.Nc)(m.projectId,m.id),onClick:e=>e.stopPropagation(),className:"card__view-context",children:"View current context →"}),(0,a.jsxs)("div",{className:"card__presets",children:[(0,a.jsx)("button",{className:"card__preset",onClick:()=>void F("continue"),disabled:null!==C,children:"continue"===C?"Sending...":"continue"===S?"Sent":"Continue"}),(0,a.jsx)("button",{className:"card__preset",onClick:()=>void F("abort"),disabled:null!==C,children:"abort"===C?"Sending...":"abort"===S?"Sent":"Abort"}),(0,a.jsx)("button",{className:"card__preset",onClick:()=>void F("skip"),disabled:null!==C,children:"skip"===C?"Sending...":"skip"===S?"Sent":"Skip"})]}),(0,a.jsx)("div",{className:"card__reply-wrap",children:(0,a.jsx)("textarea",{className:"card__reply",placeholder:null!==C?"Sending...":"Type a reply... (Enter to send)","aria-label":"Type a reply to the agent",value:I,onChange:e=>T(e.target.value),onKeyDown:e=>{L(e)},rows:1,disabled:null!==C})})]}),(0,a.jsxs)("div",{className:"session-card__footer",children:[(0,a.jsx)("span",{className:"card__status min-w-0 truncate",title:null!=(r=m.userPrompt)?r:void 0,children:!m.issueUrl&&m.userPrompt?m.userPrompt.length>60?m.userPrompt.slice(0,60)+"…":m.userPrompt:G}),U&&O?(0,a.jsxs)("button",{onClick:e=>{e.stopPropagation(),null==b||b(O.number)},className:"session-card__control session-card__merge-control",children:[(0,a.jsxs)("svg",{className:"session-card__control-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"6",cy:"6",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"18",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"6",r:"2"}),(0,a.jsx)("path",{d:"M8 6h5a3 3 0 0 1 3 3v7"})]}),"Merge PR #",O.number]}):!q&&(0,a.jsx)("button",{onClick:e=>{if(e.stopPropagation(),!R)return void W(!0);W(!1),null==g||g(m.id)},onMouseLeave:()=>W(!1),onBlur:()=>W(!1),"aria-label":R?"Confirm terminate session":"Terminate session",className:(0,d.cn)("session-card__control session-card__terminate btn--danger",R&&"is-confirming"),children:R?(0,a.jsx)("span",{className:"font-mono text-[10px] font-semibold tracking-[0.04em]",children:"kill?"}):(0,a.jsxs)("svg",{className:"session-card__control-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("path",{d:"M3 6h18"}),(0,a.jsx)("path",{d:"M8 6V4h8v2"}),(0,a.jsx)("path",{d:"M19 6l-1 14H6L5 6"})]})})]})]})]})},function(e,s){return e.session===s.session&&e.onSend===s.onSend&&e.onKill===s.onKill&&e.onMerge===s.onMerge&&e.onRestore===s.onRestore}),v={merge:{label:"Ready",emptyMessage:"Nothing cleared to land yet."},action:{label:"Action",emptyMessage:"No agents need your input."},respond:{label:"Respond",emptyMessage:"No agents need your input."},review:{label:"Review",emptyMessage:"No code waiting for review."},pending:{label:"Pending",emptyMessage:"Nothing blocked."},working:{label:"Working",emptyMessage:"No agents running."},done:{label:"Done",emptyMessage:"No completed sessions."}},g=(0,t.memo)(function(e){let{level:s,sessions:r,onSend:n,onKill:o,onMerge:l,onRestore:i,collapsed:c,onToggle:d,compactMobile:h,onPreview:x,resetKey:u}=e,p=v[s],g=void 0!==d,[j,f]=(0,t.useState)(!1),_=g&&h&&!j?r.slice(0,5):r,k=r.length-_.length;return((0,t.useEffect)(()=>{c&&f(!1)},[c]),(0,t.useEffect)(()=>{f(!1)},[u]),g)?(0,a.jsxs)("div",{className:"accordion-section".concat(c?" accordion-section--collapsed":" accordion-section--expanded"),"data-level":s,children:[(0,a.jsxs)("button",{type:"button",className:"accordion-header",onClick:()=>d(s),"aria-expanded":!c,"aria-controls":"accordion-body-".concat(s),children:[(0,a.jsx)("span",{className:"accordion-header__dot","data-level":s}),(0,a.jsx)("span",{className:"accordion-header__label",children:p.label}),(0,a.jsx)("span",{className:"accordion-header__count",children:r.length}),(0,a.jsx)("span",{className:"accordion-header__chevron","aria-hidden":"true",children:"▶"})]}),(0,a.jsx)("div",{id:"accordion-body-".concat(s),className:"accordion-body",children:r.length>0?(0,a.jsxs)("div",{className:h?"mobile-session-list":"flex flex-col gap-2 p-3",children:[_.map(e=>h?(0,a.jsx)(b,{session:e,level:s,onPreview:x},e.id):(0,a.jsx)(m,{session:e,onSend:n,onKill:o,onMerge:l,onRestore:i},e.id)),h&&k>0?(0,a.jsxs)("button",{type:"button",className:"mobile-session-list__view-all",onClick:()=>f(!0),children:["View all ",r.length]}):null]}):h?(0,a.jsx)("div",{className:"mobile-session-list",children:(0,a.jsx)("div",{className:"mobile-session-list__empty",children:p.emptyMessage})}):null})]}):(0,a.jsxs)("div",{className:"kanban-column","data-level":s,children:[(0,a.jsx)("div",{className:"kanban-column__header",children:(0,a.jsxs)("div",{className:"kanban-column__title-row",children:[(0,a.jsx)("div",{className:"kanban-column__dot","data-level":s}),(0,a.jsx)("span",{className:"kanban-column__title",children:p.label}),(0,a.jsx)("span",{className:"kanban-column__count",children:r.length})]})}),(0,a.jsx)("div",{className:"kanban-column-body",children:r.length>0?(0,a.jsx)("div",{className:"kanban-column__stack",children:r.map(e=>(0,a.jsx)(m,{session:e,onSend:n,onKill:o,onMerge:l,onRestore:i},e.id))}):null})]})},function(e,s){return e.level===s.level&&e.collapsed===s.collapsed&&e.onToggle===s.onToggle&&e.onSend===s.onSend&&e.onKill===s.onKill&&e.onMerge===s.onMerge&&e.onRestore===s.onRestore&&e.compactMobile===s.compactMobile&&e.onPreview===s.onPreview&&e.resetKey===s.resetKey&&e.sessions.length===s.sessions.length&&e.sessions.every((e,r)=>e===s.sessions[r])});function b(e){let{session:s,level:r,onPreview:t}=e,n=[s.branch,s.pr?"PR #".concat(s.pr.number):null,s.issueLabel].filter(Boolean);return(0,a.jsxs)("div",{className:"mobile-session-row",children:[(0,a.jsxs)("button",{type:"button",className:"mobile-session-row__preview",onClick:()=>null==t?void 0:t(s),"aria-label":"Open ".concat((0,h.Pn)(s)),children:[(0,a.jsxs)("div",{className:"mobile-session-row__line",children:[(0,a.jsx)("span",{className:"mobile-session-row__dot","data-level":r,"aria-hidden":"true"}),(0,a.jsx)("span",{className:"mobile-session-row__title",children:(0,h.Pn)(s)})]}),(0,a.jsx)("div",{className:"mobile-session-row__meta",children:n.length>0?n.join(" \xb7 "):"No branch or PR metadata"})]}),(0,a.jsxs)("div",{className:"mobile-session-row__side",children:[(0,a.jsx)(j,{session:s,level:r}),(0,a.jsx)("a",{href:(0,p.Nc)(s.projectId,s.id),className:"mobile-session-row__open","aria-label":"Go to ".concat((0,h.Pn)(s)),children:(0,a.jsxs)("svg",{className:"mobile-session-row__open-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M4 17V7a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z"}),(0,a.jsx)("path",{d:"m8 10 2 2-2 2M12 14h4"})]})})]})]})}function j(e){var s,r,t,n;let{session:o,level:l}=e,i=v[l].label.toLowerCase();return"merge"===l&&o.pr&&(0,c.QN)(o.pr)?i="ready":"action"===l?i="needs_input"===o.status?"needs input":"stuck"===o.status?"stuck":"errored"===o.status?"errored":"waiting_input"===o.activity?"waiting":"exited"===o.activity?"crashed":"blocked"===o.activity?"blocked":"ci_failed"===o.status?"ci failed":"changes_requested"===o.status?"changes":(null==(t=o.pr)?void 0:t.ciStatus)==="failing"?"ci failed":(null==(n=o.pr)?void 0:n.reviewDecision)==="changes_requested"?"changes":o.pr&&!o.pr.mergeability.noConflicts?"conflicts":"action":"respond"===l?i="waiting_input"===o.activity?"waiting":"needs input":"review"===l?i=(null==(s=o.pr)?void 0:s.reviewDecision)==="changes_requested"?"changes":"review":"pending"===l?i=(null==(r=o.pr)?void 0:r.unresolvedThreads)?"threads":"pending":"working"===l&&(i="idle"===o.activity?"idle":"active"),(0,a.jsx)("span",{className:"mobile-session-row__chip",children:i})}var f=r(7848),_=r(5309),k=r(5184),y=r(9293);let N=["Working","Pending","Review","Respond","Merge"];function w(e){let{message:s,orchestratorHref:r,onSpawnOrchestrator:t=null,spawnLabel:n="Spawn Orchestrator",spawnDisabled:o=!1}=e;return(0,a.jsxs)("div",{className:"board-wrapper",children:[(0,a.jsx)("div",{className:"kanban-ghost","aria-hidden":"true",children:N.map(e=>(0,a.jsx)("div",{className:"kanban-ghost__col",children:(0,a.jsx)("div",{className:"kanban-ghost__head",children:e})},e))}),(0,a.jsx)("div",{className:"board-center",children:(0,a.jsxs)("div",{className:"empty-state",role:"status",children:[(0,a.jsx)("div",{className:"empty-state__icon",children:(0,a.jsxs)("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5.5",r:"2.5",fill:"rgba(249,115,22,0.18)",stroke:"#f97316",strokeWidth:"1.5"}),(0,a.jsx)("circle",{cx:"5.5",cy:"17",r:"2.5",fill:"var(--color-bg-subtle)",stroke:"var(--color-border-strong)",strokeWidth:"1.5"}),(0,a.jsx)("circle",{cx:"18.5",cy:"17",r:"2.5",fill:"var(--color-bg-subtle)",stroke:"var(--color-border-strong)",strokeWidth:"1.5"}),(0,a.jsx)("line",{x1:"12",y1:"8",x2:"6.7",y2:"14.8",stroke:"rgba(249,115,22,0.22)",strokeWidth:"1",strokeDasharray:"2.5 2"}),(0,a.jsx)("line",{x1:"12",y1:"8",x2:"17.3",y2:"14.8",stroke:"rgba(249,115,22,0.22)",strokeWidth:"1",strokeDasharray:"2.5 2"}),(0,a.jsx)("line",{x1:"7.8",y1:"17",x2:"16.2",y2:"17",stroke:"var(--color-border-subtle)",strokeWidth:"1",strokeDasharray:"2.5 2"})]})}),s?(0,a.jsx)("p",{className:"empty-state__text",children:s}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"empty-state__headline",children:"Ready to orchestrate"}),(0,a.jsx)("p",{className:"empty-state__hint",children:"Open the main orchestrator to start a session and fan out parallel agents across your codebase."}),r?(0,a.jsxs)("a",{href:r,className:"empty-state__cta",children:[(0,a.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,a.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,a.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),"Open Orchestrator"]}):t?(0,a.jsxs)("button",{type:"button",className:"empty-state__cta",onClick:t,disabled:o,children:[(0,a.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,a.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,a.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),n]}):null]})]})})]})}var C=r(2446);function M(e){let{status:s}=e;return"connected"===s?null:"disconnected"===s?(0,a.jsx)("button",{type:"button",className:"connection-bar connection-bar--disconnected","aria-live":"assertive","aria-atomic":"true",onClick:()=>window.location.reload(),children:"Offline \xb7 tap to retry"}):(0,a.jsx)("div",{className:"connection-bar connection-bar--reconnecting",role:"status","aria-live":"polite","aria-atomic":"true",children:"Reconnecting…"})}let S=[/\bBearer\s+[A-Za-z0-9._\-+/=]+\b/gi,/\bsk-[A-Za-z0-9]{10,}\b/g,/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/g];function P(e){let{projectId:s}=e,{showToast:r}=(0,C.d)(),[n,o]=(0,t.useState)(!1),l=(0,t.useCallback)(async()=>{if(!n){o(!0);try{let e,a=await fetch("/api/observability",{credentials:"same-origin"});if(!a.ok)return void r("Could not fetch observability snapshot","error");let t=a.headers.get("x-correlation-id");try{e=await a.json()}catch(e){r("Could not parse observability snapshot","error");return}let n=function e(s){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakSet;if("string"==typeof s)return S.reduce((e,s)=>e.replace(s,"[REDACTED]"),s);if(Array.isArray(s))return s.map(s=>e(s,r));if(s&&"object"==typeof s){if(r.has(s))return"[Circular]";r.add(s);let a={};for(let[t,n]of Object.entries(s))a[t]=e(n,r);return a}return s}(function(e,s){if(!s||!e||"object"!=typeof e)return e;let r={...e},a=r.projects;if(a&&"object"==typeof a&&!Array.isArray(a)){let e=a[s];r.projects=void 0===e?{}:{[s]:e}}return r}(e,s)),o={copiedAt:new Date().toISOString(),pageHref:"".concat(window.location.origin).concat(window.location.pathname),projectId:null!=s?s:null,correlationId:t,userAgent:navigator.userAgent,observability:n};await navigator.clipboard.writeText(JSON.stringify(o,null,2)),r("Debug bundle copied to clipboard","success")}catch(e){r("Could not copy debug bundle","error")}finally{o(!1)}}},[n,s,r]);return(0,a.jsxs)("button",{type:"button",className:"orchestrator-btn flex min-h-[44px] min-w-[44px] items-center gap-2 px-4 py-2 text-[12px] font-semibold text-[var(--color-text-secondary)] transition-colors hover:bg-[var(--color-bg-hover)] disabled:opacity-50",onClick:()=>void l(),disabled:n,"aria-label":"Copy debug bundle for issue reports",children:[(0,a.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:[(0,a.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,a.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy debug info"]})}var R=r(2466);let W=["working","pending","action","merge"],I=["working","pending","review","respond","merge"],T=[];function B(e){var s;let{session:r,onRestore:t}=e,n=!r.summaryIsFallback&&r.summary||r.issueTitle||r.summary||r.id,o=(null==(s=r.pr)?void 0:s.state)==="merged"||"merged"===r.status,l="killed"===r.status||"terminated"===r.status,i=!c.N_.has(r.status);return(0,a.jsxs)("div",{className:"done-card",children:[(0,a.jsx)("p",{className:"done-card__title",children:n}),(0,a.jsxs)("div",{className:"done-card__meta",children:[(0,a.jsx)("span",{className:"done-card__badge ".concat(l?"done-card__badge--terminated":"done-card__badge--merged"),children:o?"merged":l?"terminated":"done"}),r.pr?(0,a.jsxs)("a",{href:r.pr.url,target:"_blank",rel:"noopener noreferrer",className:"done-card__pr",onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("svg",{width:"9",height:"9",fill:"none",stroke:"currentColor",strokeWidth:"1.8",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"18",cy:"18",r:"3"}),(0,a.jsx)("circle",{cx:"6",cy:"6",r:"3"}),(0,a.jsx)("path",{d:"M6 9v3a6 6 0 0 0 6 6h3"})]}),"#",r.pr.number]}):null,(0,a.jsx)("span",{className:"done-card__age",children:function(e){if(!e)return"just now";let s=new Date(e).getTime();if(!Number.isFinite(s))return"just now";let r=Date.now()-s;if(r<=0)return"just now";let a=Math.floor(r/1e3),t=Math.floor(a/60),n=Math.floor(t/60),o=Math.floor(n/24);return a<60?"".concat(a,"s ago"):t<60?"".concat(t,"m ago"):n<24?"".concat(n,"h ago"):"".concat(o,"d ago")}(r.lastActivityAt)}),i&&!o?(0,a.jsx)("button",{type:"button",className:"done-card__restore",onClick:e=>{e.stopPropagation(),t(r.id)},children:"Restore"}):null]})]})}function D(e){var s,r,n,d;let{initialSessions:h,projectId:x,projectName:u,projects:m=[],orchestrators:v,attentionZones:b="simple",dashboardLoadError:j}=e,N=null!=v?v:T,S=(0,k.eT)(),D="detailed"===b?I:W,A=(0,t.useMemo)(()=>{let e={};for(let s of h)e[s.id]=(0,c.ng)(s,b);return e},[h,b]),{sessions:F,connectionStatus:L,sseAttentionLevels:E,liveSessionsResolved:H}=(0,_.D)({initialSessions:h,project:x,muxSessions:(null==S?void 0:S.status)==="connected"?S.sessions:void 0,initialAttentionLevels:A,attentionZones:b}),K=j&&H?void 0:j,Z=(0,l.useSearchParams)(),U=null!=(s=Z.get("session"))?s:void 0,[q,z]=(0,t.useState)(!1),[V,G]=(0,t.useState)(N),[J,$]=(0,t.useState)([]),[Q,X]=(0,t.useState)({}),[Y,ee]=(0,t.useState)(!1),[es,er]=(0,t.useState)(!1),ea=(0,i.U)(i.D),et=Z.get("debug"),en=m.length>=1,{showToast:eo}=(0,C.d)(),[el,ei]=(0,t.useState)(!1),ec=(0,t.useRef)(F);ec.current=F;let ed=m.length>1&&en&&void 0===x,eh=(0,t.useMemo)(()=>{var e;return x&&null!=(e=V.find(e=>e.projectId===x))?e:null},[V,x]),ex=eh?(0,p.Nc)(eh.projectId,eh.id):null,eu=!ed&&!!x&&m.some(e=>e.id===x&&!e.resolveError)&&!ex,ep=x&&null!=(r=m.find(e=>e.id===x))?r:null,em=!!x&&J.includes(x),ev=x&&null!=(n=Q[x])?n:null,eg=(0,t.useMemo)(()=>ed||!U?F:F.filter(e=>e.id===U),[F,ed,U]);(0,t.useEffect)(()=>{G(e=>(function(e,s){let r=new Map(e.map(e=>[e.projectId,e]));for(let e of s)r.set(e.projectId,e);return[...r.values()]})(e,N))},[N]),(0,t.useEffect)(()=>{let e=(0,f.S)(E),s=null!=u?u:"ao";document.title=e>0?"".concat(s," (").concat(e," need attention)"):s},[E,u]),(0,t.useEffect)(()=>{er(!1)},[Z]);let eb=(0,t.useMemo)(()=>{let e={merge:[],action:[],respond:[],review:[],pending:[],working:[],done:[]};for(let s of eg)e[(0,c.ng)(s,b)].push(s);return e},[eg,b]),ej=(0,t.useMemo)(()=>{let e=new Map;for(let s of F){let r=e.get(s.projectId);if(r){r.push(s);continue}e.set(s.projectId,[s])}return e},[F]),ef=(0,t.useMemo)(()=>ed?m.map(e=>{var s,r;let a=null!=(s=ej.get(e.id))?s:[],t={merge:0,action:0,respond:0,review:0,pending:0,working:0,done:0};for(let e of a)t[(0,c.ng)(e,b)]++;return{project:e,orchestrator:null!=(r=V.find(s=>s.projectId===e.id))?r:null,sessionCount:a.length,openPRCount:a.filter(e=>{var s;return(null==(s=e.pr)?void 0:s.state)==="open"}).length,counts:t}}):[],[V,ed,b,m,ej]),e_=(0,t.useCallback)(async(e,s)=>{try{let r=await fetch("/api/sessions/".concat(encodeURIComponent(e),"/send"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:s})});if(!r.ok){let s=await r.text()||"Unknown error";console.error("Failed to send message to ".concat(e,":"),s),eo("Send failed: ".concat(s),"error");let a=Error(s);throw a.toastShown=!0,a}}catch(s){throw s instanceof Error&&"toastShown"in s&&s.toastShown||(console.error("Network error sending message to ".concat(e,":"),s),eo("Network error while sending message","error")),s}},[eo]),ek=(0,t.useCallback)(async e=>{try{let s=await fetch("/api/sessions/".concat(encodeURIComponent(e),"/kill"),{method:"POST"});if(s.ok)eo("Session terminated","success");else{let r=await s.text();console.error("Failed to kill ".concat(e,":"),r),eo("Terminate failed: ".concat(r),"error")}}catch(s){console.error("Network error killing ".concat(e,":"),s),eo("Network error while terminating session","error")}},[eo]),ey=(0,t.useCallback)(e=>{var s;let r=null!=(s=ec.current.find(s=>s.id===e))?s:null;r&&ek(r.id)},[ek]),eN=(0,t.useCallback)(async e=>{try{let s=await fetch("/api/prs/".concat(e,"/merge"),{method:"POST"});if(s.ok)eo("PR #".concat(e," merged"),"success");else{let r=await s.text();console.error("Failed to merge PR #".concat(e,":"),r),eo("Merge failed: ".concat(r),"error");return}}catch(s){console.error("Network error merging PR #".concat(e,":"),s),eo("Network error while merging PR","error")}},[eo]),ew=(0,t.useCallback)(async e=>{try{let s=await fetch("/api/sessions/".concat(encodeURIComponent(e),"/restore"),{method:"POST"});if(s.ok)eo("Session restored","success");else{let r=await s.text();console.error("Failed to restore ".concat(e,":"),r),eo("Restore failed: ".concat(r),"error")}}catch(s){console.error("Network error restoring ".concat(e,":"),s),eo("Network error while restoring session","error")}},[eo]),eC=async e=>{$(s=>s.includes(e.id)?s:[...s,e.id]),X(s=>{let{[e.id]:r,...a}=s;return a});try{let r=await fetch("/api/orchestrators",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:e.id})}),a=await r.json().catch(()=>null);if(!r.ok||!(null==a?void 0:a.orchestrator)){var s;throw Error(null!=(s=null==a?void 0:a.error)?s:"Failed to spawn orchestrator for ".concat(e.name))}let t=a.orchestrator;G(s=>{let r=s.filter(s=>s.projectId!==e.id);return r.push(t),r})}catch(r){let s=r instanceof Error?r.message:"Failed to spawn orchestrator";X(r=>({...r,[e.id]:s})),console.error("Failed to spawn orchestrator for ".concat(e.id,":"),r)}finally{$(s=>s.filter(s=>s!==e.id))}},eM=D.some(e=>eb[e].length>0),eS=!ed&&!eM&&!K,eP=K?(0,a.jsxs)("div",{className:"dashboard-alert mb-6 flex flex-col gap-1.5 border border-[color-mix(in_srgb,var(--color-status-error)_28%,transparent)] bg-[color-mix(in_srgb,var(--color-status-error)_10%,transparent)] px-3.5 py-2.5 text-[11px] md:mb-4",role:"alert","aria-live":"assertive",children:[(0,a.jsx)("span",{className:"font-semibold text-[var(--color-status-error)]",children:"Orchestrator failed to load"}),(0,a.jsx)("span",{className:"break-words text-[var(--color-text-secondary)]",children:K}),(0,a.jsxs)("span",{className:"text-[var(--color-text-secondary)]",children:["Confirm ",(0,a.jsx)("span",{className:"font-mono text-[10px]",children:"agent-orchestrator.yaml"})," exists and is valid, then run"," ",(0,a.jsx)("span",{className:"font-mono text-[10px]",children:"ao doctor"})," for diagnostics."]})]}):null,eR=(0,t.useMemo)(()=>F.some(e=>e.pr&&(0,c.fZ)(e.pr)),[F]),eW="agent orchestrator"===(null==u?void 0:u.trim().toLowerCase())?null!=(d=null!=x?x:u)?d:ed?"All projects":"Dashboard":null!=u?u:ed?"All projects":"Dashboard",eI=!ed&&eW.trim().length>0,eT=()=>{window.innerWidth<768?er(e=>!e):ee(e=>!e)};return(0,a.jsx)(R.I.Provider,{value:{onToggleSidebar:eT,mobileSidebarOpen:es},children:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(M,{status:L}),(0,a.jsxs)("div",{className:"dashboard-app-shell",children:[(0,a.jsxs)("header",{className:"dashboard-app-header",children:[en?(0,a.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle",onClick:eT,"aria-label":"Toggle sidebar",children:ea?(0,a.jsx)("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M4 6h16M4 12h16M4 18h16"})}):(0,a.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,a.jsx)("path",{d:"M9 3v18"})]})}):null,(0,a.jsxs)("div",{className:"dashboard-app-header__brand",children:[(0,a.jsx)("span",{className:"dashboard-app-header__brand-dot","aria-hidden":"true"}),(0,a.jsx)("span",{children:"Agent Orchestrator"})]}),eI?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"dashboard-app-header__sep","aria-hidden":"true"}),(0,a.jsx)("span",{className:"dashboard-app-header__project",children:eW})]}):null,ea||"1"!==et&&"true"!==et?null:(0,a.jsx)(P,{projectId:x}),(0,a.jsx)("div",{className:"dashboard-app-header__spacer"}),(0,a.jsx)("div",{className:"dashboard-app-header__actions",children:!ed&&ex?(0,a.jsxs)(o(),{href:ex,className:"dashboard-app-btn dashboard-app-btn--amber","aria-label":"Orchestrator",children:[(0,a.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,a.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,a.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),"Orchestrator"]}):eu&&ep?(0,a.jsxs)("button",{type:"button",className:"dashboard-app-btn dashboard-app-btn--amber","aria-label":"Spawn Orchestrator",onClick:()=>void eC(ep),disabled:em,children:[(0,a.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,a.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,a.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),em?"Spawning...":"Spawn Orchestrator"]}):null})]}),(0,a.jsxs)("div",{className:"dashboard-shell dashboard-shell--desktop".concat(Y?" dashboard-shell--sidebar-collapsed":""),children:[en&&(0,a.jsx)("div",{className:"sidebar-wrapper".concat(es?" sidebar-wrapper--mobile-open":""),children:(0,a.jsx)(y.u,{projects:m,sessions:F,activeProjectId:x,activeSessionId:U,collapsed:Y,onToggleCollapsed:()=>ee(e=>!e),onMobileClose:()=>er(!1)})}),es&&(0,a.jsx)("div",{className:"sidebar-mobile-backdrop",onClick:()=>er(!1)}),(0,a.jsxs)("main",{className:"dashboard-main dashboard-main--desktop overflow-y-auto",children:[(0,a.jsx)(f.u,{sseAttentionLevels:E,projectName:u}),(0,a.jsxs)("div",{className:"dashboard-main__subhead",children:[(0,a.jsx)("h1",{className:"dashboard-main__title",children:"Dashboard"}),(0,a.jsx)("p",{className:"dashboard-main__subtitle",children:"Live agent sessions, pull requests, and merge status."})]}),(0,a.jsxs)("div",{className:"dashboard-main__body",children:[eP,eR&&!q&&(0,a.jsxs)("div",{className:"dashboard-alert mb-4 flex items-center gap-2.5 border border-[color-mix(in_srgb,var(--color-status-attention)_25%,transparent)] bg-[var(--color-tint-yellow)] px-3.5 py-2.5 text-[11px] text-[var(--color-status-attention)]",children:[(0,a.jsxs)("svg",{className:"h-3.5 w-3.5 shrink-0",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,a.jsx)("path",{d:"M12 8v4M12 16h.01"})]}),(0,a.jsx)("span",{className:"flex-1",children:"GitHub API rate limited — PR data (CI status, review state, sizes) may be stale. Will retry automatically on next refresh."}),(0,a.jsx)("button",{onClick:()=>z(!0),className:"ml-1 shrink-0 opacity-60 hover:opacity-100","aria-label":"Dismiss",children:(0,a.jsx)("svg",{className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M18 6 6 18M6 6l12 12"})})})]}),ed&&(0,a.jsx)(O,{overviews:ef,onSpawnOrchestrator:eC,spawningProjectIds:J,spawnErrors:Q,attentionZones:b}),!ed&&eM&&(0,a.jsx)("div",{className:"kanban-board-wrap",children:(0,a.jsx)("div",{className:"kanban-board",children:D.map(e=>(0,a.jsx)(g,{level:e,sessions:eb[e],onSend:e_,onKill:ey,onMerge:eN,onRestore:ew},e))})}),eS?(0,a.jsx)(w,{orchestratorHref:ex,onSpawnOrchestrator:eu&&ep?()=>{eC(ep)}:null,spawnLabel:em?"Spawning...":"Spawn Orchestrator",spawnDisabled:em}):null,!ed&&ev?(0,a.jsx)("p",{className:"mt-3 text-[11px] text-[var(--color-status-error)]",children:ev}):null,!ed&&eb.done.length>0&&(0,a.jsxs)("div",{className:"done-bar mt-6",children:[(0,a.jsxs)("button",{type:"button",className:"done-bar__toggle",onClick:()=>ei(e=>!e),"aria-expanded":el,children:[(0,a.jsx)("svg",{className:"done-bar__chevron".concat(el?" done-bar__chevron--open":""),fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"m9 18 6-6-6-6"})}),(0,a.jsx)("span",{className:"done-bar__label",children:"Done / Terminated"}),(0,a.jsx)("span",{className:"done-bar__count",children:eb.done.length})]}),el&&(0,a.jsx)("div",{className:"done-bar__cards",children:eb.done.map(e=>(0,a.jsx)(B,{session:e,onRestore:ew},e.id))})]})]})]})]})]})]})})}function A(e){return(0,a.jsx)(C.t,{children:(0,a.jsx)(D,{...e})})}function O(e){let{overviews:s,onSpawnOrchestrator:r,spawningProjectIds:t,spawnErrors:n,attentionZones:l}=e;return(0,a.jsx)("div",{className:"mb-8 grid gap-4 md:grid-cols-2 xl:grid-cols-3",children:s.map(e=>{let{project:s,orchestrator:i,sessionCount:c,openPRCount:d,counts:h}=e,x=!!s.resolveError,u=(0,p.bn)(s.id);return(0,a.jsxs)("section",{className:"border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-4",children:[(0,a.jsxs)("div",{className:"mb-4 flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-[14px] font-semibold text-[var(--color-text-primary)]",children:s.name}),(0,a.jsx)("div",{className:"mt-1 text-[11px] text-[var(--color-text-muted)]",children:x?"Config needs repair":(0,a.jsxs)(a.Fragment,{children:[c," active session",1!==c?"s":"",d>0?" \xb7 ".concat(d," open PR").concat(1!==d?"s":""):""]})})]}),(0,a.jsx)(o(),{href:u,className:"border border-[var(--color-border-default)] px-3 py-1.5 text-[11px] font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-hover)] hover:no-underline",children:"Open project"})]}),(0,a.jsxs)("div",{className:"mb-4 flex flex-wrap gap-2",children:[(0,a.jsx)(F,{label:"Merge",value:h.merge,tone:"ready"}),"detailed"===l?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(F,{label:"Respond",value:h.respond,tone:"error"}),(0,a.jsx)(F,{label:"Review",value:h.review,tone:"orange"})]}):(0,a.jsx)(F,{label:"Action",value:h.action,tone:"orange"}),(0,a.jsx)(F,{label:"Pending",value:h.pending,tone:"attention"}),(0,a.jsx)(F,{label:"Working",value:h.working,tone:"working"})]}),(0,a.jsxs)("div",{className:"border-t border-[var(--color-border-subtle)] pt-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsx)("div",{className:"text-[11px] text-[var(--color-text-muted)]",children:x?"Project config could not be resolved":i?"Per-project orchestrator available":"No running orchestrator"}),x?(0,a.jsx)(o(),{href:u,className:"border border-[var(--color-border-default)] px-3 py-1.5 text-[11px] font-semibold text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-hover)] hover:no-underline",children:"Repair project"}):i?(0,a.jsxs)(o(),{href:(0,p.Nc)(i.projectId,i.id),className:"orchestrator-btn flex items-center gap-2 px-3 py-1.5 text-[11px] font-semibold hover:no-underline",children:[(0,a.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-[var(--color-accent)] opacity-80"}),"orchestrator"]}):(0,a.jsx)("button",{type:"button",onClick:()=>void r(s),disabled:t.includes(s.id),className:"orchestrator-btn px-3 py-1.5 text-[11px] font-semibold disabled:cursor-wait disabled:opacity-70",children:t.includes(s.id)?"Spawning...":"Spawn Orchestrator"})]}),n[s.id]?(0,a.jsx)("p",{className:"mt-2 text-[11px] text-[var(--color-status-error)]",children:n[s.id]}):null]})]},s.id)})})}function F(e){let{label:s,value:r,tone:t}=e;return(0,a.jsxs)("div",{className:"min-w-[78px] border border-[var(--color-border-subtle)] px-2.5 py-2",children:[(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-[0.08em] text-[var(--color-text-tertiary)]",children:s}),(0,a.jsx)("div",{className:"project-metric__value mt-1 text-[18px] font-semibold tabular-nums","data-tone":t,children:r})]})}}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3697,6078],{2286:(e,t,r)=>{"use strict";r.d(t,{D:()=>u,N:()=>d});var n=r(6749),o=(e,t,r,n,o,l,a,s)=>{let i=document.documentElement,c=["light","dark"];function u(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&l?o.map(e=>l[e]||e):o;r?(i.classList.remove(...n),i.classList.add(l&&l[t]?l[t]:t)):i.setAttribute(e,t)}),r=t,s&&c.includes(r)&&(i.style.colorScheme=r)}if(n)u(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;u(n)}catch(e){}},l=["light","dark"],a="(prefers-color-scheme: dark)",s="undefined"==typeof window,i=n.createContext(void 0),c={setTheme:e=>{},themes:[]},u=()=>{var e;return null!=(e=n.useContext(i))?e:c},d=e=>n.useContext(i)?n.createElement(n.Fragment,null,e.children):n.createElement(h,{...e}),m=["light","dark"],h=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:o=!0,enableColorScheme:s=!0,storageKey:c="theme",themes:u=m,defaultTheme:d=o?"system":"light",attribute:h="data-theme",value:g,children:b,nonce:y,scriptProps:w}=e,[S,k]=n.useState(()=>p(c,d)),[E,C]=n.useState(()=>"system"===S?x():S),T=g?Object.values(g):u,N=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&o&&(t=x());let n=g?g[t]:t,a=r?v(y):null,i=document.documentElement,c=e=>{"class"===e?(i.classList.remove(...T),n&&i.classList.add(n)):e.startsWith("data-")&&(n?i.setAttribute(e,n):i.removeAttribute(e))};if(Array.isArray(h)?h.forEach(c):c(h),s){let e=l.includes(d)?d:null,r=l.includes(t)?t:e;i.style.colorScheme=r}null==a||a()},[y]),j=n.useCallback(e=>{let t="function"==typeof e?e(S):e;k(t);try{localStorage.setItem(c,t)}catch(e){}},[S]),M=n.useCallback(e=>{C(x(e)),"system"===S&&o&&!t&&N("system")},[S,t]);n.useEffect(()=>{let e=window.matchMedia(a);return e.addListener(M),M(e),()=>e.removeListener(M)},[M]),n.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?k(e.newValue):j(d))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[j]),n.useEffect(()=>{N(null!=t?t:S)},[t,S]);let P=n.useMemo(()=>({theme:S,setTheme:j,forcedTheme:t,resolvedTheme:"system"===S?E:S,themes:o?[...u,"system"]:u,systemTheme:o?E:void 0}),[S,j,t,E,o,u]);return n.createElement(i.Provider,{value:P},n.createElement(f,{forcedTheme:t,storageKey:c,attribute:h,enableSystem:o,enableColorScheme:s,defaultTheme:d,value:g,themes:u,nonce:y,scriptProps:w}),b)},f=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:l,enableSystem:a,enableColorScheme:s,defaultTheme:i,value:c,themes:u,nonce:d,scriptProps:m}=e,h=JSON.stringify([l,r,i,t,u,c,a,s]).slice(1,-1);return n.createElement("script",{...m,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?d:"",dangerouslySetInnerHTML:{__html:"(".concat(o.toString(),")(").concat(h,")")}})}),p=(e,t)=>{let r;if(!s){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},v=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},x=e=>(e||(e=window.matchMedia(a)),e.matches?"dark":"light")},4901:(e,t,r)=>{"use strict";function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter(Boolean).join(" ")}r.d(t,{cn:()=>n})},5184:(e,t,r)=>{"use strict";r.d(t,{Ug:()=>s,eT:()=>i,i2:()=>c});var n=r(3817),o=r(6749),l=r(1806);let a=o.createContext(void 0);function s(){let e=o.useContext(a);if(!e)throw Error("useMux() must be used within <MuxProvider>");return e}function i(){return o.useContext(a)}function c(e){let{children:t}=e,r=(0,o.useRef)(null),s=(0,o.useRef)(new Map),i=(0,o.useRef)(new Set),[c,u]=(0,o.useState)("connecting"),[d,m]=(0,o.useState)([]),h=(0,o.useRef)(0),f=(0,o.useRef)(null),p=(0,o.useRef)({}),v=(0,o.useRef)(!1),x=(0,o.useCallback)(()=>{if(!r.current){u("connecting");try{let e=function(e){var t,r,n;let o=window.location,a="https:"===o.protocol?"wss:":"ws:",s=null!=(t=e.proxyWsPath)?t:l.env.NEXT_PUBLIC_TERMINAL_WS_PATH;if(s){let e=s.replace(/\/ws\/?$/,"");return"".concat(a,"//").concat(o.host).concat(e,"/mux")}if(""===o.port||"443"===o.port||"80"===o.port)return"".concat(a,"//").concat(o.hostname,"/ao-terminal-mux");let i=null!=(n=null!=(r=e.directTerminalPort)?r:l.env.NEXT_PUBLIC_DIRECT_TERMINAL_PORT)?n:"14801";return"".concat(a,"//").concat(o.hostname,":").concat(i,"/mux")}(p.current);console.log("[MuxProvider] Connecting to",e);let t=new WebSocket(e);r.current=t,t.addEventListener("open",()=>{if(v.current)return void t.close();for(let e of(console.log("[MuxProvider] Connected"),u("connected"),h.current=0,i.current)){let r={ch:"terminal",id:e,type:"open"};t.send(JSON.stringify(r))}t.send(JSON.stringify({ch:"subscribe",topics:["sessions"]}))}),t.addEventListener("message",e=>{try{let t=JSON.parse(e.data);if("terminal"===t.ch)if("data"===t.type){let e=s.current.get(t.id);if(e)for(let r of e)r(t.data)}else if("opened"===t.type)i.current.add(t.id);else if("exited"===t.type){i.current.delete(t.id);let e=s.current.get(t.id);if(e){let r="\r\n\x1b[31m[Terminal exited with code ".concat(t.code,"]\x1b[0m\r\n");for(let t of e)t(r)}}else"error"===t.type&&console.error("[MuxProvider] Terminal error for ".concat(t.id,":"),t.message);else"sessions"===t.ch&&"snapshot"===t.type&&m(t.sessions)}catch(e){console.error("[MuxProvider] Error processing message:",e)}}),t.addEventListener("error",e=>{console.error("[MuxProvider] WebSocket error:",e)}),t.addEventListener("close",()=>{if(console.log("[MuxProvider] Disconnected"),r.current===t&&(r.current=null),v.current)return;let e=Math.min(1e3*Math.pow(2,h.current),3e4);h.current+=1,u("reconnecting"),f.current=setTimeout(()=>{console.log("[MuxProvider] Reconnecting (attempt ".concat(h.current,")...")),x()},e)})}catch(e){console.error("[MuxProvider] Failed to create WebSocket:",e),u("disconnected")}}},[]);(0,o.useEffect)(()=>{v.current=!1;let e=!1;return(async()=>{try{let e=await fetch("/api/runtime/terminal");if(e.ok){let t=await e.json();p.current={directTerminalPort:function(e){if("string"!=typeof e&&"number"!=typeof e)return;let t=Number.parseInt(String(e),10);if(Number.isInteger(t)&&!(t<=0)&&!(t>65535))return String(t)}(t.directTerminalPort),proxyWsPath:function(e){if("string"!=typeof e)return;let t=e.trim();if(t.startsWith("/"))return t}(t.proxyWsPath)}}}catch(e){}e||x()})(),()=>{var t;e=!0,v.current=!0,f.current&&clearTimeout(f.current),null==(t=r.current)||t.close()}},[x]);let g=(0,o.useCallback)((e,t)=>{var n;let o=s.current.get(e);return o||(o=new Set,s.current.set(e,o)),o.add(t),i.current.has(e)||(null==(n=r.current)?void 0:n.readyState)!==WebSocket.OPEN||r.current.send(JSON.stringify({ch:"terminal",id:e,type:"open"})),()=>{let r=s.current.get(e);r&&(r.delete(t),0===r.size&&s.current.delete(e))}},[]),b=(0,o.useCallback)((e,t)=>{var n;(null==(n=r.current)?void 0:n.readyState)===WebSocket.OPEN&&r.current.send(JSON.stringify({ch:"terminal",id:e,type:"data",data:t}))},[]),y=(0,o.useCallback)(e=>{var t;i.current.add(e),(null==(t=r.current)?void 0:t.readyState)===WebSocket.OPEN&&r.current.send(JSON.stringify({ch:"terminal",id:e,type:"open"}))},[]),w=(0,o.useCallback)(e=>{var t;i.current.delete(e),(null==(t=r.current)?void 0:t.readyState)===WebSocket.OPEN&&r.current.send(JSON.stringify({ch:"terminal",id:e,type:"close"}))},[]),S=(0,o.useCallback)((e,t,n)=>{var o;(null==(o=r.current)?void 0:o.readyState)===WebSocket.OPEN&&r.current.send(JSON.stringify({ch:"terminal",id:e,type:"resize",cols:t,rows:n}))},[]),k=(0,o.useMemo)(()=>({subscribeTerminal:g,writeTerminal:b,openTerminal:y,closeTerminal:w,resizeTerminal:S,status:c,sessions:d}),[g,b,y,w,S,c,d]);return(0,n.jsx)(a.Provider,{value:k,children:t})}},5611:()=>{},6078:(e,t,r)=>{"use strict";r.r(t),r.d(t,{DirectTerminal:()=>f,buildTerminalThemes:()=>h,resolveMonoFontFamily:()=>m});var n=r(3817),o=r(6749),l=r(7594),a=r(2286),s=r(4901),i=r(5184);let c={deadZone:8,verticalDominance:1.5,maxLinesPerEvent:6,speedMultiplier:3,tmuxPrefix:"\x02"};r(5611);let u="ao-terminal-font-size",d='"JetBrains Mono", "SF Mono", Menlo, Monaco, "Courier New", monospace';function m(){try{let e=getComputedStyle(document.documentElement).getPropertyValue("--font-jetbrains-mono").trim();return e?"".concat(e,", ").concat(d):d}catch(e){return d}}function h(e){let t="#5b7ef8",r="rgba(91, 126, 248, 0.30)",n="rgba(91, 126, 248, 0.25)";return{dark:{background:"#0a0a0f",foreground:"#d4d4d8",cursor:t,cursorAccent:"#0a0a0f",selectionBackground:r,selectionInactiveBackground:"rgba(128, 128, 128, 0.2)",black:"#1a1a24",red:"#ef4444",green:"#22c55e",yellow:"#f59e0b",blue:"#5b7ef8",magenta:"#a371f7",cyan:"#22d3ee",white:"#d4d4d8",brightBlack:"#50506a",brightRed:"#f87171",brightGreen:"#4ade80",brightYellow:"#fbbf24",brightBlue:"#7b9cfb",brightMagenta:"#c084fc",brightCyan:"#67e8f9",brightWhite:"#eeeef5"},light:{background:"#fafafa",foreground:"#24292f",cursor:t,cursorAccent:"#fafafa",selectionBackground:n,selectionInactiveBackground:"rgba(128, 128, 128, 0.15)",black:"#24292f",red:"#b42318",green:"#1f7a3d",yellow:"#8a5a00",blue:"#175cd3",magenta:"#8e24aa",cyan:"#0b7285",white:"#4b5563",brightBlack:"#374151",brightRed:"#912018",brightGreen:"#176639",brightYellow:"#6f4a00",brightBlue:"#1d4ed8",brightMagenta:"#7b1fa2",brightCyan:"#155e75",brightWhite:"#374151"}}}function f(e){let{sessionId:t,startFullscreen:d=!1,variant:f="agent",appearance:p="theme",height:v="max(440px, calc(100dvh - 440px))",isOpenCodeSession:x=!1,reloadCommand:g,chromeless:b=!1,autoFocus:y=!1}=e,w=(0,l.useRouter)(),S=(0,l.usePathname)(),k=(0,l.useSearchParams)(),{resolvedTheme:E}=(0,a.D)(),C=(0,o.useMemo)(()=>h(f),[f]),{subscribeTerminal:T,writeTerminal:N,resizeTerminal:j,openTerminal:M,closeTerminal:P,status:L}=(0,i.Ug)(),A=(0,o.useRef)(null),R=(0,o.useRef)(null),O=(0,o.useRef)(null),I=(0,o.useRef)(L);I.current=L;let[W,F]=(0,o.useState)(d),[B,_]=(0,o.useState)(null),[z,D]=(0,o.useState)(!1),[H,J]=(0,o.useState)(null),[K,U]=(0,o.useState)(function(){try{let e=localStorage.getItem(u);if(e){let t=parseInt(e,10);if(!Number.isNaN(t))return Math.max(9,Math.min(18,t))}}catch(e){}return 13}()),q=(0,o.useRef)(!0),[X,Y]=(0,o.useState)(!0);async function V(){if(x&&!z){J(null),D(!0);try{let e=g;if(!e){let r=await fetch("/api/sessions/".concat(encodeURIComponent(t),"/remap"),{method:"POST"});if(!r.ok)throw Error("Failed to remap OpenCode session: ".concat(r.status));let n=await r.json();if("string"!=typeof n.opencodeSessionId||0===n.opencodeSessionId.length)throw Error("Missing OpenCode session id after remap");e="/exit\nopencode --session ".concat(n.opencodeSessionId,"\n")}let r=await fetch("/api/sessions/".concat(encodeURIComponent(t),"/send"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e})});if(!r.ok)throw Error("Failed to send reload command: ".concat(r.status))}catch(e){J(e instanceof Error?e.message:"Failed to reload OpenCode session")}finally{D(!1)}}}(0,o.useEffect)(()=>{let e=new URLSearchParams(k.toString());W?e.set("fullscreen","true"):e.delete("fullscreen");let t=e.toString()?"".concat(S,"?").concat(e.toString()):S;w.replace(t,{scroll:!1})},[W,S,w,k]),(0,o.useEffect)(()=>{if(!A.current)return;let e=!0,n=null,o=null,l=null;return Promise.all([r.e(4560).then(r.bind(r,5627)).then(e=>e.Terminal),r.e(2529).then(r.bind(r,2529)).then(e=>e.FitAddon),r.e(5491).then(r.bind(r,5491)).then(e=>e.WebLinksAddon),document.fonts.ready]).then(r=>{var a,s;let[i,u,d]=r;if(!e||!A.current)return;let h="dark"===p||"light"!==E,f=h?C.dark:C.light,v=new i({cursorBlink:!0,fontSize:K,fontFamily:m(),lineHeight:1.2,theme:f,minimumContrastRatio:h?1:7,scrollback:1e4,allowProposedApi:!0,fastScrollSensitivity:3,scrollSensitivity:1}),x=new u;v.loadAddon(x),O.current=x;let g=new d;v.loadAddon(g),v.parser.registerCsiHandler({prefix:">",final:"q"},()=>(v.write("\x1bP>|XTerm(370)\x1b\\"),console.log("[DirectTerminal] Sent XDA response for clipboard support"),!0)),v.parser.registerOscHandler(52,e=>{let t=e.split(";");if(t.length<2)return!1;let r=t[t.length-1];try{var n;let e=atob(r),t=Uint8Array.from(e,e=>e.charCodeAt(0)),o=new TextDecoder().decode(t);null==(n=navigator.clipboard)||n.writeText(o).catch(()=>{})}catch(e){}return!0}),v.open(A.current),R.current=v,y&&v.focus(),x.fit();let b=setTimeout(()=>{if(e&&O.current)try{O.current.fit(),j(t,v.cols,v.rows)}catch(e){}},100),w=()=>{if(e&&O.current&&R.current)try{var r,n;R.current.options.fontFamily=m(),null==(r=(n=R.current).clearTextureAtlas)||r.call(n),O.current.fit(),j(t,R.current.cols,R.current.rows)}catch(e){}},S="undefined"!=typeof document?document.fonts:void 0,k=!!S&&"function"==typeof S.addEventListener;k&&S.addEventListener("loadingdone",w);let L=null!=(s=null==(a=v.element)?void 0:a.querySelector(".xterm-viewport"))?s:null,I=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n={...c,...r},o=e.element;if(!o)return()=>{};let l=o.style.touchAction;o.style.touchAction="none";let a=o.querySelector(".xterm-viewport");a&&(a.style.touchAction="none");let s=0,i=0,u=0,d=null,m=!1,h=e=>{"touch"===e.pointerType&&(s=e.clientX,i=e.clientY,u=e.clientY,d=null,m=!1)},f=l=>{var a,c,h;if("touch"!==l.pointerType)return;let f=l.clientX-s,p=l.clientY-i,v=Math.abs(f),x=Math.abs(p);if(null===d){if(Math.max(v,x)<n.deadZone)return;if(x<n.verticalDominance*v){d=!1;return}d=!0;try{o.setPointerCapture(l.pointerId)}catch(e){}}if(!0!==d)return;l.preventDefault();let g=Math.round((l.clientY-u)/((null!=(h=e.options.fontSize)?h:13)*1.2));if(g>n.maxLinesPerEvent&&(g=n.maxLinesPerEvent),g<-n.maxLinesPerEvent&&(g=-n.maxLinesPerEvent),0===g)return;u=l.clientY;let b=g*n.speedMultiplier;if(g>0?null==(a=r.onScrollAway)||a.call(r):null==(c=r.onScrollTowardLatest)||c.call(r),"normal"===e.buffer.active.type)e.scrollLines(-b);else{m||(m=!0,t(n.tmuxPrefix+"["));let e=g>0?"\x1b[A":"\x1b[B",r=Math.abs(b);for(let n=0;n<r;n++)t(e)}},p=e=>{if("touch"===e.pointerType){try{o.hasPointerCapture(e.pointerId)&&o.releasePointerCapture(e.pointerId)}catch(e){}d=null}},v={capture:!0},x={capture:!0,passive:!1};return o.addEventListener("pointerdown",h,v),o.addEventListener("pointermove",f,x),o.addEventListener("pointerup",p,v),o.addEventListener("pointercancel",p,v),()=>{o.removeEventListener("pointerdown",h,v),o.removeEventListener("pointermove",f,x),o.removeEventListener("pointerup",p,v),o.removeEventListener("pointercancel",p,v),o.style.touchAction=l}}(v,e=>{N(t,e)},{onScrollAway:()=>{q.current=!1,Y(!1)},onScrollTowardLatest:()=>{q.current=!0,Y(!0)}}),W=null;A.current&&(W=new ResizeObserver(()=>{if(e&&O.current)try{O.current.fit(),j(t,v.cols,v.rows)}catch(e){}})).observe(A.current);let F=[],B=!1,_=null,z=0,D=()=>{_&&(clearTimeout(_),_=null),F.length>0&&(v.write(F.join("")),F.length=0,z=0)},H=v.onSelectionChange(()=>{v.hasSelection()?(B=!0,_||(_=setTimeout(()=>{B=!1,D()},5e3))):(B=!1,D())});v.attachCustomKeyEventHandler(e=>{if("keydown"!==e.type)return!0;if((e.metaKey&&!e.ctrlKey&&!e.altKey&&"KeyC"===e.code||e.ctrlKey&&e.shiftKey&&"KeyC"===e.code)&&v.hasSelection()){var t;return null==(t=navigator.clipboard)||t.writeText(v.getSelection()).catch(()=>{}),v.clearSelection(),!1}return!0}),M(t),l=T(t,e=>{B?(F.push(e),(z+=e.length)>1048576&&(B=!1,D())):(v.write(e),q.current&&L&&(J=!0,L.scrollTop=L.scrollHeight))});let J=!1,U=()=>{if(L){if(J){J=!1;return}L.scrollHeight-L.scrollTop-L.clientHeight<24?(q.current=!0,Y(!0)):(q.current=!1,Y(!1))}};null==L||L.addEventListener("scroll",U,{passive:!0});let X=()=>{x&&(x.fit(),j(t,v.cols,v.rows))};window.addEventListener("resize",X),o=v.onData(e=>{N(t,e)}),j(t,v.cols,v.rows),n=()=>{clearTimeout(b),null==W||W.disconnect(),I(),H.dispose(),_&&clearTimeout(_),window.removeEventListener("resize",X),k&&S&&S.removeEventListener("loadingdone",w),null==L||L.removeEventListener("scroll",U),null==o||o.dispose(),o=null,null==l||l(),P(t),v.dispose()}}).catch(e=>{console.error("[DirectTerminal] Failed to load xterm.js:",e),_("Failed to load terminal")}),()=>{e=!1,null==n||n()}},[p,t,f,E,C,T,N,j,M,P]),(0,o.useEffect)(()=>{if("connected"!==L)return;let e=O.current,r=R.current;e&&r&&(e.fit(),j(t,r.cols,r.rows))},[L,t,j]),(0,o.useEffect)(()=>{let e=R.current;if(!e)return;let t="dark"===p||"light"!==E;e.options.theme=t?C.dark:C.light,e.options.minimumContrastRatio=t?1:7},[p,E,C]),(0,o.useEffect)(()=>{let e=R.current,r=O.current;if(e&&r){e.options.fontSize=K;try{localStorage.setItem(u,String(K))}catch(e){}r.fit(),j(t,e.cols,e.rows)}},[K,t,j]),(0,o.useEffect)(()=>{let e=O.current,r=R.current,n=A.current;if(!e||!r||"connected"!==I.current||!n)return;let o=0,l=!1,a=0,s=-1,i=()=>{if(l)return;o++;let c=n.getBoundingClientRect().height,u=s>=0&&1>Math.abs(c-s);if(s=c,!u&&o<60){a=requestAnimationFrame(i);return}r.refresh(0,r.rows-1),e.fit(),r.refresh(0,r.rows-1),j(t,r.cols,r.rows)};a=requestAnimationFrame(i);let c=e=>{l||e.target===n.parentElement&&(o=0,s=-1,setTimeout(()=>{l||(a=requestAnimationFrame(i))},50))},u=n.parentElement;null==u||u.addEventListener("transitionend",c);let d=setTimeout(()=>{l||(o=0,s=-1,i())},300),m=setTimeout(()=>{l||(o=0,s=-1,i())},600);return()=>{l=!0,cancelAnimationFrame(a),null==u||u.removeEventListener("transitionend",c),clearTimeout(d),clearTimeout(m)}},[W,t,j]);let G="var(--color-accent)",Z=B?"error":L,$="dark"===p||"light"!==E,Q=(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("button",{onClick:()=>U(e=>Math.max(9,e-1)),disabled:K<=9,className:"w-5 h-5 text-xs flex items-center justify-center rounded hover:bg-white/10 disabled:opacity-40 disabled:cursor-not-allowed transition-colors","aria-label":"Decrease font size",children:"−"}),(0,n.jsxs)("span",{className:"w-9 text-center text-xs font-medium text-[var(--color-text-secondary)]",children:[K,"px"]}),(0,n.jsx)("button",{onClick:()=>U(e=>Math.min(18,e+1)),disabled:K>=18,className:"w-5 h-5 text-xs flex items-center justify-center rounded hover:bg-white/10 disabled:opacity-40 disabled:cursor-not-allowed transition-colors","aria-label":"Increase font size",children:"+"})]}),ee=(0,n.jsx)("button",{onClick:()=>F(!W),className:(0,s.cn)("flex items-center gap-1 px-2 py-0.5 text-[11px] text-[var(--color-text-tertiary)] transition-colors hover:bg-[var(--color-bg-subtle)] hover:text-[var(--color-text-primary)]",!x&&!b&&"ml-auto"),"aria-label":W?"exit fullscreen":"fullscreen",children:W?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M8 3v3a2 2 0 01-2 2H3m18 0h-3a2 2 0 01-2-2V3m0 18v-3a2 2 0 012-2h3M3 16h3a2 2 0 012 2v3"})}),"exit fullscreen"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M8 3H5a2 2 0 00-2 2v3m18 0V5a2 2 0 00-2-2h-3m0 18h3a2 2 0 002-2v-3M3 16v3a2 2 0 002 2h3"})}),"fullscreen"]})});return(0,n.jsxs)("div",{className:(0,s.cn)("overflow-hidden border border-[var(--color-border-default)] flex flex-col",W?"fixed inset-0 z-50 rounded-none border-0":"relative h-full",$?"bg-[#0a0a0f]":"bg-[#fafafa]",b&&"border-0"),children:[b?null:(0,n.jsxs)("div",{className:"terminal-chrome-bar flex items-center gap-2 border-b border-[var(--color-border-subtle)] bg-[var(--color-bg-elevated)] px-3 py-2",children:[(0,n.jsx)("span",{className:"terminal-chrome-pane-label",children:"TERMINAL"}),(0,n.jsxs)("div",{className:"terminal-chrome-identity",children:[(0,n.jsx)("span",{className:"terminal-chrome-session-id font-[var(--font-mono)] text-[11px]",style:{color:G},children:t}),(0,n.jsxs)("div",{className:"terminal-chrome-status-row",children:[(0,n.jsx)("div",{className:(0,s.cn)("h-2 w-2 shrink-0 rounded-full","connected"===Z?"bg-[var(--color-status-ready)]":"error"===Z||"disconnected"===Z?"bg-[var(--color-status-error)]":"bg-[var(--color-status-attention)] animate-[pulse_1.5s_ease-in-out_infinite]")}),(0,n.jsx)("span",{className:(0,s.cn)("text-[10px] font-medium uppercase tracking-[0.06em]","connected"===Z?"text-[var(--color-status-ready)]":"error"===Z||"disconnected"===Z?"text-[var(--color-status-error)]":"text-[var(--color-text-tertiary)]"),children:"connected"===Z?"Connected":"error"===Z?null!=B?B:"Error":"disconnected"===Z?"Disconnected":"Connecting…"}),(0,n.jsx)("span",{className:"px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-[0.06em]",style:{color:G,background:"color-mix(in srgb, ".concat(G," 12%, transparent)")},children:"XDA"})]})]}),(0,n.jsx)("div",{className:"flex-1"}),Q,x?(0,n.jsx)("button",{onClick:V,disabled:z||"connected"!==L,title:"Restart OpenCode session (/exit then resume mapped session)","aria-label":"Restart OpenCode session",className:"flex items-center gap-1 px-2 py-0.5 text-[11px] text-[var(--color-text-tertiary)] transition-colors hover:bg-[var(--color-bg-subtle)] hover:text-[var(--color-text-primary)] disabled:cursor-not-allowed disabled:opacity-70",children:z?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3 animate-spin",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M12 3a9 9 0 109 9"})}),"restarting"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 11-2.64-6.36"}),(0,n.jsx)("path",{d:"M21 3v6h-6"})]}),"restart"]})}):null,H?(0,n.jsx)("span",{className:"max-w-[40ch] truncate text-[10px] font-medium text-[var(--color-status-error)]",title:H,children:H}):null,ee]}),b?(0,n.jsxs)("div",{className:"absolute right-3 top-3 z-10 flex items-center gap-1 rounded-[6px] border border-[var(--color-border-subtle)] bg-[color-mix(in_srgb,var(--color-bg-elevated)_92%,transparent)] px-1.5 py-1 shadow-[0_8px_24px_rgba(0,0,0,0.18)] backdrop-blur-sm",children:[x?(0,n.jsx)("button",{onClick:V,disabled:z||"connected"!==L,title:"Restart OpenCode session (/exit then resume mapped session)","aria-label":"Restart OpenCode session",className:"flex items-center gap-1 px-2 py-0.5 text-[11px] text-[var(--color-text-tertiary)] transition-colors hover:bg-[var(--color-bg-subtle)] hover:text-[var(--color-text-primary)] disabled:cursor-not-allowed disabled:opacity-70",children:z?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3 animate-spin",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M12 3a9 9 0 109 9"})}),"restarting"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 11-2.64-6.36"}),(0,n.jsx)("path",{d:"M21 3v6h-6"})]}),"restart"]})}):null,ee]}):null,(0,n.jsxs)("div",{className:"relative flex-1 min-h-0 flex flex-col",children:[X?null:(0,n.jsx)("button",{type:"button",onClick:()=>{q.current=!0,Y(!0);let e=R.current;if(e){var t;let r=null==(t=e.element)?void 0:t.querySelector(".xterm-viewport");r&&(r.scrollTop=r.scrollHeight)}},className:"absolute bottom-3 right-3 z-20 flex h-8 w-8 items-center justify-center rounded-full border border-[var(--color-border-default)] bg-[var(--color-bg-elevated)] text-[var(--color-text-primary)] shadow-md active:scale-95","aria-label":"Jump to latest",title:"Jump to latest",children:(0,n.jsx)("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M19 14l-7 7m0 0l-7-7m7 7V3"})})}),(0,n.jsx)("div",{ref:A,className:"w-full flex flex-col flex-1 min-h-0 overflow-hidden"})]})]})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6607],{1712:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}});let a=s(1903)._(s(5864));function r(e,t){var s;let r={};"function"==typeof e&&(r.loader=e);let n={...r,...t};return(0,a.default)({...n,modules:null==(s=n.loadableGenerated)?void 0:s.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2466:(e,t,s)=>{s.d(t,{I:()=>a});let a=(0,s(6749).createContext)(null)},2537:(e,t,s)=>{s.d(t,{X:()=>l});var a=s(3817),r=s(8713),n=s.n(r);function l(e){let{ariaLabel:t,activeTab:s,dashboardHref:r,prsHref:l,showOrchestrator:i=!0,orchestratorHref:o=null}=e;return(0,a.jsxs)("nav",{className:"mobile-bottom-nav","aria-label":t,children:[(0,a.jsxs)(n(),{href:r,className:"mobile-bottom-nav__item","data-active":"dashboard"===s?"true":"false","aria-current":"dashboard"===s?"page":void 0,children:[(0,a.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M3 13h8V3H3zm10 8h8V11h-8zM3 21h8v-6H3zm10-10h8V3h-8z"})}),(0,a.jsx)("span",{children:"Dashboard"})]}),(0,a.jsxs)(n(),{href:l,className:"mobile-bottom-nav__item","data-active":"prs"===s?"true":"false","aria-current":"prs"===s?"page":void 0,children:[(0,a.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"})}),(0,a.jsx)("span",{children:"PRs"})]}),i?o?(0,a.jsxs)(n(),{href:o,className:"mobile-bottom-nav__item","data-active":"orchestrator"===s?"true":"false","aria-current":"orchestrator"===s?"page":void 0,children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M9 3H5a2 2 0 0 0-2 2v4m16 0V5a2 2 0 0 0-2-2h-4m0 18h4a2 2 0 0 0 2-2v-4M3 15v4a2 2 0 0 0 2 2h4"}),(0,a.jsx)("path",{d:"M9 9h6v6H9z"})]}),(0,a.jsx)("span",{children:"Orchestrator"})]}):(0,a.jsxs)("button",{type:"button",className:"mobile-bottom-nav__item",disabled:!0,children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M9 3H5a2 2 0 0 0-2 2v4m16 0V5a2 2 0 0 0-2-2h-4m0 18h4a2 2 0 0 0 2-2v-4M3 15v4a2 2 0 0 0 2 2h4"}),(0,a.jsx)("path",{d:"M9 9h6v6H9z"})]}),(0,a.jsx)("span",{children:"Orchestrator"})]}):null]})}},5468:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var s in t)Object.defineProperty(e,s,{enumerable:!0,get:t[s]})}(t,{bindSnapshot:function(){return l},createAsyncLocalStorage:function(){return n},createSnapshot:function(){return i}});let s=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class a{disable(){throw s}getStore(){}run(){throw s}exit(){throw s}enterWith(){throw s}static bind(e){return e}}let r="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function n(){return r?new r:new a}function l(e){return r?r.bind(e):a.bind(e)}function i(){return r?r.snapshot():function(e,...t){return e(...t)}}},5864:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let a=s(3817),r=s(6749),n=s(6943);function l(e){return{default:e&&"default"in e?e.default:e}}s(6418);let i={loader:()=>Promise.resolve(l(()=>null)),loading:null,ssr:!0},o=function(e){let t={...i,...e},s=(0,r.lazy)(()=>t.loader().then(l)),o=t.loading;function c(e){let l=o?(0,a.jsx)(o,{isLoading:!0,pastDelay:!0,error:null}):null,i=!t.ssr||!!t.loading,c=i?r.Suspense:r.Fragment,d=t.ssr?(0,a.jsxs)(a.Fragment,{children:[null,(0,a.jsx)(s,{...e})]}):(0,a.jsx)(n.BailoutToCSR,{reason:"next/dynamic",children:(0,a.jsx)(s,{...e})});return(0,a.jsx)(c,{...i?{fallback:l}:{},children:d})}return c.displayName="LoadableComponent",c}},6313:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return a.workAsyncStorageInstance}});let a=s(8394)},6418:(e,t,s)=>{function a(e){let{moduleIds:t}=e;return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return a}}),s(3817),s(4768),s(6313),s(5152)},6607:(e,t,s)=>{s.r(t),s.d(t,{default:()=>R});var a=s(3817),r=s(6749),n=s(7594),l=s(5425),i=s(9120),o=s(545),c=s(4901),d=s(9891),u=s(7387),h=s(2466),p=s(8450),m=s(9293),f=s(2537);let b=(0,d.default)(()=>Promise.all([s.e(8944),s.e(3697)]).then(s.bind(s,6078)).then(e=>({default:e.DirectTerminal})),{loadableGenerated:{webpack:()=>[6078]},ssr:!1,loading:()=>(0,a.jsx)("div",{className:"h-full w-full animate-pulse rounded bg-[var(--color-bg-primary)]"})}),v={active:{label:"Active",color:"var(--color-status-working)"},ready:{label:"Ready",color:"var(--color-status-ready)"},idle:{label:"Idle",color:"var(--color-status-idle)"},waiting_input:{label:"Waiting for input",color:"var(--color-status-attention)"},blocked:{label:"Blocked",color:"var(--color-status-error)"},exited:{label:"Exited",color:"var(--color-status-error)"}};function x(e){if(e.includes("\x3c!-- DESCRIPTION START --\x3e")||e.includes("### ")){let t=e.match(/###\s+(.+?)(?:\n|$)/),s=t?t[1].replace(/\*\*/g,"").trim():"Comment",a=e.match(/<!-- DESCRIPTION START -->\s*([\s\S]*?)\s*<!-- DESCRIPTION END -->/);return{title:s,description:a?a[1].trim():e.split("\n")[0]||"No description"}}return{title:"Comment",description:e.trim()}}function j(e){return"https://github.com/".concat(e.owner,"/").concat(e.repo,"/tree/").concat(e.branch)}function g(e){let{headline:t,crumbId:s,activityLabel:r,activityColor:n,branch:l,pr:i,crumbHref:o,crumbLabel:c,rightSlot:d}=e;return(0,a.jsxs)("div",{className:"session-detail-top-strip",children:[(0,a.jsxs)("div",{className:"session-detail-crumbs",children:[(0,a.jsxs)("a",{href:o,className:"session-detail-crumb-back",children:[(0,a.jsx)("svg",{className:"h-3 w-3 opacity-60",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M15 18l-6-6 6-6"})}),c]}),(0,a.jsx)("span",{className:"session-detail-crumb-sep",children:"/"}),(0,a.jsx)("span",{className:"session-detail-crumb-id",children:s}),(0,a.jsx)("span",{className:"session-detail-mode-badge",children:"orchestrator"})]}),(0,a.jsxs)("div",{className:"session-detail-identity",children:[(0,a.jsxs)("div",{className:"session-detail-identity__info",children:[(0,a.jsx)("h1",{className:"session-detail-identity__title",children:t}),(0,a.jsxs)("div",{className:"session-detail-identity__pills",children:[(0,a.jsxs)("div",{className:"session-detail-status-pill",children:[(0,a.jsx)("span",{className:"session-detail-status-pill__dot",style:{background:n}}),(0,a.jsx)("span",{className:"session-detail-status-pill__label",children:r})]}),l?i?(0,a.jsx)("a",{href:j(i),target:"_blank",rel:"noopener noreferrer",className:"session-detail-link-pill session-detail-link-pill--branch session-detail-link-pill--branch-link hover:no-underline",children:l}):(0,a.jsx)("span",{className:"session-detail-link-pill session-detail-link-pill--branch",children:l}):null,i?(0,a.jsxs)("a",{href:i.url,target:"_blank",rel:"noopener noreferrer",className:"session-detail-link-pill session-detail-link-pill--pr hover:no-underline",children:["PR #",i.number]}):null,i&&(i.additions>0||i.deletions>0)?(0,a.jsxs)("span",{className:"session-detail-link-pill session-detail-link-pill--diff",children:[(0,a.jsxs)("span",{className:"session-detail-diff--add",children:["+",i.additions]})," ",(0,a.jsxs)("span",{className:"session-detail-diff--del",children:["-",i.deletions]})]}):null]})]}),d?(0,a.jsx)("div",{className:"session-detail-identity__actions session-detail-identity__actions--custom",children:d}):null]})]})}async function y(e,t,s,a){try{let{title:a,description:r}=x(t.body),n="Please address this review comment:\n\nFile: ".concat(t.path,"\nComment: ").concat(a,"\nDescription: ").concat(r,"\n\nComment URL: ").concat(t.url,"\n\nAfter fixing, mark the comment as resolved at ").concat(t.url),l=await fetch("/api/sessions/".concat(encodeURIComponent(e),"/message"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:n})});if(!l.ok)throw Error("HTTP ".concat(l.status));s()}catch(e){console.error("Failed to send message to agent:",e),a()}}function w(e){let{zones:t,createdAt:s,headline:n,activityLabel:l,activityColor:i,branch:o,pr:c,crumbHref:d,crumbLabel:u}=e,[h,p]=(0,r.useState)("");(0,r.useEffect)(()=>{let e=()=>{let e=Date.now()-new Date(s).getTime(),t=Math.floor(e/36e5),a=Math.floor(e%36e5/6e4);p(t>0?"".concat(t,"h ").concat(a,"m"):"".concat(a,"m"))};e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[s]);let m=[{value:t.merge,label:"merge-ready",color:"var(--color-status-ready)",bg:"color-mix(in srgb, var(--color-status-ready) 10%, transparent)"},{value:t.respond,label:"responding",color:"var(--color-status-error)",bg:"color-mix(in srgb, var(--color-status-error) 10%, transparent)"},{value:t.review,label:"review",color:"var(--color-accent-orange)",bg:"color-mix(in srgb, var(--color-accent-orange) 10%, transparent)"},{value:t.working,label:"working",color:"var(--color-accent-blue)",bg:"color-mix(in srgb, var(--color-accent-blue) 10%, transparent)"},{value:t.pending,label:"pending",color:"var(--color-status-attention)",bg:"color-mix(in srgb, var(--color-status-attention) 10%, transparent)"},{value:t.done,label:"done",color:"var(--color-text-tertiary)",bg:"color-mix(in srgb, var(--color-text-tertiary) 14%, transparent)"}].filter(e=>e.value>0),f=t.merge+t.respond+t.review+t.working+t.pending+t.done;return(0,a.jsx)("div",{className:"mx-auto max-w-[1180px] px-5 pt-5 lg:px-8",children:(0,a.jsx)(g,{headline:n,crumbId:n,activityLabel:l,activityColor:i,branch:o,pr:c,crumbHref:d,crumbLabel:u,rightSlot:(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3 lg:justify-end",children:[(0,a.jsxs)("div",{className:"flex items-baseline gap-1.5 mr-2",children:[(0,a.jsx)("span",{className:"text-[22px] font-bold leading-none tabular-nums text-[var(--color-text-primary)]",children:f}),(0,a.jsx)("span",{className:"text-[11px] text-[var(--color-text-tertiary)]",children:"agents"})]}),(0,a.jsx)("div",{className:"h-5 w-px bg-[var(--color-border-subtle)] mr-1"}),m.length>0?m.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-2.5 py-1",style:{background:e.bg},children:[(0,a.jsx)("span",{className:"text-[15px] font-bold leading-none tabular-nums",style:{color:e.color},children:e.value}),(0,a.jsx)("span",{className:"text-[10px] font-medium",style:{color:e.color,opacity:.8},children:e.label})]},e.label)):(0,a.jsx)("span",{className:"text-[12px] text-[var(--color-text-tertiary)]",children:"no active agents"}),h&&(0,a.jsxs)("span",{className:"ml-auto font-[var(--font-mono)] text-[11px] text-[var(--color-text-tertiary)]",children:["up ",h]})]})})})}function N(e){var t,s,d,x;let{session:g,isOrchestrator:y=!1,orchestratorZones:N,projectOrchestratorId:k=null,projects:S=[],sidebarSessions:C=[],sidebarLoading:I=!1,sidebarError:M=!1,onRetrySidebar:P}=e,T=(0,n.useRouter)(),E=(0,n.useSearchParams)(),R=(0,i.U)(i.D),O="true"===E.get("fullscreen"),[D,A]=(0,r.useState)(!1),[F,L]=(0,r.useState)(!1),[H,B]=(0,r.useState)(!1),W=g.pr,U=o.CM.has(g.status),z=U&&!o.N_.has(g.status),J=null!=(d=g.activity&&v[g.activity])?d:{label:null!=(s=g.activity)?s:"unknown",color:"var(--color-text-muted)"},V=(0,u.Pn)(g),q=y?"orchestrator":"agent",G="opencode"===g.metadata.agent,Z="string"==typeof g.metadata.opencodeSessionId&&g.metadata.opencodeSessionId.length>0?g.metadata.opencodeSessionId:void 0,K=g.projectId?(0,p.bn)(g.projectId):"/",X=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/sessions/".concat(encodeURIComponent(g.id),"/kill"),{method:"POST"});if(!e.ok)throw Error("HTTP ".concat(e.status));if(k)return void T.push((0,p.Nc)(g.projectId,k));T.push(K)}catch(e){console.error("Failed to kill session:",e)}},[K,k,T,g.id,g.projectId]),Q=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/sessions/".concat(encodeURIComponent(g.id),"/restore"),{method:"POST"});if(!e.ok)throw Error("HTTP ".concat(e.status));window.location.reload()}catch(e){console.error("Failed to restore session:",e)}},[g.id]),$=!!W&&(0,o.QN)(W),[Y,ee]=(0,r.useState)(!1),et=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!Y)return;let e=e=>{et.current&&!et.current.contains(e.target)&&ee(!1)},t=e=>{"Escape"===e.key&&ee(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[Y]);let es=null!=(x=null==(t=S.find(e=>e.id===g.projectId))?void 0:t.name)?x:g.projectId,ea="agent orchestrator"!==es.trim().toLowerCase(),er=(0,r.useMemo)(()=>y?(0,p.Nc)(g.projectId,g.id):k?(0,p.Nc)(g.projectId,k):null,[y,k,g.id,g.projectId]);(0,r.useEffect)(()=>{let e=window.requestAnimationFrame(()=>B(!0));return()=>{window.cancelAnimationFrame(e),B(!1)}},[g.id]);let en=(0,r.useCallback)(()=>{R?L(e=>!e):A(e=>!e)},[R]);return(0,a.jsx)(h.I.Provider,{value:{onToggleSidebar:en,mobileSidebarOpen:F},children:(0,a.jsxs)("div",{className:"dashboard-app-shell",children:[(0,a.jsxs)("header",{className:"dashboard-app-header",children:[S.length>0?(0,a.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle",onClick:en,"aria-label":"Toggle sidebar",children:R?(0,a.jsx)("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M4 6h16M4 12h16M4 18h16"})}):(0,a.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,a.jsx)("path",{d:"M9 3v18"})]})}):null,(0,a.jsx)("div",{className:"dashboard-app-header__brand dashboard-app-header__brand--hide-mobile",children:(0,a.jsx)("span",{children:"Agent Orchestrator"})}),ea&&(0,a.jsx)("span",{className:"dashboard-app-header__sep topbar-desktop-only","aria-hidden":"true"}),(0,a.jsxs)("div",{className:"topbar-project-pills-group",children:[(0,a.jsxs)("div",{className:"topbar-project-line",children:[ea&&(0,a.jsx)("span",{className:"dashboard-app-header__project",children:es}),!y&&(0,a.jsx)("span",{className:"dashboard-app-header__session-id topbar-mobile-only",children:g.id})]}),!y&&(0,a.jsxs)("div",{className:"topbar-session-pills",children:[(0,a.jsxs)("div",{className:(0,c.cn)("topbar-status-pill","topbar-status-pill--".concat(J.label.toLowerCase().replace(/\s+/g,"-"))),children:[(0,a.jsx)("span",{className:"topbar-status-pill__dot",style:{background:J.color}}),(0,a.jsx)("span",{className:"topbar-status-pill__label",children:J.label})]}),g.branch?W?(0,a.jsx)("a",{href:j(W),target:"_blank",rel:"noopener noreferrer",className:"topbar-branch-pill topbar-branch-pill--link",children:g.branch}):(0,a.jsx)("span",{className:"topbar-branch-pill",children:g.branch}):null]})]}),!y&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"dashboard-app-header__sep topbar-desktop-only","aria-hidden":"true"}),(0,a.jsx)("span",{className:"dashboard-app-header__session-title topbar-desktop-only",children:V}),(0,a.jsx)("span",{className:"dashboard-app-header__session-id topbar-desktop-only",children:g.id})]}),(0,a.jsx)("div",{className:"dashboard-app-header__spacer"}),(0,a.jsxs)("div",{className:"dashboard-app-header__actions",children:[W?(0,a.jsxs)("div",{className:"topbar-pr-btn-wrap",ref:et,children:[(0,a.jsxs)("a",{href:W.url,target:"_blank",rel:"noopener noreferrer",className:(0,c.cn)("dashboard-app-btn topbar-pr-btn",Y&&"topbar-pr-btn--open"),onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||1===e.button||(e.preventDefault(),ee(e=>!e))},"aria-expanded":Y,"aria-label":"PR #".concat(W.number),children:[(0,a.jsx)("span",{className:(0,c.cn)("topbar-pr-dot",$?"topbar-pr-dot--green":W.ciStatus===l.U1.FAILING||"changes_requested"===W.reviewDecision?"topbar-pr-dot--red":"topbar-pr-dot--amber")}),"PR #",W.number,(0,a.jsx)("svg",{width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:Y?"M18 15l-6-6-6 6":"M6 9l6 6 6-6"})})]}),Y&&(0,a.jsx)("div",{className:"topbar-pr-popover",children:(0,a.jsx)(_,{pr:W,sessionId:g.id,metadata:g.metadata})})]}):null,z?(0,a.jsxs)("button",{type:"button",className:"dashboard-app-btn",onClick:Q,children:[(0,a.jsxs)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("polyline",{points:"1 4 1 10 7 10"}),(0,a.jsx)("path",{d:"M3.51 15a9 9 0 1 0 2.13-9.36L1 10"})]}),(0,a.jsx)("span",{className:"topbar-btn-label",children:"Restore"})]}):y||U?null:(0,a.jsxs)("button",{type:"button",className:"dashboard-app-btn dashboard-app-btn--danger",onClick:X,children:[(0,a.jsx)("svg",{className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})}),(0,a.jsx)("span",{className:"topbar-btn-label",children:"Kill"})]}),!y&&er?(0,a.jsxs)("a",{href:er,className:"dashboard-app-btn dashboard-app-btn--amber topbar-desktop-only","aria-label":"Orchestrator",children:[(0,a.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,a.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,a.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),(0,a.jsx)("span",{className:"topbar-btn-label",children:"Orchestrator"})]}):null]})]}),(0,a.jsxs)("div",{className:"dashboard-shell dashboard-shell--desktop".concat(D?" dashboard-shell--sidebar-collapsed":""),children:[S.length>0?(0,a.jsx)("div",{className:"sidebar-wrapper".concat(F?" sidebar-wrapper--mobile-open":""),children:(0,a.jsx)(m.u,{projects:S,sessions:C,loading:I,error:M,onRetry:P,activeProjectId:g.projectId,activeSessionId:g.id,collapsed:D,onToggleCollapsed:()=>A(e=>!e),onMobileClose:()=>L(!1)})}):null,F&&(0,a.jsx)("div",{className:"sidebar-mobile-backdrop",onClick:()=>L(!1)}),(0,a.jsx)("div",{className:"dashboard-main dashboard-main--desktop",children:(0,a.jsxs)("main",{className:"session-detail-page flex-1 min-h-0 flex flex-col bg-[var(--color-bg-base)]",children:[y&&N&&(0,a.jsx)(w,{zones:N,createdAt:g.createdAt,headline:V,activityLabel:J.label,activityColor:J.color,branch:g.branch,pr:W,crumbHref:K,crumbLabel:"Dashboard"}),(0,a.jsx)("div",{className:"flex-1 min-h-0 flex flex-col",children:H?U?(0,a.jsx)("div",{className:"terminal-exited-placeholder h-full",children:(0,a.jsx)("span",{className:"terminal-exited-placeholder__text",children:"Terminal session has ended"})}):(0,a.jsx)(b,{sessionId:g.id,startFullscreen:O,variant:q,appearance:"dark",height:"100%",isOpenCodeSession:G,reloadCommand:G&&Z?"/exit\nopencode --session ".concat(Z,"\n"):void 0,autoFocus:!0}):(0,a.jsx)("div",{className:"session-detail-terminal-placeholder h-full"})})]})})]}),(0,a.jsx)(f.X,{ariaLabel:"Session navigation",activeTab:y?"orchestrator":void 0,dashboardHref:K,prsHref:g.projectId?"/?project=".concat(encodeURIComponent(g.projectId),"&tab=prs"):"/",showOrchestrator:!!er,orchestratorHref:er})]})})}function _(e){var t;let{pr:s,sessionId:n,metadata:i}=e,[d,u]=(0,r.useState)(new Set),[h,p]=(0,r.useState)(new Set),[m,f]=(0,r.useState)(new Set),[b,v]=(0,r.useState)(!1),j=(0,r.useRef)(new Map);(0,r.useEffect)(()=>()=>{j.current.forEach(e=>window.clearTimeout(e)),j.current.clear()},[]);let g=async e=>{p(t=>{let s=new Set(t);return s.delete(e.url),s}),f(t=>{let s=new Set(t);return s.delete(e.url),s}),u(t=>new Set(t).add(e.url)),await y(n,e,()=>{u(t=>{let s=new Set(t);return s.delete(e.url),s}),p(t=>new Set(t).add(e.url));let t=j.current.get(e.url);void 0!==t&&window.clearTimeout(t);let s=window.setTimeout(()=>{p(t=>{let s=new Set(t);return s.delete(e.url),s}),j.current.delete(e.url)},3e3);j.current.set(e.url,s)},()=>{u(t=>{let s=new Set(t);return s.delete(e.url),s}),f(t=>new Set(t).add(e.url));let t=j.current.get(e.url);void 0!==t&&window.clearTimeout(t);let s=window.setTimeout(()=>{f(t=>{let s=new Set(t);return s.delete(e.url),s}),j.current.delete(e.url)},3e3);j.current.set(e.url,s)})},w=(0,o.QN)(s),N=function(e,t){let s=[],a=!!t.lastCIFailureDispatchHash,r="true"===t.lastMergeConflictDispatched,n=!!t.lastPendingReviewDispatchHash,i=t.status,c=e.ciStatus===l.U1.FAILING||"ci_failed"===i,d="changes_requested"===e.reviewDecision||"changes_requested"===i,u=!(0,o.sZ)(e)&&!(0,o.fZ)(e)&&"merged"!==e.state&&!e.mergeability.noConflicts;if(c){let t=e.ciChecks.filter(e=>"failed"===e.status).length;s.push({icon:"✗",variant:"fail",text:t>0?"".concat(t," check").concat(1!==t?"s":""," failing"):"CI failing",notified:a})}else e.ciStatus===l.U1.PENDING&&s.push({icon:"●",variant:"warn",text:"CI pending"});return d?s.push({icon:"✗",variant:"fail",text:"Changes requested",notified:n}):e.mergeability.approved||s.push({icon:"○",variant:"muted",text:"Awaiting reviewer"}),u&&s.push({icon:"✗",variant:"fail",text:"Merge conflicts",notified:r}),e.isDraft&&s.push({icon:"○",variant:"muted",text:"Draft"}),s}(s,i),_=null!=(t=s.changedFiles)?t:0,k=!(0,o.sZ)(s)&&!(0,o.fZ)(s)&&"merged"!==s.state&&!s.mergeability.noConflicts&&"open"===s.state,S=k?function(e){let t=encodeURIComponent(e.owner),s=encodeURIComponent(e.repo),a=encodeURIComponent(e.baseBranch),r=encodeURIComponent(e.branch);return"https://github.com/".concat(t,"/").concat(s,"/compare/").concat(a,"...").concat(r)}(s):"";return(0,a.jsxs)("div",{className:(0,c.cn)("session-detail-pr-card",w&&"session-detail-pr-card--green"),children:[(0,a.jsxs)("div",{className:"session-detail-pr-card__row",children:[(0,a.jsxs)("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"session-detail-pr-card__title-link",children:["PR #",s.number,": ",s.title]}),(0,a.jsxs)("span",{className:"session-detail-pr-card__diff-stats",children:[(0,a.jsxs)("span",{className:"session-detail-diff--add",children:["+",s.additions]})," ",(0,a.jsxs)("span",{className:"session-detail-diff--del",children:["-",s.deletions]})]}),_>0&&(0,a.jsxs)("span",{className:"session-detail-pr-card__diff-label",children:[_," file",1!==_?"s":""]}),s.isDraft&&(0,a.jsx)("span",{className:"session-detail-pr-card__diff-label",children:"Draft"}),"merged"===s.state&&(0,a.jsx)("span",{className:"session-detail-pr-card__diff-label",children:"Merged"})]}),k?(0,a.jsxs)("div",{className:"session-detail-pr-card__merge-actions",role:"group","aria-label":"Resolve merge conflicts",children:[(0,a.jsx)("a",{href:S,target:"_blank",rel:"noopener noreferrer",className:"session-detail-pr-merge-action",children:"Compare with base branch"}),(0,a.jsx)("button",{type:"button",onClick:()=>{var e;let t=null==(e=navigator.clipboard)?void 0:e.writeText(s.branch);t&&t.then(()=>{v(!0);let e="__copy-branch",t=j.current.get(e);void 0!==t&&window.clearTimeout(t);let s=window.setTimeout(()=>{v(!1),j.current.delete(e)},2e3);j.current.set(e,s)}).catch(()=>{})},"aria-label":b?"Head branch name copied":"Copy head branch name",className:"session-detail-pr-merge-action session-detail-pr-merge-action--btn",children:b?"Copied branch name":"Copy head branch name"})]}):null,(0,a.jsxs)("div",{className:"session-detail-pr-card__details",children:[w?(0,a.jsxs)("div",{className:"session-detail-merge-banner",children:[(0,a.jsx)("svg",{width:"11",height:"11",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M20 6L9 17l-5-5"})}),"Ready to merge"]}):N.map(e=>(0,a.jsxs)("span",{className:(0,c.cn)("session-detail-blocker-chip","fail"===e.variant&&"session-detail-blocker-chip--fail","warn"===e.variant&&"session-detail-blocker-chip--warn","muted"===e.variant&&"session-detail-blocker-chip--muted"),children:[e.icon," ",e.text,e.notified&&(0,a.jsx)("span",{className:"session-detail-blocker-chip__note",children:"\xb7 notified"})]},e.text)),s.ciChecks.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"session-detail-pr-sep"}),s.ciChecks.map(e=>{let t=(0,a.jsxs)("span",{className:(0,c.cn)("session-detail-ci-chip","passed"===e.status&&"session-detail-ci-chip--pass","failed"===e.status&&"session-detail-ci-chip--fail","pending"===e.status&&"session-detail-ci-chip--pending","passed"!==e.status&&"failed"!==e.status&&"pending"!==e.status&&"session-detail-ci-chip--queued"),children:["passed"===e.status?"✓":"failed"===e.status?"✗":"pending"===e.status?"●":"○"," ",e.name]});return e.url?(0,a.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"hover:no-underline",onClick:e=>e.stopPropagation(),children:t},e.name):(0,a.jsx)("span",{children:t},e.name)})]})]}),s.unresolvedComments.length>0&&(0,a.jsxs)("details",{className:"session-detail-comments-strip",children:[(0,a.jsx)("summary",{children:(0,a.jsxs)("div",{className:"session-detail-comments-strip__toggle",children:[(0,a.jsx)("svg",{className:"session-detail-comments-strip__chevron",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M9 5l7 7-7 7"})}),(0,a.jsx)("span",{className:"session-detail-comments-strip__label",children:"Unresolved Comments"}),(0,a.jsx)("span",{className:"session-detail-comments-strip__count",children:s.unresolvedThreads}),(0,a.jsx)("span",{className:"session-detail-comments-strip__hint",children:"click to expand"})]})}),(0,a.jsx)("div",{className:"session-detail-comments-strip__body",children:s.unresolvedComments.map((e,t)=>{let{title:s,description:r}=x(e.body);return(0,a.jsxs)("details",{className:"session-detail-comment",open:0===t,children:[(0,a.jsx)("summary",{children:(0,a.jsxs)("div",{className:"session-detail-comment__row",children:[(0,a.jsx)("svg",{className:"session-detail-comment__chevron",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M9 5l7 7-7 7"})}),(0,a.jsx)("span",{className:"session-detail-comment__title",children:s}),(0,a.jsxs)("span",{className:"session-detail-comment__author",children:["\xb7 ",e.author]}),(0,a.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"session-detail-comment__view",children:"view →"})]})}),(0,a.jsxs)("div",{className:"session-detail-comment__body",children:[(0,a.jsx)("div",{className:"session-detail-comment__file",children:e.path}),(0,a.jsx)("p",{className:"session-detail-comment__text",children:r}),(0,a.jsx)("button",{onClick:()=>g(e),disabled:d.has(e.url),className:(0,c.cn)("session-detail-comment__fix-btn",h.has(e.url)&&"session-detail-comment__fix-btn--sent",m.has(e.url)&&"session-detail-comment__fix-btn--error"),children:d.has(e.url)?"Sending…":h.has(e.url)?"Sent ✓":m.has(e.url)?"Failed":"Ask Agent to Fix"})]})]},e.url)})})]})]})}let k={active:"⚡",ready:"\uD83D\uDFE2",idle:"\uD83D\uDCA4",waiting_input:"❓",blocked:"\uD83D\uDEA7",exited:"\uD83D\uDC80"};var S=s(5184);let C=null,I=null,M=new Set(Object.values(l.SB)),P=new Set(Object.values(l.u3)),T=new Set;function E(e,t){if(!e||0===t.length)return e;let s=new Map(t.map(e=>[e.id,e])),a=!1,r=e.map(e=>{var t,r;let n=s.get(e.id);if(!n)return e;if(t=n.status,!M.has(t)){let t="status:".concat(n.status);return T.has(t)||(T.add(t),console.warn("Ignoring mux session patch with unknown status",{sessionId:n.id,status:n.status})),e}if(null!==n.activity&&(r=n.activity,!P.has(r))){let t="activity:".concat(n.activity);return T.has(t)||(T.add(t),console.warn("Ignoring mux session patch with unknown activity",{sessionId:n.id,activity:n.activity})),e}return e.status===n.status&&e.activity===n.activity&&e.lastActivityAt===n.lastActivityAt?e:(a=!0,{...e,status:n.status,activity:n.activity,lastActivityAt:n.lastActivityAt})});return a?r:e}function R(){var e;let t=(0,n.useParams)(),s=(0,n.usePathname)(),i=(0,n.useRouter)(),c=t.id,d="string"==typeof t.projectId?t.projectId:Array.isArray(t.projectId)?t.projectId[0]:null,h=(0,S.eT)(),m=(()=>{if("undefined"==typeof sessionStorage)return null;try{let e=sessionStorage.getItem("ao-session-nav:".concat(c));if(e)return sessionStorage.removeItem("ao-session-nav:".concat(c)),JSON.parse(e)}catch(e){}return null})(),[f,b]=(0,r.useState)(m),[v,x]=(0,r.useState)(null),[j,g]=(0,r.useState)(void 0),[y,w]=(0,r.useState)([]),[_,M]=(0,r.useState)(()=>I),[P,T]=(0,r.useState)(null===m),[R,O]=(0,r.useState)(null),[D,A]=(0,r.useState)(!1),[F,L]=(0,r.useState)(!1),[H,B]=(0,r.useState)(new Map),W=null!=(e=null==f?void 0:f.projectId)?e:null,U=[...H.values()],z=!!f&&(0,l.tT)(f,H.get(f.projectId),U),J=(0,r.useRef)(null),V=(0,r.useRef)(!1),q=(0,r.useRef)(null),G=(0,r.useRef)(new Map),Z=(0,r.useRef)(null!==m),K=(0,r.useRef)(null),X=(0,r.useRef)(!1),Q=(0,r.useRef)(!1),$=(0,r.useRef)(!1);(0,r.useEffect)(()=>{G.current=H},[H]);let Y=(0,r.useCallback)(async()=>{C&&(w(C),B(new Map(C.map(e=>{var t;return[e.id,null!=(t=e.sessionPrefix)?t:e.id]}))));try{var e,t;let s=await fetch("/api/projects");if(!s.ok)return void console.error("Failed to fetch projects:",Error("HTTP ".concat(s.status)));let a=await s.json();if(!(null==a?void 0:a.projects))return;e=C,t=a.projects,e&&e.length===t.length&&e.every((e,s)=>{let a=t[s];return JSON.stringify(e)===JSON.stringify(a)})||(C=a.projects,w(a.projects),B(new Map(a.projects.map(e=>{var t;return[e.id,null!=(t=e.sessionPrefix)?t:e.id]}))))}catch(e){console.error("Failed to fetch projects:",e)}},[]),ee=function(e,t){let[s,a]=(0,r.useState)(null);return(0,r.useEffect)(()=>{a(null);let t=new EventSource("/api/events"),s=!1;return t.onmessage=t=>{if(!s)try{let s=JSON.parse(t.data);if("snapshot"!==s.type)return;let r=s.sessions.find(t=>t.id===e);if(!r)return;a(e=>e&&e.activity===r.activity?e:{activity:r.activity})}catch(e){return}},()=>{s=!0,t.close()}},[e,void 0]),s}(c);(0,r.useEffect)(()=>{f?document.title=function(e,t,s){var a,r;let n,i=e.id,o=void 0!==s?s:e.activity,c=o&&null!=(a=k[o])?a:"",d=[...t.values()];return(0,l.tT)(e,t.get(e.projectId),d)?n="Orchestrator Terminal":(r=(0,u.Pn)(e),n=r.length>40?r.slice(0,40)+"...":r),c?"".concat(c," ").concat(i," | ").concat(n):"".concat(i," | ").concat(n)}(f,H,null==ee?void 0:ee.activity):document.title="".concat(c," | Session Detail")},[f,c,H,ee]),(0,r.useEffect)(()=>{J.current=W},[W]),(0,r.useEffect)(()=>{if(f&&y.some(e=>e.id===f.projectId)){if(null==s?void 0:s.startsWith("/sessions/"))return void i.replace((0,p.Nc)(f.projectId,f.id));(null==s?void 0:s.startsWith("/projects/"))&&d&&f.projectId!==d&&i.replace((0,p.Nc)(f.projectId,f.id))}},[d,s,y,i,f]),(0,r.useEffect)(()=>{V.current=z},[z]);let et=(0,r.useCallback)(async()=>{if(!X.current){X.current=!0;try{let e=await fetch("/api/sessions/".concat(encodeURIComponent(c)));if(404===e.status){Z.current||A(!0),T(!1);return}if(!e.ok)throw Error("HTTP ".concat(e.status));let t=await e.json();b(t),O(null),A(!1),Z.current=!0}catch(e){console.error("Failed to fetch session:",e),Z.current||O(e instanceof Error?e:Error("Failed to load session"))}finally{T(!1),X.current=!1}}},[c]),es=(0,r.useCallback)(async()=>{if(Q.current)return;let e=J.current;if(!e)return;let t=V.current,s="".concat(e,":").concat(t?"orchestrator":"worker");if(t||q.current!==s){Q.current=!0;try{var a,r,n,i,c;let d=t?"/api/sessions?project=".concat(encodeURIComponent(e),"&fresh=true"):"/api/sessions?project=".concat(encodeURIComponent(e),"&orchestratorOnly=true&fresh=true"),u=await fetch(d);if(!u.ok)return void console.error("Failed to fetch project sessions for",e,Error("HTTP ".concat(u.status)));let h=await u.json(),p=null!=(n=h.sessions)?n:[],m=null!=(c=null!=(i=h.orchestratorId)?i:null==(r=h.orchestrators)||null==(a=r.find(t=>t.projectId===e))?void 0:a.id)?c:null;if(g(e=>e===m?e:m),!t){q.current=s;return}let f={merge:0,respond:0,review:0,pending:0,working:0,done:0},b=[...G.current.values()];for(let e of p)if(!(0,l.tT)(e,G.current.get(e.projectId),b)){let t=(0,o.ng)(e);if("action"===t)continue;f[t]++}x(f)}catch(e){}finally{Q.current=!1}}},[]),ea=(0,r.useCallback)(async()=>{if(!$.current){$.current=!0;try{var e,t,s;let a=await fetch("/api/sessions?fresh=true");if(!a.ok)throw Error("HTTP ".concat(a.status));let r=await a.json(),n=null!=(e=null==r?void 0:r.sessions)?e:[],l=null!=(s=E(n,null!=(t=K.current)?t:[]))?s:n;I=l,L(!1),M(e=>e&&e.length===l.length&&e.every((e,t)=>{let s=l[t];return JSON.stringify(e)===JSON.stringify(s)})?e:l)}catch(e){console.error("Failed to fetch sidebar sessions:",e),L(!0),M(e=>null===e?[]:e)}finally{$.current=!1}}},[]);if((0,r.useEffect)(()=>{if(!(null==h?void 0:h.sessions))return;if("connected"!==h.status){K.current=null;return}K.current=h.sessions;let e=E(I,h.sessions);if(e!==I&&(I=e,M(e)),0===h.sessions.length||!I)return;let t=new Set(I.map(e=>e.id)),s=new Set(h.sessions.map(e=>e.id));if(t.size!==s.size)return void ea();for(let e of s)if(!t.has(e))return void ea()},[ea,null==h?void 0:h.sessions,null==h?void 0:h.status]),(0,r.useEffect)(()=>{z||x(null)},[z]),(0,r.useEffect)(()=>{Promise.all([Y(),et(),ea()])},[Y,et,ea]),(0,r.useEffect)(()=>{W&&es()},[es,z,W]),(0,r.useEffect)(()=>{let e=setInterval(()=>{et(),es(),ea()},2e3);return()=>clearInterval(e)},[et,es,ea]),P)return(0,a.jsx)("div",{className:"flex min-h-screen items-center justify-center bg-[var(--color-bg-base)]",children:(0,a.jsx)("div",{className:"text-[13px] text-[var(--color-text-tertiary)]",children:"Loading session…"})});if(D)return(0,n.notFound)(),null;if(R)throw R;if(!f)throw Error("Session data was unavailable after loading completed");return(0,a.jsx)(N,{session:f,isOrchestrator:z,orchestratorZones:null!=v?v:void 0,projectOrchestratorId:j,projects:y,sidebarSessions:_,sidebarLoading:null===_,sidebarError:F,onRetrySidebar:ea})}},6943:(e,t,s)=>{function a(e){let{reason:t,children:s}=e;return s}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return a}}),s(1763)},8394:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return a}});let a=(0,s(5468).createAsyncLocalStorage)()},9891:(e,t,s)=>{s.d(t,{default:()=>r.a});var a=s(1712),r=s.n(a)}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7008],{1237:(e,t,r)=>{r.d(t,{dG:()=>o,i_:()=>c,j6:()=>l});var n=r(3817),s=r(545),a=r(4906);function c(e,t){let r=e+t;return r>1e3?"XL":r>500?"L":r>200?"M":r>50?"S":"XS"}function l(e){let{pr:t,muted:r=!1}=e,l=c(t.additions,t.deletions),o=(0,s.fZ)(t),i=(0,s.sZ)(t),u=o||i,d=u?"—":"merged"===t.state?"merged":"closed"===t.state?"closed":t.isDraft?"draft":"approved"===t.reviewDecision?"approved":"changes_requested"===t.reviewDecision?"changes requested":"needs review",p=u?"text-[var(--color-text-tertiary)]":t.isDraft?"text-[var(--color-text-muted)]":"approved"===t.reviewDecision?"text-[var(--color-accent-green)]":"changes_requested"===t.reviewDecision?"text-[var(--color-accent-red)]":"text-[var(--color-accent-yellow)]",m=(0,n.jsx)("span",{className:"inline-block h-3 w-12 animate-pulse rounded bg-[var(--color-bg-subtle)]"});return(0,n.jsxs)("tr",{className:"border-b border-[var(--color-border-subtle)] transition-colors hover:bg-[var(--color-bg-subtle)]".concat(r?" opacity-60 hover:opacity-100":""),children:[(0,n.jsx)("td",{className:"px-3 py-2.5 text-sm",children:(0,n.jsxs)("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"hover:underline",children:["#",t.number]})}),(0,n.jsx)("td",{className:"max-w-[420px] truncate px-3 py-2.5 text-sm font-medium",children:(0,n.jsx)("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"hover:underline",children:t.title})}),(0,n.jsx)("td",{className:"px-3 py-2.5 text-sm",children:i?m:o?(0,n.jsx)("span",{className:"text-[var(--color-text-tertiary)]",children:"—"}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("span",{className:"text-[var(--color-accent-green)]",children:["+",t.additions]})," ",(0,n.jsxs)("span",{className:"text-[var(--color-accent-red)]",children:["-",t.deletions]})," ",(0,n.jsx)("span",{className:"text-[var(--color-text-muted)]",children:l})]})}),(0,n.jsx)("td",{className:"px-3 py-2.5",children:i?m:o?(0,n.jsx)("span",{className:"text-[var(--color-text-tertiary)]",children:"—"}):(0,n.jsx)(a.wX,{status:t.ciStatus,checks:t.ciChecks,compact:!0})}),(0,n.jsx)("td",{className:"px-3 py-2.5 text-xs font-semibold ".concat(p),children:i?m:d}),(0,n.jsx)("td",{className:"px-3 py-2.5 text-center text-sm font-bold ".concat(i?"":t.unresolvedThreads>0?"text-[var(--color-accent-red)]":"text-[var(--color-border-default)]"),children:i?m:t.unresolvedThreads})]})}function o(e){let{pr:t,muted:r=!1}=e,a=(0,s.fZ)(t),c=(0,s.sZ)(t),l=a||c,o=l?"—":"passing"===t.ciStatus?"passing":"failing"===t.ciStatus?"failed":"pending",i=l?"—":"merged"===t.state?"merged":"closed"===t.state?"closed":t.isDraft?"draft":"approved"===t.reviewDecision?"approved":"changes_requested"===t.reviewDecision?"changes":"needs review",u=(0,n.jsx)("span",{className:"inline-block h-3 w-10 animate-pulse rounded bg-[var(--color-bg-subtle)]"}),d=l?null:"+".concat(t.additions," -").concat(t.deletions),p="merged"===t.state?"mobile-pr-card__meta--merged":"closed"===t.state?"mobile-pr-card__meta--closed":"changes_requested"===t.reviewDecision?"mobile-pr-card__meta--changes":"approved"===t.reviewDecision?"mobile-pr-card__meta--approved":"mobile-pr-card__meta--open";return(0,n.jsxs)("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"mobile-pr-card".concat(r?" mobile-pr-card--muted":""),children:[(0,n.jsxs)("div",{className:"mobile-pr-card__line",children:[(0,n.jsxs)("span",{className:"mobile-pr-card__number",children:["#",t.number]}),(0,n.jsx)("span",{className:"mobile-pr-card__title",children:t.title})]}),(0,n.jsxs)("div",{className:"mobile-pr-card__meta ".concat(p),children:[c?u:(0,n.jsxs)("span",{className:"mobile-pr-card__metric-value",children:[(0,n.jsx)("span",{className:"mobile-pr-card__ci-dot",style:{background:l?"var(--color-text-tertiary)":"passing"===t.ciStatus?"var(--color-accent-green)":"failing"===t.ciStatus?"var(--color-accent-red)":"var(--color-status-attention)"}}),(0,n.jsx)("span",{style:{color:l?void 0:"passing"===t.ciStatus?"var(--color-accent-green)":"failing"===t.ciStatus?"var(--color-accent-red)":"var(--color-text-secondary)"},children:o})]}),(0,n.jsx)("span",{className:"mobile-pr-card__review",style:{color:l?void 0:"approved"===t.reviewDecision?"var(--color-accent-green)":"changes_requested"===t.reviewDecision?"var(--color-accent-red)":"var(--color-text-secondary)"},children:c?u:i}),(0,n.jsx)("span",{className:"mobile-pr-card__diff",children:l?u:d})]})]})}},4906:(e,t,r)=>{r.d(t,{wX:()=>a,zm:()=>o});var n=r(3817);let s={passing:{label:"CI passing",className:"bg-[rgba(63,185,80,0.1)] text-[var(--color-accent-green)]",icon:"✓"},failing:{label:"CI failing",className:"bg-[rgba(248,81,73,0.15)] text-[var(--color-accent-red)]",icon:"✗"},pending:{label:"CI pending",className:"bg-[rgba(210,153,34,0.1)] text-[var(--color-accent-yellow)]",icon:"●"},none:{label:"—",className:"text-[var(--color-text-muted)]",icon:""}};function a(e){var t;let{status:r,checks:a,compact:c}=e,l=s[r],o=null!=(t=null==a?void 0:a.filter(e=>"failed"===e.status).length)?t:0;if("none"===r)return(0,n.jsx)("span",{className:"text-xs text-[var(--color-text-muted)]",children:"—"});let i="failing"===r&&o>0?"".concat(o," check").concat(o>1?"s":""," failing"):l.label;return(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-semibold tracking-wide ".concat(l.className),children:[!c&&(0,n.jsx)("span",{children:l.icon}),i]})}let c={passed:{icon:"✓",color:"var(--color-accent-green)"},failed:{icon:"✗",color:"var(--color-accent-red)"},running:{icon:"●",color:"var(--color-accent-yellow)"},pending:{icon:"○",color:"var(--color-text-muted)"},skipped:{icon:"○",color:"var(--color-text-muted)"}},l={failed:0,running:1,pending:2,passed:3,skipped:4};function o(e){let{checks:t,layout:r="vertical"}=e,s=[...t].sort((e,t)=>l[e.status]-l[t.status]);return"inline"===r?(0,n.jsx)("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:s.map(e=>{let{icon:t,color:r}=c[e.status],s=(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs",children:[(0,n.jsx)("span",{style:{color:r},children:t}),(0,n.jsx)("span",{className:"text-[var(--color-text-secondary)]",children:e.name})]});return e.url?(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"hover:no-underline",children:s},e.name):(0,n.jsx)("span",{children:s},e.name)})}):"expanded"===r?(0,n.jsx)("div",{className:"space-y-1",children:s.map(e=>{let{icon:t,color:r}=c[e.status],s=(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs",children:[(0,n.jsx)("span",{style:{color:r},children:t}),(0,n.jsx)("span",{className:"text-[var(--color-text-secondary)]",children:e.name})]});return(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[e.url?(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"hover:no-underline",children:s}):s,e.url&&(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"text-[11px] text-[var(--color-accent-blue)] hover:underline",children:"view"})]},e.name)})}):(0,n.jsx)("div",{className:"space-y-1",children:s.map(e=>{let{icon:t,color:r}=c[e.status];return(0,n.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,n.jsx)("span",{style:{color:r},className:"w-3.5 shrink-0 text-center",children:t}),(0,n.jsx)("span",{className:"min-w-0 flex-1 truncate text-[var(--color-text-secondary)]",children:e.name}),e.url&&(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"shrink-0 text-[11px] text-[var(--color-accent-blue)] hover:underline",children:"view"})]},e.name)})})}},5309:(e,t,r)=>{r.d(t,{D:()=>l});var n=r(6749),s=r(545);function a(e,t){switch(t.type){case"reset":return{...e,sessions:t.sessions,...void 0!==t.sseAttentionLevels?{sseAttentionLevels:t.sseAttentionLevels}:{}};case"markLiveSessionsResolved":if(e.liveSessionsResolved)return e;return{...e,liveSessionsResolved:!0};case"setConnection":return{...e,connectionStatus:t.status};case"snapshot":{let r=new Map(t.patches.map(e=>[e.id,e])),n=!1,s=e.sessions.map(e=>{let t=r.get(e.id);return t&&(e.status!==t.status||e.activity!==t.activity||e.lastActivityAt!==t.lastActivityAt)?(n=!0,{...e,status:t.status,activity:t.activity,lastActivityAt:t.lastActivityAt}):e}),a={};for(let e of t.patches)a[e.id]=e.attentionLevel;let c=n,l=Object.keys(a).length!==Object.keys(e.sseAttentionLevels).length||t.patches.some(t=>e.sseAttentionLevels[t.id]!==t.attentionLevel);if(!c&&!l)return e;return{...e,sessions:c?s:e.sessions,sseAttentionLevels:l?a:e.sseAttentionLevels}}}}function c(e){return e.map(e=>e.id).sort().join("\0")}function l(e){let{initialSessions:t,project:r,muxSessions:l,initialAttentionLevels:o,disabled:i=!1,attentionZones:u}=e,[d,p]=(0,n.useReducer)(a,{sessions:t,connectionStatus:"connected",sseAttentionLevels:null!=o?o:{},liveSessionsResolved:!1}),m=(0,n.useRef)(d.sessions),v=(0,n.useRef)(o);v.current=o;let x=(0,n.useRef)(null),f=(0,n.useRef)(null),h=(0,n.useRef)(0),g=(0,n.useRef)(0),b=(0,n.useRef)(null),y=(0,n.useRef)(null);(0,n.useEffect)(()=>{m.current=d.sessions},[d.sessions]),(0,n.useEffect)(()=>{var e;p({type:"reset",sessions:t,sseAttentionLevels:null!=(e=v.current)?e:{}})},[t]);let j=void 0!==l,w=(0,n.useCallback)(()=>{x.current||Date.now()-g.current<500||null===y.current&&(x.current=setTimeout(()=>{if(x.current=null,null!==y.current)return;let e=f.current,t=new AbortController;y.current=t,g.current=Date.now(),fetch(r?"/api/sessions?project=".concat(encodeURIComponent(r)):"/api/sessions",{signal:t.signal,cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{if(t.signal.aborted||!(null==e?void 0:e.sessions)){t.signal.aborted||(h.current=Date.now());return}h.current=Date.now(),p({type:"markLiveSessionsResolved"});let r=Object.fromEntries(e.sessions.map(e=>[e.id,(0,s.ng)(e,u)]));p({type:"reset",sessions:e.sessions,sseAttentionLevels:r})}).catch(e=>{e instanceof DOMException&&"AbortError"===e.name||(console.warn("[useSessionEvents] refresh failed:",e),h.current=Date.now())}).finally(()=>{if(y.current===t&&(y.current=null),t.signal.aborted){null!==f.current&&w();return}if(null!==f.current&&f.current!==e)return void w();f.current=null})},120))},[r,u]);return(0,n.useEffect)(()=>{if(i||!l)return;let e=new Set(m.current.map(e=>e.id)),t=l.filter(t=>e.has(t.id)),r=l.some(t=>!e.has(t.id));p({type:"markLiveSessionsResolved"}),p({type:"snapshot",patches:t});let n=c(m.current),s=c(t);return r||n!==s?(f.current=s,w()):Date.now()-h.current>=15e3&&w(),()=>{var e;null==(e=y.current)||e.abort(),y.current=null}},[i,l,w]),(0,n.useEffect)(()=>{if(i)return;if(j)return p({type:"setConnection",status:"connected"}),()=>{var e;x.current&&(clearTimeout(x.current),x.current=null),f.current=null,null==(e=y.current)||e.abort(),y.current=null};h.current=0;let e=new EventSource(r?"/api/events?project=".concat(encodeURIComponent(r)):"/api/events"),t=!1,n=()=>{b.current&&(clearTimeout(b.current),b.current=null)};return e.onmessage=e=>{try{let t=JSON.parse(e.data);if("snapshot"===t.type){p({type:"markLiveSessionsResolved"}),p({type:"snapshot",patches:t.sessions});let e=c(m.current),r=c(t.sessions);if(e!==r){f.current=r,w();return}Date.now()-h.current>=15e3&&w()}}catch(e){return}},e.onopen=()=>{n(),t||p({type:"setConnection",status:"connected"})},e.onerror=()=>{if(!t){if(e.readyState===EventSource.CLOSED){n(),p({type:"setConnection",status:"disconnected"});return}p({type:"setConnection",status:"reconnecting"}),null===b.current&&(b.current=setTimeout(()=>{b.current=null,t||e.readyState===EventSource.OPEN||p({type:"setConnection",status:"disconnected"})},4e3))}},()=>{var r;t=!0,null==(r=y.current)||r.abort(),y.current=null,f.current=null,x.current&&(clearTimeout(x.current),x.current=null),n(),e.close()}},[i,r,j,w]),d}},7848:(e,t,r)=>{r.d(t,{S:()=>a,u:()=>c});var n=r(6749);let s={green:"#22c55e",yellow:"#eab308",red:"#ef4444"};function a(e){let t=0;for(let r of Object.values(e))("respond"===r||"review"===r||"action"===r||"merge"===r)&&t++;return t}function c(e){let{sseAttentionLevels:t,projectName:r="A"}=e,a=r.charAt(0).toUpperCase();return(0,n.useEffect)(()=>{let e=function(e,t){let r='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">\n <rect width="32" height="32" rx="6" fill="'.concat(t,'"/>\n <text x="16" y="23" text-anchor="middle" fill="white" font-family="sans-serif" font-weight="700" font-size="20">').concat(e,"</text>\n </svg>");return"data:image/svg+xml,".concat(encodeURIComponent(r))}(a,s[function(e){let t=Object.values(e);if(0===t.length)return"green";let r=!1;for(let e of t){if("respond"===e)return"red";("review"===e||"action"===e||"merge"===e)&&(r=!0)}return r?"yellow":"green"}(t)]),r=document.querySelector('link[rel="icon"]');r||((r=document.createElement("link")).rel="icon",document.head.appendChild(r)),r.type="image/svg+xml",r.href=e},[t,a]),null}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9331],{545:(e,t,r)=>{r.d(t,{CM:()=>n.CM,Kw:()=>d,N_:()=>n.N_,Ou:()=>i,QN:()=>l,U1:()=>n.U1,dG:()=>p,fZ:()=>s,nH:()=>m,ng:()=>j,of:()=>c,p$:()=>u,sZ:()=>a,wy:()=>h});var n=r(5425);function s(e){return e.mergeability.blockers.includes("API rate limited or unavailable")}function a(e){return!1===e.enriched}function l(e){return"open"===e.state&&e.mergeability.mergeable&&e.mergeability.ciPassing&&e.mergeability.approved&&e.mergeability.noConflicts}function o(e){return e.replace(/_/g," ")}function i(e){var t,r,n;return null!=(n=null==(r=e.lifecycle)||null==(t=r.session)?void 0:t.label)?n:o(e.status)}function c(e){var t,r,n;return(null==(r=e.lifecycle)||null==(t=r.pr)?void 0:t.label)?e.lifecycle.pr.label:(null==(n=e.pr)?void 0:n.state)?o(e.pr.state):"not created"}function d(e){var t,r,n;return null!=(n=null==(r=e.lifecycle)||null==(t=r.runtime)?void 0:t.label)?n:"unknown"}function u(e){var t,r;return null!=(r=null==(t=e.lifecycle)?void 0:t.guidance)?r:null}function p(e){var t;return e.lifecycle?"done"===e.lifecycle.sessionState||"terminated"===e.lifecycle.sessionState||"merged"===e.lifecycle.prState:"merged"===e.status||"killed"===e.status||"cleanup"===e.status||"done"===e.status||"terminated"===e.status||(null==(t=e.pr)?void 0:t.state)==="merged"}function m(e){return e.lifecycle?p(e)||"missing"===e.lifecycle.runtimeState||"exited"===e.lifecycle.runtimeState:n.CM.has(e.status)||null!==e.activity&&n.Rt.has(e.activity)}function h(e){var t;return e.lifecycle?("done"===e.lifecycle.sessionState||"terminated"===e.lifecycle.sessionState||"missing"===e.lifecycle.runtimeState||"exited"===e.lifecycle.runtimeState)&&"merged"!==e.lifecycle.prState&&"merged"!==e.status:!!m(e)&&(null==(t=e.pr)?void 0:t.state)!=="merged"&&"merged"!==e.status}function j(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"detailed",r=function(e){var t,r,l,o,i,c,d,u,m;if(p(e))return"done";if((null==(t=e.lifecycle)?void 0:t.prReason)==="merge_ready"||(null==(r=e.lifecycle)?void 0:r.prReason)==="approved"||"mergeable"===e.status||"approved"===e.status||e.pr&&!a(e.pr)&&e.pr.mergeability.mergeable)return"merge";if((null==(l=e.lifecycle)?void 0:l.sessionState)==="detecting"||(null==(o=e.lifecycle)?void 0:o.sessionState)==="needs_input"||(null==(i=e.lifecycle)?void 0:i.sessionState)==="stuck"||e.status===n.SB.ERRORED||e.status===n.SB.NEEDS_INPUT||e.status===n.SB.STUCK||e.activity===n.u3.WAITING_INPUT||e.activity===n.u3.BLOCKED||e.activity===n.u3.EXITED)return"respond";if((null==(c=e.lifecycle)?void 0:c.prReason)==="ci_failing"||(null==(d=e.lifecycle)?void 0:d.prReason)==="changes_requested"||"ci_failed"===e.status||"changes_requested"===e.status)return"review";if(e.pr&&!s(e.pr)&&!a(e.pr)){let t=e.pr;if(t.ciStatus===n.U1.FAILING||"changes_requested"===t.reviewDecision||!t.mergeability.noConflicts)return"review"}if((null==(u=e.lifecycle)?void 0:u.prReason)==="review_pending"||(null==(m=e.lifecycle)?void 0:m.prReason)==="closed_unmerged"||"review_pending"===e.status)return"pending";if(e.pr&&!s(e.pr)&&!a(e.pr)){let t=e.pr;if(!t.isDraft&&t.unresolvedThreads>0||!t.isDraft&&("pending"===t.reviewDecision||"none"===t.reviewDecision))return"pending"}return"working"}(e);return"simple"===t&&("respond"===r||"review"===r)?"action":r}},2286:(e,t,r)=>{r.d(t,{D:()=>d,N:()=>u});var n=r(6749),s=(e,t,r,n,s,a,l,o)=>{let i=document.documentElement,c=["light","dark"];function d(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&a?s.map(e=>a[e]||e):s;r?(i.classList.remove(...n),i.classList.add(a&&a[t]?a[t]:t)):i.setAttribute(e,t)}),r=t,o&&c.includes(r)&&(i.style.colorScheme=r)}if(n)d(n);else try{let e=localStorage.getItem(t)||r,n=l&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;d(n)}catch(e){}},a=["light","dark"],l="(prefers-color-scheme: dark)",o="undefined"==typeof window,i=n.createContext(void 0),c={setTheme:e=>{},themes:[]},d=()=>{var e;return null!=(e=n.useContext(i))?e:c},u=e=>n.useContext(i)?n.createElement(n.Fragment,null,e.children):n.createElement(m,{...e}),p=["light","dark"],m=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:s=!0,enableColorScheme:o=!0,storageKey:c="theme",themes:d=p,defaultTheme:u=s?"system":"light",attribute:m="data-theme",value:g,children:b,nonce:_,scriptProps:x}=e,[y,N]=n.useState(()=>j(c,u)),[w,k]=n.useState(()=>"system"===y?v():y),S=g?Object.values(g):d,C=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&s&&(t=v());let n=g?g[t]:t,l=r?f(_):null,i=document.documentElement,c=e=>{"class"===e?(i.classList.remove(...S),n&&i.classList.add(n)):e.startsWith("data-")&&(n?i.setAttribute(e,n):i.removeAttribute(e))};if(Array.isArray(m)?m.forEach(c):c(m),o){let e=a.includes(u)?u:null,r=a.includes(t)?t:e;i.style.colorScheme=r}null==l||l()},[_]),E=n.useCallback(e=>{let t="function"==typeof e?e(y):e;N(t);try{localStorage.setItem(c,t)}catch(e){}},[y]),P=n.useCallback(e=>{k(v(e)),"system"===y&&s&&!t&&C("system")},[y,t]);n.useEffect(()=>{let e=window.matchMedia(l);return e.addListener(P),P(e),()=>e.removeListener(P)},[P]),n.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?N(e.newValue):E(u))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[E]),n.useEffect(()=>{C(null!=t?t:y)},[t,y]);let I=n.useMemo(()=>({theme:y,setTheme:E,forcedTheme:t,resolvedTheme:"system"===y?w:y,themes:s?[...d,"system"]:d,systemTheme:s?w:void 0}),[y,E,t,w,s,d]);return n.createElement(i.Provider,{value:I},n.createElement(h,{forcedTheme:t,storageKey:c,attribute:m,enableSystem:s,enableColorScheme:o,defaultTheme:u,value:g,themes:d,nonce:_,scriptProps:x}),b)},h=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:a,enableSystem:l,enableColorScheme:o,defaultTheme:i,value:c,themes:d,nonce:u,scriptProps:p}=e,m=JSON.stringify([a,r,i,t,d,c,l,o]).slice(1,-1);return n.createElement("script",{...p,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?u:"",dangerouslySetInnerHTML:{__html:"(".concat(s.toString(),")(").concat(m,")")}})}),j=(e,t)=>{let r;if(!o){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},f=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},v=e=>(e||(e=window.matchMedia(l)),e.matches?"dark":"light")},2446:(e,t,r)=>{r.d(t,{d:()=>c,t:()=>i});var n=r(3817),s=r(6749),a=r(4901);function l(e,t){return"SHOW"===t.type?{message:t.message,variant:t.variant,key:t.key}:null}let o=(0,s.createContext)(null);function i(e){let{children:t}=e,[r,i]=(0,s.useReducer)(l,null),c=(0,s.useRef)(null),d=(0,s.useRef)(0);(0,s.useEffect)(()=>()=>{null!==c.current&&clearTimeout(c.current)},[]);let u=(0,s.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info";null!==c.current&&clearTimeout(c.current),d.current+=1,i({type:"SHOW",message:e,variant:t,key:d.current}),c.current=setTimeout(()=>{i({type:"HIDE"}),c.current=null},3e3)},[]);return(0,n.jsxs)(o.Provider,{value:{showToast:u},children:[t,(0,n.jsx)("div",{className:"toast-container",role:"status","aria-live":"polite","aria-atomic":"true",children:r&&(0,n.jsxs)("div",{className:(0,a.cn)("toast","success"===r.variant&&"toast--success","error"===r.variant&&"toast--error","info"===r.variant&&"toast--info"),children:[(0,n.jsx)("span",{className:"toast__icon","aria-hidden":"true"}),(0,n.jsx)("span",{className:"toast__message",children:r.message})]},r.key)})]})}function c(){let e=(0,s.useContext)(o);if(!e)throw Error("useToast must be used within a ToastProvider");return e}},2749:(e,t,r)=>{r.d(t,{ProjectSettingsForm:()=>u});var n=r(3817),s=r(6749),a=r(7594),l=r(2446);let o="These describe which repo this is. Change them via `ao project relink`.";function i(e){let{projectId:t,initialValues:r}=e,o=(0,a.useRouter)(),{showToast:i}=(0,l.d)(),[u,p]=(0,s.useState)(r.agent),[m,h]=(0,s.useState)(r.runtime),[j,f]=(0,s.useState)(r.trackerPlugin),[v,g]=(0,s.useState)(r.scmPlugin),[b,_]=(0,s.useState)(r.reactions),[x,y]=(0,s.useState)(!1),[N,w]=(0,s.useState)(null),[k,S]=(0,s.useState)(null),C=(0,s.useMemo)(()=>({agent:u.trim()||null,runtime:m.trim()||null,tracker:j.trim()?{plugin:j.trim()}:null,scm:v.trim()?{plugin:v.trim()}:null,reactions:b}),[u,m,j,v,b]),E=async()=>{let e;w(null),S(null);try{let t=b.trim();e=t?JSON.parse(t):void 0}catch(e){w("Reactions must be valid JSON.");return}y(!0);try{let n=await fetch("/api/projects/".concat(encodeURIComponent(t)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:C.agent,runtime:C.runtime,tracker:C.tracker,scm:C.scm,reactions:null!=e?e:null})}),s=await n.json().catch(()=>null);if(!n.ok){var r;let e=null!=(r=null==s?void 0:s.error)?r:"Failed to save project settings.";400===n.status?w(e):S(e);return}i("Project settings updated.","success"),o.refresh()}catch(e){S("Network error while saving project settings.")}finally{y(!1)}};return(0,n.jsxs)("div",{className:"project-settings-form",children:[(0,n.jsxs)("section",{className:"project-settings-form__section",children:[(0,n.jsxs)("div",{className:"project-settings-form__section-header",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"project-settings-form__eyebrow",children:"Behavior"}),(0,n.jsx)("h2",{className:"project-settings-form__section-title",children:"Runtime configuration"}),(0,n.jsx)("p",{className:"project-settings-form__section-copy",children:"These values change how AO runs this project without changing which repository the project points at."})]}),(0,n.jsx)("button",{type:"button",onClick:()=>void E(),disabled:x,className:"project-settings-form__save",children:x?"Saving...":"Save changes"})]}),(0,n.jsxs)("div",{className:"project-settings-form__grid",children:[(0,n.jsx)(c,{id:"agent",label:"Agent",value:u,onChange:p,placeholder:"claude-code"}),(0,n.jsx)(c,{id:"runtime",label:"Runtime",value:m,onChange:h,placeholder:"tmux"}),(0,n.jsx)(c,{id:"tracker-plugin",label:"Tracker plugin",value:j,onChange:f,placeholder:"github"}),(0,n.jsx)(c,{id:"scm-plugin",label:"SCM plugin",value:v,onChange:g,placeholder:"github"})]}),(0,n.jsxs)("div",{className:"project-settings-form__reactions",children:[(0,n.jsx)("label",{htmlFor:"reactions",className:"project-settings-form__label",children:"Reactions"}),(0,n.jsx)("p",{className:"project-settings-form__hint",children:"JSON object keyed by reaction name. This PATCH only sends behavior fields."}),(0,n.jsx)("textarea",{id:"reactions",value:b,onChange:e=>_(e.target.value),spellCheck:!1,rows:12,className:"project-settings-form__textarea project-settings-form__textarea--mono"})]}),N?(0,n.jsx)("div",{role:"alert",className:"project-settings-form__alert project-settings-form__alert--error",children:N}):null,k?(0,n.jsxs)("div",{className:"project-settings-form__alert project-settings-form__alert--surface",children:[(0,n.jsx)("p",{className:"project-settings-form__alert-copy",children:k}),(0,n.jsx)("button",{type:"button",onClick:()=>void E(),className:"project-settings-form__retry",children:"Retry"})]}):null]}),(0,n.jsxs)("section",{className:"project-settings-form__section",children:[(0,n.jsx)("p",{className:"project-settings-form__eyebrow",children:"Identity"}),(0,n.jsx)("h2",{className:"project-settings-form__section-title",children:"Repository identity"}),(0,n.jsx)("p",{className:"project-settings-form__section-copy",children:"These fields are read-only because they define which repository AO considers this project to be."}),(0,n.jsxs)("div",{className:"project-settings-form__grid",children:[(0,n.jsx)(d,{id:"identity-project-id",label:"Project ID",value:r.identity.projectId}),(0,n.jsx)(d,{id:"identity-path",label:"Path",value:r.identity.path}),(0,n.jsx)(d,{id:"identity-storage-key",label:"Storage key",value:r.identity.storageKey}),(0,n.jsx)(d,{id:"identity-repo",label:"Repo",value:r.identity.repo}),(0,n.jsx)(d,{id:"identity-default-branch",label:"Default branch",value:r.identity.defaultBranch})]})]})]})}function c(e){let{id:t,label:r,value:s,onChange:a,placeholder:l}=e;return(0,n.jsxs)("label",{htmlFor:t,className:"project-settings-form__field",children:[(0,n.jsx)("span",{className:"project-settings-form__label",children:r}),(0,n.jsx)("input",{id:t,value:s,onChange:e=>a(e.target.value),placeholder:l,className:"project-settings-form__input"})]})}function d(e){let{id:t,label:r,value:s}=e;return(0,n.jsxs)("label",{htmlFor:t,className:"project-settings-form__field",children:[(0,n.jsx)("span",{className:"project-settings-form__label",children:r}),(0,n.jsx)("input",{id:t,value:s,disabled:!0,readOnly:!0,title:o,"aria-describedby":"".concat(t,"-tooltip"),className:"project-settings-form__input project-settings-form__input--readonly"}),(0,n.jsx)("span",{id:"".concat(t,"-tooltip"),className:"project-settings-form__hint",children:o})]})}function u(e){return(0,n.jsx)(l.t,{children:(0,n.jsx)(i,{...e})})}},4901:(e,t,r)=>{r.d(t,{cn:()=>n});function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter(Boolean).join(" ")}},5184:(e,t,r)=>{r.d(t,{Ug:()=>o,eT:()=>i,i2:()=>c});var n=r(3817),s=r(6749),a=r(1806);let l=s.createContext(void 0);function o(){let e=s.useContext(l);if(!e)throw Error("useMux() must be used within <MuxProvider>");return e}function i(){return s.useContext(l)}function c(e){let{children:t}=e,r=(0,s.useRef)(null),o=(0,s.useRef)(new Map),i=(0,s.useRef)(new Set),[c,d]=(0,s.useState)("connecting"),[u,p]=(0,s.useState)([]),m=(0,s.useRef)(0),h=(0,s.useRef)(null),j=(0,s.useRef)({}),f=(0,s.useRef)(!1),v=(0,s.useCallback)(()=>{if(!r.current){d("connecting");try{let e=function(e){var t,r,n;let s=window.location,l="https:"===s.protocol?"wss:":"ws:",o=null!=(t=e.proxyWsPath)?t:a.env.NEXT_PUBLIC_TERMINAL_WS_PATH;if(o){let e=o.replace(/\/ws\/?$/,"");return"".concat(l,"//").concat(s.host).concat(e,"/mux")}if(""===s.port||"443"===s.port||"80"===s.port)return"".concat(l,"//").concat(s.hostname,"/ao-terminal-mux");let i=null!=(n=null!=(r=e.directTerminalPort)?r:a.env.NEXT_PUBLIC_DIRECT_TERMINAL_PORT)?n:"14801";return"".concat(l,"//").concat(s.hostname,":").concat(i,"/mux")}(j.current);console.log("[MuxProvider] Connecting to",e);let t=new WebSocket(e);r.current=t,t.addEventListener("open",()=>{if(f.current)return void t.close();for(let e of(console.log("[MuxProvider] Connected"),d("connected"),m.current=0,i.current)){let r={ch:"terminal",id:e,type:"open"};t.send(JSON.stringify(r))}t.send(JSON.stringify({ch:"subscribe",topics:["sessions"]}))}),t.addEventListener("message",e=>{try{let t=JSON.parse(e.data);if("terminal"===t.ch)if("data"===t.type){let e=o.current.get(t.id);if(e)for(let r of e)r(t.data)}else if("opened"===t.type)i.current.add(t.id);else if("exited"===t.type){i.current.delete(t.id);let e=o.current.get(t.id);if(e){let r="\r\n\x1b[31m[Terminal exited with code ".concat(t.code,"]\x1b[0m\r\n");for(let t of e)t(r)}}else"error"===t.type&&console.error("[MuxProvider] Terminal error for ".concat(t.id,":"),t.message);else"sessions"===t.ch&&"snapshot"===t.type&&p(t.sessions)}catch(e){console.error("[MuxProvider] Error processing message:",e)}}),t.addEventListener("error",e=>{console.error("[MuxProvider] WebSocket error:",e)}),t.addEventListener("close",()=>{if(console.log("[MuxProvider] Disconnected"),r.current===t&&(r.current=null),f.current)return;let e=Math.min(1e3*Math.pow(2,m.current),3e4);m.current+=1,d("reconnecting"),h.current=setTimeout(()=>{console.log("[MuxProvider] Reconnecting (attempt ".concat(m.current,")...")),v()},e)})}catch(e){console.error("[MuxProvider] Failed to create WebSocket:",e),d("disconnected")}}},[]);(0,s.useEffect)(()=>{f.current=!1;let e=!1;return(async()=>{try{let e=await fetch("/api/runtime/terminal");if(e.ok){let t=await e.json();j.current={directTerminalPort:function(e){if("string"!=typeof e&&"number"!=typeof e)return;let t=Number.parseInt(String(e),10);if(Number.isInteger(t)&&!(t<=0)&&!(t>65535))return String(t)}(t.directTerminalPort),proxyWsPath:function(e){if("string"!=typeof e)return;let t=e.trim();if(t.startsWith("/"))return t}(t.proxyWsPath)}}}catch(e){}e||v()})(),()=>{var t;e=!0,f.current=!0,h.current&&clearTimeout(h.current),null==(t=r.current)||t.close()}},[v]);let g=(0,s.useCallback)((e,t)=>{var n;let s=o.current.get(e);return s||(s=new Set,o.current.set(e,s)),s.add(t),i.current.has(e)||(null==(n=r.current)?void 0:n.readyState)!==WebSocket.OPEN||r.current.send(JSON.stringify({ch:"terminal",id:e,type:"open"})),()=>{let r=o.current.get(e);r&&(r.delete(t),0===r.size&&o.current.delete(e))}},[]),b=(0,s.useCallback)((e,t)=>{var n;(null==(n=r.current)?void 0:n.readyState)===WebSocket.OPEN&&r.current.send(JSON.stringify({ch:"terminal",id:e,type:"data",data:t}))},[]),_=(0,s.useCallback)(e=>{var t;i.current.add(e),(null==(t=r.current)?void 0:t.readyState)===WebSocket.OPEN&&r.current.send(JSON.stringify({ch:"terminal",id:e,type:"open"}))},[]),x=(0,s.useCallback)(e=>{var t;i.current.delete(e),(null==(t=r.current)?void 0:t.readyState)===WebSocket.OPEN&&r.current.send(JSON.stringify({ch:"terminal",id:e,type:"close"}))},[]),y=(0,s.useCallback)((e,t,n)=>{var s;(null==(s=r.current)?void 0:s.readyState)===WebSocket.OPEN&&r.current.send(JSON.stringify({ch:"terminal",id:e,type:"resize",cols:t,rows:n}))},[]),N=(0,s.useMemo)(()=>({subscribeTerminal:g,writeTerminal:b,openTerminal:_,closeTerminal:x,resizeTerminal:y,status:c,sessions:u}),[g,b,_,x,y,c,u]);return(0,n.jsx)(l.Provider,{value:N,children:t})}},5425:(e,t,r)=>{r.d(t,{CM:()=>a,N_:()=>o,Rt:()=>l,SB:()=>s,U1:()=>c,tT:()=>i,u3:()=>n});let n={ACTIVE:"active",READY:"ready",IDLE:"idle",WAITING_INPUT:"waiting_input",BLOCKED:"blocked",EXITED:"exited"},s={SPAWNING:"spawning",WORKING:"working",DETECTING:"detecting",PR_OPEN:"pr_open",CI_FAILED:"ci_failed",REVIEW_PENDING:"review_pending",CHANGES_REQUESTED:"changes_requested",APPROVED:"approved",MERGEABLE:"mergeable",MERGED:"merged",CLEANUP:"cleanup",NEEDS_INPUT:"needs_input",STUCK:"stuck",ERRORED:"errored",IDLE:"idle",KILLED:"killed",DONE:"done",TERMINATED:"terminated"},a=new Set(["killed","terminated","done","cleanup","errored","merged"]),l=new Set(["exited"]),o=new Set(["merged"]);function i(e,t,r){var n;if((null==(n=e.metadata)?void 0:n.role)==="orchestrator")return!0;if(!t)return!1;let s=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(!new RegExp("^".concat(s,"-orchestrator-\\d+$")).test(e.id))return!1;if(r){for(let n of r)if(n!==t&&new RegExp("^".concat(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"-\\d+$")).test(e.id))return!1}return!0}let c={PENDING:"pending",PASSING:"passing",FAILING:"failing",NONE:"none"}},6004:(e,t,r)=>{r.d(t,{U:()=>l});var n=r(3817),s=r(2286),a=r(6749);function l(e){let{className:t,label:r}=e,{resolvedTheme:l,setTheme:o}=(0,s.D)(),[i,c]=(0,a.useState)(!1);if((0,a.useEffect)(()=>c(!0),[]),!i)return(0,n.jsx)("div",{className:null!=t?t:"h-9 w-9"});let d="dark"===l;return(0,n.jsxs)("button",{onClick:()=>o(d?"light":"dark"),className:null!=t?t:"flex h-9 w-9 items-center justify-center border border-[var(--color-border-strong)] bg-[var(--color-bg-elevated)] text-[var(--color-text-primary)] transition-colors hover:bg-[var(--color-bg-elevated-hover)]","aria-label":"Switch to ".concat(d?"light":"dark"," mode"),title:"Switch to ".concat(d?"light":"dark"," mode"),children:[d?(0,n.jsxs)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,n.jsx)("path",{d:"M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"})]}):(0,n.jsx)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"})}),r?(0,n.jsx)("span",{children:r}):null]})}},7387:(e,t,r)=>{function n(e){return e.replace(/^(?:feat|fix|chore|refactor|docs|test|ci|session|release|hotfix|feature|bugfix|build|wip|improvement)\//,"").replace(/[-_]/g," ").replace(/\b\w/g,e=>e.toUpperCase()).trim()}function s(e){var t;if(null==(t=e.pr)?void 0:t.title)return e.pr.title;if(e.issueTitle)return e.issueTitle;if(e.userPrompt)return e.userPrompt;if(e.branch)return n(e.branch);let r=e.metadata.pinnedSummary;return r||(e.summary&&!e.summaryIsFallback||e.summary?e.summary:e.status)}r.d(t,{Pn:()=>s,mC:()=>n})},7594:(e,t,r)=>{var n=r(9582);r.o(n,"notFound")&&r.d(t,{notFound:function(){return n.notFound}}),r.o(n,"useParams")&&r.d(t,{useParams:function(){return n.useParams}}),r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},8450:(e,t,r)=>{function n(e){return"/projects/".concat(encodeURIComponent(e))}function s(e,t){return"".concat(n(e),"/sessions/").concat(encodeURIComponent(t))}function a(e,t,r){return"".concat(s(e,t)).concat(r)}r.d(t,{$l:()=>a,Nc:()=>s,bn:()=>n})},9120:(e,t,r)=>{r.d(t,{D:()=>s,U:()=>a});var n=r(6749);let s=767;function a(e){let t="number"==typeof e?"(max-width: ".concat(e,"px)"):e,[r,s]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{let e=window.matchMedia(t);s(e.matches);let r=e=>{s(e.matches)};return"function"==typeof e.addEventListener?(e.addEventListener("change",r),()=>{e.removeEventListener("change",r)}):(e.addListener(r),()=>{e.removeListener(r)})},[t]),r}},9293:(e,t,r)=>{r.d(t,{u:()=>T});var n=r(3817),s=r(8713),a=r.n(s),l=r(6749),o=r(7594),i=r(4901),c=r(545),d=r(5425),u=r(7387);function p(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8;(0,l.useLayoutEffect)(()=>{if(!e)return;let n=t.current;if(!n)return;let s=()=>{n.style.transform="";let e=n.getBoundingClientRect(),t=window.innerWidth,s=0;e.left<r?s=r-e.left:e.right>t-r&&(s=t-r-e.right),0!==s&&(n.style.transform="translateX(".concat(s,"px)"))};return s(),window.addEventListener("resize",s),()=>{window.removeEventListener("resize",s),n.style.transform=""}},[e,t,r])}var m=r(8450),h=r(6004);let j="ao:add-project:recent";function f(e){var t;return(null!=(t=e.split("/").filter(Boolean).pop())?t:"project").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"project"}function v(e){var t;return(null!=(t=e.split("/").filter(Boolean).pop())?t:"Project").replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,e=>e.toUpperCase())||"Project"}function g(e,t){return"~"===e?"~/".concat(t):"".concat(e.replace(/\/+$/,""),"/").concat(t)}function b(e){let{children:t,className:r,viewBox:s="0 0 16 16"}=e;return(0,n.jsx)("svg",{"aria-hidden":"true",viewBox:s,className:r,children:t})}let _={fill:"none",stroke:"currentColor",strokeWidth:1.75,strokeLinecap:"square"},x={fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"miter"};function y(){return(0,n.jsx)(b,{className:"add-project-modal__toolicon",children:(0,n.jsx)("path",{d:"M10 3.5 6 8l4 4.5",..._})})}function N(){return(0,n.jsx)(b,{className:"add-project-modal__toolicon",children:(0,n.jsx)("path",{d:"m6 3.5 4 4.5L6 12.5",..._})})}function w(){return(0,n.jsx)(b,{className:"add-project-modal__toolicon",children:(0,n.jsx)("path",{d:"M8 12V4m0 0L5 7m3-3 3 3",...x})})}function k(){return(0,n.jsx)(b,{className:"add-project-modal__toolicon",children:(0,n.jsx)("path",{d:"M12 5V2.75H9.75M4.5 11A4.75 4.75 0 0 0 12 5M3.75 11v2.25H6m5.5-8.25A4.75 4.75 0 0 1 4 11",...x})})}function S(e){let{open:t,onClose:r}=e,s=(0,o.useRouter)(),a=(0,l.useRef)(null),[i,c]=(0,l.useState)(!1),[d,u]=(0,l.useState)(null),[p,m]=(0,l.useState)(null),[h,b]=(0,l.useState)(null),[_,x]=(0,l.useState)("~"),[S,C]=(0,l.useState)("~"),[E,P]=(0,l.useState)(["~"]),[I,R]=(0,l.useState)(0),[M,T]=(0,l.useState)([]),[L,D]=(0,l.useState)(!1),[O,A]=(0,l.useState)(null),[W,B]=(0,l.useState)(""),[U,F]=(0,l.useState)(""),K=async(e,t)=>{D(!0),A(null);try{var r,n,s,a,l,o,i;let c=await fetch("/api/filesystem/browse?path=".concat(encodeURIComponent(e))).catch(()=>null);if(!c){T([]),C(null!=(r=null==t?void 0:t.selectedPath)?r:e),A("Failed to browse directories.");return}if(!c.ok){let r=await c.json().catch(()=>null),a=404===c.status&&(null==r?void 0:r.error)==="Not found";T([]),C(a?"":null!=(n=null==t?void 0:t.selectedPath)?n:e),A(a?"Directory browsing is unavailable in this environment. Set AO_ALLOW_FILESYSTEM_BROWSE=1 to enable it.":null!=(s=null==r?void 0:r.error)?s:"Failed to browse directories.");return}let d=await c.json().catch(()=>null),u=null!=(a=null==t?void 0:t.mode)?a:"push",p=null!=(l=null==t?void 0:t.historyIndex)?l:I;x(e),C(null!=(o=null==t?void 0:t.selectedPath)?o:e),T(null!=(i=null==d?void 0:d.entries)?i:[]),"push"===u?P(t=>{let r=t.slice(0,p+1);return r[r.length-1]!==e&&r.push(e),R(r.length-1),r}):P(t=>{let r=[...t];return r[p]=e,r})}catch(e){A("Failed to browse directories.")}finally{D(!1)}};(0,l.useEffect)(()=>{var e;t&&(u(null),m(null),b(null),A(null),P(["~"]),R(0),x("~"),C("~"),B(""),F(""),null==(e=a.current)||e.focus(),K("~",{mode:"replace",selectedPath:"~"}))},[t]);let H=(0,l.useMemo)(()=>M.filter(e=>e.isDirectory),[M]),G=(0,l.useMemo)(()=>{var e;return null!=(e=H.find(e=>g(_,e.name)===S))?e:null},[_,H,S]),J=function(e){if("~"===e)return null;let t=e.split("/").filter(Boolean);return t.length<=1?"~":"~"===t[0]?"~/".concat(t.slice(1,-1).join("/")):t.slice(0,-1).join("/")}(_),z=I<E.length-1,V=W.trim()||(S.trim()&&"~"!==S?f(S):""),$=U.trim()||(S.trim()&&"~"!==S?v(S):""),q=""!==S.trim()&&"~"!==S&&!O&&!!(null==G?void 0:G.isGitRepo)&&V.length>0&&$.length>0,X=H.findIndex(e=>g(_,e.name)===S);(0,l.useEffect)(()=>{if(!S||"~"===S){B(""),F("");return}B(f(S)),F(v(S))},[S]),(0,l.useEffect)(()=>{if(!t)return;let e=e=>{var t;if((null==(t=a.current)?void 0:t.contains(document.activeElement))||document.activeElement===document.body){if("Escape"===e.key){e.preventDefault(),r();return}if((e.metaKey||e.ctrlKey)&&"Enter"===e.key&&q){e.preventDefault(),Z();return}if("ArrowDown"===e.key||"ArrowUp"===e.key){if(0===H.length)return;e.preventDefault();let t="ArrowDown"===e.key?1:-1,r=-1===X?t>0?0:H.length-1:Math.min(Math.max(X+t,0),H.length-1),n=H[r];n&&C(g(_,n.name));return}if("Enter"===e.key){if(X>=0){e.preventDefault(),K(S);return}q&&(e.preventDefault(),Z())}}};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[_,q,H,r,t,S,X]);let Z=async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];u(null),m(null),b(null),c(!0);let t=S.trim();try{var n,a,l;let o=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:V,name:$,path:t,allowStorageKeyReuse:e})}),i=await o.json().catch(()=>null);if(409===o.status&&(null==i?void 0:i.existingProjectId)&&(null==i?void 0:i.suggestion))return void b({error:null!=(n=i.error)?n:"A project with the same storage key already exists.",existingProjectId:i.existingProjectId,suggestion:i.suggestion});if(!o.ok){let e=null!=(a=null==i?void 0:i.error)?a:"Failed to add project.";o.status<500?u(e):m(e);return}let c=[t,...(function(){try{var e;let t=JSON.parse(null!=(e=window.localStorage.getItem(j))?e:"[]");return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch(e){return[]}})().filter(e=>e!==t)].slice(0,5);window.localStorage.setItem(j,JSON.stringify(c));let d=null!=(l=null==i?void 0:i.projectId)?l:V.trim();r(),s.push("/projects/".concat(encodeURIComponent(d))),s.refresh()}catch(e){m("Network error while adding project.")}finally{c(!1)}};if(!t)return null;let Q=e=>{var t;e<0||e>=E.length||(R(e),K(null!=(t=E[e])?t:"~",{mode:"replace",historyIndex:e}))},Y=h?(0,n.jsxs)("div",{className:"add-project-modal__notice add-project-modal__notice--warning",children:[(0,n.jsx)("p",{className:"add-project-modal__notice-title",children:h.error}),(0,n.jsxs)("p",{className:"add-project-modal__notice-copy",children:["Existing project: ",(0,n.jsx)("code",{children:h.existingProjectId})]}),(0,n.jsxs)("div",{className:"add-project-modal__notice-actions",children:[(0,n.jsx)("button",{type:"button",onClick:()=>{r(),s.push("/projects/".concat(encodeURIComponent(h.existingProjectId)))},className:"add-project-modal__ghostbtn",children:"Open existing"}),(0,n.jsx)("button",{type:"button",onClick:()=>void Z(!0),className:"add-project-modal__ghostbtn",children:"Reuse shared storage"}),(0,n.jsx)("span",{className:"add-project-modal__notice-hint",children:"Open the existing project or confirm shared storage reuse."})]})]}):d?(0,n.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:d}):G&&!G.isGitRepo?(0,n.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:"Selected folder is not a git repository."}):p?(0,n.jsx)("div",{className:"add-project-modal__notice add-project-modal__notice--error",children:p}):null;return(0,n.jsx)("div",{className:"add-project-modal-backdrop",children:(0,n.jsxs)("div",{ref:a,role:"dialog","aria-modal":"true","aria-label":"Add project",className:"add-project-modal",tabIndex:-1,children:[(0,n.jsxs)("div",{className:"add-project-modal__titlebar",children:[(0,n.jsx)("h2",{className:"add-project-modal__windowtitle",children:"add project"}),(0,n.jsx)("button",{type:"button","aria-label":"Close",onClick:r,className:"add-project-modal__iconbtn",children:"\xd7"})]}),(0,n.jsxs)("div",{className:"add-project-modal__toolbar",children:[(0,n.jsxs)("div",{className:"add-project-modal__toolbarcluster",children:[(0,n.jsx)("button",{type:"button",onClick:()=>Q(I-1),disabled:!(I>0),className:"add-project-modal__toolbtn","aria-label":"Go back",children:(0,n.jsx)(y,{})}),(0,n.jsx)("button",{type:"button",onClick:()=>Q(I+1),disabled:!z,className:"add-project-modal__toolbtn","aria-label":"Go forward",children:(0,n.jsx)(N,{})}),(0,n.jsx)("button",{type:"button",onClick:()=>J&&void K(J),disabled:!J,className:"add-project-modal__toolbtn","aria-label":"Go up",children:(0,n.jsx)(w,{})}),(0,n.jsx)("button",{type:"button",onClick:()=>void K(_,{mode:"replace",selectedPath:S}),className:"add-project-modal__toolbtn","aria-label":"Refresh",children:(0,n.jsx)(k,{})})]}),(0,n.jsx)("div",{className:"add-project-modal__location",children:_})]}),(0,n.jsx)("div",{className:"add-project-modal__content",children:(0,n.jsxs)("div",{className:"add-project-browser",children:[(0,n.jsxs)("div",{className:"add-project-browser__current",children:[(0,n.jsx)("div",{className:"add-project-browser__current-label",children:"Current folder"}),(0,n.jsx)("div",{className:"add-project-browser__current-path",children:_})]}),O?(0,n.jsxs)("div",{className:"add-project-browser__state add-project-browser__state--error",children:[(0,n.jsx)("p",{className:"add-project-browser__state-title",children:"Directory browser unavailable"}),(0,n.jsx)("p",{className:"add-project-browser__state-copy",children:O})]}):L?(0,n.jsxs)("div",{className:"add-project-browser__state",children:[(0,n.jsx)("p",{className:"add-project-browser__state-title",children:"Loading folders"}),(0,n.jsx)("p",{className:"add-project-browser__state-copy",children:"Fetching directories for this location."})]}):0===H.length?(0,n.jsxs)("div",{className:"add-project-browser__state",children:[(0,n.jsx)("p",{className:"add-project-browser__state-title",children:"No visible folders here"}),(0,n.jsx)("p",{className:"add-project-browser__state-copy",children:"Try navigating up or picking a different location."})]}):(0,n.jsxs)("div",{className:"add-project-browser__rows",children:[J?(0,n.jsx)("button",{type:"button",onClick:()=>void K(J),className:"add-project-browser__row add-project-browser__row--parent",children:".."}):null,H.map(e=>{let t=g(_,e.name);return(0,n.jsx)("button",{type:"button",onClick:()=>C(t),onDoubleClick:()=>void K(t),className:"add-project-browser__row".concat(S===t?" is-selected":""),children:e.name},t)})]})]})}),(0,n.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,n.jsx)("span",{className:"add-project-modal__selection-label",children:"Selected"}),(0,n.jsx)("span",{className:"add-project-modal__selection-path",children:S||"No directory selected"})]}),(0,n.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,n.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-id-input",children:"Project ID"}),(0,n.jsx)("input",{id:"project-id-input",value:W,onChange:e=>B(e.target.value),className:"add-project-modal__selection-path"})]}),(0,n.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,n.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-name-input",children:"Project name"}),(0,n.jsx)("input",{id:"project-name-input",value:U,onChange:e=>F(e.target.value),className:"add-project-modal__selection-path"})]}),Y,(0,n.jsxs)("div",{className:"add-project-modal__footer",children:[(0,n.jsxs)("div",{className:"add-project-modal__foldercount",children:[H.length," folders"]}),(0,n.jsxs)("div",{className:"add-project-modal__actions",children:[(0,n.jsx)("button",{type:"button",onClick:r,className:"add-project-modal__ghostbtn",children:"Cancel"}),(0,n.jsx)("button",{type:"button",onClick:()=>void Z(),disabled:!q||i,className:"add-project-modal__primarybtn",children:i?"Adding…":"Add project"})]})]})]})})}var C=r(2749);function E(e){var t;let{open:r,projectId:s,onClose:a}=e,o=(0,l.useRef)(null),[i,c]=(0,l.useState)(!1),[d,u]=(0,l.useState)(null),[p,m]=(0,l.useState)(null);(0,l.useEffect)(()=>{var e;r&&s&&(null==(e=o.current)||e.focus())},[r,s]),(0,l.useEffect)(()=>{if(!r)return;let e=e=>{"Escape"===e.key&&(e.preventDefault(),a())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[r,a]),(0,l.useEffect)(()=>{if(!r||!s){m(null),u(null),c(!1);return}let e=!1;return c(!0),u(null),m(null),fetch("/api/projects/".concat(encodeURIComponent(s))).then(async t=>{let r=await t.json().catch(()=>null);if(!t.ok||!(null==r?void 0:r.project)||r.degraded){var n;throw Error(null!=(n=null==r?void 0:r.error)?n:"Failed to load project settings.")}e||m(r.project)}).catch(t=>{e||u(t instanceof Error?t.message:"Failed to load project settings.")}).finally(()=>{e||c(!1)}),()=>{e=!0}},[r,s]);let h=(0,l.useMemo)(()=>{var e,t,r,n,a,l,o,i,c,d;return p&&s?{agent:null!=(r=p.agent)?r:"",runtime:null!=(n=p.runtime)?n:"",trackerPlugin:null!=(a=null==(e=p.tracker)?void 0:e.plugin)?a:"",scmPlugin:null!=(l=null==(t=p.scm)?void 0:t.plugin)?l:"",reactions:JSON.stringify(null!=(o=p.reactions)?o:{},null,2),identity:{projectId:s,path:p.path,storageKey:null!=(i=p.storageKey)?i:"",repo:null!=(c=p.repo)?c:"",defaultBranch:null!=(d=p.defaultBranch)?d:"main"}}:null},[p,s]);return r&&s?(0,n.jsx)("div",{className:"project-settings-modal-backdrop",onClick:a,children:(0,n.jsxs)("div",{ref:o,role:"dialog","aria-modal":"true","aria-label":"Project settings",className:"project-settings-modal",tabIndex:-1,onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)("div",{className:"project-settings-modal__header",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"project-settings-modal__eyebrow",children:"Project settings"}),(0,n.jsx)("h2",{className:"project-settings-modal__title",children:null!=(t=null==p?void 0:p.name)?t:s})]}),(0,n.jsx)("button",{type:"button","aria-label":"Close",onClick:a,className:"project-settings-modal__close",children:"\xd7"})]}),(0,n.jsxs)("div",{className:"project-settings-modal__body",children:[i?(0,n.jsx)("div",{className:"project-settings-modal__state",children:"Loading project settings…"}):null,!i&&d?(0,n.jsx)("div",{role:"alert",className:"project-settings-modal__state project-settings-modal__state--error",children:d}):null,i||d||!h?null:(0,n.jsx)(C.ProjectSettingsForm,{projectId:s,initialValues:h})]})]})}):null}function P(e){let{level:t}=e;return(0,n.jsx)("div",{className:(0,i.cn)("sidebar-session-dot shrink-0 rounded-full","working"===t&&"sidebar-session-dot--glow"),"data-level":t})}let I="ao:sidebar:show-session-id";function R(){try{return"true"===window.localStorage.getItem(I)}catch(e){return!1}}let M={working:"working",pending:"pending",review:"review",respond:"respond",action:"action",merge:"merge",done:"done"};function T(e){return 0===e.projects.length?null:(0,n.jsx)(L,{...e})}function L(e){let{projects:t,sessions:r,activeProjectId:s,activeSessionId:j,loading:f=!1,error:v=!1,onRetry:g,collapsed:b=!1,onToggleCollapsed:_,onMobileClose:x}=e,y=(0,o.useRouter)(),N=f||null===r,[w,k]=(0,l.useState)(()=>new Set(s&&"all"!==s?[s]:[])),[C,T]=(0,l.useState)(!1),[L,D]=(0,l.useState)(!1),[O,A]=(0,l.useState)(R),[W,B]=(0,l.useState)(!1),[U,F]=(0,l.useState)(null),[K,H]=(0,l.useState)(null),[G,J]=(0,l.useState)(null),[z,V]=(0,l.useState)(new Set),[$,q]=(0,l.useState)(!1),X=(0,l.useRef)(null),Z=(0,l.useRef)(null),Q=(0,l.useRef)(null),Y=(0,l.useRef)(null);p(W,Z),p(!!U,Y),(0,l.useEffect)(()=>{try{window.localStorage.setItem(I,String(O))}catch(e){}},[O]),(0,l.useEffect)(()=>{if(!W)return;let e=e=>{X.current&&!X.current.contains(e.target)&&B(!1)},t=e=>{"Escape"===e.key&&B(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[W]),(0,l.useEffect)(()=>{if(!U)return;let e=e=>{Q.current&&!Q.current.contains(e.target)&&F(null)},t=e=>{"Escape"===e.key&&F(null)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[U]),(0,l.useEffect)(()=>{s&&"all"!==s&&k(e=>new Set([...e,s]))},[s]),(0,l.useEffect)(()=>{V(e=>{if(0===e.size)return e;let r=new Set([...e].filter(e=>!t.some(t=>t.id===e)));return r.size===e.size?e:r})},[t]);let ee=(0,l.useMemo)(()=>t.filter(e=>!z.has(e.id)),[t,z]),et=(0,l.useMemo)(()=>new Map(ee.map(e=>{var t;return[e.id,null!=(t=e.sessionPrefix)?t:e.id]})),[ee]),er=(0,l.useMemo)(()=>ee.map(e=>{var t;return null!=(t=e.sessionPrefix)?t:e.id}),[ee]),en=(0,l.useMemo)(()=>{let e=new Map,t=new Set(ee.map(e=>e.id));for(let s of null!=r?r:[]){var n;if(!t.has(s.projectId)||(0,d.tT)(s,et.get(s.projectId),er)||"killed"===s.status&&!C||"done"===(0,c.ng)(s)&&!L)continue;let r=null!=(n=e.get(s.projectId))?n:[];r.push(s),e.set(s.projectId,r)}return e},[r,et,er,ee,C,L]),es=(e,t)=>{if(t)try{sessionStorage.setItem("ao-session-nav:".concat(t.id),JSON.stringify(t))}catch(e){}y.push(e),null==x||x()},ea=async e=>{if(window.confirm("Remove project ".concat(e.name," from AO? This clears its AO sessions/history and removes it from the portfolio, but keeps the repository folder on disk."))){J(e.id);try{let r=await fetch("/api/projects/".concat(encodeURIComponent(e.id)),{method:"DELETE"}),n=await r.json().catch(()=>null);if(!r.ok){var t;throw Error(null!=(t=n&&"object"==typeof n&&"error"in n&&"string"==typeof n.error?n.error:null)?t:"Failed to remove project.")}V(t=>new Set(t).add(e.id)),k(t=>{let r=new Set(t);return r.delete(e.id),r}),F(null),s===e.id?y.push("/"):"refresh"in y&&"function"==typeof y.refresh&&y.refresh(),null==x||x()}catch(e){window.alert(e instanceof Error?e.message:"Failed to remove project.")}finally{J(null)}}};return b?(0,n.jsx)("aside",{className:(0,i.cn)("project-sidebar project-sidebar--collapsed flex flex-col h-full items-center py-2 gap-1 overflow-y-auto"),children:ee.map((e,t)=>{var r;let a=null!=(r=en.get(e.id))?r:[],l=e.name.slice(0,2).toUpperCase();return(0,n.jsxs)("div",{className:"flex flex-col items-center gap-0.5 w-full px-1",children:[t>0&&(0,n.jsx)("div",{className:"project-sidebar__collapsed-divider","aria-hidden":"true"}),(0,n.jsx)("a",{href:(0,m.bn)(e.id),className:(0,i.cn)("project-sidebar__collapsed-icon",s===e.id&&"project-sidebar__collapsed-icon--active"),title:e.name,"aria-label":e.name,children:(0,n.jsx)("span",{className:"project-sidebar__collapsed-abbr",children:l})}),a.slice(0,5).map(t=>{var r;let s=(0,c.ng)(t),a=null!=(r=t.branch)?r:(0,u.Pn)(t),l=(t.branch&&(0,u.mC)(t.branch)||a).replace(/\s+/g,"").slice(0,3).toUpperCase(),o=j===t.id,d=(0,m.Nc)(e.id,t.id);return(0,n.jsxs)("a",{href:d,onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||1===e.button||(e.preventDefault(),es(d,t))},className:(0,i.cn)("project-sidebar__collapsed-session-btn",o&&"project-sidebar__collapsed-session-btn--active"),"data-level":s,title:a,"aria-label":a,children:[(0,n.jsx)("span",{className:"project-sidebar__session-abbr-first",children:l[0]}),(0,n.jsx)("span",{className:"project-sidebar__session-abbr-rest",children:l.slice(1)})]},t.id)}),a.length>5&&(0,n.jsxs)("span",{className:"project-sidebar__collapsed-overflow",children:["+",a.length-5]})]},e.id)})}):(0,n.jsxs)("aside",{className:"project-sidebar flex h-full flex-col",children:[(0,n.jsxs)("div",{className:"project-sidebar__compact-hdr",children:[(0,n.jsx)("span",{className:"project-sidebar__sect-label",children:"Projects"}),(0,n.jsx)("button",{type:"button",className:"project-sidebar__add-btn","aria-label":"New project",onClick:()=>q(!0),children:(0,n.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M12 5v14M5 12h14"})})})]}),v&&r&&r.length>0?(0,n.jsxs)("div",{role:"status",className:"mx-3 mb-2 flex items-center justify-between gap-2 rounded-md border border-[var(--color-border-strong)] bg-[var(--color-bg-primary)] px-2 py-1.5 text-[11px] text-[var(--color-text-tertiary)]",children:[(0,n.jsx)("span",{children:"Failed to refresh \xb7 showing cached sessions"}),g?(0,n.jsx)("button",{type:"button",onClick:g,className:"font-medium text-[var(--color-link)] hover:underline",children:"Retry"}):null]}):null,(0,n.jsx)("div",{className:"project-sidebar__tree flex-1 overflow-y-auto overflow-x-hidden",children:ee.map(e=>{var t;let l=null!=(t=en.get(e.id))?t:[],o=w.has(e.id),p=s===e.id,h=!!e.resolveError,f=(0,m.bn)(e.id),b=l.length>0,_=null==r?void 0:r.find(t=>(0,d.tT)(t,et.get(t.projectId),er)&&t.projectId===e.id);return(0,n.jsxs)("div",{className:"project-sidebar__project",children:[(0,n.jsxs)("div",{className:"project-sidebar__proj-row flex items-center",children:[h?(0,n.jsxs)("a",{href:f,onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||1===e.button||(e.preventDefault(),es(f))},className:(0,i.cn)("project-sidebar__proj-toggle project-sidebar__proj-toggle--link project-sidebar__proj-toggle--degraded",p&&"project-sidebar__proj-toggle--active"),"aria-current":p?"page":void 0,children:[(0,n.jsxs)("svg",{className:"project-sidebar__proj-chevron project-sidebar__proj-chevron--degraded",width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M12 9v4"}),(0,n.jsx)("path",{d:"M12 17h.01"}),(0,n.jsx)("path",{d:"M10.3 3.86 1.82 18a2 2 0 0 0 1.72 3h16.92a2 2 0 0 0 1.72-3L13.7 3.86a2 2 0 0 0-3.4 0Z"})]}),(0,n.jsx)("span",{className:"project-sidebar__proj-name",children:e.name}),(0,n.jsx)("span",{className:"project-sidebar__proj-badge project-sidebar__proj-badge--degraded",children:"degraded"})]}):(0,n.jsxs)("button",{type:"button",onClick:()=>{var t;return t=e.id,void k(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},className:(0,i.cn)("project-sidebar__proj-toggle",p&&"project-sidebar__proj-toggle--active"),"aria-expanded":o,"aria-current":p?"page":void 0,children:[(0,n.jsx)("svg",{className:(0,i.cn)("project-sidebar__proj-chevron",o&&"project-sidebar__proj-chevron--open"),width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"m9 18 6-6-6-6"})}),(0,n.jsx)("span",{className:"project-sidebar__proj-name",children:e.name}),(0,n.jsx)("span",{className:(0,i.cn)("project-sidebar__proj-badge",b&&"project-sidebar__proj-badge--active"),children:l.length})]}),h?null:(0,n.jsx)(a(),{href:f,onClick:e=>{e.stopPropagation(),null==x||x()},className:"project-sidebar__proj-action","aria-label":"Open ".concat(e.name," dashboard"),title:"Dashboard",children:(0,n.jsx)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M3 13h8V3H3zm10 8h8V11h-8zM3 21h8v-6H3zm10-10h8V3h-8z"})})}),!h&&_&&(0,n.jsx)(a(),{href:(0,m.Nc)(e.id,_.id),onClick:e=>{e.stopPropagation(),null==x||x()},className:"project-sidebar__proj-action","aria-label":"Open ".concat(e.name," orchestrator"),title:"Orchestrator",children:(0,n.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,n.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,n.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,n.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,n.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,n.jsx)("circle",{cx:"18",cy:"17",r:"2"})]})}),(0,n.jsxs)("div",{className:"project-sidebar__proj-menu",ref:U===e.id?Q:void 0,children:[(0,n.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),F(t=>t===e.id?null:e.id)},className:"project-sidebar__proj-action project-sidebar__proj-action--menu","aria-label":"Project actions for ".concat(e.name),"aria-expanded":U===e.id,"aria-haspopup":"menu",title:"Project actions",children:(0,n.jsxs)("svg",{width:"12",height:"12",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"5",r:"1.75"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"1.75"}),(0,n.jsx)("circle",{cx:"12",cy:"19",r:"1.75"})]})}),U===e.id?(0,n.jsxs)("div",{ref:Y,className:"project-sidebar__proj-menu-popover",role:"menu","aria-label":"".concat(e.name," actions"),children:[(0,n.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item",role:"menuitem",onClick:()=>{F(null),H(e.id)},children:"Project settings"}),(0,n.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item project-sidebar__proj-menu-item--danger",role:"menuitem",onClick:()=>void ea(e),disabled:G===e.id,children:G===e.id?"Removing...":"Remove project"})]}):null]})]}),h?(0,n.jsx)("div",{className:"project-sidebar__degraded-note",children:"Config needs repair"}):null,!h&&o&&(0,n.jsx)("div",{className:"project-sidebar__sessions",children:N?(0,n.jsx)("div",{className:"space-y-2 px-3 py-2","aria-label":"Loading sessions",children:Array.from({length:3},(t,r)=>(0,n.jsxs)("div",{className:"flex items-center gap-3 border border-[var(--color-border-subtle)] bg-[var(--color-bg-surface)] px-2 py-2",children:[(0,n.jsx)("div",{className:"h-2 w-2 shrink-0 animate-pulse bg-[var(--color-border-strong)]"}),(0,n.jsx)("div",{className:"h-3 flex-1 animate-pulse bg-[var(--color-bg-primary)]"}),(0,n.jsx)("div",{className:"h-3 w-12 animate-pulse bg-[var(--color-bg-primary)]"})]},"".concat(e.id,"-loading-").concat(r)))}):l.length>0?l.map(t=>{var r;let s=(0,c.ng)(t),a=j===t.id,l=null!=(r=t.branch)?r:(0,u.Pn)(t),o=(0,m.Nc)(e.id,t.id);return(0,n.jsxs)("a",{href:o,onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||1===e.button||(e.preventDefault(),es(o,t))},className:(0,i.cn)("project-sidebar__sess-row",a&&"project-sidebar__sess-row--active"),"aria-current":a?"page":void 0,"aria-label":"Open ".concat(l),children:[(0,n.jsx)(P,{level:s}),(0,n.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,n.jsx)("span",{className:(0,i.cn)("project-sidebar__sess-label",a&&"project-sidebar__sess-label--active"),children:l}),O?(0,n.jsxs)("div",{className:"project-sidebar__sess-meta",children:[(0,n.jsx)("span",{className:"project-sidebar__sess-id",children:t.id}),(0,n.jsx)("span",{className:"project-sidebar__sess-status",children:M[s]})]}):null]}),O?null:(0,n.jsx)("span",{className:"project-sidebar__sess-status project-sidebar__sess-status--inline",children:M[s]})]},t.id)}):v?(0,n.jsxs)("div",{className:"px-3 py-2",children:[(0,n.jsx)("div",{className:"project-sidebar__empty",children:"Failed to load sessions"}),(0,n.jsx)("button",{type:"button",className:"mt-2 text-xs font-medium text-[var(--color-link)] hover:underline",onClick:g,children:"Retry"})]}):(0,n.jsx)("div",{className:"project-sidebar__empty",children:"No active sessions"})})]},e.id)})}),(0,n.jsx)("div",{className:"project-sidebar__footer",children:(0,n.jsxs)("div",{className:"flex items-center gap-1 border-t border-[var(--color-border-subtle)] px-2 py-2",children:[(0,n.jsx)("button",{type:"button",onClick:()=>T(!C),className:(0,i.cn)("project-sidebar__footer-btn",C&&"project-sidebar__footer-btn--active"),"aria-pressed":C,title:C?"Hide killed sessions":"Show killed sessions","aria-label":C?"Hide killed sessions":"Show killed sessions",children:(0,n.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M12 3C7.03 3 3 7.03 3 12c0 3.1 1.5 5.84 3.8 7.55V21h2.4v-1h1.6v1h2.4v-1h1.6v1H17v-1.45A9 9 0 0 0 21 12c0-4.97-4.03-9-9-9z"}),(0,n.jsx)("circle",{cx:"9",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"}),(0,n.jsx)("circle",{cx:"15",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"})]})}),(0,n.jsx)("button",{type:"button",onClick:()=>D(!L),className:(0,i.cn)("project-sidebar__footer-btn",L&&"project-sidebar__footer-btn--active"),"aria-pressed":L,title:L?"Hide completed sessions":"Show completed sessions","aria-label":L?"Hide completed sessions":"Show completed sessions",children:(0,n.jsx)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M20 6 9 17l-5-5"})})}),(0,n.jsx)("div",{className:"flex-1"}),(0,n.jsxs)("div",{className:"project-sidebar__settings-wrap",ref:X,children:[(0,n.jsx)("button",{type:"button",onClick:()=>B(e=>!e),className:(0,i.cn)("project-sidebar__footer-btn",W&&"project-sidebar__footer-btn--active"),"aria-expanded":W,"aria-haspopup":"dialog",title:"Sidebar settings","aria-label":"Sidebar settings",children:(0,n.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"}),(0,n.jsx)("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"})]})}),W?(0,n.jsx)("div",{ref:Z,className:"project-sidebar__settings-popover",role:"dialog","aria-label":"Sidebar settings",children:(0,n.jsxs)("label",{className:"project-sidebar__settings-row",children:[(0,n.jsx)("input",{type:"checkbox",checked:O,onChange:e=>A(e.target.checked)}),(0,n.jsx)("span",{children:"Show session ID"})]})}):null]}),(0,n.jsx)(h.U,{className:"project-sidebar__theme-toggle"})]})}),(0,n.jsx)(S,{open:$,onClose:()=>q(!1)}),(0,n.jsx)(E,{open:null!==K,projectId:K,onClose:()=>H(null)})]})}}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8301,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8301,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8301,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8301,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8301,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8301,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8301,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8301,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);