@shepai/cli 1.202.1-pr606.60460ac → 1.202.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/package.json +1 -1
  2. package/web/.next/BUILD_ID +1 -1
  3. package/web/.next/build-manifest.json +2 -2
  4. package/web/.next/fallback-build-manifest.json +2 -2
  5. package/web/.next/prerender-manifest.json +3 -3
  6. package/web/.next/required-server-files.js +2 -2
  7. package/web/.next/required-server-files.json +2 -2
  8. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/react-loadable-manifest.json +4 -4
  9. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +37 -37
  10. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  11. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  12. package/web/.next/server/app/(dashboard)/@drawer/chat/page/react-loadable-manifest.json +4 -4
  13. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +35 -35
  14. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  15. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  16. package/web/.next/server/app/(dashboard)/@drawer/create/page/react-loadable-manifest.json +4 -4
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +38 -38
  18. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/react-loadable-manifest.json +4 -4
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +47 -47
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/react-loadable-manifest.json +4 -4
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +47 -47
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +4 -4
  29. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +36 -36
  30. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  31. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/react-loadable-manifest.json +4 -4
  33. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +36 -36
  34. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/chat/page/react-loadable-manifest.json +4 -4
  37. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +35 -35
  38. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/control-center/page/react-loadable-manifest.json +4 -4
  41. package/web/.next/server/app/(dashboard)/control-center/page/server-reference-manifest.json +35 -35
  42. package/web/.next/server/app/(dashboard)/control-center/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/control-center/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/(dashboard)/create/page/react-loadable-manifest.json +4 -4
  45. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +38 -38
  46. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/react-loadable-manifest.json +4 -4
  49. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +47 -47
  50. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/react-loadable-manifest.json +4 -4
  53. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +47 -47
  54. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +4 -4
  57. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +36 -36
  58. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/react-loadable-manifest.json +4 -4
  61. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +36 -36
  62. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/_global-error.html +2 -2
  65. package/web/.next/server/app/_global-error.rsc +1 -1
  66. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  67. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  68. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  69. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  70. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  71. package/web/.next/server/app/_not-found/page/react-loadable-manifest.json +4 -4
  72. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +9 -9
  73. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/agent-questions/page/react-loadable-manifest.json +4 -4
  75. package/web/.next/server/app/agent-questions/page/server-reference-manifest.json +11 -11
  76. package/web/.next/server/app/agent-questions/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/agents/[agentType]/page/react-loadable-manifest.json +4 -4
  78. package/web/.next/server/app/agents/[agentType]/page/server-reference-manifest.json +13 -13
  79. package/web/.next/server/app/agents/[agentType]/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/agents/page/react-loadable-manifest.json +4 -4
  81. package/web/.next/server/app/agents/page/server-reference-manifest.json +10 -10
  82. package/web/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/app/application/[id]/page/react-loadable-manifest.json +4 -4
  84. package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +18 -18
  85. package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
  86. package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/application/[id]/supervisor/page/react-loadable-manifest.json +4 -4
  88. package/web/.next/server/app/application/[id]/supervisor/page/server-reference-manifest.json +10 -10
  89. package/web/.next/server/app/application/[id]/supervisor/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/applications/page/react-loadable-manifest.json +4 -4
  91. package/web/.next/server/app/applications/page/server-reference-manifest.json +20 -20
  92. package/web/.next/server/app/applications/page.js.nft.json +1 -1
  93. package/web/.next/server/app/applications/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/features/page/react-loadable-manifest.json +4 -4
  95. package/web/.next/server/app/features/page/server-reference-manifest.json +31 -31
  96. package/web/.next/server/app/features/page.js.nft.json +1 -1
  97. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/onboarding/page/react-loadable-manifest.json +4 -4
  99. package/web/.next/server/app/onboarding/page/server-reference-manifest.json +9 -9
  100. package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/page/react-loadable-manifest.json +4 -4
  102. package/web/.next/server/app/page/server-reference-manifest.json +9 -9
  103. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/projects/[slug]/items/[itemId]/page/react-loadable-manifest.json +4 -4
  105. package/web/.next/server/app/projects/[slug]/items/[itemId]/page/server-reference-manifest.json +16 -16
  106. package/web/.next/server/app/projects/[slug]/items/[itemId]/page_client-reference-manifest.js +1 -1
  107. package/web/.next/server/app/projects/[slug]/page/react-loadable-manifest.json +4 -4
  108. package/web/.next/server/app/projects/[slug]/page/server-reference-manifest.json +28 -28
  109. package/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/projects/[slug]/pages/page/react-loadable-manifest.json +4 -4
  111. package/web/.next/server/app/projects/[slug]/pages/page/server-reference-manifest.json +12 -12
  112. package/web/.next/server/app/projects/[slug]/pages/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/projects/[slug]/settings/page/react-loadable-manifest.json +4 -4
  114. package/web/.next/server/app/projects/[slug]/settings/page/server-reference-manifest.json +18 -18
  115. package/web/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/app/projects/page/react-loadable-manifest.json +4 -4
  117. package/web/.next/server/app/projects/page/server-reference-manifest.json +10 -10
  118. package/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  119. package/web/.next/server/app/settings/page/react-loadable-manifest.json +4 -4
  120. package/web/.next/server/app/settings/page/server-reference-manifest.json +15 -15
  121. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  122. package/web/.next/server/app/skills/page/react-loadable-manifest.json +4 -4
  123. package/web/.next/server/app/skills/page/server-reference-manifest.json +17 -17
  124. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/supervisor/feature/[featureId]/page/react-loadable-manifest.json +4 -4
  126. package/web/.next/server/app/supervisor/feature/[featureId]/page/server-reference-manifest.json +10 -10
  127. package/web/.next/server/app/supervisor/feature/[featureId]/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/supervisor/page/react-loadable-manifest.json +4 -4
  129. package/web/.next/server/app/supervisor/page/server-reference-manifest.json +10 -10
  130. package/web/.next/server/app/supervisor/page_client-reference-manifest.js +1 -1
  131. package/web/.next/server/app/supervisor/repo/[repositoryId]/page/react-loadable-manifest.json +4 -4
  132. package/web/.next/server/app/supervisor/repo/[repositoryId]/page/server-reference-manifest.json +10 -10
  133. package/web/.next/server/app/supervisor/repo/[repositoryId]/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/app/tools/page/react-loadable-manifest.json +4 -4
  135. package/web/.next/server/app/tools/page/server-reference-manifest.json +15 -15
  136. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/version/page/react-loadable-manifest.json +4 -4
  138. package/web/.next/server/app/version/page/server-reference-manifest.json +9 -9
  139. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/chunks/[root-of-the-server]__10e976f3._.js +1 -1
  141. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agent-questions_page_actions_4b694f8d.js +1 -1
  142. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agent-questions_page_actions_4b694f8d.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agents_[agentType]_page_actions_103679a6.js +1 -1
  144. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agents_[agentType]_page_actions_103679a6.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_projects_[slug]_pages_page_actions_19d50f6c.js +1 -1
  146. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_projects_[slug]_pages_page_actions_19d50f6c.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js +1 -1
  148. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.js +1 -1
  150. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  152. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js +1 -1
  154. package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__0af8610a._.js +3 -3
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__0af8610a._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b652a2f._.js +1 -1
  158. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8b73253b._.js → [root-of-the-server]__2e388ba3._.js} +2 -2
  159. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8b73253b._.js.map → [root-of-the-server]__2e388ba3._.js.map} +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__56cf47e7._.js +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__56cf47e7._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__648730d4._.js +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__68df6415._.js +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__68df6415._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bc6bf96._.js +1 -1
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bc6bf96._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__9852cb08._.js +2 -2
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__9852cb08._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/[root-of-the-server]__a1167cec._.js +1 -1
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__a1167cec._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__a12d0ad7._.js +3 -0
  172. package/web/.next/server/chunks/ssr/{[root-of-the-server]__52ca7f88._.js.map → [root-of-the-server]__a12d0ad7._.js.map} +1 -1
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba699bec._.js +1 -1
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba699bec._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0741ee1._.js +1 -1
  176. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0fa59e6._.js +1 -1
  177. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0fa59e6._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/[root-of-the-server]__ea26ff90._.js +3 -3
  179. package/web/.next/server/chunks/ssr/[root-of-the-server]__ff0095e3._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_07036593._.js +1 -1
  181. package/web/.next/server/chunks/ssr/_07036593._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/_0d2a7595._.js +1 -1
  183. package/web/.next/server/chunks/ssr/_0d2a7595._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/_101de7c3._.js +1 -1
  185. package/web/.next/server/chunks/ssr/_101de7c3._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/{_db111d21._.js → _10f54ace._.js} +2 -2
  187. package/web/.next/server/chunks/ssr/{_db111d21._.js.map → _10f54ace._.js.map} +1 -1
  188. package/web/.next/server/chunks/ssr/_24fca3cf._.js +1 -1
  189. package/web/.next/server/chunks/ssr/_24fca3cf._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/{_6ff832ad._.js → _2759af76._.js} +2 -2
  191. package/web/.next/server/chunks/ssr/{_6ff832ad._.js.map → _2759af76._.js.map} +1 -1
  192. package/web/.next/server/chunks/ssr/_2bc48f3d._.js +1 -1
  193. package/web/.next/server/chunks/ssr/_2bc48f3d._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/{_fb539286._.js → _2bef1982._.js} +2 -2
  195. package/web/.next/server/chunks/ssr/{_fb539286._.js.map → _2bef1982._.js.map} +1 -1
  196. package/web/.next/server/chunks/ssr/_32f66845._.js +1 -1
  197. package/web/.next/server/chunks/ssr/_408848e6._.js +1 -1
  198. package/web/.next/server/chunks/ssr/_408848e6._.js.map +1 -1
  199. package/web/.next/server/chunks/ssr/_40e02782._.js +1 -1
  200. package/web/.next/server/chunks/ssr/_40e02782._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/_486d45d6._.js +1 -1
  202. package/web/.next/server/chunks/ssr/_486d45d6._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/{_824d5772._.js → _498cba11._.js} +2 -2
  204. package/web/.next/server/chunks/ssr/{_824d5772._.js.map → _498cba11._.js.map} +1 -1
  205. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  206. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/_5cbb0e22._.js +1 -1
  208. package/web/.next/server/chunks/ssr/_5cbb0e22._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/{_5a3edc88._.js → _673be4f1._.js} +2 -2
  210. package/web/.next/server/chunks/ssr/{_5a3edc88._.js.map → _673be4f1._.js.map} +1 -1
  211. package/web/.next/server/chunks/ssr/_7ba67729._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_7ba67729._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/_805ae1aa._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_805ae1aa._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/_87cf18c3._.js +1 -1
  216. package/web/.next/server/chunks/ssr/_87cf18c3._.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/_8a700ff4._.js +1 -1
  218. package/web/.next/server/chunks/ssr/_8a700ff4._.js.map +1 -1
  219. package/web/.next/server/chunks/ssr/_95b97274._.js +1 -1
  220. package/web/.next/server/chunks/ssr/_95b97274._.js.map +1 -1
  221. package/web/.next/server/chunks/ssr/{_fbcfaf3a._.js → _9d18d1b1._.js} +2 -2
  222. package/web/.next/server/chunks/ssr/{_fbcfaf3a._.js.map → _9d18d1b1._.js.map} +1 -1
  223. package/web/.next/server/chunks/ssr/{_70ff64a1._.js → _a93687e6._.js} +2 -2
  224. package/web/.next/server/chunks/ssr/{_70ff64a1._.js.map → _a93687e6._.js.map} +1 -1
  225. package/web/.next/server/chunks/ssr/_c2e196ee._.js +1 -1
  226. package/web/.next/server/chunks/ssr/_c2e196ee._.js.map +1 -1
  227. package/web/.next/server/chunks/ssr/_ca3b7bf7._.js +1 -1
  228. package/web/.next/server/chunks/ssr/_ca3b7bf7._.js.map +1 -1
  229. package/web/.next/server/chunks/ssr/_d53224a9._.js +1 -1
  230. package/web/.next/server/chunks/ssr/_d53224a9._.js.map +1 -1
  231. package/web/.next/server/chunks/ssr/_d573dcc2._.js +1 -1
  232. package/web/.next/server/chunks/ssr/_e2671e14._.js +1 -1
  233. package/web/.next/server/chunks/ssr/_e2671e14._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/_ecd45b17._.js +1 -1
  235. package/web/.next/server/chunks/ssr/_ecd45b17._.js.map +1 -1
  236. package/web/.next/server/chunks/ssr/{_f0d45e47._.js → _f46d2018._.js} +2 -2
  237. package/web/.next/server/chunks/ssr/{_f0d45e47._.js.map → _f46d2018._.js.map} +1 -1
  238. package/web/.next/server/chunks/ssr/_f602cc9f._.js +1 -1
  239. package/web/.next/server/chunks/ssr/_f602cc9f._.js.map +1 -1
  240. package/web/.next/server/chunks/ssr/{_20a56008._.js → _f71954a5._.js} +2 -2
  241. package/web/.next/server/chunks/ssr/{_20a56008._.js.map → _f71954a5._.js.map} +1 -1
  242. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  243. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  244. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  245. package/web/.next/server/chunks/ssr/src_presentation_web_0e291f0b._.js +1 -1
  246. package/web/.next/server/chunks/ssr/src_presentation_web_0e291f0b._.js.map +1 -1
  247. package/web/.next/server/chunks/ssr/{src_presentation_web_40673f0c._.js → src_presentation_web_16c83ab4._.js} +2 -2
  248. package/web/.next/server/chunks/ssr/{src_presentation_web_40673f0c._.js.map → src_presentation_web_16c83ab4._.js.map} +1 -1
  249. package/web/.next/server/chunks/ssr/src_presentation_web_1d8d177f._.js +1 -1
  250. package/web/.next/server/chunks/ssr/src_presentation_web_1d8d177f._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/src_presentation_web_450b58fc._.js +1 -1
  252. package/web/.next/server/chunks/ssr/src_presentation_web_450b58fc._.js.map +1 -1
  253. package/web/.next/server/chunks/ssr/src_presentation_web_47727150._.js +1 -1
  254. package/web/.next/server/chunks/ssr/src_presentation_web_47727150._.js.map +1 -1
  255. package/web/.next/server/chunks/ssr/src_presentation_web_64fcfc84._.js +1 -1
  256. package/web/.next/server/chunks/ssr/src_presentation_web_64fcfc84._.js.map +1 -1
  257. package/web/.next/server/chunks/ssr/src_presentation_web_74b7bdb2._.js +1 -1
  258. package/web/.next/server/chunks/ssr/src_presentation_web_74b7bdb2._.js.map +1 -1
  259. package/web/.next/server/chunks/ssr/src_presentation_web_82aeca34._.js +1 -1
  260. package/web/.next/server/chunks/ssr/src_presentation_web_82aeca34._.js.map +1 -1
  261. package/web/.next/server/chunks/ssr/src_presentation_web_8a564d47._.js +1 -1
  262. package/web/.next/server/chunks/ssr/src_presentation_web_8a564d47._.js.map +1 -1
  263. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +1 -1
  264. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -1
  265. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_f4f3fad9.js +1 -1
  266. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_f4f3fad9.js.map +1 -1
  267. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_agents_page_actions_d4bd4711.js +1 -1
  268. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_agents_page_actions_d4bd4711.js.map +1 -1
  269. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_onboarding_page_actions_bb695e8d.js +1 -1
  270. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_onboarding_page_actions_bb695e8d.js.map +1 -1
  271. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_ac47e420.js +1 -1
  272. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_ac47e420.js.map +1 -1
  273. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_projects_page_actions_c91a23a8.js +1 -1
  274. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_projects_page_actions_c91a23a8.js.map +1 -1
  275. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_63c2d912.js +1 -1
  276. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_63c2d912.js.map +1 -1
  277. package/web/.next/server/chunks/ssr/src_presentation_web_a53a3da6._.js +1 -1
  278. package/web/.next/server/chunks/ssr/src_presentation_web_a53a3da6._.js.map +1 -1
  279. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_246617fe._.js +3 -3
  280. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js +1 -1
  281. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js.map +1 -1
  282. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +1 -1
  283. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js +1 -1
  284. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js.map +1 -1
  285. package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js +1 -1
  286. package/web/.next/server/chunks/ssr/src_presentation_web_b1b3c26c._.js +1 -1
  287. package/web/.next/server/chunks/ssr/src_presentation_web_b1b3c26c._.js.map +1 -1
  288. package/web/.next/server/chunks/ssr/src_presentation_web_b98a4353._.js +1 -1
  289. package/web/.next/server/chunks/ssr/src_presentation_web_b98a4353._.js.map +1 -1
  290. package/web/.next/server/chunks/ssr/src_presentation_web_c96ca051._.js +1 -1
  291. package/web/.next/server/chunks/ssr/src_presentation_web_c96ca051._.js.map +1 -1
  292. package/web/.next/server/chunks/ssr/{src_presentation_web_e812a69b._.js → src_presentation_web_cb0d2c28._.js} +2 -2
  293. package/web/.next/server/chunks/ssr/{src_presentation_web_e812a69b._.js.map → src_presentation_web_cb0d2c28._.js.map} +1 -1
  294. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js +1 -1
  295. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js.map +1 -1
  296. package/web/.next/server/chunks/ssr/src_presentation_web_components_agent-editor_agent-editor-tabs_tsx_d5a954b4._.js +1 -1
  297. package/web/.next/server/chunks/ssr/src_presentation_web_components_agent-editor_agent-editor-tabs_tsx_d5a954b4._.js.map +1 -1
  298. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  299. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web_d3858f16._.js +1 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web_d3858f16._.js.map +1 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web_d7f8130c._.js +1 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web_d7f8130c._.js.map +1 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web_dddd8ccd._.js +1 -1
  305. package/web/.next/server/chunks/ssr/src_presentation_web_dddd8ccd._.js.map +1 -1
  306. package/web/.next/server/chunks/ssr/src_presentation_web_e13d58b0._.js +1 -1
  307. package/web/.next/server/chunks/ssr/src_presentation_web_e13d58b0._.js.map +1 -1
  308. package/web/.next/server/chunks/ssr/src_presentation_web_ee94a9aa._.js +1 -1
  309. package/web/.next/server/chunks/ssr/src_presentation_web_ee94a9aa._.js.map +1 -1
  310. package/web/.next/server/chunks/ssr/src_presentation_web_f0fcfdff._.js +1 -1
  311. package/web/.next/server/chunks/ssr/src_presentation_web_f0fcfdff._.js.map +1 -1
  312. package/web/.next/server/chunks/ssr/src_presentation_web_f17e8516._.js +1 -1
  313. package/web/.next/server/chunks/ssr/src_presentation_web_f17e8516._.js.map +1 -1
  314. package/web/.next/server/chunks/ssr/src_presentation_web_f7180fec._.js +1 -1
  315. package/web/.next/server/chunks/ssr/src_presentation_web_f7180fec._.js.map +1 -1
  316. package/web/.next/server/pages/500.html +2 -2
  317. package/web/.next/server/server-reference-manifest.js +1 -1
  318. package/web/.next/server/server-reference-manifest.json +111 -111
  319. package/web/.next/static/chunks/{5faa828877b1e669.js → 03dda23205877d8b.js} +1 -1
  320. package/web/.next/static/chunks/{4bf4f333302e24a4.js → 054e3a5f5ff4db71.js} +1 -1
  321. package/web/.next/static/chunks/{a868014dbe1b4e42.js → 06e58041911c290b.js} +1 -1
  322. package/web/.next/static/chunks/{b5ff852fee23795d.js → 089ef5b749d79ebd.js} +1 -1
  323. package/web/.next/static/chunks/{1a093b13a9d6952e.js → 0d106010c498c198.js} +2 -2
  324. package/web/.next/static/chunks/193e5a0540757f5e.js +1 -0
  325. package/web/.next/static/chunks/{9abc3e68af98e636.js → 25111a2f2597f500.js} +1 -1
  326. package/web/.next/static/chunks/285e724d07901ef6.js +1 -0
  327. package/web/.next/static/chunks/{3c396f63ebefe875.js → 2b2bfc0465b18a7d.js} +1 -1
  328. package/web/.next/static/chunks/{6af99a08ccacdbce.js → 2b436562e69d2827.js} +1 -1
  329. package/web/.next/static/chunks/{8c96a835b3b0dc44.js → 2e3844d0ac487ac7.js} +1 -1
  330. package/web/.next/static/chunks/325859b8a9482427.js +1 -0
  331. package/web/.next/static/chunks/{2773e7b2587bc9cc.js → 44ab458ceb89d85d.js} +1 -1
  332. package/web/.next/static/chunks/4fdf36904f5421a6.js +1 -0
  333. package/web/.next/static/chunks/59004c65d552581c.js +1 -0
  334. package/web/.next/static/chunks/{0edcdc8a2dd06b7a.js → 5c4837e88a3431b8.js} +1 -1
  335. package/web/.next/static/chunks/{a131f868af7f1f7c.js → 74cdd562eb663f72.js} +1 -1
  336. package/web/.next/static/chunks/{0315591c972888a6.js → 7670d76d4ee743e6.js} +1 -1
  337. package/web/.next/static/chunks/{02d88da9fd656fcd.js → 83fc784ce05a701e.js} +1 -1
  338. package/web/.next/static/chunks/{460cedaa85c821e7.js → 8dd4fdd20b103a66.js} +1 -1
  339. package/web/.next/static/chunks/9336bdc7fc319282.js +1 -0
  340. package/web/.next/static/chunks/9d285565922b2de7.js +1 -0
  341. package/web/.next/static/chunks/{45eeca36eabbed23.js → 9f7f2a11937d87eb.js} +1 -1
  342. package/web/.next/static/chunks/{c3931fdbae836be6.js → a7c7bcfb6f7696a3.js} +1 -1
  343. package/web/.next/static/chunks/{9f7985e2a73929a2.js → a8f57d2a12849f32.js} +1 -1
  344. package/web/.next/static/chunks/{0e1c933065a1100a.js → abe98954ccdf29db.js} +1 -1
  345. package/web/.next/static/chunks/{4378715fa2b5e7de.js → b05808da85e8b34c.js} +1 -1
  346. package/web/.next/static/chunks/{b5dc7979d66caa38.js → b5f83e5e1dad23d5.js} +1 -1
  347. package/web/.next/static/chunks/{6d2074fa3453d333.js → b8293a56f257e5a2.js} +1 -1
  348. package/web/.next/static/chunks/{bc5b87e4068ba11d.js → c61c5e97c76dc733.js} +1 -1
  349. package/web/.next/static/chunks/c6b411bf31744ca7.js +1 -0
  350. package/web/.next/static/chunks/{bdaa907bf3d1d932.js → c732d6cc4c5e4343.js} +1 -1
  351. package/web/.next/static/chunks/{25a200f055ae5cba.js → d214d6a670f48d79.js} +1 -1
  352. package/web/.next/static/chunks/{6901861cb53ab483.js → d7b17a93a26e97c8.js} +1 -1
  353. package/web/.next/static/chunks/{a0325f77bbccc63d.js → d8f14fac959a6bd0.js} +1 -1
  354. package/web/.next/static/chunks/{24ea54516dc249c0.js → d98912f5b6cf4938.js} +1 -1
  355. package/web/.next/static/chunks/{21500b3fe3754296.js → df79667c16344317.js} +1 -1
  356. package/web/.next/static/chunks/{05e8df10619fb980.js → ec8f19328ad1ecd4.js} +1 -1
  357. package/web/.next/static/chunks/{e6e6ba783b2e4d14.js → f0157331838ac962.js} +1 -1
  358. package/web/.next/static/chunks/{c687ed21b9518d73.js → f757d865fae71faf.js} +1 -1
  359. package/web/.next/static/chunks/fb3cbb7f575a7128.js +1 -0
  360. package/web/.next/server/chunks/ssr/[root-of-the-server]__52ca7f88._.js +0 -3
  361. package/web/.next/static/chunks/03d7b81c2554d52f.js +0 -1
  362. package/web/.next/static/chunks/15acdaaea57bb459.js +0 -1
  363. package/web/.next/static/chunks/39fe1c1397d5483b.js +0 -1
  364. package/web/.next/static/chunks/495883829026f13f.js +0 -1
  365. package/web/.next/static/chunks/4b3a4f416a6eb1ac.js +0 -1
  366. package/web/.next/static/chunks/4b4160f36cf2a3d6.js +0 -1
  367. package/web/.next/static/chunks/7269537b2188650d.js +0 -1
  368. package/web/.next/static/chunks/b1534b2f3d814fef.js +0 -1
  369. package/web/.next/static/chunks/f6dc1ba364203bb2.js +0 -1
  370. /package/web/.next/static/{My4IQDygZ4BFTXkkKanja → 9zd-B2rWybTaAgE74IKiK}/_buildManifest.js +0 -0
  371. /package/web/.next/static/{My4IQDygZ4BFTXkkKanja → 9zd-B2rWybTaAgE74IKiK}/_clientMiddlewareManifest.json +0 -0
  372. /package/web/.next/static/{My4IQDygZ4BFTXkkKanja → 9zd-B2rWybTaAgE74IKiK}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[69428,a=>{"use strict";let b=(0,a.i(225700).default)("clipboard-list",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);a.s(["ClipboardList",()=>b],69428)},925603,a=>{"use strict";let b=(0,a.i(225700).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",()=>b],925603)},241994,a=>{"use strict";let b=(0,a.i(225700).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["ArrowRight",()=>b],241994)},857411,a=>{"use strict";var b=a.i(556365),c=a.i(944592),d=a.i(193967),e=a.i(232791),f=a.i(488064),g=a.i(882014),h=a.i(103942),i=a.i(69428),j=a.i(771716),k=a.i(872016),l=a.i(302807);a.i(490370);var m=a.i(224640),n=a.i(385536),o=a.i(289111);let p=(0,o.createServerReference)("40ba17f62f174f4f88aa0ea4a373db347247ae1171",o.callServer,void 0,o.findSourceMapURL,"createProjectAndFeature"),q=(0,o.createServerReference)("40f744f8f8785a86cc8dc9487da8d64ca353d264af",o.callServer,void 0,o.findSourceMapURL,"createApplication");var r=a.i(411117),s=a.i(961781);a.i(200307);var t=a.i(730931);a.i(548822);var u=a.i(85655),v=a.i(182934),w=a.i(675192),x=a.i(409260);let y=["application","fast","spec"],z={application:{icon:g.LayoutGrid,label:"Application",placeholder:"Build a modern e-commerce storefront with product catalog...",suggestions:["A landing page with hero, features, and pricing sections","Full-stack SaaS app with auth, billing, and dashboard","Mobile-first social media app with real-time chat","Personal portfolio with blog and project showcase"]},fast:{icon:h.Zap,label:"Fast",placeholder:"Add a dark mode toggle to the settings page...",suggestions:["Add pagination to the users list endpoint","Fix the broken logout redirect","Add input validation to the signup form","Refactor the API error handling middleware"]},spec:{icon:i.ClipboardList,label:"Spec Driven",placeholder:"Implement a role-based access control system with audit logging...",suggestions:["OAuth2 authentication with SSO and MFA support","Event-driven notification system with email and push","REST API with versioning, rate limiting, and OpenAPI docs","Data pipeline with ETL, validation, and monitoring"]}};function A({onRepositorySelect:a,onApplicationCreated:g,onClose:h,className:i}){let{t:o}=(0,m.useTranslation)("web"),[A,B]=(0,c.useState)(""),[C,D]=(0,c.useState)(void 0),[E,F]=(0,c.useState)(void 0);(0,c.useEffect)(()=>{(0,r.getDefaultAgentAndModel)().then(a=>{D(b=>b??a.agentType),F(b=>b??a.model)})},[]);let[G,H]=(0,c.useState)("application"),[I,J]=(0,c.useState)(!1),[K,L]=(0,c.useState)(null),[M,N]=(0,c.useState)(!1),O=(0,c.useRef)(null),P=(0,x.useAttachments)(),Q=!!a,R=Q?G:"application",S=(0,c.useCallback)(()=>{H(a=>{let b=y.indexOf(a);return y[(b+1)%y.length]})},[]);(0,c.useEffect)(()=>{let b=b=>{"Escape"===b.key&&h&&h(),"Tab"===b.key&&b.shiftKey&&a&&(b.preventDefault(),S())};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[h,S,a]);let T=(0,c.useCallback)(async()=>{if(A.trim()&&!I){J(!0),L(null);try{if("application"!==R&&a){let b=await p({description:A.trim(),attachments:P.completedAttachments.map(a=>({path:a.path,name:a.name,notes:a.notes})),agentType:C,model:E,fast:"fast"===R});if(b.error){L(b.error),J(!1);return}b.repositoryPath&&a?.(b.repositoryPath),b.feature&&b.repositoryPath&&window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:b.feature.id,name:b.feature.name,description:b.feature.description,repositoryPath:b.repositoryPath}}))}else{let a=await q({description:A.trim(),agentType:C,modelOverride:E,initialPrompt:A.trim()});if(a.error){L(a.error),J(!1);return}a.application&&g?.(a.application.id)}}catch{L("Something went wrong. Please try again."),J(!1)}}},[A,I,R,P.completedAttachments,C,E,a,g]),U=(0,c.useCallback)(a=>{"Enter"===a.key&&(a.ctrlKey||a.metaKey)&&(a.preventDefault(),T())},[T]),V=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/dialog/pick-files");if(!a.ok)return;let b=await a.json();if(!b.paths?.length)return;for(let a of b.paths){let b=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a,sessionId:"onboarding"})});if(!b.ok)continue;let c=await b.json();P.addAttachment(c)}}catch{}},[P.addAttachment]),W=(0,c.useCallback)(a=>{B(a),O.current?.focus()},[]),X=z[R],Y=X.icon;return(0,b.jsxs)("div",{"data-testid":"control-center-empty-state",className:(0,n.cn)("relative flex h-full w-full flex-col items-center justify-center overflow-hidden px-8",i),children:[(0,b.jsx)("div",{className:"onboard-bg pointer-events-none absolute inset-0 animate-[onboard-fade-in_1.2s_ease-out_both]"}),h?(0,b.jsx)("button",{type:"button",onClick:h,"aria-label":"Close",className:"text-muted-foreground hover:text-foreground hover:bg-accent/50 absolute top-4 right-4 z-10 cursor-pointer rounded p-1.5 transition-colors",children:(0,b.jsx)(l.X,{className:"h-5 w-5"})}):null,(0,b.jsxs)("div",{className:"relative flex w-full max-w-2xl flex-col items-center",children:[(0,b.jsx)("div",{className:"mb-6 animate-[onboard-logo_0.8s_cubic-bezier(0.16,1,0.3,1)_both]",style:{animationDelay:"0ms"},children:(0,b.jsx)(u.ShepLogo,{size:72,className:"text-foreground"})}),(0,b.jsx)("h1",{className:"text-foreground animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-5xl font-extralight tracking-tight",style:{animationDelay:"120ms"},children:"What do you want to build?"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-3 animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-lg leading-relaxed font-light",style:{animationDelay:"220ms"},children:"Describe your idea and Shep creates the project for you."}),(0,b.jsxs)("div",{className:"mt-10 w-full animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both]",style:{animationDelay:"350ms"},children:[(0,b.jsxs)("div",{onFocus:()=>N(!0),onBlur:()=>N(!1),onDragEnter:P.handleDragEnter,onDragLeave:P.handleDragLeave,onDragOver:P.handleDragOver,onDrop:P.handleDrop,className:(0,n.cn)("flex flex-col rounded-xl border transition-all duration-200","border-border/60 bg-background shadow-sm dark:border-white/10 dark:bg-white/[0.04]",M&&"ring-ring/50 border-ring shadow-md ring-[3px] dark:border-orange-500/40 dark:ring-orange-500/25",P.isDragOver&&"border-primary/50 bg-primary/5",I&&"opacity-70"),children:[(0,b.jsx)("textarea",{ref:O,rows:2,autoFocus:!0,value:A,onChange:a=>B(a.target.value),onKeyDown:U,onPaste:P.handlePaste,placeholder:X.placeholder,disabled:I,className:"text-foreground placeholder:text-muted-foreground/60 max-h-[10rem] min-h-[4.5rem] w-full resize-none border-0 bg-transparent px-4 py-3.5 text-sm leading-relaxed focus:outline-none disabled:cursor-not-allowed"}),P.attachments.length>0?(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2.5 overflow-x-auto overflow-y-visible px-5 pt-2 pb-2",children:P.attachments.map(a=>(0,b.jsx)(t.AttachmentChip,{name:a.name,size:a.size,mimeType:a.mimeType,path:a.path,onRemove:()=>P.removeAttachment(a.id),loading:a.loading,notes:a.notes,onNotesChange:b=>P.updateNotes(a.id,b)},a.id))}):null,P.uploadError?(0,b.jsx)("p",{className:"text-destructive px-4 pb-2 text-xs",children:P.uploadError}):null,(0,b.jsxs)("div",{className:"border-border/60 flex shrink-0 items-center gap-3 border-t px-3 py-2 dark:border-white/10",children:[(0,b.jsx)(s.AgentModelPicker,{initialAgentType:C??"",initialModel:E??"",mode:"override",showInstallStatus:!0,onAgentModelChange:(a,b)=>{D(a),F(b)},className:"w-55"}),(0,b.jsx)("div",{className:"flex-1"}),Q?(0,b.jsxs)(w.DropdownMenu,{children:[(0,b.jsx)(w.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button","data-testid":"build-mode-selector",className:"text-muted-foreground hover:text-foreground hover:bg-accent/50 flex cursor-pointer items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors",children:[(0,b.jsxs)("span",{className:"flex animate-[onboard-fade-up_0.25s_ease-out_both] items-center gap-1.5",children:[(0,b.jsx)(Y,{className:"h-3.5 w-3.5"}),X.label]},R),(0,b.jsx)(j.ChevronDown,{className:"h-3 w-3 opacity-50"})]})}),(0,b.jsx)(w.DropdownMenuContent,{align:"end",className:"min-w-[160px]",children:y.map(a=>{let c=z[a],d=c.icon,e=R===a;return(0,b.jsxs)(w.DropdownMenuItem,{onClick:()=>H(a),"data-testid":`build-mode-${a}`,className:"flex items-center gap-2",children:[(0,b.jsx)(d,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"flex-1",children:c.label}),e?(0,b.jsx)(k.Check,{className:"text-foreground h-3.5 w-3.5"}):null]},a)})})]}):null,(0,b.jsxs)(v.Tooltip,{children:[(0,b.jsx)(v.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:V,disabled:I,"aria-label":o("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors disabled:opacity-50",children:(0,b.jsx)(e.Paperclip,{className:"h-4 w-4"})})}),(0,b.jsx)(v.TooltipContent,{side:"top",children:o("chat.attachFiles")})]}),(0,b.jsx)("button",{type:"button",onClick:T,disabled:!A.trim()||I,className:(0,n.cn)("bg-foreground text-background inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg","hover:bg-foreground/90 disabled:pointer-events-none disabled:opacity-30","transition-all duration-150"),children:I?(0,b.jsx)(f.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(d.SendHorizontal,{className:"h-3.5 w-3.5"})})]})]}),K?(0,b.jsx)("p",{className:"text-destructive mt-2 text-center text-sm",children:K}):null]}),(0,b.jsx)("div",{className:"mt-6 flex animate-[onboard-fade-up_0.4s_ease-out_both] flex-wrap justify-center gap-2",children:X.suggestions.map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>W(a),disabled:I,className:"text-muted-foreground hover:text-foreground border-border/60 hover:border-border hover:bg-accent/50 cursor-pointer rounded-full border px-3.5 py-1.5 text-xs transition-all duration-150 disabled:opacity-50 dark:border-white/10 dark:hover:border-white/20 dark:hover:bg-white/[0.06]",children:a},a))},R)]})]})}a.s(["ControlCenterEmptyState",()=>A],857411)},670268,a=>{"use strict";var b=a.i(289111);let c=(0,b.createServerReference)("40af1b8d14947496efa0de09d2e46341cfadd226ac",b.callServer,void 0,b.findSourceMapURL,"deleteApplication");a.s(["deleteApplication",()=>c])},261189,a=>{"use strict";function b(a,b,c,d){return"processing"===b?{label:"In Progress",dotClass:"bg-violet-500",borderClass:"",pulse:!0,previewDisabled:!0}:"awaiting_input"===b?{label:"Action Required",dotClass:"bg-amber-500",borderClass:"border-amber-500/60",pulse:!0,previewDisabled:!0}:"interrupted"===d?{label:"Interrupted",dotClass:"bg-amber-500",borderClass:"border-amber-500/60",pulse:!1,previewDisabled:!0}:"failed"===d?{label:"Failed",dotClass:"bg-red-500",borderClass:"border-red-500/60",pulse:!1,previewDisabled:!0}:"building"===d?{label:"In Progress",dotClass:"bg-violet-500",borderClass:"",pulse:!0,previewDisabled:!0}:c?{label:"Live",dotClass:"bg-emerald-500",borderClass:"",pulse:!0,previewDisabled:!1}:"Error"===a?{label:"Error",dotClass:"bg-red-500",borderClass:"border-red-500/60",pulse:!1,previewDisabled:!0}:{label:"Ready",dotClass:"bg-sky-500",borderClass:"",pulse:!1,previewDisabled:!1}}a.s(["deriveAppLiveStatus",()=>b])},887973,a=>{"use strict";function b(a){return`app-${a}`}a.s(["featureIdForApplication",()=>b])},806130,a=>{"use strict";let b=(0,a.i(225700).default)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);a.s(["MoreHorizontal",()=>b],806130)},793193,a=>{"use strict";var b=a.i(991857);a.s(["TriangleAlert",()=>b.default])},748957,a=>{"use strict";var b=a.i(556365),c=a.i(746847);function d({d:a,...c}){return(0,b.jsx)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",...c,"aria-hidden":"true",children:(0,b.jsx)("path",{d:a})})}function e(a){return(0,b.jsx)(d,{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12",...a})}let f={[c.CloudDeploymentProvider.CloudflarePages]:function(a){return(0,b.jsx)(d,{d:"M10.715 14.32H5.442l-.64-1.203L13.673 0l1.397.579-1.752 9.112h5.24l.648 1.192L10.719 24l-1.412-.54ZM4.091 5.448a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.543 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.544 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm8.657-2.7h5.424l.772.771v16.975l-.772.772h-7.392l.374-.579h6.779l.432-.432V3.758l-.432-.432h-4.676l-.552 2.85h-.59l.529-2.877.108-.552ZM2.74 21.265l-.772-.772V3.518l.772-.771h7.677l-.386.579H2.98l-.432.432v16.496l.432.432h5.586l-.092.579zm1.157-1.93h3.28l-.116.58h-3.55l-.192-.193v-3.473l.578 1.158zm13.117 0 .579.58H14.7l.385-.58z",...a})},[c.CloudDeploymentProvider.Vercel]:function(a){return(0,b.jsx)(d,{d:"m12 1.608 12 20.784H0Z",...a})},[c.CloudDeploymentProvider.Netlify]:function(a){return(0,b.jsx)(d,{d:"M6.49 19.04h-.23L5.13 17.9v-.23l1.73-1.71h1.2l.15.15v1.2L6.5 19.04ZM5.13 6.31V6.1l1.13-1.13h.23L8.2 6.68v1.2l-.15.15h-1.2L5.13 6.31Zm9.96 9.09h-1.65l-.14-.13v-3.83c0-.68-.27-1.2-1.1-1.23-.42 0-.9 0-1.43.02l-.07.08v4.96l-.14.14H8.9l-.13-.14V8.73l.13-.14h3.7a2.6 2.6 0 0 1 2.61 2.6v4.08l-.13.14Zm-8.37-2.44H.14L0 12.82v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14Zm17.14 0h-6.58l-.14-.14v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14ZM11.05 6.55V1.64l.14-.14h1.65l.14.14v4.9l-.14.14h-1.65l-.14-.13Zm0 15.81v-4.9l.14-.14h1.65l.14.13v4.91l-.14.14h-1.65l-.14-.14Z",...a})},[c.CloudDeploymentProvider.AwsAmplify]:function(a){return(0,b.jsx)(d,{d:"M11.58 2.1 1.15 20.87h4.33l1.9-3.5h9.24l1.9 3.5h4.33L12.42 2.1h-.84Zm.42 5.6 3.12 5.73H8.88L12 7.7Z",...a})},[c.CloudDeploymentProvider.GcpCloudRun]:function(a){return(0,b.jsx)(d,{d:"M12.19 2.38a9.344 9.344 0 0 0-9.234 6.893c.053-.02-.055.013 0 0-3.875 2.551-3.922 8.11-.247 10.941l.006-.007-.007.03a6.717 6.717 0 0 0 4.077 1.356h5.173l.03.03h5.192c6.687.053 9.376-8.605 3.835-12.35a9.365 9.365 0 0 0-2.821-4.552l-.043.043.006-.05A9.344 9.344 0 0 0 12.19 2.38zm-.358 4.146c1.244-.04 2.518.368 3.486 1.15a5.186 5.186 0 0 1 1.862 4.078v.518c3.53-.07 3.53 5.262 0 5.193h-5.193l-.008.009v-.04H6.785a2.59 2.59 0 0 1-1.067-.23h.001a2.597 2.597 0 1 1 3.437-3.437l3.013-3.012A6.747 6.747 0 0 0 8.11 8.24c.018-.01.04-.026.054-.023a5.186 5.186 0 0 1 3.67-1.69z",...a})}},g={[c.CloudDeploymentProvider.CloudflarePages]:"#F38020",[c.CloudDeploymentProvider.Vercel]:"#000000",[c.CloudDeploymentProvider.Netlify]:"#00C7B7",[c.CloudDeploymentProvider.AwsAmplify]:"#FF9900",[c.CloudDeploymentProvider.GcpCloudRun]:"#4285F4"};a.s(["CLOUD_PROVIDER_BRAND_HEX",0,g,"CLOUD_PROVIDER_ICONS",0,f,"GitHubIcon",()=>e])},795071,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js"].map(b=>a.l(b))).then(()=>b(314573)))},845515,a=>{a.v(a=>Promise.resolve().then(()=>a(701377)))},88378,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js"].map(b=>a.l(b))).then(()=>b(386100)))}];
1
+ module.exports=[69428,a=>{"use strict";let b=(0,a.i(225700).default)("clipboard-list",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);a.s(["ClipboardList",()=>b],69428)},925603,a=>{"use strict";let b=(0,a.i(225700).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);a.s(["Sparkles",()=>b],925603)},241994,a=>{"use strict";let b=(0,a.i(225700).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["ArrowRight",()=>b],241994)},857411,a=>{"use strict";var b=a.i(556365),c=a.i(944592),d=a.i(193967),e=a.i(232791),f=a.i(488064),g=a.i(882014),h=a.i(103942),i=a.i(69428),j=a.i(771716),k=a.i(872016),l=a.i(302807);a.i(490370);var m=a.i(224640),n=a.i(385536),o=a.i(289111);let p=(0,o.createServerReference)("402a7da73158b6bd6c8fb8ab5b0344dc0e0f08e228",o.callServer,void 0,o.findSourceMapURL,"createProjectAndFeature"),q=(0,o.createServerReference)("402b7881a750d5c7c7125153b65fdd64c555ddcdc2",o.callServer,void 0,o.findSourceMapURL,"createApplication");var r=a.i(644018),s=a.i(961781);a.i(200307);var t=a.i(730931);a.i(548822);var u=a.i(85655),v=a.i(182934),w=a.i(675192),x=a.i(409260);let y=["application","fast","spec"],z={application:{icon:g.LayoutGrid,label:"Application",placeholder:"Build a modern e-commerce storefront with product catalog...",suggestions:["A landing page with hero, features, and pricing sections","Full-stack SaaS app with auth, billing, and dashboard","Mobile-first social media app with real-time chat","Personal portfolio with blog and project showcase"]},fast:{icon:h.Zap,label:"Fast",placeholder:"Add a dark mode toggle to the settings page...",suggestions:["Add pagination to the users list endpoint","Fix the broken logout redirect","Add input validation to the signup form","Refactor the API error handling middleware"]},spec:{icon:i.ClipboardList,label:"Spec Driven",placeholder:"Implement a role-based access control system with audit logging...",suggestions:["OAuth2 authentication with SSO and MFA support","Event-driven notification system with email and push","REST API with versioning, rate limiting, and OpenAPI docs","Data pipeline with ETL, validation, and monitoring"]}};function A({onRepositorySelect:a,onApplicationCreated:g,onClose:h,className:i}){let{t:o}=(0,m.useTranslation)("web"),[A,B]=(0,c.useState)(""),[C,D]=(0,c.useState)(void 0),[E,F]=(0,c.useState)(void 0);(0,c.useEffect)(()=>{(0,r.getDefaultAgentAndModel)().then(a=>{D(b=>b??a.agentType),F(b=>b??a.model)})},[]);let[G,H]=(0,c.useState)("application"),[I,J]=(0,c.useState)(!1),[K,L]=(0,c.useState)(null),[M,N]=(0,c.useState)(!1),O=(0,c.useRef)(null),P=(0,x.useAttachments)(),Q=!!a,R=Q?G:"application",S=(0,c.useCallback)(()=>{H(a=>{let b=y.indexOf(a);return y[(b+1)%y.length]})},[]);(0,c.useEffect)(()=>{let b=b=>{"Escape"===b.key&&h&&h(),"Tab"===b.key&&b.shiftKey&&a&&(b.preventDefault(),S())};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[h,S,a]);let T=(0,c.useCallback)(async()=>{if(A.trim()&&!I){J(!0),L(null);try{if("application"!==R&&a){let b=await p({description:A.trim(),attachments:P.completedAttachments.map(a=>({path:a.path,name:a.name,notes:a.notes})),agentType:C,model:E,fast:"fast"===R});if(b.error){L(b.error),J(!1);return}b.repositoryPath&&a?.(b.repositoryPath),b.feature&&b.repositoryPath&&window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:b.feature.id,name:b.feature.name,description:b.feature.description,repositoryPath:b.repositoryPath}}))}else{let a=await q({description:A.trim(),agentType:C,modelOverride:E,initialPrompt:A.trim()});if(a.error){L(a.error),J(!1);return}a.application&&g?.(a.application.id)}}catch{L("Something went wrong. Please try again."),J(!1)}}},[A,I,R,P.completedAttachments,C,E,a,g]),U=(0,c.useCallback)(a=>{"Enter"===a.key&&(a.ctrlKey||a.metaKey)&&(a.preventDefault(),T())},[T]),V=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/dialog/pick-files");if(!a.ok)return;let b=await a.json();if(!b.paths?.length)return;for(let a of b.paths){let b=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a,sessionId:"onboarding"})});if(!b.ok)continue;let c=await b.json();P.addAttachment(c)}}catch{}},[P.addAttachment]),W=(0,c.useCallback)(a=>{B(a),O.current?.focus()},[]),X=z[R],Y=X.icon;return(0,b.jsxs)("div",{"data-testid":"control-center-empty-state",className:(0,n.cn)("relative flex h-full w-full flex-col items-center justify-center overflow-hidden px-8",i),children:[(0,b.jsx)("div",{className:"onboard-bg pointer-events-none absolute inset-0 animate-[onboard-fade-in_1.2s_ease-out_both]"}),h?(0,b.jsx)("button",{type:"button",onClick:h,"aria-label":"Close",className:"text-muted-foreground hover:text-foreground hover:bg-accent/50 absolute top-4 right-4 z-10 cursor-pointer rounded p-1.5 transition-colors",children:(0,b.jsx)(l.X,{className:"h-5 w-5"})}):null,(0,b.jsxs)("div",{className:"relative flex w-full max-w-2xl flex-col items-center",children:[(0,b.jsx)("div",{className:"mb-6 animate-[onboard-logo_0.8s_cubic-bezier(0.16,1,0.3,1)_both]",style:{animationDelay:"0ms"},children:(0,b.jsx)(u.ShepLogo,{size:72,className:"text-foreground"})}),(0,b.jsx)("h1",{className:"text-foreground animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-5xl font-extralight tracking-tight",style:{animationDelay:"120ms"},children:"What do you want to build?"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-3 animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-lg leading-relaxed font-light",style:{animationDelay:"220ms"},children:"Describe your idea and Shep creates the project for you."}),(0,b.jsxs)("div",{className:"mt-10 w-full animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both]",style:{animationDelay:"350ms"},children:[(0,b.jsxs)("div",{onFocus:()=>N(!0),onBlur:()=>N(!1),onDragEnter:P.handleDragEnter,onDragLeave:P.handleDragLeave,onDragOver:P.handleDragOver,onDrop:P.handleDrop,className:(0,n.cn)("flex flex-col rounded-xl border transition-all duration-200","border-border/60 bg-background shadow-sm dark:border-white/10 dark:bg-white/[0.04]",M&&"ring-ring/50 border-ring shadow-md ring-[3px] dark:border-orange-500/40 dark:ring-orange-500/25",P.isDragOver&&"border-primary/50 bg-primary/5",I&&"opacity-70"),children:[(0,b.jsx)("textarea",{ref:O,rows:2,autoFocus:!0,value:A,onChange:a=>B(a.target.value),onKeyDown:U,onPaste:P.handlePaste,placeholder:X.placeholder,disabled:I,className:"text-foreground placeholder:text-muted-foreground/60 max-h-[10rem] min-h-[4.5rem] w-full resize-none border-0 bg-transparent px-4 py-3.5 text-sm leading-relaxed focus:outline-none disabled:cursor-not-allowed"}),P.attachments.length>0?(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2.5 overflow-x-auto overflow-y-visible px-5 pt-2 pb-2",children:P.attachments.map(a=>(0,b.jsx)(t.AttachmentChip,{name:a.name,size:a.size,mimeType:a.mimeType,path:a.path,onRemove:()=>P.removeAttachment(a.id),loading:a.loading,notes:a.notes,onNotesChange:b=>P.updateNotes(a.id,b)},a.id))}):null,P.uploadError?(0,b.jsx)("p",{className:"text-destructive px-4 pb-2 text-xs",children:P.uploadError}):null,(0,b.jsxs)("div",{className:"border-border/60 flex shrink-0 items-center gap-3 border-t px-3 py-2 dark:border-white/10",children:[(0,b.jsx)(s.AgentModelPicker,{initialAgentType:C??"",initialModel:E??"",mode:"override",showInstallStatus:!0,onAgentModelChange:(a,b)=>{D(a),F(b)},className:"w-55"}),(0,b.jsx)("div",{className:"flex-1"}),Q?(0,b.jsxs)(w.DropdownMenu,{children:[(0,b.jsx)(w.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button","data-testid":"build-mode-selector",className:"text-muted-foreground hover:text-foreground hover:bg-accent/50 flex cursor-pointer items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors",children:[(0,b.jsxs)("span",{className:"flex animate-[onboard-fade-up_0.25s_ease-out_both] items-center gap-1.5",children:[(0,b.jsx)(Y,{className:"h-3.5 w-3.5"}),X.label]},R),(0,b.jsx)(j.ChevronDown,{className:"h-3 w-3 opacity-50"})]})}),(0,b.jsx)(w.DropdownMenuContent,{align:"end",className:"min-w-[160px]",children:y.map(a=>{let c=z[a],d=c.icon,e=R===a;return(0,b.jsxs)(w.DropdownMenuItem,{onClick:()=>H(a),"data-testid":`build-mode-${a}`,className:"flex items-center gap-2",children:[(0,b.jsx)(d,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"flex-1",children:c.label}),e?(0,b.jsx)(k.Check,{className:"text-foreground h-3.5 w-3.5"}):null]},a)})})]}):null,(0,b.jsxs)(v.Tooltip,{children:[(0,b.jsx)(v.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:V,disabled:I,"aria-label":o("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors disabled:opacity-50",children:(0,b.jsx)(e.Paperclip,{className:"h-4 w-4"})})}),(0,b.jsx)(v.TooltipContent,{side:"top",children:o("chat.attachFiles")})]}),(0,b.jsx)("button",{type:"button",onClick:T,disabled:!A.trim()||I,className:(0,n.cn)("bg-foreground text-background inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg","hover:bg-foreground/90 disabled:pointer-events-none disabled:opacity-30","transition-all duration-150"),children:I?(0,b.jsx)(f.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(d.SendHorizontal,{className:"h-3.5 w-3.5"})})]})]}),K?(0,b.jsx)("p",{className:"text-destructive mt-2 text-center text-sm",children:K}):null]}),(0,b.jsx)("div",{className:"mt-6 flex animate-[onboard-fade-up_0.4s_ease-out_both] flex-wrap justify-center gap-2",children:X.suggestions.map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>W(a),disabled:I,className:"text-muted-foreground hover:text-foreground border-border/60 hover:border-border hover:bg-accent/50 cursor-pointer rounded-full border px-3.5 py-1.5 text-xs transition-all duration-150 disabled:opacity-50 dark:border-white/10 dark:hover:border-white/20 dark:hover:bg-white/[0.06]",children:a},a))},R)]})]})}a.s(["ControlCenterEmptyState",()=>A],857411)},36709,a=>{"use strict";var b=a.i(289111);let c=(0,b.createServerReference)("400601cc704fc3a542db95c4219b7261168cbe675d",b.callServer,void 0,b.findSourceMapURL,"deleteApplication");a.s(["deleteApplication",()=>c])},261189,a=>{"use strict";function b(a,b,c,d){return"processing"===b?{label:"In Progress",dotClass:"bg-violet-500",borderClass:"",pulse:!0,previewDisabled:!0}:"awaiting_input"===b?{label:"Action Required",dotClass:"bg-amber-500",borderClass:"border-amber-500/60",pulse:!0,previewDisabled:!0}:"interrupted"===d?{label:"Interrupted",dotClass:"bg-amber-500",borderClass:"border-amber-500/60",pulse:!1,previewDisabled:!0}:"failed"===d?{label:"Failed",dotClass:"bg-red-500",borderClass:"border-red-500/60",pulse:!1,previewDisabled:!0}:"building"===d?{label:"In Progress",dotClass:"bg-violet-500",borderClass:"",pulse:!0,previewDisabled:!0}:c?{label:"Live",dotClass:"bg-emerald-500",borderClass:"",pulse:!0,previewDisabled:!1}:"Error"===a?{label:"Error",dotClass:"bg-red-500",borderClass:"border-red-500/60",pulse:!1,previewDisabled:!0}:{label:"Ready",dotClass:"bg-sky-500",borderClass:"",pulse:!1,previewDisabled:!1}}a.s(["deriveAppLiveStatus",()=>b])},887973,a=>{"use strict";function b(a){return`app-${a}`}a.s(["featureIdForApplication",()=>b])},806130,a=>{"use strict";let b=(0,a.i(225700).default)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);a.s(["MoreHorizontal",()=>b],806130)},793193,a=>{"use strict";var b=a.i(991857);a.s(["TriangleAlert",()=>b.default])},748957,a=>{"use strict";var b=a.i(556365),c=a.i(746847);function d({d:a,...c}){return(0,b.jsx)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",...c,"aria-hidden":"true",children:(0,b.jsx)("path",{d:a})})}function e(a){return(0,b.jsx)(d,{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12",...a})}let f={[c.CloudDeploymentProvider.CloudflarePages]:function(a){return(0,b.jsx)(d,{d:"M10.715 14.32H5.442l-.64-1.203L13.673 0l1.397.579-1.752 9.112h5.24l.648 1.192L10.719 24l-1.412-.54ZM4.091 5.448a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.543 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.544 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm8.657-2.7h5.424l.772.771v16.975l-.772.772h-7.392l.374-.579h6.779l.432-.432V3.758l-.432-.432h-4.676l-.552 2.85h-.59l.529-2.877.108-.552ZM2.74 21.265l-.772-.772V3.518l.772-.771h7.677l-.386.579H2.98l-.432.432v16.496l.432.432h5.586l-.092.579zm1.157-1.93h3.28l-.116.58h-3.55l-.192-.193v-3.473l.578 1.158zm13.117 0 .579.58H14.7l.385-.58z",...a})},[c.CloudDeploymentProvider.Vercel]:function(a){return(0,b.jsx)(d,{d:"m12 1.608 12 20.784H0Z",...a})},[c.CloudDeploymentProvider.Netlify]:function(a){return(0,b.jsx)(d,{d:"M6.49 19.04h-.23L5.13 17.9v-.23l1.73-1.71h1.2l.15.15v1.2L6.5 19.04ZM5.13 6.31V6.1l1.13-1.13h.23L8.2 6.68v1.2l-.15.15h-1.2L5.13 6.31Zm9.96 9.09h-1.65l-.14-.13v-3.83c0-.68-.27-1.2-1.1-1.23-.42 0-.9 0-1.43.02l-.07.08v4.96l-.14.14H8.9l-.13-.14V8.73l.13-.14h3.7a2.6 2.6 0 0 1 2.61 2.6v4.08l-.13.14Zm-8.37-2.44H.14L0 12.82v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14Zm17.14 0h-6.58l-.14-.14v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14ZM11.05 6.55V1.64l.14-.14h1.65l.14.14v4.9l-.14.14h-1.65l-.14-.13Zm0 15.81v-4.9l.14-.14h1.65l.14.13v4.91l-.14.14h-1.65l-.14-.14Z",...a})},[c.CloudDeploymentProvider.AwsAmplify]:function(a){return(0,b.jsx)(d,{d:"M11.58 2.1 1.15 20.87h4.33l1.9-3.5h9.24l1.9 3.5h4.33L12.42 2.1h-.84Zm.42 5.6 3.12 5.73H8.88L12 7.7Z",...a})},[c.CloudDeploymentProvider.GcpCloudRun]:function(a){return(0,b.jsx)(d,{d:"M12.19 2.38a9.344 9.344 0 0 0-9.234 6.893c.053-.02-.055.013 0 0-3.875 2.551-3.922 8.11-.247 10.941l.006-.007-.007.03a6.717 6.717 0 0 0 4.077 1.356h5.173l.03.03h5.192c6.687.053 9.376-8.605 3.835-12.35a9.365 9.365 0 0 0-2.821-4.552l-.043.043.006-.05A9.344 9.344 0 0 0 12.19 2.38zm-.358 4.146c1.244-.04 2.518.368 3.486 1.15a5.186 5.186 0 0 1 1.862 4.078v.518c3.53-.07 3.53 5.262 0 5.193h-5.193l-.008.009v-.04H6.785a2.59 2.59 0 0 1-1.067-.23h.001a2.597 2.597 0 1 1 3.437-3.437l3.013-3.012A6.747 6.747 0 0 0 8.11 8.24c.018-.01.04-.026.054-.023a5.186 5.186 0 0 1 3.67-1.69z",...a})}},g={[c.CloudDeploymentProvider.CloudflarePages]:"#F38020",[c.CloudDeploymentProvider.Vercel]:"#000000",[c.CloudDeploymentProvider.Netlify]:"#00C7B7",[c.CloudDeploymentProvider.AwsAmplify]:"#FF9900",[c.CloudDeploymentProvider.GcpCloudRun]:"#4285F4"};a.s(["CLOUD_PROVIDER_BRAND_HEX",0,g,"CLOUD_PROVIDER_ICONS",0,f,"GitHubIcon",()=>e])},795071,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js"].map(b=>a.l(b))).then(()=>b(314573)))},845515,a=>{a.v(a=>Promise.resolve().then(()=>a(701377)))},88378,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js"].map(b=>a.l(b))).then(()=>b(386100)))}];
2
2
 
3
- //# sourceMappingURL=_5a3edc88._.js.map
3
+ //# sourceMappingURL=_673be4f1._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/clipboard-list.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/sparkles.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/arrow-right.ts","../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx","../../../../../../../src/presentation/web/app/actions/data%3A388df5%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A4bb77e%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A504522%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/lib/derive-app-status.ts","../../../../../../../packages/core/src/domain/shared/feature-id.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/ellipsis.ts","../../../../../../../src/presentation/web/components/features/application-page/cloud-provider-icons.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '8', height: '4', x: '8', y: '2', rx: '1', ry: '1', key: 'tgr4d6' }],\n [\n 'path',\n {\n d: 'M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2',\n key: '116196',\n },\n ],\n ['path', { d: 'M12 11h4', key: '1jrz19' }],\n ['path', { d: 'M12 16h4', key: 'n85exb' }],\n ['path', { d: 'M8 11h.01', key: '1dfujw' }],\n ['path', { d: 'M8 16h.01', key: '18s6g9' }],\n];\n\n/**\n * @component @name ClipboardList\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI0IiB4PSI4IiB5PSIyIiByeD0iMSIgcnk9IjEiIC8+CiAgPHBhdGggZD0iTTE2IDRoMmEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yVjZhMiAyIDAgMCAxIDItMmgyIiAvPgogIDxwYXRoIGQ9Ik0xMiAxMWg0IiAvPgogIDxwYXRoIGQ9Ik0xMiAxNmg0IiAvPgogIDxwYXRoIGQ9Ik04IDExaC4wMSIgLz4KICA8cGF0aCBkPSJNOCAxNmguMDEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/clipboard-list\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ClipboardList = createLucideIcon('clipboard-list', __iconNode);\n\nexport default ClipboardList;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n","'use client';\n\nimport { useState, useCallback, useRef, useEffect } from 'react';\nimport {\n SendHorizontal,\n Paperclip,\n Loader2,\n LayoutGrid,\n Zap,\n ClipboardList,\n ChevronDown,\n Check,\n X,\n} from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { cn } from '@/lib/utils';\nimport { createProjectAndFeature } from '@/app/actions/create-project-and-feature';\nimport { createApplication } from '@/app/actions/create-application';\nimport { getDefaultAgentAndModel } from '@/app/actions/get-default-agent-and-model';\nimport { AgentModelPicker } from '@/components/features/settings/AgentModelPicker';\nimport { AttachmentChip } from '@/components/common/attachment-chip';\nimport { ShepLogo } from '@/components/common/shep-logo';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { useAttachments } from '@/hooks/use-attachments';\n\ntype BuildMode = 'application' | 'fast' | 'spec';\n\nconst BUILD_MODES: BuildMode[] = ['application', 'fast', 'spec'];\n\nconst BUILD_MODE_CONFIG: Record<\n BuildMode,\n {\n icon: React.ElementType;\n label: string;\n placeholder: string;\n suggestions: string[];\n }\n> = {\n application: {\n icon: LayoutGrid,\n label: 'Application',\n placeholder: 'Build a modern e-commerce storefront with product catalog...',\n suggestions: [\n 'A landing page with hero, features, and pricing sections',\n 'Full-stack SaaS app with auth, billing, and dashboard',\n 'Mobile-first social media app with real-time chat',\n 'Personal portfolio with blog and project showcase',\n ],\n },\n fast: {\n icon: Zap,\n label: 'Fast',\n placeholder: 'Add a dark mode toggle to the settings page...',\n suggestions: [\n 'Add pagination to the users list endpoint',\n 'Fix the broken logout redirect',\n 'Add input validation to the signup form',\n 'Refactor the API error handling middleware',\n ],\n },\n spec: {\n icon: ClipboardList,\n label: 'Spec Driven',\n placeholder: 'Implement a role-based access control system with audit logging...',\n suggestions: [\n 'OAuth2 authentication with SSO and MFA support',\n 'Event-driven notification system with email and push',\n 'REST API with versioning, rate limiting, and OpenAPI docs',\n 'Data pipeline with ETL, validation, and monitoring',\n ],\n },\n};\n\nexport interface ControlCenterEmptyStateProps {\n onRepositorySelect?: (path: string) => void;\n onApplicationCreated?: (applicationId: string) => void;\n onClose?: () => void;\n className?: string;\n}\n\nexport function ControlCenterEmptyState({\n onRepositorySelect,\n onApplicationCreated,\n onClose,\n className,\n}: ControlCenterEmptyStateProps) {\n const { t } = useTranslation('web');\n const [description, setDescription] = useState('');\n // Default agent + model come from the user's settings (the SINGLE\n // source of truth). We seed them from the server action on mount so\n // the picker shows what the system would actually use, and so the\n // values flow through to createApplication even when the user does\n // not interact with the picker. Hardcoding `'claude-code'` here is\n // BANNED — it lies about what's active when the user's settings\n // point elsewhere (e.g. the demo `dev` agent), causing interactive\n // session boots to fail with \"Agent type 'dev' does not support\n // interactive sessions\".\n const [overrideAgent, setOverrideAgent] = useState<string | undefined>(undefined);\n const [overrideModel, setOverrideModel] = useState<string | undefined>(undefined);\n useEffect(() => {\n void getDefaultAgentAndModel().then((d) => {\n setOverrideAgent((prev) => prev ?? d.agentType);\n setOverrideModel((prev) => prev ?? d.model);\n });\n }, []);\n const [buildMode, setBuildMode] = useState<BuildMode>('application');\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isFocused, setIsFocused] = useState(false);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const att = useAttachments();\n\n // Apps-only surface (no onRepositorySelect handler): fast/spec modes don't\n // make sense — there's no canvas to attach a feature to. Force application\n // mode and hide the dropdown so the UI doesn't promise behavior we don't have.\n const showModeDropdown = Boolean(onRepositorySelect);\n const effectiveMode: BuildMode = showModeDropdown ? buildMode : 'application';\n\n // Circular mode switching with Shift+Tab, close overlay with Escape\n const cycleBuildMode = useCallback(() => {\n setBuildMode((prev) => {\n const idx = BUILD_MODES.indexOf(prev);\n return BUILD_MODES[(idx + 1) % BUILD_MODES.length];\n });\n }, []);\n\n useEffect(() => {\n const handleGlobalKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && onClose) onClose();\n // Shift+Tab cycles only when the dropdown is actually visible —\n // mutating hidden state would be confusing.\n if (e.key === 'Tab' && e.shiftKey && onRepositorySelect) {\n e.preventDefault();\n cycleBuildMode();\n }\n };\n window.addEventListener('keydown', handleGlobalKeyDown);\n return () => window.removeEventListener('keydown', handleGlobalKeyDown);\n }, [onClose, cycleBuildMode, onRepositorySelect]);\n\n const handleSubmit = useCallback(async () => {\n if (!description.trim() || submitting) return;\n\n setSubmitting(true);\n setError(null);\n\n try {\n // When there's no onRepositorySelect handler (e.g. applications-only\n // surface), fast/spec modes can't navigate to a repository canvas.\n // Route ALL modes through the application creation flow so the user\n // lands on /application/[id] regardless of selected mode.\n const useApplicationFlow = effectiveMode === 'application' || !onRepositorySelect;\n\n if (useApplicationFlow) {\n // The server action creates the app AND synchronously posts the\n // user's prompt as the first interactive chat message, so when we\n // navigate, /application/[id] SSR-loads chat state and the message\n // is visible on first paint. No prompt in the URL, no extra\n // round trip on the client.\n const result = await createApplication({\n description: description.trim(),\n agentType: overrideAgent,\n modelOverride: overrideModel,\n initialPrompt: description.trim(),\n });\n\n if (result.error) {\n setError(result.error);\n setSubmitting(false);\n return;\n }\n\n if (result.application) {\n onApplicationCreated?.(result.application.id);\n }\n } else {\n const result = await createProjectAndFeature({\n description: description.trim(),\n attachments: att.completedAttachments.map((a) => ({\n path: a.path,\n name: a.name,\n notes: a.notes,\n })),\n agentType: overrideAgent,\n model: overrideModel,\n fast: effectiveMode === 'fast',\n });\n\n if (result.error) {\n setError(result.error);\n setSubmitting(false);\n return;\n }\n\n if (result.repositoryPath) {\n onRepositorySelect?.(result.repositoryPath);\n }\n\n if (result.feature && result.repositoryPath) {\n window.dispatchEvent(\n new CustomEvent('shep:feature-created', {\n detail: {\n featureId: result.feature.id,\n name: result.feature.name,\n description: result.feature.description,\n repositoryPath: result.repositoryPath,\n },\n })\n );\n }\n }\n } catch {\n setError('Something went wrong. Please try again.');\n setSubmitting(false);\n }\n }, [\n description,\n submitting,\n effectiveMode,\n att.completedAttachments,\n overrideAgent,\n overrideModel,\n onRepositorySelect,\n onApplicationCreated,\n ]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n handleSubmit();\n }\n },\n [handleSubmit]\n );\n\n const handlePickFiles = useCallback(async () => {\n try {\n const res = await fetch('/api/dialog/pick-files');\n if (!res.ok) return;\n const data = (await res.json()) as { paths?: string[] };\n if (!data.paths?.length) return;\n for (const filePath of data.paths) {\n const uploadRes = await fetch('/api/attachments/upload-from-path', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ path: filePath, sessionId: 'onboarding' }),\n });\n if (!uploadRes.ok) continue;\n const uploaded = (await uploadRes.json()) as {\n id: string;\n name: string;\n size: number;\n mimeType: string;\n path: string;\n };\n att.addAttachment(uploaded);\n }\n } catch {\n // Native picker not available — ignore\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- att.addAttachment is stable\n }, [att.addAttachment]);\n\n const handleSuggestionClick = useCallback((suggestion: string) => {\n setDescription(suggestion);\n textareaRef.current?.focus();\n }, []);\n\n const modeConfig = BUILD_MODE_CONFIG[effectiveMode];\n const ModeIcon = modeConfig.icon;\n\n return (\n <div\n data-testid=\"control-center-empty-state\"\n className={cn(\n 'relative flex h-full w-full flex-col items-center justify-center overflow-hidden px-8',\n className\n )}\n >\n {/* Gradient background — covers canvas dots */}\n <div className=\"onboard-bg pointer-events-none absolute inset-0 animate-[onboard-fade-in_1.2s_ease-out_both]\" />\n\n {/* Close button — only shown when used as overlay */}\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"text-muted-foreground hover:text-foreground hover:bg-accent/50 absolute top-4 right-4 z-10 cursor-pointer rounded p-1.5 transition-colors\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n ) : null}\n\n <div className=\"relative flex w-full max-w-2xl flex-col items-center\">\n {/* Shep Logo */}\n <div\n className=\"mb-6 animate-[onboard-logo_0.8s_cubic-bezier(0.16,1,0.3,1)_both]\"\n style={{ animationDelay: '0ms' }}\n >\n <ShepLogo size={72} className=\"text-foreground\" />\n </div>\n\n {/* Hero text */}\n <h1\n className=\"text-foreground animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-5xl font-extralight tracking-tight\"\n style={{ animationDelay: '120ms' }}\n >\n What do you want to build?\n </h1>\n <p\n className=\"text-muted-foreground mt-3 animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-lg leading-relaxed font-light\"\n style={{ animationDelay: '220ms' }}\n >\n Describe your idea and Shep creates the project for you.\n </p>\n\n {/* Prompt box */}\n <div\n className=\"mt-10 w-full animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both]\"\n style={{ animationDelay: '350ms' }}\n >\n <div\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onDragEnter={att.handleDragEnter}\n onDragLeave={att.handleDragLeave}\n onDragOver={att.handleDragOver}\n onDrop={att.handleDrop}\n className={cn(\n 'flex flex-col rounded-xl border transition-all duration-200',\n 'border-border/60 bg-background shadow-sm dark:border-white/10 dark:bg-white/[0.04]',\n isFocused &&\n 'ring-ring/50 border-ring shadow-md ring-[3px] dark:border-orange-500/40 dark:ring-orange-500/25',\n att.isDragOver && 'border-primary/50 bg-primary/5',\n submitting && 'opacity-70'\n )}\n >\n {/* Textarea — supports paste for images */}\n <textarea\n ref={textareaRef}\n rows={2}\n autoFocus\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n onKeyDown={handleKeyDown}\n onPaste={att.handlePaste}\n placeholder={modeConfig.placeholder}\n disabled={submitting}\n className=\"text-foreground placeholder:text-muted-foreground/60 max-h-[10rem] min-h-[4.5rem] w-full resize-none border-0 bg-transparent px-4 py-3.5 text-sm leading-relaxed focus:outline-none disabled:cursor-not-allowed\"\n />\n\n {/* Attachment chips */}\n {att.attachments.length > 0 ? (\n <div className=\"flex shrink-0 items-center gap-2.5 overflow-x-auto overflow-y-visible px-5 pt-2 pb-2\">\n {att.attachments.map((file) => (\n <AttachmentChip\n key={file.id}\n name={file.name}\n size={file.size}\n mimeType={file.mimeType}\n path={file.path}\n onRemove={() => att.removeAttachment(file.id)}\n loading={file.loading}\n notes={file.notes}\n onNotesChange={(notes) => att.updateNotes(file.id, notes)}\n />\n ))}\n </div>\n ) : null}\n\n {/* Upload error */}\n {att.uploadError ? (\n <p className=\"text-destructive px-4 pb-2 text-xs\">{att.uploadError}</p>\n ) : null}\n\n {/* Controls bar */}\n <div className=\"border-border/60 flex shrink-0 items-center gap-3 border-t px-3 py-2 dark:border-white/10\">\n <AgentModelPicker\n initialAgentType={overrideAgent ?? ''}\n initialModel={overrideModel ?? ''}\n mode=\"override\"\n showInstallStatus\n onAgentModelChange={(agent, model) => {\n setOverrideAgent(agent);\n setOverrideModel(model);\n }}\n className=\"w-55\"\n />\n <div className=\"flex-1\" />\n\n {/* Build mode dropdown — Shift+Tab to cycle. Only shown when\n the surface can actually act on fast/spec (i.e. there's an\n onRepositorySelect handler tied to a canvas). */}\n {showModeDropdown ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n data-testid=\"build-mode-selector\"\n className=\"text-muted-foreground hover:text-foreground hover:bg-accent/50 flex cursor-pointer items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors\"\n >\n <span\n key={effectiveMode}\n className=\"flex animate-[onboard-fade-up_0.25s_ease-out_both] items-center gap-1.5\"\n >\n <ModeIcon className=\"h-3.5 w-3.5\" />\n {modeConfig.label}\n </span>\n <ChevronDown className=\"h-3 w-3 opacity-50\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"min-w-[160px]\">\n {BUILD_MODES.map((mode) => {\n const cfg = BUILD_MODE_CONFIG[mode];\n const Icon = cfg.icon;\n const isActive = effectiveMode === mode;\n return (\n <DropdownMenuItem\n key={mode}\n onClick={() => setBuildMode(mode)}\n data-testid={`build-mode-${mode}`}\n className=\"flex items-center gap-2\"\n >\n <Icon className=\"h-3.5 w-3.5\" />\n <span className=\"flex-1\">{cfg.label}</span>\n {isActive ? <Check className=\"text-foreground h-3.5 w-3.5\" /> : null}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : null}\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n onClick={handlePickFiles}\n disabled={submitting}\n aria-label={t('chat.attachFiles')}\n className=\"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors disabled:opacity-50\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">{t('chat.attachFiles')}</TooltipContent>\n </Tooltip>\n\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={!description.trim() || submitting}\n className={cn(\n 'bg-foreground text-background inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg',\n 'hover:bg-foreground/90 disabled:pointer-events-none disabled:opacity-30',\n 'transition-all duration-150'\n )}\n >\n {submitting ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : (\n <SendHorizontal className=\"h-3.5 w-3.5\" />\n )}\n </button>\n </div>\n </div>\n\n {error ? <p className=\"text-destructive mt-2 text-center text-sm\">{error}</p> : null}\n </div>\n\n {/* Suggestion chips — re-animate on mode change */}\n <div\n key={effectiveMode}\n className=\"mt-6 flex animate-[onboard-fade-up_0.4s_ease-out_both] flex-wrap justify-center gap-2\"\n >\n {modeConfig.suggestions.map((suggestion) => (\n <button\n key={suggestion}\n type=\"button\"\n onClick={() => handleSuggestionClick(suggestion)}\n disabled={submitting}\n className=\"text-muted-foreground hover:text-foreground border-border/60 hover:border-border hover:bg-accent/50 cursor-pointer rounded-full border px-3.5 py-1.5 text-xs transition-all duration-150 disabled:opacity-50 dark:border-white/10 dark:hover:border-white/20 dark:hover:bg-white/[0.06]\"\n >\n {suggestion}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40ba17f62f174f4f88aa0ea4a373db347247ae1171\":\"createProjectAndFeature\"},\"src/presentation/web/app/actions/create-project-and-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40ba17f62f174f4f88aa0ea4a373db347247ae1171\",callServer,void 0,findSourceMapURL,\"createProjectAndFeature\");export{$$RSC_SERVER_ACTION_0 as createProjectAndFeature};","/* __next_internal_action_entry_do_not_use__ [{\"40f744f8f8785a86cc8dc9487da8d64ca353d264af\":\"createApplication\"},\"src/presentation/web/app/actions/create-application.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40f744f8f8785a86cc8dc9487da8d64ca353d264af\",callServer,void 0,findSourceMapURL,\"createApplication\");export{$$RSC_SERVER_ACTION_0 as createApplication};","/* __next_internal_action_entry_do_not_use__ [{\"40af1b8d14947496efa0de09d2e46341cfadd226ac\":\"deleteApplication\"},\"src/presentation/web/app/actions/delete-application.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40af1b8d14947496efa0de09d2e46341cfadd226ac\",callServer,void 0,findSourceMapURL,\"deleteApplication\");export{$$RSC_SERVER_ACTION_0 as deleteApplication};","/**\n * Shared status derivation for application cards, canvas nodes, and\n * the application page status pill.\n *\n * Priority (highest wins):\n *\n * - `processing` → \"In Progress\" (agent actively running a turn)\n * - `awaiting_input` → \"Action Required\" (agent blocked on user input)\n * - effectiveStatus → from use case (interrupted/failed/running)\n * - deployment live → \"Live\" (dev server running)\n * - persisted Error → \"Error\"\n * - otherwise → \"Ready\" (idle, no issues)\n */\n\nexport interface AppLiveStatus {\n label: string;\n dotClass: string;\n borderClass: string;\n pulse: boolean;\n /** Whether the preview/deploy action should be disabled in this state. */\n previewDisabled: boolean;\n}\n\nexport function deriveAppLiveStatus(\n persistedStatus: string,\n turnStatus: string,\n hasDeployment: boolean,\n effectiveStatus?: string\n): AppLiveStatus {\n // Live turn status takes highest priority (real-time SSE)\n if (turnStatus === 'processing') {\n return {\n label: 'In Progress',\n dotClass: 'bg-violet-500',\n borderClass: '',\n pulse: true,\n previewDisabled: true,\n };\n }\n if (turnStatus === 'awaiting_input') {\n return {\n label: 'Action Required',\n dotClass: 'bg-amber-500',\n borderClass: 'border-amber-500/60',\n pulse: true,\n previewDisabled: true,\n };\n }\n\n // Use case-computed effective status (from workflow steps)\n if (effectiveStatus === 'interrupted') {\n return {\n label: 'Interrupted',\n dotClass: 'bg-amber-500',\n borderClass: 'border-amber-500/60',\n pulse: false,\n previewDisabled: true,\n };\n }\n if (effectiveStatus === 'failed') {\n return {\n label: 'Failed',\n dotClass: 'bg-red-500',\n borderClass: 'border-red-500/60',\n pulse: false,\n previewDisabled: true,\n };\n }\n if (effectiveStatus === 'building') {\n return {\n label: 'In Progress',\n dotClass: 'bg-violet-500',\n borderClass: '',\n pulse: true,\n previewDisabled: true,\n };\n }\n\n // Deployment state\n if (hasDeployment) {\n return {\n label: 'Live',\n dotClass: 'bg-emerald-500',\n borderClass: '',\n pulse: true,\n previewDisabled: false,\n };\n }\n\n // Persisted entity status\n if (persistedStatus === 'Error') {\n return {\n label: 'Error',\n dotClass: 'bg-red-500',\n borderClass: 'border-red-500/60',\n pulse: false,\n previewDisabled: true,\n };\n }\n\n return {\n label: 'Ready',\n dotClass: 'bg-sky-500',\n borderClass: '',\n pulse: false,\n previewDisabled: false,\n };\n}\n","/**\n * Feature-id namespace helpers.\n *\n * The project uses string feature-ids to key interactive agent sessions and\n * workflow steps. Applications reuse this system by prefixing their id with\n * `app-`. Historically this was spread as raw string literals and regexes\n * across core and presentation (clean-arch violation #11 in spec 089).\n *\n * These helpers centralise the convention so callers never need to know the\n * prefix literal.\n */\n\nconst APPLICATION_FEATURE_ID_PREFIX = 'app-';\n\n/**\n * Build the feature-id used for an Application with the given domain id.\n */\nexport function featureIdForApplication(applicationId: string): string {\n return `${APPLICATION_FEATURE_ID_PREFIX}${applicationId}`;\n}\n\n/**\n * Extract the Application id from a feature-id if it belongs to the\n * application namespace. Returns `null` otherwise.\n */\nexport function applicationIdFromFeatureId(featureId: string): string | null {\n if (!isApplicationFeatureId(featureId)) return null;\n return featureId.slice(APPLICATION_FEATURE_ID_PREFIX.length);\n}\n\n/**\n * Return true when the given feature-id belongs to the application namespace.\n */\nexport function isApplicationFeatureId(featureId: string): boolean {\n return featureId.startsWith(APPLICATION_FEATURE_ID_PREFIX);\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n];\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ellipsis = createLucideIcon('ellipsis', __iconNode);\n\nexport default Ellipsis;\n","'use client';\n\n/**\n * Centralized provider icons for the cloud-deploy dropdown.\n *\n * Inlined SVG paths copied from `simple-icons` (CC0, verified against the\n * 16.x release). Each icon is a plain SVG React component that accepts\n * `className` + standard SVG props so the provider list can size them\n * uniformly. Brand hex colors are exposed via `CLOUD_PROVIDER_BRAND_HEX`\n * so the list can colorize the icon per provider without baking a `fill`\n * into the SVG (lets callers force a neutral tint in disabled states).\n *\n * Adding a new provider: drop a new component + map it in\n * `CLOUD_PROVIDER_ICONS` below and add its hex to `CLOUD_PROVIDER_BRAND_HEX`.\n */\n\nimport type { ReactElement, SVGProps } from 'react';\nimport { CloudDeploymentProvider } from '@shepai/core/domain/generated/output';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\n/** Thin wrapper that injects the shared viewBox + xmlns so the per-icon\n * components stay single-line path declarations. */\nfunction BrandSvg({ d, ...props }: { d: string } & IconProps) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n {...props}\n aria-hidden=\"true\"\n >\n <path d={d} />\n </svg>\n );\n}\n\n/** Cloudflare Pages — simple-icons `cloudflarepages`. */\nexport function CloudflareIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M10.715 14.32H5.442l-.64-1.203L13.673 0l1.397.579-1.752 9.112h5.24l.648 1.192L10.719 24l-1.412-.54ZM4.091 5.448a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.543 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.544 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm8.657-2.7h5.424l.772.771v16.975l-.772.772h-7.392l.374-.579h6.779l.432-.432V3.758l-.432-.432h-4.676l-.552 2.85h-.59l.529-2.877.108-.552ZM2.74 21.265l-.772-.772V3.518l.772-.771h7.677l-.386.579H2.98l-.432.432v16.496l.432.432h5.586l-.092.579zm1.157-1.93h3.28l-.116.58h-3.55l-.192-.193v-3.473l.578 1.158zm13.117 0 .579.58H14.7l.385-.58z\"\n {...props}\n />\n );\n}\n\n/** Vercel — simple-icons `vercel`. Solid triangle. */\nexport function VercelIcon(props: IconProps) {\n return <BrandSvg d=\"m12 1.608 12 20.784H0Z\" {...props} />;\n}\n\n/** Netlify — simple-icons `netlify`. */\nexport function NetlifyIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M6.49 19.04h-.23L5.13 17.9v-.23l1.73-1.71h1.2l.15.15v1.2L6.5 19.04ZM5.13 6.31V6.1l1.13-1.13h.23L8.2 6.68v1.2l-.15.15h-1.2L5.13 6.31Zm9.96 9.09h-1.65l-.14-.13v-3.83c0-.68-.27-1.2-1.1-1.23-.42 0-.9 0-1.43.02l-.07.08v4.96l-.14.14H8.9l-.13-.14V8.73l.13-.14h3.7a2.6 2.6 0 0 1 2.61 2.6v4.08l-.13.14Zm-8.37-2.44H.14L0 12.82v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14Zm17.14 0h-6.58l-.14-.14v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14ZM11.05 6.55V1.64l.14-.14h1.65l.14.14v4.9l-.14.14h-1.65l-.14-.13Zm0 15.81v-4.9l.14-.14h1.65l.14.13v4.91l-.14.14h-1.65l-.14-.14Z\"\n {...props}\n />\n );\n}\n\n/** AWS Amplify — simple-icons does NOT ship an AWS Amplify brand mark\n * (AWS trademark restrictions), so we fall back to a stylised \"A\" chevron\n * that reads as \"AWS-ish\" without infringing. Users never deploy here in\n * v1 — it's a \"Coming soon\" row — so a perfect brand match isn't worth\n * the legal headache. */\nexport function AwsAmplifyIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M11.58 2.1 1.15 20.87h4.33l1.9-3.5h9.24l1.9 3.5h4.33L12.42 2.1h-.84Zm.42 5.6 3.12 5.73H8.88L12 7.7Z\"\n {...props}\n />\n );\n}\n\n/** Google Cloud — simple-icons `googlecloud`. */\nexport function GcpCloudRunIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M12.19 2.38a9.344 9.344 0 0 0-9.234 6.893c.053-.02-.055.013 0 0-3.875 2.551-3.922 8.11-.247 10.941l.006-.007-.007.03a6.717 6.717 0 0 0 4.077 1.356h5.173l.03.03h5.192c6.687.053 9.376-8.605 3.835-12.35a9.365 9.365 0 0 0-2.821-4.552l-.043.043.006-.05A9.344 9.344 0 0 0 12.19 2.38zm-.358 4.146c1.244-.04 2.518.368 3.486 1.15a5.186 5.186 0 0 1 1.862 4.078v.518c3.53-.07 3.53 5.262 0 5.193h-5.193l-.008.009v-.04H6.785a2.59 2.59 0 0 1-1.067-.23h.001a2.597 2.597 0 1 1 3.437-3.437l3.013-3.012A6.747 6.747 0 0 0 8.11 8.24c.018-.01.04-.026.054-.023a5.186 5.186 0 0 1 3.67-1.69z\"\n {...props}\n />\n );\n}\n\n/** GitHub — simple-icons `github`. */\nexport function GitHubIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n {...props}\n />\n );\n}\n\nexport const CLOUD_PROVIDER_ICONS: Record<\n CloudDeploymentProvider,\n (props: IconProps) => ReactElement\n> = {\n [CloudDeploymentProvider.CloudflarePages]: CloudflareIcon,\n [CloudDeploymentProvider.Vercel]: VercelIcon,\n [CloudDeploymentProvider.Netlify]: NetlifyIcon,\n [CloudDeploymentProvider.AwsAmplify]: AwsAmplifyIcon,\n [CloudDeploymentProvider.GcpCloudRun]: GcpCloudRunIcon,\n};\n\n/** Brand hex colors from the simple-icons metadata (minus the leading `#`).\n * Used by ProviderList so each row's icon renders in the real brand color\n * when enabled, and falls back to the muted token when disabled. */\nexport const CLOUD_PROVIDER_BRAND_HEX: Record<CloudDeploymentProvider, string> = {\n [CloudDeploymentProvider.CloudflarePages]: '#F38020',\n [CloudDeploymentProvider.Vercel]: '#000000',\n [CloudDeploymentProvider.Netlify]: '#00C7B7',\n [CloudDeploymentProvider.AwsAmplify]: '#FF9900',\n [CloudDeploymentProvider.GcpCloudRun]: '#4285F4',\n};\n"],"names":[],"mappings":"uCA6BA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAhB,AAAgB,CAAhB,AAAgB,CAAhB,AAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CA1BH,CA0BqB,AAzBvD,CAyBuD,AAzBtD,CAAA,AAyBsD,CAzBtD,AAyBsD,CAAA,AAzBtD,CAAA,AAyBsD,CAzBtD,AAyBsD,CAAA,AAzBtD,CAAQ,AAyB8C,AAzBtD,CAAQ,AAAE,AAyB4C,CAAU,CAAA,GAzBtD,CAAA,AAAO,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,AAAG,CAAA,CAAA,EAAK,CAAA,CAAA,CAAA,AAAI,GAAA,CAAA,AAAK,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACrF,CACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CACE,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAET,CACA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAE,AAAF,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,AAAZ,CAAY,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,AAAR,CAAQ,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAa,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,AAAb,CAAa,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC5C,8DCWA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAW,CAAA,CAAA,CAAX,AAAW,CAAA,AAAX,CAAA,AAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAxBE,CAClC,AAuB4C,CAtB1C,AAsB0C,CAAA,AAtB1C,CAAA,AAsB0C,CAtB1C,AAsB0C,CAtB1C,AAsB0C,CAtB1C,AAsB0C,CAtB1C,AAsB0C,CArB1C,AAqB0C,CApBxC,AAoBwC,CApBxC,AAoBkD,CApB/C,AAoB+C,CApB/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA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","ignoreList":[0,1,2,9]}
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/clipboard-list.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/sparkles.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/arrow-right.ts","../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx","../../../../../../../src/presentation/web/app/actions/data%3Ab92f3d%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A0955dd%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A2b5fe1%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/lib/derive-app-status.ts","../../../../../../../packages/core/src/domain/shared/feature-id.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/ellipsis.ts","../../../../../../../src/presentation/web/components/features/application-page/cloud-provider-icons.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '8', height: '4', x: '8', y: '2', rx: '1', ry: '1', key: 'tgr4d6' }],\n [\n 'path',\n {\n d: 'M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2',\n key: '116196',\n },\n ],\n ['path', { d: 'M12 11h4', key: '1jrz19' }],\n ['path', { d: 'M12 16h4', key: 'n85exb' }],\n ['path', { d: 'M8 11h.01', key: '1dfujw' }],\n ['path', { d: 'M8 16h.01', key: '18s6g9' }],\n];\n\n/**\n * @component @name ClipboardList\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI0IiB4PSI4IiB5PSIyIiByeD0iMSIgcnk9IjEiIC8+CiAgPHBhdGggZD0iTTE2IDRoMmEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yVjZhMiAyIDAgMCAxIDItMmgyIiAvPgogIDxwYXRoIGQ9Ik0xMiAxMWg0IiAvPgogIDxwYXRoIGQ9Ik0xMiAxNmg0IiAvPgogIDxwYXRoIGQ9Ik04IDExaC4wMSIgLz4KICA8cGF0aCBkPSJNOCAxNmguMDEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/clipboard-list\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ClipboardList = createLucideIcon('clipboard-list', __iconNode);\n\nexport default ClipboardList;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('arrow-right', __iconNode);\n\nexport default ArrowRight;\n","'use client';\n\nimport { useState, useCallback, useRef, useEffect } from 'react';\nimport {\n SendHorizontal,\n Paperclip,\n Loader2,\n LayoutGrid,\n Zap,\n ClipboardList,\n ChevronDown,\n Check,\n X,\n} from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { cn } from '@/lib/utils';\nimport { createProjectAndFeature } from '@/app/actions/create-project-and-feature';\nimport { createApplication } from '@/app/actions/create-application';\nimport { getDefaultAgentAndModel } from '@/app/actions/get-default-agent-and-model';\nimport { AgentModelPicker } from '@/components/features/settings/AgentModelPicker';\nimport { AttachmentChip } from '@/components/common/attachment-chip';\nimport { ShepLogo } from '@/components/common/shep-logo';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { useAttachments } from '@/hooks/use-attachments';\n\ntype BuildMode = 'application' | 'fast' | 'spec';\n\nconst BUILD_MODES: BuildMode[] = ['application', 'fast', 'spec'];\n\nconst BUILD_MODE_CONFIG: Record<\n BuildMode,\n {\n icon: React.ElementType;\n label: string;\n placeholder: string;\n suggestions: string[];\n }\n> = {\n application: {\n icon: LayoutGrid,\n label: 'Application',\n placeholder: 'Build a modern e-commerce storefront with product catalog...',\n suggestions: [\n 'A landing page with hero, features, and pricing sections',\n 'Full-stack SaaS app with auth, billing, and dashboard',\n 'Mobile-first social media app with real-time chat',\n 'Personal portfolio with blog and project showcase',\n ],\n },\n fast: {\n icon: Zap,\n label: 'Fast',\n placeholder: 'Add a dark mode toggle to the settings page...',\n suggestions: [\n 'Add pagination to the users list endpoint',\n 'Fix the broken logout redirect',\n 'Add input validation to the signup form',\n 'Refactor the API error handling middleware',\n ],\n },\n spec: {\n icon: ClipboardList,\n label: 'Spec Driven',\n placeholder: 'Implement a role-based access control system with audit logging...',\n suggestions: [\n 'OAuth2 authentication with SSO and MFA support',\n 'Event-driven notification system with email and push',\n 'REST API with versioning, rate limiting, and OpenAPI docs',\n 'Data pipeline with ETL, validation, and monitoring',\n ],\n },\n};\n\nexport interface ControlCenterEmptyStateProps {\n onRepositorySelect?: (path: string) => void;\n onApplicationCreated?: (applicationId: string) => void;\n onClose?: () => void;\n className?: string;\n}\n\nexport function ControlCenterEmptyState({\n onRepositorySelect,\n onApplicationCreated,\n onClose,\n className,\n}: ControlCenterEmptyStateProps) {\n const { t } = useTranslation('web');\n const [description, setDescription] = useState('');\n // Default agent + model come from the user's settings (the SINGLE\n // source of truth). We seed them from the server action on mount so\n // the picker shows what the system would actually use, and so the\n // values flow through to createApplication even when the user does\n // not interact with the picker. Hardcoding `'claude-code'` here is\n // BANNED — it lies about what's active when the user's settings\n // point elsewhere (e.g. the demo `dev` agent), causing interactive\n // session boots to fail with \"Agent type 'dev' does not support\n // interactive sessions\".\n const [overrideAgent, setOverrideAgent] = useState<string | undefined>(undefined);\n const [overrideModel, setOverrideModel] = useState<string | undefined>(undefined);\n useEffect(() => {\n void getDefaultAgentAndModel().then((d) => {\n setOverrideAgent((prev) => prev ?? d.agentType);\n setOverrideModel((prev) => prev ?? d.model);\n });\n }, []);\n const [buildMode, setBuildMode] = useState<BuildMode>('application');\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isFocused, setIsFocused] = useState(false);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const att = useAttachments();\n\n // Apps-only surface (no onRepositorySelect handler): fast/spec modes don't\n // make sense — there's no canvas to attach a feature to. Force application\n // mode and hide the dropdown so the UI doesn't promise behavior we don't have.\n const showModeDropdown = Boolean(onRepositorySelect);\n const effectiveMode: BuildMode = showModeDropdown ? buildMode : 'application';\n\n // Circular mode switching with Shift+Tab, close overlay with Escape\n const cycleBuildMode = useCallback(() => {\n setBuildMode((prev) => {\n const idx = BUILD_MODES.indexOf(prev);\n return BUILD_MODES[(idx + 1) % BUILD_MODES.length];\n });\n }, []);\n\n useEffect(() => {\n const handleGlobalKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && onClose) onClose();\n // Shift+Tab cycles only when the dropdown is actually visible —\n // mutating hidden state would be confusing.\n if (e.key === 'Tab' && e.shiftKey && onRepositorySelect) {\n e.preventDefault();\n cycleBuildMode();\n }\n };\n window.addEventListener('keydown', handleGlobalKeyDown);\n return () => window.removeEventListener('keydown', handleGlobalKeyDown);\n }, [onClose, cycleBuildMode, onRepositorySelect]);\n\n const handleSubmit = useCallback(async () => {\n if (!description.trim() || submitting) return;\n\n setSubmitting(true);\n setError(null);\n\n try {\n // When there's no onRepositorySelect handler (e.g. applications-only\n // surface), fast/spec modes can't navigate to a repository canvas.\n // Route ALL modes through the application creation flow so the user\n // lands on /application/[id] regardless of selected mode.\n const useApplicationFlow = effectiveMode === 'application' || !onRepositorySelect;\n\n if (useApplicationFlow) {\n // The server action creates the app AND synchronously posts the\n // user's prompt as the first interactive chat message, so when we\n // navigate, /application/[id] SSR-loads chat state and the message\n // is visible on first paint. No prompt in the URL, no extra\n // round trip on the client.\n const result = await createApplication({\n description: description.trim(),\n agentType: overrideAgent,\n modelOverride: overrideModel,\n initialPrompt: description.trim(),\n });\n\n if (result.error) {\n setError(result.error);\n setSubmitting(false);\n return;\n }\n\n if (result.application) {\n onApplicationCreated?.(result.application.id);\n }\n } else {\n const result = await createProjectAndFeature({\n description: description.trim(),\n attachments: att.completedAttachments.map((a) => ({\n path: a.path,\n name: a.name,\n notes: a.notes,\n })),\n agentType: overrideAgent,\n model: overrideModel,\n fast: effectiveMode === 'fast',\n });\n\n if (result.error) {\n setError(result.error);\n setSubmitting(false);\n return;\n }\n\n if (result.repositoryPath) {\n onRepositorySelect?.(result.repositoryPath);\n }\n\n if (result.feature && result.repositoryPath) {\n window.dispatchEvent(\n new CustomEvent('shep:feature-created', {\n detail: {\n featureId: result.feature.id,\n name: result.feature.name,\n description: result.feature.description,\n repositoryPath: result.repositoryPath,\n },\n })\n );\n }\n }\n } catch {\n setError('Something went wrong. Please try again.');\n setSubmitting(false);\n }\n }, [\n description,\n submitting,\n effectiveMode,\n att.completedAttachments,\n overrideAgent,\n overrideModel,\n onRepositorySelect,\n onApplicationCreated,\n ]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n handleSubmit();\n }\n },\n [handleSubmit]\n );\n\n const handlePickFiles = useCallback(async () => {\n try {\n const res = await fetch('/api/dialog/pick-files');\n if (!res.ok) return;\n const data = (await res.json()) as { paths?: string[] };\n if (!data.paths?.length) return;\n for (const filePath of data.paths) {\n const uploadRes = await fetch('/api/attachments/upload-from-path', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ path: filePath, sessionId: 'onboarding' }),\n });\n if (!uploadRes.ok) continue;\n const uploaded = (await uploadRes.json()) as {\n id: string;\n name: string;\n size: number;\n mimeType: string;\n path: string;\n };\n att.addAttachment(uploaded);\n }\n } catch {\n // Native picker not available — ignore\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- att.addAttachment is stable\n }, [att.addAttachment]);\n\n const handleSuggestionClick = useCallback((suggestion: string) => {\n setDescription(suggestion);\n textareaRef.current?.focus();\n }, []);\n\n const modeConfig = BUILD_MODE_CONFIG[effectiveMode];\n const ModeIcon = modeConfig.icon;\n\n return (\n <div\n data-testid=\"control-center-empty-state\"\n className={cn(\n 'relative flex h-full w-full flex-col items-center justify-center overflow-hidden px-8',\n className\n )}\n >\n {/* Gradient background — covers canvas dots */}\n <div className=\"onboard-bg pointer-events-none absolute inset-0 animate-[onboard-fade-in_1.2s_ease-out_both]\" />\n\n {/* Close button — only shown when used as overlay */}\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"text-muted-foreground hover:text-foreground hover:bg-accent/50 absolute top-4 right-4 z-10 cursor-pointer rounded p-1.5 transition-colors\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n ) : null}\n\n <div className=\"relative flex w-full max-w-2xl flex-col items-center\">\n {/* Shep Logo */}\n <div\n className=\"mb-6 animate-[onboard-logo_0.8s_cubic-bezier(0.16,1,0.3,1)_both]\"\n style={{ animationDelay: '0ms' }}\n >\n <ShepLogo size={72} className=\"text-foreground\" />\n </div>\n\n {/* Hero text */}\n <h1\n className=\"text-foreground animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-5xl font-extralight tracking-tight\"\n style={{ animationDelay: '120ms' }}\n >\n What do you want to build?\n </h1>\n <p\n className=\"text-muted-foreground mt-3 animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-lg leading-relaxed font-light\"\n style={{ animationDelay: '220ms' }}\n >\n Describe your idea and Shep creates the project for you.\n </p>\n\n {/* Prompt box */}\n <div\n className=\"mt-10 w-full animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both]\"\n style={{ animationDelay: '350ms' }}\n >\n <div\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onDragEnter={att.handleDragEnter}\n onDragLeave={att.handleDragLeave}\n onDragOver={att.handleDragOver}\n onDrop={att.handleDrop}\n className={cn(\n 'flex flex-col rounded-xl border transition-all duration-200',\n 'border-border/60 bg-background shadow-sm dark:border-white/10 dark:bg-white/[0.04]',\n isFocused &&\n 'ring-ring/50 border-ring shadow-md ring-[3px] dark:border-orange-500/40 dark:ring-orange-500/25',\n att.isDragOver && 'border-primary/50 bg-primary/5',\n submitting && 'opacity-70'\n )}\n >\n {/* Textarea — supports paste for images */}\n <textarea\n ref={textareaRef}\n rows={2}\n autoFocus\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n onKeyDown={handleKeyDown}\n onPaste={att.handlePaste}\n placeholder={modeConfig.placeholder}\n disabled={submitting}\n className=\"text-foreground placeholder:text-muted-foreground/60 max-h-[10rem] min-h-[4.5rem] w-full resize-none border-0 bg-transparent px-4 py-3.5 text-sm leading-relaxed focus:outline-none disabled:cursor-not-allowed\"\n />\n\n {/* Attachment chips */}\n {att.attachments.length > 0 ? (\n <div className=\"flex shrink-0 items-center gap-2.5 overflow-x-auto overflow-y-visible px-5 pt-2 pb-2\">\n {att.attachments.map((file) => (\n <AttachmentChip\n key={file.id}\n name={file.name}\n size={file.size}\n mimeType={file.mimeType}\n path={file.path}\n onRemove={() => att.removeAttachment(file.id)}\n loading={file.loading}\n notes={file.notes}\n onNotesChange={(notes) => att.updateNotes(file.id, notes)}\n />\n ))}\n </div>\n ) : null}\n\n {/* Upload error */}\n {att.uploadError ? (\n <p className=\"text-destructive px-4 pb-2 text-xs\">{att.uploadError}</p>\n ) : null}\n\n {/* Controls bar */}\n <div className=\"border-border/60 flex shrink-0 items-center gap-3 border-t px-3 py-2 dark:border-white/10\">\n <AgentModelPicker\n initialAgentType={overrideAgent ?? ''}\n initialModel={overrideModel ?? ''}\n mode=\"override\"\n showInstallStatus\n onAgentModelChange={(agent, model) => {\n setOverrideAgent(agent);\n setOverrideModel(model);\n }}\n className=\"w-55\"\n />\n <div className=\"flex-1\" />\n\n {/* Build mode dropdown — Shift+Tab to cycle. Only shown when\n the surface can actually act on fast/spec (i.e. there's an\n onRepositorySelect handler tied to a canvas). */}\n {showModeDropdown ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n data-testid=\"build-mode-selector\"\n className=\"text-muted-foreground hover:text-foreground hover:bg-accent/50 flex cursor-pointer items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors\"\n >\n <span\n key={effectiveMode}\n className=\"flex animate-[onboard-fade-up_0.25s_ease-out_both] items-center gap-1.5\"\n >\n <ModeIcon className=\"h-3.5 w-3.5\" />\n {modeConfig.label}\n </span>\n <ChevronDown className=\"h-3 w-3 opacity-50\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"min-w-[160px]\">\n {BUILD_MODES.map((mode) => {\n const cfg = BUILD_MODE_CONFIG[mode];\n const Icon = cfg.icon;\n const isActive = effectiveMode === mode;\n return (\n <DropdownMenuItem\n key={mode}\n onClick={() => setBuildMode(mode)}\n data-testid={`build-mode-${mode}`}\n className=\"flex items-center gap-2\"\n >\n <Icon className=\"h-3.5 w-3.5\" />\n <span className=\"flex-1\">{cfg.label}</span>\n {isActive ? <Check className=\"text-foreground h-3.5 w-3.5\" /> : null}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : null}\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n onClick={handlePickFiles}\n disabled={submitting}\n aria-label={t('chat.attachFiles')}\n className=\"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors disabled:opacity-50\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">{t('chat.attachFiles')}</TooltipContent>\n </Tooltip>\n\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={!description.trim() || submitting}\n className={cn(\n 'bg-foreground text-background inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg',\n 'hover:bg-foreground/90 disabled:pointer-events-none disabled:opacity-30',\n 'transition-all duration-150'\n )}\n >\n {submitting ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : (\n <SendHorizontal className=\"h-3.5 w-3.5\" />\n )}\n </button>\n </div>\n </div>\n\n {error ? <p className=\"text-destructive mt-2 text-center text-sm\">{error}</p> : null}\n </div>\n\n {/* Suggestion chips — re-animate on mode change */}\n <div\n key={effectiveMode}\n className=\"mt-6 flex animate-[onboard-fade-up_0.4s_ease-out_both] flex-wrap justify-center gap-2\"\n >\n {modeConfig.suggestions.map((suggestion) => (\n <button\n key={suggestion}\n type=\"button\"\n onClick={() => handleSuggestionClick(suggestion)}\n disabled={submitting}\n className=\"text-muted-foreground hover:text-foreground border-border/60 hover:border-border hover:bg-accent/50 cursor-pointer rounded-full border px-3.5 py-1.5 text-xs transition-all duration-150 disabled:opacity-50 dark:border-white/10 dark:hover:border-white/20 dark:hover:bg-white/[0.06]\"\n >\n {suggestion}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"402a7da73158b6bd6c8fb8ab5b0344dc0e0f08e228\":\"createProjectAndFeature\"},\"src/presentation/web/app/actions/create-project-and-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"402a7da73158b6bd6c8fb8ab5b0344dc0e0f08e228\",callServer,void 0,findSourceMapURL,\"createProjectAndFeature\");export{$$RSC_SERVER_ACTION_0 as createProjectAndFeature};","/* __next_internal_action_entry_do_not_use__ [{\"402b7881a750d5c7c7125153b65fdd64c555ddcdc2\":\"createApplication\"},\"src/presentation/web/app/actions/create-application.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"402b7881a750d5c7c7125153b65fdd64c555ddcdc2\",callServer,void 0,findSourceMapURL,\"createApplication\");export{$$RSC_SERVER_ACTION_0 as createApplication};","/* __next_internal_action_entry_do_not_use__ [{\"400601cc704fc3a542db95c4219b7261168cbe675d\":\"deleteApplication\"},\"src/presentation/web/app/actions/delete-application.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"400601cc704fc3a542db95c4219b7261168cbe675d\",callServer,void 0,findSourceMapURL,\"deleteApplication\");export{$$RSC_SERVER_ACTION_0 as deleteApplication};","/**\n * Shared status derivation for application cards, canvas nodes, and\n * the application page status pill.\n *\n * Priority (highest wins):\n *\n * - `processing` → \"In Progress\" (agent actively running a turn)\n * - `awaiting_input` → \"Action Required\" (agent blocked on user input)\n * - effectiveStatus → from use case (interrupted/failed/running)\n * - deployment live → \"Live\" (dev server running)\n * - persisted Error → \"Error\"\n * - otherwise → \"Ready\" (idle, no issues)\n */\n\nexport interface AppLiveStatus {\n label: string;\n dotClass: string;\n borderClass: string;\n pulse: boolean;\n /** Whether the preview/deploy action should be disabled in this state. */\n previewDisabled: boolean;\n}\n\nexport function deriveAppLiveStatus(\n persistedStatus: string,\n turnStatus: string,\n hasDeployment: boolean,\n effectiveStatus?: string\n): AppLiveStatus {\n // Live turn status takes highest priority (real-time SSE)\n if (turnStatus === 'processing') {\n return {\n label: 'In Progress',\n dotClass: 'bg-violet-500',\n borderClass: '',\n pulse: true,\n previewDisabled: true,\n };\n }\n if (turnStatus === 'awaiting_input') {\n return {\n label: 'Action Required',\n dotClass: 'bg-amber-500',\n borderClass: 'border-amber-500/60',\n pulse: true,\n previewDisabled: true,\n };\n }\n\n // Use case-computed effective status (from workflow steps)\n if (effectiveStatus === 'interrupted') {\n return {\n label: 'Interrupted',\n dotClass: 'bg-amber-500',\n borderClass: 'border-amber-500/60',\n pulse: false,\n previewDisabled: true,\n };\n }\n if (effectiveStatus === 'failed') {\n return {\n label: 'Failed',\n dotClass: 'bg-red-500',\n borderClass: 'border-red-500/60',\n pulse: false,\n previewDisabled: true,\n };\n }\n if (effectiveStatus === 'building') {\n return {\n label: 'In Progress',\n dotClass: 'bg-violet-500',\n borderClass: '',\n pulse: true,\n previewDisabled: true,\n };\n }\n\n // Deployment state\n if (hasDeployment) {\n return {\n label: 'Live',\n dotClass: 'bg-emerald-500',\n borderClass: '',\n pulse: true,\n previewDisabled: false,\n };\n }\n\n // Persisted entity status\n if (persistedStatus === 'Error') {\n return {\n label: 'Error',\n dotClass: 'bg-red-500',\n borderClass: 'border-red-500/60',\n pulse: false,\n previewDisabled: true,\n };\n }\n\n return {\n label: 'Ready',\n dotClass: 'bg-sky-500',\n borderClass: '',\n pulse: false,\n previewDisabled: false,\n };\n}\n","/**\n * Feature-id namespace helpers.\n *\n * The project uses string feature-ids to key interactive agent sessions and\n * workflow steps. Applications reuse this system by prefixing their id with\n * `app-`. Historically this was spread as raw string literals and regexes\n * across core and presentation (clean-arch violation #11 in spec 089).\n *\n * These helpers centralise the convention so callers never need to know the\n * prefix literal.\n */\n\nconst APPLICATION_FEATURE_ID_PREFIX = 'app-';\n\n/**\n * Build the feature-id used for an Application with the given domain id.\n */\nexport function featureIdForApplication(applicationId: string): string {\n return `${APPLICATION_FEATURE_ID_PREFIX}${applicationId}`;\n}\n\n/**\n * Extract the Application id from a feature-id if it belongs to the\n * application namespace. Returns `null` otherwise.\n */\nexport function applicationIdFromFeatureId(featureId: string): string | null {\n if (!isApplicationFeatureId(featureId)) return null;\n return featureId.slice(APPLICATION_FEATURE_ID_PREFIX.length);\n}\n\n/**\n * Return true when the given feature-id belongs to the application namespace.\n */\nexport function isApplicationFeatureId(featureId: string): boolean {\n return featureId.startsWith(APPLICATION_FEATURE_ID_PREFIX);\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n];\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ellipsis = createLucideIcon('ellipsis', __iconNode);\n\nexport default Ellipsis;\n","'use client';\n\n/**\n * Centralized provider icons for the cloud-deploy dropdown.\n *\n * Inlined SVG paths copied from `simple-icons` (CC0, verified against the\n * 16.x release). Each icon is a plain SVG React component that accepts\n * `className` + standard SVG props so the provider list can size them\n * uniformly. Brand hex colors are exposed via `CLOUD_PROVIDER_BRAND_HEX`\n * so the list can colorize the icon per provider without baking a `fill`\n * into the SVG (lets callers force a neutral tint in disabled states).\n *\n * Adding a new provider: drop a new component + map it in\n * `CLOUD_PROVIDER_ICONS` below and add its hex to `CLOUD_PROVIDER_BRAND_HEX`.\n */\n\nimport type { ReactElement, SVGProps } from 'react';\nimport { CloudDeploymentProvider } from '@shepai/core/domain/generated/output';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\n/** Thin wrapper that injects the shared viewBox + xmlns so the per-icon\n * components stay single-line path declarations. */\nfunction BrandSvg({ d, ...props }: { d: string } & IconProps) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n {...props}\n aria-hidden=\"true\"\n >\n <path d={d} />\n </svg>\n );\n}\n\n/** Cloudflare Pages — simple-icons `cloudflarepages`. */\nexport function CloudflareIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M10.715 14.32H5.442l-.64-1.203L13.673 0l1.397.579-1.752 9.112h5.24l.648 1.192L10.719 24l-1.412-.54ZM4.091 5.448a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.543 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.544 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm8.657-2.7h5.424l.772.771v16.975l-.772.772h-7.392l.374-.579h6.779l.432-.432V3.758l-.432-.432h-4.676l-.552 2.85h-.59l.529-2.877.108-.552ZM2.74 21.265l-.772-.772V3.518l.772-.771h7.677l-.386.579H2.98l-.432.432v16.496l.432.432h5.586l-.092.579zm1.157-1.93h3.28l-.116.58h-3.55l-.192-.193v-3.473l.578 1.158zm13.117 0 .579.58H14.7l.385-.58z\"\n {...props}\n />\n );\n}\n\n/** Vercel — simple-icons `vercel`. Solid triangle. */\nexport function VercelIcon(props: IconProps) {\n return <BrandSvg d=\"m12 1.608 12 20.784H0Z\" {...props} />;\n}\n\n/** Netlify — simple-icons `netlify`. */\nexport function NetlifyIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M6.49 19.04h-.23L5.13 17.9v-.23l1.73-1.71h1.2l.15.15v1.2L6.5 19.04ZM5.13 6.31V6.1l1.13-1.13h.23L8.2 6.68v1.2l-.15.15h-1.2L5.13 6.31Zm9.96 9.09h-1.65l-.14-.13v-3.83c0-.68-.27-1.2-1.1-1.23-.42 0-.9 0-1.43.02l-.07.08v4.96l-.14.14H8.9l-.13-.14V8.73l.13-.14h3.7a2.6 2.6 0 0 1 2.61 2.6v4.08l-.13.14Zm-8.37-2.44H.14L0 12.82v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14Zm17.14 0h-6.58l-.14-.14v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14ZM11.05 6.55V1.64l.14-.14h1.65l.14.14v4.9l-.14.14h-1.65l-.14-.13Zm0 15.81v-4.9l.14-.14h1.65l.14.13v4.91l-.14.14h-1.65l-.14-.14Z\"\n {...props}\n />\n );\n}\n\n/** AWS Amplify — simple-icons does NOT ship an AWS Amplify brand mark\n * (AWS trademark restrictions), so we fall back to a stylised \"A\" chevron\n * that reads as \"AWS-ish\" without infringing. Users never deploy here in\n * v1 — it's a \"Coming soon\" row — so a perfect brand match isn't worth\n * the legal headache. */\nexport function AwsAmplifyIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M11.58 2.1 1.15 20.87h4.33l1.9-3.5h9.24l1.9 3.5h4.33L12.42 2.1h-.84Zm.42 5.6 3.12 5.73H8.88L12 7.7Z\"\n {...props}\n />\n );\n}\n\n/** Google Cloud — simple-icons `googlecloud`. */\nexport function GcpCloudRunIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M12.19 2.38a9.344 9.344 0 0 0-9.234 6.893c.053-.02-.055.013 0 0-3.875 2.551-3.922 8.11-.247 10.941l.006-.007-.007.03a6.717 6.717 0 0 0 4.077 1.356h5.173l.03.03h5.192c6.687.053 9.376-8.605 3.835-12.35a9.365 9.365 0 0 0-2.821-4.552l-.043.043.006-.05A9.344 9.344 0 0 0 12.19 2.38zm-.358 4.146c1.244-.04 2.518.368 3.486 1.15a5.186 5.186 0 0 1 1.862 4.078v.518c3.53-.07 3.53 5.262 0 5.193h-5.193l-.008.009v-.04H6.785a2.59 2.59 0 0 1-1.067-.23h.001a2.597 2.597 0 1 1 3.437-3.437l3.013-3.012A6.747 6.747 0 0 0 8.11 8.24c.018-.01.04-.026.054-.023a5.186 5.186 0 0 1 3.67-1.69z\"\n {...props}\n />\n );\n}\n\n/** GitHub — simple-icons `github`. */\nexport function GitHubIcon(props: IconProps) {\n return (\n <BrandSvg\n d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n {...props}\n />\n );\n}\n\nexport const CLOUD_PROVIDER_ICONS: Record<\n CloudDeploymentProvider,\n (props: IconProps) => ReactElement\n> = {\n [CloudDeploymentProvider.CloudflarePages]: CloudflareIcon,\n [CloudDeploymentProvider.Vercel]: VercelIcon,\n [CloudDeploymentProvider.Netlify]: NetlifyIcon,\n [CloudDeploymentProvider.AwsAmplify]: AwsAmplifyIcon,\n [CloudDeploymentProvider.GcpCloudRun]: GcpCloudRunIcon,\n};\n\n/** Brand hex colors from the simple-icons metadata (minus the leading `#`).\n * Used by ProviderList so each row's icon renders in the real brand color\n * when enabled, and falls back to the muted token when disabled. */\nexport const CLOUD_PROVIDER_BRAND_HEX: Record<CloudDeploymentProvider, string> = {\n [CloudDeploymentProvider.CloudflarePages]: '#F38020',\n [CloudDeploymentProvider.Vercel]: '#000000',\n [CloudDeploymentProvider.Netlify]: '#00C7B7',\n [CloudDeploymentProvider.AwsAmplify]: '#FF9900',\n [CloudDeploymentProvider.GcpCloudRun]: '#4285F4',\n};\n"],"names":[],"mappings":"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,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA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","ignoreList":[0,1,2,9]}
@@ -1,3 +1,3 @@
1
- module.exports=[577127,a=>{"use strict";var b=a.i(944592),c=a.i(559653),d=a.i(563496),e=a.i(406175),f=a.i(307420),g=a.i(5472),h=a.i(666873),i=a.i(779406),j=a.i(417329),k=a.i(748939),l=a.i(556365),m="rovingFocusGroup.onEntryFocus",n={bubbles:!1,cancelable:!0},o="RovingFocusGroup",[p,q,r]=(0,d.createCollection)(o),[s,t]=(0,f.createContextScope)(o,[r]),[u,v]=s(o),w=b.forwardRef((a,b)=>(0,l.jsx)(p.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,l.jsx)(p.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,l.jsx)(x,{...a,ref:b})})}));w.displayName=o;var x=b.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:f,orientation:g,loop:p=!1,dir:r,currentTabStopId:s,defaultCurrentTabStopId:t,onCurrentTabStopIdChange:v,onEntryFocus:w,preventScrollOnEntryFocus:x=!1,...y}=a,z=b.useRef(null),A=(0,e.useComposedRefs)(d,z),C=(0,k.useDirection)(r),[D,E]=(0,j.useControllableState)({prop:s,defaultProp:t??null,onChange:v,caller:o}),[F,G]=b.useState(!1),H=(0,i.useCallbackRef)(w),I=q(f),J=b.useRef(!1),[K,L]=b.useState(0);return b.useEffect(()=>{let a=z.current;if(a)return a.addEventListener(m,H),()=>a.removeEventListener(m,H)},[H]),(0,l.jsx)(u,{scope:f,orientation:g,dir:C,loop:p,currentTabStopId:D,onItemFocus:b.useCallback(a=>E(a),[E]),onItemShiftTab:b.useCallback(()=>G(!0),[]),onFocusableItemAdd:b.useCallback(()=>L(a=>a+1),[]),onFocusableItemRemove:b.useCallback(()=>L(a=>a-1),[]),children:(0,l.jsx)(h.Primitive.div,{tabIndex:F||0===K?-1:0,"data-orientation":g,...y,ref:A,style:{outline:"none",...a.style},onMouseDown:(0,c.composeEventHandlers)(a.onMouseDown,()=>{J.current=!0}),onFocus:(0,c.composeEventHandlers)(a.onFocus,a=>{let b=!J.current;if(a.target===a.currentTarget&&b&&!F){let b=new CustomEvent(m,n);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=I().filter(a=>a.focusable);B([a.find(a=>a.active),a.find(a=>a.id===D),...a].filter(Boolean).map(a=>a.ref.current),x)}}J.current=!1}),onBlur:(0,c.composeEventHandlers)(a.onBlur,()=>G(!1))})})}),y="RovingFocusGroupItem",z=b.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:e,focusable:f=!0,active:i=!1,tabStopId:j,children:k,...m}=a,n=(0,g.useId)(),o=j||n,r=v(y,e),s=r.currentTabStopId===o,t=q(e),{onFocusableItemAdd:u,onFocusableItemRemove:w,currentTabStopId:x}=r;return b.useEffect(()=>{if(f)return u(),()=>w()},[f,u,w]),(0,l.jsx)(p.ItemSlot,{scope:e,id:o,focusable:f,active:i,children:(0,l.jsx)(h.Primitive.span,{tabIndex:s?0:-1,"data-orientation":r.orientation,...m,ref:d,onMouseDown:(0,c.composeEventHandlers)(a.onMouseDown,a=>{f?r.onItemFocus(o):a.preventDefault()}),onFocus:(0,c.composeEventHandlers)(a.onFocus,()=>r.onItemFocus(o)),onKeyDown:(0,c.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void r.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return A[e]}(a,r.orientation,r.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=t().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=r.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>B(e))}}),children:"function"==typeof k?k({isCurrentTabStop:s,hasTabStop:null!=x}):k})})});z.displayName=y;var A={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function B(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}a.s(["Item",()=>z,"Root",()=>w,"createRovingFocusGroupScope",()=>t])},450490,a=>{"use strict";let b=(0,a.i(225700).default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);a.s(["Play",()=>b],450490)},771238,a=>{"use strict";let b=(0,a.i(225700).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",()=>b],771238)},966691,420522,752471,624434,a=>{"use strict";var b=a.i(556365),c=a.i(944592),d=a.i(746847),e=a.i(289111);let f=(0,e.createServerReference)("401846920f6fb739e32233d9d6a6df7945b8621c00",e.callServer,void 0,e.findSourceMapURL,"deployFeature"),g=(0,e.createServerReference)("408a28f520d819792447d4b47d9b73a5ddf7296469",e.callServer,void 0,e.findSourceMapURL,"deployRepository");a.s(["deployRepository",()=>g],420522);let h=(0,e.createServerReference)("4005923232df16201d86b35c46dbbe719725cbcd26",e.callServer,void 0,e.findSourceMapURL,"deployApplication"),i=(0,e.createServerReference)("409ab95b1ec58ad7dd578b018e11d5bd766839f8bc",e.callServer,void 0,e.findSourceMapURL,"stopDeployment");a.s(["stopDeployment",()=>i],752471);let j=(0,e.createServerReference)("40ed3ea24841c9c4280513ab004dcdbce3d545bcdb",e.callServer,void 0,e.findSourceMapURL,"getDeploymentStatus");var k=a.i(987139);let l={status:null,url:null,targetType:null,hydrated:!1,deployLoading:!1,stopLoading:!1,deployError:null};class m{entries=new Map;listeners=new Map;globalListeners=new Set;fullyHydrated=!1;isFullyHydrated(){return this.fullyHydrated}hydrate(a){let b=new Set;for(let c of a)b.add(c.targetId),this.update(c.targetId,{status:c.state,url:c.url,targetType:c.targetType,hydrated:!0});for(let[a,c]of this.entries)!b.has(a)&&c.hydrated&&null!==c.status?this.update(a,{status:null,url:null}):b.has(a)||c.hydrated||this.update(a,{hydrated:!0});this.fullyHydrated=!0}getEntry(a){return this.entries.get(a)??l}update(a,b){let c={...this.entries.get(a)??l,...b};this.entries.set(a,c),this.notify(a)}setStatus(a,b){null===b?this.update(a,{status:null,url:null,hydrated:!0}):this.update(a,{status:b.state,url:b.url,hydrated:!0})}subscribe(a,b){let c=this.listeners.get(a);return c||(c=new Set,this.listeners.set(a,c)),c.add(b),()=>{c?.delete(b),c?.size===0&&this.listeners.delete(a)}}subscribeAll(a){return this.globalListeners.add(a),()=>{this.globalListeners.delete(a)}}notify(a){let b=this.listeners.get(a);if(b)for(let a of b)a();for(let a of this.globalListeners)a()}}a.s(["DeploymentStatusStore",()=>m,"EMPTY_ENTRY",0,l],624434);let n=(0,k.createLogger)("[DeploymentStatusProvider]"),o=new Set([d.DeploymentState.Booting,d.DeploymentState.Ready]),p=(0,c.createContext)(null);function q({initialDeployments:a,children:e}){let k=(0,c.useRef)(null);k.current||(k.current=new m,k.current.hydrate(a));let l=k.current;(0,c.useEffect)(()=>{l.hydrate(a)},[a,l]);let q=(0,c.useRef)(new Map),r=(0,c.useCallback)(a=>{let b=q.current.get(a);b&&(clearInterval(b),q.current.delete(a))},[]),s=(0,c.useCallback)(a=>{if(q.current.has(a))return;let b=setInterval(async()=>{let b;try{b=await j(a)}catch(b){n.warn(`poll failed for "${a}"`,b),l.setStatus(a,null),r(a);return}if(!b||b.state===d.DeploymentState.Stopped){l.setStatus(a,null),r(a);return}l.setStatus(a,b)},3e3);q.current.set(a,b)},[l,r]);(0,c.useEffect)(()=>{let a=q.current,b=l.subscribeAll(()=>{for(let[b]of a){let a=l.getEntry(b);a.status&&o.has(a.status)||r(b)}});return()=>{for(let[,c]of(b(),a))clearInterval(c);a.clear()}},[l,r]);let t=(0,c.useCallback)(a=>{if(a&&!l.getEntry(a).hydrated){if(l.isFullyHydrated())return void l.update(a,{hydrated:!0});l.update(a,{hydrated:!0}),(async()=>{try{let b=await j(a);l.setStatus(a,b),b&&o.has(b.state)&&s(a)}catch(b){n.warn(`ensureHydrated failed for "${a}"`,b)}})()}},[l,s]),u=(0,c.useCallback)(async a=>{l.update(a.targetId,{deployLoading:!0,deployError:null});try{let b="feature"===a.targetType?await f(a.targetId):"application"===a.targetType?await h(a.targetId):await g(a.repositoryPath);if(!b.success)return void l.update(a.targetId,{deployLoading:!1,deployError:b.error??"An unexpected error occurred"});l.update(a.targetId,{deployLoading:!1,status:b.state??null,url:null,hydrated:!0,targetType:a.targetType}),s(a.targetId)}catch(c){let b=c instanceof Error?c.message:"An unexpected error occurred";l.update(a.targetId,{deployLoading:!1,deployError:b})}},[l,s]),v=(0,c.useCallback)(async a=>{if(a){l.update(a,{stopLoading:!0});try{(await i(a)).success?(r(a),l.update(a,{stopLoading:!1,status:null,url:null})):l.update(a,{stopLoading:!1})}catch(b){n.warn("stop error (non-critical)",b),l.update(a,{stopLoading:!1})}}},[l,r]),w=(0,c.useMemo)(()=>({store:l,deploy:u,stop:v,ensureHydrated:t}),[l,u,v,t]);return(0,b.jsx)(p.Provider,{value:w,children:e})}function r(){let a=(0,c.useContext)(p);if(!a)throw Error("useDeploymentStatusContext must be used within a <DeploymentStatusProvider>");return a}function s(){let a=(0,c.useContext)(p);return a||t}let t={store:new m,deploy:async()=>{},stop:async()=>{},ensureHydrated:()=>{}};a.s(["DeploymentStatusProvider",()=>q,"useDeploymentStatusContext",()=>r,"useDeploymentStatusContextOptional",()=>s],966691)},118662,a=>{"use strict";var b=a.i(944592),c=a.i(966691);function d(){}function e(a){let{store:e,deploy:f,stop:g,ensureHydrated:h}=(0,c.useDeploymentStatusContextOptional)(),i=a?.targetId??"",j=(0,b.useCallback)(a=>i?e.subscribe(i,a):d,[e,i]),k=(0,b.useCallback)(()=>i?e.getEntry(i):e.getEntry(""),[e,i]),l=(0,b.useSyncExternalStore)(j,k,k);return(0,b.useEffect)(()=>{i&&h(i)},[i,h]),{deploy:(0,b.useCallback)(async()=>{a&&await f(a)},[f,a]),stop:(0,b.useCallback)(async()=>{i&&await g(i)},[g,i]),deployLoading:l.deployLoading,stopLoading:l.stopLoading,deployError:l.deployError,status:l.status,url:l.url}}a.s(["useDeployAction",()=>e])},976096,a=>{"use strict";let b=(0,a.i(225700).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["default",()=>b])},804019,a=>{"use strict";let b=(0,a.i(225700).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Circle",()=>b],804019)}];
1
+ module.exports=[577127,a=>{"use strict";var b=a.i(944592),c=a.i(559653),d=a.i(563496),e=a.i(406175),f=a.i(307420),g=a.i(5472),h=a.i(666873),i=a.i(779406),j=a.i(417329),k=a.i(748939),l=a.i(556365),m="rovingFocusGroup.onEntryFocus",n={bubbles:!1,cancelable:!0},o="RovingFocusGroup",[p,q,r]=(0,d.createCollection)(o),[s,t]=(0,f.createContextScope)(o,[r]),[u,v]=s(o),w=b.forwardRef((a,b)=>(0,l.jsx)(p.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,l.jsx)(p.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,l.jsx)(x,{...a,ref:b})})}));w.displayName=o;var x=b.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:f,orientation:g,loop:p=!1,dir:r,currentTabStopId:s,defaultCurrentTabStopId:t,onCurrentTabStopIdChange:v,onEntryFocus:w,preventScrollOnEntryFocus:x=!1,...y}=a,z=b.useRef(null),A=(0,e.useComposedRefs)(d,z),C=(0,k.useDirection)(r),[D,E]=(0,j.useControllableState)({prop:s,defaultProp:t??null,onChange:v,caller:o}),[F,G]=b.useState(!1),H=(0,i.useCallbackRef)(w),I=q(f),J=b.useRef(!1),[K,L]=b.useState(0);return b.useEffect(()=>{let a=z.current;if(a)return a.addEventListener(m,H),()=>a.removeEventListener(m,H)},[H]),(0,l.jsx)(u,{scope:f,orientation:g,dir:C,loop:p,currentTabStopId:D,onItemFocus:b.useCallback(a=>E(a),[E]),onItemShiftTab:b.useCallback(()=>G(!0),[]),onFocusableItemAdd:b.useCallback(()=>L(a=>a+1),[]),onFocusableItemRemove:b.useCallback(()=>L(a=>a-1),[]),children:(0,l.jsx)(h.Primitive.div,{tabIndex:F||0===K?-1:0,"data-orientation":g,...y,ref:A,style:{outline:"none",...a.style},onMouseDown:(0,c.composeEventHandlers)(a.onMouseDown,()=>{J.current=!0}),onFocus:(0,c.composeEventHandlers)(a.onFocus,a=>{let b=!J.current;if(a.target===a.currentTarget&&b&&!F){let b=new CustomEvent(m,n);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=I().filter(a=>a.focusable);B([a.find(a=>a.active),a.find(a=>a.id===D),...a].filter(Boolean).map(a=>a.ref.current),x)}}J.current=!1}),onBlur:(0,c.composeEventHandlers)(a.onBlur,()=>G(!1))})})}),y="RovingFocusGroupItem",z=b.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:e,focusable:f=!0,active:i=!1,tabStopId:j,children:k,...m}=a,n=(0,g.useId)(),o=j||n,r=v(y,e),s=r.currentTabStopId===o,t=q(e),{onFocusableItemAdd:u,onFocusableItemRemove:w,currentTabStopId:x}=r;return b.useEffect(()=>{if(f)return u(),()=>w()},[f,u,w]),(0,l.jsx)(p.ItemSlot,{scope:e,id:o,focusable:f,active:i,children:(0,l.jsx)(h.Primitive.span,{tabIndex:s?0:-1,"data-orientation":r.orientation,...m,ref:d,onMouseDown:(0,c.composeEventHandlers)(a.onMouseDown,a=>{f?r.onItemFocus(o):a.preventDefault()}),onFocus:(0,c.composeEventHandlers)(a.onFocus,()=>r.onItemFocus(o)),onKeyDown:(0,c.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void r.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return A[e]}(a,r.orientation,r.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=t().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=r.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>B(e))}}),children:"function"==typeof k?k({isCurrentTabStop:s,hasTabStop:null!=x}):k})})});z.displayName=y;var A={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function B(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}a.s(["Item",()=>z,"Root",()=>w,"createRovingFocusGroupScope",()=>t])},450490,a=>{"use strict";let b=(0,a.i(225700).default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);a.s(["Play",()=>b],450490)},771238,a=>{"use strict";let b=(0,a.i(225700).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",()=>b],771238)},966691,226888,659795,624434,a=>{"use strict";var b=a.i(556365),c=a.i(944592),d=a.i(746847),e=a.i(289111);let f=(0,e.createServerReference)("40aa1efa0fed8941c16c9537ba0c5d988cf13fecaf",e.callServer,void 0,e.findSourceMapURL,"deployFeature"),g=(0,e.createServerReference)("403a844cbb36e5d50051fe552f050ed35a8b88f317",e.callServer,void 0,e.findSourceMapURL,"deployRepository");a.s(["deployRepository",()=>g],226888);let h=(0,e.createServerReference)("40559cc32878be443a5d902e563fa65ac29566c575",e.callServer,void 0,e.findSourceMapURL,"deployApplication"),i=(0,e.createServerReference)("403c93928208c54fe25784ff60dcb073f25d1055c1",e.callServer,void 0,e.findSourceMapURL,"stopDeployment");a.s(["stopDeployment",()=>i],659795);let j=(0,e.createServerReference)("402a545f24583952d99d18566abf474dd10d07741b",e.callServer,void 0,e.findSourceMapURL,"getDeploymentStatus");var k=a.i(987139);let l={status:null,url:null,targetType:null,hydrated:!1,deployLoading:!1,stopLoading:!1,deployError:null};class m{entries=new Map;listeners=new Map;globalListeners=new Set;fullyHydrated=!1;isFullyHydrated(){return this.fullyHydrated}hydrate(a){let b=new Set;for(let c of a)b.add(c.targetId),this.update(c.targetId,{status:c.state,url:c.url,targetType:c.targetType,hydrated:!0});for(let[a,c]of this.entries)!b.has(a)&&c.hydrated&&null!==c.status?this.update(a,{status:null,url:null}):b.has(a)||c.hydrated||this.update(a,{hydrated:!0});this.fullyHydrated=!0}getEntry(a){return this.entries.get(a)??l}update(a,b){let c={...this.entries.get(a)??l,...b};this.entries.set(a,c),this.notify(a)}setStatus(a,b){null===b?this.update(a,{status:null,url:null,hydrated:!0}):this.update(a,{status:b.state,url:b.url,hydrated:!0})}subscribe(a,b){let c=this.listeners.get(a);return c||(c=new Set,this.listeners.set(a,c)),c.add(b),()=>{c?.delete(b),c?.size===0&&this.listeners.delete(a)}}subscribeAll(a){return this.globalListeners.add(a),()=>{this.globalListeners.delete(a)}}notify(a){let b=this.listeners.get(a);if(b)for(let a of b)a();for(let a of this.globalListeners)a()}}a.s(["DeploymentStatusStore",()=>m,"EMPTY_ENTRY",0,l],624434);let n=(0,k.createLogger)("[DeploymentStatusProvider]"),o=new Set([d.DeploymentState.Booting,d.DeploymentState.Ready]),p=(0,c.createContext)(null);function q({initialDeployments:a,children:e}){let k=(0,c.useRef)(null);k.current||(k.current=new m,k.current.hydrate(a));let l=k.current;(0,c.useEffect)(()=>{l.hydrate(a)},[a,l]);let q=(0,c.useRef)(new Map),r=(0,c.useCallback)(a=>{let b=q.current.get(a);b&&(clearInterval(b),q.current.delete(a))},[]),s=(0,c.useCallback)(a=>{if(q.current.has(a))return;let b=setInterval(async()=>{let b;try{b=await j(a)}catch(b){n.warn(`poll failed for "${a}"`,b),l.setStatus(a,null),r(a);return}if(!b||b.state===d.DeploymentState.Stopped){l.setStatus(a,null),r(a);return}l.setStatus(a,b)},3e3);q.current.set(a,b)},[l,r]);(0,c.useEffect)(()=>{let a=q.current,b=l.subscribeAll(()=>{for(let[b]of a){let a=l.getEntry(b);a.status&&o.has(a.status)||r(b)}});return()=>{for(let[,c]of(b(),a))clearInterval(c);a.clear()}},[l,r]);let t=(0,c.useCallback)(a=>{if(a&&!l.getEntry(a).hydrated){if(l.isFullyHydrated())return void l.update(a,{hydrated:!0});l.update(a,{hydrated:!0}),(async()=>{try{let b=await j(a);l.setStatus(a,b),b&&o.has(b.state)&&s(a)}catch(b){n.warn(`ensureHydrated failed for "${a}"`,b)}})()}},[l,s]),u=(0,c.useCallback)(async a=>{l.update(a.targetId,{deployLoading:!0,deployError:null});try{let b="feature"===a.targetType?await f(a.targetId):"application"===a.targetType?await h(a.targetId):await g(a.repositoryPath);if(!b.success)return void l.update(a.targetId,{deployLoading:!1,deployError:b.error??"An unexpected error occurred"});l.update(a.targetId,{deployLoading:!1,status:b.state??null,url:null,hydrated:!0,targetType:a.targetType}),s(a.targetId)}catch(c){let b=c instanceof Error?c.message:"An unexpected error occurred";l.update(a.targetId,{deployLoading:!1,deployError:b})}},[l,s]),v=(0,c.useCallback)(async a=>{if(a){l.update(a,{stopLoading:!0});try{(await i(a)).success?(r(a),l.update(a,{stopLoading:!1,status:null,url:null})):l.update(a,{stopLoading:!1})}catch(b){n.warn("stop error (non-critical)",b),l.update(a,{stopLoading:!1})}}},[l,r]),w=(0,c.useMemo)(()=>({store:l,deploy:u,stop:v,ensureHydrated:t}),[l,u,v,t]);return(0,b.jsx)(p.Provider,{value:w,children:e})}function r(){let a=(0,c.useContext)(p);if(!a)throw Error("useDeploymentStatusContext must be used within a <DeploymentStatusProvider>");return a}function s(){let a=(0,c.useContext)(p);return a||t}let t={store:new m,deploy:async()=>{},stop:async()=>{},ensureHydrated:()=>{}};a.s(["DeploymentStatusProvider",()=>q,"useDeploymentStatusContext",()=>r,"useDeploymentStatusContextOptional",()=>s],966691)},118662,a=>{"use strict";var b=a.i(944592),c=a.i(966691);function d(){}function e(a){let{store:e,deploy:f,stop:g,ensureHydrated:h}=(0,c.useDeploymentStatusContextOptional)(),i=a?.targetId??"",j=(0,b.useCallback)(a=>i?e.subscribe(i,a):d,[e,i]),k=(0,b.useCallback)(()=>i?e.getEntry(i):e.getEntry(""),[e,i]),l=(0,b.useSyncExternalStore)(j,k,k);return(0,b.useEffect)(()=>{i&&h(i)},[i,h]),{deploy:(0,b.useCallback)(async()=>{a&&await f(a)},[f,a]),stop:(0,b.useCallback)(async()=>{i&&await g(i)},[g,i]),deployLoading:l.deployLoading,stopLoading:l.stopLoading,deployError:l.deployError,status:l.status,url:l.url}}a.s(["useDeployAction",()=>e])},976096,a=>{"use strict";let b=(0,a.i(225700).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["default",()=>b])},804019,a=>{"use strict";let b=(0,a.i(225700).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Circle",()=>b],804019)}];
2
2
 
3
3
  //# sourceMappingURL=_7ba67729._.js.map