@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=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},647407,a=>{a.n(a.i(805983))},859975,a=>{a.n(a.i(572884))},81719,a=>{a.n(a.i(639838))},917780,a=>{a.n(a.i(333238))},158555,a=>{a.n(a.i(888589))},660526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},532459,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(39873).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation>","default")},693933,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(39873).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/presentation/web/components/features/version/version-page-client.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/version/version-page-client.tsx","default")},67651,a=>{"use strict";a.i(532459);var b=a.i(693933);a.n(b)},77048,a=>{"use strict";var b=a.i(282469),c=a.i(660526),d=a.i(996380),e=a.i(67651);function f(){let a=function(){try{let{version:a,name:b,description:c}=(0,d.resolve)("IVersionService").getVersion();return{version:a,name:b,description:c,branch:"HEAD",commitHash:"60460ac85acd7751f6453b6e3facf1e56f5f0068"}}catch{return{version:"1.202.1",name:"@shepai/cli",description:"Autonomous AI-native SDLC platform — run parallel AI agents in isolated worktrees to automate the development cycle from idea to deploy.",branch:"HEAD",commitHash:"60460ac85acd7751f6453b6e3facf1e56f5f0068"}}}(),f={nodeVersion:process.version,platform:(0,c.platform)(),arch:(0,c.arch)()};return(0,b.jsx)(e.default,{versionInfo:a,systemInfo:f})}a.s(["default",()=>f],77048)}];
1
+ module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},647407,a=>{a.n(a.i(805983))},859975,a=>{a.n(a.i(572884))},81719,a=>{a.n(a.i(639838))},917780,a=>{a.n(a.i(333238))},158555,a=>{a.n(a.i(888589))},660526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},532459,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(39873).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation>","default")},693933,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(39873).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/presentation/web/components/features/version/version-page-client.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/version/version-page-client.tsx","default")},67651,a=>{"use strict";a.i(532459);var b=a.i(693933);a.n(b)},77048,a=>{"use strict";var b=a.i(282469),c=a.i(660526),d=a.i(996380),e=a.i(67651);function f(){let a=function(){try{let{version:a,name:b,description:c}=(0,d.resolve)("IVersionService").getVersion();return{version:a,name:b,description:c,branch:"main",commitHash:"3b4c5607002d7ed98cc395fa739c315677b11924"}}catch{return{version:"1.202.1",name:"@shepai/cli",description:"Autonomous AI-native SDLC platform — run parallel AI agents in isolated worktrees to automate the development cycle from idea to deploy.",branch:"main",commitHash:"3b4c5607002d7ed98cc395fa739c315677b11924"}}}(),f={nodeVersion:process.version,platform:(0,c.platform)(),arch:(0,c.arch)()};return(0,b.jsx)(e.default,{versionInfo:a,systemInfo:f})}a.s(["default",()=>f],77048)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__648730d4._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[902157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},912714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},660526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},632278,a=>{"use strict";a.i(912714);var b=a.i(660526),c=a.i(750227);function d(){return process.env.SHEP_HOME??(0,c.join)((0,b.homedir)(),".shep")}a.i(902157),a.s(["getShepHomeDir",()=>d])},686561,579195,a=>{"use strict";var b=a.i(237705),c=a.i(902157),d=a.i(750227),e=a.i(996380),f=a.i(632278),g=a.i(701904);async function h(){try{let b=(0,e.resolve)("LoadSettingsUseCase"),g=await b.execute(),h=(0,f.getShepHomeDir)(),i="Unknown";try{var a;let b=(0,d.join)(h,"data");i=(a=(0,c.statSync)(b).size)<1024?`${a} B`:a<1048576?`${(a/1024).toFixed(1)} KB`:`${(a/1048576).toFixed(1)} MB`}catch{}return{settings:g,shepHome:h,dbFileSize:i}}catch(a){return{error:a instanceof Error?a.message:"Failed to load settings"}}}async function i(){try{let a=(0,e.resolve)("IToolInstallerService");return await a.listAvailableTerminals()}catch{return[{id:"system",name:"System Terminal",available:!0}]}}(0,g.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"000ab33f63900f62055a770b1a2c6a837af5261781",null),a.s(["loadSettings",()=>h],686561),(0,g.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"00d17265418d9ac4658821496c271dc02ffd3b8fef",null),a.s(["getAvailableTerminals",()=>i],579195)},586303,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(686561),l=a.i(579195),m=a.i(237705),n=a.i(615704),o=a.i(996380),p=a.i(633244),q=a.i(701904);async function r(a){try{let b=(0,o.resolve)("LoadSettingsUseCase"),c=await b.execute(),d=function a(b,c){let d={...b};for(let e of Object.keys(c)){let f=c[e];if(void 0===f)continue;let g=b[e];null==g||"object"!=typeof g||Array.isArray(g)||g instanceof Date||null===f||"object"!=typeof f||Array.isArray(f)||f instanceof Date?d[e]=f:d[e]=a(g,f)}return d}(c,a);d.updatedAt=new Date;let e=(0,o.resolve)("UpdateSettingsUseCase");return await e.execute(d),(0,p.updateSettings)(d),(0,n.revalidatePath)("/","layout"),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to update settings"}}}async function s(a){try{let b=(0,o.resolve)("ConnectGithubUseCase"),{login:c}=await b.execute({token:a});return{success:!0,login:c}}catch(a){return{success:!1,error:a instanceof Error?a.message:String(a)}}}async function t(){try{let a=(0,o.resolve)("DisconnectGithubUseCase");return await a.execute(),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:String(a)}}}async function u(){return(0,o.resolve)("GetGithubIntegrationStatusUseCase").execute()}(0,q.ensureServerEntryExports)([r]),(0,m.registerServerReference)(r,"409f9fcc4f6557d27c16cea82fdf9e8ee92483a485",null),(0,q.ensureServerEntryExports)([s,t,u]),(0,m.registerServerReference)(s,"40db4da91cbb89f7c8eeee4fce24542f73ba851067",null),(0,m.registerServerReference)(t,"00f6e626208d11f7146c4c397726a5efb2673771b3",null),(0,m.registerServerReference)(u,"005684dcd21a9d39f21663411f7a1382af4ea9c7ca",null),a.s([],557693),a.i(557693),a.s(["000ab33f63900f62055a770b1a2c6a837af5261781",()=>k.loadSettings,"0015f0a240c29915a74257d5ff2d7d15b32c6a778d",()=>b.pickFolder,"005684dcd21a9d39f21663411f7a1382af4ea9c7ca",()=>u,"00613a83ba2b2619c9ef46303abae5aded26339bc3",()=>i.listGitHubOrganizations,"006ff5a74754817b8a495d7ba26e66c354851f6c99",()=>c.getDefaultAgentAndModel,"00d17265418d9ac4658821496c271dc02ffd3b8fef",()=>l.getAvailableTerminals,"00d2c30c2b08e36b014924412d0cd61610cd91c78e",()=>e.checkAllAgentsStatus,"00d43390ab8112b0e6ec134ef3485ab210e36f7842",()=>d.getAllAgentModels,"00f6e626208d11f7146c4c397726a5efb2673771b3",()=>t,"403ab98df2cf8db571b47142cd90ab7c7f297fa90f",()=>h.listGitHubRepositories,"409f9fcc4f6557d27c16cea82fdf9e8ee92483a485",()=>r,"40db4da91cbb89f7c8eeee4fce24542f73ba851067",()=>s,"40e011f8f2f54f36460ff5310dd49178590a992d44",()=>j.importGitHubRepository,"40fcb38a7daafc835826043ee30ef771eae2a2f635",()=>g.globalSearch,"60036293085b1751ff35875b7762b2353bb09757b5",()=>f.updateAgentAndModel],586303)}];
1
+ module.exports=[902157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},912714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},660526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},632278,a=>{"use strict";a.i(912714);var b=a.i(660526),c=a.i(750227);function d(){return process.env.SHEP_HOME??(0,c.join)((0,b.homedir)(),".shep")}a.i(902157),a.s(["getShepHomeDir",()=>d])},686561,579195,a=>{"use strict";var b=a.i(237705),c=a.i(902157),d=a.i(750227),e=a.i(996380),f=a.i(632278),g=a.i(701904);async function h(){try{let b=(0,e.resolve)("LoadSettingsUseCase"),g=await b.execute(),h=(0,f.getShepHomeDir)(),i="Unknown";try{var a;let b=(0,d.join)(h,"data");i=(a=(0,c.statSync)(b).size)<1024?`${a} B`:a<1048576?`${(a/1024).toFixed(1)} KB`:`${(a/1048576).toFixed(1)} MB`}catch{}return{settings:g,shepHome:h,dbFileSize:i}}catch(a){return{error:a instanceof Error?a.message:"Failed to load settings"}}}async function i(){try{let a=(0,e.resolve)("IToolInstallerService");return await a.listAvailableTerminals()}catch{return[{id:"system",name:"System Terminal",available:!0}]}}(0,g.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"005f3f97e63dcd1fc94147a2c2e1b9e8a5f1621814",null),a.s(["loadSettings",()=>h],686561),(0,g.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"000d731ff70327e17f8a35eda10c6348461051bbc9",null),a.s(["getAvailableTerminals",()=>i],579195)},586303,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(686561),l=a.i(579195),m=a.i(237705),n=a.i(615704),o=a.i(996380),p=a.i(633244),q=a.i(701904);async function r(a){try{let b=(0,o.resolve)("LoadSettingsUseCase"),c=await b.execute(),d=function a(b,c){let d={...b};for(let e of Object.keys(c)){let f=c[e];if(void 0===f)continue;let g=b[e];null==g||"object"!=typeof g||Array.isArray(g)||g instanceof Date||null===f||"object"!=typeof f||Array.isArray(f)||f instanceof Date?d[e]=f:d[e]=a(g,f)}return d}(c,a);d.updatedAt=new Date;let e=(0,o.resolve)("UpdateSettingsUseCase");return await e.execute(d),(0,p.updateSettings)(d),(0,n.revalidatePath)("/","layout"),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to update settings"}}}async function s(a){try{let b=(0,o.resolve)("ConnectGithubUseCase"),{login:c}=await b.execute({token:a});return{success:!0,login:c}}catch(a){return{success:!1,error:a instanceof Error?a.message:String(a)}}}async function t(){try{let a=(0,o.resolve)("DisconnectGithubUseCase");return await a.execute(),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:String(a)}}}async function u(){return(0,o.resolve)("GetGithubIntegrationStatusUseCase").execute()}(0,q.ensureServerEntryExports)([r]),(0,m.registerServerReference)(r,"40d67a4547e3385399c55e42521e04fc4ddca73651",null),(0,q.ensureServerEntryExports)([s,t,u]),(0,m.registerServerReference)(s,"40300525816e6dce82b313e0458074a8059747654e",null),(0,m.registerServerReference)(t,"00d110d278ca27f5be0e499768da94696e8ad3f276",null),(0,m.registerServerReference)(u,"007696380cc405e049765057b1bbeda43d195a6a4a",null),a.s([],557693),a.i(557693),a.s(["000d731ff70327e17f8a35eda10c6348461051bbc9",()=>l.getAvailableTerminals,"005f3f97e63dcd1fc94147a2c2e1b9e8a5f1621814",()=>k.loadSettings,"007696380cc405e049765057b1bbeda43d195a6a4a",()=>u,"00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a",()=>c.getDefaultAgentAndModel,"00c38b234d35460bb11ea6a1b0fff1c22e01c08873",()=>e.checkAllAgentsStatus,"00c4af7e37cefa35ac7db65fa9b45995caf677a597",()=>i.listGitHubOrganizations,"00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392",()=>d.getAllAgentModels,"00d110d278ca27f5be0e499768da94696e8ad3f276",()=>t,"00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330",()=>b.pickFolder,"4015ea81e1b2a02fe57f374a012b37e2cd322146f1",()=>g.globalSearch,"40300525816e6dce82b313e0458074a8059747654e",()=>s,"405f5f5259eaed6742d1a59f416d4319ea63f3bb3d",()=>j.importGitHubRepository,"40d1082c73e97a2c5f99ef11d815cefe59a26e8998",()=>h.listGitHubRepositories,"40d67a4547e3385399c55e42521e04fc4ddca73651",()=>r,"60afd0d4fa2a6638646f7d23dc6c8673fd27a69207",()=>f.updateAgentAndModel],586303)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__68df6415._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/core/src/infrastructure/services/filesystem/shep-directory.service.ts","../../../../../../../src/presentation/web/app/actions/load-settings.ts","../../../../../../../src/presentation/web/app/actions/get-available-terminals.ts","../../../../../../../src/presentation/web/.next-internal/server/app/settings/page/actions.js%20%28server%20actions%20loader%29","../../../../../../../src/presentation/web/app/actions/update-settings.ts","../../../../../../../src/presentation/web/app/actions/github-integration.ts"],"sourcesContent":["/**\n * Shep Directory Service\n *\n * Manages the ~/.shep/ directory for global settings and data storage.\n * Ensures directory exists with correct permissions before database operations.\n *\n * Supports SHEP_HOME env var for test isolation (overrides default ~/.shep/).\n */\n\nimport { mkdir } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { existsSync } from 'node:fs';\n\n/**\n * Resolves the Shep home directory.\n * Respects SHEP_HOME env var for test isolation, falls back to ~/.shep/\n */\nfunction resolveShepHomeDir(): string {\n return process.env.SHEP_HOME ?? join(homedir(), '.shep');\n}\n\n/**\n * Gets the path to the Shep home directory.\n * Uses SHEP_HOME env var if set, otherwise ~/.shep/\n *\n * @returns Path to shep home directory\n */\nexport function getShepHomeDir(): string {\n return resolveShepHomeDir();\n}\n\n/**\n * Gets the path to the SQLite database file.\n *\n * @returns Path to the database file\n */\nexport function getShepDbPath(): string {\n return join(resolveShepHomeDir(), 'data');\n}\n\n/**\n * Gets the path to the daemon state file.\n * Uses SHEP_HOME env var if set (for test isolation), otherwise ~/.shep/daemon.json\n *\n * @returns Path to daemon.json\n */\nexport function getDaemonStatePath(): string {\n return join(resolveShepHomeDir(), 'daemon.json');\n}\n\n/**\n * Gets the path to the daemon log file.\n * Uses SHEP_HOME env var if set (for test isolation), otherwise ~/.shep/daemon.log\n *\n * @returns Path to daemon.log\n */\nexport function getDaemonLogPath(): string {\n return join(resolveShepHomeDir(), 'daemon.log');\n}\n\n/**\n * Ensures the shep home directory exists with correct permissions.\n * Creates the directory if it doesn't exist.\n * Safe to call multiple times (idempotent).\n *\n * Permissions: 700 (rwx------) - only owner can read/write/execute\n *\n * @throws Error if directory cannot be created (permissions, disk space, etc.)\n */\nexport async function ensureShepDirectory(): Promise<void> {\n const shepDir = resolveShepHomeDir();\n\n if (existsSync(shepDir)) {\n return;\n }\n\n try {\n await mkdir(shepDir, {\n recursive: true,\n mode: 0o700,\n });\n } catch (error) {\n throw new Error(\n `Failed to create Shep directory at ${shepDir}: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n}\n","'use server';\n\nimport { statSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport type { LoadSettingsUseCase } from '@shepai/core/application/use-cases/settings/load-settings.use-case';\nimport { getShepHomeDir } from '@shepai/core/infrastructure/services/filesystem/shep-directory.service';\nimport type { Settings } from '@shepai/core/domain/generated/output';\n\nexport interface LoadSettingsResult {\n settings?: Settings;\n shepHome?: string;\n dbFileSize?: string;\n error?: string;\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nexport async function loadSettings(): Promise<LoadSettingsResult> {\n try {\n const useCase = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const settings = await useCase.execute();\n\n const shepHome = getShepHomeDir();\n let dbFileSize = 'Unknown';\n try {\n const dbPath = join(shepHome, 'data');\n const stat = statSync(dbPath);\n dbFileSize = formatFileSize(stat.size);\n } catch {\n // DB file may not exist yet\n }\n\n return { settings, shepHome, dbFileSize };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load settings';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IToolInstallerService } from '@shepai/core/application/ports/output/services/tool-installer.service';\n\nexport interface AvailableTerminal {\n id: string;\n name: string;\n available: boolean;\n}\n\n/**\n * Returns the list of terminal entries from the DI container's IToolInstallerService,\n * filtered to the current platform with availability checks.\n *\n * Using the DI container (not a direct import from tool-metadata) ensures that\n * TOOL_METADATA is read from the correct tools/ directory path — it is loaded once\n * in the Node.js CLI bootstrap context where import.meta.url resolves correctly.\n * Direct imports of tool-metadata from Next.js server action bundles break in\n * standalone production mode because import.meta.url points to the chunk file.\n */\nexport async function getAvailableTerminals(): Promise<AvailableTerminal[]> {\n try {\n const service = resolve<IToolInstallerService>('IToolInstallerService');\n return await service.listAvailableTerminals();\n } catch {\n return [{ id: 'system', name: 'System Terminal', available: true }];\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 {loadSettings as '000ab33f63900f62055a770b1a2c6a837af5261781'} from 'ACTIONS_MODULE9'\nexport {getAvailableTerminals as '00d17265418d9ac4658821496c271dc02ffd3b8fef'} from 'ACTIONS_MODULE10'\nexport {updateSettingsAction as '409f9fcc4f6557d27c16cea82fdf9e8ee92483a485'} from 'ACTIONS_MODULE11'\nexport {connectGithubAction as '40db4da91cbb89f7c8eeee4fce24542f73ba851067'} from 'ACTIONS_MODULE12'\nexport {disconnectGithubAction as '00f6e626208d11f7146c4c397726a5efb2673771b3'} from 'ACTIONS_MODULE12'\nexport {getGithubStatusAction as '005684dcd21a9d39f21663411f7a1382af4ea9c7ca'} from 'ACTIONS_MODULE12'\n","'use server';\n\nimport { revalidatePath } from 'next/cache';\nimport { resolve } from '@/lib/server-container';\nimport type { LoadSettingsUseCase } from '@shepai/core/application/use-cases/settings/load-settings.use-case';\nimport type { UpdateSettingsUseCase } from '@shepai/core/application/use-cases/settings/update-settings.use-case';\nimport { updateSettings as updateSettingsSingleton } from '@shepai/core/infrastructure/services/settings.service';\nimport type { Settings } from '@shepai/core/domain/generated/output';\n\ntype DeepPartial<T> = {\n [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];\n};\n\nfunction deepMerge<T extends Record<string, unknown>>(target: T, source: DeepPartial<T>): T {\n const result = { ...target };\n for (const key of Object.keys(source) as (keyof T)[]) {\n const sourceVal = source[key];\n if (sourceVal === undefined) continue;\n\n const targetVal = target[key];\n if (\n targetVal !== null &&\n targetVal !== undefined &&\n typeof targetVal === 'object' &&\n !Array.isArray(targetVal) &&\n !(targetVal instanceof Date) &&\n sourceVal !== null &&\n typeof sourceVal === 'object' &&\n !Array.isArray(sourceVal) &&\n !(sourceVal instanceof Date)\n ) {\n result[key] = deepMerge(\n targetVal as Record<string, unknown>,\n sourceVal as DeepPartial<Record<string, unknown>>\n ) as T[keyof T];\n } else {\n result[key] = sourceVal as T[keyof T];\n }\n }\n return result;\n}\n\nexport interface UpdateSettingsResult {\n success: boolean;\n error?: string;\n}\n\nexport async function updateSettingsAction(\n partial: DeepPartial<Settings>\n): Promise<UpdateSettingsResult> {\n try {\n const loadUseCase = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const current = await loadUseCase.execute();\n\n const merged = deepMerge(\n current as unknown as Record<string, unknown>,\n partial as DeepPartial<Record<string, unknown>>\n ) as Settings;\n merged.updatedAt = new Date();\n\n const updateUseCase = resolve<UpdateSettingsUseCase>('UpdateSettingsUseCase');\n await updateUseCase.execute(merged);\n\n updateSettingsSingleton(merged);\n\n revalidatePath('/', 'layout');\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to update settings';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ConnectGithubUseCase } from '@shepai/core/application/use-cases/integrations/connect-github.use-case';\nimport type { DisconnectGithubUseCase } from '@shepai/core/application/use-cases/integrations/disconnect-github.use-case';\nimport type { GetGithubIntegrationStatusUseCase } from '@shepai/core/application/use-cases/integrations/get-github-integration-status.use-case';\nimport type { GithubIntegrationStatus } from '@shepai/core/application/ports/output/repositories/github-integration.repository.interface';\n\nexport interface ConnectGithubResult {\n success: boolean;\n /** GitHub login that the token authenticated as. Present on success. */\n login?: string;\n error?: string;\n}\n\nexport async function connectGithubAction(token: string): Promise<ConnectGithubResult> {\n try {\n const useCase = resolve<ConnectGithubUseCase>('ConnectGithubUseCase');\n const { login } = await useCase.execute({ token });\n return { success: true, login };\n } catch (error) {\n return { success: false, error: error instanceof Error ? error.message : String(error) };\n }\n}\n\nexport async function disconnectGithubAction(): Promise<{ success: boolean; error?: string }> {\n try {\n const useCase = resolve<DisconnectGithubUseCase>('DisconnectGithubUseCase');\n await useCase.execute();\n return { success: true };\n } catch (error) {\n return { success: false, error: error instanceof Error ? error.message : String(error) };\n }\n}\n\nexport async function getGithubStatusAction(): Promise<GithubIntegrationStatus> {\n const useCase = resolve<GetGithubIntegrationStatusUseCase>('GetGithubIntegrationStatusUseCase');\n return useCase.execute();\n}\n"],"names":[],"mappings":"sUASA,EAAA,CAAA,CAAA,QACA,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAiBO,SAAS,IACd,OAAO,AAVA,QAAQ,GAAG,CAAC,SAAS,EAAI,CAAA,EAAA,EAAA,IAAA,AAAI,EAAC,CAAA,EAAA,EAAA,OAAA,AAAO,IAAI,QAWlD,CAlBA,EAAA,CAAA,CAAA,wFCVA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAEA,EAAA,EAAA,CAAA,CAAA,sBAgBO,eAAe,IACpB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBACvC,EAAW,MAAM,EAAQ,OAAO,GAEhC,EAAW,CAAA,EAAA,EAAA,cAAA,AAAc,IAC3B,EAAa,UACjB,GAAI,OACF,IAAM,EAAS,CAAA,EAAA,EAAA,IAAA,AAAI,EAAC,EAAU,QAE9B,EAfJ,AAAI,CADkB,EAeL,AACe,AADf,CAAA,EAAA,AAfkB,EAelB,GACA,KADQ,AAAR,EAAS,GACW,IAAI,EAf7B,KAAa,CAAP,AAAO,EAAG,EAAM,EAAE,CAAC,CACjC,EAAQ,OAAO,CAAa,CAAA,EAAG,CAAC,CAAX,CAAmB,IAAA,CAAI,CAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAC1D,CAAA,EAAG,CAAC,EAAS,MAAD,CAAQ,AAAI,CAAC,CAAE,OAAO,CAAC,GAAG,GAAG,CAc9C,AAd+C,CAc7C,KAAM,CAER,CAEA,MAAO,UAAE,WAAU,aAAU,CAAW,CAC1C,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,yBACjC,CAC1B,CACF,CCrBO,eAAe,IACpB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAwB,yBAC/C,OAAO,MAAM,EAAQ,sBAAsB,EAC7C,CAAE,KAAM,CACN,MAAO,CAAC,CAAE,GAAI,SAAU,KAAM,kBAAmB,WAAW,CAAK,EAAE,AACrE,CACF,iCDNsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,yECDA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2ECrBtB,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,sBCRA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAGA,EAAA,EAAA,CAAA,CAAA,sBAyCO,eAAe,EACpB,CAA8B,EAE9B,GAAI,CACF,IAAM,EAAc,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBAC3C,EAAU,MAAM,EAAY,OAAO,GAEnC,EAzCV,AAyCmB,SAzCV,EAA6C,CAAS,CAAE,CAAsB,EACrF,IAAM,EAAS,CAAE,GAAG,CAAM,AAAC,EAC3B,IAAK,IAAM,KAAO,OAAO,IAAI,CAAC,GAAwB,CACpD,IAAM,EAAY,CAAM,CAAC,EAAI,CAC7B,GAAI,KAAc,MAAW,SAE7B,IAAM,EAAY,CAAM,CAAC,EAAI,OAE3B,GAEqB,UAArB,CAFc,CAGd,KADO,EADP,CAEC,MAAM,OAFO,AAEA,CAAC,IACb,UAAF,CAAC,EAAsB,IAAI,EACb,OAAd,GACqB,UAArB,EACA,KADO,GACN,MAAM,OAAO,CAAC,IACb,UAAF,CAAC,EAAsB,IAAI,CAO3B,CAAM,CANN,AAMO,EAAI,CAAG,EALd,CAAM,CAAC,EAAI,CAAG,EACZ,EACA,EAKN,CACA,OAAO,CACT,EAeM,EACA,EAEF,GAAO,SAAS,CAAG,IAAI,KAEvB,IAAM,EAAgB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAwB,yBAOrD,OANA,MAAM,EAAc,OAAO,CAAC,GAE5B,CAAA,EAAA,EAAA,cAAuB,AAAvB,EAAwB,GAExB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,IAAK,UAEb,CAAE,SAAS,CAAK,CACzB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,SAAS,EAAO,MADT,CACgB,YADC,MAAQ,EAAM,OAAO,CAAG,2BACjB,CAC1C,CACF,CCzDO,eAAe,EAAoB,CAAa,EACrD,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAuB,wBACxC,OAAE,CAAK,CAAE,CAAG,MAAM,EAAQ,OAAO,CAAC,OAAE,CAAM,GAChD,MAAO,CAAE,SAAS,QAAM,CAAM,CAChC,CAAE,MAAO,EAAO,CACd,MAAO,CAAE,SAAS,EAAO,MAAO,aAAiB,MAAQ,EAAM,OAAO,CAAG,OAAO,EAAO,CACzF,CACF,CAEO,eAAe,IACpB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA0B,2BAEjD,OADA,MAAM,EAAQ,OAAO,GACd,CAAE,SAAS,CAAK,CACzB,CAAE,MAAO,EAAO,CACd,MAAO,CAAE,SAAS,EAAO,MAAO,aAAiB,MAAQ,EAAM,OAAO,CAAG,OAAO,EAAO,CACzF,CACF,CAEO,eAAe,IAEpB,MAAO,AADS,CAAA,EAAA,EAAA,OAAA,AAAO,EAAoC,qCAC5C,OAAO,EACxB,iCDSsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,sCChCA,EAUA,EAUA,IApBA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAUA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAUA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA"}
1
+ {"version":3,"sources":["../../../../../../../packages/core/src/infrastructure/services/filesystem/shep-directory.service.ts","../../../../../../../src/presentation/web/app/actions/load-settings.ts","../../../../../../../src/presentation/web/app/actions/get-available-terminals.ts","../../../../../../../src/presentation/web/.next-internal/server/app/settings/page/actions.js%20%28server%20actions%20loader%29","../../../../../../../src/presentation/web/app/actions/update-settings.ts","../../../../../../../src/presentation/web/app/actions/github-integration.ts"],"sourcesContent":["/**\n * Shep Directory Service\n *\n * Manages the ~/.shep/ directory for global settings and data storage.\n * Ensures directory exists with correct permissions before database operations.\n *\n * Supports SHEP_HOME env var for test isolation (overrides default ~/.shep/).\n */\n\nimport { mkdir } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { existsSync } from 'node:fs';\n\n/**\n * Resolves the Shep home directory.\n * Respects SHEP_HOME env var for test isolation, falls back to ~/.shep/\n */\nfunction resolveShepHomeDir(): string {\n return process.env.SHEP_HOME ?? join(homedir(), '.shep');\n}\n\n/**\n * Gets the path to the Shep home directory.\n * Uses SHEP_HOME env var if set, otherwise ~/.shep/\n *\n * @returns Path to shep home directory\n */\nexport function getShepHomeDir(): string {\n return resolveShepHomeDir();\n}\n\n/**\n * Gets the path to the SQLite database file.\n *\n * @returns Path to the database file\n */\nexport function getShepDbPath(): string {\n return join(resolveShepHomeDir(), 'data');\n}\n\n/**\n * Gets the path to the daemon state file.\n * Uses SHEP_HOME env var if set (for test isolation), otherwise ~/.shep/daemon.json\n *\n * @returns Path to daemon.json\n */\nexport function getDaemonStatePath(): string {\n return join(resolveShepHomeDir(), 'daemon.json');\n}\n\n/**\n * Gets the path to the daemon log file.\n * Uses SHEP_HOME env var if set (for test isolation), otherwise ~/.shep/daemon.log\n *\n * @returns Path to daemon.log\n */\nexport function getDaemonLogPath(): string {\n return join(resolveShepHomeDir(), 'daemon.log');\n}\n\n/**\n * Ensures the shep home directory exists with correct permissions.\n * Creates the directory if it doesn't exist.\n * Safe to call multiple times (idempotent).\n *\n * Permissions: 700 (rwx------) - only owner can read/write/execute\n *\n * @throws Error if directory cannot be created (permissions, disk space, etc.)\n */\nexport async function ensureShepDirectory(): Promise<void> {\n const shepDir = resolveShepHomeDir();\n\n if (existsSync(shepDir)) {\n return;\n }\n\n try {\n await mkdir(shepDir, {\n recursive: true,\n mode: 0o700,\n });\n } catch (error) {\n throw new Error(\n `Failed to create Shep directory at ${shepDir}: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n}\n","'use server';\n\nimport { statSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport type { LoadSettingsUseCase } from '@shepai/core/application/use-cases/settings/load-settings.use-case';\nimport { getShepHomeDir } from '@shepai/core/infrastructure/services/filesystem/shep-directory.service';\nimport type { Settings } from '@shepai/core/domain/generated/output';\n\nexport interface LoadSettingsResult {\n settings?: Settings;\n shepHome?: string;\n dbFileSize?: string;\n error?: string;\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nexport async function loadSettings(): Promise<LoadSettingsResult> {\n try {\n const useCase = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const settings = await useCase.execute();\n\n const shepHome = getShepHomeDir();\n let dbFileSize = 'Unknown';\n try {\n const dbPath = join(shepHome, 'data');\n const stat = statSync(dbPath);\n dbFileSize = formatFileSize(stat.size);\n } catch {\n // DB file may not exist yet\n }\n\n return { settings, shepHome, dbFileSize };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load settings';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IToolInstallerService } from '@shepai/core/application/ports/output/services/tool-installer.service';\n\nexport interface AvailableTerminal {\n id: string;\n name: string;\n available: boolean;\n}\n\n/**\n * Returns the list of terminal entries from the DI container's IToolInstallerService,\n * filtered to the current platform with availability checks.\n *\n * Using the DI container (not a direct import from tool-metadata) ensures that\n * TOOL_METADATA is read from the correct tools/ directory path — it is loaded once\n * in the Node.js CLI bootstrap context where import.meta.url resolves correctly.\n * Direct imports of tool-metadata from Next.js server action bundles break in\n * standalone production mode because import.meta.url points to the chunk file.\n */\nexport async function getAvailableTerminals(): Promise<AvailableTerminal[]> {\n try {\n const service = resolve<IToolInstallerService>('IToolInstallerService');\n return await service.listAvailableTerminals();\n } catch {\n return [{ id: 'system', name: 'System Terminal', available: true }];\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 {loadSettings as '005f3f97e63dcd1fc94147a2c2e1b9e8a5f1621814'} from 'ACTIONS_MODULE9'\nexport {getAvailableTerminals as '000d731ff70327e17f8a35eda10c6348461051bbc9'} from 'ACTIONS_MODULE10'\nexport {updateSettingsAction as '40d67a4547e3385399c55e42521e04fc4ddca73651'} from 'ACTIONS_MODULE11'\nexport {connectGithubAction as '40300525816e6dce82b313e0458074a8059747654e'} from 'ACTIONS_MODULE12'\nexport {disconnectGithubAction as '00d110d278ca27f5be0e499768da94696e8ad3f276'} from 'ACTIONS_MODULE12'\nexport {getGithubStatusAction as '007696380cc405e049765057b1bbeda43d195a6a4a'} from 'ACTIONS_MODULE12'\n","'use server';\n\nimport { revalidatePath } from 'next/cache';\nimport { resolve } from '@/lib/server-container';\nimport type { LoadSettingsUseCase } from '@shepai/core/application/use-cases/settings/load-settings.use-case';\nimport type { UpdateSettingsUseCase } from '@shepai/core/application/use-cases/settings/update-settings.use-case';\nimport { updateSettings as updateSettingsSingleton } from '@shepai/core/infrastructure/services/settings.service';\nimport type { Settings } from '@shepai/core/domain/generated/output';\n\ntype DeepPartial<T> = {\n [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];\n};\n\nfunction deepMerge<T extends Record<string, unknown>>(target: T, source: DeepPartial<T>): T {\n const result = { ...target };\n for (const key of Object.keys(source) as (keyof T)[]) {\n const sourceVal = source[key];\n if (sourceVal === undefined) continue;\n\n const targetVal = target[key];\n if (\n targetVal !== null &&\n targetVal !== undefined &&\n typeof targetVal === 'object' &&\n !Array.isArray(targetVal) &&\n !(targetVal instanceof Date) &&\n sourceVal !== null &&\n typeof sourceVal === 'object' &&\n !Array.isArray(sourceVal) &&\n !(sourceVal instanceof Date)\n ) {\n result[key] = deepMerge(\n targetVal as Record<string, unknown>,\n sourceVal as DeepPartial<Record<string, unknown>>\n ) as T[keyof T];\n } else {\n result[key] = sourceVal as T[keyof T];\n }\n }\n return result;\n}\n\nexport interface UpdateSettingsResult {\n success: boolean;\n error?: string;\n}\n\nexport async function updateSettingsAction(\n partial: DeepPartial<Settings>\n): Promise<UpdateSettingsResult> {\n try {\n const loadUseCase = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const current = await loadUseCase.execute();\n\n const merged = deepMerge(\n current as unknown as Record<string, unknown>,\n partial as DeepPartial<Record<string, unknown>>\n ) as Settings;\n merged.updatedAt = new Date();\n\n const updateUseCase = resolve<UpdateSettingsUseCase>('UpdateSettingsUseCase');\n await updateUseCase.execute(merged);\n\n updateSettingsSingleton(merged);\n\n revalidatePath('/', 'layout');\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to update settings';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ConnectGithubUseCase } from '@shepai/core/application/use-cases/integrations/connect-github.use-case';\nimport type { DisconnectGithubUseCase } from '@shepai/core/application/use-cases/integrations/disconnect-github.use-case';\nimport type { GetGithubIntegrationStatusUseCase } from '@shepai/core/application/use-cases/integrations/get-github-integration-status.use-case';\nimport type { GithubIntegrationStatus } from '@shepai/core/application/ports/output/repositories/github-integration.repository.interface';\n\nexport interface ConnectGithubResult {\n success: boolean;\n /** GitHub login that the token authenticated as. Present on success. */\n login?: string;\n error?: string;\n}\n\nexport async function connectGithubAction(token: string): Promise<ConnectGithubResult> {\n try {\n const useCase = resolve<ConnectGithubUseCase>('ConnectGithubUseCase');\n const { login } = await useCase.execute({ token });\n return { success: true, login };\n } catch (error) {\n return { success: false, error: error instanceof Error ? error.message : String(error) };\n }\n}\n\nexport async function disconnectGithubAction(): Promise<{ success: boolean; error?: string }> {\n try {\n const useCase = resolve<DisconnectGithubUseCase>('DisconnectGithubUseCase');\n await useCase.execute();\n return { success: true };\n } catch (error) {\n return { success: false, error: error instanceof Error ? error.message : String(error) };\n }\n}\n\nexport async function getGithubStatusAction(): Promise<GithubIntegrationStatus> {\n const useCase = resolve<GetGithubIntegrationStatusUseCase>('GetGithubIntegrationStatusUseCase');\n return useCase.execute();\n}\n"],"names":[],"mappings":"sUASA,EAAA,CAAA,CAAA,QACA,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAiBO,SAAS,IACd,OAAO,AAVA,QAAQ,GAAG,CAAC,SAAS,EAAI,CAAA,EAAA,EAAA,IAAA,AAAI,EAAC,CAAA,EAAA,EAAA,OAAA,AAAO,IAAI,QAWlD,CAlBA,EAAA,CAAA,CAAA,wFCVA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAEA,EAAA,EAAA,CAAA,CAAA,sBAgBO,eAAe,IACpB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBACvC,EAAW,MAAM,EAAQ,OAAO,GAEhC,EAAW,CAAA,EAAA,EAAA,cAAA,AAAc,IAC3B,EAAa,UACjB,GAAI,OACF,IAAM,EAAS,CAAA,EAAA,EAAA,IAAA,AAAI,EAAC,EAAU,QAE9B,EAfJ,AAAI,CADkB,EAeL,AACe,AADf,CAAA,EAAA,AAfkB,EAelB,GACA,KADQ,AAAR,EAAS,GACW,IAAI,EAf7B,KAAa,CAAP,AAAO,EAAG,EAAM,EAAE,CAAC,CACjC,EAAQ,OAAO,CAAa,CAAA,EAAG,CAAC,CAAX,CAAmB,IAAA,CAAI,CAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAC1D,CAAA,EAAG,CAAC,EAAS,MAAD,CAAQ,AAAI,CAAC,CAAE,OAAO,CAAC,GAAG,GAAG,CAc9C,AAd+C,CAc7C,KAAM,CAER,CAEA,MAAO,UAAE,WAAU,aAAU,CAAW,CAC1C,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,yBACjC,CAC1B,CACF,CCrBO,eAAe,IACpB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAwB,yBAC/C,OAAO,MAAM,EAAQ,sBAAsB,EAC7C,CAAE,KAAM,CACN,MAAO,CAAC,CAAE,GAAI,SAAU,KAAM,kBAAmB,WAAW,CAAK,EAAE,AACrE,CACF,iCDNsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,yECDA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2ECrBtB,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,sBCRA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAGA,EAAA,EAAA,CAAA,CAAA,sBAyCO,eAAe,EACpB,CAA8B,EAE9B,GAAI,CACF,IAAM,EAAc,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBAC3C,EAAU,MAAM,EAAY,OAAO,GAEnC,EAzCV,AAyCmB,SAzCV,EAA6C,CAAS,CAAE,CAAsB,EACrF,IAAM,EAAS,CAAE,GAAG,CAAM,AAAC,EAC3B,IAAK,IAAM,KAAO,OAAO,IAAI,CAAC,GAAwB,CACpD,IAAM,EAAY,CAAM,CAAC,EAAI,CAC7B,GAAI,KAAc,MAAW,SAE7B,IAAM,EAAY,CAAM,CAAC,EAAI,OAE3B,GAEqB,UAArB,CAFc,CAGd,KADO,EADP,CAEC,MAAM,OAFO,AAEA,CAAC,IACb,UAAF,CAAC,EAAsB,IAAI,EACb,OAAd,GACqB,UAArB,EACA,KADO,GACN,MAAM,OAAO,CAAC,IACb,UAAF,CAAC,EAAsB,IAAI,CAO3B,CAAM,CANN,AAMO,EAAI,CAAG,EALd,CAAM,CAAC,EAAI,CAAG,EACZ,EACA,EAKN,CACA,OAAO,CACT,EAeM,EACA,EAEF,GAAO,SAAS,CAAG,IAAI,KAEvB,IAAM,EAAgB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAwB,yBAOrD,OANA,MAAM,EAAc,OAAO,CAAC,GAE5B,CAAA,EAAA,EAAA,cAAuB,AAAvB,EAAwB,GAExB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,IAAK,UAEb,CAAE,SAAS,CAAK,CACzB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,SAAS,EAAO,MADT,CACgB,YADC,MAAQ,EAAM,OAAO,CAAG,2BACjB,CAC1C,CACF,CCzDO,eAAe,EAAoB,CAAa,EACrD,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAuB,wBACxC,OAAE,CAAK,CAAE,CAAG,MAAM,EAAQ,OAAO,CAAC,OAAE,CAAM,GAChD,MAAO,CAAE,SAAS,QAAM,CAAM,CAChC,CAAE,MAAO,EAAO,CACd,MAAO,CAAE,SAAS,EAAO,MAAO,aAAiB,MAAQ,EAAM,OAAO,CAAG,OAAO,EAAO,CACzF,CACF,CAEO,eAAe,IACpB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA0B,2BAEjD,OADA,MAAM,EAAQ,OAAO,GACd,CAAE,SAAS,CAAK,CACzB,CAAE,MAAO,EAAO,CACd,MAAO,CAAE,SAAS,EAAO,MAAO,aAAiB,MAAQ,EAAM,OAAO,CAAG,OAAO,EAAO,CACzF,CACF,CAEO,eAAe,IAEpB,MAAO,AADS,CAAA,EAAA,EAAA,OAAA,AAAO,EAAoC,qCAC5C,OAAO,EACxB,iCDSsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,sCChCA,EAUA,EAUA,IApBA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAUA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MAUA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA"}
@@ -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)},931747,a=>{"use strict";var b=a.i(881719),c=a.i(914703),d=a.i(679372),e=a.i(929918);function f(a,f,g){let h=(f?.status===b.AgentRunStatus.running||f?.status===b.AgentRunStatus.pending)&&f?.pid?(0,d.isProcessAlive)(f.pid):void 0;return{name:a.name,description:a.description??a.slug,featureId:a.id,lifecycle:(0,c.deriveLifecycle)(a,f),repositoryPath:a.repositoryPath,branch:a.branch,worktreePath:a.worktreePath??(0,e.computeWorktreePath)(a.repositoryPath,a.branch),specPath:a.specPath,state:(0,c.deriveNodeState)(a,f,void 0!==h?{isPidAlive:h}:void 0),progress:(0,c.deriveProgress)(a),summary:a.description,userQuery:a.userQuery,createdAt:a.createdAt instanceof Date?a.createdAt.getTime():a.createdAt,...a.fast&&{fastMode:!0},approvalGates:a.approvalGates,push:a.push,openPr:a.openPr,forkAndPr:a.forkAndPr,commitSpecs:a.commitSpecs,enableEvidence:a.enableEvidence??g?.enableEvidence??!1,commitEvidence:a.commitEvidence??g?.commitEvidence??!1,ciWatchEnabled:a.ciWatchEnabled??g?.ciWatchEnabled??!0,...g?.hideCiStatus!=null&&{hideCiStatus:g.hideCiStatus},...g?.repositoryName&&{repositoryName:g.repositoryName},...g?.baseBranch&&{baseBranch:g.baseBranch},...g?.oneLiner&&{oneLiner:g.oneLiner},...g?.remoteUrl&&{remoteUrl:g.remoteUrl},...f?.agentType&&{agentType:f.agentType},...f?.modelId&&{modelId:f.modelId},...f?.error&&{errorMessage:f.error},...null!=a.agentRunId&&{hasAgentRun:!0},...null!=a.plan&&{hasPlan:!0},...a.injectSkills&&{injectSkills:!0},...a.injectedSkills?.length&&{injectedSkills:a.injectedSkills},...a.pr&&{pr:{url:a.pr.url,number:a.pr.number,status:a.pr.status,ciStatus:a.pr.ciStatus,commitHash:a.pr.commitHash,mergeable:a.pr.mergeable}}}}a.s(["buildFeatureNodeData",()=>f])},658381,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(561402),L=a.i(476052),M=a.i(713008),N=a.i(374607),O=a.i(806542),P=a.i(300740),Q=a.i(312104),R=a.i(4246),S=a.i(470319),T=a.i(654433),U=a.i(159020),V=a.i(381866);a.s([],831099),a.i(831099),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,"40209680b0517d49aff57bef3d0a45d1bd4fa8b2ca",()=>M.getFeatureArtifact,"403ab98df2cf8db571b47142cd90ab7c7f297fa90f",()=>h.listGitHubRepositories,"4047fcf9280c5bc168edadf9f0c951bc2514b41fe0",()=>D.startFeature,"404b80493cf36c04e22e68ebf8f56c46bf55d904c0",()=>E.stopFeature,"405723722c9eb9b4888b52203cfb121401f0c61a80",()=>t.getDeploymentLogs,"405c7793067c00e09357d3361ece35da8ad7dfc8d3",()=>R.triggerReview,"406c86419f9504e874137580fade15335732a93442",()=>Q.getFeaturePlan,"4070f2c934a9ed351d223ad18ae9602cff12614292",()=>C.resumeFeature,"4078a80364f4aa62ff8fc5651009ca6a95745adb30",()=>U.getBranchSyncStatus,"407c1fa2d7c8a9c9546411c95b09988297d889c913",()=>P.getFeaturePhaseTimings,"408a28f520d819792447d4b47d9b73a5ddf7296469",()=>l.deployRepository,"4094d93eeeace2053edf550148c9336dfa0384d465",()=>J.getFeatureMetadata,"409ab95b1ec58ad7dd578b018e11d5bd766839f8bc",()=>n.stopDeployment,"409fd927b201088f6eb51016853b90bf450862025e",()=>S.rebaseFeature,"40ab7fa1f69e2aec8b94563e16d0019f3589ec2f2e",()=>p.openIde,"40af1b8d14947496efa0de09d2e46341cfadd226ac",()=>I.deleteApplication,"40b891f8ebdf358429202b1aec73d79128f5217f18",()=>N.getResearchArtifact,"40b95792d8bb0de2aa9914ff42b671ff42b87c24ba",()=>q.openShell,"40ba17f62f174f4f88aa0ea4a373db347247ae1171",()=>u.createProjectAndFeature,"40c4d25fb30555d92bf75dd650e2cce9b8be92dc0b",()=>z.createProjectFolder,"40c64b253cb9310f09f151401d5eb06957db761efa",()=>F.unarchiveFeature,"40cb9b34625e771ca660723681cb48cd75843897f1",()=>O.getMergeReviewData,"40d0ac4c8ca5c179014f909f203d903942417295df",()=>A.archiveFeature,"40d4837169557e75f0be6d0f89f7fea0ff41eb89fc",()=>G.addRepository,"40e011f8f2f54f36460ff5310dd49178590a992d44",()=>j.importGitHubRepository,"40e05223ac08944f341062b3704ad67e0cd491f8be",()=>T.getFeatureDrawerData,"40e7ea921079c1a8fe79fc7cfb59743f718c5944f7",()=>r.openFolder,"40eb53de65273a529e251542555f94321ea9c2fcaf",()=>s.syncRepository,"40ed3ea24841c9c4280513ab004dcdbce3d545bcdb",()=>o.getDeploymentStatus,"40f744f8f8785a86cc8dc9487da8d64ca353d264af",()=>v.createApplication,"40fcb38a7daafc835826043ee30ef771eae2a2f635",()=>g.globalSearch,"60036293085b1751ff35875b7762b2353bb09757b5",()=>f.updateAgentAndModel,"60495f1a3ee94d5d2693e35665a5b94c6c425339ab",()=>H.deleteRepository,"60ec3e830e4538145495a26273241b8811cded0e00",()=>K.approveFeature,"70726db7096d55f8f491a8a151283b62312ad77a9d",()=>V.updateFeaturePinnedConfig,"70f843842231b0d8ab9e141ea99d5b971b71925b42",()=>L.rejectFeature,"783175472a45c2823bb1c4751b36e777308131d27d",()=>B.deleteFeature],658381)},606714,a=>{a.v(a=>Promise.resolve().then(()=>a(902157)))},311105,a=>{a.v(a=>Promise.resolve().then(()=>a(750227)))},129718,a=>{a.v(b=>Promise.all(["server/chunks/ssr/90b01_js-yaml_dist_js-yaml_mjs_c897fb57._.js"].map(b=>a.l(b))).then(()=>b(732996)))}];
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)},931747,a=>{"use strict";var b=a.i(881719),c=a.i(914703),d=a.i(679372),e=a.i(929918);function f(a,f,g){let h=(f?.status===b.AgentRunStatus.running||f?.status===b.AgentRunStatus.pending)&&f?.pid?(0,d.isProcessAlive)(f.pid):void 0;return{name:a.name,description:a.description??a.slug,featureId:a.id,lifecycle:(0,c.deriveLifecycle)(a,f),repositoryPath:a.repositoryPath,branch:a.branch,worktreePath:a.worktreePath??(0,e.computeWorktreePath)(a.repositoryPath,a.branch),specPath:a.specPath,state:(0,c.deriveNodeState)(a,f,void 0!==h?{isPidAlive:h}:void 0),progress:(0,c.deriveProgress)(a),summary:a.description,userQuery:a.userQuery,createdAt:a.createdAt instanceof Date?a.createdAt.getTime():a.createdAt,...a.fast&&{fastMode:!0},approvalGates:a.approvalGates,push:a.push,openPr:a.openPr,forkAndPr:a.forkAndPr,commitSpecs:a.commitSpecs,enableEvidence:a.enableEvidence??g?.enableEvidence??!1,commitEvidence:a.commitEvidence??g?.commitEvidence??!1,ciWatchEnabled:a.ciWatchEnabled??g?.ciWatchEnabled??!0,...g?.hideCiStatus!=null&&{hideCiStatus:g.hideCiStatus},...g?.repositoryName&&{repositoryName:g.repositoryName},...g?.baseBranch&&{baseBranch:g.baseBranch},...g?.oneLiner&&{oneLiner:g.oneLiner},...g?.remoteUrl&&{remoteUrl:g.remoteUrl},...f?.agentType&&{agentType:f.agentType},...f?.modelId&&{modelId:f.modelId},...f?.error&&{errorMessage:f.error},...null!=a.agentRunId&&{hasAgentRun:!0},...null!=a.plan&&{hasPlan:!0},...a.injectSkills&&{injectSkills:!0},...a.injectedSkills?.length&&{injectedSkills:a.injectedSkills},...a.pr&&{pr:{url:a.pr.url,number:a.pr.number,status:a.pr.status,ciStatus:a.pr.ciStatus,commitHash:a.pr.commitHash,mergeable:a.pr.mergeable}}}}a.s(["buildFeatureNodeData",()=>f])},658381,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(561402),L=a.i(476052),M=a.i(713008),N=a.i(374607),O=a.i(806542),P=a.i(300740),Q=a.i(312104),R=a.i(4246),S=a.i(470319),T=a.i(654433),U=a.i(159020),V=a.i(381866);a.s([],831099),a.i(831099),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,"4002623dd68b0f455a43de1370129a10fb3b6cb198",()=>S.rebaseFeature,"400601cc704fc3a542db95c4219b7261168cbe675d",()=>I.deleteApplication,"40127b07baac3bb5494e3d8ad7b721b35a467f4a93",()=>J.getFeatureMetadata,"4015ea81e1b2a02fe57f374a012b37e2cd322146f1",()=>g.globalSearch,"4016d09bb0ca104495ac87003d7ed23b8a10a0df3a",()=>Q.getFeaturePlan,"402a545f24583952d99d18566abf474dd10d07741b",()=>o.getDeploymentStatus,"402a7da73158b6bd6c8fb8ab5b0344dc0e0f08e228",()=>u.createProjectAndFeature,"402b7881a750d5c7c7125153b65fdd64c555ddcdc2",()=>v.createApplication,"403555ff135dc5bdee5c09ec72e7deff1c3c906ee2",()=>R.triggerReview,"403a844cbb36e5d50051fe552f050ed35a8b88f317",()=>l.deployRepository,"403bcc64cd5c7afe5cb7933130b5d71e9cb6913d44",()=>s.syncRepository,"403c93928208c54fe25784ff60dcb073f25d1055c1",()=>n.stopDeployment,"4046a92be2a66ede337c9a39eb57548fee082b38b8",()=>P.getFeaturePhaseTimings,"4047cfaa45cd7417712356735bfbb78f93a103592a",()=>F.unarchiveFeature,"40559cc32878be443a5d902e563fa65ac29566c575",()=>m.deployApplication,"405e0ecf099e92c36621480bebdb684a3e15940a9c",()=>N.getResearchArtifact,"405f5f5259eaed6742d1a59f416d4319ea63f3bb3d",()=>j.importGitHubRepository,"405f73e1d0740c127aafceadc63304676969dbb19a",()=>A.archiveFeature,"40686729595c20319d343647dc4b44900bdba9eeb4",()=>T.getFeatureDrawerData,"406f6bfbd22a176bf6d0bca648d1bd1ef29efb8c31",()=>p.openIde,"4090a804139d32bf8b5cf742f3373a84eb7adca74b",()=>U.getBranchSyncStatus,"4093cfae5c300fc17a16104784825641972f80a2c2",()=>E.stopFeature,"40a8e46a1833838a96e4b3f97741ab37054dc3a415",()=>G.addRepository,"40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf",()=>k.deployFeature,"40abd8a376116b64eb7981ae4b04a6ad09730244f5",()=>M.getFeatureArtifact,"40b195fc3bd3d0b6f99d9ba0ce3b624b5201e8e478",()=>D.startFeature,"40cede021cd5c33e6bf9d5871c23ea5e73f6809b4b",()=>q.openShell,"40d1082c73e97a2c5f99ef11d815cefe59a26e8998",()=>h.listGitHubRepositories,"40da762c4b34966ae0ac466fdc38dd417bb5f12247",()=>z.createProjectFolder,"40e827f64795e580b75e126ddfefa3a9a722da877c",()=>t.getDeploymentLogs,"40ecf3fab76fefe11b2b5e75522e68a6a3d4d38256",()=>O.getMergeReviewData,"40ef132579c95dc894986b34b75cb89dd65b39da86",()=>C.resumeFeature,"608cb7bed4e740de6ec1034873b198d85e0771cdfb",()=>H.deleteRepository,"60afd0d4fa2a6638646f7d23dc6c8673fd27a69207",()=>f.updateAgentAndModel,"60f8fea5788e63f0b03105e1ca1ad4e39ee70de00c",()=>K.approveFeature,"701a9b9856e274d0ccc553bfb6f4d40f7e74834bf4",()=>L.rejectFeature,"70bd38112f7c7c824ca6804c3d897ab9b1437f478a",()=>V.updateFeaturePinnedConfig,"782094d73ba803f25ee4b483796e8b0625c3c6564f",()=>B.deleteFeature],658381)},606714,a=>{a.v(a=>Promise.resolve().then(()=>a(902157)))},311105,a=>{a.v(a=>Promise.resolve().then(()=>a(750227)))},129718,a=>{a.v(b=>Promise.all(["server/chunks/ssr/90b01_js-yaml_dist_js-yaml_mjs_c897fb57._.js"].map(b=>a.l(b))).then(()=>b(732996)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__6bc6bf96._.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/build-feature-node-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/feature/%5BfeatureId%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","import type { Feature, AgentRun } from '@shepai/core/domain/generated/output';\nimport { AgentRunStatus } from '@shepai/core/domain/generated/output';\nimport {\n deriveNodeState,\n deriveProgress,\n deriveLifecycle,\n} from '@/components/common/feature-node/derive-feature-state';\nimport { isProcessAlive } from '@shepai/core/infrastructure/services/process/is-process-alive';\nimport { computeWorktreePath } from '@shepai/core/infrastructure/services/ide-launchers/compute-worktree-path';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\n\nexport interface BuildFeatureNodeDataOptions {\n baseBranch?: string;\n repositoryName?: string;\n /** AI-generated one-liner from FeatureArtifact */\n oneLiner?: string;\n /** Remote URL for the repository (HTTPS) */\n remoteUrl?: string;\n /** Whether evidence collection is enabled (global workflow setting) */\n enableEvidence?: boolean;\n /** Whether evidence is committed to the PR body (global workflow setting) */\n commitEvidence?: boolean;\n /** Whether CI watch/fix loop is enabled (global workflow setting) */\n ciWatchEnabled?: boolean;\n /** Whether to hide CI status badges from UI (global workflow setting) */\n hideCiStatus?: boolean;\n}\n\n/**\n * Builds a FeatureNodeData object from a Feature entity and optional AgentRun.\n * This is the single-feature version of the logic in `buildGraphNodes`.\n */\nexport function buildFeatureNodeData(\n feature: Feature,\n run: AgentRun | null,\n options?: BuildFeatureNodeDataOptions\n): FeatureNodeData {\n // Detect crashed agents: DB says running/pending but PID is dead\n const isActive = run?.status === AgentRunStatus.running || run?.status === AgentRunStatus.pending;\n const pidAlive = isActive && run?.pid ? isProcessAlive(run.pid) : undefined;\n\n return {\n name: feature.name,\n description: feature.description ?? feature.slug,\n featureId: feature.id,\n lifecycle: deriveLifecycle(feature, run),\n repositoryPath: feature.repositoryPath,\n branch: feature.branch,\n worktreePath:\n feature.worktreePath ?? computeWorktreePath(feature.repositoryPath, feature.branch),\n specPath: feature.specPath,\n state: deriveNodeState(\n feature,\n run,\n pidAlive !== undefined ? { isPidAlive: pidAlive } : undefined\n ),\n progress: deriveProgress(feature),\n summary: feature.description,\n userQuery: feature.userQuery,\n createdAt: feature.createdAt instanceof Date ? feature.createdAt.getTime() : feature.createdAt,\n ...(feature.fast && { fastMode: true }),\n approvalGates: feature.approvalGates,\n push: feature.push,\n openPr: feature.openPr,\n forkAndPr: feature.forkAndPr,\n commitSpecs: feature.commitSpecs,\n enableEvidence: feature.enableEvidence ?? options?.enableEvidence ?? false,\n commitEvidence: feature.commitEvidence ?? options?.commitEvidence ?? false,\n ciWatchEnabled: feature.ciWatchEnabled ?? options?.ciWatchEnabled ?? true,\n ...(options?.hideCiStatus != null && { hideCiStatus: options.hideCiStatus }),\n ...(options?.repositoryName && { repositoryName: options.repositoryName }),\n ...(options?.baseBranch && { baseBranch: options.baseBranch }),\n ...(options?.oneLiner && { oneLiner: options.oneLiner }),\n ...(options?.remoteUrl && { remoteUrl: options.remoteUrl }),\n ...(run?.agentType && { agentType: run.agentType as FeatureNodeData['agentType'] }),\n ...(run?.modelId && { modelId: run.modelId }),\n ...(run?.error && { errorMessage: run.error }),\n ...(feature.agentRunId != null && { hasAgentRun: true }),\n ...(feature.plan != null && { hasPlan: true }),\n ...(feature.injectSkills && { injectSkills: true }),\n ...(feature.injectedSkills?.length && { injectedSkills: feature.injectedSkills }),\n ...(feature.pr && {\n pr: {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n ciStatus: feature.pr.ciStatus,\n commitHash: feature.pr.commitHash,\n mergeable: feature.pr.mergeable,\n },\n }),\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 {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 {approveFeature as '60ec3e830e4538145495a26273241b8811cded0e00'} from 'ACTIONS_MODULE35'\nexport {rejectFeature as '70f843842231b0d8ab9e141ea99d5b971b71925b42'} from 'ACTIONS_MODULE36'\nexport {getFeatureArtifact as '40209680b0517d49aff57bef3d0a45d1bd4fa8b2ca'} from 'ACTIONS_MODULE37'\nexport {getResearchArtifact as '40b891f8ebdf358429202b1aec73d79128f5217f18'} from 'ACTIONS_MODULE38'\nexport {getMergeReviewData as '40cb9b34625e771ca660723681cb48cd75843897f1'} from 'ACTIONS_MODULE39'\nexport {getFeaturePhaseTimings as '407c1fa2d7c8a9c9546411c95b09988297d889c913'} from 'ACTIONS_MODULE40'\nexport {getFeaturePlan as '406c86419f9504e874137580fade15335732a93442'} from 'ACTIONS_MODULE41'\nexport {triggerReview as '405c7793067c00e09357d3361ece35da8ad7dfc8d3'} from 'ACTIONS_MODULE42'\nexport {rebaseFeature as '409fd927b201088f6eb51016853b90bf450862025e'} from 'ACTIONS_MODULE43'\nexport {getFeatureDrawerData as '40e05223ac08944f341062b3704ad67e0cd491f8be'} from 'ACTIONS_MODULE44'\nexport {getBranchSyncStatus as '4078a80364f4aa62ff8fc5651009ca6a95745adb30'} from 'ACTIONS_MODULE45'\nexport {updateFeaturePinnedConfig as '70726db7096d55f8f491a8a151283b62312ad77a9d'} from 'ACTIONS_MODULE46'\n"],"names":[],"mappings":"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,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,OACA,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,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,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,QACA,EAAA,EAAA,CAAA,CAAA,MACA,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/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/build-feature-node-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/feature/%5BfeatureId%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","import type { Feature, AgentRun } from '@shepai/core/domain/generated/output';\nimport { AgentRunStatus } from '@shepai/core/domain/generated/output';\nimport {\n deriveNodeState,\n deriveProgress,\n deriveLifecycle,\n} from '@/components/common/feature-node/derive-feature-state';\nimport { isProcessAlive } from '@shepai/core/infrastructure/services/process/is-process-alive';\nimport { computeWorktreePath } from '@shepai/core/infrastructure/services/ide-launchers/compute-worktree-path';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\n\nexport interface BuildFeatureNodeDataOptions {\n baseBranch?: string;\n repositoryName?: string;\n /** AI-generated one-liner from FeatureArtifact */\n oneLiner?: string;\n /** Remote URL for the repository (HTTPS) */\n remoteUrl?: string;\n /** Whether evidence collection is enabled (global workflow setting) */\n enableEvidence?: boolean;\n /** Whether evidence is committed to the PR body (global workflow setting) */\n commitEvidence?: boolean;\n /** Whether CI watch/fix loop is enabled (global workflow setting) */\n ciWatchEnabled?: boolean;\n /** Whether to hide CI status badges from UI (global workflow setting) */\n hideCiStatus?: boolean;\n}\n\n/**\n * Builds a FeatureNodeData object from a Feature entity and optional AgentRun.\n * This is the single-feature version of the logic in `buildGraphNodes`.\n */\nexport function buildFeatureNodeData(\n feature: Feature,\n run: AgentRun | null,\n options?: BuildFeatureNodeDataOptions\n): FeatureNodeData {\n // Detect crashed agents: DB says running/pending but PID is dead\n const isActive = run?.status === AgentRunStatus.running || run?.status === AgentRunStatus.pending;\n const pidAlive = isActive && run?.pid ? isProcessAlive(run.pid) : undefined;\n\n return {\n name: feature.name,\n description: feature.description ?? feature.slug,\n featureId: feature.id,\n lifecycle: deriveLifecycle(feature, run),\n repositoryPath: feature.repositoryPath,\n branch: feature.branch,\n worktreePath:\n feature.worktreePath ?? computeWorktreePath(feature.repositoryPath, feature.branch),\n specPath: feature.specPath,\n state: deriveNodeState(\n feature,\n run,\n pidAlive !== undefined ? { isPidAlive: pidAlive } : undefined\n ),\n progress: deriveProgress(feature),\n summary: feature.description,\n userQuery: feature.userQuery,\n createdAt: feature.createdAt instanceof Date ? feature.createdAt.getTime() : feature.createdAt,\n ...(feature.fast && { fastMode: true }),\n approvalGates: feature.approvalGates,\n push: feature.push,\n openPr: feature.openPr,\n forkAndPr: feature.forkAndPr,\n commitSpecs: feature.commitSpecs,\n enableEvidence: feature.enableEvidence ?? options?.enableEvidence ?? false,\n commitEvidence: feature.commitEvidence ?? options?.commitEvidence ?? false,\n ciWatchEnabled: feature.ciWatchEnabled ?? options?.ciWatchEnabled ?? true,\n ...(options?.hideCiStatus != null && { hideCiStatus: options.hideCiStatus }),\n ...(options?.repositoryName && { repositoryName: options.repositoryName }),\n ...(options?.baseBranch && { baseBranch: options.baseBranch }),\n ...(options?.oneLiner && { oneLiner: options.oneLiner }),\n ...(options?.remoteUrl && { remoteUrl: options.remoteUrl }),\n ...(run?.agentType && { agentType: run.agentType as FeatureNodeData['agentType'] }),\n ...(run?.modelId && { modelId: run.modelId }),\n ...(run?.error && { errorMessage: run.error }),\n ...(feature.agentRunId != null && { hasAgentRun: true }),\n ...(feature.plan != null && { hasPlan: true }),\n ...(feature.injectSkills && { injectSkills: true }),\n ...(feature.injectedSkills?.length && { injectedSkills: feature.injectedSkills }),\n ...(feature.pr && {\n pr: {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n ciStatus: feature.pr.ciStatus,\n commitHash: feature.pr.commitHash,\n mergeable: feature.pr.mergeable,\n },\n }),\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 {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 {approveFeature as '60f8fea5788e63f0b03105e1ca1ad4e39ee70de00c'} from 'ACTIONS_MODULE35'\nexport {rejectFeature as '701a9b9856e274d0ccc553bfb6f4d40f7e74834bf4'} from 'ACTIONS_MODULE36'\nexport {getFeatureArtifact as '40abd8a376116b64eb7981ae4b04a6ad09730244f5'} from 'ACTIONS_MODULE37'\nexport {getResearchArtifact as '405e0ecf099e92c36621480bebdb684a3e15940a9c'} from 'ACTIONS_MODULE38'\nexport {getMergeReviewData as '40ecf3fab76fefe11b2b5e75522e68a6a3d4d38256'} from 'ACTIONS_MODULE39'\nexport {getFeaturePhaseTimings as '4046a92be2a66ede337c9a39eb57548fee082b38b8'} from 'ACTIONS_MODULE40'\nexport {getFeaturePlan as '4016d09bb0ca104495ac87003d7ed23b8a10a0df3a'} from 'ACTIONS_MODULE41'\nexport {triggerReview as '403555ff135dc5bdee5c09ec72e7deff1c3c906ee2'} from 'ACTIONS_MODULE42'\nexport {rebaseFeature as '4002623dd68b0f455a43de1370129a10fb3b6cb198'} from 'ACTIONS_MODULE43'\nexport {getFeatureDrawerData as '40686729595c20319d343647dc4b44900bdba9eeb4'} from 'ACTIONS_MODULE44'\nexport {getBranchSyncStatus as '4090a804139d32bf8b5cf742f3373a84eb7adca74b'} from 'ACTIONS_MODULE45'\nexport {updateFeaturePinnedConfig as '70bd38112f7c7c824ca6804c3d897ab9b1437f478a'} from 'ACTIONS_MODULE46'\n"],"names":[],"mappings":"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,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,OACA,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,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,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,QACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,4 +1,4 @@
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])},902157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},660526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},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)},812057,(a,b,c)=>{b.exports=a.x("node:util",()=>require("node:util"))},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])},471570,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(237705),q=a.i(996380);async function r(a){try{if(!a?.trim())return{error:"applicationId is required"};let b=(0,q.resolve)("GetApplicationUseCase"),c=await b.execute(a);if(!c)return{error:"Application not found"};let{systemPrompt:d,userMessage:e}=(0,q.resolve)("IApplicationCreationPromptBuilder").build({description:c.description??"",workspace:{workingDirectory:c.repositoryPath,platform:"posix"}}),f=`# SYSTEM PROMPT
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])},902157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},660526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},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)},812057,(a,b,c)=>{b.exports=a.x("node:util",()=>require("node:util"))},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])},471570,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(237705),q=a.i(996380);async function r(a){try{if(!a?.trim())return{error:"applicationId is required"};let b=(0,q.resolve)("GetApplicationUseCase"),c=await b.execute(a);if(!c)return{error:"Application not found"};let{systemPrompt:d,userMessage:e}=(0,q.resolve)("IApplicationCreationPromptBuilder").build({description:c.description??"",workspace:{workingDirectory:c.repositoryPath,platform:"posix"}}),f=`# SYSTEM PROMPT
2
2
 
3
3
  ${d}
4
4
 
@@ -7,6 +7,6 @@ ${d}
7
7
  # USER MESSAGE
8
8
 
9
9
  ${e}
10
- `;return{systemPrompt:d,userMessage:e,combined:f}}catch(a){return{error:a instanceof Error?a.message:"Failed to build debug prompt"}}}(0,a.i(701904).ensureServerEntryExports)([r]),(0,p.registerServerReference)(r,"40284836c0c46ae5c7f71c76c458e7fa27b2de5bd4",null);var s=a.i(495072),t=a.i(280496),u=a.i(235556);a.s([],360178),a.i(360178),a.s(["0015f0a240c29915a74257d5ff2d7d15b32c6a778d",()=>b.pickFolder,"00613a83ba2b2619c9ef46303abae5aded26339bc3",()=>i.listGitHubOrganizations,"006ff5a74754817b8a495d7ba26e66c354851f6c99",()=>c.getDefaultAgentAndModel,"00d2c30c2b08e36b014924412d0cd61610cd91c78e",()=>e.checkAllAgentsStatus,"00d43390ab8112b0e6ec134ef3485ab210e36f7842",()=>d.getAllAgentModels,"4005923232df16201d86b35c46dbbe719725cbcd26",()=>m.deployApplication,"401846920f6fb739e32233d9d6a6df7945b8621c00",()=>k.deployFeature,"40284836c0c46ae5c7f71c76c458e7fa27b2de5bd4",()=>r,"403ab98df2cf8db571b47142cd90ab7c7f297fa90f",()=>h.listGitHubRepositories,"408a28f520d819792447d4b47d9b73a5ddf7296469",()=>l.deployRepository,"409ab95b1ec58ad7dd578b018e11d5bd766839f8bc",()=>n.stopDeployment,"40af1b8d14947496efa0de09d2e46341cfadd226ac",()=>s.deleteApplication,"40e011f8f2f54f36460ff5310dd49178590a992d44",()=>j.importGitHubRepository,"40e7ea921079c1a8fe79fc7cfb59743f718c5944f7",()=>t.openFolder,"40ed3ea24841c9c4280513ab004dcdbce3d545bcdb",()=>o.getDeploymentStatus,"40fcb38a7daafc835826043ee30ef771eae2a2f635",()=>g.globalSearch,"60036293085b1751ff35875b7762b2353bb09757b5",()=>f.updateAgentAndModel,"60f4c819a13f54bcc8320595c03e11fb6cafe8913b",()=>u.getGitRepoInfo],471570)}];
10
+ `;return{systemPrompt:d,userMessage:e,combined:f}}catch(a){return{error:a instanceof Error?a.message:"Failed to build debug prompt"}}}(0,a.i(701904).ensureServerEntryExports)([r]),(0,p.registerServerReference)(r,"40975e7b39f9f5f7d6d643d8f95238d003a6f22c3c",null);var s=a.i(495072),t=a.i(280496),u=a.i(235556);a.s([],360178),a.i(360178),a.s(["00c270c7a6f9c21fabe7b7271a4bf75d5cef02d22a",()=>c.getDefaultAgentAndModel,"00c38b234d35460bb11ea6a1b0fff1c22e01c08873",()=>e.checkAllAgentsStatus,"00c4af7e37cefa35ac7db65fa9b45995caf677a597",()=>i.listGitHubOrganizations,"00c6d708f17ef9dc5f3443dc4d3b3f3756c20b1392",()=>d.getAllAgentModels,"00e58a33ab1b838c8207f1b7dbe831d7a7b8cd3330",()=>b.pickFolder,"40024b9babaf0ccba2c9644e1719947f9662db82da",()=>t.openFolder,"400601cc704fc3a542db95c4219b7261168cbe675d",()=>s.deleteApplication,"4015ea81e1b2a02fe57f374a012b37e2cd322146f1",()=>g.globalSearch,"402a545f24583952d99d18566abf474dd10d07741b",()=>o.getDeploymentStatus,"403a844cbb36e5d50051fe552f050ed35a8b88f317",()=>l.deployRepository,"403c93928208c54fe25784ff60dcb073f25d1055c1",()=>n.stopDeployment,"40559cc32878be443a5d902e563fa65ac29566c575",()=>m.deployApplication,"405f5f5259eaed6742d1a59f416d4319ea63f3bb3d",()=>j.importGitHubRepository,"40975e7b39f9f5f7d6d643d8f95238d003a6f22c3c",()=>r,"40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf",()=>k.deployFeature,"40d1082c73e97a2c5f99ef11d815cefe59a26e8998",()=>h.listGitHubRepositories,"60afd0d4fa2a6638646f7d23dc6c8673fd27a69207",()=>f.updateAgentAndModel,"60dd3bba8d40f7d7eaab9cf25cfc4a5eedd85c6c3c",()=>u.getGitRepoInfo],471570)}];
11
11
 
12
12
  //# sourceMappingURL=%5Broot-of-the-server%5D__9852cb08._.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/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-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/application/%5Bid%5D/page/actions.js%20%28server%20actions%20loader%29","../../../../../../../src/presentation/web/app/actions/get-application-debug-prompt.ts"],"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 { 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 { 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 {getApplicationDebugPrompt as '40284836c0c46ae5c7f71c76c458e7fa27b2de5bd4'} from 'ACTIONS_MODULE14'\nexport {deleteApplication as '40af1b8d14947496efa0de09d2e46341cfadd226ac'} from 'ACTIONS_MODULE15'\nexport {openFolder as '40e7ea921079c1a8fe79fc7cfb59743f718c5944f7'} from 'ACTIONS_MODULE16'\nexport {getGitRepoInfo as '60f4c819a13f54bcc8320595c03e11fb6cafe8913b'} from 'ACTIONS_MODULE17'\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetApplicationUseCase } from '@shepai/core/application/use-cases/applications/get-application.use-case';\nimport type { IApplicationCreationPromptBuilder } from '@shepai/core/application/ports/output/services/application-creation-prompt-builder.interface';\n\nexport interface ApplicationDebugPromptResult {\n /** Shep brief — brand, role, mission, tech stack, workflow, quality\n * bar, definition of done, workspace section. What the agent SDK\n * gets as systemPrompt on every turn. */\n systemPrompt?: string;\n /** User-facing chat message — just the verbatim description. */\n userMessage?: string;\n /**\n * Convenience: `systemPrompt` + `---` + `userMessage`, suitable for\n * pasting into a clipboard / scratchpad / bug report.\n */\n combined?: string;\n error?: string;\n}\n\n/**\n * Rebuild the full application-creation prompt for an existing\n * application. Debug-only — lets the operator see exactly what Shep\n * handed to the agent on turn 1 of the session.\n *\n * The prompt is reconstructed from the stored description + repo path,\n * so it matches what `createApplication` would have generated at the\n * moment of creation (the builder is deterministic per input).\n */\nexport async function getApplicationDebugPrompt(\n applicationId: string\n): Promise<ApplicationDebugPromptResult> {\n try {\n if (!applicationId?.trim()) {\n return { error: 'applicationId is required' };\n }\n\n const getApp = resolve<GetApplicationUseCase>('GetApplicationUseCase');\n const application = await getApp.execute(applicationId);\n if (!application) {\n return { error: 'Application not found' };\n }\n\n const builder = resolve<IApplicationCreationPromptBuilder>('IApplicationCreationPromptBuilder');\n\n const { systemPrompt, userMessage } = builder.build({\n description: application.description ?? '',\n workspace: {\n workingDirectory: application.repositoryPath,\n platform: process.platform === 'win32' ? 'windows' : 'posix',\n },\n });\n\n const combined = `# SYSTEM PROMPT\\n\\n${systemPrompt}\\n\\n---\\n\\n# USER MESSAGE\\n\\n${userMessage}\\n`;\n\n return { systemPrompt, userMessage, combined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to build debug prompt';\n return { error: message };\n }\n}\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/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-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/application/%5Bid%5D/page/actions.js%20%28server%20actions%20loader%29","../../../../../../../src/presentation/web/app/actions/get-application-debug-prompt.ts"],"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 { 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 { 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 {getApplicationDebugPrompt as '40975e7b39f9f5f7d6d643d8f95238d003a6f22c3c'} from 'ACTIONS_MODULE14'\nexport {deleteApplication as '400601cc704fc3a542db95c4219b7261168cbe675d'} from 'ACTIONS_MODULE15'\nexport {openFolder as '40024b9babaf0ccba2c9644e1719947f9662db82da'} from 'ACTIONS_MODULE16'\nexport {getGitRepoInfo as '60dd3bba8d40f7d7eaab9cf25cfc4a5eedd85c6c3c'} from 'ACTIONS_MODULE17'\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetApplicationUseCase } from '@shepai/core/application/use-cases/applications/get-application.use-case';\nimport type { IApplicationCreationPromptBuilder } from '@shepai/core/application/ports/output/services/application-creation-prompt-builder.interface';\n\nexport interface ApplicationDebugPromptResult {\n /** Shep brief — brand, role, mission, tech stack, workflow, quality\n * bar, definition of done, workspace section. What the agent SDK\n * gets as systemPrompt on every turn. */\n systemPrompt?: string;\n /** User-facing chat message — just the verbatim description. */\n userMessage?: string;\n /**\n * Convenience: `systemPrompt` + `---` + `userMessage`, suitable for\n * pasting into a clipboard / scratchpad / bug report.\n */\n combined?: string;\n error?: string;\n}\n\n/**\n * Rebuild the full application-creation prompt for an existing\n * application. Debug-only — lets the operator see exactly what Shep\n * handed to the agent on turn 1 of the session.\n *\n * The prompt is reconstructed from the stored description + repo path,\n * so it matches what `createApplication` would have generated at the\n * moment of creation (the builder is deterministic per input).\n */\nexport async function getApplicationDebugPrompt(\n applicationId: string\n): Promise<ApplicationDebugPromptResult> {\n try {\n if (!applicationId?.trim()) {\n return { error: 'applicationId is required' };\n }\n\n const getApp = resolve<GetApplicationUseCase>('GetApplicationUseCase');\n const application = await getApp.execute(applicationId);\n if (!application) {\n return { error: 'Application not found' };\n }\n\n const builder = resolve<IApplicationCreationPromptBuilder>('IApplicationCreationPromptBuilder');\n\n const { systemPrompt, userMessage } = builder.build({\n description: application.description ?? '',\n workspace: {\n workingDirectory: application.repositoryPath,\n platform: process.platform === 'win32' ? 'windows' : 'posix',\n },\n });\n\n const combined = `# SYSTEM PROMPT\\n\\n${systemPrompt}\\n\\n---\\n\\n# USER MESSAGE\\n\\n${userMessage}\\n`;\n\n return { systemPrompt, userMessage, combined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to build debug prompt';\n return { error: message };\n }\n}\n"],"names":[],"mappings":"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"}