@shipit-ai/cli 1.165.0-pr6.73bb2dc → 1.165.0-pr9.2eeb845

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 (186) hide show
  1. package/dist/tsconfig.build.tsbuildinfo +1 -1
  2. package/package.json +1 -1
  3. package/web/.next/BUILD_ID +1 -1
  4. package/web/.next/build-manifest.json +3 -3
  5. package/web/.next/fallback-build-manifest.json +3 -3
  6. package/web/.next/prerender-manifest.json +3 -3
  7. package/web/.next/required-server-files.js +1 -1
  8. package/web/.next/required-server-files.json +1 -1
  9. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  10. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  11. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  12. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  13. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  14. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  15. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  16. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  18. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  19. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  26. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  27. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  29. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  30. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  31. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  33. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  34. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  35. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  36. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  37. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  38. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  39. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  40. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  41. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  42. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  43. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  44. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  45. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  47. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  48. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  50. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  53. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  54. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/_global-error.html +1 -1
  56. package/web/.next/server/app/_global-error.rsc +1 -1
  57. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  58. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  59. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  60. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  61. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  62. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  63. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  64. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/api/sessions/route.js +2 -2
  66. package/web/.next/server/app/settings/page/server-reference-manifest.json +11 -11
  67. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  68. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  70. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  71. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  73. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  74. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  76. package/web/.next/server/app/version/page.js.nft.json +1 -1
  77. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js +1 -1
  79. package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js.map +1 -1
  80. package/web/.next/server/chunks/[root-of-the-server]__0_.w-eb._.js +1 -1
  81. package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
  82. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js +1 -1
  83. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js.map +1 -1
  84. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js +1 -1
  85. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js.map +1 -1
  86. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js +1 -1
  87. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js.map +1 -1
  88. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
  89. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
  90. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
  91. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
  92. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
  93. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
  94. package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0l-25e2.js +1 -1
  95. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
  96. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
  97. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0r32z03._.js → [root-of-the-server]__01~y8wi._.js} +2 -2
  98. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0r32z03._.js.map → [root-of-the-server]__01~y8wi._.js.map} +1 -1
  99. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0d_0_fp._.js → [root-of-the-server]__0np51e2._.js} +2 -2
  100. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0d_0_fp._.js.map → [root-of-the-server]__0np51e2._.js.map} +1 -1
  101. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
  102. package/web/.next/server/chunks/ssr/{[root-of-the-server]__045sv4b._.js → [root-of-the-server]__0uxn6-j._.js} +2 -2
  103. package/web/.next/server/chunks/ssr/{[root-of-the-server]__045sv4b._.js.map → [root-of-the-server]__0uxn6-j._.js.map} +1 -1
  104. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0_ag.8y._.js → [root-of-the-server]__0vd39s9._.js} +2 -2
  105. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0_ag.8y._.js.map → [root-of-the-server]__0vd39s9._.js.map} +1 -1
  106. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0l4d7e.._.js → [root-of-the-server]__0~h382a._.js} +2 -2
  107. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0l4d7e.._.js.map → [root-of-the-server]__0~h382a._.js.map} +1 -1
  108. package/web/.next/server/chunks/ssr/[root-of-the-server]__12g8h3_._.js +1 -1
  109. package/web/.next/server/chunks/ssr/[root-of-the-server]__12qqi.~._.js +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__12qqi.~._.js.map +1 -1
  111. package/web/.next/server/chunks/ssr/_01mq~sm._.js +1 -1
  112. package/web/.next/server/chunks/ssr/_01mq~sm._.js.map +1 -1
  113. package/web/.next/server/chunks/ssr/_078s~4v._.js +3 -0
  114. package/web/.next/server/chunks/ssr/{_0nk99mv._.js.map → _078s~4v._.js.map} +1 -1
  115. package/web/.next/server/chunks/ssr/_0ez.1o4._.js +1 -1
  116. package/web/.next/server/chunks/ssr/_0ez.1o4._.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/{_0vuo45m._.js → _0gze8fc._.js} +2 -2
  118. package/web/.next/server/chunks/ssr/{_0vuo45m._.js.map → _0gze8fc._.js.map} +1 -1
  119. package/web/.next/server/chunks/ssr/_0j9vx-1._.js +1 -1
  120. package/web/.next/server/chunks/ssr/_0jpbsh_._.js +1 -1
  121. package/web/.next/server/chunks/ssr/{_0.ovuds._.js → _0prp~74._.js} +2 -2
  122. package/web/.next/server/chunks/ssr/{_0.ovuds._.js.map → _0prp~74._.js.map} +1 -1
  123. package/web/.next/server/chunks/ssr/_0rvaoj4._.js +1 -1
  124. package/web/.next/server/chunks/ssr/_0v.yfmg._.js +1 -1
  125. package/web/.next/server/chunks/ssr/_0v.yfmg._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
  127. package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
  128. package/web/.next/server/chunks/ssr/_11kuznh._.js +1 -1
  129. package/web/.next/server/chunks/ssr/_11kuznh._.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/node_modules__pnpm_0ayym15._.js +3 -0
  131. package/web/.next/server/chunks/ssr/{node_modules__pnpm_0xyo1be._.js.map → node_modules__pnpm_0ayym15._.js.map} +1 -1
  132. package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js +1 -1
  133. package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js +1 -1
  135. package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/src_presentation_web_05-w-~v._.js +1 -1
  137. package/web/.next/server/chunks/ssr/src_presentation_web_05-w-~v._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js +2 -2
  139. package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js +1 -1
  141. package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js +1 -1
  143. package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js +2 -2
  145. package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js +1 -1
  147. package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js +1 -1
  149. package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js +1 -1
  151. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js +1 -1
  153. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js +1 -1
  155. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_load-settings_ts_0b8f3pf._.js +1 -1
  157. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
  158. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
  159. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
  160. package/web/.next/server/middleware-build-manifest.js +3 -3
  161. package/web/.next/server/pages/500.html +1 -1
  162. package/web/.next/server/server-reference-manifest.js +1 -1
  163. package/web/.next/server/server-reference-manifest.json +49 -49
  164. package/web/.next/static/chunks/{0nrz01gtq2m_3.js → 08m43hy-s53ew.js} +1 -1
  165. package/web/.next/static/chunks/{0awgof~eixab_.js → 0dhzb8ku1-58i.js} +1 -1
  166. package/web/.next/static/chunks/{0valga-dqzmhc.js → 0he4~0v5flvbl.js} +1 -1
  167. package/web/.next/static/chunks/{0n0246ks_vn.1.js → 0k5slz11ri6.3.js} +1 -1
  168. package/web/.next/static/chunks/0lvi-qwkq0s-f.js +1 -0
  169. package/web/.next/static/chunks/{1251upj_n9u1w.js → 0sfbpbi5-kdry.js} +1 -1
  170. package/web/.next/static/chunks/{0.n-rqi~m7w5b.js → 0t-nbheb_yokh.js} +1 -1
  171. package/web/.next/static/chunks/{17fzkugp_pasg.js → 0t.x5g9s1k9gg.js} +1 -1
  172. package/web/.next/static/chunks/{07-c.m90ehbec.js → 0xmadesypntsx.js} +2 -2
  173. package/web/.next/static/chunks/{0j8ia8bnf0y7f.js → 0y9bmk.ka6ovn.js} +1 -1
  174. package/web/.next/static/chunks/{0cqq2918ppqnt.js → 0yf3nvb6oc2ue.js} +1 -1
  175. package/web/.next/static/chunks/{103cj..c9pj2h.js → 0~5~d2r0okbzu.js} +1 -1
  176. package/web/.next/static/chunks/0~_228bvayobk.js +1 -0
  177. package/web/.next/static/chunks/{0i4okem~87.rs.js → 0~q-rpyccnova.js} +3 -3
  178. package/web/.next/static/chunks/{09b2usag59_bi.js → 14bjyfto_93~m.js} +1 -1
  179. package/web/package.json +1 -1
  180. package/web/.next/server/chunks/ssr/_0nk99mv._.js +0 -3
  181. package/web/.next/server/chunks/ssr/node_modules__pnpm_0xyo1be._.js +0 -3
  182. package/web/.next/static/chunks/0.vgg~~pr95a4.js +0 -1
  183. package/web/.next/static/chunks/0zz.xgsd83.3n.js +0 -1
  184. /package/web/.next/static/{2RnylCzzvxVSXHf29vJrX → sDp6ega1FNIAe6xtmh7NH}/_buildManifest.js +0 -0
  185. /package/web/.next/static/{2RnylCzzvxVSXHf29vJrX → sDp6ega1FNIAe6xtmh7NH}/_clientMiddlewareManifest.js +0 -0
  186. /package/web/.next/static/{2RnylCzzvxVSXHf29vJrX → sDp6ega1FNIAe6xtmh7NH}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
1
  module.exports=[26342,a=>{"use strict";var b=a.i(37017),c=a.i(80925),d=a.i(52789),e=a.i(41823),f=a.i(87699),g=a.i(58378),h=a.i(31599),i=a.i(92600),j=a.i(23295),k=a.i(44307),l=a.i(10803),m=a.i(42426),n=a.i(77629),o=a.i(47737),p=a.i(15215),q=a.i(30316),r=a.i(24743);a.i(20152);var s=a.i(30690),t=a.i(83816),u=a.i(82534),v=a.i(83310),w=a.i(39642),x=a.i(15603),y=a.i(75776),z=a.i(93695),A=a.i(13093),B=a.i(53057);a.i(15462);var C=a.i(41327),D=a.i(29052),E=a.i(71974),F=a.i(73287),G=a.i(46388),H=a.i(23186);let I=["",{children:["tools",{children:["__PAGE__",{},{metadata:{},page:[()=>a.r(61443),"[project]/src/presentation/web/app/tools/page.tsx"]},[]]},{metadata:{}},[]]},{layout:[()=>a.r(59975),"[project]/src/presentation/web/app/layout.tsx"],"not-found":[()=>a.r(63754),"[project]/src/presentation/web/app/not-found.tsx"],forbidden:[()=>a.r(18018),"[project]/node_modules/.pnpm/next@16.2.2_@babel+core@7.29.0_@playwright+test@1.59.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>a.r(7974),"[project]/node_modules/.pnpm/next@16.2.2_@babel+core@7.29.0_@playwright+test@1.59.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/builtin/unauthorized.js"],"global-error":[()=>a.r(47407),"[project]/src/presentation/web/app/global-error.tsx"]},[]],J={require:a.r.bind(a),loadChunk:a.l.bind(a)},K=new b.AppPageRouteModule({definition:{kind:c.RouteKind.APP_PAGE,page:"/tools/page",pathname:"/tools",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function L(b,M,N){var O,P,Q,R,S;N.requestMeta&&(0,f.setRequestMeta)(b,N.requestMeta),K.isDev&&(0,f.addRequestMeta)(b,"devRequestTimingInternalsEnd",process.hrtime.bigint());let T=!!(0,f.getRequestMeta)(b,"minimalMode"),U="/tools/page";U=U.replace(/\/index$/,"")||"/";let V=await K.prepare(b,M,{srcPage:U,multiZoneDraftMode:!1});if(!V)return M.statusCode=400,M.end("Bad Request"),null==N.waitUntil||N.waitUntil.call(N,Promise.resolve()),null;let{buildId:W,query:X,params:Y,pageIsDynamic:Z,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,serverActionsManifest:ab,clientReferenceManifest:ac,subresourceIntegrityManifest:ad,prerenderManifest:ae,isDraftMode:af,resolvedPathname:ag,revalidateOnlyGenerated:ah,routerServerContext:ai,nextConfig:aj,parsedUrl:ak,interceptionRoutePatterns:al,deploymentId:am,clientAssetToken:an}=V,ao=(0,o.normalizeAppPath)(U),{isOnDemandRevalidate:ap}=V,aq=aj.experimental.ppr&&!aj.cacheComponents&&(0,G.isInterceptionRouteAppPath)(ag)?null:K.match(ag,ae),ar=(null==aq?void 0:aq.route)??null,as=!!ae.routes[ag],at=b.headers["user-agent"]||"",au=(0,r.getBotType)(at),av=(0,n.isHtmlBotRequest)(b),aw=(0,f.getRequestMeta)(b,"isPrefetchRSCRequest")??"1"===b.headers[q.NEXT_ROUTER_PREFETCH_HEADER],ax=(0,f.getRequestMeta)(b,"isRSCRequest")??!!b.headers[q.RSC_HEADER],ay=(0,p.getIsPossibleServerAction)(b),az=(0,k.checkIsAppPPREnabled)(aj.experimental.ppr),aA=b.headers[v.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,f.getRequestMeta)(b,"postponed")&&T&&az&&ay&&aA&&"string"==typeof aA){let c=parseInt(aA,10),{maxPostponedStateSize:d,maxPostponedStateSizeBytes:e}=(0,B.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize);if(!isNaN(c)&&c>0){if(c>e)return M.statusCode=413,M.end((0,B.getPostponedStateExceededErrorMessage)(d)),null==N.waitUntil||N.waitUntil.call(N,Promise.resolve()),null;let g="1 MB",h=(null==(S=aj.experimental.serverActions)?void 0:S.bodySizeLimit)??g,i=c+(h!==g?a.r(91754).parse(h):1048576),j=await (0,B.readBodyWithSizeLimit)(b,i);if(null===j)return M.statusCode=413,M.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==N.waitUntil||N.waitUntil.call(N,Promise.resolve()),null;if(j.length>=c){let a=j.subarray(0,c).toString("utf8");(0,f.addRequestMeta)(b,"postponed",a);let d=j.subarray(c);(0,f.addRequestMeta)(b,"actionBody",d)}else throw Object.defineProperty(Error(`invariant: expected ${c} bytes of postponed state but only received ${j.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,f.getRequestMeta)(b,"postponed")&&az&&"1"===b.headers[v.NEXT_RESUME_HEADER]&&"POST"===b.method){let{maxPostponedStateSize:a,maxPostponedStateSizeBytes:c}=(0,B.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize),d=await (0,B.readBodyWithSizeLimit)(b,c);if(null===d)return M.statusCode=413,M.end((0,B.getPostponedStateExceededErrorMessage)(a)),null==N.waitUntil||N.waitUntil.call(N,Promise.resolve()),null;let e=d.toString("utf8");(0,f.addRequestMeta)(b,"postponed",e)}let aB=!0===K.isDev||!0===aj.experimental.exposeTestingApiInProductionBuild,aC=aB&&("1"===b.headers[q.NEXT_INSTANT_PREFETCH_HEADER]||void 0===b.headers[q.RSC_HEADER]&&"string"==typeof b.headers.cookie&&b.headers.cookie.includes(q.NEXT_INSTANT_TEST_COOKIE+"=")),aD=(az||aC)&&((null==(O=ae.routes[ao]??ae.dynamicRoutes[ao])?void 0:O.renderingMode)==="PARTIALLY_STATIC"||aC&&(aB||(null==ai?void 0:ai.experimentalTestProxy)===!0)),aE=aC&&aD,aF=aE&&!0===K.isDev,aG=!1,aH=aD?(0,f.getRequestMeta)(b,"postponed"):void 0,aI=null==(P=ae.routes[ag])?void 0:P.prefetchDataRoute,aJ=aD&&ax&&!aw&&!aI;T&&(aJ=aJ&&!!aH);let aK=(0,f.getRequestMeta)(b,"segmentPrefetchRSCRequest"),aL=(!au||!aD)&&(!at||(0,n.shouldServeStreamingMetadata)(at,aj.htmlLimitedBots)),aM=!!((ar||as||ae.routes[ao])&&!(au&&aD)),aN=aD&&!0===aj.cacheComponents,aO=!0===K.isDev||!aM||"string"==typeof aH||(aN&&(0,f.getRequestMeta)(b,"onCacheEntryV2")?aJ&&!T:aJ),aP=!!au&&aD,aQ=(null==ar?void 0:ar.remainingPrerenderableParams)??[],aR=(null==ar?void 0:ar.fallback)===null&&((null==(Q=ar.fallbackRootParams)?void 0:Q.length)??0)>0,aS=null;if(!af&&aM&&!aO&&!ay&&!aH&&!aJ){let a=aq?"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:aq.source:null;if(!0===aj.experimental.partialFallbacks&&a&&(null==ar?void 0:ar.fallbackRouteParams)&&!aR){if(aQ.length>0){let b,c=(b=new Map(aQ.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,H.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==Y?void 0:Y[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace(function(a){let{repeat:b,optional:c}=(0,H.getParamProperties)(a.paramType);return c?`[[...${a.paramName}]]`:b?`[...${a.paramName}]`:`[${a.paramName}]`}(d),f)}).join("/")||"/");aS=c!==a?c:null}}else aS=ag}let aT=aS;!aT&&(K.isDev||aM&&Z&&(null==ar?void 0:ar.fallbackRouteParams)&&!ay)&&(aT=ag),K.isDev||af||!aM||!ax||aJ||(0,i.stripFlightHeaders)(b.headers);let aU={...C,tree:I,handler:L,routeModule:K,__next_app__:J};ab&&ac&&(0,m.setManifestsSingleton)({page:U,clientReferenceManifest:ac,serverActionsManifest:ab});let aV=b.method||"GET",aW=(0,e.getTracer)(),aX=aW.getActiveScopeSpan(),aY=!!(null==ai?void 0:ai.isWrappedByNextServer),aZ=!0===aj.experimental.partialFallbacks&&aQ.length>0?(null==ar||null==(R=ar.fallbackRouteParams)?void 0:R.filter(a=>!aQ.some(b=>b.paramName===a.paramName)))??[]:[],a$=async()=>((null==ai?void 0:ai.render404)?await ai.render404(b,M,ak,!1):M.end("This page could not be found"),null);try{let a,d=K.getVaryHeader(ag,al);M.setHeader("Vary",d);let i=async(c,d)=>{let e=new j.NodeNextRequest(b),f=new j.NodeNextResponse(M);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":M.statusCode,"next.rsc":!1});let b=aW.getRootSpanAttributes();if(!b)return;if(b.get("next.span_type")!==g.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${b.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=b.get("next.route");if(d){let b=`${aV} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":b}),c.updateName(b),a&&a!==c&&(a.setAttribute("http.route",d),a.updateName(b))}else c.updateName(`${aV} ${U}`)})},k=(0,f.getRequestMeta)(b,"incrementalCache")||await K.getIncrementalCache(b,aj,ae,T);null==k||k.resetRequestCache(),globalThis.__incrementalCache=k;let m=async({span:a,postponed:c,fallbackRouteParams:d,forceStaticRender:e})=>{let g={query:X,params:Y,page:ao,sharedContext:{buildId:W,deploymentId:am,clientAssetToken:an},serverComponentsHmrCache:(0,f.getRequestMeta)(b,"serverComponentsHmrCache"),fallbackRouteParams:d,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aU,Component:(0,h.interopDefault)(aU),params:Y,routeModule:K,page:U,postponed:c,shouldWaitOnAllReady:aP,serveStreamingMetadata:aL,supportsDynamicResponse:"string"==typeof c||aO,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,subresourceIntegrityManifest:ad,setCacheStatus:null==ai?void 0:ai.setCacheStatus,setIsrStatus:null==ai?void 0:ai.setIsrStatus,setReactDebugChannel:null==ai?void 0:ai.setReactDebugChannel,sendErrorsToBrowser:null==ai?void 0:ai.sendErrorsToBrowser,dir:require("path").join(process.cwd(),K.relativeProjectDir),isDraftMode:af,botType:au,isOnDemandRevalidate:ap,isPossibleServerAction:ay,assetPrefix:aj.assetPrefix,nextConfigOutput:aj.output,crossOrigin:aj.crossOrigin,trailingSlash:aj.trailingSlash,images:aj.images,previewProps:ae.preview,enableTainting:aj.experimental.taint,htmlLimitedBots:aj.htmlLimitedBots,reactMaxHeadersLength:aj.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:k,cacheLifeProfiles:aj.cacheLife,basePath:aj.basePath,serverActions:aj.experimental.serverActions,logServerFunctions:"object"==typeof aj.logging&&!!aj.logging.serverFunctions,...aE||aF||aG?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aF}:{},cacheComponents:!!aj.cacheComponents,experimental:{isRoutePPREnabled:aD,expireTime:aj.expireTime,staleTimes:aj.experimental.staleTimes,dynamicOnHover:!!aj.experimental.dynamicOnHover,optimisticRouting:!!aj.experimental.optimisticRouting,inlineCss:!!aj.experimental.inlineCss,prefetchInlining:aj.experimental.prefetchInlining??!1,authInterrupts:!!aj.experimental.authInterrupts,cachedNavigations:!!aj.experimental.cachedNavigations,clientTraceMetadata:aj.experimental.clientTraceMetadata||[],clientParamParsingOrigins:aj.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,A.parseMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize)},waitUntil:N.waitUntil,onClose:a=>{M.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(a,c,d,e)=>K.onRequestError(b,a,d,e,ai),err:(0,f.getRequestMeta)(b,"invokeError")}};e&&(g.renderOpts.supportsDynamicResponse=!1);let j=await i(a,g),{metadata:l}=j,{cacheControl:m,headers:n={},fetchTags:o,fetchMetrics:p}=l;if(o&&(n[v.NEXT_CACHE_TAGS_HEADER]=o),b.fetchMetrics=p,aM&&(null==m?void 0:m.revalidate)===0&&!K.isDev&&!aD){let a=l.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ag}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
- see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:s.CachedRouteKind.APP_PAGE,html:j,headers:n,rscData:l.flightData,postponed:l.postponed,status:l.statusCode,segmentData:l.segmentData},cacheControl:m}},n=async({hasResolved:a,previousCacheEntry:d,isRevalidating:e,span:g,forceStaticRender:h=!1})=>{let i,j=!1===K.isDev,o=a||M.writableEnded;if(ap&&ah&&!d&&!T)return(null==ai?void 0:ai.render404)?await ai.render404(b,M):(M.statusCode=404,M.end("This page could not be found")),null;if(ar&&(i=(0,t.parseFallbackField)(ar.fallback)),!0===aj.experimental.partialFallbacks&&(null==ar?void 0:ar.fallback)===null&&!aR&&aQ.length>0&&(i=t.FallbackMode.PRERENDER),i===t.FallbackMode.PRERENDER&&(0,r.isBot)(at)&&(!aD||av)&&(i=t.FallbackMode.BLOCKING_STATIC_RENDER),(null==d?void 0:d.isStale)===-1&&(ap=!0),ap&&(i!==t.FallbackMode.NOT_FOUND||d)&&(i=t.FallbackMode.BLOCKING_STATIC_RENDER),!T&&i!==t.FallbackMode.BLOCKING_STATIC_RENDER&&aT&&!o&&!af&&Z&&(j||!as)){if((j||ar)&&i===t.FallbackMode.NOT_FOUND){if(aj.adapterPath)return await a$();throw new z.NoFallbackError}if(aD&&(aj.cacheComponents?!aJ:!ax)){let d=j&&"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:ao,e=(j||aE)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,l.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,l.getFallbackRouteParams)(ao,K):null;aE&&e&&(0,f.addRequestMeta)(b,"fallbackParams",e);let h=await K.handleResponse({cacheKey:d,req:b,nextConfig:aj,routeKind:c.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ae,isRoutePPREnabled:aD,responseGenerator:async()=>m({span:g,postponed:void 0,fallbackRouteParams:e,forceStaticRender:!0}),waitUntil:N.waitUntil,isMinimalMode:T});if(null===h)return null;if(h)return T||!aD||!(aQ.length>0)||!0!==aj.experimental.partialFallbacks||!aS||!k||ap||aG||aB||aC||aw||(0,F.scheduleOnNextTick)(async()=>{let c=K.getResponseCache(b);try{await c.revalidate(aS,k,aD,!1,a=>m({span:a.span,postponed:void 0,fallbackRouteParams:aZ.length>0?(0,l.createOpaqueFallbackRouteParams)(aZ):null,forceStaticRender:!0}),null,a,N.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete h.cacheControl,h}}let p=ap||e||!aH?void 0:aH;if(aN&&!T&&k&&(aJ||ay)&&!h){let c=await k.get(ag,{kind:s.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});c&&c.value&&c.value.kind===s.CachedRouteKind.APP_PAGE&&(p=c.value.postponed,c&&(-1===c.isStale||!0===c.isStale)&&(0,F.scheduleOnNextTick)(async()=>{let c=K.getResponseCache(b);try{await c.revalidate(ag,k,aD,!1,a=>n({...a,forceStaticRender:!0}),null,a,N.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aE||aF)&&void 0!==p)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:s.CachedRouteKind.PAGES,html:u.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let q=(j&&(0,f.getRequestMeta)(b,"renderFallbackShell")||aE&&!as)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,l.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,l.getFallbackRouteParams)(ao,K):null;if((j||aE)&&aj.cacheComponents&&!as&&(null==ar?void 0:ar.fallbackRouteParams)){let a=(0,l.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams);a&&(0,f.addRequestMeta)(b,"fallbackParams",a)}return m({span:g,postponed:p,fallbackRouteParams:q,forceStaticRender:h})},o=async a=>{var d,e,g,h,i;let j,k=await K.handleResponse({cacheKey:aS,responseGenerator:b=>n({span:a,...b}),routeKind:c.RouteKind.APP_PAGE,isOnDemandRevalidate:ap,isRoutePPREnabled:aD,req:b,nextConfig:aj,prerenderManifest:ae,waitUntil:N.waitUntil,isMinimalMode:T});if(af&&M.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),K.isDev&&M.setHeader("Cache-Control","no-cache, must-revalidate"),!k){if(aS)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(d=k.value)?void 0:d.kind)!==s.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(g=k.value)?void 0:g.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let l="string"==typeof k.value.postponed;ax&&!ay&&am&&M.setHeader(v.NEXT_NAV_DEPLOYMENT_ID_HEADER,am),aM&&!aJ&&(!l||aw)&&(T||M.setHeader("x-nextjs-cache",ap?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),M.setHeader(q.NEXT_IS_PRERENDER_HEADER,"1"));let{value:o}=k;if(aH)j={revalidate:0,expire:void 0};else if(aJ)j={revalidate:0,expire:void 0};else if(!K.isDev)if(af)j={revalidate:0,expire:void 0};else if(aM){if(k.cacheControl)if("number"==typeof k.cacheControl.revalidate){if(k.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${k.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});j={revalidate:k.cacheControl.revalidate,expire:(null==(h=k.cacheControl)?void 0:h.expire)??aj.expireTime}}else j={revalidate:v.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else M.getHeader("Cache-Control")||(j={revalidate:0,expire:void 0});if(k.cacheControl=j,"string"==typeof aK&&(null==o?void 0:o.kind)===s.CachedRouteKind.APP_PAGE&&o.segmentData){M.setHeader(q.NEXT_DID_POSTPONE_HEADER,"2");let a=null==(i=o.headers)?void 0:i[v.NEXT_CACHE_TAGS_HEADER];T&&aM&&a&&"string"==typeof a&&M.setHeader(v.NEXT_CACHE_TAGS_HEADER,a);let c=o.segmentData.get(aK);return void 0!==c?(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:u.default.fromStatic(c,q.RSC_CONTENT_TYPE_HEADER),cacheControl:k.cacheControl}):(M.statusCode=204,(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:u.default.EMPTY,cacheControl:k.cacheControl}))}let p=aN?(0,f.getRequestMeta)(b,"onCacheEntryV2")??(0,f.getRequestMeta)(b,"onCacheEntry"):(0,f.getRequestMeta)(b,"onCacheEntry");if(p&&await p(k,{url:(0,f.getRequestMeta)(b,"initURL")??b.url}))return null;if(o.headers){let a={...o.headers};for(let[b,c]of(T&&aM||delete a[v.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==c)if(Array.isArray(c))for(let a of c)M.appendHeader(b,a);else"number"==typeof c&&(c=c.toString()),M.appendHeader(b,c)}let r=null==(e=o.headers)?void 0:e[v.NEXT_CACHE_TAGS_HEADER];if(T&&aM&&r&&"string"==typeof r&&M.setHeader(v.NEXT_CACHE_TAGS_HEADER,r),!o.status||ax&&aD||(M.statusCode=o.status),!T&&o.status&&D.RedirectStatusCode[o.status]&&ax&&(M.statusCode=200),l&&!aJ&&M.setHeader(q.NEXT_DID_POSTPONE_HEADER,"1"),ax&&!af){if(void 0===o.rscData){if(o.html.contentType!==q.RSC_CONTENT_TYPE_HEADER)if(aj.cacheComponents)return M.statusCode=404,(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:u.default.EMPTY,cacheControl:k.cacheControl});else throw Object.defineProperty(new E.InvariantError(`Expected RSC response, got ${o.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:o.html,cacheControl:k.cacheControl})}return(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:u.default.fromStatic(o.rscData,q.RSC_CONTENT_TYPE_HEADER),cacheControl:k.cacheControl})}let t=o.html;if(aC&&aE){let a=!0===K.isDev?crypto.randomUUID():null;return t.pipeThrough((0,x.createInstantTestScriptInsertionTransformStream)(a)),(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}})}if(!l||T||ax)return(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:t,cacheControl:k.cacheControl});if(aE||aF)return t.push(new ReadableStream({start(a){a.enqueue(w.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}});let z=new TransformStream;return t.push(z.readable),m({span:a,postponed:o.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==s.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(z.writable)}).catch(a=>{z.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}})};if(!aY||!aX)return a=aW.getActiveScopeSpan(),await aW.withPropagatedContext(b.headers,()=>aW.trace(g.BaseServerSpan.handleRequest,{spanName:`${aV} ${U}`,kind:e.SpanKind.SERVER,attributes:{"http.method":aV,"http.target":b.url}},o),void 0,!aY);await o(aX)}catch(a){throw a instanceof z.NoFallbackError||await K.onRequestError(b,a,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),a}}a.s(["__next_app__",0,J,"handler",0,L,"routeModule",0,K],30708),a.i(30708),a.s(["ClientPageRoot",()=>C.ClientPageRoot,"ClientSegmentRoot",()=>C.ClientSegmentRoot,"Fragment",()=>C.Fragment,"HTTPAccessFallbackBoundary",()=>C.HTTPAccessFallbackBoundary,"InstantValidation",()=>C.InstantValidation,"LayoutRouter",()=>C.LayoutRouter,"LoadingBoundaryProvider",()=>C.LoadingBoundaryProvider,"Postpone",()=>C.Postpone,"RenderFromTemplateContext",()=>C.RenderFromTemplateContext,"RootLayoutBoundary",()=>C.RootLayoutBoundary,"SegmentViewNode",()=>C.SegmentViewNode,"SegmentViewStateNode",()=>C.SegmentViewStateNode,"__next_app__",0,J,"actionAsyncStorage",()=>C.actionAsyncStorage,"captureOwnerStack",()=>C.captureOwnerStack,"collectPrefetchHints",()=>C.collectPrefetchHints,"collectSegmentData",()=>C.collectSegmentData,"createElement",()=>C.createElement,"createMetadataComponents",()=>C.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>C.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>C.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>C.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>C.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>C.createTemporaryReferenceSet,"decodeAction",()=>C.decodeAction,"decodeFormState",()=>C.decodeFormState,"decodeReply",()=>C.decodeReply,"handler",0,L,"patchFetch",()=>C.patchFetch,"preconnect",()=>C.preconnect,"preloadFont",()=>C.preloadFont,"preloadStyle",()=>C.preloadStyle,"prerender",()=>C.prerender,"renderToReadableStream",()=>C.renderToReadableStream,"routeModule",0,K,"serverHooks",()=>C.serverHooks,"taintObjectReference",()=>C.taintObjectReference,"workAsyncStorage",()=>C.workAsyncStorage,"workUnitAsyncStorage",()=>C.workUnitAsyncStorage],26342)}];
2
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:s.CachedRouteKind.APP_PAGE,html:j,headers:n,rscData:l.flightData,postponed:l.postponed,status:l.statusCode,segmentData:l.segmentData},cacheControl:m}},n=async({hasResolved:a,previousCacheEntry:d,isRevalidating:e,span:g,forceStaticRender:h=!1})=>{let i,j=!1===K.isDev,o=a||M.writableEnded;if(ap&&ah&&!d&&!T)return(null==ai?void 0:ai.render404)?await ai.render404(b,M):(M.statusCode=404,M.end("This page could not be found")),null;if(ar&&(i=(0,t.parseFallbackField)(ar.fallback)),!0===aj.experimental.partialFallbacks&&(null==ar?void 0:ar.fallback)===null&&!aR&&aQ.length>0&&(i=t.FallbackMode.PRERENDER),i===t.FallbackMode.PRERENDER&&(0,r.isBot)(at)&&(!aD||av)&&(i=t.FallbackMode.BLOCKING_STATIC_RENDER),(null==d?void 0:d.isStale)===-1&&(ap=!0),ap&&(i!==t.FallbackMode.NOT_FOUND||d)&&(i=t.FallbackMode.BLOCKING_STATIC_RENDER),!T&&i!==t.FallbackMode.BLOCKING_STATIC_RENDER&&aT&&!o&&!af&&Z&&(j||!as)){if((j||ar)&&i===t.FallbackMode.NOT_FOUND){if(aj.adapterPath)return await a$();throw new z.NoFallbackError}if(aD&&(aj.cacheComponents?!aJ:!ax)){let d=j&&"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:ao,e=(j||aE)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,l.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,l.getFallbackRouteParams)(ao,K):null;aE&&e&&(0,f.addRequestMeta)(b,"fallbackParams",e);let h=await K.handleResponse({cacheKey:d,req:b,nextConfig:aj,routeKind:c.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ae,isRoutePPREnabled:aD,responseGenerator:async()=>m({span:g,postponed:void 0,fallbackRouteParams:e,forceStaticRender:!0}),waitUntil:N.waitUntil,isMinimalMode:T});if(null===h)return null;if(h)return T||!aD||!(aQ.length>0)||!0!==aj.experimental.partialFallbacks||!aS||!k||ap||aG||aB||aC||aw||(0,F.scheduleOnNextTick)(async()=>{let c=K.getResponseCache(b);try{await c.revalidate(aS,k,aD,!1,a=>m({span:a.span,postponed:void 0,fallbackRouteParams:aZ.length>0?(0,l.createOpaqueFallbackRouteParams)(aZ):null,forceStaticRender:!0}),null,a,N.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete h.cacheControl,h}}let p=ap||e||!aH?void 0:aH;if(aN&&!T&&k&&(aJ||ay)&&!h){let c=await k.get(ag,{kind:s.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});c&&c.value&&c.value.kind===s.CachedRouteKind.APP_PAGE&&(p=c.value.postponed,c&&(-1===c.isStale||!0===c.isStale)&&(0,F.scheduleOnNextTick)(async()=>{let c=K.getResponseCache(b);try{await c.revalidate(ag,k,aD,!1,a=>n({...a,forceStaticRender:!0}),null,a,N.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aE||aF)&&void 0!==p)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:s.CachedRouteKind.PAGES,html:u.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let q=(j&&(0,f.getRequestMeta)(b,"renderFallbackShell")||aE&&!as)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,l.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,l.getFallbackRouteParams)(ao,K):null;if((j||aE)&&aj.cacheComponents&&!as&&(null==ar?void 0:ar.fallbackRouteParams)){let a=(0,l.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams);a&&(0,f.addRequestMeta)(b,"fallbackParams",a)}return m({span:g,postponed:p,fallbackRouteParams:q,forceStaticRender:h})},o=async a=>{var d,e,g,h,i;let j,k=await K.handleResponse({cacheKey:aS,responseGenerator:b=>n({span:a,...b}),routeKind:c.RouteKind.APP_PAGE,isOnDemandRevalidate:ap,isRoutePPREnabled:aD,req:b,nextConfig:aj,prerenderManifest:ae,waitUntil:N.waitUntil,isMinimalMode:T});if(af&&M.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),K.isDev&&M.setHeader("Cache-Control","no-cache, must-revalidate"),!k){if(aS)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(d=k.value)?void 0:d.kind)!==s.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(g=k.value)?void 0:g.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let l="string"==typeof k.value.postponed;ax&&!ay&&am&&M.setHeader(v.NEXT_NAV_DEPLOYMENT_ID_HEADER,am),aM&&!aJ&&(!l||aw)&&(T||M.setHeader("x-nextjs-cache",ap?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),M.setHeader(q.NEXT_IS_PRERENDER_HEADER,"1"));let{value:o}=k;if(aH)j={revalidate:0,expire:void 0};else if(aJ)j={revalidate:0,expire:void 0};else if(!K.isDev)if(af)j={revalidate:0,expire:void 0};else if(aM){if(k.cacheControl)if("number"==typeof k.cacheControl.revalidate){if(k.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${k.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});j={revalidate:k.cacheControl.revalidate,expire:(null==(h=k.cacheControl)?void 0:h.expire)??aj.expireTime}}else j={revalidate:v.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else M.getHeader("Cache-Control")||(j={revalidate:0,expire:void 0});if(k.cacheControl=j,"string"==typeof aK&&(null==o?void 0:o.kind)===s.CachedRouteKind.APP_PAGE&&o.segmentData){M.setHeader(q.NEXT_DID_POSTPONE_HEADER,"2");let a=null==(i=o.headers)?void 0:i[v.NEXT_CACHE_TAGS_HEADER];T&&aM&&a&&"string"==typeof a&&M.setHeader(v.NEXT_CACHE_TAGS_HEADER,a);let c=o.segmentData.get(aK);return void 0!==c?(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:u.default.fromStatic(c,q.RSC_CONTENT_TYPE_HEADER),cacheControl:k.cacheControl}):(M.statusCode=204,(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:u.default.EMPTY,cacheControl:k.cacheControl}))}let p=aN?(0,f.getRequestMeta)(b,"onCacheEntryV2")??(0,f.getRequestMeta)(b,"onCacheEntry"):(0,f.getRequestMeta)(b,"onCacheEntry");if(p&&await p(k,{url:(0,f.getRequestMeta)(b,"initURL")??b.url}))return null;if(o.headers){let a={...o.headers};for(let[b,c]of(T&&aM||delete a[v.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==c)if(Array.isArray(c))for(let a of c)M.appendHeader(b,a);else"number"==typeof c&&(c=c.toString()),M.appendHeader(b,c)}let r=null==(e=o.headers)?void 0:e[v.NEXT_CACHE_TAGS_HEADER];if(T&&aM&&r&&"string"==typeof r&&M.setHeader(v.NEXT_CACHE_TAGS_HEADER,r),!o.status||ax&&aD||(M.statusCode=o.status),!T&&o.status&&D.RedirectStatusCode[o.status]&&ax&&(M.statusCode=200),l&&!aJ&&M.setHeader(q.NEXT_DID_POSTPONE_HEADER,"1"),ax&&!af){if(void 0===o.rscData){if(o.html.contentType!==q.RSC_CONTENT_TYPE_HEADER)if(aj.cacheComponents)return M.statusCode=404,(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:u.default.EMPTY,cacheControl:k.cacheControl});else throw Object.defineProperty(new E.InvariantError(`Expected RSC response, got ${o.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:o.html,cacheControl:k.cacheControl})}return(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:u.default.fromStatic(o.rscData,q.RSC_CONTENT_TYPE_HEADER),cacheControl:k.cacheControl})}let t=o.html;if(aC&&aE){let a=!0===K.isDev?crypto.randomUUID():null;return t.pipeThrough((0,x.createInstantTestScriptInsertionTransformStream)(a)),(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}})}if(!l||T||ax)return(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:t,cacheControl:k.cacheControl});if(aE||aF)return t.push(new ReadableStream({start(a){a.enqueue(w.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}});let z=new TransformStream;return t.push(z.readable),m({span:a,postponed:o.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==s.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(z.writable)}).catch(a=>{z.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,y.sendRenderResult)({req:b,res:M,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}})};if(!aY||!aX)return a=aW.getActiveScopeSpan(),await aW.withPropagatedContext(b.headers,()=>aW.trace(g.BaseServerSpan.handleRequest,{spanName:`${aV} ${U}`,kind:e.SpanKind.SERVER,attributes:{"http.method":aV,"http.target":b.url}},o),void 0,!aY);await o(aX)}catch(a){throw a instanceof z.NoFallbackError||await K.onRequestError(b,a,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),a}}a.s(["__next_app__",0,J,"handler",0,L,"routeModule",0,K],60025),a.i(60025),a.s(["ClientPageRoot",()=>C.ClientPageRoot,"ClientSegmentRoot",()=>C.ClientSegmentRoot,"Fragment",()=>C.Fragment,"HTTPAccessFallbackBoundary",()=>C.HTTPAccessFallbackBoundary,"InstantValidation",()=>C.InstantValidation,"LayoutRouter",()=>C.LayoutRouter,"LoadingBoundaryProvider",()=>C.LoadingBoundaryProvider,"Postpone",()=>C.Postpone,"RenderFromTemplateContext",()=>C.RenderFromTemplateContext,"RootLayoutBoundary",()=>C.RootLayoutBoundary,"SegmentViewNode",()=>C.SegmentViewNode,"SegmentViewStateNode",()=>C.SegmentViewStateNode,"__next_app__",0,J,"actionAsyncStorage",()=>C.actionAsyncStorage,"captureOwnerStack",()=>C.captureOwnerStack,"collectPrefetchHints",()=>C.collectPrefetchHints,"collectSegmentData",()=>C.collectSegmentData,"createElement",()=>C.createElement,"createMetadataComponents",()=>C.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>C.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>C.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>C.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>C.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>C.createTemporaryReferenceSet,"decodeAction",()=>C.decodeAction,"decodeFormState",()=>C.decodeFormState,"decodeReply",()=>C.decodeReply,"handler",0,L,"patchFetch",()=>C.patchFetch,"preconnect",()=>C.preconnect,"preloadFont",()=>C.preloadFont,"preloadStyle",()=>C.preloadStyle,"prerender",()=>C.prerender,"renderToReadableStream",()=>C.renderToReadableStream,"routeModule",0,K,"serverHooks",()=>C.serverHooks,"taintObjectReference",()=>C.taintObjectReference,"workAsyncStorage",()=>C.workAsyncStorage,"workUnitAsyncStorage",()=>C.workUnitAsyncStorage],26342)}];
3
3
 
4
4
  //# sourceMappingURL=11es_next_dist_esm_build_templates_app-page_0l-25e2.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[90381,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(40674),e=a.i(50488),f=a.i(63698),g=a.i(3195),h=a.i(28002),i=a.i(50490),j=a.i(5698),k=a.i(98410),l=a.i(72016),m=a.i(88064),n=a.i(56957),o=a.i(12882),p=a.i(53170),q=a.i(92548),r=a.i(91498),s=a.i(84494),t=a.i(25700);let u=(0,t.default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);var v=a.i(33511),w=a.i(65298),x=a.i(38019);let y=(0,t.default)("file-check-corner",[["path",{d:"M10.5 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v6",key:"g5mvt7"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m14 20 2 2 4-4",key:"15kota"}]]);var z=a.i(85536);a.i(78454);var A=a.i(24255);a.i(49235);var B=a.i(85080),C=a.i(82934),D=a.i(41305),E=a.i(55628),F=a.i(18662),G=a.i(21333),H=a.i(61544),I=a.i(6120);let J=(0,I.createServerReference)("60f6f73146fbeefea93b29a14f1956f646929b8a06",I.callServer,void 0,I.findSourceMapURL,"getGitRepoInfo"),K="text-muted-foreground hover:bg-foreground/8 hover:text-foreground inline-flex size-8 items-center justify-center rounded-[3px] disabled:opacity-40",L="bg-border/60 mx-1.5 h-5 w-px shrink-0";function M({icon:a,title:c,children:d}){return(0,b.jsxs)("div",{className:"px-3 pt-4 pb-1",children:[(0,b.jsxs)("div",{className:"text-foreground mb-2 flex items-center gap-1.5 text-sm font-semibold tracking-wider uppercase",children:[(0,b.jsx)(a,{className:"size-4 opacity-50"}),c]}),d]})}function N({children:a,className:c}){return(0,b.jsx)("div",{className:(0,z.cn)("bg-muted/60 rounded-md border border-transparent p-3",c),children:a})}function O({label:a,children:c}){return(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"text-foreground/40 text-[11px] font-medium tracking-wider uppercase",children:a}),(0,b.jsx)("span",{className:"text-sm leading-snug",children:c})]})}function P({data:a,syncError:d}){let[e,f]=(0,c.useState)(null),[g,h]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{if(!a.repositoryPath)return;let b=!1;return h(!0),J(a.repositoryPath,8).then(a=>{b||f(a)}).catch(()=>{}).finally(()=>{b||h(!1)}),()=>{b=!0}},[a.repositoryPath]),!a.repositoryPath)return null;let i=e?.workingTree,j=i&&(i.staged>0||i.modified>0||i.untracked>0),k=e?.diffStats;return(0,b.jsxs)("div",{className:"pb-4",children:[g?(0,b.jsxs)("div",{className:"text-foreground/40 flex items-center gap-2 px-4 py-8 text-sm",children:[(0,b.jsx)(m.Loader2,{className:"size-4 animate-spin"})," Loading repository info..."]}):null,e?(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-2 px-3 pt-3",children:[(0,b.jsx)(N,{children:(0,b.jsxs)(O,{label:"Branch",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,b.jsx)(p.GitBranch,{className:"text-foreground/30 size-3.5 shrink-0"}),(0,b.jsx)("code",{className:"font-mono text-sm",children:e.currentBranch??a.branch??"—"})]}),null!=a.behindCount&&a.behindCount>0?(0,b.jsxs)("span",{className:"mt-0.5 block text-xs text-orange-600 dark:text-orange-400",children:[a.behindCount," behind default"]}):null]})}),(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Working Tree",children:j?(0,b.jsxs)("div",{className:"flex flex-wrap gap-x-3 gap-y-0.5",children:[i.staged>0?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 text-sm text-green-600 dark:text-green-400",children:[(0,b.jsx)(y,{className:"size-3.5"})," ",i.staged," staged"]}):null,i.modified>0?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 text-sm text-amber-600 dark:text-amber-400",children:[(0,b.jsx)(w.FileEdit,{className:"size-3.5"})," ",i.modified," modified"]}):null,i.untracked>0?(0,b.jsxs)("span",{className:"text-foreground/50 inline-flex items-center gap-1 text-sm",children:[(0,b.jsx)(x.FilePlus,{className:"size-3.5"})," ",i.untracked," untracked"]}):null]}):(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm text-green-600 dark:text-green-400",children:[(0,b.jsx)(l.Check,{className:"size-3.5"})," Clean"]})})}),k?(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Uncommitted Changes",children:(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm",children:[(0,b.jsxs)("span",{children:[k.filesChanged," file",1!==k.filesChanged?"s":""]}),(0,b.jsxs)("span",{className:"text-green-600 dark:text-green-400",children:["+",k.insertions]}),(0,b.jsxs)("span",{className:"text-red-500 dark:text-red-400",children:["-",k.deletions]})]})})}):null,e.remotes.length>0?(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Remote",children:e.remotes.map(a=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm",children:[(0,b.jsx)(s.Globe,{className:"text-foreground/30 size-3.5 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.url.replace(/\.git$/,"").replace(/^https?:\/\/([^@]+@)?/,"").replace(/x-access-token:[^@]+@/,"")})]},a.name))})}):null,e.stashCount>0?(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Stashes",children:(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm",children:[(0,b.jsx)(v.Archive,{className:"text-foreground/30 size-3.5 shrink-0"}),e.stashCount," stash",1!==e.stashCount?"es":""]})})}):null,e.tags.length>0?(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Tags",children:(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:e.tags.map(a=>(0,b.jsxs)("span",{className:"bg-foreground/[0.04] inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-xs",children:[(0,b.jsx)(u,{className:"text-foreground/30 size-2.5"}),a]},a))})})}):null]}):null,e&&e.commits.length>0?(0,b.jsx)(M,{icon:q.GitCommitHorizontal,title:"Recent Commits",children:(0,b.jsxs)("div",{className:"relative ml-3",children:[(0,b.jsx)("div",{className:"bg-border absolute top-2 bottom-2 left-[5px] w-px"}),e.commits.map((a,c)=>(0,b.jsxs)("div",{className:"group relative flex gap-3 py-1.5",children:[(0,b.jsx)("div",{className:(0,z.cn)("relative z-10 mt-1.5 size-[11px] shrink-0 rounded-full border-2",0===c?"border-primary bg-primary":"border-border bg-background group-hover:border-foreground/30")}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,b.jsx)("p",{className:"min-w-0 truncate text-sm leading-snug",children:a.subject}),(0,b.jsx)("code",{className:"text-foreground/30 shrink-0 font-mono text-[11px]",children:a.shortHash})]}),(0,b.jsxs)("div",{className:"text-foreground/40 mt-0.5 flex items-center gap-2 text-xs",children:[(0,b.jsx)("span",{children:a.author}),(0,b.jsx)("span",{children:"·"}),(0,b.jsx)("span",{children:a.relativeDate}),a.branch?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{children:"·"}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-0.5",children:[(0,b.jsx)(p.GitBranch,{className:"size-3"}),a.branch]})]}):null]})]})]},a.hash))]})}):null,e&&e.branches.length>1?(0,b.jsx)(M,{icon:p.GitBranch,title:"Branches",children:(0,b.jsx)("div",{className:"flex flex-col",children:[...e.branches].sort((a,b)=>{let c,d,e,f;return a.isCurrent&&!b.isCurrent?-1:!a.isCurrent&&b.isCurrent?1:(c=a.name,/^(main|master)$/.test(c)&&(d=b.name,!/^(main|master)$/.test(d)))?-1:+(e=a.name,!!(!/^(main|master)$/.test(e)&&(f=b.name,/^(main|master)$/.test(f))))}).map(a=>(0,b.jsxs)("div",{className:(0,z.cn)("flex items-center justify-between rounded px-2 py-1.5",a.isCurrent&&"bg-muted/60"),children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm",children:[a.isCurrent?(0,b.jsx)("span",{className:"size-2 shrink-0 rounded-full bg-green-500"}):/^(main|master)$/.test(a.name)?(0,b.jsx)("span",{className:"size-2 shrink-0 rounded-full bg-blue-500"}):(0,b.jsx)("span",{className:"bg-foreground/10 size-2 shrink-0 rounded-full"}),(0,b.jsx)("code",{className:"font-mono text-[13px]",children:a.name}),a.isCurrent?(0,b.jsx)("span",{className:"text-foreground/40 text-[10px]",children:"current"}):null]}),(0,b.jsx)("span",{className:"text-foreground/40 text-xs",children:a.lastCommitDate})]},a.name))})}):null,d?(0,b.jsx)(M,{icon:r.AlertTriangle,title:"Issues",children:(0,b.jsx)(N,{className:"bg-destructive/5 border-transparent",children:(0,b.jsx)("p",{className:"text-destructive text-sm",children:d})})}):null]})}a.s(["RepositoryDrawerClient",0,function({data:a,initialTab:p}){let q=(0,G.useFeatureFlags)(),r=(0,d.useRouter)(),s=(0,d.usePathname)().startsWith("/repository/"),[t,u]=(0,c.useState)(p??"overview"),[v,w]=(0,c.useState)(!1),x=(0,E.useRepositoryActions)(a.repositoryPath?{repositoryId:a.id,repositoryPath:a.repositoryPath}:null),y=(0,c.useCallback)(()=>{r.push("/")},[r]),I=(0,F.useDeployAction)(a.repositoryPath?{targetId:a.repositoryPath,targetType:"repository",repositoryPath:a.repositoryPath}:null),J="Booting"===I.status||"Ready"===I.status,M=(0,c.useCallback)(()=>{a.repositoryPath&&(navigator.clipboard.writeText(a.repositoryPath),w(!0),setTimeout(()=>w(!1),2e3))},[a.repositoryPath]),N=a.id?`repo-${a.id}`:`repo-${a.name}`;return(0,b.jsx)(A.BaseDrawer,{open:s,onClose:y,size:"lg",modal:!1,"data-testid":"repository-drawer",children:(0,b.jsxs)(D.Tabs,{value:t,onValueChange:u,className:"flex min-h-0 flex-1 flex-col",children:[(0,b.jsxs)(D.TabsList,{className:"bg-muted/50 h-auto w-full shrink-0 justify-start gap-0 rounded-none border-b p-0",children:[(0,b.jsxs)(D.TabsTrigger,{value:"overview",className:"text-muted-foreground hover:bg-muted hover:text-foreground data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:border-t-primary [&:not([data-state=active])]:border-r-border relative h-auto rounded-none border-t-2 border-r border-t-transparent border-r-transparent bg-transparent px-3.5 py-2.5 text-[13px] font-normal shadow-none transition-none last:border-r-transparent data-[state=active]:shadow-none",children:[(0,b.jsx)(n.LayoutDashboard,{className:"mr-1.5 size-4"}),"Overview"]}),(0,b.jsxs)(D.TabsTrigger,{value:"chat",className:"text-muted-foreground hover:bg-muted hover:text-foreground data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:border-t-primary [&:not([data-state=active])]:border-r-border relative h-auto rounded-none border-t-2 border-r border-t-transparent border-r-transparent bg-transparent px-3.5 py-2.5 text-[13px] font-normal shadow-none transition-none last:border-r-transparent data-[state=active]:shadow-none",children:[(0,b.jsx)(o.MessageSquare,{className:"mr-1.5 size-4"}),"Chat"]})]}),(0,b.jsxs)("div",{className:"bg-muted/40 shrink-0 border-b",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-4 pe-10 pt-2.5 pb-2","data-testid":"repository-drawer-header",children:[(0,b.jsx)("h2",{className:"text-foreground min-w-0 truncate text-base font-semibold tracking-tight",children:a.name}),a.repositoryPath?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-muted-foreground/40 text-xs",children:"/"}),(0,b.jsx)("span",{className:"text-muted-foreground min-w-0 truncate font-mono text-[11px]",children:a.repositoryPath})]}):null]}),a.repositoryPath?(0,b.jsx)("div",{"data-testid":"repository-drawer-toolbar",children:(0,b.jsxs)("div",{className:"flex h-9 items-center px-1.5",children:[(0,b.jsxs)(C.TooltipProvider,{delayDuration:300,children:[(0,b.jsxs)("div",{className:"flex items-center",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:x.openInIde,disabled:x.ideLoading,"aria-label":"Open in IDE",children:x.ideLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):(0,b.jsx)(e.Code2,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:"Open in IDE"})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:x.openInShell,disabled:x.shellLoading,"aria-label":"Open terminal",children:x.shellLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):(0,b.jsx)(f.Terminal,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:"Open terminal"})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:x.openFolder,disabled:x.folderLoading,"aria-label":"Open folder",children:x.folderLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):(0,b.jsx)(g.FolderOpen,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:"Open folder"})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:M,"aria-label":"Copy path",children:v?(0,b.jsx)(l.Check,{className:"size-3.5 text-green-500"}):(0,b.jsx)(k.Copy,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:v?"Copied!":"Copy path"})]})]}),a.id&&q.gitRebaseSync?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:L}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:x.syncMain,disabled:x.syncLoading,"aria-label":"Sync main",children:x.syncLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):(0,b.jsx)(h.RefreshCw,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:"Sync main"})]})]}):null,q.envDeploy?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:L}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",disabled:I.deployLoading||I.stopLoading,onClick:J?I.stop:I.deploy,className:(0,z.cn)("inline-flex size-7 items-center justify-center rounded-[3px] disabled:opacity-40",J?"text-red-500 hover:bg-red-500/10 hover:text-red-400":"text-green-500 hover:bg-green-500/10 hover:text-green-400"),"aria-label":J?"Stop dev server":"Start dev server",children:I.deployLoading||I.stopLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):J?(0,b.jsx)(j.Square,{className:"size-4"}):(0,b.jsx)(i.Play,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:J?"Stop dev server":"Start dev server"})]}),J?(0,b.jsx)(B.DeploymentStatusBadge,{status:I.status,url:I.url,targetId:a.repositoryPath}):null]}):null]}),(0,b.jsx)("div",{className:"flex-1"})]})}):null]}),(0,b.jsx)(D.TabsContent,{value:"overview",className:"mt-0 flex-1 overflow-y-auto",children:(0,b.jsx)(P,{data:a,syncError:x.syncError})}),(0,b.jsx)(D.TabsContent,{value:"chat",className:"mt-0 flex min-h-0 flex-1 flex-col overflow-hidden",children:(0,b.jsx)(H.ChatTab,{featureId:N,worktreePath:a.repositoryPath})})]})})}],90381)}];
1
+ module.exports=[90381,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(40674),e=a.i(50488),f=a.i(63698),g=a.i(3195),h=a.i(28002),i=a.i(50490),j=a.i(5698),k=a.i(98410),l=a.i(72016),m=a.i(88064),n=a.i(56957),o=a.i(12882),p=a.i(53170),q=a.i(92548),r=a.i(91498),s=a.i(84494),t=a.i(25700);let u=(0,t.default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);var v=a.i(33511),w=a.i(65298),x=a.i(38019);let y=(0,t.default)("file-check-corner",[["path",{d:"M10.5 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v6",key:"g5mvt7"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m14 20 2 2 4-4",key:"15kota"}]]);var z=a.i(85536);a.i(78454);var A=a.i(24255);a.i(49235);var B=a.i(85080),C=a.i(82934),D=a.i(41305),E=a.i(55628),F=a.i(18662),G=a.i(21333),H=a.i(61544),I=a.i(6120);let J=(0,I.createServerReference)("609e008e96a3b01556d124846e9c324ca5200e7986",I.callServer,void 0,I.findSourceMapURL,"getGitRepoInfo"),K="text-muted-foreground hover:bg-foreground/8 hover:text-foreground inline-flex size-8 items-center justify-center rounded-[3px] disabled:opacity-40",L="bg-border/60 mx-1.5 h-5 w-px shrink-0";function M({icon:a,title:c,children:d}){return(0,b.jsxs)("div",{className:"px-3 pt-4 pb-1",children:[(0,b.jsxs)("div",{className:"text-foreground mb-2 flex items-center gap-1.5 text-sm font-semibold tracking-wider uppercase",children:[(0,b.jsx)(a,{className:"size-4 opacity-50"}),c]}),d]})}function N({children:a,className:c}){return(0,b.jsx)("div",{className:(0,z.cn)("bg-muted/60 rounded-md border border-transparent p-3",c),children:a})}function O({label:a,children:c}){return(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)("span",{className:"text-foreground/40 text-[11px] font-medium tracking-wider uppercase",children:a}),(0,b.jsx)("span",{className:"text-sm leading-snug",children:c})]})}function P({data:a,syncError:d}){let[e,f]=(0,c.useState)(null),[g,h]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{if(!a.repositoryPath)return;let b=!1;return h(!0),J(a.repositoryPath,8).then(a=>{b||f(a)}).catch(()=>{}).finally(()=>{b||h(!1)}),()=>{b=!0}},[a.repositoryPath]),!a.repositoryPath)return null;let i=e?.workingTree,j=i&&(i.staged>0||i.modified>0||i.untracked>0),k=e?.diffStats;return(0,b.jsxs)("div",{className:"pb-4",children:[g?(0,b.jsxs)("div",{className:"text-foreground/40 flex items-center gap-2 px-4 py-8 text-sm",children:[(0,b.jsx)(m.Loader2,{className:"size-4 animate-spin"})," Loading repository info..."]}):null,e?(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-2 px-3 pt-3",children:[(0,b.jsx)(N,{children:(0,b.jsxs)(O,{label:"Branch",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,b.jsx)(p.GitBranch,{className:"text-foreground/30 size-3.5 shrink-0"}),(0,b.jsx)("code",{className:"font-mono text-sm",children:e.currentBranch??a.branch??"—"})]}),null!=a.behindCount&&a.behindCount>0?(0,b.jsxs)("span",{className:"mt-0.5 block text-xs text-orange-600 dark:text-orange-400",children:[a.behindCount," behind default"]}):null]})}),(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Working Tree",children:j?(0,b.jsxs)("div",{className:"flex flex-wrap gap-x-3 gap-y-0.5",children:[i.staged>0?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 text-sm text-green-600 dark:text-green-400",children:[(0,b.jsx)(y,{className:"size-3.5"})," ",i.staged," staged"]}):null,i.modified>0?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 text-sm text-amber-600 dark:text-amber-400",children:[(0,b.jsx)(w.FileEdit,{className:"size-3.5"})," ",i.modified," modified"]}):null,i.untracked>0?(0,b.jsxs)("span",{className:"text-foreground/50 inline-flex items-center gap-1 text-sm",children:[(0,b.jsx)(x.FilePlus,{className:"size-3.5"})," ",i.untracked," untracked"]}):null]}):(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm text-green-600 dark:text-green-400",children:[(0,b.jsx)(l.Check,{className:"size-3.5"})," Clean"]})})}),k?(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Uncommitted Changes",children:(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm",children:[(0,b.jsxs)("span",{children:[k.filesChanged," file",1!==k.filesChanged?"s":""]}),(0,b.jsxs)("span",{className:"text-green-600 dark:text-green-400",children:["+",k.insertions]}),(0,b.jsxs)("span",{className:"text-red-500 dark:text-red-400",children:["-",k.deletions]})]})})}):null,e.remotes.length>0?(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Remote",children:e.remotes.map(a=>(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm",children:[(0,b.jsx)(s.Globe,{className:"text-foreground/30 size-3.5 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.url.replace(/\.git$/,"").replace(/^https?:\/\/([^@]+@)?/,"").replace(/x-access-token:[^@]+@/,"")})]},a.name))})}):null,e.stashCount>0?(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Stashes",children:(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm",children:[(0,b.jsx)(v.Archive,{className:"text-foreground/30 size-3.5 shrink-0"}),e.stashCount," stash",1!==e.stashCount?"es":""]})})}):null,e.tags.length>0?(0,b.jsx)(N,{children:(0,b.jsx)(O,{label:"Tags",children:(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:e.tags.map(a=>(0,b.jsxs)("span",{className:"bg-foreground/[0.04] inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-xs",children:[(0,b.jsx)(u,{className:"text-foreground/30 size-2.5"}),a]},a))})})}):null]}):null,e&&e.commits.length>0?(0,b.jsx)(M,{icon:q.GitCommitHorizontal,title:"Recent Commits",children:(0,b.jsxs)("div",{className:"relative ml-3",children:[(0,b.jsx)("div",{className:"bg-border absolute top-2 bottom-2 left-[5px] w-px"}),e.commits.map((a,c)=>(0,b.jsxs)("div",{className:"group relative flex gap-3 py-1.5",children:[(0,b.jsx)("div",{className:(0,z.cn)("relative z-10 mt-1.5 size-[11px] shrink-0 rounded-full border-2",0===c?"border-primary bg-primary":"border-border bg-background group-hover:border-foreground/30")}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,b.jsx)("p",{className:"min-w-0 truncate text-sm leading-snug",children:a.subject}),(0,b.jsx)("code",{className:"text-foreground/30 shrink-0 font-mono text-[11px]",children:a.shortHash})]}),(0,b.jsxs)("div",{className:"text-foreground/40 mt-0.5 flex items-center gap-2 text-xs",children:[(0,b.jsx)("span",{children:a.author}),(0,b.jsx)("span",{children:"·"}),(0,b.jsx)("span",{children:a.relativeDate}),a.branch?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{children:"·"}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-0.5",children:[(0,b.jsx)(p.GitBranch,{className:"size-3"}),a.branch]})]}):null]})]})]},a.hash))]})}):null,e&&e.branches.length>1?(0,b.jsx)(M,{icon:p.GitBranch,title:"Branches",children:(0,b.jsx)("div",{className:"flex flex-col",children:[...e.branches].sort((a,b)=>{let c,d,e,f;return a.isCurrent&&!b.isCurrent?-1:!a.isCurrent&&b.isCurrent?1:(c=a.name,/^(main|master)$/.test(c)&&(d=b.name,!/^(main|master)$/.test(d)))?-1:+(e=a.name,!!(!/^(main|master)$/.test(e)&&(f=b.name,/^(main|master)$/.test(f))))}).map(a=>(0,b.jsxs)("div",{className:(0,z.cn)("flex items-center justify-between rounded px-2 py-1.5",a.isCurrent&&"bg-muted/60"),children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm",children:[a.isCurrent?(0,b.jsx)("span",{className:"size-2 shrink-0 rounded-full bg-green-500"}):/^(main|master)$/.test(a.name)?(0,b.jsx)("span",{className:"size-2 shrink-0 rounded-full bg-blue-500"}):(0,b.jsx)("span",{className:"bg-foreground/10 size-2 shrink-0 rounded-full"}),(0,b.jsx)("code",{className:"font-mono text-[13px]",children:a.name}),a.isCurrent?(0,b.jsx)("span",{className:"text-foreground/40 text-[10px]",children:"current"}):null]}),(0,b.jsx)("span",{className:"text-foreground/40 text-xs",children:a.lastCommitDate})]},a.name))})}):null,d?(0,b.jsx)(M,{icon:r.AlertTriangle,title:"Issues",children:(0,b.jsx)(N,{className:"bg-destructive/5 border-transparent",children:(0,b.jsx)("p",{className:"text-destructive text-sm",children:d})})}):null]})}a.s(["RepositoryDrawerClient",0,function({data:a,initialTab:p}){let q=(0,G.useFeatureFlags)(),r=(0,d.useRouter)(),s=(0,d.usePathname)().startsWith("/repository/"),[t,u]=(0,c.useState)(p??"overview"),[v,w]=(0,c.useState)(!1),x=(0,E.useRepositoryActions)(a.repositoryPath?{repositoryId:a.id,repositoryPath:a.repositoryPath}:null),y=(0,c.useCallback)(()=>{r.push("/")},[r]),I=(0,F.useDeployAction)(a.repositoryPath?{targetId:a.repositoryPath,targetType:"repository",repositoryPath:a.repositoryPath}:null),J="Booting"===I.status||"Ready"===I.status,M=(0,c.useCallback)(()=>{a.repositoryPath&&(navigator.clipboard.writeText(a.repositoryPath),w(!0),setTimeout(()=>w(!1),2e3))},[a.repositoryPath]),N=a.id?`repo-${a.id}`:`repo-${a.name}`;return(0,b.jsx)(A.BaseDrawer,{open:s,onClose:y,size:"lg",modal:!1,"data-testid":"repository-drawer",children:(0,b.jsxs)(D.Tabs,{value:t,onValueChange:u,className:"flex min-h-0 flex-1 flex-col",children:[(0,b.jsxs)(D.TabsList,{className:"bg-muted/50 h-auto w-full shrink-0 justify-start gap-0 rounded-none border-b p-0",children:[(0,b.jsxs)(D.TabsTrigger,{value:"overview",className:"text-muted-foreground hover:bg-muted hover:text-foreground data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:border-t-primary [&:not([data-state=active])]:border-r-border relative h-auto rounded-none border-t-2 border-r border-t-transparent border-r-transparent bg-transparent px-3.5 py-2.5 text-[13px] font-normal shadow-none transition-none last:border-r-transparent data-[state=active]:shadow-none",children:[(0,b.jsx)(n.LayoutDashboard,{className:"mr-1.5 size-4"}),"Overview"]}),(0,b.jsxs)(D.TabsTrigger,{value:"chat",className:"text-muted-foreground hover:bg-muted hover:text-foreground data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:border-t-primary [&:not([data-state=active])]:border-r-border relative h-auto rounded-none border-t-2 border-r border-t-transparent border-r-transparent bg-transparent px-3.5 py-2.5 text-[13px] font-normal shadow-none transition-none last:border-r-transparent data-[state=active]:shadow-none",children:[(0,b.jsx)(o.MessageSquare,{className:"mr-1.5 size-4"}),"Chat"]})]}),(0,b.jsxs)("div",{className:"bg-muted/40 shrink-0 border-b",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-4 pe-10 pt-2.5 pb-2","data-testid":"repository-drawer-header",children:[(0,b.jsx)("h2",{className:"text-foreground min-w-0 truncate text-base font-semibold tracking-tight",children:a.name}),a.repositoryPath?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-muted-foreground/40 text-xs",children:"/"}),(0,b.jsx)("span",{className:"text-muted-foreground min-w-0 truncate font-mono text-[11px]",children:a.repositoryPath})]}):null]}),a.repositoryPath?(0,b.jsx)("div",{"data-testid":"repository-drawer-toolbar",children:(0,b.jsxs)("div",{className:"flex h-9 items-center px-1.5",children:[(0,b.jsxs)(C.TooltipProvider,{delayDuration:300,children:[(0,b.jsxs)("div",{className:"flex items-center",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:x.openInIde,disabled:x.ideLoading,"aria-label":"Open in IDE",children:x.ideLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):(0,b.jsx)(e.Code2,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:"Open in IDE"})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:x.openInShell,disabled:x.shellLoading,"aria-label":"Open terminal",children:x.shellLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):(0,b.jsx)(f.Terminal,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:"Open terminal"})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:x.openFolder,disabled:x.folderLoading,"aria-label":"Open folder",children:x.folderLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):(0,b.jsx)(g.FolderOpen,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:"Open folder"})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:M,"aria-label":"Copy path",children:v?(0,b.jsx)(l.Check,{className:"size-3.5 text-green-500"}):(0,b.jsx)(k.Copy,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:v?"Copied!":"Copy path"})]})]}),a.id&&q.gitRebaseSync?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:L}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:K,onClick:x.syncMain,disabled:x.syncLoading,"aria-label":"Sync main",children:x.syncLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):(0,b.jsx)(h.RefreshCw,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:"Sync main"})]})]}):null,q.envDeploy?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:L}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",disabled:I.deployLoading||I.stopLoading,onClick:J?I.stop:I.deploy,className:(0,z.cn)("inline-flex size-7 items-center justify-center rounded-[3px] disabled:opacity-40",J?"text-red-500 hover:bg-red-500/10 hover:text-red-400":"text-green-500 hover:bg-green-500/10 hover:text-green-400"),"aria-label":J?"Stop dev server":"Start dev server",children:I.deployLoading||I.stopLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):J?(0,b.jsx)(j.Square,{className:"size-4"}):(0,b.jsx)(i.Play,{className:"size-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",className:"text-xs",children:J?"Stop dev server":"Start dev server"})]}),J?(0,b.jsx)(B.DeploymentStatusBadge,{status:I.status,url:I.url,targetId:a.repositoryPath}):null]}):null]}),(0,b.jsx)("div",{className:"flex-1"})]})}):null]}),(0,b.jsx)(D.TabsContent,{value:"overview",className:"mt-0 flex-1 overflow-y-auto",children:(0,b.jsx)(P,{data:a,syncError:x.syncError})}),(0,b.jsx)(D.TabsContent,{value:"chat",className:"mt-0 flex min-h-0 flex-1 flex-col overflow-hidden",children:(0,b.jsx)(H.ChatTab,{featureId:N,worktreePath:a.repositoryPath})})]})})}],90381)}];
2
2
 
3
3
  //# sourceMappingURL=11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/data%3Ab523dd%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/control-center-drawer/repository-drawer-client.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/tag.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/file-check-corner.ts"],"sourcesContent":["/* __next_internal_action_entry_do_not_use__ [{\"60f6f73146fbeefea93b29a14f1956f646929b8a06\":{\"name\":\"getGitRepoInfo\"}},\"src/presentation/web/app/actions/get-git-log.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"60f6f73146fbeefea93b29a14f1956f646929b8a06\",callServer,void 0,findSourceMapURL,\"getGitRepoInfo\");export{$$RSC_SERVER_ACTION_0 as getGitRepoInfo};","'use client';\n\nimport { useState, useCallback, useEffect } from 'react';\nimport { useRouter, usePathname } from 'next/navigation';\nimport {\n Code2,\n Terminal,\n FolderOpen,\n RefreshCw,\n Play,\n Square,\n Copy,\n Check,\n Loader2,\n LayoutDashboard,\n MessageSquare,\n GitBranch,\n GitCommitHorizontal,\n AlertTriangle,\n Globe,\n Tag,\n Archive,\n FileEdit,\n FilePlus,\n FileCheck2,\n} from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DeploymentStatusBadge } from '@/components/common/deployment-status-badge';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/ui/tabs';\nimport { useRepositoryActions } from '@/components/common/repository-node/use-repository-actions';\nimport { useDeployAction } from '@/hooks/use-deploy-action';\nimport { useFeatureFlags } from '@/hooks/feature-flags-context';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\nimport { ChatTab } from '@/components/features/chat/ChatTab';\nimport { getGitRepoInfo } from '@/app/actions/get-git-log';\nimport type { GitRepoInfo } from '@/app/actions/get-git-log';\n\nconst COPY_FEEDBACK_DELAY = 2000;\n\nconst tbBtn =\n 'text-muted-foreground hover:bg-foreground/8 hover:text-foreground inline-flex size-8 items-center justify-center rounded-[3px] disabled:opacity-40';\nconst tbSep = 'bg-border/60 mx-1.5 h-5 w-px shrink-0';\n\nexport interface RepositoryDrawerClientProps {\n data: RepositoryNodeData;\n /** Initial tab key from URL (e.g. 'chat'). */\n initialTab?: 'overview' | 'chat';\n}\n\nexport function RepositoryDrawerClient({ data, initialTab }: RepositoryDrawerClientProps) {\n const featureFlags = useFeatureFlags();\n const router = useRouter();\n const pathname = usePathname();\n const isOpen = pathname.startsWith('/repository/');\n const [activeTab, setActiveTab] = useState<string>(initialTab ?? 'overview');\n const [pathCopied, setPathCopied] = useState(false);\n const repoActions = useRepositoryActions(\n data.repositoryPath ? { repositoryId: data.id, repositoryPath: data.repositoryPath } : null\n );\n\n const onClose = useCallback(() => {\n router.push('/');\n }, [router]);\n\n const deployAction = useDeployAction(\n data.repositoryPath\n ? {\n targetId: data.repositoryPath,\n targetType: 'repository' as const,\n repositoryPath: data.repositoryPath,\n }\n : null\n );\n const isDeployActive = deployAction.status === 'Booting' || deployAction.status === 'Ready';\n\n const handleCopyPath = useCallback(() => {\n if (!data.repositoryPath) return;\n void navigator.clipboard.writeText(data.repositoryPath);\n setPathCopied(true);\n setTimeout(() => setPathCopied(false), COPY_FEEDBACK_DELAY);\n }, [data.repositoryPath]);\n\n // Session ID for repo chat — deterministic per repo\n const repoSessionId = data.id ? `repo-${data.id}` : `repo-${data.name}`;\n\n return (\n <BaseDrawer\n open={isOpen}\n onClose={onClose}\n size=\"lg\"\n modal={false}\n data-testid=\"repository-drawer\"\n >\n <Tabs value={activeTab} onValueChange={setActiveTab} className=\"flex min-h-0 flex-1 flex-col\">\n {/* VS Code-style tab bar */}\n <TabsList className=\"bg-muted/50 h-auto w-full shrink-0 justify-start gap-0 rounded-none border-b p-0\">\n <TabsTrigger\n value=\"overview\"\n className=\"text-muted-foreground hover:bg-muted hover:text-foreground data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:border-t-primary [&:not([data-state=active])]:border-r-border relative h-auto rounded-none border-t-2 border-r border-t-transparent border-r-transparent bg-transparent px-3.5 py-2.5 text-[13px] font-normal shadow-none transition-none last:border-r-transparent data-[state=active]:shadow-none\"\n >\n <LayoutDashboard className=\"mr-1.5 size-4\" />\n Overview\n </TabsTrigger>\n <TabsTrigger\n value=\"chat\"\n className=\"text-muted-foreground hover:bg-muted hover:text-foreground data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:border-t-primary [&:not([data-state=active])]:border-r-border relative h-auto rounded-none border-t-2 border-r border-t-transparent border-r-transparent bg-transparent px-3.5 py-2.5 text-[13px] font-normal shadow-none transition-none last:border-r-transparent data-[state=active]:shadow-none\"\n >\n <MessageSquare className=\"mr-1.5 size-4\" />\n Chat\n </TabsTrigger>\n </TabsList>\n\n {/* Persistent header — contrasting background */}\n <div className=\"bg-muted/40 shrink-0 border-b\">\n {/* Repo title + path breadcrumb */}\n <div\n className=\"flex items-center gap-2 px-4 pe-10 pt-2.5 pb-2\"\n data-testid=\"repository-drawer-header\"\n >\n <h2 className=\"text-foreground min-w-0 truncate text-base font-semibold tracking-tight\">\n {data.name}\n </h2>\n {data.repositoryPath ? (\n <>\n <span className=\"text-muted-foreground/40 text-xs\">/</span>\n <span className=\"text-muted-foreground min-w-0 truncate font-mono text-[11px]\">\n {data.repositoryPath}\n </span>\n </>\n ) : null}\n </div>\n\n {/* IDE toolbar */}\n {data.repositoryPath ? (\n <div data-testid=\"repository-drawer-toolbar\">\n <div className=\"flex h-9 items-center px-1.5\">\n {/* Left: Open actions */}\n <TooltipProvider delayDuration={300}>\n <div className=\"flex items-center\">\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={repoActions.openInIde}\n disabled={repoActions.ideLoading}\n aria-label=\"Open in IDE\"\n >\n {repoActions.ideLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : (\n <Code2 className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n Open in IDE\n </TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={repoActions.openInShell}\n disabled={repoActions.shellLoading}\n aria-label=\"Open terminal\"\n >\n {repoActions.shellLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : (\n <Terminal className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n Open terminal\n </TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={repoActions.openFolder}\n disabled={repoActions.folderLoading}\n aria-label=\"Open folder\"\n >\n {repoActions.folderLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : (\n <FolderOpen className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n Open folder\n </TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={handleCopyPath}\n aria-label=\"Copy path\"\n >\n {pathCopied ? (\n <Check className=\"size-3.5 text-green-500\" />\n ) : (\n <Copy className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n {pathCopied ? 'Copied!' : 'Copy path'}\n </TooltipContent>\n </Tooltip>\n </div>\n\n {/* Git sync */}\n {data.id && featureFlags.gitRebaseSync ? (\n <>\n <div className={tbSep} />\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={repoActions.syncMain}\n disabled={repoActions.syncLoading}\n aria-label=\"Sync main\"\n >\n {repoActions.syncLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : (\n <RefreshCw className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n Sync main\n </TooltipContent>\n </Tooltip>\n </>\n ) : null}\n\n {/* Deploy */}\n {featureFlags.envDeploy ? (\n <>\n <div className={tbSep} />\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={deployAction.deployLoading || deployAction.stopLoading}\n onClick={isDeployActive ? deployAction.stop : deployAction.deploy}\n className={cn(\n 'inline-flex size-7 items-center justify-center rounded-[3px] disabled:opacity-40',\n isDeployActive\n ? 'text-red-500 hover:bg-red-500/10 hover:text-red-400'\n : 'text-green-500 hover:bg-green-500/10 hover:text-green-400'\n )}\n aria-label={isDeployActive ? 'Stop dev server' : 'Start dev server'}\n >\n {deployAction.deployLoading || deployAction.stopLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : isDeployActive ? (\n <Square className=\"size-4\" />\n ) : (\n <Play className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n {isDeployActive ? 'Stop dev server' : 'Start dev server'}\n </TooltipContent>\n </Tooltip>\n {isDeployActive ? (\n <DeploymentStatusBadge\n status={deployAction.status}\n url={deployAction.url}\n targetId={data.repositoryPath}\n />\n ) : null}\n </>\n ) : null}\n </TooltipProvider>\n\n <div className=\"flex-1\" />\n </div>\n </div>\n ) : null}\n </div>\n\n {/* Overview tab */}\n <TabsContent value=\"overview\" className=\"mt-0 flex-1 overflow-y-auto\">\n <RepoOverview data={data} syncError={repoActions.syncError} />\n </TabsContent>\n\n {/* Chat tab */}\n <TabsContent value=\"chat\" className=\"mt-0 flex min-h-0 flex-1 flex-col overflow-hidden\">\n <ChatTab featureId={repoSessionId} worktreePath={data.repositoryPath} />\n </TabsContent>\n </Tabs>\n </BaseDrawer>\n );\n}\n\n// ── Repo Overview ───────────────────────────────────────────────────\n\nfunction Section({\n icon: Icon,\n title,\n children,\n}: {\n icon: React.ComponentType<{ className?: string }>;\n title: string;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"px-3 pt-4 pb-1\">\n <div className=\"text-foreground mb-2 flex items-center gap-1.5 text-sm font-semibold tracking-wider uppercase\">\n <Icon className=\"size-4 opacity-50\" />\n {title}\n </div>\n {children}\n </div>\n );\n}\n\nfunction Card({ children, className }: { children: React.ReactNode; className?: string }) {\n return (\n <div className={cn('bg-muted/60 rounded-md border border-transparent p-3', className)}>\n {children}\n </div>\n );\n}\n\nfunction KV({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-foreground/40 text-[11px] font-medium tracking-wider uppercase\">\n {label}\n </span>\n <span className=\"text-sm leading-snug\">{children}</span>\n </div>\n );\n}\n\nfunction RepoOverview({\n data,\n syncError,\n}: {\n data: RepositoryNodeData;\n syncError?: string | null;\n}) {\n const [repoInfo, setRepoInfo] = useState<GitRepoInfo | null>(null);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (!data.repositoryPath) return;\n let cancelled = false;\n setLoading(true);\n getGitRepoInfo(data.repositoryPath, 8)\n .then((result) => {\n if (!cancelled) setRepoInfo(result);\n })\n .catch(() => {\n // Silently handle — repo info is non-critical\n })\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [data.repositoryPath]);\n\n if (!data.repositoryPath) return null;\n\n const wt = repoInfo?.workingTree;\n const isDirty = wt && (wt.staged > 0 || wt.modified > 0 || wt.untracked > 0);\n const ds = repoInfo?.diffStats;\n\n return (\n <div className=\"pb-4\">\n {loading ? (\n <div className=\"text-foreground/40 flex items-center gap-2 px-4 py-8 text-sm\">\n <Loader2 className=\"size-4 animate-spin\" /> Loading repository info...\n </div>\n ) : null}\n\n {/* Quick stats grid */}\n {repoInfo ? (\n <div className=\"grid grid-cols-2 gap-2 px-3 pt-3\">\n {/* Current branch */}\n <Card>\n <KV label=\"Branch\">\n <span className=\"inline-flex items-center gap-1.5\">\n <GitBranch className=\"text-foreground/30 size-3.5 shrink-0\" />\n <code className=\"font-mono text-sm\">\n {repoInfo.currentBranch ?? data.branch ?? '—'}\n </code>\n </span>\n {data.behindCount != null && data.behindCount > 0 ? (\n <span className=\"mt-0.5 block text-xs text-orange-600 dark:text-orange-400\">\n {data.behindCount} behind default\n </span>\n ) : null}\n </KV>\n </Card>\n\n {/* Working tree */}\n <Card>\n <KV label=\"Working Tree\">\n {isDirty ? (\n <div className=\"flex flex-wrap gap-x-3 gap-y-0.5\">\n {wt.staged > 0 ? (\n <span className=\"inline-flex items-center gap-1 text-sm text-green-600 dark:text-green-400\">\n <FileCheck2 className=\"size-3.5\" /> {wt.staged} staged\n </span>\n ) : null}\n {wt.modified > 0 ? (\n <span className=\"inline-flex items-center gap-1 text-sm text-amber-600 dark:text-amber-400\">\n <FileEdit className=\"size-3.5\" /> {wt.modified} modified\n </span>\n ) : null}\n {wt.untracked > 0 ? (\n <span className=\"text-foreground/50 inline-flex items-center gap-1 text-sm\">\n <FilePlus className=\"size-3.5\" /> {wt.untracked} untracked\n </span>\n ) : null}\n </div>\n ) : (\n <span className=\"inline-flex items-center gap-1.5 text-sm text-green-600 dark:text-green-400\">\n <Check className=\"size-3.5\" /> Clean\n </span>\n )}\n </KV>\n </Card>\n\n {/* Diff stats */}\n {ds ? (\n <Card>\n <KV label=\"Uncommitted Changes\">\n <div className=\"flex items-center gap-3 text-sm\">\n <span>\n {ds.filesChanged} file{ds.filesChanged !== 1 ? 's' : ''}\n </span>\n <span className=\"text-green-600 dark:text-green-400\">+{ds.insertions}</span>\n <span className=\"text-red-500 dark:text-red-400\">-{ds.deletions}</span>\n </div>\n </KV>\n </Card>\n ) : null}\n\n {/* Remotes */}\n {repoInfo.remotes.length > 0 ? (\n <Card>\n <KV label=\"Remote\">\n {repoInfo.remotes.map((r) => (\n <span key={r.name} className=\"inline-flex items-center gap-1.5 text-sm\">\n <Globe className=\"text-foreground/30 size-3.5 shrink-0\" />\n <span className=\"truncate\">\n {r.url\n .replace(/\\.git$/, '')\n .replace(/^https?:\\/\\/([^@]+@)?/, '')\n .replace(/x-access-token:[^@]+@/, '')}\n </span>\n </span>\n ))}\n </KV>\n </Card>\n ) : null}\n\n {/* Stashes */}\n {repoInfo.stashCount > 0 ? (\n <Card>\n <KV label=\"Stashes\">\n <span className=\"inline-flex items-center gap-1.5 text-sm\">\n <Archive className=\"text-foreground/30 size-3.5 shrink-0\" />\n {repoInfo.stashCount} stash{repoInfo.stashCount !== 1 ? 'es' : ''}\n </span>\n </KV>\n </Card>\n ) : null}\n\n {/* Tags */}\n {repoInfo.tags.length > 0 ? (\n <Card>\n <KV label=\"Tags\">\n <div className=\"flex flex-wrap gap-1.5\">\n {repoInfo.tags.map((t) => (\n <span\n key={t}\n className=\"bg-foreground/[0.04] inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-xs\"\n >\n <Tag className=\"text-foreground/30 size-2.5\" />\n {t}\n </span>\n ))}\n </div>\n </KV>\n </Card>\n ) : null}\n </div>\n ) : null}\n\n {/* Commit history */}\n {repoInfo && repoInfo.commits.length > 0 ? (\n <Section icon={GitCommitHorizontal} title=\"Recent Commits\">\n <div className=\"relative ml-3\">\n <div className=\"bg-border absolute top-2 bottom-2 left-[5px] w-px\" />\n {repoInfo.commits.map((c, i) => (\n <div key={c.hash} className=\"group relative flex gap-3 py-1.5\">\n <div\n className={cn(\n 'relative z-10 mt-1.5 size-[11px] shrink-0 rounded-full border-2',\n i === 0\n ? 'border-primary bg-primary'\n : 'border-border bg-background group-hover:border-foreground/30'\n )}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-baseline gap-2\">\n <p className=\"min-w-0 truncate text-sm leading-snug\">{c.subject}</p>\n <code className=\"text-foreground/30 shrink-0 font-mono text-[11px]\">\n {c.shortHash}\n </code>\n </div>\n <div className=\"text-foreground/40 mt-0.5 flex items-center gap-2 text-xs\">\n <span>{c.author}</span>\n <span>·</span>\n <span>{c.relativeDate}</span>\n {c.branch ? (\n <>\n <span>·</span>\n <span className=\"inline-flex items-center gap-0.5\">\n <GitBranch className=\"size-3\" />\n {c.branch}\n </span>\n </>\n ) : null}\n </div>\n </div>\n </div>\n ))}\n </div>\n </Section>\n ) : null}\n\n {/* Branches — below commits, main/master first */}\n {repoInfo && repoInfo.branches.length > 1 ? (\n <Section icon={GitBranch} title=\"Branches\">\n <div className=\"flex flex-col\">\n {[...repoInfo.branches]\n .sort((a, b) => {\n const isDefault = (n: string) => /^(main|master)$/.test(n);\n if (a.isCurrent && !b.isCurrent) return -1;\n if (!a.isCurrent && b.isCurrent) return 1;\n if (isDefault(a.name) && !isDefault(b.name)) return -1;\n if (!isDefault(a.name) && isDefault(b.name)) return 1;\n return 0;\n })\n .map((b) => (\n <div\n key={b.name}\n className={cn(\n 'flex items-center justify-between rounded px-2 py-1.5',\n b.isCurrent && 'bg-muted/60'\n )}\n >\n <span className=\"inline-flex items-center gap-1.5 text-sm\">\n {b.isCurrent ? (\n <span className=\"size-2 shrink-0 rounded-full bg-green-500\" />\n ) : /^(main|master)$/.test(b.name) ? (\n <span className=\"size-2 shrink-0 rounded-full bg-blue-500\" />\n ) : (\n <span className=\"bg-foreground/10 size-2 shrink-0 rounded-full\" />\n )}\n <code className=\"font-mono text-[13px]\">{b.name}</code>\n {b.isCurrent ? (\n <span className=\"text-foreground/40 text-[10px]\">current</span>\n ) : null}\n </span>\n <span className=\"text-foreground/40 text-xs\">{b.lastCommitDate}</span>\n </div>\n ))}\n </div>\n </Section>\n ) : null}\n\n {/* Errors */}\n {syncError ? (\n <Section icon={AlertTriangle} title=\"Issues\">\n <Card className=\"bg-destructive/5 border-transparent\">\n <p className=\"text-destructive text-sm\">{syncError}</p>\n </Card>\n </Section>\n ) : null}\n </div>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z',\n key: 'vktsd0',\n },\n ],\n ['circle', { cx: '7.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'kqv944' }],\n];\n\n/**\n * @component @name Tag\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNTg2IDIuNTg2QTIgMiAwIDAgMCAxMS4xNzIgMkg0YTIgMiAwIDAgMC0yIDJ2Ny4xNzJhMiAyIDAgMCAwIC41ODYgMS40MTRsOC43MDQgOC43MDRhMi40MjYgMi40MjYgMCAwIDAgMy40MiAwbDYuNTgtNi41OGEyLjQyNiAyLjQyNiAwIDAgMCAwLTMuNDJ6IiAvPgogIDxjaXJjbGUgY3g9IjcuNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/tag\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Tag = createLucideIcon('tag', __iconNode);\n\nexport default Tag;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M10.5 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v6',\n key: 'g5mvt7',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'm14 20 2 2 4-4', key: '15kota' }],\n];\n\n/**\n * @component @name FileCheckCorner\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAuNSAyMkg2YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNi43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djYiIC8+CiAgPHBhdGggZD0iTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUiIC8+CiAgPHBhdGggZD0ibTE0IDIwIDIgMiA0LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/file-check-corner\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileCheckCorner = createLucideIcon('file-check-corner', __iconNode);\n\nexport default FileCheckCorner;\n"],"names":[],"mappings":"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","ignoreList":[2,3]}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/data%3A5ad976%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/control-center-drawer/repository-drawer-client.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/tag.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/file-check-corner.ts"],"sourcesContent":["/* __next_internal_action_entry_do_not_use__ [{\"609e008e96a3b01556d124846e9c324ca5200e7986\":{\"name\":\"getGitRepoInfo\"}},\"src/presentation/web/app/actions/get-git-log.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"609e008e96a3b01556d124846e9c324ca5200e7986\",callServer,void 0,findSourceMapURL,\"getGitRepoInfo\");export{$$RSC_SERVER_ACTION_0 as getGitRepoInfo};","'use client';\n\nimport { useState, useCallback, useEffect } from 'react';\nimport { useRouter, usePathname } from 'next/navigation';\nimport {\n Code2,\n Terminal,\n FolderOpen,\n RefreshCw,\n Play,\n Square,\n Copy,\n Check,\n Loader2,\n LayoutDashboard,\n MessageSquare,\n GitBranch,\n GitCommitHorizontal,\n AlertTriangle,\n Globe,\n Tag,\n Archive,\n FileEdit,\n FilePlus,\n FileCheck2,\n} from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DeploymentStatusBadge } from '@/components/common/deployment-status-badge';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/ui/tabs';\nimport { useRepositoryActions } from '@/components/common/repository-node/use-repository-actions';\nimport { useDeployAction } from '@/hooks/use-deploy-action';\nimport { useFeatureFlags } from '@/hooks/feature-flags-context';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\nimport { ChatTab } from '@/components/features/chat/ChatTab';\nimport { getGitRepoInfo } from '@/app/actions/get-git-log';\nimport type { GitRepoInfo } from '@/app/actions/get-git-log';\n\nconst COPY_FEEDBACK_DELAY = 2000;\n\nconst tbBtn =\n 'text-muted-foreground hover:bg-foreground/8 hover:text-foreground inline-flex size-8 items-center justify-center rounded-[3px] disabled:opacity-40';\nconst tbSep = 'bg-border/60 mx-1.5 h-5 w-px shrink-0';\n\nexport interface RepositoryDrawerClientProps {\n data: RepositoryNodeData;\n /** Initial tab key from URL (e.g. 'chat'). */\n initialTab?: 'overview' | 'chat';\n}\n\nexport function RepositoryDrawerClient({ data, initialTab }: RepositoryDrawerClientProps) {\n const featureFlags = useFeatureFlags();\n const router = useRouter();\n const pathname = usePathname();\n const isOpen = pathname.startsWith('/repository/');\n const [activeTab, setActiveTab] = useState<string>(initialTab ?? 'overview');\n const [pathCopied, setPathCopied] = useState(false);\n const repoActions = useRepositoryActions(\n data.repositoryPath ? { repositoryId: data.id, repositoryPath: data.repositoryPath } : null\n );\n\n const onClose = useCallback(() => {\n router.push('/');\n }, [router]);\n\n const deployAction = useDeployAction(\n data.repositoryPath\n ? {\n targetId: data.repositoryPath,\n targetType: 'repository' as const,\n repositoryPath: data.repositoryPath,\n }\n : null\n );\n const isDeployActive = deployAction.status === 'Booting' || deployAction.status === 'Ready';\n\n const handleCopyPath = useCallback(() => {\n if (!data.repositoryPath) return;\n void navigator.clipboard.writeText(data.repositoryPath);\n setPathCopied(true);\n setTimeout(() => setPathCopied(false), COPY_FEEDBACK_DELAY);\n }, [data.repositoryPath]);\n\n // Session ID for repo chat — deterministic per repo\n const repoSessionId = data.id ? `repo-${data.id}` : `repo-${data.name}`;\n\n return (\n <BaseDrawer\n open={isOpen}\n onClose={onClose}\n size=\"lg\"\n modal={false}\n data-testid=\"repository-drawer\"\n >\n <Tabs value={activeTab} onValueChange={setActiveTab} className=\"flex min-h-0 flex-1 flex-col\">\n {/* VS Code-style tab bar */}\n <TabsList className=\"bg-muted/50 h-auto w-full shrink-0 justify-start gap-0 rounded-none border-b p-0\">\n <TabsTrigger\n value=\"overview\"\n className=\"text-muted-foreground hover:bg-muted hover:text-foreground data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:border-t-primary [&:not([data-state=active])]:border-r-border relative h-auto rounded-none border-t-2 border-r border-t-transparent border-r-transparent bg-transparent px-3.5 py-2.5 text-[13px] font-normal shadow-none transition-none last:border-r-transparent data-[state=active]:shadow-none\"\n >\n <LayoutDashboard className=\"mr-1.5 size-4\" />\n Overview\n </TabsTrigger>\n <TabsTrigger\n value=\"chat\"\n className=\"text-muted-foreground hover:bg-muted hover:text-foreground data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:border-t-primary [&:not([data-state=active])]:border-r-border relative h-auto rounded-none border-t-2 border-r border-t-transparent border-r-transparent bg-transparent px-3.5 py-2.5 text-[13px] font-normal shadow-none transition-none last:border-r-transparent data-[state=active]:shadow-none\"\n >\n <MessageSquare className=\"mr-1.5 size-4\" />\n Chat\n </TabsTrigger>\n </TabsList>\n\n {/* Persistent header — contrasting background */}\n <div className=\"bg-muted/40 shrink-0 border-b\">\n {/* Repo title + path breadcrumb */}\n <div\n className=\"flex items-center gap-2 px-4 pe-10 pt-2.5 pb-2\"\n data-testid=\"repository-drawer-header\"\n >\n <h2 className=\"text-foreground min-w-0 truncate text-base font-semibold tracking-tight\">\n {data.name}\n </h2>\n {data.repositoryPath ? (\n <>\n <span className=\"text-muted-foreground/40 text-xs\">/</span>\n <span className=\"text-muted-foreground min-w-0 truncate font-mono text-[11px]\">\n {data.repositoryPath}\n </span>\n </>\n ) : null}\n </div>\n\n {/* IDE toolbar */}\n {data.repositoryPath ? (\n <div data-testid=\"repository-drawer-toolbar\">\n <div className=\"flex h-9 items-center px-1.5\">\n {/* Left: Open actions */}\n <TooltipProvider delayDuration={300}>\n <div className=\"flex items-center\">\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={repoActions.openInIde}\n disabled={repoActions.ideLoading}\n aria-label=\"Open in IDE\"\n >\n {repoActions.ideLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : (\n <Code2 className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n Open in IDE\n </TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={repoActions.openInShell}\n disabled={repoActions.shellLoading}\n aria-label=\"Open terminal\"\n >\n {repoActions.shellLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : (\n <Terminal className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n Open terminal\n </TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={repoActions.openFolder}\n disabled={repoActions.folderLoading}\n aria-label=\"Open folder\"\n >\n {repoActions.folderLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : (\n <FolderOpen className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n Open folder\n </TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={handleCopyPath}\n aria-label=\"Copy path\"\n >\n {pathCopied ? (\n <Check className=\"size-3.5 text-green-500\" />\n ) : (\n <Copy className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n {pathCopied ? 'Copied!' : 'Copy path'}\n </TooltipContent>\n </Tooltip>\n </div>\n\n {/* Git sync */}\n {data.id && featureFlags.gitRebaseSync ? (\n <>\n <div className={tbSep} />\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={tbBtn}\n onClick={repoActions.syncMain}\n disabled={repoActions.syncLoading}\n aria-label=\"Sync main\"\n >\n {repoActions.syncLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : (\n <RefreshCw className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n Sync main\n </TooltipContent>\n </Tooltip>\n </>\n ) : null}\n\n {/* Deploy */}\n {featureFlags.envDeploy ? (\n <>\n <div className={tbSep} />\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={deployAction.deployLoading || deployAction.stopLoading}\n onClick={isDeployActive ? deployAction.stop : deployAction.deploy}\n className={cn(\n 'inline-flex size-7 items-center justify-center rounded-[3px] disabled:opacity-40',\n isDeployActive\n ? 'text-red-500 hover:bg-red-500/10 hover:text-red-400'\n : 'text-green-500 hover:bg-green-500/10 hover:text-green-400'\n )}\n aria-label={isDeployActive ? 'Stop dev server' : 'Start dev server'}\n >\n {deployAction.deployLoading || deployAction.stopLoading ? (\n <Loader2 className=\"size-3.5 animate-spin\" />\n ) : isDeployActive ? (\n <Square className=\"size-4\" />\n ) : (\n <Play className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\" className=\"text-xs\">\n {isDeployActive ? 'Stop dev server' : 'Start dev server'}\n </TooltipContent>\n </Tooltip>\n {isDeployActive ? (\n <DeploymentStatusBadge\n status={deployAction.status}\n url={deployAction.url}\n targetId={data.repositoryPath}\n />\n ) : null}\n </>\n ) : null}\n </TooltipProvider>\n\n <div className=\"flex-1\" />\n </div>\n </div>\n ) : null}\n </div>\n\n {/* Overview tab */}\n <TabsContent value=\"overview\" className=\"mt-0 flex-1 overflow-y-auto\">\n <RepoOverview data={data} syncError={repoActions.syncError} />\n </TabsContent>\n\n {/* Chat tab */}\n <TabsContent value=\"chat\" className=\"mt-0 flex min-h-0 flex-1 flex-col overflow-hidden\">\n <ChatTab featureId={repoSessionId} worktreePath={data.repositoryPath} />\n </TabsContent>\n </Tabs>\n </BaseDrawer>\n );\n}\n\n// ── Repo Overview ───────────────────────────────────────────────────\n\nfunction Section({\n icon: Icon,\n title,\n children,\n}: {\n icon: React.ComponentType<{ className?: string }>;\n title: string;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"px-3 pt-4 pb-1\">\n <div className=\"text-foreground mb-2 flex items-center gap-1.5 text-sm font-semibold tracking-wider uppercase\">\n <Icon className=\"size-4 opacity-50\" />\n {title}\n </div>\n {children}\n </div>\n );\n}\n\nfunction Card({ children, className }: { children: React.ReactNode; className?: string }) {\n return (\n <div className={cn('bg-muted/60 rounded-md border border-transparent p-3', className)}>\n {children}\n </div>\n );\n}\n\nfunction KV({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-foreground/40 text-[11px] font-medium tracking-wider uppercase\">\n {label}\n </span>\n <span className=\"text-sm leading-snug\">{children}</span>\n </div>\n );\n}\n\nfunction RepoOverview({\n data,\n syncError,\n}: {\n data: RepositoryNodeData;\n syncError?: string | null;\n}) {\n const [repoInfo, setRepoInfo] = useState<GitRepoInfo | null>(null);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (!data.repositoryPath) return;\n let cancelled = false;\n setLoading(true);\n getGitRepoInfo(data.repositoryPath, 8)\n .then((result) => {\n if (!cancelled) setRepoInfo(result);\n })\n .catch(() => {\n // Silently handle — repo info is non-critical\n })\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [data.repositoryPath]);\n\n if (!data.repositoryPath) return null;\n\n const wt = repoInfo?.workingTree;\n const isDirty = wt && (wt.staged > 0 || wt.modified > 0 || wt.untracked > 0);\n const ds = repoInfo?.diffStats;\n\n return (\n <div className=\"pb-4\">\n {loading ? (\n <div className=\"text-foreground/40 flex items-center gap-2 px-4 py-8 text-sm\">\n <Loader2 className=\"size-4 animate-spin\" /> Loading repository info...\n </div>\n ) : null}\n\n {/* Quick stats grid */}\n {repoInfo ? (\n <div className=\"grid grid-cols-2 gap-2 px-3 pt-3\">\n {/* Current branch */}\n <Card>\n <KV label=\"Branch\">\n <span className=\"inline-flex items-center gap-1.5\">\n <GitBranch className=\"text-foreground/30 size-3.5 shrink-0\" />\n <code className=\"font-mono text-sm\">\n {repoInfo.currentBranch ?? data.branch ?? '—'}\n </code>\n </span>\n {data.behindCount != null && data.behindCount > 0 ? (\n <span className=\"mt-0.5 block text-xs text-orange-600 dark:text-orange-400\">\n {data.behindCount} behind default\n </span>\n ) : null}\n </KV>\n </Card>\n\n {/* Working tree */}\n <Card>\n <KV label=\"Working Tree\">\n {isDirty ? (\n <div className=\"flex flex-wrap gap-x-3 gap-y-0.5\">\n {wt.staged > 0 ? (\n <span className=\"inline-flex items-center gap-1 text-sm text-green-600 dark:text-green-400\">\n <FileCheck2 className=\"size-3.5\" /> {wt.staged} staged\n </span>\n ) : null}\n {wt.modified > 0 ? (\n <span className=\"inline-flex items-center gap-1 text-sm text-amber-600 dark:text-amber-400\">\n <FileEdit className=\"size-3.5\" /> {wt.modified} modified\n </span>\n ) : null}\n {wt.untracked > 0 ? (\n <span className=\"text-foreground/50 inline-flex items-center gap-1 text-sm\">\n <FilePlus className=\"size-3.5\" /> {wt.untracked} untracked\n </span>\n ) : null}\n </div>\n ) : (\n <span className=\"inline-flex items-center gap-1.5 text-sm text-green-600 dark:text-green-400\">\n <Check className=\"size-3.5\" /> Clean\n </span>\n )}\n </KV>\n </Card>\n\n {/* Diff stats */}\n {ds ? (\n <Card>\n <KV label=\"Uncommitted Changes\">\n <div className=\"flex items-center gap-3 text-sm\">\n <span>\n {ds.filesChanged} file{ds.filesChanged !== 1 ? 's' : ''}\n </span>\n <span className=\"text-green-600 dark:text-green-400\">+{ds.insertions}</span>\n <span className=\"text-red-500 dark:text-red-400\">-{ds.deletions}</span>\n </div>\n </KV>\n </Card>\n ) : null}\n\n {/* Remotes */}\n {repoInfo.remotes.length > 0 ? (\n <Card>\n <KV label=\"Remote\">\n {repoInfo.remotes.map((r) => (\n <span key={r.name} className=\"inline-flex items-center gap-1.5 text-sm\">\n <Globe className=\"text-foreground/30 size-3.5 shrink-0\" />\n <span className=\"truncate\">\n {r.url\n .replace(/\\.git$/, '')\n .replace(/^https?:\\/\\/([^@]+@)?/, '')\n .replace(/x-access-token:[^@]+@/, '')}\n </span>\n </span>\n ))}\n </KV>\n </Card>\n ) : null}\n\n {/* Stashes */}\n {repoInfo.stashCount > 0 ? (\n <Card>\n <KV label=\"Stashes\">\n <span className=\"inline-flex items-center gap-1.5 text-sm\">\n <Archive className=\"text-foreground/30 size-3.5 shrink-0\" />\n {repoInfo.stashCount} stash{repoInfo.stashCount !== 1 ? 'es' : ''}\n </span>\n </KV>\n </Card>\n ) : null}\n\n {/* Tags */}\n {repoInfo.tags.length > 0 ? (\n <Card>\n <KV label=\"Tags\">\n <div className=\"flex flex-wrap gap-1.5\">\n {repoInfo.tags.map((t) => (\n <span\n key={t}\n className=\"bg-foreground/[0.04] inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-xs\"\n >\n <Tag className=\"text-foreground/30 size-2.5\" />\n {t}\n </span>\n ))}\n </div>\n </KV>\n </Card>\n ) : null}\n </div>\n ) : null}\n\n {/* Commit history */}\n {repoInfo && repoInfo.commits.length > 0 ? (\n <Section icon={GitCommitHorizontal} title=\"Recent Commits\">\n <div className=\"relative ml-3\">\n <div className=\"bg-border absolute top-2 bottom-2 left-[5px] w-px\" />\n {repoInfo.commits.map((c, i) => (\n <div key={c.hash} className=\"group relative flex gap-3 py-1.5\">\n <div\n className={cn(\n 'relative z-10 mt-1.5 size-[11px] shrink-0 rounded-full border-2',\n i === 0\n ? 'border-primary bg-primary'\n : 'border-border bg-background group-hover:border-foreground/30'\n )}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-baseline gap-2\">\n <p className=\"min-w-0 truncate text-sm leading-snug\">{c.subject}</p>\n <code className=\"text-foreground/30 shrink-0 font-mono text-[11px]\">\n {c.shortHash}\n </code>\n </div>\n <div className=\"text-foreground/40 mt-0.5 flex items-center gap-2 text-xs\">\n <span>{c.author}</span>\n <span>·</span>\n <span>{c.relativeDate}</span>\n {c.branch ? (\n <>\n <span>·</span>\n <span className=\"inline-flex items-center gap-0.5\">\n <GitBranch className=\"size-3\" />\n {c.branch}\n </span>\n </>\n ) : null}\n </div>\n </div>\n </div>\n ))}\n </div>\n </Section>\n ) : null}\n\n {/* Branches — below commits, main/master first */}\n {repoInfo && repoInfo.branches.length > 1 ? (\n <Section icon={GitBranch} title=\"Branches\">\n <div className=\"flex flex-col\">\n {[...repoInfo.branches]\n .sort((a, b) => {\n const isDefault = (n: string) => /^(main|master)$/.test(n);\n if (a.isCurrent && !b.isCurrent) return -1;\n if (!a.isCurrent && b.isCurrent) return 1;\n if (isDefault(a.name) && !isDefault(b.name)) return -1;\n if (!isDefault(a.name) && isDefault(b.name)) return 1;\n return 0;\n })\n .map((b) => (\n <div\n key={b.name}\n className={cn(\n 'flex items-center justify-between rounded px-2 py-1.5',\n b.isCurrent && 'bg-muted/60'\n )}\n >\n <span className=\"inline-flex items-center gap-1.5 text-sm\">\n {b.isCurrent ? (\n <span className=\"size-2 shrink-0 rounded-full bg-green-500\" />\n ) : /^(main|master)$/.test(b.name) ? (\n <span className=\"size-2 shrink-0 rounded-full bg-blue-500\" />\n ) : (\n <span className=\"bg-foreground/10 size-2 shrink-0 rounded-full\" />\n )}\n <code className=\"font-mono text-[13px]\">{b.name}</code>\n {b.isCurrent ? (\n <span className=\"text-foreground/40 text-[10px]\">current</span>\n ) : null}\n </span>\n <span className=\"text-foreground/40 text-xs\">{b.lastCommitDate}</span>\n </div>\n ))}\n </div>\n </Section>\n ) : null}\n\n {/* Errors */}\n {syncError ? (\n <Section icon={AlertTriangle} title=\"Issues\">\n <Card className=\"bg-destructive/5 border-transparent\">\n <p className=\"text-destructive text-sm\">{syncError}</p>\n </Card>\n </Section>\n ) : null}\n </div>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z',\n key: 'vktsd0',\n },\n ],\n ['circle', { cx: '7.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'kqv944' }],\n];\n\n/**\n * @component @name Tag\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNTg2IDIuNTg2QTIgMiAwIDAgMCAxMS4xNzIgMkg0YTIgMiAwIDAgMC0yIDJ2Ny4xNzJhMiAyIDAgMCAwIC41ODYgMS40MTRsOC43MDQgOC43MDRhMi40MjYgMi40MjYgMCAwIDAgMy40MiAwbDYuNTgtNi41OGEyLjQyNiAyLjQyNiAwIDAgMCAwLTMuNDJ6IiAvPgogIDxjaXJjbGUgY3g9IjcuNSIgY3k9IjcuNSIgcj0iLjUiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/tag\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Tag = createLucideIcon('tag', __iconNode);\n\nexport default Tag;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M10.5 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v6',\n key: 'g5mvt7',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'm14 20 2 2 4-4', key: '15kota' }],\n];\n\n/**\n * @component @name FileCheckCorner\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAuNSAyMkg2YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNi43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djYiIC8+CiAgPHBhdGggZD0iTTE0IDJ2NWExIDEgMCAwIDAgMSAxaDUiIC8+CiAgPHBhdGggZD0ibTE0IDIwIDIgMiA0LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/file-check-corner\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileCheckCorner = createLucideIcon('file-check-corner', __iconNode);\n\nexport default FileCheckCorner;\n"],"names":[],"mappings":"wDCEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,MAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,MAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,wBCqBM,EAAA,CAAA,CAAA,CAAA,AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAA,CCtBhB,CDsBuB,AArBlC,CAqBkC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,2JAjBnC,CAAA,ACAA,CDAA,ACAA,CDAA,ACAA,CDAA,ACAA,CDAA,ACAA,CDAA,ACAA,CDAA,ACAA,eDGI,GAAA,MAAW,CAAA,ACAV,CAAA,ADAU,CAAA,ACAV,kBDAoC,CCAJ,CAAA,CAAA,YDAoB,CAAA,CAAA,CAAA,CAAK,AAAL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,GDPnF,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OEsBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAlB,CAAkB,AAAiB,AAAnC,CAAkB,AAAiB,AAAnC,CAAkB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAvBL,CAuB0B,CArB1D,AAqB0D,CDrB1D,ACAA,AAqB0D,CDrB1D,ACAA,AAqB0D,CDrB1D,ACAA,AAqB0D,CDrB1D,ACAA,AAqB0D,CDrB1D,ACAA,AAqB0D,CDrB1D,ACAA,AAqB0D,CApB1D,AAoB0D,CAAA,CAAU,CAAA,oHAhBtE,EACC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,ADAR,ACAU,CDAA,CCAG,CAAA,ADAD,CAAA,ACAC,wBAA2B,CDAH,ACAG,CAAA,ADAH,ECAQ,CDAF,ACAE,CDAF,ACAE,CAAA,ADAF,KCAE,CAAU,CAAA,CACxD,CAAC,CAAA,CAAA,CAAA,CAAA,CDDiD,ACCjD,CDDiD,ACCjD,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAkB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACjD,CDYA,CDCA,ACDA,CAAA,CAAA,EDCA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,ODnC+M,EAAA,EAAA,CAAA,CAAA,MAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,kBCyC9b,EACJ,qJACI,EAAQ,wCAiRd,SAAS,EAAQ,CACf,KAAM,CAAI,OACV,CAAK,UACL,CAAQ,CAKT,EACC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,2BACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0GACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,UAAU,sBACf,KAEF,IAGP,CAEA,SAAS,EAAK,UAAE,CAAQ,WAAE,CAAS,CAAqD,EACtF,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,uDAAwD,YACxE,GAGP,CAEA,SAAS,EAAG,OAAE,CAAK,UAAE,CAAQ,CAAgD,EAC3E,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,kCACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,+EACb,IAEH,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,gCAAwB,MAG9C,CAEA,SAAS,EAAa,MACpB,CAAI,WACJ,CAAS,CAIV,EACC,GAAM,CAAC,EAAU,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAqB,MACvD,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAqBvC,GAnBA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,GAAI,CAAC,EAAK,cAAc,CAAE,OAC1B,IAAI,GAAY,EAYhB,OAXA,EAAW,IACX,EAAe,EAAK,cAAc,CAAE,GACjC,IAAI,CAAC,AAAC,IACD,AAAC,GAAW,EAAY,EAC9B,GACC,KAAK,CAAC,KAEP,GACC,OAAO,CAAC,KACF,AAAD,GAAY,EAAW,GAC7B,GACK,KACL,GAAY,CACd,CACF,EAAG,CAAC,EAAK,cAAc,CAAC,EAEpB,CAAC,EAAK,cAAc,CAAE,OAAO,KAEjC,IAAM,EAAK,GAAU,YACf,EAAU,IAAO,EAAD,AAAI,MAAM,CAAG,GAAK,EAAG,QAAQ,CAAG,GAAK,EAAG,SAAS,EAAG,CAAC,CACrE,EAAK,GAAU,UAErB,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iBACZ,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,yEACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,wBAAwB,iCAE3C,KAGH,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CAEb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UACC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CAAG,MAAM,mBACR,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,6CACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC,UAAU,yCACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6BACb,EAAS,aAAa,EAAI,EAAK,MAAM,EAAI,SAG7C,AAAoB,QAAf,WAAW,EAAY,EAAK,WAAW,CAAG,EAC9C,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,sEACb,EAAK,WAAW,CAAC,qBAElB,UAKR,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAG,MAAM,wBACP,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CACZ,EAAG,MAAM,CAAG,EACX,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,sFACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,UAAU,aAAa,IAAE,EAAG,MAAM,CAAC,aAE/C,KACH,EAAG,QAAQ,CAAG,EACb,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,sFACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,aAAa,IAAE,EAAG,QAAQ,CAAC,eAE/C,KACH,EAAG,SAAS,CAAG,EACd,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,sEACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,aAAa,IAAE,EAAG,SAAS,CAAC,gBAEhD,QAGN,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,wFACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,aAAa,gBAOrC,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAG,MAAM,+BACR,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,4CACb,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACE,EAAG,YAAY,CAAC,QAA0B,IAApB,EAAG,YAAY,CAAS,IAAM,MAEvD,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,+CAAqC,IAAE,EAAG,UAAU,IACpE,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,2CAAiC,IAAE,EAAG,SAAS,WAInE,KAGH,EAAS,OAAO,CAAC,MAAM,CAAG,EACzB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAG,MAAM,kBACP,EAAS,OAAO,CAAC,GAAG,CAAC,AAAC,GACrB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAkB,UAAU,qDAC3B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,yCACjB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oBACb,EAAE,GAAG,CACH,OAAO,CAAC,SAAU,IAClB,OAAO,CAAC,wBAAyB,IACjC,OAAO,CAAC,wBAAyB,QAN7B,EAAE,IAAI,OAYrB,KAGH,EAAS,UAAU,CAAG,EACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAG,MAAM,mBACR,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,qDACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,yCAClB,EAAS,UAAU,CAAC,SAA+B,IAAxB,EAAS,UAAU,CAAS,KAAO,UAInE,KAGH,EAAS,IAAI,CAAC,MAAM,CAAG,EACtB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAG,MAAM,gBACR,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,kCACZ,EAAS,IAAI,CAAC,GAAG,CAAC,AAAC,GAClB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAEC,UAAU,gGAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAI,UAAU,gCACd,IAJI,UAUb,QAEJ,KAGH,GAAY,EAAS,OAAO,CAAC,MAAM,CAAG,EACrC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,KAAM,EAAA,mBAAmB,CAAE,MAAM,0BACxC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0BACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sDACd,EAAS,OAAO,CAAC,GAAG,CAAC,CAAC,EAAG,IACxB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAiB,UAAU,6CAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,kEACM,IAAN,EACI,4BACA,kEAGR,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,2BACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sCACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,iDAAyC,EAAE,OAAO,GAC/D,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6DACb,EAAE,SAAS,MAGhB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sEACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,EAAE,MAAM,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,MACN,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,EAAE,YAAY,GACpB,EAAE,MAAM,CACP,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,MACN,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,6CACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC,UAAU,WACpB,EAAE,MAAM,OAGX,aA5BA,EAAE,IAAI,QAmCpB,KAGH,GAAY,EAAS,QAAQ,CAAC,MAAM,CAAG,EACtC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,KAAM,EAAA,SAAS,CAAE,MAAM,oBAC9B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,yBACZ,IAAI,EAAS,QAAQ,CAAC,CACpB,IAAI,CAAC,CAAC,EAAG,wBAER,AAAI,EAAE,SAAS,EAAI,CAAC,EAAE,SAAS,CAAS,CAAP,AAAQ,EACrC,CAAC,EAAE,SAAS,EAAI,EAAE,SAAS,CAAS,CAAP,IACnB,EAAE,IAAI,KAAK,CAAC,yBAAU,EAAE,IAAI,GAAG,2BAAO,CAAC,EACrD,EAAI,CAAC,CAAU,EAAE,IAAI,KAAK,4BAJP,EAIiB,EAAE,IAAI,CAJT,EAIY,OAAO,SAJD,IAAI,CAAC,KAM1D,GACC,GAAG,CAAC,AAAC,GACJ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAEC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,wDACA,EAAE,SAAS,EAAI,yBAGjB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,qDACb,EAAE,SAAS,CACV,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,8CACd,kBAAkB,IAAI,CAAC,EAAE,IAAI,EAC/B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6CAEhB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,kDAElB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCAAyB,EAAE,IAAI,GAC9C,EAAE,SAAS,CACV,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0CAAiC,YAC/C,QAEN,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,sCAA8B,EAAE,cAAc,KAnBzD,EAAE,IAAI,OAwBnB,KAGH,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,KAAM,EAAA,aAAa,CAAE,MAAM,kBAClC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,UAAU,+CACd,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,oCAA4B,QAG3C,OAGV,iCA7iBO,SAAS,AAAuB,MAAE,CAAI,YAAE,CAAU,CAA+B,EACtF,IAAM,EAAe,CAAA,EAAA,EAAA,eAAA,AAAe,IAC9B,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAElB,EAAS,AADE,CAAA,EAAA,EAAA,WAAW,AAAX,IACO,UAAU,CAAC,gBAC7B,CAAC,EAAW,EAAa,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAS,GAAc,YAC3D,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACvC,EAAc,CAAA,EAAA,EAAA,oBAAA,AAAoB,EACtC,EAAK,cAAc,CAAG,CAAE,aAAc,EAAK,EAAE,CAAE,eAAgB,EAAK,cAAc,AAAC,EAAI,MAGnF,EAAU,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,KAC1B,EAAO,IAAI,CAAC,IACd,EAAG,CAAC,EAAO,EAEL,EAAe,CAAA,EAAA,EAAA,eAAe,AAAf,EACnB,EAAK,cAAc,CACf,CACE,SAAU,EAAK,cAAc,CAC7B,WAAY,aACZ,eAAgB,EAAK,cACvB,AADqC,EAErC,MAEA,EAAyC,YAAxB,EAAa,MAAM,EAA0C,UAAxB,EAAa,MAAM,CAEzE,EAAiB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,KAC5B,EAAK,cAAc,EAAE,CACrB,UAAU,SAAS,CAAC,SAAS,CAAC,EAAK,cAAc,EACtD,GAAc,GACd,WAAW,IAAM,GAAc,GA1CP,KA0Ce,AACzC,EAAG,CAAC,EAAK,cAAc,CAAC,EAGlB,EAAgB,EAAK,EAAE,CAAG,CAAC,KAAK,EAAE,EAAK,EAAE,CAAA,CAAE,CAAG,CAAC,KAAK,EAAE,EAAK,IAAI,CAAA,CAAE,CAEvE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,KAAM,EACN,QAAS,EACT,KAAK,KACL,OAAO,EACP,cAAY,6BAEZ,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,IAAI,CAAA,CAAC,MAAO,EAAW,cAAe,EAAc,UAAU,yCAE7D,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,6FAClB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,WAAW,CAAA,CACV,MAAM,WACN,UAAU,qcAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,eAAe,CAAA,CAAC,UAAU,kBAAkB,cAG/C,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,WAAW,CAAA,CACV,MAAM,OACN,UAAU,qcAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAC,UAAU,kBAAkB,aAM/C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0CAEb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC,UAAU,iDACV,cAAY,qCAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,mFACX,EAAK,IAAI,GAEX,EAAK,cAAc,CAClB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,4CAAmC,MACnD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wEACb,EAAK,cAAc,MAGtB,QAIL,EAAK,cAAc,CAClB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,cAAY,qCACf,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,yCAEb,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,eAAe,CAAA,CAAC,cAAe,cAC9B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8BACb,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,UAAW,EACX,QAAS,EAAY,SAAS,CAC9B,SAAU,EAAY,UAAU,CAChC,aAAW,uBAEV,EAAY,UAAU,CACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,0BAEnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,eAIvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,KAAK,SAAS,UAAU,mBAAU,mBAKpD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,UAAW,EACX,QAAS,EAAY,WAAW,CAChC,SAAU,EAAY,YAAY,CAClC,aAAW,yBAEV,EAAY,YAAY,CACvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,0BAEnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,eAI1B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,KAAK,SAAS,UAAU,mBAAU,qBAKpD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,UAAW,EACX,QAAS,EAAY,UAAU,CAC/B,SAAU,EAAY,aAAa,CACnC,aAAW,uBAEV,EAAY,aAAa,CACxB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,0BAEnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,UAAU,eAI5B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,KAAK,SAAS,UAAU,mBAAU,mBAKpD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,UAAW,EACX,QAAS,EACT,aAAW,qBAEV,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,4BAEjB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,UAAU,eAItB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,KAAK,SAAS,UAAU,mBACrC,EAAa,UAAY,oBAM/B,EAAK,EAAE,EAAI,EAAa,aAAa,CACpC,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAW,IAChB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,UAAW,EACX,QAAS,EAAY,QAAQ,CAC7B,SAAU,EAAY,WAAW,CACjC,aAAW,qBAEV,EAAY,WAAW,CACtB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,0BAEnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC,UAAU,eAI3B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,KAAK,SAAS,UAAU,mBAAU,oBAKpD,KAGH,EAAa,SAAS,CACrB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAW,IAChB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,SAAU,EAAa,aAAa,EAAI,EAAa,WAAW,CAChE,QAAS,EAAiB,EAAa,IAAI,CAAG,EAAa,MAAM,CACjE,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,mFACA,EACI,sDACA,6DAEN,aAAY,EAAiB,kBAAoB,4BAEhD,EAAa,aAAa,EAAI,EAAa,WAAW,CACrD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,0BACjB,EACF,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,WAElB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,UAAU,eAItB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,KAAK,SAAS,UAAU,mBACrC,EAAiB,kBAAoB,wBAGzC,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,qBAAqB,CAAA,CACpB,OAAQ,EAAa,MAAM,CAC3B,IAAK,EAAa,GAAG,CACrB,SAAU,EAAK,cAAc,GAE7B,QAEJ,QAGN,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gBAGjB,QAIN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAC,MAAM,WAAW,UAAU,uCACtC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAa,KAAM,EAAM,UAAW,EAAY,SAAS,KAI5D,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAC,MAAM,OAAO,UAAU,6DAClC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAW,EAAe,aAAc,EAAK,cAAc,SAK9E","ignoreList":[2,3]}
@@ -1,3 +1,3 @@
1
- module.exports=[31747,a=>{"use strict";var b=a.i(81719),c=a.i(6880);a.i(1442);var d=a.i(79372),e=a.i(29918);a.s(["buildFeatureNodeData",0,function(a,f,g){let h=(f?.status===b.AgentRunStatus.running||f?.status===b.AgentRunStatus.pending)&&f?.pid?(0,d.isProcessAlive)(f.pid):void 0;return{name:a.name,description:a.description??a.slug,featureId:a.id,lifecycle:(0,c.deriveLifecycle)(a,f),repositoryPath:a.repositoryPath,branch:a.branch,worktreePath:a.worktreePath??(0,e.computeWorktreePath)(a.repositoryPath,a.branch),specPath:a.specPath,state:(0,c.deriveNodeState)(a,f,void 0!==h?{isPidAlive:h}:void 0),progress:(0,c.deriveProgress)(a),summary:a.description,userQuery:a.userQuery,createdAt:a.createdAt instanceof Date?a.createdAt.getTime():a.createdAt,...a.fast&&{fastMode:!0},approvalGates:a.approvalGates,push:a.push,openPr:a.openPr,forkAndPr:a.forkAndPr,commitSpecs:a.commitSpecs,enableEvidence:a.enableEvidence??g?.enableEvidence??!1,commitEvidence:a.commitEvidence??g?.commitEvidence??!1,ciWatchEnabled:a.ciWatchEnabled??g?.ciWatchEnabled??!0,...g?.hideCiStatus!=null&&{hideCiStatus:g.hideCiStatus},...g?.repositoryName&&{repositoryName:g.repositoryName},...g?.baseBranch&&{baseBranch:g.baseBranch},...g?.oneLiner&&{oneLiner:g.oneLiner},...g?.remoteUrl&&{remoteUrl:g.remoteUrl},...f?.agentType&&{agentType:f.agentType},...f?.modelId&&{modelId:f.modelId},...f?.error&&{errorMessage:f.error},...null!=a.agentRunId&&{hasAgentRun:!0},...null!=a.plan&&{hasPlan:!0},...a.pr&&{pr:{url:a.pr.url,number:a.pr.number,status:a.pr.status,ciStatus:a.pr.ciStatus,commitHash:a.pr.commitHash,mergeable:a.pr.mergeable}}}}])},61402,76052,13008,74607,6542,73624,12104,70319,54433,59020,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b,d){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{rejected:!1,error:"Feature not found"};if(!f.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let g=(0,c.resolve)("RejectAgentRunUseCase"),h=await g.execute(f.agentRunId,b,d);if(!h.rejected)return{rejected:!1,error:h.reason};return{rejected:!0,iteration:h.iteration,iterationWarning:h.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60ec3e8058762506674ac6572d4fb0b3837a5335e6",null),a.s(["approveFeature",0,e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"70d0c94a425b6f094402b5cfd0eb71ecf57126e7b8",null),a.s(["rejectFeature",0,f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40116b57cf902563f1e3b2a4317192077fb7f58aac",null),a.s(["getFeatureArtifact",0,g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"401e9fa0b4d5ac04587e3d890a627005309ab58c09",null),a.s(["getResearchArtifact",0,h],74607);var i=a.i(66680),j=a.i(2157),k=a.i(50227);a.i(1442);var l=a.i(29918),m=a.i(83771);async function n(a){if(!a.trim())return{error:"Feature id is required"};try{var b,d;let e,f,g=(0,c.resolve)("IFeatureRepository"),h=await g.findById(a);if(!h)return{error:"Feature not found"};let n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute(),p=h.pr?{url:h.pr.url,number:h.pr.number,status:h.pr.status,commitHash:h.pr.commitHash,ciStatus:h.pr.ciStatus,mergeable:h.pr.mergeable}:void 0,q=h.worktreePath??(h.repositoryPath&&h.branch?(0,l.computeWorktreePath)(h.repositoryPath,h.branch):null),r=(0,c.resolve)("IGitPrService"),s=q??h.repositoryPath??null,t="main";if(s)try{t=await r.getDefaultBranch(s)}catch{}let u=h.branch?{source:h.branch,target:t}:void 0,v=h.repositoryPath?(b=h.repositoryPath,f=(0,i.createHash)("sha256").update(b).digest("hex").slice(0,16),(0,k.join)((0,m.getShipitAiHomeDir)(),"repos",f,"evidence",a).replace(/\\/g,"/")):q?(0,k.join)((0,k.dirname)((0,k.dirname)(q)),"evidence",a).replace(/\\/g,"/"):null;if(v)try{let a=(0,k.join)(v,"manifest.json");if((0,j.existsSync)(a)){let b=(d=JSON.parse((0,j.readFileSync)(a,"utf-8")),d.map(a=>{if(a.relativePath.startsWith("/")){if((0,j.existsSync)(a.relativePath))return a;let b=(0,k.join)(v,(0,k.basename)(a.relativePath)).replace(/\\/g,"/");return(0,j.existsSync)(b)?{...a,relativePath:b}:a}let b=(0,k.join)(v,(0,k.basename)(a.relativePath)).replace(/\\/g,"/");return{...a,relativePath:b}})),c=new Set;e=b.filter(a=>{let b=`${a.type}:${a.relativePath}`;return!c.has(b)&&(c.add(b),!0)})}}catch{}if(!q)return{pr:p,branch:u,evidence:e,warning:p?void 0:"No PR or diff data available",hideCiStatus:o.hideCiStatus};try{let[a,b]=await Promise.all([r.getPrDiffSummary(q,t),r.getFileDiffs(q,t).catch(()=>void 0)]);return{pr:p,branch:u,diffSummary:a,fileDiffs:b,evidence:e,hideCiStatus:o.hideCiStatus}}catch{return{pr:p,branch:u,evidence:e,warning:"Diff statistics unavailable",hideCiStatus:o.hideCiStatus}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function o(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository"),d=(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt.toISOString(),completedAt:a.completedAt?.toISOString(),durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt?.toISOString(),approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0,inputTokens:null!=a.inputTokens?Number(a.inputTokens):void 0,outputTokens:null!=a.outputTokens?Number(a.outputTokens):void 0,cacheCreationInputTokens:null!=a.cacheCreationInputTokens?Number(a.cacheCreationInputTokens):void 0,cacheReadInputTokens:null!=a.cacheReadInputTokens?Number(a.cacheReadInputTokens):void 0,costUsd:null!=a.costUsd?Number(a.costUsd):void 0,numTurns:a.numTurns??void 0,durationApiMs:null!=a.durationApiMs?Number(a.durationApiMs):void 0,exitCode:a.exitCode??void 0,errorMessage:a.errorMessage??void 0,prompt:a.prompt??void 0})),e=await p(a);return{timings:d,rejectionFeedback:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function p(b){try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(b);if(!e?.specPath)return[];let{readFileSync:f}=await a.A(6714),{join:g}=await a.A(11105),h=(await a.A(29718)).default,i=f(g(e.specPath,"spec.yaml"),"utf-8"),j=h.load(i);if(!Array.isArray(j?.rejectionFeedback))return[];return j.rejectionFeedback.map(a=>({iteration:Number(a.iteration??1),message:String(a.message??""),phase:a.phase?String(a.phase):void 0,timestamp:a.timestamp?String(a.timestamp):void 0,attachments:Array.isArray(a.attachments)?a.attachments.map(String):void 0}))}catch{return[]}}async function q(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return{error:"Feature not found"};if(!d.plan)return{plan:void 0};return{plan:{state:d.plan.state,overview:d.plan.overview,tasks:d.plan.tasks.map(a=>({title:a.title??"",description:a.description??"",state:a.state,actionItems:(a.actionItems??[]).map(a=>({name:a.name,description:a.description,acceptanceCriteria:(a.acceptanceCriteria??[]).map(a=>({description:a.description,verified:a.verified}))}))}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}async function r(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("RebaseFeatureOnMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to rebase feature"}}}(0,d.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"403baf20bdb27961d9b0a4183f6501945421397b4f",null),a.s(["getMergeReviewData",0,n],6542),(0,d.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"40fb02adf44665c5196dafe95ca8bfc9fe00c4bf50",null),a.s(["getFeaturePhaseTimings",0,o],73624),(0,d.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40947edd3dc63c3d5734dd14380151ce30ee289208",null),a.s(["getFeaturePlan",0,q],12104),(0,d.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"4063ddcabe6a1b7549486754fca2a37b38024350a6",null),a.s(["rebaseFeature",0,r],70319);var s=a.i(31747);async function t(a){try{let b=(0,c.resolve)("IFeatureRepository"),d=(0,c.resolve)("IAgentRunRepository"),e=(0,c.resolve)("IRepositoryRepository"),f=(0,c.resolve)("IGitPrService"),g=(0,c.resolve)("GetFeatureArtifactUseCase"),h=await b.findById(a);if(!h)return null;let i=h.agentRunId?await d.findById(h.agentRunId):null,[j,k,l,m]=await Promise.all([e.findByPath(h.repositoryPath).catch(()=>null),f.getDefaultBranch(h.repositoryPath).catch(()=>"main"),g.execute(a).catch(()=>null),f.getRemoteUrl(h.repositoryPath).catch(()=>null)]),n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute();return(0,s.buildFeatureNodeData)(h,i,{repositoryName:j?.name,baseBranch:k,oneLiner:l?.oneLiner,remoteUrl:m??void 0,enableEvidence:o.enableEvidence,commitEvidence:o.commitEvidence,hideCiStatus:o.hideCiStatus})}catch{return null}}async function u(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("GetBranchSyncStatusUseCase"),d=await b.execute(a);return{success:!0,data:{...d,checkedAt:new Date().toISOString()}}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to get branch sync status"}}}(0,d.ensureServerEntryExports)([t]),(0,b.registerServerReference)(t,"40e94afca1a7630c784c8fb5f7beae68f8c495eb7a",null),a.s(["getFeatureDrawerData",0,t],54433),(0,d.ensureServerEntryExports)([u]),(0,b.registerServerReference)(u,"40e4bbdcd32a4abf544e0d1f136b6dc4f036d29ec2",null),a.s(["getBranchSyncStatus",0,u],59020)},66074,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(61402),D=a.i(76052),E=a.i(13008),F=a.i(74607),G=a.i(6542),H=a.i(73624),I=a.i(12104),J=a.i(70319),K=a.i(54433),L=a.i(59020);a.s([],55808),a.i(55808),a.s(["0003ed8e696a91e89fc43bb3100e2acadfdc29c73a",()=>q.isAgentSetupComplete,"00133d3187a799a2d0ca1130d40595e67c8f79495e",()=>f.listGitHubOrganizations,"0039d53c09b3d5382847ce7f02550e671cfbc602fd",()=>b.getAllAgentModels,"00488e5022a8e37ad8f1e7680bacdc6344743e7b83",()=>d.pickFolder,"004af80d32fb2a993c41c01fa0cdd4b921d68abf5a",()=>s.checkToolStatus,"005a36051593772052764b6b390a17b6cc26423300",()=>r.checkAgentAuth,"400050dd7d280dbef1d84326b4e8d73dde22e93bef",()=>A.addRepository,"40055713d57c4d3b0a9c34421a348748dc096c1130",()=>l.openIde,"4010e6a0dac58d659f3d3c49b32771e554db7a9dea",()=>x.startFeature,"40116b57cf902563f1e3b2a4317192077fb7f58aac",()=>E.getFeatureArtifact,"40121ab0f37d35205a828f23c089b853ba7875a1b6",()=>t.getFeatureMetadata,"401285a8b470b4ad1e6c710b0452b978b44b168fb0",()=>e.listGitHubRepositories,"401e9fa0b4d5ac04587e3d890a627005309ab58c09",()=>F.getResearchArtifact,"4027bebc8545bcb58eb98638157c856db7d19be671",()=>u.archiveFeature,"403a26579aab867ebdada1b4d35f123665dcc5e441",()=>o.syncRepository,"403baf20bdb27961d9b0a4183f6501945421397b4f",()=>G.getMergeReviewData,"4047420b990cb69d50022f834c7252062d8d2e1500",()=>n.openFolder,"404839615b199692590baaa913d73d12e3f90cffca",()=>z.unarchiveFeature,"404df1ba8c0bfb1a0f1b269345c37af4c4fe0a427d",()=>w.resumeFeature,"40522a046a3634f84b0d1b0f6ddeeb5fac824df9b5",()=>B.deleteRepository,"405b3ac13082ab42bb20e8821ea67ce47f3f351bd7",()=>j.stopDeployment,"4063a53f5c26bb31c34936d40bc446fde72cef445b",()=>m.openShell,"4063ddcabe6a1b7549486754fca2a37b38024350a6",()=>J.rebaseFeature,"4086de9ff6a21e3052c67c418d2862ac26b3a7ee2d",()=>h.deployFeature,"40899c4751436097b079c4ff3f592f77f1cbdde08e",()=>y.stopFeature,"4093bc8f7cd4b831835fb3be81b36b1ec49cdd65b1",()=>g.importGitHubRepository,"40947edd3dc63c3d5734dd14380151ce30ee289208",()=>I.getFeaturePlan,"40a2a07b894a98bfd7051c5b5c58d4d73b9750ef96",()=>p.getDeploymentLogs,"40b3e27c89f85219767cb88588fc5b2471e101dd33",()=>i.deployRepository,"40d976db50c25286f5bc74237211d32869fa308d37",()=>k.getDeploymentStatus,"40e4bbdcd32a4abf544e0d1f136b6dc4f036d29ec2",()=>L.getBranchSyncStatus,"40e94afca1a7630c784c8fb5f7beae68f8c495eb7a",()=>K.getFeatureDrawerData,"40fb02adf44665c5196dafe95ca8bfc9fe00c4bf50",()=>H.getFeaturePhaseTimings,"60d7348cd7fe764fcd5f40beb727b9e5eb788a8229",()=>c.updateAgentAndModel,"60ec3e8058762506674ac6572d4fb0b3837a5335e6",()=>C.approveFeature,"70d0c94a425b6f094402b5cfd0eb71ecf57126e7b8",()=>D.rejectFeature,"78711a834735b46603ac95150b46dc0054204646cf",()=>v.deleteFeature],66074)},6714,a=>{a.v(a=>Promise.resolve().then(()=>a(2157)))},11105,a=>{a.v(a=>Promise.resolve().then(()=>a(50227)))},29718,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0oyb_js-yaml_dist_js-yaml_mjs_0yiiuw.._.js"].map(b=>a.l(b))).then(()=>b(32996)))}];
1
+ module.exports=[31747,a=>{"use strict";var b=a.i(81719),c=a.i(6880);a.i(1442);var d=a.i(79372),e=a.i(29918);a.s(["buildFeatureNodeData",0,function(a,f,g){let h=(f?.status===b.AgentRunStatus.running||f?.status===b.AgentRunStatus.pending)&&f?.pid?(0,d.isProcessAlive)(f.pid):void 0;return{name:a.name,description:a.description??a.slug,featureId:a.id,lifecycle:(0,c.deriveLifecycle)(a,f),repositoryPath:a.repositoryPath,branch:a.branch,worktreePath:a.worktreePath??(0,e.computeWorktreePath)(a.repositoryPath,a.branch),specPath:a.specPath,state:(0,c.deriveNodeState)(a,f,void 0!==h?{isPidAlive:h}:void 0),progress:(0,c.deriveProgress)(a),summary:a.description,userQuery:a.userQuery,createdAt:a.createdAt instanceof Date?a.createdAt.getTime():a.createdAt,...a.fast&&{fastMode:!0},approvalGates:a.approvalGates,push:a.push,openPr:a.openPr,forkAndPr:a.forkAndPr,commitSpecs:a.commitSpecs,enableEvidence:a.enableEvidence??g?.enableEvidence??!1,commitEvidence:a.commitEvidence??g?.commitEvidence??!1,ciWatchEnabled:a.ciWatchEnabled??g?.ciWatchEnabled??!0,...g?.hideCiStatus!=null&&{hideCiStatus:g.hideCiStatus},...g?.repositoryName&&{repositoryName:g.repositoryName},...g?.baseBranch&&{baseBranch:g.baseBranch},...g?.oneLiner&&{oneLiner:g.oneLiner},...g?.remoteUrl&&{remoteUrl:g.remoteUrl},...f?.agentType&&{agentType:f.agentType},...f?.modelId&&{modelId:f.modelId},...f?.error&&{errorMessage:f.error},...null!=a.agentRunId&&{hasAgentRun:!0},...null!=a.plan&&{hasPlan:!0},...a.pr&&{pr:{url:a.pr.url,number:a.pr.number,status:a.pr.status,ciStatus:a.pr.ciStatus,commitHash:a.pr.commitHash,mergeable:a.pr.mergeable}}}}])},61402,76052,13008,74607,6542,73624,12104,70319,54433,59020,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b,d){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{rejected:!1,error:"Feature not found"};if(!f.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let g=(0,c.resolve)("RejectAgentRunUseCase"),h=await g.execute(f.agentRunId,b,d);if(!h.rejected)return{rejected:!1,error:h.reason};return{rejected:!0,iteration:h.iteration,iterationWarning:h.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"605c3544c1f8141470c5d818229eb33f3654cbe9de",null),a.s(["approveFeature",0,e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"70a30bc2376f43e8b3db1d28e790d1be9a3dab8014",null),a.s(["rejectFeature",0,f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"407d82592d4b4569c5cfbd737ec14f06ee3440ad95",null),a.s(["getFeatureArtifact",0,g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"40011dbadb4b736ff7780c5056c85068dfbb38c3e1",null),a.s(["getResearchArtifact",0,h],74607);var i=a.i(66680),j=a.i(2157),k=a.i(50227);a.i(1442);var l=a.i(29918),m=a.i(83771);async function n(a){if(!a.trim())return{error:"Feature id is required"};try{var b,d;let e,f,g=(0,c.resolve)("IFeatureRepository"),h=await g.findById(a);if(!h)return{error:"Feature not found"};let n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute(),p=h.pr?{url:h.pr.url,number:h.pr.number,status:h.pr.status,commitHash:h.pr.commitHash,ciStatus:h.pr.ciStatus,mergeable:h.pr.mergeable}:void 0,q=h.worktreePath??(h.repositoryPath&&h.branch?(0,l.computeWorktreePath)(h.repositoryPath,h.branch):null),r=(0,c.resolve)("IGitPrService"),s=q??h.repositoryPath??null,t="main";if(s)try{t=await r.getDefaultBranch(s)}catch{}let u=h.branch?{source:h.branch,target:t}:void 0,v=h.repositoryPath?(b=h.repositoryPath,f=(0,i.createHash)("sha256").update(b).digest("hex").slice(0,16),(0,k.join)((0,m.getShipitAiHomeDir)(),"repos",f,"evidence",a).replace(/\\/g,"/")):q?(0,k.join)((0,k.dirname)((0,k.dirname)(q)),"evidence",a).replace(/\\/g,"/"):null;if(v)try{let a=(0,k.join)(v,"manifest.json");if((0,j.existsSync)(a)){let b=(d=JSON.parse((0,j.readFileSync)(a,"utf-8")),d.map(a=>{if(a.relativePath.startsWith("/")){if((0,j.existsSync)(a.relativePath))return a;let b=(0,k.join)(v,(0,k.basename)(a.relativePath)).replace(/\\/g,"/");return(0,j.existsSync)(b)?{...a,relativePath:b}:a}let b=(0,k.join)(v,(0,k.basename)(a.relativePath)).replace(/\\/g,"/");return{...a,relativePath:b}})),c=new Set;e=b.filter(a=>{let b=`${a.type}:${a.relativePath}`;return!c.has(b)&&(c.add(b),!0)})}}catch{}if(!q)return{pr:p,branch:u,evidence:e,warning:p?void 0:"No PR or diff data available",hideCiStatus:o.hideCiStatus};try{let[a,b]=await Promise.all([r.getPrDiffSummary(q,t),r.getFileDiffs(q,t).catch(()=>void 0)]);return{pr:p,branch:u,diffSummary:a,fileDiffs:b,evidence:e,hideCiStatus:o.hideCiStatus}}catch{return{pr:p,branch:u,evidence:e,warning:"Diff statistics unavailable",hideCiStatus:o.hideCiStatus}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function o(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository"),d=(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt.toISOString(),completedAt:a.completedAt?.toISOString(),durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt?.toISOString(),approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0,inputTokens:null!=a.inputTokens?Number(a.inputTokens):void 0,outputTokens:null!=a.outputTokens?Number(a.outputTokens):void 0,cacheCreationInputTokens:null!=a.cacheCreationInputTokens?Number(a.cacheCreationInputTokens):void 0,cacheReadInputTokens:null!=a.cacheReadInputTokens?Number(a.cacheReadInputTokens):void 0,costUsd:null!=a.costUsd?Number(a.costUsd):void 0,numTurns:a.numTurns??void 0,durationApiMs:null!=a.durationApiMs?Number(a.durationApiMs):void 0,exitCode:a.exitCode??void 0,errorMessage:a.errorMessage??void 0,prompt:a.prompt??void 0})),e=await p(a);return{timings:d,rejectionFeedback:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function p(b){try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(b);if(!e?.specPath)return[];let{readFileSync:f}=await a.A(6714),{join:g}=await a.A(11105),h=(await a.A(29718)).default,i=f(g(e.specPath,"spec.yaml"),"utf-8"),j=h.load(i);if(!Array.isArray(j?.rejectionFeedback))return[];return j.rejectionFeedback.map(a=>({iteration:Number(a.iteration??1),message:String(a.message??""),phase:a.phase?String(a.phase):void 0,timestamp:a.timestamp?String(a.timestamp):void 0,attachments:Array.isArray(a.attachments)?a.attachments.map(String):void 0}))}catch{return[]}}async function q(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return{error:"Feature not found"};if(!d.plan)return{plan:void 0};return{plan:{state:d.plan.state,overview:d.plan.overview,tasks:d.plan.tasks.map(a=>({title:a.title??"",description:a.description??"",state:a.state,actionItems:(a.actionItems??[]).map(a=>({name:a.name,description:a.description,acceptanceCriteria:(a.acceptanceCriteria??[]).map(a=>({description:a.description,verified:a.verified}))}))}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}async function r(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("RebaseFeatureOnMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to rebase feature"}}}(0,d.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"40a8f2e8acfc45e51d0d8d7bc0c5738f3ff69c0040",null),a.s(["getMergeReviewData",0,n],6542),(0,d.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"40e10027b4924be37f73bd6becaeb592e6d0901a2e",null),a.s(["getFeaturePhaseTimings",0,o],73624),(0,d.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40d3be2761ee94f193d862f457eeb76508435d835b",null),a.s(["getFeaturePlan",0,q],12104),(0,d.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"4081417e57de222a3c71ceb3799fbb3465cf0fa444",null),a.s(["rebaseFeature",0,r],70319);var s=a.i(31747);async function t(a){try{let b=(0,c.resolve)("IFeatureRepository"),d=(0,c.resolve)("IAgentRunRepository"),e=(0,c.resolve)("IRepositoryRepository"),f=(0,c.resolve)("IGitPrService"),g=(0,c.resolve)("GetFeatureArtifactUseCase"),h=await b.findById(a);if(!h)return null;let i=h.agentRunId?await d.findById(h.agentRunId):null,[j,k,l,m]=await Promise.all([e.findByPath(h.repositoryPath).catch(()=>null),f.getDefaultBranch(h.repositoryPath).catch(()=>"main"),g.execute(a).catch(()=>null),f.getRemoteUrl(h.repositoryPath).catch(()=>null)]),n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute();return(0,s.buildFeatureNodeData)(h,i,{repositoryName:j?.name,baseBranch:k,oneLiner:l?.oneLiner,remoteUrl:m??void 0,enableEvidence:o.enableEvidence,commitEvidence:o.commitEvidence,hideCiStatus:o.hideCiStatus})}catch{return null}}async function u(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("GetBranchSyncStatusUseCase"),d=await b.execute(a);return{success:!0,data:{...d,checkedAt:new Date().toISOString()}}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to get branch sync status"}}}(0,d.ensureServerEntryExports)([t]),(0,b.registerServerReference)(t,"4013d643c6feca4e102fe9bea4293360793e5246d5",null),a.s(["getFeatureDrawerData",0,t],54433),(0,d.ensureServerEntryExports)([u]),(0,b.registerServerReference)(u,"40165dd6d3bef833b3fdb9f0dc6cf209f90f7b7e05",null),a.s(["getBranchSyncStatus",0,u],59020)},66074,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(61402),D=a.i(76052),E=a.i(13008),F=a.i(74607),G=a.i(6542),H=a.i(73624),I=a.i(12104),J=a.i(70319),K=a.i(54433),L=a.i(59020);a.s([],55808),a.i(55808),a.s(["0001646280e908679c3138f1ac25fb2433e32dd1b9",()=>b.getAllAgentModels,"0020452c03f2732119e7561d4c1fba86eee90d0441",()=>q.isAgentSetupComplete,"0079bf88ddd1853c0adb03b925c1136af2ea7b2b58",()=>s.checkToolStatus,"0079e34070bffa2d0e7952067ffc98534044a3f47f",()=>f.listGitHubOrganizations,"00d8fb08a7dba52132389265ec4eb081f02a547187",()=>d.pickFolder,"00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823",()=>r.checkAgentAuth,"40011dbadb4b736ff7780c5056c85068dfbb38c3e1",()=>F.getResearchArtifact,"400644903ed6894eedbf0b001dcbbb7e3ca3e309c7",()=>l.openIde,"400c270aefa32609d2064e1074a3b9cca2ecd7ac40",()=>i.deployRepository,"400f6b6f5c319087323956e68e3c1af167a0097c0d",()=>p.getDeploymentLogs,"4013d643c6feca4e102fe9bea4293360793e5246d5",()=>K.getFeatureDrawerData,"40165dd6d3bef833b3fdb9f0dc6cf209f90f7b7e05",()=>L.getBranchSyncStatus,"4018bef3bc92ffa047953aebcb3b972add0d07fa0e",()=>x.startFeature,"4025e7565e144546a41753500aed288fd2e822bb35",()=>j.stopDeployment,"402dfcc9c77913dbcb80cbb028bd9325ebba11cbff",()=>k.getDeploymentStatus,"40305f12b445fdd66736a073063014f5162474e9fa",()=>B.deleteRepository,"404e186bc93375e8827c855048b8206ec2e95af43a",()=>o.syncRepository,"407082b8991005bcda465d223757d9d050f8d3253a",()=>t.getFeatureMetadata,"407d82592d4b4569c5cfbd737ec14f06ee3440ad95",()=>E.getFeatureArtifact,"4081417e57de222a3c71ceb3799fbb3465cf0fa444",()=>J.rebaseFeature,"409012491a994da842a75da0beffa5ceb08da18b4b",()=>n.openFolder,"4094e1182ef68e30f7807eea0cae32386ca9e65b4b",()=>z.unarchiveFeature,"4095611cbecd750cce932da99d031ed579999f1074",()=>y.stopFeature,"4098b761c8813bd6c7b0f130c2704912265def7222",()=>m.openShell,"409bd776367ae0414e61a14766b43d6fd2f50a4fdc",()=>g.importGitHubRepository,"409dba37e21d4549c18ca2a1ad2e151d778fc47c0a",()=>e.listGitHubRepositories,"40a8f2e8acfc45e51d0d8d7bc0c5738f3ff69c0040",()=>G.getMergeReviewData,"40a9edd85d70236c79c5b5f48de3ac570508b38a59",()=>A.addRepository,"40c5d85f4158d92e322eff01a37b0c6fbfa808d924",()=>h.deployFeature,"40d3be2761ee94f193d862f457eeb76508435d835b",()=>I.getFeaturePlan,"40d9bb377bc84684536d6617ebc31de0750eb63bac",()=>w.resumeFeature,"40e10027b4924be37f73bd6becaeb592e6d0901a2e",()=>H.getFeaturePhaseTimings,"40eea0d894f3ce984a612e879a6c87cd025bb05e9b",()=>u.archiveFeature,"605c3544c1f8141470c5d818229eb33f3654cbe9de",()=>C.approveFeature,"60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4",()=>c.updateAgentAndModel,"70a30bc2376f43e8b3db1d28e790d1be9a3dab8014",()=>D.rejectFeature,"78534c974dbc5aa14d299e67270e0961c3fec6aacf",()=>v.deleteFeature],66074)},6714,a=>{a.v(a=>Promise.resolve().then(()=>a(2157)))},11105,a=>{a.v(a=>Promise.resolve().then(()=>a(50227)))},29718,a=>{a.v(b=>Promise.all(["server/chunks/ssr/0oyb_js-yaml_dist_js-yaml_mjs_0yiiuw.._.js"].map(b=>a.l(b))).then(()=>b(32996)))}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0r32z03._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__01~y8wi._.js.map