@shepai/cli 1.202.1-pr606.60460ac → 1.202.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 (372) hide show
  1. package/package.json +1 -1
  2. package/web/.next/BUILD_ID +1 -1
  3. package/web/.next/build-manifest.json +2 -2
  4. package/web/.next/fallback-build-manifest.json +2 -2
  5. package/web/.next/prerender-manifest.json +3 -3
  6. package/web/.next/required-server-files.js +2 -2
  7. package/web/.next/required-server-files.json +2 -2
  8. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/react-loadable-manifest.json +4 -4
  9. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +37 -37
  10. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  11. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  12. package/web/.next/server/app/(dashboard)/@drawer/chat/page/react-loadable-manifest.json +4 -4
  13. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +35 -35
  14. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  15. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  16. package/web/.next/server/app/(dashboard)/@drawer/create/page/react-loadable-manifest.json +4 -4
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +38 -38
  18. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/react-loadable-manifest.json +4 -4
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +47 -47
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/react-loadable-manifest.json +4 -4
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +47 -47
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +4 -4
  29. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +36 -36
  30. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  31. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/react-loadable-manifest.json +4 -4
  33. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +36 -36
  34. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/chat/page/react-loadable-manifest.json +4 -4
  37. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +35 -35
  38. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/control-center/page/react-loadable-manifest.json +4 -4
  41. package/web/.next/server/app/(dashboard)/control-center/page/server-reference-manifest.json +35 -35
  42. package/web/.next/server/app/(dashboard)/control-center/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/control-center/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/(dashboard)/create/page/react-loadable-manifest.json +4 -4
  45. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +38 -38
  46. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/react-loadable-manifest.json +4 -4
  49. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +47 -47
  50. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/react-loadable-manifest.json +4 -4
  53. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +47 -47
  54. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +4 -4
  57. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +36 -36
  58. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/react-loadable-manifest.json +4 -4
  61. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +36 -36
  62. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/_global-error.html +2 -2
  65. package/web/.next/server/app/_global-error.rsc +1 -1
  66. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  67. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  68. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  69. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  70. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  71. package/web/.next/server/app/_not-found/page/react-loadable-manifest.json +4 -4
  72. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +9 -9
  73. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/agent-questions/page/react-loadable-manifest.json +4 -4
  75. package/web/.next/server/app/agent-questions/page/server-reference-manifest.json +11 -11
  76. package/web/.next/server/app/agent-questions/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/agents/[agentType]/page/react-loadable-manifest.json +4 -4
  78. package/web/.next/server/app/agents/[agentType]/page/server-reference-manifest.json +13 -13
  79. package/web/.next/server/app/agents/[agentType]/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/agents/page/react-loadable-manifest.json +4 -4
  81. package/web/.next/server/app/agents/page/server-reference-manifest.json +10 -10
  82. package/web/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/app/application/[id]/page/react-loadable-manifest.json +4 -4
  84. package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +18 -18
  85. package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
  86. package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/application/[id]/supervisor/page/react-loadable-manifest.json +4 -4
  88. package/web/.next/server/app/application/[id]/supervisor/page/server-reference-manifest.json +10 -10
  89. package/web/.next/server/app/application/[id]/supervisor/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/applications/page/react-loadable-manifest.json +4 -4
  91. package/web/.next/server/app/applications/page/server-reference-manifest.json +20 -20
  92. package/web/.next/server/app/applications/page.js.nft.json +1 -1
  93. package/web/.next/server/app/applications/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/features/page/react-loadable-manifest.json +4 -4
  95. package/web/.next/server/app/features/page/server-reference-manifest.json +31 -31
  96. package/web/.next/server/app/features/page.js.nft.json +1 -1
  97. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/onboarding/page/react-loadable-manifest.json +4 -4
  99. package/web/.next/server/app/onboarding/page/server-reference-manifest.json +9 -9
  100. package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/page/react-loadable-manifest.json +4 -4
  102. package/web/.next/server/app/page/server-reference-manifest.json +9 -9
  103. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/projects/[slug]/items/[itemId]/page/react-loadable-manifest.json +4 -4
  105. package/web/.next/server/app/projects/[slug]/items/[itemId]/page/server-reference-manifest.json +16 -16
  106. package/web/.next/server/app/projects/[slug]/items/[itemId]/page_client-reference-manifest.js +1 -1
  107. package/web/.next/server/app/projects/[slug]/page/react-loadable-manifest.json +4 -4
  108. package/web/.next/server/app/projects/[slug]/page/server-reference-manifest.json +28 -28
  109. package/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/projects/[slug]/pages/page/react-loadable-manifest.json +4 -4
  111. package/web/.next/server/app/projects/[slug]/pages/page/server-reference-manifest.json +12 -12
  112. package/web/.next/server/app/projects/[slug]/pages/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/projects/[slug]/settings/page/react-loadable-manifest.json +4 -4
  114. package/web/.next/server/app/projects/[slug]/settings/page/server-reference-manifest.json +18 -18
  115. package/web/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/app/projects/page/react-loadable-manifest.json +4 -4
  117. package/web/.next/server/app/projects/page/server-reference-manifest.json +10 -10
  118. package/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  119. package/web/.next/server/app/settings/page/react-loadable-manifest.json +4 -4
  120. package/web/.next/server/app/settings/page/server-reference-manifest.json +15 -15
  121. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  122. package/web/.next/server/app/skills/page/react-loadable-manifest.json +4 -4
  123. package/web/.next/server/app/skills/page/server-reference-manifest.json +17 -17
  124. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/supervisor/feature/[featureId]/page/react-loadable-manifest.json +4 -4
  126. package/web/.next/server/app/supervisor/feature/[featureId]/page/server-reference-manifest.json +10 -10
  127. package/web/.next/server/app/supervisor/feature/[featureId]/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/supervisor/page/react-loadable-manifest.json +4 -4
  129. package/web/.next/server/app/supervisor/page/server-reference-manifest.json +10 -10
  130. package/web/.next/server/app/supervisor/page_client-reference-manifest.js +1 -1
  131. package/web/.next/server/app/supervisor/repo/[repositoryId]/page/react-loadable-manifest.json +4 -4
  132. package/web/.next/server/app/supervisor/repo/[repositoryId]/page/server-reference-manifest.json +10 -10
  133. package/web/.next/server/app/supervisor/repo/[repositoryId]/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/app/tools/page/react-loadable-manifest.json +4 -4
  135. package/web/.next/server/app/tools/page/server-reference-manifest.json +15 -15
  136. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/version/page/react-loadable-manifest.json +4 -4
  138. package/web/.next/server/app/version/page/server-reference-manifest.json +9 -9
  139. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/chunks/[root-of-the-server]__10e976f3._.js +1 -1
  141. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agent-questions_page_actions_4b694f8d.js +1 -1
  142. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agent-questions_page_actions_4b694f8d.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agents_[agentType]_page_actions_103679a6.js +1 -1
  144. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agents_[agentType]_page_actions_103679a6.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_projects_[slug]_pages_page_actions_19d50f6c.js +1 -1
  146. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_projects_[slug]_pages_page_actions_19d50f6c.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js +1 -1
  148. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.js +1 -1
  150. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  152. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js +1 -1
  154. package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__0af8610a._.js +3 -3
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__0af8610a._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b652a2f._.js +1 -1
  158. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8b73253b._.js → [root-of-the-server]__2e388ba3._.js} +2 -2
  159. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8b73253b._.js.map → [root-of-the-server]__2e388ba3._.js.map} +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__56cf47e7._.js +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__56cf47e7._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__648730d4._.js +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__68df6415._.js +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__68df6415._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bc6bf96._.js +1 -1
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bc6bf96._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__9852cb08._.js +2 -2
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__9852cb08._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/[root-of-the-server]__a1167cec._.js +1 -1
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__a1167cec._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__a12d0ad7._.js +3 -0
  172. package/web/.next/server/chunks/ssr/{[root-of-the-server]__52ca7f88._.js.map → [root-of-the-server]__a12d0ad7._.js.map} +1 -1
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba699bec._.js +1 -1
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba699bec._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0741ee1._.js +1 -1
  176. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0fa59e6._.js +1 -1
  177. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0fa59e6._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/[root-of-the-server]__ea26ff90._.js +3 -3
  179. package/web/.next/server/chunks/ssr/[root-of-the-server]__ff0095e3._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_07036593._.js +1 -1
  181. package/web/.next/server/chunks/ssr/_07036593._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/_0d2a7595._.js +1 -1
  183. package/web/.next/server/chunks/ssr/_0d2a7595._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/_101de7c3._.js +1 -1
  185. package/web/.next/server/chunks/ssr/_101de7c3._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/{_db111d21._.js → _10f54ace._.js} +2 -2
  187. package/web/.next/server/chunks/ssr/{_db111d21._.js.map → _10f54ace._.js.map} +1 -1
  188. package/web/.next/server/chunks/ssr/_24fca3cf._.js +1 -1
  189. package/web/.next/server/chunks/ssr/_24fca3cf._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/{_6ff832ad._.js → _2759af76._.js} +2 -2
  191. package/web/.next/server/chunks/ssr/{_6ff832ad._.js.map → _2759af76._.js.map} +1 -1
  192. package/web/.next/server/chunks/ssr/_2bc48f3d._.js +1 -1
  193. package/web/.next/server/chunks/ssr/_2bc48f3d._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/{_fb539286._.js → _2bef1982._.js} +2 -2
  195. package/web/.next/server/chunks/ssr/{_fb539286._.js.map → _2bef1982._.js.map} +1 -1
  196. package/web/.next/server/chunks/ssr/_32f66845._.js +1 -1
  197. package/web/.next/server/chunks/ssr/_408848e6._.js +1 -1
  198. package/web/.next/server/chunks/ssr/_408848e6._.js.map +1 -1
  199. package/web/.next/server/chunks/ssr/_40e02782._.js +1 -1
  200. package/web/.next/server/chunks/ssr/_40e02782._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/_486d45d6._.js +1 -1
  202. package/web/.next/server/chunks/ssr/_486d45d6._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/{_824d5772._.js → _498cba11._.js} +2 -2
  204. package/web/.next/server/chunks/ssr/{_824d5772._.js.map → _498cba11._.js.map} +1 -1
  205. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  206. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/_5cbb0e22._.js +1 -1
  208. package/web/.next/server/chunks/ssr/_5cbb0e22._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/{_5a3edc88._.js → _673be4f1._.js} +2 -2
  210. package/web/.next/server/chunks/ssr/{_5a3edc88._.js.map → _673be4f1._.js.map} +1 -1
  211. package/web/.next/server/chunks/ssr/_7ba67729._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_7ba67729._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/_805ae1aa._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_805ae1aa._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/_87cf18c3._.js +1 -1
  216. package/web/.next/server/chunks/ssr/_87cf18c3._.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/_8a700ff4._.js +1 -1
  218. package/web/.next/server/chunks/ssr/_8a700ff4._.js.map +1 -1
  219. package/web/.next/server/chunks/ssr/_95b97274._.js +1 -1
  220. package/web/.next/server/chunks/ssr/_95b97274._.js.map +1 -1
  221. package/web/.next/server/chunks/ssr/{_fbcfaf3a._.js → _9d18d1b1._.js} +2 -2
  222. package/web/.next/server/chunks/ssr/{_fbcfaf3a._.js.map → _9d18d1b1._.js.map} +1 -1
  223. package/web/.next/server/chunks/ssr/{_70ff64a1._.js → _a93687e6._.js} +2 -2
  224. package/web/.next/server/chunks/ssr/{_70ff64a1._.js.map → _a93687e6._.js.map} +1 -1
  225. package/web/.next/server/chunks/ssr/_c2e196ee._.js +1 -1
  226. package/web/.next/server/chunks/ssr/_c2e196ee._.js.map +1 -1
  227. package/web/.next/server/chunks/ssr/_ca3b7bf7._.js +1 -1
  228. package/web/.next/server/chunks/ssr/_ca3b7bf7._.js.map +1 -1
  229. package/web/.next/server/chunks/ssr/_d53224a9._.js +1 -1
  230. package/web/.next/server/chunks/ssr/_d53224a9._.js.map +1 -1
  231. package/web/.next/server/chunks/ssr/_d573dcc2._.js +1 -1
  232. package/web/.next/server/chunks/ssr/_e2671e14._.js +1 -1
  233. package/web/.next/server/chunks/ssr/_e2671e14._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/_ecd45b17._.js +1 -1
  235. package/web/.next/server/chunks/ssr/_ecd45b17._.js.map +1 -1
  236. package/web/.next/server/chunks/ssr/{_f0d45e47._.js → _f46d2018._.js} +2 -2
  237. package/web/.next/server/chunks/ssr/{_f0d45e47._.js.map → _f46d2018._.js.map} +1 -1
  238. package/web/.next/server/chunks/ssr/_f602cc9f._.js +1 -1
  239. package/web/.next/server/chunks/ssr/_f602cc9f._.js.map +1 -1
  240. package/web/.next/server/chunks/ssr/{_20a56008._.js → _f71954a5._.js} +2 -2
  241. package/web/.next/server/chunks/ssr/{_20a56008._.js.map → _f71954a5._.js.map} +1 -1
  242. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  243. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  244. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  245. package/web/.next/server/chunks/ssr/src_presentation_web_0e291f0b._.js +1 -1
  246. package/web/.next/server/chunks/ssr/src_presentation_web_0e291f0b._.js.map +1 -1
  247. package/web/.next/server/chunks/ssr/{src_presentation_web_40673f0c._.js → src_presentation_web_16c83ab4._.js} +2 -2
  248. package/web/.next/server/chunks/ssr/{src_presentation_web_40673f0c._.js.map → src_presentation_web_16c83ab4._.js.map} +1 -1
  249. package/web/.next/server/chunks/ssr/src_presentation_web_1d8d177f._.js +1 -1
  250. package/web/.next/server/chunks/ssr/src_presentation_web_1d8d177f._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/src_presentation_web_450b58fc._.js +1 -1
  252. package/web/.next/server/chunks/ssr/src_presentation_web_450b58fc._.js.map +1 -1
  253. package/web/.next/server/chunks/ssr/src_presentation_web_47727150._.js +1 -1
  254. package/web/.next/server/chunks/ssr/src_presentation_web_47727150._.js.map +1 -1
  255. package/web/.next/server/chunks/ssr/src_presentation_web_64fcfc84._.js +1 -1
  256. package/web/.next/server/chunks/ssr/src_presentation_web_64fcfc84._.js.map +1 -1
  257. package/web/.next/server/chunks/ssr/src_presentation_web_74b7bdb2._.js +1 -1
  258. package/web/.next/server/chunks/ssr/src_presentation_web_74b7bdb2._.js.map +1 -1
  259. package/web/.next/server/chunks/ssr/src_presentation_web_82aeca34._.js +1 -1
  260. package/web/.next/server/chunks/ssr/src_presentation_web_82aeca34._.js.map +1 -1
  261. package/web/.next/server/chunks/ssr/src_presentation_web_8a564d47._.js +1 -1
  262. package/web/.next/server/chunks/ssr/src_presentation_web_8a564d47._.js.map +1 -1
  263. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +1 -1
  264. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -1
  265. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_f4f3fad9.js +1 -1
  266. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_f4f3fad9.js.map +1 -1
  267. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_agents_page_actions_d4bd4711.js +1 -1
  268. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_agents_page_actions_d4bd4711.js.map +1 -1
  269. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_onboarding_page_actions_bb695e8d.js +1 -1
  270. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_onboarding_page_actions_bb695e8d.js.map +1 -1
  271. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_ac47e420.js +1 -1
  272. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_ac47e420.js.map +1 -1
  273. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_projects_page_actions_c91a23a8.js +1 -1
  274. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_projects_page_actions_c91a23a8.js.map +1 -1
  275. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_63c2d912.js +1 -1
  276. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_63c2d912.js.map +1 -1
  277. package/web/.next/server/chunks/ssr/src_presentation_web_a53a3da6._.js +1 -1
  278. package/web/.next/server/chunks/ssr/src_presentation_web_a53a3da6._.js.map +1 -1
  279. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_246617fe._.js +3 -3
  280. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js +1 -1
  281. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js.map +1 -1
  282. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +1 -1
  283. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js +1 -1
  284. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js.map +1 -1
  285. package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js +1 -1
  286. package/web/.next/server/chunks/ssr/src_presentation_web_b1b3c26c._.js +1 -1
  287. package/web/.next/server/chunks/ssr/src_presentation_web_b1b3c26c._.js.map +1 -1
  288. package/web/.next/server/chunks/ssr/src_presentation_web_b98a4353._.js +1 -1
  289. package/web/.next/server/chunks/ssr/src_presentation_web_b98a4353._.js.map +1 -1
  290. package/web/.next/server/chunks/ssr/src_presentation_web_c96ca051._.js +1 -1
  291. package/web/.next/server/chunks/ssr/src_presentation_web_c96ca051._.js.map +1 -1
  292. package/web/.next/server/chunks/ssr/{src_presentation_web_e812a69b._.js → src_presentation_web_cb0d2c28._.js} +2 -2
  293. package/web/.next/server/chunks/ssr/{src_presentation_web_e812a69b._.js.map → src_presentation_web_cb0d2c28._.js.map} +1 -1
  294. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js +1 -1
  295. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js.map +1 -1
  296. package/web/.next/server/chunks/ssr/src_presentation_web_components_agent-editor_agent-editor-tabs_tsx_d5a954b4._.js +1 -1
  297. package/web/.next/server/chunks/ssr/src_presentation_web_components_agent-editor_agent-editor-tabs_tsx_d5a954b4._.js.map +1 -1
  298. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  299. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web_d3858f16._.js +1 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web_d3858f16._.js.map +1 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web_d7f8130c._.js +1 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web_d7f8130c._.js.map +1 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web_dddd8ccd._.js +1 -1
  305. package/web/.next/server/chunks/ssr/src_presentation_web_dddd8ccd._.js.map +1 -1
  306. package/web/.next/server/chunks/ssr/src_presentation_web_e13d58b0._.js +1 -1
  307. package/web/.next/server/chunks/ssr/src_presentation_web_e13d58b0._.js.map +1 -1
  308. package/web/.next/server/chunks/ssr/src_presentation_web_ee94a9aa._.js +1 -1
  309. package/web/.next/server/chunks/ssr/src_presentation_web_ee94a9aa._.js.map +1 -1
  310. package/web/.next/server/chunks/ssr/src_presentation_web_f0fcfdff._.js +1 -1
  311. package/web/.next/server/chunks/ssr/src_presentation_web_f0fcfdff._.js.map +1 -1
  312. package/web/.next/server/chunks/ssr/src_presentation_web_f17e8516._.js +1 -1
  313. package/web/.next/server/chunks/ssr/src_presentation_web_f17e8516._.js.map +1 -1
  314. package/web/.next/server/chunks/ssr/src_presentation_web_f7180fec._.js +1 -1
  315. package/web/.next/server/chunks/ssr/src_presentation_web_f7180fec._.js.map +1 -1
  316. package/web/.next/server/pages/500.html +2 -2
  317. package/web/.next/server/server-reference-manifest.js +1 -1
  318. package/web/.next/server/server-reference-manifest.json +111 -111
  319. package/web/.next/static/chunks/{5faa828877b1e669.js → 03dda23205877d8b.js} +1 -1
  320. package/web/.next/static/chunks/{4bf4f333302e24a4.js → 054e3a5f5ff4db71.js} +1 -1
  321. package/web/.next/static/chunks/{a868014dbe1b4e42.js → 06e58041911c290b.js} +1 -1
  322. package/web/.next/static/chunks/{b5ff852fee23795d.js → 089ef5b749d79ebd.js} +1 -1
  323. package/web/.next/static/chunks/{1a093b13a9d6952e.js → 0d106010c498c198.js} +2 -2
  324. package/web/.next/static/chunks/193e5a0540757f5e.js +1 -0
  325. package/web/.next/static/chunks/{9abc3e68af98e636.js → 25111a2f2597f500.js} +1 -1
  326. package/web/.next/static/chunks/285e724d07901ef6.js +1 -0
  327. package/web/.next/static/chunks/{3c396f63ebefe875.js → 2b2bfc0465b18a7d.js} +1 -1
  328. package/web/.next/static/chunks/{6af99a08ccacdbce.js → 2b436562e69d2827.js} +1 -1
  329. package/web/.next/static/chunks/{8c96a835b3b0dc44.js → 2e3844d0ac487ac7.js} +1 -1
  330. package/web/.next/static/chunks/325859b8a9482427.js +1 -0
  331. package/web/.next/static/chunks/{2773e7b2587bc9cc.js → 44ab458ceb89d85d.js} +1 -1
  332. package/web/.next/static/chunks/4fdf36904f5421a6.js +1 -0
  333. package/web/.next/static/chunks/59004c65d552581c.js +1 -0
  334. package/web/.next/static/chunks/{0edcdc8a2dd06b7a.js → 5c4837e88a3431b8.js} +1 -1
  335. package/web/.next/static/chunks/{a131f868af7f1f7c.js → 74cdd562eb663f72.js} +1 -1
  336. package/web/.next/static/chunks/{0315591c972888a6.js → 7670d76d4ee743e6.js} +1 -1
  337. package/web/.next/static/chunks/{02d88da9fd656fcd.js → 83fc784ce05a701e.js} +1 -1
  338. package/web/.next/static/chunks/{460cedaa85c821e7.js → 8dd4fdd20b103a66.js} +1 -1
  339. package/web/.next/static/chunks/9336bdc7fc319282.js +1 -0
  340. package/web/.next/static/chunks/9d285565922b2de7.js +1 -0
  341. package/web/.next/static/chunks/{45eeca36eabbed23.js → 9f7f2a11937d87eb.js} +1 -1
  342. package/web/.next/static/chunks/{c3931fdbae836be6.js → a7c7bcfb6f7696a3.js} +1 -1
  343. package/web/.next/static/chunks/{9f7985e2a73929a2.js → a8f57d2a12849f32.js} +1 -1
  344. package/web/.next/static/chunks/{0e1c933065a1100a.js → abe98954ccdf29db.js} +1 -1
  345. package/web/.next/static/chunks/{4378715fa2b5e7de.js → b05808da85e8b34c.js} +1 -1
  346. package/web/.next/static/chunks/{b5dc7979d66caa38.js → b5f83e5e1dad23d5.js} +1 -1
  347. package/web/.next/static/chunks/{6d2074fa3453d333.js → b8293a56f257e5a2.js} +1 -1
  348. package/web/.next/static/chunks/{bc5b87e4068ba11d.js → c61c5e97c76dc733.js} +1 -1
  349. package/web/.next/static/chunks/c6b411bf31744ca7.js +1 -0
  350. package/web/.next/static/chunks/{bdaa907bf3d1d932.js → c732d6cc4c5e4343.js} +1 -1
  351. package/web/.next/static/chunks/{25a200f055ae5cba.js → d214d6a670f48d79.js} +1 -1
  352. package/web/.next/static/chunks/{6901861cb53ab483.js → d7b17a93a26e97c8.js} +1 -1
  353. package/web/.next/static/chunks/{a0325f77bbccc63d.js → d8f14fac959a6bd0.js} +1 -1
  354. package/web/.next/static/chunks/{24ea54516dc249c0.js → d98912f5b6cf4938.js} +1 -1
  355. package/web/.next/static/chunks/{21500b3fe3754296.js → df79667c16344317.js} +1 -1
  356. package/web/.next/static/chunks/{05e8df10619fb980.js → ec8f19328ad1ecd4.js} +1 -1
  357. package/web/.next/static/chunks/{e6e6ba783b2e4d14.js → f0157331838ac962.js} +1 -1
  358. package/web/.next/static/chunks/{c687ed21b9518d73.js → f757d865fae71faf.js} +1 -1
  359. package/web/.next/static/chunks/fb3cbb7f575a7128.js +1 -0
  360. package/web/.next/server/chunks/ssr/[root-of-the-server]__52ca7f88._.js +0 -3
  361. package/web/.next/static/chunks/03d7b81c2554d52f.js +0 -1
  362. package/web/.next/static/chunks/15acdaaea57bb459.js +0 -1
  363. package/web/.next/static/chunks/39fe1c1397d5483b.js +0 -1
  364. package/web/.next/static/chunks/495883829026f13f.js +0 -1
  365. package/web/.next/static/chunks/4b3a4f416a6eb1ac.js +0 -1
  366. package/web/.next/static/chunks/4b4160f36cf2a3d6.js +0 -1
  367. package/web/.next/static/chunks/7269537b2188650d.js +0 -1
  368. package/web/.next/static/chunks/b1534b2f3d814fef.js +0 -1
  369. package/web/.next/static/chunks/f6dc1ba364203bb2.js +0 -1
  370. /package/web/.next/static/{My4IQDygZ4BFTXkkKanja → 9zd-B2rWybTaAgE74IKiK}/_buildManifest.js +0 -0
  371. /package/web/.next/static/{My4IQDygZ4BFTXkkKanja → 9zd-B2rWybTaAgE74IKiK}/_clientMiddlewareManifest.json +0 -0
  372. /package/web/.next/static/{My4IQDygZ4BFTXkkKanja → 9zd-B2rWybTaAgE74IKiK}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[495072,a=>{"use strict";var b=a.i(237705),c=a.i(996380);async function d(a){if(!a?.trim())return{error:"Application ID is required"};try{let b=(0,c.resolve)("DeleteApplicationUseCase");return await b.execute(a),{}}catch(a){return{error:a instanceof Error?a.message:"Failed to delete application"}}}(0,a.i(701904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"40af1b8d14947496efa0de09d2e46341cfadd226ac",null),a.s(["deleteApplication",()=>d])},280496,a=>{"use strict";var b=a.i(237705),c=a.i(902157),d=a.i(660526),e=a.i(750227),f=a.i(874533),g=a.i(701904);let h={darwin:{cmd:"open",args:a=>[a]},linux:{cmd:"xdg-open",args:a=>[a]},win32:{cmd:"explorer",args:a=>[a]}};async function i(a){if(!a||!(0,e.isAbsolute)(a))return{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,c.existsSync)(a))return{success:!1,error:"Directory not found"};let b=h[(0,d.platform)()];if(!b)return{success:!1,error:`Unsupported platform: ${(0,d.platform)()}`};let g=(0,e.normalize)(a),i=(0,f.spawn)(b.cmd,b.args(g),{detached:!0,stdio:"ignore"});return i.on("error",()=>void 0),i.unref(),{success:!0,path:a}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open folder"}}}(0,g.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"40e7ea921079c1a8fe79fc7cfb59743f718c5944f7",null),a.s(["openFolder",()=>i])},93225,941872,609959,879124,839353,529207,a=>{"use strict";var b=a.i(237705),c=a.i(996380),d=a.i(701904);async function e(a){if(!a?.trim())return{success:!1,error:"Repository id is required"};try{let b=(0,c.resolve)("SyncRepositoryMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to sync repository"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"40eb53de65273a529e251542555f94321ea9c2fcaf",null),a.s(["syncRepository",()=>e],93225);var f=a.i(633244);async function g(){try{return(0,f.getSettings)().onboardingComplete}catch{return!1}}async function h(){return(0,c.resolve)("CheckAgentAuthUseCase").execute()}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"002230a65a9a52766f2fac7b9bafe2f0a0ab4ff5f5",null),a.s(["isAgentSetupComplete",()=>g],941872),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"003eb1909cd10ed1e04526145e4a21282e819a745e",null),a.s(["checkAgentAuth",()=>h],609959);var i=a.i(874533),j=a.i(825832);function k(a,b){return new Promise(c=>{try{let d=j.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)(a,b,d,(a,b)=>{if(a)return void c({installed:!1,version:null});let d=b.match(/(\d+\.\d+(?:\.\d+)?)/);c({installed:!0,version:d?.[1]??null})})}catch{c({installed:!1,version:null})}})}async function l(){let[a,b,d]=await Promise.all([k("git",["--version"]),k("gh",["--version"]),(async()=>{try{let a=(0,c.resolve)("ListToolsUseCase");return await a.execute()}catch{return[]}})()]),e=d.find(a=>"git"===a.id),f=d.find(a=>"gh"===a.id);return{git:{...a,installCommand:e?.installCommand??null,installUrl:e?.website??"https://git-scm.com"},gh:{...b,installCommand:f?.installCommand??null,installUrl:f?.website??"https://cli.github.com"}}}async function m(a,b){if(!a?.trim())return{success:!1,error:"id is required"};try{let d=(0,c.resolve)("DeleteRepositoryUseCase");return await d.execute(a,{deleteFromDisk:b?.deleteFromDisk===!0}),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete repository"}}}async function n(a){let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);return d?{name:d.name,description:d.description}:null}(0,d.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"00f312436a846d36665ad6519b2a873685e7baa13f",null),a.s(["checkToolStatus",()=>l],879124),(0,d.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"60495f1a3ee94d5d2693e35665a5b94c6c425339ab",null),a.s(["deleteRepository",()=>m],839353),(0,d.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"4094d93eeeace2053edf550148c9336dfa0384d465",null),a.s(["getFeatureMetadata",()=>n],529207)},235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"60f4c819a13f54bcc8320595c03e11fb6cafe8913b",null),(0,b.registerServerReference)(i,"60512cbf40d623c8d4161ea201c3b2ef0bbec9a090",null),a.s(["getGitRepoInfo",()=>h])},694516,a=>{"use strict";var b=a.i(912513),c=a.i(889253),d=a.i(723504),e=a.i(408115),f=a.i(827900),g=a.i(673350),h=a.i(673101),i=a.i(654775),j=a.i(265324),k=a.i(433841),l=a.i(46646),m=a.i(868378),n=a.i(268670),o=a.i(685321),p=a.i(284095),q=a.i(656799),r=a.i(280496),s=a.i(93225),t=a.i(794691),u=a.i(477710),v=a.i(145395),w=a.i(941872),x=a.i(609959),y=a.i(879124),z=a.i(576707),A=a.i(410528),B=a.i(150845),C=a.i(26604),D=a.i(354723),E=a.i(118942),F=a.i(342886),G=a.i(649560),H=a.i(839353),I=a.i(495072),J=a.i(529207),K=a.i(235556);a.s([],549436),a.i(549436),a.s(["0015f0a240c29915a74257d5ff2d7d15b32c6a778d",()=>b.pickFolder,"002230a65a9a52766f2fac7b9bafe2f0a0ab4ff5f5",()=>w.isAgentSetupComplete,"003eb1909cd10ed1e04526145e4a21282e819a745e",()=>x.checkAgentAuth,"00613a83ba2b2619c9ef46303abae5aded26339bc3",()=>i.listGitHubOrganizations,"006ff5a74754817b8a495d7ba26e66c354851f6c99",()=>c.getDefaultAgentAndModel,"00d2c30c2b08e36b014924412d0cd61610cd91c78e",()=>e.checkAllAgentsStatus,"00d43390ab8112b0e6ec134ef3485ab210e36f7842",()=>d.getAllAgentModels,"00f312436a846d36665ad6519b2a873685e7baa13f",()=>y.checkToolStatus,"4005923232df16201d86b35c46dbbe719725cbcd26",()=>m.deployApplication,"401846920f6fb739e32233d9d6a6df7945b8621c00",()=>k.deployFeature,"403ab98df2cf8db571b47142cd90ab7c7f297fa90f",()=>h.listGitHubRepositories,"4047fcf9280c5bc168edadf9f0c951bc2514b41fe0",()=>D.startFeature,"404b80493cf36c04e22e68ebf8f56c46bf55d904c0",()=>E.stopFeature,"405723722c9eb9b4888b52203cfb121401f0c61a80",()=>t.getDeploymentLogs,"4070f2c934a9ed351d223ad18ae9602cff12614292",()=>C.resumeFeature,"408a28f520d819792447d4b47d9b73a5ddf7296469",()=>l.deployRepository,"4094d93eeeace2053edf550148c9336dfa0384d465",()=>J.getFeatureMetadata,"409ab95b1ec58ad7dd578b018e11d5bd766839f8bc",()=>n.stopDeployment,"40ab7fa1f69e2aec8b94563e16d0019f3589ec2f2e",()=>p.openIde,"40af1b8d14947496efa0de09d2e46341cfadd226ac",()=>I.deleteApplication,"40b95792d8bb0de2aa9914ff42b671ff42b87c24ba",()=>q.openShell,"40ba17f62f174f4f88aa0ea4a373db347247ae1171",()=>u.createProjectAndFeature,"40c4d25fb30555d92bf75dd650e2cce9b8be92dc0b",()=>z.createProjectFolder,"40c64b253cb9310f09f151401d5eb06957db761efa",()=>F.unarchiveFeature,"40d0ac4c8ca5c179014f909f203d903942417295df",()=>A.archiveFeature,"40d4837169557e75f0be6d0f89f7fea0ff41eb89fc",()=>G.addRepository,"40e011f8f2f54f36460ff5310dd49178590a992d44",()=>j.importGitHubRepository,"40e7ea921079c1a8fe79fc7cfb59743f718c5944f7",()=>r.openFolder,"40eb53de65273a529e251542555f94321ea9c2fcaf",()=>s.syncRepository,"40ed3ea24841c9c4280513ab004dcdbce3d545bcdb",()=>o.getDeploymentStatus,"40f744f8f8785a86cc8dc9487da8d64ca353d264af",()=>v.createApplication,"40fcb38a7daafc835826043ee30ef771eae2a2f635",()=>g.globalSearch,"60036293085b1751ff35875b7762b2353bb09757b5",()=>f.updateAgentAndModel,"60495f1a3ee94d5d2693e35665a5b94c6c425339ab",()=>H.deleteRepository,"60f4c819a13f54bcc8320595c03e11fb6cafe8913b",()=>K.getGitRepoInfo,"783175472a45c2823bb1c4751b36e777308131d27d",()=>B.deleteFeature],694516)}];
1
+ module.exports=[495072,a=>{"use strict";var b=a.i(237705),c=a.i(996380);async function d(a){if(!a?.trim())return{error:"Application ID is required"};try{let b=(0,c.resolve)("DeleteApplicationUseCase");return await b.execute(a),{}}catch(a){return{error:a instanceof Error?a.message:"Failed to delete application"}}}(0,a.i(701904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"400601cc704fc3a542db95c4219b7261168cbe675d",null),a.s(["deleteApplication",()=>d])},280496,a=>{"use strict";var b=a.i(237705),c=a.i(902157),d=a.i(660526),e=a.i(750227),f=a.i(874533),g=a.i(701904);let h={darwin:{cmd:"open",args:a=>[a]},linux:{cmd:"xdg-open",args:a=>[a]},win32:{cmd:"explorer",args:a=>[a]}};async function i(a){if(!a||!(0,e.isAbsolute)(a))return{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,c.existsSync)(a))return{success:!1,error:"Directory not found"};let b=h[(0,d.platform)()];if(!b)return{success:!1,error:`Unsupported platform: ${(0,d.platform)()}`};let g=(0,e.normalize)(a),i=(0,f.spawn)(b.cmd,b.args(g),{detached:!0,stdio:"ignore"});return i.on("error",()=>void 0),i.unref(),{success:!0,path:a}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open folder"}}}(0,g.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"40024b9babaf0ccba2c9644e1719947f9662db82da",null),a.s(["openFolder",()=>i])},93225,941872,609959,879124,839353,529207,a=>{"use strict";var b=a.i(237705),c=a.i(996380),d=a.i(701904);async function e(a){if(!a?.trim())return{success:!1,error:"Repository id is required"};try{let b=(0,c.resolve)("SyncRepositoryMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to sync repository"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"403bcc64cd5c7afe5cb7933130b5d71e9cb6913d44",null),a.s(["syncRepository",()=>e],93225);var f=a.i(633244);async function g(){try{return(0,f.getSettings)().onboardingComplete}catch{return!1}}async function h(){return(0,c.resolve)("CheckAgentAuthUseCase").execute()}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"000dc696afafd019691d30ebc74c3bb2bf6be80fc9",null),a.s(["isAgentSetupComplete",()=>g],941872),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"00043b20dfa79e7ce6d504a372669a2b7396e4f421",null),a.s(["checkAgentAuth",()=>h],609959);var i=a.i(874533),j=a.i(825832);function k(a,b){return new Promise(c=>{try{let d=j.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)(a,b,d,(a,b)=>{if(a)return void c({installed:!1,version:null});let d=b.match(/(\d+\.\d+(?:\.\d+)?)/);c({installed:!0,version:d?.[1]??null})})}catch{c({installed:!1,version:null})}})}async function l(){let[a,b,d]=await Promise.all([k("git",["--version"]),k("gh",["--version"]),(async()=>{try{let a=(0,c.resolve)("ListToolsUseCase");return await a.execute()}catch{return[]}})()]),e=d.find(a=>"git"===a.id),f=d.find(a=>"gh"===a.id);return{git:{...a,installCommand:e?.installCommand??null,installUrl:e?.website??"https://git-scm.com"},gh:{...b,installCommand:f?.installCommand??null,installUrl:f?.website??"https://cli.github.com"}}}async function m(a,b){if(!a?.trim())return{success:!1,error:"id is required"};try{let d=(0,c.resolve)("DeleteRepositoryUseCase");return await d.execute(a,{deleteFromDisk:b?.deleteFromDisk===!0}),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete repository"}}}async function n(a){let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);return d?{name:d.name,description:d.description}:null}(0,d.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"00fd3bb249b5c2f4771f7eac594bf5656eaf959cdb",null),a.s(["checkToolStatus",()=>l],879124),(0,d.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"608cb7bed4e740de6ec1034873b198d85e0771cdfb",null),a.s(["deleteRepository",()=>m],839353),(0,d.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"40127b07baac3bb5494e3d8ad7b721b35a467f4a93",null),a.s(["getFeatureMetadata",()=>n],529207)},235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"60dd3bba8d40f7d7eaab9cf25cfc4a5eedd85c6c3c",null),(0,b.registerServerReference)(i,"60edd8fb9c2f2b88ef5efc6ae8270fc513c08281a5",null),a.s(["getGitRepoInfo",()=>h])},694516,a=>{"use strict";var b=a.i(912513),c=a.i(889253),d=a.i(723504),e=a.i(408115),f=a.i(827900),g=a.i(673350),h=a.i(673101),i=a.i(654775),j=a.i(265324),k=a.i(433841),l=a.i(46646),m=a.i(868378),n=a.i(268670),o=a.i(685321),p=a.i(284095),q=a.i(656799),r=a.i(280496),s=a.i(93225),t=a.i(794691),u=a.i(477710),v=a.i(145395),w=a.i(941872),x=a.i(609959),y=a.i(879124),z=a.i(576707),A=a.i(410528),B=a.i(150845),C=a.i(26604),D=a.i(354723),E=a.i(118942),F=a.i(342886),G=a.i(649560),H=a.i(839353),I=a.i(495072),J=a.i(529207),K=a.i(235556);a.s([],549436),a.i(549436),a.s(["00043b20dfa79e7ce6d504a372669a2b7396e4f421",()=>x.checkAgentAuth,"000dc696afafd019691d30ebc74c3bb2bf6be80fc9",()=>w.isAgentSetupComplete,"00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a",()=>c.getDefaultAgentAndModel,"00c38b234d35460bb11ea6a1b0fff1c22e01c08873",()=>e.checkAllAgentsStatus,"00c4af7e37cefa35ac7db65fa9b45995caf677a597",()=>i.listGitHubOrganizations,"00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392",()=>d.getAllAgentModels,"00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330",()=>b.pickFolder,"00fd3bb249b5c2f4771f7eac594bf5656eaf959cdb",()=>y.checkToolStatus,"40024b9babaf0ccba2c9644e1719947f9662db82da",()=>r.openFolder,"400601cc704fc3a542db95c4219b7261168cbe675d",()=>I.deleteApplication,"40127b07baac3bb5494e3d8ad7b721b35a467f4a93",()=>J.getFeatureMetadata,"4015ea81e1b2a02fe57f374a012b37e2cd322146f1",()=>g.globalSearch,"402a545f24583952d99d18566abf474dd10d07741b",()=>o.getDeploymentStatus,"402a7da73158b6bd6c8fb8ab5b0344dc0e0f08e228",()=>u.createProjectAndFeature,"402b7881a750d5c7c7125153b65fdd64c555ddcdc2",()=>v.createApplication,"403a844cbb36e5d50051fe552f050ed35a8b88f317",()=>l.deployRepository,"403bcc64cd5c7afe5cb7933130b5d71e9cb6913d44",()=>s.syncRepository,"403c93928208c54fe25784ff60dcb073f25d1055c1",()=>n.stopDeployment,"4047cfaa45cd7417712356735bfbb78f93a103592a",()=>F.unarchiveFeature,"40559cc32878be443a5d902e563fa65ac29566c575",()=>m.deployApplication,"405f5f5259eaed6742d1a59f416d4319ea63f3bb3d",()=>j.importGitHubRepository,"405f73e1d0740c127aafceadc63304676969dbb19a",()=>A.archiveFeature,"406f6bfbd22a176bf6d0bca648d1bd1ef29efb8c31",()=>p.openIde,"4093cfae5c300fc17a16104784825641972f80a2c2",()=>E.stopFeature,"40a8e46a1833838a96e4b3f97741ab37054dc3a415",()=>G.addRepository,"40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf",()=>k.deployFeature,"40b195fc3bd3d0b6f99d9ba0ce3b624b5201e8e478",()=>D.startFeature,"40cede021cd5c33e6bf9d5871c23ea5e73f6809b4b",()=>q.openShell,"40d1082c73e97a2c5f99ef11d815cefe59a26e8998",()=>h.listGitHubRepositories,"40da762c4b34966ae0ac466fdc38dd417bb5f12247",()=>z.createProjectFolder,"40e827f64795e580b75e126ddfefa3a9a722da877c",()=>t.getDeploymentLogs,"40ef132579c95dc894986b34b75cb89dd65b39da86",()=>C.resumeFeature,"608cb7bed4e740de6ec1034873b198d85e0771cdfb",()=>H.deleteRepository,"60afd0d4fa2a6638646f7d23dc6c8673fd27a69207",()=>f.updateAgentAndModel,"60dd3bba8d40f7d7eaab9cf25cfc4a5eedd85c6c3c",()=>K.getGitRepoInfo,"782094d73ba803f25ee4b483796e8b0625c3c6564f",()=>B.deleteFeature],694516)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_dddd8ccd._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/delete-application.ts","../../../../../../../src/presentation/web/app/actions/open-folder.ts","../../../../../../../src/presentation/web/app/actions/sync-repository.ts","../../../../../../../src/presentation/web/app/actions/agent-setup-flag.ts","../../../../../../../src/presentation/web/app/actions/check-agent-auth.ts","../../../../../../../src/presentation/web/app/actions/check-tool-status.ts","../../../../../../../src/presentation/web/app/actions/delete-repository.ts","../../../../../../../src/presentation/web/app/actions/get-feature-metadata.ts","../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteApplicationUseCase } from '@shepai/core/application/use-cases/applications/delete-application.use-case';\n\nexport async function deleteApplication(id: string): Promise<{ error?: string }> {\n if (!id?.trim()) {\n return { error: 'Application ID is required' };\n }\n\n try {\n const useCase = resolve<DeleteApplicationUseCase>('DeleteApplicationUseCase');\n await useCase.execute(id);\n return {};\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete application';\n return { error: message };\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { platform } from 'node:os';\nimport { isAbsolute, normalize } from 'node:path';\nimport { spawn } from 'node:child_process';\n\n// Use a record lookup instead of if/else to prevent the bundler from\n// tree-shaking platform branches at build time. Turbopack evaluates\n// os.platform() during the build and dead-code-eliminates unused branches,\n// baking in the CI platform (linux) and breaking macOS/Windows installs.\nconst FOLDER_COMMANDS: Record<string, { cmd: string; args: (path: string) => string[] }> = {\n darwin: { cmd: 'open', args: (p) => [p] },\n linux: { cmd: 'xdg-open', args: (p) => [p] },\n win32: { cmd: 'explorer', args: (p) => [p] },\n};\n\nexport async function openFolder(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; path?: string }> {\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n try {\n if (!existsSync(repositoryPath)) {\n return { success: false, error: 'Directory not found' };\n }\n\n const entry = FOLDER_COMMANDS[platform()];\n if (!entry) {\n return {\n success: false,\n error: `Unsupported platform: ${platform()}`,\n };\n }\n\n // Normalize to platform-native separators — explorer.exe on Windows\n // does not understand forward-slash paths and falls back to Documents.\n const nativePath = normalize(repositoryPath);\n\n const child = spawn(entry.cmd, entry.args(nativePath), {\n detached: true,\n stdio: 'ignore',\n });\n child.on('error', () => undefined); // Prevent uncaught exception on spawn failure\n child.unref();\n\n return { success: true, path: repositoryPath };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { SyncRepositoryMainUseCase } from '@shepai/core/application/use-cases/repositories/sync-repository-main.use-case';\n\nexport async function syncRepository(\n repositoryId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!repositoryId?.trim()) {\n return { success: false, error: 'Repository id is required' };\n }\n\n try {\n const useCase = resolve<SyncRepositoryMainUseCase>('SyncRepositoryMainUseCase');\n await useCase.execute(repositoryId);\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to sync repository';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\n/**\n * Check whether onboarding has been completed.\n * Delegates to the in-memory settings singleton (zero DB overhead).\n */\nexport async function isAgentSetupComplete(): Promise<boolean> {\n try {\n return getSettings().onboardingComplete;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CheckAgentAuthUseCase } from '@shepai/core/application/use-cases/agents/check-agent-auth.use-case';\n\n/**\n * Result shape for the agent auth checklist on the onboarding empty state.\n * Matches CheckAgentAuthResult from the use case 1:1 — kept locally so the\n * web type stays serializable through the Server Actions boundary.\n */\nexport interface AgentAuthStatus {\n agentType: string;\n /** Whether the CLI tool binary is installed */\n installed: boolean;\n /** Whether credentials / auth appear valid */\n authenticated: boolean;\n /** Human-readable label for the agent */\n label: string;\n /** CLI binary name (e.g. \"claude\", \"gemini\") */\n binaryName: string | null;\n /** Shell command to install the tool (e.g. \"npm install -g @anthropic-ai/claude-code\") */\n installCommand: string | null;\n /** Instructions to authenticate if not authenticated */\n authCommand: string | null;\n}\n\n/**\n * Thin server-action wrapper around CheckAgentAuthUseCase. All agent-type\n * mapping, tool lookup, and platform credential detection live in:\n *\n * packages/core/src/application/use-cases/agents/check-agent-auth.use-case.ts\n * packages/core/src/infrastructure/services/agent-auth-detector/platform-agent-auth-detector.service.ts\n */\nexport async function checkAgentAuth(): Promise<AgentAuthStatus> {\n const useCase = resolve<CheckAgentAuthUseCase>('CheckAgentAuthUseCase');\n return useCase.execute();\n}\n","'use server';\n\nimport { execFile } from 'node:child_process';\nimport { IS_WINDOWS } from '@shepai/core/infrastructure/platform';\nimport { resolve } from '@/lib/server-container';\nimport type { ListToolsUseCase } from '@shepai/core/application/use-cases/tools/list-tools.use-case';\n\nexport interface ToolStatusEntry {\n installed: boolean;\n version: string | null;\n /** Platform-specific install command from tool JSON metadata */\n installCommand: string | null;\n /** Documentation/website URL */\n installUrl: string | null;\n}\n\nexport interface ToolStatusResult {\n git: ToolStatusEntry;\n gh: ToolStatusEntry;\n}\n\nfunction getVersion(\n command: string,\n args: string[]\n): Promise<{ installed: boolean; version: string | null }> {\n return new Promise((resolve) => {\n try {\n const opts = IS_WINDOWS ? { timeout: 5000, windowsHide: true } : { timeout: 5000 };\n execFile(command, args, opts, (error, stdout) => {\n if (error) {\n resolve({ installed: false, version: null });\n return;\n }\n // Extract version number from output like \"git version 2.43.0\" or \"gh version 2.40.1\"\n const match = stdout.match(/(\\d+\\.\\d+(?:\\.\\d+)?)/);\n resolve({ installed: true, version: match?.[1] ?? null });\n });\n } catch {\n resolve({ installed: false, version: null });\n }\n });\n}\n\nexport async function checkToolStatus(): Promise<ToolStatusResult> {\n // Run version checks and tool metadata lookup in parallel\n const [gitVersion, ghVersion, tools] = await Promise.all([\n getVersion('git', ['--version']),\n getVersion('gh', ['--version']),\n (async () => {\n try {\n const useCase = resolve<ListToolsUseCase>('ListToolsUseCase');\n return await useCase.execute();\n } catch {\n return [];\n }\n })(),\n ]);\n\n const gitTool = tools.find((t) => t.id === 'git');\n const ghTool = tools.find((t) => t.id === 'gh');\n\n return {\n git: {\n ...gitVersion,\n installCommand: gitTool?.installCommand ?? null,\n installUrl: gitTool?.website ?? 'https://git-scm.com',\n },\n gh: {\n ...ghVersion,\n installCommand: ghTool?.installCommand ?? null,\n installUrl: ghTool?.website ?? 'https://cli.github.com',\n },\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteRepositoryUseCase } from '@shepai/core/application/use-cases/repositories/delete-repository.use-case';\n\nexport interface DeleteRepositoryActionOptions {\n deleteFromDisk?: boolean;\n}\n\nexport async function deleteRepository(\n repositoryId: string,\n options?: DeleteRepositoryActionOptions\n): Promise<{ success: boolean; error?: string }> {\n if (!repositoryId?.trim()) {\n return { success: false, error: 'id is required' };\n }\n\n try {\n const useCase = resolve<DeleteRepositoryUseCase>('DeleteRepositoryUseCase');\n await useCase.execute(repositoryId, { deleteFromDisk: options?.deleteFromDisk === true });\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete repository';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\n/**\n * Lightweight server action to fetch a single feature's name and description.\n * Used by the SSE effect to update node metadata after AI metadata generation\n * without a full graph reconcile (which can overwrite SSE-driven state).\n */\nexport async function getFeatureMetadata(\n featureId: string\n): Promise<{ name: string; description: string } | null> {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature) return null;\n return { name: feature.name, description: feature.description };\n}\n","'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '0015f0a240c29915a74257d5ff2d7d15b32c6a778d'} from 'ACTIONS_MODULE0'\nexport {getDefaultAgentAndModel as '006ff5a74754817b8a495d7ba26e66c354851f6c99'} from 'ACTIONS_MODULE1'\nexport {getAllAgentModels as '00d43390ab8112b0e6ec134ef3485ab210e36f7842'} from 'ACTIONS_MODULE2'\nexport {checkAllAgentsStatus as '00d2c30c2b08e36b014924412d0cd61610cd91c78e'} from 'ACTIONS_MODULE3'\nexport {updateAgentAndModel as '60036293085b1751ff35875b7762b2353bb09757b5'} from 'ACTIONS_MODULE4'\nexport {globalSearch as '40fcb38a7daafc835826043ee30ef771eae2a2f635'} from 'ACTIONS_MODULE5'\nexport {listGitHubRepositories as '403ab98df2cf8db571b47142cd90ab7c7f297fa90f'} from 'ACTIONS_MODULE6'\nexport {listGitHubOrganizations as '00613a83ba2b2619c9ef46303abae5aded26339bc3'} from 'ACTIONS_MODULE7'\nexport {importGitHubRepository as '40e011f8f2f54f36460ff5310dd49178590a992d44'} from 'ACTIONS_MODULE8'\nexport {deployFeature as '401846920f6fb739e32233d9d6a6df7945b8621c00'} from 'ACTIONS_MODULE9'\nexport {deployRepository as '408a28f520d819792447d4b47d9b73a5ddf7296469'} from 'ACTIONS_MODULE10'\nexport {deployApplication as '4005923232df16201d86b35c46dbbe719725cbcd26'} from 'ACTIONS_MODULE11'\nexport {stopDeployment as '409ab95b1ec58ad7dd578b018e11d5bd766839f8bc'} from 'ACTIONS_MODULE12'\nexport {getDeploymentStatus as '40ed3ea24841c9c4280513ab004dcdbce3d545bcdb'} from 'ACTIONS_MODULE13'\nexport {openIde as '40ab7fa1f69e2aec8b94563e16d0019f3589ec2f2e'} from 'ACTIONS_MODULE14'\nexport {openShell as '40b95792d8bb0de2aa9914ff42b671ff42b87c24ba'} from 'ACTIONS_MODULE15'\nexport {openFolder as '40e7ea921079c1a8fe79fc7cfb59743f718c5944f7'} from 'ACTIONS_MODULE16'\nexport {syncRepository as '40eb53de65273a529e251542555f94321ea9c2fcaf'} from 'ACTIONS_MODULE17'\nexport {getDeploymentLogs as '405723722c9eb9b4888b52203cfb121401f0c61a80'} from 'ACTIONS_MODULE18'\nexport {createProjectAndFeature as '40ba17f62f174f4f88aa0ea4a373db347247ae1171'} from 'ACTIONS_MODULE19'\nexport {createApplication as '40f744f8f8785a86cc8dc9487da8d64ca353d264af'} from 'ACTIONS_MODULE20'\nexport {isAgentSetupComplete as '002230a65a9a52766f2fac7b9bafe2f0a0ab4ff5f5'} from 'ACTIONS_MODULE21'\nexport {checkAgentAuth as '003eb1909cd10ed1e04526145e4a21282e819a745e'} from 'ACTIONS_MODULE22'\nexport {checkToolStatus as '00f312436a846d36665ad6519b2a873685e7baa13f'} from 'ACTIONS_MODULE23'\nexport {createProjectFolder as '40c4d25fb30555d92bf75dd650e2cce9b8be92dc0b'} from 'ACTIONS_MODULE24'\nexport {archiveFeature as '40d0ac4c8ca5c179014f909f203d903942417295df'} from 'ACTIONS_MODULE25'\nexport {deleteFeature as '783175472a45c2823bb1c4751b36e777308131d27d'} from 'ACTIONS_MODULE26'\nexport {resumeFeature as '4070f2c934a9ed351d223ad18ae9602cff12614292'} from 'ACTIONS_MODULE27'\nexport {startFeature as '4047fcf9280c5bc168edadf9f0c951bc2514b41fe0'} from 'ACTIONS_MODULE28'\nexport {stopFeature as '404b80493cf36c04e22e68ebf8f56c46bf55d904c0'} from 'ACTIONS_MODULE29'\nexport {unarchiveFeature as '40c64b253cb9310f09f151401d5eb06957db761efa'} from 'ACTIONS_MODULE30'\nexport {addRepository as '40d4837169557e75f0be6d0f89f7fea0ff41eb89fc'} from 'ACTIONS_MODULE31'\nexport {deleteRepository as '60495f1a3ee94d5d2693e35665a5b94c6c425339ab'} from 'ACTIONS_MODULE32'\nexport {deleteApplication as '40af1b8d14947496efa0de09d2e46341cfadd226ac'} from 'ACTIONS_MODULE33'\nexport {getFeatureMetadata as '4094d93eeeace2053edf550148c9336dfa0384d465'} from 'ACTIONS_MODULE34'\nexport {getGitRepoInfo as '60f4c819a13f54bcc8320595c03e11fb6cafe8913b'} from 'ACTIONS_MODULE35'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/delete-application.ts","../../../../../../../src/presentation/web/app/actions/open-folder.ts","../../../../../../../src/presentation/web/app/actions/sync-repository.ts","../../../../../../../src/presentation/web/app/actions/agent-setup-flag.ts","../../../../../../../src/presentation/web/app/actions/check-agent-auth.ts","../../../../../../../src/presentation/web/app/actions/check-tool-status.ts","../../../../../../../src/presentation/web/app/actions/delete-repository.ts","../../../../../../../src/presentation/web/app/actions/get-feature-metadata.ts","../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteApplicationUseCase } from '@shepai/core/application/use-cases/applications/delete-application.use-case';\n\nexport async function deleteApplication(id: string): Promise<{ error?: string }> {\n if (!id?.trim()) {\n return { error: 'Application ID is required' };\n }\n\n try {\n const useCase = resolve<DeleteApplicationUseCase>('DeleteApplicationUseCase');\n await useCase.execute(id);\n return {};\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete application';\n return { error: message };\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { platform } from 'node:os';\nimport { isAbsolute, normalize } from 'node:path';\nimport { spawn } from 'node:child_process';\n\n// Use a record lookup instead of if/else to prevent the bundler from\n// tree-shaking platform branches at build time. Turbopack evaluates\n// os.platform() during the build and dead-code-eliminates unused branches,\n// baking in the CI platform (linux) and breaking macOS/Windows installs.\nconst FOLDER_COMMANDS: Record<string, { cmd: string; args: (path: string) => string[] }> = {\n darwin: { cmd: 'open', args: (p) => [p] },\n linux: { cmd: 'xdg-open', args: (p) => [p] },\n win32: { cmd: 'explorer', args: (p) => [p] },\n};\n\nexport async function openFolder(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; path?: string }> {\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n try {\n if (!existsSync(repositoryPath)) {\n return { success: false, error: 'Directory not found' };\n }\n\n const entry = FOLDER_COMMANDS[platform()];\n if (!entry) {\n return {\n success: false,\n error: `Unsupported platform: ${platform()}`,\n };\n }\n\n // Normalize to platform-native separators — explorer.exe on Windows\n // does not understand forward-slash paths and falls back to Documents.\n const nativePath = normalize(repositoryPath);\n\n const child = spawn(entry.cmd, entry.args(nativePath), {\n detached: true,\n stdio: 'ignore',\n });\n child.on('error', () => undefined); // Prevent uncaught exception on spawn failure\n child.unref();\n\n return { success: true, path: repositoryPath };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { SyncRepositoryMainUseCase } from '@shepai/core/application/use-cases/repositories/sync-repository-main.use-case';\n\nexport async function syncRepository(\n repositoryId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!repositoryId?.trim()) {\n return { success: false, error: 'Repository id is required' };\n }\n\n try {\n const useCase = resolve<SyncRepositoryMainUseCase>('SyncRepositoryMainUseCase');\n await useCase.execute(repositoryId);\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to sync repository';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\n/**\n * Check whether onboarding has been completed.\n * Delegates to the in-memory settings singleton (zero DB overhead).\n */\nexport async function isAgentSetupComplete(): Promise<boolean> {\n try {\n return getSettings().onboardingComplete;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CheckAgentAuthUseCase } from '@shepai/core/application/use-cases/agents/check-agent-auth.use-case';\n\n/**\n * Result shape for the agent auth checklist on the onboarding empty state.\n * Matches CheckAgentAuthResult from the use case 1:1 — kept locally so the\n * web type stays serializable through the Server Actions boundary.\n */\nexport interface AgentAuthStatus {\n agentType: string;\n /** Whether the CLI tool binary is installed */\n installed: boolean;\n /** Whether credentials / auth appear valid */\n authenticated: boolean;\n /** Human-readable label for the agent */\n label: string;\n /** CLI binary name (e.g. \"claude\", \"gemini\") */\n binaryName: string | null;\n /** Shell command to install the tool (e.g. \"npm install -g @anthropic-ai/claude-code\") */\n installCommand: string | null;\n /** Instructions to authenticate if not authenticated */\n authCommand: string | null;\n}\n\n/**\n * Thin server-action wrapper around CheckAgentAuthUseCase. All agent-type\n * mapping, tool lookup, and platform credential detection live in:\n *\n * packages/core/src/application/use-cases/agents/check-agent-auth.use-case.ts\n * packages/core/src/infrastructure/services/agent-auth-detector/platform-agent-auth-detector.service.ts\n */\nexport async function checkAgentAuth(): Promise<AgentAuthStatus> {\n const useCase = resolve<CheckAgentAuthUseCase>('CheckAgentAuthUseCase');\n return useCase.execute();\n}\n","'use server';\n\nimport { execFile } from 'node:child_process';\nimport { IS_WINDOWS } from '@shepai/core/infrastructure/platform';\nimport { resolve } from '@/lib/server-container';\nimport type { ListToolsUseCase } from '@shepai/core/application/use-cases/tools/list-tools.use-case';\n\nexport interface ToolStatusEntry {\n installed: boolean;\n version: string | null;\n /** Platform-specific install command from tool JSON metadata */\n installCommand: string | null;\n /** Documentation/website URL */\n installUrl: string | null;\n}\n\nexport interface ToolStatusResult {\n git: ToolStatusEntry;\n gh: ToolStatusEntry;\n}\n\nfunction getVersion(\n command: string,\n args: string[]\n): Promise<{ installed: boolean; version: string | null }> {\n return new Promise((resolve) => {\n try {\n const opts = IS_WINDOWS ? { timeout: 5000, windowsHide: true } : { timeout: 5000 };\n execFile(command, args, opts, (error, stdout) => {\n if (error) {\n resolve({ installed: false, version: null });\n return;\n }\n // Extract version number from output like \"git version 2.43.0\" or \"gh version 2.40.1\"\n const match = stdout.match(/(\\d+\\.\\d+(?:\\.\\d+)?)/);\n resolve({ installed: true, version: match?.[1] ?? null });\n });\n } catch {\n resolve({ installed: false, version: null });\n }\n });\n}\n\nexport async function checkToolStatus(): Promise<ToolStatusResult> {\n // Run version checks and tool metadata lookup in parallel\n const [gitVersion, ghVersion, tools] = await Promise.all([\n getVersion('git', ['--version']),\n getVersion('gh', ['--version']),\n (async () => {\n try {\n const useCase = resolve<ListToolsUseCase>('ListToolsUseCase');\n return await useCase.execute();\n } catch {\n return [];\n }\n })(),\n ]);\n\n const gitTool = tools.find((t) => t.id === 'git');\n const ghTool = tools.find((t) => t.id === 'gh');\n\n return {\n git: {\n ...gitVersion,\n installCommand: gitTool?.installCommand ?? null,\n installUrl: gitTool?.website ?? 'https://git-scm.com',\n },\n gh: {\n ...ghVersion,\n installCommand: ghTool?.installCommand ?? null,\n installUrl: ghTool?.website ?? 'https://cli.github.com',\n },\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteRepositoryUseCase } from '@shepai/core/application/use-cases/repositories/delete-repository.use-case';\n\nexport interface DeleteRepositoryActionOptions {\n deleteFromDisk?: boolean;\n}\n\nexport async function deleteRepository(\n repositoryId: string,\n options?: DeleteRepositoryActionOptions\n): Promise<{ success: boolean; error?: string }> {\n if (!repositoryId?.trim()) {\n return { success: false, error: 'id is required' };\n }\n\n try {\n const useCase = resolve<DeleteRepositoryUseCase>('DeleteRepositoryUseCase');\n await useCase.execute(repositoryId, { deleteFromDisk: options?.deleteFromDisk === true });\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete repository';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\n/**\n * Lightweight server action to fetch a single feature's name and description.\n * Used by the SSE effect to update node metadata after AI metadata generation\n * without a full graph reconcile (which can overwrite SSE-driven state).\n */\nexport async function getFeatureMetadata(\n featureId: string\n): Promise<{ name: string; description: string } | null> {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature) return null;\n return { name: feature.name, description: feature.description };\n}\n","'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330'} from 'ACTIONS_MODULE0'\nexport {getDefaultAgentAndModel as '00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a'} from 'ACTIONS_MODULE1'\nexport {getAllAgentModels as '00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392'} from 'ACTIONS_MODULE2'\nexport {checkAllAgentsStatus as '00c38b234d35460bb11ea6a1b0fff1c22e01c08873'} from 'ACTIONS_MODULE3'\nexport {updateAgentAndModel as '60afd0d4fa2a6638646f7d23dc6c8673fd27a69207'} from 'ACTIONS_MODULE4'\nexport {globalSearch as '4015ea81e1b2a02fe57f374a012b37e2cd322146f1'} from 'ACTIONS_MODULE5'\nexport {listGitHubRepositories as '40d1082c73e97a2c5f99ef11d815cefe59a26e8998'} from 'ACTIONS_MODULE6'\nexport {listGitHubOrganizations as '00c4af7e37cefa35ac7db65fa9b45995caf677a597'} from 'ACTIONS_MODULE7'\nexport {importGitHubRepository as '405f5f5259eaed6742d1a59f416d4319ea63f3bb3d'} from 'ACTIONS_MODULE8'\nexport {deployFeature as '40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf'} from 'ACTIONS_MODULE9'\nexport {deployRepository as '403a844cbb36e5d50051fe552f050ed35a8b88f317'} from 'ACTIONS_MODULE10'\nexport {deployApplication as '40559cc32878be443a5d902e563fa65ac29566c575'} from 'ACTIONS_MODULE11'\nexport {stopDeployment as '403c93928208c54fe25784ff60dcb073f25d1055c1'} from 'ACTIONS_MODULE12'\nexport {getDeploymentStatus as '402a545f24583952d99d18566abf474dd10d07741b'} from 'ACTIONS_MODULE13'\nexport {openIde as '406f6bfbd22a176bf6d0bca648d1bd1ef29efb8c31'} from 'ACTIONS_MODULE14'\nexport {openShell as '40cede021cd5c33e6bf9d5871c23ea5e73f6809b4b'} from 'ACTIONS_MODULE15'\nexport {openFolder as '40024b9babaf0ccba2c9644e1719947f9662db82da'} from 'ACTIONS_MODULE16'\nexport {syncRepository as '403bcc64cd5c7afe5cb7933130b5d71e9cb6913d44'} from 'ACTIONS_MODULE17'\nexport {getDeploymentLogs as '40e827f64795e580b75e126ddfefa3a9a722da877c'} from 'ACTIONS_MODULE18'\nexport {createProjectAndFeature as '402a7da73158b6bd6c8fb8ab5b0344dc0e0f08e228'} from 'ACTIONS_MODULE19'\nexport {createApplication as '402b7881a750d5c7c7125153b65fdd64c555ddcdc2'} from 'ACTIONS_MODULE20'\nexport {isAgentSetupComplete as '000dc696afafd019691d30ebc74c3bb2bf6be80fc9'} from 'ACTIONS_MODULE21'\nexport {checkAgentAuth as '00043b20dfa79e7ce6d504a372669a2b7396e4f421'} from 'ACTIONS_MODULE22'\nexport {checkToolStatus as '00fd3bb249b5c2f4771f7eac594bf5656eaf959cdb'} from 'ACTIONS_MODULE23'\nexport {createProjectFolder as '40da762c4b34966ae0ac466fdc38dd417bb5f12247'} from 'ACTIONS_MODULE24'\nexport {archiveFeature as '405f73e1d0740c127aafceadc63304676969dbb19a'} from 'ACTIONS_MODULE25'\nexport {deleteFeature as '782094d73ba803f25ee4b483796e8b0625c3c6564f'} from 'ACTIONS_MODULE26'\nexport {resumeFeature as '40ef132579c95dc894986b34b75cb89dd65b39da86'} from 'ACTIONS_MODULE27'\nexport {startFeature as '40b195fc3bd3d0b6f99d9ba0ce3b624b5201e8e478'} from 'ACTIONS_MODULE28'\nexport {stopFeature as '4093cfae5c300fc17a16104784825641972f80a2c2'} from 'ACTIONS_MODULE29'\nexport {unarchiveFeature as '4047cfaa45cd7417712356735bfbb78f93a103592a'} from 'ACTIONS_MODULE30'\nexport {addRepository as '40a8e46a1833838a96e4b3f97741ab37054dc3a415'} from 'ACTIONS_MODULE31'\nexport {deleteRepository as '608cb7bed4e740de6ec1034873b198d85e0771cdfb'} from 'ACTIONS_MODULE32'\nexport {deleteApplication as '400601cc704fc3a542db95c4219b7261168cbe675d'} from 'ACTIONS_MODULE33'\nexport {getFeatureMetadata as '40127b07baac3bb5494e3d8ad7b721b35a467f4a93'} from 'ACTIONS_MODULE34'\nexport {getGitRepoInfo as '60dd3bba8d40f7d7eaab9cf25cfc4a5eedd85c6c3c'} from 'ACTIONS_MODULE35'\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[313630,a=>{"use strict";var b=a.i(237705),c=a.i(996380),d=a.i(140848);async function e(a){try{(0,d.requireFeatureFlag)("collaboration");let b=(0,c.resolve)("ConfigureSupervisorUseCase"),e=await b.execute({...a,scopeType:a.scopeType});return{ok:!0,policy:e}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to configure supervisor"}}}async function f(a){try{(0,d.requireFeatureFlag)("collaboration");let b=(0,c.resolve)("GetSupervisorPolicyUseCase"),e=await b.execute(a);return{ok:!0,policy:e}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to load supervisor policy"}}}async function g(a){try{(0,d.requireFeatureFlag)("collaboration");let b=(0,c.resolve)("EnableSupervisorUseCase"),e=await b.execute(a);return{ok:!0,policy:e}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to enable supervisor"}}}async function h(a){try{(0,d.requireFeatureFlag)("collaboration");let b=(0,c.resolve)("DisableSupervisorUseCase"),e=await b.execute(a);return{ok:!0,policy:e}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to disable supervisor"}}}(0,a.i(701904).ensureServerEntryExports)([e,f,g,h]),(0,b.registerServerReference)(e,"40c982a71203ed86da5a5950a0e5f91417c7ae6612",null),(0,b.registerServerReference)(f,"40a2b2fa50aec4e5a3c152d315da4ed1622a1805b7",null),(0,b.registerServerReference)(g,"40901c7854a7c9f9301d2390cdc9b013f1f7c0541b",null),(0,b.registerServerReference)(h,"408dab296d8ec417f8fc059ed68b9f55ff64d5c25a",null),a.s(["configureSupervisor",()=>e])},391094,a=>{"use strict";var b=a.i(912513),c=a.i(889253),d=a.i(723504),e=a.i(408115),f=a.i(827900),g=a.i(673350),h=a.i(673101),i=a.i(654775),j=a.i(265324),k=a.i(313630);a.s([],951625),a.i(951625),a.s(["0015f0a240c29915a74257d5ff2d7d15b32c6a778d",()=>b.pickFolder,"00613a83ba2b2619c9ef46303abae5aded26339bc3",()=>i.listGitHubOrganizations,"006ff5a74754817b8a495d7ba26e66c354851f6c99",()=>c.getDefaultAgentAndModel,"00d2c30c2b08e36b014924412d0cd61610cd91c78e",()=>e.checkAllAgentsStatus,"00d43390ab8112b0e6ec134ef3485ab210e36f7842",()=>d.getAllAgentModels,"403ab98df2cf8db571b47142cd90ab7c7f297fa90f",()=>h.listGitHubRepositories,"40c982a71203ed86da5a5950a0e5f91417c7ae6612",()=>k.configureSupervisor,"40e011f8f2f54f36460ff5310dd49178590a992d44",()=>j.importGitHubRepository,"40fcb38a7daafc835826043ee30ef771eae2a2f635",()=>g.globalSearch,"60036293085b1751ff35875b7762b2353bb09757b5",()=>f.updateAgentAndModel],391094)}];
1
+ module.exports=[313630,a=>{"use strict";var b=a.i(237705),c=a.i(996380),d=a.i(140848);async function e(a){try{(0,d.requireFeatureFlag)("collaboration");let b=(0,c.resolve)("ConfigureSupervisorUseCase"),e=await b.execute({...a,scopeType:a.scopeType});return{ok:!0,policy:e}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to configure supervisor"}}}async function f(a){try{(0,d.requireFeatureFlag)("collaboration");let b=(0,c.resolve)("GetSupervisorPolicyUseCase"),e=await b.execute(a);return{ok:!0,policy:e}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to load supervisor policy"}}}async function g(a){try{(0,d.requireFeatureFlag)("collaboration");let b=(0,c.resolve)("EnableSupervisorUseCase"),e=await b.execute(a);return{ok:!0,policy:e}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to enable supervisor"}}}async function h(a){try{(0,d.requireFeatureFlag)("collaboration");let b=(0,c.resolve)("DisableSupervisorUseCase"),e=await b.execute(a);return{ok:!0,policy:e}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to disable supervisor"}}}(0,a.i(701904).ensureServerEntryExports)([e,f,g,h]),(0,b.registerServerReference)(e,"40bf2d2388806d5f0a8e801d7476acac81a861be87",null),(0,b.registerServerReference)(f,"40f4953b56d90bfe3327eeeedbb7720a2ceddf6758",null),(0,b.registerServerReference)(g,"4087775a0173c0bc3698f6426439ba889577cbffca",null),(0,b.registerServerReference)(h,"40f113fd811d608f3e4049026398f3e8196c13077e",null),a.s(["configureSupervisor",()=>e])},391094,a=>{"use strict";var b=a.i(912513),c=a.i(889253),d=a.i(723504),e=a.i(408115),f=a.i(827900),g=a.i(673350),h=a.i(673101),i=a.i(654775),j=a.i(265324),k=a.i(313630);a.s([],951625),a.i(951625),a.s(["00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a",()=>c.getDefaultAgentAndModel,"00c38b234d35460bb11ea6a1b0fff1c22e01c08873",()=>e.checkAllAgentsStatus,"00c4af7e37cefa35ac7db65fa9b45995caf677a597",()=>i.listGitHubOrganizations,"00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392",()=>d.getAllAgentModels,"00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330",()=>b.pickFolder,"4015ea81e1b2a02fe57f374a012b37e2cd322146f1",()=>g.globalSearch,"405f5f5259eaed6742d1a59f416d4319ea63f3bb3d",()=>j.importGitHubRepository,"40bf2d2388806d5f0a8e801d7476acac81a861be87",()=>k.configureSupervisor,"40d1082c73e97a2c5f99ef11d815cefe59a26e8998",()=>h.listGitHubRepositories,"60afd0d4fa2a6638646f7d23dc6c8673fd27a69207",()=>f.updateAgentAndModel],391094)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_e13d58b0._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/configure-supervisor.ts","../../../../../../../src/presentation/web/.next-internal/server/app/application/%5Bid%5D/supervisor/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ConfigureSupervisorUseCase } from '@shepai/core/application/use-cases/agents/configure-supervisor.use-case';\nimport type { GetSupervisorPolicyUseCase } from '@shepai/core/application/use-cases/agents/get-supervisor-policy.use-case';\nimport type { EnableSupervisorUseCase } from '@shepai/core/application/use-cases/agents/enable-supervisor.use-case';\nimport type { DisableSupervisorUseCase } from '@shepai/core/application/use-cases/agents/disable-supervisor.use-case';\nimport { requireFeatureFlag } from '@/lib/feature-flags';\nimport type {\n SupervisorAutonomy,\n SupervisorPolicy,\n SupervisorScopeType,\n} from '@shepai/core/domain/generated/output';\n\nexport interface ConfigureSupervisorActionInput {\n scopeType: string;\n scopeId?: string;\n featureId?: string;\n autonomyLevel: SupervisorAutonomy;\n modelId?: string;\n promptVersion?: string;\n gateAuthority?: Partial<Record<'prd' | 'plan' | 'merge', SupervisorAutonomy>>;\n}\n\nexport interface ConfigureSupervisorActionResult {\n ok: boolean;\n policy?: SupervisorPolicy;\n error?: string;\n}\n\nexport async function configureSupervisor(\n input: ConfigureSupervisorActionInput\n): Promise<ConfigureSupervisorActionResult> {\n try {\n requireFeatureFlag('collaboration');\n const useCase = resolve<ConfigureSupervisorUseCase>('ConfigureSupervisorUseCase');\n const policy = await useCase.execute({\n ...input,\n scopeType: input.scopeType as SupervisorScopeType,\n });\n return { ok: true, policy };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to configure supervisor';\n return { ok: false, error: message };\n }\n}\n\nexport async function getSupervisorPolicy(input: {\n scopeType: string;\n scopeId?: string;\n featureId?: string;\n}): Promise<{ ok: true; policy: SupervisorPolicy | null } | { ok: false; error: string }> {\n try {\n requireFeatureFlag('collaboration');\n const useCase = resolve<GetSupervisorPolicyUseCase>('GetSupervisorPolicyUseCase');\n const policy = await useCase.execute(input);\n return { ok: true, policy };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to load supervisor policy';\n return { ok: false, error: message };\n }\n}\n\nexport async function enableSupervisor(input: {\n scopeType: string;\n scopeId?: string;\n featureId?: string;\n}): Promise<ConfigureSupervisorActionResult> {\n try {\n requireFeatureFlag('collaboration');\n const useCase = resolve<EnableSupervisorUseCase>('EnableSupervisorUseCase');\n const policy = await useCase.execute(input);\n return { ok: true, policy };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to enable supervisor';\n return { ok: false, error: message };\n }\n}\n\nexport async function disableSupervisor(input: {\n scopeType: string;\n scopeId?: string;\n featureId?: string;\n}): Promise<ConfigureSupervisorActionResult> {\n try {\n requireFeatureFlag('collaboration');\n const useCase = resolve<DisableSupervisorUseCase>('DisableSupervisorUseCase');\n const policy = await useCase.execute(input);\n return { ok: true, policy };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to disable supervisor';\n return { ok: false, error: message };\n }\n}\n","export {pickFolder as '0015f0a240c29915a74257d5ff2d7d15b32c6a778d'} from 'ACTIONS_MODULE0'\nexport {getDefaultAgentAndModel as '006ff5a74754817b8a495d7ba26e66c354851f6c99'} from 'ACTIONS_MODULE1'\nexport {getAllAgentModels as '00d43390ab8112b0e6ec134ef3485ab210e36f7842'} from 'ACTIONS_MODULE2'\nexport {checkAllAgentsStatus as '00d2c30c2b08e36b014924412d0cd61610cd91c78e'} from 'ACTIONS_MODULE3'\nexport {updateAgentAndModel as '60036293085b1751ff35875b7762b2353bb09757b5'} from 'ACTIONS_MODULE4'\nexport {globalSearch as '40fcb38a7daafc835826043ee30ef771eae2a2f635'} from 'ACTIONS_MODULE5'\nexport {listGitHubRepositories as '403ab98df2cf8db571b47142cd90ab7c7f297fa90f'} from 'ACTIONS_MODULE6'\nexport {listGitHubOrganizations as '00613a83ba2b2619c9ef46303abae5aded26339bc3'} from 'ACTIONS_MODULE7'\nexport {importGitHubRepository as '40e011f8f2f54f36460ff5310dd49178590a992d44'} from 'ACTIONS_MODULE8'\nexport {configureSupervisor as '40c982a71203ed86da5a5950a0e5f91417c7ae6612'} from 'ACTIONS_MODULE9'\n"],"names":[],"mappings":"0DAEA,EAAA,EAAA,CAAA,CAAA,QAKA,EAAA,EAAA,CAAA,CAAA,QAuBO,eAAe,EACpB,CAAqC,EAErC,GAAI,CACF,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,iBACnB,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA6B,8BAC9C,EAAS,MAAM,EAAQ,OAAO,CAAC,CACnC,GAAG,CAAK,CACR,UAAW,EAAM,SAAS,AAC5B,GACA,MAAO,CAAE,IAAI,SAAM,CAAO,CAC5B,CAAE,MAAO,EAAO,CAEd,MAAO,CAAE,IAAI,EAAO,MADJ,CACW,YADM,MAAQ,EAAM,OAAO,CAAG,gCACtB,CACrC,CACF,CAEO,eAAe,EAAoB,CAIzC,EACC,GAAI,CACF,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,iBACnB,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA6B,8BAC9C,EAAS,MAAM,EAAQ,OAAO,CAAC,GACrC,MAAO,CAAE,IAAI,SAAM,CAAO,CAC5B,CAAE,MAAO,EAAO,CAEd,MAAO,CAAE,IAAI,EAAO,MADJ,CACW,YADM,MAAQ,EAAM,OAAO,CAAG,kCACtB,CACrC,CACF,CAEO,eAAe,EAAiB,CAItC,EACC,GAAI,CACF,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,iBACnB,IAAM,EAAU,CAAA,EAAA,EAAA,OAAO,AAAP,EAAiC,2BAC3C,EAAS,MAAM,EAAQ,OAAO,CAAC,GACrC,MAAO,CAAE,IAAI,SAAM,CAAO,CAC5B,CAAE,MAAO,EAAO,CAEd,MAAO,CAAE,IAAI,EAAO,MADJ,CACW,YADM,MAAQ,EAAM,OAAO,CAAG,6BACtB,CACrC,CACF,CAEO,eAAe,EAAkB,CAIvC,EACC,GAAI,CACF,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,iBACnB,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA2B,4BAC5C,EAAS,MAAM,EAAQ,OAAO,CAAC,GACrC,MAAO,CAAE,IAAI,SAAM,CAAO,CAC5B,CAAE,MAAO,EAAO,CAEd,MAAO,CAAE,IAAI,EAAO,MADJ,CACW,YADM,MAAQ,EAAM,OAAO,CAAG,8BACtB,CACrC,CACF,2CA/DsB,EAiBA,EAgBA,EAgBA,IAjDA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAiBA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAgBA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAgBA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,kEC/EtB,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/configure-supervisor.ts","../../../../../../../src/presentation/web/.next-internal/server/app/application/%5Bid%5D/supervisor/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ConfigureSupervisorUseCase } from '@shepai/core/application/use-cases/agents/configure-supervisor.use-case';\nimport type { GetSupervisorPolicyUseCase } from '@shepai/core/application/use-cases/agents/get-supervisor-policy.use-case';\nimport type { EnableSupervisorUseCase } from '@shepai/core/application/use-cases/agents/enable-supervisor.use-case';\nimport type { DisableSupervisorUseCase } from '@shepai/core/application/use-cases/agents/disable-supervisor.use-case';\nimport { requireFeatureFlag } from '@/lib/feature-flags';\nimport type {\n SupervisorAutonomy,\n SupervisorPolicy,\n SupervisorScopeType,\n} from '@shepai/core/domain/generated/output';\n\nexport interface ConfigureSupervisorActionInput {\n scopeType: string;\n scopeId?: string;\n featureId?: string;\n autonomyLevel: SupervisorAutonomy;\n modelId?: string;\n promptVersion?: string;\n gateAuthority?: Partial<Record<'prd' | 'plan' | 'merge', SupervisorAutonomy>>;\n}\n\nexport interface ConfigureSupervisorActionResult {\n ok: boolean;\n policy?: SupervisorPolicy;\n error?: string;\n}\n\nexport async function configureSupervisor(\n input: ConfigureSupervisorActionInput\n): Promise<ConfigureSupervisorActionResult> {\n try {\n requireFeatureFlag('collaboration');\n const useCase = resolve<ConfigureSupervisorUseCase>('ConfigureSupervisorUseCase');\n const policy = await useCase.execute({\n ...input,\n scopeType: input.scopeType as SupervisorScopeType,\n });\n return { ok: true, policy };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to configure supervisor';\n return { ok: false, error: message };\n }\n}\n\nexport async function getSupervisorPolicy(input: {\n scopeType: string;\n scopeId?: string;\n featureId?: string;\n}): Promise<{ ok: true; policy: SupervisorPolicy | null } | { ok: false; error: string }> {\n try {\n requireFeatureFlag('collaboration');\n const useCase = resolve<GetSupervisorPolicyUseCase>('GetSupervisorPolicyUseCase');\n const policy = await useCase.execute(input);\n return { ok: true, policy };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to load supervisor policy';\n return { ok: false, error: message };\n }\n}\n\nexport async function enableSupervisor(input: {\n scopeType: string;\n scopeId?: string;\n featureId?: string;\n}): Promise<ConfigureSupervisorActionResult> {\n try {\n requireFeatureFlag('collaboration');\n const useCase = resolve<EnableSupervisorUseCase>('EnableSupervisorUseCase');\n const policy = await useCase.execute(input);\n return { ok: true, policy };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to enable supervisor';\n return { ok: false, error: message };\n }\n}\n\nexport async function disableSupervisor(input: {\n scopeType: string;\n scopeId?: string;\n featureId?: string;\n}): Promise<ConfigureSupervisorActionResult> {\n try {\n requireFeatureFlag('collaboration');\n const useCase = resolve<DisableSupervisorUseCase>('DisableSupervisorUseCase');\n const policy = await useCase.execute(input);\n return { ok: true, policy };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to disable supervisor';\n return { ok: false, error: message };\n }\n}\n","export {pickFolder as '00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330'} from 'ACTIONS_MODULE0'\nexport {getDefaultAgentAndModel as '00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a'} from 'ACTIONS_MODULE1'\nexport {getAllAgentModels as '00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392'} from 'ACTIONS_MODULE2'\nexport {checkAllAgentsStatus as '00c38b234d35460bb11ea6a1b0fff1c22e01c08873'} from 'ACTIONS_MODULE3'\nexport {updateAgentAndModel as '60afd0d4fa2a6638646f7d23dc6c8673fd27a69207'} from 'ACTIONS_MODULE4'\nexport {globalSearch as '4015ea81e1b2a02fe57f374a012b37e2cd322146f1'} from 'ACTIONS_MODULE5'\nexport {listGitHubRepositories as '40d1082c73e97a2c5f99ef11d815cefe59a26e8998'} from 'ACTIONS_MODULE6'\nexport {listGitHubOrganizations as '00c4af7e37cefa35ac7db65fa9b45995caf677a597'} from 'ACTIONS_MODULE7'\nexport {importGitHubRepository as '405f5f5259eaed6742d1a59f416d4319ea63f3bb3d'} from 'ACTIONS_MODULE8'\nexport {configureSupervisor as '40bf2d2388806d5f0a8e801d7476acac81a861be87'} from 'ACTIONS_MODULE9'\n"],"names":[],"mappings":"0DAEA,EAAA,EAAA,CAAA,CAAA,QAKA,EAAA,EAAA,CAAA,CAAA,QAuBO,eAAe,EACpB,CAAqC,EAErC,GAAI,CACF,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,iBACnB,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA6B,8BAC9C,EAAS,MAAM,EAAQ,OAAO,CAAC,CACnC,GAAG,CAAK,CACR,UAAW,EAAM,SAAS,AAC5B,GACA,MAAO,CAAE,IAAI,SAAM,CAAO,CAC5B,CAAE,MAAO,EAAO,CAEd,MAAO,CAAE,IAAI,EAAO,MADJ,CACW,YADM,MAAQ,EAAM,OAAO,CAAG,gCACtB,CACrC,CACF,CAEO,eAAe,EAAoB,CAIzC,EACC,GAAI,CACF,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,iBACnB,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA6B,8BAC9C,EAAS,MAAM,EAAQ,OAAO,CAAC,GACrC,MAAO,CAAE,IAAI,SAAM,CAAO,CAC5B,CAAE,MAAO,EAAO,CAEd,MAAO,CAAE,IAAI,EAAO,MADJ,CACW,YADM,MAAQ,EAAM,OAAO,CAAG,kCACtB,CACrC,CACF,CAEO,eAAe,EAAiB,CAItC,EACC,GAAI,CACF,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,iBACnB,IAAM,EAAU,CAAA,EAAA,EAAA,OAAO,AAAP,EAAiC,2BAC3C,EAAS,MAAM,EAAQ,OAAO,CAAC,GACrC,MAAO,CAAE,IAAI,SAAM,CAAO,CAC5B,CAAE,MAAO,EAAO,CAEd,MAAO,CAAE,IAAI,EAAO,MADJ,CACW,YADM,MAAQ,EAAM,OAAO,CAAG,6BACtB,CACrC,CACF,CAEO,eAAe,EAAkB,CAIvC,EACC,GAAI,CACF,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,iBACnB,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA2B,4BAC5C,EAAS,MAAM,EAAQ,OAAO,CAAC,GACrC,MAAO,CAAE,IAAI,SAAM,CAAO,CAC5B,CAAE,MAAO,EAAO,CAEd,MAAO,CAAE,IAAI,EAAO,MADJ,CACW,YADM,MAAQ,EAAM,OAAO,CAAG,8BACtB,CACrC,CACF,2CA/DsB,EAiBA,EAgBA,EAgBA,IAjDA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAiBA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAgBA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAgBA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,kEC/EtB,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[495072,a=>{"use strict";var b=a.i(237705),c=a.i(996380);async function d(a){if(!a?.trim())return{error:"Application ID is required"};try{let b=(0,c.resolve)("DeleteApplicationUseCase");return await b.execute(a),{}}catch(a){return{error:a instanceof Error?a.message:"Failed to delete application"}}}(0,a.i(701904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"40af1b8d14947496efa0de09d2e46341cfadd226ac",null),a.s(["deleteApplication",()=>d])},280496,a=>{"use strict";var b=a.i(237705),c=a.i(902157),d=a.i(660526),e=a.i(750227),f=a.i(874533),g=a.i(701904);let h={darwin:{cmd:"open",args:a=>[a]},linux:{cmd:"xdg-open",args:a=>[a]},win32:{cmd:"explorer",args:a=>[a]}};async function i(a){if(!a||!(0,e.isAbsolute)(a))return{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,c.existsSync)(a))return{success:!1,error:"Directory not found"};let b=h[(0,d.platform)()];if(!b)return{success:!1,error:`Unsupported platform: ${(0,d.platform)()}`};let g=(0,e.normalize)(a),i=(0,f.spawn)(b.cmd,b.args(g),{detached:!0,stdio:"ignore"});return i.on("error",()=>void 0),i.unref(),{success:!0,path:a}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open folder"}}}(0,g.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"40e7ea921079c1a8fe79fc7cfb59743f718c5944f7",null),a.s(["openFolder",()=>i])},93225,941872,609959,879124,839353,529207,a=>{"use strict";var b=a.i(237705),c=a.i(996380),d=a.i(701904);async function e(a){if(!a?.trim())return{success:!1,error:"Repository id is required"};try{let b=(0,c.resolve)("SyncRepositoryMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to sync repository"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"40eb53de65273a529e251542555f94321ea9c2fcaf",null),a.s(["syncRepository",()=>e],93225);var f=a.i(633244);async function g(){try{return(0,f.getSettings)().onboardingComplete}catch{return!1}}async function h(){return(0,c.resolve)("CheckAgentAuthUseCase").execute()}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"002230a65a9a52766f2fac7b9bafe2f0a0ab4ff5f5",null),a.s(["isAgentSetupComplete",()=>g],941872),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"003eb1909cd10ed1e04526145e4a21282e819a745e",null),a.s(["checkAgentAuth",()=>h],609959);var i=a.i(874533),j=a.i(825832);function k(a,b){return new Promise(c=>{try{let d=j.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)(a,b,d,(a,b)=>{if(a)return void c({installed:!1,version:null});let d=b.match(/(\d+\.\d+(?:\.\d+)?)/);c({installed:!0,version:d?.[1]??null})})}catch{c({installed:!1,version:null})}})}async function l(){let[a,b,d]=await Promise.all([k("git",["--version"]),k("gh",["--version"]),(async()=>{try{let a=(0,c.resolve)("ListToolsUseCase");return await a.execute()}catch{return[]}})()]),e=d.find(a=>"git"===a.id),f=d.find(a=>"gh"===a.id);return{git:{...a,installCommand:e?.installCommand??null,installUrl:e?.website??"https://git-scm.com"},gh:{...b,installCommand:f?.installCommand??null,installUrl:f?.website??"https://cli.github.com"}}}async function m(a,b){if(!a?.trim())return{success:!1,error:"id is required"};try{let d=(0,c.resolve)("DeleteRepositoryUseCase");return await d.execute(a,{deleteFromDisk:b?.deleteFromDisk===!0}),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete repository"}}}async function n(a){let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);return d?{name:d.name,description:d.description}:null}(0,d.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"00f312436a846d36665ad6519b2a873685e7baa13f",null),a.s(["checkToolStatus",()=>l],879124),(0,d.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"60495f1a3ee94d5d2693e35665a5b94c6c425339ab",null),a.s(["deleteRepository",()=>m],839353),(0,d.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"4094d93eeeace2053edf550148c9336dfa0384d465",null),a.s(["getFeatureMetadata",()=>n],529207)},235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"60f4c819a13f54bcc8320595c03e11fb6cafe8913b",null),(0,b.registerServerReference)(i,"60512cbf40d623c8d4161ea201c3b2ef0bbec9a090",null),a.s(["getGitRepoInfo",()=>h])},572255,a=>{"use strict";var b=a.i(912513),c=a.i(889253),d=a.i(723504),e=a.i(408115),f=a.i(827900),g=a.i(673350),h=a.i(673101),i=a.i(654775),j=a.i(265324),k=a.i(433841),l=a.i(46646),m=a.i(868378),n=a.i(268670),o=a.i(685321),p=a.i(284095),q=a.i(656799),r=a.i(280496),s=a.i(93225),t=a.i(794691),u=a.i(477710),v=a.i(145395),w=a.i(941872),x=a.i(609959),y=a.i(879124),z=a.i(576707),A=a.i(410528),B=a.i(150845),C=a.i(26604),D=a.i(354723),E=a.i(118942),F=a.i(342886),G=a.i(649560),H=a.i(839353),I=a.i(495072),J=a.i(529207),K=a.i(235556);a.s([],650819),a.i(650819),a.s(["0015f0a240c29915a74257d5ff2d7d15b32c6a778d",()=>b.pickFolder,"002230a65a9a52766f2fac7b9bafe2f0a0ab4ff5f5",()=>w.isAgentSetupComplete,"003eb1909cd10ed1e04526145e4a21282e819a745e",()=>x.checkAgentAuth,"00613a83ba2b2619c9ef46303abae5aded26339bc3",()=>i.listGitHubOrganizations,"006ff5a74754817b8a495d7ba26e66c354851f6c99",()=>c.getDefaultAgentAndModel,"00d2c30c2b08e36b014924412d0cd61610cd91c78e",()=>e.checkAllAgentsStatus,"00d43390ab8112b0e6ec134ef3485ab210e36f7842",()=>d.getAllAgentModels,"00f312436a846d36665ad6519b2a873685e7baa13f",()=>y.checkToolStatus,"4005923232df16201d86b35c46dbbe719725cbcd26",()=>m.deployApplication,"401846920f6fb739e32233d9d6a6df7945b8621c00",()=>k.deployFeature,"403ab98df2cf8db571b47142cd90ab7c7f297fa90f",()=>h.listGitHubRepositories,"4047fcf9280c5bc168edadf9f0c951bc2514b41fe0",()=>D.startFeature,"404b80493cf36c04e22e68ebf8f56c46bf55d904c0",()=>E.stopFeature,"405723722c9eb9b4888b52203cfb121401f0c61a80",()=>t.getDeploymentLogs,"4070f2c934a9ed351d223ad18ae9602cff12614292",()=>C.resumeFeature,"408a28f520d819792447d4b47d9b73a5ddf7296469",()=>l.deployRepository,"4094d93eeeace2053edf550148c9336dfa0384d465",()=>J.getFeatureMetadata,"409ab95b1ec58ad7dd578b018e11d5bd766839f8bc",()=>n.stopDeployment,"40ab7fa1f69e2aec8b94563e16d0019f3589ec2f2e",()=>p.openIde,"40af1b8d14947496efa0de09d2e46341cfadd226ac",()=>I.deleteApplication,"40b95792d8bb0de2aa9914ff42b671ff42b87c24ba",()=>q.openShell,"40ba17f62f174f4f88aa0ea4a373db347247ae1171",()=>u.createProjectAndFeature,"40c4d25fb30555d92bf75dd650e2cce9b8be92dc0b",()=>z.createProjectFolder,"40c64b253cb9310f09f151401d5eb06957db761efa",()=>F.unarchiveFeature,"40d0ac4c8ca5c179014f909f203d903942417295df",()=>A.archiveFeature,"40d4837169557e75f0be6d0f89f7fea0ff41eb89fc",()=>G.addRepository,"40e011f8f2f54f36460ff5310dd49178590a992d44",()=>j.importGitHubRepository,"40e7ea921079c1a8fe79fc7cfb59743f718c5944f7",()=>r.openFolder,"40eb53de65273a529e251542555f94321ea9c2fcaf",()=>s.syncRepository,"40ed3ea24841c9c4280513ab004dcdbce3d545bcdb",()=>o.getDeploymentStatus,"40f744f8f8785a86cc8dc9487da8d64ca353d264af",()=>v.createApplication,"40fcb38a7daafc835826043ee30ef771eae2a2f635",()=>g.globalSearch,"60036293085b1751ff35875b7762b2353bb09757b5",()=>f.updateAgentAndModel,"60495f1a3ee94d5d2693e35665a5b94c6c425339ab",()=>H.deleteRepository,"60f4c819a13f54bcc8320595c03e11fb6cafe8913b",()=>K.getGitRepoInfo,"783175472a45c2823bb1c4751b36e777308131d27d",()=>B.deleteFeature],572255)}];
1
+ module.exports=[495072,a=>{"use strict";var b=a.i(237705),c=a.i(996380);async function d(a){if(!a?.trim())return{error:"Application ID is required"};try{let b=(0,c.resolve)("DeleteApplicationUseCase");return await b.execute(a),{}}catch(a){return{error:a instanceof Error?a.message:"Failed to delete application"}}}(0,a.i(701904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"400601cc704fc3a542db95c4219b7261168cbe675d",null),a.s(["deleteApplication",()=>d])},280496,a=>{"use strict";var b=a.i(237705),c=a.i(902157),d=a.i(660526),e=a.i(750227),f=a.i(874533),g=a.i(701904);let h={darwin:{cmd:"open",args:a=>[a]},linux:{cmd:"xdg-open",args:a=>[a]},win32:{cmd:"explorer",args:a=>[a]}};async function i(a){if(!a||!(0,e.isAbsolute)(a))return{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,c.existsSync)(a))return{success:!1,error:"Directory not found"};let b=h[(0,d.platform)()];if(!b)return{success:!1,error:`Unsupported platform: ${(0,d.platform)()}`};let g=(0,e.normalize)(a),i=(0,f.spawn)(b.cmd,b.args(g),{detached:!0,stdio:"ignore"});return i.on("error",()=>void 0),i.unref(),{success:!0,path:a}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open folder"}}}(0,g.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"40024b9babaf0ccba2c9644e1719947f9662db82da",null),a.s(["openFolder",()=>i])},93225,941872,609959,879124,839353,529207,a=>{"use strict";var b=a.i(237705),c=a.i(996380),d=a.i(701904);async function e(a){if(!a?.trim())return{success:!1,error:"Repository id is required"};try{let b=(0,c.resolve)("SyncRepositoryMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to sync repository"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"403bcc64cd5c7afe5cb7933130b5d71e9cb6913d44",null),a.s(["syncRepository",()=>e],93225);var f=a.i(633244);async function g(){try{return(0,f.getSettings)().onboardingComplete}catch{return!1}}async function h(){return(0,c.resolve)("CheckAgentAuthUseCase").execute()}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"000dc696afafd019691d30ebc74c3bb2bf6be80fc9",null),a.s(["isAgentSetupComplete",()=>g],941872),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"00043b20dfa79e7ce6d504a372669a2b7396e4f421",null),a.s(["checkAgentAuth",()=>h],609959);var i=a.i(874533),j=a.i(825832);function k(a,b){return new Promise(c=>{try{let d=j.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)(a,b,d,(a,b)=>{if(a)return void c({installed:!1,version:null});let d=b.match(/(\d+\.\d+(?:\.\d+)?)/);c({installed:!0,version:d?.[1]??null})})}catch{c({installed:!1,version:null})}})}async function l(){let[a,b,d]=await Promise.all([k("git",["--version"]),k("gh",["--version"]),(async()=>{try{let a=(0,c.resolve)("ListToolsUseCase");return await a.execute()}catch{return[]}})()]),e=d.find(a=>"git"===a.id),f=d.find(a=>"gh"===a.id);return{git:{...a,installCommand:e?.installCommand??null,installUrl:e?.website??"https://git-scm.com"},gh:{...b,installCommand:f?.installCommand??null,installUrl:f?.website??"https://cli.github.com"}}}async function m(a,b){if(!a?.trim())return{success:!1,error:"id is required"};try{let d=(0,c.resolve)("DeleteRepositoryUseCase");return await d.execute(a,{deleteFromDisk:b?.deleteFromDisk===!0}),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete repository"}}}async function n(a){let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);return d?{name:d.name,description:d.description}:null}(0,d.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"00fd3bb249b5c2f4771f7eac594bf5656eaf959cdb",null),a.s(["checkToolStatus",()=>l],879124),(0,d.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"608cb7bed4e740de6ec1034873b198d85e0771cdfb",null),a.s(["deleteRepository",()=>m],839353),(0,d.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"40127b07baac3bb5494e3d8ad7b721b35a467f4a93",null),a.s(["getFeatureMetadata",()=>n],529207)},235556,a=>{"use strict";var b=a.i(237705),c=a.i(874533),d=a.i(812057),e=a.i(701904);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","HEAD","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"60dd3bba8d40f7d7eaab9cf25cfc4a5eedd85c6c3c",null),(0,b.registerServerReference)(i,"60edd8fb9c2f2b88ef5efc6ae8270fc513c08281a5",null),a.s(["getGitRepoInfo",()=>h])},572255,a=>{"use strict";var b=a.i(912513),c=a.i(889253),d=a.i(723504),e=a.i(408115),f=a.i(827900),g=a.i(673350),h=a.i(673101),i=a.i(654775),j=a.i(265324),k=a.i(433841),l=a.i(46646),m=a.i(868378),n=a.i(268670),o=a.i(685321),p=a.i(284095),q=a.i(656799),r=a.i(280496),s=a.i(93225),t=a.i(794691),u=a.i(477710),v=a.i(145395),w=a.i(941872),x=a.i(609959),y=a.i(879124),z=a.i(576707),A=a.i(410528),B=a.i(150845),C=a.i(26604),D=a.i(354723),E=a.i(118942),F=a.i(342886),G=a.i(649560),H=a.i(839353),I=a.i(495072),J=a.i(529207),K=a.i(235556);a.s([],650819),a.i(650819),a.s(["00043b20dfa79e7ce6d504a372669a2b7396e4f421",()=>x.checkAgentAuth,"000dc696afafd019691d30ebc74c3bb2bf6be80fc9",()=>w.isAgentSetupComplete,"00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a",()=>c.getDefaultAgentAndModel,"00c38b234d35460bb11ea6a1b0fff1c22e01c08873",()=>e.checkAllAgentsStatus,"00c4af7e37cefa35ac7db65fa9b45995caf677a597",()=>i.listGitHubOrganizations,"00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392",()=>d.getAllAgentModels,"00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330",()=>b.pickFolder,"00fd3bb249b5c2f4771f7eac594bf5656eaf959cdb",()=>y.checkToolStatus,"40024b9babaf0ccba2c9644e1719947f9662db82da",()=>r.openFolder,"400601cc704fc3a542db95c4219b7261168cbe675d",()=>I.deleteApplication,"40127b07baac3bb5494e3d8ad7b721b35a467f4a93",()=>J.getFeatureMetadata,"4015ea81e1b2a02fe57f374a012b37e2cd322146f1",()=>g.globalSearch,"402a545f24583952d99d18566abf474dd10d07741b",()=>o.getDeploymentStatus,"402a7da73158b6bd6c8fb8ab5b0344dc0e0f08e228",()=>u.createProjectAndFeature,"402b7881a750d5c7c7125153b65fdd64c555ddcdc2",()=>v.createApplication,"403a844cbb36e5d50051fe552f050ed35a8b88f317",()=>l.deployRepository,"403bcc64cd5c7afe5cb7933130b5d71e9cb6913d44",()=>s.syncRepository,"403c93928208c54fe25784ff60dcb073f25d1055c1",()=>n.stopDeployment,"4047cfaa45cd7417712356735bfbb78f93a103592a",()=>F.unarchiveFeature,"40559cc32878be443a5d902e563fa65ac29566c575",()=>m.deployApplication,"405f5f5259eaed6742d1a59f416d4319ea63f3bb3d",()=>j.importGitHubRepository,"405f73e1d0740c127aafceadc63304676969dbb19a",()=>A.archiveFeature,"406f6bfbd22a176bf6d0bca648d1bd1ef29efb8c31",()=>p.openIde,"4093cfae5c300fc17a16104784825641972f80a2c2",()=>E.stopFeature,"40a8e46a1833838a96e4b3f97741ab37054dc3a415",()=>G.addRepository,"40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf",()=>k.deployFeature,"40b195fc3bd3d0b6f99d9ba0ce3b624b5201e8e478",()=>D.startFeature,"40cede021cd5c33e6bf9d5871c23ea5e73f6809b4b",()=>q.openShell,"40d1082c73e97a2c5f99ef11d815cefe59a26e8998",()=>h.listGitHubRepositories,"40da762c4b34966ae0ac466fdc38dd417bb5f12247",()=>z.createProjectFolder,"40e827f64795e580b75e126ddfefa3a9a722da877c",()=>t.getDeploymentLogs,"40ef132579c95dc894986b34b75cb89dd65b39da86",()=>C.resumeFeature,"608cb7bed4e740de6ec1034873b198d85e0771cdfb",()=>H.deleteRepository,"60afd0d4fa2a6638646f7d23dc6c8673fd27a69207",()=>f.updateAgentAndModel,"60dd3bba8d40f7d7eaab9cf25cfc4a5eedd85c6c3c",()=>K.getGitRepoInfo,"782094d73ba803f25ee4b483796e8b0625c3c6564f",()=>B.deleteFeature],572255)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_ee94a9aa._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/delete-application.ts","../../../../../../../src/presentation/web/app/actions/open-folder.ts","../../../../../../../src/presentation/web/app/actions/sync-repository.ts","../../../../../../../src/presentation/web/app/actions/agent-setup-flag.ts","../../../../../../../src/presentation/web/app/actions/check-agent-auth.ts","../../../../../../../src/presentation/web/app/actions/check-tool-status.ts","../../../../../../../src/presentation/web/app/actions/delete-repository.ts","../../../../../../../src/presentation/web/app/actions/get-feature-metadata.ts","../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteApplicationUseCase } from '@shepai/core/application/use-cases/applications/delete-application.use-case';\n\nexport async function deleteApplication(id: string): Promise<{ error?: string }> {\n if (!id?.trim()) {\n return { error: 'Application ID is required' };\n }\n\n try {\n const useCase = resolve<DeleteApplicationUseCase>('DeleteApplicationUseCase');\n await useCase.execute(id);\n return {};\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete application';\n return { error: message };\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { platform } from 'node:os';\nimport { isAbsolute, normalize } from 'node:path';\nimport { spawn } from 'node:child_process';\n\n// Use a record lookup instead of if/else to prevent the bundler from\n// tree-shaking platform branches at build time. Turbopack evaluates\n// os.platform() during the build and dead-code-eliminates unused branches,\n// baking in the CI platform (linux) and breaking macOS/Windows installs.\nconst FOLDER_COMMANDS: Record<string, { cmd: string; args: (path: string) => string[] }> = {\n darwin: { cmd: 'open', args: (p) => [p] },\n linux: { cmd: 'xdg-open', args: (p) => [p] },\n win32: { cmd: 'explorer', args: (p) => [p] },\n};\n\nexport async function openFolder(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; path?: string }> {\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n try {\n if (!existsSync(repositoryPath)) {\n return { success: false, error: 'Directory not found' };\n }\n\n const entry = FOLDER_COMMANDS[platform()];\n if (!entry) {\n return {\n success: false,\n error: `Unsupported platform: ${platform()}`,\n };\n }\n\n // Normalize to platform-native separators — explorer.exe on Windows\n // does not understand forward-slash paths and falls back to Documents.\n const nativePath = normalize(repositoryPath);\n\n const child = spawn(entry.cmd, entry.args(nativePath), {\n detached: true,\n stdio: 'ignore',\n });\n child.on('error', () => undefined); // Prevent uncaught exception on spawn failure\n child.unref();\n\n return { success: true, path: repositoryPath };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { SyncRepositoryMainUseCase } from '@shepai/core/application/use-cases/repositories/sync-repository-main.use-case';\n\nexport async function syncRepository(\n repositoryId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!repositoryId?.trim()) {\n return { success: false, error: 'Repository id is required' };\n }\n\n try {\n const useCase = resolve<SyncRepositoryMainUseCase>('SyncRepositoryMainUseCase');\n await useCase.execute(repositoryId);\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to sync repository';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\n/**\n * Check whether onboarding has been completed.\n * Delegates to the in-memory settings singleton (zero DB overhead).\n */\nexport async function isAgentSetupComplete(): Promise<boolean> {\n try {\n return getSettings().onboardingComplete;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CheckAgentAuthUseCase } from '@shepai/core/application/use-cases/agents/check-agent-auth.use-case';\n\n/**\n * Result shape for the agent auth checklist on the onboarding empty state.\n * Matches CheckAgentAuthResult from the use case 1:1 — kept locally so the\n * web type stays serializable through the Server Actions boundary.\n */\nexport interface AgentAuthStatus {\n agentType: string;\n /** Whether the CLI tool binary is installed */\n installed: boolean;\n /** Whether credentials / auth appear valid */\n authenticated: boolean;\n /** Human-readable label for the agent */\n label: string;\n /** CLI binary name (e.g. \"claude\", \"gemini\") */\n binaryName: string | null;\n /** Shell command to install the tool (e.g. \"npm install -g @anthropic-ai/claude-code\") */\n installCommand: string | null;\n /** Instructions to authenticate if not authenticated */\n authCommand: string | null;\n}\n\n/**\n * Thin server-action wrapper around CheckAgentAuthUseCase. All agent-type\n * mapping, tool lookup, and platform credential detection live in:\n *\n * packages/core/src/application/use-cases/agents/check-agent-auth.use-case.ts\n * packages/core/src/infrastructure/services/agent-auth-detector/platform-agent-auth-detector.service.ts\n */\nexport async function checkAgentAuth(): Promise<AgentAuthStatus> {\n const useCase = resolve<CheckAgentAuthUseCase>('CheckAgentAuthUseCase');\n return useCase.execute();\n}\n","'use server';\n\nimport { execFile } from 'node:child_process';\nimport { IS_WINDOWS } from '@shepai/core/infrastructure/platform';\nimport { resolve } from '@/lib/server-container';\nimport type { ListToolsUseCase } from '@shepai/core/application/use-cases/tools/list-tools.use-case';\n\nexport interface ToolStatusEntry {\n installed: boolean;\n version: string | null;\n /** Platform-specific install command from tool JSON metadata */\n installCommand: string | null;\n /** Documentation/website URL */\n installUrl: string | null;\n}\n\nexport interface ToolStatusResult {\n git: ToolStatusEntry;\n gh: ToolStatusEntry;\n}\n\nfunction getVersion(\n command: string,\n args: string[]\n): Promise<{ installed: boolean; version: string | null }> {\n return new Promise((resolve) => {\n try {\n const opts = IS_WINDOWS ? { timeout: 5000, windowsHide: true } : { timeout: 5000 };\n execFile(command, args, opts, (error, stdout) => {\n if (error) {\n resolve({ installed: false, version: null });\n return;\n }\n // Extract version number from output like \"git version 2.43.0\" or \"gh version 2.40.1\"\n const match = stdout.match(/(\\d+\\.\\d+(?:\\.\\d+)?)/);\n resolve({ installed: true, version: match?.[1] ?? null });\n });\n } catch {\n resolve({ installed: false, version: null });\n }\n });\n}\n\nexport async function checkToolStatus(): Promise<ToolStatusResult> {\n // Run version checks and tool metadata lookup in parallel\n const [gitVersion, ghVersion, tools] = await Promise.all([\n getVersion('git', ['--version']),\n getVersion('gh', ['--version']),\n (async () => {\n try {\n const useCase = resolve<ListToolsUseCase>('ListToolsUseCase');\n return await useCase.execute();\n } catch {\n return [];\n }\n })(),\n ]);\n\n const gitTool = tools.find((t) => t.id === 'git');\n const ghTool = tools.find((t) => t.id === 'gh');\n\n return {\n git: {\n ...gitVersion,\n installCommand: gitTool?.installCommand ?? null,\n installUrl: gitTool?.website ?? 'https://git-scm.com',\n },\n gh: {\n ...ghVersion,\n installCommand: ghTool?.installCommand ?? null,\n installUrl: ghTool?.website ?? 'https://cli.github.com',\n },\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteRepositoryUseCase } from '@shepai/core/application/use-cases/repositories/delete-repository.use-case';\n\nexport interface DeleteRepositoryActionOptions {\n deleteFromDisk?: boolean;\n}\n\nexport async function deleteRepository(\n repositoryId: string,\n options?: DeleteRepositoryActionOptions\n): Promise<{ success: boolean; error?: string }> {\n if (!repositoryId?.trim()) {\n return { success: false, error: 'id is required' };\n }\n\n try {\n const useCase = resolve<DeleteRepositoryUseCase>('DeleteRepositoryUseCase');\n await useCase.execute(repositoryId, { deleteFromDisk: options?.deleteFromDisk === true });\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete repository';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\n/**\n * Lightweight server action to fetch a single feature's name and description.\n * Used by the SSE effect to update node metadata after AI metadata generation\n * without a full graph reconcile (which can overwrite SSE-driven state).\n */\nexport async function getFeatureMetadata(\n featureId: string\n): Promise<{ name: string; description: string } | null> {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature) return null;\n return { name: feature.name, description: feature.description };\n}\n","'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '0015f0a240c29915a74257d5ff2d7d15b32c6a778d'} from 'ACTIONS_MODULE0'\nexport {getDefaultAgentAndModel as '006ff5a74754817b8a495d7ba26e66c354851f6c99'} from 'ACTIONS_MODULE1'\nexport {getAllAgentModels as '00d43390ab8112b0e6ec134ef3485ab210e36f7842'} from 'ACTIONS_MODULE2'\nexport {checkAllAgentsStatus as '00d2c30c2b08e36b014924412d0cd61610cd91c78e'} from 'ACTIONS_MODULE3'\nexport {updateAgentAndModel as '60036293085b1751ff35875b7762b2353bb09757b5'} from 'ACTIONS_MODULE4'\nexport {globalSearch as '40fcb38a7daafc835826043ee30ef771eae2a2f635'} from 'ACTIONS_MODULE5'\nexport {listGitHubRepositories as '403ab98df2cf8db571b47142cd90ab7c7f297fa90f'} from 'ACTIONS_MODULE6'\nexport {listGitHubOrganizations as '00613a83ba2b2619c9ef46303abae5aded26339bc3'} from 'ACTIONS_MODULE7'\nexport {importGitHubRepository as '40e011f8f2f54f36460ff5310dd49178590a992d44'} from 'ACTIONS_MODULE8'\nexport {deployFeature as '401846920f6fb739e32233d9d6a6df7945b8621c00'} from 'ACTIONS_MODULE9'\nexport {deployRepository as '408a28f520d819792447d4b47d9b73a5ddf7296469'} from 'ACTIONS_MODULE10'\nexport {deployApplication as '4005923232df16201d86b35c46dbbe719725cbcd26'} from 'ACTIONS_MODULE11'\nexport {stopDeployment as '409ab95b1ec58ad7dd578b018e11d5bd766839f8bc'} from 'ACTIONS_MODULE12'\nexport {getDeploymentStatus as '40ed3ea24841c9c4280513ab004dcdbce3d545bcdb'} from 'ACTIONS_MODULE13'\nexport {openIde as '40ab7fa1f69e2aec8b94563e16d0019f3589ec2f2e'} from 'ACTIONS_MODULE14'\nexport {openShell as '40b95792d8bb0de2aa9914ff42b671ff42b87c24ba'} from 'ACTIONS_MODULE15'\nexport {openFolder as '40e7ea921079c1a8fe79fc7cfb59743f718c5944f7'} from 'ACTIONS_MODULE16'\nexport {syncRepository as '40eb53de65273a529e251542555f94321ea9c2fcaf'} from 'ACTIONS_MODULE17'\nexport {getDeploymentLogs as '405723722c9eb9b4888b52203cfb121401f0c61a80'} from 'ACTIONS_MODULE18'\nexport {createProjectAndFeature as '40ba17f62f174f4f88aa0ea4a373db347247ae1171'} from 'ACTIONS_MODULE19'\nexport {createApplication as '40f744f8f8785a86cc8dc9487da8d64ca353d264af'} from 'ACTIONS_MODULE20'\nexport {isAgentSetupComplete as '002230a65a9a52766f2fac7b9bafe2f0a0ab4ff5f5'} from 'ACTIONS_MODULE21'\nexport {checkAgentAuth as '003eb1909cd10ed1e04526145e4a21282e819a745e'} from 'ACTIONS_MODULE22'\nexport {checkToolStatus as '00f312436a846d36665ad6519b2a873685e7baa13f'} from 'ACTIONS_MODULE23'\nexport {createProjectFolder as '40c4d25fb30555d92bf75dd650e2cce9b8be92dc0b'} from 'ACTIONS_MODULE24'\nexport {archiveFeature as '40d0ac4c8ca5c179014f909f203d903942417295df'} from 'ACTIONS_MODULE25'\nexport {deleteFeature as '783175472a45c2823bb1c4751b36e777308131d27d'} from 'ACTIONS_MODULE26'\nexport {resumeFeature as '4070f2c934a9ed351d223ad18ae9602cff12614292'} from 'ACTIONS_MODULE27'\nexport {startFeature as '4047fcf9280c5bc168edadf9f0c951bc2514b41fe0'} from 'ACTIONS_MODULE28'\nexport {stopFeature as '404b80493cf36c04e22e68ebf8f56c46bf55d904c0'} from 'ACTIONS_MODULE29'\nexport {unarchiveFeature as '40c64b253cb9310f09f151401d5eb06957db761efa'} from 'ACTIONS_MODULE30'\nexport {addRepository as '40d4837169557e75f0be6d0f89f7fea0ff41eb89fc'} from 'ACTIONS_MODULE31'\nexport {deleteRepository as '60495f1a3ee94d5d2693e35665a5b94c6c425339ab'} from 'ACTIONS_MODULE32'\nexport {deleteApplication as '40af1b8d14947496efa0de09d2e46341cfadd226ac'} from 'ACTIONS_MODULE33'\nexport {getFeatureMetadata as '4094d93eeeace2053edf550148c9336dfa0384d465'} from 'ACTIONS_MODULE34'\nexport {getGitRepoInfo as '60f4c819a13f54bcc8320595c03e11fb6cafe8913b'} from 'ACTIONS_MODULE35'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/delete-application.ts","../../../../../../../src/presentation/web/app/actions/open-folder.ts","../../../../../../../src/presentation/web/app/actions/sync-repository.ts","../../../../../../../src/presentation/web/app/actions/agent-setup-flag.ts","../../../../../../../src/presentation/web/app/actions/check-agent-auth.ts","../../../../../../../src/presentation/web/app/actions/check-tool-status.ts","../../../../../../../src/presentation/web/app/actions/delete-repository.ts","../../../../../../../src/presentation/web/app/actions/get-feature-metadata.ts","../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteApplicationUseCase } from '@shepai/core/application/use-cases/applications/delete-application.use-case';\n\nexport async function deleteApplication(id: string): Promise<{ error?: string }> {\n if (!id?.trim()) {\n return { error: 'Application ID is required' };\n }\n\n try {\n const useCase = resolve<DeleteApplicationUseCase>('DeleteApplicationUseCase');\n await useCase.execute(id);\n return {};\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete application';\n return { error: message };\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { platform } from 'node:os';\nimport { isAbsolute, normalize } from 'node:path';\nimport { spawn } from 'node:child_process';\n\n// Use a record lookup instead of if/else to prevent the bundler from\n// tree-shaking platform branches at build time. Turbopack evaluates\n// os.platform() during the build and dead-code-eliminates unused branches,\n// baking in the CI platform (linux) and breaking macOS/Windows installs.\nconst FOLDER_COMMANDS: Record<string, { cmd: string; args: (path: string) => string[] }> = {\n darwin: { cmd: 'open', args: (p) => [p] },\n linux: { cmd: 'xdg-open', args: (p) => [p] },\n win32: { cmd: 'explorer', args: (p) => [p] },\n};\n\nexport async function openFolder(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; path?: string }> {\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n try {\n if (!existsSync(repositoryPath)) {\n return { success: false, error: 'Directory not found' };\n }\n\n const entry = FOLDER_COMMANDS[platform()];\n if (!entry) {\n return {\n success: false,\n error: `Unsupported platform: ${platform()}`,\n };\n }\n\n // Normalize to platform-native separators — explorer.exe on Windows\n // does not understand forward-slash paths and falls back to Documents.\n const nativePath = normalize(repositoryPath);\n\n const child = spawn(entry.cmd, entry.args(nativePath), {\n detached: true,\n stdio: 'ignore',\n });\n child.on('error', () => undefined); // Prevent uncaught exception on spawn failure\n child.unref();\n\n return { success: true, path: repositoryPath };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { SyncRepositoryMainUseCase } from '@shepai/core/application/use-cases/repositories/sync-repository-main.use-case';\n\nexport async function syncRepository(\n repositoryId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!repositoryId?.trim()) {\n return { success: false, error: 'Repository id is required' };\n }\n\n try {\n const useCase = resolve<SyncRepositoryMainUseCase>('SyncRepositoryMainUseCase');\n await useCase.execute(repositoryId);\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to sync repository';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\n/**\n * Check whether onboarding has been completed.\n * Delegates to the in-memory settings singleton (zero DB overhead).\n */\nexport async function isAgentSetupComplete(): Promise<boolean> {\n try {\n return getSettings().onboardingComplete;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CheckAgentAuthUseCase } from '@shepai/core/application/use-cases/agents/check-agent-auth.use-case';\n\n/**\n * Result shape for the agent auth checklist on the onboarding empty state.\n * Matches CheckAgentAuthResult from the use case 1:1 — kept locally so the\n * web type stays serializable through the Server Actions boundary.\n */\nexport interface AgentAuthStatus {\n agentType: string;\n /** Whether the CLI tool binary is installed */\n installed: boolean;\n /** Whether credentials / auth appear valid */\n authenticated: boolean;\n /** Human-readable label for the agent */\n label: string;\n /** CLI binary name (e.g. \"claude\", \"gemini\") */\n binaryName: string | null;\n /** Shell command to install the tool (e.g. \"npm install -g @anthropic-ai/claude-code\") */\n installCommand: string | null;\n /** Instructions to authenticate if not authenticated */\n authCommand: string | null;\n}\n\n/**\n * Thin server-action wrapper around CheckAgentAuthUseCase. All agent-type\n * mapping, tool lookup, and platform credential detection live in:\n *\n * packages/core/src/application/use-cases/agents/check-agent-auth.use-case.ts\n * packages/core/src/infrastructure/services/agent-auth-detector/platform-agent-auth-detector.service.ts\n */\nexport async function checkAgentAuth(): Promise<AgentAuthStatus> {\n const useCase = resolve<CheckAgentAuthUseCase>('CheckAgentAuthUseCase');\n return useCase.execute();\n}\n","'use server';\n\nimport { execFile } from 'node:child_process';\nimport { IS_WINDOWS } from '@shepai/core/infrastructure/platform';\nimport { resolve } from '@/lib/server-container';\nimport type { ListToolsUseCase } from '@shepai/core/application/use-cases/tools/list-tools.use-case';\n\nexport interface ToolStatusEntry {\n installed: boolean;\n version: string | null;\n /** Platform-specific install command from tool JSON metadata */\n installCommand: string | null;\n /** Documentation/website URL */\n installUrl: string | null;\n}\n\nexport interface ToolStatusResult {\n git: ToolStatusEntry;\n gh: ToolStatusEntry;\n}\n\nfunction getVersion(\n command: string,\n args: string[]\n): Promise<{ installed: boolean; version: string | null }> {\n return new Promise((resolve) => {\n try {\n const opts = IS_WINDOWS ? { timeout: 5000, windowsHide: true } : { timeout: 5000 };\n execFile(command, args, opts, (error, stdout) => {\n if (error) {\n resolve({ installed: false, version: null });\n return;\n }\n // Extract version number from output like \"git version 2.43.0\" or \"gh version 2.40.1\"\n const match = stdout.match(/(\\d+\\.\\d+(?:\\.\\d+)?)/);\n resolve({ installed: true, version: match?.[1] ?? null });\n });\n } catch {\n resolve({ installed: false, version: null });\n }\n });\n}\n\nexport async function checkToolStatus(): Promise<ToolStatusResult> {\n // Run version checks and tool metadata lookup in parallel\n const [gitVersion, ghVersion, tools] = await Promise.all([\n getVersion('git', ['--version']),\n getVersion('gh', ['--version']),\n (async () => {\n try {\n const useCase = resolve<ListToolsUseCase>('ListToolsUseCase');\n return await useCase.execute();\n } catch {\n return [];\n }\n })(),\n ]);\n\n const gitTool = tools.find((t) => t.id === 'git');\n const ghTool = tools.find((t) => t.id === 'gh');\n\n return {\n git: {\n ...gitVersion,\n installCommand: gitTool?.installCommand ?? null,\n installUrl: gitTool?.website ?? 'https://git-scm.com',\n },\n gh: {\n ...ghVersion,\n installCommand: ghTool?.installCommand ?? null,\n installUrl: ghTool?.website ?? 'https://cli.github.com',\n },\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { DeleteRepositoryUseCase } from '@shepai/core/application/use-cases/repositories/delete-repository.use-case';\n\nexport interface DeleteRepositoryActionOptions {\n deleteFromDisk?: boolean;\n}\n\nexport async function deleteRepository(\n repositoryId: string,\n options?: DeleteRepositoryActionOptions\n): Promise<{ success: boolean; error?: string }> {\n if (!repositoryId?.trim()) {\n return { success: false, error: 'id is required' };\n }\n\n try {\n const useCase = resolve<DeleteRepositoryUseCase>('DeleteRepositoryUseCase');\n await useCase.execute(repositoryId, { deleteFromDisk: options?.deleteFromDisk === true });\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete repository';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\n/**\n * Lightweight server action to fetch a single feature's name and description.\n * Used by the SSE effect to update node metadata after AI metadata generation\n * without a full graph reconcile (which can overwrite SSE-driven state).\n */\nexport async function getFeatureMetadata(\n featureId: string\n): Promise<{ name: string; description: string } | null> {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature) return null;\n return { name: feature.name, description: feature.description };\n}\n","'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {pickFolder as '00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330'} from 'ACTIONS_MODULE0'\nexport {getDefaultAgentAndModel as '00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a'} from 'ACTIONS_MODULE1'\nexport {getAllAgentModels as '00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392'} from 'ACTIONS_MODULE2'\nexport {checkAllAgentsStatus as '00c38b234d35460bb11ea6a1b0fff1c22e01c08873'} from 'ACTIONS_MODULE3'\nexport {updateAgentAndModel as '60afd0d4fa2a6638646f7d23dc6c8673fd27a69207'} from 'ACTIONS_MODULE4'\nexport {globalSearch as '4015ea81e1b2a02fe57f374a012b37e2cd322146f1'} from 'ACTIONS_MODULE5'\nexport {listGitHubRepositories as '40d1082c73e97a2c5f99ef11d815cefe59a26e8998'} from 'ACTIONS_MODULE6'\nexport {listGitHubOrganizations as '00c4af7e37cefa35ac7db65fa9b45995caf677a597'} from 'ACTIONS_MODULE7'\nexport {importGitHubRepository as '405f5f5259eaed6742d1a59f416d4319ea63f3bb3d'} from 'ACTIONS_MODULE8'\nexport {deployFeature as '40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf'} from 'ACTIONS_MODULE9'\nexport {deployRepository as '403a844cbb36e5d50051fe552f050ed35a8b88f317'} from 'ACTIONS_MODULE10'\nexport {deployApplication as '40559cc32878be443a5d902e563fa65ac29566c575'} from 'ACTIONS_MODULE11'\nexport {stopDeployment as '403c93928208c54fe25784ff60dcb073f25d1055c1'} from 'ACTIONS_MODULE12'\nexport {getDeploymentStatus as '402a545f24583952d99d18566abf474dd10d07741b'} from 'ACTIONS_MODULE13'\nexport {openIde as '406f6bfbd22a176bf6d0bca648d1bd1ef29efb8c31'} from 'ACTIONS_MODULE14'\nexport {openShell as '40cede021cd5c33e6bf9d5871c23ea5e73f6809b4b'} from 'ACTIONS_MODULE15'\nexport {openFolder as '40024b9babaf0ccba2c9644e1719947f9662db82da'} from 'ACTIONS_MODULE16'\nexport {syncRepository as '403bcc64cd5c7afe5cb7933130b5d71e9cb6913d44'} from 'ACTIONS_MODULE17'\nexport {getDeploymentLogs as '40e827f64795e580b75e126ddfefa3a9a722da877c'} from 'ACTIONS_MODULE18'\nexport {createProjectAndFeature as '402a7da73158b6bd6c8fb8ab5b0344dc0e0f08e228'} from 'ACTIONS_MODULE19'\nexport {createApplication as '402b7881a750d5c7c7125153b65fdd64c555ddcdc2'} from 'ACTIONS_MODULE20'\nexport {isAgentSetupComplete as '000dc696afafd019691d30ebc74c3bb2bf6be80fc9'} from 'ACTIONS_MODULE21'\nexport {checkAgentAuth as '00043b20dfa79e7ce6d504a372669a2b7396e4f421'} from 'ACTIONS_MODULE22'\nexport {checkToolStatus as '00fd3bb249b5c2f4771f7eac594bf5656eaf959cdb'} from 'ACTIONS_MODULE23'\nexport {createProjectFolder as '40da762c4b34966ae0ac466fdc38dd417bb5f12247'} from 'ACTIONS_MODULE24'\nexport {archiveFeature as '405f73e1d0740c127aafceadc63304676969dbb19a'} from 'ACTIONS_MODULE25'\nexport {deleteFeature as '782094d73ba803f25ee4b483796e8b0625c3c6564f'} from 'ACTIONS_MODULE26'\nexport {resumeFeature as '40ef132579c95dc894986b34b75cb89dd65b39da86'} from 'ACTIONS_MODULE27'\nexport {startFeature as '40b195fc3bd3d0b6f99d9ba0ce3b624b5201e8e478'} from 'ACTIONS_MODULE28'\nexport {stopFeature as '4093cfae5c300fc17a16104784825641972f80a2c2'} from 'ACTIONS_MODULE29'\nexport {unarchiveFeature as '4047cfaa45cd7417712356735bfbb78f93a103592a'} from 'ACTIONS_MODULE30'\nexport {addRepository as '40a8e46a1833838a96e4b3f97741ab37054dc3a415'} from 'ACTIONS_MODULE31'\nexport {deleteRepository as '608cb7bed4e740de6ec1034873b198d85e0771cdfb'} from 'ACTIONS_MODULE32'\nexport {deleteApplication as '400601cc704fc3a542db95c4219b7261168cbe675d'} from 'ACTIONS_MODULE33'\nexport {getFeatureMetadata as '40127b07baac3bb5494e3d8ad7b721b35a467f4a93'} from 'ACTIONS_MODULE34'\nexport {getGitRepoInfo as '60dd3bba8d40f7d7eaab9cf25cfc4a5eedd85c6c3c'} from 'ACTIONS_MODULE35'\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[433841,46646,868378,268670,685321,a=>{"use strict";var b=a.i(237705),c=a.i(996380);let d=()=>void 0;function e(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):d,debug:b?(...b)=>console.debug(a,...b):d,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var f=a.i(701904);let g=e("[deployFeature]");async function h(a){g.info(`called — featureId="${a}"`);try{let b=(0,c.resolve)("StartFeatureDeploymentUseCase"),d=await b.execute(a);return g.info(`start succeeded — state=${d.state}`),{success:!0,state:d.state}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return g.error(`error: ${a}`,b),{success:!1,error:a}}}(0,f.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"401846920f6fb739e32233d9d6a6df7945b8621c00",null),a.s(["deployFeature",()=>h],433841);let i=e("[deployRepository]");async function j(a){i.info(`called — repositoryPath="${a}"`);try{let b=(0,c.resolve)("StartRepositoryDeploymentUseCase"),d=await b.execute(a);return i.info(`start succeeded — state=${d.state}`),{success:!0,state:d.state}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return i.error(`error: ${a}`,b),{success:!1,error:a}}}(0,f.ensureServerEntryExports)([j]),(0,b.registerServerReference)(j,"408a28f520d819792447d4b47d9b73a5ddf7296469",null),a.s(["deployRepository",()=>j],46646);class k extends Error{applicationId;code;constructor(a){super(`Application ${a} not found`),this.applicationId=a,this.code="APPLICATION_NOT_FOUND",this.name="ApplicationNotFoundError",Object.setPrototypeOf(this,new.target.prototype)}}class l extends Error{applicationId;repositoryPath;code;constructor(a,b){super(`Repository path does not exist: ${b}`),this.applicationId=a,this.repositoryPath=b,this.code="APPLICATION_REPOSITORY_NOT_ON_DISK",this.name="ApplicationRepositoryNotOnDiskError",Object.setPrototypeOf(this,new.target.prototype)}}class m extends Error{repositoryPath;code;constructor(a){super("Cannot start a dev server for the repository Shep is running from"),this.repositoryPath=a,this.code="CANNOT_DEPLOY_SELF",this.name="CannotDeploySelfError",Object.setPrototypeOf(this,new.target.prototype)}}async function n(a){if(!a?.trim())return{success:!1,error:"applicationId is required"};try{let b=(0,c.resolve)("StartApplicationDeploymentUseCase"),d=await b.execute({applicationId:a});return{success:!0,state:d.state}}catch(b){if(b instanceof k)return{success:!1,error:`Application not found: ${a}`};if(b instanceof l)return{success:!1,error:`Repository path does not exist: ${b.repositoryPath}`};if(b instanceof m)return{success:!1,error:"Cannot start a dev server for the repository Shep is running from"};return{success:!1,error:b instanceof Error?b.message:"Failed to deploy application"}}}async function o(a){try{let b=(0,c.resolve)("StopDeploymentUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function p(a){return(0,c.resolve)("GetDeploymentStatusUseCase").execute(a)}(0,f.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"4005923232df16201d86b35c46dbbe719725cbcd26",null),a.s(["deployApplication",()=>n],868378),(0,f.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"409ab95b1ec58ad7dd578b018e11d5bd766839f8bc",null),a.s(["stopDeployment",()=>o],268670),(0,f.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"40ed3ea24841c9c4280513ab004dcdbce3d545bcdb",null),a.s(["getDeploymentStatus",()=>p],685321)},794691,a=>{"use strict";var b=a.i(237705),c=a.i(996380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(701904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"405723722c9eb9b4888b52203cfb121401f0c61a80",null),a.s(["getDeploymentLogs",()=>d])},777229,a=>{"use strict";var b=a.i(912513),c=a.i(889253),d=a.i(723504),e=a.i(408115),f=a.i(827900),g=a.i(673350),h=a.i(673101),i=a.i(654775),j=a.i(265324),k=a.i(794691),l=a.i(433841),m=a.i(46646),n=a.i(868378),o=a.i(268670),p=a.i(685321);a.s([],917447),a.i(917447),a.s(["0015f0a240c29915a74257d5ff2d7d15b32c6a778d",()=>b.pickFolder,"00613a83ba2b2619c9ef46303abae5aded26339bc3",()=>i.listGitHubOrganizations,"006ff5a74754817b8a495d7ba26e66c354851f6c99",()=>c.getDefaultAgentAndModel,"00d2c30c2b08e36b014924412d0cd61610cd91c78e",()=>e.checkAllAgentsStatus,"00d43390ab8112b0e6ec134ef3485ab210e36f7842",()=>d.getAllAgentModels,"4005923232df16201d86b35c46dbbe719725cbcd26",()=>n.deployApplication,"401846920f6fb739e32233d9d6a6df7945b8621c00",()=>l.deployFeature,"403ab98df2cf8db571b47142cd90ab7c7f297fa90f",()=>h.listGitHubRepositories,"405723722c9eb9b4888b52203cfb121401f0c61a80",()=>k.getDeploymentLogs,"408a28f520d819792447d4b47d9b73a5ddf7296469",()=>m.deployRepository,"409ab95b1ec58ad7dd578b018e11d5bd766839f8bc",()=>o.stopDeployment,"40e011f8f2f54f36460ff5310dd49178590a992d44",()=>j.importGitHubRepository,"40ed3ea24841c9c4280513ab004dcdbce3d545bcdb",()=>p.getDeploymentStatus,"40fcb38a7daafc835826043ee30ef771eae2a2f635",()=>g.globalSearch,"60036293085b1751ff35875b7762b2353bb09757b5",()=>f.updateAgentAndModel],777229)}];
1
+ module.exports=[433841,46646,868378,268670,685321,a=>{"use strict";var b=a.i(237705),c=a.i(996380);let d=()=>void 0;function e(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):d,debug:b?(...b)=>console.debug(a,...b):d,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var f=a.i(701904);let g=e("[deployFeature]");async function h(a){g.info(`called — featureId="${a}"`);try{let b=(0,c.resolve)("StartFeatureDeploymentUseCase"),d=await b.execute(a);return g.info(`start succeeded — state=${d.state}`),{success:!0,state:d.state}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return g.error(`error: ${a}`,b),{success:!1,error:a}}}(0,f.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf",null),a.s(["deployFeature",()=>h],433841);let i=e("[deployRepository]");async function j(a){i.info(`called — repositoryPath="${a}"`);try{let b=(0,c.resolve)("StartRepositoryDeploymentUseCase"),d=await b.execute(a);return i.info(`start succeeded — state=${d.state}`),{success:!0,state:d.state}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return i.error(`error: ${a}`,b),{success:!1,error:a}}}(0,f.ensureServerEntryExports)([j]),(0,b.registerServerReference)(j,"403a844cbb36e5d50051fe552f050ed35a8b88f317",null),a.s(["deployRepository",()=>j],46646);class k extends Error{applicationId;code;constructor(a){super(`Application ${a} not found`),this.applicationId=a,this.code="APPLICATION_NOT_FOUND",this.name="ApplicationNotFoundError",Object.setPrototypeOf(this,new.target.prototype)}}class l extends Error{applicationId;repositoryPath;code;constructor(a,b){super(`Repository path does not exist: ${b}`),this.applicationId=a,this.repositoryPath=b,this.code="APPLICATION_REPOSITORY_NOT_ON_DISK",this.name="ApplicationRepositoryNotOnDiskError",Object.setPrototypeOf(this,new.target.prototype)}}class m extends Error{repositoryPath;code;constructor(a){super("Cannot start a dev server for the repository Shep is running from"),this.repositoryPath=a,this.code="CANNOT_DEPLOY_SELF",this.name="CannotDeploySelfError",Object.setPrototypeOf(this,new.target.prototype)}}async function n(a){if(!a?.trim())return{success:!1,error:"applicationId is required"};try{let b=(0,c.resolve)("StartApplicationDeploymentUseCase"),d=await b.execute({applicationId:a});return{success:!0,state:d.state}}catch(b){if(b instanceof k)return{success:!1,error:`Application not found: ${a}`};if(b instanceof l)return{success:!1,error:`Repository path does not exist: ${b.repositoryPath}`};if(b instanceof m)return{success:!1,error:"Cannot start a dev server for the repository Shep is running from"};return{success:!1,error:b instanceof Error?b.message:"Failed to deploy application"}}}async function o(a){try{let b=(0,c.resolve)("StopDeploymentUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function p(a){return(0,c.resolve)("GetDeploymentStatusUseCase").execute(a)}(0,f.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"40559cc32878be443a5d902e563fa65ac29566c575",null),a.s(["deployApplication",()=>n],868378),(0,f.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"403c93928208c54fe25784ff60dcb073f25d1055c1",null),a.s(["stopDeployment",()=>o],268670),(0,f.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"402a545f24583952d99d18566abf474dd10d07741b",null),a.s(["getDeploymentStatus",()=>p],685321)},794691,a=>{"use strict";var b=a.i(237705),c=a.i(996380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(701904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"40e827f64795e580b75e126ddfefa3a9a722da877c",null),a.s(["getDeploymentLogs",()=>d])},777229,a=>{"use strict";var b=a.i(912513),c=a.i(889253),d=a.i(723504),e=a.i(408115),f=a.i(827900),g=a.i(673350),h=a.i(673101),i=a.i(654775),j=a.i(265324),k=a.i(794691),l=a.i(433841),m=a.i(46646),n=a.i(868378),o=a.i(268670),p=a.i(685321);a.s([],917447),a.i(917447),a.s(["00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a",()=>c.getDefaultAgentAndModel,"00c38b234d35460bb11ea6a1b0fff1c22e01c08873",()=>e.checkAllAgentsStatus,"00c4af7e37cefa35ac7db65fa9b45995caf677a597",()=>i.listGitHubOrganizations,"00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392",()=>d.getAllAgentModels,"00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330",()=>b.pickFolder,"4015ea81e1b2a02fe57f374a012b37e2cd322146f1",()=>g.globalSearch,"402a545f24583952d99d18566abf474dd10d07741b",()=>p.getDeploymentStatus,"403a844cbb36e5d50051fe552f050ed35a8b88f317",()=>m.deployRepository,"403c93928208c54fe25784ff60dcb073f25d1055c1",()=>o.stopDeployment,"40559cc32878be443a5d902e563fa65ac29566c575",()=>n.deployApplication,"405f5f5259eaed6742d1a59f416d4319ea63f3bb3d",()=>j.importGitHubRepository,"40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf",()=>l.deployFeature,"40d1082c73e97a2c5f99ef11d815cefe59a26e8998",()=>h.listGitHubRepositories,"40e827f64795e580b75e126ddfefa3a9a722da877c",()=>k.getDeploymentLogs,"60afd0d4fa2a6638646f7d23dc6c8673fd27a69207",()=>f.updateAgentAndModel],777229)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_f0fcfdff._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/deploy-feature.ts","../../../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.ts","../../../../../../../src/presentation/web/app/actions/deploy-repository.ts","../../../../../../../packages/core/src/domain/errors/application-not-found.error.ts","../../../../../../../packages/core/src/domain/errors/application-repository-not-on-disk.error.ts","../../../../../../../packages/core/src/domain/errors/cannot-deploy-self.error.ts","../../../../../../../src/presentation/web/app/actions/deploy-application.ts","../../../../../../../src/presentation/web/app/actions/stop-deployment.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-status.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-logs.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 { createDeploymentLogger } from '@shepai/core/infrastructure/services/deployment/deployment-logger';\nimport type { StartFeatureDeploymentUseCase } from '@shepai/core/application/use-cases/deployments/start-feature-deployment.use-case';\nimport type { DeploymentState } from '@shepai/core/domain/generated/output';\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 try {\n const useCase = resolve<StartFeatureDeploymentUseCase>('StartFeatureDeploymentUseCase');\n const status = await useCase.execute(featureId);\n log.info(`start succeeded — state=${status.state}`);\n return { success: true, state: status.state };\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","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger } from '@shepai/core/infrastructure/services/deployment/deployment-logger';\nimport type { StartRepositoryDeploymentUseCase } from '@shepai/core/application/use-cases/deployments/start-repository-deployment.use-case';\nimport type { DeploymentState } from '@shepai/core/domain/generated/output';\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 try {\n const useCase = resolve<StartRepositoryDeploymentUseCase>('StartRepositoryDeploymentUseCase');\n const status = await useCase.execute(repositoryPath);\n log.info(`start succeeded — state=${status.state}`);\n return { success: true, state: status.state };\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","/**\n * Application Not Found Error\n *\n * Thrown by application use cases when an application lookup by id\n * does not find a matching record in the repository.\n */\nexport class ApplicationNotFoundError extends Error {\n readonly code = 'APPLICATION_NOT_FOUND';\n constructor(public readonly applicationId: string) {\n super(`Application ${applicationId} not found`);\n this.name = 'ApplicationNotFoundError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/**\n * Application Repository Not On Disk Error\n *\n * Thrown by deployment use cases when an application's repositoryPath no\n * longer exists on the local filesystem — e.g. the user deleted the folder\n * out from under us. The caller (CLI / TUI / Web) should surface this as a\n * recoverable precondition failure, not an internal error.\n */\nexport class ApplicationRepositoryNotOnDiskError extends Error {\n readonly code = 'APPLICATION_REPOSITORY_NOT_ON_DISK';\n constructor(\n public readonly applicationId: string,\n public readonly repositoryPath: string\n ) {\n super(`Repository path does not exist: ${repositoryPath}`);\n this.name = 'ApplicationRepositoryNotOnDiskError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/**\n * Cannot Deploy Self Error\n *\n * Thrown by deployment use cases when the target repository is the same\n * directory (or a worktree of) the currently running Shep instance.\n * Spawning a nested Shep dev server would collide on the shared\n * ~/.shep/data SQLite database.\n */\nexport class CannotDeploySelfError extends Error {\n readonly code = 'CANNOT_DEPLOY_SELF';\n constructor(public readonly repositoryPath: string) {\n super('Cannot start a dev server for the repository Shep is running from');\n this.name = 'CannotDeploySelfError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { StartApplicationDeploymentUseCase } from '@shepai/core/application/use-cases/deployments/start-application-deployment.use-case';\nimport { ApplicationNotFoundError } from '@shepai/core/domain/errors/application-not-found.error';\nimport { ApplicationRepositoryNotOnDiskError } from '@shepai/core/domain/errors/application-repository-not-on-disk.error';\nimport { CannotDeploySelfError } from '@shepai/core/domain/errors/cannot-deploy-self.error';\nimport type { DeploymentState } from '@shepai/core/domain/generated/output';\n\n/**\n * Start a local dev server for an application.\n *\n * Thin server action: parses input, delegates to\n * `StartApplicationDeploymentUseCase`, and maps domain errors to the\n * action's historical response shape.\n *\n * All orchestration (repo lookup, filesystem precondition, self-instance\n * guard, `.start()` call, logging) lives in the use case — see\n * `packages/core/src/application/use-cases/deployments/\n * start-application-deployment.use-case.ts`.\n */\nexport async function deployApplication(\n applicationId: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n if (!applicationId?.trim()) {\n return { success: false, error: 'applicationId is required' };\n }\n\n try {\n const useCase = resolve<StartApplicationDeploymentUseCase>('StartApplicationDeploymentUseCase');\n const result = await useCase.execute({ applicationId });\n return { success: true, state: result.state };\n } catch (error: unknown) {\n if (error instanceof ApplicationNotFoundError) {\n return { success: false, error: `Application not found: ${applicationId}` };\n }\n if (error instanceof ApplicationRepositoryNotOnDiskError) {\n return {\n success: false,\n error: `Repository path does not exist: ${error.repositoryPath}`,\n };\n }\n if (error instanceof CannotDeploySelfError) {\n return {\n success: false,\n error: 'Cannot start a dev server for the repository Shep is running from',\n };\n }\n const message = error instanceof Error ? error.message : 'Failed to deploy application';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { StopDeploymentUseCase } from '@shepai/core/application/use-cases/deployments/stop-deployment.use-case';\n\nexport async function stopDeployment(\n targetId: string\n): Promise<{ success: boolean; error?: string }> {\n try {\n const useCase = resolve<StopDeploymentUseCase>('StopDeploymentUseCase');\n await useCase.execute(targetId);\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 { GetDeploymentStatusUseCase } from '@shepai/core/application/use-cases/deployments/get-deployment-status.use-case';\nimport type { DeploymentStatus } from '@shepai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentStatus(targetId: string): Promise<DeploymentStatus | null> {\n const useCase = resolve<GetDeploymentStatusUseCase>('GetDeploymentStatusUseCase');\n return useCase.execute(targetId);\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n LogEntry,\n} from '@shepai/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","export {pickFolder as '0015f0a240c29915a74257d5ff2d7d15b32c6a778d'} from 'ACTIONS_MODULE0'\nexport {getDefaultAgentAndModel as '006ff5a74754817b8a495d7ba26e66c354851f6c99'} from 'ACTIONS_MODULE1'\nexport {getAllAgentModels as '00d43390ab8112b0e6ec134ef3485ab210e36f7842'} from 'ACTIONS_MODULE2'\nexport {checkAllAgentsStatus as '00d2c30c2b08e36b014924412d0cd61610cd91c78e'} from 'ACTIONS_MODULE3'\nexport {updateAgentAndModel as '60036293085b1751ff35875b7762b2353bb09757b5'} from 'ACTIONS_MODULE4'\nexport {globalSearch as '40fcb38a7daafc835826043ee30ef771eae2a2f635'} from 'ACTIONS_MODULE5'\nexport {listGitHubRepositories as '403ab98df2cf8db571b47142cd90ab7c7f297fa90f'} from 'ACTIONS_MODULE6'\nexport {listGitHubOrganizations as '00613a83ba2b2619c9ef46303abae5aded26339bc3'} from 'ACTIONS_MODULE7'\nexport {importGitHubRepository as '40e011f8f2f54f36460ff5310dd49178590a992d44'} from 'ACTIONS_MODULE8'\nexport {getDeploymentLogs as '405723722c9eb9b4888b52203cfb121401f0c61a80'} from 'ACTIONS_MODULE9'\nexport {deployFeature as '401846920f6fb739e32233d9d6a6df7945b8621c00'} from 'ACTIONS_MODULE10'\nexport {deployRepository as '408a28f520d819792447d4b47d9b73a5ddf7296469'} from 'ACTIONS_MODULE11'\nexport {deployApplication as '4005923232df16201d86b35c46dbbe719725cbcd26'} from 'ACTIONS_MODULE12'\nexport {stopDeployment as '409ab95b1ec58ad7dd578b018e11d5bd766839f8bc'} from 'ACTIONS_MODULE13'\nexport {getDeploymentStatus as '40ed3ea24841c9c4280513ab004dcdbce3d545bcdb'} from 'ACTIONS_MODULE14'\n"],"names":[],"mappings":"qFAEA,EAAA,EAAA,CAAA,CAAA,QCOA,IAAM,EAAO,SAAM,EAEZ,SAAS,EAAuB,CAAc,EACnD,IAAM,EAAU,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,CAEnC,MAAO,CACL,KAAM,EAAU,CAAC,GAAG,IAAoB,QAAQ,IAAI,CAAC,KAAW,GAAQ,EACxE,MAAO,EAAU,CAAC,GAAG,IAAoB,QAAQ,KAAK,CAAC,KAAW,GAAQ,EAC1E,KAAM,CAAC,GAAG,IAAoB,QAAQ,IAAI,CAAC,KAAW,GACtD,MAAO,CAAC,GAAG,IAAoB,QAAQ,KAAK,CAAC,KAAW,EAC1D,CACF,mBDbA,IAAM,EAAM,EAAuB,mBAE5B,eAAe,EACpB,CAAiB,EAEjB,EAAI,IAAI,CAAC,CAAC,oBAAoB,EAAE,EAAU,CAAC,CAAC,EAE5C,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAgC,iCACjD,EAAS,MAAM,EAAQ,OAAO,CAAC,GAErC,OADA,EAAI,IAAI,CAAC,CAAC,wBAAwB,EAAE,EAAO,KAAK,CAAA,CAAE,EAC3C,CAAE,SAAS,EAAM,MAAO,EAAO,KAAK,AAAC,CAC9C,CAAE,MAAO,EAAgB,CACvB,IAAM,EAAU,aAAiB,MAAQ,EAAM,OAAO,CAAG,2BAEzD,OADA,EAAI,KAAK,CAAC,CAAC,OAAO,EAAE,EAAA,CAAS,CAAE,GACxB,CAAE,QAAS,GAAO,MAAO,CAAQ,CAC1C,CACF,iCAfsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,0CEFtB,IAAM,EAAM,EAAuB,sBAE5B,eAAe,EACpB,CAAsB,EAEtB,EAAI,IAAI,CAAC,CAAC,yBAAyB,EAAE,EAAe,CAAC,CAAC,EAEtD,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAmC,oCACpD,EAAS,MAAM,EAAQ,OAAO,CAAC,GAErC,OADA,EAAI,IAAI,CAAC,CAAC,wBAAwB,EAAE,EAAO,KAAK,CAAA,CAAE,EAC3C,CAAE,SAAS,EAAM,MAAO,EAAO,KAAK,AAAC,CAC9C,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,iCAfsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2CCHf,OAAM,UAAiC,oBACnC,IAA+B,AACxC,aAA4B,CAAqB,CAAE,CACjD,KAAK,CAAC,CAAC,YAAY,EAAE,EAAc,UAAU,CAAC,EAAA,IAAA,CADpB,aAAA,CAAA,EAAA,IAAA,CADnB,IAAA,CAAO,wBAGd,IAAI,CAAC,IAAI,CAAG,2BACZ,OAAO,cAAc,CAAC,IAAI,CAAE,WAAW,SAAS,CAClD,CACF,CCLO,MAAM,UAA4C,mCAC9C,IAA4C,AACrD,aACkB,CAAqB,CACrB,CAAsB,CACtC,CACA,KAAK,CAAC,CAAC,gCAAgC,EAAE,EAAA,CAAgB,EAAA,IAAA,CAHzC,aAAA,CAAA,EAAA,IAAA,CACA,cAAA,CAAA,EAAA,IAAA,CAHT,IAAA,CAAO,qCAMd,IAAI,CAAC,IAAI,CAAG,sCACZ,OAAO,cAAc,CAAC,IAAI,CAAE,WAAW,SAAS,CAClD,CACF,CCVO,MAAM,UAA8B,qBAChC,IAA4B,AACrC,aAA4B,CAAsB,CAAE,CAClD,KAAK,CAAC,qEAAA,IAAA,CADoB,cAAA,CAAA,EAAA,IAAA,CADnB,IAAA,CAAO,qBAGd,IAAI,CAAC,IAAI,CAAG,wBACZ,OAAO,cAAc,CAAC,IAAI,CAAE,WAAW,SAAS,CAClD,CACF,CCMO,eAAe,EACpB,CAAqB,EAErB,GAAI,CAAC,GAAe,OAClB,CAD0B,KACnB,CAAE,SAAS,EAAO,MAAO,2BAA4B,EAG9D,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAoC,qCACrD,EAAS,MAAM,EAAQ,OAAO,CAAC,eAAE,CAAc,GACrD,MAAO,CAAE,SAAS,EAAM,MAAO,EAAO,KAAK,AAAC,CAC9C,CAAE,MAAO,EAAgB,CACvB,GAAI,aAAiB,EACnB,MAAO,CAAE,SAAS,EAAO,MAAO,AADa,CACZ,uBAAuB,EAAE,EAAA,CAAe,AAAC,EAE5E,GAAI,aAAiB,EACnB,MAAO,CACL,QAAS,GACT,MAAO,CAAC,UAH8C,sBAGd,EAAE,EAAM,cAAc,CAAA,CAAE,AAClE,EAEF,GAAI,aAAiB,EACnB,MAAO,CACL,QAAS,GACT,GAHwC,GAGjC,mEACT,EAGF,MAAO,CAAE,SAAS,EAAO,MADT,CACgB,YADC,MAAQ,EAAM,OAAO,CAAG,8BACjB,CAC1C,CACF,CC9CO,eAAe,EACpB,CAAgB,EAEhB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAwB,yBAE/C,OADA,MAAM,EAAQ,OAAO,CAAC,GACf,CAAE,SAAS,CAAK,CACzB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,SAAS,EAAO,MADT,CACgB,YADC,MAAQ,EAAM,OAAO,CAAG,2BACjB,CAC1C,CACF,CCVO,eAAe,EAAoB,CAAgB,EAExD,MADgB,AACT,CADS,EAAA,EAAA,OAAA,AAAO,EAA6B,8BACrC,OAAO,CAAC,EACzB,iCFYsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,8EChBA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2ECCA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2FCJtB,EAAA,EAAA,CAAA,CAAA,QAMO,eAAe,EAAkB,CAAgB,SACtD,AAAK,GAAU,CAAX,MAIsB,AACnB,CALgB,AAIG,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC7B,OAAO,CAAC,GAJxB,IAKX,2CAPsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,gECRtB,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/deploy-feature.ts","../../../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.ts","../../../../../../../src/presentation/web/app/actions/deploy-repository.ts","../../../../../../../packages/core/src/domain/errors/application-not-found.error.ts","../../../../../../../packages/core/src/domain/errors/application-repository-not-on-disk.error.ts","../../../../../../../packages/core/src/domain/errors/cannot-deploy-self.error.ts","../../../../../../../src/presentation/web/app/actions/deploy-application.ts","../../../../../../../src/presentation/web/app/actions/stop-deployment.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-status.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-logs.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 { createDeploymentLogger } from '@shepai/core/infrastructure/services/deployment/deployment-logger';\nimport type { StartFeatureDeploymentUseCase } from '@shepai/core/application/use-cases/deployments/start-feature-deployment.use-case';\nimport type { DeploymentState } from '@shepai/core/domain/generated/output';\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 try {\n const useCase = resolve<StartFeatureDeploymentUseCase>('StartFeatureDeploymentUseCase');\n const status = await useCase.execute(featureId);\n log.info(`start succeeded — state=${status.state}`);\n return { success: true, state: status.state };\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","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger } from '@shepai/core/infrastructure/services/deployment/deployment-logger';\nimport type { StartRepositoryDeploymentUseCase } from '@shepai/core/application/use-cases/deployments/start-repository-deployment.use-case';\nimport type { DeploymentState } from '@shepai/core/domain/generated/output';\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 try {\n const useCase = resolve<StartRepositoryDeploymentUseCase>('StartRepositoryDeploymentUseCase');\n const status = await useCase.execute(repositoryPath);\n log.info(`start succeeded — state=${status.state}`);\n return { success: true, state: status.state };\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","/**\n * Application Not Found Error\n *\n * Thrown by application use cases when an application lookup by id\n * does not find a matching record in the repository.\n */\nexport class ApplicationNotFoundError extends Error {\n readonly code = 'APPLICATION_NOT_FOUND';\n constructor(public readonly applicationId: string) {\n super(`Application ${applicationId} not found`);\n this.name = 'ApplicationNotFoundError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/**\n * Application Repository Not On Disk Error\n *\n * Thrown by deployment use cases when an application's repositoryPath no\n * longer exists on the local filesystem — e.g. the user deleted the folder\n * out from under us. The caller (CLI / TUI / Web) should surface this as a\n * recoverable precondition failure, not an internal error.\n */\nexport class ApplicationRepositoryNotOnDiskError extends Error {\n readonly code = 'APPLICATION_REPOSITORY_NOT_ON_DISK';\n constructor(\n public readonly applicationId: string,\n public readonly repositoryPath: string\n ) {\n super(`Repository path does not exist: ${repositoryPath}`);\n this.name = 'ApplicationRepositoryNotOnDiskError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/**\n * Cannot Deploy Self Error\n *\n * Thrown by deployment use cases when the target repository is the same\n * directory (or a worktree of) the currently running Shep instance.\n * Spawning a nested Shep dev server would collide on the shared\n * ~/.shep/data SQLite database.\n */\nexport class CannotDeploySelfError extends Error {\n readonly code = 'CANNOT_DEPLOY_SELF';\n constructor(public readonly repositoryPath: string) {\n super('Cannot start a dev server for the repository Shep is running from');\n this.name = 'CannotDeploySelfError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { StartApplicationDeploymentUseCase } from '@shepai/core/application/use-cases/deployments/start-application-deployment.use-case';\nimport { ApplicationNotFoundError } from '@shepai/core/domain/errors/application-not-found.error';\nimport { ApplicationRepositoryNotOnDiskError } from '@shepai/core/domain/errors/application-repository-not-on-disk.error';\nimport { CannotDeploySelfError } from '@shepai/core/domain/errors/cannot-deploy-self.error';\nimport type { DeploymentState } from '@shepai/core/domain/generated/output';\n\n/**\n * Start a local dev server for an application.\n *\n * Thin server action: parses input, delegates to\n * `StartApplicationDeploymentUseCase`, and maps domain errors to the\n * action's historical response shape.\n *\n * All orchestration (repo lookup, filesystem precondition, self-instance\n * guard, `.start()` call, logging) lives in the use case — see\n * `packages/core/src/application/use-cases/deployments/\n * start-application-deployment.use-case.ts`.\n */\nexport async function deployApplication(\n applicationId: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n if (!applicationId?.trim()) {\n return { success: false, error: 'applicationId is required' };\n }\n\n try {\n const useCase = resolve<StartApplicationDeploymentUseCase>('StartApplicationDeploymentUseCase');\n const result = await useCase.execute({ applicationId });\n return { success: true, state: result.state };\n } catch (error: unknown) {\n if (error instanceof ApplicationNotFoundError) {\n return { success: false, error: `Application not found: ${applicationId}` };\n }\n if (error instanceof ApplicationRepositoryNotOnDiskError) {\n return {\n success: false,\n error: `Repository path does not exist: ${error.repositoryPath}`,\n };\n }\n if (error instanceof CannotDeploySelfError) {\n return {\n success: false,\n error: 'Cannot start a dev server for the repository Shep is running from',\n };\n }\n const message = error instanceof Error ? error.message : 'Failed to deploy application';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { StopDeploymentUseCase } from '@shepai/core/application/use-cases/deployments/stop-deployment.use-case';\n\nexport async function stopDeployment(\n targetId: string\n): Promise<{ success: boolean; error?: string }> {\n try {\n const useCase = resolve<StopDeploymentUseCase>('StopDeploymentUseCase');\n await useCase.execute(targetId);\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 { GetDeploymentStatusUseCase } from '@shepai/core/application/use-cases/deployments/get-deployment-status.use-case';\nimport type { DeploymentStatus } from '@shepai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentStatus(targetId: string): Promise<DeploymentStatus | null> {\n const useCase = resolve<GetDeploymentStatusUseCase>('GetDeploymentStatusUseCase');\n return useCase.execute(targetId);\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n LogEntry,\n} from '@shepai/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","export {pickFolder as '00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330'} from 'ACTIONS_MODULE0'\nexport {getDefaultAgentAndModel as '00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a'} from 'ACTIONS_MODULE1'\nexport {getAllAgentModels as '00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392'} from 'ACTIONS_MODULE2'\nexport {checkAllAgentsStatus as '00c38b234d35460bb11ea6a1b0fff1c22e01c08873'} from 'ACTIONS_MODULE3'\nexport {updateAgentAndModel as '60afd0d4fa2a6638646f7d23dc6c8673fd27a69207'} from 'ACTIONS_MODULE4'\nexport {globalSearch as '4015ea81e1b2a02fe57f374a012b37e2cd322146f1'} from 'ACTIONS_MODULE5'\nexport {listGitHubRepositories as '40d1082c73e97a2c5f99ef11d815cefe59a26e8998'} from 'ACTIONS_MODULE6'\nexport {listGitHubOrganizations as '00c4af7e37cefa35ac7db65fa9b45995caf677a597'} from 'ACTIONS_MODULE7'\nexport {importGitHubRepository as '405f5f5259eaed6742d1a59f416d4319ea63f3bb3d'} from 'ACTIONS_MODULE8'\nexport {getDeploymentLogs as '40e827f64795e580b75e126ddfefa3a9a722da877c'} from 'ACTIONS_MODULE9'\nexport {deployFeature as '40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf'} from 'ACTIONS_MODULE10'\nexport {deployRepository as '403a844cbb36e5d50051fe552f050ed35a8b88f317'} from 'ACTIONS_MODULE11'\nexport {deployApplication as '40559cc32878be443a5d902e563fa65ac29566c575'} from 'ACTIONS_MODULE12'\nexport {stopDeployment as '403c93928208c54fe25784ff60dcb073f25d1055c1'} from 'ACTIONS_MODULE13'\nexport {getDeploymentStatus as '402a545f24583952d99d18566abf474dd10d07741b'} from 'ACTIONS_MODULE14'\n"],"names":[],"mappings":"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"}