@shepai/cli 1.72.8 → 1.72.9-pr220.e1bfec0

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 (365) hide show
  1. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +2 -1
  2. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +1 -0
  5. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts +20 -1
  6. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +68 -41
  8. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +10 -0
  9. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  10. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  11. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +1 -0
  12. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -1
  13. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts.map +1 -1
  14. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.js +88 -13
  15. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +1 -1
  16. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +2 -1
  17. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  18. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -0
  19. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +2 -0
  20. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +16 -3
  22. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  23. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +5 -1
  24. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  25. package/dist/src/presentation/web/app/actions/create-feature.js +20 -2
  26. package/dist/src/presentation/web/app/actions/get-feature-metadata.d.ts +10 -0
  27. package/dist/src/presentation/web/app/actions/get-feature-metadata.d.ts.map +1 -0
  28. package/dist/src/presentation/web/app/actions/get-feature-metadata.js +14 -0
  29. package/dist/src/presentation/web/app/actions/get-graph-data.d.ts +10 -0
  30. package/dist/src/presentation/web/app/actions/get-graph-data.d.ts.map +1 -0
  31. package/dist/src/presentation/web/app/actions/get-graph-data.js +10 -0
  32. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  33. package/dist/src/presentation/web/app/api/agent-events/route.js +18 -0
  34. package/dist/src/presentation/web/components/common/add-repository-button/add-repository-button.d.ts.map +1 -0
  35. package/dist/src/presentation/web/components/common/add-repository-button/index.d.ts +2 -0
  36. package/dist/src/presentation/web/components/common/add-repository-button/index.d.ts.map +1 -0
  37. package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/index.js +0 -1
  38. package/dist/src/presentation/web/components/common/add-repository-button/pick-folder.d.ts.map +1 -0
  39. package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.d.ts.map +1 -1
  40. package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.js +21 -23
  41. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  42. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +35 -16
  43. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
  44. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +2 -0
  45. package/dist/src/presentation/web/components/common/index.d.ts +1 -1
  46. package/dist/src/presentation/web/components/common/index.d.ts.map +1 -1
  47. package/dist/src/presentation/web/components/common/index.js +1 -1
  48. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  49. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.d.ts +1 -3
  50. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.d.ts.map +1 -1
  51. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.js +3 -7
  52. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.d.ts +0 -1
  53. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.d.ts.map +1 -1
  54. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.js +0 -11
  55. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +1 -1
  56. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  57. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +23 -4
  58. package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts +0 -11
  59. package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts.map +1 -1
  60. package/dist/src/presentation/web/components/features/control-center/control-center.stories.js +2 -37
  61. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +8 -0
  62. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  63. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +154 -258
  64. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +2 -10
  65. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  66. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +12 -44
  67. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  68. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +0 -46
  69. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +1 -1
  70. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts +1 -3
  71. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  72. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  73. package/dist/src/presentation/web/components/ui/scroll-area.js +1 -1
  74. package/dist/src/presentation/web/hooks/use-graph-state.d.ts +41 -0
  75. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -0
  76. package/dist/src/presentation/web/hooks/use-graph-state.js +230 -0
  77. package/dist/src/presentation/web/lib/derive-graph.d.ts +52 -0
  78. package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -0
  79. package/dist/src/presentation/web/lib/derive-graph.js +126 -0
  80. package/dist/src/presentation/web/lib/layout-with-dagre.d.ts.map +1 -1
  81. package/dist/src/presentation/web/lib/layout-with-dagre.js +1 -2
  82. package/dist/tsconfig.build.tsbuildinfo +1 -1
  83. package/package.json +1 -1
  84. package/web/.next/BUILD_ID +1 -1
  85. package/web/.next/build-manifest.json +2 -2
  86. package/web/.next/cache/.previewinfo +1 -1
  87. package/web/.next/cache/.rscinfo +1 -1
  88. package/web/.next/cache/.tsbuildinfo +1 -1
  89. package/web/.next/cache/config.json +3 -3
  90. package/web/.next/fallback-build-manifest.json +2 -2
  91. package/web/.next/prerender-manifest.json +3 -3
  92. package/web/.next/required-server-files.js +1 -1
  93. package/web/.next/required-server-files.json +1 -1
  94. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +43 -28
  95. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  96. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  97. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +49 -34
  99. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  100. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  101. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +39 -24
  103. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  104. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  105. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  106. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +43 -28
  107. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  108. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  109. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +49 -34
  111. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  112. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  113. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  114. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +39 -24
  115. package/web/.next/server/app/(dashboard)/page.js +1 -1
  116. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  117. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  118. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +39 -24
  119. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  120. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  121. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  122. package/web/.next/server/app/_global-error.html +2 -2
  123. package/web/.next/server/app/_global-error.rsc +1 -1
  124. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  125. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  126. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  127. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  128. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  129. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  130. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  131. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  132. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  133. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  134. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  135. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  136. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  137. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  138. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  139. package/web/.next/server/app/version/page.js.nft.json +1 -1
  140. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  141. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  142. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  144. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js +3 -0
  146. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js.map +1 -0
  147. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js +3 -0
  148. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js.map +1 -0
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/{[root-of-the-server]__cbae9863._.js → [root-of-the-server]__6258349c._.js} +2 -2
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +1 -0
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  162. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js → server/chunks/ssr/[root-of-the-server]__94a6d275._.js} +2 -2
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +1 -0
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  167. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/_250a63ae._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  170. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/_63688261._.js +6 -0
  172. package/web/.next/server/chunks/ssr/_63688261._.js.map +1 -0
  173. package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  174. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  176. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
  177. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js → server/chunks/ssr/src_presentation_web_2b91e4ec._.js} +2 -2
  178. package/web/.next/server/chunks/ssr/{src_presentation_web_5c87e8e4._.js.map → src_presentation_web_2b91e4ec._.js.map} +1 -1
  179. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js → server/chunks/ssr/src_presentation_web_5bcc1537._.js} +2 -2
  180. package/web/.next/server/chunks/ssr/{src_presentation_web_398553b0._.js.map → src_presentation_web_5bcc1537._.js.map} +1 -1
  181. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js +3 -0
  182. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js.map +1 -0
  183. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  184. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  186. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  188. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js +8 -0
  190. package/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js.map +1 -0
  191. package/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js +8 -0
  192. package/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js.map +1 -0
  193. package/web/.next/server/pages/500.html +2 -2
  194. package/web/.next/server/server-reference-manifest.js +1 -1
  195. package/web/.next/server/server-reference-manifest.json +175 -118
  196. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  197. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  198. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  199. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  200. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +43 -28
  201. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  202. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  203. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  204. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +49 -34
  205. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  206. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  207. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  208. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +39 -24
  209. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  210. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  211. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  212. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +43 -28
  213. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +1 -1
  214. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  215. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  216. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +49 -34
  217. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  218. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  219. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  220. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +39 -24
  221. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +1 -1
  222. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  223. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  224. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +39 -24
  225. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  226. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  227. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  228. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  229. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  230. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  231. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  232. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  233. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  234. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  235. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  236. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  237. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  238. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  239. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  240. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  241. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  242. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  243. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  244. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  245. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  246. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  247. package/web/.next/standalone/src/presentation/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  248. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  249. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js +3 -0
  250. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js +3 -0
  251. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  252. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  253. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  254. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__cbae9863._.js → [root-of-the-server]__6258349c._.js} +2 -2
  255. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  256. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  257. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  258. package/web/.next/{server/chunks/ssr/[root-of-the-server]__e5e09f72._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js} +2 -2
  259. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  260. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  261. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  262. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_63688261._.js +6 -0
  263. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  264. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  265. package/web/.next/{server/chunks/ssr/src_presentation_web_398553b0._.js → standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_2b91e4ec._.js} +2 -2
  266. package/web/.next/{server/chunks/ssr/src_presentation_web_5c87e8e4._.js → standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5bcc1537._.js} +2 -2
  267. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js +3 -0
  268. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  269. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  270. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  271. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js +8 -0
  272. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js +8 -0
  273. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  274. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  275. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +175 -118
  276. package/web/.next/standalone/src/presentation/web/CLAUDE.md +191 -0
  277. package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +27 -2
  278. package/web/.next/standalone/src/presentation/web/app/actions/get-feature-metadata.ts +18 -0
  279. package/web/.next/standalone/src/presentation/web/app/actions/get-graph-data.ts +12 -0
  280. package/web/.next/standalone/src/presentation/web/app/api/agent-events/route.ts +21 -1
  281. package/web/.next/standalone/src/presentation/web/components/common/add-repository-button/index.ts +1 -0
  282. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx +23 -26
  283. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx +44 -18
  284. package/web/.next/standalone/src/presentation/web/components/common/feature-node/derive-feature-state.ts +2 -0
  285. package/web/.next/standalone/src/presentation/web/components/common/index.ts +1 -5
  286. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-node.tsx +2 -2
  287. package/web/.next/standalone/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.tsx +0 -13
  288. package/web/.next/standalone/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.tsx +1 -45
  289. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-empty-state.tsx +1 -1
  290. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +24 -8
  291. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center.stories.tsx +2 -41
  292. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +183 -326
  293. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +0 -48
  294. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +34 -82
  295. package/web/.next/standalone/src/presentation/web/components/layouts/app-shell/app-shell.tsx +1 -1
  296. package/web/.next/standalone/src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx +2 -14
  297. package/web/.next/standalone/src/presentation/web/components/ui/scroll-area.tsx +1 -1
  298. package/web/.next/standalone/src/presentation/web/hooks/use-graph-state.ts +343 -0
  299. package/web/.next/standalone/src/presentation/web/lib/derive-graph.ts +178 -0
  300. package/web/.next/standalone/src/presentation/web/lib/layout-with-dagre.ts +1 -2
  301. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  302. package/web/.next/static/chunks/{71cf72022f08a8c9.js → 0a883e2efecfd563.js} +1 -1
  303. package/web/.next/static/chunks/{ebf172a84c9596ed.js → 596ca28d78baae25.js} +1 -1
  304. package/web/.next/static/chunks/{1c07b21eb8b32f25.js → 638824249d103905.js} +1 -1
  305. package/web/.next/static/chunks/63a80e9d4c4b0253.js +4 -0
  306. package/web/.next/static/chunks/71c9ecdceac1939f.css +2 -0
  307. package/web/.next/static/chunks/a040b058d79f4ade.js +1 -0
  308. package/web/.next/static/chunks/{fcafb841e3860687.js → c575ab63c138645b.js} +1 -1
  309. package/web/.next/static/chunks/cdc92cdf81005c84.js +1 -0
  310. package/web/.next/static/chunks/{fabfa54940973cc7.js → e05eb1cc84ee254a.js} +1 -1
  311. package/web/.next/static/chunks/{8682dcb376de62de.js → ef8f8940eac6c542.js} +1 -1
  312. package/web/.next/static/chunks/f32c98a709949c5b.js +1 -0
  313. package/web/.next/trace +1 -1
  314. package/web/.next/trace-build +1 -1
  315. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-button.d.ts.map +0 -1
  316. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node-config.d.ts +0 -7
  317. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node-config.d.ts.map +0 -1
  318. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node-config.js +0 -1
  319. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.d.ts +0 -6
  320. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.d.ts.map +0 -1
  321. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.js +0 -23
  322. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts +0 -10
  323. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts.map +0 -1
  324. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.js +0 -33
  325. package/dist/src/presentation/web/components/common/add-repository-node/index.d.ts +0 -4
  326. package/dist/src/presentation/web/components/common/add-repository-node/index.d.ts.map +0 -1
  327. package/dist/src/presentation/web/components/common/add-repository-node/pick-folder.d.ts.map +0 -1
  328. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +0 -3
  329. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js.map +0 -1
  330. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +0 -3
  331. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js.map +0 -1
  332. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js.map +0 -1
  333. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js.map +0 -1
  334. package/web/.next/server/chunks/ssr/_47ef589d._.js +0 -6
  335. package/web/.next/server/chunks/ssr/_47ef589d._.js.map +0 -1
  336. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +0 -8
  337. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js.map +0 -1
  338. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +0 -3
  339. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js.map +0 -1
  340. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +0 -8
  341. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js.map +0 -1
  342. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +0 -3
  343. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +0 -3
  344. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_47ef589d._.js +0 -6
  345. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +0 -8
  346. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +0 -3
  347. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +0 -8
  348. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node-config.ts +0 -8
  349. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.tsx +0 -70
  350. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node.tsx +0 -49
  351. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/index.ts +0 -3
  352. package/web/.next/static/chunks/3c79bca4d3f18f66.js +0 -1
  353. package/web/.next/static/chunks/5cd24ca47061a21d.js +0 -4
  354. package/web/.next/static/chunks/67f2a7a5e8dc358a.css +0 -2
  355. package/web/.next/static/chunks/991d4490d7a338d8.js +0 -1
  356. package/web/.next/static/chunks/c71589df79020ecb.js +0 -1
  357. /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/add-repository-button.d.ts +0 -0
  358. /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/add-repository-button.js +0 -0
  359. /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/pick-folder.d.ts +0 -0
  360. /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/pick-folder.js +0 -0
  361. /package/web/.next/standalone/src/presentation/web/components/common/{add-repository-node → add-repository-button}/add-repository-button.tsx +0 -0
  362. /package/web/.next/standalone/src/presentation/web/components/common/{add-repository-node → add-repository-button}/pick-folder.ts +0 -0
  363. /package/web/.next/static/{IKuYPxAuMvc4BtwKHlj30 → uMxPSDPwZCludF5408rWJ}/_buildManifest.js +0 -0
  364. /package/web/.next/static/{IKuYPxAuMvc4BtwKHlj30 → uMxPSDPwZCludF5408rWJ}/_clientMiddlewareManifest.json +0 -0
  365. /package/web/.next/static/{IKuYPxAuMvc4BtwKHlj30 → uMxPSDPwZCludF5408rWJ}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,15203,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(31406),o=e.i(60112),n=e.i(21023);let s=(0,n.createServerReference)("40438c4a9b92f90f4630366f041139f0f5229ab900",n.callServer,void 0,n.findSourceMapURL,"createFeature");var i=e.i(91891),i=i,l=e.i(3645);let d=(0,l.default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);var c=e.i(16298),c=c;let u=(0,l.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]),p=(0,l.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);var f=e.i(69512),f=f;let m=(0,l.default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var h=e.i(1012),h=h,x=e.i(31777),v=e.i(8361);e.i(1650);var g=e.i(11495),b=e.i(45811),j=e.i(35364),w=e.i(98127);function C({className:e,...r}){return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,x.cn)("placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}var y=e.i(87620),k=r.forwardRef((e,r)=>(0,t.jsx)(y.Primitive.label,{...e,ref:r,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));k.displayName="Label",e.s(["Label",()=>k,"Root",()=>k],27572);var N=e.i(27572),N=N;let P=(0,e.i(94237).cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),R=r.forwardRef(({className:e,...r},a)=>(0,t.jsx)(N.Root,{ref:a,className:(0,x.cn)(P(),e),...r}));R.displayName=N.Root.displayName;var h=h;let E=(0,l.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var S=e.i(5978),A=e.i(22528),F=e.i(91967),O=e.i(36589),D=e.i(77624),T=e.i(85995),I="Checkbox",[M,_]=(0,A.createContextScope)(I),[L,B]=M(I);function z(e){let{__scopeCheckbox:a,checked:o,children:n,defaultChecked:s,disabled:i,form:l,name:d,onCheckedChange:c,required:u,value:p="on",internal_do_not_use_render:f}=e,[m,h]=(0,O.useControllableState)({prop:o,defaultProp:s??!1,onChange:c,caller:I}),[x,v]=r.useState(null),[g,b]=r.useState(null),j=r.useRef(!1),w=!x||!!l||!!x.closest("form"),C={checked:m,disabled:i,setChecked:h,control:x,setControl:v,name:d,form:l,value:p,hasConsumerStoppedPropagationRef:j,required:u,defaultChecked:!W(s)&&s,isFormControl:w,bubbleInput:g,setBubbleInput:b};return(0,t.jsx)(L,{scope:a,...C,children:"function"==typeof f?f(C):n})}var H="CheckboxTrigger",G=r.forwardRef(({__scopeCheckbox:e,onKeyDown:a,onClick:o,...n},s)=>{let{control:i,value:l,disabled:d,checked:c,required:u,setControl:p,setChecked:f,hasConsumerStoppedPropagationRef:m,isFormControl:h,bubbleInput:x}=B(H,e),v=(0,S.useComposedRefs)(s,p),g=r.useRef(c);return r.useEffect(()=>{let e=i?.form;if(e){let t=()=>f(g.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}},[i,f]),(0,t.jsx)(y.Primitive.button,{type:"button",role:"checkbox","aria-checked":W(c)?"mixed":c,"aria-required":u,"data-state":X(c),"data-disabled":d?"":void 0,disabled:d,value:l,...n,ref:v,onKeyDown:(0,F.composeEventHandlers)(a,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,F.composeEventHandlers)(o,e=>{f(e=>!!W(e)||!e),x&&h&&(m.current=e.isPropagationStopped(),m.current||e.stopPropagation())})})});G.displayName=H;var $=r.forwardRef((e,r)=>{let{__scopeCheckbox:a,name:o,checked:n,defaultChecked:s,required:i,disabled:l,value:d,onCheckedChange:c,form:u,...p}=e;return(0,t.jsx)(z,{__scopeCheckbox:a,checked:n,defaultChecked:s,disabled:l,required:i,onCheckedChange:c,name:o,form:u,value:d,internal_do_not_use_render:({isFormControl:e})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(G,{...p,ref:r,__scopeCheckbox:a}),e&&(0,t.jsx)(V,{__scopeCheckbox:a})]})})});$.displayName=I;var U="CheckboxIndicator",K=r.forwardRef((e,r)=>{let{__scopeCheckbox:a,forceMount:o,...n}=e,s=B(U,a);return(0,t.jsx)(T.Presence,{present:o||W(s.checked)||!0===s.checked,children:(0,t.jsx)(y.Primitive.span,{"data-state":X(s.checked),"data-disabled":s.disabled?"":void 0,...n,ref:r,style:{pointerEvents:"none",...e.style}})})});K.displayName=U;var q="CheckboxBubbleInput",V=r.forwardRef(({__scopeCheckbox:e,...a},o)=>{let n,{control:s,hasConsumerStoppedPropagationRef:i,checked:l,defaultChecked:d,required:c,disabled:u,name:p,value:f,form:m,bubbleInput:h,setBubbleInput:x}=B(q,e),v=(0,S.useComposedRefs)(o,x),g=(n=r.useRef({value:l,previous:l}),r.useMemo(()=>(n.current.value!==l&&(n.current.previous=n.current.value,n.current.value=l),n.current.previous),[l])),b=(0,D.useSize)(s);r.useEffect(()=>{if(!h)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,t=!i.current;if(g!==l&&e){let r=new Event("click",{bubbles:t});h.indeterminate=W(l),e.call(h,!W(l)&&l),h.dispatchEvent(r)}},[h,g,l,i]);let j=r.useRef(!W(l)&&l);return(0,t.jsx)(y.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:d??j.current,required:c,disabled:u,name:p,value:f,form:m,...a,tabIndex:-1,ref:v,style:{...a.style,...b,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function W(e){return"indeterminate"===e}function X(e){return W(e)?"indeterminate":e?"checked":"unchecked"}V.displayName=q,e.s(["Checkbox",()=>$,"CheckboxIndicator",()=>K,"Indicator",()=>K,"Root",()=>$,"createCheckboxScope",()=>_,"unstable_BubbleInput",()=>V,"unstable_CheckboxBubbleInput",()=>V,"unstable_CheckboxProvider",()=>z,"unstable_CheckboxTrigger",()=>G,"unstable_Provider",()=>z,"unstable_Trigger",()=>G],57696);var Y=e.i(57696),Y=Y;function Z({className:e,...r}){return(0,t.jsx)(Y.Root,{"data-slot":"checkbox",className:(0,x.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...r,children:(0,t.jsx)(Y.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:"indeterminate"===r.checked?(0,t.jsx)(E,{className:"size-3.5"}):(0,t.jsx)(h.default,{className:"size-3.5"})})})}function J({id:e,label:r,description:a,checked:o,onCheckedChange:n,disabled:s}){return(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)(Z,{id:e,className:"mt-0.75",checked:o,onCheckedChange:e=>n(!0===e),disabled:s}),(0,t.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,t.jsx)(R,{htmlFor:e,className:"cursor-pointer text-sm font-medium",children:r}),a?(0,t.jsx)(R,{htmlFor:e,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:a}):null]})]})}function Q({label:e,description:r,parentAriaLabel:a,options:o,value:n,onValueChange:s,disabled:i}){let l=o.filter(e=>n[e.id]).length,d=l===o.length,c=l>0&&!d,u=`${e.toLowerCase().replace(/\s+/g,"-")}-group`;return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)(Z,{id:u,className:"mt-0.75",checked:c?"indeterminate":d,onCheckedChange:()=>{let e=l<o.length,t={};for(let r of o)t[r.id]=e;s(t)},disabled:i,"aria-label":a??`${e} select all`}),(0,t.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,t.jsx)(R,{htmlFor:u,className:"cursor-pointer text-sm font-medium",children:e}),r?(0,t.jsx)(R,{htmlFor:u,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:r}):null]})]}),(0,t.jsx)("div",{className:"flex flex-col gap-3 pl-6",children:o.map(e=>(0,t.jsx)(J,{id:e.id,label:e.label,description:e.description,checked:n[e.id]??!1,onCheckedChange:t=>{var r;return r=e.id,void s({...n,[r]:t})},disabled:i},e.id))})]})}var ee=e.i(81846),et=e.i(53532),er=e.i(41687),ea=e.i(56720),eo=e.i(13123),en=e.i(52740),es=e.i(39979),ei=e.i(86874),el=e.i(73772),ed=e.i(13044),ec="Popover",[eu,ep]=(0,A.createContextScope)(ec,[en.createPopperScope]),ef=(0,en.createPopperScope)(),[em,eh]=eu(ec),ex=e=>{let{__scopePopover:a,children:o,open:n,defaultOpen:s,onOpenChange:i,modal:l=!1}=e,d=ef(a),c=r.useRef(null),[u,p]=r.useState(!1),[f,m]=(0,O.useControllableState)({prop:n,defaultProp:s??!1,onChange:i,caller:ec});return(0,t.jsx)(en.Root,{...d,children:(0,t.jsx)(em,{scope:a,contentId:(0,eo.useId)(),triggerRef:c,open:f,onOpenChange:m,onOpenToggle:r.useCallback(()=>m(e=>!e),[m]),hasCustomAnchor:u,onCustomAnchorAdd:r.useCallback(()=>p(!0),[]),onCustomAnchorRemove:r.useCallback(()=>p(!1),[]),modal:l,children:o})})};ex.displayName=ec;var ev="PopoverAnchor",eg=r.forwardRef((e,a)=>{let{__scopePopover:o,...n}=e,s=eh(ev,o),i=ef(o),{onCustomAnchorAdd:l,onCustomAnchorRemove:d}=s;return r.useEffect(()=>(l(),()=>d()),[l,d]),(0,t.jsx)(en.Anchor,{...i,...n,ref:a})});eg.displayName=ev;var eb="PopoverTrigger",ej=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,n=eh(eb,a),s=ef(a),i=(0,S.useComposedRefs)(r,n.triggerRef),l=(0,t.jsx)(y.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":eT(n.open),...o,ref:i,onClick:(0,F.composeEventHandlers)(e.onClick,n.onOpenToggle)});return n.hasCustomAnchor?l:(0,t.jsx)(en.Anchor,{asChild:!0,...s,children:l})});ej.displayName=eb;var ew="PopoverPortal",[eC,ey]=eu(ew,{forceMount:void 0}),ek=e=>{let{__scopePopover:r,forceMount:a,children:o,container:n}=e,s=eh(ew,r);return(0,t.jsx)(eC,{scope:r,forceMount:a,children:(0,t.jsx)(T.Presence,{present:a||s.open,children:(0,t.jsx)(es.Portal,{asChild:!0,container:n,children:o})})})};ek.displayName=ew;var eN="PopoverContent",eP=r.forwardRef((e,r)=>{let a=ey(eN,e.__scopePopover),{forceMount:o=a.forceMount,...n}=e,s=eh(eN,e.__scopePopover);return(0,t.jsx)(T.Presence,{present:o||s.open,children:s.modal?(0,t.jsx)(eE,{...n,ref:r}):(0,t.jsx)(eS,{...n,ref:r})})});eP.displayName=eN;var eR=(0,ei.createSlot)("PopoverContent.RemoveScroll"),eE=r.forwardRef((e,a)=>{let o=eh(eN,e.__scopePopover),n=r.useRef(null),s=(0,S.useComposedRefs)(a,n),i=r.useRef(!1);return r.useEffect(()=>{let e=n.current;if(e)return(0,el.hideOthers)(e)},[]),(0,t.jsx)(ed.RemoveScroll,{as:eR,allowPinchZoom:!0,children:(0,t.jsx)(eA,{...e,ref:s,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,F.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),i.current||o.triggerRef.current?.focus()}),onPointerDownOutside:(0,F.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;i.current=2===t.button||r},{checkForDefaultPrevented:!1}),onFocusOutside:(0,F.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),eS=r.forwardRef((e,a)=>{let o=eh(eN,e.__scopePopover),n=r.useRef(!1),s=r.useRef(!1);return(0,t.jsx)(eA,{...e,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(n.current||o.triggerRef.current?.focus(),t.preventDefault()),n.current=!1,s.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(n.current=!0,"pointerdown"===t.detail.originalEvent.type&&(s.current=!0));let r=t.target;o.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&s.current&&t.preventDefault()}})}),eA=r.forwardRef((e,r)=>{let{__scopePopover:a,trapFocus:o,onOpenAutoFocus:n,onCloseAutoFocus:s,disableOutsidePointerEvents:i,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:c,onInteractOutside:u,...p}=e,f=eh(eN,a),m=ef(a);return(0,er.useFocusGuards)(),(0,t.jsx)(ea.FocusScope,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:n,onUnmountAutoFocus:s,children:(0,t.jsx)(et.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:u,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:c,onDismiss:()=>f.onOpenChange(!1),children:(0,t.jsx)(en.Content,{"data-state":eT(f.open),role:"dialog",id:f.contentId,...m,...p,ref:r,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),eF="PopoverClose",eO=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,n=eh(eF,a);return(0,t.jsx)(y.Primitive.button,{type:"button",...o,ref:r,onClick:(0,F.composeEventHandlers)(e.onClick,()=>n.onOpenChange(!1))})});eO.displayName=eF;var eD=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,n=ef(a);return(0,t.jsx)(en.Arrow,{...n,...o,ref:r})});function eT(e){return e?"open":"closed"}eD.displayName="PopoverArrow",e.s(["Anchor",()=>eg,"Arrow",()=>eD,"Close",()=>eO,"Content",()=>eP,"Popover",()=>ex,"PopoverAnchor",()=>eg,"PopoverArrow",()=>eD,"PopoverClose",()=>eO,"PopoverContent",()=>eP,"PopoverPortal",()=>ek,"PopoverTrigger",()=>ej,"Portal",()=>ek,"Root",()=>ex,"Trigger",()=>ej,"createPopoverScope",()=>ep],89920);var eI=e.i(89920),eI=eI;let eM=eI.Root,e_=eI.Trigger;eI.Anchor;let eL=r.forwardRef(({className:e,align:r="center",sideOffset:a=4,...o},n)=>(0,t.jsx)(eI.Portal,{children:(0,t.jsx)(eI.Content,{ref:n,align:r,sideOffset:a,className:(0,x.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",e),...o})}));eL.displayName=eI.Content.displayName;var eB=e.i(30153);async function ez(){let e=await fetch("/api/dialog/pick-files",{method:"POST"});if(!e.ok)throw Error("Failed to open file dialog");let t=await e.json();return t.cancelled?null:t.files}let eH=[{id:"allowPrd",label:"PRD",description:"Auto-approve requirements move to planning."},{id:"allowPlan",label:"Plan",description:"Auto-approve planning move to implementation."},{id:"allowMerge",label:"Merge",description:"Auto-approve merge move to Done."}],eG={allowPrd:!1,allowPlan:!1,allowMerge:!1};function e$({open:e,onClose:a,onSubmit:o,repositoryPath:n,isSubmitting:s=!1,workflowDefaults:l,features:d,initialParentId:c}){let u=(0,v.useSoundAction)("create"),p=l?.approvalGates??eG,f=l?.push??!1,m=l?.openPr??!1,[h,x]=(0,r.useState)(""),[y,k]=(0,r.useState)(""),[N,P]=(0,r.useState)([]),[E,S]=(0,r.useState)({...p}),[A,F]=(0,r.useState)(f),[O,D]=(0,r.useState)(m),[T,I]=(0,r.useState)(void 0);(0,r.useEffect)(()=>{l&&(S({...l.approvalGates}),F(l.push),D(l.openPr))},[l]),(0,r.useEffect)(()=>{e&&c&&I(c)},[e,c]);let M=(0,r.useCallback)(()=>{x(""),k(""),P([]),S({...p}),F(f),D(m),I(void 0)},[p,f,m]),_=""!==h.trim()||""!==y.trim()||N.length>0,{attemptClose:L}=(0,eB.useGuardedDrawerClose)({open:e,isDirty:_,onClose:a,onReset:M}),B=(0,r.useCallback)(e=>{if(e.preventDefault(),!h.trim())return;u.play();let t=y.trim()||void 0;o({name:h.trim(),description:t,attachments:N,repositoryPath:n,approvalGates:{allowPrd:E.allowPrd??!1,allowPlan:E.allowPlan??!1,allowMerge:E.allowMerge??!1},push:A||O,openPr:O,...T?{parentId:T}:{}}),M()},[h,y,N,E,n,o,A,O,T,u,M]),z=(0,r.useCallback)(async()=>{try{let e=await ez();e&&P(t=>[...t,...e])}catch{}},[]),H=(0,r.useCallback)(e=>{P(t=>t.filter(t=>t.path!==e))},[]),G=d&&d.length>0;return(0,t.jsx)(g.BaseDrawer,{open:e,onClose:L,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,t.jsx)(b.DrawerTitle,{children:"NEW FEATURE"})]}),s?(0,t.jsx)(b.DrawerDescription,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(ee.Badge,{variant:"secondary",children:"Creating..."})})}):null]}),footer:(0,t.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,t.jsx)(j.Button,{variant:"outline",onClick:L,disabled:s,children:"Cancel"}),(0,t.jsx)(j.Button,{type:"submit",form:"create-feature-form",disabled:!h.trim()||s,children:s?"Creating...":"+ Create Feature"})]}),children:(0,t.jsx)("div",{className:"overflow-y-auto p-4",children:(0,t.jsxs)("form",{id:"create-feature-form",onSubmit:B,className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{htmlFor:"feature-name",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"FEATURE NAME"}),(0,t.jsx)(w.Input,{id:"feature-name",placeholder:"e.g. GitHub OAuth Login",value:h,onChange:e=>x(e.target.value),required:!0,disabled:s})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"DESCRIPTION"}),(0,t.jsx)(C,{id:"feature-description",placeholder:"Describe what this feature does...",value:y,onChange:e=>k(e.target.value),rows:4,disabled:s})]}),G?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"PARENT FEATURE"}),(0,t.jsx)(eU,{features:d,value:T,onChange:I,disabled:s})]}):null,(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"APPROVE"}),(0,t.jsx)(Q,{label:"Autonomous Mode",description:"YOLO!",parentAriaLabel:"Auto approve all",options:eH,value:E,onValueChange:S,disabled:s})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"GIT"}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsx)(J,{id:"push",label:"Push",description:"Push branch to remote after implementation.",checked:A||O,onCheckedChange:F,disabled:O||s}),(0,t.jsx)(J,{id:"open-pr",label:"Create PR",description:"Open a pull request after pushing.",checked:O,onCheckedChange:D,disabled:s})]})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:["ATTACHMENTS",N.length>0&&(0,t.jsxs)("span",{className:"text-muted-foreground/60 ml-1.5",children:["(",N.length,")"]})]}),(0,t.jsxs)(j.Button,{type:"button",variant:"outline",size:"xs",onClick:z,disabled:s,children:[(0,t.jsx)(i.default,{className:"size-3"}),"Add Files"]})]}),N.length>0&&(0,t.jsx)("div",{className:"flex flex-col gap-2",children:N.map(e=>(0,t.jsx)(eK,{file:e,onRemove:()=>H(e.path),disabled:s},e.path))})]})]})})})}function eU({features:e,value:a,onChange:o,disabled:n}){let[s,i]=(0,r.useState)(!1),[l,d]=(0,r.useState)(""),c=(0,r.useRef)(null),u=e.find(e=>e.id===a),p=l.trim()?e.filter(e=>e.name.toLowerCase().includes(l.toLowerCase())||e.id.toLowerCase().includes(l.toLowerCase())):e,f=(0,r.useCallback)(e=>{o(e),i(!1),d("")},[o]);return(0,r.useEffect)(()=>{s?setTimeout(()=>c.current?.focus(),0):d("")},[s]),(0,t.jsxs)(eM,{open:s,onOpenChange:i,children:[(0,t.jsx)(e_,{asChild:!0,children:(0,t.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":s,"aria-label":"Parent Feature",disabled:n,"data-testid":"parent-feature-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!u&&"text-muted-foreground"),children:[(0,t.jsx)("span",{className:"truncate",children:u?`${u.name} (${u.id.slice(0,8)})`:"Select parent feature..."}),(0,t.jsx)(m,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(eL,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("div",{className:"border-b p-2",children:(0,t.jsx)(w.Input,{ref:c,placeholder:"Search features...",value:l,onChange:e=>d(e.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,t.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===a,onClick:()=>f(void 0),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===a&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,t.jsx)(h.default,{className:(0,x.cn)("h-4 w-4 shrink-0",void 0!==a&&"invisible")}),(0,t.jsx)("span",{className:"text-muted-foreground italic",children:"No parent"})]}),0===p.length&&l?(0,t.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No features found."}):p.map(e=>(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":a===e.id,onClick:()=>f(e.id),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",a===e.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${e.id}`,children:[(0,t.jsx)(h.default,{className:(0,x.cn)("h-4 w-4 shrink-0",a!==e.id&&"invisible")}),(0,t.jsxs)("span",{className:"truncate",children:[e.name," ",(0,t.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",e.id.slice(0,8),")"]})]})]},e.id))]})]})})]})}function eK({file:e,onRemove:r,disabled:a}){var o,n,s;let i,l=(i=(o=e.name).lastIndexOf("."))>=0?o.slice(i).toLowerCase():"",m=(n=l,eq.has(n)?u:".pdf"===n?c.default:eV.has(n)?p:d),h=".pdf"===(s=l)?"bg-red-50 text-red-600":eq.has(s)?"bg-blue-50 text-blue-600":eV.has(s)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600";return(0,t.jsxs)("div",{className:"flex items-center gap-3 rounded-md border p-2",children:[(0,t.jsx)("div",{className:(0,x.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded",h),children:(0,t.jsx)(m,{className:"h-4 w-4"})}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium",children:e.name}),(0,t.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:e.path}),(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:function(e){if(0===e)return"0 B";let t=Math.floor(Math.log(e)/Math.log(1024));return`${(e/Math.pow(1024,t)).toFixed(+(0!==t))} ${["B","KB","MB","GB"][t]}`}(e.size)})]}),(0,t.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon-xs",onClick:r,disabled:a,"aria-label":`Remove ${e.name}`,children:(0,t.jsx)(f.default,{className:"h-3 w-3"})})]})}let eq=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),eV=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function eW({repositoryPath:e,initialParentId:n,features:i,workflowDefaults:l}){let d=(0,a.useRouter)(),c=(0,v.useSoundAction)("create"),[u,p]=(0,r.useState)(!1),f=(0,a.usePathname)(),m=!u&&f.startsWith("/create");(0,r.useEffect)(()=>{!m&&f.startsWith("/create")&&d.replace("/")},[m,f,d]);let h=(0,r.useCallback)(()=>{d.push("/")},[d]),x=(0,r.useCallback)(e=>{p(!0),window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{name:e.name,description:e.description,repositoryPath:e.repositoryPath,parentId:e.parentId}})),d.push("/"),s(e).then(e=>{if(e.error){o.toast.error(e.error),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"));return}c.play()}).catch(()=>{o.toast.error("Failed to create feature"),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"))}).finally(()=>{p(!1)})},[d,c]);return(0,t.jsx)(e$,{open:m,onClose:h,onSubmit:x,repositoryPath:e,features:i,workflowDefaults:l,initialParentId:n,isSubmitting:u})}e.s(["CreateDrawerClient",()=>eW],15203)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,15203,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(31406),o=e.i(60112),n=e.i(21023);let s=(0,n.createServerReference)("407adeca0467e754befa0adb59019d8e855e54468b",n.callServer,void 0,n.findSourceMapURL,"createFeature");var i=e.i(91891),i=i,l=e.i(3645);let d=(0,l.default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);var c=e.i(16298),c=c;let u=(0,l.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]),p=(0,l.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);var f=e.i(69512),f=f;let m=(0,l.default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var h=e.i(1012),h=h,x=e.i(31777),v=e.i(8361);e.i(1650);var g=e.i(11495),b=e.i(45811),j=e.i(35364),w=e.i(98127);function C({className:e,...r}){return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,x.cn)("placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}var k=e.i(87620),y=r.forwardRef((e,r)=>(0,t.jsx)(k.Primitive.label,{...e,ref:r,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));y.displayName="Label",e.s(["Label",()=>y,"Root",()=>y],27572);var N=e.i(27572),N=N;let P=(0,e.i(94237).cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),R=r.forwardRef(({className:e,...r},a)=>(0,t.jsx)(N.Root,{ref:a,className:(0,x.cn)(P(),e),...r}));R.displayName=N.Root.displayName;var h=h;let E=(0,l.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var S=e.i(5978),A=e.i(22528),F=e.i(91967),O=e.i(36589),D=e.i(77624),T=e.i(85995),I="Checkbox",[M,_]=(0,A.createContextScope)(I),[L,B]=M(I);function z(e){let{__scopeCheckbox:a,checked:o,children:n,defaultChecked:s,disabled:i,form:l,name:d,onCheckedChange:c,required:u,value:p="on",internal_do_not_use_render:f}=e,[m,h]=(0,O.useControllableState)({prop:o,defaultProp:s??!1,onChange:c,caller:I}),[x,v]=r.useState(null),[g,b]=r.useState(null),j=r.useRef(!1),w=!x||!!l||!!x.closest("form"),C={checked:m,disabled:i,setChecked:h,control:x,setControl:v,name:d,form:l,value:p,hasConsumerStoppedPropagationRef:j,required:u,defaultChecked:!W(s)&&s,isFormControl:w,bubbleInput:g,setBubbleInput:b};return(0,t.jsx)(L,{scope:a,...C,children:"function"==typeof f?f(C):n})}var H="CheckboxTrigger",G=r.forwardRef(({__scopeCheckbox:e,onKeyDown:a,onClick:o,...n},s)=>{let{control:i,value:l,disabled:d,checked:c,required:u,setControl:p,setChecked:f,hasConsumerStoppedPropagationRef:m,isFormControl:h,bubbleInput:x}=B(H,e),v=(0,S.useComposedRefs)(s,p),g=r.useRef(c);return r.useEffect(()=>{let e=i?.form;if(e){let t=()=>f(g.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}},[i,f]),(0,t.jsx)(k.Primitive.button,{type:"button",role:"checkbox","aria-checked":W(c)?"mixed":c,"aria-required":u,"data-state":X(c),"data-disabled":d?"":void 0,disabled:d,value:l,...n,ref:v,onKeyDown:(0,F.composeEventHandlers)(a,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,F.composeEventHandlers)(o,e=>{f(e=>!!W(e)||!e),x&&h&&(m.current=e.isPropagationStopped(),m.current||e.stopPropagation())})})});G.displayName=H;var $=r.forwardRef((e,r)=>{let{__scopeCheckbox:a,name:o,checked:n,defaultChecked:s,required:i,disabled:l,value:d,onCheckedChange:c,form:u,...p}=e;return(0,t.jsx)(z,{__scopeCheckbox:a,checked:n,defaultChecked:s,disabled:l,required:i,onCheckedChange:c,name:o,form:u,value:d,internal_do_not_use_render:({isFormControl:e})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(G,{...p,ref:r,__scopeCheckbox:a}),e&&(0,t.jsx)(V,{__scopeCheckbox:a})]})})});$.displayName=I;var U="CheckboxIndicator",K=r.forwardRef((e,r)=>{let{__scopeCheckbox:a,forceMount:o,...n}=e,s=B(U,a);return(0,t.jsx)(T.Presence,{present:o||W(s.checked)||!0===s.checked,children:(0,t.jsx)(k.Primitive.span,{"data-state":X(s.checked),"data-disabled":s.disabled?"":void 0,...n,ref:r,style:{pointerEvents:"none",...e.style}})})});K.displayName=U;var q="CheckboxBubbleInput",V=r.forwardRef(({__scopeCheckbox:e,...a},o)=>{let n,{control:s,hasConsumerStoppedPropagationRef:i,checked:l,defaultChecked:d,required:c,disabled:u,name:p,value:f,form:m,bubbleInput:h,setBubbleInput:x}=B(q,e),v=(0,S.useComposedRefs)(o,x),g=(n=r.useRef({value:l,previous:l}),r.useMemo(()=>(n.current.value!==l&&(n.current.previous=n.current.value,n.current.value=l),n.current.previous),[l])),b=(0,D.useSize)(s);r.useEffect(()=>{if(!h)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,t=!i.current;if(g!==l&&e){let r=new Event("click",{bubbles:t});h.indeterminate=W(l),e.call(h,!W(l)&&l),h.dispatchEvent(r)}},[h,g,l,i]);let j=r.useRef(!W(l)&&l);return(0,t.jsx)(k.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:d??j.current,required:c,disabled:u,name:p,value:f,form:m,...a,tabIndex:-1,ref:v,style:{...a.style,...b,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function W(e){return"indeterminate"===e}function X(e){return W(e)?"indeterminate":e?"checked":"unchecked"}V.displayName=q,e.s(["Checkbox",()=>$,"CheckboxIndicator",()=>K,"Indicator",()=>K,"Root",()=>$,"createCheckboxScope",()=>_,"unstable_BubbleInput",()=>V,"unstable_CheckboxBubbleInput",()=>V,"unstable_CheckboxProvider",()=>z,"unstable_CheckboxTrigger",()=>G,"unstable_Provider",()=>z,"unstable_Trigger",()=>G],57696);var Y=e.i(57696),Y=Y;function Z({className:e,...r}){return(0,t.jsx)(Y.Root,{"data-slot":"checkbox",className:(0,x.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...r,children:(0,t.jsx)(Y.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:"indeterminate"===r.checked?(0,t.jsx)(E,{className:"size-3.5"}):(0,t.jsx)(h.default,{className:"size-3.5"})})})}function J({id:e,label:r,description:a,checked:o,onCheckedChange:n,disabled:s}){return(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)(Z,{id:e,className:"mt-0.75",checked:o,onCheckedChange:e=>n(!0===e),disabled:s}),(0,t.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,t.jsx)(R,{htmlFor:e,className:"cursor-pointer text-sm font-medium",children:r}),a?(0,t.jsx)(R,{htmlFor:e,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:a}):null]})]})}function Q({label:e,description:r,parentAriaLabel:a,options:o,value:n,onValueChange:s,disabled:i}){let l=o.filter(e=>n[e.id]).length,d=l===o.length,c=l>0&&!d,u=`${e.toLowerCase().replace(/\s+/g,"-")}-group`;return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)(Z,{id:u,className:"mt-0.75",checked:c?"indeterminate":d,onCheckedChange:()=>{let e=l<o.length,t={};for(let r of o)t[r.id]=e;s(t)},disabled:i,"aria-label":a??`${e} select all`}),(0,t.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,t.jsx)(R,{htmlFor:u,className:"cursor-pointer text-sm font-medium",children:e}),r?(0,t.jsx)(R,{htmlFor:u,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:r}):null]})]}),(0,t.jsx)("div",{className:"flex flex-col gap-3 pl-6",children:o.map(e=>(0,t.jsx)(J,{id:e.id,label:e.label,description:e.description,checked:n[e.id]??!1,onCheckedChange:t=>{var r;return r=e.id,void s({...n,[r]:t})},disabled:i},e.id))})]})}var ee=e.i(81846),et=e.i(53532),er=e.i(41687),ea=e.i(56720),eo=e.i(13123),en=e.i(52740),es=e.i(39979),ei=e.i(86874),el=e.i(73772),ed=e.i(13044),ec="Popover",[eu,ep]=(0,A.createContextScope)(ec,[en.createPopperScope]),ef=(0,en.createPopperScope)(),[em,eh]=eu(ec),ex=e=>{let{__scopePopover:a,children:o,open:n,defaultOpen:s,onOpenChange:i,modal:l=!1}=e,d=ef(a),c=r.useRef(null),[u,p]=r.useState(!1),[f,m]=(0,O.useControllableState)({prop:n,defaultProp:s??!1,onChange:i,caller:ec});return(0,t.jsx)(en.Root,{...d,children:(0,t.jsx)(em,{scope:a,contentId:(0,eo.useId)(),triggerRef:c,open:f,onOpenChange:m,onOpenToggle:r.useCallback(()=>m(e=>!e),[m]),hasCustomAnchor:u,onCustomAnchorAdd:r.useCallback(()=>p(!0),[]),onCustomAnchorRemove:r.useCallback(()=>p(!1),[]),modal:l,children:o})})};ex.displayName=ec;var ev="PopoverAnchor",eg=r.forwardRef((e,a)=>{let{__scopePopover:o,...n}=e,s=eh(ev,o),i=ef(o),{onCustomAnchorAdd:l,onCustomAnchorRemove:d}=s;return r.useEffect(()=>(l(),()=>d()),[l,d]),(0,t.jsx)(en.Anchor,{...i,...n,ref:a})});eg.displayName=ev;var eb="PopoverTrigger",ej=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,n=eh(eb,a),s=ef(a),i=(0,S.useComposedRefs)(r,n.triggerRef),l=(0,t.jsx)(k.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":eT(n.open),...o,ref:i,onClick:(0,F.composeEventHandlers)(e.onClick,n.onOpenToggle)});return n.hasCustomAnchor?l:(0,t.jsx)(en.Anchor,{asChild:!0,...s,children:l})});ej.displayName=eb;var ew="PopoverPortal",[eC,ek]=eu(ew,{forceMount:void 0}),ey=e=>{let{__scopePopover:r,forceMount:a,children:o,container:n}=e,s=eh(ew,r);return(0,t.jsx)(eC,{scope:r,forceMount:a,children:(0,t.jsx)(T.Presence,{present:a||s.open,children:(0,t.jsx)(es.Portal,{asChild:!0,container:n,children:o})})})};ey.displayName=ew;var eN="PopoverContent",eP=r.forwardRef((e,r)=>{let a=ek(eN,e.__scopePopover),{forceMount:o=a.forceMount,...n}=e,s=eh(eN,e.__scopePopover);return(0,t.jsx)(T.Presence,{present:o||s.open,children:s.modal?(0,t.jsx)(eE,{...n,ref:r}):(0,t.jsx)(eS,{...n,ref:r})})});eP.displayName=eN;var eR=(0,ei.createSlot)("PopoverContent.RemoveScroll"),eE=r.forwardRef((e,a)=>{let o=eh(eN,e.__scopePopover),n=r.useRef(null),s=(0,S.useComposedRefs)(a,n),i=r.useRef(!1);return r.useEffect(()=>{let e=n.current;if(e)return(0,el.hideOthers)(e)},[]),(0,t.jsx)(ed.RemoveScroll,{as:eR,allowPinchZoom:!0,children:(0,t.jsx)(eA,{...e,ref:s,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,F.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),i.current||o.triggerRef.current?.focus()}),onPointerDownOutside:(0,F.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;i.current=2===t.button||r},{checkForDefaultPrevented:!1}),onFocusOutside:(0,F.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),eS=r.forwardRef((e,a)=>{let o=eh(eN,e.__scopePopover),n=r.useRef(!1),s=r.useRef(!1);return(0,t.jsx)(eA,{...e,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(n.current||o.triggerRef.current?.focus(),t.preventDefault()),n.current=!1,s.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(n.current=!0,"pointerdown"===t.detail.originalEvent.type&&(s.current=!0));let r=t.target;o.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&s.current&&t.preventDefault()}})}),eA=r.forwardRef((e,r)=>{let{__scopePopover:a,trapFocus:o,onOpenAutoFocus:n,onCloseAutoFocus:s,disableOutsidePointerEvents:i,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:c,onInteractOutside:u,...p}=e,f=eh(eN,a),m=ef(a);return(0,er.useFocusGuards)(),(0,t.jsx)(ea.FocusScope,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:n,onUnmountAutoFocus:s,children:(0,t.jsx)(et.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:u,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:c,onDismiss:()=>f.onOpenChange(!1),children:(0,t.jsx)(en.Content,{"data-state":eT(f.open),role:"dialog",id:f.contentId,...m,...p,ref:r,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),eF="PopoverClose",eO=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,n=eh(eF,a);return(0,t.jsx)(k.Primitive.button,{type:"button",...o,ref:r,onClick:(0,F.composeEventHandlers)(e.onClick,()=>n.onOpenChange(!1))})});eO.displayName=eF;var eD=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,n=ef(a);return(0,t.jsx)(en.Arrow,{...n,...o,ref:r})});function eT(e){return e?"open":"closed"}eD.displayName="PopoverArrow",e.s(["Anchor",()=>eg,"Arrow",()=>eD,"Close",()=>eO,"Content",()=>eP,"Popover",()=>ex,"PopoverAnchor",()=>eg,"PopoverArrow",()=>eD,"PopoverClose",()=>eO,"PopoverContent",()=>eP,"PopoverPortal",()=>ey,"PopoverTrigger",()=>ej,"Portal",()=>ey,"Root",()=>ex,"Trigger",()=>ej,"createPopoverScope",()=>ep],89920);var eI=e.i(89920),eI=eI;let eM=eI.Root,e_=eI.Trigger;eI.Anchor;let eL=r.forwardRef(({className:e,align:r="center",sideOffset:a=4,...o},n)=>(0,t.jsx)(eI.Portal,{children:(0,t.jsx)(eI.Content,{ref:n,align:r,sideOffset:a,className:(0,x.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",e),...o})}));eL.displayName=eI.Content.displayName;var eB=e.i(30153);async function ez(){let e=await fetch("/api/dialog/pick-files",{method:"POST"});if(!e.ok)throw Error("Failed to open file dialog");let t=await e.json();return t.cancelled?null:t.files}let eH=[{id:"allowPrd",label:"PRD",description:"Auto-approve requirements move to planning."},{id:"allowPlan",label:"Plan",description:"Auto-approve planning move to implementation."},{id:"allowMerge",label:"Merge",description:"Auto-approve merge move to Done."}],eG={allowPrd:!1,allowPlan:!1,allowMerge:!1};function e$({open:e,onClose:a,onSubmit:o,repositoryPath:n,isSubmitting:s=!1,workflowDefaults:l,features:d,initialParentId:c}){let u=(0,v.useSoundAction)("create"),p=l?.approvalGates??eG,f=l?.push??!1,m=l?.openPr??!1,[h,x]=(0,r.useState)(""),[k,y]=(0,r.useState)(""),[N,P]=(0,r.useState)([]),[E,S]=(0,r.useState)({...p}),[A,F]=(0,r.useState)(f),[O,D]=(0,r.useState)(m),[T,I]=(0,r.useState)(void 0);(0,r.useEffect)(()=>{l&&(S({...l.approvalGates}),F(l.push),D(l.openPr))},[l]),(0,r.useEffect)(()=>{e&&c&&I(c)},[e,c]);let M=(0,r.useCallback)(()=>{x(""),y(""),P([]),S({...p}),F(f),D(m),I(void 0)},[p,f,m]),_=""!==h.trim()||""!==k.trim()||N.length>0,{attemptClose:L}=(0,eB.useGuardedDrawerClose)({open:e,isDirty:_,onClose:a,onReset:M}),B=(0,r.useCallback)(e=>{if(e.preventDefault(),!h.trim())return;u.play();let t=k.trim()||void 0;o({name:h.trim(),description:t,attachments:N,repositoryPath:n,approvalGates:{allowPrd:E.allowPrd??!1,allowPlan:E.allowPlan??!1,allowMerge:E.allowMerge??!1},push:A||O,openPr:O,...T?{parentId:T}:{}}),M()},[h,k,N,E,n,o,A,O,T,u,M]),z=(0,r.useCallback)(async()=>{try{let e=await ez();e&&P(t=>[...t,...e])}catch{}},[]),H=(0,r.useCallback)(e=>{P(t=>t.filter(t=>t.path!==e))},[]),G=d&&d.length>0;return(0,t.jsx)(g.BaseDrawer,{open:e,onClose:L,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,t.jsx)(b.DrawerTitle,{children:"NEW FEATURE"})]}),s?(0,t.jsx)(b.DrawerDescription,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(ee.Badge,{variant:"secondary",children:"Creating..."})})}):null]}),footer:(0,t.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,t.jsx)(j.Button,{variant:"outline",onClick:L,disabled:s,children:"Cancel"}),(0,t.jsx)(j.Button,{type:"submit",form:"create-feature-form",disabled:!h.trim()||s,children:s?"Creating...":"+ Create Feature"})]}),children:(0,t.jsx)("div",{className:"overflow-y-auto p-4",children:(0,t.jsxs)("form",{id:"create-feature-form",onSubmit:B,className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{htmlFor:"feature-name",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"FEATURE NAME"}),(0,t.jsx)(w.Input,{id:"feature-name",placeholder:"e.g. GitHub OAuth Login",value:h,onChange:e=>x(e.target.value),required:!0,disabled:s})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"DESCRIPTION"}),(0,t.jsx)(C,{id:"feature-description",placeholder:"Describe what this feature does...",value:k,onChange:e=>y(e.target.value),rows:4,disabled:s})]}),G?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"PARENT FEATURE"}),(0,t.jsx)(eU,{features:d,value:T,onChange:I,disabled:s})]}):null,(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"APPROVE"}),(0,t.jsx)(Q,{label:"Autonomous Mode",description:"YOLO!",parentAriaLabel:"Auto approve all",options:eH,value:E,onValueChange:S,disabled:s})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"GIT"}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsx)(J,{id:"push",label:"Push",description:"Push branch to remote after implementation.",checked:A||O,onCheckedChange:F,disabled:O||s}),(0,t.jsx)(J,{id:"open-pr",label:"Create PR",description:"Open a pull request after pushing.",checked:O,onCheckedChange:D,disabled:s})]})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)(R,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:["ATTACHMENTS",N.length>0&&(0,t.jsxs)("span",{className:"text-muted-foreground/60 ml-1.5",children:["(",N.length,")"]})]}),(0,t.jsxs)(j.Button,{type:"button",variant:"outline",size:"xs",onClick:z,disabled:s,children:[(0,t.jsx)(i.default,{className:"size-3"}),"Add Files"]})]}),N.length>0&&(0,t.jsx)("div",{className:"flex flex-col gap-2",children:N.map(e=>(0,t.jsx)(eK,{file:e,onRemove:()=>H(e.path),disabled:s},e.path))})]})]})})})}function eU({features:e,value:a,onChange:o,disabled:n}){let[s,i]=(0,r.useState)(!1),[l,d]=(0,r.useState)(""),c=(0,r.useRef)(null),u=e.find(e=>e.id===a),p=l.trim()?e.filter(e=>e.name.toLowerCase().includes(l.toLowerCase())||e.id.toLowerCase().includes(l.toLowerCase())):e,f=(0,r.useCallback)(e=>{o(e),i(!1),d("")},[o]);return(0,r.useEffect)(()=>{s?setTimeout(()=>c.current?.focus(),0):d("")},[s]),(0,t.jsxs)(eM,{open:s,onOpenChange:i,children:[(0,t.jsx)(e_,{asChild:!0,children:(0,t.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":s,"aria-label":"Parent Feature",disabled:n,"data-testid":"parent-feature-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!u&&"text-muted-foreground"),children:[(0,t.jsx)("span",{className:"truncate",children:u?`${u.name} (${u.id.slice(0,8)})`:"Select parent feature..."}),(0,t.jsx)(m,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(eL,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("div",{className:"border-b p-2",children:(0,t.jsx)(w.Input,{ref:c,placeholder:"Search features...",value:l,onChange:e=>d(e.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,t.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===a,onClick:()=>f(void 0),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===a&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,t.jsx)(h.default,{className:(0,x.cn)("h-4 w-4 shrink-0",void 0!==a&&"invisible")}),(0,t.jsx)("span",{className:"text-muted-foreground italic",children:"No parent"})]}),0===p.length&&l?(0,t.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No features found."}):p.map(e=>(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":a===e.id,onClick:()=>f(e.id),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",a===e.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${e.id}`,children:[(0,t.jsx)(h.default,{className:(0,x.cn)("h-4 w-4 shrink-0",a!==e.id&&"invisible")}),(0,t.jsxs)("span",{className:"truncate",children:[e.name," ",(0,t.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",e.id.slice(0,8),")"]})]})]},e.id))]})]})})]})}function eK({file:e,onRemove:r,disabled:a}){var o,n,s;let i,l=(i=(o=e.name).lastIndexOf("."))>=0?o.slice(i).toLowerCase():"",m=(n=l,eq.has(n)?u:".pdf"===n?c.default:eV.has(n)?p:d),h=".pdf"===(s=l)?"bg-red-50 text-red-600":eq.has(s)?"bg-blue-50 text-blue-600":eV.has(s)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600";return(0,t.jsxs)("div",{className:"flex items-center gap-3 rounded-md border p-2",children:[(0,t.jsx)("div",{className:(0,x.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded",h),children:(0,t.jsx)(m,{className:"h-4 w-4"})}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium",children:e.name}),(0,t.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:e.path}),(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:function(e){if(0===e)return"0 B";let t=Math.floor(Math.log(e)/Math.log(1024));return`${(e/Math.pow(1024,t)).toFixed(+(0!==t))} ${["B","KB","MB","GB"][t]}`}(e.size)})]}),(0,t.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon-xs",onClick:r,disabled:a,"aria-label":`Remove ${e.name}`,children:(0,t.jsx)(f.default,{className:"h-3 w-3"})})]})}let eq=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),eV=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function eW({repositoryPath:e,initialParentId:n,features:i,workflowDefaults:l}){let d=(0,a.useRouter)(),[c,u]=(0,r.useState)(!1),p=(0,a.usePathname)().startsWith("/create"),f=!c&&p;(0,r.useEffect)(()=>{!p&&c&&u(!1)},[p,c]);let m=(0,r.useCallback)(()=>{d.push("/")},[d]),h=(0,r.useCallback)(e=>{u(!0),d.push("/"),s(e).then(t=>{if(t.error){o.toast.error(t.error),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"));return}window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:t.feature.id,name:t.feature.name,description:t.feature.description,repositoryPath:t.feature.repositoryPath,parentId:e.parentId}}))}).catch(()=>{o.toast.error("Failed to create feature"),window.dispatchEvent(new CustomEvent("shep:feature-create-failed")),u(!1)})},[d]);return(0,t.jsx)(e$,{open:f,onClose:m,onSubmit:h,repositoryPath:e,features:i,workflowDefaults:l,initialParentId:n,isSubmitting:c})}e.s(["CreateDrawerClient",()=>eW],15203)}]);