@shepai/cli 1.75.0-pr237.5e7fa4f → 1.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +0 -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/ports/output/services/spec-initializer.interface.d.ts +1 -4
  4. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +2 -5
  7. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +0 -2
  8. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +0 -1
  10. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  11. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +0 -3
  12. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +0 -1
  13. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  14. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +1 -10
  15. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.js +0 -1
  17. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -1
  18. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +3 -8
  20. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  21. package/dist/src/presentation/cli/commands/feat/new.command.js +0 -2
  22. package/dist/src/presentation/web/app/actions/create-feature.d.ts +0 -2
  23. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  24. package/dist/src/presentation/web/app/actions/create-feature.js +1 -3
  25. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +0 -2
  26. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -5
  28. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +0 -18
  29. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  30. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +0 -49
  31. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  32. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +5 -31
  33. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -4
  34. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  35. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -4
  36. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +1 -4
  37. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  38. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +2 -3
  39. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts +0 -3
  40. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  41. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +0 -89
  42. package/dist/src/presentation/web/hooks/use-graph-state.d.ts +0 -2
  43. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
  44. package/dist/src/presentation/web/hooks/use-graph-state.js +0 -4
  45. package/dist/tsconfig.build.tsbuildinfo +1 -1
  46. package/package.json +1 -1
  47. package/web/.next/BUILD_ID +1 -1
  48. package/web/.next/build-manifest.json +2 -2
  49. package/web/.next/cache/.previewinfo +1 -1
  50. package/web/.next/cache/.rscinfo +1 -1
  51. package/web/.next/cache/.tsbuildinfo +1 -1
  52. package/web/.next/cache/config.json +3 -3
  53. package/web/.next/fallback-build-manifest.json +2 -2
  54. package/web/.next/prerender-manifest.json +3 -3
  55. package/web/.next/required-server-files.js +1 -1
  56. package/web/.next/required-server-files.json +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  58. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  61. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  62. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  64. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  67. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  70. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  73. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  74. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  76. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/_global-error.html +2 -2
  79. package/web/.next/server/app/_global-error.rsc +1 -1
  80. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  81. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  82. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  84. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  85. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  86. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  88. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  89. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  91. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  92. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  94. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  95. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  96. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  97. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  98. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  99. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  100. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  101. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  102. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
  103. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  104. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  105. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  107. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  109. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  112. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  118. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
  119. package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  120. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
  121. package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  122. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  124. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/{_70427cc3._.js → _fd351734._.js} +3 -3
  126. package/web/.next/server/chunks/ssr/{_70427cc3._.js.map → _fd351734._.js.map} +1 -1
  127. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  128. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js.map +1 -1
  129. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  130. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js.map +1 -1
  131. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  132. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js.map +1 -1
  133. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  134. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js.map +1 -1
  135. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  136. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  137. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  138. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  139. package/web/.next/server/pages/500.html +2 -2
  140. package/web/.next/server/server-reference-manifest.js +1 -1
  141. package/web/.next/server/server-reference-manifest.json +22 -22
  142. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  143. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  144. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  145. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  146. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  147. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  148. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  149. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  150. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  151. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  152. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  153. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  154. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  155. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  156. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  157. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  158. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  159. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  160. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  161. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  162. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  163. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  164. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  165. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  166. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  167. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  168. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  169. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  170. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  171. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  172. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  173. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  174. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  175. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  176. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  177. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  178. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  179. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  180. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  181. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  182. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  183. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  184. 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
  185. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  186. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  187. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  188. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  189. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  190. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  191. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  192. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  193. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  194. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  195. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  196. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  197. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  198. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  199. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  200. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_70427cc3._.js → _fd351734._.js} +3 -3
  201. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  202. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  203. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  204. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  205. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  206. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  207. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  208. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  209. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +22 -22
  210. package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +1 -6
  211. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +0 -57
  212. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +0 -21
  213. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +4 -36
  214. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +3 -7
  215. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +0 -103
  216. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +1 -7
  217. package/web/.next/standalone/src/presentation/web/hooks/use-graph-state.ts +0 -7
  218. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  219. package/web/.next/static/chunks/{224919f6f72a4a90.js → 0351dfb1a2c04651.js} +1 -1
  220. package/web/.next/static/chunks/{31a91284309556ca.js → 09e8bde4c8c36032.js} +1 -1
  221. package/web/.next/static/chunks/{9fd70802deb2e4b6.js → 25c39fb56c1fb992.js} +1 -1
  222. package/web/.next/static/chunks/2a37d25332b5648b.js +1 -0
  223. package/web/.next/static/chunks/{bafdd9797848cd20.js → 3ce5a1e5f4215598.js} +3 -3
  224. package/web/.next/static/chunks/{ab7bce7118a0f933.js → 409477e14c0251ad.js} +1 -1
  225. package/web/.next/static/chunks/{9de39ba6f1d109ce.js → 7fc4ef147139e5d7.js} +1 -1
  226. package/web/.next/static/chunks/{ed9bf11850c038ad.js → c98e709ebd484e56.js} +1 -1
  227. package/web/.next/static/chunks/{a88681644bdb457b.js → d1c098005f96b0c2.js} +1 -1
  228. package/web/.next/trace +1 -1
  229. package/web/.next/trace-build +1 -1
  230. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +0 -220
  231. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +0 -1
  232. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.js +0 -66
  233. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts +0 -21
  234. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +0 -1
  235. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +0 -60
  236. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts +0 -25
  237. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +0 -1
  238. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +0 -176
  239. package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts +0 -15
  240. package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts.map +0 -1
  241. package/dist/src/presentation/web/hooks/use-viewport-persistence.js +0 -17
  242. package/web/.next/standalone/src/presentation/web/hooks/use-viewport-persistence.ts +0 -28
  243. package/web/.next/static/chunks/9b07281f9fa372ca.js +0 -1
  244. /package/web/.next/static/{Z3nGW8HgUl_Ajpr-2arJQ → noYkP21cohTYVGvhHBqjY}/_buildManifest.js +0 -0
  245. /package/web/.next/static/{Z3nGW8HgUl_Ajpr-2arJQ → noYkP21cohTYVGvhHBqjY}/_clientMiddlewareManifest.json +0 -0
  246. /package/web/.next/static/{Z3nGW8HgUl_Ajpr-2arJQ → noYkP21cohTYVGvhHBqjY}/_ssgManifest.js +0 -0
@@ -1,176 +0,0 @@
1
- /**
2
- * Fast-Implement Prompt Builder
3
- *
4
- * Builds a single-pass implementation prompt for fast mode.
5
- * Combines the user's raw query with lightweight codebase context
6
- * (CLAUDE.md, package.json, shallow directory listing).
7
- *
8
- * The prompt instructs the executor to implement changes and run tests,
9
- * but NOT to commit, push, or create PRs (that's the merge node's job).
10
- */
11
- import { readFileSync, readdirSync, statSync } from 'node:fs';
12
- import { join } from 'node:path';
13
- import yaml from 'js-yaml';
14
- import { readSpecFile } from '../node-helpers.js';
15
- /**
16
- * Read a file from the worktree, returning empty string if not found.
17
- */
18
- function readWorktreeFile(worktreePath, filename) {
19
- try {
20
- return readFileSync(join(worktreePath, filename), 'utf-8');
21
- }
22
- catch {
23
- return '';
24
- }
25
- }
26
- /**
27
- * Build a shallow directory listing (depth 1-2) of the worktree.
28
- * Returns a tree-style string. Skips common noise directories.
29
- */
30
- function buildDirectoryListing(worktreePath) {
31
- const SKIP_DIRS = new Set([
32
- 'node_modules',
33
- '.git',
34
- '.next',
35
- 'dist',
36
- 'build',
37
- 'coverage',
38
- '.turbo',
39
- '.cache',
40
- '.shep',
41
- ]);
42
- const lines = [];
43
- try {
44
- const topLevel = readdirSync(worktreePath);
45
- for (const entry of topLevel) {
46
- if (SKIP_DIRS.has(entry))
47
- continue;
48
- const fullPath = join(worktreePath, entry);
49
- let isDir = false;
50
- try {
51
- isDir = statSync(fullPath).isDirectory();
52
- }
53
- catch {
54
- continue;
55
- }
56
- if (isDir) {
57
- lines.push(`${entry}/`);
58
- try {
59
- const children = readdirSync(fullPath);
60
- for (const child of children) {
61
- if (SKIP_DIRS.has(child))
62
- continue;
63
- const childPath = join(fullPath, child);
64
- let childIsDir = false;
65
- try {
66
- childIsDir = statSync(childPath).isDirectory();
67
- }
68
- catch {
69
- continue;
70
- }
71
- lines.push(` ${child}${childIsDir ? '/' : ''}`);
72
- }
73
- }
74
- catch {
75
- // Cannot read subdirectory — skip
76
- }
77
- }
78
- else {
79
- lines.push(entry);
80
- }
81
- }
82
- }
83
- catch {
84
- return '(unable to list directory)';
85
- }
86
- return lines.join('\n');
87
- }
88
- /**
89
- * Extract the user query from spec.yaml's userQuery field.
90
- * Falls back to the raw YAML content if parsing fails.
91
- */
92
- function extractUserQuery(specDir) {
93
- const specContent = readSpecFile(specDir, 'spec.yaml');
94
- if (!specContent)
95
- return '';
96
- try {
97
- const data = yaml.load(specContent);
98
- const userQuery = data?.userQuery;
99
- if (typeof userQuery === 'string' && userQuery.trim()) {
100
- return userQuery.trim();
101
- }
102
- }
103
- catch {
104
- // Fall through to raw content
105
- }
106
- return specContent;
107
- }
108
- /**
109
- * Build the fast-implement prompt from user query + codebase context.
110
- *
111
- * The prompt includes:
112
- * 1. User's raw query (from spec.yaml userQuery field)
113
- * 2. CLAUDE.md content (if exists)
114
- * 3. package.json (if exists)
115
- * 4. Shallow directory listing (depth 1-2)
116
- *
117
- * Instructs the executor to implement, test, and validate — but NOT
118
- * commit/push/PR (that's the merge node's job).
119
- */
120
- export function buildFastImplementPrompt(state) {
121
- const cwd = state.worktreePath || state.repositoryPath;
122
- const userQuery = extractUserQuery(state.specDir);
123
- // Read optional context files
124
- const claudeMd = readWorktreeFile(cwd, 'CLAUDE.md');
125
- const packageJson = readWorktreeFile(cwd, 'package.json');
126
- const dirListing = buildDirectoryListing(cwd);
127
- // Build sections conditionally
128
- const sections = [];
129
- sections.push(`You are a senior software engineer implementing a change directly from a user request.
130
-
131
- ## User Request
132
-
133
- ${userQuery}
134
-
135
- ## Implementation Instructions
136
-
137
- 1. Implement the requested changes in the codebase
138
- 2. Write tests for your changes where appropriate
139
- 3. Run the test suite and fix any failures
140
- 4. Run the linter and fix any issues
141
- 5. Ensure the project builds successfully
142
- 6. Do NOT commit, push, or create a PR — just make the code changes
143
-
144
- ## Working Directory
145
-
146
- ${cwd}`);
147
- if (claudeMd) {
148
- sections.push(`## Project Guidelines (CLAUDE.md)
149
-
150
- ${claudeMd}`);
151
- }
152
- if (packageJson) {
153
- // Truncate large package.json to stay within prompt budget
154
- const truncated = packageJson.length > 3000 ? `${packageJson.slice(0, 3000)}\n...(truncated)` : packageJson;
155
- sections.push(`## Package Configuration (package.json)
156
-
157
- \`\`\`json
158
- ${truncated}
159
- \`\`\``);
160
- }
161
- if (dirListing && dirListing !== '(unable to list directory)') {
162
- sections.push(`## Project Structure
163
-
164
- \`\`\`
165
- ${dirListing}
166
- \`\`\``);
167
- }
168
- sections.push(`## Constraints
169
-
170
- - Implement ONLY what the user requested — nothing more
171
- - Follow existing codebase conventions and patterns
172
- - Do NOT commit, push, or create pull requests
173
- - Do NOT modify any spec YAML files
174
- - Keep changes focused and minimal`);
175
- return sections.join('\n\n');
176
- }
@@ -1,15 +0,0 @@
1
- export interface Viewport {
2
- x: number;
3
- y: number;
4
- zoom: number;
5
- }
6
- export declare const DEFAULT_VIEWPORT: Viewport;
7
- /**
8
- * Persists the ReactFlow viewport position across re-renders so the canvas
9
- * doesn't jump back to the origin when nodes update.
10
- */
11
- export declare function useViewportPersistence(): {
12
- defaultViewport: Viewport;
13
- onMoveEnd: (viewport: Viewport) => void;
14
- };
15
- //# sourceMappingURL=use-viewport-persistence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-viewport-persistence.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-viewport-persistence.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,gBAAgB,EAAE,QAAkC,CAAC;AAElE;;;GAGG;AACH,wBAAgB,sBAAsB;;0BAGK,QAAQ;EAQlD"}
@@ -1,17 +0,0 @@
1
- 'use client';
2
- import { useCallback, useRef } from 'react';
3
- export const DEFAULT_VIEWPORT = { x: 0, y: 0, zoom: 1 };
4
- /**
5
- * Persists the ReactFlow viewport position across re-renders so the canvas
6
- * doesn't jump back to the origin when nodes update.
7
- */
8
- export function useViewportPersistence() {
9
- const viewportRef = useRef(DEFAULT_VIEWPORT);
10
- const onMoveEnd = useCallback((viewport) => {
11
- viewportRef.current = viewport;
12
- }, []);
13
- return {
14
- defaultViewport: viewportRef.current,
15
- onMoveEnd,
16
- };
17
- }
@@ -1,28 +0,0 @@
1
- 'use client';
2
-
3
- import { useCallback, useRef } from 'react';
4
-
5
- export interface Viewport {
6
- x: number;
7
- y: number;
8
- zoom: number;
9
- }
10
-
11
- export const DEFAULT_VIEWPORT: Viewport = { x: 0, y: 0, zoom: 1 };
12
-
13
- /**
14
- * Persists the ReactFlow viewport position across re-renders so the canvas
15
- * doesn't jump back to the origin when nodes update.
16
- */
17
- export function useViewportPersistence() {
18
- const viewportRef = useRef<Viewport>(DEFAULT_VIEWPORT);
19
-
20
- const onMoveEnd = useCallback((viewport: Viewport) => {
21
- viewportRef.current = viewport;
22
- }, []);
23
-
24
- return {
25
- defaultViewport: viewportRef.current,
26
- onMoveEnd,
27
- };
28
- }
@@ -1 +0,0 @@
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),s=e.i(21023);let n=(0,s.createServerReference)("40c36ea2620451a275b0e9f63982922e6d13d7a1cf",s.callServer,void 0,s.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),g=e.i(8361);e.i(1650);var v=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),M=e.i(85995),T="Checkbox",[I,_]=(0,A.createContextScope)(T),[B,L]=I(T);function z(e){let{__scopeCheckbox:a,checked:o,children:s,defaultChecked:n,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:n??!1,onChange:c,caller:T}),[x,g]=r.useState(null),[v,b]=r.useState(null),j=r.useRef(!1),w=!x||!!l||!!x.closest("form"),C={checked:m,disabled:i,setChecked:h,control:x,setControl:g,name:d,form:l,value:p,hasConsumerStoppedPropagationRef:j,required:u,defaultChecked:!W(n)&&n,isFormControl:w,bubbleInput:v,setBubbleInput:b};return(0,t.jsx)(B,{scope:a,...C,children:"function"==typeof f?f(C):s})}var H="CheckboxTrigger",G=r.forwardRef(({__scopeCheckbox:e,onKeyDown:a,onClick:o,...s},n)=>{let{control:i,value:l,disabled:d,checked:c,required:u,setControl:p,setChecked:f,hasConsumerStoppedPropagationRef:m,isFormControl:h,bubbleInput:x}=L(H,e),g=(0,S.useComposedRefs)(n,p),v=r.useRef(c);return r.useEffect(()=>{let e=i?.form;if(e){let t=()=>f(v.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":Y(c),"data-disabled":d?"":void 0,disabled:d,value:l,...s,ref:g,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 U=r.forwardRef((e,r)=>{let{__scopeCheckbox:a,name:o,checked:s,defaultChecked:n,required:i,disabled:l,value:d,onCheckedChange:c,form:u,...p}=e;return(0,t.jsx)(z,{__scopeCheckbox:a,checked:s,defaultChecked:n,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})]})})});U.displayName=T;var $="CheckboxIndicator",K=r.forwardRef((e,r)=>{let{__scopeCheckbox:a,forceMount:o,...s}=e,n=L($,a);return(0,t.jsx)(M.Presence,{present:o||W(n.checked)||!0===n.checked,children:(0,t.jsx)(k.Primitive.span,{"data-state":Y(n.checked),"data-disabled":n.disabled?"":void 0,...s,ref:r,style:{pointerEvents:"none",...e.style}})})});K.displayName=$;var q="CheckboxBubbleInput",V=r.forwardRef(({__scopeCheckbox:e,...a},o)=>{let s,{control:n,hasConsumerStoppedPropagationRef:i,checked:l,defaultChecked:d,required:c,disabled:u,name:p,value:f,form:m,bubbleInput:h,setBubbleInput:x}=L(q,e),g=(0,S.useComposedRefs)(o,x),v=(s=r.useRef({value:l,previous:l}),r.useMemo(()=>(s.current.value!==l&&(s.current.previous=s.current.value,s.current.value=l),s.current.previous),[l])),b=(0,D.useSize)(n);r.useEffect(()=>{if(!h)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,t=!i.current;if(v!==l&&e){let r=new Event("click",{bubbles:t});h.indeterminate=W(l),e.call(h,!W(l)&&l),h.dispatchEvent(r)}},[h,v,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:g,style:{...a.style,...b,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function W(e){return"indeterminate"===e}function Y(e){return W(e)?"indeterminate":e?"checked":"unchecked"}V.displayName=q,e.s(["Checkbox",()=>U,"CheckboxIndicator",()=>K,"Indicator",()=>K,"Root",()=>U,"createCheckboxScope",()=>_,"unstable_BubbleInput",()=>V,"unstable_CheckboxBubbleInput",()=>V,"unstable_CheckboxProvider",()=>z,"unstable_CheckboxTrigger",()=>G,"unstable_Provider",()=>z,"unstable_Trigger",()=>G],57696);var X=e.i(57696),X=X;function Z({className:e,...r}){return(0,t.jsx)(X.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)(X.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:s,disabled:n}){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=>s(!0===e),disabled:n}),(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:s,onValueChange:n,disabled:i}){let l=o.filter(e=>s[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;n(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:s[e.id]??!1,onCheckedChange:t=>{var r;return r=e.id,void n({...s,[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),es=e.i(52740),en=e.i(39979),ei=e.i(86874),el=e.i(73772),ed=e.i(13044),ec="Popover",[eu,ep]=(0,A.createContextScope)(ec,[es.createPopperScope]),ef=(0,es.createPopperScope)(),[em,eh]=eu(ec),ex=e=>{let{__scopePopover:a,children:o,open:s,defaultOpen:n,onOpenChange:i,modal:l=!1}=e,d=ef(a),c=r.useRef(null),[u,p]=r.useState(!1),[f,m]=(0,O.useControllableState)({prop:s,defaultProp:n??!1,onChange:i,caller:ec});return(0,t.jsx)(es.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 eg="PopoverAnchor",ev=r.forwardRef((e,a)=>{let{__scopePopover:o,...s}=e,n=eh(eg,o),i=ef(o),{onCustomAnchorAdd:l,onCustomAnchorRemove:d}=n;return r.useEffect(()=>(l(),()=>d()),[l,d]),(0,t.jsx)(es.Anchor,{...i,...s,ref:a})});ev.displayName=eg;var eb="PopoverTrigger",ej=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,s=eh(eb,a),n=ef(a),i=(0,S.useComposedRefs)(r,s.triggerRef),l=(0,t.jsx)(k.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":eM(s.open),...o,ref:i,onClick:(0,F.composeEventHandlers)(e.onClick,s.onOpenToggle)});return s.hasCustomAnchor?l:(0,t.jsx)(es.Anchor,{asChild:!0,...n,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:s}=e,n=eh(ew,r);return(0,t.jsx)(eC,{scope:r,forceMount:a,children:(0,t.jsx)(M.Presence,{present:a||n.open,children:(0,t.jsx)(en.Portal,{asChild:!0,container:s,children:o})})})};ey.displayName=ew;var eN="PopoverContent",eP=r.forwardRef((e,r)=>{let a=ek(eN,e.__scopePopover),{forceMount:o=a.forceMount,...s}=e,n=eh(eN,e.__scopePopover);return(0,t.jsx)(M.Presence,{present:o||n.open,children:n.modal?(0,t.jsx)(eE,{...s,ref:r}):(0,t.jsx)(eS,{...s,ref:r})})});eP.displayName=eN;var eR=(0,ei.createSlot)("PopoverContent.RemoveScroll"),eE=r.forwardRef((e,a)=>{let o=eh(eN,e.__scopePopover),s=r.useRef(null),n=(0,S.useComposedRefs)(a,s),i=r.useRef(!1);return r.useEffect(()=>{let e=s.current;if(e)return(0,el.hideOthers)(e)},[]),(0,t.jsx)(ed.RemoveScroll,{as:eR,allowPinchZoom:!0,children:(0,t.jsx)(eA,{...e,ref:n,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),s=r.useRef(!1),n=r.useRef(!1);return(0,t.jsx)(eA,{...e,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(s.current||o.triggerRef.current?.focus(),t.preventDefault()),s.current=!1,n.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(s.current=!0,"pointerdown"===t.detail.originalEvent.type&&(n.current=!0));let r=t.target;o.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&n.current&&t.preventDefault()}})}),eA=r.forwardRef((e,r)=>{let{__scopePopover:a,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:n,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:s,onUnmountAutoFocus:n,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)(es.Content,{"data-state":eM(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,s=eh(eF,a);return(0,t.jsx)(k.Primitive.button,{type:"button",...o,ref:r,onClick:(0,F.composeEventHandlers)(e.onClick,()=>s.onOpenChange(!1))})});eO.displayName=eF;var eD=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,s=ef(a);return(0,t.jsx)(es.Arrow,{...s,...o,ref:r})});function eM(e){return e?"open":"closed"}eD.displayName="PopoverArrow",e.s(["Anchor",()=>ev,"Arrow",()=>eD,"Close",()=>eO,"Content",()=>eP,"Popover",()=>ex,"PopoverAnchor",()=>ev,"PopoverArrow",()=>eD,"PopoverClose",()=>eO,"PopoverContent",()=>eP,"PopoverPortal",()=>ey,"PopoverTrigger",()=>ej,"Portal",()=>ey,"Root",()=>ex,"Trigger",()=>ej,"createPopoverScope",()=>ep],89920);var eT=e.i(89920),eT=eT;let eI=eT.Root,e_=eT.Trigger;eT.Anchor;let eB=r.forwardRef(({className:e,align:r="center",sideOffset:a=4,...o},s)=>(0,t.jsx)(eT.Portal,{children:(0,t.jsx)(eT.Content,{ref:s,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})}));eB.displayName=eT.Content.displayName;var eL=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 eU({open:e,onClose:a,onSubmit:o,repositoryPath:s,isSubmitting:n=!1,workflowDefaults:l,features:d,initialParentId:c}){let u=(0,g.useSoundAction)("create"),p=l?.approvalGates??eG,f=l?.push??!1,m=l?.openPr??!1,[h,x]=(0,r.useState)(""),[w,k]=(0,r.useState)([]),[y,N]=(0,r.useState)({...p}),[P,E]=(0,r.useState)(f),[S,A]=(0,r.useState)(m),[F,O]=(0,r.useState)(void 0),[D,M]=(0,r.useState)(!1);(0,r.useEffect)(()=>{l&&(N({...l.approvalGates}),E(l.push),A(l.openPr))},[l]),(0,r.useEffect)(()=>{e&&c&&O(c)},[e,c]);let T=(0,r.useCallback)(()=>{x(""),k([]),N({...p}),E(f),A(m),O(void 0),M(!1)},[p,f,m]),I=""!==h.trim()||w.length>0,{attemptClose:_}=(0,eL.useGuardedDrawerClose)({open:e,isDirty:I,onClose:a,onReset:T}),B=(0,r.useCallback)(e=>{e.preventDefault(),h.trim()&&(u.play(),o({description:h.trim(),attachments:w,repositoryPath:s,approvalGates:{allowPrd:y.allowPrd??!1,allowPlan:y.allowPlan??!1,allowMerge:y.allowMerge??!1},push:P||S,openPr:S,fast:D,...F?{parentId:F}:{}}),T())},[h,w,y,s,o,P,S,D,F,u,T]),L=(0,r.useCallback)(async()=>{try{let e=await ez();e&&k(t=>[...t,...e])}catch{}},[]),z=(0,r.useCallback)(e=>{k(t=>t.filter(t=>t.path!==e))},[]),H=d&&d.length>0;return(0,t.jsx)(v.BaseDrawer,{open:e,onClose:_,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"})]}),n?(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:_,disabled:n,children:"Cancel"}),(0,t.jsx)(j.Button,{type:"submit",form:"create-feature-form",disabled:!h.trim()||n,children:n?"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-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"DESCRIBE YOUR FEATURE"}),(0,t.jsx)(C,{id:"feature-description",placeholder:"e.g. Add GitHub OAuth login with callback handling and token refresh...",value:h,onChange:e=>x(e.target.value),rows:4,required:!0,disabled:n})]}),H?(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)(e$,{features:d,value:F,onChange:O,disabled:n})]}):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:"MODE"}),(0,t.jsx)(J,{id:"fast-mode",label:"Fast Mode",description:"Skip SDLC phases and implement directly from your prompt.",checked:D,onCheckedChange:M,disabled:n})]}),(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:y,onValueChange:N,disabled:n})]}),(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:P||S,onCheckedChange:E,disabled:S||n}),(0,t.jsx)(J,{id:"open-pr",label:"Create PR",description:"Open a pull request after pushing.",checked:S,onCheckedChange:A,disabled:n})]})]}),(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",w.length>0&&(0,t.jsxs)("span",{className:"text-muted-foreground/60 ml-1.5",children:["(",w.length,")"]})]}),(0,t.jsxs)(j.Button,{type:"button",variant:"outline",size:"xs",onClick:L,disabled:n,children:[(0,t.jsx)(i.default,{className:"size-3"}),"Add Files"]})]}),w.length>0&&(0,t.jsx)("div",{className:"flex flex-col gap-2",children:w.map(e=>(0,t.jsx)(eK,{file:e,onRemove:()=>z(e.path),disabled:n},e.path))})]})]})})})}function e$({features:e,value:a,onChange:o,disabled:s}){let[n,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)(()=>{n?setTimeout(()=>c.current?.focus(),0):d("")},[n]),(0,t.jsxs)(eI,{open:n,onOpenChange:i,children:[(0,t.jsx)(e_,{asChild:!0,children:(0,t.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":n,"aria-label":"Parent Feature",disabled:s,"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)(eB,{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,s,n;let i,l=(i=(o=e.name).lastIndexOf("."))>=0?o.slice(i).toLowerCase():"",m=(s=l,eq.has(s)?u:".pdf"===s?c.default:eV.has(s)?p:d),h=".pdf"===(n=l)?"bg-red-50 text-red-600":eq.has(n)?"bg-blue-50 text-blue-600":eV.has(n)?"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:s,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("/"),n(e).then(t=>{t.error?o.toast.error(t.error):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"),u(!1)})},[d]);return(0,t.jsx)(eU,{open:f,onClose:m,onSubmit:h,repositoryPath:e,features:i,workflowDefaults:l,initialParentId:s,isSubmitting:c})}e.s(["CreateDrawerClient",()=>eW],15203)}]);