@shepai/cli 1.183.0-pr527.80e6e27 → 1.183.0-pr553.cd3d150

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 (465) hide show
  1. package/README.md +1 -0
  2. package/apis/json-schema/FeatureFlags.yaml +0 -5
  3. package/apis/json-schema/Settings.yaml +0 -3
  4. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts +1 -15
  5. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +1 -3
  7. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts +0 -38
  9. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts.map +1 -1
  10. package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.js +0 -9
  11. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +0 -11
  12. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  13. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
  14. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +0 -2
  15. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -1
  16. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +0 -2
  17. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts.map +1 -1
  18. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +0 -2
  19. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  20. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +0 -1
  21. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  22. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +0 -2
  23. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
  24. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +0 -2
  25. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  26. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -6
  27. package/dist/packages/core/src/domain/generated/output.d.ts +0 -263
  28. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  29. package/dist/packages/core/src/domain/generated/output.js +0 -43
  30. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  31. package/dist/packages/core/src/infrastructure/di/container.js +0 -57
  32. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +0 -4
  33. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  34. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +0 -17
  35. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  36. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -15
  37. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +0 -2
  38. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +0 -12
  40. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +0 -10
  41. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +0 -34
  43. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  44. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +1 -3
  45. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  46. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +1 -7
  47. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +1 -3
  48. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  49. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +1 -32
  50. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  51. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +0 -25
  52. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +1 -4
  53. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  54. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +0 -10
  55. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts +1 -10
  56. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
  57. package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +1 -101
  58. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +0 -1
  59. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  60. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +0 -61
  61. package/dist/src/presentation/cli/index.js +0 -2
  62. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  63. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +1 -5
  64. package/dist/src/presentation/web/app/build-graph-nodes.d.ts +1 -3
  65. package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
  66. package/dist/src/presentation/web/app/build-graph-nodes.js +0 -2
  67. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +1 -3
  68. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  69. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  70. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +1 -2
  71. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts +1 -3
  72. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  73. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +2 -3
  74. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.js +3 -3
  75. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  76. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +0 -3
  77. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  78. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +0 -3
  79. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  80. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +7 -26
  81. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  82. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +0 -1
  83. package/dist/translations/ar/cli.json +0 -21
  84. package/dist/translations/ar/web.json +1 -43
  85. package/dist/translations/de/cli.json +0 -21
  86. package/dist/translations/de/web.json +1 -43
  87. package/dist/translations/en/cli.json +0 -21
  88. package/dist/translations/en/web.json +1 -43
  89. package/dist/translations/es/cli.json +0 -21
  90. package/dist/translations/es/web.json +1 -43
  91. package/dist/translations/fr/cli.json +0 -21
  92. package/dist/translations/fr/web.json +1 -43
  93. package/dist/translations/he/cli.json +0 -21
  94. package/dist/translations/he/web.json +1 -43
  95. package/dist/translations/pt/cli.json +1 -22
  96. package/dist/translations/pt/web.json +1 -43
  97. package/dist/translations/ru/cli.json +0 -21
  98. package/dist/translations/ru/web.json +1 -43
  99. package/dist/translations/uk/cli.json +0 -21
  100. package/dist/translations/uk/web.json +1 -43
  101. package/dist/tsconfig.build.tsbuildinfo +1 -1
  102. package/package.json +1 -1
  103. package/web/.next/BUILD_ID +1 -1
  104. package/web/.next/build-manifest.json +2 -2
  105. package/web/.next/fallback-build-manifest.json +2 -2
  106. package/web/.next/prerender-manifest.json +3 -3
  107. package/web/.next/required-server-files.js +1 -1
  108. package/web/.next/required-server-files.json +1 -1
  109. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +32 -32
  110. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  111. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  112. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +30 -30
  113. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  114. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +33 -33
  116. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  117. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  118. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
  119. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  120. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  121. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +41 -41
  122. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  123. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  124. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
  125. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  126. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  127. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
  128. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  129. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  130. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +30 -30
  131. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  132. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +33 -33
  134. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  135. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  136. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
  137. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  138. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  139. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +41 -41
  140. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  141. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  142. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +30 -30
  143. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  144. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
  146. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  147. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  148. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
  149. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  150. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  151. package/web/.next/server/app/_global-error.html +2 -2
  152. package/web/.next/server/app/_global-error.rsc +1 -1
  153. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  154. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  155. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  156. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  157. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  158. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
  159. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  160. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  161. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  162. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  163. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  164. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  165. package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  166. package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
  167. package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +16 -16
  168. package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
  169. package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
  170. package/web/.next/server/app/applications/page/server-reference-manifest.json +15 -15
  171. package/web/.next/server/app/applications/page.js.nft.json +1 -1
  172. package/web/.next/server/app/applications/page_client-reference-manifest.js +1 -1
  173. package/web/.next/server/app/features/page/server-reference-manifest.json +7 -7
  174. package/web/.next/server/app/features/page.js.nft.json +1 -1
  175. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  176. package/web/.next/server/app/settings/page/server-reference-manifest.json +20 -35
  177. package/web/.next/server/app/settings/page.js +1 -1
  178. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  179. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  180. package/web/.next/server/app/skills/page/server-reference-manifest.json +15 -15
  181. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  182. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  183. package/web/.next/server/app/tools/page/server-reference-manifest.json +13 -13
  184. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  185. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  186. package/web/.next/server/app/version/page/server-reference-manifest.json +7 -7
  187. package/web/.next/server/app/version/page.js.nft.json +1 -1
  188. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  189. package/web/.next/server/chunks/[root-of-the-server]__10e976f3._.js +1 -1
  190. package/web/.next/server/chunks/[root-of-the-server]__84fede21._.js +1 -1
  191. package/web/.next/server/chunks/[root-of-the-server]__84fede21._.js.map +1 -1
  192. package/web/.next/server/chunks/[root-of-the-server]__aabea727._.js +1 -1
  193. package/web/.next/server/chunks/[root-of-the-server]__aabea727._.js.map +1 -1
  194. package/web/.next/server/chunks/d9f3b_next_dist_esm_build_templates_app-route_fc401c5d.js +1 -1
  195. package/web/.next/server/chunks/d9f3b_next_dist_esm_build_templates_app-route_fc401c5d.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4f9eef62.js +1 -1
  197. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4f9eef62.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_ffa16a22.js +1 -1
  199. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_ffa16a22.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_a1a998f9.js +1 -1
  201. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_a1a998f9.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  203. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  204. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  205. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  206. package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js +1 -1
  207. package/web/.next/server/chunks/ssr/[root-of-the-server]__288ffaa6._.js +1 -1
  208. package/web/.next/server/chunks/ssr/[root-of-the-server]__288ffaa6._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/[root-of-the-server]__4101a4a8._.js +1 -1
  210. package/web/.next/server/chunks/ssr/[root-of-the-server]__4101a4a8._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/[root-of-the-server]__538580df._.js +1 -1
  212. package/web/.next/server/chunks/ssr/[root-of-the-server]__538580df._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/[root-of-the-server]__5c5de261._.js +1 -1
  214. package/web/.next/server/chunks/ssr/[root-of-the-server]__5c5de261._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/[root-of-the-server]__638955bc._.js +1 -1
  216. package/web/.next/server/chunks/ssr/[root-of-the-server]__a9255c9a._.js +3 -0
  217. package/web/.next/server/chunks/ssr/[root-of-the-server]__a9255c9a._.js.map +1 -0
  218. package/web/.next/server/chunks/ssr/[root-of-the-server]__ac9ab3c5._.js +4 -0
  219. package/web/.next/server/chunks/ssr/[root-of-the-server]__ac9ab3c5._.js.map +1 -0
  220. package/web/.next/server/chunks/ssr/[root-of-the-server]__b88acc3c._.js +1 -1
  221. package/web/.next/server/chunks/ssr/[root-of-the-server]__b88acc3c._.js.map +1 -1
  222. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3d233f3._.js +1 -1
  223. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3d233f3._.js.map +1 -1
  224. package/web/.next/server/chunks/ssr/[root-of-the-server]__c6dba2b8._.js +1 -1
  225. package/web/.next/server/chunks/ssr/[root-of-the-server]__c6dba2b8._.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/[root-of-the-server]__eacd32e9._.js +1 -1
  227. package/web/.next/server/chunks/ssr/[root-of-the-server]__eacd32e9._.js.map +1 -1
  228. package/web/.next/server/chunks/ssr/[root-of-the-server]__ef0b8905._.js +2 -2
  229. package/web/.next/server/chunks/ssr/[root-of-the-server]__ef0b8905._.js.map +1 -1
  230. package/web/.next/server/chunks/ssr/[root-of-the-server]__f94e4165._.js +1 -1
  231. package/web/.next/server/chunks/ssr/[root-of-the-server]__f94e4165._.js.map +1 -1
  232. package/web/.next/server/chunks/ssr/[root-of-the-server]__ff5a5243._.js +1 -1
  233. package/web/.next/server/chunks/ssr/[root-of-the-server]__ff5a5243._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/{_bb029ee1._.js → _06fde7cf._.js} +2 -2
  235. package/web/.next/server/chunks/ssr/{_bb029ee1._.js.map → _06fde7cf._.js.map} +1 -1
  236. package/web/.next/server/chunks/ssr/_22d60ea8._.js +3 -0
  237. package/web/.next/server/chunks/ssr/_22d60ea8._.js.map +1 -0
  238. package/web/.next/server/chunks/ssr/_33a243dd._.js +1 -1
  239. package/web/.next/server/chunks/ssr/_33a243dd._.js.map +1 -1
  240. package/web/.next/server/chunks/ssr/{_88a1b163._.js → _4b57bcc3._.js} +2 -2
  241. package/web/.next/server/chunks/ssr/_4b57bcc3._.js.map +1 -0
  242. package/web/.next/server/chunks/ssr/_519d77a9._.js +1 -1
  243. package/web/.next/server/chunks/ssr/_519d77a9._.js.map +1 -1
  244. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  245. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  246. package/web/.next/server/chunks/ssr/_5b868d9b._.js +1 -1
  247. package/web/.next/server/chunks/ssr/_5b868d9b._.js.map +1 -1
  248. package/web/.next/server/chunks/ssr/_615e07af._.js +3 -0
  249. package/web/.next/server/chunks/ssr/_615e07af._.js.map +1 -0
  250. package/web/.next/server/chunks/ssr/{_700b8ec9._.js → _64d1b6ab._.js} +2 -2
  251. package/web/.next/server/chunks/ssr/{_700b8ec9._.js.map → _64d1b6ab._.js.map} +1 -1
  252. package/web/.next/server/chunks/ssr/_6b254164._.js +1 -1
  253. package/web/.next/server/chunks/ssr/_6b254164._.js.map +1 -1
  254. package/web/.next/server/chunks/ssr/_72cc0c05._.js +1 -1
  255. package/web/.next/server/chunks/ssr/_72cc0c05._.js.map +1 -1
  256. package/web/.next/server/chunks/ssr/{_ac5961de._.js → _87fc28df._.js} +2 -2
  257. package/web/.next/server/chunks/ssr/_87fc28df._.js.map +1 -0
  258. package/web/.next/server/chunks/ssr/{_59563ac1._.js → _8b845c2a._.js} +2 -2
  259. package/web/.next/server/chunks/ssr/{_59563ac1._.js.map → _8b845c2a._.js.map} +1 -1
  260. package/web/.next/server/chunks/ssr/_8e101e0b._.js +2 -2
  261. package/web/.next/server/chunks/ssr/_8e101e0b._.js.map +1 -1
  262. package/web/.next/server/chunks/ssr/_dfbeab70._.js +3 -0
  263. package/web/.next/server/chunks/ssr/_dfbeab70._.js.map +1 -0
  264. package/web/.next/server/chunks/ssr/_e65abbd1._.js +1 -1
  265. package/web/.next/server/chunks/ssr/_e65abbd1._.js.map +1 -1
  266. package/web/.next/server/chunks/ssr/_f86fc1bf._.js +1 -1
  267. package/web/.next/server/chunks/ssr/_f86fc1bf._.js.map +1 -1
  268. package/web/.next/server/chunks/ssr/_fc778d22._.js +3 -0
  269. package/web/.next/server/chunks/ssr/_fc778d22._.js.map +1 -0
  270. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  271. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  272. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  273. package/web/.next/server/chunks/ssr/{node_modules__pnpm_9ac649c1._.js → node_modules__pnpm_28a53b5d._.js} +2 -2
  274. package/web/.next/server/chunks/ssr/{node_modules__pnpm_9ac649c1._.js.map → node_modules__pnpm_28a53b5d._.js.map} +1 -1
  275. package/web/.next/server/chunks/ssr/src_presentation_web_47181610._.js +1 -1
  276. package/web/.next/server/chunks/ssr/src_presentation_web_47181610._.js.map +1 -1
  277. package/web/.next/server/chunks/ssr/src_presentation_web_5d3f4199._.js +1 -1
  278. package/web/.next/server/chunks/ssr/src_presentation_web_5d3f4199._.js.map +1 -1
  279. package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js +1 -1
  280. package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js.map +1 -1
  281. package/web/.next/server/chunks/ssr/src_presentation_web_61d96ba8._.js +1 -1
  282. package/web/.next/server/chunks/ssr/src_presentation_web_61d96ba8._.js.map +1 -1
  283. package/web/.next/server/chunks/ssr/src_presentation_web_6994959a._.js +1 -1
  284. package/web/.next/server/chunks/ssr/src_presentation_web_6994959a._.js.map +1 -1
  285. package/web/.next/server/chunks/ssr/src_presentation_web_77dadf68._.js +3 -3
  286. package/web/.next/server/chunks/ssr/src_presentation_web_77dadf68._.js.map +1 -1
  287. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +1 -1
  288. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -1
  289. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_c3f6f57e.js +1 -1
  290. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_c3f6f57e.js.map +1 -1
  291. package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js +1 -1
  292. package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js.map +1 -1
  293. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_8514dfcd._.js +3 -3
  294. package/web/.next/server/chunks/ssr/src_presentation_web_b95ed206._.js +1 -1
  295. package/web/.next/server/chunks/ssr/src_presentation_web_b95ed206._.js.map +1 -1
  296. package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js +1 -1
  297. package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js.map +1 -1
  298. package/web/.next/server/chunks/ssr/src_presentation_web_c543cf3e._.js +1 -1
  299. package/web/.next/server/chunks/ssr/src_presentation_web_c543cf3e._.js.map +1 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js +1 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js.map +1 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  305. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  306. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  307. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
  308. package/web/.next/server/chunks/ssr/translations_1562ae1a._.js +1 -1
  309. package/web/.next/server/chunks/ssr/translations_1562ae1a._.js.map +1 -1
  310. package/web/.next/server/pages/500.html +2 -2
  311. package/web/.next/server/server-reference-manifest.js +1 -1
  312. package/web/.next/server/server-reference-manifest.json +64 -79
  313. package/web/.next/static/chunks/{61201f0a38dc6784.js → 04c38e109dd4d082.js} +2 -2
  314. package/web/.next/static/chunks/{ded36f5739e4a4e1.js → 0658b69414ca5ecc.js} +1 -1
  315. package/web/.next/static/chunks/{03f93b2842ca688b.js → 1a0d47b7acf662f8.js} +2 -2
  316. package/web/.next/static/chunks/2cbe80f8e84d59a8.js +1 -0
  317. package/web/.next/static/chunks/{fcf7327eb2731905.js → 302c86aa96dcbacc.js} +1 -1
  318. package/web/.next/static/chunks/31f0d4fdd800c3ec.js +1 -0
  319. package/web/.next/static/chunks/36d968c44c52dccd.js +1 -0
  320. package/web/.next/static/chunks/3a6eedce30387a65.js +1 -0
  321. package/web/.next/static/chunks/{69bb98258075326f.js → 4ac64eaceef16292.js} +1 -1
  322. package/web/.next/static/chunks/{6be5713bee484a88.js → 4d7751c92a531b4c.js} +1 -1
  323. package/web/.next/static/chunks/{776acfd9be35f7b8.js → 4f4945ed1c4b793f.js} +3 -3
  324. package/web/.next/static/chunks/{c31dd6ed2546ed02.js → 7aaf68f557255f3d.js} +1 -1
  325. package/web/.next/static/chunks/81345b1f79dad8ea.js +1 -0
  326. package/web/.next/static/chunks/81b02c44e71de1ec.css +1 -0
  327. package/web/.next/static/chunks/91548fae41232f24.js +1 -0
  328. package/web/.next/static/chunks/930ceb2e741b0343.js +1 -0
  329. package/web/.next/static/chunks/9619faa56afb8dee.js +1 -0
  330. package/web/.next/static/chunks/{c47be6406b8c0053.js → 966f57938829b729.js} +1 -1
  331. package/web/.next/static/chunks/{dd5877dbb207f4ba.js → 97a6e70bf3c1e782.js} +1 -1
  332. package/web/.next/static/chunks/{5cb969096639b8db.js → 9a6c59ac77000a57.js} +1 -1
  333. package/web/.next/static/chunks/9aea22f126886a4a.js +7 -0
  334. package/web/.next/static/chunks/{aa792ef5139df0ab.js → a19c77561ecb59d0.js} +1 -1
  335. package/web/.next/static/chunks/c0a3918240432e6f.js +1 -0
  336. package/web/.next/static/chunks/{14ccadfe528de126.js → c9dde6d26ec1357f.js} +1 -1
  337. package/web/.next/static/chunks/e9e5cb9172ef1908.js +5 -0
  338. package/web/.next/static/chunks/f89f13e73f1306e0.js +1 -0
  339. package/apis/json-schema/ActionDispositionEntry.yaml +0 -14
  340. package/apis/json-schema/DependencyFinding.yaml +0 -28
  341. package/apis/json-schema/DependencyRiskType.yaml +0 -11
  342. package/apis/json-schema/DependencyRules.yaml +0 -38
  343. package/apis/json-schema/EffectivePolicySnapshot.yaml +0 -24
  344. package/apis/json-schema/ReleaseIntegrityCheck.yaml +0 -22
  345. package/apis/json-schema/ReleaseIntegrityCheckType.yaml +0 -9
  346. package/apis/json-schema/ReleaseIntegrityResult.yaml +0 -16
  347. package/apis/json-schema/ReleaseRules.yaml +0 -21
  348. package/apis/json-schema/SecurityActionCategory.yaml +0 -10
  349. package/apis/json-schema/SecurityActionDisposition.yaml +0 -8
  350. package/apis/json-schema/SecurityConfig.yaml +0 -17
  351. package/apis/json-schema/SecurityEvent.yaml +0 -36
  352. package/apis/json-schema/SecurityMode.yaml +0 -8
  353. package/apis/json-schema/SecurityPolicy.yaml +0 -24
  354. package/apis/json-schema/SecuritySeverity.yaml +0 -9
  355. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts +0 -76
  356. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.d.ts.map +0 -1
  357. package/dist/packages/core/src/application/ports/output/repositories/security-event.repository.interface.js +0 -11
  358. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts +0 -77
  359. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.d.ts.map +0 -1
  360. package/dist/packages/core/src/application/ports/output/services/security-policy-service.interface.js +0 -13
  361. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts +0 -71
  362. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.d.ts.map +0 -1
  363. package/dist/packages/core/src/application/use-cases/security/enforce-security.use-case.js +0 -215
  364. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts +0 -24
  365. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.d.ts.map +0 -1
  366. package/dist/packages/core/src/application/use-cases/security/evaluate-security-policy.use-case.js +0 -56
  367. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts +0 -36
  368. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.d.ts.map +0 -1
  369. package/dist/packages/core/src/application/use-cases/security/get-security-state.use-case.js +0 -76
  370. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts +0 -14
  371. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.d.ts.map +0 -1
  372. package/dist/packages/core/src/application/use-cases/security/record-security-event.use-case.js +0 -46
  373. package/dist/packages/core/src/domain/errors/security-violation.error.d.ts +0 -15
  374. package/dist/packages/core/src/domain/errors/security-violation.error.d.ts.map +0 -1
  375. package/dist/packages/core/src/domain/errors/security-violation.error.js +0 -20
  376. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts +0 -44
  377. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.d.ts.map +0 -1
  378. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/security-event.mapper.js +0 -55
  379. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts +0 -18
  380. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.d.ts.map +0 -1
  381. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-security-settings-columns.js +0 -31
  382. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts +0 -29
  383. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.d.ts.map +0 -1
  384. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-create-security-events-table.js +0 -53
  385. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-feature-flag-supply-chain-security.d.ts +0 -16
  386. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-feature-flag-supply-chain-security.d.ts.map +0 -1
  387. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-feature-flag-supply-chain-security.js +0 -22
  388. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts +0 -24
  389. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.d.ts.map +0 -1
  390. package/dist/packages/core/src/infrastructure/repositories/sqlite-security-event.repository.js +0 -96
  391. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts +0 -22
  392. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.d.ts.map +0 -1
  393. package/dist/packages/core/src/infrastructure/services/agents/common/executors/security-constraint-validator.js +0 -30
  394. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts +0 -59
  395. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.d.ts.map +0 -1
  396. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/security-pre-check.js +0 -89
  397. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts +0 -53
  398. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.d.ts.map +0 -1
  399. package/dist/packages/core/src/infrastructure/services/security/dependency-risk-evaluator.js +0 -241
  400. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts +0 -44
  401. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.d.ts.map +0 -1
  402. package/dist/packages/core/src/infrastructure/services/security/release-integrity-evaluator.js +0 -194
  403. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts +0 -28
  404. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.d.ts.map +0 -1
  405. package/dist/packages/core/src/infrastructure/services/security/security-policy-file-reader.js +0 -50
  406. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts +0 -26
  407. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.d.ts.map +0 -1
  408. package/dist/packages/core/src/infrastructure/services/security/security-policy-validator.js +0 -147
  409. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts +0 -44
  410. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.d.ts.map +0 -1
  411. package/dist/packages/core/src/infrastructure/services/security/security-policy.service.js +0 -174
  412. package/dist/src/presentation/cli/commands/security.command.d.ts +0 -16
  413. package/dist/src/presentation/cli/commands/security.command.d.ts.map +0 -1
  414. package/dist/src/presentation/cli/commands/security.command.js +0 -133
  415. package/dist/src/presentation/web/app/actions/security.d.ts +0 -28
  416. package/dist/src/presentation/web/app/actions/security.d.ts.map +0 -1
  417. package/dist/src/presentation/web/app/actions/security.js +0 -59
  418. package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts +0 -6
  419. package/dist/src/presentation/web/components/common/repository-node/security-panel.d.ts.map +0 -1
  420. package/dist/src/presentation/web/components/common/repository-node/security-panel.js +0 -29
  421. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts +0 -10
  422. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.d.ts.map +0 -1
  423. package/dist/src/presentation/web/components/common/repository-node/security-panel.stories.js +0 -53
  424. package/dist/src/presentation/web/components/common/security-badge.d.ts +0 -7
  425. package/dist/src/presentation/web/components/common/security-badge.d.ts.map +0 -1
  426. package/dist/src/presentation/web/components/common/security-badge.js +0 -30
  427. package/dist/src/presentation/web/components/common/security-badge.stories.d.ts +0 -12
  428. package/dist/src/presentation/web/components/common/security-badge.stories.d.ts.map +0 -1
  429. package/dist/src/presentation/web/components/common/security-badge.stories.js +0 -20
  430. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts +0 -6
  431. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.d.ts.map +0 -1
  432. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.js +0 -60
  433. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts +0 -14
  434. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.d.ts.map +0 -1
  435. package/dist/src/presentation/web/components/features/settings/supply-chain-security-settings-section.stories.js +0 -116
  436. package/web/.next/server/chunks/ssr/[root-of-the-server]__81a09b67._.js +0 -4
  437. package/web/.next/server/chunks/ssr/[root-of-the-server]__81a09b67._.js.map +0 -1
  438. package/web/.next/server/chunks/ssr/[root-of-the-server]__c21d1dbd._.js +0 -3
  439. package/web/.next/server/chunks/ssr/[root-of-the-server]__c21d1dbd._.js.map +0 -1
  440. package/web/.next/server/chunks/ssr/_4fe617d4._.js +0 -3
  441. package/web/.next/server/chunks/ssr/_4fe617d4._.js.map +0 -1
  442. package/web/.next/server/chunks/ssr/_6bb86205._.js +0 -3
  443. package/web/.next/server/chunks/ssr/_6bb86205._.js.map +0 -1
  444. package/web/.next/server/chunks/ssr/_88a1b163._.js.map +0 -1
  445. package/web/.next/server/chunks/ssr/_a54e0548._.js +0 -3
  446. package/web/.next/server/chunks/ssr/_a54e0548._.js.map +0 -1
  447. package/web/.next/server/chunks/ssr/_ac5961de._.js.map +0 -1
  448. package/web/.next/server/chunks/ssr/_f8c78107._.js +0 -3
  449. package/web/.next/server/chunks/ssr/_f8c78107._.js.map +0 -1
  450. package/web/.next/static/chunks/04dacffc25b1aeca.js +0 -1
  451. package/web/.next/static/chunks/12d22b6a19665808.js +0 -1
  452. package/web/.next/static/chunks/1d538b66f81665fc.js +0 -1
  453. package/web/.next/static/chunks/23fab49df408d779.js +0 -1
  454. package/web/.next/static/chunks/6264451e0550022f.js +0 -7
  455. package/web/.next/static/chunks/7260582ee8e58549.js +0 -1
  456. package/web/.next/static/chunks/769f6939e7a4698a.js +0 -1
  457. package/web/.next/static/chunks/7851e1a90ca04c06.js +0 -1
  458. package/web/.next/static/chunks/84c1ad7ae5fc042d.js +0 -1
  459. package/web/.next/static/chunks/8d1446e71ffa2ed7.js +0 -5
  460. package/web/.next/static/chunks/cd8143002baa074e.js +0 -1
  461. package/web/.next/static/chunks/f0c985090f51835b.css +0 -1
  462. package/web/.next/static/chunks/f4ff691fdf16fb25.js +0 -1
  463. /package/web/.next/static/{Ed9rVk6pcfyq98DN_pOrK → s9Tl6ka-fGtxB11GslSv7}/_buildManifest.js +0 -0
  464. /package/web/.next/static/{Ed9rVk6pcfyq98DN_pOrK → s9Tl6ka-fGtxB11GslSv7}/_clientMiddlewareManifest.json +0 -0
  465. /package/web/.next/static/{Ed9rVk6pcfyq98DN_pOrK → s9Tl6ka-fGtxB11GslSv7}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[35556,a=>{"use strict";var b=a.i(20107),c=a.i(74533),d=a.i(12057),e=a.i(1904);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,"6046e69a5d750eef09f2910c8e221c26853b6ea26c",null),(0,b.registerServerReference)(i,"607ed2fa8fa04dda3cc4bc792d36023b81a2d1915b",null),a.s(["getGitRepoInfo",()=>h])},12358,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(33841),j=a.i(2804),k=a.i(68378),l=a.i(68670),m=a.i(85321),n=a.i(84095),o=a.i(56799),p=a.i(80496),q=a.i(93225),r=a.i(94691),s=a.i(77710),t=a.i(45395),u=a.i(76707),v=a.i(10528),w=a.i(50845),x=a.i(26604),y=a.i(54723),z=a.i(18942),A=a.i(42886),B=a.i(49560),C=a.i(39353),D=a.i(95072),E=a.i(29207),F=a.i(35556);a.s([],6524),a.i(6524),a.s(["004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6",()=>e.pickFolder,"005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6",()=>b.getAllAgentModels,"00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36",()=>c.checkAllAgentsStatus,"00e9dfbd6e5b8c8316129cccf71f306dc290962023",()=>g.listGitHubOrganizations,"4000bf86bcc6233c0b1d43d51cda477c690405e763",()=>t.createApplication,"401022574c76c0994b8b00220e52c8e005a45cc328",()=>E.getFeatureMetadata,"40105916247dba4c6254c696d18cba8a0fd0967fcb",()=>o.openShell,"40295c713502865b83a3df509b609d3dc04625ee0b",()=>u.createProjectFolder,"402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b",()=>l.stopDeployment,"4046ecfb670d85e0a2518210bae133faf9620ddeee",()=>s.createProjectAndFeature,"4047ed329e8b7484ff71fc0a65dc0b5450f3a9a49d",()=>x.resumeFeature,"404906a4301ca24858fb818b20ff67306a5dc37445",()=>m.getDeploymentStatus,"4050c0c09492a5c177e1805e876a69ae09f56366be",()=>q.syncRepository,"40517bd2ea0c40e78818124ff2130655a9f052592a",()=>h.importGitHubRepository,"40530cba5dc0fea42596912eac9888cf825eacf545",()=>v.archiveFeature,"405e941bd11cdaf10efa56eaa45557bbf7f5bc8405",()=>j.deployRepository,"40670786209cd74800dd09126ec2931266cb8e6488",()=>y.startFeature,"407ebeab3f45e94b90a48d5da7e1b396c6e3783461",()=>A.unarchiveFeature,"408cf4dae7f80a94ca468c87ca40846ac825a3c162",()=>D.deleteApplication,"40cce6c3966bb641b11a49e34aad01eb6fc1132c5c",()=>r.getDeploymentLogs,"40d9cca1fc562c971f8f07d4f32af201d8972c047a",()=>p.openFolder,"40e67621a4b03951ac4595cf608b8d72e4c3c9c694",()=>f.listGitHubRepositories,"40ebb5bb4518bae0c7b6dea84057c6bfc019a2905e",()=>z.stopFeature,"40f47c690b5d3b19d30552df4bf6a9bf5cf18e6b7a",()=>B.addRepository,"40f5248cb2ab52f92e90950166adab8424e8aceeae",()=>i.deployFeature,"40f6826ea04e2ae01fb9a2d53c26102cc0881bc8a9",()=>n.openIde,"40ff297753e74d45aeecb03f3360e9138b9bf4a81a",()=>k.deployApplication,"602d47346bf416279937e58a8da1bd2f5190a7bc16",()=>d.updateAgentAndModel,"6046e69a5d750eef09f2910c8e221c26853b6ea26c",()=>F.getGitRepoInfo,"60faa10aef80dc204c93e0bfce95078c5d479ec953",()=>C.deleteRepository,"786266fdf327c764b31a8647241fad7bc4b3a913f3",()=>w.deleteFeature],12358)}];
1
+ module.exports=[35556,a=>{"use strict";var b=a.i(20107),c=a.i(74533),d=a.i(12057),e=a.i(1904);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,"60b35f92b00b2952c859dd863872d61e9e7b52ab5b",null),(0,b.registerServerReference)(i,"60f00ffd241e7e6cbb101724c82933549894aa03b8",null),a.s(["getGitRepoInfo",()=>h])},12358,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(33841),j=a.i(2804),k=a.i(68378),l=a.i(68670),m=a.i(85321),n=a.i(84095),o=a.i(56799),p=a.i(80496),q=a.i(93225),r=a.i(94691),s=a.i(77710),t=a.i(45395),u=a.i(76707),v=a.i(10528),w=a.i(50845),x=a.i(26604),y=a.i(54723),z=a.i(18942),A=a.i(42886),B=a.i(49560),C=a.i(39353),D=a.i(95072),E=a.i(29207),F=a.i(35556);a.s([],6524),a.i(6524),a.s(["000210f631a169a481783b753fc8f8011e3739dafa",()=>b.getAllAgentModels,"004d43de802f3eded3f61d423d4f0aeb5e4942c679",()=>c.checkAllAgentsStatus,"00d7abf076433b9b7ad65f140828f000e60b100ef4",()=>g.listGitHubOrganizations,"00ebfc5b8f236df56743159162d19f9853e21daf71",()=>e.pickFolder,"4004cdb7a983c2b2e8118d003269c00b8ca8328770",()=>f.listGitHubRepositories,"4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6",()=>k.deployApplication,"400cd9af42eddef7536fee72505984aa11dd304eee",()=>y.startFeature,"40170e0928a2ea6b74017ad47a4c57117dd019d7c1",()=>n.openIde,"401fd96509b2150c7fc78d04070496418625ad3bb8",()=>s.createProjectAndFeature,"402c21b8b8b3488320789af44e231a3b03336742fb",()=>B.addRepository,"402ffa2dc54264716187241e9be4fa208bb543ec8c",()=>r.getDeploymentLogs,"4059c37b119db85720c100d7284a4eea13c23482e9",()=>v.archiveFeature,"406a8f4dd973018b040e39bcf5a54ab1d632e55520",()=>h.importGitHubRepository,"406b9612887878eda49140896d7cc50e8f71c08503",()=>z.stopFeature,"406d43f7d0c30b6b0b43e3aa4b78d5de248a765a10",()=>q.syncRepository,"40878effbe1f457983db9b61657615651fc79b3c25",()=>A.unarchiveFeature,"40b218f168a724496cc86feff20259b942c948b18a",()=>o.openShell,"40b2e1bc96b30cbdb0430af9925ac38dd4b704b0f3",()=>p.openFolder,"40b52399126c0c415ed3c0114be5bb6e7181aba920",()=>E.getFeatureMetadata,"40b8ce83c1d49acef485ad48493fec9a73813972ee",()=>D.deleteApplication,"40c4c9128d0fe7564c6338ab39a15ee8f37f97a5cf",()=>u.createProjectFolder,"40cda6828bcd7caf3c94b1d714873a18189513dfeb",()=>m.getDeploymentStatus,"40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119",()=>l.stopDeployment,"40de173f92137f456a64448e1d39e9737079d5b8d9",()=>j.deployRepository,"40e2b1ed706b39956f9d1c0c7231efa9d7c4c0760a",()=>t.createApplication,"40e36ae1ea45708cca02e8622499f80e8da7a24575",()=>x.resumeFeature,"40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c",()=>i.deployFeature,"6064f52ade385fbcce8be48cde9418c50671688a97",()=>d.updateAgentAndModel,"60b35f92b00b2952c859dd863872d61e9e7b52ab5b",()=>F.getGitRepoInfo,"60ff0df2dc4cb96435bf3a30645fc8340ee9b2fc74",()=>C.deleteRepository,"78915414551562a21cb8e714196b4daac0017b3bc3",()=>w.deleteFeature],12358)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_5d3f4199._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '602d47346bf416279937e58a8da1bd2f5190a7bc16'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '40e67621a4b03951ac4595cf608b8d72e4c3c9c694'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00e9dfbd6e5b8c8316129cccf71f306dc290962023'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '40517bd2ea0c40e78818124ff2130655a9f052592a'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '40f5248cb2ab52f92e90950166adab8424e8aceeae'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '405e941bd11cdaf10efa56eaa45557bbf7f5bc8405'} from 'ACTIONS_MODULE8'\nexport {deployApplication as '40ff297753e74d45aeecb03f3360e9138b9bf4a81a'} from 'ACTIONS_MODULE9'\nexport {stopDeployment as '402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b'} from 'ACTIONS_MODULE10'\nexport {getDeploymentStatus as '404906a4301ca24858fb818b20ff67306a5dc37445'} from 'ACTIONS_MODULE11'\nexport {openIde as '40f6826ea04e2ae01fb9a2d53c26102cc0881bc8a9'} from 'ACTIONS_MODULE12'\nexport {openShell as '40105916247dba4c6254c696d18cba8a0fd0967fcb'} from 'ACTIONS_MODULE13'\nexport {openFolder as '40d9cca1fc562c971f8f07d4f32af201d8972c047a'} from 'ACTIONS_MODULE14'\nexport {syncRepository as '4050c0c09492a5c177e1805e876a69ae09f56366be'} from 'ACTIONS_MODULE15'\nexport {getDeploymentLogs as '40cce6c3966bb641b11a49e34aad01eb6fc1132c5c'} from 'ACTIONS_MODULE16'\nexport {createProjectAndFeature as '4046ecfb670d85e0a2518210bae133faf9620ddeee'} from 'ACTIONS_MODULE17'\nexport {createApplication as '4000bf86bcc6233c0b1d43d51cda477c690405e763'} from 'ACTIONS_MODULE18'\nexport {createProjectFolder as '40295c713502865b83a3df509b609d3dc04625ee0b'} from 'ACTIONS_MODULE19'\nexport {archiveFeature as '40530cba5dc0fea42596912eac9888cf825eacf545'} from 'ACTIONS_MODULE20'\nexport {deleteFeature as '786266fdf327c764b31a8647241fad7bc4b3a913f3'} from 'ACTIONS_MODULE21'\nexport {resumeFeature as '4047ed329e8b7484ff71fc0a65dc0b5450f3a9a49d'} from 'ACTIONS_MODULE22'\nexport {startFeature as '40670786209cd74800dd09126ec2931266cb8e6488'} from 'ACTIONS_MODULE23'\nexport {stopFeature as '40ebb5bb4518bae0c7b6dea84057c6bfc019a2905e'} from 'ACTIONS_MODULE24'\nexport {unarchiveFeature as '407ebeab3f45e94b90a48d5da7e1b396c6e3783461'} from 'ACTIONS_MODULE25'\nexport {addRepository as '40f47c690b5d3b19d30552df4bf6a9bf5cf18e6b7a'} from 'ACTIONS_MODULE26'\nexport {deleteRepository as '60faa10aef80dc204c93e0bfce95078c5d479ec953'} from 'ACTIONS_MODULE27'\nexport {deleteApplication as '408cf4dae7f80a94ca468c87ca40846ac825a3c162'} from 'ACTIONS_MODULE28'\nexport {getFeatureMetadata as '401022574c76c0994b8b00220e52c8e005a45cc328'} from 'ACTIONS_MODULE29'\nexport {getGitRepoInfo as '6046e69a5d750eef09f2910c8e221c26853b6ea26c'} from 'ACTIONS_MODULE30'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '000210f631a169a481783b753fc8f8011e3739dafa'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '004d43de802f3eded3f61d423d4f0aeb5e4942c679'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '6064f52ade385fbcce8be48cde9418c50671688a97'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '00ebfc5b8f236df56743159162d19f9853e21daf71'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '4004cdb7a983c2b2e8118d003269c00b8ca8328770'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00d7abf076433b9b7ad65f140828f000e60b100ef4'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '406a8f4dd973018b040e39bcf5a54ab1d632e55520'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '40de173f92137f456a64448e1d39e9737079d5b8d9'} from 'ACTIONS_MODULE8'\nexport {deployApplication as '4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6'} from 'ACTIONS_MODULE9'\nexport {stopDeployment as '40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119'} from 'ACTIONS_MODULE10'\nexport {getDeploymentStatus as '40cda6828bcd7caf3c94b1d714873a18189513dfeb'} from 'ACTIONS_MODULE11'\nexport {openIde as '40170e0928a2ea6b74017ad47a4c57117dd019d7c1'} from 'ACTIONS_MODULE12'\nexport {openShell as '40b218f168a724496cc86feff20259b942c948b18a'} from 'ACTIONS_MODULE13'\nexport {openFolder as '40b2e1bc96b30cbdb0430af9925ac38dd4b704b0f3'} from 'ACTIONS_MODULE14'\nexport {syncRepository as '406d43f7d0c30b6b0b43e3aa4b78d5de248a765a10'} from 'ACTIONS_MODULE15'\nexport {getDeploymentLogs as '402ffa2dc54264716187241e9be4fa208bb543ec8c'} from 'ACTIONS_MODULE16'\nexport {createProjectAndFeature as '401fd96509b2150c7fc78d04070496418625ad3bb8'} from 'ACTIONS_MODULE17'\nexport {createApplication as '40e2b1ed706b39956f9d1c0c7231efa9d7c4c0760a'} from 'ACTIONS_MODULE18'\nexport {createProjectFolder as '40c4c9128d0fe7564c6338ab39a15ee8f37f97a5cf'} from 'ACTIONS_MODULE19'\nexport {archiveFeature as '4059c37b119db85720c100d7284a4eea13c23482e9'} from 'ACTIONS_MODULE20'\nexport {deleteFeature as '78915414551562a21cb8e714196b4daac0017b3bc3'} from 'ACTIONS_MODULE21'\nexport {resumeFeature as '40e36ae1ea45708cca02e8622499f80e8da7a24575'} from 'ACTIONS_MODULE22'\nexport {startFeature as '400cd9af42eddef7536fee72505984aa11dd304eee'} from 'ACTIONS_MODULE23'\nexport {stopFeature as '406b9612887878eda49140896d7cc50e8f71c08503'} from 'ACTIONS_MODULE24'\nexport {unarchiveFeature as '40878effbe1f457983db9b61657615651fc79b3c25'} from 'ACTIONS_MODULE25'\nexport {addRepository as '402c21b8b8b3488320789af44e231a3b03336742fb'} from 'ACTIONS_MODULE26'\nexport {deleteRepository as '60ff0df2dc4cb96435bf3a30645fc8340ee9b2fc74'} from 'ACTIONS_MODULE27'\nexport {deleteApplication as '40b8ce83c1d49acef485ad48493fec9a73813972ee'} from 'ACTIONS_MODULE28'\nexport {getFeatureMetadata as '40b52399126c0c415ed3c0114be5bb6e7181aba920'} from 'ACTIONS_MODULE29'\nexport {getGitRepoInfo as '60b35f92b00b2952c859dd863872d61e9e7b52ab5b'} from 'ACTIONS_MODULE30'\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[94691,a=>{"use strict";var b=a.i(20107),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(1904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"40cce6c3966bb641b11a49e34aad01eb6fc1132c5c",null),a.s(["getDeploymentLogs",()=>d])},17249,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(94691),j=a.i(33841),k=a.i(2804),l=a.i(68378),m=a.i(68670),n=a.i(85321);a.s([],7543),a.i(7543),a.s(["004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6",()=>e.pickFolder,"005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6",()=>b.getAllAgentModels,"00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36",()=>c.checkAllAgentsStatus,"00e9dfbd6e5b8c8316129cccf71f306dc290962023",()=>g.listGitHubOrganizations,"402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b",()=>m.stopDeployment,"404906a4301ca24858fb818b20ff67306a5dc37445",()=>n.getDeploymentStatus,"40517bd2ea0c40e78818124ff2130655a9f052592a",()=>h.importGitHubRepository,"405e941bd11cdaf10efa56eaa45557bbf7f5bc8405",()=>k.deployRepository,"40cce6c3966bb641b11a49e34aad01eb6fc1132c5c",()=>i.getDeploymentLogs,"40e67621a4b03951ac4595cf608b8d72e4c3c9c694",()=>f.listGitHubRepositories,"40f5248cb2ab52f92e90950166adab8424e8aceeae",()=>j.deployFeature,"40ff297753e74d45aeecb03f3360e9138b9bf4a81a",()=>l.deployApplication,"602d47346bf416279937e58a8da1bd2f5190a7bc16",()=>d.updateAgentAndModel],17249)}];
1
+ module.exports=[94691,a=>{"use strict";var b=a.i(20107),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(1904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"402ffa2dc54264716187241e9be4fa208bb543ec8c",null),a.s(["getDeploymentLogs",()=>d])},17249,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(94691),j=a.i(33841),k=a.i(2804),l=a.i(68378),m=a.i(68670),n=a.i(85321);a.s([],7543),a.i(7543),a.s(["000210f631a169a481783b753fc8f8011e3739dafa",()=>b.getAllAgentModels,"004d43de802f3eded3f61d423d4f0aeb5e4942c679",()=>c.checkAllAgentsStatus,"00d7abf076433b9b7ad65f140828f000e60b100ef4",()=>g.listGitHubOrganizations,"00ebfc5b8f236df56743159162d19f9853e21daf71",()=>e.pickFolder,"4004cdb7a983c2b2e8118d003269c00b8ca8328770",()=>f.listGitHubRepositories,"4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6",()=>l.deployApplication,"402ffa2dc54264716187241e9be4fa208bb543ec8c",()=>i.getDeploymentLogs,"406a8f4dd973018b040e39bcf5a54ab1d632e55520",()=>h.importGitHubRepository,"40cda6828bcd7caf3c94b1d714873a18189513dfeb",()=>n.getDeploymentStatus,"40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119",()=>m.stopDeployment,"40de173f92137f456a64448e1d39e9737079d5b8d9",()=>k.deployRepository,"40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c",()=>j.deployFeature,"6064f52ade385fbcce8be48cde9418c50671688a97",()=>d.updateAgentAndModel],17249)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_6159fef8._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-deployment-logs.ts","../../../../../../../src/presentation/web/.next-internal/server/app/tools/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n LogEntry,\n} from '@shepai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentLogs(targetId: string): Promise<LogEntry[] | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getLogs(targetId);\n}\n","export {getAllAgentModels as '005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '602d47346bf416279937e58a8da1bd2f5190a7bc16'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '40e67621a4b03951ac4595cf608b8d72e4c3c9c694'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00e9dfbd6e5b8c8316129cccf71f306dc290962023'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '40517bd2ea0c40e78818124ff2130655a9f052592a'} from 'ACTIONS_MODULE6'\nexport {getDeploymentLogs as '40cce6c3966bb641b11a49e34aad01eb6fc1132c5c'} from 'ACTIONS_MODULE7'\nexport {deployFeature as '40f5248cb2ab52f92e90950166adab8424e8aceeae'} from 'ACTIONS_MODULE8'\nexport {deployRepository as '405e941bd11cdaf10efa56eaa45557bbf7f5bc8405'} from 'ACTIONS_MODULE9'\nexport {deployApplication as '40ff297753e74d45aeecb03f3360e9138b9bf4a81a'} from 'ACTIONS_MODULE10'\nexport {stopDeployment as '402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b'} from 'ACTIONS_MODULE11'\nexport {getDeploymentStatus as '404906a4301ca24858fb818b20ff67306a5dc37445'} from 'ACTIONS_MODULE12'\n"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAMO,eAAe,EAAkB,CAAgB,SACtD,AAAK,GAAU,CAAX,MAIsB,AACnB,CALgB,AAIG,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC7B,OAAO,CAAC,GAJxB,IAKX,yCAPsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,+DCRtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-deployment-logs.ts","../../../../../../../src/presentation/web/.next-internal/server/app/tools/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n LogEntry,\n} from '@shepai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentLogs(targetId: string): Promise<LogEntry[] | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getLogs(targetId);\n}\n","export {getAllAgentModels as '000210f631a169a481783b753fc8f8011e3739dafa'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '004d43de802f3eded3f61d423d4f0aeb5e4942c679'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '6064f52ade385fbcce8be48cde9418c50671688a97'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '00ebfc5b8f236df56743159162d19f9853e21daf71'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '4004cdb7a983c2b2e8118d003269c00b8ca8328770'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00d7abf076433b9b7ad65f140828f000e60b100ef4'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '406a8f4dd973018b040e39bcf5a54ab1d632e55520'} from 'ACTIONS_MODULE6'\nexport {getDeploymentLogs as '402ffa2dc54264716187241e9be4fa208bb543ec8c'} from 'ACTIONS_MODULE7'\nexport {deployFeature as '40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c'} from 'ACTIONS_MODULE8'\nexport {deployRepository as '40de173f92137f456a64448e1d39e9737079d5b8d9'} from 'ACTIONS_MODULE9'\nexport {deployApplication as '4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6'} from 'ACTIONS_MODULE10'\nexport {stopDeployment as '40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119'} from 'ACTIONS_MODULE11'\nexport {getDeploymentStatus as '40cda6828bcd7caf3c94b1d714873a18189513dfeb'} from 'ACTIONS_MODULE12'\n"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAMO,eAAe,EAAkB,CAAgB,SACtD,AAAK,GAAU,CAAX,MAIsB,AACnB,CALgB,AAIG,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC7B,OAAO,CAAC,GAJxB,IAKX,yCAPsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,+DCRtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[24860,19720,a=>{"use strict";var b=a.i(20107),c=a.i(33244),d=a.i(1904);async function e(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete,ciWatchEnabled:a.ciWatchEnabled,enableEvidence:a.enableEvidence,commitEvidence:a.commitEvidence,fast:a.defaultFastMode,injectSkills:a.skillInjection?.enabled??!1}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"00e987dfd5e4344f407f5110ec72bd389f910813ae",null),a.s(["getWorkflowDefaults",()=>e],24860);var f=a.i(96380);let g=new Set(["ADMIN","MAINTAIN","WRITE"]);async function h(a){try{let b=(0,f.resolve)("IGitHubRepositoryService"),c=await b.getViewerPermission(a);return{canPushDirectly:g.has(c)}}catch{return{canPushDirectly:!1}}}(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"401ff2b9c6b68ff1fd0c398e573b6e5646d2bbb9ca",null),a.s(["getViewerPermission",()=>h],19720)},23761,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(33841),j=a.i(2804),k=a.i(68378),l=a.i(68670),m=a.i(85321),n=a.i(84095),o=a.i(56799),p=a.i(80496),q=a.i(93225),r=a.i(94691),s=a.i(77710),t=a.i(45395),u=a.i(76707),v=a.i(10528),w=a.i(50845),x=a.i(26604),y=a.i(54723),z=a.i(18942),A=a.i(42886),B=a.i(49560),C=a.i(39353),D=a.i(95072),E=a.i(29207),F=a.i(24860),G=a.i(19720),H=a.i(77605);a.s([],29023),a.i(29023),a.s(["004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6",()=>e.pickFolder,"005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6",()=>b.getAllAgentModels,"00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36",()=>c.checkAllAgentsStatus,"00e987dfd5e4344f407f5110ec72bd389f910813ae",()=>F.getWorkflowDefaults,"00e9dfbd6e5b8c8316129cccf71f306dc290962023",()=>g.listGitHubOrganizations,"4000bf86bcc6233c0b1d43d51cda477c690405e763",()=>t.createApplication,"401022574c76c0994b8b00220e52c8e005a45cc328",()=>E.getFeatureMetadata,"40105916247dba4c6254c696d18cba8a0fd0967fcb",()=>o.openShell,"401ff2b9c6b68ff1fd0c398e573b6e5646d2bbb9ca",()=>G.getViewerPermission,"40295c713502865b83a3df509b609d3dc04625ee0b",()=>u.createProjectFolder,"402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b",()=>l.stopDeployment,"4046ecfb670d85e0a2518210bae133faf9620ddeee",()=>s.createProjectAndFeature,"4047ed329e8b7484ff71fc0a65dc0b5450f3a9a49d",()=>x.resumeFeature,"404906a4301ca24858fb818b20ff67306a5dc37445",()=>m.getDeploymentStatus,"4050c0c09492a5c177e1805e876a69ae09f56366be",()=>q.syncRepository,"40517bd2ea0c40e78818124ff2130655a9f052592a",()=>h.importGitHubRepository,"40530cba5dc0fea42596912eac9888cf825eacf545",()=>v.archiveFeature,"405e941bd11cdaf10efa56eaa45557bbf7f5bc8405",()=>j.deployRepository,"40670786209cd74800dd09126ec2931266cb8e6488",()=>y.startFeature,"407ebeab3f45e94b90a48d5da7e1b396c6e3783461",()=>A.unarchiveFeature,"408cf4dae7f80a94ca468c87ca40846ac825a3c162",()=>D.deleteApplication,"40cce6c3966bb641b11a49e34aad01eb6fc1132c5c",()=>r.getDeploymentLogs,"40d9cca1fc562c971f8f07d4f32af201d8972c047a",()=>p.openFolder,"40e67621a4b03951ac4595cf608b8d72e4c3c9c694",()=>f.listGitHubRepositories,"40ebb5bb4518bae0c7b6dea84057c6bfc019a2905e",()=>z.stopFeature,"40ef7e867757e7b993e2cd2a39d29942084cf1a70a",()=>H.createFeature,"40f47c690b5d3b19d30552df4bf6a9bf5cf18e6b7a",()=>B.addRepository,"40f5248cb2ab52f92e90950166adab8424e8aceeae",()=>i.deployFeature,"40f6826ea04e2ae01fb9a2d53c26102cc0881bc8a9",()=>n.openIde,"40ff297753e74d45aeecb03f3360e9138b9bf4a81a",()=>k.deployApplication,"602d47346bf416279937e58a8da1bd2f5190a7bc16",()=>d.updateAgentAndModel,"60faa10aef80dc204c93e0bfce95078c5d479ec953",()=>C.deleteRepository,"786266fdf327c764b31a8647241fad7bc4b3a913f3",()=>w.deleteFeature],23761)}];
1
+ module.exports=[24860,19720,a=>{"use strict";var b=a.i(20107),c=a.i(33244),d=a.i(1904);async function e(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete,ciWatchEnabled:a.ciWatchEnabled,enableEvidence:a.enableEvidence,commitEvidence:a.commitEvidence,fast:a.defaultFastMode,injectSkills:a.skillInjection?.enabled??!1}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"00a0cf1bb3277060b680489a10a0f048c039bb7b32",null),a.s(["getWorkflowDefaults",()=>e],24860);var f=a.i(96380);let g=new Set(["ADMIN","MAINTAIN","WRITE"]);async function h(a){try{let b=(0,f.resolve)("IGitHubRepositoryService"),c=await b.getViewerPermission(a);return{canPushDirectly:g.has(c)}}catch{return{canPushDirectly:!1}}}(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"40ae9f4fe094471411531e4f6a29393fe4f5796bc6",null),a.s(["getViewerPermission",()=>h],19720)},23761,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(33841),j=a.i(2804),k=a.i(68378),l=a.i(68670),m=a.i(85321),n=a.i(84095),o=a.i(56799),p=a.i(80496),q=a.i(93225),r=a.i(94691),s=a.i(77710),t=a.i(45395),u=a.i(76707),v=a.i(10528),w=a.i(50845),x=a.i(26604),y=a.i(54723),z=a.i(18942),A=a.i(42886),B=a.i(49560),C=a.i(39353),D=a.i(95072),E=a.i(29207),F=a.i(24860),G=a.i(19720),H=a.i(77605);a.s([],29023),a.i(29023),a.s(["000210f631a169a481783b753fc8f8011e3739dafa",()=>b.getAllAgentModels,"004d43de802f3eded3f61d423d4f0aeb5e4942c679",()=>c.checkAllAgentsStatus,"00a0cf1bb3277060b680489a10a0f048c039bb7b32",()=>F.getWorkflowDefaults,"00d7abf076433b9b7ad65f140828f000e60b100ef4",()=>g.listGitHubOrganizations,"00ebfc5b8f236df56743159162d19f9853e21daf71",()=>e.pickFolder,"4004cdb7a983c2b2e8118d003269c00b8ca8328770",()=>f.listGitHubRepositories,"4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6",()=>k.deployApplication,"400cd9af42eddef7536fee72505984aa11dd304eee",()=>y.startFeature,"40170e0928a2ea6b74017ad47a4c57117dd019d7c1",()=>n.openIde,"401fd96509b2150c7fc78d04070496418625ad3bb8",()=>s.createProjectAndFeature,"4021b1f5505f2d4d32e1ad7348b3eef37a72d0a5b5",()=>H.createFeature,"402c21b8b8b3488320789af44e231a3b03336742fb",()=>B.addRepository,"402ffa2dc54264716187241e9be4fa208bb543ec8c",()=>r.getDeploymentLogs,"4059c37b119db85720c100d7284a4eea13c23482e9",()=>v.archiveFeature,"406a8f4dd973018b040e39bcf5a54ab1d632e55520",()=>h.importGitHubRepository,"406b9612887878eda49140896d7cc50e8f71c08503",()=>z.stopFeature,"406d43f7d0c30b6b0b43e3aa4b78d5de248a765a10",()=>q.syncRepository,"40878effbe1f457983db9b61657615651fc79b3c25",()=>A.unarchiveFeature,"40ae9f4fe094471411531e4f6a29393fe4f5796bc6",()=>G.getViewerPermission,"40b218f168a724496cc86feff20259b942c948b18a",()=>o.openShell,"40b2e1bc96b30cbdb0430af9925ac38dd4b704b0f3",()=>p.openFolder,"40b52399126c0c415ed3c0114be5bb6e7181aba920",()=>E.getFeatureMetadata,"40b8ce83c1d49acef485ad48493fec9a73813972ee",()=>D.deleteApplication,"40c4c9128d0fe7564c6338ab39a15ee8f37f97a5cf",()=>u.createProjectFolder,"40cda6828bcd7caf3c94b1d714873a18189513dfeb",()=>m.getDeploymentStatus,"40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119",()=>l.stopDeployment,"40de173f92137f456a64448e1d39e9737079d5b8d9",()=>j.deployRepository,"40e2b1ed706b39956f9d1c0c7231efa9d7c4c0760a",()=>t.createApplication,"40e36ae1ea45708cca02e8622499f80e8da7a24575",()=>x.resumeFeature,"40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c",()=>i.deployFeature,"6064f52ade385fbcce8be48cde9418c50671688a97",()=>d.updateAgentAndModel,"60ff0df2dc4cb96435bf3a30645fc8340ee9b2fc74",()=>C.deleteRepository,"78915414551562a21cb8e714196b4daac0017b3bc3",()=>w.deleteFeature],23761)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_61d96ba8._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/get-viewer-permission.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n ciWatchEnabled: boolean;\n enableEvidence: boolean;\n commitEvidence: boolean;\n fast: boolean;\n injectSkills: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n ciWatchEnabled: workflow.ciWatchEnabled,\n enableEvidence: workflow.enableEvidence,\n commitEvidence: workflow.commitEvidence,\n fast: workflow.defaultFastMode,\n injectSkills: workflow.skillInjection?.enabled ?? false,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IGitHubRepositoryService } from '@shepai/core/application/ports/output/services/github-repository-service.interface';\n\n/** Permissions that grant direct push access to a repository. */\nconst PUSH_PERMISSIONS = new Set(['ADMIN', 'MAINTAIN', 'WRITE']);\n\nexport async function getViewerPermission(repoPath: string): Promise<{ canPushDirectly: boolean }> {\n try {\n const service = resolve<IGitHubRepositoryService>('IGitHubRepositoryService');\n const permission = await service.getViewerPermission(repoPath);\n return { canPushDirectly: PUSH_PERMISSIONS.has(permission) };\n } catch {\n return { canPushDirectly: false };\n }\n}\n","export {getAllAgentModels as '005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '602d47346bf416279937e58a8da1bd2f5190a7bc16'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '40e67621a4b03951ac4595cf608b8d72e4c3c9c694'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00e9dfbd6e5b8c8316129cccf71f306dc290962023'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '40517bd2ea0c40e78818124ff2130655a9f052592a'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '40f5248cb2ab52f92e90950166adab8424e8aceeae'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '405e941bd11cdaf10efa56eaa45557bbf7f5bc8405'} from 'ACTIONS_MODULE8'\nexport {deployApplication as '40ff297753e74d45aeecb03f3360e9138b9bf4a81a'} from 'ACTIONS_MODULE9'\nexport {stopDeployment as '402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b'} from 'ACTIONS_MODULE10'\nexport {getDeploymentStatus as '404906a4301ca24858fb818b20ff67306a5dc37445'} from 'ACTIONS_MODULE11'\nexport {openIde as '40f6826ea04e2ae01fb9a2d53c26102cc0881bc8a9'} from 'ACTIONS_MODULE12'\nexport {openShell as '40105916247dba4c6254c696d18cba8a0fd0967fcb'} from 'ACTIONS_MODULE13'\nexport {openFolder as '40d9cca1fc562c971f8f07d4f32af201d8972c047a'} from 'ACTIONS_MODULE14'\nexport {syncRepository as '4050c0c09492a5c177e1805e876a69ae09f56366be'} from 'ACTIONS_MODULE15'\nexport {getDeploymentLogs as '40cce6c3966bb641b11a49e34aad01eb6fc1132c5c'} from 'ACTIONS_MODULE16'\nexport {createProjectAndFeature as '4046ecfb670d85e0a2518210bae133faf9620ddeee'} from 'ACTIONS_MODULE17'\nexport {createApplication as '4000bf86bcc6233c0b1d43d51cda477c690405e763'} from 'ACTIONS_MODULE18'\nexport {createProjectFolder as '40295c713502865b83a3df509b609d3dc04625ee0b'} from 'ACTIONS_MODULE19'\nexport {archiveFeature as '40530cba5dc0fea42596912eac9888cf825eacf545'} from 'ACTIONS_MODULE20'\nexport {deleteFeature as '786266fdf327c764b31a8647241fad7bc4b3a913f3'} from 'ACTIONS_MODULE21'\nexport {resumeFeature as '4047ed329e8b7484ff71fc0a65dc0b5450f3a9a49d'} from 'ACTIONS_MODULE22'\nexport {startFeature as '40670786209cd74800dd09126ec2931266cb8e6488'} from 'ACTIONS_MODULE23'\nexport {stopFeature as '40ebb5bb4518bae0c7b6dea84057c6bfc019a2905e'} from 'ACTIONS_MODULE24'\nexport {unarchiveFeature as '407ebeab3f45e94b90a48d5da7e1b396c6e3783461'} from 'ACTIONS_MODULE25'\nexport {addRepository as '40f47c690b5d3b19d30552df4bf6a9bf5cf18e6b7a'} from 'ACTIONS_MODULE26'\nexport {deleteRepository as '60faa10aef80dc204c93e0bfce95078c5d479ec953'} from 'ACTIONS_MODULE27'\nexport {deleteApplication as '408cf4dae7f80a94ca468c87ca40846ac825a3c162'} from 'ACTIONS_MODULE28'\nexport {getFeatureMetadata as '401022574c76c0994b8b00220e52c8e005a45cc328'} from 'ACTIONS_MODULE29'\nexport {getWorkflowDefaults as '00e987dfd5e4344f407f5110ec72bd389f910813ae'} from 'ACTIONS_MODULE30'\nexport {getViewerPermission as '401ff2b9c6b68ff1fd0c398e573b6e5646d2bbb9ca'} from 'ACTIONS_MODULE31'\nexport {createFeature as '40ef7e867757e7b993e2cd2a39d29942084cf1a70a'} from 'ACTIONS_MODULE32'\nexport {getViewerPermission as '401ff2b9c6b68ff1fd0c398e573b6e5646d2bbb9ca'} from 'ACTIONS_MODULE31'\n"],"names":[],"mappings":"8DAEA,EAAA,EAAA,CAAA,CAAA,mBAiBO,eAAe,IAEpB,GAAM,UAAE,CAAQ,CAAE,CADD,CAAA,CACI,CADJ,EAAA,WAAA,AAAW,IAG5B,MAAO,CACL,cAAe,CACb,SAAU,EAAS,oBAAoB,CAAC,QAAQ,CAChD,UAAW,EAAS,oBAAoB,CAAC,SAAS,CAClD,WAAY,EAAS,oBAAoB,CAAC,UAAU,AACtD,EACA,KAAM,EAAS,oBAAoB,CAAC,4BAA4B,CAChE,OAAQ,EAAS,8BAA8B,CAC/C,eAAgB,EAAS,cAAc,CACvC,eAAgB,EAAS,cAAc,CACvC,eAAgB,EAAS,cAAc,CACvC,KAAM,EAAS,eAAe,CAC9B,aAAc,EAAS,cAAc,EAAE,UAAW,CACpD,CACF,iCAlBsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,+CCjBtB,IAAA,EAAA,EAAA,CAAA,CAAA,OAIA,IAAM,EAAmB,IAAI,IAAI,CAAC,QAAS,WAAY,QAAQ,EAExD,eAAe,EAAoB,CAAgB,EACxD,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA2B,4BAC5C,EAAa,MAAM,EAAQ,mBAAmB,CAAC,GACrD,MAAO,CAAE,gBAAiB,EAAiB,GAAG,CAAC,EAAY,CAC7D,CAAE,KAAM,CACN,MAAO,CAAE,gBAAiB,EAAM,CAClC,CACF,iCARsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,uECRtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/get-viewer-permission.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n ciWatchEnabled: boolean;\n enableEvidence: boolean;\n commitEvidence: boolean;\n fast: boolean;\n injectSkills: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n ciWatchEnabled: workflow.ciWatchEnabled,\n enableEvidence: workflow.enableEvidence,\n commitEvidence: workflow.commitEvidence,\n fast: workflow.defaultFastMode,\n injectSkills: workflow.skillInjection?.enabled ?? false,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IGitHubRepositoryService } from '@shepai/core/application/ports/output/services/github-repository-service.interface';\n\n/** Permissions that grant direct push access to a repository. */\nconst PUSH_PERMISSIONS = new Set(['ADMIN', 'MAINTAIN', 'WRITE']);\n\nexport async function getViewerPermission(repoPath: string): Promise<{ canPushDirectly: boolean }> {\n try {\n const service = resolve<IGitHubRepositoryService>('IGitHubRepositoryService');\n const permission = await service.getViewerPermission(repoPath);\n return { canPushDirectly: PUSH_PERMISSIONS.has(permission) };\n } catch {\n return { canPushDirectly: false };\n }\n}\n","export {getAllAgentModels as '000210f631a169a481783b753fc8f8011e3739dafa'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '004d43de802f3eded3f61d423d4f0aeb5e4942c679'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '6064f52ade385fbcce8be48cde9418c50671688a97'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '00ebfc5b8f236df56743159162d19f9853e21daf71'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '4004cdb7a983c2b2e8118d003269c00b8ca8328770'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00d7abf076433b9b7ad65f140828f000e60b100ef4'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '406a8f4dd973018b040e39bcf5a54ab1d632e55520'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '40de173f92137f456a64448e1d39e9737079d5b8d9'} from 'ACTIONS_MODULE8'\nexport {deployApplication as '4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6'} from 'ACTIONS_MODULE9'\nexport {stopDeployment as '40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119'} from 'ACTIONS_MODULE10'\nexport {getDeploymentStatus as '40cda6828bcd7caf3c94b1d714873a18189513dfeb'} from 'ACTIONS_MODULE11'\nexport {openIde as '40170e0928a2ea6b74017ad47a4c57117dd019d7c1'} from 'ACTIONS_MODULE12'\nexport {openShell as '40b218f168a724496cc86feff20259b942c948b18a'} from 'ACTIONS_MODULE13'\nexport {openFolder as '40b2e1bc96b30cbdb0430af9925ac38dd4b704b0f3'} from 'ACTIONS_MODULE14'\nexport {syncRepository as '406d43f7d0c30b6b0b43e3aa4b78d5de248a765a10'} from 'ACTIONS_MODULE15'\nexport {getDeploymentLogs as '402ffa2dc54264716187241e9be4fa208bb543ec8c'} from 'ACTIONS_MODULE16'\nexport {createProjectAndFeature as '401fd96509b2150c7fc78d04070496418625ad3bb8'} from 'ACTIONS_MODULE17'\nexport {createApplication as '40e2b1ed706b39956f9d1c0c7231efa9d7c4c0760a'} from 'ACTIONS_MODULE18'\nexport {createProjectFolder as '40c4c9128d0fe7564c6338ab39a15ee8f37f97a5cf'} from 'ACTIONS_MODULE19'\nexport {archiveFeature as '4059c37b119db85720c100d7284a4eea13c23482e9'} from 'ACTIONS_MODULE20'\nexport {deleteFeature as '78915414551562a21cb8e714196b4daac0017b3bc3'} from 'ACTIONS_MODULE21'\nexport {resumeFeature as '40e36ae1ea45708cca02e8622499f80e8da7a24575'} from 'ACTIONS_MODULE22'\nexport {startFeature as '400cd9af42eddef7536fee72505984aa11dd304eee'} from 'ACTIONS_MODULE23'\nexport {stopFeature as '406b9612887878eda49140896d7cc50e8f71c08503'} from 'ACTIONS_MODULE24'\nexport {unarchiveFeature as '40878effbe1f457983db9b61657615651fc79b3c25'} from 'ACTIONS_MODULE25'\nexport {addRepository as '402c21b8b8b3488320789af44e231a3b03336742fb'} from 'ACTIONS_MODULE26'\nexport {deleteRepository as '60ff0df2dc4cb96435bf3a30645fc8340ee9b2fc74'} from 'ACTIONS_MODULE27'\nexport {deleteApplication as '40b8ce83c1d49acef485ad48493fec9a73813972ee'} from 'ACTIONS_MODULE28'\nexport {getFeatureMetadata as '40b52399126c0c415ed3c0114be5bb6e7181aba920'} from 'ACTIONS_MODULE29'\nexport {getWorkflowDefaults as '00a0cf1bb3277060b680489a10a0f048c039bb7b32'} from 'ACTIONS_MODULE30'\nexport {getViewerPermission as '40ae9f4fe094471411531e4f6a29393fe4f5796bc6'} from 'ACTIONS_MODULE31'\nexport {createFeature as '4021b1f5505f2d4d32e1ad7348b3eef37a72d0a5b5'} from 'ACTIONS_MODULE32'\nexport {getViewerPermission as '40ae9f4fe094471411531e4f6a29393fe4f5796bc6'} from 'ACTIONS_MODULE31'\n"],"names":[],"mappings":"8DAEA,EAAA,EAAA,CAAA,CAAA,mBAiBO,eAAe,IAEpB,GAAM,UAAE,CAAQ,CAAE,CADD,CAAA,CACI,CADJ,EAAA,WAAA,AAAW,IAG5B,MAAO,CACL,cAAe,CACb,SAAU,EAAS,oBAAoB,CAAC,QAAQ,CAChD,UAAW,EAAS,oBAAoB,CAAC,SAAS,CAClD,WAAY,EAAS,oBAAoB,CAAC,UAAU,AACtD,EACA,KAAM,EAAS,oBAAoB,CAAC,4BAA4B,CAChE,OAAQ,EAAS,8BAA8B,CAC/C,eAAgB,EAAS,cAAc,CACvC,eAAgB,EAAS,cAAc,CACvC,eAAgB,EAAS,cAAc,CACvC,KAAM,EAAS,eAAe,CAC9B,aAAc,EAAS,cAAc,EAAE,UAAW,CACpD,CACF,iCAlBsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,+CCjBtB,IAAA,EAAA,EAAA,CAAA,CAAA,OAIA,IAAM,EAAmB,IAAI,IAAI,CAAC,QAAS,WAAY,QAAQ,EAExD,eAAe,EAAoB,CAAgB,EACxD,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA2B,4BAC5C,EAAa,MAAM,EAAQ,mBAAmB,CAAC,GACrD,MAAO,CAAE,gBAAiB,EAAiB,GAAG,CAAC,EAAY,CAC7D,CAAE,KAAM,CACN,MAAO,CAAE,gBAAiB,EAAM,CAClC,CACF,iCARsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,uECRtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[35556,a=>{"use strict";var b=a.i(20107),c=a.i(74533),d=a.i(12057),e=a.i(1904);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,"6046e69a5d750eef09f2910c8e221c26853b6ea26c",null),(0,b.registerServerReference)(i,"607ed2fa8fa04dda3cc4bc792d36023b81a2d1915b",null),a.s(["getGitRepoInfo",()=>h])},80224,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(33841),j=a.i(2804),k=a.i(68378),l=a.i(68670),m=a.i(85321),n=a.i(84095),o=a.i(56799),p=a.i(80496),q=a.i(93225),r=a.i(94691),s=a.i(77710),t=a.i(45395),u=a.i(76707),v=a.i(10528),w=a.i(50845),x=a.i(26604),y=a.i(54723),z=a.i(18942),A=a.i(42886),B=a.i(49560),C=a.i(39353),D=a.i(95072),E=a.i(29207),F=a.i(35556);a.s([],18920),a.i(18920),a.s(["004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6",()=>e.pickFolder,"005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6",()=>b.getAllAgentModels,"00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36",()=>c.checkAllAgentsStatus,"00e9dfbd6e5b8c8316129cccf71f306dc290962023",()=>g.listGitHubOrganizations,"4000bf86bcc6233c0b1d43d51cda477c690405e763",()=>t.createApplication,"401022574c76c0994b8b00220e52c8e005a45cc328",()=>E.getFeatureMetadata,"40105916247dba4c6254c696d18cba8a0fd0967fcb",()=>o.openShell,"40295c713502865b83a3df509b609d3dc04625ee0b",()=>u.createProjectFolder,"402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b",()=>l.stopDeployment,"4046ecfb670d85e0a2518210bae133faf9620ddeee",()=>s.createProjectAndFeature,"4047ed329e8b7484ff71fc0a65dc0b5450f3a9a49d",()=>x.resumeFeature,"404906a4301ca24858fb818b20ff67306a5dc37445",()=>m.getDeploymentStatus,"4050c0c09492a5c177e1805e876a69ae09f56366be",()=>q.syncRepository,"40517bd2ea0c40e78818124ff2130655a9f052592a",()=>h.importGitHubRepository,"40530cba5dc0fea42596912eac9888cf825eacf545",()=>v.archiveFeature,"405e941bd11cdaf10efa56eaa45557bbf7f5bc8405",()=>j.deployRepository,"40670786209cd74800dd09126ec2931266cb8e6488",()=>y.startFeature,"407ebeab3f45e94b90a48d5da7e1b396c6e3783461",()=>A.unarchiveFeature,"408cf4dae7f80a94ca468c87ca40846ac825a3c162",()=>D.deleteApplication,"40cce6c3966bb641b11a49e34aad01eb6fc1132c5c",()=>r.getDeploymentLogs,"40d9cca1fc562c971f8f07d4f32af201d8972c047a",()=>p.openFolder,"40e67621a4b03951ac4595cf608b8d72e4c3c9c694",()=>f.listGitHubRepositories,"40ebb5bb4518bae0c7b6dea84057c6bfc019a2905e",()=>z.stopFeature,"40f47c690b5d3b19d30552df4bf6a9bf5cf18e6b7a",()=>B.addRepository,"40f5248cb2ab52f92e90950166adab8424e8aceeae",()=>i.deployFeature,"40f6826ea04e2ae01fb9a2d53c26102cc0881bc8a9",()=>n.openIde,"40ff297753e74d45aeecb03f3360e9138b9bf4a81a",()=>k.deployApplication,"602d47346bf416279937e58a8da1bd2f5190a7bc16",()=>d.updateAgentAndModel,"6046e69a5d750eef09f2910c8e221c26853b6ea26c",()=>F.getGitRepoInfo,"60faa10aef80dc204c93e0bfce95078c5d479ec953",()=>C.deleteRepository,"786266fdf327c764b31a8647241fad7bc4b3a913f3",()=>w.deleteFeature],80224)}];
1
+ module.exports=[35556,a=>{"use strict";var b=a.i(20107),c=a.i(74533),d=a.i(12057),e=a.i(1904);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,"60b35f92b00b2952c859dd863872d61e9e7b52ab5b",null),(0,b.registerServerReference)(i,"60f00ffd241e7e6cbb101724c82933549894aa03b8",null),a.s(["getGitRepoInfo",()=>h])},80224,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(33841),j=a.i(2804),k=a.i(68378),l=a.i(68670),m=a.i(85321),n=a.i(84095),o=a.i(56799),p=a.i(80496),q=a.i(93225),r=a.i(94691),s=a.i(77710),t=a.i(45395),u=a.i(76707),v=a.i(10528),w=a.i(50845),x=a.i(26604),y=a.i(54723),z=a.i(18942),A=a.i(42886),B=a.i(49560),C=a.i(39353),D=a.i(95072),E=a.i(29207),F=a.i(35556);a.s([],18920),a.i(18920),a.s(["000210f631a169a481783b753fc8f8011e3739dafa",()=>b.getAllAgentModels,"004d43de802f3eded3f61d423d4f0aeb5e4942c679",()=>c.checkAllAgentsStatus,"00d7abf076433b9b7ad65f140828f000e60b100ef4",()=>g.listGitHubOrganizations,"00ebfc5b8f236df56743159162d19f9853e21daf71",()=>e.pickFolder,"4004cdb7a983c2b2e8118d003269c00b8ca8328770",()=>f.listGitHubRepositories,"4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6",()=>k.deployApplication,"400cd9af42eddef7536fee72505984aa11dd304eee",()=>y.startFeature,"40170e0928a2ea6b74017ad47a4c57117dd019d7c1",()=>n.openIde,"401fd96509b2150c7fc78d04070496418625ad3bb8",()=>s.createProjectAndFeature,"402c21b8b8b3488320789af44e231a3b03336742fb",()=>B.addRepository,"402ffa2dc54264716187241e9be4fa208bb543ec8c",()=>r.getDeploymentLogs,"4059c37b119db85720c100d7284a4eea13c23482e9",()=>v.archiveFeature,"406a8f4dd973018b040e39bcf5a54ab1d632e55520",()=>h.importGitHubRepository,"406b9612887878eda49140896d7cc50e8f71c08503",()=>z.stopFeature,"406d43f7d0c30b6b0b43e3aa4b78d5de248a765a10",()=>q.syncRepository,"40878effbe1f457983db9b61657615651fc79b3c25",()=>A.unarchiveFeature,"40b218f168a724496cc86feff20259b942c948b18a",()=>o.openShell,"40b2e1bc96b30cbdb0430af9925ac38dd4b704b0f3",()=>p.openFolder,"40b52399126c0c415ed3c0114be5bb6e7181aba920",()=>E.getFeatureMetadata,"40b8ce83c1d49acef485ad48493fec9a73813972ee",()=>D.deleteApplication,"40c4c9128d0fe7564c6338ab39a15ee8f37f97a5cf",()=>u.createProjectFolder,"40cda6828bcd7caf3c94b1d714873a18189513dfeb",()=>m.getDeploymentStatus,"40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119",()=>l.stopDeployment,"40de173f92137f456a64448e1d39e9737079d5b8d9",()=>j.deployRepository,"40e2b1ed706b39956f9d1c0c7231efa9d7c4c0760a",()=>t.createApplication,"40e36ae1ea45708cca02e8622499f80e8da7a24575",()=>x.resumeFeature,"40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c",()=>i.deployFeature,"6064f52ade385fbcce8be48cde9418c50671688a97",()=>d.updateAgentAndModel,"60b35f92b00b2952c859dd863872d61e9e7b52ab5b",()=>F.getGitRepoInfo,"60ff0df2dc4cb96435bf3a30645fc8340ee9b2fc74",()=>C.deleteRepository,"78915414551562a21cb8e714196b4daac0017b3bc3",()=>w.deleteFeature],80224)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_6994959a._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '602d47346bf416279937e58a8da1bd2f5190a7bc16'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '40e67621a4b03951ac4595cf608b8d72e4c3c9c694'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00e9dfbd6e5b8c8316129cccf71f306dc290962023'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '40517bd2ea0c40e78818124ff2130655a9f052592a'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '40f5248cb2ab52f92e90950166adab8424e8aceeae'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '405e941bd11cdaf10efa56eaa45557bbf7f5bc8405'} from 'ACTIONS_MODULE8'\nexport {deployApplication as '40ff297753e74d45aeecb03f3360e9138b9bf4a81a'} from 'ACTIONS_MODULE9'\nexport {stopDeployment as '402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b'} from 'ACTIONS_MODULE10'\nexport {getDeploymentStatus as '404906a4301ca24858fb818b20ff67306a5dc37445'} from 'ACTIONS_MODULE11'\nexport {openIde as '40f6826ea04e2ae01fb9a2d53c26102cc0881bc8a9'} from 'ACTIONS_MODULE12'\nexport {openShell as '40105916247dba4c6254c696d18cba8a0fd0967fcb'} from 'ACTIONS_MODULE13'\nexport {openFolder as '40d9cca1fc562c971f8f07d4f32af201d8972c047a'} from 'ACTIONS_MODULE14'\nexport {syncRepository as '4050c0c09492a5c177e1805e876a69ae09f56366be'} from 'ACTIONS_MODULE15'\nexport {getDeploymentLogs as '40cce6c3966bb641b11a49e34aad01eb6fc1132c5c'} from 'ACTIONS_MODULE16'\nexport {createProjectAndFeature as '4046ecfb670d85e0a2518210bae133faf9620ddeee'} from 'ACTIONS_MODULE17'\nexport {createApplication as '4000bf86bcc6233c0b1d43d51cda477c690405e763'} from 'ACTIONS_MODULE18'\nexport {createProjectFolder as '40295c713502865b83a3df509b609d3dc04625ee0b'} from 'ACTIONS_MODULE19'\nexport {archiveFeature as '40530cba5dc0fea42596912eac9888cf825eacf545'} from 'ACTIONS_MODULE20'\nexport {deleteFeature as '786266fdf327c764b31a8647241fad7bc4b3a913f3'} from 'ACTIONS_MODULE21'\nexport {resumeFeature as '4047ed329e8b7484ff71fc0a65dc0b5450f3a9a49d'} from 'ACTIONS_MODULE22'\nexport {startFeature as '40670786209cd74800dd09126ec2931266cb8e6488'} from 'ACTIONS_MODULE23'\nexport {stopFeature as '40ebb5bb4518bae0c7b6dea84057c6bfc019a2905e'} from 'ACTIONS_MODULE24'\nexport {unarchiveFeature as '407ebeab3f45e94b90a48d5da7e1b396c6e3783461'} from 'ACTIONS_MODULE25'\nexport {addRepository as '40f47c690b5d3b19d30552df4bf6a9bf5cf18e6b7a'} from 'ACTIONS_MODULE26'\nexport {deleteRepository as '60faa10aef80dc204c93e0bfce95078c5d479ec953'} from 'ACTIONS_MODULE27'\nexport {deleteApplication as '408cf4dae7f80a94ca468c87ca40846ac825a3c162'} from 'ACTIONS_MODULE28'\nexport {getFeatureMetadata as '401022574c76c0994b8b00220e52c8e005a45cc328'} from 'ACTIONS_MODULE29'\nexport {getGitRepoInfo as '6046e69a5d750eef09f2910c8e221c26853b6ea26c'} from 'ACTIONS_MODULE30'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted — includes staged + unstaged vs HEAD)\n git(repositoryPath, ['diff', 'HEAD', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '000210f631a169a481783b753fc8f8011e3739dafa'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '004d43de802f3eded3f61d423d4f0aeb5e4942c679'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '6064f52ade385fbcce8be48cde9418c50671688a97'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '00ebfc5b8f236df56743159162d19f9853e21daf71'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '4004cdb7a983c2b2e8118d003269c00b8ca8328770'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00d7abf076433b9b7ad65f140828f000e60b100ef4'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '406a8f4dd973018b040e39bcf5a54ab1d632e55520'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '40de173f92137f456a64448e1d39e9737079d5b8d9'} from 'ACTIONS_MODULE8'\nexport {deployApplication as '4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6'} from 'ACTIONS_MODULE9'\nexport {stopDeployment as '40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119'} from 'ACTIONS_MODULE10'\nexport {getDeploymentStatus as '40cda6828bcd7caf3c94b1d714873a18189513dfeb'} from 'ACTIONS_MODULE11'\nexport {openIde as '40170e0928a2ea6b74017ad47a4c57117dd019d7c1'} from 'ACTIONS_MODULE12'\nexport {openShell as '40b218f168a724496cc86feff20259b942c948b18a'} from 'ACTIONS_MODULE13'\nexport {openFolder as '40b2e1bc96b30cbdb0430af9925ac38dd4b704b0f3'} from 'ACTIONS_MODULE14'\nexport {syncRepository as '406d43f7d0c30b6b0b43e3aa4b78d5de248a765a10'} from 'ACTIONS_MODULE15'\nexport {getDeploymentLogs as '402ffa2dc54264716187241e9be4fa208bb543ec8c'} from 'ACTIONS_MODULE16'\nexport {createProjectAndFeature as '401fd96509b2150c7fc78d04070496418625ad3bb8'} from 'ACTIONS_MODULE17'\nexport {createApplication as '40e2b1ed706b39956f9d1c0c7231efa9d7c4c0760a'} from 'ACTIONS_MODULE18'\nexport {createProjectFolder as '40c4c9128d0fe7564c6338ab39a15ee8f37f97a5cf'} from 'ACTIONS_MODULE19'\nexport {archiveFeature as '4059c37b119db85720c100d7284a4eea13c23482e9'} from 'ACTIONS_MODULE20'\nexport {deleteFeature as '78915414551562a21cb8e714196b4daac0017b3bc3'} from 'ACTIONS_MODULE21'\nexport {resumeFeature as '40e36ae1ea45708cca02e8622499f80e8da7a24575'} from 'ACTIONS_MODULE22'\nexport {startFeature as '400cd9af42eddef7536fee72505984aa11dd304eee'} from 'ACTIONS_MODULE23'\nexport {stopFeature as '406b9612887878eda49140896d7cc50e8f71c08503'} from 'ACTIONS_MODULE24'\nexport {unarchiveFeature as '40878effbe1f457983db9b61657615651fc79b3c25'} from 'ACTIONS_MODULE25'\nexport {addRepository as '402c21b8b8b3488320789af44e231a3b03336742fb'} from 'ACTIONS_MODULE26'\nexport {deleteRepository as '60ff0df2dc4cb96435bf3a30645fc8340ee9b2fc74'} from 'ACTIONS_MODULE27'\nexport {deleteApplication as '40b8ce83c1d49acef485ad48493fec9a73813972ee'} from 'ACTIONS_MODULE28'\nexport {getFeatureMetadata as '40b52399126c0c415ed3c0114be5bb6e7181aba920'} from 'ACTIONS_MODULE29'\nexport {getGitRepoInfo as '60b35f92b00b2952c859dd863872d61e9e7b52ab5b'} from 'ACTIONS_MODULE30'\n"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,mBAEA,IAAM,EAAgB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAA,QAAQ,EAExC,eAAe,EAAI,CAAW,CAAE,CAAc,EAC5C,GAAM,QAAE,CAAM,CAAE,CAAG,MAAM,EAAc,MAAO,EAAM,KAAE,EAAK,QAAS,GAAK,GACzE,OAAO,EAAO,IAAI,EACpB,CA8CO,eAAe,EACpB,CAAsB,CACtB,EAAc,CAAC,EAaf,GAAI,CAAC,EAAe,IAAI,GACtB,CAD0B,KACnB,CAXP,QAAS,EAAE,CACX,SAAU,EAAE,CACZ,QAAS,EAAE,CACX,KAAM,EAAE,CACR,WAAY,EACZ,cAAe,GACf,UAAW,KACX,YAAa,CAAE,OAAQ,EAAG,SAAU,EAAG,UAAW,CAAE,EAIjC,MAAO,6BAA8B,EAG1D,IAAM,EAAU,MAAM,QAAQ,UAAU,CAAC,CAEvC,EAAI,EAAgB,CAClB,MACA,CAAC,YAAY,EAAE,EAAA,CAAa,CAC5B,wCACA,aACD,EAED,EAAI,EAAgB,CAAC,SAAU,iBAAiB,EAEhD,EAAI,EAAgB,CAClB,SACA,wBACA,+DACA,aACD,EAED,EAAI,EAAgB,CAAC,SAAU,KAAK,EAEpC,EAAI,EAAgB,CAAC,MAAO,sBAAuB,KAAM,4BAA4B,EAErF,EAAI,EAAgB,CAAC,QAAS,OAAO,EAErC,EAAI,EAAgB,CAAC,SAAU,cAAc,EAE7C,EAAI,EAAgB,CAAC,OAAQ,OAAQ,cAAc,EACpD,EAEK,EAAM,AAAC,GAAqC,cAAtB,CAAO,CAAC,EAAE,CAAC,MAAM,CAAmB,CAAO,CAAC,EAAE,CAAC,KAAK,CAAG,GAG7E,EAAyB,EAAI,GAChC,KAAK,CAAC,MACN,MAAM,CAAC,SACP,GAAG,CAAC,AAAC,IACJ,GAAM,CAAC,EAAM,EAAW,EAAS,EAAQ,EAAa,CAAG,EAAK,KAAK,CAAC,MACpE,MAAO,MAAE,YAAM,UAAW,SAAS,EAAQ,cAAa,CAC1D,GAEI,EAAgB,EAAI,GACtB,EAAQ,MAAM,CAAG,GAAK,IACxB,CAAO,CAAC,EAAE,CAAC,MAAM,AADsB,CACnB,CAAA,EAItB,IAAM,EAA4B,EAAI,GACnC,KAAK,CAAC,MACN,MAAM,CAAC,SACP,KAAK,CAAC,EAAG,IACT,GAAG,CAAC,AAAC,IACJ,IAAM,EAAY,EAAK,UAAU,CAAC,KAE5B,CAAC,EAAM,EAAe,CAAG,CADjB,EAAY,EAAK,KAAK,CAAC,GAAK,CAAA,EACL,KAAK,CAAC,MAC3C,MAAO,CAAE,KAAM,EAAK,IAAI,aAAI,EAAW,eAAgB,GAAgB,QAAU,EAAG,CACtF,GAGI,EAAY,IAAI,IACtB,EAAI,GACD,KAAK,CAAC,MACN,MAAM,CAAC,SACP,OAAO,CAAE,AAAD,IACP,IAAM,EAAQ,EAAK,KAAK,CAAC,8BACzB,GAAI,EAAO,CAET,IAAM,EAAY,CAAK,CAAC,EAAE,CAAC,OAAO,CAAC,aAAc,MAAM,OAAO,CAAC,wBAAyB,IACxF,EAAU,GAAG,CAAC,CAAK,CAAC,EAAE,CAAE,EAC1B,CACF,GACF,IAAM,EAA2B,MAAM,IAAI,CAAC,EAAW,CAAC,CAAC,EAAM,EAAI,GAAK,CAAC,MAAE,MAAM,EAAI,CAAC,EAGhF,EAAO,EAAI,GAAG,KAAK,CAAC,MAAM,MAAM,CAAC,SAAS,KAAK,CAAC,EAAG,GAGnD,EAAa,EAAI,GAAG,KAAK,CAAC,MAAM,MAAM,CAAC,SAAS,MAAM,CAGtD,EAAc,EAAI,GAAG,KAAK,CAAC,MAAM,MAAM,CAAC,SACxC,EAAoC,CAAE,OAAQ,EAAG,SAAU,EAAG,UAAW,CAAE,EACjF,IAAK,IAAM,KAAQ,EAAa,CAC9B,IAAM,EAAI,CAAI,CAAC,EAAE,CACX,EAAI,CAAI,CAAC,EAAE,CACP,MAAN,GAAmB,MAAN,EAAW,EAAY,SAAS,GAClC,MAAN,GAAmB,MAAN,GAAW,EAAY,MAAM,GACzC,MAAN,GAAmB,MAAN,GAAW,EAAY,QAAQ,EAClD,CAGA,IAAI,EAAiC,KAC/B,EAAW,EAAI,GACrB,GAAI,EAAU,CACZ,IAAM,EAAQ,EAAS,KAAK,CAAC,cACvB,EAAM,EAAS,KAAK,CAAC,mBACrB,EAAM,EAAS,KAAK,CAAC,kBAC3B,EAAY,CACV,aAAc,EAAQ,SAAS,CAAK,CAAC,EAAE,CAAE,IAAM,EAC/C,WAAY,EAAM,SAAS,CAAG,CAAC,EAAE,CAAE,IAAM,EACzC,UAAW,EAAM,SAAS,CAAG,CAAC,EAAE,CAAE,IAAM,CAC1C,CACF,CAEA,MAAO,SAAE,EAAS,mBAAU,OAAS,aAAM,gBAAY,YAAe,cAAW,CAAY,CAC/F,CAGO,eAAe,EACpB,CAAsB,CACtB,EAAQ,EAAE,EAEV,IAAM,EAAO,MAAM,EAAe,EAAgB,GAClD,MAAO,CAAE,QAAS,EAAK,OAAO,CAAE,MAAO,EAAK,KAAK,AAAC,CACpD,iCApIsB,EA8HA,IA9HA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,MA8HA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,4DCtLtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,6 +1,6 @@
1
- module.exports=[95072,a=>{"use strict";var b=a.i(20107),c=a.i(96380);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(1904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"408cf4dae7f80a94ca468c87ca40846ac825a3c162",null),a.s(["deleteApplication",()=>d])},77710,77605,45395,a=>{"use strict";var b=a.i(20107),c=a.i(96380),d=a.i(1904);async function e(a){let{description:b,repositoryPath:d,attachments:e,sessionId:f,approvalGates:g,push:h,openPr:i,parentId:j,fast:k,pending:l,forkAndPr:m,commitSpecs:n,ciWatchEnabled:o,enableEvidence:p,commitEvidence:q,agentType:r,model:s,rebaseBeforeBranch:t,injectSkills:u}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let v=function(a,b){if(!b||0===b.length)return a;let c=b.map(a=>a.notes?.trim()?`@${a.path} [Note: ${a.notes.trim()}]`:`@${a.path}`).join(" ");return`${a}
1
+ module.exports=[95072,a=>{"use strict";var b=a.i(20107),c=a.i(96380);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(1904).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"40b8ce83c1d49acef485ad48493fec9a73813972ee",null),a.s(["deleteApplication",()=>d])},77710,77605,45395,a=>{"use strict";var b=a.i(20107),c=a.i(96380),d=a.i(1904);async function e(a){let{description:b,repositoryPath:d,attachments:e,sessionId:f,approvalGates:g,push:h,openPr:i,parentId:j,fast:k,pending:l,forkAndPr:m,commitSpecs:n,ciWatchEnabled:o,enableEvidence:p,commitEvidence:q,agentType:r,model:s,rebaseBeforeBranch:t,injectSkills:u}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let v=function(a,b){if(!b||0===b.length)return a;let c=b.map(a=>a.notes?.trim()?`@${a.path} [Note: ${a.notes.trim()}]`:`@${a.path}`).join(" ");return`${a}
2
2
 
3
- ${c}`}(b,e),w={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:g}=await a.createRecord({userInput:v,repositoryPath:d,approvalGates:w,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},description:b,...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...null!=t?{rebaseBeforeBranch:t}:{},...null!=u?{injectSkills:u}:{}});return a.initializeAndSpawn(e,{userInput:v,repositoryPath:d,approvalGates:w,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...f?{sessionId:f}:{},...null!=t?{rebaseBeforeBranch:t}:{},...null!=u?{injectSkills:u}:{}},g).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"40ef7e867757e7b993e2cd2a39d29942084cf1a70a",null),a.s(["createFeature",()=>e],77605);let f=`\
3
+ ${c}`}(b,e),w={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:g}=await a.createRecord({userInput:v,repositoryPath:d,approvalGates:w,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},description:b,...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...null!=t?{rebaseBeforeBranch:t}:{},...null!=u?{injectSkills:u}:{}});return a.initializeAndSpawn(e,{userInput:v,repositoryPath:d,approvalGates:w,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...f?{sessionId:f}:{},...null!=t?{rebaseBeforeBranch:t}:{},...null!=u?{injectSkills:u}:{}},g).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"4021b1f5505f2d4d32e1ad7348b3eef37a72d0a5b5",null),a.s(["createFeature",()=>e],77605);let f=`\
4
4
  ## Project Requirements
5
5
 
6
6
  Build this as a **React application** using Vite as the build tool.
@@ -27,6 +27,6 @@ Build this as a **React application** using Vite as the build tool.
27
27
  ---
28
28
 
29
29
  ## What to Build
30
- `;async function g(a){let{description:b,attachments:d,agentType:g,model:h}=a;if(!b?.trim())return{error:"Description is required"};try{let i=(0,c.resolve)("CreateProjectUseCase"),j=await i.execute({name:b.trim().split(/\s+/).slice(0,6).join(" ")});if(!j.ok)return{error:j.error};let k=j.path,l=(0,c.resolve)("AddRepositoryUseCase"),m=await l.execute({path:k}),n=f+b.trim(),o=await e({description:n,repositoryPath:k,attachments:d,agentType:g,model:h,fast:a.fast});if(o.error)return{error:o.error};return{feature:o.feature,repository:m,repositoryPath:k}}catch(a){return{error:a instanceof Error?a.message:"Failed to create project"}}}async function h(a){if(!a.description?.trim())return{error:"Description is required"};try{let b=(0,c.resolve)("CreateApplicationUseCase"),d=await b.execute({description:a.description.trim(),agentType:a.agentType,modelOverride:a.modelOverride,initialPrompt:a.initialPrompt});return{application:d.application,repositoryPath:d.repositoryPath}}catch(a){return{error:a instanceof Error?a.message:"Failed to create application"}}}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"4046ecfb670d85e0a2518210bae133faf9620ddeee",null),a.s(["createProjectAndFeature",()=>g],77710),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"4000bf86bcc6233c0b1d43d51cda477c690405e763",null),a.s(["createApplication",()=>h],45395)},73474,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(33841),j=a.i(2804),k=a.i(68378),l=a.i(68670),m=a.i(85321),n=a.i(77710),o=a.i(45395),p=a.i(95072);a.s([],79352),a.i(79352),a.s(["004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6",()=>e.pickFolder,"005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6",()=>b.getAllAgentModels,"00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36",()=>c.checkAllAgentsStatus,"00e9dfbd6e5b8c8316129cccf71f306dc290962023",()=>g.listGitHubOrganizations,"4000bf86bcc6233c0b1d43d51cda477c690405e763",()=>o.createApplication,"402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b",()=>l.stopDeployment,"4046ecfb670d85e0a2518210bae133faf9620ddeee",()=>n.createProjectAndFeature,"404906a4301ca24858fb818b20ff67306a5dc37445",()=>m.getDeploymentStatus,"40517bd2ea0c40e78818124ff2130655a9f052592a",()=>h.importGitHubRepository,"405e941bd11cdaf10efa56eaa45557bbf7f5bc8405",()=>j.deployRepository,"408cf4dae7f80a94ca468c87ca40846ac825a3c162",()=>p.deleteApplication,"40e67621a4b03951ac4595cf608b8d72e4c3c9c694",()=>f.listGitHubRepositories,"40f5248cb2ab52f92e90950166adab8424e8aceeae",()=>i.deployFeature,"40ff297753e74d45aeecb03f3360e9138b9bf4a81a",()=>k.deployApplication,"602d47346bf416279937e58a8da1bd2f5190a7bc16",()=>d.updateAgentAndModel],73474)}];
30
+ `;async function g(a){let{description:b,attachments:d,agentType:g,model:h}=a;if(!b?.trim())return{error:"Description is required"};try{let i=(0,c.resolve)("CreateProjectUseCase"),j=await i.execute({name:b.trim().split(/\s+/).slice(0,6).join(" ")});if(!j.ok)return{error:j.error};let k=j.path,l=(0,c.resolve)("AddRepositoryUseCase"),m=await l.execute({path:k}),n=f+b.trim(),o=await e({description:n,repositoryPath:k,attachments:d,agentType:g,model:h,fast:a.fast});if(o.error)return{error:o.error};return{feature:o.feature,repository:m,repositoryPath:k}}catch(a){return{error:a instanceof Error?a.message:"Failed to create project"}}}async function h(a){if(!a.description?.trim())return{error:"Description is required"};try{let b=(0,c.resolve)("CreateApplicationUseCase"),d=await b.execute({description:a.description.trim(),agentType:a.agentType,modelOverride:a.modelOverride,initialPrompt:a.initialPrompt});return{application:d.application,repositoryPath:d.repositoryPath}}catch(a){return{error:a instanceof Error?a.message:"Failed to create application"}}}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"401fd96509b2150c7fc78d04070496418625ad3bb8",null),a.s(["createProjectAndFeature",()=>g],77710),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"40e2b1ed706b39956f9d1c0c7231efa9d7c4c0760a",null),a.s(["createApplication",()=>h],45395)},73474,a=>{"use strict";var b=a.i(23504),c=a.i(8115),d=a.i(27900),e=a.i(12513),f=a.i(73101),g=a.i(54775),h=a.i(65324),i=a.i(33841),j=a.i(2804),k=a.i(68378),l=a.i(68670),m=a.i(85321),n=a.i(77710),o=a.i(45395),p=a.i(95072);a.s([],79352),a.i(79352),a.s(["000210f631a169a481783b753fc8f8011e3739dafa",()=>b.getAllAgentModels,"004d43de802f3eded3f61d423d4f0aeb5e4942c679",()=>c.checkAllAgentsStatus,"00d7abf076433b9b7ad65f140828f000e60b100ef4",()=>g.listGitHubOrganizations,"00ebfc5b8f236df56743159162d19f9853e21daf71",()=>e.pickFolder,"4004cdb7a983c2b2e8118d003269c00b8ca8328770",()=>f.listGitHubRepositories,"4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6",()=>k.deployApplication,"401fd96509b2150c7fc78d04070496418625ad3bb8",()=>n.createProjectAndFeature,"406a8f4dd973018b040e39bcf5a54ab1d632e55520",()=>h.importGitHubRepository,"40b8ce83c1d49acef485ad48493fec9a73813972ee",()=>p.deleteApplication,"40cda6828bcd7caf3c94b1d714873a18189513dfeb",()=>m.getDeploymentStatus,"40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119",()=>l.stopDeployment,"40de173f92137f456a64448e1d39e9737079d5b8d9",()=>j.deployRepository,"40e2b1ed706b39956f9d1c0c7231efa9d7c4c0760a",()=>o.createApplication,"40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c",()=>i.deployFeature,"6064f52ade385fbcce8be48cde9418c50671688a97",()=>d.updateAgentAndModel],73474)}];
31
31
 
32
32
  //# sourceMappingURL=src_presentation_web_77dadf68._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/delete-application.ts","../../../../../../../src/presentation/web/app/actions/create-project-and-feature.ts","../../../../../../../src/presentation/web/app/actions/compose-user-input.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/app/actions/create-application.ts","../../../../../../../src/presentation/web/.next-internal/server/app/applications/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 { resolve } from '@/lib/server-container';\nimport type { CreateProjectUseCase } from '@shepai/core/application/use-cases/projects/create-project.use-case';\nimport type { AddRepositoryUseCase } from '@shepai/core/application/use-cases/repositories/add-repository.use-case';\nimport type { Feature, Repository } from '@shepai/core/domain/generated/output';\nimport { createFeature } from './create-feature';\n\ninterface QuickFeatureInput {\n description: string;\n attachments?: { path: string; name: string; notes?: string }[];\n agentType?: string;\n model?: string;\n fast?: boolean;\n}\n\n/**\n * Default project instructions prepended to the user's description.\n * These ensure that even a vague one-liner from a non-technical user\n * results in a well-structured, runnable React application.\n */\nconst PROJECT_PREAMBLE = `\\\n## Project Requirements\n\nBuild this as a **React application** using Vite as the build tool.\n\n### Structure\n- Initialize with \\`npm create vite@latest . -- --template react-ts\\` scaffolding\n- Organize code into clear folders: \\`src/components/\\`, \\`src/pages/\\`, \\`src/assets/\\`\n- Use TypeScript throughout\n- Include a working \\`package.json\\` with all dependencies\n\n### Design & UI\n- Create a polished, production-quality interface — not a prototype\n- Use modern CSS (CSS modules or Tailwind CSS) with thoughtful spacing, typography, and color\n- Make it fully responsive (mobile-first)\n- Add subtle micro-interactions: hover states, transitions, focus rings\n- Use professional placeholder content (realistic text, not lorem ipsum)\n- Pick a cohesive color palette and apply it consistently\n\n### Quality\n- Every component should be self-contained and reusable\n- Include proper HTML semantics and accessibility (ARIA labels, alt text, keyboard nav)\n- The app must start successfully with \\`npm install && npm run dev\\`\n\n---\n\n## What to Build\n`;\n\n/**\n * Derive a concise project name from a free-form description.\n * Takes the first handful of meaningful words — `CreateProjectUseCase`\n * will then slugify + cap length for the actual directory name.\n */\nfunction deriveProjectName(description: string): string {\n return description.trim().split(/\\s+/).slice(0, 6).join(' ');\n}\n\nexport async function createProjectAndFeature(input: QuickFeatureInput): Promise<{\n feature?: Feature;\n repository?: Repository;\n repositoryPath?: string;\n error?: string;\n}> {\n const { description, attachments, agentType, model } = input;\n\n if (!description?.trim()) {\n return { error: 'Description is required' };\n }\n\n try {\n const createProject = resolve<CreateProjectUseCase>('CreateProjectUseCase');\n const projectResult = await createProject.execute({\n name: deriveProjectName(description),\n });\n if (!projectResult.ok) {\n return { error: projectResult.error };\n }\n const projectPath = projectResult.path;\n\n const addRepo = resolve<AddRepositoryUseCase>('AddRepositoryUseCase');\n const repository = await addRepo.execute({ path: projectPath });\n\n // Enrich the user's prompt with project-quality instructions\n const enrichedDescription = PROJECT_PREAMBLE + description.trim();\n\n const featureResult = await createFeature({\n description: enrichedDescription,\n repositoryPath: projectPath,\n attachments,\n agentType,\n model,\n fast: input.fast,\n });\n\n if (featureResult.error) {\n return { error: featureResult.error };\n }\n\n return {\n feature: featureResult.feature,\n repository,\n repositoryPath: projectPath,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create project';\n return { error: message };\n }\n}\n","interface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\nexport function composeUserInput(\n description: string,\n attachments: Attachment[] | undefined\n): string {\n if (!attachments || attachments.length === 0) {\n return description;\n }\n\n const refs = attachments\n .map((a) => (a.notes?.trim() ? `@${a.path} [Note: ${a.notes.trim()}]` : `@${a.path}`))\n .join(' ');\n return `${description}\\n\\n${refs}`;\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\nimport { composeUserInput } from './compose-user-input';\n\ninterface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n sessionId?: string;\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n /** When true, skip SDLC phases and implement directly from the prompt. */\n fast?: boolean;\n /** When true, create the feature in pending state (no agent spawned). */\n pending?: boolean;\n /** Fork repo and create PR to upstream at merge time. */\n forkAndPr?: boolean;\n /** Commit specs/evidences into the repo (default: true, auto-false when forkAndPr). */\n commitSpecs?: boolean;\n /** Enable CI watch/fix loop after push. */\n ciWatchEnabled?: boolean;\n /** Enable evidence collection after implementation. */\n enableEvidence?: boolean;\n /** Commit evidence to PR. */\n commitEvidence?: boolean;\n /** Optional agent type override for this feature run */\n agentType?: string;\n /** Optional model identifier for this feature run */\n model?: string;\n /** Sync main from remote before creating the feature branch (default: true). */\n rebaseBeforeBranch?: boolean;\n /** Inject curated skills into the feature worktree. */\n injectSkills?: boolean;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const {\n description,\n repositoryPath,\n attachments,\n sessionId,\n approvalGates,\n push,\n openPr,\n parentId,\n fast,\n pending,\n forkAndPr,\n commitSpecs,\n ciWatchEnabled,\n enableEvidence,\n commitEvidence,\n agentType,\n model,\n rebaseBeforeBranch,\n injectSkills,\n } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n ...(injectSkills != null ? { injectSkills } : {}),\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(sessionId ? { sessionId } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n ...(injectSkills != null ? { injectSkills } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateApplicationUseCase } from '@shepai/core/application/use-cases/applications/create-application.use-case';\nimport type { Application } from '@shepai/core/domain/generated/output';\n\ninterface CreateApplicationInput {\n description: string;\n agentType?: string;\n modelOverride?: string;\n /**\n * When provided, the use case ALSO sends this as the first message of\n * the application's interactive chat session — wrapped server-side\n * with the full application-creation prompt (Shep persona, mission,\n * opinionated stack, workflow, quality bar, definition of done) by\n * the IApplicationCreationPromptBuilder adapter.\n *\n * Awaiting this BEFORE the client navigates guarantees that the chat\n * page's SSR load of chat state already includes the message — it\n * renders on first paint, no extra round trip.\n */\n initialPrompt?: string;\n}\n\n/**\n * Thin server-action wrapper around CreateApplicationUseCase.\n *\n * All orchestration (slug allocation, project scaffold, app persistence,\n * prompt building, first-message dispatch) lives inside the use case so\n * every presentation layer (Web / CLI / TUI) gets identical behavior\n * from a single call.\n */\nexport async function createApplication(\n input: CreateApplicationInput\n): Promise<{ application?: Application; repositoryPath?: string; error?: string }> {\n if (!input.description?.trim()) {\n return { error: 'Description is required' };\n }\n\n try {\n const useCase = resolve<CreateApplicationUseCase>('CreateApplicationUseCase');\n const result = await useCase.execute({\n description: input.description.trim(),\n agentType: input.agentType,\n modelOverride: input.modelOverride,\n initialPrompt: input.initialPrompt,\n });\n return { application: result.application, repositoryPath: result.repositoryPath };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create application';\n return { error: message };\n }\n}\n","export {getAllAgentModels as '005c8f7974a1e1332ccaf1a75ffc775c759bbe6ef6'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '00db54cb07e16d3bce02b0ae6b0bf7f4a87d3a0d36'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '602d47346bf416279937e58a8da1bd2f5190a7bc16'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '004db1988c534ce1b59d5cf3ab2e2cdeb8d81a76f6'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '40e67621a4b03951ac4595cf608b8d72e4c3c9c694'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00e9dfbd6e5b8c8316129cccf71f306dc290962023'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '40517bd2ea0c40e78818124ff2130655a9f052592a'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '40f5248cb2ab52f92e90950166adab8424e8aceeae'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '405e941bd11cdaf10efa56eaa45557bbf7f5bc8405'} from 'ACTIONS_MODULE8'\nexport {deployApplication as '40ff297753e74d45aeecb03f3360e9138b9bf4a81a'} from 'ACTIONS_MODULE9'\nexport {stopDeployment as '402e2cf49a7bac874cea92f3c2549e65b5b57a2f8b'} from 'ACTIONS_MODULE10'\nexport {getDeploymentStatus as '404906a4301ca24858fb818b20ff67306a5dc37445'} from 'ACTIONS_MODULE11'\nexport {createProjectAndFeature as '4046ecfb670d85e0a2518210bae133faf9620ddeee'} from 'ACTIONS_MODULE12'\nexport {createApplication as '4000bf86bcc6233c0b1d43d51cda477c690405e763'} from 'ACTIONS_MODULE13'\nexport {deleteApplication as '408cf4dae7f80a94ca468c87ca40846ac825a3c162'} from 'ACTIONS_MODULE14'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/delete-application.ts","../../../../../../../src/presentation/web/app/actions/create-project-and-feature.ts","../../../../../../../src/presentation/web/app/actions/compose-user-input.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/app/actions/create-application.ts","../../../../../../../src/presentation/web/.next-internal/server/app/applications/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 { resolve } from '@/lib/server-container';\nimport type { CreateProjectUseCase } from '@shepai/core/application/use-cases/projects/create-project.use-case';\nimport type { AddRepositoryUseCase } from '@shepai/core/application/use-cases/repositories/add-repository.use-case';\nimport type { Feature, Repository } from '@shepai/core/domain/generated/output';\nimport { createFeature } from './create-feature';\n\ninterface QuickFeatureInput {\n description: string;\n attachments?: { path: string; name: string; notes?: string }[];\n agentType?: string;\n model?: string;\n fast?: boolean;\n}\n\n/**\n * Default project instructions prepended to the user's description.\n * These ensure that even a vague one-liner from a non-technical user\n * results in a well-structured, runnable React application.\n */\nconst PROJECT_PREAMBLE = `\\\n## Project Requirements\n\nBuild this as a **React application** using Vite as the build tool.\n\n### Structure\n- Initialize with \\`npm create vite@latest . -- --template react-ts\\` scaffolding\n- Organize code into clear folders: \\`src/components/\\`, \\`src/pages/\\`, \\`src/assets/\\`\n- Use TypeScript throughout\n- Include a working \\`package.json\\` with all dependencies\n\n### Design & UI\n- Create a polished, production-quality interface — not a prototype\n- Use modern CSS (CSS modules or Tailwind CSS) with thoughtful spacing, typography, and color\n- Make it fully responsive (mobile-first)\n- Add subtle micro-interactions: hover states, transitions, focus rings\n- Use professional placeholder content (realistic text, not lorem ipsum)\n- Pick a cohesive color palette and apply it consistently\n\n### Quality\n- Every component should be self-contained and reusable\n- Include proper HTML semantics and accessibility (ARIA labels, alt text, keyboard nav)\n- The app must start successfully with \\`npm install && npm run dev\\`\n\n---\n\n## What to Build\n`;\n\n/**\n * Derive a concise project name from a free-form description.\n * Takes the first handful of meaningful words — `CreateProjectUseCase`\n * will then slugify + cap length for the actual directory name.\n */\nfunction deriveProjectName(description: string): string {\n return description.trim().split(/\\s+/).slice(0, 6).join(' ');\n}\n\nexport async function createProjectAndFeature(input: QuickFeatureInput): Promise<{\n feature?: Feature;\n repository?: Repository;\n repositoryPath?: string;\n error?: string;\n}> {\n const { description, attachments, agentType, model } = input;\n\n if (!description?.trim()) {\n return { error: 'Description is required' };\n }\n\n try {\n const createProject = resolve<CreateProjectUseCase>('CreateProjectUseCase');\n const projectResult = await createProject.execute({\n name: deriveProjectName(description),\n });\n if (!projectResult.ok) {\n return { error: projectResult.error };\n }\n const projectPath = projectResult.path;\n\n const addRepo = resolve<AddRepositoryUseCase>('AddRepositoryUseCase');\n const repository = await addRepo.execute({ path: projectPath });\n\n // Enrich the user's prompt with project-quality instructions\n const enrichedDescription = PROJECT_PREAMBLE + description.trim();\n\n const featureResult = await createFeature({\n description: enrichedDescription,\n repositoryPath: projectPath,\n attachments,\n agentType,\n model,\n fast: input.fast,\n });\n\n if (featureResult.error) {\n return { error: featureResult.error };\n }\n\n return {\n feature: featureResult.feature,\n repository,\n repositoryPath: projectPath,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create project';\n return { error: message };\n }\n}\n","interface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\nexport function composeUserInput(\n description: string,\n attachments: Attachment[] | undefined\n): string {\n if (!attachments || attachments.length === 0) {\n return description;\n }\n\n const refs = attachments\n .map((a) => (a.notes?.trim() ? `@${a.path} [Note: ${a.notes.trim()}]` : `@${a.path}`))\n .join(' ');\n return `${description}\\n\\n${refs}`;\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\nimport { composeUserInput } from './compose-user-input';\n\ninterface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n sessionId?: string;\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n /** When true, skip SDLC phases and implement directly from the prompt. */\n fast?: boolean;\n /** When true, create the feature in pending state (no agent spawned). */\n pending?: boolean;\n /** Fork repo and create PR to upstream at merge time. */\n forkAndPr?: boolean;\n /** Commit specs/evidences into the repo (default: true, auto-false when forkAndPr). */\n commitSpecs?: boolean;\n /** Enable CI watch/fix loop after push. */\n ciWatchEnabled?: boolean;\n /** Enable evidence collection after implementation. */\n enableEvidence?: boolean;\n /** Commit evidence to PR. */\n commitEvidence?: boolean;\n /** Optional agent type override for this feature run */\n agentType?: string;\n /** Optional model identifier for this feature run */\n model?: string;\n /** Sync main from remote before creating the feature branch (default: true). */\n rebaseBeforeBranch?: boolean;\n /** Inject curated skills into the feature worktree. */\n injectSkills?: boolean;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const {\n description,\n repositoryPath,\n attachments,\n sessionId,\n approvalGates,\n push,\n openPr,\n parentId,\n fast,\n pending,\n forkAndPr,\n commitSpecs,\n ciWatchEnabled,\n enableEvidence,\n commitEvidence,\n agentType,\n model,\n rebaseBeforeBranch,\n injectSkills,\n } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n ...(injectSkills != null ? { injectSkills } : {}),\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(sessionId ? { sessionId } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n ...(injectSkills != null ? { injectSkills } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateApplicationUseCase } from '@shepai/core/application/use-cases/applications/create-application.use-case';\nimport type { Application } from '@shepai/core/domain/generated/output';\n\ninterface CreateApplicationInput {\n description: string;\n agentType?: string;\n modelOverride?: string;\n /**\n * When provided, the use case ALSO sends this as the first message of\n * the application's interactive chat session — wrapped server-side\n * with the full application-creation prompt (Shep persona, mission,\n * opinionated stack, workflow, quality bar, definition of done) by\n * the IApplicationCreationPromptBuilder adapter.\n *\n * Awaiting this BEFORE the client navigates guarantees that the chat\n * page's SSR load of chat state already includes the message — it\n * renders on first paint, no extra round trip.\n */\n initialPrompt?: string;\n}\n\n/**\n * Thin server-action wrapper around CreateApplicationUseCase.\n *\n * All orchestration (slug allocation, project scaffold, app persistence,\n * prompt building, first-message dispatch) lives inside the use case so\n * every presentation layer (Web / CLI / TUI) gets identical behavior\n * from a single call.\n */\nexport async function createApplication(\n input: CreateApplicationInput\n): Promise<{ application?: Application; repositoryPath?: string; error?: string }> {\n if (!input.description?.trim()) {\n return { error: 'Description is required' };\n }\n\n try {\n const useCase = resolve<CreateApplicationUseCase>('CreateApplicationUseCase');\n const result = await useCase.execute({\n description: input.description.trim(),\n agentType: input.agentType,\n modelOverride: input.modelOverride,\n initialPrompt: input.initialPrompt,\n });\n return { application: result.application, repositoryPath: result.repositoryPath };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create application';\n return { error: message };\n }\n}\n","export {getAllAgentModels as '000210f631a169a481783b753fc8f8011e3739dafa'} from 'ACTIONS_MODULE0'\nexport {checkAllAgentsStatus as '004d43de802f3eded3f61d423d4f0aeb5e4942c679'} from 'ACTIONS_MODULE1'\nexport {updateAgentAndModel as '6064f52ade385fbcce8be48cde9418c50671688a97'} from 'ACTIONS_MODULE2'\nexport {pickFolder as '00ebfc5b8f236df56743159162d19f9853e21daf71'} from 'ACTIONS_MODULE3'\nexport {listGitHubRepositories as '4004cdb7a983c2b2e8118d003269c00b8ca8328770'} from 'ACTIONS_MODULE4'\nexport {listGitHubOrganizations as '00d7abf076433b9b7ad65f140828f000e60b100ef4'} from 'ACTIONS_MODULE5'\nexport {importGitHubRepository as '406a8f4dd973018b040e39bcf5a54ab1d632e55520'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '40ef324b5c8df3d4d9f7a55860b3e1c565ff78158c'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '40de173f92137f456a64448e1d39e9737079d5b8d9'} from 'ACTIONS_MODULE8'\nexport {deployApplication as '4007e6cf85c903d65686ff4b0e96b69bb3fb8b5dd6'} from 'ACTIONS_MODULE9'\nexport {stopDeployment as '40d2b3d3f6017dff4d6be8016943a0bc41ef6d2119'} from 'ACTIONS_MODULE10'\nexport {getDeploymentStatus as '40cda6828bcd7caf3c94b1d714873a18189513dfeb'} from 'ACTIONS_MODULE11'\nexport {createProjectAndFeature as '401fd96509b2150c7fc78d04070496418625ad3bb8'} from 'ACTIONS_MODULE12'\nexport {createApplication as '40e2b1ed706b39956f9d1c0c7231efa9d7c4c0760a'} from 'ACTIONS_MODULE13'\nexport {deleteApplication as '40b8ce83c1d49acef485ad48493fec9a73813972ee'} from 'ACTIONS_MODULE14'\n"],"names":[],"mappings":"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"}