viba-cli 0.40.0 → 0.41.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 (273) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/fallback-build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/_global-error/page.js +1 -1
  6. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/server/app/_global-error.html +2 -2
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page.js +1 -1
  15. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +2 -2
  18. package/.next/server/app/_not-found.rsc +2 -2
  19. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  25. package/.next/server/app/api/component-source/resolve/route.js +1 -1
  26. package/.next/server/app/api/component-source/resolve/route.js.nft.json +1 -1
  27. package/.next/server/app/api/credentials/github/repos/route.js +1 -1
  28. package/.next/server/app/api/credentials/github/repos/route.js.nft.json +1 -1
  29. package/.next/server/app/api/credentials/route.js +1 -1
  30. package/.next/server/app/api/credentials/route.js.nft.json +1 -1
  31. package/.next/server/app/api/custom-scripts/route.js.nft.json +1 -1
  32. package/.next/server/app/api/git/action/route.js +1 -1
  33. package/.next/server/app/api/git/action/route.js.nft.json +1 -1
  34. package/.next/server/app/api/git/branches/route.js.nft.json +1 -1
  35. package/.next/server/app/api/git/diff/route.js +1 -1
  36. package/.next/server/app/api/git/diff/route.js.nft.json +1 -1
  37. package/.next/server/app/api/git/log/route.js.nft.json +1 -1
  38. package/.next/server/app/api/git/status/route.js.nft.json +1 -1
  39. package/.next/server/app/api/preview-proxy/start/route.js +1 -1
  40. package/.next/server/app/api/preview-proxy/start/route.js.nft.json +1 -1
  41. package/.next/server/app/api/repos/clone/route.js +1 -1
  42. package/.next/server/app/api/repos/clone/route.js.nft.json +1 -1
  43. package/.next/server/app/api/repos/route.js +1 -1
  44. package/.next/server/app/api/repos/route.js.nft.json +1 -1
  45. package/.next/server/app/api/settings/route.js +1 -1
  46. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  47. package/.next/server/app/credentials/page/server-reference-manifest.json +7 -7
  48. package/.next/server/app/credentials/page.js +1 -1
  49. package/.next/server/app/credentials/page.js.nft.json +1 -1
  50. package/.next/server/app/credentials/page_client-reference-manifest.js +1 -1
  51. package/.next/server/app/credentials.html +2 -2
  52. package/.next/server/app/credentials.rsc +4 -4
  53. package/.next/server/app/credentials.segments/_full.segment.rsc +4 -4
  54. package/.next/server/app/credentials.segments/_head.segment.rsc +1 -1
  55. package/.next/server/app/credentials.segments/_index.segment.rsc +2 -2
  56. package/.next/server/app/credentials.segments/_tree.segment.rsc +2 -2
  57. package/.next/server/app/credentials.segments/credentials/__PAGE__.segment.rsc +2 -2
  58. package/.next/server/app/credentials.segments/credentials.segment.rsc +1 -1
  59. package/.next/server/app/git/changes/page.js +1 -1
  60. package/.next/server/app/git/changes/page.js.nft.json +1 -1
  61. package/.next/server/app/git/changes/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/git/changes.html +2 -2
  63. package/.next/server/app/git/changes.rsc +2 -2
  64. package/.next/server/app/git/changes.segments/_full.segment.rsc +2 -2
  65. package/.next/server/app/git/changes.segments/_head.segment.rsc +1 -1
  66. package/.next/server/app/git/changes.segments/_index.segment.rsc +2 -2
  67. package/.next/server/app/git/changes.segments/_tree.segment.rsc +2 -2
  68. package/.next/server/app/git/changes.segments/git/changes/__PAGE__.segment.rsc +1 -1
  69. package/.next/server/app/git/changes.segments/git/changes.segment.rsc +1 -1
  70. package/.next/server/app/git/changes.segments/git.segment.rsc +1 -1
  71. package/.next/server/app/git/custom-scripts/page.js +1 -1
  72. package/.next/server/app/git/custom-scripts/page.js.nft.json +1 -1
  73. package/.next/server/app/git/custom-scripts/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/git/custom-scripts.html +2 -2
  75. package/.next/server/app/git/custom-scripts.rsc +2 -2
  76. package/.next/server/app/git/custom-scripts.segments/_full.segment.rsc +2 -2
  77. package/.next/server/app/git/custom-scripts.segments/_head.segment.rsc +1 -1
  78. package/.next/server/app/git/custom-scripts.segments/_index.segment.rsc +2 -2
  79. package/.next/server/app/git/custom-scripts.segments/_tree.segment.rsc +2 -2
  80. package/.next/server/app/git/custom-scripts.segments/git/custom-scripts/__PAGE__.segment.rsc +1 -1
  81. package/.next/server/app/git/custom-scripts.segments/git/custom-scripts.segment.rsc +1 -1
  82. package/.next/server/app/git/custom-scripts.segments/git.segment.rsc +1 -1
  83. package/.next/server/app/git/history/page/server-reference-manifest.json +17 -1
  84. package/.next/server/app/git/history/page.js +3 -2
  85. package/.next/server/app/git/history/page.js.nft.json +1 -1
  86. package/.next/server/app/git/history/page_client-reference-manifest.js +1 -1
  87. package/.next/server/app/git/history.html +2 -2
  88. package/.next/server/app/git/history.rsc +4 -4
  89. package/.next/server/app/git/history.segments/_full.segment.rsc +4 -4
  90. package/.next/server/app/git/history.segments/_head.segment.rsc +1 -1
  91. package/.next/server/app/git/history.segments/_index.segment.rsc +2 -2
  92. package/.next/server/app/git/history.segments/_tree.segment.rsc +2 -2
  93. package/.next/server/app/git/history.segments/git/history/__PAGE__.segment.rsc +2 -2
  94. package/.next/server/app/git/history.segments/git/history.segment.rsc +1 -1
  95. package/.next/server/app/git/history.segments/git.segment.rsc +1 -1
  96. package/.next/server/app/git/page/server-reference-manifest.json +17 -1
  97. package/.next/server/app/git/page.js +3 -2
  98. package/.next/server/app/git/page.js.nft.json +1 -1
  99. package/.next/server/app/git/page_client-reference-manifest.js +1 -1
  100. package/.next/server/app/git/stashes/page.js +1 -1
  101. package/.next/server/app/git/stashes/page.js.nft.json +1 -1
  102. package/.next/server/app/git/stashes/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/git/stashes.html +2 -2
  104. package/.next/server/app/git/stashes.rsc +2 -2
  105. package/.next/server/app/git/stashes.segments/_full.segment.rsc +2 -2
  106. package/.next/server/app/git/stashes.segments/_head.segment.rsc +1 -1
  107. package/.next/server/app/git/stashes.segments/_index.segment.rsc +2 -2
  108. package/.next/server/app/git/stashes.segments/_tree.segment.rsc +2 -2
  109. package/.next/server/app/git/stashes.segments/git/stashes/__PAGE__.segment.rsc +1 -1
  110. package/.next/server/app/git/stashes.segments/git/stashes.segment.rsc +1 -1
  111. package/.next/server/app/git/stashes.segments/git.segment.rsc +1 -1
  112. package/.next/server/app/git.html +2 -2
  113. package/.next/server/app/git.rsc +4 -4
  114. package/.next/server/app/git.segments/_full.segment.rsc +4 -4
  115. package/.next/server/app/git.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/git.segments/_index.segment.rsc +2 -2
  117. package/.next/server/app/git.segments/_tree.segment.rsc +2 -2
  118. package/.next/server/app/git.segments/git/__PAGE__.segment.rsc +2 -2
  119. package/.next/server/app/git.segments/git.segment.rsc +1 -1
  120. package/.next/server/app/index.html +2 -2
  121. package/.next/server/app/index.rsc +4 -4
  122. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  123. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  124. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  125. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  126. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  127. package/.next/server/app/new/page/server-reference-manifest.json +29 -29
  128. package/.next/server/app/new/page.js +3 -3
  129. package/.next/server/app/new/page.js.nft.json +1 -1
  130. package/.next/server/app/new/page_client-reference-manifest.js +1 -1
  131. package/.next/server/app/page/server-reference-manifest.json +29 -29
  132. package/.next/server/app/page.js +3 -3
  133. package/.next/server/app/page.js.nft.json +1 -1
  134. package/.next/server/app/page_client-reference-manifest.js +1 -1
  135. package/.next/server/app/session/[sessionId]/page/server-reference-manifest.json +34 -19
  136. package/.next/server/app/session/[sessionId]/page.js +2 -2
  137. package/.next/server/app/session/[sessionId]/page.js.nft.json +1 -1
  138. package/.next/server/app/session/[sessionId]/page_client-reference-manifest.js +1 -1
  139. package/.next/server/chunks/[externals]__4610b07e._.js +3 -0
  140. package/.next/server/chunks/{[root-of-the-server]__51f9ab28._.js → [root-of-the-server]__093d29e3._.js} +2 -2
  141. package/.next/server/chunks/{[root-of-the-server]__f52f1c06._.js → [root-of-the-server]__2bdd2171._.js} +2 -2
  142. package/.next/server/chunks/{[root-of-the-server]__ceda8fbc._.js → [root-of-the-server]__34da758c._.js} +2 -2
  143. package/.next/server/chunks/{[root-of-the-server]__9af2c9bf._.js → [root-of-the-server]__5ebd9b2a._.js} +2 -2
  144. package/.next/server/chunks/{[root-of-the-server]__3ffc9919._.js → [root-of-the-server]__6a2576a8._.js} +2 -2
  145. package/.next/server/chunks/{[root-of-the-server]__5b08b37e._.js → [root-of-the-server]__7147e7f8._.js} +2 -2
  146. package/.next/server/chunks/{[root-of-the-server]__1bf60374._.js → [root-of-the-server]__93d494cc._.js} +2 -2
  147. package/.next/server/chunks/{[root-of-the-server]__8b29248a._.js → [root-of-the-server]__952874bc._.js} +2 -2
  148. package/.next/server/chunks/ssr/[root-of-the-server]__05e6fb4c._.js +1 -1
  149. package/.next/server/chunks/ssr/[root-of-the-server]__2f5cb477._.js +3 -0
  150. package/.next/server/chunks/ssr/{[root-of-the-server]__0ed2deb1._.js.map → [root-of-the-server]__2f5cb477._.js.map} +1 -1
  151. package/.next/server/chunks/ssr/[root-of-the-server]__32cb19cb._.js +3 -0
  152. package/.next/server/chunks/ssr/{[root-of-the-server]__a65a3900._.js.map → [root-of-the-server]__32cb19cb._.js.map} +1 -1
  153. package/.next/server/chunks/ssr/{[root-of-the-server]__5be652da._.js → [root-of-the-server]__35dc6469._.js} +2 -2
  154. package/.next/server/chunks/ssr/[root-of-the-server]__46af1502._.js +1 -1
  155. package/.next/server/chunks/ssr/[root-of-the-server]__46af1502._.js.map +1 -1
  156. package/.next/server/chunks/ssr/{_476e86d1._.js → [root-of-the-server]__4928d640._.js} +3 -3
  157. package/.next/server/chunks/ssr/{_476e86d1._.js.map → [root-of-the-server]__4928d640._.js.map} +1 -1
  158. package/.next/server/chunks/ssr/[root-of-the-server]__6e6c1134._.js +4 -0
  159. package/.next/server/chunks/ssr/[root-of-the-server]__6e6c1134._.js.map +1 -0
  160. package/.next/server/chunks/ssr/{[root-of-the-server]__e86a1b81._.js → [root-of-the-server]__79ab29ee._.js} +2 -2
  161. package/.next/server/chunks/ssr/[root-of-the-server]__8d19726f._.js +4 -0
  162. package/.next/server/chunks/ssr/[root-of-the-server]__8d19726f._.js.map +1 -0
  163. package/.next/server/chunks/ssr/{[root-of-the-server]__96a8b4aa._.js → [root-of-the-server]__905c5090._.js} +2 -2
  164. package/.next/server/chunks/ssr/{[root-of-the-server]__1ed5a76d._.js → [root-of-the-server]__afccdb61._.js} +3 -3
  165. package/.next/server/chunks/ssr/{[root-of-the-server]__1ed5a76d._.js.map → [root-of-the-server]__afccdb61._.js.map} +1 -1
  166. package/.next/server/chunks/ssr/_1232faca._.js +3 -0
  167. package/.next/server/chunks/ssr/_1232faca._.js.map +1 -0
  168. package/.next/server/chunks/ssr/_21376a5e._.js +3 -0
  169. package/.next/server/chunks/ssr/_21376a5e._.js.map +1 -0
  170. package/.next/server/chunks/ssr/_25f614f9._.js +3 -0
  171. package/.next/server/chunks/ssr/_25f614f9._.js.map +1 -0
  172. package/.next/server/chunks/ssr/{node_modules_next_dist_0ff44e32._.js → _4e480580._.js} +2 -2
  173. package/.next/server/chunks/ssr/_4e480580._.js.map +1 -0
  174. package/.next/server/chunks/ssr/_707e5fab._.js +1 -1
  175. package/.next/server/chunks/ssr/_707e5fab._.js.map +1 -1
  176. package/.next/server/chunks/ssr/_7e1d1983._.js +3 -0
  177. package/.next/server/chunks/ssr/_7e1d1983._.js.map +1 -0
  178. package/.next/server/chunks/ssr/_9493de08._.js +1 -1
  179. package/.next/server/chunks/ssr/_9493de08._.js.map +1 -1
  180. package/.next/server/chunks/ssr/{_ebf4c61c._.js → _979edf0c._.js} +2 -2
  181. package/.next/server/chunks/ssr/_979edf0c._.js.map +1 -0
  182. package/.next/server/chunks/ssr/_9db6d532._.js +3 -0
  183. package/.next/server/chunks/ssr/_9db6d532._.js.map +1 -0
  184. package/.next/server/chunks/ssr/{_a07f93fb._.js → _a30f8faf._.js} +2 -2
  185. package/.next/server/chunks/ssr/_a30f8faf._.js.map +1 -0
  186. package/.next/server/chunks/ssr/{node_modules_bf7b09f8._.js → node_modules_3aaf320c._.js} +2 -2
  187. package/.next/server/chunks/ssr/node_modules_3aaf320c._.js.map +1 -0
  188. package/.next/server/chunks/ssr/{node_modules_8e38eac2._.js → node_modules_f0d9388d._.js} +2 -2
  189. package/.next/server/chunks/ssr/node_modules_f0d9388d._.js.map +1 -0
  190. package/.next/server/chunks/ssr/{node_modules_3e692bb2._.js → node_modules_fae6b458._.js} +2 -2
  191. package/.next/server/chunks/ssr/node_modules_fae6b458._.js.map +1 -0
  192. package/.next/server/chunks/ssr/node_modules_next_dist_35575f97._.js +3 -0
  193. package/.next/server/chunks/ssr/node_modules_next_dist_35575f97._.js.map +1 -0
  194. package/.next/server/chunks/ssr/node_modules_next_dist_b34e0340._.js +3 -0
  195. package/.next/server/chunks/ssr/node_modules_next_dist_b34e0340._.js.map +1 -0
  196. package/.next/server/chunks/ssr/src_app_credentials_page_tsx_63d8d34a._.js +1 -1
  197. package/.next/server/chunks/ssr/src_app_credentials_page_tsx_63d8d34a._.js.map +1 -1
  198. package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js +1 -1
  199. package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js.map +1 -1
  200. package/.next/server/chunks/ssr/src_components_GitRepoSelector_tsx_05c81afa._.js +3 -3
  201. package/.next/server/chunks/ssr/src_components_GitRepoSelector_tsx_05c81afa._.js.map +1 -1
  202. package/.next/server/chunks/ssr/src_components_git_history-view_tsx_fd62126a._.js +6 -6
  203. package/.next/server/chunks/ssr/src_components_git_history-view_tsx_fd62126a._.js.map +1 -1
  204. package/.next/server/pages/404.html +2 -2
  205. package/.next/server/pages/500.html +2 -2
  206. package/.next/server/server-reference-manifest.js +1 -1
  207. package/.next/server/server-reference-manifest.json +77 -48
  208. package/.next/static/chunks/15bbad1a4cefc870.js +3 -0
  209. package/.next/static/chunks/{db4cb4eb290e3be9.js → 2ca45fcc772c4ea0.js} +2 -2
  210. package/.next/static/chunks/3df671a7fdd91e3e.js +1 -0
  211. package/.next/static/chunks/53f66f12a3d0dc7f.js +3 -0
  212. package/.next/static/chunks/6242d36c3f387ddb.js +1 -0
  213. package/.next/static/chunks/697655e0e9336655.js +1 -0
  214. package/.next/static/chunks/c08840e14b1e627c.css +1 -0
  215. package/.next/static/chunks/d6c7a0b35251160d.js +8 -0
  216. package/.next/static/chunks/dcba19c95b8bc155.js +1 -0
  217. package/.next/static/chunks/e45cecb04475a86a.js +9 -0
  218. package/.next/static/chunks/f31a3f4a435e3f86.js +3 -0
  219. package/README.md +2 -1
  220. package/bin/viba.mjs +9 -5
  221. package/package.json +1 -1
  222. package/.next/server/chunks/[externals]__7ece43c5._.js +0 -3
  223. package/.next/server/chunks/ssr/[root-of-the-server]__0ed2deb1._.js +0 -3
  224. package/.next/server/chunks/ssr/[root-of-the-server]__a65a3900._.js +0 -3
  225. package/.next/server/chunks/ssr/_2eaa7035._.js +0 -3
  226. package/.next/server/chunks/ssr/_2eaa7035._.js.map +0 -1
  227. package/.next/server/chunks/ssr/_4343fa01._.js +0 -3
  228. package/.next/server/chunks/ssr/_4343fa01._.js.map +0 -1
  229. package/.next/server/chunks/ssr/_a07f93fb._.js.map +0 -1
  230. package/.next/server/chunks/ssr/_ebf4c61c._.js.map +0 -1
  231. package/.next/server/chunks/ssr/_ff20dbae._.js +0 -3
  232. package/.next/server/chunks/ssr/_ff20dbae._.js.map +0 -1
  233. package/.next/server/chunks/ssr/_next-internal_server_app_git_history_page_actions_9e9b26bc.js +0 -3
  234. package/.next/server/chunks/ssr/_next-internal_server_app_git_history_page_actions_9e9b26bc.js.map +0 -1
  235. package/.next/server/chunks/ssr/_next-internal_server_app_git_page_actions_511f286b.js +0 -3
  236. package/.next/server/chunks/ssr/_next-internal_server_app_git_page_actions_511f286b.js.map +0 -1
  237. package/.next/server/chunks/ssr/node_modules_3e692bb2._.js.map +0 -1
  238. package/.next/server/chunks/ssr/node_modules_50fa454f._.js +0 -5
  239. package/.next/server/chunks/ssr/node_modules_50fa454f._.js.map +0 -1
  240. package/.next/server/chunks/ssr/node_modules_8e38eac2._.js.map +0 -1
  241. package/.next/server/chunks/ssr/node_modules_bf7b09f8._.js.map +0 -1
  242. package/.next/server/chunks/ssr/node_modules_next_dist_0ff44e32._.js.map +0 -1
  243. package/.next/server/chunks/ssr/node_modules_next_dist_f6fd30d1._.js +0 -3
  244. package/.next/server/chunks/ssr/node_modules_next_dist_f6fd30d1._.js.map +0 -1
  245. package/.next/server/chunks/ssr/src_408d74ba._.js +0 -3
  246. package/.next/server/chunks/ssr/src_408d74ba._.js.map +0 -1
  247. package/.next/server/chunks/ssr/src_49325427._.js +0 -3
  248. package/.next/server/chunks/ssr/src_49325427._.js.map +0 -1
  249. package/.next/static/chunks/1ca050861ead915f.js +0 -3
  250. package/.next/static/chunks/4aab1f3ea2ed1aef.js +0 -1
  251. package/.next/static/chunks/4de7bc5a00a1aed9.js +0 -3
  252. package/.next/static/chunks/5e0dada5236f9065.js +0 -8
  253. package/.next/static/chunks/73f859ef915277c7.js +0 -3
  254. package/.next/static/chunks/74f887e69c1fcefa.js +0 -9
  255. package/.next/static/chunks/977137e155012c13.js +0 -1
  256. package/.next/static/chunks/b18cc1247b979318.js +0 -1
  257. package/.next/static/chunks/e5bcfa7f94c34b77.js +0 -1
  258. package/.next/static/chunks/eec24a7b35c2d7bd.css +0 -1
  259. /package/.next/server/chunks/{[externals]__7ece43c5._.js.map → [externals]__4610b07e._.js.map} +0 -0
  260. /package/.next/server/chunks/{[root-of-the-server]__51f9ab28._.js.map → [root-of-the-server]__093d29e3._.js.map} +0 -0
  261. /package/.next/server/chunks/{[root-of-the-server]__f52f1c06._.js.map → [root-of-the-server]__2bdd2171._.js.map} +0 -0
  262. /package/.next/server/chunks/{[root-of-the-server]__ceda8fbc._.js.map → [root-of-the-server]__34da758c._.js.map} +0 -0
  263. /package/.next/server/chunks/{[root-of-the-server]__9af2c9bf._.js.map → [root-of-the-server]__5ebd9b2a._.js.map} +0 -0
  264. /package/.next/server/chunks/{[root-of-the-server]__3ffc9919._.js.map → [root-of-the-server]__6a2576a8._.js.map} +0 -0
  265. /package/.next/server/chunks/{[root-of-the-server]__5b08b37e._.js.map → [root-of-the-server]__7147e7f8._.js.map} +0 -0
  266. /package/.next/server/chunks/{[root-of-the-server]__1bf60374._.js.map → [root-of-the-server]__93d494cc._.js.map} +0 -0
  267. /package/.next/server/chunks/{[root-of-the-server]__8b29248a._.js.map → [root-of-the-server]__952874bc._.js.map} +0 -0
  268. /package/.next/server/chunks/ssr/{[root-of-the-server]__5be652da._.js.map → [root-of-the-server]__35dc6469._.js.map} +0 -0
  269. /package/.next/server/chunks/ssr/{[root-of-the-server]__e86a1b81._.js.map → [root-of-the-server]__79ab29ee._.js.map} +0 -0
  270. /package/.next/server/chunks/ssr/{[root-of-the-server]__96a8b4aa._.js.map → [root-of-the-server]__905c5090._.js.map} +0 -0
  271. /package/.next/static/{SPowgKQ4GVFmr1hEouu16 → f6hBCO8U8SWC5F77QTqGY}/_buildManifest.js +0 -0
  272. /package/.next/static/{SPowgKQ4GVFmr1hEouu16 → f6hBCO8U8SWC5F77QTqGY}/_clientMiddlewareManifest.json +0 -0
  273. /package/.next/static/{SPowgKQ4GVFmr1hEouu16 → f6hBCO8U8SWC5F77QTqGY}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app/credentials/page.tsx","../../../../src/app/actions/data%3A46ba56%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3Aa5f748%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3Aed5858%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3A2e4e08%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3A10cd2e%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport {\n listAgentApiCredentials,\n listCredentials,\n removeAgentApiCredential,\n removeCredential,\n saveAgentApiCredential,\n saveGitHubCredential,\n saveGitLabCredential,\n} from '@/app/actions/credentials';\nimport type {\n AgentApiCredential,\n AgentApiCredentialAgent,\n} from '@/lib/agent-api-credentials';\nimport type { Credential, CredentialType, GitLabCredential } from '@/lib/credentials';\nimport { ChevronRight, KeyRound, Trash2 } from 'lucide-react';\nimport Image from 'next/image';\nimport { useRouter } from 'next/navigation';\nimport { useEffect, useMemo, useState } from 'react';\n\nconst DEFAULT_GITLAB_SERVER_URL = 'https://gitlab.com';\nconst PROVIDER_ICON_URLS = {\n github: 'https://www.google.com/s2/favicons?domain=github.com&sz=64',\n gitlab: 'https://www.google.com/s2/favicons?domain=gitlab.com&sz=64',\n} as const;\nconst AGENT_API_LABELS: Record<AgentApiCredentialAgent, string> = {\n codex: 'Codex CLI',\n};\nconst AGENT_API_KEY_PLACEHOLDERS: Record<AgentApiCredentialAgent, string> = {\n codex: 'sk-...',\n};\nconst AGENT_API_PROXY_PLACEHOLDERS: Record<AgentApiCredentialAgent, string> = {\n codex: 'https://proxy.example.com/v1',\n};\nconst AGENT_API_ORDER: AgentApiCredentialAgent[] = ['codex'];\n\ntype FlashMessage = {\n tone: 'success' | 'error';\n text: string;\n} | null;\n\nfunction formatCredentialSubtitle(credential: Credential): string {\n if (credential.type === 'gitlab') {\n return `${credential.username} @ ${credential.serverUrl}`;\n }\n return credential.username;\n}\n\nfunction formatProviderLabel(type: CredentialType): string {\n return type === 'github' ? 'GitHub' : 'GitLab';\n}\n\nfunction ProviderIcon({ type }: { type: CredentialType }) {\n return (\n <Image\n src={PROVIDER_ICON_URLS[type]}\n alt={`${formatProviderLabel(type)} icon`}\n width={20}\n height={20}\n className=\"h-5 w-5 rounded-sm\"\n unoptimized\n />\n );\n}\n\nexport default function CredentialsPage() {\n const router = useRouter();\n\n const [credentials, setCredentials] = useState<Credential[]>([]);\n const [agentApiCredentials, setAgentApiCredentials] = useState<AgentApiCredential[]>([]);\n const [loading, setLoading] = useState(true);\n\n const [githubToken, setGitHubToken] = useState('');\n const [gitlabToken, setGitLabToken] = useState('');\n const [gitlabServerUrl, setGitLabServerUrl] = useState(DEFAULT_GITLAB_SERVER_URL);\n const [agentApiKeyInputs, setAgentApiKeyInputs] = useState<Record<AgentApiCredentialAgent, string>>({\n codex: '',\n });\n const [agentApiProxyInputs, setAgentApiProxyInputs] = useState<Record<AgentApiCredentialAgent, string>>({\n codex: '',\n });\n\n const [savingType, setSavingType] = useState<CredentialType | null>(null);\n const [savingAgent, setSavingAgent] = useState<AgentApiCredentialAgent | null>(null);\n const [deletingId, setDeletingId] = useState<string | null>(null);\n const [deletingAgent, setDeletingAgent] = useState<AgentApiCredentialAgent | null>(null);\n const [flashMessage, setFlashMessage] = useState<FlashMessage>(null);\n\n const githubCredentials = useMemo(\n () => credentials.filter((credential) => credential.type === 'github'),\n [credentials],\n );\n\n const gitlabCredentials = useMemo(\n () => credentials.filter((credential) => credential.type === 'gitlab') as GitLabCredential[],\n [credentials],\n );\n\n const agentApiCredentialMap = useMemo(() => {\n return new Map(agentApiCredentials.map((credential) => [credential.agent, credential]));\n }, [agentApiCredentials]);\n\n const reloadCredentials = async () => {\n const [gitResult, agentResult] = await Promise.all([\n listCredentials(),\n listAgentApiCredentials(),\n ]);\n\n if (!gitResult.success) {\n setFlashMessage({ tone: 'error', text: gitResult.error });\n setLoading(false);\n return;\n }\n\n if (!agentResult.success) {\n setFlashMessage({ tone: 'error', text: agentResult.error });\n setLoading(false);\n return;\n }\n\n setCredentials(gitResult.credentials);\n setAgentApiCredentials(agentResult.credentials);\n setAgentApiProxyInputs((previous) => {\n const next = { ...previous };\n for (const agent of AGENT_API_ORDER) {\n next[agent] = agentResult.credentials.find((credential) => credential.agent === agent)?.apiProxy || '';\n }\n return next;\n });\n setLoading(false);\n };\n\n useEffect(() => {\n let isActive = true;\n\n void (async () => {\n const [gitResult, agentResult] = await Promise.all([\n listCredentials(),\n listAgentApiCredentials(),\n ]);\n if (!isActive) return;\n\n if (!gitResult.success) {\n setFlashMessage({ tone: 'error', text: gitResult.error });\n setLoading(false);\n return;\n }\n\n if (!agentResult.success) {\n setFlashMessage({ tone: 'error', text: agentResult.error });\n setLoading(false);\n return;\n }\n\n setCredentials(gitResult.credentials);\n setAgentApiCredentials(agentResult.credentials);\n setAgentApiProxyInputs((previous) => {\n const next = { ...previous };\n for (const agent of AGENT_API_ORDER) {\n next[agent] = agentResult.credentials.find((credential) => credential.agent === agent)?.apiProxy || '';\n }\n return next;\n });\n setLoading(false);\n })();\n\n return () => {\n isActive = false;\n };\n }, []);\n\n const handleSaveGitHub = async () => {\n setFlashMessage(null);\n setSavingType('github');\n\n const result = await saveGitHubCredential(githubToken);\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setSavingType(null);\n return;\n }\n\n setGitHubToken('');\n setFlashMessage({ tone: 'success', text: 'GitHub credential added.' });\n await reloadCredentials();\n setSavingType(null);\n };\n\n const handleSaveGitLab = async () => {\n setFlashMessage(null);\n setSavingType('gitlab');\n\n const result = await saveGitLabCredential(gitlabServerUrl, gitlabToken);\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setSavingType(null);\n return;\n }\n\n setGitLabToken('');\n setFlashMessage({ tone: 'success', text: 'GitLab credential added.' });\n await reloadCredentials();\n setSavingType(null);\n };\n\n const handleSaveAgentApi = async (agent: AgentApiCredentialAgent) => {\n setFlashMessage(null);\n setSavingAgent(agent);\n\n const result = await saveAgentApiCredential(\n agent,\n agentApiKeyInputs[agent],\n agentApiProxyInputs[agent],\n );\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setSavingAgent(null);\n return;\n }\n\n setAgentApiKeyInputs((previous) => ({ ...previous, [agent]: '' }));\n setAgentApiProxyInputs((previous) => ({ ...previous, [agent]: result.credential.apiProxy || '' }));\n setFlashMessage({ tone: 'success', text: `${AGENT_API_LABELS[agent]} credential saved.` });\n await reloadCredentials();\n setSavingAgent(null);\n };\n\n const handleDelete = async (credential: Credential) => {\n const providerLabel = formatProviderLabel(credential.type);\n const confirmed = confirm(`Delete this ${providerLabel} credential for ${formatCredentialSubtitle(credential)}?`);\n if (!confirmed) return;\n\n setFlashMessage(null);\n setDeletingId(credential.id);\n\n const result = await removeCredential(credential.id);\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setDeletingId(null);\n return;\n }\n\n setFlashMessage({ tone: 'success', text: `${providerLabel} credential deleted.` });\n await reloadCredentials();\n setDeletingId(null);\n };\n\n const handleDeleteAgentApi = async (agent: AgentApiCredentialAgent) => {\n const confirmed = confirm(`Delete the saved ${AGENT_API_LABELS[agent]} API credential?`);\n if (!confirmed) return;\n\n setFlashMessage(null);\n setDeletingAgent(agent);\n\n const result = await removeAgentApiCredential(agent);\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setDeletingAgent(null);\n return;\n }\n\n setAgentApiKeyInputs((previous) => ({ ...previous, [agent]: '' }));\n setAgentApiProxyInputs((previous) => ({ ...previous, [agent]: '' }));\n setFlashMessage({ tone: 'success', text: `${AGENT_API_LABELS[agent]} credential deleted.` });\n await reloadCredentials();\n setDeletingAgent(null);\n };\n\n const panelClass = 'overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm dark:border-slate-700/50 dark:bg-slate-800 dark:shadow-[0_12px_30px_-18px_rgba(2,6,23,0.9)]';\n const sectionHeaderClass = 'flex flex-col gap-3 border-b border-slate-200 bg-white px-6 py-5 md:flex-row md:items-center md:justify-between dark:border-slate-700/50 dark:bg-slate-800';\n const inputClass = 'block w-full rounded-lg border border-slate-200 bg-slate-50 px-3 py-2.5 text-sm text-slate-900 placeholder-slate-400 transition-all focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-60 dark:border-slate-700 dark:bg-slate-900/50 dark:text-white dark:placeholder-slate-500 dark:focus:border-primary/50 dark:focus:bg-slate-900';\n const primaryButtonClass = 'inline-flex items-center justify-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white shadow-lg shadow-blue-900/20 transition-colors hover:bg-blue-700 disabled:cursor-not-allowed disabled:opacity-60';\n const secondaryButtonClass = 'inline-flex items-center justify-center gap-2 rounded-lg border border-slate-200 bg-white px-4 py-2 text-sm font-medium text-slate-700 shadow-sm transition-colors hover:bg-slate-50 disabled:cursor-not-allowed disabled:opacity-60 dark:border-slate-600 dark:bg-slate-800 dark:text-slate-200 dark:hover:bg-slate-700';\n const rowActionButtonClass = 'inline-flex h-8 w-8 items-center justify-center rounded-lg text-slate-400 transition-all hover:bg-red-50 hover:text-red-500 dark:text-slate-400 dark:hover:bg-red-900/30 dark:hover:text-red-400';\n\n return (\n <main className=\"min-h-screen bg-[#f6f6f8] px-4 py-8 md:px-8 md:py-12 dark:bg-[#0f1117]\">\n <div className=\"mx-auto w-full max-w-4xl space-y-8\">\n <div className=\"mb-8\">\n <div className=\"mb-2 flex items-center gap-4\">\n <button\n type=\"button\"\n className=\"flex h-10 w-10 items-center justify-center rounded-lg text-slate-500 transition-colors hover:bg-white hover:text-slate-900 dark:text-slate-400 dark:hover:bg-slate-800 dark:hover:text-white\"\n onClick={() => router.push('/')}\n aria-label=\"Back to home\"\n >\n <ChevronRight className=\"h-6 w-6 rotate-180\" />\n </button>\n <h1 className=\"text-3xl font-black tracking-[-0.02em] text-slate-900 md:text-4xl dark:text-white\">Credential Management</h1>\n </div>\n <p className=\"ml-14 text-sm text-slate-500 md:text-base dark:text-slate-400\">\n Manage your API keys and access tokens for third-party services safely.\n </p>\n </div>\n\n {flashMessage && (\n <div\n className={`rounded-lg border px-4 py-3 text-sm ${\n flashMessage.tone === 'error'\n ? 'border-red-200 bg-red-50 text-red-700 dark:border-red-500/40 dark:bg-red-900/30 dark:text-red-200'\n : 'border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/40 dark:bg-emerald-900/30 dark:text-emerald-200'\n }`}\n >\n {flashMessage.text}\n </div>\n )}\n\n {loading ? (\n <div className={`${panelClass} p-10`}>\n <div className=\"flex flex-col items-center gap-3\">\n <span className=\"loading loading-spinner loading-md text-primary\"></span>\n <p className=\"text-sm text-slate-500 dark:text-slate-400\">Loading credentials...</p>\n </div>\n </div>\n ) : (\n <div className=\"space-y-6\">\n <section className={panelClass}>\n <div className={sectionHeaderClass}>\n <div>\n <h2 className=\"text-lg font-bold text-slate-900 dark:text-white\">GitHub Credentials</h2>\n <p className=\"mt-1 text-sm text-slate-500 dark:text-slate-400\">Access private repositories and Gists.</p>\n </div>\n <button\n className={primaryButtonClass}\n onClick={() => void handleSaveGitHub()}\n disabled={savingType === 'github'}\n >\n {savingType === 'github' ? <span className=\"loading loading-spinner loading-xs\"></span> : <KeyRound className=\"h-4 w-4\" />}\n Add Token\n </button>\n </div>\n\n <div className=\"border-b border-slate-100 bg-slate-50/40 px-6 py-4 dark:border-slate-700/50 dark:bg-slate-900/35\">\n <label className=\"mb-2 block text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400\">\n Personal Access Token\n </label>\n <input\n type=\"password\"\n className={inputClass}\n placeholder=\"ghp_xxx\"\n value={githubToken}\n onChange={(event) => setGitHubToken(event.target.value)}\n disabled={savingType === 'github'}\n />\n </div>\n\n {githubCredentials.length === 0 ? (\n <div className=\"px-6 py-6 text-sm text-slate-500 dark:text-slate-400\">No GitHub credentials saved.</div>\n ) : (\n <div className=\"divide-y divide-slate-100 dark:divide-slate-700/50\">\n {githubCredentials.map((credential) => (\n <div\n key={credential.id}\n className=\"group flex items-center justify-between gap-4 px-6 py-5 transition-colors hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n >\n <div className=\"flex min-w-0 items-center gap-4\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-slate-100 dark:bg-slate-700/60\">\n <ProviderIcon type=\"github\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-slate-900 dark:text-white\">{credential.username}</div>\n <div className=\"mt-0.5 text-xs text-slate-500 dark:text-slate-400\">\n Updated {new Date(credential.updatedAt).toLocaleString()}\n </div>\n </div>\n </div>\n <button\n className={`${rowActionButtonClass} opacity-0 group-hover:opacity-100 disabled:opacity-40`}\n onClick={() => void handleDelete(credential)}\n disabled={deletingId === credential.id}\n title=\"Delete\"\n >\n {deletingId === credential.id ? <span className=\"loading loading-spinner loading-xs\"></span> : <Trash2 className=\"h-4 w-4\" />}\n </button>\n </div>\n ))}\n </div>\n )}\n </section>\n\n <section className={panelClass}>\n <div className={sectionHeaderClass}>\n <div>\n <h2 className=\"text-lg font-bold text-slate-900 dark:text-white\">GitLab Credentials</h2>\n <p className=\"mt-1 text-sm text-slate-500 dark:text-slate-400\">Connect to self-hosted or cloud GitLab instances.</p>\n </div>\n <button\n className={secondaryButtonClass}\n onClick={() => void handleSaveGitLab()}\n disabled={savingType === 'gitlab'}\n >\n {savingType === 'gitlab' ? <span className=\"loading loading-spinner loading-xs\"></span> : <KeyRound className=\"h-4 w-4\" />}\n Add Instance\n </button>\n </div>\n\n <div className=\"space-y-4 border-b border-slate-100 bg-slate-50/40 px-6 py-4 dark:border-slate-700/50 dark:bg-slate-900/35\">\n <div>\n <label className=\"mb-2 block text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400\">\n Server URL\n </label>\n <input\n type=\"url\"\n className={inputClass}\n placeholder={DEFAULT_GITLAB_SERVER_URL}\n value={gitlabServerUrl}\n onChange={(event) => setGitLabServerUrl(event.target.value)}\n disabled={savingType === 'gitlab'}\n />\n </div>\n <div>\n <label className=\"mb-2 block text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400\">\n Personal Access Token\n </label>\n <input\n type=\"password\"\n className={inputClass}\n placeholder=\"glpat-xxx\"\n value={gitlabToken}\n onChange={(event) => setGitLabToken(event.target.value)}\n disabled={savingType === 'gitlab'}\n />\n </div>\n </div>\n\n {gitlabCredentials.length === 0 ? (\n <div className=\"px-6 py-6 text-sm text-slate-500 dark:text-slate-400\">No GitLab credentials saved.</div>\n ) : (\n <div className=\"divide-y divide-slate-100 dark:divide-slate-700/50\">\n {gitlabCredentials.map((credential) => (\n <div\n key={credential.id}\n className=\"group flex items-center justify-between gap-4 px-6 py-5 transition-colors hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n >\n <div className=\"flex min-w-0 items-center gap-4\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-orange-50 dark:border dark:border-orange-500/20 dark:bg-orange-500/10\">\n <ProviderIcon type=\"gitlab\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-slate-900 dark:text-white\">{credential.username}</div>\n <div className=\"truncate text-xs text-slate-500 dark:text-slate-400\">{credential.serverUrl}</div>\n <div className=\"mt-0.5 text-xs text-slate-500 dark:text-slate-400\">\n Updated {new Date(credential.updatedAt).toLocaleString()}\n </div>\n </div>\n </div>\n <button\n className={`${rowActionButtonClass} opacity-0 group-hover:opacity-100 disabled:opacity-40`}\n onClick={() => void handleDelete(credential)}\n disabled={deletingId === credential.id}\n title=\"Delete\"\n >\n {deletingId === credential.id ? <span className=\"loading loading-spinner loading-xs\"></span> : <Trash2 className=\"h-4 w-4\" />}\n </button>\n </div>\n ))}\n </div>\n )}\n </section>\n\n {AGENT_API_ORDER.map((agent) => {\n const configuredCredential = agentApiCredentialMap.get(agent);\n const isSaving = savingAgent === agent;\n const isDeleting = deletingAgent === agent;\n\n return (\n <section key={agent} className={panelClass}>\n <div className={sectionHeaderClass}>\n <div className=\"flex items-center gap-3\">\n <div className=\"rounded-lg bg-emerald-100 p-1.5 text-emerald-600 dark:border dark:border-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400\">\n <KeyRound className=\"h-5 w-5\" />\n </div>\n <div>\n <h2 className=\"text-lg font-bold text-slate-900 dark:text-white\">{AGENT_API_LABELS[agent]} Configuration</h2>\n <p className=\"text-sm text-slate-500 dark:text-slate-400\">Configure access for LLM capabilities.</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {configuredCredential && (\n <button\n className={secondaryButtonClass}\n onClick={() => void handleDeleteAgentApi(agent)}\n disabled={isSaving || isDeleting}\n >\n {isDeleting ? <span className=\"loading loading-spinner loading-xs\"></span> : <Trash2 className=\"h-4 w-4\" />}\n Remove\n </button>\n )}\n <button\n className={primaryButtonClass}\n onClick={() => void handleSaveAgentApi(agent)}\n disabled={isSaving || isDeleting}\n >\n {isSaving ? <span className=\"loading loading-spinner loading-xs\"></span> : <KeyRound className=\"h-4 w-4\" />}\n {configuredCredential ? 'Save Changes' : 'Save'}\n </button>\n </div>\n </div>\n\n <div className=\"space-y-6 p-6\">\n <div className=\"max-w-2xl space-y-4\">\n <div>\n <label className=\"mb-2 block text-sm font-medium text-slate-700 dark:text-slate-300\">API Key</label>\n <input\n type=\"password\"\n className={inputClass}\n placeholder={AGENT_API_KEY_PLACEHOLDERS[agent]}\n value={agentApiKeyInputs[agent]}\n onChange={(event) =>\n setAgentApiKeyInputs((previous) => ({ ...previous, [agent]: event.target.value }))\n }\n disabled={isSaving || isDeleting}\n />\n <p className=\"mt-1 text-xs text-slate-500 dark:text-slate-400\">\n Your API key is stored locally and never shared.\n </p>\n </div>\n\n <div>\n <label className=\"mb-2 block text-sm font-medium text-slate-700 dark:text-slate-300\">\n API Proxy <span className=\"font-normal text-slate-400 dark:text-slate-500\">(Optional)</span>\n </label>\n <input\n type=\"url\"\n className={inputClass}\n placeholder={AGENT_API_PROXY_PLACEHOLDERS[agent]}\n value={agentApiProxyInputs[agent]}\n onChange={(event) =>\n setAgentApiProxyInputs((previous) => ({ ...previous, [agent]: event.target.value }))\n }\n disabled={isSaving || isDeleting}\n />\n <p className=\"mt-1 text-xs text-slate-500 dark:text-slate-400\">\n Override this when using a proxy or a compatible endpoint.\n </p>\n </div>\n </div>\n\n <div className=\"rounded-lg border border-slate-200 bg-slate-50 p-3 text-xs text-slate-600 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-300\">\n {configuredCredential ? (\n <div className=\"space-y-1\">\n <div>API key configured.</div>\n <div>Updated {new Date(configuredCredential.updatedAt).toLocaleString()}</div>\n <div>Proxy {configuredCredential.apiProxy ? configuredCredential.apiProxy : 'not set'}</div>\n </div>\n ) : (\n <div>No API credential saved.</div>\n )}\n </div>\n </div>\n </section>\n );\n })}\n\n <div className=\"pb-2 pt-4 text-center text-xs text-slate-400 dark:text-slate-500\">\n Credentials are encrypted at rest using your system keychain.\n </div>\n </div>\n )}\n </div>\n </main>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"401216e572e4bf7bf326cda1f4a30eb1603691e246\":\"removeAgentApiCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_6=/*#__PURE__*/createServerReference(\"401216e572e4bf7bf326cda1f4a30eb1603691e246\",callServer,void 0,findSourceMapURL,\"removeAgentApiCredential\");export{$$RSC_SERVER_ACTION_6 as removeAgentApiCredential};","/* __next_internal_action_entry_do_not_use__ [{\"401ae2970dc4c2fbd2865643135b169242e390fbb9\":\"removeCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_5=/*#__PURE__*/createServerReference(\"401ae2970dc4c2fbd2865643135b169242e390fbb9\",callServer,void 0,findSourceMapURL,\"removeCredential\");export{$$RSC_SERVER_ACTION_5 as removeCredential};","/* __next_internal_action_entry_do_not_use__ [{\"70626cc4e20cf7f4bceed9d5acc5e76e729a2afa1d\":\"saveAgentApiCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_4=/*#__PURE__*/createServerReference(\"70626cc4e20cf7f4bceed9d5acc5e76e729a2afa1d\",callServer,void 0,findSourceMapURL,\"saveAgentApiCredential\");export{$$RSC_SERVER_ACTION_4 as saveAgentApiCredential};","/* __next_internal_action_entry_do_not_use__ [{\"405e6eb5e388cacf34bf45187d62ebd23b892a56af\":\"saveGitHubCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"405e6eb5e388cacf34bf45187d62ebd23b892a56af\",callServer,void 0,findSourceMapURL,\"saveGitHubCredential\");export{$$RSC_SERVER_ACTION_1 as saveGitHubCredential};","/* __next_internal_action_entry_do_not_use__ [{\"60a683dd28bcaee196e869b42e36340e5666c49497\":\"saveGitLabCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_2=/*#__PURE__*/createServerReference(\"60a683dd28bcaee196e869b42e36340e5666c49497\",callServer,void 0,findSourceMapURL,\"saveGitLabCredential\");export{$$RSC_SERVER_ACTION_2 as saveGitLabCredential};"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,KAAA,EAAA,EAAA,CAAA,CAAA,MCF+L,EAAA,EAAA,CAAA,CAAA,MAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,4BCAjJ,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,oBCAnI,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,0BCA3I,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,wBCAzI,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,wBLgBhb,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAEA,IAAM,EAA4B,qBAC5B,EAAqB,CACzB,OAAQ,6DACR,OAAQ,4DACV,EACM,EAA4D,CAChE,MAAO,WACT,EACM,EAAsE,CAC1E,MAAO,QACT,EACM,EAAwE,CAC5E,MAAO,8BACT,EACM,EAA6C,CAAC,QAAQ,CAc5D,SAAS,EAAoB,CAAoB,EAC/C,MAAO,AAAS,aAAW,SAAW,QACxC,CAEA,SAAS,EAAa,MAAE,CAAI,CAA4B,EACtD,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAK,CAAA,CACJ,IAAK,CAAkB,CAAC,EAAK,CAC7B,IAAK,CAAA,EAAG,EAAoB,GAAM,KAAK,CAAC,CACxC,MAAO,GACP,OAAQ,GACR,UAAU,qBACV,WAAW,CAAA,CAAA,GAGjB,CAEe,SAAS,IACtB,IAAM,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAElB,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAe,EAAE,EACzD,CAAC,EAAqB,EAAuB,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAA+B,EAAE,EACjF,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAEjC,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAAC,EAAiB,EAAmB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,GACjD,CAAC,EAAmB,EAAqB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAA0C,CAClG,MAAO,EACT,GACM,CAAC,EAAqB,EAAuB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAA0C,CACtG,MAAO,EACT,GAEM,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAwB,MAC9D,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAiC,MACzE,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MACtD,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAiC,MAC7E,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAe,MAEzD,EAAoB,CAAA,EAAA,EAAA,OAAA,AAAO,EAC/B,IAAM,EAAY,MAAM,CAAC,AAAC,GAAmC,WAApB,EAAW,IAAI,EACxD,CAAC,EAAY,EAGT,EAAoB,CAAA,EAAA,EAAA,OAAA,AAAO,EAC/B,IAAM,EAAY,MAAM,CAAC,AAAC,GAAmC,WAApB,EAAW,IAAI,EACxD,CAAC,EAAY,EAGT,EAAwB,CAAA,EAAA,EAAA,OAAO,AAAP,EAAQ,IAC7B,IAAI,IAAI,EAAoB,GAAG,CAAC,AAAC,GAAe,CAAC,EAAW,KAAK,CAAE,EAAW,GACpF,CAAC,EAAoB,EAElB,EAAoB,UACxB,GAAM,CAAC,EAAW,EAAY,CAAG,MAAM,QAAQ,GAAG,CAAC,CACjD,CAAA,EAAA,EAAA,eAAA,AAAe,IACf,CAAA,EAAA,EAAA,uBAAA,AAAuB,IACxB,EAED,GAAI,CAAC,EAAU,OAAO,CAAE,CACtB,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAU,KAAK,AAAC,GACvD,GAAW,GACX,MACF,CAEA,GAAI,CAAC,EAAY,OAAO,CAAE,CACxB,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAY,KAAK,AAAC,GACzD,EAAW,IACX,MACF,CAEA,EAAe,EAAU,WAAW,EACpC,EAAuB,EAAY,WAAW,EAC9C,EAAuB,AAAC,IACtB,IAAM,EAAO,CAAE,GAAG,CAAQ,AAAC,EAC3B,IAAK,IAAM,KAAS,EAClB,CAAI,CAAC,EAAM,CAAG,EAAY,OADS,IACE,CAAC,IAAI,CAAC,AAAC,GAAe,EAAW,KAAK,GAAK,IAAQ,UAAY,GAEtG,OAAO,CACT,GACA,GAAW,EACb,EAEA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAI,GAAW,EAiCf,MA/BK,CAAC,UACJ,GAAM,CAAC,EAAW,EAAY,CAAG,MAAM,QAAQ,GAAG,CAAC,CACjD,CAAA,EAAA,EAAA,eAAA,AAAe,IACf,CAAA,EAAA,EAAA,uBAAA,AAAuB,IACxB,EACD,GAAK,CAAD,EAEJ,GAAI,CAAC,EAAU,CAFA,MAEO,CAAE,CACtB,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAU,KAAK,AAAC,GACvD,GAAW,GACX,MACF,CAEA,GAAI,CAAC,EAAY,OAAO,CAAE,CACxB,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAY,KAAK,AAAC,GACzD,GAAW,GACX,MACF,CAEA,EAAe,EAAU,WAAW,EACpC,EAAuB,EAAY,WAAW,EAC9C,EAAwB,AAAD,IACrB,IAAM,EAAO,CAAE,GAAG,CAAQ,AAAC,EAC3B,IAAK,IAAM,KAAS,EAClB,CAAI,CAAC,EAAM,CAAG,EAAY,OADS,IACE,CAAC,IAAI,CAAC,AAAC,GAAe,EAAW,KAAK,GAAK,IAAQ,UAAY,GAEtG,OAAO,CACT,GACA,GAAW,IACb,CAAC,GAEM,KACL,GAAW,CACb,CACF,EAAG,EAAE,EAEL,IAAM,EAAmB,UACvB,EAAgB,MAChB,EAAc,UAEd,IAAM,EAAS,MAAM,EAAqB,GAC1C,GAAI,CAAC,EAAO,OAAO,CAAE,CACnB,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAO,KAAK,AAAC,GACpD,EAAc,MACd,MACF,CAEA,EAAe,IACf,EAAgB,CAAE,KAAM,UAAW,KAAM,0BAA2B,GACpE,MAAM,IACN,EAAc,KAChB,EAEM,EAAmB,UACvB,EAAgB,MAChB,EAAc,UAEd,IAAM,EAAS,MAAM,EAAqB,EAAiB,GAC3D,GAAI,CAAC,EAAO,OAAO,CAAE,CACnB,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAO,KAAK,AAAC,GACpD,EAAc,MACd,MACF,CAEA,EAAe,IACf,EAAgB,CAAE,KAAM,UAAW,KAAM,0BAA2B,GACpE,MAAM,IACN,EAAc,KAChB,EAEM,EAAqB,MAAO,IAChC,EAAgB,MAChB,EAAe,GAEf,IAAM,EAAS,MAAM,EACnB,EACA,CAAiB,CAAC,EAAM,CACxB,CAAmB,CAAC,EAAM,EAE5B,GAAI,CAAC,EAAO,OAAO,CAAE,CACnB,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAO,KAAK,AAAC,GACpD,EAAe,MACf,MACF,CAEA,EAAqB,AAAC,IAAc,CAAE,GAAG,CAAQ,CAAE,CAAhB,AAAiB,EAAM,CAAE,GAAG,CAAC,EAChE,EAAuB,AAAC,GAAc,EAAE,GAAG,CAAQ,CAAE,CAAhB,AAAiB,EAAM,CAAE,EAAO,UAAU,CAAC,QAAQ,EAAI,GAAG,CAAC,EAChG,EAAgB,CAAE,KAAM,UAAW,KAAM,CAAA,EAAG,CAAgB,CAAC,EAAM,CAAC,kBAAkB,CAAC,AAAC,GACxF,MAAM,IACN,EAAe,KACjB,EAEM,GAAe,MAAO,IAC1B,IAAM,EAAgB,EAAoB,EAAW,IAAI,EAEzD,GAAI,CAAC,AADa,QAAQ,CAAC,YAAY,EAAE,EAAc,gBAAgB,EA3LjD,AAAxB,AA2L2E,UA3LzC,CAA9B,EAAW,IAAI,CACV,CAAA,EAAG,EAAW,QAAQ,CAAC,GAAG,EA0LiE,AA1L/D,EAAW,SAAS,CAAA,CAAE,CAEpD,EAAW,QAAQ,CAwLsF,CAAC,CAAC,EAChG,OAEhB,EAAgB,MAChB,EAAc,EAAW,EAAE,EAE3B,IAAM,EAAS,MAAM,EAAiB,EAAW,EAAE,EACnD,GAAI,CAAC,EAAO,OAAO,CAAE,CACnB,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAO,KAAK,AAAC,GACpD,EAAc,MACd,MACF,CAEA,EAAgB,CAAE,KAAM,UAAW,KAAM,CAAA,EAAG,EAAc,oBAAoB,CAAC,AAAC,GAChF,MAAM,IACN,EAAc,KAChB,EAEM,GAAuB,MAAO,IAElC,GAAI,CAAC,AADa,QAAQ,CAAC,iBAAiB,EAAE,CAAgB,CAAC,EAAM,CAAC,gBAAgB,CAAC,EACvE,OAEhB,EAAgB,MAChB,EAAiB,GAEjB,IAAM,EAAS,MAAM,EAAyB,GAC9C,GAAI,CAAC,EAAO,OAAO,CAAE,CACnB,EAAgB,CAAE,KAAM,QAAS,KAAM,EAAO,KAAK,AAAC,GACpD,EAAiB,MACjB,MACF,CAEA,EAAqB,AAAC,IAAc,CAAE,GAAG,CAAQ,CAAE,CAAhB,AAAiB,EAAM,CAAE,GAAG,CAAC,EAChE,EAAuB,AAAC,IAAc,CAAE,GAAG,CAAQ,CAAE,CAAhB,AAAiB,EAAM,CAAE,EAAG,CAAC,GAClE,EAAgB,CAAE,KAAM,UAAW,KAAM,CAAA,EAAG,CAAgB,CAAC,EAAM,CAAC,oBAAoB,CAAC,AAAC,GAC1F,MAAM,IACN,EAAiB,KACnB,EAEM,GAAa,oKACb,GAAqB,6JACrB,GAAa,4YACb,GAAqB,gOACrB,GAAuB,2TACvB,GAAuB,mMAE7B,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,kFACd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+CACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iBACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,yCACb,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,UAAU,+LACV,QAAS,IAAM,EAAO,IAAI,CAAC,KAC3B,aAAW,wBAEX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CAAC,UAAU,yBAE1B,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,6FAAoF,6BAEpG,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,yEAAgE,+EAK9E,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAW,CAAC,oCAAoC,EACxB,UAAtB,EAAa,IAAI,CACb,oGACA,4HAAA,CACJ,UAED,EAAa,IAAI,GAIrB,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAW,CAAA,EAAG,GAAW,KAAK,CAAC,UAClC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oDAChB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,sDAA6C,gCAI9D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACb,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAW,aAClB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAW,aACd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,4DAAmD,uBACjE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,2DAAkD,8CAEjE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,UAAW,GACX,QAAS,IAAM,KAAK,IACpB,SAAU,AAAe,uBAET,WAAf,EAA0B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,YAAa,kBAK/H,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6GACb,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,uGAA8F,0BAG/G,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,WACL,UAAW,GACX,YAAY,UACZ,MAAO,EACP,SAAU,AAAC,GAAU,EAAe,EAAM,MAAM,CAAC,KAAK,EACtD,SAAyB,AAAf,kBAIgB,IAA7B,EAAkB,MAAM,CACvB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gEAAuD,iCAEtE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,8DACZ,EAAkB,GAAG,CAAC,AAAC,GACtB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAEC,UAAU,mIAEV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,4CACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,mGACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAa,KAAK,aAErB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oBACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,yEAAiE,EAAW,QAAQ,GACnG,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8DAAoD,WACxD,IAAI,KAAK,EAAW,SAAS,EAAE,cAAc,YAI5D,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,UAAW,CAAA,EAAG,GAAqB,sDAAsD,CAAC,CAC1F,QAAS,IAAM,KAAK,GAAa,GACjC,SAAU,IAAe,EAAW,EAAE,CACtC,MAAM,kBAEL,IAAe,EAAW,EAAE,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,gBApB9G,EAAW,EAAE,QA4B5B,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAW,aAClB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAW,aACd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,4DAAmD,uBACjE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,2DAAkD,yDAEjE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,UAAW,GACX,QAAS,IAAM,KAAK,IACpB,SAAyB,WAAf,YAEM,WAAf,EAA0B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,YAAa,qBAK/H,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uHACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,uGAA8F,eAG/G,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,MACL,UAAW,GACX,YAAa,EACb,MAAO,EACP,SAAU,AAAC,GAAU,EAAmB,EAAM,MAAM,CAAC,KAAK,EAC1D,SAAU,AAAe,kBAG7B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,uGAA8F,0BAG/G,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,WACL,UAAW,GACX,YAAY,YACZ,MAAO,EACP,SAAU,AAAC,GAAU,EAAe,EAAM,MAAM,CAAC,KAAK,EACtD,SAAyB,WAAf,UAKc,IAA7B,EAAkB,MAAM,CACvB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gEAAuD,iCAEtE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,8DACZ,EAAkB,GAAG,CAAC,AAAC,GACtB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAEC,UAAU,mIAEV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,4CACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,0IACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAa,KAAK,aAErB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oBACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,yEAAiE,EAAW,QAAQ,GACnG,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,+DAAuD,EAAW,SAAS,GAC1F,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8DAAoD,WACxD,IAAI,KAAK,EAAW,SAAS,EAAE,cAAc,YAI5D,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,UAAW,CAAA,EAAG,GAAqB,sDAAsD,CAAC,CAC1F,QAAS,IAAM,KAAK,GAAa,GACjC,SAAU,IAAe,EAAW,EAAE,CACtC,MAAM,kBAEL,IAAe,EAAW,EAAE,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,gBArB9G,EAAW,EAAE,QA6B3B,EAAgB,GAAG,CAAC,AAAC,IACpB,IAAM,EAAuB,EAAsB,GAAG,CAAC,GACjD,EAAW,IAAgB,EAC3B,EAAa,IAAkB,EAErC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAoB,UAAW,aAC9B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAW,aACd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gJACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,cAEtB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,6DAAoD,CAAgB,CAAC,EAAM,CAAC,oBAC1F,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,sDAA6C,iDAG9D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACZ,GACC,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,UAAW,GACX,QAAS,IAAM,KAAK,GAAqB,GACzC,SAAU,GAAY,YAErB,EAAa,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,YAAa,YAIhH,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,UAAW,GACX,QAAS,IAAM,KAAK,EAAmB,GACvC,SAAU,GAAY,YAErB,EAAW,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,YAC9F,EAAuB,eAAiB,gBAK/C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0BACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gCACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,6EAAoE,YACrF,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,WACL,UAAW,GACX,YAAa,CAA0B,CAAC,EAAM,CAC9C,MAAO,CAAiB,CAAC,EAAM,CAC/B,SAAU,AAAC,GACT,EAAqB,AAAC,IAAc,CAAE,GAAG,CAAQ,CAAE,CAAC,AAAjB,EAAuB,CAAE,EAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAElF,SAAU,GAAY,IAExB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,2DAAkD,wDAKjE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,8EAAoE,aACzE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0DAAiD,kBAE7E,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,MACL,UAAW,GACX,YAAa,CAA4B,CAAC,EAAM,CAChD,MAAO,CAAmB,CAAC,EAAM,CACjC,SAAU,AAAC,GACT,EAAwB,AAAD,IAAe,CAAE,GAAG,CAAQ,CAAE,CAAhB,AAAiB,EAAM,CAAE,EAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAEpF,SAAU,GAAY,IAExB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,2DAAkD,qEAMnE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,oJACZ,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,UAAI,wBACL,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WAAI,WAAS,IAAI,KAAK,EAAqB,SAAS,EAAE,cAAc,MACrE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WAAI,SAAO,EAAqB,QAAQ,CAAG,EAAqB,QAAQ,CAAG,gBAG9E,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,UAAI,oCAhFC,EAsFlB,GAEA,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,4EAAmE,yEAQ9F"}
1
+ {"version":3,"sources":["../../../../src/app/credentials/page.tsx","../../../../src/app/actions/data%3Aba8417%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3A9731fa%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3Aeddd05%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3A4502db%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3A612783%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport {\n listAgentApiCredentials,\n listCredentials,\n removeAgentApiCredential,\n removeCredential,\n saveAgentApiCredential,\n saveGitHubCredential,\n saveGitLabCredential,\n} from '@/app/actions/credentials';\nimport type {\n AgentApiCredential,\n AgentApiCredentialAgent,\n} from '@/lib/agent-api-credentials';\nimport type { Credential, CredentialType, GitLabCredential } from '@/lib/credentials';\nimport { ChevronRight, KeyRound, Trash2 } from 'lucide-react';\nimport Image from 'next/image';\nimport { useRouter } from 'next/navigation';\nimport { useEffect, useMemo, useState } from 'react';\n\nconst DEFAULT_GITLAB_SERVER_URL = 'https://gitlab.com';\nconst PROVIDER_ICON_URLS = {\n github: 'https://www.google.com/s2/favicons?domain=github.com&sz=64',\n gitlab: 'https://www.google.com/s2/favicons?domain=gitlab.com&sz=64',\n} as const;\nconst AGENT_API_LABELS: Record<AgentApiCredentialAgent, string> = {\n codex: 'Codex CLI',\n};\nconst AGENT_API_KEY_PLACEHOLDERS: Record<AgentApiCredentialAgent, string> = {\n codex: 'sk-...',\n};\nconst AGENT_API_PROXY_PLACEHOLDERS: Record<AgentApiCredentialAgent, string> = {\n codex: 'https://proxy.example.com/v1',\n};\nconst AGENT_API_ORDER: AgentApiCredentialAgent[] = ['codex'];\n\ntype FlashMessage = {\n tone: 'success' | 'error';\n text: string;\n} | null;\n\nfunction formatCredentialSubtitle(credential: Credential): string {\n if (credential.type === 'gitlab') {\n return `${credential.username} @ ${credential.serverUrl}`;\n }\n return credential.username;\n}\n\nfunction formatProviderLabel(type: CredentialType): string {\n return type === 'github' ? 'GitHub' : 'GitLab';\n}\n\nfunction ProviderIcon({ type }: { type: CredentialType }) {\n return (\n <Image\n src={PROVIDER_ICON_URLS[type]}\n alt={`${formatProviderLabel(type)} icon`}\n width={20}\n height={20}\n className=\"h-5 w-5 rounded-sm\"\n unoptimized\n />\n );\n}\n\nexport default function CredentialsPage() {\n const router = useRouter();\n\n const [credentials, setCredentials] = useState<Credential[]>([]);\n const [agentApiCredentials, setAgentApiCredentials] = useState<AgentApiCredential[]>([]);\n const [loading, setLoading] = useState(true);\n\n const [githubToken, setGitHubToken] = useState('');\n const [gitlabToken, setGitLabToken] = useState('');\n const [gitlabServerUrl, setGitLabServerUrl] = useState(DEFAULT_GITLAB_SERVER_URL);\n const [agentApiKeyInputs, setAgentApiKeyInputs] = useState<Record<AgentApiCredentialAgent, string>>({\n codex: '',\n });\n const [agentApiProxyInputs, setAgentApiProxyInputs] = useState<Record<AgentApiCredentialAgent, string>>({\n codex: '',\n });\n\n const [savingType, setSavingType] = useState<CredentialType | null>(null);\n const [savingAgent, setSavingAgent] = useState<AgentApiCredentialAgent | null>(null);\n const [deletingId, setDeletingId] = useState<string | null>(null);\n const [deletingAgent, setDeletingAgent] = useState<AgentApiCredentialAgent | null>(null);\n const [flashMessage, setFlashMessage] = useState<FlashMessage>(null);\n\n const githubCredentials = useMemo(\n () => credentials.filter((credential) => credential.type === 'github'),\n [credentials],\n );\n\n const gitlabCredentials = useMemo(\n () => credentials.filter((credential) => credential.type === 'gitlab') as GitLabCredential[],\n [credentials],\n );\n\n const agentApiCredentialMap = useMemo(() => {\n return new Map(agentApiCredentials.map((credential) => [credential.agent, credential]));\n }, [agentApiCredentials]);\n\n const reloadCredentials = async () => {\n const [gitResult, agentResult] = await Promise.all([\n listCredentials(),\n listAgentApiCredentials(),\n ]);\n\n if (!gitResult.success) {\n setFlashMessage({ tone: 'error', text: gitResult.error });\n setLoading(false);\n return;\n }\n\n if (!agentResult.success) {\n setFlashMessage({ tone: 'error', text: agentResult.error });\n setLoading(false);\n return;\n }\n\n setCredentials(gitResult.credentials);\n setAgentApiCredentials(agentResult.credentials);\n setAgentApiProxyInputs((previous) => {\n const next = { ...previous };\n for (const agent of AGENT_API_ORDER) {\n next[agent] = agentResult.credentials.find((credential) => credential.agent === agent)?.apiProxy || '';\n }\n return next;\n });\n setLoading(false);\n };\n\n useEffect(() => {\n let isActive = true;\n\n void (async () => {\n const [gitResult, agentResult] = await Promise.all([\n listCredentials(),\n listAgentApiCredentials(),\n ]);\n if (!isActive) return;\n\n if (!gitResult.success) {\n setFlashMessage({ tone: 'error', text: gitResult.error });\n setLoading(false);\n return;\n }\n\n if (!agentResult.success) {\n setFlashMessage({ tone: 'error', text: agentResult.error });\n setLoading(false);\n return;\n }\n\n setCredentials(gitResult.credentials);\n setAgentApiCredentials(agentResult.credentials);\n setAgentApiProxyInputs((previous) => {\n const next = { ...previous };\n for (const agent of AGENT_API_ORDER) {\n next[agent] = agentResult.credentials.find((credential) => credential.agent === agent)?.apiProxy || '';\n }\n return next;\n });\n setLoading(false);\n })();\n\n return () => {\n isActive = false;\n };\n }, []);\n\n const handleSaveGitHub = async () => {\n setFlashMessage(null);\n setSavingType('github');\n\n const result = await saveGitHubCredential(githubToken);\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setSavingType(null);\n return;\n }\n\n setGitHubToken('');\n setFlashMessage({ tone: 'success', text: 'GitHub credential added.' });\n await reloadCredentials();\n setSavingType(null);\n };\n\n const handleSaveGitLab = async () => {\n setFlashMessage(null);\n setSavingType('gitlab');\n\n const result = await saveGitLabCredential(gitlabServerUrl, gitlabToken);\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setSavingType(null);\n return;\n }\n\n setGitLabToken('');\n setFlashMessage({ tone: 'success', text: 'GitLab credential added.' });\n await reloadCredentials();\n setSavingType(null);\n };\n\n const handleSaveAgentApi = async (agent: AgentApiCredentialAgent) => {\n setFlashMessage(null);\n setSavingAgent(agent);\n\n const result = await saveAgentApiCredential(\n agent,\n agentApiKeyInputs[agent],\n agentApiProxyInputs[agent],\n );\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setSavingAgent(null);\n return;\n }\n\n setAgentApiKeyInputs((previous) => ({ ...previous, [agent]: '' }));\n setAgentApiProxyInputs((previous) => ({ ...previous, [agent]: result.credential.apiProxy || '' }));\n setFlashMessage({ tone: 'success', text: `${AGENT_API_LABELS[agent]} credential saved.` });\n await reloadCredentials();\n setSavingAgent(null);\n };\n\n const handleDelete = async (credential: Credential) => {\n const providerLabel = formatProviderLabel(credential.type);\n const confirmed = confirm(`Delete this ${providerLabel} credential for ${formatCredentialSubtitle(credential)}?`);\n if (!confirmed) return;\n\n setFlashMessage(null);\n setDeletingId(credential.id);\n\n const result = await removeCredential(credential.id);\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setDeletingId(null);\n return;\n }\n\n setFlashMessage({ tone: 'success', text: `${providerLabel} credential deleted.` });\n await reloadCredentials();\n setDeletingId(null);\n };\n\n const handleDeleteAgentApi = async (agent: AgentApiCredentialAgent) => {\n const confirmed = confirm(`Delete the saved ${AGENT_API_LABELS[agent]} API credential?`);\n if (!confirmed) return;\n\n setFlashMessage(null);\n setDeletingAgent(agent);\n\n const result = await removeAgentApiCredential(agent);\n if (!result.success) {\n setFlashMessage({ tone: 'error', text: result.error });\n setDeletingAgent(null);\n return;\n }\n\n setAgentApiKeyInputs((previous) => ({ ...previous, [agent]: '' }));\n setAgentApiProxyInputs((previous) => ({ ...previous, [agent]: '' }));\n setFlashMessage({ tone: 'success', text: `${AGENT_API_LABELS[agent]} credential deleted.` });\n await reloadCredentials();\n setDeletingAgent(null);\n };\n\n const panelClass = 'overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm dark:border-slate-700/50 dark:bg-slate-800 dark:shadow-[0_12px_30px_-18px_rgba(2,6,23,0.9)]';\n const sectionHeaderClass = 'flex flex-col gap-3 border-b border-slate-200 bg-white px-6 py-5 md:flex-row md:items-center md:justify-between dark:border-slate-700/50 dark:bg-slate-800';\n const inputClass = 'block w-full rounded-lg border border-slate-200 bg-slate-50 px-3 py-2.5 text-sm text-slate-900 placeholder-slate-400 transition-all focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-60 dark:border-slate-700 dark:bg-slate-900/50 dark:text-white dark:placeholder-slate-500 dark:focus:border-primary/50 dark:focus:bg-slate-900';\n const primaryButtonClass = 'inline-flex items-center justify-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white shadow-lg shadow-blue-900/20 transition-colors hover:bg-blue-700 disabled:cursor-not-allowed disabled:opacity-60';\n const secondaryButtonClass = 'inline-flex items-center justify-center gap-2 rounded-lg border border-slate-200 bg-white px-4 py-2 text-sm font-medium text-slate-700 shadow-sm transition-colors hover:bg-slate-50 disabled:cursor-not-allowed disabled:opacity-60 dark:border-slate-600 dark:bg-slate-800 dark:text-slate-200 dark:hover:bg-slate-700';\n const rowActionButtonClass = 'inline-flex h-8 w-8 items-center justify-center rounded-lg text-slate-400 transition-all hover:bg-red-50 hover:text-red-500 dark:text-slate-400 dark:hover:bg-red-900/30 dark:hover:text-red-400';\n\n return (\n <main className=\"min-h-screen bg-[#f6f6f8] px-4 py-8 md:px-8 md:py-12 dark:bg-[#0f1117]\">\n <div className=\"mx-auto w-full max-w-4xl space-y-8\">\n <div className=\"mb-8\">\n <div className=\"mb-2 flex items-center gap-4\">\n <button\n type=\"button\"\n className=\"flex h-10 w-10 items-center justify-center rounded-lg text-slate-500 transition-colors hover:bg-white hover:text-slate-900 dark:text-slate-400 dark:hover:bg-slate-800 dark:hover:text-white\"\n onClick={() => router.push('/')}\n aria-label=\"Back to home\"\n >\n <ChevronRight className=\"h-6 w-6 rotate-180\" />\n </button>\n <h1 className=\"text-3xl font-black tracking-[-0.02em] text-slate-900 md:text-4xl dark:text-white\">Credential Management</h1>\n </div>\n <p className=\"ml-14 text-sm text-slate-500 md:text-base dark:text-slate-400\">\n Manage your API keys and access tokens for third-party services safely.\n </p>\n </div>\n\n {flashMessage && (\n <div\n className={`rounded-lg border px-4 py-3 text-sm ${\n flashMessage.tone === 'error'\n ? 'border-red-200 bg-red-50 text-red-700 dark:border-red-500/40 dark:bg-red-900/30 dark:text-red-200'\n : 'border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/40 dark:bg-emerald-900/30 dark:text-emerald-200'\n }`}\n >\n {flashMessage.text}\n </div>\n )}\n\n {loading ? (\n <div className={`${panelClass} p-10`}>\n <div className=\"flex flex-col items-center gap-3\">\n <span className=\"loading loading-spinner loading-md text-primary\"></span>\n <p className=\"text-sm text-slate-500 dark:text-slate-400\">Loading credentials...</p>\n </div>\n </div>\n ) : (\n <div className=\"space-y-6\">\n <section className={panelClass}>\n <div className={sectionHeaderClass}>\n <div>\n <h2 className=\"text-lg font-bold text-slate-900 dark:text-white\">GitHub Credentials</h2>\n <p className=\"mt-1 text-sm text-slate-500 dark:text-slate-400\">Access private repositories and Gists.</p>\n </div>\n <button\n className={primaryButtonClass}\n onClick={() => void handleSaveGitHub()}\n disabled={savingType === 'github'}\n >\n {savingType === 'github' ? <span className=\"loading loading-spinner loading-xs\"></span> : <KeyRound className=\"h-4 w-4\" />}\n Add Token\n </button>\n </div>\n\n <div className=\"border-b border-slate-100 bg-slate-50/40 px-6 py-4 dark:border-slate-700/50 dark:bg-slate-900/35\">\n <label className=\"mb-2 block text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400\">\n Personal Access Token\n </label>\n <input\n type=\"password\"\n className={inputClass}\n placeholder=\"ghp_xxx\"\n value={githubToken}\n onChange={(event) => setGitHubToken(event.target.value)}\n disabled={savingType === 'github'}\n />\n </div>\n\n {githubCredentials.length === 0 ? (\n <div className=\"px-6 py-6 text-sm text-slate-500 dark:text-slate-400\">No GitHub credentials saved.</div>\n ) : (\n <div className=\"divide-y divide-slate-100 dark:divide-slate-700/50\">\n {githubCredentials.map((credential) => (\n <div\n key={credential.id}\n className=\"group flex items-center justify-between gap-4 px-6 py-5 transition-colors hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n >\n <div className=\"flex min-w-0 items-center gap-4\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-slate-100 dark:bg-slate-700/60\">\n <ProviderIcon type=\"github\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-slate-900 dark:text-white\">{credential.username}</div>\n <div className=\"mt-0.5 text-xs text-slate-500 dark:text-slate-400\">\n Updated {new Date(credential.updatedAt).toLocaleString()}\n </div>\n </div>\n </div>\n <button\n className={`${rowActionButtonClass} opacity-0 group-hover:opacity-100 disabled:opacity-40`}\n onClick={() => void handleDelete(credential)}\n disabled={deletingId === credential.id}\n title=\"Delete\"\n >\n {deletingId === credential.id ? <span className=\"loading loading-spinner loading-xs\"></span> : <Trash2 className=\"h-4 w-4\" />}\n </button>\n </div>\n ))}\n </div>\n )}\n </section>\n\n <section className={panelClass}>\n <div className={sectionHeaderClass}>\n <div>\n <h2 className=\"text-lg font-bold text-slate-900 dark:text-white\">GitLab Credentials</h2>\n <p className=\"mt-1 text-sm text-slate-500 dark:text-slate-400\">Connect to self-hosted or cloud GitLab instances.</p>\n </div>\n <button\n className={secondaryButtonClass}\n onClick={() => void handleSaveGitLab()}\n disabled={savingType === 'gitlab'}\n >\n {savingType === 'gitlab' ? <span className=\"loading loading-spinner loading-xs\"></span> : <KeyRound className=\"h-4 w-4\" />}\n Add Instance\n </button>\n </div>\n\n <div className=\"space-y-4 border-b border-slate-100 bg-slate-50/40 px-6 py-4 dark:border-slate-700/50 dark:bg-slate-900/35\">\n <div>\n <label className=\"mb-2 block text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400\">\n Server URL\n </label>\n <input\n type=\"url\"\n className={inputClass}\n placeholder={DEFAULT_GITLAB_SERVER_URL}\n value={gitlabServerUrl}\n onChange={(event) => setGitLabServerUrl(event.target.value)}\n disabled={savingType === 'gitlab'}\n />\n </div>\n <div>\n <label className=\"mb-2 block text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400\">\n Personal Access Token\n </label>\n <input\n type=\"password\"\n className={inputClass}\n placeholder=\"glpat-xxx\"\n value={gitlabToken}\n onChange={(event) => setGitLabToken(event.target.value)}\n disabled={savingType === 'gitlab'}\n />\n </div>\n </div>\n\n {gitlabCredentials.length === 0 ? (\n <div className=\"px-6 py-6 text-sm text-slate-500 dark:text-slate-400\">No GitLab credentials saved.</div>\n ) : (\n <div className=\"divide-y divide-slate-100 dark:divide-slate-700/50\">\n {gitlabCredentials.map((credential) => (\n <div\n key={credential.id}\n className=\"group flex items-center justify-between gap-4 px-6 py-5 transition-colors hover:bg-slate-50 dark:hover:bg-slate-800/50\"\n >\n <div className=\"flex min-w-0 items-center gap-4\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-orange-50 dark:border dark:border-orange-500/20 dark:bg-orange-500/10\">\n <ProviderIcon type=\"gitlab\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-slate-900 dark:text-white\">{credential.username}</div>\n <div className=\"truncate text-xs text-slate-500 dark:text-slate-400\">{credential.serverUrl}</div>\n <div className=\"mt-0.5 text-xs text-slate-500 dark:text-slate-400\">\n Updated {new Date(credential.updatedAt).toLocaleString()}\n </div>\n </div>\n </div>\n <button\n className={`${rowActionButtonClass} opacity-0 group-hover:opacity-100 disabled:opacity-40`}\n onClick={() => void handleDelete(credential)}\n disabled={deletingId === credential.id}\n title=\"Delete\"\n >\n {deletingId === credential.id ? <span className=\"loading loading-spinner loading-xs\"></span> : <Trash2 className=\"h-4 w-4\" />}\n </button>\n </div>\n ))}\n </div>\n )}\n </section>\n\n {AGENT_API_ORDER.map((agent) => {\n const configuredCredential = agentApiCredentialMap.get(agent);\n const isSaving = savingAgent === agent;\n const isDeleting = deletingAgent === agent;\n\n return (\n <section key={agent} className={panelClass}>\n <div className={sectionHeaderClass}>\n <div className=\"flex items-center gap-3\">\n <div className=\"rounded-lg bg-emerald-100 p-1.5 text-emerald-600 dark:border dark:border-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400\">\n <KeyRound className=\"h-5 w-5\" />\n </div>\n <div>\n <h2 className=\"text-lg font-bold text-slate-900 dark:text-white\">{AGENT_API_LABELS[agent]} Configuration</h2>\n <p className=\"text-sm text-slate-500 dark:text-slate-400\">Configure access for LLM capabilities.</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {configuredCredential && (\n <button\n className={secondaryButtonClass}\n onClick={() => void handleDeleteAgentApi(agent)}\n disabled={isSaving || isDeleting}\n >\n {isDeleting ? <span className=\"loading loading-spinner loading-xs\"></span> : <Trash2 className=\"h-4 w-4\" />}\n Remove\n </button>\n )}\n <button\n className={primaryButtonClass}\n onClick={() => void handleSaveAgentApi(agent)}\n disabled={isSaving || isDeleting}\n >\n {isSaving ? <span className=\"loading loading-spinner loading-xs\"></span> : <KeyRound className=\"h-4 w-4\" />}\n {configuredCredential ? 'Save Changes' : 'Save'}\n </button>\n </div>\n </div>\n\n <div className=\"space-y-6 p-6\">\n <div className=\"max-w-2xl space-y-4\">\n <div>\n <label className=\"mb-2 block text-sm font-medium text-slate-700 dark:text-slate-300\">API Key</label>\n <input\n type=\"password\"\n className={inputClass}\n placeholder={AGENT_API_KEY_PLACEHOLDERS[agent]}\n value={agentApiKeyInputs[agent]}\n onChange={(event) =>\n setAgentApiKeyInputs((previous) => ({ ...previous, [agent]: event.target.value }))\n }\n disabled={isSaving || isDeleting}\n />\n <p className=\"mt-1 text-xs text-slate-500 dark:text-slate-400\">\n Your API key is stored locally and never shared.\n </p>\n </div>\n\n <div>\n <label className=\"mb-2 block text-sm font-medium text-slate-700 dark:text-slate-300\">\n API Proxy <span className=\"font-normal text-slate-400 dark:text-slate-500\">(Optional)</span>\n </label>\n <input\n type=\"url\"\n className={inputClass}\n placeholder={AGENT_API_PROXY_PLACEHOLDERS[agent]}\n value={agentApiProxyInputs[agent]}\n onChange={(event) =>\n setAgentApiProxyInputs((previous) => ({ ...previous, [agent]: event.target.value }))\n }\n disabled={isSaving || isDeleting}\n />\n <p className=\"mt-1 text-xs text-slate-500 dark:text-slate-400\">\n Override this when using a proxy or a compatible endpoint.\n </p>\n </div>\n </div>\n\n <div className=\"rounded-lg border border-slate-200 bg-slate-50 p-3 text-xs text-slate-600 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-300\">\n {configuredCredential ? (\n <div className=\"space-y-1\">\n <div>API key configured.</div>\n <div>Updated {new Date(configuredCredential.updatedAt).toLocaleString()}</div>\n <div>Proxy {configuredCredential.apiProxy ? configuredCredential.apiProxy : 'not set'}</div>\n </div>\n ) : (\n <div>No API credential saved.</div>\n )}\n </div>\n </div>\n </section>\n );\n })}\n\n <div className=\"pb-2 pt-4 text-center text-xs text-slate-400 dark:text-slate-500\">\n Credentials are encrypted at rest using your system keychain.\n </div>\n </div>\n )}\n </div>\n </main>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"4049bac91fd5c044e275d0eb097e55ba4b66b01242\":\"removeAgentApiCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_6=/*#__PURE__*/createServerReference(\"4049bac91fd5c044e275d0eb097e55ba4b66b01242\",callServer,void 0,findSourceMapURL,\"removeAgentApiCredential\");export{$$RSC_SERVER_ACTION_6 as removeAgentApiCredential};","/* __next_internal_action_entry_do_not_use__ [{\"4058c5e187754f0abe1e61ffa924a1d03253df8797\":\"removeCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_5=/*#__PURE__*/createServerReference(\"4058c5e187754f0abe1e61ffa924a1d03253df8797\",callServer,void 0,findSourceMapURL,\"removeCredential\");export{$$RSC_SERVER_ACTION_5 as removeCredential};","/* __next_internal_action_entry_do_not_use__ [{\"705f45058d29a347e1fae0fe711c60a922bded3683\":\"saveAgentApiCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_4=/*#__PURE__*/createServerReference(\"705f45058d29a347e1fae0fe711c60a922bded3683\",callServer,void 0,findSourceMapURL,\"saveAgentApiCredential\");export{$$RSC_SERVER_ACTION_4 as saveAgentApiCredential};","/* __next_internal_action_entry_do_not_use__ [{\"400c4b96511a4d2c3511e7666d5ef557e65f4d7dee\":\"saveGitHubCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"400c4b96511a4d2c3511e7666d5ef557e65f4d7dee\",callServer,void 0,findSourceMapURL,\"saveGitHubCredential\");export{$$RSC_SERVER_ACTION_1 as saveGitHubCredential};","/* __next_internal_action_entry_do_not_use__ [{\"6069a71e57100a15e5efc93b245c1b0a4e2c5e5df9\":\"saveGitLabCredential\"},\"src/app/actions/credentials.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_2=/*#__PURE__*/createServerReference(\"6069a71e57100a15e5efc93b245c1b0a4e2c5e5df9\",callServer,void 0,findSourceMapURL,\"saveGitLabCredential\");export{$$RSC_SERVER_ACTION_2 as saveGitLabCredential};"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[96614,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(5050);let f=(0,e.createServerReference)("408332446dc02dad408161688cbb401a72d91ebb97",e.callServer,void 0,e.findSourceMapURL,"deleteSessionInBackground"),g=(0,e.createServerReference)("400a2fbbbc97983cdf1e0b7ecb2333d6a9cd23cd2d",e.callServer,void 0,e.findSourceMapURL,"getSessionDivergence"),h=(0,e.createServerReference)("407e25b80d6fb52c1cb4f5b9b5e2dfb01dc65fb043",e.callServer,void 0,e.findSourceMapURL,"listSessionBaseBranches"),i=(0,e.createServerReference)("4028996676377f1857cb91ef1125bd419c73c5fea4",e.callServer,void 0,e.findSourceMapURL,"mergeSessionToBase"),j=(0,e.createServerReference)("40d8852935ba1f9d4e40138ba0d8d75f8ecef45ebf",e.callServer,void 0,e.findSourceMapURL,"rebaseSessionOntoBase"),k=(0,e.createServerReference)("605fa32f4968d64da5aa738537f6feef5e5ac5546c",e.callServer,void 0,e.findSourceMapURL,"updateSessionBaseBranch"),l=(0,e.createServerReference)("60a5549138685083ba90bb520c385341df13eb74f8",e.callServer,void 0,e.findSourceMapURL,"writeSessionPromptFile"),m=(0,e.createServerReference)("7fa057c23b672919a4468d94651b3e672f88229d11",e.callServer,void 0,e.findSourceMapURL,"setTmuxSessionMouseMode"),n=(0,e.createServerReference)("7f8957576d4459d07a500bc0f13b9d9cc9666aa369",e.callServer,void 0,e.findSourceMapURL,"setTmuxSessionStatusVisibility");var o=a.i(23311),p=a.i(73517),q=a.i(81560),r=a.i(52495),s=a.i(70106);let t=(0,s.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]),u=(0,s.default)("git-merge",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 21V9a9 9 0 0 0 9 9",key:"7kw0sc"}]]),v=(0,s.default)("git-pull-request-arrow",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v12",key:"ih889a"}],["circle",{cx:"19",cy:"18",r:"3",key:"1qljk2"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7",key:"1yj91y"}]]);var w=a.i(10948);let x=(0,s.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]),y=(0,s.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),z=(0,s.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]),A=(0,s.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var B=a.i(50522);let C=(0,s.default)("grip",[["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"19",cy:"5",r:"1",key:"w8mnmm"}],["circle",{cx:"5",cy:"5",r:"1",key:"lttvr7"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}],["circle",{cx:"19",cy:"19",r:"1",key:"shf9b7"}],["circle",{cx:"5",cy:"19",r:"1",key:"bfqh0e"}]]);var D=a.i(5784),E=a.i(15618);let F=(0,s.default)("mouse-pointer-2",[["path",{d:"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z",key:"edeuup"}]]);var G=a.i(210);let H=(0,s.default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]),I=(0,s.default)("rotate-cw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]]),J=(0,s.default)("scroll-text",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]),K=(0,s.default)("text-cursor-input",[["path",{d:"M12 20h-1a2 2 0 0 1-2-2 2 2 0 0 1-2 2H6",key:"1528k5"}],["path",{d:"M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7",key:"13ksps"}],["path",{d:"M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1",key:"1n9rhb"}],["path",{d:"M6 4h1a2 2 0 0 1 2 2 2 2 0 0 1 2-2h1",key:"1mj8rg"}],["path",{d:"M9 6v12",key:"velyjx"}]]);var L=a.i(33508),M=a.i(64724);let N=(0,s.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var O=a.i(65975),P=a.i(41910);function Q({repoPath:a,branchHint:d,baseBranchHint:e}){let[f,g]=(0,c.useState)({mode:"auto",hash:null}),{data:h}=(0,O.useGitBranches)(a),{data:i,isLoading:j,isFetching:k,isError:l,error:m,refetch:n}=(0,O.useGitLog)(a,200,{scope:"current"}),o=(0,c.useMemo)(()=>i?.all??[],[i]),p=h?.current?.trim()||d?.trim()||"unknown",q=h?.current?.trim()||d?.trim()||null,r=e?.trim()||null,{data:s}=(0,O.useGitMergeBase)(a,r,q),t=(0,c.useMemo)(()=>{if(!s)return o;let a=s.trim();if(!a)return o;let b=o.findIndex(b=>a.startsWith(b.hash)||b.hash.startsWith(a));return b<0?o:o.slice(0,b+1)},[o,s]),u=(0,c.useMemo)(()=>0===t.length||"unselected"===f.mode?null:"manual"===f.mode&&t.some(a=>a.hash===f.hash)?f.hash:t[0].hash,[t,f]);return(0,b.jsxs)("div",{className:"flex h-full min-h-0 flex-col bg-slate-50 dark:bg-[#0d1117]",children:[(0,b.jsxs)("div",{className:"flex min-h-0 flex-[2] flex-col border-b border-slate-200 dark:border-[#30363d]",children:[(0,b.jsxs)("div",{className:"flex h-9 shrink-0 items-center justify-between border-b border-slate-200 px-3 text-[11px] font-semibold text-slate-600 dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-400",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2 uppercase tracking-wide",children:[(0,b.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-500"}),(0,b.jsx)("span",{className:"truncate",children:"Repo Diff"}),(0,b.jsx)("span",{className:"truncate opacity-70 normal-case",title:p,children:p})]}),(0,b.jsxs)("span",{className:"shrink-0 text-[10px] opacity-70",children:[t.length," commit",1===t.length?"":"s"]})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1",children:(0,b.jsx)(P.CommitChangesView,{repoPath:a,commitHash:u,showWorkingTreeWhenNoCommit:!0,fileListWidthClass:"w-52"})})]}),(0,b.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,b.jsxs)("div",{className:"flex h-9 shrink-0 items-center justify-between border-b border-slate-200 px-3 text-[11px] font-semibold text-slate-600 dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-400",children:[(0,b.jsx)("span",{className:"uppercase tracking-wide",children:"Commit History"}),(0,b.jsx)("button",{type:"button",className:"btn btn-ghost btn-xs h-6 min-h-6 w-7 border-none p-0 text-slate-600 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>void n(),title:"Refresh commit history","aria-label":"Refresh commit history",children:(0,b.jsx)(N,{className:`h-3.5 w-3.5 ${k?"animate-spin":""}`})})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:j?(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-slate-500 dark:text-slate-400",children:(0,b.jsx)("span",{className:"loading loading-spinner loading-sm"})}):l?(0,b.jsx)("div",{className:"flex h-full items-center justify-center px-6 text-center text-xs text-red-500 dark:text-red-300",children:m instanceof Error?m.message:"Failed to load commit history"}):0===t.length?(0,b.jsx)("div",{className:"flex h-full items-center justify-center px-6 text-center text-xs text-slate-500 dark:text-slate-400",children:"No commits found on this branch."}):(0,b.jsx)("div",{className:"divide-y divide-slate-200 dark:divide-[#30363d]",children:t.map(a=>{var c;let d,e=u===a.hash;return(0,b.jsxs)("button",{type:"button",onClick:()=>{var b;u===(b=a.hash)?g({mode:"unselected",hash:null}):g({mode:"manual",hash:b})},className:`w-full px-3 py-2 text-left transition-colors ${e?"bg-blue-100/80 dark:bg-[#1f2a3d]":"hover:bg-slate-100 dark:hover:bg-[#161b22]"}`,title:`${a.hash} ${a.message}`.trim(),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[11px] font-mono text-slate-500 dark:text-slate-400",children:[(0,b.jsx)("span",{className:"rounded bg-slate-200 px-1.5 py-0.5 dark:bg-[#30363d]",children:a.hash}),(0,b.jsx)("span",{className:"truncate",children:Number.isNaN(d=Date.parse(c=a.date))?c:new Date(d).toLocaleString()})]}),(0,b.jsx)("div",{className:"mt-1 truncate text-xs font-medium text-slate-800 dark:text-slate-100",children:a.message||"(no subject)"}),(0,b.jsx)("div",{className:"truncate text-[11px] text-slate-500 dark:text-slate-400",children:a.author_name})]},a.hash)})})})]})]})}var R=a.i(11431),S=a.i(12627);function T(a,b,c){var d,e;let f=(d=a,e=b,`viba-${(d.trim().replace(/[^a-zA-Z0-9_-]/g,"-")||"session").slice(0,40)}-${e}`),g=new URLSearchParams;for(let a of(g.append("arg","new-session"),Array.isArray(c)?c:c?[c]:[]))a.value&&(g.append("arg","-e"),g.append("arg",`${a.name}=${a.value}`));return g.append("arg","-A"),g.append("arg","-s"),g.append("arg",f),`/terminal?${g.toString()}`}let U=a=>{let b=a.trim();if(!b)return null;if(/^https?:\/\//i.test(b))return b;if(/^[a-z][a-z0-9+.-]*:\/\//i.test(b)||/^(mailto|javascript|data|tel):/i.test(b))return null;let c=b.split("/")[0]??"",d=c.indexOf(":");if(d>0&&!c.startsWith("[")){let a=c.slice(0,d).toLowerCase(),b=c.slice(d+1);if(!(a.includes(".")||"localhost"===a||/^\d{1,3}(?:\.\d{1,3}){3}$/.test(a)||/^\d+$/.test(b)))return null}let e=c.includes("@")?c.slice(c.lastIndexOf("@")+1):c,f=e.startsWith("[")?e.slice(1,Math.max(1,e.indexOf("]"))).toLowerCase():e.split(":")[0].toLowerCase();return`${"localhost"===f||"127.0.0.1"===f||"::1"===f?"http":"https"}://${b}`},V=a=>`'${a.replace(/'/g,"'\\''")}'`,W=[{id:"vscode",name:"VS Code",protocol:"vscode"},{id:"cursor",name:"Cursor",protocol:"cursor"},{id:"windsurf",name:"Windsurf",protocol:"windsurf"},{id:"antigravity",name:"Antigravity",protocol:"antigravity"}],X="viba-terminal-size",Y="viba-agent-preview-split-ratio",Z=/(?:\$|%|#|>) $/,$={background:"#ffffff",foreground:"#0f172a",cursor:"#0f172a",selectionBackground:"rgba(59, 130, 246, 0.4)",black:"#000000",red:"#cd3131",green:"#00BC00",yellow:"#949800",blue:"#0451a5",magenta:"#bc05bc",cyan:"#0598bc",white:"#555555",brightBlack:"#666666",brightRed:"#cd3131",brightGreen:"#14CE14",brightYellow:"#b5ba00",brightBlue:"#0451a5",brightMagenta:"#bc05bc",brightCyan:"#0598bc",brightWhite:"#a5a5a5"},_={background:"#0d1117",foreground:"#e6edf3",cursor:"#e6edf3",selectionBackground:"rgba(59, 130, 246, 0.4)",black:"#484f58",red:"#ff7b72",green:"#3fb950",yellow:"#d29922",blue:"#58a6ff",magenta:"#bc8cff",cyan:"#39c5cf",white:"#b1bac4",brightBlack:"#6e7681",brightRed:"#ffa198",brightGreen:"#56d364",brightYellow:"#e3b341",brightBlue:"#79c0ff",brightMagenta:"#d2a8ff",brightCyan:"#56d4dd",brightWhite:"#ffffff"},aa=a=>Math.max(.2,Math.min(.8,a)),ab=(a,b)=>{let c=a.replace(/\\/g,"/").replace(/\/+$/,""),d=b.replace(/\\/g,"/").replace(/^\/+/,"");return`${c}/${d}`},ac=(a,b)=>{let c=b.trim().replace(/\\/g,"/").replace(/\/+$/,"");if(!c)return null;let d=(a=>{let b=a.trim();if(!b)return"";if(b=b.replace(/[#?].*$/,""),/^file:\/\//i.test(b))try{let a=new URL(b);b=decodeURIComponent(a.pathname)}catch{}else if(/^https?:\/\//i.test(b))try{let a=new URL(b);b=decodeURIComponent(a.pathname)}catch{}return(b=b.replace(/^webpack(?:-internal)?:\/\/\/?/,"").replace(/^rsc:\/\//,"").replace(/^\(.*?\)\//,"").replace(/^\/\.\//,"/").replace(/^\.\//,"").replace(/\\/g,"/")).trim()})(a);if(!d)return null;if(d.startsWith("/")||(0,R.isWindowsAbsolutePath)(d))return d;let e=new Set;e.add(d.replace(/^\.\/+/,""));let f=d.indexOf("/src/");for(let a of(f>=0&&e.add(d.slice(f+1)),d.startsWith("src/")&&e.add(d),e))if(a)return ab(c,a);return null},ad=a=>{let b=a.trim();if(!b)return"";let c=b.match(/[A-Za-z_$][\w$]*/);return c?c[0]:""};function ae({repo:a,worktree:d,branch:e,baseBranch:s,sessionName:N,agent:O,startupScript:P,devServerScript:ab,initialMessage:ae,attachmentPaths:af,attachmentNames:ag,title:ah,sessionMode:ai="fast",onExit:aj,isResume:ak,terminalPersistenceMode:al="shell",onSessionStart:am,agentTerminalSrc:an,floatingTerminalSrc:ao}){let ap="hidden min-[1900px]:inline",aq=(0,c.useRef)(null),ar=(0,c.useRef)(null),as=(0,c.useRef)(null),at=(0,c.useRef)(null),au=(0,c.useRef)(null),av=(0,c.useRef)({startX:0,startRatio:.5}),aw=(0,c.useRef)(null),ax=(0,c.useRef)(null),ay=(0,c.useRef)(null),az=(0,c.useRef)({injected:!1,timer:null}),aA=(0,c.useMemo)(()=>an||T(N,"agent"),[an,N]),aB=(0,c.useMemo)(()=>ao||T(N,"terminal"),[ao,N]),aC=(0,c.useRef)({agent:"idle",terminal:"idle"}),aD=(0,c.useRef)({agent:!1,terminal:!1});(0,c.useEffect)(()=>{aC.current={agent:"idle",terminal:"idle"},aD.current={agent:!1,terminal:!1},null!==az.current.timer&&window.clearTimeout(az.current.timer),az.current={injected:!1,timer:null}},[N]),(0,c.useEffect)(()=>()=>{null!==az.current.timer&&(window.clearTimeout(az.current.timer),az.current.timer=null)},[]);let aE=(0,c.useCallback)(a=>`viba:terminal-bootstrap:${N}:${a}`,[N]),aF=(0,c.useCallback)(a=>`${N}:${a}`,[N]),aG=(0,c.useCallback)(()=>null,[]),aH=(0,c.useCallback)(a=>{let b=aG();return b&&b[aF(a)]||"idle"},[aG,aF]),aI=(0,c.useCallback)((a,b)=>{let c=aG();c&&(c[aF(a)]=b)},[aG,aF]),aJ=(0,c.useCallback)(a=>{if("done"===aC.current[a]||"done"===aH(a))return!0;try{return"1"===window.sessionStorage.getItem(aE(a))}catch{return!1}},[aH,aE]),aK=(0,c.useCallback)(a=>{let b=aC.current[a],c=aH(a);return"done"!==b&&"in_progress"!==b&&"done"!==c&&"in_progress"!==c&&(aC.current[a]="in_progress",aI(a,"in_progress"),!0)},[aH,aI]),aL=(0,c.useCallback)(a=>{"done"!==aC.current[a]&&(aC.current[a]="idle"),"done"!==aH(a)&&aI(a,"idle")},[aH,aI]),aM=(0,c.useCallback)(a=>{aC.current[a]="done",aI(a,"done");try{window.sessionStorage.setItem(aE(a),"1")}catch{}},[aE,aI]),aN=(0,c.useCallback)(a=>{let b=a?.buffer?.active;if(!b||"function"!=typeof b.getLine)return!0;let c=b.baseY+b.cursorY;for(let a=0;a<6;a+=1){let d=b.getLine(c-a),e=d?.translateToString(!0)??"";if(e.trim())return Z.test(e)}return!1},[]),aO=(0,c.useCallback)(()=>{ay.current&&(ay.current(),ay.current=null)},[]),aP=(0,c.useCallback)((a,b)=>{aO();let c=!1,d=null,e=null,f=null,g=()=>{if(c)return;let a=!aN(b);a$(b=>b===a?b:a)};g(),f=window.setInterval(g,1e3);try{if("function"==typeof b.onWriteParsed)d=b.onWriteParsed(g)||null;else{let b=a.contentDocument?.querySelector(".xterm-screen")||a.contentDocument?.body;b&&(e=new MutationObserver(g)).observe(b,{childList:!0,subtree:!0,characterData:!0})}}catch(a){console.error("Failed to setup terminal process monitor:",a)}ay.current=()=>{c=!0,null!==f&&(window.clearInterval(f),f=null),d&&"function"==typeof d.dispose&&d.dispose(),e?.disconnect()}},[aN,aO]);(0,c.useEffect)(()=>()=>{aO()},[aO]),(0,c.useEffect)(()=>{a$(!1),aO()},[N,aO]);let aQ=(0,c.useCallback)((a,b,c)=>{if(ak)return!1;let d=P?.trim();return!!d&&!az.current.injected&&(az.current.injected=!0,null!==az.current.timer&&window.clearTimeout(az.current.timer),az.current.timer=window.setTimeout(()=>{az.current.timer=null;try{let e;c.paste(d),(e=a.contentDocument?.querySelector("textarea.xterm-helper-textarea"))?e.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:b})):c.paste("\r")}catch(a){az.current.injected=!1,console.error("Failed to inject startup script into terminal iframe:",a)}},500),!0)},[ak,P]);(0,c.useEffect)(()=>{if(ak||!P?.trim()||az.current.injected)return;let a=!1,b=(c=0)=>{if(a||az.current.injected||c>30)return;if(!aJ("terminal"))return void window.setTimeout(()=>b(c+1),200);let d=ar.current;if(d){try{let a=d.contentWindow;if(a?.term)return void aQ(d,a,a.term)}catch{}window.setTimeout(()=>b(c+1),200)}};return b(),()=>{a=!0}},[aJ,aQ,ak,P]);let[aR,aS]=(0,c.useState)("Initializing..."),[aT,aU]=(0,c.useState)("idle"),[aV,aW]=(0,c.useState)(null),[aX,aY]=(0,c.useState)(!1),[aZ,a$]=(0,c.useState)(!1),[a_,a0]=(0,c.useState)(!1),[a1,a2]=(0,c.useState)(!1),[a3,a4]=(0,c.useState)(!1),[a5,a6]=(0,c.useState)(d||a),[a7,a8]=(0,c.useState)(!1),[a9,ba]=(0,c.useState)(s?.trim()||""),[bb,bc]=(0,c.useState)([]),[bd,be]=(0,c.useState)(!1),bf=(0,c.useRef)(!1),[bg,bh]=(0,c.useState)(!1),[bi,bj]=(0,c.useState)({ahead:0,behind:0}),[bk,bl]=(0,c.useState)(!0),[bm,bn]=(0,c.useState)(""),[bo,bp]=(0,c.useState)(""),[bq,br]=(0,c.useState)(!1),[bs,bt]=(0,c.useState)(!1),[bu,bv]=(0,c.useState)(!1),[bw,bx]=(0,c.useState)(.5),[by,bz]=(0,c.useState)(!1),[bA,bB]=(0,c.useState)(!0),[bC,bD]=(0,c.useState)(!1),[bE,bF]=(0,c.useState)(!1);(0,c.useEffect)(()=>{bF(document.documentElement.classList.contains("dark"));let a=new MutationObserver(a=>{a.forEach(a=>{"class"===a.attributeName&&bF(document.documentElement.classList.contains("dark"))})});return a.observe(document.documentElement,{attributes:!0}),()=>a.disconnect()},[]),(0,c.useEffect)(()=>{let a=a=>{if(a)try{let b=a.contentWindow;b&&b.term&&(b.term.options.theme={...b.term.options.theme||{},...bE?_:$})}catch(a){}};a(aq.current),a(ar.current)},[bE]);let[bG,bH]=(0,c.useState)({width:460,height:320}),[bI,bJ]=(0,c.useState)(!1),[bK,bL]=(0,c.useState)(!1),bM=(0,c.useRef)({startX:0,startY:0,startWidth:0,startHeight:0}),[bN,bO]=(0,c.useState)("scroll"),[bP,bQ]=(0,c.useState)(!1),bR=(0,c.useRef)(0);(0,c.useEffect)(()=>{a6(d||a)},[a,d]),(0,c.useEffect)(()=>{let a=localStorage.getItem(X);if(a)try{bH(JSON.parse(a))}catch(a){console.error("Failed to parse saved terminal size",a)}let b=localStorage.getItem(Y);if(b){let a=Number.parseFloat(b);Number.isNaN(a)||bx(aa(a))}bB(!0),bL(!0)},[]),(0,c.useEffect)(()=>{if(!bI)return;let a=a=>{let b=bM.current.startX-a.clientX,c=bM.current.startY-a.clientY;bH({width:Math.max(300,Math.min(window.innerWidth-32,bM.current.startWidth+b)),height:Math.max(100,Math.min(window.innerHeight-32,bM.current.startHeight+c))})},b=()=>{bJ(!1)};return window.addEventListener("mousemove",a),window.addEventListener("mouseup",b),()=>{window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",b)}},[bI]),(0,c.useEffect)(()=>{bK&&!bI&&localStorage.setItem(X,JSON.stringify(bG))},[bK,bI,bG]),(0,c.useEffect)(()=>{bK&&!by&&localStorage.setItem(Y,String(bw))},[bw,bK,by]),(0,c.useEffect)(()=>{bK&&localStorage.setItem("viba-right-panel-collapsed",bA?"1":"0")},[bK,bA]),(0,c.useEffect)(()=>{bA&&bz(!1)},[bA]);let bS=(0,c.useCallback)(()=>{bB(a=>!a)},[]),bT=(0,c.useCallback)(()=>{bA&&bB(!1),bv(a=>!a)},[bA]);(0,c.useEffect)(()=>{if(!by)return;let a=a=>{let b=au.current;if(!b)return;let c=b.getBoundingClientRect();if(c.width<=0)return;let d=a.clientX-av.current.startX;bx(aa((av.current.startRatio*c.width+d)/c.width))},b=()=>{bz(!1)};return window.addEventListener("mousemove",a),window.addEventListener("mouseup",b),()=>{window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",b)}},[by]),(0,c.useEffect)(()=>{if(!bC&&ar.current){let a=ar.current;setTimeout(()=>{try{let b=a.contentWindow;if(b&&b.term){b.term.scrollToBottom?.(),b.focus();let c=a.contentDocument?.querySelector("textarea.xterm-helper-textarea");c&&c.focus()}}catch(a){console.error("Failed to focus/scroll terminal on restore:",a)}},100)}},[bC]);let[bU,bV]=(0,c.useState)("vscode");(0,c.useEffect)(()=>{let a=ah?.trim();if(a)return document.title=`${a} | Viba`,()=>{document.title="Viba"};document.title="Viba"},[ah]),(0,c.useEffect)(()=>{(async()=>{let a=await (0,o.getConfig)();a.selectedIde&&W.some(b=>b.id===a.selectedIde)&&bV(a.selectedIde)})()},[]),(0,c.useEffect)(()=>{ba(s?.trim()||""),bc([])},[s,N]),(0,c.useEffect)(()=>{bO("scroll"),bQ(!1),bR.current+=1},[N]);let bW=async a=>{let b=a.target.value;bV(b),await (0,p.updateConfig)({selectedIde:b})},bX=(0,c.useCallback)(async(a,b)=>{if("tmux"!==al)return!0;let c=++bR.current;b?.silent||bQ(!0);let d="scroll"===a,[e,f]=await Promise.all([m(N,"agent",d),m(N,"terminal",d)]);return c===bR.current&&((b?.silent||bQ(!1),[e,f].find(a=>!a.success))?(b?.silent||aS(`Failed to switch to ${"scroll"===a?"scroll mode":"text select mode"}`),!1):(b?.silent||aS("scroll"===a?"Terminal mode: Scroll":"Terminal mode: Text Select"),!0))},[N,al]),bY=(0,c.useCallback)(a=>{"tmux"!==al||aD.current[a]||(async()=>{let b=await n(N,a,!1);b.success&&b.applied?aD.current[a]=!0:b.success||console.error(`Failed to hide tmux status bar for ${a}:`,b.error)})()},[N,al]);(0,c.useEffect)(()=>{"tmux"===al&&bX("scroll",{silent:!0})},[bX,al]);let bZ=(0,c.useCallback)(()=>{if("tmux"!==al||bP)return;let a="scroll"===bN?"select":"scroll";bO(a),(async()=>{await bX(a)||bO(bN)})()},[bX,bP,bN,al]),b$=async(b=!0)=>{if(!a||!d||!e||b&&!confirm("Are you sure you want to delete this session? This will remove the branch and worktree."))return!1;aW(null),aU("idle"),aS("Purging session...");try{let a=await f(N);if(!a.success)return console.error("Cleanup failed:",a.error||"Unknown error"),aU("error"),aW(a.error||"Failed to delete session"),!1;(0,S.notifySessionsUpdated)()}catch(a){return console.error("Cleanup request failed:",a),aU("error"),aW(a instanceof Error?a.message:"Unknown error"),!1}return aj(!0),!0},b_=async()=>{await b$(!0)},b0=(0,c.useCallback)(a=>new Promise(b=>{let c=aq.current;if(!c)return void b(!1);let d=(e=0)=>{if(e>30)return void b(!1);try{let f=c.contentWindow;if(!f||!f.term)return void setTimeout(()=>d(e+1),300);f.term.paste(a);let g=c.contentDocument?.querySelector("textarea.xterm-helper-textarea");g&&g.focus(),f.focus(),b(!0)}catch(a){console.error("Failed to paste into agent iframe:",a),setTimeout(()=>d(e+1),300)}};d()}),[]),b1=(0,c.useCallback)(async a=>{if(0===a.length)return;a8(!0);let b=`${a.join(" ")} `;aS(await b0(b)?`Inserted ${a.length} file path${1===a.length?"":"s"} into agent input`:"Failed to insert file paths into agent input"),a8(!1)},[b0]),b2=(0,c.useCallback)(async b=>{let c=b.map(ad).filter(Boolean);if(0===c.length)return null;let e=Array.from(new Set([a,d].map(a=>(a||"").trim()).filter(Boolean)));if(0===e.length)return null;for(let a of e)try{let b=await fetch("/api/component-source/resolve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({componentNames:c,workspaceRoot:a})}),d=await b.json().catch(()=>null);if(!b.ok){console.warn("Component source resolve miss",{componentNames:c,workspaceRoot:a,error:d?.error||b.statusText});continue}let e="string"==typeof d?.sourcePath?d.sourcePath.trim():"",f="string"==typeof d?.resolvedName?d.resolvedName.trim():"";if(e&&f)return{sourcePath:e,resolvedName:f}}catch(a){console.error("Failed to resolve component source path:",a)}return null},[a,d]),b3=(0,c.useCallback)(async()=>{if(N&&!bf.current){bf.current=!0,be(!0);try{let a=await h(N);a.success?(bc(a.branches??[]),ba(a.baseBranch?.trim()||"")):a.error&&aS(`Failed to load branches: ${a.error}`)}catch(a){console.error("Failed to load base branches:",a)}finally{bf.current=!1,be(!1)}}},[N]);(0,c.useEffect)(()=>{N&&b3()},[b3,N]);let b4=(0,c.useCallback)(async()=>{if(N)try{let a=await g(N);a.success&&"number"==typeof a.ahead&&"number"==typeof a.behind&&bj({ahead:a.ahead,behind:a.behind})}catch(a){console.error("Failed to load branch divergence:",a)}},[N]);(0,c.useEffect)(()=>{if(!N||!a9)return void bj({ahead:0,behind:0});b4();let a=window.setInterval(()=>{b4()},6e4);return()=>window.clearInterval(a)},[a9,b4,N]);let b5=async()=>{if(!N||!a9)return!1;a0(!0),aS("Merging session branch...");try{let a=await i(N);if(a.success)return aS(`Merged ${a.branchName} into ${a.baseBranch}`),b4(),!0;return aS(`Merge failed: ${a.error}`),!1}catch(a){return console.error("Merge request failed:",a),aS("Merge failed"),!1}finally{a0(!1)}},b6=async()=>{await b5()},[b7,b8]=(0,c.useState)(!1),b9=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{b9.current&&!b9.current.contains(a.target)&&b8(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[]);let ca=async a=>{if(b8(!1),!N)return;let b=a!==a9;a2(!0),aS(b?`Updating base to ${a} and rebasing...`:"Rebasing session branch...");try{if(b){let b=await k(N,a);if(!b.success){aS(`Failed to update base branch: ${b.error}`),a2(!1);return}ba(b.baseBranch),await b3()}let c=await j(N);c.success?(aS(`Rebased ${c.branchName} onto ${c.baseBranch}`),b4()):aS(`Rebase failed: ${c.error}`)}catch(a){console.error("Rebase request failed:",a),aS("Rebase failed")}finally{a2(!1)}},cb=(0,c.useCallback)(async(a,b)=>{let c=U(a);if(!c)return aS("Please enter a preview URL"),!1;bn(c),br(!1),aS(`Loading preview: ${c}`);try{let a=await fetch("/api/preview-proxy/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({target:c})}),d=await a.json().catch(()=>null);if(!a.ok||!d?.proxyUrl)throw Error(d?.error||"Failed to start preview proxy");return bp(d.proxyUrl),b&&bl(!0),aS(`Loaded preview: ${c}`),!0}catch(b){let a=b instanceof Error?b.message:"Failed to load preview";return console.error("Failed to load preview via proxy:",b),aS(`Failed to load preview: ${a}`),!1}},[]),cc=(0,c.useCallback)(()=>{if(!bo)return void aS("Load a preview before picking elements");let a=as.current?.contentWindow;if(!a)return void aS("Preview is not ready yet");let b=!bq;a.postMessage({type:"viba:preview-picker-toggle",active:b},"*"),br(b),aS(b?"Picker enabled: click an element in the preview":"Picker disabled")},[bq,bo]),cd=(0,c.useCallback)(a=>{let b=as.current?.contentWindow;return b?(b.postMessage(a,"*"),!0):(aS("Preview is not ready yet"),!1)},[]),ce=(0,c.useCallback)(a=>{bo?cd({type:"viba:preview-navigation",action:a})&&"reload"===a&&aS("Reloading preview..."):aS("Load a preview before using navigation controls")},[cd,bo]),cf=(0,c.useCallback)(()=>{bo?(bp(""),br(!1),aS("Preview unloaded")):aS("Preview is already unloaded")},[bo]),cg=(0,c.useCallback)(()=>{cd({type:"viba:preview-location-request"})},[cd]),{attachTerminalLinkHandler:ch}=function({onLoadPreview:a}){let b=(0,c.useCallback)((b,c)=>{let d=U(b);return!!d&&("new_tab"===c?window.open(d,"_blank","noopener,noreferrer"):a(d,!0),!0)},[a]),d=(0,c.useCallback)((a,c,d)=>{c.current?.();let e=a.contentWindow,f=e?.term;if(!e||!f)return;let g=d?.onLinkActivated,h=d?.directOpenBehavior??"preview",i=d?.modifierOpenBehavior??"new_tab",j=a=>a?i:h,k=[],l=a.contentDocument,m={metaKey:!1,ctrlKey:!1,at:0};if(l){let a=a=>{m={metaKey:a.metaKey,ctrlKey:a.ctrlKey,at:Date.now()}};l.addEventListener("mousedown",a,!0),l.addEventListener("click",a,!0),k.push(()=>{l.removeEventListener("mousedown",a,!0),l.removeEventListener("click",a,!0)})}let n=e.open.bind(e);e.open=(...a)=>{let c=j(Date.now()-m.at<1e3&&(m.metaKey||m.ctrlKey));if("string"==typeof a[0]&&a[0].trim())return(g?.(),b(a[0],c))?null:n(...a);if(0===a.length){let a=null;return{opener:null,location:{set href(url){if(g?.(),!b(url,c)&&(a=n())){try{a.opener=null}catch{}a.location.href=url}},get href(){return""}}}}return n(...a)},k.push(()=>{e.open=n});let o=f._core?._linkProviderService?.linkProviders;if(o instanceof Map){for(let a of o.values())if(a&&"object"==typeof a){if("function"==typeof a._handler){let c=a._handler;a._handler=(a,d)=>{g?.(),b(d,j(!!(a?.metaKey||a?.ctrlKey)))||c(a,d)},k.push(()=>{a._handler=c})}if("function"==typeof a.provideLinks){let c=a.provideLinks.bind(a);a.provideLinks=(a,d)=>{c(a,a=>{if(Array.isArray(a))for(let c of a){if(!c||"object"!=typeof c||"function"!=typeof c.activate)continue;let a=c.activate.bind(c);c.activate=(c,d)=>{g?.(),b(d,j(!!(c?.metaKey||c?.ctrlKey)))||a(c,d)}}d(a)})},k.push(()=>{a.provideLinks=c})}}}let p=f.options.linkHandler,q={allowNonHttpProtocols:p?.allowNonHttpProtocols??!1,activate:(a,c,d)=>{g?.(),b(c,j(!!(a?.metaKey||a?.ctrlKey)))||p?.activate?.(a,c,d)},hover:(a,b,c)=>{p?.hover?.(a,b,c)},leave:(a,b,c)=>{p?.leave?.(a,b,c)}};f.options.linkHandler=q,k.push(()=>{f.options.linkHandler=p??null}),c.current=()=>{for(let a of k)a();c.current=null}},[b]);return{handleTerminalLinkOpen:b,attachTerminalLinkHandler:d}}({onLoadPreview:cb});(0,c.useEffect)(()=>{if(!bk||bm.trim())return;let a=window.setTimeout(()=>{at.current?.focus()},0);return()=>{window.clearTimeout(a)}},[bk,bm]),(0,c.useEffect)(()=>{let b=b=>{if(!as.current||b.source!==as.current.contentWindow)return;let c=b.data;if(c&&"object"==typeof c){if("viba:preview-picker-state"===c.type)return void br(!!c.active);if("viba:preview-picker-ready"===c.type){let a=as.current?.contentWindow;a&&a.postMessage({type:"viba:preview-location-request"},"*");return}if("viba:preview-link-open"===c.type){"string"==typeof c.url&&c.url.trim().length>0&&window.open(c.url,"_blank","noopener,noreferrer");return}if("viba:preview-location-change"===c.type){"string"==typeof c.url&&c.url.trim().length>0&&bn(c.url);return}if("viba:preview-element-selected"===c.type){let b=c.element&&"object"==typeof c.element?c.element:null,e=Array.isArray(b?.reactComponentStack)?b.reactComponentStack:[],f=((a,b)=>{for(let c of a){if(!c||"object"!=typeof c)continue;let a="string"==typeof c.name?c.name.trim():"";if(!a)continue;let d="string"==typeof c.source?.fileName?c.source.fileName.trim():"",e=d?ac(d,b):null;if(e)return`${a} (${e})`}return null})(e,d||a),g=e[0]&&"object"==typeof e[0]?e[0].name:void 0,h="string"==typeof g&&g.trim().length>0?g.trim():"",i=new Set(["Suspense","ErrorBoundary","Router","AppRouter","LayoutRouter","RenderFromTemplateContext","ScrollAndFocusHandler","InnerLayoutRouter","RedirectErrorBoundary","NotFoundBoundary","LoadingBoundary","ReactDevOverlay","HotReload","AppContainer","Route","Link","Image","OuterLayoutRouter","Head","StringRefs","Fragment","Profiler","StrictMode","SuspenseList","Script","Page","__next_root_layout_boundary__"]),j=Array.from(new Set(e.map(a=>{if(!a||"object"!=typeof a)return"";let b=a.name;return"string"==typeof b?b.trim():""}).filter(a=>!(!a||i.has(a)||a.startsWith("styled.")||a.startsWith("Styled(")))));console.log("Filtered stack component names:",j);let k=f||h||("string"==typeof b?.selector?b.selector:"");if(console.log("Preview selected element:",b),console.log("Preview selected reactComponentStack:",e),console.log("Preview selected identifier:",k),br(!1),!k)return void aS("Element selected. No identifier was resolved.");(async()=>{let a=f||"";if(!a&&j.length>0){bt(!0);try{let b=await b2(j);b?.resolvedName&&b?.sourcePath&&(a=`${b.resolvedName} (${b.sourcePath})`)}finally{bt(!1)}}if(!a){if(j.length>0)return aS("Element selected, but source file path could not be resolved for the component");a=k}console.log("Final resolved component identifier:",a),aS(await b0(`${a} `)?`Element identifier sent to agent: ${a}`:"Element selected, but failed to send identifier to agent input")})()}}};return window.addEventListener("message",b),()=>{window.removeEventListener("message",b)}},[b0,a,b2,d]),(0,c.useEffect)(()=>{br(!1)},[bo]);let ci=(0,c.useCallback)(()=>{let a=U(bm.trim()||bo);a?(window.open(a,"_blank","noopener,noreferrer"),aS(`Opened preview in new tab: ${a}`)):aS("Please enter a preview URL")},[bm,bo]);if(!a)return(0,b.jsx)("div",{className:"p-4 text-error dark:bg-[#0d1117] dark:text-red-300",children:"No repository specified"});if("error"===aT)return(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-[#f6f6f8] dark:bg-[#0d1117]",children:(0,b.jsx)("div",{className:"card w-96 border border-slate-200 bg-white shadow-xl dark:border-[#30363d] dark:bg-[#161b22]",children:(0,b.jsxs)("div",{className:"card-body items-center text-center",children:[(0,b.jsx)("h2",{className:"card-title text-error dark:text-red-300",children:"Cleanup failed"}),(0,b.jsx)("p",{className:"text-slate-700 dark:text-slate-300",children:aV||"An unknown error occurred while cleaning up this session."}),(0,b.jsx)("div",{className:"card-actions justify-end",children:(0,b.jsx)("button",{className:"btn btn-primary",onClick:()=>aj(),children:"Back to Home"})})]})})});let cj=Array.from(new Set([...a9?[a9]:[],...bb])).filter(a=>a!==e||a===a9),ck=!!ab?.trim();return(0,b.jsxs)("div",{className:`flex h-screen w-full flex-col overflow-hidden bg-[#f6f6f8] dark:bg-[#0d1117] ${bI||by?"select-none":""}`,children:[(bI||by)&&(0,b.jsx)("div",{className:`fixed inset-0 z-[9999] ${bI?"cursor-row-resize":"cursor-col-resize"}`}),(0,b.jsxs)("div",{className:"z-20 flex items-center justify-between border-b border-slate-200 bg-white px-4 py-2 text-xs font-mono shadow-sm dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-300",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 px-1 text-slate-600 hover:bg-base-content/10 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>aj(),title:"Back to Home",children:(0,b.jsx)(A,{className:"w-4 h-4"})}),(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"opacity-50",children:"Repo:"}),(0,b.jsx)("span",{className:"font-bold",children:(0,R.getBaseName)(a)})]}),N&&(0,b.jsxs)("div",{className:"hidden min-[1200px]:flex min-w-0 items-center gap-2 text-[10px] opacity-70",children:[(0,b.jsx)("span",{children:"Session:"}),(0,b.jsx)("span",{className:"truncate max-w-[220px]",title:N,children:N})]})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("div",{className:"flex items-center overflow-hidden rounded border border-base-content/20 bg-base-100 dark:border-[#30363d] dark:bg-[#0d1117]",children:(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 rounded-none border-none px-2 text-slate-700 hover:bg-base-content/10 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>{if(!a||!N)return;let b=`/new?repo=${encodeURIComponent(a)}&prefillFromSession=${encodeURIComponent(N)}`;window.open(b,"_blank","noopener,noreferrer")},title:"Start a new attempt in a new tab with this session context",children:[(0,b.jsx)(E.Plus,{className:"w-3 h-3"}),(0,b.jsx)("span",{className:ap,children:"New Attempt"})]})}),(0,b.jsxs)("div",{className:"relative flex items-center rounded border border-base-content/20 bg-base-100 dark:border-[#30363d] dark:bg-[#0d1117]",ref:b9,children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 rounded-none rounded-l border-none px-2 text-slate-700 hover:bg-base-content/10 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>{b8(!b7)},disabled:a1||a_||bg,title:"Select base branch and rebase",children:[a1?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(u,{className:"w-3 h-3"}),(0,b.jsx)("span",{className:ap,children:"Rebase"}),(0,b.jsx)(D.ChevronDown,{className:"w-3 h-3 opacity-50 ml-0.5"})]}),b7&&(0,b.jsxs)("div",{className:"dropdown-content absolute left-0 top-full z-50 mt-1 flex max-h-80 w-64 flex-col overflow-hidden rounded-box border border-base-content/20 bg-base-200 p-0 shadow-xl dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-300",children:[(0,b.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-base-content/10 bg-base-200 px-4 py-2 text-[10px] font-bold uppercase tracking-wider opacity-50 dark:border-[#30363d] dark:bg-[#161b22]",children:[(0,b.jsx)("span",{children:"Select Base Branch"}),(bd||bg)&&(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"})]}),(0,b.jsxs)("ul",{className:"menu custom-scrollbar w-full flex-nowrap overflow-y-auto overflow-x-hidden p-0",children:[cj.length>0?cj.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{onClick:()=>ca(a),className:`flex max-w-full items-center justify-between truncate rounded-none py-2 text-xs hover:bg-base-content/10 dark:hover:bg-[#30363d]/60 ${a===a9?"active font-bold":""}`,title:a,children:[(0,b.jsx)("span",{className:"truncate",children:a}),a===a9&&(0,b.jsx)("span",{className:"opacity-70 text-[10px] ml-2 shrink-0",children:"(Current)"})]})},a)):(0,b.jsx)("li",{className:"text-xs px-4 py-2 opacity-50 italic text-center",children:"No other branches found"}),(0,b.jsx)("div",{className:"divider my-1 opacity-50 dark:before:bg-[#30363d] dark:after:bg-[#30363d]"}),(0,b.jsx)("li",{children:(0,b.jsx)("button",{onClick:()=>void b3(),className:"text-[10px] justify-center opacity-70 hover:opacity-100",children:"Refresh Branches"})})]})]})]}),(0,b.jsx)("div",{className:"h-4 w-[1px] bg-base-content/10 dark:bg-[#30363d]"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs btn-success h-6 min-h-6 rounded-none border-none px-2 hover:border-transparent hover:bg-success/20 dark:text-emerald-300",onClick:b6,disabled:a_||a1||bg||!a9,title:a9?`Merge current branch (${e}) into target branch (${a9})`:"Target branch unavailable for this session",children:[a_?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(v,{className:"w-3 h-3"}),(0,b.jsx)("span",{className:ap,children:"Merge"})]}),(0,b.jsx)("div",{className:"h-4 w-[1px] bg-base-content/10 dark:bg-[#30363d]"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-error btn-xs h-6 min-h-6 rounded-none rounded-r border-none px-2 hover:border-transparent hover:bg-error/20 dark:text-red-300",onClick:b_,disabled:a_||a1||!d,title:"Clean up and exit",children:[(0,b.jsx)(q.Trash2,{className:"w-3 h-3"}),(0,b.jsx)("span",{className:ap,children:"Delete"})]})]}),(0,b.jsx)("div",{className:"flex items-center overflow-hidden rounded border border-base-content/20 bg-base-100 dark:border-[#30363d] dark:bg-[#0d1117]",children:(0,b.jsxs)("button",{type:"button",className:`btn btn-ghost btn-xs h-6 min-h-6 rounded-none border-none px-2 hover:bg-base-content/10 dark:hover:bg-[#30363d]/60 ${bu?"bg-slate-100 text-slate-900 dark:bg-[#30363d] dark:text-slate-100":"text-slate-700 dark:text-slate-300"}`,onClick:bT,"aria-pressed":bu,title:bu?"Show preview and terminal panel":"Show repository viewer",children:[(0,b.jsx)(w.GitBranch,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:ap,children:"Repo"})]})}),a9&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs opacity-80",title:`Divergence against ${a9}`,children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(x,{className:"w-3 h-3"}),bi.ahead]}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(y,{className:"w-3 h-3"}),bi.behind]})]}),(0,b.jsx)("div",{className:"mx-2 hidden h-4 w-[1px] bg-base-content/20 dark:bg-[#30363d] min-[1200px]:block"}),(0,b.jsxs)("div",{className:"hidden min-[1200px]:flex min-w-0 max-w-[280px] items-center gap-2",children:[(0,b.jsx)("span",{className:`w-2 h-2 rounded-full ${aR.includes("Error")||aR.includes("failed")?"bg-error":aR.includes("started")||aR.includes("Merged")||aR.includes("Rebased")||aR.includes("sent")?"bg-success":"bg-warning"}`}),(0,b.jsx)("span",{className:"truncate",title:aR,children:aR})]})]})]}),(0,b.jsxs)("div",{ref:au,className:`relative flex min-h-0 flex-1 overflow-x-hidden bg-[#f6f6f8] p-3 dark:bg-[#0d1117] ${bA?"gap-0":"gap-3"}`,children:[(0,b.jsxs)("div",{className:"agent-activity-panel flex h-full min-w-0 flex-col overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm transition-[width] duration-300 ease-in-out dark:border-[#30363d] dark:bg-[#161b22]",style:{width:bA?"100%":`${100*bw}%`},children:[(0,b.jsxs)("div",{className:"flex h-9 items-center justify-between gap-3 border-b border-slate-200 px-3 text-[11px] font-semibold text-slate-600 dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-400",children:[(0,b.jsxs)("span",{className:"flex shrink-0 items-center gap-2 uppercase tracking-wide",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-blue-500"}),"Agent Activity"]}),(0,b.jsxs)("div",{className:"flex min-w-0 items-center justify-end gap-2 overflow-x-auto py-1 text-xs font-medium normal-case",children:[(0,b.jsxs)("div",{className:"flex shrink-0 items-center overflow-hidden rounded border border-slate-200 bg-white dark:border-[#30363d] dark:bg-[#0d1117]",children:[(0,b.jsx)("select",{className:"select select-xs h-6 min-h-6 rounded-none border-none bg-slate-100 pr-7 text-slate-700 focus:outline-none dark:bg-[#161b22] dark:text-slate-300",value:bU,onChange:bW,children:W.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))}),(0,b.jsx)("div",{className:"h-4 w-[1px] bg-slate-200 dark:bg-[#30363d]"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 rounded-none border-none px-2 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>{if(!d)return;let a=W.find(a=>a.id===bU);if(!a)return;let b=`${a.protocol}://file/${encodeURI(d)}`;window.open(b,"_blank")},title:`Open in ${W.find(a=>a.id===bU)?.name}`,"aria-label":"Open in IDE",children:[(0,b.jsx)(r.ExternalLink,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"agent-activity-action-label",children:"Open in IDE"})]})]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center overflow-hidden rounded border border-slate-200 bg-white dark:border-[#30363d] dark:bg-[#0d1117]",children:(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 rounded-none border-none px-2 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>a4(!0),disabled:a7,title:"Browse files and insert absolute paths into the agent input","aria-label":"Add files",children:[a7?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(z,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"agent-activity-action-label",children:"Add Files"})]})}),(0,b.jsx)("div",{className:"flex shrink-0 items-center overflow-hidden rounded border border-slate-200 bg-white dark:border-[#30363d] dark:bg-[#0d1117]",children:(0,b.jsx)("button",{className:`btn btn-ghost btn-xs h-6 min-h-6 w-7 rounded-none border-none p-0 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60 ${"select"===bN?"text-warning":""}`,onClick:bZ,disabled:"tmux"!==al||bP,title:"tmux"===al?"scroll"===bN?"Switch to text select mode for easier copy":"Switch to scroll mode for wheel scrollback":"Mode toggle is available only in tmux persistence mode","aria-label":"scroll"===bN?"Switch to text mode":"Switch to scroll mode",children:bP?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):"scroll"===bN?(0,b.jsx)(J,{className:"h-3.5 w-3.5"}):(0,b.jsx)(K,{className:"h-3.5 w-3.5"})})})]})]}),(0,b.jsx)("iframe",{ref:aq,src:aA,className:`h-full w-full border-none ${bI||by?"pointer-events-none":""}`,allow:"clipboard-read; clipboard-write",onLoad:()=>{if(!aq.current)return;let b=aq.current;try{b.contentWindow}catch(a){aS("Error: Cross-Origin access blocked. Ensure proxy is working.");return}b.contentWindow&&(b.contentWindow.onbeforeunload=null,b.contentWindow.addEventListener("beforeunload",a=>{a.stopImmediatePropagation()},!0)),aS("Connecting to terminal...");let c=(e=0)=>{if(e>30)return void aS("Timeout waiting for terminal to be ready");try{let f=b.contentWindow;if(f&&f.term){bY("agent");let g=f.term;if(ch(b,aw,{directOpenBehavior:"new_tab",modifierOpenBehavior:"new_tab"}),!g.__vibaClearLineShortcutInstalled&&"function"==typeof g.attachCustomKeyEventHandler){let a=g.customKeyEventHandler;g.attachCustomKeyEventHandler(c=>{if("keydown"===c.type&&c.metaKey&&("Backspace"===c.key||"Delete"===c.key)){let a=g._core?.coreService;if(a&&"function"==typeof a.triggerDataEvent)a.triggerDataEvent("\x15",!0);else{let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a?a.dispatchEvent(new KeyboardEvent("keydown",{bubbles:!0,cancelable:!0,key:"u",keyCode:85,ctrlKey:!0,view:f})):g.paste("\x15")}return!1}if("function"==typeof a)try{return!1!==a.call(g,c)}catch(a){console.error("Existing terminal key handler failed:",a)}return!0}),g.__vibaClearLineShortcutInstalled=!0}try{g.options.theme={...g.options.theme||{},...bE?_:$}}catch{}let h=aJ("agent"),i=!!ak&&"tmux"===al;if(h||i){i&&!h?(aM("agent"),aS("Attached to persisted terminal")):aS("Reconnected to terminal"),f.focus();let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a&&a.focus();return}if(!aN(g)&&e<10)return void setTimeout(()=>c(e+1),200);if(!aK("agent")){aS("Reconnected to terminal"),f.focus();let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a&&a.focus();return}let j=d||a,k=`cd ${V(j)}`;g.paste(k);let m=()=>{let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a?a.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:f})):g.paste("\r")};if(m(),aM("agent"),O){let b=async()=>{let b="",c=a=>`if [ -n "$OPENAI_API_KEY" ]; then printenv OPENAI_API_KEY | codex login --with-api-key || exit 1; fi; ${a}`;if(ak)b=c("codex resume --last --sandbox danger-full-access --ask-for-approval on-request --search");else{let e=ae?.trim()||"",f=(af&&af.length>0?af:(ag||[]).map(b=>`${d||a}-attachments/${b}`)).map(a=>a.trim()).filter(Boolean),g=Array.from(new Set(f)),h=[];e&&h.push(e),g.length>0&&h.push(["Attachments:",...g.map(a=>`- ${a}`)].join("\n"));let i=h.join("\n\n"),j="";if(i){let a=[];"plan"===ai&&a.push("Plan mode: inspect the relevant code first, present a concrete implementation plan, and wait for explicit user approval before any file edits or write commands."),a.push("After each round, if work is complete and files changed, commit all changes without confirmation. Use a commit message with a clear title and a detailed body explaining what changed and why. If GITHUB_TOKEN or GITLAB_TOKEN is set, push the current branch after committed rounds and create (or update) a pull/merge request with an appropriate title and description; include the pull/merge request link in the first push reply."),a.push("For visual web tasks, use the `agent-browser` skill (https://skills.sh/vercel-labs/agent-browser/agent-browser)."),a.push("For bugfix/debugging tasks, use the `systematic-debugging` skill (https://github.com/obra/superpowers)."),a.push("When working on a visual-related feature or bugfix in a web project, after coding is complete, use `agent-browser` or equivalent Chrome MCP tooling to load the relevant page, take screenshot(s), and include them as evidence in the pull/merge request."),a.push("When your task is completed or you need user attention (for plan approval, permissions, or blockers), send a notification to the matching Viba session.");let b=`${window.location.origin}/api/notifications`;a.push(`Notification API endpoint: ${b} (POST JSON with sessionId, title, and description).`),a.push(`Notification payload template: {"sessionId":"${N}","title":"<short title>","description":"<clear detail about completion or required attention>"}.`);let c=["# Instructions\n",a.map(a=>`- ${a}`).join("\n"),"\n# Task\n",i].join("\n");try{let a=await l(N,c);a.success&&a.filePath?j=` "$(cat ${V(a.filePath)})"`:(console.error("Failed to write prompt file, falling back to inline prompt",a.error),j=` ${V(c)}`)}catch(a){console.error("Exception writing prompt file",a),j=` ${V(c)}`}}let k=`codex --sandbox danger-full-access --ask-for-approval on-request --search${j}`;b=c(k)}b&&(g.paste(b),m(),aS(ak?"Resumed session with codex":"Session started with codex"),!ak&&am&&am())};setTimeout(()=>b(),500)}else aS(`Session started ${d?"(Worktree)":""}`),!ak&&am&&am();f.focus();let n=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");n&&n.focus()}else setTimeout(()=>c(e+1),500)}catch(a){aL("agent"),console.error("Access error during injection:",a),aS("Error accessing terminal: "+String(a))}};setTimeout(()=>c(),1e3)}})]}),(0,b.jsx)("div",{className:`relative h-full shrink-0 rounded transition-all duration-300 ease-in-out ${bA?"w-0 cursor-default opacity-0 pointer-events-none":"w-2 cursor-col-resize bg-slate-200 opacity-100 hover:bg-primary/40 dark:bg-[#30363d] dark:hover:bg-primary/60"}`,onMouseDown:a=>{bA||(a.preventDefault(),bz(!0),av.current={startX:a.clientX,startRatio:bw})},role:bA?void 0:"separator","aria-orientation":bA?void 0:"vertical","aria-label":bA?void 0:"Resize preview panel","aria-hidden":bA,title:bA?void 0:"Drag to resize preview panel",children:!bA&&(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 h-12 w-[2px] -translate-x-1/2 -translate-y-1/2 rounded-full bg-slate-400 dark:bg-slate-500"})}),(0,b.jsxs)("div",{className:`relative h-full transition-[width,min-width,flex-basis] duration-300 ease-in-out ${bA?"w-0 min-w-0 flex-none":"min-w-[360px] flex-1"}`,children:[(0,b.jsx)("button",{className:"btn btn-ghost btn-xs absolute left-0 top-3 z-20 h-7 w-7 min-h-7 -translate-x-1/2 rounded-full border border-slate-200 bg-white/95 p-0 text-slate-600 shadow-sm hover:bg-slate-100 dark:border-[#30363d] dark:bg-[#161b22]/95 dark:text-slate-300 dark:hover:bg-[#30363d]/80",onClick:bS,type:"button",title:bA?"Expand right panel":"Collapse right panel","aria-label":bA?"Expand right panel":"Collapse right panel","aria-pressed":bA,children:bA?(0,b.jsx)(A,{className:"h-4 w-4"}):(0,b.jsx)(B.ChevronRight,{className:"h-4 w-4"})}),!bA&&(0,b.jsx)("div",{className:"absolute inset-y-0 left-0 flex h-full w-full flex-col overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm dark:border-[#30363d] dark:bg-[#161b22]",children:bu?(0,b.jsx)(Q,{repoPath:d||a,branchHint:e,baseBranchHint:a9||s}):(0,b.jsx)(b.Fragment,{children:(0,b.jsxs)("div",{className:"min-h-0 flex flex-1 flex-col",children:[(0,b.jsxs)("form",{className:"flex h-9 items-center gap-2 border-b border-slate-200 bg-white px-3 dark:border-[#30363d] dark:bg-[#161b22]",onSubmit:a=>{a.preventDefault(),cb(bm,!0)},children:[(0,b.jsxs)("div",{className:"mr-1 flex gap-1.5",children:[(0,b.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-red-400"}),(0,b.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-yellow-400"}),(0,b.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-green-400"})]}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:()=>ce("back"),disabled:!bo,title:"Go back","aria-label":"Go back",children:(0,b.jsx)(G.ArrowLeft,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:()=>ce("forward"),disabled:!bo,title:"Go forward","aria-label":"Go forward",children:(0,b.jsx)(H,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:()=>ce("reload"),disabled:!bo,title:"Reload preview","aria-label":"Reload preview",children:(0,b.jsx)(I,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:cf,disabled:!bo,title:"Unload preview","aria-label":"Unload preview",children:(0,b.jsx)(L.X,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("input",{ref:at,type:"text",className:"input input-xs h-7 min-h-7 w-full border-slate-200 bg-slate-100 font-mono text-slate-700 dark:border-[#30363d] dark:bg-[#0d1117] dark:text-slate-300 dark:placeholder:text-slate-500",value:bm,onChange:a=>bn(a.target.value),placeholder:"http://127.0.0.1:3000",spellCheck:!1}),(0,b.jsx)("button",{className:`btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 ${bq?"text-success":"text-slate-500 dark:text-slate-400"} hover:bg-slate-100 dark:hover:bg-[#30363d]/60`,type:"button",onClick:cc,disabled:!bo||bs,title:bq?"Disable picker":"Pick element from preview",children:bs?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs w-3 h-3"}):(0,b.jsx)(F,{className:"h-3 w-3"})}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:ci,title:"Open preview in new tab","aria-label":"Open preview in new tab",children:(0,b.jsx)(r.ExternalLink,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 bg-slate-50 dark:bg-[#0d1117]",children:bk?bo?(0,b.jsx)("iframe",{ref:as,src:bo,className:`h-full w-full border-none ${bI||by?"pointer-events-none":""}`,title:"Dev server preview",onLoad:cg,sandbox:"allow-forms allow-modals allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-downloads"}):(0,b.jsx)("div",{className:"flex h-full items-center justify-center px-6 text-center text-xs text-slate-500 dark:text-slate-400",children:"Run the dev server, or enter a URL above to load a preview."}):(0,b.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center text-xs text-slate-500 dark:text-slate-400",children:[(0,b.jsx)("p",{children:"Preview is hidden. Use the header Preview button to show it."}),(0,b.jsx)("button",{type:"button",className:"btn btn-xs border-slate-200 bg-white text-slate-700 hover:bg-slate-50 dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>bl(!0),children:"Show Preview"})]})}),!bC&&(0,b.jsx)("div",{className:"flex h-2 cursor-row-resize items-center justify-center border-y border-slate-200 bg-slate-100 dark:border-[#30363d] dark:bg-[#0d1117]",onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),bJ(!0),bM.current={startX:a.clientX,startY:a.clientY,startWidth:bG.width,startHeight:bG.height}},role:"separator","aria-orientation":"horizontal","aria-label":"Resize build output panel",title:"Drag to resize build output panel",children:(0,b.jsx)(C,{className:"h-3 w-3 text-slate-400 dark:text-slate-500"})}),(0,b.jsxs)("div",{className:`${bC?"h-9":"min-h-[160px]"} flex shrink-0 flex-col bg-slate-50 dark:bg-[#161b22]`,style:{height:bC?36:bG.height},children:[(0,b.jsxs)("div",{className:"flex h-9 items-center justify-between border-t border-slate-200 px-3 text-xs font-semibold text-slate-700 dark:border-[#30363d] dark:text-slate-300",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 uppercase tracking-wide",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-amber-500"}),"Terminal"]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 border-none px-2 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>{let a=ab?.trim();if(!a||!ar.current||aZ)return;bD(!1);let b=ar.current;aY(!0),aS("Starting dev server...");let c=(d=0)=>{if(d>30){aS("Failed to start dev server: terminal is not ready"),aY(!1);return}try{let e=b.contentWindow;if(e&&e.term){e.term.paste(a);let c=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");c?c.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:e})):e.term.paste("\r"),e.focus(),c&&c.focus(),aS("Dev server start command sent"),aY(!1)}else setTimeout(()=>c(d+1),300)}catch(a){console.error("Dev server injection error",a),aS("Failed to start dev server"),aY(!1)}};c()},disabled:!ck||aX||aZ,title:ck?aZ?"A process is already running in the terminal":"Run dev server script in terminal":"Set a dev server script to enable this button",type:"button",children:[aX?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(t,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"hidden min-[1700px]:inline",children:"Dev"})]}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 w-7 border-none p-0 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>bD(a=>!a),title:bC?"Expand terminal":"Collapse terminal","aria-label":bC?"Expand terminal":"Collapse terminal",type:"button",children:(0,b.jsx)(D.ChevronDown,{className:`h-4 w-4 transition-transform ${bC?"rotate-180":""}`})})]})]}),(0,b.jsx)("div",{className:`${bC?"h-0 overflow-hidden":"min-h-0 flex-1 overflow-hidden border-t border-slate-200 bg-white dark:border-[#30363d] dark:bg-[#0d1117]"}`,children:(0,b.jsx)("iframe",{ref:ar,src:aB,className:`h-full w-full border-none ${bI||by?"pointer-events-none":""}`,allow:"clipboard-read; clipboard-write",onLoad:()=>{if(!ar.current)return;let b=ar.current;aO(),a$(!1);try{b.contentWindow}catch(a){console.error("Secondary terminal: Cross-Origin access blocked.");return}b.contentWindow&&(b.contentWindow.onbeforeunload=null,b.contentWindow.addEventListener("beforeunload",a=>{a.stopImmediatePropagation()},!0));let c=(e=0)=>{if(!(e>30))try{let f=b.contentWindow;if(f&&f.term){let g;bY("terminal");let h=f.term;ch(b,ax,{onLinkActivated:()=>bD(!0),directOpenBehavior:"preview",modifierOpenBehavior:"new_tab"});try{h.options.theme={...h.options.theme||{},...bE?_:$}}catch{}aP(b,h);try{let a=()=>{let a=h.buffer?.active,b="number"==typeof a?.baseY?a.baseY:0;"number"==typeof a?.viewportY&&a.viewportY,h.scrollToBottom?.()};if("function"==typeof h.onWriteParsed)h.onWriteParsed(a);else{let c=b.contentDocument?.querySelector(".xterm-screen")||b.contentDocument?.body;c&&new MutationObserver(a).observe(c,{childList:!0,subtree:!0,characterData:!0})}}catch(a){console.error("Failed to setup auto-scroll:",a)}let i=aJ("terminal"),j=!!ak&&"tmux"===al;if(i||j){j&&!i&&aM("terminal"),i&&aQ(b,f,h),f.focus();let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a&&a.focus();return}if(!aN(h)&&e<10)return void setTimeout(()=>c(e+1),200);if(!aK("terminal")){f.focus();let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a&&a.focus();return}let k=d||a,l=`cd ${V(k)}`;h.paste(l),(g=b.contentDocument?.querySelector("textarea.xterm-helper-textarea"))?g.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:f})):h.paste("\r"),aM("terminal"),aQ(b,f,h),f.focus();let m=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");m&&m.focus()}else setTimeout(()=>c(e+1),500)}catch(a){a$(!1),aL("terminal"),console.error("Secondary terminal injection error",a)}};setTimeout(()=>c(),1e3)}})})]})]})})})]})]}),a3&&(0,b.jsx)(M.default,{initialPath:a5,worktreePath:d,onPathChange:a6,onConfirm:a=>{a4(!1),b1(a)},onCancel:()=>a4(!1)})]})}let af=(0,e.createServerReference)("40873d33d73dfed79b33eef8e4fc285f3bacd1c2c6",e.callServer,void 0,e.findSourceMapURL,"consumeSessionLaunchContext"),ag=(0,e.createServerReference)("4099ecafa3cbde3c39baecdacbcacab9ffe05762d3",e.callServer,void 0,e.findSourceMapURL,"getSessionMetadata"),ah=(0,e.createServerReference)("402464c5c866ef8494d748952b4ba26f6692c7a923",e.callServer,void 0,e.findSourceMapURL,"markSessionInitialized"),ai=(0,e.createServerReference)("7ffd1d7a123a75b75602aec263d51e6f4fb4f60132",e.callServer,void 0,e.findSourceMapURL,"getSessionTerminalSources");var aj=a.i(3768);function ak(){let a=(0,d.useParams)().sessionId,e=Array.isArray(a)?a[0]:a,f=(0,d.useRouter)(),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(!0),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(null),[o,p]=(0,c.useState)(void 0),[q,r]=(0,c.useState)(void 0),[s,t]=(0,c.useState)(void 0),[u,v]=(0,c.useState)(void 0),[w,x]=(0,c.useState)(void 0),[y,z]=(0,c.useState)([]),[A,B]=(0,c.useState)(!0),[C,D]=(0,c.useState)("shell"),E=(0,c.useCallback)(()=>{if(!e)return;window.focus();let a=`/session/${e}`;window.location.pathname!==a&&f.push(a)},[f,e]);(0,c.useEffect)(()=>(document.documentElement.classList.add("session-page"),()=>{document.documentElement.classList.remove("session-page")}),[]),(0,c.useEffect)(()=>{if(!e)return;let a=!1,b=null,c=null,d=0,f=null,g=()=>{null!==c&&(window.clearTimeout(c),c=null)},h=()=>{if(a)return;let b=Math.min(1e4,1e3*2**d);d+=1,c=window.setTimeout(()=>{c=null,j()},b)},i=async a=>{if(!("Notification"in window))return;let b=Notification.permission;"default"===b&&(b=await Notification.requestPermission()),"granted"===b&&(f&&f.close(),(f=new Notification(a.title,{body:a.description,tag:`viba-session-notification-${a.sessionId}`})).onclick=a=>{a.preventDefault(),E(),f?.close()})},j=async()=>{try{let c=await fetch(`/api/notifications/socket?sessionId=${encodeURIComponent(e)}`,{cache:"no-store"});if(!c.ok)throw Error("Failed to initialize notification socket");let f=await c.json();if(!f.wsUrl)throw Error("Notification socket URL missing");if(a)return;(b=new WebSocket(f.wsUrl)).onopen=()=>{d=0,g()},b.onerror=()=>{b?.close()},b.onclose=()=>{a||h()},b.onmessage=a=>{try{let b=JSON.parse(a.data);if("session-notification"!==b.type||b.sessionId!==e||"string"!=typeof b.title||!b.title.trim()||"string"!=typeof b.description||!b.description.trim()||"string"!=typeof b.timestamp)return;i(b)}catch{}}}catch{h()}};return j(),()=>{a=!0,g(),b?.close(),f?.close()}},[E,e]),(0,c.useEffect)(()=>{e&&(async()=>{try{n(null);let a=await (0,aj.startTtydProcess)();if(!a.success){l("Failed to start terminal service"),j(!1);return}D("tmux"===a.persistenceMode?"tmux":"shell");let b=await ag(e);if(!b){l("Session not found"),j(!1);return}h(b);let c=await ai(b.sessionName,b.repoPath,b.agent);if(n(c),!1===b.initialized){let a=await af(e);if(a.success&&a.context){let c=a.context;p(c.initialMessage),r(c.startupScript),t(c.title),v(c.agentProvider),x(c.sessionMode);let d=(c.attachmentPaths||[]).map(a=>a.trim()).filter(Boolean),e=d.length>0?Array.from(new Set(d)):Array.from(new Set((c.attachmentNames||[]).map(a=>a.trim()).filter(Boolean).map(a=>`${b.worktreePath}-attachments/${a}`)));z(e)}B(!1)}else B(!0);j(!1)}catch(a){console.error("Failed to load session:",a),l("Failed to load session"),j(!1)}})()},[e]);let F=a=>{a?window.location.href="/":f.push("/")},G=async()=>{e&&await ah(e)};return i?(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-[#f6f6f8] dark:bg-[#0d1117]",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,b.jsx)("span",{className:"loading loading-spinner loading-lg text-primary"}),(0,b.jsx)("p",{className:"opacity-60 dark:text-slate-400",children:"Loading session..."})]})}):k||!g?(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-[#f6f6f8] dark:bg-[#0d1117]",children:(0,b.jsx)("div",{className:"card w-96 border border-slate-200 bg-white shadow-xl dark:border-[#30363d] dark:bg-[#161b22]",children:(0,b.jsxs)("div",{className:"card-body items-center text-center",children:[(0,b.jsx)("h2",{className:"card-title text-error dark:text-red-300",children:"Error"}),(0,b.jsx)("p",{className:"text-slate-700 dark:text-slate-300",children:k||"Session not found"}),(0,b.jsx)("div",{className:"card-actions justify-end",children:(0,b.jsx)("button",{className:"btn btn-primary",onClick:()=>F(),children:"Back to Home"})})]})})}):m?(0,b.jsx)(ae,{repo:g.repoPath,worktree:g.worktreePath,branch:g.branchName,baseBranch:g.baseBranch,sessionName:g.sessionName,agent:u||g.agent,startupScript:q,devServerScript:g.devServerScript,initialMessage:o,attachmentPaths:y,title:s||g.title,sessionMode:w,onExit:F,isResume:A,terminalPersistenceMode:C,onSessionStart:G,agentTerminalSrc:m.agentTerminalSrc,floatingTerminalSrc:m.floatingTerminalSrc}):(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-[#f6f6f8] dark:bg-[#0d1117]",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,b.jsx)("span",{className:"loading loading-spinner loading-lg text-primary"}),(0,b.jsx)("p",{className:"opacity-60 dark:text-slate-400",children:"Initializing terminals..."})]})})}a.s(["default",()=>ak],96614)}];
1
+ module.exports=[96614,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(5050);let f=(0,e.createServerReference)("70086e0eb5e603d60919247c8c66349492206bb0b3",e.callServer,void 0,e.findSourceMapURL,"createSessionBaseBranch"),g=(0,e.createServerReference)("40cc0c9501c6170b0db6952f9febac267c3e34dd90",e.callServer,void 0,e.findSourceMapURL,"deleteSessionInBackground"),h=(0,e.createServerReference)("40b027e897940edbfe8f521444197813cd46c8d2ad",e.callServer,void 0,e.findSourceMapURL,"getSessionDivergence"),i=(0,e.createServerReference)("40bc835a39bd70c384755edf6da4e0b64e7551740f",e.callServer,void 0,e.findSourceMapURL,"listSessionBaseBranches"),j=(0,e.createServerReference)("40bd7ffa56008827861a32b7412dac761dbddce33c",e.callServer,void 0,e.findSourceMapURL,"mergeSessionToBase"),k=(0,e.createServerReference)("40a2d86eb857cb8f4d8f9518e6890005ac19946cb9",e.callServer,void 0,e.findSourceMapURL,"rebaseSessionOntoBase"),l=(0,e.createServerReference)("606a69b5ea407b6583d81313a6067ccb91cd35682e",e.callServer,void 0,e.findSourceMapURL,"updateSessionBaseBranch"),m=(0,e.createServerReference)("604d59af663b043196561c3549dfc49a89a5b72f0a",e.callServer,void 0,e.findSourceMapURL,"writeSessionPromptFile"),n=(0,e.createServerReference)("7f0797df1c7c8122374299f1696673e8c3cce43084",e.callServer,void 0,e.findSourceMapURL,"setTmuxSessionMouseMode"),o=(0,e.createServerReference)("7f9ee0ea207374a1a3e0d4c314181b61c0979aa154",e.callServer,void 0,e.findSourceMapURL,"setTmuxSessionStatusVisibility");var p=a.i(37827),q=a.i(96940),r=a.i(81560),s=a.i(52495),t=a.i(70106);let u=(0,t.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]),v=(0,t.default)("git-merge",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 21V9a9 9 0 0 0 9 9",key:"7kw0sc"}]]),w=(0,t.default)("git-pull-request-arrow",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v12",key:"ih889a"}],["circle",{cx:"19",cy:"18",r:"3",key:"1qljk2"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7",key:"1yj91y"}]]);var x=a.i(10948);let y=(0,t.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]),z=(0,t.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),A=(0,t.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]),B=(0,t.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var C=a.i(50522);let D=(0,t.default)("grip",[["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"19",cy:"5",r:"1",key:"w8mnmm"}],["circle",{cx:"5",cy:"5",r:"1",key:"lttvr7"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}],["circle",{cx:"19",cy:"19",r:"1",key:"shf9b7"}],["circle",{cx:"5",cy:"19",r:"1",key:"bfqh0e"}]]);var E=a.i(5784),F=a.i(15618);let G=(0,t.default)("mouse-pointer-2",[["path",{d:"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z",key:"edeuup"}]]);var H=a.i(210);let I=(0,t.default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]),J=(0,t.default)("rotate-cw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]]),K=(0,t.default)("scroll-text",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]),L=(0,t.default)("text-cursor-input",[["path",{d:"M12 20h-1a2 2 0 0 1-2-2 2 2 0 0 1-2 2H6",key:"1528k5"}],["path",{d:"M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7",key:"13ksps"}],["path",{d:"M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1",key:"1n9rhb"}],["path",{d:"M6 4h1a2 2 0 0 1 2 2 2 2 0 0 1 2-2h1",key:"1mj8rg"}],["path",{d:"M9 6v12",key:"velyjx"}]]);var M=a.i(33508),N=a.i(64724);let O=(0,t.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var P=a.i(65975),Q=a.i(41910);function R({repoPath:a,branchHint:d,baseBranchHint:e}){let[f,g]=(0,c.useState)({mode:"auto",hash:null}),{data:h}=(0,P.useGitBranches)(a),{data:i,isLoading:j,isFetching:k,isError:l,error:m,refetch:n}=(0,P.useGitLog)(a,200,{scope:"current"}),o=(0,c.useMemo)(()=>i?.all??[],[i]),p=h?.current?.trim()||d?.trim()||"unknown",q=h?.current?.trim()||d?.trim()||null,r=e?.trim()||null,{data:s}=(0,P.useGitMergeBase)(a,r,q),t=(0,c.useMemo)(()=>{if(!s)return o;let a=s.trim();if(!a)return o;let b=o.findIndex(b=>a.startsWith(b.hash)||b.hash.startsWith(a));return b<0?o:o.slice(0,b+1)},[o,s]),u=(0,c.useMemo)(()=>0===t.length||"unselected"===f.mode?null:"manual"===f.mode&&t.some(a=>a.hash===f.hash)?f.hash:t[0].hash,[t,f]);return(0,b.jsxs)("div",{className:"flex h-full min-h-0 flex-col bg-slate-50 dark:bg-[#0d1117]",children:[(0,b.jsxs)("div",{className:"flex min-h-0 flex-[2] flex-col border-b border-slate-200 dark:border-[#30363d]",children:[(0,b.jsxs)("div",{className:"flex h-9 shrink-0 items-center justify-between border-b border-slate-200 px-3 text-[11px] font-semibold text-slate-600 dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-400",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2 uppercase tracking-wide",children:[(0,b.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-500"}),(0,b.jsx)("span",{className:"truncate",children:"Repo Diff"}),(0,b.jsx)("span",{className:"truncate opacity-70 normal-case",title:p,children:p})]}),(0,b.jsxs)("span",{className:"shrink-0 text-[10px] opacity-70",children:[t.length," commit",1===t.length?"":"s"]})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1",children:(0,b.jsx)(Q.CommitChangesView,{repoPath:a,commitHash:u,showWorkingTreeWhenNoCommit:!0,fileListWidthClass:"w-52"})})]}),(0,b.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,b.jsxs)("div",{className:"flex h-9 shrink-0 items-center justify-between border-b border-slate-200 px-3 text-[11px] font-semibold text-slate-600 dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-400",children:[(0,b.jsx)("span",{className:"uppercase tracking-wide",children:"Commit History"}),(0,b.jsx)("button",{type:"button",className:"btn btn-ghost btn-xs h-6 min-h-6 w-7 border-none p-0 text-slate-600 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>void n(),title:"Refresh commit history","aria-label":"Refresh commit history",children:(0,b.jsx)(O,{className:`h-3.5 w-3.5 ${k?"animate-spin":""}`})})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:j?(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-slate-500 dark:text-slate-400",children:(0,b.jsx)("span",{className:"loading loading-spinner loading-sm"})}):l?(0,b.jsx)("div",{className:"flex h-full items-center justify-center px-6 text-center text-xs text-red-500 dark:text-red-300",children:m instanceof Error?m.message:"Failed to load commit history"}):0===t.length?(0,b.jsx)("div",{className:"flex h-full items-center justify-center px-6 text-center text-xs text-slate-500 dark:text-slate-400",children:"No commits found on this branch."}):(0,b.jsx)("div",{className:"divide-y divide-slate-200 dark:divide-[#30363d]",children:t.map(a=>{var c;let d,e=u===a.hash;return(0,b.jsxs)("button",{type:"button",onClick:()=>{var b;u===(b=a.hash)?g({mode:"unselected",hash:null}):g({mode:"manual",hash:b})},className:`w-full px-3 py-2 text-left transition-colors ${e?"bg-blue-100/80 dark:bg-[#1f2a3d]":"hover:bg-slate-100 dark:hover:bg-[#161b22]"}`,title:`${a.hash} ${a.message}`.trim(),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[11px] font-mono text-slate-500 dark:text-slate-400",children:[(0,b.jsx)("span",{className:"rounded bg-slate-200 px-1.5 py-0.5 dark:bg-[#30363d]",children:a.hash}),(0,b.jsx)("span",{className:"truncate",children:Number.isNaN(d=Date.parse(c=a.date))?c:new Date(d).toLocaleString()})]}),(0,b.jsx)("div",{className:"mt-1 truncate text-xs font-medium text-slate-800 dark:text-slate-100",children:a.message||"(no subject)"}),(0,b.jsx)("div",{className:"truncate text-[11px] text-slate-500 dark:text-slate-400",children:a.author_name})]},a.hash)})})})]})]})}var S=a.i(11431),T=a.i(12627);function U(a,b,c){var d,e;let f=(d=a,e=b,`viba-${(d.trim().replace(/[^a-zA-Z0-9_-]/g,"-")||"session").slice(0,40)}-${e}`),g=new URLSearchParams;for(let a of(g.append("arg","new-session"),Array.isArray(c)?c:c?[c]:[]))a.value&&(g.append("arg","-e"),g.append("arg",`${a.name}=${a.value}`));return g.append("arg","-A"),g.append("arg","-s"),g.append("arg",f),`/terminal?${g.toString()}`}let V=a=>{let b=a.trim();if(!b)return null;if(/^https?:\/\//i.test(b))return b;if(/^[a-z][a-z0-9+.-]*:\/\//i.test(b)||/^(mailto|javascript|data|tel):/i.test(b))return null;let c=b.split("/")[0]??"",d=c.indexOf(":");if(d>0&&!c.startsWith("[")){let a=c.slice(0,d).toLowerCase(),b=c.slice(d+1);if(!(a.includes(".")||"localhost"===a||/^\d{1,3}(?:\.\d{1,3}){3}$/.test(a)||/^\d+$/.test(b)))return null}let e=c.includes("@")?c.slice(c.lastIndexOf("@")+1):c,f=e.startsWith("[")?e.slice(1,Math.max(1,e.indexOf("]"))).toLowerCase():e.split(":")[0].toLowerCase();return`${"localhost"===f||"127.0.0.1"===f||"::1"===f?"http":"https"}://${b}`};var W=a.i(68114);let X=a=>`'${a.replace(/'/g,"'\\''")}'`;var Y=a.i(34776);let Z=[{id:"vscode",name:"VS Code",protocol:"vscode"},{id:"cursor",name:"Cursor",protocol:"cursor"},{id:"windsurf",name:"Windsurf",protocol:"windsurf"},{id:"antigravity",name:"Antigravity",protocol:"antigravity"}],$="viba-terminal-size",_="viba-agent-preview-split-ratio",aa=/(?:\$|%|#|>) $/,ab='-c tui.theme="ansi"',ac=a=>Math.max(.2,Math.min(.8,a)),ad=(a,b)=>{let c=a.replace(/\\/g,"/").replace(/\/+$/,""),d=b.replace(/\\/g,"/").replace(/^\/+/,"");return`${c}/${d}`},ae=(a,b)=>{let c=b.trim().replace(/\\/g,"/").replace(/\/+$/,"");if(!c)return null;let d=(a=>{let b=a.trim();if(!b)return"";if(b=b.replace(/[#?].*$/,""),/^file:\/\//i.test(b))try{let a=new URL(b);b=decodeURIComponent(a.pathname)}catch{}else if(/^https?:\/\//i.test(b))try{let a=new URL(b);b=decodeURIComponent(a.pathname)}catch{}return(b=b.replace(/^webpack(?:-internal)?:\/\/\/?/,"").replace(/^rsc:\/\//,"").replace(/^\(.*?\)\//,"").replace(/^\/\.\//,"/").replace(/^\.\//,"").replace(/\\/g,"/")).trim()})(a);if(!d)return null;if(d.startsWith("/")||(0,S.isWindowsAbsolutePath)(d))return d;let e=new Set;e.add(d.replace(/^\.\/+/,""));let f=d.indexOf("/src/");for(let a of(f>=0&&e.add(d.slice(f+1)),d.startsWith("src/")&&e.add(d),e))if(a)return ad(c,a);return null},af=a=>{let b=a.trim();if(!b)return"";let c=b.match(/[A-Za-z_$][\w$]*/);return c?c[0]:""};function ag({repo:a,worktree:d,branch:e,baseBranch:t,sessionName:O,agent:P,startupScript:Q,devServerScript:ad,initialMessage:ag,attachmentPaths:ah,attachmentNames:ai,title:aj,sessionMode:ak="fast",onExit:al,isResume:am,terminalPersistenceMode:an="shell",onSessionStart:ao,agentTerminalSrc:ap,floatingTerminalSrc:aq}){let ar="hidden min-[1900px]:inline",as=(0,c.useRef)(null),at=(0,c.useRef)(null),au=(0,c.useRef)(null),av=(0,c.useRef)(null),aw=(0,c.useRef)(null),ax=(0,c.useRef)(null),ay=(0,c.useRef)({startX:0,startRatio:.5}),az=(0,c.useRef)(null),aA=(0,c.useRef)(null),aB=(0,c.useRef)(null),aC=(0,c.useRef)(null),aD=(0,c.useRef)({injected:!1,timer:null}),aE=(0,c.useMemo)(()=>ap||U(O,"agent"),[ap,O]),aF=(0,c.useMemo)(()=>aq||U(O,"terminal"),[aq,O]),aG=(0,c.useRef)({agent:"idle",terminal:"idle"}),aH=(0,c.useRef)({agent:!1,terminal:!1});(0,c.useEffect)(()=>{aG.current={agent:"idle",terminal:"idle"},aH.current={agent:!1,terminal:!1},null!==aD.current.timer&&window.clearTimeout(aD.current.timer),aD.current={injected:!1,timer:null}},[O]),(0,c.useEffect)(()=>()=>{null!==aD.current.timer&&(window.clearTimeout(aD.current.timer),aD.current.timer=null)},[]);let aI=(0,c.useCallback)(a=>`viba:terminal-bootstrap:${O}:${a}`,[O]),aJ=(0,c.useCallback)(a=>`${O}:${a}`,[O]),aK=(0,c.useCallback)(()=>null,[]),aL=(0,c.useCallback)(a=>{let b=aK();return b&&b[aJ(a)]||"idle"},[aK,aJ]),aM=(0,c.useCallback)((a,b)=>{let c=aK();c&&(c[aJ(a)]=b)},[aK,aJ]),aN=(0,c.useCallback)(a=>{if("done"===aG.current[a]||"done"===aL(a))return!0;try{return"1"===window.sessionStorage.getItem(aI(a))}catch{return!1}},[aL,aI]),aO=(0,c.useCallback)(a=>{let b=aG.current[a],c=aL(a);return"done"!==b&&"in_progress"!==b&&"done"!==c&&"in_progress"!==c&&(aG.current[a]="in_progress",aM(a,"in_progress"),!0)},[aL,aM]),aP=(0,c.useCallback)(a=>{"done"!==aG.current[a]&&(aG.current[a]="idle"),"done"!==aL(a)&&aM(a,"idle")},[aL,aM]),aQ=(0,c.useCallback)(a=>{aG.current[a]="done",aM(a,"done");try{window.sessionStorage.setItem(aI(a),"1")}catch{}},[aI,aM]),aR=(0,c.useCallback)(a=>{let b=a?.buffer?.active;if(!b||"function"!=typeof b.getLine)return!0;let c=b.baseY+b.cursorY;for(let a=0;a<6;a+=1){let d=b.getLine(c-a),e=d?.translateToString(!0)??"";if(e.trim())return aa.test(e)}return!1},[]),aS=(0,c.useCallback)(()=>{aC.current&&(aC.current(),aC.current=null)},[]),aT=(0,c.useCallback)((a,b)=>{aS();let c=!1,d=null,e=null,f=null,g=()=>{if(c)return;let a=!aR(b);a2(b=>b===a?b:a)};g(),f=window.setInterval(g,1e3);try{if("function"==typeof b.onWriteParsed)d=b.onWriteParsed(g)||null;else{let b=a.contentDocument?.querySelector(".xterm-screen")||a.contentDocument?.body;b&&(e=new MutationObserver(g)).observe(b,{childList:!0,subtree:!0,characterData:!0})}}catch(a){console.error("Failed to setup terminal process monitor:",a)}aC.current=()=>{c=!0,null!==f&&(window.clearInterval(f),f=null),d&&"function"==typeof d.dispose&&d.dispose(),e?.disconnect()}},[aR,aS]);(0,c.useEffect)(()=>()=>{aS()},[aS]),(0,c.useEffect)(()=>{a2(!1),aS()},[O,aS]);let aU=(0,c.useCallback)((a,b,c)=>{if(am)return!1;let d=Q?.trim();return!!d&&!aD.current.injected&&(aD.current.injected=!0,null!==aD.current.timer&&window.clearTimeout(aD.current.timer),aD.current.timer=window.setTimeout(()=>{aD.current.timer=null;try{let e;c.paste(d),(e=a.contentDocument?.querySelector("textarea.xterm-helper-textarea"))?e.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:b})):c.paste("\r")}catch(a){aD.current.injected=!1,console.error("Failed to inject startup script into terminal iframe:",a)}},500),!0)},[am,Q]);(0,c.useEffect)(()=>{if(am||!Q?.trim()||aD.current.injected)return;let a=!1,b=(c=0)=>{if(a||aD.current.injected||c>30)return;if(!aN("terminal"))return void window.setTimeout(()=>b(c+1),200);let d=at.current||au.current;if(d){try{let a=d.contentWindow;if(a?.term)return void aU(d,a,a.term)}catch{}window.setTimeout(()=>b(c+1),200)}};return b(),()=>{a=!0}},[aN,aU,am,Q]);let[aV,aW]=(0,c.useState)("Initializing..."),[aX,aY]=(0,c.useState)("idle"),[aZ,a$]=(0,c.useState)(null),[a_,a0]=(0,c.useState)(!1),[a1,a2]=(0,c.useState)(!1),[a3,a4]=(0,c.useState)(!1),[a5,a6]=(0,c.useState)(!1),[a7,a8]=(0,c.useState)(!1),[a9,ba]=(0,c.useState)(d||a),[bb,bc]=(0,c.useState)(!1),[bd,be]=(0,c.useState)(t?.trim()||""),[bf,bg]=(0,c.useState)(""),[bh,bi]=(0,c.useState)([]),[bj,bk]=(0,c.useState)(!1),bl=(0,c.useRef)(!1),[bm,bn]=(0,c.useState)(!1),[bo,bp]=(0,c.useState)(!1),[bq,br]=(0,c.useState)(""),[bs,bt]=(0,c.useState)(""),[bu,bv]=(0,c.useState)(!1),[bw,bx]=(0,c.useState)({ahead:0,behind:0}),[by,bz]=(0,c.useState)(!0),[bA,bB]=(0,c.useState)(""),[bC,bD]=(0,c.useState)(""),[bE,bF]=(0,c.useState)(!1),[bG,bH]=(0,c.useState)(!1),[bI,bJ]=(0,c.useState)(!1),[bK,bL]=(0,c.useState)(.5),[bM,bN]=(0,c.useState)(!1),[bO,bP]=(0,c.useState)(!0),[bQ,bR]=(0,c.useState)(!1),bS=(0,c.useCallback)(a=>{let b="agent"===a?as.current:at.current;if(!b)return!1;try{let a=b.contentWindow,c=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");if(a?.focus(),!c||"function"!=typeof c.focus)return!1;try{c.focus({preventScroll:!0})}catch{c.focus()}return!0}catch{return!1}},[]),bT=(0,c.useCallback)(()=>{let a=az.current;if(!a||Date.now()-a.at>1500)return;let b=a.slot;window.setTimeout(()=>{bS(b)||bS("agent"===b?"terminal":"agent"),az.current=null},0)},[bS]),bU=(0,c.useCallback)(()=>{(0,Y.applyThemeToTerminalIframe)(as.current),(0,Y.applyThemeToTerminalIframe)(at.current),bT()},[bT]);(0,c.useEffect)(()=>{let a=window.matchMedia("(prefers-color-scheme: dark)"),b=()=>{bU()},c=()=>{"auto"===(0,Y.readThemeModeFromStorage)(window.localStorage)&&b()},d=a=>{a.key&&a.key!==Y.THEME_MODE_STORAGE_KEY||b()},e=()=>{b()};return b(),window.addEventListener("storage",d),window.addEventListener(Y.THEME_REFRESH_EVENT,e),"function"==typeof a.addEventListener?a.addEventListener("change",c):a.addListener(c),()=>{window.removeEventListener("storage",d),window.removeEventListener(Y.THEME_REFRESH_EVENT,e),"function"==typeof a.removeEventListener?a.removeEventListener("change",c):a.removeListener(c)}},[bU]);let[bV,bW]=(0,c.useState)({width:460,height:320}),[bX,bY]=(0,c.useState)(!1),[bZ,b$]=(0,c.useState)(!1),b_=(0,c.useRef)({startX:0,startY:0,startWidth:0,startHeight:0}),[b0,b1]=(0,c.useState)("scroll"),[b2,b3]=(0,c.useState)(!1),b4=(0,c.useRef)(0);(0,c.useEffect)(()=>{ba(d||a)},[a,d]),(0,c.useEffect)(()=>{let a=localStorage.getItem($);if(a)try{bW(JSON.parse(a))}catch(a){console.error("Failed to parse saved terminal size",a)}let b=localStorage.getItem(_);if(b){let a=Number.parseFloat(b);Number.isNaN(a)||bL(ac(a))}bP(!0),b$(!0)},[]),(0,c.useEffect)(()=>{if(!bX)return;let a=a=>{let b=b_.current.startX-a.clientX,c=b_.current.startY-a.clientY;bW({width:Math.max(300,Math.min(window.innerWidth-32,b_.current.startWidth+b)),height:Math.max(100,Math.min(window.innerHeight-32,b_.current.startHeight+c))})},b=()=>{bY(!1)};return window.addEventListener("mousemove",a),window.addEventListener("mouseup",b),()=>{window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",b)}},[bX]),(0,c.useEffect)(()=>{bZ&&!bX&&localStorage.setItem($,JSON.stringify(bV))},[bZ,bX,bV]),(0,c.useEffect)(()=>{bZ&&!bM&&localStorage.setItem(_,String(bK))},[bK,bZ,bM]),(0,c.useEffect)(()=>{bZ&&localStorage.setItem("viba-right-panel-collapsed",bO?"1":"0")},[bZ,bO]),(0,c.useEffect)(()=>{bO&&bN(!1)},[bO]);let b5=(0,c.useCallback)(()=>{bP(a=>!a)},[]),b6=(0,c.useCallback)(()=>{bO&&bP(!1),bJ(a=>!a)},[bO]);(0,c.useEffect)(()=>{if(!bM)return;let a=a=>{let b=ax.current;if(!b)return;let c=b.getBoundingClientRect();if(c.width<=0)return;let d=a.clientX-ay.current.startX;bL(ac((ay.current.startRatio*c.width+d)/c.width))},b=()=>{bN(!1)};return window.addEventListener("mousemove",a),window.addEventListener("mouseup",b),()=>{window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",b)}},[bM]),(0,c.useEffect)(()=>{if(!bQ&&at.current){let a=at.current;setTimeout(()=>{try{let b=a.contentWindow;if(b&&b.term){b.term.scrollToBottom?.(),b.focus();let c=a.contentDocument?.querySelector("textarea.xterm-helper-textarea");c&&c.focus()}}catch(a){console.error("Failed to focus/scroll terminal on restore:",a)}},100)}},[bQ]);let[b7,b8]=(0,c.useState)("vscode");(0,c.useEffect)(()=>{let a=aj?.trim();if(a)return document.title=`${a} | Viba`,()=>{document.title="Viba"};document.title="Viba"},[aj]),(0,c.useEffect)(()=>{(async()=>{let a=await (0,p.getConfig)();a.selectedIde&&Z.some(b=>b.id===a.selectedIde)&&b8(a.selectedIde)})()},[]),(0,c.useEffect)(()=>{be(t?.trim()||""),bi([])},[t,O]),(0,c.useEffect)(()=>{b1("scroll"),b3(!1),b4.current+=1},[O]);let b9=async a=>{let b=a.target.value;b8(b),await (0,q.updateConfig)({selectedIde:b})},ca=(0,c.useCallback)(async(a,b)=>{if("tmux"!==an)return!0;let c=++b4.current;b?.silent||b3(!0);let d="scroll"===a,[e,f]=await Promise.all([n(O,"agent",d),n(O,"terminal",d)]);return c===b4.current&&((b?.silent||b3(!1),[e,f].find(a=>!a.success))?(b?.silent||aW(`Failed to switch to ${"scroll"===a?"scroll mode":"text select mode"}`),!1):(b?.silent||aW("scroll"===a?"Terminal mode: Scroll":"Terminal mode: Text Select"),!0))},[O,an]),cb=(0,c.useCallback)(a=>{"tmux"!==an||aH.current[a]||(async()=>{let b=await o(O,a,!1);b.success&&b.applied?aH.current[a]=!0:b.success||console.error(`Failed to hide tmux status bar for ${a}:`,b.error)})()},[O,an]);(0,c.useEffect)(()=>{"tmux"===an&&ca("scroll",{silent:!0})},[ca,an]);let cc=(0,c.useCallback)(()=>{if("tmux"!==an||b2)return;let a="scroll"===b0?"select":"scroll";b1(a),(async()=>{await ca(a)||b1(b0)})()},[ca,b2,b0,an]),cd=async(b=!0)=>{if(!a||!d||!e||b&&!confirm("Are you sure you want to delete this session? This will remove the branch and worktree."))return!1;a$(null),aY("idle"),aW("Purging session...");try{let a=await g(O);if(!a.success)return console.error("Cleanup failed:",a.error||"Unknown error"),aY("error"),a$(a.error||"Failed to delete session"),!1;(0,T.notifySessionsUpdated)()}catch(a){return console.error("Cleanup request failed:",a),aY("error"),a$(a instanceof Error?a.message:"Unknown error"),!1}return al(!0),!0},ce=async()=>{await cd(!0)},cf=(0,c.useCallback)(a=>new Promise(b=>{let c=as.current;if(!c)return void b(!1);let d=(e=0)=>{if(e>30)return void b(!1);try{let f=c.contentWindow;if(!f||!f.term)return void setTimeout(()=>d(e+1),300);f.term.paste(a);let g=c.contentDocument?.querySelector("textarea.xterm-helper-textarea");g&&g.focus(),f.focus(),b(!0)}catch(a){console.error("Failed to paste into agent iframe:",a),setTimeout(()=>d(e+1),300)}};d()}),[]),cg=(0,c.useCallback)(async a=>{if(0===a.length)return;bc(!0);let b=`${a.join(" ")} `;aW(await cf(b)?`Inserted ${a.length} file path${1===a.length?"":"s"} into agent input`:"Failed to insert file paths into agent input"),bc(!1)},[cf]),ch=(0,c.useCallback)(async b=>{let c=b.map(af).filter(Boolean);if(0===c.length)return null;let e=Array.from(new Set([a,d].map(a=>(a||"").trim()).filter(Boolean)));if(0===e.length)return null;for(let a of e)try{let b=await fetch("/api/component-source/resolve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({componentNames:c,workspaceRoot:a})}),d=await b.json().catch(()=>null);if(!b.ok){console.warn("Component source resolve miss",{componentNames:c,workspaceRoot:a,error:d?.error||b.statusText});continue}let e="string"==typeof d?.sourcePath?d.sourcePath.trim():"",f="string"==typeof d?.resolvedName?d.resolvedName.trim():"";if(e&&f)return{sourcePath:e,resolvedName:f}}catch(a){console.error("Failed to resolve component source path:",a)}return null},[a,d]),ci=(0,c.useCallback)(async()=>{if(O&&!bl.current){bl.current=!0,bk(!0);try{let a=await i(O);a.success?(bi(a.branches??[]),be(a.baseBranch?.trim()||""),bg(a.mainWorktreeBranch?.trim()||"")):a.error&&aW(`Failed to load branches: ${a.error}`)}catch(a){console.error("Failed to load base branches:",a)}finally{bl.current=!1,bk(!1)}}},[O]);(0,c.useEffect)(()=>{O&&ci()},[ci,O]);let cj=(0,c.useCallback)(async()=>{if(O)try{let a=await h(O);a.success&&"number"==typeof a.ahead&&"number"==typeof a.behind&&bx({ahead:a.ahead,behind:a.behind})}catch(a){console.error("Failed to load branch divergence:",a)}},[O]);(0,c.useEffect)(()=>{if(!O||!bd)return void bx({ahead:0,behind:0});cj();let a=window.setInterval(()=>{cj()},6e4);return()=>window.clearInterval(a)},[bd,cj,O]);let ck=async()=>{if(!O||!bd)return!1;a4(!0),aW("Merging session branch...");try{let a=await j(O);if(a.success)return aW(`Merged ${a.branchName} into ${a.baseBranch}`),cj(),!0;return aW(`Merge failed: ${a.error}`),!1}catch(a){return console.error("Merge request failed:",a),aW("Merge failed"),!1}finally{a4(!1)}},cl=async()=>{await ck()},[cm,cn]=(0,c.useState)(!1),co=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{co.current&&!co.current.contains(a.target)&&cn(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[]);let cp=async a=>{if(cn(!1),!O)return;let b=a!==bd;a6(!0),aW(b?`Updating base to ${a} and rebasing...`:"Rebasing session branch...");try{if(b){let b=await l(O,a);if(!b.success){aW(`Failed to update base branch: ${b.error}`),a6(!1);return}be(b.baseBranch),await ci()}let c=await k(O);c.success?(aW(`Rebased ${c.branchName} onto ${c.baseBranch}`),cj()):aW(`Rebase failed: ${c.error}`)}catch(a){console.error("Rebase request failed:",a),aW("Rebase failed")}finally{a6(!1)}},cq=(0,c.useMemo)(()=>Array.from(new Set([bf,bd,...bh].map(a=>a.trim()).filter(Boolean))).sort((a,b)=>a.localeCompare(b)),[bh,bd,bf]),cr=(0,c.useCallback)(()=>{bu||(bp(!1),br(""),bt(""))},[bu]),cs=(0,c.useCallback)(()=>{let a=bf.trim()||bd.trim()||cq[0]||"";cn(!1),br(""),bt(a),bp(!0)},[cq,bd,bf]),ct=(0,c.useCallback)(async()=>{if(!O)return;let a=bq.trim(),b=bs.trim();if(a&&b){bv(!0),aW(`Creating branch ${a} from ${b}...`);try{let c=await f(O,a,b);c.success&&c.branchName&&c.fromBranch?(aW(`Created branch ${c.branchName} from ${c.fromBranch}`),bp(!1),br(""),bt(""),await ci()):aW(`Failed to create branch: ${c.error}`)}catch(a){console.error("Failed to create base branch:",a),aW("Failed to create branch")}finally{bv(!1)}}},[ci,bs,bq,O]),cu=(0,c.useCallback)(async(a,b)=>{let c=V(a);if(!c)return aW("Please enter a preview URL"),!1;bB(c),bF(!1),aW(`Loading preview: ${c}`);try{let a=await fetch("/api/preview-proxy/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({target:c})}),d=await a.json().catch(()=>null);if(!a.ok||!d?.proxyUrl)throw Error(d?.error||"Failed to start preview proxy");return bD(d.proxyUrl),b&&bz(!0),aW(`Loaded preview: ${c}`),!0}catch(b){let a=b instanceof Error?b.message:"Failed to load preview";return console.error("Failed to load preview via proxy:",b),aW(`Failed to load preview: ${a}`),!1}},[]),cv=(0,c.useCallback)(()=>{if(!bC)return void aW("Load a preview before picking elements");let a=av.current?.contentWindow;if(!a)return void aW("Preview is not ready yet");let b=!bE;a.postMessage({type:"viba:preview-picker-toggle",active:b},"*"),bF(b),aW(b?"Picker enabled: click an element in the preview":"Picker disabled")},[bE,bC]),cw=(0,c.useCallback)(a=>{let b=av.current?.contentWindow;return b?(b.postMessage(a,"*"),!0):(aW("Preview is not ready yet"),!1)},[]),cx=(0,c.useCallback)(a=>{bC?cw({type:"viba:preview-navigation",action:a})&&"reload"===a&&aW("Reloading preview..."):aW("Load a preview before using navigation controls")},[cw,bC]),cy=(0,c.useCallback)(()=>{bC?(bD(""),bF(!1),aW("Preview unloaded")):aW("Preview is already unloaded")},[bC]),cz=(0,c.useCallback)(()=>{cw({type:"viba:preview-location-request"})},[cw]),{attachTerminalLinkHandler:cA}=function({onLoadPreview:a}){let b=(0,c.useCallback)((b,c)=>{let d=V(b);return!!d&&("new_tab"===c?window.open(d,"_blank","noopener,noreferrer"):a(d,!0),!0)},[a]),d=(0,c.useCallback)((a,c,d)=>{c.current?.();let e=a.contentWindow,f=e?.term;if(!e||!f)return;let g=d?.onLinkActivated,h=d?.directOpenBehavior??"preview",i=d?.modifierOpenBehavior??"new_tab",j=a=>a?i:h,k=[],l=a.contentDocument,m={metaKey:!1,ctrlKey:!1,at:0};if(l){let a=a=>{m={metaKey:a.metaKey,ctrlKey:a.ctrlKey,at:Date.now()}};l.addEventListener("mousedown",a,!0),l.addEventListener("click",a,!0),k.push(()=>{l.removeEventListener("mousedown",a,!0),l.removeEventListener("click",a,!0)})}let n=e.open.bind(e);e.open=(...a)=>{let c=j(Date.now()-m.at<1e3&&(m.metaKey||m.ctrlKey));if("string"==typeof a[0]&&a[0].trim())return(g?.(),b(a[0],c))?null:n(...a);if(0===a.length){let a=null;return{opener:null,location:{set href(url){if(g?.(),!b(url,c)&&(a=n())){try{a.opener=null}catch{}a.location.href=url}},get href(){return""}}}}return n(...a)},k.push(()=>{e.open=n});let o=f._core?._linkProviderService?.linkProviders;if(o instanceof Map){for(let a of o.values())if(a&&"object"==typeof a){if("function"==typeof a._handler){let c=a._handler;a._handler=(a,d)=>{g?.(),b(d,j(!!(a?.metaKey||a?.ctrlKey)))||c(a,d)},k.push(()=>{a._handler=c})}if("function"==typeof a.provideLinks){let c=a.provideLinks.bind(a);a.provideLinks=(a,d)=>{c(a,a=>{if(Array.isArray(a))for(let c of a){if(!c||"object"!=typeof c||"function"!=typeof c.activate)continue;let a=c.activate.bind(c);c.activate=(c,d)=>{g?.(),b(d,j(!!(c?.metaKey||c?.ctrlKey)))||a(c,d)}}d(a)})},k.push(()=>{a.provideLinks=c})}}}let p=f.options.linkHandler,q={allowNonHttpProtocols:p?.allowNonHttpProtocols??!1,activate:(a,c,d)=>{g?.(),b(c,j(!!(a?.metaKey||a?.ctrlKey)))||p?.activate?.(a,c,d)},hover:(a,b,c)=>{p?.hover?.(a,b,c)},leave:(a,b,c)=>{p?.leave?.(a,b,c)}};f.options.linkHandler=q,k.push(()=>{f.options.linkHandler=p??null}),c.current=()=>{for(let a of k)a();c.current=null}},[b]);return{handleTerminalLinkOpen:b,attachTerminalLinkHandler:d}}({onLoadPreview:cu});(0,c.useEffect)(()=>{if(!by||bA.trim())return;let a=window.setTimeout(()=>{aw.current?.focus()},0);return()=>{window.clearTimeout(a)}},[by,bA]),(0,c.useEffect)(()=>{let b=b=>{if(!av.current||b.source!==av.current.contentWindow)return;let c=b.data;if(c&&"object"==typeof c){if("viba:preview-picker-state"===c.type)return void bF(!!c.active);if("viba:preview-picker-ready"===c.type){let a=av.current?.contentWindow;a&&a.postMessage({type:"viba:preview-location-request"},"*");return}if("viba:preview-link-open"===c.type){"string"==typeof c.url&&c.url.trim().length>0&&window.open(c.url,"_blank","noopener,noreferrer");return}if("viba:preview-location-change"===c.type){"string"==typeof c.url&&c.url.trim().length>0&&bB(c.url);return}if("viba:preview-element-selected"===c.type){let b=c.element&&"object"==typeof c.element?c.element:null,e=Array.isArray(b?.reactComponentStack)?b.reactComponentStack:[],f=((a,b)=>{for(let c of a){if(!c||"object"!=typeof c)continue;let a="string"==typeof c.name?c.name.trim():"";if(!a)continue;let d="string"==typeof c.source?.fileName?c.source.fileName.trim():"",e=d?ae(d,b):null;if(e)return`${a} (${e})`}return null})(e,d||a),g=e[0]&&"object"==typeof e[0]?e[0].name:void 0,h="string"==typeof g&&g.trim().length>0?g.trim():"",i=new Set(["Suspense","ErrorBoundary","Router","AppRouter","LayoutRouter","RenderFromTemplateContext","ScrollAndFocusHandler","InnerLayoutRouter","RedirectErrorBoundary","NotFoundBoundary","LoadingBoundary","ReactDevOverlay","HotReload","AppContainer","Route","Link","Image","OuterLayoutRouter","Head","StringRefs","Fragment","Profiler","StrictMode","SuspenseList","Script","Page","__next_root_layout_boundary__"]),j=Array.from(new Set(e.map(a=>{if(!a||"object"!=typeof a)return"";let b=a.name;return"string"==typeof b?b.trim():""}).filter(a=>!(!a||i.has(a)||a.startsWith("styled.")||a.startsWith("Styled(")))));console.log("Filtered stack component names:",j);let k=f||h||("string"==typeof b?.selector?b.selector:"");if(console.log("Preview selected element:",b),console.log("Preview selected reactComponentStack:",e),console.log("Preview selected identifier:",k),bF(!1),!k)return void aW("Element selected. No identifier was resolved.");(async()=>{let a=f||"";if(!a&&j.length>0){bH(!0);try{let b=await ch(j);b?.resolvedName&&b?.sourcePath&&(a=`${b.resolvedName} (${b.sourcePath})`)}finally{bH(!1)}}if(!a){if(j.length>0)return aW("Element selected, but source file path could not be resolved for the component");a=k}console.log("Final resolved component identifier:",a),aW(await cf(`${a} `)?`Element identifier sent to agent: ${a}`:"Element selected, but failed to send identifier to agent input")})()}}};return window.addEventListener("message",b),()=>{window.removeEventListener("message",b)}},[cf,a,ch,d]),(0,c.useEffect)(()=>{bF(!1)},[bC]);let cB=(0,c.useCallback)(()=>{let a=V(bA.trim()||bC);a?(window.open(a,"_blank","noopener,noreferrer"),aW(`Opened preview in new tab: ${a}`)):aW("Please enter a preview URL")},[bA,bC]),cC=b=>{let c=b||at.current||au.current;if(!c)return;aS(),a2(!1);try{c.contentWindow}catch(a){console.error("Secondary terminal: Cross-Origin access blocked.");return}c.contentWindow&&(c.contentWindow.onbeforeunload=null,c.contentWindow.addEventListener("beforeunload",a=>{a.stopImmediatePropagation()},!0));let e=(b=0)=>{if(!(b>30))try{let f=c.contentWindow;if(f&&f.term){let g;cb("terminal");let h=f.term;cA(c,aB,{onLinkActivated:()=>bR(!0),directOpenBehavior:"preview",modifierOpenBehavior:"new_tab"}),(0,Y.applyThemeToTerminalWindow)(f),aT(c,h);try{let a=()=>{let a=h.buffer?.active,b="number"==typeof a?.baseY?a.baseY:0;"number"==typeof a?.viewportY&&a.viewportY,h.scrollToBottom?.()};if("function"==typeof h.onWriteParsed)h.onWriteParsed(a);else{let b=c.contentDocument?.querySelector(".xterm-screen")||c.contentDocument?.body;b&&new MutationObserver(a).observe(b,{childList:!0,subtree:!0,characterData:!0})}}catch(a){console.error("Failed to setup auto-scroll:",a)}let i=aN("terminal"),j=!!am&&"tmux"===an;if(i||j){j&&!i&&aQ("terminal"),i&&aU(c,f,h),f.focus();let a=c.contentDocument?.querySelector("textarea.xterm-helper-textarea");a&&a.focus();return}if(!aR(h)&&b<10)return void setTimeout(()=>e(b+1),200);if(!aO("terminal")){f.focus();let a=c.contentDocument?.querySelector("textarea.xterm-helper-textarea");a&&a.focus();return}let k=d||a,l=`cd ${X(k)}`;h.paste(l),(g=c.contentDocument?.querySelector("textarea.xterm-helper-textarea"))?g.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:f})):h.paste("\r"),aQ("terminal"),aU(c,f,h),f.focus();let m=c.contentDocument?.querySelector("textarea.xterm-helper-textarea");m&&m.focus()}else setTimeout(()=>e(b+1),500)}catch(a){a2(!1),aP("terminal"),console.error("Secondary terminal injection error",a)}};setTimeout(()=>e(),1e3)};if(!a)return(0,b.jsx)("div",{className:"p-4 text-error dark:bg-[#0d1117] dark:text-red-300",children:"No repository specified"});if("error"===aX)return(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-[#f6f6f8] dark:bg-[#0d1117]",children:(0,b.jsx)("div",{className:"card w-96 border border-slate-200 bg-white shadow-xl dark:border-[#30363d] dark:bg-[#161b22]",children:(0,b.jsxs)("div",{className:"card-body items-center text-center",children:[(0,b.jsx)("h2",{className:"card-title text-error dark:text-red-300",children:"Cleanup failed"}),(0,b.jsx)("p",{className:"text-slate-700 dark:text-slate-300",children:aZ||"An unknown error occurred while cleaning up this session."}),(0,b.jsx)("div",{className:"card-actions justify-end",children:(0,b.jsx)("button",{className:"btn btn-primary",onClick:()=>al(),children:"Back to Home"})})]})})});let cD=Array.from(new Set([...bd?[bd]:[],...bh])).filter(a=>a!==e||a===bd),cE=!!ad?.trim();return(0,b.jsxs)("div",{className:`flex h-screen w-full flex-col overflow-hidden bg-[#f6f6f8] dark:bg-[#0d1117] ${bX||bM?"select-none":""}`,children:[bO&&(0,b.jsx)("iframe",{ref:au,src:aF,className:"pointer-events-none absolute left-0 top-0 h-0 w-0 border-none opacity-0",allow:"clipboard-read; clipboard-write",onLoad:a=>cC(a.currentTarget),"aria-hidden":"true",tabIndex:-1}),(bX||bM)&&(0,b.jsx)("div",{className:`fixed inset-0 z-[9999] ${bX?"cursor-row-resize":"cursor-col-resize"}`}),(0,b.jsxs)("div",{className:"z-20 flex items-center justify-between border-b border-slate-200 bg-white px-4 py-2 text-xs font-mono shadow-sm dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-300",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 px-1 text-slate-600 hover:bg-base-content/10 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>al(),title:"Back to Home",children:(0,b.jsx)(B,{className:"w-4 h-4"})}),(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"opacity-50",children:"Repo:"}),(0,b.jsx)("span",{className:"font-bold",children:(0,S.getBaseName)(a)})]}),O&&(0,b.jsxs)("div",{className:"hidden min-[1200px]:flex min-w-0 items-center gap-2 text-[10px] opacity-70",children:[(0,b.jsx)("span",{children:"Session:"}),(0,b.jsx)("span",{className:"truncate max-w-[220px]",title:O,children:O})]})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("div",{className:"flex items-center overflow-hidden rounded border border-base-content/20 bg-base-100 dark:border-[#30363d] dark:bg-[#0d1117]",children:(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 rounded-none border-none px-2 text-slate-700 hover:bg-base-content/10 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>{if(!a||!O)return;let b=`/new?repo=${encodeURIComponent(a)}&prefillFromSession=${encodeURIComponent(O)}`;window.open(b,"_blank","noopener,noreferrer")},title:"Start a new attempt in a new tab with this session context",children:[(0,b.jsx)(F.Plus,{className:"w-3 h-3"}),(0,b.jsx)("span",{className:ar,children:"New Attempt"})]})}),(0,b.jsxs)("div",{className:"relative flex items-center rounded border border-base-content/20 bg-base-100 dark:border-[#30363d] dark:bg-[#0d1117]",ref:co,children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 rounded-none rounded-l border-none px-2 text-slate-700 hover:bg-base-content/10 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>{cn(!cm)},disabled:a5||a3||bm,title:"Select base branch and rebase",children:[a5?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(v,{className:"w-3 h-3"}),(0,b.jsx)("span",{className:ar,children:"Rebase"}),(0,b.jsx)(E.ChevronDown,{className:"w-3 h-3 opacity-50 ml-0.5"})]}),cm&&(0,b.jsxs)("div",{className:"dropdown-content absolute left-0 top-full z-50 mt-1 flex max-h-80 w-64 flex-col overflow-hidden rounded-box border border-base-content/20 bg-base-200 p-0 shadow-xl dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-300",children:[(0,b.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-base-content/10 bg-base-200 px-4 py-2 text-[10px] font-bold uppercase tracking-wider opacity-50 dark:border-[#30363d] dark:bg-[#161b22]",children:[(0,b.jsx)("span",{children:"Select Base Branch"}),(bj||bm)&&(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"})]}),(0,b.jsxs)("ul",{className:"menu custom-scrollbar w-full flex-nowrap overflow-y-auto overflow-x-hidden p-0",children:[cD.length>0?cD.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{onClick:()=>cp(a),className:`flex max-w-full items-center justify-between truncate rounded-none py-2 text-xs hover:bg-base-content/10 dark:hover:bg-[#30363d]/60 ${a===bd?"active font-bold":""}`,title:a,children:[(0,b.jsx)("span",{className:"truncate",children:a}),a===bd&&(0,b.jsx)("span",{className:"opacity-70 text-[10px] ml-2 shrink-0",children:"(Current)"})]})},a)):(0,b.jsx)("li",{className:"text-xs px-4 py-2 opacity-50 italic text-center",children:"No other branches found"}),(0,b.jsx)("div",{className:"divider my-1 opacity-50 dark:before:bg-[#30363d] dark:after:bg-[#30363d]"}),(0,b.jsx)("li",{children:(0,b.jsx)("button",{onClick:cs,className:"text-[10px] justify-center opacity-70 hover:opacity-100",children:"Create New Branch..."})}),(0,b.jsx)("li",{children:(0,b.jsx)("button",{onClick:()=>void ci(),className:"text-[10px] justify-center opacity-70 hover:opacity-100",children:"Refresh Branches"})})]})]})]}),(0,b.jsx)("div",{className:"h-4 w-[1px] bg-base-content/10 dark:bg-[#30363d]"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs btn-success h-6 min-h-6 rounded-none border-none px-2 hover:border-transparent hover:bg-success/20 dark:text-emerald-300",onClick:cl,disabled:a3||a5||bm||!bd,title:bd?`Merge current branch (${e}) into target branch (${bd})`:"Target branch unavailable for this session",children:[a3?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(w,{className:"w-3 h-3"}),(0,b.jsx)("span",{className:ar,children:"Merge"})]}),(0,b.jsx)("div",{className:"h-4 w-[1px] bg-base-content/10 dark:bg-[#30363d]"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-error btn-xs h-6 min-h-6 rounded-none rounded-r border-none px-2 hover:border-transparent hover:bg-error/20 dark:text-red-300",onClick:ce,disabled:a3||a5||!d,title:"Clean up and exit",children:[(0,b.jsx)(r.Trash2,{className:"w-3 h-3"}),(0,b.jsx)("span",{className:ar,children:"Delete"})]})]}),(0,b.jsx)("div",{className:"flex items-center overflow-hidden rounded border border-base-content/20 bg-base-100 dark:border-[#30363d] dark:bg-[#0d1117]",children:(0,b.jsxs)("button",{type:"button",className:`btn btn-ghost btn-xs h-6 min-h-6 rounded-none border-none px-2 hover:bg-base-content/10 dark:hover:bg-[#30363d]/60 ${bI?"bg-slate-100 text-slate-900 dark:bg-[#30363d] dark:text-slate-100":"text-slate-700 dark:text-slate-300"}`,onClick:b6,"aria-pressed":bI,title:bI?"Show preview and terminal panel":"Show repository viewer",children:[(0,b.jsx)(x.GitBranch,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:ar,children:"Repo"})]})}),bd&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs opacity-80",title:`Divergence against ${bd}`,children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(y,{className:"w-3 h-3"}),bw.ahead]}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(z,{className:"w-3 h-3"}),bw.behind]})]}),(0,b.jsx)("div",{className:"mx-2 hidden h-4 w-[1px] bg-base-content/20 dark:bg-[#30363d] min-[1200px]:block"}),(0,b.jsxs)("div",{className:"hidden min-[1200px]:flex min-w-0 max-w-[280px] items-center gap-2",children:[(0,b.jsx)("span",{className:`w-2 h-2 rounded-full ${aV.includes("Error")||aV.includes("failed")?"bg-error":aV.includes("started")||aV.includes("Merged")||aV.includes("Rebased")||aV.includes("sent")?"bg-success":"bg-warning"}`}),(0,b.jsx)("span",{className:"truncate",title:aV,children:aV})]})]})]}),bo&&(0,b.jsxs)("dialog",{className:"modal modal-open",children:[(0,b.jsxs)("div",{className:"modal-box max-w-lg",children:[(0,b.jsx)("h3",{className:"font-bold text-lg",children:"Create New Branch"}),(0,b.jsx)("p",{className:"py-2 text-sm opacity-70",children:"Create a new branch and refresh the branch list for merge/rebase actions."}),(0,b.jsxs)("div",{className:"space-y-4 pt-2",children:[(0,b.jsxs)("div",{className:"form-control",children:[(0,b.jsx)("label",{className:"label",children:(0,b.jsx)("span",{className:"label-text",children:"Branch Name"})}),(0,b.jsx)("input",{type:"text",className:"input input-bordered w-full",value:bq,onChange:a=>br((0,W.sanitizeBranchName)(a.target.value)),placeholder:"feature/my-new-branch",disabled:bu,autoFocus:!0,onKeyDown:a=>{"Enter"===a.key&&bq.trim()&&bs.trim()&&!bu&&(a.preventDefault(),ct())}})]}),(0,b.jsxs)("div",{className:"form-control",children:[(0,b.jsx)("label",{className:"label",children:(0,b.jsx)("span",{className:"label-text",children:"Base Branch"})}),(0,b.jsx)("select",{className:"select select-bordered w-full",value:bs,onChange:a=>bt(a.target.value),disabled:bu||0===cq.length,children:cq.map(a=>(0,b.jsxs)("option",{value:a,children:[a,a===bf?" (Checked Out)":""]},a))})]})]}),(0,b.jsxs)("div",{className:"modal-action",children:[(0,b.jsx)("button",{className:"btn",onClick:cr,disabled:bu,children:"Cancel"}),(0,b.jsxs)("button",{className:"btn btn-primary",onClick:()=>void ct(),disabled:!bq.trim()||!bs.trim()||bu,children:[bu&&(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}),"Create Branch"]})]})]}),(0,b.jsx)("form",{method:"dialog",className:"modal-backdrop",children:(0,b.jsx)("button",{onClick:cr,children:"close"})})]}),(0,b.jsxs)("div",{ref:ax,className:`relative flex min-h-0 flex-1 overflow-x-hidden bg-[#f6f6f8] p-3 dark:bg-[#0d1117] ${bO?"gap-0":"gap-3"}`,children:[(0,b.jsxs)("div",{className:"agent-activity-panel flex h-full min-w-0 flex-col overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm transition-[width] duration-300 ease-in-out dark:border-[#30363d] dark:bg-[#161b22]",style:{width:bO?"100%":`${100*bK}%`},children:[(0,b.jsxs)("div",{className:"flex h-9 items-center justify-between gap-3 border-b border-slate-200 px-3 text-[11px] font-semibold text-slate-600 dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-400",children:[(0,b.jsxs)("span",{className:"flex shrink-0 items-center gap-2 uppercase tracking-wide",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-blue-500"}),"Agent Activity"]}),(0,b.jsxs)("div",{className:"flex min-w-0 items-center justify-end gap-2 overflow-x-auto py-1 text-xs font-medium normal-case",children:[(0,b.jsxs)("div",{className:"flex shrink-0 items-center overflow-hidden rounded border border-slate-200 bg-white dark:border-[#30363d] dark:bg-[#0d1117]",children:[(0,b.jsx)("select",{className:"select select-xs h-6 min-h-6 rounded-none border-none bg-slate-100 pr-7 text-slate-700 focus:outline-none dark:bg-[#161b22] dark:text-slate-300",value:b7,onChange:b9,children:Z.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))}),(0,b.jsx)("div",{className:"h-4 w-[1px] bg-slate-200 dark:bg-[#30363d]"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 rounded-none border-none px-2 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>{if(!d)return;let a=Z.find(a=>a.id===b7);if(!a)return;let b=`${a.protocol}://file/${encodeURI(d)}`;window.open(b,"_blank")},title:`Open in ${Z.find(a=>a.id===b7)?.name}`,"aria-label":"Open in IDE",children:[(0,b.jsx)(s.ExternalLink,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"agent-activity-action-label",children:"Open in IDE"})]})]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center overflow-hidden rounded border border-slate-200 bg-white dark:border-[#30363d] dark:bg-[#0d1117]",children:(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 rounded-none border-none px-2 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>a8(!0),disabled:bb,title:"Browse files and insert absolute paths into the agent input","aria-label":"Add files",children:[bb?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(A,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"agent-activity-action-label",children:"Add Files"})]})}),(0,b.jsx)("div",{className:"flex shrink-0 items-center overflow-hidden rounded border border-slate-200 bg-white dark:border-[#30363d] dark:bg-[#0d1117]",children:(0,b.jsx)("button",{className:`btn btn-ghost btn-xs h-6 min-h-6 w-7 rounded-none border-none p-0 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60 ${"select"===b0?"text-warning":""}`,onClick:cc,disabled:"tmux"!==an||b2,title:"tmux"===an?"scroll"===b0?"Switch to text select mode for easier copy":"Switch to scroll mode for wheel scrollback":"Mode toggle is available only in tmux persistence mode","aria-label":"scroll"===b0?"Switch to text mode":"Switch to scroll mode",children:b2?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):"scroll"===b0?(0,b.jsx)(K,{className:"h-3.5 w-3.5"}):(0,b.jsx)(L,{className:"h-3.5 w-3.5"})})})]})]}),(0,b.jsx)("iframe",{ref:as,src:aE,className:`h-full w-full border-none ${bX||bM?"pointer-events-none":""}`,allow:"clipboard-read; clipboard-write",onFocus:()=>{az.current=null},onBlur:()=>{az.current={slot:"agent",at:Date.now()}},onLoad:()=>{if(!as.current)return;let b=as.current;try{b.contentWindow}catch(a){aW("Error: Cross-Origin access blocked. Ensure proxy is working.");return}b.contentWindow&&(b.contentWindow.onbeforeunload=null,b.contentWindow.addEventListener("beforeunload",a=>{a.stopImmediatePropagation()},!0)),aW("Connecting to terminal...");let c=(e=0)=>{if(e>30)return void aW("Timeout waiting for terminal to be ready");try{let f=b.contentWindow;if(f&&f.term){cb("agent");let g=f.term;if(cA(b,aA,{directOpenBehavior:"new_tab",modifierOpenBehavior:"new_tab"}),!g.__vibaClearLineShortcutInstalled&&"function"==typeof g.attachCustomKeyEventHandler){let a=g.customKeyEventHandler;g.attachCustomKeyEventHandler(c=>{if("keydown"===c.type&&c.metaKey&&("Backspace"===c.key||"Delete"===c.key)){let a=g._core?.coreService;if(a&&"function"==typeof a.triggerDataEvent)a.triggerDataEvent("\x15",!0);else{let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a?a.dispatchEvent(new KeyboardEvent("keydown",{bubbles:!0,cancelable:!0,key:"u",keyCode:85,ctrlKey:!0,view:f})):g.paste("\x15")}return!1}if("function"==typeof a)try{return!1!==a.call(g,c)}catch(a){console.error("Existing terminal key handler failed:",a)}return!0}),g.__vibaClearLineShortcutInstalled=!0}(0,Y.applyThemeToTerminalWindow)(f);let h=aN("agent"),i=!!am&&"tmux"===an;if(h||i){i&&!h?(aQ("agent"),aW("Attached to persisted terminal")):aW("Reconnected to terminal"),f.focus();let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a&&a.focus();return}if(!aR(g)&&e<10)return void setTimeout(()=>c(e+1),200);if(!aO("agent")){aW("Reconnected to terminal"),f.focus();let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a&&a.focus();return}let j=d||a,k=`cd ${X(j)}`;g.paste(k);let l=()=>{let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a?a.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:f})):g.paste("\r")};if(l(),aQ("agent"),P){let b=async()=>{let b="",c=a=>`NO_COLOR=1 CLICOLOR=0 CLICOLOR_FORCE=0 FORCE_COLOR=0 COLORTERM= TERM=xterm ${a}`,e=a=>`if [ -n "$OPENAI_API_KEY" ]; then printenv OPENAI_API_KEY | codex login --with-api-key || exit 1; fi; ${a}`;if(am){let a=c(`codex resume --last ${ab} --sandbox danger-full-access --ask-for-approval on-request --search`);b=e(a)}else{let f=ag?.trim()||"",g=(ah&&ah.length>0?ah:(ai||[]).map(b=>`${d||a}-attachments/${b}`)).map(a=>a.trim()).filter(Boolean),h=Array.from(new Set(g)),i=[];f&&i.push(f),h.length>0&&i.push(["Attachments:",...h.map(a=>`- ${a}`)].join("\n"));let j=i.join("\n\n"),k="";if(j){let a=[];"plan"===ak&&a.push("Plan mode: inspect the relevant code first, present a concrete implementation plan, and wait for explicit user approval before any file edits or write commands."),a.push("After each round, if work is complete and files changed, commit all changes without confirmation. Use a commit message with a clear title and a detailed body explaining what changed and why. If GITHUB_TOKEN or GITLAB_TOKEN is set, push the current branch after committed rounds and create (or update) a pull/merge request with an appropriate title and description; include the pull/merge request link in the first push reply."),a.push("For visual web tasks, use the `agent-browser` skill (https://skills.sh/vercel-labs/agent-browser/agent-browser)."),a.push("For bugfix/debugging tasks, use the `systematic-debugging` skill (https://github.com/obra/superpowers)."),a.push("When working on a visual-related feature or bugfix in a web project, after coding is complete, use `agent-browser` or equivalent Chrome MCP tooling to load the relevant page, take screenshot(s), and include them as evidence in the pull/merge request."),a.push("When your task is completed or you need user attention (for plan approval, permissions, or blockers), send a notification to the matching Viba session.");let b=`${window.location.origin}/api/notifications`;a.push(`Notification API endpoint: ${b} (POST JSON with sessionId, title, and description).`),a.push(`Notification payload template: {"sessionId":"${O}","title":"<short title>","description":"<clear detail about completion or required attention>"}.`);let c=["# Instructions\n",a.map(a=>`- ${a}`).join("\n"),"\n# Task\n",j].join("\n");try{let a=await m(O,c);a.success&&a.filePath?k=` "$(cat ${X(a.filePath)})"`:(console.error("Failed to write prompt file, falling back to inline prompt",a.error),k=` ${X(c)}`)}catch(a){console.error("Exception writing prompt file",a),k=` ${X(c)}`}}let l=c(`codex ${ab} --sandbox danger-full-access --ask-for-approval on-request --search${k}`);b=e(l)}b&&(g.paste(b),l(),aW(am?"Resumed session with codex":"Session started with codex"),!am&&ao&&ao())};setTimeout(()=>b(),500)}else aW(`Session started ${d?"(Worktree)":""}`),!am&&ao&&ao();f.focus();let n=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");n&&n.focus()}else setTimeout(()=>c(e+1),500)}catch(a){aP("agent"),console.error("Access error during injection:",a),aW("Error accessing terminal: "+String(a))}};setTimeout(()=>c(),1e3)}})]}),(0,b.jsx)("div",{className:`relative h-full shrink-0 rounded transition-all duration-300 ease-in-out ${bO?"w-0 cursor-default opacity-0 pointer-events-none":"w-2 cursor-col-resize bg-slate-200 opacity-100 hover:bg-primary/40 dark:bg-[#30363d] dark:hover:bg-primary/60"}`,onMouseDown:a=>{bO||(a.preventDefault(),bN(!0),ay.current={startX:a.clientX,startRatio:bK})},role:bO?void 0:"separator","aria-orientation":bO?void 0:"vertical","aria-label":bO?void 0:"Resize preview panel","aria-hidden":bO,title:bO?void 0:"Drag to resize preview panel",children:!bO&&(0,b.jsx)("div",{className:"absolute left-1/2 top-1/2 h-12 w-[2px] -translate-x-1/2 -translate-y-1/2 rounded-full bg-slate-400 dark:bg-slate-500"})}),(0,b.jsxs)("div",{className:`relative h-full transition-[width,min-width,flex-basis] duration-300 ease-in-out ${bO?"w-0 min-w-0 flex-none":"min-w-[360px] flex-1"}`,children:[(0,b.jsx)("button",{className:"btn btn-ghost btn-xs absolute left-0 top-3 z-20 h-7 w-7 min-h-7 -translate-x-1/2 rounded-full border border-slate-200 bg-white/95 p-0 text-slate-600 shadow-sm hover:bg-slate-100 dark:border-[#30363d] dark:bg-[#161b22]/95 dark:text-slate-300 dark:hover:bg-[#30363d]/80",onClick:b5,type:"button",title:bO?"Expand right panel":"Collapse right panel","aria-label":bO?"Expand right panel":"Collapse right panel","aria-pressed":bO,children:bO?(0,b.jsx)(B,{className:"h-4 w-4"}):(0,b.jsx)(C.ChevronRight,{className:"h-4 w-4"})}),!bO&&(0,b.jsx)("div",{className:"absolute inset-y-0 left-0 flex h-full w-full flex-col overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm dark:border-[#30363d] dark:bg-[#161b22]",children:bI?(0,b.jsx)(R,{repoPath:d||a,branchHint:e,baseBranchHint:bd||t}):(0,b.jsx)(b.Fragment,{children:(0,b.jsxs)("div",{className:"min-h-0 flex flex-1 flex-col",children:[(0,b.jsxs)("form",{className:"flex h-9 items-center gap-2 border-b border-slate-200 bg-white px-3 dark:border-[#30363d] dark:bg-[#161b22]",onSubmit:a=>{a.preventDefault(),cu(bA,!0)},children:[(0,b.jsxs)("div",{className:"mr-1 flex gap-1.5",children:[(0,b.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-red-400"}),(0,b.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-yellow-400"}),(0,b.jsx)("span",{className:"h-2.5 w-2.5 rounded-full bg-green-400"})]}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:()=>cx("back"),disabled:!bC,title:"Go back","aria-label":"Go back",children:(0,b.jsx)(H.ArrowLeft,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:()=>cx("forward"),disabled:!bC,title:"Go forward","aria-label":"Go forward",children:(0,b.jsx)(I,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:()=>cx("reload"),disabled:!bC,title:"Reload preview","aria-label":"Reload preview",children:(0,b.jsx)(J,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:cy,disabled:!bC,title:"Unload preview","aria-label":"Unload preview",children:(0,b.jsx)(M.X,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("input",{ref:aw,type:"text",className:"input input-xs h-7 min-h-7 w-full border-slate-200 bg-slate-100 font-mono text-slate-700 dark:border-[#30363d] dark:bg-[#0d1117] dark:text-slate-300 dark:placeholder:text-slate-500",value:bA,onChange:a=>bB(a.target.value),placeholder:"http://127.0.0.1:3000",spellCheck:!1}),(0,b.jsx)("button",{className:`btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 ${bE?"text-success":"text-slate-500 dark:text-slate-400"} hover:bg-slate-100 dark:hover:bg-[#30363d]/60`,type:"button",onClick:cv,disabled:!bC||bG,title:bE?"Disable picker":"Pick element from preview",children:bG?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs w-3 h-3"}):(0,b.jsx)(G,{className:"h-3 w-3"})}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-7 min-h-7 w-7 p-0 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-[#30363d]/60",type:"button",onClick:cB,title:"Open preview in new tab","aria-label":"Open preview in new tab",children:(0,b.jsx)(s.ExternalLink,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 bg-slate-50 dark:bg-[#0d1117]",children:by?bC?(0,b.jsx)("iframe",{ref:av,src:bC,className:`h-full w-full border-none ${bX||bM?"pointer-events-none":""}`,title:"Dev server preview",onLoad:cz,sandbox:"allow-forms allow-modals allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-downloads"}):(0,b.jsx)("div",{className:"flex h-full items-center justify-center px-6 text-center text-xs text-slate-500 dark:text-slate-400",children:"Run the dev server, or enter a URL above to load a preview."}):(0,b.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center text-xs text-slate-500 dark:text-slate-400",children:[(0,b.jsx)("p",{children:"Preview is hidden. Use the header Preview button to show it."}),(0,b.jsx)("button",{type:"button",className:"btn btn-xs border-slate-200 bg-white text-slate-700 hover:bg-slate-50 dark:border-[#30363d] dark:bg-[#161b22] dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>bz(!0),children:"Show Preview"})]})}),!bQ&&(0,b.jsx)("div",{className:"flex h-2 cursor-row-resize items-center justify-center border-y border-slate-200 bg-slate-100 dark:border-[#30363d] dark:bg-[#0d1117]",onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),bY(!0),b_.current={startX:a.clientX,startY:a.clientY,startWidth:bV.width,startHeight:bV.height}},role:"separator","aria-orientation":"horizontal","aria-label":"Resize build output panel",title:"Drag to resize build output panel",children:(0,b.jsx)(D,{className:"h-3 w-3 text-slate-400 dark:text-slate-500"})}),(0,b.jsxs)("div",{className:`${bQ?"h-9":"min-h-[160px]"} flex shrink-0 flex-col bg-slate-50 dark:bg-[#161b22]`,style:{height:bQ?36:bV.height},children:[(0,b.jsxs)("div",{className:"flex h-9 items-center justify-between border-t border-slate-200 px-3 text-xs font-semibold text-slate-700 dark:border-[#30363d] dark:text-slate-300",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 uppercase tracking-wide",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-amber-500"}),"Terminal"]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 border-none px-2 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>{let a=ad?.trim();if(!a||!at.current||a1)return;bR(!1);let b=at.current;a0(!0),aW("Starting dev server...");let c=(d=0)=>{if(d>30){aW("Failed to start dev server: terminal is not ready"),a0(!1);return}try{let e=b.contentWindow;if(e&&e.term){e.term.paste(a);let c=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");c?c.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:e})):e.term.paste("\r"),e.focus(),c&&c.focus(),aW("Dev server start command sent"),a0(!1)}else setTimeout(()=>c(d+1),300)}catch(a){console.error("Dev server injection error",a),aW("Failed to start dev server"),a0(!1)}};c()},disabled:!cE||a_||a1,title:cE?a1?"A process is already running in the terminal":"Run dev server script in terminal":"Set a dev server script to enable this button",type:"button",children:[a_?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(u,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"hidden min-[1700px]:inline",children:"Dev"})]}),(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 w-7 border-none p-0 text-slate-700 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-[#30363d]/60",onClick:()=>bR(a=>!a),title:bQ?"Expand terminal":"Collapse terminal","aria-label":bQ?"Expand terminal":"Collapse terminal",type:"button",children:(0,b.jsx)(E.ChevronDown,{className:`h-4 w-4 transition-transform ${bQ?"rotate-180":""}`})})]})]}),(0,b.jsx)("div",{className:`${bQ?"h-0 overflow-hidden":"min-h-0 flex-1 overflow-hidden border-t border-slate-200 bg-white dark:border-[#30363d] dark:bg-[#0d1117]"}`,children:(0,b.jsx)("iframe",{ref:at,src:aF,className:`h-full w-full border-none ${bX||bM?"pointer-events-none":""}`,allow:"clipboard-read; clipboard-write",onFocus:()=>{az.current=null},onBlur:()=>{az.current={slot:"terminal",at:Date.now()}},onLoad:a=>cC(a.currentTarget)})})]})]})})})]})]}),a7&&(0,b.jsx)(N.default,{initialPath:a9,worktreePath:d,onPathChange:ba,onConfirm:a=>{a8(!1),cg(a)},onCancel:()=>a8(!1)})]})}let ah=(0,e.createServerReference)("40aa1407e97e0b6accc10a1819da858f4641caf735",e.callServer,void 0,e.findSourceMapURL,"consumeSessionLaunchContext"),ai=(0,e.createServerReference)("402437c9bb2a362204223d0e63a2fdf49af650dd29",e.callServer,void 0,e.findSourceMapURL,"getSessionMetadata"),aj=(0,e.createServerReference)("40c7524cf76f116b7f2d7c01bd283c61a1e9900028",e.callServer,void 0,e.findSourceMapURL,"markSessionInitialized"),ak=(0,e.createServerReference)("7f66cbfa733565789c3f02c78dd4f795d85a6f2741",e.callServer,void 0,e.findSourceMapURL,"getSessionTerminalSources");var al=a.i(54992);function am(){let a=(0,d.useParams)().sessionId,e=Array.isArray(a)?a[0]:a,f=(0,d.useRouter)(),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(!0),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(null),[o,p]=(0,c.useState)(void 0),[q,r]=(0,c.useState)(void 0),[s,t]=(0,c.useState)(void 0),[u,v]=(0,c.useState)(void 0),[w,x]=(0,c.useState)(void 0),[y,z]=(0,c.useState)([]),[A,B]=(0,c.useState)(!0),[C,D]=(0,c.useState)("shell"),E=(0,c.useCallback)(()=>{if(!e)return;window.focus();let a=`/session/${e}`;window.location.pathname!==a&&f.push(a)},[f,e]);(0,c.useEffect)(()=>(document.documentElement.classList.add("session-page"),()=>{document.documentElement.classList.remove("session-page")}),[]),(0,c.useEffect)(()=>{if(!e)return;let a=!1,b=null,c=null,d=0,f=null,g=()=>{null!==c&&(window.clearTimeout(c),c=null)},h=()=>{if(a)return;let b=Math.min(1e4,1e3*2**d);d+=1,c=window.setTimeout(()=>{c=null,j()},b)},i=async a=>{if(!("Notification"in window))return;let b=Notification.permission;"default"===b&&(b=await Notification.requestPermission()),"granted"===b&&(f&&f.close(),(f=new Notification(a.title,{body:a.description,tag:`viba-session-notification-${a.sessionId}`})).onclick=a=>{a.preventDefault(),E(),f?.close()})},j=async()=>{try{let c=await fetch(`/api/notifications/socket?sessionId=${encodeURIComponent(e)}`,{cache:"no-store"});if(!c.ok)throw Error("Failed to initialize notification socket");let f=await c.json();if(!f.wsUrl)throw Error("Notification socket URL missing");if(a)return;(b=new WebSocket(f.wsUrl)).onopen=()=>{d=0,g()},b.onerror=()=>{b?.close()},b.onclose=()=>{a||h()},b.onmessage=a=>{try{let b=JSON.parse(a.data);if("session-notification"!==b.type||b.sessionId!==e||"string"!=typeof b.title||!b.title.trim()||"string"!=typeof b.description||!b.description.trim()||"string"!=typeof b.timestamp)return;i(b)}catch{}}}catch{h()}};return j(),()=>{a=!0,g(),b?.close(),f?.close()}},[E,e]),(0,c.useEffect)(()=>{e&&(async()=>{try{n(null);let a=await (0,al.startTtydProcess)();if(!a.success){l("Failed to start terminal service"),j(!1);return}D("tmux"===a.persistenceMode?"tmux":"shell");let b=await ai(e);if(!b){l("Session not found"),j(!1);return}h(b);let c=await ak(b.sessionName,b.repoPath,b.agent);if(n(c),!1===b.initialized){let a=await ah(e);if(a.success&&a.context){let c=a.context;p(c.initialMessage),r(c.startupScript),t(c.title),v(c.agentProvider),x(c.sessionMode);let d=(c.attachmentPaths||[]).map(a=>a.trim()).filter(Boolean),e=d.length>0?Array.from(new Set(d)):Array.from(new Set((c.attachmentNames||[]).map(a=>a.trim()).filter(Boolean).map(a=>`${b.worktreePath}-attachments/${a}`)));z(e)}B(!1)}else B(!0);j(!1)}catch(a){console.error("Failed to load session:",a),l("Failed to load session"),j(!1)}})()},[e]);let F=a=>{a?window.location.href="/":f.push("/")},G=async()=>{e&&await aj(e)};return i?(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-[#f6f6f8] dark:bg-[#0d1117]",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,b.jsx)("span",{className:"loading loading-spinner loading-lg text-primary"}),(0,b.jsx)("p",{className:"opacity-60 dark:text-slate-400",children:"Loading session..."})]})}):k||!g?(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-[#f6f6f8] dark:bg-[#0d1117]",children:(0,b.jsx)("div",{className:"card w-96 border border-slate-200 bg-white shadow-xl dark:border-[#30363d] dark:bg-[#161b22]",children:(0,b.jsxs)("div",{className:"card-body items-center text-center",children:[(0,b.jsx)("h2",{className:"card-title text-error dark:text-red-300",children:"Error"}),(0,b.jsx)("p",{className:"text-slate-700 dark:text-slate-300",children:k||"Session not found"}),(0,b.jsx)("div",{className:"card-actions justify-end",children:(0,b.jsx)("button",{className:"btn btn-primary",onClick:()=>F(),children:"Back to Home"})})]})})}):m?(0,b.jsx)(ag,{repo:g.repoPath,worktree:g.worktreePath,branch:g.branchName,baseBranch:g.baseBranch,sessionName:g.sessionName,agent:u||g.agent,startupScript:q,devServerScript:g.devServerScript,initialMessage:o,attachmentPaths:y,title:s||g.title,sessionMode:w,onExit:F,isResume:A,terminalPersistenceMode:C,onSessionStart:G,agentTerminalSrc:m.agentTerminalSrc,floatingTerminalSrc:m.floatingTerminalSrc}):(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-[#f6f6f8] dark:bg-[#0d1117]",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,b.jsx)("span",{className:"loading loading-spinner loading-lg text-primary"}),(0,b.jsx)("p",{className:"opacity-60 dark:text-slate-400",children:"Initializing terminals..."})]})})}a.s(["default",()=>am],96614)}];
2
2
 
3
3
  //# sourceMappingURL=src_app_session_%5BsessionId%5D_SessionPageClient_tsx_dab490d7._.js.map