@shipit-ai/cli 1.166.0 → 1.166.2

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 (284) hide show
  1. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  2. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +19 -2
  3. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
  4. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +14 -3
  5. package/dist/src/presentation/web/app/actions/deploy-repository.d.ts.map +1 -1
  6. package/dist/src/presentation/web/app/actions/deploy-repository.js +14 -7
  7. package/dist/src/presentation/web/app/actions/get-merge-review-data.d.ts.map +1 -1
  8. package/dist/src/presentation/web/app/actions/get-merge-review-data.js +66 -23
  9. package/dist/src/presentation/web/app/actions/open-folder.d.ts.map +1 -1
  10. package/dist/src/presentation/web/app/actions/open-folder.js +12 -4
  11. package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -1
  12. package/dist/src/presentation/web/app/actions/open-shell.js +46 -7
  13. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  14. package/dist/src/presentation/web/app/api/agent-events/route.js +2 -6
  15. package/dist/src/presentation/web/app/api/attachments/upload-from-path/route.d.ts.map +1 -1
  16. package/dist/src/presentation/web/app/api/attachments/upload-from-path/route.js +21 -17
  17. package/dist/src/presentation/web/app/api/deployment-logs/route.d.ts.map +1 -1
  18. package/dist/src/presentation/web/app/api/deployment-logs/route.js +2 -6
  19. package/dist/src/presentation/web/app/api/directory/list/route.d.ts.map +1 -1
  20. package/dist/src/presentation/web/app/api/directory/list/route.js +39 -24
  21. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.d.ts.map +1 -1
  22. package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.js +2 -6
  23. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.d.ts.map +1 -1
  24. package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.js +2 -6
  25. package/dist/src/presentation/web/lib/path-sanitizers.d.ts +50 -0
  26. package/dist/src/presentation/web/lib/path-sanitizers.d.ts.map +1 -0
  27. package/dist/src/presentation/web/lib/path-sanitizers.js +136 -0
  28. package/dist/tsconfig.build.tsbuildinfo +1 -1
  29. package/package.json +9 -7
  30. package/web/.next/BUILD_ID +1 -1
  31. package/web/.next/build-manifest.json +3 -3
  32. package/web/.next/fallback-build-manifest.json +3 -3
  33. package/web/.next/prerender-manifest.json +3 -3
  34. package/web/.next/required-server-files.js +2 -2
  35. package/web/.next/required-server-files.json +2 -2
  36. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  37. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
  38. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  41. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +1 -1
  42. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  45. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  46. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  49. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +3 -2
  50. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  53. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -2
  54. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  57. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +1 -1
  58. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  61. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  62. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  65. package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
  66. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  67. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  68. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  69. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  70. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  73. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +3 -2
  74. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  75. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  77. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -2
  78. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  79. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  81. package/web/.next/server/app/(dashboard)/page.js +1 -1
  82. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  83. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  85. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +1 -1
  86. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  87. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  89. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  90. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  91. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  92. package/web/.next/server/app/_global-error.html +1 -1
  93. package/web/.next/server/app/_global-error.rsc +1 -1
  94. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  95. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  96. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  97. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  98. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  99. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  100. package/web/.next/server/app/_not-found/page.js +1 -1
  101. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  102. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/api/agent-events/route.js +2 -1
  104. package/web/.next/server/app/api/agent-events/route.js.nft.json +1 -1
  105. package/web/.next/server/app/api/attachments/preview/route.js +1 -1
  106. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  107. package/web/.next/server/app/api/attachments/upload-from-path/route.js +1 -1
  108. package/web/.next/server/app/api/attachments/upload-from-path/route.js.nft.json +1 -1
  109. package/web/.next/server/app/api/deployment-logs/route.js +2 -1
  110. package/web/.next/server/app/api/deployment-logs/route.js.nft.json +1 -1
  111. package/web/.next/server/app/api/dialog/pick-files/route.js +1 -1
  112. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  113. package/web/.next/server/app/api/directory/list/route.js +1 -1
  114. package/web/.next/server/app/api/directory/list/route.js.nft.json +1 -1
  115. package/web/.next/server/app/api/evidence/route.js +1 -1
  116. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  117. package/web/.next/server/app/api/graph-data/route.js +1 -1
  118. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  119. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js +1 -1
  120. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  121. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js +2 -1
  122. package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.nft.json +1 -1
  123. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js +2 -1
  124. package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.nft.json +1 -1
  125. package/web/.next/server/app/api/sessions-batch/route.js +1 -1
  126. package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
  127. package/web/.next/server/app/settings/page/server-reference-manifest.json +11 -11
  128. package/web/.next/server/app/settings/page.js +1 -1
  129. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  130. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  131. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  132. package/web/.next/server/app/skills/page.js +1 -1
  133. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  134. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  135. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  136. package/web/.next/server/app/tools/page.js +1 -1
  137. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  138. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  139. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  140. package/web/.next/server/app/version/page.js +1 -1
  141. package/web/.next/server/app/version/page.js.nft.json +1 -1
  142. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  143. package/web/.next/server/chunks/{[root-of-the-server]__02xmnal._.js → [root-of-the-server]__08cpfre._.js} +2 -2
  144. package/web/.next/server/chunks/[root-of-the-server]__0_-chcy._.js +3 -0
  145. package/web/.next/server/chunks/[root-of-the-server]__0_-chcy._.js.map +1 -0
  146. package/web/.next/server/chunks/[root-of-the-server]__0aft8l4._.js +9 -0
  147. package/web/.next/server/chunks/{[root-of-the-server]__0_6fhza._.js.map → [root-of-the-server]__0aft8l4._.js.map} +1 -1
  148. package/web/.next/server/chunks/[root-of-the-server]__0e9p7em._.js +3 -0
  149. package/web/.next/server/chunks/[root-of-the-server]__0e9p7em._.js.map +1 -0
  150. package/web/.next/server/chunks/{[root-of-the-server]__0.2exzi._.js → [root-of-the-server]__0gfvkg8._.js} +2 -2
  151. package/web/.next/server/chunks/{[root-of-the-server]__0ip_e1x._.js → [root-of-the-server]__0hcp97v._.js} +2 -2
  152. package/web/.next/server/chunks/{[root-of-the-server]__09118p2._.js → [root-of-the-server]__0iel39d._.js} +2 -2
  153. package/web/.next/server/chunks/[root-of-the-server]__0kc8ify._.js +12 -0
  154. package/web/.next/server/chunks/[root-of-the-server]__0kc8ify._.js.map +1 -0
  155. package/web/.next/server/chunks/[root-of-the-server]__0r5uk_8._.js +9 -0
  156. package/web/.next/server/chunks/[root-of-the-server]__0r5uk_8._.js.map +1 -0
  157. package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
  158. package/web/.next/server/chunks/{[root-of-the-server]__04jjtl_._.js → [root-of-the-server]__0u1jyv9._.js} +2 -2
  159. package/web/.next/server/chunks/{[root-of-the-server]__07suer1._.js → [root-of-the-server]__0zu_byw._.js} +2 -2
  160. package/web/.next/server/chunks/[root-of-the-server]__13e2_kk._.js +18 -0
  161. package/web/.next/server/chunks/[root-of-the-server]__13e2_kk._.js.map +1 -0
  162. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js +1 -1
  163. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js +1 -1
  165. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js.map +1 -1
  166. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js +1 -1
  167. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
  169. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
  171. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
  173. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
  175. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/[root-of-the-server]__04nnbmc._.js +3 -0
  177. package/web/.next/server/chunks/ssr/[root-of-the-server]__04nnbmc._.js.map +1 -0
  178. package/web/.next/server/chunks/ssr/[root-of-the-server]__07740t6._.js +3 -0
  179. package/web/.next/server/chunks/ssr/[root-of-the-server]__07740t6._.js.map +1 -0
  180. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l~puw4._.js +3 -0
  181. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l~puw4._.js.map +1 -0
  182. package/web/.next/server/chunks/ssr/[root-of-the-server]__0o3qggc._.js +1 -1
  183. package/web/.next/server/chunks/ssr/[root-of-the-server]__0o3qggc._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0qh.wn.._.js → [root-of-the-server]__0q3-gz.._.js} +2 -2
  185. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
  186. package/web/.next/server/chunks/ssr/[root-of-the-server]__0vwjc_m._.js +3 -0
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__0vwjc_m._.js.map +1 -0
  188. package/web/.next/server/chunks/ssr/{[root-of-the-server]__12g8h3_._.js → [root-of-the-server]__0w4__yd._.js} +3 -3
  189. package/web/.next/server/chunks/ssr/_01mq~sm._.js +1 -1
  190. package/web/.next/server/chunks/ssr/_01mq~sm._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
  192. package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
  193. package/web/.next/server/chunks/ssr/{_09di2m~._.js → _04rrcmm._.js} +2 -2
  194. package/web/.next/server/chunks/ssr/{_09di2m~._.js.map → _04rrcmm._.js.map} +1 -1
  195. package/web/.next/server/chunks/ssr/{_12104w0._.js → _0c497sr._.js} +2 -2
  196. package/web/.next/server/chunks/ssr/{_12104w0._.js.map → _0c497sr._.js.map} +1 -1
  197. package/web/.next/server/chunks/ssr/{_0r~xv6k._.js → _0c741v_._.js} +2 -2
  198. package/web/.next/server/chunks/ssr/{_0r~xv6k._.js.map → _0c741v_._.js.map} +1 -1
  199. package/web/.next/server/chunks/ssr/_0jpbsh_._.js +1 -1
  200. package/web/.next/server/chunks/ssr/_0jpbsh_._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
  202. package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
  204. package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
  205. package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
  206. package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/_109n-y4._.js +1 -1
  208. package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js +1 -1
  209. package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js.map +1 -1
  210. package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js +1 -1
  211. package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js.map +1 -1
  212. package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js +2 -2
  213. package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js.map +1 -1
  214. package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js +1 -1
  215. package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js.map +1 -1
  216. package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js +1 -1
  217. package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js +2 -2
  219. package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js +1 -1
  221. package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js.map +1 -1
  222. package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js +1 -1
  223. package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js.map +1 -1
  224. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js +1 -1
  225. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js +1 -1
  227. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js.map +1 -1
  228. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js +1 -1
  229. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js.map +1 -1
  230. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +3 -0
  231. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_load-settings_ts_0b8f3pf._.js +1 -1
  233. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
  234. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js.map +1 -1
  235. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
  236. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
  237. package/web/.next/server/middleware-build-manifest.js +3 -3
  238. package/web/.next/server/pages/500.html +1 -1
  239. package/web/.next/server/server-reference-manifest.js +1 -1
  240. package/web/.next/server/server-reference-manifest.json +49 -49
  241. package/web/.next/static/chunks/{0rhoh5o1y7grf.js → 0-fy~80ui.5os.js} +1 -1
  242. package/web/.next/static/chunks/{13ryk8qc9y3qu.js → 039ic1ygq-to3.js} +1 -1
  243. package/web/.next/static/chunks/{00uywouqbytc0.js → 04xk1iouwcfcq.js} +3 -3
  244. package/web/.next/static/chunks/{0b_anwzlzr9p7.js → 07a4jt64wdipb.js} +1 -1
  245. package/web/.next/static/chunks/{0tutcr7trd_7d.js → 07gx-h_y91lay.js} +2 -2
  246. package/web/.next/static/chunks/{01hf_nf2ge.tn.js → 0_imq4rg3q.fe.js} +2 -2
  247. package/web/.next/static/chunks/{0ntps8p7wo1re.js → 0c_bi0dck80dt.js} +1 -1
  248. package/web/.next/static/chunks/{0fmbl3o08a~-h.js → 0ex35-_jtxyjc.js} +1 -1
  249. package/web/.next/static/chunks/{0rfap2l5xz_-p.js → 0i084mozx131g.js} +1 -1
  250. package/web/.next/static/chunks/0k~55i.ofbdeb.js +1 -0
  251. package/web/.next/static/chunks/{0sywjtf8m0_fb.js → 0oq-cvtg8rjjp.js} +1 -1
  252. package/web/.next/static/chunks/{16jcg65-2mxc..js → 0t_6hx6ul7umb.js} +1 -1
  253. package/web/.next/static/chunks/{0b01fd0lkhnzf.js → 0whez3wju~9ok.js} +1 -1
  254. package/web/.next/server/chunks/[root-of-the-server]__0-3b27b._.js +0 -9
  255. package/web/.next/server/chunks/[root-of-the-server]__0-3b27b._.js.map +0 -1
  256. package/web/.next/server/chunks/[root-of-the-server]__0_6fhza._.js +0 -9
  257. package/web/.next/server/chunks/[root-of-the-server]__0esdmru._.js +0 -12
  258. package/web/.next/server/chunks/[root-of-the-server]__0esdmru._.js.map +0 -1
  259. package/web/.next/server/chunks/[root-of-the-server]__0l1p8bx._.js +0 -3
  260. package/web/.next/server/chunks/[root-of-the-server]__0l1p8bx._.js.map +0 -1
  261. package/web/.next/server/chunks/[root-of-the-server]__0p~owgt._.js +0 -18
  262. package/web/.next/server/chunks/[root-of-the-server]__0p~owgt._.js.map +0 -1
  263. package/web/.next/server/chunks/[root-of-the-server]__0rru~m.._.js +0 -3
  264. package/web/.next/server/chunks/[root-of-the-server]__0rru~m.._.js.map +0 -1
  265. package/web/.next/server/chunks/ssr/[root-of-the-server]__045sv4b._.js +0 -3
  266. package/web/.next/server/chunks/ssr/[root-of-the-server]__045sv4b._.js.map +0 -1
  267. package/web/.next/server/chunks/ssr/[root-of-the-server]__0d_0_fp._.js +0 -3
  268. package/web/.next/server/chunks/ssr/[root-of-the-server]__0d_0_fp._.js.map +0 -1
  269. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l4d7e.._.js +0 -3
  270. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l4d7e.._.js.map +0 -1
  271. package/web/.next/server/chunks/ssr/[root-of-the-server]__0r32z03._.js +0 -3
  272. package/web/.next/server/chunks/ssr/[root-of-the-server]__0r32z03._.js.map +0 -1
  273. package/web/.next/static/chunks/121l3o3vd~hvn.js +0 -1
  274. /package/web/.next/server/chunks/{[root-of-the-server]__02xmnal._.js.map → [root-of-the-server]__08cpfre._.js.map} +0 -0
  275. /package/web/.next/server/chunks/{[root-of-the-server]__0.2exzi._.js.map → [root-of-the-server]__0gfvkg8._.js.map} +0 -0
  276. /package/web/.next/server/chunks/{[root-of-the-server]__0ip_e1x._.js.map → [root-of-the-server]__0hcp97v._.js.map} +0 -0
  277. /package/web/.next/server/chunks/{[root-of-the-server]__09118p2._.js.map → [root-of-the-server]__0iel39d._.js.map} +0 -0
  278. /package/web/.next/server/chunks/{[root-of-the-server]__04jjtl_._.js.map → [root-of-the-server]__0u1jyv9._.js.map} +0 -0
  279. /package/web/.next/server/chunks/{[root-of-the-server]__07suer1._.js.map → [root-of-the-server]__0zu_byw._.js.map} +0 -0
  280. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__0qh.wn.._.js.map → [root-of-the-server]__0q3-gz.._.js.map} +0 -0
  281. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__12g8h3_._.js.map → [root-of-the-server]__0w4__yd._.js.map} +0 -0
  282. /package/web/.next/static/{21GZVGanhwKlq9p5dtTCB → ynyh_sSxbFA995FRvBUxs}/_buildManifest.js +0 -0
  283. /package/web/.next/static/{21GZVGanhwKlq9p5dtTCB → ynyh_sSxbFA995FRvBUxs}/_clientMiddlewareManifest.js +0 -0
  284. /package/web/.next/static/{21GZVGanhwKlq9p5dtTCB → ynyh_sSxbFA995FRvBUxs}/_ssgManifest.js +0 -0
@@ -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)\n git(repositoryPath, ['diff', '--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 {getAllAgentModels as '00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '607d27ea5d212b8c03d6b47947a6b15a19782e2a95'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '402dc759d6b9f6ac4d0286821d233beb7586bfd6a1'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '007430c6e44658511533da6fc18df6a10a77d8ca2f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '408951cdf9d60d3b3fcefa97ab36845c975e13a4e4'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '402bfda1e782b375ba1e7b4350dcb2411f747e7759'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40f3651a25e60f770e01fc60830b4911e2491df322'} from 'ACTIONS_MODULE9'\nexport {openIde as '40f3fde3affce8285dca5f685141bda496b2e45e0c'} from 'ACTIONS_MODULE10'\nexport {openShell as '4020eb6cd133a6c3dfd8275d14cd43e83d47a93de2'} from 'ACTIONS_MODULE11'\nexport {openFolder as '401ae5ca5ec169940e604f0271d5b3d0051fb26ffb'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '4050fb410229d1171b522d034c23053da254577270'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '4046e707d870b26bda43482676a885acbc5efb7687'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '00ea2e4aeb96147be0df27de0fb0811dcd46d7b284'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '0095abc4000335aa7827a56915d9196e945df0ab50'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00d00bca5810b627fd7f843fa04a97b6756eac2112'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40264230f863970e48854876df9f3fc11a8bf79378'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '409e7f6d9000f7ab91dd4401f2543b2147adb23f81'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78e46dbafd792b86405e361f7de33fab8345767ddd'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40a1f322bacc7e0c123d20aab8420e1748e5b64122'} from 'ACTIONS_MODULE21'\nexport {startFeature as '402089d3e112c6b2d2afc8c751dbc87755549d0eae'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '40272f295c9d08be7d27e530f118d68eec736ff09d'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '402537786e22ad05934fa43a551ed5b45acf5ff3c0'} from 'ACTIONS_MODULE24'\nexport {addRepository as '4044ad52bb92a547ac306d28c714498429d7ad0e22'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '404720e2231380d52c29929a6a219b7cc885ea0502'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60ad77c4518b2b9e558bbeec2bd6f655901779956f'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"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)\n git(repositoryPath, ['diff', '--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 {getAllAgentModels as '00673293d55e3d5c2321b617280b92c924b9c274ef'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '609be691f502322cf39cd20fd3d57dc07e8f0fb0a3'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00749653789364ef64460b4cd9a8e87d8864d12fc5'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c992eef9eeddd4305120d6c18763fdf82131e265'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00b467d9fd0fce7099e8b248187d7a68abab9c5ea5'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40b828bf45ef188283d9a89163d392dfbb46325a07'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '4072874e5fb8b3baba18dc19335d0abd9e51cc46c9'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '403dcf9658fd4554fd78615a972d2dcd376a65c0f5'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4095d29929fbcf0399b2f887e72da80c9a493c2daa'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40e215e3d1fc214b574bc0a2abb1fe319f6107ad02'} from 'ACTIONS_MODULE9'\nexport {openIde as '4007721bb168054f860a3df6cd060e0f3807aad0b7'} from 'ACTIONS_MODULE10'\nexport {openShell as '4004781548c34747283fe284c8d195ca487357e06e'} from 'ACTIONS_MODULE11'\nexport {openFolder as '4079ba07e5d8c86c4880360723f3c69e3f51f09301'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '40056e63d366d69696c57d7b5a4664d89f6b096689'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '402204882070179404ea9fa5e8df27c20e3b047b7b'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '004c1cd5bd750d92e24559b76d2d8a527b9fcb81f2'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '008bb64e62c8da45930ed722f946b39495438d9fe4'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '002809c4bbafc76cdc68bbb45f0e98f2c4f4a2c326'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '405c0161a824d7c6bfb099b9a201402629f9a809f4'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40a85456a342184720e7bd43147ef6d61ed80fe86a'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '7830a0050246cf0a7c64eb408158d03b581fa9fd2d'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40cc33d9eef0ed0ff39c963fb96616983a83d163c9'} from 'ACTIONS_MODULE21'\nexport {startFeature as '409a12726d14b0171bed27175fc895f1737e25a59f'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '409ca41fe22f43beef5f6007804d4ea4af1c742d6e'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '401724219fbd15d0044167e2ceadcb426a1b88b6f1'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40eabff44164a320ffdbb4d78762d986a3a08e9cb3'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '4094b8bc3c9b9c623df2845c71dc8335b7bc03f8dc'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60e1c42bf74f980785da4aa85327ddfae0b5d9bc68'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- module.exports=[21447,19720,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(){let a=(0,c.resolve)("LoadSettingsUseCase"),{workflow:b}=await a.execute();return{approvalGates:{allowPrd:b.approvalGateDefaults.allowPrd,allowPlan:b.approvalGateDefaults.allowPlan,allowMerge:b.approvalGateDefaults.allowMerge},push:b.approvalGateDefaults.pushOnImplementationComplete,openPr:b.openPrOnImplementationComplete,ciWatchEnabled:b.ciWatchEnabled,enableEvidence:b.enableEvidence,commitEvidence:b.commitEvidence,fast:b.defaultFastMode}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"003ab86bf75e7c3d4253f0673197688f673df5c8d7",null),a.s(["getWorkflowDefaults",0,e],21447);let f=new Set(["ADMIN","MAINTAIN","WRITE"]);async function g(a){try{let b=(0,c.resolve)("IGitHubRepositoryService"),d=await b.getViewerPermission(a);return{canPushDirectly:f.has(d)}}catch{return{canPushDirectly:!1}}}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"4039b04ad46b9f7fcf1d1d6944ceb81f67b3e99322",null),a.s(["getViewerPermission",0,g],19720)},77605,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){let{description:b,repositoryPath:d,attachments:e,sessionId:f,approvalGates:g,push:h,openPr:i,parentId:j,fast:k,pending:l,forkAndPr:m,commitSpecs:n,ciWatchEnabled:o,enableEvidence:p,commitEvidence:q,agentType:r,model:s,rebaseBeforeBranch:t}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let u=function(a,b){if(!b||0===b.length)return a;let c=b.map(a=>a.notes?.trim()?`@${a.path} [Note: ${a.notes.trim()}]`:`@${a.path}`).join(" ");return`${a}
1
+ module.exports=[21447,19720,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(){let a=(0,c.resolve)("LoadSettingsUseCase"),{workflow:b}=await a.execute();return{approvalGates:{allowPrd:b.approvalGateDefaults.allowPrd,allowPlan:b.approvalGateDefaults.allowPlan,allowMerge:b.approvalGateDefaults.allowMerge},push:b.approvalGateDefaults.pushOnImplementationComplete,openPr:b.openPrOnImplementationComplete,ciWatchEnabled:b.ciWatchEnabled,enableEvidence:b.enableEvidence,commitEvidence:b.commitEvidence,fast:b.defaultFastMode}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"0077ff8e3caff3c6fabcad2f6bff8628109175a216",null),a.s(["getWorkflowDefaults",0,e],21447);let f=new Set(["ADMIN","MAINTAIN","WRITE"]);async function g(a){try{let b=(0,c.resolve)("IGitHubRepositoryService"),d=await b.getViewerPermission(a);return{canPushDirectly:f.has(d)}}catch{return{canPushDirectly:!1}}}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"4000c3d622a047ce5ff8274ebf92673619f27fcf4d",null),a.s(["getViewerPermission",0,g],19720)},77605,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){let{description:b,repositoryPath:d,attachments:e,sessionId:f,approvalGates:g,push:h,openPr:i,parentId:j,fast:k,pending:l,forkAndPr:m,commitSpecs:n,ciWatchEnabled:o,enableEvidence:p,commitEvidence:q,agentType:r,model:s,rebaseBeforeBranch:t}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let u=function(a,b){if(!b||0===b.length)return a;let c=b.map(a=>a.notes?.trim()?`@${a.path} [Note: ${a.notes.trim()}]`:`@${a.path}`).join(" ");return`${a}
2
2
 
3
- ${c}`}(b,e),v={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:g}=await a.createRecord({userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},description:b,...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...null!=t?{rebaseBeforeBranch:t}:{}});return a.initializeAndSpawn(e,{userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...f?{sessionId:f}:{},...null!=t?{rebaseBeforeBranch:t}:{}},g).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"408f8dde9886e951ba8fdf4440a9f500717070d580",null),a.s(["createFeature",0,d],77605)},37644,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(21447),D=a.i(19720),E=a.i(77605);a.s([],67047),a.i(67047),a.s(["003ab86bf75e7c3d4253f0673197688f673df5c8d7",()=>C.getWorkflowDefaults,"007430c6e44658511533da6fc18df6a10a77d8ca2f",()=>f.listGitHubOrganizations,"0095abc4000335aa7827a56915d9196e945df0ab50",()=>r.checkAgentAuth,"00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05",()=>d.pickFolder,"00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3",()=>b.getAllAgentModels,"00d00bca5810b627fd7f843fa04a97b6756eac2112",()=>s.checkToolStatus,"00ea2e4aeb96147be0df27de0fb0811dcd46d7b284",()=>q.isAgentSetupComplete,"401ae5ca5ec169940e604f0271d5b3d0051fb26ffb",()=>n.openFolder,"402089d3e112c6b2d2afc8c751dbc87755549d0eae",()=>x.startFeature,"4020eb6cd133a6c3dfd8275d14cd43e83d47a93de2",()=>m.openShell,"402537786e22ad05934fa43a551ed5b45acf5ff3c0",()=>z.unarchiveFeature,"4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e",()=>i.deployRepository,"40264230f863970e48854876df9f3fc11a8bf79378",()=>t.getFeatureMetadata,"40272f295c9d08be7d27e530f118d68eec736ff09d",()=>y.stopFeature,"402bfda1e782b375ba1e7b4350dcb2411f747e7759",()=>j.stopDeployment,"402dc759d6b9f6ac4d0286821d233beb7586bfd6a1",()=>e.listGitHubRepositories,"4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066",()=>h.deployFeature,"4039b04ad46b9f7fcf1d1d6944ceb81f67b3e99322",()=>D.getViewerPermission,"4044ad52bb92a547ac306d28c714498429d7ad0e22",()=>A.addRepository,"4046e707d870b26bda43482676a885acbc5efb7687",()=>p.getDeploymentLogs,"404720e2231380d52c29929a6a219b7cc885ea0502",()=>B.deleteRepository,"4050fb410229d1171b522d034c23053da254577270",()=>o.syncRepository,"408951cdf9d60d3b3fcefa97ab36845c975e13a4e4",()=>g.importGitHubRepository,"408f8dde9886e951ba8fdf4440a9f500717070d580",()=>E.createFeature,"409e7f6d9000f7ab91dd4401f2543b2147adb23f81",()=>u.archiveFeature,"40a1f322bacc7e0c123d20aab8420e1748e5b64122",()=>w.resumeFeature,"40f3651a25e60f770e01fc60830b4911e2491df322",()=>k.getDeploymentStatus,"40f3fde3affce8285dca5f685141bda496b2e45e0c",()=>l.openIde,"607d27ea5d212b8c03d6b47947a6b15a19782e2a95",()=>c.updateAgentAndModel,"78e46dbafd792b86405e361f7de33fab8345767ddd",()=>v.deleteFeature],37644)}];
3
+ ${c}`}(b,e),v={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:g}=await a.createRecord({userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},description:b,...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...null!=t?{rebaseBeforeBranch:t}:{}});return a.initializeAndSpawn(e,{userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...f?{sessionId:f}:{},...null!=t?{rebaseBeforeBranch:t}:{}},g).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"4076d2cfd2387db790d42e50db2e3575cbd6f6fe71",null),a.s(["createFeature",0,d],77605)},37644,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(21447),D=a.i(19720),E=a.i(77605);a.s([],67047),a.i(67047),a.s(["002809c4bbafc76cdc68bbb45f0e98f2c4f4a2c326",()=>s.checkToolStatus,"004c1cd5bd750d92e24559b76d2d8a527b9fcb81f2",()=>q.isAgentSetupComplete,"00673293d55e3d5c2321b617280b92c924b9c274ef",()=>b.getAllAgentModels,"00749653789364ef64460b4cd9a8e87d8864d12fc5",()=>d.pickFolder,"0077ff8e3caff3c6fabcad2f6bff8628109175a216",()=>C.getWorkflowDefaults,"008bb64e62c8da45930ed722f946b39495438d9fe4",()=>r.checkAgentAuth,"00b467d9fd0fce7099e8b248187d7a68abab9c5ea5",()=>f.listGitHubOrganizations,"4000c3d622a047ce5ff8274ebf92673619f27fcf4d",()=>D.getViewerPermission,"4004781548c34747283fe284c8d195ca487357e06e",()=>m.openShell,"40056e63d366d69696c57d7b5a4664d89f6b096689",()=>o.syncRepository,"4007721bb168054f860a3df6cd060e0f3807aad0b7",()=>l.openIde,"401724219fbd15d0044167e2ceadcb426a1b88b6f1",()=>z.unarchiveFeature,"402204882070179404ea9fa5e8df27c20e3b047b7b",()=>p.getDeploymentLogs,"403dcf9658fd4554fd78615a972d2dcd376a65c0f5",()=>i.deployRepository,"405c0161a824d7c6bfb099b9a201402629f9a809f4",()=>t.getFeatureMetadata,"4072874e5fb8b3baba18dc19335d0abd9e51cc46c9",()=>h.deployFeature,"4076d2cfd2387db790d42e50db2e3575cbd6f6fe71",()=>E.createFeature,"4079ba07e5d8c86c4880360723f3c69e3f51f09301",()=>n.openFolder,"4094b8bc3c9b9c623df2845c71dc8335b7bc03f8dc",()=>B.deleteRepository,"4095d29929fbcf0399b2f887e72da80c9a493c2daa",()=>j.stopDeployment,"409a12726d14b0171bed27175fc895f1737e25a59f",()=>x.startFeature,"409ca41fe22f43beef5f6007804d4ea4af1c742d6e",()=>y.stopFeature,"40a85456a342184720e7bd43147ef6d61ed80fe86a",()=>u.archiveFeature,"40b828bf45ef188283d9a89163d392dfbb46325a07",()=>g.importGitHubRepository,"40c992eef9eeddd4305120d6c18763fdf82131e265",()=>e.listGitHubRepositories,"40cc33d9eef0ed0ff39c963fb96616983a83d163c9",()=>w.resumeFeature,"40e215e3d1fc214b574bc0a2abb1fe319f6107ad02",()=>k.getDeploymentStatus,"40eabff44164a320ffdbb4d78762d986a3a08e9cb3",()=>A.addRepository,"609be691f502322cf39cd20fd3d57dc07e8f0fb0a3",()=>c.updateAgentAndModel,"7830a0050246cf0a7c64eb408158d03b581fa9fd2d",()=>v.deleteFeature],37644)}];
4
4
 
5
5
  //# sourceMappingURL=src_presentation_web_0qys821._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/get-viewer-permission.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/app/actions/compose-user-input.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { LoadSettingsUseCase } from '@shipit-ai/core/application/use-cases/settings/load-settings.use-case';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n ciWatchEnabled: boolean;\n enableEvidence: boolean;\n commitEvidence: boolean;\n fast: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const loadSettings = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const settings = await loadSettings.execute();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n ciWatchEnabled: workflow.ciWatchEnabled,\n enableEvidence: workflow.enableEvidence,\n commitEvidence: workflow.commitEvidence,\n fast: workflow.defaultFastMode,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IGitHubRepositoryService } from '@shipit-ai/core/application/ports/output/services/github-repository-service.interface';\n\n/** Permissions that grant direct push access to a repository. */\nconst PUSH_PERMISSIONS = new Set(['ADMIN', 'MAINTAIN', 'WRITE']);\n\nexport async function getViewerPermission(repoPath: string): Promise<{ canPushDirectly: boolean }> {\n try {\n const service = resolve<IGitHubRepositoryService>('IGitHubRepositoryService');\n const permission = await service.getViewerPermission(repoPath);\n return { canPushDirectly: PUSH_PERMISSIONS.has(permission) };\n } catch {\n return { canPushDirectly: false };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shipit-ai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shipit-ai/core/domain/generated/output';\nimport { composeUserInput } from './compose-user-input';\n\ninterface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n sessionId?: string;\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n /** When true, skip SDLC phases and implement directly from the prompt. */\n fast?: boolean;\n /** When true, create the feature in pending state (no agent spawned). */\n pending?: boolean;\n /** Fork repo and create PR to upstream at merge time. */\n forkAndPr?: boolean;\n /** Commit specs/evidences into the repo (default: true, auto-false when forkAndPr). */\n commitSpecs?: boolean;\n /** Enable CI watch/fix loop after push. */\n ciWatchEnabled?: boolean;\n /** Enable evidence collection after implementation. */\n enableEvidence?: boolean;\n /** Commit evidence to PR. */\n commitEvidence?: boolean;\n /** Optional agent type override for this feature run */\n agentType?: string;\n /** Optional model identifier for this feature run */\n model?: string;\n /** Sync main from remote before creating the feature branch (default: true). */\n rebaseBeforeBranch?: boolean;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const {\n description,\n repositoryPath,\n attachments,\n sessionId,\n approvalGates,\n push,\n openPr,\n parentId,\n fast,\n pending,\n forkAndPr,\n commitSpecs,\n ciWatchEnabled,\n enableEvidence,\n commitEvidence,\n agentType,\n model,\n rebaseBeforeBranch,\n } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(sessionId ? { sessionId } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","interface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\nexport function composeUserInput(\n description: string,\n attachments: Attachment[] | undefined\n): string {\n if (!attachments || attachments.length === 0) {\n return description;\n }\n\n const refs = attachments\n .map((a) => (a.notes?.trim() ? `@${a.path} [Note: ${a.notes.trim()}]` : `@${a.path}`))\n .join(' ');\n return `${description}\\n\\n${refs}`;\n}\n","export {getAllAgentModels as '00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '607d27ea5d212b8c03d6b47947a6b15a19782e2a95'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '402dc759d6b9f6ac4d0286821d233beb7586bfd6a1'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '007430c6e44658511533da6fc18df6a10a77d8ca2f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '408951cdf9d60d3b3fcefa97ab36845c975e13a4e4'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '402bfda1e782b375ba1e7b4350dcb2411f747e7759'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40f3651a25e60f770e01fc60830b4911e2491df322'} from 'ACTIONS_MODULE9'\nexport {openIde as '40f3fde3affce8285dca5f685141bda496b2e45e0c'} from 'ACTIONS_MODULE10'\nexport {openShell as '4020eb6cd133a6c3dfd8275d14cd43e83d47a93de2'} from 'ACTIONS_MODULE11'\nexport {openFolder as '401ae5ca5ec169940e604f0271d5b3d0051fb26ffb'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '4050fb410229d1171b522d034c23053da254577270'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '4046e707d870b26bda43482676a885acbc5efb7687'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '00ea2e4aeb96147be0df27de0fb0811dcd46d7b284'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '0095abc4000335aa7827a56915d9196e945df0ab50'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00d00bca5810b627fd7f843fa04a97b6756eac2112'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40264230f863970e48854876df9f3fc11a8bf79378'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '409e7f6d9000f7ab91dd4401f2543b2147adb23f81'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78e46dbafd792b86405e361f7de33fab8345767ddd'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40a1f322bacc7e0c123d20aab8420e1748e5b64122'} from 'ACTIONS_MODULE21'\nexport {startFeature as '402089d3e112c6b2d2afc8c751dbc87755549d0eae'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '40272f295c9d08be7d27e530f118d68eec736ff09d'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '402537786e22ad05934fa43a551ed5b45acf5ff3c0'} from 'ACTIONS_MODULE24'\nexport {addRepository as '4044ad52bb92a547ac306d28c714498429d7ad0e22'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '404720e2231380d52c29929a6a219b7cc885ea0502'} from 'ACTIONS_MODULE26'\nexport {getWorkflowDefaults as '003ab86bf75e7c3d4253f0673197688f673df5c8d7'} from 'ACTIONS_MODULE27'\nexport {getViewerPermission as '4039b04ad46b9f7fcf1d1d6944ceb81f67b3e99322'} from 'ACTIONS_MODULE28'\nexport {createFeature as '408f8dde9886e951ba8fdf4440a9f500717070d580'} from 'ACTIONS_MODULE29'\nexport {getViewerPermission as '4039b04ad46b9f7fcf1d1d6944ceb81f67b3e99322'} from 'ACTIONS_MODULE28'\n"],"names":["getWorkflowDefaults","loadSettings","settings","execute","workflow","approvalGates","allowPrd","approvalGateDefaults","allowPlan","allowMerge","push","pushOnImplementationComplete","openPr","openPrOnImplementationComplete","ciWatchEnabled","enableEvidence","commitEvidence","fast","defaultFastMode","composeUserInput","description","attachments","length","refs","map","a","notes","trim","path","join"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/get-viewer-permission.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/app/actions/compose-user-input.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { LoadSettingsUseCase } from '@shipit-ai/core/application/use-cases/settings/load-settings.use-case';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n ciWatchEnabled: boolean;\n enableEvidence: boolean;\n commitEvidence: boolean;\n fast: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const loadSettings = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const settings = await loadSettings.execute();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n ciWatchEnabled: workflow.ciWatchEnabled,\n enableEvidence: workflow.enableEvidence,\n commitEvidence: workflow.commitEvidence,\n fast: workflow.defaultFastMode,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IGitHubRepositoryService } from '@shipit-ai/core/application/ports/output/services/github-repository-service.interface';\n\n/** Permissions that grant direct push access to a repository. */\nconst PUSH_PERMISSIONS = new Set(['ADMIN', 'MAINTAIN', 'WRITE']);\n\nexport async function getViewerPermission(repoPath: string): Promise<{ canPushDirectly: boolean }> {\n try {\n const service = resolve<IGitHubRepositoryService>('IGitHubRepositoryService');\n const permission = await service.getViewerPermission(repoPath);\n return { canPushDirectly: PUSH_PERMISSIONS.has(permission) };\n } catch {\n return { canPushDirectly: false };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shipit-ai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shipit-ai/core/domain/generated/output';\nimport { composeUserInput } from './compose-user-input';\n\ninterface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n sessionId?: string;\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n /** When true, skip SDLC phases and implement directly from the prompt. */\n fast?: boolean;\n /** When true, create the feature in pending state (no agent spawned). */\n pending?: boolean;\n /** Fork repo and create PR to upstream at merge time. */\n forkAndPr?: boolean;\n /** Commit specs/evidences into the repo (default: true, auto-false when forkAndPr). */\n commitSpecs?: boolean;\n /** Enable CI watch/fix loop after push. */\n ciWatchEnabled?: boolean;\n /** Enable evidence collection after implementation. */\n enableEvidence?: boolean;\n /** Commit evidence to PR. */\n commitEvidence?: boolean;\n /** Optional agent type override for this feature run */\n agentType?: string;\n /** Optional model identifier for this feature run */\n model?: string;\n /** Sync main from remote before creating the feature branch (default: true). */\n rebaseBeforeBranch?: boolean;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const {\n description,\n repositoryPath,\n attachments,\n sessionId,\n approvalGates,\n push,\n openPr,\n parentId,\n fast,\n pending,\n forkAndPr,\n commitSpecs,\n ciWatchEnabled,\n enableEvidence,\n commitEvidence,\n agentType,\n model,\n rebaseBeforeBranch,\n } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(sessionId ? { sessionId } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","interface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\nexport function composeUserInput(\n description: string,\n attachments: Attachment[] | undefined\n): string {\n if (!attachments || attachments.length === 0) {\n return description;\n }\n\n const refs = attachments\n .map((a) => (a.notes?.trim() ? `@${a.path} [Note: ${a.notes.trim()}]` : `@${a.path}`))\n .join(' ');\n return `${description}\\n\\n${refs}`;\n}\n","export {getAllAgentModels as '00673293d55e3d5c2321b617280b92c924b9c274ef'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '609be691f502322cf39cd20fd3d57dc07e8f0fb0a3'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00749653789364ef64460b4cd9a8e87d8864d12fc5'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c992eef9eeddd4305120d6c18763fdf82131e265'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00b467d9fd0fce7099e8b248187d7a68abab9c5ea5'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40b828bf45ef188283d9a89163d392dfbb46325a07'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '4072874e5fb8b3baba18dc19335d0abd9e51cc46c9'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '403dcf9658fd4554fd78615a972d2dcd376a65c0f5'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4095d29929fbcf0399b2f887e72da80c9a493c2daa'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40e215e3d1fc214b574bc0a2abb1fe319f6107ad02'} from 'ACTIONS_MODULE9'\nexport {openIde as '4007721bb168054f860a3df6cd060e0f3807aad0b7'} from 'ACTIONS_MODULE10'\nexport {openShell as '4004781548c34747283fe284c8d195ca487357e06e'} from 'ACTIONS_MODULE11'\nexport {openFolder as '4079ba07e5d8c86c4880360723f3c69e3f51f09301'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '40056e63d366d69696c57d7b5a4664d89f6b096689'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '402204882070179404ea9fa5e8df27c20e3b047b7b'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '004c1cd5bd750d92e24559b76d2d8a527b9fcb81f2'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '008bb64e62c8da45930ed722f946b39495438d9fe4'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '002809c4bbafc76cdc68bbb45f0e98f2c4f4a2c326'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '405c0161a824d7c6bfb099b9a201402629f9a809f4'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40a85456a342184720e7bd43147ef6d61ed80fe86a'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '7830a0050246cf0a7c64eb408158d03b581fa9fd2d'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40cc33d9eef0ed0ff39c963fb96616983a83d163c9'} from 'ACTIONS_MODULE21'\nexport {startFeature as '409a12726d14b0171bed27175fc895f1737e25a59f'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '409ca41fe22f43beef5f6007804d4ea4af1c742d6e'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '401724219fbd15d0044167e2ceadcb426a1b88b6f1'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40eabff44164a320ffdbb4d78762d986a3a08e9cb3'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '4094b8bc3c9b9c623df2845c71dc8335b7bc03f8dc'} from 'ACTIONS_MODULE26'\nexport {getWorkflowDefaults as '0077ff8e3caff3c6fabcad2f6bff8628109175a216'} from 'ACTIONS_MODULE27'\nexport {getViewerPermission as '4000c3d622a047ce5ff8274ebf92673619f27fcf4d'} from 'ACTIONS_MODULE28'\nexport {createFeature as '4076d2cfd2387db790d42e50db2e3575cbd6f6fe71'} from 'ACTIONS_MODULE29'\nexport {getViewerPermission as '4000c3d622a047ce5ff8274ebf92673619f27fcf4d'} from 'ACTIONS_MODULE28'\n"],"names":["getWorkflowDefaults","loadSettings","settings","execute","workflow","approvalGates","allowPrd","approvalGateDefaults","allowPlan","allowMerge","push","pushOnImplementationComplete","openPr","openPrOnImplementationComplete","ciWatchEnabled","enableEvidence","commitEvidence","fast","defaultFastMode","composeUserInput","description","attachments","length","refs","map","a","notes","trim","path","join"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[94691,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"4046e707d870b26bda43482676a885acbc5efb7687",null),a.s(["getDeploymentLogs",0,d])},33841,46646,68670,85321,a=>{"use strict";var b=a.i(2211),c=a.i(2157),d=a.i(96380);a.i(1442);let e=()=>void 0;function f(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):e,debug:b?(...b)=>console.debug(a,...b):e,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var g=a.i(29918),h=a.i(81719),i=a.i(50227);function j(a){try{let b=(0,c.realpathSync)((0,i.resolve)(a)).replace(/\\/g,"/"),d=(0,c.realpathSync)((0,i.resolve)("/home/runner/work/shipit/shipit/src/presentation/web")).replace(/\\/g,"/");return b===d}catch{return!1}}var k=a.i(50961);let l=f("[deployFeature]");async function m(a){if(l.info(`called — featureId="${a}"`),!a?.trim())return l.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,d.resolve)("IFeatureRepository"),e=await b.findById(a);if(!e)return l.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};l.info(`feature found — repositoryPath="${e.repositoryPath}", branch="${e.branch}"`);let f=(0,g.computeWorktreePath)(e.repositoryPath,e.branch);if(l.info(`computed worktreePath="${f}"`),!(0,c.existsSync)(f))return l.warn(`worktree path does not exist on disk: "${f}"`),{success:!1,error:`Worktree path does not exist: ${f}`};if(j(e.repositoryPath))return l.warn("rejected — feature belongs to the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for features of the repository ShipIT is running from"};return l.info("worktree path exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,f,"feature"),l.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return l.error(`error: ${a}`,b),{success:!1,error:a}}}(0,k.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066",null),a.s(["deployFeature",0,m],33841);let n=f("[deployRepository]");async function o(a){if(n.info(`called — repositoryPath="${a}"`),!a||!(0,i.isAbsolute)(a))return n.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,c.existsSync)(a))return n.warn(`directory does not exist: "${a}"`),{success:!1,error:`Directory does not exist: ${a}`};if(j(a))return n.warn("rejected — target is the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for the repository ShipIT is running from"};return n.info("directory exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,a,"repository"),n.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return n.error(`error: ${a}`,b),{success:!1,error:a}}}async function p(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,d.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function q(a){return a?.trim()?(0,d.resolve)("IDeploymentService").getStatus(a):null}(0,k.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e",null),a.s(["deployRepository",0,o],46646),(0,k.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"402bfda1e782b375ba1e7b4350dcb2411f747e7759",null),a.s(["stopDeployment",0,p],68670),(0,k.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40f3651a25e60f770e01fc60830b4911e2491df322",null),a.s(["getDeploymentStatus",0,q],85321)},14937,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(94691),i=a.i(33841),j=a.i(46646),k=a.i(68670),l=a.i(85321);a.s([],96302),a.i(96302),a.s(["007430c6e44658511533da6fc18df6a10a77d8ca2f",()=>f.listGitHubOrganizations,"00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05",()=>d.pickFolder,"00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3",()=>b.getAllAgentModels,"4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e",()=>j.deployRepository,"402bfda1e782b375ba1e7b4350dcb2411f747e7759",()=>k.stopDeployment,"402dc759d6b9f6ac4d0286821d233beb7586bfd6a1",()=>e.listGitHubRepositories,"4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066",()=>i.deployFeature,"4046e707d870b26bda43482676a885acbc5efb7687",()=>h.getDeploymentLogs,"408951cdf9d60d3b3fcefa97ab36845c975e13a4e4",()=>g.importGitHubRepository,"40f3651a25e60f770e01fc60830b4911e2491df322",()=>l.getDeploymentStatus,"607d27ea5d212b8c03d6b47947a6b15a19782e2a95",()=>c.updateAgentAndModel],14937)}];
1
+ module.exports=[94691,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"402204882070179404ea9fa5e8df27c20e3b047b7b",null),a.s(["getDeploymentLogs",0,d])},33841,46646,68670,85321,a=>{"use strict";var b=a.i(2211),c=a.i(2157),d=a.i(96380);a.i(1442);let e=()=>void 0;function f(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):e,debug:b?(...b)=>console.debug(a,...b):e,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var g=a.i(29918),h=a.i(81719),i=a.i(50227);function j(a){try{let b=(0,c.realpathSync)((0,i.resolve)(a)).replace(/\\/g,"/"),d=(0,c.realpathSync)((0,i.resolve)("/home/runner/work/shipit/shipit/src/presentation/web")).replace(/\\/g,"/");return b===d}catch{return!1}}var k=a.i(50961);let l=f("[deployFeature]");async function m(a){if(l.info(`called — featureId="${a}"`),!a?.trim())return l.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,d.resolve)("IFeatureRepository"),e=await b.findById(a);if(!e)return l.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};l.info(`feature found — repositoryPath="${e.repositoryPath}", branch="${e.branch}"`);let f=(0,g.computeWorktreePath)(e.repositoryPath,e.branch);if(l.info(`computed worktreePath="${f}"`),!(0,c.existsSync)(f))return l.warn(`worktree path does not exist on disk: "${f}"`),{success:!1,error:`Worktree path does not exist: ${f}`};if(j(e.repositoryPath))return l.warn("rejected — feature belongs to the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for features of the repository ShipIT is running from"};return l.info("worktree path exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,f,"feature"),l.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return l.error(`error: ${a}`,b),{success:!1,error:a}}}(0,k.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"4072874e5fb8b3baba18dc19335d0abd9e51cc46c9",null),a.s(["deployFeature",0,m],33841);let n=f("[deployRepository]");async function o(a){let b;if(n.info(`called — repositoryPath="${a}"`),!a||!(0,i.isAbsolute)(a))return n.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{b=(0,c.realpathSync)(a)}catch{return n.warn(`directory does not exist: "${a}"`),{success:!1,error:"Directory does not exist"}}try{if(j(b))return n.warn("rejected — target is the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for the repository ShipIT is running from"};return n.info("directory exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(b,b,"repository"),n.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return n.error(`error: ${a}`,b),{success:!1,error:a}}}async function p(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,d.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function q(a){return a?.trim()?(0,d.resolve)("IDeploymentService").getStatus(a):null}(0,k.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"403dcf9658fd4554fd78615a972d2dcd376a65c0f5",null),a.s(["deployRepository",0,o],46646),(0,k.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"4095d29929fbcf0399b2f887e72da80c9a493c2daa",null),a.s(["stopDeployment",0,p],68670),(0,k.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40e215e3d1fc214b574bc0a2abb1fe319f6107ad02",null),a.s(["getDeploymentStatus",0,q],85321)},14937,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(94691),i=a.i(33841),j=a.i(46646),k=a.i(68670),l=a.i(85321);a.s([],96302),a.i(96302),a.s(["00673293d55e3d5c2321b617280b92c924b9c274ef",()=>b.getAllAgentModels,"00749653789364ef64460b4cd9a8e87d8864d12fc5",()=>d.pickFolder,"00b467d9fd0fce7099e8b248187d7a68abab9c5ea5",()=>f.listGitHubOrganizations,"402204882070179404ea9fa5e8df27c20e3b047b7b",()=>h.getDeploymentLogs,"403dcf9658fd4554fd78615a972d2dcd376a65c0f5",()=>j.deployRepository,"4072874e5fb8b3baba18dc19335d0abd9e51cc46c9",()=>i.deployFeature,"4095d29929fbcf0399b2f887e72da80c9a493c2daa",()=>k.stopDeployment,"40b828bf45ef188283d9a89163d392dfbb46325a07",()=>g.importGitHubRepository,"40c992eef9eeddd4305120d6c18763fdf82131e265",()=>e.listGitHubRepositories,"40e215e3d1fc214b574bc0a2abb1fe319f6107ad02",()=>l.getDeploymentStatus,"609be691f502322cf39cd20fd3d57dc07e8f0fb0a3",()=>c.updateAgentAndModel],14937)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_0q~dt0o._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-deployment-logs.ts","../../../../../../../src/presentation/web/app/actions/deploy-feature.ts","../../../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.ts","../../../../../../../src/presentation/web/lib/is-same-shipit-ai-instance.ts","../../../../../../../src/presentation/web/app/actions/deploy-repository.ts","../../../../../../../src/presentation/web/app/actions/stop-deployment.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-status.ts","../../../../../../../src/presentation/web/.next-internal/server/app/skills/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n LogEntry,\n} from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentLogs(targetId: string): Promise<LogEntry[] | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getLogs(targetId);\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger, computeWorktreePath } from '@/lib/core-utils';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shipit-ai/core/domain/generated/output';\nimport { isSameShipitAiInstance } from '@/lib/is-same-shipit-ai-instance';\n\nconst log = createDeploymentLogger('[deployFeature]');\n\nexport async function deployFeature(\n featureId: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — featureId=\"${featureId}\"`);\n\n if (!featureId?.trim()) {\n log.warn('rejected — featureId is empty');\n return { success: false, error: 'featureId is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n log.warn(`feature not found in repository: \"${featureId}\"`);\n return { success: false, error: `Feature not found: ${featureId}` };\n }\n\n log.info(\n `feature found — repositoryPath=\"${feature.repositoryPath}\", branch=\"${feature.branch}\"`\n );\n\n const worktreePath = computeWorktreePath(feature.repositoryPath, feature.branch);\n log.info(`computed worktreePath=\"${worktreePath}\"`);\n\n if (!existsSync(worktreePath)) {\n log.warn(`worktree path does not exist on disk: \"${worktreePath}\"`);\n return { success: false, error: `Worktree path does not exist: ${worktreePath}` };\n }\n\n if (isSameShipitAiInstance(feature.repositoryPath)) {\n log.warn('rejected — feature belongs to the running ShipIT instance');\n return {\n success: false,\n error: 'Cannot start a dev server for features of the repository ShipIT is running from',\n };\n }\n\n log.info('worktree path exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(featureId, worktreePath, 'feature');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy feature';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","/* eslint-disable no-console */\n\n/**\n * Debug-gated logger for deployment services.\n *\n * - `info` and `debug` only emit when `process.env.DEBUG` is set.\n * - `warn` and `error` always emit (they indicate real problems).\n */\n\nconst noop = () => undefined;\n\nexport function createDeploymentLogger(prefix: string) {\n const isDebug = !!process.env.DEBUG;\n\n return {\n info: isDebug ? (...args: unknown[]) => console.info(prefix, ...args) : noop,\n debug: isDebug ? (...args: unknown[]) => console.debug(prefix, ...args) : noop,\n warn: (...args: unknown[]) => console.warn(prefix, ...args),\n error: (...args: unknown[]) => console.error(prefix, ...args),\n };\n}\n","import { realpathSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\n/**\n * Check if a target path is the same directory (or a worktree of) the\n * currently running shipit-ai instance. Starting a dev server there would spawn\n * another shipit-ai instance that conflicts with the shared ~/.shipit-ai/data DB.\n */\nexport function isSameShipitAiInstance(targetPath: string): boolean {\n const instancePath = process.env.NEXT_PUBLIC_SHIPIT_AI_INSTANCE_PATH ?? process.cwd();\n\n try {\n const normalizedTarget = realpathSync(resolve(targetPath)).replace(/\\\\/g, '/');\n const normalizedInstance = realpathSync(resolve(instancePath)).replace(/\\\\/g, '/');\n return normalizedTarget === normalizedInstance;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { isAbsolute } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger } from '@/lib/core-utils';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shipit-ai/core/domain/generated/output';\nimport { isSameShipitAiInstance } from '@/lib/is-same-shipit-ai-instance';\n\nconst log = createDeploymentLogger('[deployRepository]');\n\nexport async function deployRepository(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — repositoryPath=\"${repositoryPath}\"`);\n\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n log.warn('rejected — not an absolute path');\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n try {\n if (!existsSync(repositoryPath)) {\n log.warn(`directory does not exist: \"${repositoryPath}\"`);\n return { success: false, error: `Directory does not exist: ${repositoryPath}` };\n }\n\n if (isSameShipitAiInstance(repositoryPath)) {\n log.warn('rejected — target is the running ShipIT instance');\n return {\n success: false,\n error: 'Cannot start a dev server for the repository ShipIT is running from',\n };\n }\n\n log.info('directory exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(repositoryPath, repositoryPath, 'repository');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy repository';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function stopDeployment(\n targetId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!targetId?.trim()) {\n return { success: false, error: 'targetId is required' };\n }\n\n try {\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n await deploymentService.stop(targetId);\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to stop deployment';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n DeploymentStatus,\n} from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentStatus(targetId: string): Promise<DeploymentStatus | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getStatus(targetId);\n}\n","export {getAllAgentModels as '00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '607d27ea5d212b8c03d6b47947a6b15a19782e2a95'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '402dc759d6b9f6ac4d0286821d233beb7586bfd6a1'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '007430c6e44658511533da6fc18df6a10a77d8ca2f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '408951cdf9d60d3b3fcefa97ab36845c975e13a4e4'} from 'ACTIONS_MODULE5'\nexport {getDeploymentLogs as '4046e707d870b26bda43482676a885acbc5efb7687'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e'} from 'ACTIONS_MODULE8'\nexport {stopDeployment as '402bfda1e782b375ba1e7b4350dcb2411f747e7759'} from 'ACTIONS_MODULE9'\nexport {getDeploymentStatus as '40f3651a25e60f770e01fc60830b4911e2491df322'} from 'ACTIONS_MODULE10'\n"],"names":["getDeploymentLogs","targetId","trim","deploymentService","getLogs","noop","undefined","createDeploymentLogger","prefix","isDebug","process","env","DEBUG","info","args","console","debug","warn","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-deployment-logs.ts","../../../../../../../src/presentation/web/app/actions/deploy-feature.ts","../../../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.ts","../../../../../../../src/presentation/web/lib/is-same-shipit-ai-instance.ts","../../../../../../../src/presentation/web/app/actions/deploy-repository.ts","../../../../../../../src/presentation/web/app/actions/stop-deployment.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-status.ts","../../../../../../../src/presentation/web/.next-internal/server/app/skills/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n LogEntry,\n} from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentLogs(targetId: string): Promise<LogEntry[] | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getLogs(targetId);\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger, computeWorktreePath } from '@/lib/core-utils';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shipit-ai/core/domain/generated/output';\nimport { isSameShipitAiInstance } from '@/lib/is-same-shipit-ai-instance';\n\nconst log = createDeploymentLogger('[deployFeature]');\n\nexport async function deployFeature(\n featureId: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — featureId=\"${featureId}\"`);\n\n if (!featureId?.trim()) {\n log.warn('rejected — featureId is empty');\n return { success: false, error: 'featureId is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n log.warn(`feature not found in repository: \"${featureId}\"`);\n return { success: false, error: `Feature not found: ${featureId}` };\n }\n\n log.info(\n `feature found — repositoryPath=\"${feature.repositoryPath}\", branch=\"${feature.branch}\"`\n );\n\n const worktreePath = computeWorktreePath(feature.repositoryPath, feature.branch);\n log.info(`computed worktreePath=\"${worktreePath}\"`);\n\n if (!existsSync(worktreePath)) {\n log.warn(`worktree path does not exist on disk: \"${worktreePath}\"`);\n return { success: false, error: `Worktree path does not exist: ${worktreePath}` };\n }\n\n if (isSameShipitAiInstance(feature.repositoryPath)) {\n log.warn('rejected — feature belongs to the running ShipIT instance');\n return {\n success: false,\n error: 'Cannot start a dev server for features of the repository ShipIT is running from',\n };\n }\n\n log.info('worktree path exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(featureId, worktreePath, 'feature');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy feature';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","/* eslint-disable no-console */\n\n/**\n * Debug-gated logger for deployment services.\n *\n * - `info` and `debug` only emit when `process.env.DEBUG` is set.\n * - `warn` and `error` always emit (they indicate real problems).\n */\n\nconst noop = () => undefined;\n\nexport function createDeploymentLogger(prefix: string) {\n const isDebug = !!process.env.DEBUG;\n\n return {\n info: isDebug ? (...args: unknown[]) => console.info(prefix, ...args) : noop,\n debug: isDebug ? (...args: unknown[]) => console.debug(prefix, ...args) : noop,\n warn: (...args: unknown[]) => console.warn(prefix, ...args),\n error: (...args: unknown[]) => console.error(prefix, ...args),\n };\n}\n","import { realpathSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\n/**\n * Check if a target path is the same directory (or a worktree of) the\n * currently running shipit-ai instance. Starting a dev server there would spawn\n * another shipit-ai instance that conflicts with the shared ~/.shipit-ai/data DB.\n */\nexport function isSameShipitAiInstance(targetPath: string): boolean {\n const instancePath = process.env.NEXT_PUBLIC_SHIPIT_AI_INSTANCE_PATH ?? process.cwd();\n\n try {\n const normalizedTarget = realpathSync(resolve(targetPath)).replace(/\\\\/g, '/');\n const normalizedInstance = realpathSync(resolve(instancePath)).replace(/\\\\/g, '/');\n return normalizedTarget === normalizedInstance;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { realpathSync } from 'node:fs';\nimport { isAbsolute } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger } from '@/lib/core-utils';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shipit-ai/core/domain/generated/output';\nimport { isSameShipitAiInstance } from '@/lib/is-same-shipit-ai-instance';\n\nconst log = createDeploymentLogger('[deployRepository]');\n\nexport async function deployRepository(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — repositoryPath=\"${repositoryPath}\"`);\n\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n log.warn('rejected — not an absolute path');\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n // Resolve through realpath() up-front. Every subsequent use references\n // the symlink-resolved absolute path, not the raw user input. This is the\n // sanitizer CodeQL's js/path-injection analysis recognizes.\n let resolvedPath: string;\n try {\n resolvedPath = realpathSync(repositoryPath);\n } catch {\n log.warn(`directory does not exist: \"${repositoryPath}\"`);\n return { success: false, error: 'Directory does not exist' };\n }\n\n try {\n if (isSameShipitAiInstance(resolvedPath)) {\n log.warn('rejected — target is the running ShipIT instance');\n return {\n success: false,\n error: 'Cannot start a dev server for the repository ShipIT is running from',\n };\n }\n\n log.info('directory exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(resolvedPath, resolvedPath, 'repository');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy repository';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function stopDeployment(\n targetId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!targetId?.trim()) {\n return { success: false, error: 'targetId is required' };\n }\n\n try {\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n await deploymentService.stop(targetId);\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to stop deployment';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n DeploymentStatus,\n} from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentStatus(targetId: string): Promise<DeploymentStatus | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getStatus(targetId);\n}\n","export {getAllAgentModels as '00673293d55e3d5c2321b617280b92c924b9c274ef'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '609be691f502322cf39cd20fd3d57dc07e8f0fb0a3'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00749653789364ef64460b4cd9a8e87d8864d12fc5'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c992eef9eeddd4305120d6c18763fdf82131e265'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00b467d9fd0fce7099e8b248187d7a68abab9c5ea5'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40b828bf45ef188283d9a89163d392dfbb46325a07'} from 'ACTIONS_MODULE5'\nexport {getDeploymentLogs as '402204882070179404ea9fa5e8df27c20e3b047b7b'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '4072874e5fb8b3baba18dc19335d0abd9e51cc46c9'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '403dcf9658fd4554fd78615a972d2dcd376a65c0f5'} from 'ACTIONS_MODULE8'\nexport {stopDeployment as '4095d29929fbcf0399b2f887e72da80c9a493c2daa'} from 'ACTIONS_MODULE9'\nexport {getDeploymentStatus as '40e215e3d1fc214b574bc0a2abb1fe319f6107ad02'} from 'ACTIONS_MODULE10'\n"],"names":["getDeploymentLogs","targetId","trim","deploymentService","getLogs","noop","undefined","createDeploymentLogger","prefix","isDebug","process","env","DEBUG","info","args","console","debug","warn","error"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[94691,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"4046e707d870b26bda43482676a885acbc5efb7687",null),a.s(["getDeploymentLogs",0,d])},33841,46646,68670,85321,a=>{"use strict";var b=a.i(2211),c=a.i(2157),d=a.i(96380);a.i(1442);let e=()=>void 0;function f(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):e,debug:b?(...b)=>console.debug(a,...b):e,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var g=a.i(29918),h=a.i(81719),i=a.i(50227);function j(a){try{let b=(0,c.realpathSync)((0,i.resolve)(a)).replace(/\\/g,"/"),d=(0,c.realpathSync)((0,i.resolve)("/home/runner/work/shipit/shipit/src/presentation/web")).replace(/\\/g,"/");return b===d}catch{return!1}}var k=a.i(50961);let l=f("[deployFeature]");async function m(a){if(l.info(`called — featureId="${a}"`),!a?.trim())return l.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,d.resolve)("IFeatureRepository"),e=await b.findById(a);if(!e)return l.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};l.info(`feature found — repositoryPath="${e.repositoryPath}", branch="${e.branch}"`);let f=(0,g.computeWorktreePath)(e.repositoryPath,e.branch);if(l.info(`computed worktreePath="${f}"`),!(0,c.existsSync)(f))return l.warn(`worktree path does not exist on disk: "${f}"`),{success:!1,error:`Worktree path does not exist: ${f}`};if(j(e.repositoryPath))return l.warn("rejected — feature belongs to the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for features of the repository ShipIT is running from"};return l.info("worktree path exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,f,"feature"),l.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return l.error(`error: ${a}`,b),{success:!1,error:a}}}(0,k.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066",null),a.s(["deployFeature",0,m],33841);let n=f("[deployRepository]");async function o(a){if(n.info(`called — repositoryPath="${a}"`),!a||!(0,i.isAbsolute)(a))return n.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,c.existsSync)(a))return n.warn(`directory does not exist: "${a}"`),{success:!1,error:`Directory does not exist: ${a}`};if(j(a))return n.warn("rejected — target is the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for the repository ShipIT is running from"};return n.info("directory exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,a,"repository"),n.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return n.error(`error: ${a}`,b),{success:!1,error:a}}}async function p(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,d.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function q(a){return a?.trim()?(0,d.resolve)("IDeploymentService").getStatus(a):null}(0,k.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e",null),a.s(["deployRepository",0,o],46646),(0,k.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"402bfda1e782b375ba1e7b4350dcb2411f747e7759",null),a.s(["stopDeployment",0,p],68670),(0,k.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40f3651a25e60f770e01fc60830b4911e2491df322",null),a.s(["getDeploymentStatus",0,q],85321)},21171,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(94691),i=a.i(33841),j=a.i(46646),k=a.i(68670),l=a.i(85321);a.s([],22977),a.i(22977),a.s(["007430c6e44658511533da6fc18df6a10a77d8ca2f",()=>f.listGitHubOrganizations,"00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05",()=>d.pickFolder,"00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3",()=>b.getAllAgentModels,"4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e",()=>j.deployRepository,"402bfda1e782b375ba1e7b4350dcb2411f747e7759",()=>k.stopDeployment,"402dc759d6b9f6ac4d0286821d233beb7586bfd6a1",()=>e.listGitHubRepositories,"4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066",()=>i.deployFeature,"4046e707d870b26bda43482676a885acbc5efb7687",()=>h.getDeploymentLogs,"408951cdf9d60d3b3fcefa97ab36845c975e13a4e4",()=>g.importGitHubRepository,"40f3651a25e60f770e01fc60830b4911e2491df322",()=>l.getDeploymentStatus,"607d27ea5d212b8c03d6b47947a6b15a19782e2a95",()=>c.updateAgentAndModel],21171)}];
1
+ module.exports=[94691,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"402204882070179404ea9fa5e8df27c20e3b047b7b",null),a.s(["getDeploymentLogs",0,d])},33841,46646,68670,85321,a=>{"use strict";var b=a.i(2211),c=a.i(2157),d=a.i(96380);a.i(1442);let e=()=>void 0;function f(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):e,debug:b?(...b)=>console.debug(a,...b):e,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var g=a.i(29918),h=a.i(81719),i=a.i(50227);function j(a){try{let b=(0,c.realpathSync)((0,i.resolve)(a)).replace(/\\/g,"/"),d=(0,c.realpathSync)((0,i.resolve)("/home/runner/work/shipit/shipit/src/presentation/web")).replace(/\\/g,"/");return b===d}catch{return!1}}var k=a.i(50961);let l=f("[deployFeature]");async function m(a){if(l.info(`called — featureId="${a}"`),!a?.trim())return l.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,d.resolve)("IFeatureRepository"),e=await b.findById(a);if(!e)return l.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};l.info(`feature found — repositoryPath="${e.repositoryPath}", branch="${e.branch}"`);let f=(0,g.computeWorktreePath)(e.repositoryPath,e.branch);if(l.info(`computed worktreePath="${f}"`),!(0,c.existsSync)(f))return l.warn(`worktree path does not exist on disk: "${f}"`),{success:!1,error:`Worktree path does not exist: ${f}`};if(j(e.repositoryPath))return l.warn("rejected — feature belongs to the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for features of the repository ShipIT is running from"};return l.info("worktree path exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,f,"feature"),l.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return l.error(`error: ${a}`,b),{success:!1,error:a}}}(0,k.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"4072874e5fb8b3baba18dc19335d0abd9e51cc46c9",null),a.s(["deployFeature",0,m],33841);let n=f("[deployRepository]");async function o(a){let b;if(n.info(`called — repositoryPath="${a}"`),!a||!(0,i.isAbsolute)(a))return n.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{b=(0,c.realpathSync)(a)}catch{return n.warn(`directory does not exist: "${a}"`),{success:!1,error:"Directory does not exist"}}try{if(j(b))return n.warn("rejected — target is the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for the repository ShipIT is running from"};return n.info("directory exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(b,b,"repository"),n.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return n.error(`error: ${a}`,b),{success:!1,error:a}}}async function p(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,d.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function q(a){return a?.trim()?(0,d.resolve)("IDeploymentService").getStatus(a):null}(0,k.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"403dcf9658fd4554fd78615a972d2dcd376a65c0f5",null),a.s(["deployRepository",0,o],46646),(0,k.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"4095d29929fbcf0399b2f887e72da80c9a493c2daa",null),a.s(["stopDeployment",0,p],68670),(0,k.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40e215e3d1fc214b574bc0a2abb1fe319f6107ad02",null),a.s(["getDeploymentStatus",0,q],85321)},21171,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(94691),i=a.i(33841),j=a.i(46646),k=a.i(68670),l=a.i(85321);a.s([],22977),a.i(22977),a.s(["00673293d55e3d5c2321b617280b92c924b9c274ef",()=>b.getAllAgentModels,"00749653789364ef64460b4cd9a8e87d8864d12fc5",()=>d.pickFolder,"00b467d9fd0fce7099e8b248187d7a68abab9c5ea5",()=>f.listGitHubOrganizations,"402204882070179404ea9fa5e8df27c20e3b047b7b",()=>h.getDeploymentLogs,"403dcf9658fd4554fd78615a972d2dcd376a65c0f5",()=>j.deployRepository,"4072874e5fb8b3baba18dc19335d0abd9e51cc46c9",()=>i.deployFeature,"4095d29929fbcf0399b2f887e72da80c9a493c2daa",()=>k.stopDeployment,"40b828bf45ef188283d9a89163d392dfbb46325a07",()=>g.importGitHubRepository,"40c992eef9eeddd4305120d6c18763fdf82131e265",()=>e.listGitHubRepositories,"40e215e3d1fc214b574bc0a2abb1fe319f6107ad02",()=>l.getDeploymentStatus,"609be691f502322cf39cd20fd3d57dc07e8f0fb0a3",()=>c.updateAgentAndModel],21171)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_11jrkxt._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-deployment-logs.ts","../../../../../../../src/presentation/web/app/actions/deploy-feature.ts","../../../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.ts","../../../../../../../src/presentation/web/lib/is-same-shipit-ai-instance.ts","../../../../../../../src/presentation/web/app/actions/deploy-repository.ts","../../../../../../../src/presentation/web/app/actions/stop-deployment.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-status.ts","../../../../../../../src/presentation/web/.next-internal/server/app/tools/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n LogEntry,\n} from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentLogs(targetId: string): Promise<LogEntry[] | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getLogs(targetId);\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger, computeWorktreePath } from '@/lib/core-utils';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shipit-ai/core/domain/generated/output';\nimport { isSameShipitAiInstance } from '@/lib/is-same-shipit-ai-instance';\n\nconst log = createDeploymentLogger('[deployFeature]');\n\nexport async function deployFeature(\n featureId: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — featureId=\"${featureId}\"`);\n\n if (!featureId?.trim()) {\n log.warn('rejected — featureId is empty');\n return { success: false, error: 'featureId is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n log.warn(`feature not found in repository: \"${featureId}\"`);\n return { success: false, error: `Feature not found: ${featureId}` };\n }\n\n log.info(\n `feature found — repositoryPath=\"${feature.repositoryPath}\", branch=\"${feature.branch}\"`\n );\n\n const worktreePath = computeWorktreePath(feature.repositoryPath, feature.branch);\n log.info(`computed worktreePath=\"${worktreePath}\"`);\n\n if (!existsSync(worktreePath)) {\n log.warn(`worktree path does not exist on disk: \"${worktreePath}\"`);\n return { success: false, error: `Worktree path does not exist: ${worktreePath}` };\n }\n\n if (isSameShipitAiInstance(feature.repositoryPath)) {\n log.warn('rejected — feature belongs to the running ShipIT instance');\n return {\n success: false,\n error: 'Cannot start a dev server for features of the repository ShipIT is running from',\n };\n }\n\n log.info('worktree path exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(featureId, worktreePath, 'feature');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy feature';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","/* eslint-disable no-console */\n\n/**\n * Debug-gated logger for deployment services.\n *\n * - `info` and `debug` only emit when `process.env.DEBUG` is set.\n * - `warn` and `error` always emit (they indicate real problems).\n */\n\nconst noop = () => undefined;\n\nexport function createDeploymentLogger(prefix: string) {\n const isDebug = !!process.env.DEBUG;\n\n return {\n info: isDebug ? (...args: unknown[]) => console.info(prefix, ...args) : noop,\n debug: isDebug ? (...args: unknown[]) => console.debug(prefix, ...args) : noop,\n warn: (...args: unknown[]) => console.warn(prefix, ...args),\n error: (...args: unknown[]) => console.error(prefix, ...args),\n };\n}\n","import { realpathSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\n/**\n * Check if a target path is the same directory (or a worktree of) the\n * currently running shipit-ai instance. Starting a dev server there would spawn\n * another shipit-ai instance that conflicts with the shared ~/.shipit-ai/data DB.\n */\nexport function isSameShipitAiInstance(targetPath: string): boolean {\n const instancePath = process.env.NEXT_PUBLIC_SHIPIT_AI_INSTANCE_PATH ?? process.cwd();\n\n try {\n const normalizedTarget = realpathSync(resolve(targetPath)).replace(/\\\\/g, '/');\n const normalizedInstance = realpathSync(resolve(instancePath)).replace(/\\\\/g, '/');\n return normalizedTarget === normalizedInstance;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { isAbsolute } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger } from '@/lib/core-utils';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shipit-ai/core/domain/generated/output';\nimport { isSameShipitAiInstance } from '@/lib/is-same-shipit-ai-instance';\n\nconst log = createDeploymentLogger('[deployRepository]');\n\nexport async function deployRepository(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — repositoryPath=\"${repositoryPath}\"`);\n\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n log.warn('rejected — not an absolute path');\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n try {\n if (!existsSync(repositoryPath)) {\n log.warn(`directory does not exist: \"${repositoryPath}\"`);\n return { success: false, error: `Directory does not exist: ${repositoryPath}` };\n }\n\n if (isSameShipitAiInstance(repositoryPath)) {\n log.warn('rejected — target is the running ShipIT instance');\n return {\n success: false,\n error: 'Cannot start a dev server for the repository ShipIT is running from',\n };\n }\n\n log.info('directory exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(repositoryPath, repositoryPath, 'repository');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy repository';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function stopDeployment(\n targetId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!targetId?.trim()) {\n return { success: false, error: 'targetId is required' };\n }\n\n try {\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n await deploymentService.stop(targetId);\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to stop deployment';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n DeploymentStatus,\n} from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentStatus(targetId: string): Promise<DeploymentStatus | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getStatus(targetId);\n}\n","export {getAllAgentModels as '00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '607d27ea5d212b8c03d6b47947a6b15a19782e2a95'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '402dc759d6b9f6ac4d0286821d233beb7586bfd6a1'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '007430c6e44658511533da6fc18df6a10a77d8ca2f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '408951cdf9d60d3b3fcefa97ab36845c975e13a4e4'} from 'ACTIONS_MODULE5'\nexport {getDeploymentLogs as '4046e707d870b26bda43482676a885acbc5efb7687'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e'} from 'ACTIONS_MODULE8'\nexport {stopDeployment as '402bfda1e782b375ba1e7b4350dcb2411f747e7759'} from 'ACTIONS_MODULE9'\nexport {getDeploymentStatus as '40f3651a25e60f770e01fc60830b4911e2491df322'} from 'ACTIONS_MODULE10'\n"],"names":["getDeploymentLogs","targetId","trim","deploymentService","getLogs","noop","undefined","createDeploymentLogger","prefix","isDebug","process","env","DEBUG","info","args","console","debug","warn","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-deployment-logs.ts","../../../../../../../src/presentation/web/app/actions/deploy-feature.ts","../../../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.ts","../../../../../../../src/presentation/web/lib/is-same-shipit-ai-instance.ts","../../../../../../../src/presentation/web/app/actions/deploy-repository.ts","../../../../../../../src/presentation/web/app/actions/stop-deployment.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-status.ts","../../../../../../../src/presentation/web/.next-internal/server/app/tools/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n LogEntry,\n} from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentLogs(targetId: string): Promise<LogEntry[] | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getLogs(targetId);\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger, computeWorktreePath } from '@/lib/core-utils';\nimport type { IFeatureRepository } from '@shipit-ai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shipit-ai/core/domain/generated/output';\nimport { isSameShipitAiInstance } from '@/lib/is-same-shipit-ai-instance';\n\nconst log = createDeploymentLogger('[deployFeature]');\n\nexport async function deployFeature(\n featureId: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — featureId=\"${featureId}\"`);\n\n if (!featureId?.trim()) {\n log.warn('rejected — featureId is empty');\n return { success: false, error: 'featureId is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n log.warn(`feature not found in repository: \"${featureId}\"`);\n return { success: false, error: `Feature not found: ${featureId}` };\n }\n\n log.info(\n `feature found — repositoryPath=\"${feature.repositoryPath}\", branch=\"${feature.branch}\"`\n );\n\n const worktreePath = computeWorktreePath(feature.repositoryPath, feature.branch);\n log.info(`computed worktreePath=\"${worktreePath}\"`);\n\n if (!existsSync(worktreePath)) {\n log.warn(`worktree path does not exist on disk: \"${worktreePath}\"`);\n return { success: false, error: `Worktree path does not exist: ${worktreePath}` };\n }\n\n if (isSameShipitAiInstance(feature.repositoryPath)) {\n log.warn('rejected — feature belongs to the running ShipIT instance');\n return {\n success: false,\n error: 'Cannot start a dev server for features of the repository ShipIT is running from',\n };\n }\n\n log.info('worktree path exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(featureId, worktreePath, 'feature');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy feature';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","/* eslint-disable no-console */\n\n/**\n * Debug-gated logger for deployment services.\n *\n * - `info` and `debug` only emit when `process.env.DEBUG` is set.\n * - `warn` and `error` always emit (they indicate real problems).\n */\n\nconst noop = () => undefined;\n\nexport function createDeploymentLogger(prefix: string) {\n const isDebug = !!process.env.DEBUG;\n\n return {\n info: isDebug ? (...args: unknown[]) => console.info(prefix, ...args) : noop,\n debug: isDebug ? (...args: unknown[]) => console.debug(prefix, ...args) : noop,\n warn: (...args: unknown[]) => console.warn(prefix, ...args),\n error: (...args: unknown[]) => console.error(prefix, ...args),\n };\n}\n","import { realpathSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\n/**\n * Check if a target path is the same directory (or a worktree of) the\n * currently running shipit-ai instance. Starting a dev server there would spawn\n * another shipit-ai instance that conflicts with the shared ~/.shipit-ai/data DB.\n */\nexport function isSameShipitAiInstance(targetPath: string): boolean {\n const instancePath = process.env.NEXT_PUBLIC_SHIPIT_AI_INSTANCE_PATH ?? process.cwd();\n\n try {\n const normalizedTarget = realpathSync(resolve(targetPath)).replace(/\\\\/g, '/');\n const normalizedInstance = realpathSync(resolve(instancePath)).replace(/\\\\/g, '/');\n return normalizedTarget === normalizedInstance;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { realpathSync } from 'node:fs';\nimport { isAbsolute } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger } from '@/lib/core-utils';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shipit-ai/core/domain/generated/output';\nimport { isSameShipitAiInstance } from '@/lib/is-same-shipit-ai-instance';\n\nconst log = createDeploymentLogger('[deployRepository]');\n\nexport async function deployRepository(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — repositoryPath=\"${repositoryPath}\"`);\n\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n log.warn('rejected — not an absolute path');\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n // Resolve through realpath() up-front. Every subsequent use references\n // the symlink-resolved absolute path, not the raw user input. This is the\n // sanitizer CodeQL's js/path-injection analysis recognizes.\n let resolvedPath: string;\n try {\n resolvedPath = realpathSync(repositoryPath);\n } catch {\n log.warn(`directory does not exist: \"${repositoryPath}\"`);\n return { success: false, error: 'Directory does not exist' };\n }\n\n try {\n if (isSameShipitAiInstance(resolvedPath)) {\n log.warn('rejected — target is the running ShipIT instance');\n return {\n success: false,\n error: 'Cannot start a dev server for the repository ShipIT is running from',\n };\n }\n\n log.info('directory exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(resolvedPath, resolvedPath, 'repository');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy repository';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IDeploymentService } from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function stopDeployment(\n targetId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!targetId?.trim()) {\n return { success: false, error: 'targetId is required' };\n }\n\n try {\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n await deploymentService.stop(targetId);\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to stop deployment';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n DeploymentStatus,\n} from '@shipit-ai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentStatus(targetId: string): Promise<DeploymentStatus | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getStatus(targetId);\n}\n","export {getAllAgentModels as '00673293d55e3d5c2321b617280b92c924b9c274ef'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '609be691f502322cf39cd20fd3d57dc07e8f0fb0a3'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00749653789364ef64460b4cd9a8e87d8864d12fc5'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c992eef9eeddd4305120d6c18763fdf82131e265'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00b467d9fd0fce7099e8b248187d7a68abab9c5ea5'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40b828bf45ef188283d9a89163d392dfbb46325a07'} from 'ACTIONS_MODULE5'\nexport {getDeploymentLogs as '402204882070179404ea9fa5e8df27c20e3b047b7b'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '4072874e5fb8b3baba18dc19335d0abd9e51cc46c9'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '403dcf9658fd4554fd78615a972d2dcd376a65c0f5'} from 'ACTIONS_MODULE8'\nexport {stopDeployment as '4095d29929fbcf0399b2f887e72da80c9a493c2daa'} from 'ACTIONS_MODULE9'\nexport {getDeploymentStatus as '40e215e3d1fc214b574bc0a2abb1fe319f6107ad02'} from 'ACTIONS_MODULE10'\n"],"names":["getDeploymentLogs","targetId","trim","deploymentService","getLogs","noop","undefined","createDeploymentLogger","prefix","isDebug","process","env","DEBUG","info","args","console","debug","warn","error"],"mappings":"uDAEA,EAAA,EAAA,CAAA,CAAA,OAMO,eAAeA,EAAkBC,CAAgB,SACtD,AAAKA,GAAUC,CAAX,MAIsB,AACnBC,CALgB,AAIG,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC7BC,OAAO,CAACH,GAJxB,IAKX,0CAPsBD,IAAAA,CAAAA,EAAAA,EAAAA,uBAAAA,EAAAA,EAAAA,6CAAAA,+FCNtB,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,MCKA,IAAMK,EAAO,IAAMC,OAEZ,SAASC,EAAuBC,CAAc,EACnD,IAAMC,EAAU,CAAC,CAACC,QAAQC,GAAG,CAACC,KAAK,CAEnC,MAAO,CACLC,KAAMJ,EAAU,CAAC,GAAGK,IAAoBC,QAAQF,IAAI,CAACL,KAAWM,GAAQT,EACxEW,MAAOP,EAAU,CAAC,GAAGK,IAAoBC,QAAQC,KAAK,CAACR,KAAWM,GAAQT,EAC1EY,KAAM,CAAC,GAAGH,IAAoBC,QAAQE,IAAI,CAACT,KAAWM,GACtDI,MAAO,CAAC,GAAGJ,IAAoBC,QAAQG,KAAK,CAACV,KAAWM,EAC1D,CACF,CDhBA,IAAA,EAAA,EAAA,CAAA,CAAA,OAGA,EAAA,EAAA,CAAA,CAAA,OENA,EAAA,EAAA,CAAA,CAAA,OAOO,SAAS,EAAuB,CAAkB,EAGvD,GAAI,CACF,IAAM,EAAmB,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,IAAa,OAAO,CAAC,MAAO,KACpE,EAAqB,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,CAAA,EAAA,EAAA,OAAA,AAAO,EAJ5B,AAI6B,yDAAe,EAJO,KAIA,CAAC,EAJO,GAAG,CAIH,KAC9E,OAAO,IAAqB,CAC9B,CAAE,KAAM,CACN,OAAO,CACT,CACF,kBFRA,IAAM,EAAM,EAAuB,mBAE5BN,eAAe,EACpB,CAAiB,EAIjB,GAFA,EAAI,IAAI,CAAC,CAAC,oBAAoB,EAAE,EAAU,CAAC,CAAC,EAExC,CAAC,GAAW,OAEd,CAFsB,MACtB,EAAI,IAAI,CAAC,iCACF,CAAE,SAAS,EAAO,MAAO,uBAAwB,EAG1D,GAAI,CACF,IAAM,EAAc,CAAA,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC1C,EAAU,MAAM,EAAY,QAAQ,CAAC,GAE3C,GAAI,CAAC,EAEH,OAFY,AACZ,EAAI,IAAI,CAAC,CAAC,kCAAkC,EAAE,EAAU,CAAC,CAAC,EACnD,CAAE,SAAS,EAAO,MAAO,CAAC,mBAAmB,EAAE,EAAA,CAAW,AAAC,EAGpE,EAAI,IAAI,CACN,CAAC,gCAAgC,EAAE,EAAQ,cAAc,CAAC,WAAW,EAAE,EAAQ,MAAM,CAAC,CAAC,CAAC,EAG1F,IAAM,EAAe,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,EAAQ,cAAc,CAAE,EAAQ,MAAM,EAG/E,GAFA,EAAI,IAAI,CAAC,CAAC,uBAAuB,EAAE,EAAa,CAAC,CAAC,EAE9C,CAAC,CAAA,EAAA,EAAA,UAAA,AAAU,EAAC,GAEd,OADA,EAAI,GADyB,CACrB,CAAC,CAAC,uCAAuC,EAAE,EAAa,CAAC,CAAC,EAC3D,CAAE,SAAS,EAAO,MAAO,CAAC,8BAA8B,EAAE,EAAA,CAAe,AAAD,EAGjF,GAAI,EAAuB,EAAQ,cAAc,EAE/C,CAFkD,MAClD,EAAI,IAAI,CAAC,6DACF,CACL,SAAS,EACT,MAAO,iFACT,EAQF,OALA,EAAI,IAAI,CAAC,2DACiB,AAC1B,AAD0B,CAAA,EAAA,EAAA,OAAA,AAAO,EAAqB,sBACpC,KAAK,CAAC,EAAW,EAAc,WAEjD,EAAI,IAAI,CAAC,iDACF,CAAE,SAAS,EAAM,MAAO,EAAA,eAAe,CAAC,OAAO,AAAC,CACzD,CAAE,MAAO,EAAgB,CACvB,IAAM,EAAU,aAAiB,MAAQ,EAAM,OAAO,CAAG,2BAEzD,OADA,EAAI,KAAK,CAAC,CAAC,OAAO,EAAE,EAAA,CAAS,CAAE,GACxB,CAAE,SAAS,EAAO,MAAO,CAAQ,CAC1C,CACF,iCAlDsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,uCGFtB,IAAM,EAAM,EAAuB,sBAE5B,eAAe,EACpBA,CAAsBU,MAYlB,EARJ,GAFA,EAAI,IAAI,CAAC,CAAC,yBAAyB,EAAE,EAAe,CAAC,CAAC,EAElD,CAAC,GAAkB,CAAC,CAAA,EAAA,EAAA,UAAA,AAAU,EAAC,GAEjC,OADA,EAAI,IAAI,CAD0C,AACzC,mCACF,CAAE,SAAS,EAAO,MAAO,yCAA0C,EAO5E,GAAI,CACF,EAAe,CAAA,EAAA,EAAA,YAAY,AAAZ,EAAa,EAC9B,CAAE,KAAM,CAEN,OADA,EAAI,IAAI,CAAC,CAAC,2BAA2B,EAAE,EAAe,CAAC,CAAC,EACjD,CAAE,SAAS,EAAO,MAAO,0BAA2B,CAC7D,CAEA,GAAI,CACF,GAAI,EAAuB,GAEzB,OADA,EAAI,GADoC,CAChC,CAAC,oDACF,CACL,SAAS,EACT,MAAO,qEACT,EAQF,OALA,EAAI,IAAI,CAAC,uDAET,AAD0B,CAAA,EAAA,EAAA,OAAA,AAAO,EAAqB,sBACpC,KAAK,CAAC,EAAc,EAAc,cAEpD,EAAI,IAAI,CAAC,iDACF,CAAE,SAAS,EAAM,MAAO,EAAA,eAAe,CAAC,OAAO,AAAC,CACzD,CAAE,MAAO,EAAgB,CACvB,IAAM,EAAU,aAAiB,MAAQ,EAAM,OAAO,CAAG,8BAEzD,OADA,EAAI,KAAK,CAAC,CAAC,OAAO,EAAE,EAAA,CAAS,CAAE,GACxB,CAAE,SAAS,EAAO,MAAO,CAAQ,CAC1C,CACF,CChDO,eAAe,EACpB,CAAgB,EAEhB,GAAI,CAAC,GAAU,OACb,CADqB,KACdR,CAAE,SAAS,EAAO,MAAO,sBAAuB,EAGzD,GAAI,CACF,IAAM,EAAoB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAGtD,OAFA,MAAM,EAAkB,IAAI,CAAC,GAEtBO,CAAE,SAAS,CAAK,CACzB,CAAE,MAAOF,EAAgB,CAEvB,MAAO,CAAE,SAAS,EAAO,MADT,CACgB,YADC,MAAQ,EAAM,OAAO,CAAG,2BACjB,CAC1C,CACF,CCbO,eAAe,EAAoB,CAAgB,SACxD,AAAK,GAAU,CAAX,MAIsB,AACnB,CALgB,AAIG,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC7B,SAAS,CAACD,GAJ1B,IAKX,iCFHsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,0ECPA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,wECGA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,qECRtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[58863,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353);a.s([],46656),a.i(46656),a.s(["007430c6e44658511533da6fc18df6a10a77d8ca2f",()=>f.listGitHubOrganizations,"0095abc4000335aa7827a56915d9196e945df0ab50",()=>r.checkAgentAuth,"00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05",()=>d.pickFolder,"00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3",()=>b.getAllAgentModels,"00d00bca5810b627fd7f843fa04a97b6756eac2112",()=>s.checkToolStatus,"00ea2e4aeb96147be0df27de0fb0811dcd46d7b284",()=>q.isAgentSetupComplete,"401ae5ca5ec169940e604f0271d5b3d0051fb26ffb",()=>n.openFolder,"402089d3e112c6b2d2afc8c751dbc87755549d0eae",()=>x.startFeature,"4020eb6cd133a6c3dfd8275d14cd43e83d47a93de2",()=>m.openShell,"402537786e22ad05934fa43a551ed5b45acf5ff3c0",()=>z.unarchiveFeature,"4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e",()=>i.deployRepository,"40264230f863970e48854876df9f3fc11a8bf79378",()=>t.getFeatureMetadata,"40272f295c9d08be7d27e530f118d68eec736ff09d",()=>y.stopFeature,"402bfda1e782b375ba1e7b4350dcb2411f747e7759",()=>j.stopDeployment,"402dc759d6b9f6ac4d0286821d233beb7586bfd6a1",()=>e.listGitHubRepositories,"4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066",()=>h.deployFeature,"4044ad52bb92a547ac306d28c714498429d7ad0e22",()=>A.addRepository,"4046e707d870b26bda43482676a885acbc5efb7687",()=>p.getDeploymentLogs,"404720e2231380d52c29929a6a219b7cc885ea0502",()=>B.deleteRepository,"4050fb410229d1171b522d034c23053da254577270",()=>o.syncRepository,"408951cdf9d60d3b3fcefa97ab36845c975e13a4e4",()=>g.importGitHubRepository,"409e7f6d9000f7ab91dd4401f2543b2147adb23f81",()=>u.archiveFeature,"40a1f322bacc7e0c123d20aab8420e1748e5b64122",()=>w.resumeFeature,"40f3651a25e60f770e01fc60830b4911e2491df322",()=>k.getDeploymentStatus,"40f3fde3affce8285dca5f685141bda496b2e45e0c",()=>l.openIde,"607d27ea5d212b8c03d6b47947a6b15a19782e2a95",()=>c.updateAgentAndModel,"78e46dbafd792b86405e361f7de33fab8345767ddd",()=>v.deleteFeature],58863)}];
1
+ module.exports=[58863,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353);a.s([],46656),a.i(46656),a.s(["002809c4bbafc76cdc68bbb45f0e98f2c4f4a2c326",()=>s.checkToolStatus,"004c1cd5bd750d92e24559b76d2d8a527b9fcb81f2",()=>q.isAgentSetupComplete,"00673293d55e3d5c2321b617280b92c924b9c274ef",()=>b.getAllAgentModels,"00749653789364ef64460b4cd9a8e87d8864d12fc5",()=>d.pickFolder,"008bb64e62c8da45930ed722f946b39495438d9fe4",()=>r.checkAgentAuth,"00b467d9fd0fce7099e8b248187d7a68abab9c5ea5",()=>f.listGitHubOrganizations,"4004781548c34747283fe284c8d195ca487357e06e",()=>m.openShell,"40056e63d366d69696c57d7b5a4664d89f6b096689",()=>o.syncRepository,"4007721bb168054f860a3df6cd060e0f3807aad0b7",()=>l.openIde,"401724219fbd15d0044167e2ceadcb426a1b88b6f1",()=>z.unarchiveFeature,"402204882070179404ea9fa5e8df27c20e3b047b7b",()=>p.getDeploymentLogs,"403dcf9658fd4554fd78615a972d2dcd376a65c0f5",()=>i.deployRepository,"405c0161a824d7c6bfb099b9a201402629f9a809f4",()=>t.getFeatureMetadata,"4072874e5fb8b3baba18dc19335d0abd9e51cc46c9",()=>h.deployFeature,"4079ba07e5d8c86c4880360723f3c69e3f51f09301",()=>n.openFolder,"4094b8bc3c9b9c623df2845c71dc8335b7bc03f8dc",()=>B.deleteRepository,"4095d29929fbcf0399b2f887e72da80c9a493c2daa",()=>j.stopDeployment,"409a12726d14b0171bed27175fc895f1737e25a59f",()=>x.startFeature,"409ca41fe22f43beef5f6007804d4ea4af1c742d6e",()=>y.stopFeature,"40a85456a342184720e7bd43147ef6d61ed80fe86a",()=>u.archiveFeature,"40b828bf45ef188283d9a89163d392dfbb46325a07",()=>g.importGitHubRepository,"40c992eef9eeddd4305120d6c18763fdf82131e265",()=>e.listGitHubRepositories,"40cc33d9eef0ed0ff39c963fb96616983a83d163c9",()=>w.resumeFeature,"40e215e3d1fc214b574bc0a2abb1fe319f6107ad02",()=>k.getDeploymentStatus,"40eabff44164a320ffdbb4d78762d986a3a08e9cb3",()=>A.addRepository,"609be691f502322cf39cd20fd3d57dc07e8f0fb0a3",()=>c.updateAgentAndModel,"7830a0050246cf0a7c64eb408158d03b581fa9fd2d",()=>v.deleteFeature],58863)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web__next-internal_server_app_%28dashboard%29_page_actions_1199d3x.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '607d27ea5d212b8c03d6b47947a6b15a19782e2a95'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '402dc759d6b9f6ac4d0286821d233beb7586bfd6a1'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '007430c6e44658511533da6fc18df6a10a77d8ca2f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '408951cdf9d60d3b3fcefa97ab36845c975e13a4e4'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '4030d28f42b22fbe5c0deddb5a7fdf7c096fc03066'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '4025d2a75d6d6df7203f8a612ff7cb3355a6c1525e'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '402bfda1e782b375ba1e7b4350dcb2411f747e7759'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40f3651a25e60f770e01fc60830b4911e2491df322'} from 'ACTIONS_MODULE9'\nexport {openIde as '40f3fde3affce8285dca5f685141bda496b2e45e0c'} from 'ACTIONS_MODULE10'\nexport {openShell as '4020eb6cd133a6c3dfd8275d14cd43e83d47a93de2'} from 'ACTIONS_MODULE11'\nexport {openFolder as '401ae5ca5ec169940e604f0271d5b3d0051fb26ffb'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '4050fb410229d1171b522d034c23053da254577270'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '4046e707d870b26bda43482676a885acbc5efb7687'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '00ea2e4aeb96147be0df27de0fb0811dcd46d7b284'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '0095abc4000335aa7827a56915d9196e945df0ab50'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00d00bca5810b627fd7f843fa04a97b6756eac2112'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40264230f863970e48854876df9f3fc11a8bf79378'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '409e7f6d9000f7ab91dd4401f2543b2147adb23f81'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78e46dbafd792b86405e361f7de33fab8345767ddd'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40a1f322bacc7e0c123d20aab8420e1748e5b64122'} from 'ACTIONS_MODULE21'\nexport {startFeature as '402089d3e112c6b2d2afc8c751dbc87755549d0eae'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '40272f295c9d08be7d27e530f118d68eec736ff09d'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '402537786e22ad05934fa43a551ed5b45acf5ff3c0'} from 'ACTIONS_MODULE24'\nexport {addRepository as '4044ad52bb92a547ac306d28c714498429d7ad0e22'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '404720e2231380d52c29929a6a219b7cc885ea0502'} from 'ACTIONS_MODULE26'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '00673293d55e3d5c2321b617280b92c924b9c274ef'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '609be691f502322cf39cd20fd3d57dc07e8f0fb0a3'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00749653789364ef64460b4cd9a8e87d8864d12fc5'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c992eef9eeddd4305120d6c18763fdf82131e265'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00b467d9fd0fce7099e8b248187d7a68abab9c5ea5'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40b828bf45ef188283d9a89163d392dfbb46325a07'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '4072874e5fb8b3baba18dc19335d0abd9e51cc46c9'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '403dcf9658fd4554fd78615a972d2dcd376a65c0f5'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4095d29929fbcf0399b2f887e72da80c9a493c2daa'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40e215e3d1fc214b574bc0a2abb1fe319f6107ad02'} from 'ACTIONS_MODULE9'\nexport {openIde as '4007721bb168054f860a3df6cd060e0f3807aad0b7'} from 'ACTIONS_MODULE10'\nexport {openShell as '4004781548c34747283fe284c8d195ca487357e06e'} from 'ACTIONS_MODULE11'\nexport {openFolder as '4079ba07e5d8c86c4880360723f3c69e3f51f09301'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '40056e63d366d69696c57d7b5a4664d89f6b096689'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '402204882070179404ea9fa5e8df27c20e3b047b7b'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '004c1cd5bd750d92e24559b76d2d8a527b9fcb81f2'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '008bb64e62c8da45930ed722f946b39495438d9fe4'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '002809c4bbafc76cdc68bbb45f0e98f2c4f4a2c326'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '405c0161a824d7c6bfb099b9a201402629f9a809f4'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40a85456a342184720e7bd43147ef6d61ed80fe86a'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '7830a0050246cf0a7c64eb408158d03b581fa9fd2d'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40cc33d9eef0ed0ff39c963fb96616983a83d163c9'} from 'ACTIONS_MODULE21'\nexport {startFeature as '409a12726d14b0171bed27175fc895f1737e25a59f'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '409ca41fe22f43beef5f6007804d4ea4af1c742d6e'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '401724219fbd15d0044167e2ceadcb426a1b88b6f1'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40eabff44164a320ffdbb4d78762d986a3a08e9cb3'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '4094b8bc3c9b9c623df2845c71dc8335b7bc03f8dc'} from 'ACTIONS_MODULE26'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[35539,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324);a.s([],71836),a.i(71836),a.s(["007430c6e44658511533da6fc18df6a10a77d8ca2f",()=>f.listGitHubOrganizations,"00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05",()=>d.pickFolder,"00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3",()=>b.getAllAgentModels,"402dc759d6b9f6ac4d0286821d233beb7586bfd6a1",()=>e.listGitHubRepositories,"408951cdf9d60d3b3fcefa97ab36845c975e13a4e4",()=>g.importGitHubRepository,"607d27ea5d212b8c03d6b47947a6b15a19782e2a95",()=>c.updateAgentAndModel],35539)}];
1
+ module.exports=[35539,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324);a.s([],71836),a.i(71836),a.s(["00673293d55e3d5c2321b617280b92c924b9c274ef",()=>b.getAllAgentModels,"00749653789364ef64460b4cd9a8e87d8864d12fc5",()=>d.pickFolder,"00b467d9fd0fce7099e8b248187d7a68abab9c5ea5",()=>f.listGitHubOrganizations,"40b828bf45ef188283d9a89163d392dfbb46325a07",()=>g.importGitHubRepository,"40c992eef9eeddd4305120d6c18763fdf82131e265",()=>e.listGitHubRepositories,"609be691f502322cf39cd20fd3d57dc07e8f0fb0a3",()=>c.updateAgentAndModel],35539)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/_not-found/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '607d27ea5d212b8c03d6b47947a6b15a19782e2a95'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '402dc759d6b9f6ac4d0286821d233beb7586bfd6a1'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '007430c6e44658511533da6fc18df6a10a77d8ca2f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '408951cdf9d60d3b3fcefa97ab36845c975e13a4e4'} from 'ACTIONS_MODULE5'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/_not-found/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '00673293d55e3d5c2321b617280b92c924b9c274ef'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '609be691f502322cf39cd20fd3d57dc07e8f0fb0a3'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00749653789364ef64460b4cd9a8e87d8864d12fc5'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c992eef9eeddd4305120d6c18763fdf82131e265'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00b467d9fd0fce7099e8b248187d7a68abab9c5ea5'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40b828bf45ef188283d9a89163d392dfbb46325a07'} from 'ACTIONS_MODULE5'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[8197,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324);a.s([],64220),a.i(64220),a.s(["007430c6e44658511533da6fc18df6a10a77d8ca2f",()=>f.listGitHubOrganizations,"00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05",()=>d.pickFolder,"00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3",()=>b.getAllAgentModels,"402dc759d6b9f6ac4d0286821d233beb7586bfd6a1",()=>e.listGitHubRepositories,"408951cdf9d60d3b3fcefa97ab36845c975e13a4e4",()=>g.importGitHubRepository,"607d27ea5d212b8c03d6b47947a6b15a19782e2a95",()=>c.updateAgentAndModel],8197)}];
1
+ module.exports=[8197,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324);a.s([],64220),a.i(64220),a.s(["00673293d55e3d5c2321b617280b92c924b9c274ef",()=>b.getAllAgentModels,"00749653789364ef64460b4cd9a8e87d8864d12fc5",()=>d.pickFolder,"00b467d9fd0fce7099e8b248187d7a68abab9c5ea5",()=>f.listGitHubOrganizations,"40b828bf45ef188283d9a89163d392dfbb46325a07",()=>g.importGitHubRepository,"40c992eef9eeddd4305120d6c18763fdf82131e265",()=>e.listGitHubRepositories,"609be691f502322cf39cd20fd3d57dc07e8f0fb0a3",()=>c.updateAgentAndModel],8197)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/version/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '00cbc4523bf5566fea2d5cf98477b5bf3adbeabce3'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '607d27ea5d212b8c03d6b47947a6b15a19782e2a95'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00ac11c8bac2edb4d3cb6e1bfc7e950957ab6fff05'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '402dc759d6b9f6ac4d0286821d233beb7586bfd6a1'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '007430c6e44658511533da6fc18df6a10a77d8ca2f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '408951cdf9d60d3b3fcefa97ab36845c975e13a4e4'} from 'ACTIONS_MODULE5'\n"],"names":[],"mappings":"sCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/version/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '00673293d55e3d5c2321b617280b92c924b9c274ef'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '609be691f502322cf39cd20fd3d57dc07e8f0fb0a3'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00749653789364ef64460b4cd9a8e87d8864d12fc5'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c992eef9eeddd4305120d6c18763fdf82131e265'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00b467d9fd0fce7099e8b248187d7a68abab9c5ea5'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40b828bf45ef188283d9a89163d392dfbb46325a07'} from 'ACTIONS_MODULE5'\n"],"names":[],"mappings":"sCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -0,0 +1,3 @@
1
+ module.exports=[61402,76052,13008,74607,6542,73624,12104,70319,54433,59020,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b,d){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{rejected:!1,error:"Feature not found"};if(!f.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let g=(0,c.resolve)("RejectAgentRunUseCase"),h=await g.execute(f.agentRunId,b,d);if(!h.rejected)return{rejected:!1,error:h.reason};return{rejected:!0,iteration:h.iteration,iterationWarning:h.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60689dec393bb57eb8170127c394ab7f00e05019c5",null),a.s(["approveFeature",0,e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"70adbccc4c78ee69299a2bde00266139f0341860be",null),a.s(["rejectFeature",0,f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40a83fa725c2f75508f2b9ba7d6816e13884c7659f",null),a.s(["getFeatureArtifact",0,g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"4050fd20d52031d9698bf1953fa5c10615821470c6",null),a.s(["getResearchArtifact",0,h],74607);var i=a.i(66680),j=a.i(2157),k=a.i(50227);function l(a){try{return(0,j.realpathSync)(a)}catch{return null}}function m(a,b){let c=b.replace(/\\/g,"/"),d=a.replace(/\\/g,"/");return d===c||d.startsWith(`${c}/`)}a.i(12714),a.i(1442);var n=a.i(29918),o=a.i(83771);async function p(a){if(!a.trim())return{error:"Feature id is required"};try{var b,d;let e,f,g=(0,c.resolve)("IFeatureRepository"),h=await g.findById(a);if(!h)return{error:"Feature not found"};let p=(0,c.resolve)("LoadSettingsUseCase"),{workflow:q}=await p.execute(),r=h.pr?{url:h.pr.url,number:h.pr.number,status:h.pr.status,commitHash:h.pr.commitHash,ciStatus:h.pr.ciStatus,mergeable:h.pr.mergeable}:void 0,s=h.worktreePath??(h.repositoryPath&&h.branch?(0,n.computeWorktreePath)(h.repositoryPath,h.branch):null),t=(0,c.resolve)("IGitPrService"),u=s??h.repositoryPath??null,v="main";if(u)try{v=await t.getDefaultBranch(u)}catch{}let w=h.branch?{source:h.branch,target:v}:void 0,x=h.repositoryPath?(b=h.repositoryPath,f=(0,i.createHash)("sha256").update(b).digest("hex").slice(0,16),(0,k.join)((0,o.getShipitAiHomeDir)(),"repos",f,"evidence",a).replace(/\\/g,"/")):s?(0,k.join)((0,k.dirname)((0,k.dirname)(s)),"evidence",a).replace(/\\/g,"/"):null;if(x)try{let a=l((0,o.getShipitAiHomeDir)()),b=l(x);if(a&&b&&m(b,a)){let a=l((0,k.join)(b,"manifest.json"));if(a&&m(a,b)){let b=(d=JSON.parse((0,j.readFileSync)(a,"utf-8")),d.map(a=>{if(a.relativePath.startsWith("/"))return a;let b=(0,k.basename)(a.relativePath),c=(0,k.join)(x,b).replace(/\\/g,"/");return{...a,relativePath:c}})),c=new Set;e=b.filter(a=>{let b=`${a.type}:${a.relativePath}`;return!c.has(b)&&(c.add(b),!0)})}}}catch{}if(!s)return{pr:r,branch:w,evidence:e,warning:r?void 0:"No PR or diff data available",hideCiStatus:q.hideCiStatus};try{let[a,b]=await Promise.all([t.getPrDiffSummary(s,v),t.getFileDiffs(s,v).catch(()=>void 0)]);return{pr:r,branch:w,diffSummary:a,fileDiffs:b,evidence:e,hideCiStatus:q.hideCiStatus}}catch{return{pr:r,branch:w,evidence:e,warning:"Diff statistics unavailable",hideCiStatus:q.hideCiStatus}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function q(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository"),d=(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt.toISOString(),completedAt:a.completedAt?.toISOString(),durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt?.toISOString(),approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0,inputTokens:null!=a.inputTokens?Number(a.inputTokens):void 0,outputTokens:null!=a.outputTokens?Number(a.outputTokens):void 0,cacheCreationInputTokens:null!=a.cacheCreationInputTokens?Number(a.cacheCreationInputTokens):void 0,cacheReadInputTokens:null!=a.cacheReadInputTokens?Number(a.cacheReadInputTokens):void 0,costUsd:null!=a.costUsd?Number(a.costUsd):void 0,numTurns:a.numTurns??void 0,durationApiMs:null!=a.durationApiMs?Number(a.durationApiMs):void 0,exitCode:a.exitCode??void 0,errorMessage:a.errorMessage??void 0,prompt:a.prompt??void 0})),e=await r(a);return{timings:d,rejectionFeedback:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function r(b){try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(b);if(!e?.specPath)return[];let{readFileSync:f}=await a.A(6714),{join:g}=await a.A(11105),h=(await a.A(29718)).default,i=f(g(e.specPath,"spec.yaml"),"utf-8"),j=h.load(i);if(!Array.isArray(j?.rejectionFeedback))return[];return j.rejectionFeedback.map(a=>({iteration:Number(a.iteration??1),message:String(a.message??""),phase:a.phase?String(a.phase):void 0,timestamp:a.timestamp?String(a.timestamp):void 0,attachments:Array.isArray(a.attachments)?a.attachments.map(String):void 0}))}catch{return[]}}async function s(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return{error:"Feature not found"};if(!d.plan)return{plan:void 0};return{plan:{state:d.plan.state,overview:d.plan.overview,tasks:d.plan.tasks.map(a=>({title:a.title??"",description:a.description??"",state:a.state,actionItems:(a.actionItems??[]).map(a=>({name:a.name,description:a.description,acceptanceCriteria:(a.acceptanceCriteria??[]).map(a=>({description:a.description,verified:a.verified}))}))}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}async function t(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("RebaseFeatureOnMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to rebase feature"}}}(0,d.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"40037ffafa5e4eb9ee0759209945d33ce90e13fec6",null),a.s(["getMergeReviewData",0,p],6542),(0,d.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"409704dd26135c11b1ee535a5b0931db4a0671ee53",null),a.s(["getFeaturePhaseTimings",0,q],73624),(0,d.ensureServerEntryExports)([s]),(0,b.registerServerReference)(s,"404fdeb8fe6c6592d1a804ef02373bf3d1a61a304a",null),a.s(["getFeaturePlan",0,s],12104),(0,d.ensureServerEntryExports)([t]),(0,b.registerServerReference)(t,"404496b843a41bc21643f6b485b84215fd77c150ca",null),a.s(["rebaseFeature",0,t],70319);var u=a.i(31747);async function v(a){try{let b=(0,c.resolve)("IFeatureRepository"),d=(0,c.resolve)("IAgentRunRepository"),e=(0,c.resolve)("IRepositoryRepository"),f=(0,c.resolve)("IGitPrService"),g=(0,c.resolve)("GetFeatureArtifactUseCase"),h=await b.findById(a);if(!h)return null;let i=h.agentRunId?await d.findById(h.agentRunId):null,[j,k,l,m]=await Promise.all([e.findByPath(h.repositoryPath).catch(()=>null),f.getDefaultBranch(h.repositoryPath).catch(()=>"main"),g.execute(a).catch(()=>null),f.getRemoteUrl(h.repositoryPath).catch(()=>null)]),n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute();return(0,u.buildFeatureNodeData)(h,i,{repositoryName:j?.name,baseBranch:k,oneLiner:l?.oneLiner,remoteUrl:m??void 0,enableEvidence:o.enableEvidence,commitEvidence:o.commitEvidence,hideCiStatus:o.hideCiStatus})}catch{return null}}async function w(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("GetBranchSyncStatusUseCase"),d=await b.execute(a);return{success:!0,data:{...d,checkedAt:new Date().toISOString()}}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to get branch sync status"}}}(0,d.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"4062d5cf9c269e046e5423814b3253cc1631dafb7c",null),a.s(["getFeatureDrawerData",0,v],54433),(0,d.ensureServerEntryExports)([w]),(0,b.registerServerReference)(w,"4080d17ee3d972352038c8cf9aa734fa11727ba2f5",null),a.s(["getBranchSyncStatus",0,w],59020)}];
2
+
3
+ //# sourceMappingURL=src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js.map