@shepai/cli 1.65.0 → 1.66.0

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 (330) hide show
  1. package/dist/packages/core/src/application/ports/output/repositories/repository-repository.interface.d.ts +1 -1
  2. package/dist/packages/core/src/application/ports/output/repositories/repository-repository.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts +62 -0
  4. package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts.map +1 -0
  5. package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.js +12 -0
  6. package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
  7. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  9. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +4 -1
  10. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  11. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +5 -2
  12. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/di/container.js +3 -0
  14. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +25 -0
  16. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts +1 -1
  17. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts.map +1 -1
  18. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.js +5 -2
  19. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  20. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +6 -2
  21. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.d.ts.map +1 -1
  22. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.js +11 -7
  23. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.js +11 -7
  25. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.d.ts.map +1 -1
  26. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.js +11 -7
  27. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts +57 -0
  28. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts.map +1 -0
  29. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.js +192 -0
  30. package/dist/packages/core/src/infrastructure/services/deployment/detect-dev-script.d.ts +26 -0
  31. package/dist/packages/core/src/infrastructure/services/deployment/detect-dev-script.d.ts.map +1 -0
  32. package/dist/packages/core/src/infrastructure/services/deployment/detect-dev-script.js +59 -0
  33. package/dist/packages/core/src/infrastructure/services/deployment/parse-port.d.ts +15 -0
  34. package/dist/packages/core/src/infrastructure/services/deployment/parse-port.d.ts.map +1 -0
  35. package/dist/packages/core/src/infrastructure/services/deployment/parse-port.js +52 -0
  36. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  37. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +13 -3
  38. package/dist/src/presentation/cli/commands/_serve.command.d.ts.map +1 -1
  39. package/dist/src/presentation/cli/commands/_serve.command.js +2 -0
  40. package/dist/src/presentation/web/app/actions/deploy-feature.d.ts +7 -0
  41. package/dist/src/presentation/web/app/actions/deploy-feature.d.ts.map +1 -0
  42. package/dist/src/presentation/web/app/actions/deploy-feature.js +28 -0
  43. package/dist/src/presentation/web/app/actions/deploy-repository.d.ts +7 -0
  44. package/dist/src/presentation/web/app/actions/deploy-repository.d.ts.map +1 -0
  45. package/dist/src/presentation/web/app/actions/deploy-repository.js +21 -0
  46. package/dist/src/presentation/web/app/actions/get-deployment-status.d.ts +3 -0
  47. package/dist/src/presentation/web/app/actions/get-deployment-status.d.ts.map +1 -0
  48. package/dist/src/presentation/web/app/actions/get-deployment-status.js +9 -0
  49. package/dist/src/presentation/web/app/actions/stop-deployment.d.ts +5 -0
  50. package/dist/src/presentation/web/app/actions/stop-deployment.d.ts.map +1 -0
  51. package/dist/src/presentation/web/app/actions/stop-deployment.js +16 -0
  52. package/dist/src/presentation/web/app/build-graph-nodes.d.ts +20 -0
  53. package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -0
  54. package/dist/src/presentation/web/app/build-graph-nodes.js +142 -0
  55. package/dist/src/presentation/web/app/page.d.ts.map +1 -1
  56. package/dist/src/presentation/web/app/page.js +2 -112
  57. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts +3 -1
  58. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
  59. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +13 -3
  60. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts +2 -0
  61. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts.map +1 -1
  62. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.js +9 -0
  63. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.d.ts +7 -0
  64. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.d.ts.map +1 -0
  65. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.js +14 -0
  66. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.d.ts +14 -0
  67. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.d.ts.map +1 -0
  68. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.js +27 -0
  69. package/dist/src/presentation/web/components/common/deployment-status-badge/index.d.ts +2 -0
  70. package/dist/src/presentation/web/components/common/deployment-status-badge/index.d.ts.map +1 -0
  71. package/dist/src/presentation/web/components/common/deployment-status-badge/index.js +1 -0
  72. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
  73. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +8 -1
  74. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  75. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +7 -1
  76. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  77. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +13 -2
  78. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.d.ts.map +1 -1
  79. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.js +12 -2
  80. package/dist/src/presentation/web/hooks/use-deploy-action.d.ts +18 -0
  81. package/dist/src/presentation/web/hooks/use-deploy-action.d.ts.map +1 -0
  82. package/dist/src/presentation/web/hooks/use-deploy-action.js +130 -0
  83. package/dist/src/presentation/web/lib/feature-flags.d.ts +1 -0
  84. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  85. package/dist/src/presentation/web/lib/feature-flags.js +1 -0
  86. package/dist/tsconfig.build.tsbuildinfo +1 -1
  87. package/package.json +1 -1
  88. package/web/.next/BUILD_ID +1 -1
  89. package/web/.next/build-manifest.json +7 -6
  90. package/web/.next/cache/.previewinfo +1 -1
  91. package/web/.next/cache/.rscinfo +1 -1
  92. package/web/.next/cache/.tsbuildinfo +1 -1
  93. package/web/.next/cache/config.json +3 -3
  94. package/web/.next/fallback-build-manifest.json +2 -2
  95. package/web/.next/prerender-manifest.json +3 -3
  96. package/web/.next/required-server-files.js +1 -1
  97. package/web/.next/required-server-files.json +1 -1
  98. package/web/.next/server/app/_global-error/page/build-manifest.json +5 -4
  99. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  100. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/_global-error.html +2 -2
  102. package/web/.next/server/app/_global-error.rsc +1 -1
  103. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  104. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  105. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  106. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  107. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  108. package/web/.next/server/app/_not-found/page/build-manifest.json +5 -4
  109. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  110. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  111. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  112. package/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  113. package/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  114. package/web/.next/server/app/page/build-manifest.json +5 -4
  115. package/web/.next/server/app/page/server-reference-manifest.json +88 -28
  116. package/web/.next/server/app/page.js +2 -2
  117. package/web/.next/server/app/page.js.nft.json +1 -1
  118. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  119. package/web/.next/server/app/skills/page/build-manifest.json +5 -4
  120. package/web/.next/server/app/skills/page/server-reference-manifest.json +62 -2
  121. package/web/.next/server/app/skills/page.js +2 -2
  122. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  123. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  124. package/web/.next/server/app/tools/page/build-manifest.json +5 -4
  125. package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  126. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  127. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/version/page/build-manifest.json +5 -4
  129. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  130. package/web/.next/server/app/version/page.js +1 -1
  131. package/web/.next/server/app/version/page.js.nft.json +1 -1
  132. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/chunks/{[root-of-the-server]__e926de65._.js → [root-of-the-server]__09413611._.js} +2 -2
  134. package/web/.next/server/chunks/{[root-of-the-server]__e926de65._.js.map → [root-of-the-server]__09413611._.js.map} +1 -1
  135. package/web/.next/server/chunks/ssr/403f9_next_dist_623b646a._.js +3 -0
  136. package/web/.next/server/chunks/ssr/403f9_next_dist_623b646a._.js.map +1 -0
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/{[root-of-the-server]__685eaa45._.js → [root-of-the-server]__248ee887._.js} +2 -2
  140. package/web/.next/server/chunks/ssr/{[root-of-the-server]__685eaa45._.js.map → [root-of-the-server]__248ee887._.js.map} +1 -1
  141. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js → server/chunks/ssr/[root-of-the-server]__249c74f6._.js} +2 -2
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +4 -0
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js.map +1 -0
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb51fac._.js +3 -0
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb51fac._.js.map +1 -0
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__c1f0f2a8._.js +3 -0
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__c1f0f2a8._.js.map +1 -0
  154. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__dd5b62cb._.js → server/chunks/ssr/[root-of-the-server]__f5830fa9._.js} +2 -2
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__f5830fa9._.js.map +1 -0
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__f648005b._.js +9 -0
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__f648005b._.js.map +1 -0
  158. package/web/.next/server/chunks/ssr/_28993370._.js +3 -0
  159. package/web/.next/server/chunks/ssr/_28993370._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/_380c6567._.js +1 -1
  161. package/web/.next/server/chunks/ssr/_380c6567._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/_45715073._.js +3 -0
  163. package/web/.next/server/chunks/ssr/{_d81184e2._.js.map → _45715073._.js.map} +1 -1
  164. package/web/.next/server/chunks/ssr/_6978d868._.js +3 -0
  165. package/web/.next/server/chunks/ssr/_6978d868._.js.map +1 -0
  166. package/web/.next/server/chunks/ssr/_85965278._.js +6 -0
  167. package/web/.next/server/chunks/ssr/_85965278._.js.map +1 -0
  168. package/web/.next/server/chunks/ssr/_c52cace8._.js +3 -0
  169. package/web/.next/server/chunks/ssr/_c52cace8._.js.map +1 -0
  170. package/web/.next/server/chunks/ssr/_ed9132c9._.js +3 -0
  171. package/web/.next/server/chunks/ssr/_ed9132c9._.js.map +1 -0
  172. package/web/.next/server/chunks/ssr/{node_modules__pnpm_87f920e7._.js → node_modules__pnpm_febcbea6._.js} +2 -2
  173. package/web/.next/server/chunks/ssr/node_modules__pnpm_febcbea6._.js.map +1 -0
  174. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js +1 -1
  177. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js.map +1 -1
  178. package/web/.next/server/middleware-build-manifest.js +5 -4
  179. package/web/.next/server/pages/500.html +2 -2
  180. package/web/.next/server/server-reference-manifest.js +1 -1
  181. package/web/.next/server/server-reference-manifest.json +118 -30
  182. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  183. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +7 -6
  184. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  185. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  186. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +5 -4
  187. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  188. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  189. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  190. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  191. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  192. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  193. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  194. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  195. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  196. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +5 -4
  197. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  198. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  199. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  200. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  201. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  202. package/web/.next/standalone/src/presentation/web/.next/server/app/page/build-manifest.json +5 -4
  203. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +88 -28
  204. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +2 -2
  205. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  206. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  207. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +5 -4
  208. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +62 -2
  209. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +2 -2
  210. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  211. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  212. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/build-manifest.json +5 -4
  213. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  214. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  215. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  216. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +5 -4
  217. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  218. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js +1 -1
  219. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  220. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  221. package/web/.next/standalone/src/presentation/web/.next/server/chunks/{[root-of-the-server]__e926de65._.js → [root-of-the-server]__09413611._.js} +2 -2
  222. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_623b646a._.js +3 -0
  223. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  224. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__685eaa45._.js → [root-of-the-server]__248ee887._.js} +2 -2
  225. package/web/.next/{server/chunks/ssr/[root-of-the-server]__fbc89707._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js} +2 -2
  226. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +4 -0
  227. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  228. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6bb51fac._.js +3 -0
  229. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  230. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
  231. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c1f0f2a8._.js +3 -0
  232. package/web/.next/{server/chunks/ssr/[root-of-the-server]__dd5b62cb._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f5830fa9._.js} +2 -2
  233. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f648005b._.js +9 -0
  234. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_28993370._.js +3 -0
  235. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_380c6567._.js +1 -1
  236. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_45715073._.js +3 -0
  237. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_6978d868._.js +3 -0
  238. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_85965278._.js +6 -0
  239. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_c52cace8._.js +3 -0
  240. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_ed9132c9._.js +3 -0
  241. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{node_modules__pnpm_87f920e7._.js → node_modules__pnpm_febcbea6._.js} +2 -2
  242. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  243. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js +1 -1
  244. package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +5 -4
  245. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  246. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  247. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +118 -30
  248. package/web/.next/standalone/src/presentation/web/app/actions/deploy-feature.ts +39 -0
  249. package/web/.next/standalone/src/presentation/web/app/actions/deploy-repository.ts +28 -0
  250. package/web/.next/standalone/src/presentation/web/app/actions/get-deployment-status.ts +16 -0
  251. package/web/.next/standalone/src/presentation/web/app/actions/stop-deployment.ts +22 -0
  252. package/web/.next/standalone/src/presentation/web/app/build-graph-nodes.ts +180 -0
  253. package/web/.next/standalone/src/presentation/web/app/page.tsx +2 -129
  254. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.stories.tsx +26 -0
  255. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +45 -1
  256. package/web/.next/standalone/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.tsx +35 -0
  257. package/web/.next/standalone/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.tsx +42 -0
  258. package/web/.next/standalone/src/presentation/web/components/common/deployment-status-badge/index.ts +1 -0
  259. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.tsx +10 -0
  260. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-drawer.tsx +9 -0
  261. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-node.tsx +43 -2
  262. package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.tsx +79 -44
  263. package/web/.next/standalone/src/presentation/web/hooks/use-deploy-action.ts +161 -0
  264. package/web/.next/standalone/src/presentation/web/lib/feature-flags.ts +1 -0
  265. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  266. package/web/.next/static/chunks/0b99eb9664d47ca7.js +1 -0
  267. package/web/.next/static/chunks/177f1dcbe83c136a.js +1 -0
  268. package/web/.next/static/chunks/41a2adc09edfffaf.js +1 -0
  269. package/web/.next/static/chunks/5054c72b1c8f5912.js +1 -0
  270. package/web/.next/static/chunks/71d2618e41d7da6d.js +1 -0
  271. package/web/.next/static/chunks/7ad36bef63f15bc6.js +1 -0
  272. package/web/.next/static/chunks/{3b941e59ac013e12.js → 87421ab1062a39b7.js} +2 -2
  273. package/web/.next/static/chunks/{21541b346dd4dd28.js → 8c60d1bd87239066.js} +1 -1
  274. package/web/.next/static/chunks/96f49affaceab206.css +2 -0
  275. package/web/.next/static/chunks/a6d1d774260fc927.js +2 -0
  276. package/web/.next/static/chunks/c7e793951b20a67f.js +1 -0
  277. package/web/.next/static/chunks/f54ff9c15fb7b383.js +1 -0
  278. package/web/.next/static/chunks/f5fb2f182ae9b015.js +1 -0
  279. package/web/.next/static/chunks/{fa8058049a43c698.js → f6766e799a69fb5d.js} +7 -7
  280. package/web/.next/static/chunks/turbopack-b6b5b4f015327a9a.js +4 -0
  281. package/web/.next/trace +1 -1
  282. package/web/.next/trace-build +1 -1
  283. package/web/.next/server/chunks/ssr/[root-of-the-server]__5e0f14e9._.js +0 -3
  284. package/web/.next/server/chunks/ssr/[root-of-the-server]__5e0f14e9._.js.map +0 -1
  285. package/web/.next/server/chunks/ssr/[root-of-the-server]__ae251147._.js +0 -3
  286. package/web/.next/server/chunks/ssr/[root-of-the-server]__ae251147._.js.map +0 -1
  287. package/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js +0 -9
  288. package/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js.map +0 -1
  289. package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +0 -4
  290. package/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js.map +0 -1
  291. package/web/.next/server/chunks/ssr/[root-of-the-server]__dd5b62cb._.js.map +0 -1
  292. package/web/.next/server/chunks/ssr/[root-of-the-server]__edca9510._.js +0 -3
  293. package/web/.next/server/chunks/ssr/[root-of-the-server]__edca9510._.js.map +0 -1
  294. package/web/.next/server/chunks/ssr/_73d14b70._.js +0 -3
  295. package/web/.next/server/chunks/ssr/_73d14b70._.js.map +0 -1
  296. package/web/.next/server/chunks/ssr/_7f386377._.js +0 -3
  297. package/web/.next/server/chunks/ssr/_7f386377._.js.map +0 -1
  298. package/web/.next/server/chunks/ssr/_d3711354._.js +0 -6
  299. package/web/.next/server/chunks/ssr/_d3711354._.js.map +0 -1
  300. package/web/.next/server/chunks/ssr/_d81184e2._.js +0 -3
  301. package/web/.next/server/chunks/ssr/node_modules__pnpm_0ce0b44d._.js +0 -3
  302. package/web/.next/server/chunks/ssr/node_modules__pnpm_0ce0b44d._.js.map +0 -1
  303. package/web/.next/server/chunks/ssr/node_modules__pnpm_87f920e7._.js.map +0 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web_components_7a0b09da._.js +0 -3
  305. package/web/.next/server/chunks/ssr/src_presentation_web_components_7a0b09da._.js.map +0 -1
  306. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__5e0f14e9._.js +0 -3
  307. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ae251147._.js +0 -3
  308. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__b6839c3f._.js +0 -9
  309. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__da0ade1f._.js +0 -4
  310. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__edca9510._.js +0 -3
  311. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_73d14b70._.js +0 -3
  312. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_7f386377._.js +0 -3
  313. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_d3711354._.js +0 -6
  314. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_d81184e2._.js +0 -3
  315. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_0ce0b44d._.js +0 -3
  316. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_7a0b09da._.js +0 -3
  317. package/web/.next/static/chunks/0c6654ec27f11c7e.js +0 -1
  318. package/web/.next/static/chunks/12c70bfd5951cf9b.js +0 -1
  319. package/web/.next/static/chunks/1887af4ad3781531.js +0 -2
  320. package/web/.next/static/chunks/233fbb89beb137e8.js +0 -1
  321. package/web/.next/static/chunks/78919481e7c5ad4f.js +0 -1
  322. package/web/.next/static/chunks/a5b6a22de303e877.css +0 -2
  323. package/web/.next/static/chunks/acdb8af5a21f1ae9.js +0 -1
  324. package/web/.next/static/chunks/af7a5bcb7c49e46e.js +0 -1
  325. package/web/.next/static/chunks/be784143669bb992.js +0 -1
  326. package/web/.next/static/chunks/turbopack-eb24b869babb34b4.js +0 -4
  327. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__fbc89707._.js.map → [root-of-the-server]__249c74f6._.js.map} +0 -0
  328. /package/web/.next/static/{zuqVLdEhCDdtLqCuWgUm5 → 5RMUwLfTnzL0pvJOwfuxg}/_buildManifest.js +0 -0
  329. /package/web/.next/static/{zuqVLdEhCDdtLqCuWgUm5 → 5RMUwLfTnzL0pvJOwfuxg}/_clientMiddlewareManifest.json +0 -0
  330. /package/web/.next/static/{zuqVLdEhCDdtLqCuWgUm5 → 5RMUwLfTnzL0pvJOwfuxg}/_ssgManifest.js +0 -0
@@ -1,15 +1,25 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { Loader2, Trash2 } from 'lucide-react';
3
+ import { Loader2, Trash2, Play, Square } from 'lucide-react';
4
4
  import { BaseDrawer } from '../../common/base-drawer/index.js';
5
5
  import { DrawerTitle, DrawerDescription } from '../../ui/drawer.js';
6
6
  import { Button } from '../../ui/button.js';
7
7
  import { Separator } from '../../ui/separator.js';
8
8
  import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from '../../ui/alert-dialog.js';
9
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../ui/tooltip.js';
9
10
  import { OpenActionMenu } from '../../common/open-action-menu/index.js';
11
+ import { ActionButton } from '../../common/action-button/index.js';
10
12
  import { useFeatureActions } from '../../common/feature-drawer/use-feature-actions.js';
13
+ import { DeploymentStatusBadge } from '../../common/deployment-status-badge/index.js';
14
+ import { useDeployAction } from '../../../hooks/use-deploy-action.js';
15
+ import { featureFlags } from '../../../lib/feature-flags.js';
11
16
  export function ReviewDrawerShell({ open, onClose, featureName, featureDescription, featureId, repositoryPath, branch, specPath, onDelete, isDeleting, children, }) {
12
17
  const actionsInput = repositoryPath && branch ? { repositoryPath, branch, specPath } : null;
13
18
  const actions = useFeatureActions(actionsInput);
14
- return (_jsxs(BaseDrawer, { open: open, onClose: onClose, size: "md", modal: false, "data-testid": "review-drawer", header: _jsxs(_Fragment, { children: [_jsxs("div", { "data-testid": "feature-drawer-header", children: [_jsx(DrawerTitle, { children: featureName }), featureDescription ? (_jsx(DrawerDescription, { children: featureDescription })) : featureId ? (_jsx(DrawerDescription, { className: "sr-only", children: featureId })) : null] }), actionsInput ? (_jsxs("div", { className: "flex items-center gap-2 pt-2", children: [_jsx(OpenActionMenu, { actions: actions, repositoryPath: actionsInput.repositoryPath, showSpecs: !!specPath }), onDelete && featureId ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "bg-border mx-1 h-4 w-px" }), _jsxs(AlertDialog, { children: [_jsx(AlertDialogTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": "Delete feature", disabled: isDeleting, className: "text-muted-foreground hover:text-destructive", "data-testid": "review-drawer-delete", children: isDeleting ? (_jsx(Loader2, { className: "size-4 animate-spin" })) : (_jsx(Trash2, { className: "size-4" })) }) }), _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Delete feature?" }), _jsxs(AlertDialogDescription, { children: ["This will permanently delete ", _jsx("strong", { children: featureName }), " (", featureId, "). This action cannot be undone."] })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { disabled: isDeleting, children: "Cancel" }), _jsx(AlertDialogAction, { variant: "destructive", disabled: isDeleting, onClick: () => onDelete(featureId), children: isDeleting ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }), "Deleting\u2026"] })) : ('Delete') })] })] })] })] })) : null] })) : null] }), children: [_jsx(Separator, {}), _jsx("div", { className: "flex min-h-0 flex-1 flex-col", children: children })] }));
19
+ const deployTargetInput = featureId && repositoryPath && branch
20
+ ? { targetId: featureId, targetType: 'feature', repositoryPath, branch }
21
+ : null;
22
+ const deployAction = useDeployAction(deployTargetInput);
23
+ const isDeploymentActive = deployAction.status === 'Booting' || deployAction.status === 'Ready';
24
+ return (_jsxs(BaseDrawer, { open: open, onClose: onClose, size: "md", modal: false, "data-testid": "review-drawer", header: _jsxs(_Fragment, { children: [_jsxs("div", { "data-testid": "feature-drawer-header", children: [_jsx(DrawerTitle, { children: featureName }), featureDescription ? (_jsx(DrawerDescription, { children: featureDescription })) : featureId ? (_jsx(DrawerDescription, { className: "sr-only", children: featureId })) : null] }), actionsInput ? (_jsxs("div", { className: "flex items-center gap-2 pt-2", children: [_jsx(OpenActionMenu, { actions: actions, repositoryPath: actionsInput.repositoryPath, showSpecs: !!specPath }), featureFlags.envDeploy && deployTargetInput ? (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { children: _jsx(ActionButton, { label: isDeploymentActive ? 'Stop Dev Server' : 'Start Dev Server', onClick: isDeploymentActive ? deployAction.stop : deployAction.deploy, loading: deployAction.deployLoading || deployAction.stopLoading, error: !!deployAction.deployError, icon: isDeploymentActive ? Square : Play, iconOnly: true, variant: "outline", size: "icon-sm" }) }) }), _jsx(TooltipContent, { children: isDeploymentActive ? 'Stop Dev Server' : 'Start Dev Server' })] }) })) : null, featureFlags.envDeploy && isDeploymentActive ? (_jsx(DeploymentStatusBadge, { status: deployAction.status, url: deployAction.url })) : null, onDelete && featureId ? (_jsxs(AlertDialog, { children: [_jsx(AlertDialogTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": "Delete feature", disabled: isDeleting, className: "text-muted-foreground hover:text-destructive ml-auto", "data-testid": "review-drawer-delete", children: isDeleting ? (_jsx(Loader2, { className: "size-4 animate-spin" })) : (_jsx(Trash2, { className: "size-4" })) }) }), _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Delete feature?" }), _jsxs(AlertDialogDescription, { children: ["This will permanently delete ", _jsx("strong", { children: featureName }), " (", featureId, "). This action cannot be undone."] })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { disabled: isDeleting, children: "Cancel" }), _jsx(AlertDialogAction, { variant: "destructive", disabled: isDeleting, onClick: () => onDelete(featureId), children: isDeleting ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }), "Deleting\u2026"] })) : ('Delete') })] })] })] })) : null] })) : null] }), children: [_jsx(Separator, {}), _jsx("div", { className: "flex min-h-0 flex-1 flex-col", children: children })] }));
15
25
  }
@@ -0,0 +1,18 @@
1
+ import type { DeploymentState } from '../../../../packages/core/src/domain/generated/output.js';
2
+ export interface DeployActionInput {
3
+ targetId: string;
4
+ targetType: 'feature' | 'repository';
5
+ repositoryPath: string;
6
+ branch?: string;
7
+ }
8
+ export interface DeployActionState {
9
+ deploy: () => Promise<void>;
10
+ stop: () => Promise<void>;
11
+ deployLoading: boolean;
12
+ stopLoading: boolean;
13
+ deployError: string | null;
14
+ status: DeploymentState | null;
15
+ url: string | null;
16
+ }
17
+ export declare function useDeployAction(input: DeployActionInput | null): DeployActionState;
18
+ //# sourceMappingURL=use-deploy-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-deploy-action.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-deploy-action.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAM5E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,GAAG,YAAY,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAKD,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,iBAAiB,CAmIlF"}
@@ -0,0 +1,130 @@
1
+ 'use client';
2
+ import { useState, useCallback, useRef, useEffect } from 'react';
3
+ import { deployFeature } from '../app/actions/deploy-feature.js';
4
+ import { deployRepository } from '../app/actions/deploy-repository.js';
5
+ import { stopDeployment } from '../app/actions/stop-deployment.js';
6
+ import { getDeploymentStatus } from '../app/actions/get-deployment-status.js';
7
+ const ERROR_CLEAR_DELAY = 5000;
8
+ const POLL_INTERVAL = 3000;
9
+ export function useDeployAction(input) {
10
+ const [deployLoading, setDeployLoading] = useState(false);
11
+ const [stopLoading, setStopLoading] = useState(false);
12
+ const [deployError, setDeployError] = useState(null);
13
+ const [status, setStatus] = useState(null);
14
+ const [url, setUrl] = useState(null);
15
+ const errorTimerRef = useRef(null);
16
+ const pollIntervalRef = useRef(null);
17
+ const mountedRef = useRef(true);
18
+ // Track mounted state
19
+ useEffect(() => {
20
+ mountedRef.current = true;
21
+ return () => {
22
+ mountedRef.current = false;
23
+ };
24
+ }, []);
25
+ // Cleanup on unmount
26
+ useEffect(() => {
27
+ return () => {
28
+ if (errorTimerRef.current)
29
+ clearTimeout(errorTimerRef.current);
30
+ if (pollIntervalRef.current)
31
+ clearInterval(pollIntervalRef.current);
32
+ };
33
+ }, []);
34
+ const stopPolling = useCallback(() => {
35
+ if (pollIntervalRef.current) {
36
+ clearInterval(pollIntervalRef.current);
37
+ pollIntervalRef.current = null;
38
+ }
39
+ }, []);
40
+ const startPolling = useCallback((targetId) => {
41
+ stopPolling();
42
+ pollIntervalRef.current = setInterval(async () => {
43
+ if (!mountedRef.current) {
44
+ stopPolling();
45
+ return;
46
+ }
47
+ const result = await getDeploymentStatus(targetId);
48
+ if (!mountedRef.current)
49
+ return;
50
+ if (!result || result.state === 'Stopped') {
51
+ setStatus(null);
52
+ setUrl(null);
53
+ stopPolling();
54
+ }
55
+ else {
56
+ setStatus(result.state);
57
+ setUrl(result.url);
58
+ }
59
+ }, POLL_INTERVAL);
60
+ }, [stopPolling]);
61
+ const handleDeploy = useCallback(async () => {
62
+ if (!input || deployLoading)
63
+ return;
64
+ if (errorTimerRef.current)
65
+ clearTimeout(errorTimerRef.current);
66
+ setDeployLoading(true);
67
+ setDeployError(null);
68
+ try {
69
+ const result = input.targetType === 'feature'
70
+ ? await deployFeature(input.targetId)
71
+ : await deployRepository(input.repositoryPath);
72
+ if (!mountedRef.current)
73
+ return;
74
+ if (!result.success) {
75
+ const errorMessage = result.error ?? 'An unexpected error occurred';
76
+ setDeployError(errorMessage);
77
+ errorTimerRef.current = setTimeout(() => setDeployError(null), ERROR_CLEAR_DELAY);
78
+ }
79
+ else {
80
+ setStatus(result.state ?? null);
81
+ setUrl(null);
82
+ startPolling(input.targetId);
83
+ }
84
+ }
85
+ catch (err) {
86
+ if (!mountedRef.current)
87
+ return;
88
+ const errorMessage = err instanceof Error ? err.message : 'An unexpected error occurred';
89
+ setDeployError(errorMessage);
90
+ errorTimerRef.current = setTimeout(() => setDeployError(null), ERROR_CLEAR_DELAY);
91
+ }
92
+ finally {
93
+ if (mountedRef.current) {
94
+ setDeployLoading(false);
95
+ }
96
+ }
97
+ }, [input, deployLoading, startPolling]);
98
+ const handleStop = useCallback(async () => {
99
+ if (!input || stopLoading)
100
+ return;
101
+ setStopLoading(true);
102
+ try {
103
+ const result = await stopDeployment(input.targetId);
104
+ if (!mountedRef.current)
105
+ return;
106
+ if (result.success) {
107
+ stopPolling();
108
+ setStatus(null);
109
+ setUrl(null);
110
+ }
111
+ }
112
+ catch {
113
+ // Stop errors are non-critical; process may have already exited
114
+ }
115
+ finally {
116
+ if (mountedRef.current) {
117
+ setStopLoading(false);
118
+ }
119
+ }
120
+ }, [input, stopLoading, stopPolling]);
121
+ return {
122
+ deploy: handleDeploy,
123
+ stop: handleStop,
124
+ deployLoading,
125
+ stopLoading,
126
+ deployError,
127
+ status,
128
+ url,
129
+ };
130
+ }
@@ -6,5 +6,6 @@
6
6
  */
7
7
  export declare const featureFlags: {
8
8
  readonly skills: boolean;
9
+ readonly envDeploy: boolean;
9
10
  };
10
11
  //# sourceMappingURL=feature-flags.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/feature-flags.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,YAAY;;CAEf,CAAC"}
1
+ {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/feature-flags.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,YAAY;;;CAGf,CAAC"}
@@ -9,4 +9,5 @@ function isEnabled(envVar) {
9
9
  }
10
10
  export const featureFlags = {
11
11
  skills: isEnabled(process.env.NEXT_PUBLIC_FLAG_SKILLS),
12
+ envDeploy: isEnabled(process.env.NEXT_PUBLIC_FLAG_ENV_DEPLOY),
12
13
  };