@shepai/cli 1.194.3-pr586.23e3597 → 1.194.4

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 (302) hide show
  1. package/package.json +1 -1
  2. package/web/.next/BUILD_ID +1 -1
  3. package/web/.next/build-manifest.json +2 -2
  4. package/web/.next/fallback-build-manifest.json +2 -2
  5. package/web/.next/prerender-manifest.json +3 -3
  6. package/web/.next/required-server-files.js +2 -2
  7. package/web/.next/required-server-files.json +2 -2
  8. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/react-loadable-manifest.json +3 -3
  9. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +36 -36
  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/react-loadable-manifest.json +3 -3
  13. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +34 -34
  14. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  15. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  16. package/web/.next/server/app/(dashboard)/@drawer/create/page/react-loadable-manifest.json +3 -3
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +37 -37
  18. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/react-loadable-manifest.json +3 -3
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +46 -46
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/react-loadable-manifest.json +3 -3
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +46 -46
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +3 -3
  29. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +35 -35
  30. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  31. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/react-loadable-manifest.json +3 -3
  33. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +35 -35
  34. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/chat/page/react-loadable-manifest.json +3 -3
  37. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +34 -34
  38. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/control-center/page/react-loadable-manifest.json +3 -3
  41. package/web/.next/server/app/(dashboard)/control-center/page/server-reference-manifest.json +34 -34
  42. package/web/.next/server/app/(dashboard)/control-center/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/control-center/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/(dashboard)/create/page/react-loadable-manifest.json +3 -3
  45. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +37 -37
  46. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/react-loadable-manifest.json +3 -3
  49. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +46 -46
  50. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/react-loadable-manifest.json +3 -3
  53. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +46 -46
  54. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +3 -3
  57. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +35 -35
  58. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/react-loadable-manifest.json +3 -3
  61. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +35 -35
  62. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/_global-error.html +2 -2
  65. package/web/.next/server/app/_global-error.rsc +1 -1
  66. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  67. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  68. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  69. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  70. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  71. package/web/.next/server/app/_not-found/page/react-loadable-manifest.json +3 -3
  72. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +8 -8
  73. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/application/[id]/page/react-loadable-manifest.json +3 -3
  75. package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +17 -17
  76. package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
  77. package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/applications/page/react-loadable-manifest.json +3 -3
  79. package/web/.next/server/app/applications/page/server-reference-manifest.json +18 -18
  80. package/web/.next/server/app/applications/page.js.nft.json +1 -1
  81. package/web/.next/server/app/applications/page_client-reference-manifest.js +1 -1
  82. package/web/.next/server/app/features/page/react-loadable-manifest.json +3 -3
  83. package/web/.next/server/app/features/page/server-reference-manifest.json +30 -30
  84. package/web/.next/server/app/features/page.js.nft.json +1 -1
  85. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/page/react-loadable-manifest.json +3 -3
  87. package/web/.next/server/app/page/server-reference-manifest.json +8 -8
  88. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/projects/[slug]/items/[itemId]/page/react-loadable-manifest.json +3 -3
  90. package/web/.next/server/app/projects/[slug]/items/[itemId]/page/server-reference-manifest.json +15 -15
  91. package/web/.next/server/app/projects/[slug]/items/[itemId]/page_client-reference-manifest.js +1 -1
  92. package/web/.next/server/app/projects/[slug]/page/react-loadable-manifest.json +3 -3
  93. package/web/.next/server/app/projects/[slug]/page/server-reference-manifest.json +27 -27
  94. package/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  95. package/web/.next/server/app/projects/[slug]/pages/page/react-loadable-manifest.json +3 -3
  96. package/web/.next/server/app/projects/[slug]/pages/page/server-reference-manifest.json +11 -11
  97. package/web/.next/server/app/projects/[slug]/pages/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/projects/[slug]/settings/page/react-loadable-manifest.json +3 -3
  99. package/web/.next/server/app/projects/[slug]/settings/page/server-reference-manifest.json +17 -17
  100. package/web/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/projects/page/react-loadable-manifest.json +3 -3
  102. package/web/.next/server/app/projects/page/server-reference-manifest.json +9 -9
  103. package/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/settings/page/react-loadable-manifest.json +3 -3
  105. package/web/.next/server/app/settings/page/server-reference-manifest.json +11 -11
  106. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  107. package/web/.next/server/app/skills/page/react-loadable-manifest.json +3 -3
  108. package/web/.next/server/app/skills/page/server-reference-manifest.json +16 -16
  109. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/tools/page/react-loadable-manifest.json +3 -3
  111. package/web/.next/server/app/tools/page/server-reference-manifest.json +14 -14
  112. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/version/page/react-loadable-manifest.json +3 -3
  114. package/web/.next/server/app/version/page/server-reference-manifest.json +8 -8
  115. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/chunks/[root-of-the-server]__10e976f3._.js +1 -1
  117. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_99cb41a4.js +1 -1
  118. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_99cb41a4.js.map +1 -1
  119. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_3bcbcc2f.js +1 -1
  120. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_3bcbcc2f.js.map +1 -1
  121. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_059f6735.js +1 -1
  122. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_059f6735.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_control-center_page_actions_86edeb51.js +1 -1
  124. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_control-center_page_actions_86edeb51.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js +1 -1
  126. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js.map +1 -1
  127. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.js +1 -1
  128. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.js.map +1 -1
  129. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  130. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  131. package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js +1 -1
  132. package/web/.next/server/chunks/ssr/[root-of-the-server]__012a0e7d._.js +1 -1
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__012a0e7d._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__0462fa34._.js +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__0462fa34._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__1973d644._.js +1 -1
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__1a86d5fe._.js +1 -1
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__1a86d5fe._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__30326387._.js +1 -1
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__30326387._.js.map +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__3438c354._.js +1 -1
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__3438c354._.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__361129f0._.js +1 -1
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__361129f0._.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__4adb4a94._.js +3 -3
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__4adb4a94._.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__5c25ef9b._.js +2 -2
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__5c25ef9b._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__5c5f9704._.js +1 -1
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__5c5f9704._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__638955bc._.js +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__78e1366f._.js +1 -1
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__78e1366f._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0d04b8e2._.js → [root-of-the-server]__8ccbc357._.js} +2 -2
  155. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0d04b8e2._.js.map → [root-of-the-server]__8ccbc357._.js.map} +1 -1
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__97b6831c._.js +3 -3
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__9b16348d._.js +1 -1
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__9b16348d._.js.map +1 -1
  159. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1e902e32._.js → [root-of-the-server]__b2926b69._.js} +2 -2
  160. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1e902e32._.js.map → [root-of-the-server]__b2926b69._.js.map} +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3bc9689._.js +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3bc9689._.js.map +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba8cbee2._.js +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba8cbee2._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__dbde193f._.js +1 -1
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__dbde193f._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__f6adb460._.js +1 -1
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__f6adb460._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/_101de7c3._.js +1 -1
  170. package/web/.next/server/chunks/ssr/_101de7c3._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/_12ba4a07._.js +1 -1
  172. package/web/.next/server/chunks/ssr/_12ba4a07._.js.map +1 -1
  173. package/web/.next/server/chunks/ssr/_15634d5b._.js +1 -1
  174. package/web/.next/server/chunks/ssr/_15634d5b._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/_27c2f774._.js +1 -1
  176. package/web/.next/server/chunks/ssr/_27c2f774._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/_30787024._.js +1 -1
  178. package/web/.next/server/chunks/ssr/_30787024._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/_3bd60fa3._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_402d53bf._.js +1 -1
  181. package/web/.next/server/chunks/ssr/_402d53bf._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  183. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/_6868b4b1._.js +1 -1
  185. package/web/.next/server/chunks/ssr/{_3906be1d._.js → _759e7aaa._.js} +2 -2
  186. package/web/.next/server/chunks/ssr/{_3906be1d._.js.map → _759e7aaa._.js.map} +1 -1
  187. package/web/.next/server/chunks/ssr/{_12f37a55._.js → _7cd98562._.js} +2 -2
  188. package/web/.next/server/chunks/ssr/{_12f37a55._.js.map → _7cd98562._.js.map} +1 -1
  189. package/web/.next/server/chunks/ssr/_805ae1aa._.js +1 -1
  190. package/web/.next/server/chunks/ssr/_805ae1aa._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/_8a700ff4._.js +1 -1
  192. package/web/.next/server/chunks/ssr/_8a700ff4._.js.map +1 -1
  193. package/web/.next/server/chunks/ssr/_8f4f8aa1._.js +1 -1
  194. package/web/.next/server/chunks/ssr/_8f4f8aa1._.js.map +1 -1
  195. package/web/.next/server/chunks/ssr/{_fe68c1e2._.js → _9df39bfe._.js} +2 -2
  196. package/web/.next/server/chunks/ssr/{_fe68c1e2._.js.map → _9df39bfe._.js.map} +1 -1
  197. package/web/.next/server/chunks/ssr/{_1055ec32._.js → _a31c3a42._.js} +2 -2
  198. package/web/.next/server/chunks/ssr/{_1055ec32._.js.map → _a31c3a42._.js.map} +1 -1
  199. package/web/.next/server/chunks/ssr/_b40a4fc3._.js +1 -1
  200. package/web/.next/server/chunks/ssr/_b40a4fc3._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/_c44ec376._.js +1 -1
  202. package/web/.next/server/chunks/ssr/_c44ec376._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/_cd641c61._.js +1 -1
  204. package/web/.next/server/chunks/ssr/_cd641c61._.js.map +1 -1
  205. package/web/.next/server/chunks/ssr/_d53224a9._.js +1 -1
  206. package/web/.next/server/chunks/ssr/_d53224a9._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/{_60246ee2._.js → _de93c45c._.js} +2 -2
  208. package/web/.next/server/chunks/ssr/{_60246ee2._.js.map → _de93c45c._.js.map} +1 -1
  209. package/web/.next/server/chunks/ssr/{_8ee3123d._.js → _e0e86221._.js} +2 -2
  210. package/web/.next/server/chunks/ssr/{_8ee3123d._.js.map → _e0e86221._.js.map} +1 -1
  211. package/web/.next/server/chunks/ssr/_e6271303._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_e6271303._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/_ed8fd56c._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_ed8fd56c._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/_f602cc9f._.js +1 -1
  216. package/web/.next/server/chunks/ssr/_f602cc9f._.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  218. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  219. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  220. package/web/.next/server/chunks/ssr/src_presentation_web_05bba4dc._.js +1 -1
  221. package/web/.next/server/chunks/ssr/src_presentation_web_05bba4dc._.js.map +1 -1
  222. package/web/.next/server/chunks/ssr/src_presentation_web_43451480._.js +1 -1
  223. package/web/.next/server/chunks/ssr/src_presentation_web_43451480._.js.map +1 -1
  224. package/web/.next/server/chunks/ssr/src_presentation_web_4b306bb3._.js +1 -1
  225. package/web/.next/server/chunks/ssr/src_presentation_web_4b306bb3._.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/{src_presentation_web_1f525bd4._.js → src_presentation_web_5c844690._.js} +2 -2
  227. package/web/.next/server/chunks/ssr/{src_presentation_web_1f525bd4._.js.map → src_presentation_web_5c844690._.js.map} +1 -1
  228. package/web/.next/server/chunks/ssr/src_presentation_web_81dd84ae._.js +1 -1
  229. package/web/.next/server/chunks/ssr/src_presentation_web_81dd84ae._.js.map +1 -1
  230. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +1 -1
  231. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -1
  232. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_7ab26c98._.js +3 -3
  233. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js +1 -1
  234. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js.map +1 -1
  235. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +1 -1
  236. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js +1 -1
  237. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js.map +1 -1
  238. package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js +1 -1
  239. package/web/.next/server/chunks/ssr/src_presentation_web_b504e3e2._.js +1 -1
  240. package/web/.next/server/chunks/ssr/src_presentation_web_b504e3e2._.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/src_presentation_web_b5838705._.js +1 -1
  242. package/web/.next/server/chunks/ssr/src_presentation_web_b5838705._.js.map +1 -1
  243. package/web/.next/server/chunks/ssr/src_presentation_web_b6b4baa1._.js +1 -1
  244. package/web/.next/server/chunks/ssr/src_presentation_web_b6b4baa1._.js.map +1 -1
  245. package/web/.next/server/chunks/ssr/src_presentation_web_c3d0de23._.js +1 -1
  246. package/web/.next/server/chunks/ssr/src_presentation_web_c3d0de23._.js.map +1 -1
  247. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js +1 -1
  248. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js.map +1 -1
  249. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js +1 -1
  250. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  252. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  253. package/web/.next/server/chunks/ssr/{src_presentation_web_dc5ba3cf._.js → src_presentation_web_e596fda8._.js} +2 -2
  254. package/web/.next/server/chunks/ssr/{src_presentation_web_dc5ba3cf._.js.map → src_presentation_web_e596fda8._.js.map} +1 -1
  255. package/web/.next/server/chunks/ssr/src_presentation_web_fc29283f._.js +1 -1
  256. package/web/.next/server/chunks/ssr/src_presentation_web_fc29283f._.js.map +1 -1
  257. package/web/.next/server/pages/500.html +2 -2
  258. package/web/.next/server/server-reference-manifest.js +1 -1
  259. package/web/.next/server/server-reference-manifest.json +98 -98
  260. package/web/.next/static/chunks/{1d72f699758c6d3a.js → 089bd320dc4b1575.js} +1 -1
  261. package/web/.next/static/chunks/{913f8613ffba3e5c.js → 0fc17b433aa79b46.js} +1 -1
  262. package/web/.next/static/chunks/105bb00cb34ccd38.js +1 -0
  263. package/web/.next/static/chunks/{d5b120471ecd81c3.js → 18be29465f4a1def.js} +1 -1
  264. package/web/.next/static/chunks/1f42ad4a0931acd3.js +1 -0
  265. package/web/.next/static/chunks/{dddb3a86ceab0299.js → 298594ed8c886cbf.js} +1 -1
  266. package/web/.next/static/chunks/{6d5150e080c53d51.js → 33317caa5c5abd6b.js} +1 -1
  267. package/web/.next/static/chunks/{6ac3de2ae9fd6923.js → 34593f30cd188c4a.js} +1 -1
  268. package/web/.next/static/chunks/{3be081e466e5c38f.js → 37ea114b14bec27f.js} +1 -1
  269. package/web/.next/static/chunks/{5d7f74c25dacc25c.js → 3c250fbfb60ee24f.js} +1 -1
  270. package/web/.next/static/chunks/{79865a986c6f7b78.js → 3c98769f57d9cab5.js} +1 -1
  271. package/web/.next/static/chunks/{88de900956cc7c59.js → 3d2af4aff402ec27.js} +1 -1
  272. package/web/.next/static/chunks/{60fd7ec231b71fe6.js → 424eadec8be0f312.js} +1 -1
  273. package/web/.next/static/chunks/{600304d205fb6d78.js → 4936903aae95a25f.js} +1 -1
  274. package/web/.next/static/chunks/4d47b81085b62d87.js +1 -0
  275. package/web/.next/static/chunks/{127b0c5b93da3ad5.js → 4e2de41996b256eb.js} +1 -1
  276. package/web/.next/static/chunks/{e09a852e65d50ea9.js → 512f87d97c19d83c.js} +1 -1
  277. package/web/.next/static/chunks/{d8a8d0ea290869a7.js → 51de8a6b0bdc70c9.js} +1 -1
  278. package/web/.next/static/chunks/57a7139e142ed273.js +1 -0
  279. package/web/.next/static/chunks/{31eb52265493ef76.js → 61757ff9dcbbd032.js} +1 -1
  280. package/web/.next/static/chunks/674e4d59f39b85e2.js +1 -0
  281. package/web/.next/static/chunks/93ea366bd74183ac.js +1 -0
  282. package/web/.next/static/chunks/{b0658275cec08831.js → ae7430dbb2e98782.js} +1 -1
  283. package/web/.next/static/chunks/{07361c8c12a5843e.js → b2abfb9855755aa4.js} +1 -1
  284. package/web/.next/static/chunks/{eb53dfcd51b8c265.js → c3d369f4301955a1.js} +1 -1
  285. package/web/.next/static/chunks/{07c57742ecdf243e.js → cd057f6e3acdf607.js} +1 -1
  286. package/web/.next/static/chunks/{afc90b9d319294e0.js → d5563287e193adaa.js} +1 -1
  287. package/web/.next/static/chunks/{c777b5c3be68f05b.js → d861a3318a70ff49.js} +1 -1
  288. package/web/.next/static/chunks/{88cebfaa6dd82cc7.js → da7737afc53217ed.js} +3 -3
  289. package/web/.next/static/chunks/{4cecc66a490b21f7.js → e115c6778a53c0b0.js} +1 -1
  290. package/web/.next/static/chunks/{39b106ba3f6b82ea.js → ea904b744cea3776.js} +1 -1
  291. package/web/.next/static/chunks/{6ae0cf4dd1f41683.js → f0c7b0a956112e63.js} +1 -1
  292. package/web/.next/static/chunks/{a59dfab21ca0ba91.js → f31db8ecfc2d481e.js} +1 -1
  293. package/web/.next/static/chunks/{a98de0590c6ebab9.js → f8a21f4841d519ff.js} +1 -1
  294. package/web/.next/static/chunks/00f78bad91244b81.js +0 -1
  295. package/web/.next/static/chunks/55b11c087456741a.js +0 -1
  296. package/web/.next/static/chunks/64b32c7716c3cde3.js +0 -1
  297. package/web/.next/static/chunks/83b6dc76bfe00b00.js +0 -1
  298. package/web/.next/static/chunks/a29ef3fcc3085a7d.js +0 -1
  299. package/web/.next/static/chunks/b6f72b83e6cf64bc.js +0 -1
  300. /package/web/.next/static/{VT3SIc3eQMRpCzfl2igIb → wfZhz3kojQGb8pd6OW9Lk}/_buildManifest.js +0 -0
  301. /package/web/.next/static/{VT3SIc3eQMRpCzfl2igIb → wfZhz3kojQGb8pd6OW9Lk}/_clientMiddlewareManifest.json +0 -0
  302. /package/web/.next/static/{VT3SIc3eQMRpCzfl2igIb → wfZhz3kojQGb8pd6OW9Lk}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[66763,a=>{"use strict";var b=a.i(556365),c=a.i(944592),d=a.i(91109),e=a.i(450488),f=a.i(863698),g=a.i(403195),h=a.i(428002),i=a.i(450490),j=a.i(5698),k=a.i(598410),l=a.i(872016),m=a.i(488064),n=a.i(256957),o=a.i(612882),p=a.i(953170),q=a.i(492548),r=a.i(591498),s=a.i(884494),t=a.i(225700);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(433511),w=a.i(65298),x=a.i(638019);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(385536);a.i(478454);var A=a.i(124255);a.i(149235);var B=a.i(985080),C=a.i(182934),D=a.i(441305),E=a.i(755628),F=a.i(118662),G=a.i(821333),H=a.i(661544),I=a.i(409528);let J="text-muted-foreground hover:bg-foreground/8 hover:text-foreground inline-flex size-8 items-center justify-center rounded-[3px] disabled:opacity-40",K="bg-border/60 mx-1.5 h-5 w-px shrink-0";function L({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("/control-center")},[r]),I=(0,F.useDeployAction)(a.repositoryPath?{targetId:a.repositoryPath,targetType:"repository",repositoryPath:a.repositoryPath}:null),L="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:J,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:J,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:J,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:J,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:K}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:J,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:K}),(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:L?I.stop:I.deploy,className:(0,z.cn)("inline-flex size-7 items-center justify-center rounded-[3px] disabled:opacity-40",L?"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":L?"Stop dev server":"Start dev server",children:I.deployLoading||I.stopLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):L?(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:L?"Stop dev server":"Start dev server"})]}),L?(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})})]})})}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),(0,I.getGitRepoInfo)(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",()=>L],66763)}];
1
+ module.exports=[66763,a=>{"use strict";var b=a.i(556365),c=a.i(944592),d=a.i(91109),e=a.i(450488),f=a.i(863698),g=a.i(403195),h=a.i(428002),i=a.i(450490),j=a.i(5698),k=a.i(598410),l=a.i(872016),m=a.i(488064),n=a.i(256957),o=a.i(612882),p=a.i(953170),q=a.i(492548),r=a.i(591498),s=a.i(884494),t=a.i(225700);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(433511),w=a.i(65298),x=a.i(638019);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(385536);a.i(478454);var A=a.i(124255);a.i(149235);var B=a.i(985080),C=a.i(182934),D=a.i(441305),E=a.i(755628),F=a.i(118662),G=a.i(821333),H=a.i(661544),I=a.i(617648);let J="text-muted-foreground hover:bg-foreground/8 hover:text-foreground inline-flex size-8 items-center justify-center rounded-[3px] disabled:opacity-40",K="bg-border/60 mx-1.5 h-5 w-px shrink-0";function L({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("/control-center")},[r]),I=(0,F.useDeployAction)(a.repositoryPath?{targetId:a.repositoryPath,targetType:"repository",repositoryPath:a.repositoryPath}:null),L="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:J,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:J,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:J,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:J,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:K}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",className:J,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:K}),(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:L?I.stop:I.deploy,className:(0,z.cn)("inline-flex size-7 items-center justify-center rounded-[3px] disabled:opacity-40",L?"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":L?"Stop dev server":"Start dev server",children:I.deployLoading||I.stopLoading?(0,b.jsx)(m.Loader2,{className:"size-3.5 animate-spin"}):L?(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:L?"Stop dev server":"Start dev server"})]}),L?(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})})]})})}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),(0,I.getGitRepoInfo)(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",()=>L],66763)}];
2
2
 
3
3
  //# sourceMappingURL=f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"60a903865239d51962620c9382b535fbfa7ef0ba66",null),(0,b.registerServerReference)(i,"60347d49ff8bf99a8de9e50494cb8bc4b48b102ee4",null),a.s(["getGitRepoInfo",()=>h])},512777,a=>{"use strict";var b=a.i(912513),c=a.i(723504),d=a.i(408115),e=a.i(827900),f=a.i(673350),g=a.i(673101),h=a.i(654775),i=a.i(265324),j=a.i(433841),k=a.i(46646),l=a.i(868378),m=a.i(268670),n=a.i(685321),o=a.i(284095),p=a.i(656799),q=a.i(280496),r=a.i(93225),s=a.i(794691),t=a.i(477710),u=a.i(145395),v=a.i(941872),w=a.i(609959),x=a.i(879124),y=a.i(576707),z=a.i(410528),A=a.i(150845),B=a.i(26604),C=a.i(354723),D=a.i(118942),E=a.i(342886),F=a.i(649560),G=a.i(839353),H=a.i(495072),I=a.i(529207),J=a.i(235556);a.s([],978570),a.i(978570),a.s(["000437a7887cb85cc781ec3f0c5b6346c865156bce",()=>d.checkAllAgentsStatus,"001b4e7524e369f658da24646dc57bfb36fa48c40c",()=>x.checkToolStatus,"0025b05d8de9fd2f767fe5945d9ea26360f2d535b9",()=>h.listGitHubOrganizations,"0035b82adb8b991d0fe93be39821d96d64201aa6c1",()=>c.getAllAgentModels,"00b48466db3688f127a15b846d99664f978c1f2010",()=>v.isAgentSetupComplete,"00c87f9782616e1ee57aed2172ac0bffabfa01b8a8",()=>w.checkAgentAuth,"00e29f2bb0a12b22af7cde4b6050b42b0b35c86120",()=>b.pickFolder,"4002cb2cd5637e166af94ad41d670792e2dcfe4205",()=>t.createProjectAndFeature,"400c76e055164f96097ce06d81aaf30dce88829ad9",()=>s.getDeploymentLogs,"400cab87e62a7befe753bd93d36f5ccd8f8ee4e781",()=>r.syncRepository,"4022fde7bf7e8ae25e7a56a65b60d3b48bb4d2b663",()=>B.resumeFeature,"40354d622fd4841e21d4e5394473f74e7fbffaabab",()=>n.getDeploymentStatus,"40380eb0a867264153f92eb0befd51c6b57f60c9ce",()=>j.deployFeature,"404edeac64491ae197fe3b9b25c2a6513be494250a",()=>I.getFeatureMetadata,"4054d12a818d20b3295a47380239e047421be5e3db",()=>m.stopDeployment,"4059f7c623f696572000a9d187b8473126ea9d63ca",()=>q.openFolder,"405a6777132c43c4e7b43cd50863a8f5d3428800c5",()=>H.deleteApplication,"405f847f00fb02f1bae177485c4f9eab305d5a79ec",()=>y.createProjectFolder,"40606d2b1076b8b1fbed9a9e24749c8e59c8ba8ed2",()=>u.createApplication,"407b3082f8aa0308989b442f49820085256f25e5dc",()=>k.deployRepository,"4083db75c5f227c7e2c7192ae8dabcb8e9748e3efa",()=>p.openShell,"408477c12190864f18f9c2d2751ad85dee95c727e4",()=>i.importGitHubRepository,"4085e9c95d5c4b9511c0dba33930d626cd59db8cfa",()=>g.listGitHubRepositories,"40a195374dfcd86d9e2e050372657dddd15758381f",()=>E.unarchiveFeature,"40a65e24d344abc12687070db11ffe885c7d74b649",()=>F.addRepository,"40a9e7a9c3e1b77e7c9fa85b9f7d5a523b9d2f51c4",()=>l.deployApplication,"40abb687e1cbdd9a1a120704f01ba002e921349dd7",()=>C.startFeature,"40d405af9852aa627af72b53a622d9c62c7aea0d00",()=>D.stopFeature,"40e1210fbd379dfd9b187d89169c855d14964f0a3a",()=>z.archiveFeature,"40ed504cb60cb9b5ba3d159804f1aa9ac9e1ead92f",()=>o.openIde,"40f6ca9083cb853529dfd092c90212054843ba40cc",()=>f.globalSearch,"600be84a30e55e63ca74222507805a79d642a8e895",()=>G.deleteRepository,"60753f87e706ed2e9cac8467b0a586faf3d36efbac",()=>e.updateAgentAndModel,"60a903865239d51962620c9382b535fbfa7ef0ba66",()=>J.getGitRepoInfo,"78765481ad3f9e65792efd59a008701e1622c34fb4",()=>A.deleteFeature],512777)}];
1
+ module.exports=[235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"604689f5df3a212dee51785b0c8454b3971f4de0ba",null),(0,b.registerServerReference)(i,"60ead9d75f3a8f357a639074e723c90d4ab2cafcff",null),a.s(["getGitRepoInfo",()=>h])},512777,a=>{"use strict";var b=a.i(912513),c=a.i(723504),d=a.i(408115),e=a.i(827900),f=a.i(673350),g=a.i(673101),h=a.i(654775),i=a.i(265324),j=a.i(433841),k=a.i(46646),l=a.i(868378),m=a.i(268670),n=a.i(685321),o=a.i(284095),p=a.i(656799),q=a.i(280496),r=a.i(93225),s=a.i(794691),t=a.i(477710),u=a.i(145395),v=a.i(941872),w=a.i(609959),x=a.i(879124),y=a.i(576707),z=a.i(410528),A=a.i(150845),B=a.i(26604),C=a.i(354723),D=a.i(118942),E=a.i(342886),F=a.i(649560),G=a.i(839353),H=a.i(495072),I=a.i(529207),J=a.i(235556);a.s([],978570),a.i(978570),a.s(["000d9b7d014e752595eada5ca560aa4949a934055a",()=>d.checkAllAgentsStatus,"001d5af05da9ad894be0807da95474a0cea5cb6f41",()=>h.listGitHubOrganizations,"0052d2146b314d43502380d99a49e25a5d2c8fb805",()=>c.getAllAgentModels,"0086fd44433d62356b466112bcd42ba09ccbd64a9e",()=>x.checkToolStatus,"00a52be6500113cf376228b9de1238bf26a39db4e7",()=>w.checkAgentAuth,"00f092d9c0ae177dc66c5408c8e248c87a8ce5e6ba",()=>v.isAgentSetupComplete,"00f9251c4b521a01421d7a124fd7375f9ec9975401",()=>b.pickFolder,"40121a7fa59aed7b36e9b2170b0911ddd5469d2081",()=>f.globalSearch,"4013f3cd3a971be0d58fc4cf5ea14002bcc733ab0f",()=>z.archiveFeature,"40198f1fcab162e3ff7b2b293c1c1f8dc5ccba5116",()=>n.getDeploymentStatus,"401a0948fdb067a0e2b15bd1a8876f2fa8d61d69ca",()=>p.openShell,"4034d8316af7cf005b99fa57627daf2212c3dab415",()=>s.getDeploymentLogs,"4035905dfb9dc202ed0650338aba71886ec1152615",()=>H.deleteApplication,"4035e1ac88876828a7d56567d1258244abdb67fa5b",()=>t.createProjectAndFeature,"4037dde1df43a64cf71a763a4f515a7ca22f86a7e3",()=>D.stopFeature,"403cd743582b04e16123492c021f02e07c2e6d3f73",()=>C.startFeature,"40439b078896772e272d73cff5c9e76f12d2ad4fff",()=>j.deployFeature,"4050c03379687a94bf21bb69aafd46c49032cfee6c",()=>I.getFeatureMetadata,"405b78d3f646f2c9b1433c26864d9f6ab5f562bdf5",()=>m.stopDeployment,"408b3a14223958b11118eff6abea3566ca905f99ee",()=>E.unarchiveFeature,"408d5ddb7719c43c5d291800bdb881c7f38b5d8f71",()=>g.listGitHubRepositories,"409004862d1dfd44fe9df45da166d909a16989115a",()=>r.syncRepository,"4093308001b5dc8b54fc0507b31cb00b9d43ae02e8",()=>i.importGitHubRepository,"409610f1e03c114af0086aab95a7414b9cc8ad5ad9",()=>B.resumeFeature,"40a7e235055041b4632f8f7e7dbc23883a3a5e61ba",()=>q.openFolder,"40b2732c90dc8f6013e5f8355e9e55f993a9a7ef67",()=>u.createApplication,"40e171d0c1bb54653072e2fa70eb1f9107de77cd77",()=>l.deployApplication,"40e1761c0b43e73601f7fcd9dce8acd5bd268ef35f",()=>k.deployRepository,"40eb3dbc918a45a3b96875f9fa0fc78b9af0bd1487",()=>y.createProjectFolder,"40f2103639864d9cbb44e695132aef0dc3882d498f",()=>o.openIde,"40f81c7d612692dda7d814be9521f369bf5c1a96ef",()=>F.addRepository,"602e317bce0c6170882f2d13bec94c89639fe93098",()=>e.updateAgentAndModel,"604689f5df3a212dee51785b0c8454b3971f4de0ba",()=>J.getGitRepoInfo,"60e64a211e5cc81020444ccfe855d0d4acd780b94b",()=>G.deleteRepository,"7852c9212fd4068012c5c253b2d83efcec73bd3e39",()=>A.deleteFeature],512777)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_05bba4dc._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '00e29f2bb0a12b22af7cde4b6050b42b0b35c86120'} from 'ACTIONS_MODULE0'\nexport {getAllAgentModels as '0035b82adb8b991d0fe93be39821d96d64201aa6c1'} from 'ACTIONS_MODULE1'\nexport {checkAllAgentsStatus as '000437a7887cb85cc781ec3f0c5b6346c865156bce'} from 'ACTIONS_MODULE2'\nexport {updateAgentAndModel as '60753f87e706ed2e9cac8467b0a586faf3d36efbac'} from 'ACTIONS_MODULE3'\nexport {globalSearch as '40f6ca9083cb853529dfd092c90212054843ba40cc'} from 'ACTIONS_MODULE4'\nexport {listGitHubRepositories as '4085e9c95d5c4b9511c0dba33930d626cd59db8cfa'} from 'ACTIONS_MODULE5'\nexport {listGitHubOrganizations as '0025b05d8de9fd2f767fe5945d9ea26360f2d535b9'} from 'ACTIONS_MODULE6'\nexport {importGitHubRepository as '408477c12190864f18f9c2d2751ad85dee95c727e4'} from 'ACTIONS_MODULE7'\nexport {deployFeature as '40380eb0a867264153f92eb0befd51c6b57f60c9ce'} from 'ACTIONS_MODULE8'\nexport {deployRepository as '407b3082f8aa0308989b442f49820085256f25e5dc'} from 'ACTIONS_MODULE9'\nexport {deployApplication as '40a9e7a9c3e1b77e7c9fa85b9f7d5a523b9d2f51c4'} from 'ACTIONS_MODULE10'\nexport {stopDeployment as '4054d12a818d20b3295a47380239e047421be5e3db'} from 'ACTIONS_MODULE11'\nexport {getDeploymentStatus as '40354d622fd4841e21d4e5394473f74e7fbffaabab'} from 'ACTIONS_MODULE12'\nexport {openIde as '40ed504cb60cb9b5ba3d159804f1aa9ac9e1ead92f'} from 'ACTIONS_MODULE13'\nexport {openShell as '4083db75c5f227c7e2c7192ae8dabcb8e9748e3efa'} from 'ACTIONS_MODULE14'\nexport {openFolder as '4059f7c623f696572000a9d187b8473126ea9d63ca'} from 'ACTIONS_MODULE15'\nexport {syncRepository as '400cab87e62a7befe753bd93d36f5ccd8f8ee4e781'} from 'ACTIONS_MODULE16'\nexport {getDeploymentLogs as '400c76e055164f96097ce06d81aaf30dce88829ad9'} from 'ACTIONS_MODULE17'\nexport {createProjectAndFeature as '4002cb2cd5637e166af94ad41d670792e2dcfe4205'} from 'ACTIONS_MODULE18'\nexport {createApplication as '40606d2b1076b8b1fbed9a9e24749c8e59c8ba8ed2'} from 'ACTIONS_MODULE19'\nexport {isAgentSetupComplete as '00b48466db3688f127a15b846d99664f978c1f2010'} from 'ACTIONS_MODULE20'\nexport {checkAgentAuth as '00c87f9782616e1ee57aed2172ac0bffabfa01b8a8'} from 'ACTIONS_MODULE21'\nexport {checkToolStatus as '001b4e7524e369f658da24646dc57bfb36fa48c40c'} from 'ACTIONS_MODULE22'\nexport {createProjectFolder as '405f847f00fb02f1bae177485c4f9eab305d5a79ec'} from 'ACTIONS_MODULE23'\nexport {archiveFeature as '40e1210fbd379dfd9b187d89169c855d14964f0a3a'} from 'ACTIONS_MODULE24'\nexport {deleteFeature as '78765481ad3f9e65792efd59a008701e1622c34fb4'} from 'ACTIONS_MODULE25'\nexport {resumeFeature as '4022fde7bf7e8ae25e7a56a65b60d3b48bb4d2b663'} from 'ACTIONS_MODULE26'\nexport {startFeature as '40abb687e1cbdd9a1a120704f01ba002e921349dd7'} from 'ACTIONS_MODULE27'\nexport {stopFeature as '40d405af9852aa627af72b53a622d9c62c7aea0d00'} from 'ACTIONS_MODULE28'\nexport {unarchiveFeature as '40a195374dfcd86d9e2e050372657dddd15758381f'} from 'ACTIONS_MODULE29'\nexport {addRepository as '40a65e24d344abc12687070db11ffe885c7d74b649'} from 'ACTIONS_MODULE30'\nexport {deleteRepository as '600be84a30e55e63ca74222507805a79d642a8e895'} from 'ACTIONS_MODULE31'\nexport {deleteApplication as '405a6777132c43c4e7b43cd50863a8f5d3428800c5'} from 'ACTIONS_MODULE32'\nexport {getFeatureMetadata as '404edeac64491ae197fe3b9b25c2a6513be494250a'} from 'ACTIONS_MODULE33'\nexport {getGitRepoInfo as '60a903865239d51962620c9382b535fbfa7ef0ba66'} from 'ACTIONS_MODULE34'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '00f9251c4b521a01421d7a124fd7375f9ec9975401'} from 'ACTIONS_MODULE0'\nexport {getAllAgentModels as '0052d2146b314d43502380d99a49e25a5d2c8fb805'} from 'ACTIONS_MODULE1'\nexport {checkAllAgentsStatus as '000d9b7d014e752595eada5ca560aa4949a934055a'} from 'ACTIONS_MODULE2'\nexport {updateAgentAndModel as '602e317bce0c6170882f2d13bec94c89639fe93098'} from 'ACTIONS_MODULE3'\nexport {globalSearch as '40121a7fa59aed7b36e9b2170b0911ddd5469d2081'} from 'ACTIONS_MODULE4'\nexport {listGitHubRepositories as '408d5ddb7719c43c5d291800bdb881c7f38b5d8f71'} from 'ACTIONS_MODULE5'\nexport {listGitHubOrganizations as '001d5af05da9ad894be0807da95474a0cea5cb6f41'} from 'ACTIONS_MODULE6'\nexport {importGitHubRepository as '4093308001b5dc8b54fc0507b31cb00b9d43ae02e8'} from 'ACTIONS_MODULE7'\nexport {deployFeature as '40439b078896772e272d73cff5c9e76f12d2ad4fff'} from 'ACTIONS_MODULE8'\nexport {deployRepository as '40e1761c0b43e73601f7fcd9dce8acd5bd268ef35f'} from 'ACTIONS_MODULE9'\nexport {deployApplication as '40e171d0c1bb54653072e2fa70eb1f9107de77cd77'} from 'ACTIONS_MODULE10'\nexport {stopDeployment as '405b78d3f646f2c9b1433c26864d9f6ab5f562bdf5'} from 'ACTIONS_MODULE11'\nexport {getDeploymentStatus as '40198f1fcab162e3ff7b2b293c1c1f8dc5ccba5116'} from 'ACTIONS_MODULE12'\nexport {openIde as '40f2103639864d9cbb44e695132aef0dc3882d498f'} from 'ACTIONS_MODULE13'\nexport {openShell as '401a0948fdb067a0e2b15bd1a8876f2fa8d61d69ca'} from 'ACTIONS_MODULE14'\nexport {openFolder as '40a7e235055041b4632f8f7e7dbc23883a3a5e61ba'} from 'ACTIONS_MODULE15'\nexport {syncRepository as '409004862d1dfd44fe9df45da166d909a16989115a'} from 'ACTIONS_MODULE16'\nexport {getDeploymentLogs as '4034d8316af7cf005b99fa57627daf2212c3dab415'} from 'ACTIONS_MODULE17'\nexport {createProjectAndFeature as '4035e1ac88876828a7d56567d1258244abdb67fa5b'} from 'ACTIONS_MODULE18'\nexport {createApplication as '40b2732c90dc8f6013e5f8355e9e55f993a9a7ef67'} from 'ACTIONS_MODULE19'\nexport {isAgentSetupComplete as '00f092d9c0ae177dc66c5408c8e248c87a8ce5e6ba'} from 'ACTIONS_MODULE20'\nexport {checkAgentAuth as '00a52be6500113cf376228b9de1238bf26a39db4e7'} from 'ACTIONS_MODULE21'\nexport {checkToolStatus as '0086fd44433d62356b466112bcd42ba09ccbd64a9e'} from 'ACTIONS_MODULE22'\nexport {createProjectFolder as '40eb3dbc918a45a3b96875f9fa0fc78b9af0bd1487'} from 'ACTIONS_MODULE23'\nexport {archiveFeature as '4013f3cd3a971be0d58fc4cf5ea14002bcc733ab0f'} from 'ACTIONS_MODULE24'\nexport {deleteFeature as '7852c9212fd4068012c5c253b2d83efcec73bd3e39'} from 'ACTIONS_MODULE25'\nexport {resumeFeature as '409610f1e03c114af0086aab95a7414b9cc8ad5ad9'} from 'ACTIONS_MODULE26'\nexport {startFeature as '403cd743582b04e16123492c021f02e07c2e6d3f73'} from 'ACTIONS_MODULE27'\nexport {stopFeature as '4037dde1df43a64cf71a763a4f515a7ca22f86a7e3'} from 'ACTIONS_MODULE28'\nexport {unarchiveFeature as '408b3a14223958b11118eff6abea3566ca905f99ee'} from 'ACTIONS_MODULE29'\nexport {addRepository as '40f81c7d612692dda7d814be9521f369bf5c1a96ef'} from 'ACTIONS_MODULE30'\nexport {deleteRepository as '60e64a211e5cc81020444ccfe855d0d4acd780b94b'} from 'ACTIONS_MODULE31'\nexport {deleteApplication as '4035905dfb9dc202ed0650338aba71886ec1152615'} from 'ACTIONS_MODULE32'\nexport {getFeatureMetadata as '4050c03379687a94bf21bb69aafd46c49032cfee6c'} from 'ACTIONS_MODULE33'\nexport {getGitRepoInfo as '604689f5df3a212dee51785b0c8454b3971f4de0ba'} from 'ACTIONS_MODULE34'\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"60a903865239d51962620c9382b535fbfa7ef0ba66",null),(0,b.registerServerReference)(i,"60347d49ff8bf99a8de9e50494cb8bc4b48b102ee4",null),a.s(["getGitRepoInfo",()=>h])},967842,a=>{"use strict";var b=a.i(912513),c=a.i(723504),d=a.i(408115),e=a.i(827900),f=a.i(673350),g=a.i(673101),h=a.i(654775),i=a.i(265324),j=a.i(433841),k=a.i(46646),l=a.i(868378),m=a.i(268670),n=a.i(685321),o=a.i(284095),p=a.i(656799),q=a.i(280496),r=a.i(93225),s=a.i(794691),t=a.i(477710),u=a.i(145395),v=a.i(941872),w=a.i(609959),x=a.i(879124),y=a.i(576707),z=a.i(410528),A=a.i(150845),B=a.i(26604),C=a.i(354723),D=a.i(118942),E=a.i(342886),F=a.i(649560),G=a.i(839353),H=a.i(495072),I=a.i(529207),J=a.i(235556);a.s([],789955),a.i(789955),a.s(["000437a7887cb85cc781ec3f0c5b6346c865156bce",()=>d.checkAllAgentsStatus,"001b4e7524e369f658da24646dc57bfb36fa48c40c",()=>x.checkToolStatus,"0025b05d8de9fd2f767fe5945d9ea26360f2d535b9",()=>h.listGitHubOrganizations,"0035b82adb8b991d0fe93be39821d96d64201aa6c1",()=>c.getAllAgentModels,"00b48466db3688f127a15b846d99664f978c1f2010",()=>v.isAgentSetupComplete,"00c87f9782616e1ee57aed2172ac0bffabfa01b8a8",()=>w.checkAgentAuth,"00e29f2bb0a12b22af7cde4b6050b42b0b35c86120",()=>b.pickFolder,"4002cb2cd5637e166af94ad41d670792e2dcfe4205",()=>t.createProjectAndFeature,"400c76e055164f96097ce06d81aaf30dce88829ad9",()=>s.getDeploymentLogs,"400cab87e62a7befe753bd93d36f5ccd8f8ee4e781",()=>r.syncRepository,"4022fde7bf7e8ae25e7a56a65b60d3b48bb4d2b663",()=>B.resumeFeature,"40354d622fd4841e21d4e5394473f74e7fbffaabab",()=>n.getDeploymentStatus,"40380eb0a867264153f92eb0befd51c6b57f60c9ce",()=>j.deployFeature,"404edeac64491ae197fe3b9b25c2a6513be494250a",()=>I.getFeatureMetadata,"4054d12a818d20b3295a47380239e047421be5e3db",()=>m.stopDeployment,"4059f7c623f696572000a9d187b8473126ea9d63ca",()=>q.openFolder,"405a6777132c43c4e7b43cd50863a8f5d3428800c5",()=>H.deleteApplication,"405f847f00fb02f1bae177485c4f9eab305d5a79ec",()=>y.createProjectFolder,"40606d2b1076b8b1fbed9a9e24749c8e59c8ba8ed2",()=>u.createApplication,"407b3082f8aa0308989b442f49820085256f25e5dc",()=>k.deployRepository,"4083db75c5f227c7e2c7192ae8dabcb8e9748e3efa",()=>p.openShell,"408477c12190864f18f9c2d2751ad85dee95c727e4",()=>i.importGitHubRepository,"4085e9c95d5c4b9511c0dba33930d626cd59db8cfa",()=>g.listGitHubRepositories,"40a195374dfcd86d9e2e050372657dddd15758381f",()=>E.unarchiveFeature,"40a65e24d344abc12687070db11ffe885c7d74b649",()=>F.addRepository,"40a9e7a9c3e1b77e7c9fa85b9f7d5a523b9d2f51c4",()=>l.deployApplication,"40abb687e1cbdd9a1a120704f01ba002e921349dd7",()=>C.startFeature,"40d405af9852aa627af72b53a622d9c62c7aea0d00",()=>D.stopFeature,"40e1210fbd379dfd9b187d89169c855d14964f0a3a",()=>z.archiveFeature,"40ed504cb60cb9b5ba3d159804f1aa9ac9e1ead92f",()=>o.openIde,"40f6ca9083cb853529dfd092c90212054843ba40cc",()=>f.globalSearch,"600be84a30e55e63ca74222507805a79d642a8e895",()=>G.deleteRepository,"60753f87e706ed2e9cac8467b0a586faf3d36efbac",()=>e.updateAgentAndModel,"60a903865239d51962620c9382b535fbfa7ef0ba66",()=>J.getGitRepoInfo,"78765481ad3f9e65792efd59a008701e1622c34fb4",()=>A.deleteFeature],967842)}];
1
+ module.exports=[235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"604689f5df3a212dee51785b0c8454b3971f4de0ba",null),(0,b.registerServerReference)(i,"60ead9d75f3a8f357a639074e723c90d4ab2cafcff",null),a.s(["getGitRepoInfo",()=>h])},967842,a=>{"use strict";var b=a.i(912513),c=a.i(723504),d=a.i(408115),e=a.i(827900),f=a.i(673350),g=a.i(673101),h=a.i(654775),i=a.i(265324),j=a.i(433841),k=a.i(46646),l=a.i(868378),m=a.i(268670),n=a.i(685321),o=a.i(284095),p=a.i(656799),q=a.i(280496),r=a.i(93225),s=a.i(794691),t=a.i(477710),u=a.i(145395),v=a.i(941872),w=a.i(609959),x=a.i(879124),y=a.i(576707),z=a.i(410528),A=a.i(150845),B=a.i(26604),C=a.i(354723),D=a.i(118942),E=a.i(342886),F=a.i(649560),G=a.i(839353),H=a.i(495072),I=a.i(529207),J=a.i(235556);a.s([],789955),a.i(789955),a.s(["000d9b7d014e752595eada5ca560aa4949a934055a",()=>d.checkAllAgentsStatus,"001d5af05da9ad894be0807da95474a0cea5cb6f41",()=>h.listGitHubOrganizations,"0052d2146b314d43502380d99a49e25a5d2c8fb805",()=>c.getAllAgentModels,"0086fd44433d62356b466112bcd42ba09ccbd64a9e",()=>x.checkToolStatus,"00a52be6500113cf376228b9de1238bf26a39db4e7",()=>w.checkAgentAuth,"00f092d9c0ae177dc66c5408c8e248c87a8ce5e6ba",()=>v.isAgentSetupComplete,"00f9251c4b521a01421d7a124fd7375f9ec9975401",()=>b.pickFolder,"40121a7fa59aed7b36e9b2170b0911ddd5469d2081",()=>f.globalSearch,"4013f3cd3a971be0d58fc4cf5ea14002bcc733ab0f",()=>z.archiveFeature,"40198f1fcab162e3ff7b2b293c1c1f8dc5ccba5116",()=>n.getDeploymentStatus,"401a0948fdb067a0e2b15bd1a8876f2fa8d61d69ca",()=>p.openShell,"4034d8316af7cf005b99fa57627daf2212c3dab415",()=>s.getDeploymentLogs,"4035905dfb9dc202ed0650338aba71886ec1152615",()=>H.deleteApplication,"4035e1ac88876828a7d56567d1258244abdb67fa5b",()=>t.createProjectAndFeature,"4037dde1df43a64cf71a763a4f515a7ca22f86a7e3",()=>D.stopFeature,"403cd743582b04e16123492c021f02e07c2e6d3f73",()=>C.startFeature,"40439b078896772e272d73cff5c9e76f12d2ad4fff",()=>j.deployFeature,"4050c03379687a94bf21bb69aafd46c49032cfee6c",()=>I.getFeatureMetadata,"405b78d3f646f2c9b1433c26864d9f6ab5f562bdf5",()=>m.stopDeployment,"408b3a14223958b11118eff6abea3566ca905f99ee",()=>E.unarchiveFeature,"408d5ddb7719c43c5d291800bdb881c7f38b5d8f71",()=>g.listGitHubRepositories,"409004862d1dfd44fe9df45da166d909a16989115a",()=>r.syncRepository,"4093308001b5dc8b54fc0507b31cb00b9d43ae02e8",()=>i.importGitHubRepository,"409610f1e03c114af0086aab95a7414b9cc8ad5ad9",()=>B.resumeFeature,"40a7e235055041b4632f8f7e7dbc23883a3a5e61ba",()=>q.openFolder,"40b2732c90dc8f6013e5f8355e9e55f993a9a7ef67",()=>u.createApplication,"40e171d0c1bb54653072e2fa70eb1f9107de77cd77",()=>l.deployApplication,"40e1761c0b43e73601f7fcd9dce8acd5bd268ef35f",()=>k.deployRepository,"40eb3dbc918a45a3b96875f9fa0fc78b9af0bd1487",()=>y.createProjectFolder,"40f2103639864d9cbb44e695132aef0dc3882d498f",()=>o.openIde,"40f81c7d612692dda7d814be9521f369bf5c1a96ef",()=>F.addRepository,"602e317bce0c6170882f2d13bec94c89639fe93098",()=>e.updateAgentAndModel,"604689f5df3a212dee51785b0c8454b3971f4de0ba",()=>J.getGitRepoInfo,"60e64a211e5cc81020444ccfe855d0d4acd780b94b",()=>G.deleteRepository,"7852c9212fd4068012c5c253b2d83efcec73bd3e39",()=>A.deleteFeature],967842)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_43451480._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '00e29f2bb0a12b22af7cde4b6050b42b0b35c86120'} from 'ACTIONS_MODULE0'\nexport {getAllAgentModels as '0035b82adb8b991d0fe93be39821d96d64201aa6c1'} from 'ACTIONS_MODULE1'\nexport {checkAllAgentsStatus as '000437a7887cb85cc781ec3f0c5b6346c865156bce'} from 'ACTIONS_MODULE2'\nexport {updateAgentAndModel as '60753f87e706ed2e9cac8467b0a586faf3d36efbac'} from 'ACTIONS_MODULE3'\nexport {globalSearch as '40f6ca9083cb853529dfd092c90212054843ba40cc'} from 'ACTIONS_MODULE4'\nexport {listGitHubRepositories as '4085e9c95d5c4b9511c0dba33930d626cd59db8cfa'} from 'ACTIONS_MODULE5'\nexport {listGitHubOrganizations as '0025b05d8de9fd2f767fe5945d9ea26360f2d535b9'} from 'ACTIONS_MODULE6'\nexport {importGitHubRepository as '408477c12190864f18f9c2d2751ad85dee95c727e4'} from 'ACTIONS_MODULE7'\nexport {deployFeature as '40380eb0a867264153f92eb0befd51c6b57f60c9ce'} from 'ACTIONS_MODULE8'\nexport {deployRepository as '407b3082f8aa0308989b442f49820085256f25e5dc'} from 'ACTIONS_MODULE9'\nexport {deployApplication as '40a9e7a9c3e1b77e7c9fa85b9f7d5a523b9d2f51c4'} from 'ACTIONS_MODULE10'\nexport {stopDeployment as '4054d12a818d20b3295a47380239e047421be5e3db'} from 'ACTIONS_MODULE11'\nexport {getDeploymentStatus as '40354d622fd4841e21d4e5394473f74e7fbffaabab'} from 'ACTIONS_MODULE12'\nexport {openIde as '40ed504cb60cb9b5ba3d159804f1aa9ac9e1ead92f'} from 'ACTIONS_MODULE13'\nexport {openShell as '4083db75c5f227c7e2c7192ae8dabcb8e9748e3efa'} from 'ACTIONS_MODULE14'\nexport {openFolder as '4059f7c623f696572000a9d187b8473126ea9d63ca'} from 'ACTIONS_MODULE15'\nexport {syncRepository as '400cab87e62a7befe753bd93d36f5ccd8f8ee4e781'} from 'ACTIONS_MODULE16'\nexport {getDeploymentLogs as '400c76e055164f96097ce06d81aaf30dce88829ad9'} from 'ACTIONS_MODULE17'\nexport {createProjectAndFeature as '4002cb2cd5637e166af94ad41d670792e2dcfe4205'} from 'ACTIONS_MODULE18'\nexport {createApplication as '40606d2b1076b8b1fbed9a9e24749c8e59c8ba8ed2'} from 'ACTIONS_MODULE19'\nexport {isAgentSetupComplete as '00b48466db3688f127a15b846d99664f978c1f2010'} from 'ACTIONS_MODULE20'\nexport {checkAgentAuth as '00c87f9782616e1ee57aed2172ac0bffabfa01b8a8'} from 'ACTIONS_MODULE21'\nexport {checkToolStatus as '001b4e7524e369f658da24646dc57bfb36fa48c40c'} from 'ACTIONS_MODULE22'\nexport {createProjectFolder as '405f847f00fb02f1bae177485c4f9eab305d5a79ec'} from 'ACTIONS_MODULE23'\nexport {archiveFeature as '40e1210fbd379dfd9b187d89169c855d14964f0a3a'} from 'ACTIONS_MODULE24'\nexport {deleteFeature as '78765481ad3f9e65792efd59a008701e1622c34fb4'} from 'ACTIONS_MODULE25'\nexport {resumeFeature as '4022fde7bf7e8ae25e7a56a65b60d3b48bb4d2b663'} from 'ACTIONS_MODULE26'\nexport {startFeature as '40abb687e1cbdd9a1a120704f01ba002e921349dd7'} from 'ACTIONS_MODULE27'\nexport {stopFeature as '40d405af9852aa627af72b53a622d9c62c7aea0d00'} from 'ACTIONS_MODULE28'\nexport {unarchiveFeature as '40a195374dfcd86d9e2e050372657dddd15758381f'} from 'ACTIONS_MODULE29'\nexport {addRepository as '40a65e24d344abc12687070db11ffe885c7d74b649'} from 'ACTIONS_MODULE30'\nexport {deleteRepository as '600be84a30e55e63ca74222507805a79d642a8e895'} from 'ACTIONS_MODULE31'\nexport {deleteApplication as '405a6777132c43c4e7b43cd50863a8f5d3428800c5'} from 'ACTIONS_MODULE32'\nexport {getFeatureMetadata as '404edeac64491ae197fe3b9b25c2a6513be494250a'} from 'ACTIONS_MODULE33'\nexport {getGitRepoInfo as '60a903865239d51962620c9382b535fbfa7ef0ba66'} from 'ACTIONS_MODULE34'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '00f9251c4b521a01421d7a124fd7375f9ec9975401'} from 'ACTIONS_MODULE0'\nexport {getAllAgentModels as '0052d2146b314d43502380d99a49e25a5d2c8fb805'} from 'ACTIONS_MODULE1'\nexport {checkAllAgentsStatus as '000d9b7d014e752595eada5ca560aa4949a934055a'} from 'ACTIONS_MODULE2'\nexport {updateAgentAndModel as '602e317bce0c6170882f2d13bec94c89639fe93098'} from 'ACTIONS_MODULE3'\nexport {globalSearch as '40121a7fa59aed7b36e9b2170b0911ddd5469d2081'} from 'ACTIONS_MODULE4'\nexport {listGitHubRepositories as '408d5ddb7719c43c5d291800bdb881c7f38b5d8f71'} from 'ACTIONS_MODULE5'\nexport {listGitHubOrganizations as '001d5af05da9ad894be0807da95474a0cea5cb6f41'} from 'ACTIONS_MODULE6'\nexport {importGitHubRepository as '4093308001b5dc8b54fc0507b31cb00b9d43ae02e8'} from 'ACTIONS_MODULE7'\nexport {deployFeature as '40439b078896772e272d73cff5c9e76f12d2ad4fff'} from 'ACTIONS_MODULE8'\nexport {deployRepository as '40e1761c0b43e73601f7fcd9dce8acd5bd268ef35f'} from 'ACTIONS_MODULE9'\nexport {deployApplication as '40e171d0c1bb54653072e2fa70eb1f9107de77cd77'} from 'ACTIONS_MODULE10'\nexport {stopDeployment as '405b78d3f646f2c9b1433c26864d9f6ab5f562bdf5'} from 'ACTIONS_MODULE11'\nexport {getDeploymentStatus as '40198f1fcab162e3ff7b2b293c1c1f8dc5ccba5116'} from 'ACTIONS_MODULE12'\nexport {openIde as '40f2103639864d9cbb44e695132aef0dc3882d498f'} from 'ACTIONS_MODULE13'\nexport {openShell as '401a0948fdb067a0e2b15bd1a8876f2fa8d61d69ca'} from 'ACTIONS_MODULE14'\nexport {openFolder as '40a7e235055041b4632f8f7e7dbc23883a3a5e61ba'} from 'ACTIONS_MODULE15'\nexport {syncRepository as '409004862d1dfd44fe9df45da166d909a16989115a'} from 'ACTIONS_MODULE16'\nexport {getDeploymentLogs as '4034d8316af7cf005b99fa57627daf2212c3dab415'} from 'ACTIONS_MODULE17'\nexport {createProjectAndFeature as '4035e1ac88876828a7d56567d1258244abdb67fa5b'} from 'ACTIONS_MODULE18'\nexport {createApplication as '40b2732c90dc8f6013e5f8355e9e55f993a9a7ef67'} from 'ACTIONS_MODULE19'\nexport {isAgentSetupComplete as '00f092d9c0ae177dc66c5408c8e248c87a8ce5e6ba'} from 'ACTIONS_MODULE20'\nexport {checkAgentAuth as '00a52be6500113cf376228b9de1238bf26a39db4e7'} from 'ACTIONS_MODULE21'\nexport {checkToolStatus as '0086fd44433d62356b466112bcd42ba09ccbd64a9e'} from 'ACTIONS_MODULE22'\nexport {createProjectFolder as '40eb3dbc918a45a3b96875f9fa0fc78b9af0bd1487'} from 'ACTIONS_MODULE23'\nexport {archiveFeature as '4013f3cd3a971be0d58fc4cf5ea14002bcc733ab0f'} from 'ACTIONS_MODULE24'\nexport {deleteFeature as '7852c9212fd4068012c5c253b2d83efcec73bd3e39'} from 'ACTIONS_MODULE25'\nexport {resumeFeature as '409610f1e03c114af0086aab95a7414b9cc8ad5ad9'} from 'ACTIONS_MODULE26'\nexport {startFeature as '403cd743582b04e16123492c021f02e07c2e6d3f73'} from 'ACTIONS_MODULE27'\nexport {stopFeature as '4037dde1df43a64cf71a763a4f515a7ca22f86a7e3'} from 'ACTIONS_MODULE28'\nexport {unarchiveFeature as '408b3a14223958b11118eff6abea3566ca905f99ee'} from 'ACTIONS_MODULE29'\nexport {addRepository as '40f81c7d612692dda7d814be9521f369bf5c1a96ef'} from 'ACTIONS_MODULE30'\nexport {deleteRepository as '60e64a211e5cc81020444ccfe855d0d4acd780b94b'} from 'ACTIONS_MODULE31'\nexport {deleteApplication as '4035905dfb9dc202ed0650338aba71886ec1152615'} from 'ACTIONS_MODULE32'\nexport {getFeatureMetadata as '4050c03379687a94bf21bb69aafd46c49032cfee6c'} from 'ACTIONS_MODULE33'\nexport {getGitRepoInfo as '604689f5df3a212dee51785b0c8454b3971f4de0ba'} from 'ACTIONS_MODULE34'\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"60a903865239d51962620c9382b535fbfa7ef0ba66",null),(0,b.registerServerReference)(i,"60347d49ff8bf99a8de9e50494cb8bc4b48b102ee4",null),a.s(["getGitRepoInfo",()=>h])},259554,a=>{"use strict";var b=a.i(912513),c=a.i(723504),d=a.i(408115),e=a.i(827900),f=a.i(673350),g=a.i(673101),h=a.i(654775),i=a.i(265324),j=a.i(433841),k=a.i(46646),l=a.i(868378),m=a.i(268670),n=a.i(685321),o=a.i(284095),p=a.i(656799),q=a.i(280496),r=a.i(93225),s=a.i(794691),t=a.i(477710),u=a.i(145395),v=a.i(941872),w=a.i(609959),x=a.i(879124),y=a.i(576707),z=a.i(410528),A=a.i(150845),B=a.i(26604),C=a.i(354723),D=a.i(118942),E=a.i(342886),F=a.i(649560),G=a.i(839353),H=a.i(495072),I=a.i(529207),J=a.i(235556);a.s([],597433),a.i(597433),a.s(["000437a7887cb85cc781ec3f0c5b6346c865156bce",()=>d.checkAllAgentsStatus,"001b4e7524e369f658da24646dc57bfb36fa48c40c",()=>x.checkToolStatus,"0025b05d8de9fd2f767fe5945d9ea26360f2d535b9",()=>h.listGitHubOrganizations,"0035b82adb8b991d0fe93be39821d96d64201aa6c1",()=>c.getAllAgentModels,"00b48466db3688f127a15b846d99664f978c1f2010",()=>v.isAgentSetupComplete,"00c87f9782616e1ee57aed2172ac0bffabfa01b8a8",()=>w.checkAgentAuth,"00e29f2bb0a12b22af7cde4b6050b42b0b35c86120",()=>b.pickFolder,"4002cb2cd5637e166af94ad41d670792e2dcfe4205",()=>t.createProjectAndFeature,"400c76e055164f96097ce06d81aaf30dce88829ad9",()=>s.getDeploymentLogs,"400cab87e62a7befe753bd93d36f5ccd8f8ee4e781",()=>r.syncRepository,"4022fde7bf7e8ae25e7a56a65b60d3b48bb4d2b663",()=>B.resumeFeature,"40354d622fd4841e21d4e5394473f74e7fbffaabab",()=>n.getDeploymentStatus,"40380eb0a867264153f92eb0befd51c6b57f60c9ce",()=>j.deployFeature,"404edeac64491ae197fe3b9b25c2a6513be494250a",()=>I.getFeatureMetadata,"4054d12a818d20b3295a47380239e047421be5e3db",()=>m.stopDeployment,"4059f7c623f696572000a9d187b8473126ea9d63ca",()=>q.openFolder,"405a6777132c43c4e7b43cd50863a8f5d3428800c5",()=>H.deleteApplication,"405f847f00fb02f1bae177485c4f9eab305d5a79ec",()=>y.createProjectFolder,"40606d2b1076b8b1fbed9a9e24749c8e59c8ba8ed2",()=>u.createApplication,"407b3082f8aa0308989b442f49820085256f25e5dc",()=>k.deployRepository,"4083db75c5f227c7e2c7192ae8dabcb8e9748e3efa",()=>p.openShell,"408477c12190864f18f9c2d2751ad85dee95c727e4",()=>i.importGitHubRepository,"4085e9c95d5c4b9511c0dba33930d626cd59db8cfa",()=>g.listGitHubRepositories,"40a195374dfcd86d9e2e050372657dddd15758381f",()=>E.unarchiveFeature,"40a65e24d344abc12687070db11ffe885c7d74b649",()=>F.addRepository,"40a9e7a9c3e1b77e7c9fa85b9f7d5a523b9d2f51c4",()=>l.deployApplication,"40abb687e1cbdd9a1a120704f01ba002e921349dd7",()=>C.startFeature,"40d405af9852aa627af72b53a622d9c62c7aea0d00",()=>D.stopFeature,"40e1210fbd379dfd9b187d89169c855d14964f0a3a",()=>z.archiveFeature,"40ed504cb60cb9b5ba3d159804f1aa9ac9e1ead92f",()=>o.openIde,"40f6ca9083cb853529dfd092c90212054843ba40cc",()=>f.globalSearch,"600be84a30e55e63ca74222507805a79d642a8e895",()=>G.deleteRepository,"60753f87e706ed2e9cac8467b0a586faf3d36efbac",()=>e.updateAgentAndModel,"60a903865239d51962620c9382b535fbfa7ef0ba66",()=>J.getGitRepoInfo,"78765481ad3f9e65792efd59a008701e1622c34fb4",()=>A.deleteFeature],259554)}];
1
+ module.exports=[235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"604689f5df3a212dee51785b0c8454b3971f4de0ba",null),(0,b.registerServerReference)(i,"60ead9d75f3a8f357a639074e723c90d4ab2cafcff",null),a.s(["getGitRepoInfo",()=>h])},259554,a=>{"use strict";var b=a.i(912513),c=a.i(723504),d=a.i(408115),e=a.i(827900),f=a.i(673350),g=a.i(673101),h=a.i(654775),i=a.i(265324),j=a.i(433841),k=a.i(46646),l=a.i(868378),m=a.i(268670),n=a.i(685321),o=a.i(284095),p=a.i(656799),q=a.i(280496),r=a.i(93225),s=a.i(794691),t=a.i(477710),u=a.i(145395),v=a.i(941872),w=a.i(609959),x=a.i(879124),y=a.i(576707),z=a.i(410528),A=a.i(150845),B=a.i(26604),C=a.i(354723),D=a.i(118942),E=a.i(342886),F=a.i(649560),G=a.i(839353),H=a.i(495072),I=a.i(529207),J=a.i(235556);a.s([],597433),a.i(597433),a.s(["000d9b7d014e752595eada5ca560aa4949a934055a",()=>d.checkAllAgentsStatus,"001d5af05da9ad894be0807da95474a0cea5cb6f41",()=>h.listGitHubOrganizations,"0052d2146b314d43502380d99a49e25a5d2c8fb805",()=>c.getAllAgentModels,"0086fd44433d62356b466112bcd42ba09ccbd64a9e",()=>x.checkToolStatus,"00a52be6500113cf376228b9de1238bf26a39db4e7",()=>w.checkAgentAuth,"00f092d9c0ae177dc66c5408c8e248c87a8ce5e6ba",()=>v.isAgentSetupComplete,"00f9251c4b521a01421d7a124fd7375f9ec9975401",()=>b.pickFolder,"40121a7fa59aed7b36e9b2170b0911ddd5469d2081",()=>f.globalSearch,"4013f3cd3a971be0d58fc4cf5ea14002bcc733ab0f",()=>z.archiveFeature,"40198f1fcab162e3ff7b2b293c1c1f8dc5ccba5116",()=>n.getDeploymentStatus,"401a0948fdb067a0e2b15bd1a8876f2fa8d61d69ca",()=>p.openShell,"4034d8316af7cf005b99fa57627daf2212c3dab415",()=>s.getDeploymentLogs,"4035905dfb9dc202ed0650338aba71886ec1152615",()=>H.deleteApplication,"4035e1ac88876828a7d56567d1258244abdb67fa5b",()=>t.createProjectAndFeature,"4037dde1df43a64cf71a763a4f515a7ca22f86a7e3",()=>D.stopFeature,"403cd743582b04e16123492c021f02e07c2e6d3f73",()=>C.startFeature,"40439b078896772e272d73cff5c9e76f12d2ad4fff",()=>j.deployFeature,"4050c03379687a94bf21bb69aafd46c49032cfee6c",()=>I.getFeatureMetadata,"405b78d3f646f2c9b1433c26864d9f6ab5f562bdf5",()=>m.stopDeployment,"408b3a14223958b11118eff6abea3566ca905f99ee",()=>E.unarchiveFeature,"408d5ddb7719c43c5d291800bdb881c7f38b5d8f71",()=>g.listGitHubRepositories,"409004862d1dfd44fe9df45da166d909a16989115a",()=>r.syncRepository,"4093308001b5dc8b54fc0507b31cb00b9d43ae02e8",()=>i.importGitHubRepository,"409610f1e03c114af0086aab95a7414b9cc8ad5ad9",()=>B.resumeFeature,"40a7e235055041b4632f8f7e7dbc23883a3a5e61ba",()=>q.openFolder,"40b2732c90dc8f6013e5f8355e9e55f993a9a7ef67",()=>u.createApplication,"40e171d0c1bb54653072e2fa70eb1f9107de77cd77",()=>l.deployApplication,"40e1761c0b43e73601f7fcd9dce8acd5bd268ef35f",()=>k.deployRepository,"40eb3dbc918a45a3b96875f9fa0fc78b9af0bd1487",()=>y.createProjectFolder,"40f2103639864d9cbb44e695132aef0dc3882d498f",()=>o.openIde,"40f81c7d612692dda7d814be9521f369bf5c1a96ef",()=>F.addRepository,"602e317bce0c6170882f2d13bec94c89639fe93098",()=>e.updateAgentAndModel,"604689f5df3a212dee51785b0c8454b3971f4de0ba",()=>J.getGitRepoInfo,"60e64a211e5cc81020444ccfe855d0d4acd780b94b",()=>G.deleteRepository,"7852c9212fd4068012c5c253b2d83efcec73bd3e39",()=>A.deleteFeature],259554)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_4b306bb3._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '00e29f2bb0a12b22af7cde4b6050b42b0b35c86120'} from 'ACTIONS_MODULE0'\nexport {getAllAgentModels as '0035b82adb8b991d0fe93be39821d96d64201aa6c1'} from 'ACTIONS_MODULE1'\nexport {checkAllAgentsStatus as '000437a7887cb85cc781ec3f0c5b6346c865156bce'} from 'ACTIONS_MODULE2'\nexport {updateAgentAndModel as '60753f87e706ed2e9cac8467b0a586faf3d36efbac'} from 'ACTIONS_MODULE3'\nexport {globalSearch as '40f6ca9083cb853529dfd092c90212054843ba40cc'} from 'ACTIONS_MODULE4'\nexport {listGitHubRepositories as '4085e9c95d5c4b9511c0dba33930d626cd59db8cfa'} from 'ACTIONS_MODULE5'\nexport {listGitHubOrganizations as '0025b05d8de9fd2f767fe5945d9ea26360f2d535b9'} from 'ACTIONS_MODULE6'\nexport {importGitHubRepository as '408477c12190864f18f9c2d2751ad85dee95c727e4'} from 'ACTIONS_MODULE7'\nexport {deployFeature as '40380eb0a867264153f92eb0befd51c6b57f60c9ce'} from 'ACTIONS_MODULE8'\nexport {deployRepository as '407b3082f8aa0308989b442f49820085256f25e5dc'} from 'ACTIONS_MODULE9'\nexport {deployApplication as '40a9e7a9c3e1b77e7c9fa85b9f7d5a523b9d2f51c4'} from 'ACTIONS_MODULE10'\nexport {stopDeployment as '4054d12a818d20b3295a47380239e047421be5e3db'} from 'ACTIONS_MODULE11'\nexport {getDeploymentStatus as '40354d622fd4841e21d4e5394473f74e7fbffaabab'} from 'ACTIONS_MODULE12'\nexport {openIde as '40ed504cb60cb9b5ba3d159804f1aa9ac9e1ead92f'} from 'ACTIONS_MODULE13'\nexport {openShell as '4083db75c5f227c7e2c7192ae8dabcb8e9748e3efa'} from 'ACTIONS_MODULE14'\nexport {openFolder as '4059f7c623f696572000a9d187b8473126ea9d63ca'} from 'ACTIONS_MODULE15'\nexport {syncRepository as '400cab87e62a7befe753bd93d36f5ccd8f8ee4e781'} from 'ACTIONS_MODULE16'\nexport {getDeploymentLogs as '400c76e055164f96097ce06d81aaf30dce88829ad9'} from 'ACTIONS_MODULE17'\nexport {createProjectAndFeature as '4002cb2cd5637e166af94ad41d670792e2dcfe4205'} from 'ACTIONS_MODULE18'\nexport {createApplication as '40606d2b1076b8b1fbed9a9e24749c8e59c8ba8ed2'} from 'ACTIONS_MODULE19'\nexport {isAgentSetupComplete as '00b48466db3688f127a15b846d99664f978c1f2010'} from 'ACTIONS_MODULE20'\nexport {checkAgentAuth as '00c87f9782616e1ee57aed2172ac0bffabfa01b8a8'} from 'ACTIONS_MODULE21'\nexport {checkToolStatus as '001b4e7524e369f658da24646dc57bfb36fa48c40c'} from 'ACTIONS_MODULE22'\nexport {createProjectFolder as '405f847f00fb02f1bae177485c4f9eab305d5a79ec'} from 'ACTIONS_MODULE23'\nexport {archiveFeature as '40e1210fbd379dfd9b187d89169c855d14964f0a3a'} from 'ACTIONS_MODULE24'\nexport {deleteFeature as '78765481ad3f9e65792efd59a008701e1622c34fb4'} from 'ACTIONS_MODULE25'\nexport {resumeFeature as '4022fde7bf7e8ae25e7a56a65b60d3b48bb4d2b663'} from 'ACTIONS_MODULE26'\nexport {startFeature as '40abb687e1cbdd9a1a120704f01ba002e921349dd7'} from 'ACTIONS_MODULE27'\nexport {stopFeature as '40d405af9852aa627af72b53a622d9c62c7aea0d00'} from 'ACTIONS_MODULE28'\nexport {unarchiveFeature as '40a195374dfcd86d9e2e050372657dddd15758381f'} from 'ACTIONS_MODULE29'\nexport {addRepository as '40a65e24d344abc12687070db11ffe885c7d74b649'} from 'ACTIONS_MODULE30'\nexport {deleteRepository as '600be84a30e55e63ca74222507805a79d642a8e895'} from 'ACTIONS_MODULE31'\nexport {deleteApplication as '405a6777132c43c4e7b43cd50863a8f5d3428800c5'} from 'ACTIONS_MODULE32'\nexport {getFeatureMetadata as '404edeac64491ae197fe3b9b25c2a6513be494250a'} from 'ACTIONS_MODULE33'\nexport {getGitRepoInfo as '60a903865239d51962620c9382b535fbfa7ef0ba66'} from 'ACTIONS_MODULE34'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '00f9251c4b521a01421d7a124fd7375f9ec9975401'} from 'ACTIONS_MODULE0'\nexport {getAllAgentModels as '0052d2146b314d43502380d99a49e25a5d2c8fb805'} from 'ACTIONS_MODULE1'\nexport {checkAllAgentsStatus as '000d9b7d014e752595eada5ca560aa4949a934055a'} from 'ACTIONS_MODULE2'\nexport {updateAgentAndModel as '602e317bce0c6170882f2d13bec94c89639fe93098'} from 'ACTIONS_MODULE3'\nexport {globalSearch as '40121a7fa59aed7b36e9b2170b0911ddd5469d2081'} from 'ACTIONS_MODULE4'\nexport {listGitHubRepositories as '408d5ddb7719c43c5d291800bdb881c7f38b5d8f71'} from 'ACTIONS_MODULE5'\nexport {listGitHubOrganizations as '001d5af05da9ad894be0807da95474a0cea5cb6f41'} from 'ACTIONS_MODULE6'\nexport {importGitHubRepository as '4093308001b5dc8b54fc0507b31cb00b9d43ae02e8'} from 'ACTIONS_MODULE7'\nexport {deployFeature as '40439b078896772e272d73cff5c9e76f12d2ad4fff'} from 'ACTIONS_MODULE8'\nexport {deployRepository as '40e1761c0b43e73601f7fcd9dce8acd5bd268ef35f'} from 'ACTIONS_MODULE9'\nexport {deployApplication as '40e171d0c1bb54653072e2fa70eb1f9107de77cd77'} from 'ACTIONS_MODULE10'\nexport {stopDeployment as '405b78d3f646f2c9b1433c26864d9f6ab5f562bdf5'} from 'ACTIONS_MODULE11'\nexport {getDeploymentStatus as '40198f1fcab162e3ff7b2b293c1c1f8dc5ccba5116'} from 'ACTIONS_MODULE12'\nexport {openIde as '40f2103639864d9cbb44e695132aef0dc3882d498f'} from 'ACTIONS_MODULE13'\nexport {openShell as '401a0948fdb067a0e2b15bd1a8876f2fa8d61d69ca'} from 'ACTIONS_MODULE14'\nexport {openFolder as '40a7e235055041b4632f8f7e7dbc23883a3a5e61ba'} from 'ACTIONS_MODULE15'\nexport {syncRepository as '409004862d1dfd44fe9df45da166d909a16989115a'} from 'ACTIONS_MODULE16'\nexport {getDeploymentLogs as '4034d8316af7cf005b99fa57627daf2212c3dab415'} from 'ACTIONS_MODULE17'\nexport {createProjectAndFeature as '4035e1ac88876828a7d56567d1258244abdb67fa5b'} from 'ACTIONS_MODULE18'\nexport {createApplication as '40b2732c90dc8f6013e5f8355e9e55f993a9a7ef67'} from 'ACTIONS_MODULE19'\nexport {isAgentSetupComplete as '00f092d9c0ae177dc66c5408c8e248c87a8ce5e6ba'} from 'ACTIONS_MODULE20'\nexport {checkAgentAuth as '00a52be6500113cf376228b9de1238bf26a39db4e7'} from 'ACTIONS_MODULE21'\nexport {checkToolStatus as '0086fd44433d62356b466112bcd42ba09ccbd64a9e'} from 'ACTIONS_MODULE22'\nexport {createProjectFolder as '40eb3dbc918a45a3b96875f9fa0fc78b9af0bd1487'} from 'ACTIONS_MODULE23'\nexport {archiveFeature as '4013f3cd3a971be0d58fc4cf5ea14002bcc733ab0f'} from 'ACTIONS_MODULE24'\nexport {deleteFeature as '7852c9212fd4068012c5c253b2d83efcec73bd3e39'} from 'ACTIONS_MODULE25'\nexport {resumeFeature as '409610f1e03c114af0086aab95a7414b9cc8ad5ad9'} from 'ACTIONS_MODULE26'\nexport {startFeature as '403cd743582b04e16123492c021f02e07c2e6d3f73'} from 'ACTIONS_MODULE27'\nexport {stopFeature as '4037dde1df43a64cf71a763a4f515a7ca22f86a7e3'} from 'ACTIONS_MODULE28'\nexport {unarchiveFeature as '408b3a14223958b11118eff6abea3566ca905f99ee'} from 'ACTIONS_MODULE29'\nexport {addRepository as '40f81c7d612692dda7d814be9521f369bf5c1a96ef'} from 'ACTIONS_MODULE30'\nexport {deleteRepository as '60e64a211e5cc81020444ccfe855d0d4acd780b94b'} from 'ACTIONS_MODULE31'\nexport {deleteApplication as '4035905dfb9dc202ed0650338aba71886ec1152615'} from 'ACTIONS_MODULE32'\nexport {getFeatureMetadata as '4050c03379687a94bf21bb69aafd46c49032cfee6c'} from 'ACTIONS_MODULE33'\nexport {getGitRepoInfo as '604689f5df3a212dee51785b0c8454b3971f4de0ba'} from 'ACTIONS_MODULE34'\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[609803,382052,a=>{"use strict";var b=a.i(556365),c=a.i(944592);a.i(490370);var d=a.i(224640),e=a.i(945242),f=a.i(14177),g=a.i(110606),h=a.i(103942),i=a.i(346168),j=a.i(142527),k=a.i(488064),l=a.i(673708),m=a.i(162147),n=a.i(167424),o=a.i(428002),p=a.i(882014),q=a.i(69428),r=a.i(385536),s=a.i(219884);a.i(478454);var t=a.i(124255),u=a.i(302824),v=a.i(118948),w=a.i(390920),x=a.i(679620),y=a.i(758860),z=a.i(658339),A=a.i(680646),B=a.i(896867),C=a.i(182934),D=a.i(196213);a.i(200307);var E=a.i(730931),F=a.i(289111);let G=(0,F.createServerReference)("405848adede2dfc7e2c0da7655c7db7d8da5a5c7e4",F.callServer,void 0,F.findSourceMapURL,"getViewerPermission");var H=a.i(961781),I=a.i(513126),J=a.i(701377);a.i(421434);var K=a.i(234379),L=a.i(821333),M=a.i(801691),N=a.i(39116);let O=["application","fast","spec"],P={application:{icon:p.LayoutGrid,labelKey:"createDrawer.modeApplication"},fast:{icon:h.Zap,labelKey:"createDrawer.modeFast"},spec:{icon:q.ClipboardList,labelKey:"createDrawer.modeSpec"}},Q=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),R={allowPrd:!1,allowPlan:!1,allowMerge:!1};function S({open:a,onClose:f,onSubmit:g,repositoryPath:h,isSubmitting:j=!1,workflowDefaults:k,features:p,repositories:q,initialParentId:w,currentAgentType:A,currentModel:F,initialDescription:I,canPushDirectly:J,initialMode:K}){let L=(0,s.useSoundAction)("create"),{t:M}=(0,d.useTranslation)("web"),S=h&&(!q||0===q.length||q.some(a=>a.path===h))?h:"",V=k?.approvalGates??R,W=k?.push??!1,X=k?.openPr??!1,Y=k?.ciWatchEnabled!==!1,Z=k?.enableEvidence??!1,$=k?.commitEvidence??!1,_=K||(k?.fast===!1?"application":"fast"),[aa,ab]=(0,c.useState)(I??"");(0,c.useEffect)(()=>{I&&ab(I)},[I]);let[ac,ad]=(0,c.useState)([]),[ae,af]=(0,c.useState)({...V}),[ag,ah]=(0,c.useState)(W),[ai,aj]=(0,c.useState)(X),[ak,al]=(0,c.useState)(k?.ciWatchEnabled!==!1),[am,an]=(0,c.useState)(Z),[ao,ap]=(0,c.useState)($),[aq,ar]=(0,c.useState)(void 0),[as,at]=(0,c.useState)(_),au="fast"===as,[av,aw]=(0,c.useState)(!1),[ax,ay]=(0,c.useState)(!1),[az,aA]=(0,c.useState)(!0),[aB,aC]=(0,c.useState)(!0),[aD,aE]=(0,c.useState)(k?.injectSkills??!1),[aF,aG]=(0,c.useState)(void 0),[aH,aI]=(0,c.useState)(void 0),[aJ,aK]=(0,c.useState)(S||void 0),[aL,aM]=(0,c.useState)(q??[]),[aN,aO]=(0,c.useState)(!1),[aP,aQ]=(0,c.useState)(null),[aR,aS]=(0,c.useState)(!1),aT=(0,c.useRef)(crypto.randomUUID()),aU=(0,c.useRef)(0),aV=(0,c.useRef)(null);(0,c.useEffect)(()=>{k&&(af({...k.approvalGates}),ah(k.push),aj(k.openPr),al(!1!==k.ciWatchEnabled),an(k.enableEvidence),ap(k.commitEvidence),K||at(!1!==k.fast?"fast":"application"),aE(k.injectSkills??!1))},[k,K]),(0,c.useEffect)(()=>{aM(q??[])},[q]),(0,c.useEffect)(()=>{a&&w&&ar(w)},[a,w]);let[aW,aX]=(0,c.useState)(J??!1);(0,c.useEffect)(()=>{aX(J??!1)},[J]);let aY=(0,c.useRef)(aJ);(0,c.useEffect)(()=>{aJ&&aJ!==aY.current&&(aY.current=aJ,G(aJ).then(a=>aX(a.canPushDirectly)).catch(()=>aX(!1)))},[aJ]),(0,c.useEffect)(()=>{aW&&(ay(!1),ah(W),aj(X),aA(!0))},[aW,W,X]);let aZ=(0,c.useCallback)(()=>{ab(""),ad([]),af({...V}),ah(W),aj(X),al(Y),an(Z),ap($),ar(void 0),aK(S||void 0),aM(q??[]),at(_),aw(!1),ay(!1),aA(!0),aC(!0),aG(void 0),aI(void 0),aQ(null),aU.current=0,aO(!1)},[V,W,X,Z,Y,$,_,S,q]),a$=""!==aa.trim()||ac.length>0,{attemptClose:a_}=(0,D.useGuardedDrawerClose)({open:a,isDirty:a$,onClose:f,onReset:aZ}),a0=(0,c.useCallback)(async a=>{for(let b of(aQ(null),a)){if(b.size>0xa00000)return void aQ(`"${b.name}" exceeds 10 MB limit`);let a=function(a){let b=a.lastIndexOf(".");return b>=0?a.slice(b).toLowerCase():""}(b.name);if(a&&!Q.has(a))return void aQ(`File type "${a}" is not allowed`)}for(let b of a){let a=crypto.randomUUID();ad(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:b.type||"application/octet-stream",path:"",loading:!0}]);try{let c=new FormData;c.append("file",b),c.append("sessionId",aT.current);let d=await fetch("/api/attachments/upload",{method:"POST",body:c});if(!d.ok){let b=await d.json().catch(()=>({error:"Upload failed"}));ad(b=>b.filter(b=>b.id!==a)),aQ(b.error??"Upload failed");return}let e=await d.json();ad(b=>b.some(b=>b.id!==a&&b.path===e.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...e,id:a,loading:!1}:b))}catch{ad(b=>b.filter(b=>b.id!==a)),aQ("Upload failed")}}},[]),a1=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),aU.current+=1,1===aU.current&&aO(!0)},[]),a2=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),aU.current-=1,0===aU.current&&aO(!1)},[]),a3=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation()},[]),a4=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),aU.current=0,aO(!1);let b=Array.from(a.dataTransfer.files);b.length>0&&a0(b)},[a0]),a5=(0,c.useCallback)(a=>{let b=a.clipboardData?.items;if(!b)return;let c=[];for(let a of Array.from(b))if("file"===a.kind){let b=a.getAsFile();b&&c.push(b)}c.length>0&&(a.preventDefault(),a0(c))},[a0]),a6=(0,c.useCallback)(a=>{if(a.preventDefault(),!aa.trim())return;let b=aJ??S;b&&(L.play(),g({description:aa.trim(),attachments:ac.filter(a=>!a.loading),repositoryPath:b,approvalGates:{allowPrd:ae.allowPrd??!1,allowPlan:ae.allowPlan??!1,allowMerge:ae.allowMerge??!1},push:!!ax||ag||ai,openPr:!!ax||ai,ciWatchEnabled:ak,enableEvidence:am,commitEvidence:ao,fast:au,forkAndPr:ax,commitSpecs:az,rebaseBeforeBranch:aB,injectSkills:aD,...av?{pending:av}:{},...aF?{agentType:aF}:{},...aH?{model:aH}:{},...aq?{parentId:aq}:{},sessionId:aT.current}),aZ())},[aa,ac,ae,aJ,S,g,ag,ai,am,ak,ao,au,ax,az,aB,aD,av,aF,aH,aq,L,aZ]),a7=(0,c.useCallback)(async()=>{try{let a=await (0,N.pickFiles)();if(!a)return;for(let b of a){let a=crypto.randomUUID();ad(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:"application/octet-stream",path:"",loading:!0}]);try{let c=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:b.path,sessionId:aT.current})});if(!c.ok){let b=await c.json().catch(()=>({error:"Upload failed"}));ad(b=>b.filter(b=>b.id!==a)),aQ(b.error??"Upload failed");return}let d=await c.json();ad(b=>b.some(b=>b.id!==a&&b.path===d.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...d,id:a,loading:!1}:b))}catch{ad(b=>b.filter(b=>b.id!==a)),aQ("Upload failed")}}}catch{}},[]),a8=(0,c.useCallback)(a=>{ad(b=>b.filter(b=>b.id!==a))},[]),a9=(0,c.useCallback)((a,b)=>{ad(c=>c.map(c=>c.id===a?{...c,notes:b}:c))},[]),ba=(0,c.useRef)(null),bb=(0,c.useCallback)(a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&(a.preventDefault(),ba.current?.requestSubmit())},[]),bc=(0,c.useCallback)(()=>{aS(!0)},[]),bd=(0,c.useCallback)(()=>{setTimeout(()=>{let a=aV.current?.contains(document.activeElement),b=aV.current?.querySelector('[aria-expanded="true"]')!==null;a||b||aS(!1)},0)},[]),be=p&&p.length>0,bf=!S&&!aJ,bg=!S&&void 0!==q,bh=[{id:"allowPrd",label:M("createDrawer.prd"),description:M("createDrawer.prdDescription")},{id:"allowPlan",label:M("createDrawer.plan"),description:M("createDrawer.planDescription")},{id:"allowMerge",label:M("createDrawer.merge"),description:M("createDrawer.mergeDescription")}];return(0,b.jsx)(t.BaseDrawer,{open:a,onClose:a_,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,b.jsx)(u.DrawerTitle,{children:M("createDrawer.title")})]}),j?(0,b.jsx)(u.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(z.Badge,{variant:"secondary",children:M("createDrawer.creating")})})}):null]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(v.Button,{variant:"outline",onClick:a_,disabled:j,children:M("createDrawer.cancel")}),(0,b.jsx)(v.Button,{type:"submit",form:"create-feature-form",disabled:!aa.trim()||j||bf,children:j?M("createDrawer.creating"):M("createDrawer.createFeature")})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsx)(C.TooltipProvider,{delayDuration:400,children:(0,b.jsxs)("form",{ref:ba,id:"create-feature-form",onSubmit:a6,onKeyDown:bb,className:"flex flex-col gap-4",children:[bg?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-selector-section",children:[(0,b.jsx)(y.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:M("createDrawer.repository")}),(0,b.jsx)(U,{repositories:aL,value:aJ,onChange:aK,onAddRepository:a=>{aM(b=>[...b,a]),aK(a.path)},disabled:j})]}):S?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-readonly-section",children:[(0,b.jsx)(y.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:M("createDrawer.repository")}),(0,b.jsx)("p",{className:"text-sm","data-testid":"repo-readonly-label",children:q?.find(a=>a.path===S)?.name??S.split("/").pop()})]}):null,(0,b.jsxs)("div",{role:"region","aria-label":M("createDrawer.fileDropZone"),"data-drag-over":aN?"true":"false",onDragEnter:a1,onDragLeave:a2,onDragOver:a3,onDrop:a4,className:(0,r.cn)("flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors",aN&&"border-primary/50 bg-primary/5"),children:[(0,b.jsx)(y.Label,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:M("createDrawer.describeFeature")}),(0,b.jsxs)("div",{ref:aV,onFocus:bc,onBlur:bd,className:(0,r.cn)("border-input flex h-56 flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow]",aR&&"ring-ring/50 border-ring ring-[3px]"),children:[(0,b.jsx)(x.Textarea,{id:"feature-description",placeholder:M("createDrawer.featurePlaceholder"),value:aa,onChange:a=>ab(a.target.value),onPaste:a5,required:!0,disabled:j,className:"min-h-0 flex-1 resize-none rounded-none border-0 shadow-none focus-visible:ring-0"}),ac.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 py-2",children:ac.map(a=>(0,b.jsx)(E.AttachmentChip,{name:a.name,size:a.size,mimeType:a.mimeType,path:a.path,onRemove:()=>a8(a.id),disabled:j,loading:a.loading,notes:a.notes,onNotesChange:b=>a9(a.id,b)},a.id))}),aP?(0,b.jsx)("p",{className:"text-destructive px-3 pb-2 text-xs",children:aP}):null,(0,b.jsxs)("div",{className:"border-input flex items-center gap-3 border-t px-3 py-1.5",children:[(0,b.jsx)(H.AgentModelPicker,{initialAgentType:aF??A??"claude-code",initialModel:aH??F??"claude-sonnet-4-6",mode:"override",onAgentModelChange:(a,b)=>{aG(a),aI(b)},disabled:j,className:"w-55"}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"ml-auto flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(B.Switch,{id:"pending-mode",checked:av,onCheckedChange:aw,disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"pending-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(i.Clock,{className:"h-3.5 w-3.5"}),M("createDrawer.pendingMode")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.pendingModeDescription")})]}),(0,b.jsx)("div",{role:"group","aria-label":M("createDrawer.modeGroupLabel"),className:"border-input flex items-center gap-0.5 rounded-md border p-0.5",children:O.map(a=>{let c=P[a],d=c.icon,e=as===a;return(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button","data-testid":`build-mode-${a}`,"aria-pressed":e,disabled:j,onClick:()=>at(a),className:(0,r.cn)("flex cursor-pointer items-center gap-1 rounded-sm px-2 py-1 text-xs font-medium transition-colors",e?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground","disabled:cursor-not-allowed disabled:opacity-50"),children:[(0,b.jsx)(d,{className:"h-3.5 w-3.5"}),M(c.labelKey)]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M(`${c.labelKey}Description`)})]},a)})}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:a7,disabled:j,"aria-label":M("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors",children:(0,b.jsx)(e.PaperclipIcon,{className:"h-4 w-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("chat.attachFiles")})]})]})]})]}),be&&void 0!==w?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(y.Label,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:M("createDrawer.parentFeature")}),(0,b.jsx)(T,{features:p,value:aq,onChange:ar,disabled:j})]}):null,(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.approve")})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.approveDescription")})]}),(0,b.jsx)("div",{className:"flex flex-1 items-center gap-4",children:bh.map(a=>(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:`approve-${a.id}`,size:"sm",checked:ae[a.id]??!1,onCheckedChange:b=>af(c=>({...c,[a.id]:b})),disabled:j||au&&("allowPrd"===a.id||"allowPlan"===a.id)}),(0,b.jsx)(y.Label,{htmlFor:`approve-${a.id}`,className:"cursor-pointer text-xs font-medium",children:a.label})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:au&&("allowPrd"===a.id||"allowPlan"===a.id)?M("createDrawer.skippedInFastMode"):a.description})]},a.id))}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:()=>{let a=bh.every(a=>ae[a.id]),b={};for(let c of bh)b[c.id]=!a;af(b)},disabled:j,className:(0,r.cn)("text-muted-foreground hover:text-foreground cursor-pointer rounded px-1.5 py-0.5 text-[10px] font-semibold tracking-wider uppercase transition-colors",bh.every(a=>ae[a.id])&&"text-primary"),children:M("createDrawer.all")})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.toggleAllApprovalGates")})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.evidence")})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.evidenceDescription")})]}),(0,b.jsxs)("div",{className:"flex flex-1 items-center gap-4",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"enable-evidence",size:"sm",checked:am,onCheckedChange:a=>{an(a),a||ap(!1)},disabled:j}),(0,b.jsx)(y.Label,{htmlFor:"enable-evidence",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.collect")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.collectDescription")})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"commit-evidence",size:"sm",checked:ao,onCheckedChange:ap,disabled:j||!am||!ai&&!ax}),(0,b.jsx)(y.Label,{htmlFor:"commit-evidence",className:(0,r.cn)("cursor-pointer text-xs font-medium",(!am||!ai&&!ax)&&"opacity-50"),children:M("createDrawer.addToPr")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:ai||ax?am?M("createDrawer.addToPrDescription"):M("createDrawer.requiresEvidence"):M("createDrawer.requiresPr")})]})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.skills")})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.skillsDescription")})]}),(0,b.jsx)("div",{className:"flex flex-1 items-center gap-4",children:(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"inject-skills",size:"sm",checked:aD,onCheckedChange:aE,disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"inject-skills",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(n.Puzzle,{className:"h-3 w-3"}),M("createDrawer.injectSkills")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.injectSkillsDescription")})]})})]}),(0,b.jsxs)("div",{className:"border-input flex items-start gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 pt-0.5 text-xs font-semibold tracking-wider",children:M("createDrawer.git")}),(0,b.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"push",size:"sm",checked:!!ax||ag||ai,onCheckedChange:a=>{ah(a),!a&&ai&&aj(!1)},disabled:j||ax}),(0,b.jsx)(y.Label,{htmlFor:"push",className:(0,r.cn)("cursor-pointer text-xs font-medium",ax&&"opacity-50"),children:M("createDrawer.push")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:ax?"Enabled — contributing to upstream":M("createDrawer.pushDescription")})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"open-pr",size:"sm",checked:!!ax||ai,onCheckedChange:a=>{aj(a),a||ap(!1)},disabled:j||ax}),(0,b.jsx)(y.Label,{htmlFor:"open-pr",className:(0,r.cn)("cursor-pointer text-xs font-medium",ax&&"opacity-50"),children:M("createDrawer.pr")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:ax?"Enabled — contributing to upstream":M("createDrawer.prDescription")})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"ci-watch",size:"sm",checked:ak,onCheckedChange:al,disabled:j}),(0,b.jsx)(y.Label,{htmlFor:"ci-watch",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.watch")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.watchDescription")})]}),(0,b.jsx)("div",{className:"bg-border h-4 w-px shrink-0"}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"rebase-before-branch",size:"sm",checked:aB,onCheckedChange:aC,disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"rebase-before-branch",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(o.RefreshCw,{className:"h-3 w-3"}),M("createDrawer.sync")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.syncDescription")})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"commit-specs",size:"sm",checked:az,onCheckedChange:aA,disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"commit-specs",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(m.FileText,{className:"h-3 w-3"}),M("createDrawer.commitSpecs")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.commitSpecsDescription")})]}),!aW&&(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"fork-and-pr",size:"sm",checked:ax,onCheckedChange:a=>{ay(a),a&&aA(!1)},disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"fork-and-pr",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(l.GitFork,{className:"h-3 w-3"}),M("createDrawer.forkAndPr")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.forkAndPrDescription")})]})]})]})]})]})})})})}function T({features:a,value:e,onChange:h,disabled:i}){let{t:j}=(0,d.useTranslation)("web"),[k,l]=(0,c.useState)(!1),[m,n]=(0,c.useState)(""),o=(0,c.useRef)(null),p=a.find(a=>a.id===e),q=m.trim()?a.filter(a=>a.name.toLowerCase().includes(m.toLowerCase())||a.id.toLowerCase().includes(m.toLowerCase())):a,s=(0,c.useCallback)(a=>{h(a),l(!1),n("")},[h]);return(0,c.useEffect)(()=>{k?setTimeout(()=>o.current?.focus(),0):n("")},[k]),(0,b.jsxs)(A.Popover,{open:k,onOpenChange:l,children:[(0,b.jsx)(A.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":k,"aria-label":"Parent Feature",disabled:i,"data-testid":"parent-feature-combobox",className:(0,r.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!p&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:p?`${p.name} (${p.id.slice(0,8)})`:j("createDrawer.selectParent")}),(0,b.jsx)(f.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(A.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(w.Input,{ref:o,placeholder:j("createDrawer.searchFeatures"),value:m,onChange:a=>n(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,b.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===e,onClick:()=>s(void 0),className:(0,r.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===e&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,b.jsx)(g.CheckIcon,{className:(0,r.cn)("h-4 w-4 shrink-0",void 0!==e&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:j("createDrawer.noParent")})]}),0===q.length&&m?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:j("createDrawer.noFeaturesFound")}):q.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":e===a.id,onClick:()=>s(a.id),className:(0,r.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",e===a.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${a.id}`,children:[(0,b.jsx)(g.CheckIcon,{className:(0,r.cn)("h-4 w-4 shrink-0",e!==a.id&&"invisible")}),(0,b.jsxs)("span",{className:"truncate",children:[a.name," ",(0,b.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",a.id.slice(0,8),")"]})]})]},a.id))]})]})})]})}function U({repositories:a,value:e,onChange:h,onAddRepository:i,disabled:m}){let[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(""),[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(null),[x,y]=(0,c.useState)(!1),B=(0,c.useRef)(null),{reactFileManager:C}=(0,L.useFeatureFlags)(),{t:D}=(0,d.useTranslation)("web"),E=a.find(a=>a.path===e),F=p.trim()?a.filter(a=>a.name.toLowerCase().includes(p.toLowerCase())||a.path.toLowerCase().includes(p.toLowerCase())):a,G=(0,c.useCallback)(a=>{h(a),o(!1),q("")},[h]),H=(0,c.useCallback)(async a=>{let b=await (0,M.addRepository)({path:a});if(b.error){v(b.error),t(!1);return}if(b.repository){let a={id:b.repository.id,name:b.repository.name,path:b.repository.path};i?.(a),h(a.path),o(!1),q("")}},[i,h]),N=(0,c.useCallback)(async()=>{if(!s){if(C)return void y(!0);t(!0),v(null);try{let a=await (0,J.pickFolder)();if(!a)return void t(!1);await H(a)}catch{y(!0)}finally{t(!1)}}},[s,C,H]),O=(0,c.useCallback)(async a=>{if(y(!1),a){t(!0),v(null);try{await H(a)}catch(a){v(a instanceof Error?a.message:"Failed to add repository")}finally{t(!1)}}},[H]);return(0,c.useEffect)(()=>{n?setTimeout(()=>B.current?.focus(),0):q("")},[n]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(A.Popover,{open:n,onOpenChange:o,children:[(0,b.jsx)(A.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",role:"combobox","aria-expanded":n,"aria-label":"Repository",disabled:m,"data-testid":"repository-combobox",className:(0,r.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!E&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:E?E.name:"Select repository..."}),(0,b.jsx)(f.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(A.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"repository-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(w.Input,{ref:B,placeholder:D("createDrawer.searchRepositories"),value:p,onChange:a=>q(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"repository-search"})}),(0,b.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===F.length?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm","data-testid":"repository-empty",children:"No repositories found."}):F.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":e===a.path,onClick:()=>G(a.path),className:(0,r.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",e===a.path&&"bg-accent/50"),"data-testid":`repository-option-${a.id}`,children:[(0,b.jsx)(g.CheckIcon,{className:(0,r.cn)("h-4 w-4 shrink-0",e!==a.path&&"invisible")}),(0,b.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1.5 truncate",children:[a.name,a.isFork?(0,b.jsxs)(z.Badge,{variant:"outline",className:"h-4 shrink-0 px-1 text-[10px]",children:[(0,b.jsx)(l.GitFork,{className:"mr-0.5 h-2.5 w-2.5"}),"Fork"]}):null]}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path})]})]},a.id))}),(0,b.jsx)(I.Separator,{}),(0,b.jsxs)("button",{type:"button",onClick:N,disabled:s,className:"hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm","data-testid":"add-repository-item",children:[s?(0,b.jsx)(k.Loader2,{className:"h-4 w-4 shrink-0 animate-spin"}):(0,b.jsx)(j.FolderPlus,{className:"h-4 w-4 shrink-0"}),(0,b.jsx)("span",{children:"Add new repository..."})]}),u?(0,b.jsx)("p",{className:"px-3 pb-2 text-xs text-red-500","data-testid":"add-repository-error",children:u}):null]})})]}),(0,b.jsx)(K.ReactFileManagerDialog,{open:x,onOpenChange:a=>{a||y(!1)},onSelect:O})]})}a.s(["FeatureCreateDrawer",()=>S],382052),a.s([],609803)},646442,a=>{"use strict";var b=a.i(289111);let c=(0,b.createServerReference)("40043d514e2ae74fecc73e6e73e249f7151efc24b7",b.callServer,void 0,b.findSourceMapURL,"createFeature");a.s(["createFeature",()=>c])}];
1
+ module.exports=[609803,382052,a=>{"use strict";var b=a.i(556365),c=a.i(944592);a.i(490370);var d=a.i(224640),e=a.i(945242),f=a.i(14177),g=a.i(110606),h=a.i(103942),i=a.i(346168),j=a.i(142527),k=a.i(488064),l=a.i(673708),m=a.i(162147),n=a.i(167424),o=a.i(428002),p=a.i(882014),q=a.i(69428),r=a.i(385536),s=a.i(219884);a.i(478454);var t=a.i(124255),u=a.i(302824),v=a.i(118948),w=a.i(390920),x=a.i(679620),y=a.i(758860),z=a.i(658339),A=a.i(680646),B=a.i(896867),C=a.i(182934),D=a.i(196213);a.i(200307);var E=a.i(730931),F=a.i(289111);let G=(0,F.createServerReference)("40ea48d752291fdfcaad9784e39a575c4655808001",F.callServer,void 0,F.findSourceMapURL,"getViewerPermission");var H=a.i(961781),I=a.i(513126),J=a.i(701377);a.i(421434);var K=a.i(234379),L=a.i(821333),M=a.i(502553),N=a.i(39116);let O=["application","fast","spec"],P={application:{icon:p.LayoutGrid,labelKey:"createDrawer.modeApplication"},fast:{icon:h.Zap,labelKey:"createDrawer.modeFast"},spec:{icon:q.ClipboardList,labelKey:"createDrawer.modeSpec"}},Q=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),R={allowPrd:!1,allowPlan:!1,allowMerge:!1};function S({open:a,onClose:f,onSubmit:g,repositoryPath:h,isSubmitting:j=!1,workflowDefaults:k,features:p,repositories:q,initialParentId:w,currentAgentType:A,currentModel:F,initialDescription:I,canPushDirectly:J,initialMode:K}){let L=(0,s.useSoundAction)("create"),{t:M}=(0,d.useTranslation)("web"),S=h&&(!q||0===q.length||q.some(a=>a.path===h))?h:"",V=k?.approvalGates??R,W=k?.push??!1,X=k?.openPr??!1,Y=k?.ciWatchEnabled!==!1,Z=k?.enableEvidence??!1,$=k?.commitEvidence??!1,_=K||(k?.fast===!1?"application":"fast"),[aa,ab]=(0,c.useState)(I??"");(0,c.useEffect)(()=>{I&&ab(I)},[I]);let[ac,ad]=(0,c.useState)([]),[ae,af]=(0,c.useState)({...V}),[ag,ah]=(0,c.useState)(W),[ai,aj]=(0,c.useState)(X),[ak,al]=(0,c.useState)(k?.ciWatchEnabled!==!1),[am,an]=(0,c.useState)(Z),[ao,ap]=(0,c.useState)($),[aq,ar]=(0,c.useState)(void 0),[as,at]=(0,c.useState)(_),au="fast"===as,[av,aw]=(0,c.useState)(!1),[ax,ay]=(0,c.useState)(!1),[az,aA]=(0,c.useState)(!0),[aB,aC]=(0,c.useState)(!0),[aD,aE]=(0,c.useState)(k?.injectSkills??!1),[aF,aG]=(0,c.useState)(void 0),[aH,aI]=(0,c.useState)(void 0),[aJ,aK]=(0,c.useState)(S||void 0),[aL,aM]=(0,c.useState)(q??[]),[aN,aO]=(0,c.useState)(!1),[aP,aQ]=(0,c.useState)(null),[aR,aS]=(0,c.useState)(!1),aT=(0,c.useRef)(crypto.randomUUID()),aU=(0,c.useRef)(0),aV=(0,c.useRef)(null);(0,c.useEffect)(()=>{k&&(af({...k.approvalGates}),ah(k.push),aj(k.openPr),al(!1!==k.ciWatchEnabled),an(k.enableEvidence),ap(k.commitEvidence),K||at(!1!==k.fast?"fast":"application"),aE(k.injectSkills??!1))},[k,K]),(0,c.useEffect)(()=>{aM(q??[])},[q]),(0,c.useEffect)(()=>{a&&w&&ar(w)},[a,w]);let[aW,aX]=(0,c.useState)(J??!1);(0,c.useEffect)(()=>{aX(J??!1)},[J]);let aY=(0,c.useRef)(aJ);(0,c.useEffect)(()=>{aJ&&aJ!==aY.current&&(aY.current=aJ,G(aJ).then(a=>aX(a.canPushDirectly)).catch(()=>aX(!1)))},[aJ]),(0,c.useEffect)(()=>{aW&&(ay(!1),ah(W),aj(X),aA(!0))},[aW,W,X]);let aZ=(0,c.useCallback)(()=>{ab(""),ad([]),af({...V}),ah(W),aj(X),al(Y),an(Z),ap($),ar(void 0),aK(S||void 0),aM(q??[]),at(_),aw(!1),ay(!1),aA(!0),aC(!0),aG(void 0),aI(void 0),aQ(null),aU.current=0,aO(!1)},[V,W,X,Z,Y,$,_,S,q]),a$=""!==aa.trim()||ac.length>0,{attemptClose:a_}=(0,D.useGuardedDrawerClose)({open:a,isDirty:a$,onClose:f,onReset:aZ}),a0=(0,c.useCallback)(async a=>{for(let b of(aQ(null),a)){if(b.size>0xa00000)return void aQ(`"${b.name}" exceeds 10 MB limit`);let a=function(a){let b=a.lastIndexOf(".");return b>=0?a.slice(b).toLowerCase():""}(b.name);if(a&&!Q.has(a))return void aQ(`File type "${a}" is not allowed`)}for(let b of a){let a=crypto.randomUUID();ad(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:b.type||"application/octet-stream",path:"",loading:!0}]);try{let c=new FormData;c.append("file",b),c.append("sessionId",aT.current);let d=await fetch("/api/attachments/upload",{method:"POST",body:c});if(!d.ok){let b=await d.json().catch(()=>({error:"Upload failed"}));ad(b=>b.filter(b=>b.id!==a)),aQ(b.error??"Upload failed");return}let e=await d.json();ad(b=>b.some(b=>b.id!==a&&b.path===e.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...e,id:a,loading:!1}:b))}catch{ad(b=>b.filter(b=>b.id!==a)),aQ("Upload failed")}}},[]),a1=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),aU.current+=1,1===aU.current&&aO(!0)},[]),a2=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),aU.current-=1,0===aU.current&&aO(!1)},[]),a3=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation()},[]),a4=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),aU.current=0,aO(!1);let b=Array.from(a.dataTransfer.files);b.length>0&&a0(b)},[a0]),a5=(0,c.useCallback)(a=>{let b=a.clipboardData?.items;if(!b)return;let c=[];for(let a of Array.from(b))if("file"===a.kind){let b=a.getAsFile();b&&c.push(b)}c.length>0&&(a.preventDefault(),a0(c))},[a0]),a6=(0,c.useCallback)(a=>{if(a.preventDefault(),!aa.trim())return;let b=aJ??S;b&&(L.play(),g({description:aa.trim(),attachments:ac.filter(a=>!a.loading),repositoryPath:b,approvalGates:{allowPrd:ae.allowPrd??!1,allowPlan:ae.allowPlan??!1,allowMerge:ae.allowMerge??!1},push:!!ax||ag||ai,openPr:!!ax||ai,ciWatchEnabled:ak,enableEvidence:am,commitEvidence:ao,fast:au,forkAndPr:ax,commitSpecs:az,rebaseBeforeBranch:aB,injectSkills:aD,...av?{pending:av}:{},...aF?{agentType:aF}:{},...aH?{model:aH}:{},...aq?{parentId:aq}:{},sessionId:aT.current}),aZ())},[aa,ac,ae,aJ,S,g,ag,ai,am,ak,ao,au,ax,az,aB,aD,av,aF,aH,aq,L,aZ]),a7=(0,c.useCallback)(async()=>{try{let a=await (0,N.pickFiles)();if(!a)return;for(let b of a){let a=crypto.randomUUID();ad(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:"application/octet-stream",path:"",loading:!0}]);try{let c=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:b.path,sessionId:aT.current})});if(!c.ok){let b=await c.json().catch(()=>({error:"Upload failed"}));ad(b=>b.filter(b=>b.id!==a)),aQ(b.error??"Upload failed");return}let d=await c.json();ad(b=>b.some(b=>b.id!==a&&b.path===d.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...d,id:a,loading:!1}:b))}catch{ad(b=>b.filter(b=>b.id!==a)),aQ("Upload failed")}}}catch{}},[]),a8=(0,c.useCallback)(a=>{ad(b=>b.filter(b=>b.id!==a))},[]),a9=(0,c.useCallback)((a,b)=>{ad(c=>c.map(c=>c.id===a?{...c,notes:b}:c))},[]),ba=(0,c.useRef)(null),bb=(0,c.useCallback)(a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&(a.preventDefault(),ba.current?.requestSubmit())},[]),bc=(0,c.useCallback)(()=>{aS(!0)},[]),bd=(0,c.useCallback)(()=>{setTimeout(()=>{let a=aV.current?.contains(document.activeElement),b=aV.current?.querySelector('[aria-expanded="true"]')!==null;a||b||aS(!1)},0)},[]),be=p&&p.length>0,bf=!S&&!aJ,bg=!S&&void 0!==q,bh=[{id:"allowPrd",label:M("createDrawer.prd"),description:M("createDrawer.prdDescription")},{id:"allowPlan",label:M("createDrawer.plan"),description:M("createDrawer.planDescription")},{id:"allowMerge",label:M("createDrawer.merge"),description:M("createDrawer.mergeDescription")}];return(0,b.jsx)(t.BaseDrawer,{open:a,onClose:a_,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,b.jsx)(u.DrawerTitle,{children:M("createDrawer.title")})]}),j?(0,b.jsx)(u.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(z.Badge,{variant:"secondary",children:M("createDrawer.creating")})})}):null]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(v.Button,{variant:"outline",onClick:a_,disabled:j,children:M("createDrawer.cancel")}),(0,b.jsx)(v.Button,{type:"submit",form:"create-feature-form",disabled:!aa.trim()||j||bf,children:j?M("createDrawer.creating"):M("createDrawer.createFeature")})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsx)(C.TooltipProvider,{delayDuration:400,children:(0,b.jsxs)("form",{ref:ba,id:"create-feature-form",onSubmit:a6,onKeyDown:bb,className:"flex flex-col gap-4",children:[bg?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-selector-section",children:[(0,b.jsx)(y.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:M("createDrawer.repository")}),(0,b.jsx)(U,{repositories:aL,value:aJ,onChange:aK,onAddRepository:a=>{aM(b=>[...b,a]),aK(a.path)},disabled:j})]}):S?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-readonly-section",children:[(0,b.jsx)(y.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:M("createDrawer.repository")}),(0,b.jsx)("p",{className:"text-sm","data-testid":"repo-readonly-label",children:q?.find(a=>a.path===S)?.name??S.split("/").pop()})]}):null,(0,b.jsxs)("div",{role:"region","aria-label":M("createDrawer.fileDropZone"),"data-drag-over":aN?"true":"false",onDragEnter:a1,onDragLeave:a2,onDragOver:a3,onDrop:a4,className:(0,r.cn)("flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors",aN&&"border-primary/50 bg-primary/5"),children:[(0,b.jsx)(y.Label,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:M("createDrawer.describeFeature")}),(0,b.jsxs)("div",{ref:aV,onFocus:bc,onBlur:bd,className:(0,r.cn)("border-input flex h-56 flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow]",aR&&"ring-ring/50 border-ring ring-[3px]"),children:[(0,b.jsx)(x.Textarea,{id:"feature-description",placeholder:M("createDrawer.featurePlaceholder"),value:aa,onChange:a=>ab(a.target.value),onPaste:a5,required:!0,disabled:j,className:"min-h-0 flex-1 resize-none rounded-none border-0 shadow-none focus-visible:ring-0"}),ac.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 py-2",children:ac.map(a=>(0,b.jsx)(E.AttachmentChip,{name:a.name,size:a.size,mimeType:a.mimeType,path:a.path,onRemove:()=>a8(a.id),disabled:j,loading:a.loading,notes:a.notes,onNotesChange:b=>a9(a.id,b)},a.id))}),aP?(0,b.jsx)("p",{className:"text-destructive px-3 pb-2 text-xs",children:aP}):null,(0,b.jsxs)("div",{className:"border-input flex items-center gap-3 border-t px-3 py-1.5",children:[(0,b.jsx)(H.AgentModelPicker,{initialAgentType:aF??A??"claude-code",initialModel:aH??F??"claude-sonnet-4-6",mode:"override",onAgentModelChange:(a,b)=>{aG(a),aI(b)},disabled:j,className:"w-55"}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"ml-auto flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(B.Switch,{id:"pending-mode",checked:av,onCheckedChange:aw,disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"pending-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(i.Clock,{className:"h-3.5 w-3.5"}),M("createDrawer.pendingMode")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.pendingModeDescription")})]}),(0,b.jsx)("div",{role:"group","aria-label":M("createDrawer.modeGroupLabel"),className:"border-input flex items-center gap-0.5 rounded-md border p-0.5",children:O.map(a=>{let c=P[a],d=c.icon,e=as===a;return(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button","data-testid":`build-mode-${a}`,"aria-pressed":e,disabled:j,onClick:()=>at(a),className:(0,r.cn)("flex cursor-pointer items-center gap-1 rounded-sm px-2 py-1 text-xs font-medium transition-colors",e?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground","disabled:cursor-not-allowed disabled:opacity-50"),children:[(0,b.jsx)(d,{className:"h-3.5 w-3.5"}),M(c.labelKey)]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M(`${c.labelKey}Description`)})]},a)})}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:a7,disabled:j,"aria-label":M("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors",children:(0,b.jsx)(e.PaperclipIcon,{className:"h-4 w-4"})})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("chat.attachFiles")})]})]})]})]}),be&&void 0!==w?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(y.Label,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:M("createDrawer.parentFeature")}),(0,b.jsx)(T,{features:p,value:aq,onChange:ar,disabled:j})]}):null,(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.approve")})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.approveDescription")})]}),(0,b.jsx)("div",{className:"flex flex-1 items-center gap-4",children:bh.map(a=>(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:`approve-${a.id}`,size:"sm",checked:ae[a.id]??!1,onCheckedChange:b=>af(c=>({...c,[a.id]:b})),disabled:j||au&&("allowPrd"===a.id||"allowPlan"===a.id)}),(0,b.jsx)(y.Label,{htmlFor:`approve-${a.id}`,className:"cursor-pointer text-xs font-medium",children:a.label})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:au&&("allowPrd"===a.id||"allowPlan"===a.id)?M("createDrawer.skippedInFastMode"):a.description})]},a.id))}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:()=>{let a=bh.every(a=>ae[a.id]),b={};for(let c of bh)b[c.id]=!a;af(b)},disabled:j,className:(0,r.cn)("text-muted-foreground hover:text-foreground cursor-pointer rounded px-1.5 py-0.5 text-[10px] font-semibold tracking-wider uppercase transition-colors",bh.every(a=>ae[a.id])&&"text-primary"),children:M("createDrawer.all")})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.toggleAllApprovalGates")})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.evidence")})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.evidenceDescription")})]}),(0,b.jsxs)("div",{className:"flex flex-1 items-center gap-4",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"enable-evidence",size:"sm",checked:am,onCheckedChange:a=>{an(a),a||ap(!1)},disabled:j}),(0,b.jsx)(y.Label,{htmlFor:"enable-evidence",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.collect")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.collectDescription")})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"commit-evidence",size:"sm",checked:ao,onCheckedChange:ap,disabled:j||!am||!ai&&!ax}),(0,b.jsx)(y.Label,{htmlFor:"commit-evidence",className:(0,r.cn)("cursor-pointer text-xs font-medium",(!am||!ai&&!ax)&&"opacity-50"),children:M("createDrawer.addToPr")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:ai||ax?am?M("createDrawer.addToPrDescription"):M("createDrawer.requiresEvidence"):M("createDrawer.requiresPr")})]})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.skills")})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.skillsDescription")})]}),(0,b.jsx)("div",{className:"flex flex-1 items-center gap-4",children:(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"inject-skills",size:"sm",checked:aD,onCheckedChange:aE,disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"inject-skills",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(n.Puzzle,{className:"h-3 w-3"}),M("createDrawer.injectSkills")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.injectSkillsDescription")})]})})]}),(0,b.jsxs)("div",{className:"border-input flex items-start gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 pt-0.5 text-xs font-semibold tracking-wider",children:M("createDrawer.git")}),(0,b.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"push",size:"sm",checked:!!ax||ag||ai,onCheckedChange:a=>{ah(a),!a&&ai&&aj(!1)},disabled:j||ax}),(0,b.jsx)(y.Label,{htmlFor:"push",className:(0,r.cn)("cursor-pointer text-xs font-medium",ax&&"opacity-50"),children:M("createDrawer.push")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:ax?"Enabled — contributing to upstream":M("createDrawer.pushDescription")})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"open-pr",size:"sm",checked:!!ax||ai,onCheckedChange:a=>{aj(a),a||ap(!1)},disabled:j||ax}),(0,b.jsx)(y.Label,{htmlFor:"open-pr",className:(0,r.cn)("cursor-pointer text-xs font-medium",ax&&"opacity-50"),children:M("createDrawer.pr")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:ax?"Enabled — contributing to upstream":M("createDrawer.prDescription")})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"ci-watch",size:"sm",checked:ak,onCheckedChange:al,disabled:j}),(0,b.jsx)(y.Label,{htmlFor:"ci-watch",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.watch")})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.watchDescription")})]}),(0,b.jsx)("div",{className:"bg-border h-4 w-px shrink-0"}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"rebase-before-branch",size:"sm",checked:aB,onCheckedChange:aC,disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"rebase-before-branch",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(o.RefreshCw,{className:"h-3 w-3"}),M("createDrawer.sync")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.syncDescription")})]}),(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"commit-specs",size:"sm",checked:az,onCheckedChange:aA,disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"commit-specs",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(m.FileText,{className:"h-3 w-3"}),M("createDrawer.commitSpecs")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.commitSpecsDescription")})]}),!aW&&(0,b.jsxs)(C.Tooltip,{children:[(0,b.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(B.Switch,{id:"fork-and-pr",size:"sm",checked:ax,onCheckedChange:a=>{ay(a),a&&aA(!1)},disabled:j}),(0,b.jsxs)(y.Label,{htmlFor:"fork-and-pr",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(l.GitFork,{className:"h-3 w-3"}),M("createDrawer.forkAndPr")]})]})}),(0,b.jsx)(C.TooltipContent,{side:"bottom",children:M("createDrawer.forkAndPrDescription")})]})]})]})]})]})})})})}function T({features:a,value:e,onChange:h,disabled:i}){let{t:j}=(0,d.useTranslation)("web"),[k,l]=(0,c.useState)(!1),[m,n]=(0,c.useState)(""),o=(0,c.useRef)(null),p=a.find(a=>a.id===e),q=m.trim()?a.filter(a=>a.name.toLowerCase().includes(m.toLowerCase())||a.id.toLowerCase().includes(m.toLowerCase())):a,s=(0,c.useCallback)(a=>{h(a),l(!1),n("")},[h]);return(0,c.useEffect)(()=>{k?setTimeout(()=>o.current?.focus(),0):n("")},[k]),(0,b.jsxs)(A.Popover,{open:k,onOpenChange:l,children:[(0,b.jsx)(A.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":k,"aria-label":"Parent Feature",disabled:i,"data-testid":"parent-feature-combobox",className:(0,r.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!p&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:p?`${p.name} (${p.id.slice(0,8)})`:j("createDrawer.selectParent")}),(0,b.jsx)(f.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(A.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(w.Input,{ref:o,placeholder:j("createDrawer.searchFeatures"),value:m,onChange:a=>n(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,b.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===e,onClick:()=>s(void 0),className:(0,r.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===e&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,b.jsx)(g.CheckIcon,{className:(0,r.cn)("h-4 w-4 shrink-0",void 0!==e&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:j("createDrawer.noParent")})]}),0===q.length&&m?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:j("createDrawer.noFeaturesFound")}):q.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":e===a.id,onClick:()=>s(a.id),className:(0,r.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",e===a.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${a.id}`,children:[(0,b.jsx)(g.CheckIcon,{className:(0,r.cn)("h-4 w-4 shrink-0",e!==a.id&&"invisible")}),(0,b.jsxs)("span",{className:"truncate",children:[a.name," ",(0,b.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",a.id.slice(0,8),")"]})]})]},a.id))]})]})})]})}function U({repositories:a,value:e,onChange:h,onAddRepository:i,disabled:m}){let[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(""),[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(null),[x,y]=(0,c.useState)(!1),B=(0,c.useRef)(null),{reactFileManager:C}=(0,L.useFeatureFlags)(),{t:D}=(0,d.useTranslation)("web"),E=a.find(a=>a.path===e),F=p.trim()?a.filter(a=>a.name.toLowerCase().includes(p.toLowerCase())||a.path.toLowerCase().includes(p.toLowerCase())):a,G=(0,c.useCallback)(a=>{h(a),o(!1),q("")},[h]),H=(0,c.useCallback)(async a=>{let b=await (0,M.addRepository)({path:a});if(b.error){v(b.error),t(!1);return}if(b.repository){let a={id:b.repository.id,name:b.repository.name,path:b.repository.path};i?.(a),h(a.path),o(!1),q("")}},[i,h]),N=(0,c.useCallback)(async()=>{if(!s){if(C)return void y(!0);t(!0),v(null);try{let a=await (0,J.pickFolder)();if(!a)return void t(!1);await H(a)}catch{y(!0)}finally{t(!1)}}},[s,C,H]),O=(0,c.useCallback)(async a=>{if(y(!1),a){t(!0),v(null);try{await H(a)}catch(a){v(a instanceof Error?a.message:"Failed to add repository")}finally{t(!1)}}},[H]);return(0,c.useEffect)(()=>{n?setTimeout(()=>B.current?.focus(),0):q("")},[n]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(A.Popover,{open:n,onOpenChange:o,children:[(0,b.jsx)(A.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",role:"combobox","aria-expanded":n,"aria-label":"Repository",disabled:m,"data-testid":"repository-combobox",className:(0,r.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!E&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:E?E.name:"Select repository..."}),(0,b.jsx)(f.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(A.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"repository-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(w.Input,{ref:B,placeholder:D("createDrawer.searchRepositories"),value:p,onChange:a=>q(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"repository-search"})}),(0,b.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===F.length?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm","data-testid":"repository-empty",children:"No repositories found."}):F.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":e===a.path,onClick:()=>G(a.path),className:(0,r.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",e===a.path&&"bg-accent/50"),"data-testid":`repository-option-${a.id}`,children:[(0,b.jsx)(g.CheckIcon,{className:(0,r.cn)("h-4 w-4 shrink-0",e!==a.path&&"invisible")}),(0,b.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1.5 truncate",children:[a.name,a.isFork?(0,b.jsxs)(z.Badge,{variant:"outline",className:"h-4 shrink-0 px-1 text-[10px]",children:[(0,b.jsx)(l.GitFork,{className:"mr-0.5 h-2.5 w-2.5"}),"Fork"]}):null]}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path})]})]},a.id))}),(0,b.jsx)(I.Separator,{}),(0,b.jsxs)("button",{type:"button",onClick:N,disabled:s,className:"hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm","data-testid":"add-repository-item",children:[s?(0,b.jsx)(k.Loader2,{className:"h-4 w-4 shrink-0 animate-spin"}):(0,b.jsx)(j.FolderPlus,{className:"h-4 w-4 shrink-0"}),(0,b.jsx)("span",{children:"Add new repository..."})]}),u?(0,b.jsx)("p",{className:"px-3 pb-2 text-xs text-red-500","data-testid":"add-repository-error",children:u}):null]})})]}),(0,b.jsx)(K.ReactFileManagerDialog,{open:x,onOpenChange:a=>{a||y(!1)},onSelect:O})]})}a.s(["FeatureCreateDrawer",()=>S],382052),a.s([],609803)},380861,a=>{"use strict";var b=a.i(289111);let c=(0,b.createServerReference)("40f9865a02f709d69b646d15b1095d80de20dd68e1",b.callServer,void 0,b.findSourceMapURL,"createFeature");a.s(["createFeature",()=>c])}];
2
2
 
3
- //# sourceMappingURL=src_presentation_web_1f525bd4._.js.map
3
+ //# sourceMappingURL=src_presentation_web_5c844690._.js.map