@shepai/cli 1.73.0 → 1.73.1-pr225.4fad6ad

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 (269) hide show
  1. package/dist/packages/core/src/application/ports/output/agents/agent-executor-provider.interface.d.ts +1 -1
  2. package/dist/packages/core/src/application/ports/output/agents/agent-executor-provider.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  4. package/dist/packages/core/src/infrastructure/di/container.js +2 -1
  5. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.d.ts +4 -2
  6. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.js +8 -4
  8. package/dist/packages/core/src/infrastructure/services/agents/common/agent-runner.service.js +1 -1
  9. package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.js +1 -1
  10. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +1 -1
  11. package/dist/src/presentation/web/app/actions/create-feature.d.ts +1 -2
  12. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  13. package/dist/src/presentation/web/app/actions/create-feature.js +6 -10
  14. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  15. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +9 -0
  16. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +1 -2
  17. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  18. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +4 -9
  19. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +7 -8
  20. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  21. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +12 -15
  22. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  23. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +21 -0
  24. package/dist/src/presentation/web/hooks/use-agent-events.d.ts.map +1 -1
  25. package/dist/src/presentation/web/hooks/use-agent-events.js +3 -2
  26. package/dist/src/presentation/web/hooks/use-deploy-action.d.ts.map +1 -1
  27. package/dist/src/presentation/web/hooks/use-deploy-action.js +2 -10
  28. package/dist/tsconfig.build.tsbuildinfo +1 -1
  29. package/package.json +1 -1
  30. package/web/.next/BUILD_ID +1 -1
  31. package/web/.next/build-manifest.json +2 -2
  32. package/web/.next/cache/.previewinfo +1 -1
  33. package/web/.next/cache/.rscinfo +1 -1
  34. package/web/.next/cache/.tsbuildinfo +1 -1
  35. package/web/.next/cache/config.json +3 -3
  36. package/web/.next/fallback-build-manifest.json +2 -2
  37. package/web/.next/prerender-manifest.json +3 -3
  38. package/web/.next/required-server-files.js +1 -1
  39. package/web/.next/required-server-files.json +1 -1
  40. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +45 -30
  41. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
  42. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +51 -36
  45. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -3
  46. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +41 -26
  49. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -3
  50. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +45 -30
  53. package/web/.next/server/app/(dashboard)/create/page.js +3 -3
  54. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +51 -36
  57. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -3
  58. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +41 -26
  61. package/web/.next/server/app/(dashboard)/page.js +3 -3
  62. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +41 -26
  65. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -3
  66. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  67. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  68. package/web/.next/server/app/_global-error.html +2 -2
  69. package/web/.next/server/app/_global-error.rsc +1 -1
  70. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  71. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  72. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  73. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  74. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  75. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  76. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  77. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  79. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  80. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  82. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  83. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  85. package/web/.next/server/app/version/page.js.nft.json +1 -1
  86. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  88. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  89. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +3 -0
  90. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -0
  91. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +3 -0
  92. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -0
  93. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  94. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
  95. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  96. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  97. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
  98. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  99. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +1 -1
  100. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  101. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  102. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  103. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +1 -1
  104. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  105. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  107. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  109. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  111. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/{_dee726e3._.js → _49f6575f._.js} +2 -2
  113. package/web/.next/server/chunks/ssr/{_dee726e3._.js.map → _49f6575f._.js.map} +1 -1
  114. package/web/.next/server/chunks/ssr/{_1978f325._.js → _5ee4f5a7._.js} +2 -2
  115. package/web/.next/server/chunks/ssr/_5ee4f5a7._.js.map +1 -0
  116. package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  117. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/_6e08ce21._.js +3 -0
  119. package/web/.next/server/chunks/ssr/_6e08ce21._.js.map +1 -0
  120. package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  121. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  123. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +6 -0
  125. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js.map +1 -0
  126. package/web/.next/server/chunks/ssr/{src_presentation_web_2b91e4ec._.js → src_presentation_web_30d7eeda._.js} +2 -2
  127. package/web/.next/server/chunks/ssr/{src_presentation_web_5bcc1537._.js.map → src_presentation_web_30d7eeda._.js.map} +1 -1
  128. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +6 -0
  129. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js.map +1 -0
  130. package/web/.next/server/chunks/ssr/{src_presentation_web_5bcc1537._.js → src_presentation_web_565a14f8._.js} +2 -2
  131. package/web/.next/server/chunks/ssr/{src_presentation_web_2b91e4ec._.js.map → src_presentation_web_565a14f8._.js.map} +1 -1
  132. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +3 -0
  133. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -0
  134. package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js +3 -0
  135. package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js.map +1 -0
  136. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  137. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  138. package/web/.next/server/pages/500.html +2 -2
  139. package/web/.next/server/server-reference-manifest.js +1 -1
  140. package/web/.next/server/server-reference-manifest.json +183 -126
  141. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  142. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  143. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  144. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  145. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +45 -30
  146. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
  147. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  148. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  149. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +51 -36
  150. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -3
  151. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  152. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  153. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +41 -26
  154. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -3
  155. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  156. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  157. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +45 -30
  158. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +3 -3
  159. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  160. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  161. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +51 -36
  162. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -3
  163. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  164. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  165. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +41 -26
  166. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +3 -3
  167. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  168. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  169. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +41 -26
  170. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -3
  171. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  172. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  173. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  174. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  175. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  176. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  177. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  178. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  179. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  180. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  181. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  182. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  183. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  184. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  185. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  186. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  187. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  188. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  189. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  190. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  191. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  192. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  193. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +3 -0
  194. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +3 -0
  195. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  196. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  197. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  198. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  199. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  200. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  201. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  202. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  203. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  204. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  205. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_dee726e3._.js → _49f6575f._.js} +2 -2
  206. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_1978f325._.js → _5ee4f5a7._.js} +2 -2
  207. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  208. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_6e08ce21._.js +3 -0
  209. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  210. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  211. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +6 -0
  212. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{src_presentation_web_2b91e4ec._.js → src_presentation_web_30d7eeda._.js} +2 -2
  213. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +6 -0
  214. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{src_presentation_web_5bcc1537._.js → src_presentation_web_565a14f8._.js} +2 -2
  215. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +3 -0
  216. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js +3 -0
  217. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  218. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  219. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  220. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +183 -126
  221. package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +7 -18
  222. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx +11 -0
  223. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +16 -15
  224. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +12 -31
  225. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +25 -0
  226. package/web/.next/standalone/src/presentation/web/hooks/use-agent-events.ts +3 -2
  227. package/web/.next/standalone/src/presentation/web/hooks/use-deploy-action.ts +2 -10
  228. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  229. package/web/.next/static/chunks/{e69d79bd3f19dec8.js → 0a91a62af4813cbe.js} +1 -1
  230. package/web/.next/static/chunks/0c8d4bdd95ae45e7.js +1 -0
  231. package/web/.next/static/chunks/{c92e1360ada8ca94.js → 1f5c93a8b939416d.js} +2 -2
  232. package/web/.next/static/chunks/{9cbb42a6bd516d3b.js → 37c95269aa36cf41.js} +1 -1
  233. package/web/.next/static/chunks/{d7e0cd32364a8d76.js → 40baf05ad602fee7.js} +1 -1
  234. package/web/.next/static/chunks/4fbd01af2bfc46a0.js +1 -0
  235. package/web/.next/static/chunks/{8959112899679e25.js → a539a922a7ba0851.js} +1 -1
  236. package/web/.next/static/chunks/{6691ad02dc1efd1f.js → b2084d9c2260b140.js} +1 -1
  237. package/web/.next/static/chunks/b47db04e0dd7ff83.js +1 -0
  238. package/web/.next/static/chunks/ed768e1443066c95.js +1 -0
  239. package/web/.next/trace +1 -1
  240. package/web/.next/trace-build +1 -1
  241. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js +0 -3
  242. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js.map +0 -1
  243. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js +0 -3
  244. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js.map +0 -1
  245. package/web/.next/server/chunks/ssr/_1978f325._.js.map +0 -1
  246. package/web/.next/server/chunks/ssr/_250a63ae._.js +0 -3
  247. package/web/.next/server/chunks/ssr/_250a63ae._.js.map +0 -1
  248. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js +0 -3
  249. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js.map +0 -1
  250. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +0 -3
  251. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +0 -1
  252. package/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js +0 -8
  253. package/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js.map +0 -1
  254. package/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js +0 -8
  255. package/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js.map +0 -1
  256. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js +0 -3
  257. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js +0 -3
  258. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_250a63ae._.js +0 -3
  259. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js +0 -3
  260. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +0 -3
  261. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js +0 -8
  262. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js +0 -8
  263. package/web/.next/static/chunks/15ceb197ec725da2.js +0 -1
  264. package/web/.next/static/chunks/7bff5fbcbf157df5.js +0 -1
  265. package/web/.next/static/chunks/8f508ef906cbf0fa.js +0 -1
  266. package/web/.next/static/chunks/c5603ed8a95d460d.js +0 -1
  267. /package/web/.next/static/{1AvkeBASQdtzZt9cm9UYg → Xj_ABhg1MoIBpmI-Qeezj}/_buildManifest.js +0 -0
  268. /package/web/.next/static/{1AvkeBASQdtzZt9cm9UYg → Xj_ABhg1MoIBpmI-Qeezj}/_clientMiddlewareManifest.json +0 -0
  269. /package/web/.next/static/{1AvkeBASQdtzZt9cm9UYg → Xj_ABhg1MoIBpmI-Qeezj}/_ssgManifest.js +0 -0
@@ -16,8 +16,7 @@ interface ApprovalGates {
16
16
  }
17
17
 
18
18
  interface CreateFeatureInput {
19
- name: string;
20
- description?: string;
19
+ description: string;
21
20
  repositoryPath: string;
22
21
  attachments?: Attachment[];
23
22
  approvalGates?: {
@@ -30,16 +29,8 @@ interface CreateFeatureInput {
30
29
  parentId?: string;
31
30
  }
32
31
 
33
- function composeUserInput(
34
- name: string,
35
- description: string | undefined,
36
- attachments: Attachment[] | undefined
37
- ): string {
38
- let userInput = `Feature: ${name}`;
39
-
40
- if (description) {
41
- userInput += `\n\n${description}`;
42
- }
32
+ function composeUserInput(description: string, attachments: Attachment[] | undefined): string {
33
+ let userInput = description;
43
34
 
44
35
  if (attachments && attachments.length > 0) {
45
36
  const paths = attachments.map((a) => `- ${a.path}`).join('\n');
@@ -52,18 +43,17 @@ function composeUserInput(
52
43
  export async function createFeature(
53
44
  input: CreateFeatureInput
54
45
  ): Promise<{ feature?: Feature; error?: string }> {
55
- const { name, description, repositoryPath, attachments, approvalGates, push, openPr, parentId } =
56
- input;
46
+ const { description, repositoryPath, attachments, approvalGates, push, openPr, parentId } = input;
57
47
 
58
- if (!name?.trim()) {
59
- return { error: 'name is required' };
48
+ if (!description?.trim()) {
49
+ return { error: 'description is required' };
60
50
  }
61
51
 
62
52
  if (!repositoryPath?.trim()) {
63
53
  return { error: 'repositoryPath is required' };
64
54
  }
65
55
 
66
- const userInput = composeUserInput(name, description, attachments);
56
+ const userInput = composeUserInput(description, attachments);
67
57
  const gates: ApprovalGates = {
68
58
  allowPrd: approvalGates?.allowPrd ?? false,
69
59
  allowPlan: approvalGates?.allowPlan ?? false,
@@ -81,7 +71,6 @@ export async function createFeature(
81
71
  push: push ?? false,
82
72
  openPr: openPr ?? false,
83
73
  ...(parentId ? { parentId } : {}),
84
- name,
85
74
  description,
86
75
  });
87
76
 
@@ -135,6 +135,17 @@ export function FeatureDrawerClient({ view: initialView }: FeatureDrawerClientPr
135
135
  const pathname = usePathname();
136
136
  const isOpen = pathname.startsWith('/feature/');
137
137
  const isOpenRef = useRef(isOpen);
138
+ const wasOpenRef = useRef(isOpen);
139
+
140
+ // When the drawer re-opens, force a server refresh so the view is always fresh.
141
+ // SSE skips router.refresh() while the drawer is closed, so data can go stale.
142
+ useEffect(() => {
143
+ if (isOpen && !wasOpenRef.current) {
144
+ router.refresh();
145
+ }
146
+ wasOpenRef.current = isOpen;
147
+ }, [isOpen, router]);
148
+
138
149
  isOpenRef.current = isOpen;
139
150
 
140
151
  const onClose = useCallback(() => {
@@ -16,8 +16,7 @@ import { DrawerCloseGuardProvider } from '@/hooks/drawer-close-guard';
16
16
  * create a new feature in the Control Center.
17
17
  *
18
18
  * ### Form sections
19
- * - **Feature Name** (required) — text input, submit is disabled when empty
20
- * - **Description** (optional) — multi-line textarea
19
+ * - **Description** (required) — multi-line textarea, submit is disabled when empty
21
20
  * - **Auto Approve** — Tri-state parent checkbox with 3 child checkboxes (PRD, Plan, Merge).
22
21
  * Parent shows indeterminate when some children are selected, checks/unchecks all on click.
23
22
  * - **Attachments** (optional) — native OS file picker with extension-based icon system:
@@ -29,12 +28,12 @@ import { DrawerCloseGuardProvider } from '@/hooks/drawer-close-guard';
29
28
  * |------|------|-------------|
30
29
  * | `open` | `boolean` | Controls drawer visibility |
31
30
  * | `onClose` | `() => void` | Called on dismiss (close button, cancel, or backdrop) |
32
- * | `onSubmit` | `(data: FeatureCreatePayload) => void` | Called with `{ name, description, attachments, repositoryPath, approvalGates }` |
31
+ * | `onSubmit` | `(data: FeatureCreatePayload) => void` | Called with `{ description, attachments, repositoryPath, approvalGates }` |
33
32
  * | `repositoryPath` | `string` | Repository path (mandatory) included in the submitted data |
34
33
  *
35
34
  * ### Behavior
36
- * - Form resets (name, description, attachments, checkboxes) when the drawer closes
37
- * - Submit button is disabled when name is empty
35
+ * - Form resets (description, attachments, checkboxes) when the drawer closes
36
+ * - Submit button is disabled when description is empty
38
37
  * - `approvalGates` always included: `{ allowPrd, allowPlan, allowMerge }` (all false by default)
39
38
  * - Non-modal (`modal={false}`) — canvas stays interactive behind the drawer
40
39
  * - Fixed width: 448px (`w-xl`) — matches review drawers (PRD, Plan, Merge)
@@ -66,7 +65,7 @@ const meta: Meta<typeof FeatureCreateDrawer> = {
66
65
  },
67
66
  onSubmit: {
68
67
  description:
69
- 'Callback fired with `FeatureCreatePayload` when the form is submitted. Receives `{ name, description, attachments, repositoryPath, approvalGates }`.',
68
+ 'Callback fired with `FeatureCreatePayload` when the form is submitted. Receives `{ description, attachments, repositoryPath, approvalGates }`.',
70
69
  },
71
70
  repositoryPath: {
72
71
  control: 'text',
@@ -131,7 +130,7 @@ export const Default: Story = {
131
130
  };
132
131
 
133
132
  /**
134
- * Pre-filled form — click to open, then name and description are typed in.
133
+ * Pre-filled form — click to open, then description is typed in.
135
134
  * Demonstrates the form in a "ready to submit" state.
136
135
  */
137
136
  export const PreFilled: Story = {
@@ -142,10 +141,10 @@ export const PreFilled: Story = {
142
141
 
143
142
  // Drawer renders in a portal — query from document body
144
143
  const body = within(canvasElement.ownerDocument.body);
145
- const nameInput = await body.findByPlaceholderText('e.g. GitHub OAuth Login');
146
- const descInput = body.getByPlaceholderText('Describe what this feature does...');
144
+ const descInput = await body.findByPlaceholderText(
145
+ 'e.g. Add GitHub OAuth login with callback handling and token refresh...'
146
+ );
147
147
 
148
- await userEvent.type(nameInput, 'GitHub OAuth Login');
149
148
  await userEvent.type(
150
149
  descInput,
151
150
  'Implement OAuth2 authentication with GitHub as the identity provider. Includes login, callback handling, and token refresh.'
@@ -154,8 +153,8 @@ export const PreFilled: Story = {
154
153
  };
155
154
 
156
155
  /**
157
- * Validation state — open the drawer with an empty name field.
158
- * The "+ Create Feature" button is disabled because name validation fails.
156
+ * Validation state — open the drawer with an empty description field.
157
+ * The "+ Create Feature" button is disabled because description validation fails.
159
158
  */
160
159
  export const ValidationDisabled: Story = {
161
160
  render: () => <CreateDrawerTrigger label="Open Validation Demo" />,
@@ -312,7 +311,7 @@ export const WithWorkflowDefaults: Story = {
312
311
  * and click "Add Files" to attach files via the native OS file picker.
313
312
  *
314
313
  * **Submitted data** is displayed in a styled panel showing `FeatureCreatePayload`
315
- * with `{ name, description, attachments, repositoryPath, approvalGates }`.
314
+ * with `{ description, attachments, repositoryPath, approvalGates }`.
316
315
  *
317
316
  * In Storybook, the native picker won't work (no backend), but submitted data
318
317
  * would show the paths if files were attached programmatically.
@@ -369,8 +368,10 @@ export const DiscardConfirmation: Story = {
369
368
  await userEvent.click(canvas.getByRole('button', { name: 'Open (Discard Confirmation)' }));
370
369
 
371
370
  const body = within(canvasElement.ownerDocument.body);
372
- const nameInput = await body.findByPlaceholderText('e.g. GitHub OAuth Login');
373
- await userEvent.type(nameInput, 'My Feature');
371
+ const descInput = await body.findByPlaceholderText(
372
+ 'e.g. Add GitHub OAuth login with callback handling and token refresh...'
373
+ );
374
+ await userEvent.type(descInput, 'My Feature');
374
375
 
375
376
  // Click Cancel — should show the discard confirmation dialog
376
377
  const cancelButton = body.getByRole('button', { name: 'Cancel' });
@@ -38,8 +38,7 @@ export interface ParentFeatureOption {
38
38
  }
39
39
 
40
40
  export interface FeatureCreatePayload {
41
- name: string;
42
- description?: string;
41
+ description: string;
43
42
  attachments: FileAttachment[];
44
43
  repositoryPath: string;
45
44
  approvalGates: {
@@ -92,7 +91,6 @@ export function FeatureCreateDrawer({
92
91
  const defaultPush = workflowDefaults?.push ?? false;
93
92
  const defaultOpenPr = workflowDefaults?.openPr ?? false;
94
93
 
95
- const [name, setName] = useState('');
96
94
  const [description, setDescription] = useState('');
97
95
  const [attachments, setAttachments] = useState<FileAttachment[]>([]);
98
96
  const [approvalGates, setApprovalGates] = useState<Record<string, boolean>>({ ...defaultGates });
@@ -117,7 +115,6 @@ export function FeatureCreateDrawer({
117
115
  }, [open, initialParentId]);
118
116
 
119
117
  const resetForm = useCallback(() => {
120
- setName('');
121
118
  setDescription('');
122
119
  setAttachments([]);
123
120
  setApprovalGates({ ...defaultGates });
@@ -127,7 +124,7 @@ export function FeatureCreateDrawer({
127
124
  }, [defaultGates, defaultPush, defaultOpenPr]);
128
125
 
129
126
  // Track whether the form has unsaved data
130
- const isDirty = name.trim() !== '' || description.trim() !== '' || attachments.length > 0;
127
+ const isDirty = description.trim() !== '' || attachments.length > 0;
131
128
 
132
129
  // Shared close guard — shows confirmation when dirty, prevents navigation
133
130
  const { attemptClose } = useGuardedDrawerClose({ open, isDirty, onClose, onReset: resetForm });
@@ -135,12 +132,10 @@ export function FeatureCreateDrawer({
135
132
  const handleSubmit = useCallback(
136
133
  (e: React.FormEvent) => {
137
134
  e.preventDefault();
138
- if (!name.trim()) return;
135
+ if (!description.trim()) return;
139
136
  createSound.play();
140
- const trimmedDescription = description.trim() || undefined;
141
137
  onSubmit({
142
- name: name.trim(),
143
- description: trimmedDescription,
138
+ description: description.trim(),
144
139
  attachments,
145
140
  repositoryPath,
146
141
  approvalGates: {
@@ -155,7 +150,6 @@ export function FeatureCreateDrawer({
155
150
  resetForm();
156
151
  },
157
152
  [
158
- name,
159
153
  description,
160
154
  attachments,
161
155
  approvalGates,
@@ -214,7 +208,11 @@ export function FeatureCreateDrawer({
214
208
  <Button variant="outline" onClick={attemptClose} disabled={isSubmitting}>
215
209
  Cancel
216
210
  </Button>
217
- <Button type="submit" form="create-feature-form" disabled={!name.trim() || isSubmitting}>
211
+ <Button
212
+ type="submit"
213
+ form="create-feature-form"
214
+ disabled={!description.trim() || isSubmitting}
215
+ >
218
216
  {isSubmitting ? 'Creating...' : '+ Create Feature'}
219
217
  </Button>
220
218
  </div>
@@ -223,38 +221,21 @@ export function FeatureCreateDrawer({
223
221
  {/* Form body */}
224
222
  <div className="overflow-y-auto p-4">
225
223
  <form id="create-feature-form" onSubmit={handleSubmit} className="flex flex-col gap-4">
226
- {/* Feature name */}
227
- <div className="flex flex-col gap-1.5">
228
- <Label
229
- htmlFor="feature-name"
230
- className="text-muted-foreground text-xs font-semibold tracking-wider"
231
- >
232
- FEATURE NAME
233
- </Label>
234
- <Input
235
- id="feature-name"
236
- placeholder="e.g. GitHub OAuth Login"
237
- value={name}
238
- onChange={(e) => setName(e.target.value)}
239
- required
240
- disabled={isSubmitting}
241
- />
242
- </div>
243
-
244
224
  {/* Description */}
245
225
  <div className="flex flex-col gap-1.5">
246
226
  <Label
247
227
  htmlFor="feature-description"
248
228
  className="text-muted-foreground text-xs font-semibold tracking-wider"
249
229
  >
250
- DESCRIPTION
230
+ DESCRIBE YOUR FEATURE
251
231
  </Label>
252
232
  <Textarea
253
233
  id="feature-description"
254
- placeholder="Describe what this feature does..."
234
+ placeholder="e.g. Add GitHub OAuth login with callback handling and token refresh..."
255
235
  value={description}
256
236
  onChange={(e) => setDescription(e.target.value)}
257
237
  rows={4}
238
+ required
258
239
  disabled={isSubmitting}
259
240
  />
260
241
  </div>
@@ -16,8 +16,11 @@ import { deleteFeature } from '@/app/actions/delete-feature';
16
16
  import { addRepository } from '@/app/actions/add-repository';
17
17
  import { deleteRepository } from '@/app/actions/delete-repository';
18
18
  import { getFeatureMetadata } from '@/app/actions/get-feature-metadata';
19
+ import { fetchGraphData } from '@/app/actions/get-graph-data';
19
20
  import { useAgentEventsContext } from '@/hooks/agent-events-provider';
20
21
  import { useSoundAction } from '@/hooks/use-sound-action';
22
+ import { createLogger } from '@/lib/logger';
23
+
21
24
  import {
22
25
  mapEventTypeToState,
23
26
  resolveSseEventUpdates,
@@ -25,6 +28,9 @@ import {
25
28
  import { useGraphState, type GraphCallbacks } from '@/hooks/use-graph-state';
26
29
  import type { FeatureEntry } from '@/lib/derive-graph';
27
30
 
31
+ const log = createLogger('[Polling]');
32
+ const POLL_INTERVAL_MS = 3_000;
33
+
28
34
  export interface ControlCenterState {
29
35
  nodes: CanvasNodeType[];
30
36
  edges: Edge[];
@@ -215,6 +221,25 @@ export function useControlCenterState(
215
221
  }
216
222
  }, [events, updateFeature]);
217
223
 
224
+ // --- Polling fallback: catch any SSE events that were missed ---
225
+ useEffect(() => {
226
+ log.debug(`polling enabled (${POLL_INTERVAL_MS}ms interval)`);
227
+
228
+ const timer = setInterval(async () => {
229
+ try {
230
+ const { nodes: freshNodes, edges: freshEdges } = await fetchGraphData();
231
+ reconcile(freshNodes, freshEdges);
232
+ } catch {
233
+ log.warn('poll fetch failed — will retry next interval');
234
+ }
235
+ }, POLL_INTERVAL_MS);
236
+
237
+ return () => {
238
+ log.debug('polling disabled');
239
+ clearInterval(timer);
240
+ };
241
+ }, [reconcile]);
242
+
218
243
  // onNodesChange is a no-op: nodes are derived from domain Maps.
219
244
  // Since nodesDraggable=false and elementsSelectable=false, only React Flow's
220
245
  // internal replace/dimensions changes come through — we ignore them all.
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useCallback, useEffect, useRef, useState } from 'react';
4
4
  import type { NotificationEvent } from '@shepai/core/domain/generated/output';
5
+ import { createLogger } from '@/lib/logger';
5
6
 
6
7
  export type ConnectionStatus = 'connected' | 'connecting' | 'disconnected';
7
8
 
@@ -15,6 +16,7 @@ export interface UseAgentEventsResult {
15
16
  connectionStatus: ConnectionStatus;
16
17
  }
17
18
 
19
+ const log = createLogger('[SSE]');
18
20
  const SW_PATH = '/agent-events-sw.js';
19
21
  const MAX_EVENTS = 500;
20
22
  const PRUNE_KEEP = 250;
@@ -40,8 +42,7 @@ export function useAgentEvents(options?: UseAgentEventsOptions): UseAgentEventsR
40
42
 
41
43
  if (msg.type === 'notification') {
42
44
  const parsed = msg.data as NotificationEvent;
43
- // eslint-disable-next-line no-console
44
- console.log('[SSE] event received:', parsed.eventType, parsed);
45
+ log.debug('event received:', parsed.eventType, parsed);
45
46
  setEvents((prev) => {
46
47
  const next = [...prev, parsed];
47
48
  return next.length > MAX_EVENTS ? next.slice(-PRUNE_KEEP) : next;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- /* eslint-disable no-console */
3
2
 
4
3
  import { useState, useCallback, useRef, useEffect } from 'react';
4
+ import { createLogger } from '@/lib/logger';
5
5
  import type { DeploymentState } from '@shepai/core/domain/generated/output';
6
6
  import { deployFeature } from '@/app/actions/deploy-feature';
7
7
  import { deployRepository } from '@/app/actions/deploy-repository';
@@ -25,15 +25,7 @@ export interface DeployActionState {
25
25
  url: string | null;
26
26
  }
27
27
 
28
- const PREFIX = '[useDeployAction]';
29
- const isDebug = !!process.env.NEXT_PUBLIC_DEBUG;
30
- const noop = () => undefined;
31
- const log = {
32
- info: isDebug ? (...args: unknown[]) => console.info(PREFIX, ...args) : noop,
33
- debug: isDebug ? (...args: unknown[]) => console.debug(PREFIX, ...args) : noop,
34
- warn: (...args: unknown[]) => console.warn(PREFIX, ...args),
35
- error: (...args: unknown[]) => console.error(PREFIX, ...args),
36
- };
28
+ const log = createLogger('[useDeployAction]');
37
29
 
38
30
  const ERROR_CLEAR_DELAY = 5000;
39
31
  const POLL_INTERVAL = 3000;
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
15
15
  const hostname = process.env.HOSTNAME || '0.0.0.0'
16
16
 
17
17
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
18
- const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.72.9","NEXT_PUBLIC_SHEP_PACKAGE_NAME":"@shepai/cli","NEXT_PUBLIC_SHEP_DESCRIPTION":"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":true,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/cli/cli","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/cli/cli"},"serverExternalPackages":["tsyringe","reflect-metadata","better-sqlite3","node:os","node:child_process","node:fs"],"distDirRoot":".next"}
18
+ const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.73.1","NEXT_PUBLIC_SHEP_PACKAGE_NAME":"@shepai/cli","NEXT_PUBLIC_SHEP_DESCRIPTION":"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":true,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/cli/cli","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/cli/cli"},"serverExternalPackages":["tsyringe","reflect-metadata","better-sqlite3","node:os","node:child_process","node:fs"],"distDirRoot":".next"}
19
19
 
20
20
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
21
21