@shepai/cli 1.170.0-pr513.cff27cb → 1.171.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 (417) hide show
  1. package/apis/json-schema/Feature.yaml +5 -17
  2. package/apis/json-schema/SdlcLifecycle.yaml +0 -1
  3. package/apis/json-schema/WorkflowConfig.yaml +5 -10
  4. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +2 -2
  5. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +3 -4
  7. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +2 -2
  9. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +2 -2
  10. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map +1 -1
  11. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.js +2 -3
  12. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +2 -2
  13. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  14. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +7 -18
  15. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -3
  16. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  17. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -1
  18. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +0 -13
  19. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +2 -2
  20. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
  21. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +3 -5
  22. package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.d.ts +1 -0
  23. package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.d.ts.map +1 -1
  24. package/dist/packages/core/src/application/use-cases/upgrade/upgrade-cli.use-case.js +59 -2
  25. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  26. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -2
  27. package/dist/packages/core/src/domain/generated/output.d.ts +4 -22
  28. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  29. package/dist/packages/core/src/domain/generated/output.js +0 -7
  30. package/dist/packages/core/src/domain/lifecycle-gates.d.ts +6 -21
  31. package/dist/packages/core/src/domain/lifecycle-gates.d.ts.map +1 -1
  32. package/dist/packages/core/src/domain/lifecycle-gates.js +6 -25
  33. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  34. package/dist/packages/core/src/infrastructure/di/container.js +0 -5
  35. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +1 -3
  36. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
  37. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +4 -10
  38. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -2
  39. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  40. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -7
  41. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +3 -5
  43. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -3
  44. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +0 -20
  45. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  46. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +0 -68
  47. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  48. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +2 -2
  49. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  50. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -3
  51. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +2 -2
  52. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  53. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +8 -19
  54. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.d.ts.map +1 -1
  55. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.js +0 -1
  56. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  57. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +0 -1
  58. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +0 -4
  59. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  60. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +0 -17
  61. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -1
  62. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  63. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +4 -7
  64. package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -1
  65. package/dist/src/presentation/cli/commands/feat/index.js +1 -5
  66. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  67. package/dist/src/presentation/cli/commands/feat/new.command.js +5 -18
  68. package/dist/src/presentation/cli/commands/upgrade.command.d.ts.map +1 -1
  69. package/dist/src/presentation/cli/commands/upgrade.command.js +68 -3
  70. package/dist/src/presentation/web/app/actions/create-feature.d.ts +2 -3
  71. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  72. package/dist/src/presentation/web/app/actions/create-feature.js +3 -3
  73. package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts +1 -2
  74. package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts.map +1 -1
  75. package/dist/src/presentation/web/app/actions/get-workflow-defaults.js +1 -2
  76. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  77. package/dist/src/presentation/web/app/api/agent-events/route.js +0 -1
  78. package/dist/src/presentation/web/app/build-feature-node-data.d.ts.map +1 -1
  79. package/dist/src/presentation/web/app/build-feature-node-data.js +2 -4
  80. package/dist/src/presentation/web/app/build-graph-nodes.js +2 -4
  81. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts +1 -1
  82. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map +1 -1
  83. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.js +0 -3
  84. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  85. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +1 -65
  86. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -3
  87. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  88. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +11 -15
  89. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  90. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +1 -2
  91. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +1 -6
  92. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  93. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +4 -16
  94. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
  95. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +0 -2
  96. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +2 -6
  97. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  98. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +0 -12
  99. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  100. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +2 -7
  101. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  102. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +6 -6
  103. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.js +3 -3
  104. package/dist/translations/ar/cli.json +2 -24
  105. package/dist/translations/ar/web.json +2 -6
  106. package/dist/translations/de/cli.json +2 -24
  107. package/dist/translations/de/web.json +2 -6
  108. package/dist/translations/en/cli.json +2 -24
  109. package/dist/translations/en/web.json +2 -6
  110. package/dist/translations/es/cli.json +2 -24
  111. package/dist/translations/es/web.json +2 -6
  112. package/dist/translations/fr/cli.json +2 -24
  113. package/dist/translations/fr/web.json +2 -6
  114. package/dist/translations/he/cli.json +2 -24
  115. package/dist/translations/he/web.json +2 -6
  116. package/dist/translations/pt/cli.json +2 -24
  117. package/dist/translations/pt/web.json +2 -6
  118. package/dist/translations/ru/cli.json +2 -24
  119. package/dist/translations/ru/web.json +2 -6
  120. package/dist/tsconfig.build.tsbuildinfo +1 -1
  121. package/package.json +1 -1
  122. package/web/.next/BUILD_ID +1 -1
  123. package/web/.next/build-manifest.json +2 -2
  124. package/web/.next/fallback-build-manifest.json +2 -2
  125. package/web/.next/prerender-manifest.json +3 -3
  126. package/web/.next/required-server-files.js +2 -2
  127. package/web/.next/required-server-files.json +2 -2
  128. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  129. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  130. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  131. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  132. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  133. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  135. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  136. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +76 -121
  138. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -2
  139. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  140. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  141. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +76 -121
  142. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -2
  143. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  144. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  146. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  147. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  148. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  149. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  150. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  151. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  152. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  153. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  154. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  155. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  156. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  157. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +76 -121
  158. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -2
  159. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  160. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  161. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +76 -121
  162. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -2
  163. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  164. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  165. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  166. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  167. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  168. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  169. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  170. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  171. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  172. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  173. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  174. package/web/.next/server/app/_global-error.html +2 -2
  175. package/web/.next/server/app/_global-error.rsc +1 -1
  176. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  177. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  178. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  179. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  180. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  181. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  182. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  183. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  184. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  185. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  186. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  187. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  188. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  189. package/web/.next/server/app/features/page.js.nft.json +1 -1
  190. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  191. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  192. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  193. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  194. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  195. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  196. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  197. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  198. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  199. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  200. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  201. package/web/.next/server/app/version/page.js.nft.json +1 -1
  202. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  203. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  204. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  205. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +1 -1
  206. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  207. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  208. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
  209. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  210. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  211. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  212. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  213. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  214. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +3 -3
  215. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  216. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +1 -1
  217. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  219. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  221. package/web/.next/server/chunks/ssr/[root-of-the-server]__4ed9b909._.js +1 -1
  222. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +4 -0
  223. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +1 -0
  224. package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js +1 -1
  225. package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/[root-of-the-server]__69dd3217._.js +1 -1
  227. package/web/.next/server/chunks/ssr/[root-of-the-server]__69dd3217._.js.map +1 -1
  228. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  229. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  230. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +4 -0
  231. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js +2 -2
  233. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +2 -2
  235. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +1 -1
  236. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  237. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  238. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +4 -0
  239. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +1 -0
  240. package/web/.next/server/chunks/ssr/[root-of-the-server]__c1262d08._.js +1 -1
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
  242. package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
  243. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +4 -0
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +1 -0
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js +3 -0
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js.map +1 -0
  247. package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
  248. package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
  249. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  250. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  252. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  253. package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
  254. package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
  255. package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
  256. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
  257. package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
  258. package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
  259. package/web/.next/server/chunks/ssr/{_cac4abe6._.js → _49447b3c._.js} +2 -2
  260. package/web/.next/server/chunks/ssr/_49447b3c._.js.map +1 -0
  261. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  262. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  263. package/web/.next/server/chunks/ssr/_5119a3df._.js +1 -1
  264. package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
  265. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  266. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  267. package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
  268. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
  269. package/web/.next/server/chunks/ssr/_a963dd3c._.js +3 -0
  270. package/web/.next/server/chunks/ssr/_a963dd3c._.js.map +1 -0
  271. package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
  272. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
  273. package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
  274. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
  275. package/web/.next/server/chunks/ssr/{_0fd635d7._.js → _d50cde79._.js} +2 -2
  276. package/web/.next/server/chunks/ssr/_d50cde79._.js.map +1 -0
  277. package/web/.next/server/chunks/ssr/_df737cce._.js +1 -1
  278. package/web/.next/server/chunks/ssr/_e3f14907._.js +9 -0
  279. package/web/.next/server/chunks/ssr/_e3f14907._.js.map +1 -0
  280. package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
  281. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
  282. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
  283. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
  284. package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
  285. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
  286. package/web/.next/server/chunks/ssr/{_34d897da._.js → _f778f3ef._.js} +2 -2
  287. package/web/.next/server/chunks/ssr/{_34d897da._.js.map → _f778f3ef._.js.map} +1 -1
  288. package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
  289. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
  290. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  291. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  292. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  293. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  294. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  295. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  296. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  297. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  298. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  299. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
  305. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
  306. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
  307. package/web/.next/server/pages/500.html +2 -2
  308. package/web/.next/server/server-reference-manifest.js +1 -1
  309. package/web/.next/server/server-reference-manifest.json +202 -310
  310. package/web/.next/static/chunks/{9a78b4c5dcd28196.js → 02fe1303471793b9.js} +2 -2
  311. package/web/.next/static/chunks/0ce50b34df07306b.js +1 -0
  312. package/web/.next/static/chunks/18d4601f068c700d.js +1 -0
  313. package/web/.next/static/chunks/{52681a7f14138e48.js → 24dd6b3021c2d849.js} +1 -1
  314. package/web/.next/static/chunks/3d182168cdc4c15c.js +1 -0
  315. package/web/.next/static/chunks/{0769c695d6b663c7.js → 4383bcae769740e7.js} +1 -1
  316. package/web/.next/static/chunks/{5e20f692bbfcfb94.js → 4559a403ee40dd19.js} +1 -1
  317. package/web/.next/static/chunks/{e93ae5725b0babeb.js → 5983ef48d50d2d2a.js} +1 -1
  318. package/web/.next/static/chunks/{4219ddfde68a6d0b.js → 67a430796dea42a7.js} +1 -1
  319. package/web/.next/static/chunks/6ee5d45de67d3547.js +5 -0
  320. package/web/.next/static/chunks/{0f30a983f3467cd5.js → 9705f2a5695a4995.js} +1 -1
  321. package/web/.next/static/chunks/{d5bf9c963b5346e1.js → a80bbfca8ee3d79b.js} +1 -1
  322. package/web/.next/static/chunks/{37f9543560c58ea6.js → aa077ab14015a8fd.js} +1 -1
  323. package/web/.next/static/chunks/b14085e99b88e7f7.css +1 -0
  324. package/web/.next/static/chunks/b65e555419a0c664.js +1 -0
  325. package/web/.next/static/chunks/{478adf5d5156f002.js → b93a918712cd4987.js} +1 -1
  326. package/web/.next/static/chunks/{fc595d95626ac9bb.js → bb962a996814718a.js} +1 -1
  327. package/web/.next/static/chunks/{2a9af061f4fbe7f5.js → d5366257d6b9f855.js} +1 -1
  328. package/web/.next/static/chunks/{09a25231e5fc1ab8.js → eff45ffddd85918c.js} +1 -1
  329. package/apis/json-schema/FeatureMode.yaml +0 -8
  330. package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.d.ts +0 -40
  331. package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.d.ts.map +0 -1
  332. package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.js +0 -125
  333. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.d.ts +0 -19
  334. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.d.ts.map +0 -1
  335. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.js +0 -46
  336. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.d.ts +0 -17
  337. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.d.ts.map +0 -1
  338. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.js +0 -37
  339. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.d.ts +0 -12
  340. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.d.ts.map +0 -1
  341. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.js +0 -17
  342. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.d.ts +0 -362
  343. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.d.ts.map +0 -1
  344. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.js +0 -72
  345. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.d.ts +0 -18
  346. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.d.ts.map +0 -1
  347. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.js +0 -52
  348. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.d.ts +0 -24
  349. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.d.ts.map +0 -1
  350. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.js +0 -38
  351. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.d.ts +0 -31
  352. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.d.ts.map +0 -1
  353. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.js +0 -240
  354. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.d.ts +0 -21
  355. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.d.ts.map +0 -1
  356. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.js +0 -134
  357. package/dist/src/presentation/cli/commands/feat/feedback.command.d.ts +0 -12
  358. package/dist/src/presentation/cli/commands/feat/feedback.command.d.ts.map +0 -1
  359. package/dist/src/presentation/cli/commands/feat/feedback.command.js +0 -64
  360. package/dist/src/presentation/cli/commands/feat/promote.command.d.ts +0 -13
  361. package/dist/src/presentation/cli/commands/feat/promote.command.d.ts.map +0 -1
  362. package/dist/src/presentation/cli/commands/feat/promote.command.js +0 -41
  363. package/dist/src/presentation/web/app/actions/discard-exploration.d.ts +0 -9
  364. package/dist/src/presentation/web/app/actions/discard-exploration.d.ts.map +0 -1
  365. package/dist/src/presentation/web/app/actions/discard-exploration.js +0 -29
  366. package/dist/src/presentation/web/app/actions/promote-exploration.d.ts +0 -11
  367. package/dist/src/presentation/web/app/actions/promote-exploration.d.ts.map +0 -1
  368. package/dist/src/presentation/web/app/actions/promote-exploration.js +0 -21
  369. package/dist/src/presentation/web/app/actions/submit-exploration-feedback.d.ts +0 -12
  370. package/dist/src/presentation/web/app/actions/submit-exploration-feedback.d.ts.map +0 -1
  371. package/dist/src/presentation/web/app/actions/submit-exploration-feedback.js +0 -40
  372. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.d.ts +0 -8
  373. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.d.ts.map +0 -1
  374. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.js +0 -33
  375. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.d.ts +0 -10
  376. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.d.ts.map +0 -1
  377. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.js +0 -33
  378. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.d.ts +0 -11
  379. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.d.ts.map +0 -1
  380. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.js +0 -34
  381. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.d.ts +0 -16
  382. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.d.ts.map +0 -1
  383. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.js +0 -70
  384. package/dist/src/presentation/web/components/ui/toggle-group.d.ts +0 -10
  385. package/dist/src/presentation/web/components/ui/toggle-group.d.ts.map +0 -1
  386. package/dist/src/presentation/web/components/ui/toggle-group.js +0 -22
  387. package/dist/src/presentation/web/components/ui/toggle.d.ts +0 -10
  388. package/dist/src/presentation/web/components/ui/toggle.d.ts.map +0 -1
  389. package/dist/src/presentation/web/components/ui/toggle.js +0 -26
  390. package/web/.next/server/chunks/ssr/[root-of-the-server]__03c66352._.js +0 -4
  391. package/web/.next/server/chunks/ssr/[root-of-the-server]__03c66352._.js.map +0 -1
  392. package/web/.next/server/chunks/ssr/[root-of-the-server]__403afc23._.js +0 -4
  393. package/web/.next/server/chunks/ssr/[root-of-the-server]__403afc23._.js.map +0 -1
  394. package/web/.next/server/chunks/ssr/[root-of-the-server]__df550e85._.js +0 -3
  395. package/web/.next/server/chunks/ssr/[root-of-the-server]__df550e85._.js.map +0 -1
  396. package/web/.next/server/chunks/ssr/[root-of-the-server]__df5602bf._.js +0 -4
  397. package/web/.next/server/chunks/ssr/[root-of-the-server]__df5602bf._.js.map +0 -1
  398. package/web/.next/server/chunks/ssr/[root-of-the-server]__e9f4767a._.js +0 -4
  399. package/web/.next/server/chunks/ssr/[root-of-the-server]__e9f4767a._.js.map +0 -1
  400. package/web/.next/server/chunks/ssr/_0fd635d7._.js.map +0 -1
  401. package/web/.next/server/chunks/ssr/_30ddea9d._.js +0 -9
  402. package/web/.next/server/chunks/ssr/_30ddea9d._.js.map +0 -1
  403. package/web/.next/server/chunks/ssr/_6e79a2cc._.js +0 -3
  404. package/web/.next/server/chunks/ssr/_6e79a2cc._.js.map +0 -1
  405. package/web/.next/server/chunks/ssr/_cac4abe6._.js.map +0 -1
  406. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +0 -3
  407. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js.map +0 -1
  408. package/web/.next/static/chunks/2ceebcc839ee0d4b.js +0 -1
  409. package/web/.next/static/chunks/5743a9c1c63e5261.js +0 -5
  410. package/web/.next/static/chunks/5cf9745e2ef3837c.js +0 -1
  411. package/web/.next/static/chunks/c80e8e3d0cf5baa6.css +0 -1
  412. package/web/.next/static/chunks/d60cee2e7318f425.js +0 -1
  413. package/web/.next/static/chunks/da565c85277c2461.js +0 -1
  414. package/web/.next/static/chunks/fb89cf91c10b2e8b.js +0 -1
  415. /package/web/.next/static/{G895CgnbZl4YvWN_DaRC- → akDn2qFk1krSwrjt4345P}/_buildManifest.js +0 -0
  416. /package/web/.next/static/{G895CgnbZl4YvWN_DaRC- → akDn2qFk1krSwrjt4345P}/_clientMiddlewareManifest.json +0 -0
  417. /package/web/.next/static/{G895CgnbZl4YvWN_DaRC- → akDn2qFk1krSwrjt4345P}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
1
  (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94237,e=>{"use strict";var t=e.i(7284);let r=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,n=t.clsx;e.s(["cva",0,(e,t)=>i=>{var o;if((null==t?void 0:t.variants)==null)return n(e,null==i?void 0:i.class,null==i?void 0:i.className);let{variants:s,defaultVariants:l}=t,a=Object.keys(s).map(e=>{let t=null==i?void 0:i[e],n=null==l?void 0:l[e];if(null===t)return null;let o=r(t)||r(n);return s[e][o]}),u=i&&Object.entries(i).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return n(e,a,null==t||null==(o=t.compoundVariants)?void 0:o.reduce((e,t)=>{let{class:r,className:n,...i}=t;return Object.entries(i).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...l,...u}[t]):({...l,...u})[t]===r})?[...e,r,n]:e},[]),null==i?void 0:i.class,null==i?void 0:i.className)}])},5978,e=>{"use strict";var t=e.i(79054);function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function n(...e){return t=>{let n=!1,i=e.map(e=>{let i=r(e,t);return n||"function"!=typeof i||(n=!0),i});if(n)return()=>{for(let t=0;t<i.length;t++){let n=i[t];"function"==typeof n?n():r(e[t],null)}}}}function i(...e){return t.useCallback(n(...e),e)}e.s(["composeRefs",()=>n,"useComposedRefs",()=>i])},86874,e=>{"use strict";var t=e.i(79054),r=e.i(5978),n=e.i(20314);function i(e){var i;let o,s=(i=e,(o=t.forwardRef((e,n)=>{let{children:i,...o}=e;if(t.isValidElement(i)){var s;let e,l,a=(s=i,(l=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(l=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),u=function(e,t){let r={...t};for(let n in t){let i=e[n],o=t[n];/^on[A-Z]/.test(n)?i&&o?r[n]=(...e)=>{let t=o(...e);return i(...e),t}:i&&(r[n]=i):"style"===n?r[n]={...i,...o}:"className"===n&&(r[n]=[i,o].filter(Boolean).join(" "))}return{...e,...r}}(o,i.props);return i.type!==t.Fragment&&(u.ref=n?(0,r.composeRefs)(n,a):a),t.cloneElement(i,u)}return t.Children.count(i)>1?t.Children.only(null):null})).displayName=`${i}.SlotClone`,o),l=t.forwardRef((e,r)=>{let{children:i,...o}=e,l=t.Children.toArray(i),a=l.find(u);if(a){let e=a.props.children,i=l.map(r=>r!==a?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,n.jsx)(s,{...o,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,i):null})}return(0,n.jsx)(s,{...o,ref:r,children:i})});return l.displayName=`${e}.Slot`,l}var o=i("Slot"),s=Symbol("radix.slottable");function l(e){let t=({children:e})=>(0,n.jsx)(n.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=s,t}var a=l("Slottable");function u(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===s}e.s(["Root",()=>o,"Slot",()=>o,"Slottable",()=>a,"createSlot",()=>i,"createSlottable",()=>l])},35364,5240,e=>{"use strict";var t=e.i(20314),r=e.i(94237),n=e.i(86874);e.s(["Slot",0,n],5240);var n=n,i=e.i(31777);let o=(0,r.cva)("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function s({className:e,variant:r="default",size:s="default",asChild:l=!1,...a}){let u=l?n.Root:"button";return(0,t.jsx)(u,{"data-slot":"button","data-variant":r,"data-size":s,className:(0,i.cn)(o({variant:r,size:s,className:e})),...a})}e.s(["Button",()=>s],35364)},87620,e=>{"use strict";var t=e.i(79054),r=e.i(26036),n=e.i(86874),i=e.i(20314),o=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,r)=>{let o=(0,n.createSlot)(`Primitive.${r}`),s=t.forwardRef((e,t)=>{let{asChild:n,...s}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,i.jsx)(n?o:r,{...s,ref:t})});return s.displayName=`Primitive.${r}`,{...e,[r]:s}},{});function s(e,t){e&&r.flushSync(()=>e.dispatchEvent(t))}e.s(["Primitive",()=>o,"dispatchDiscreteCustomEvent",()=>s])},91967,e=>{"use strict";function t(e,r,{checkForDefaultPrevented:n=!0}={}){return function(t){if(e?.(t),!1===n||!t.defaultPrevented)return r?.(t)}}"u">typeof window&&window.document&&window.document.createElement,e.s(["composeEventHandlers",()=>t])},22528,e=>{"use strict";var t=e.i(79054),r=e.i(20314);function n(e,n){let i=t.createContext(n),o=e=>{let{children:n,...o}=e,s=t.useMemo(()=>o,Object.values(o));return(0,r.jsx)(i.Provider,{value:s,children:n})};return o.displayName=e+"Provider",[o,function(r){let o=t.useContext(i);if(o)return o;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${e}\``)}]}function i(e,n=[]){let o=[],s=()=>{let r=o.map(e=>t.createContext(e));return function(n){let i=n?.[e]||r;return t.useMemo(()=>({[`__scope${e}`]:{...n,[e]:i}}),[n,i])}};return s.scopeName=e,[function(n,i){let s=t.createContext(i),l=o.length;o=[...o,i];let a=n=>{let{scope:i,children:o,...a}=n,u=i?.[e]?.[l]||s,c=t.useMemo(()=>a,Object.values(a));return(0,r.jsx)(u.Provider,{value:c,children:o})};return a.displayName=n+"Provider",[a,function(r,o){let a=o?.[e]?.[l]||s,u=t.useContext(a);if(u)return u;if(void 0!==i)return i;throw Error(`\`${r}\` must be used within \`${n}\``)}]},function(...e){let r=e[0];if(1===e.length)return r;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let i=n.reduce((t,{useScope:r,scopeName:n})=>{let i=r(e)[`__scope${n}`];return{...t,...i}},{});return t.useMemo(()=>({[`__scope${r.scopeName}`]:i}),[i])}};return n.scopeName=r.scopeName,n}(s,...n)]}e.s(["createContext",()=>n,"createContextScope",()=>i])},5192,e=>{"use strict";var t=e.i(79054),r=globalThis?.document?t.useLayoutEffect:()=>{};e.s(["useLayoutEffect",()=>r])},13123,e=>{"use strict";var t=e.i(79054),r=e.i(5192),n=t[" useId ".trim().toString()]||(()=>void 0),i=0;function o(e){let[o,s]=t.useState(n());return(0,r.useLayoutEffect)(()=>{e||s(e=>e??String(i++))},[e]),e||(o?`radix-${o}`:"")}e.s(["useId",()=>o])},36589,e=>{"use strict";var t=e.i(79054),r=e.i(5192);t[" useEffectEvent ".trim().toString()],t[" useInsertionEffect ".trim().toString()];var n=t[" useInsertionEffect ".trim().toString()]||r.useLayoutEffect;function i({prop:e,defaultProp:r,onChange:i=()=>{},caller:o}){let[s,l,a]=function({defaultProp:e,onChange:r}){let[i,o]=t.useState(e),s=t.useRef(i),l=t.useRef(r);return n(()=>{l.current=r},[r]),t.useEffect(()=>{s.current!==i&&(l.current?.(i),s.current=i)},[i,s]),[i,o,l]}({defaultProp:r,onChange:i}),u=void 0!==e,c=u?e:s;{let r=t.useRef(void 0!==e);t.useEffect(()=>{let e=r.current;if(e!==u){let t=u?"controlled":"uncontrolled";console.warn(`${o} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}r.current=u},[u,o])}return[c,t.useCallback(t=>{if(u){let r="function"==typeof t?t(e):t;r!==e&&a.current?.(r)}else l(t)},[u,e,l,a])]}Symbol("RADIX:SYNC_STATE"),e.s(["useControllableState",()=>i],36589)},29297,e=>{"use strict";var t=e.i(79054);function r(e){let r=t.useRef(e);return t.useEffect(()=>{r.current=e}),t.useMemo(()=>(...e)=>r.current?.(...e),[])}e.s(["useCallbackRef",()=>r])},85995,e=>{"use strict";var t=e.i(79054),r=e.i(5978),n=e.i(5192),i=e=>{var i;let s,l,{present:a,children:u}=e,c=function(e){var r,i;let[s,l]=t.useState(),a=t.useRef(null),u=t.useRef(e),c=t.useRef("none"),[d,f]=(r=e?"mounted":"unmounted",i={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},t.useReducer((e,t)=>i[e][t]??e,r));return t.useEffect(()=>{let e=o(a.current);c.current="mounted"===d?e:"none"},[d]),(0,n.useLayoutEffect)(()=>{let t=a.current,r=u.current;if(r!==e){let n=c.current,i=o(t);e?f("MOUNT"):"none"===i||t?.display==="none"?f("UNMOUNT"):r&&n!==i?f("ANIMATION_OUT"):f("UNMOUNT"),u.current=e}},[e,f]),(0,n.useLayoutEffect)(()=>{if(s){let e,t=s.ownerDocument.defaultView??window,r=r=>{let n=o(a.current).includes(CSS.escape(r.animationName));if(r.target===s&&n&&(f("ANIMATION_END"),!u.current)){let r=s.style.animationFillMode;s.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===s.style.animationFillMode&&(s.style.animationFillMode=r)})}},n=e=>{e.target===s&&(c.current=o(a.current))};return s.addEventListener("animationstart",n),s.addEventListener("animationcancel",r),s.addEventListener("animationend",r),()=>{t.clearTimeout(e),s.removeEventListener("animationstart",n),s.removeEventListener("animationcancel",r),s.removeEventListener("animationend",r)}}f("ANIMATION_END")},[s,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:t.useCallback(e=>{a.current=e?getComputedStyle(e):null,l(e)},[])}}(a),d="function"==typeof u?u({present:c.isPresent}):t.Children.only(u),f=(0,r.useComposedRefs)(c.ref,(i=d,(l=(s=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in s&&s.isReactWarning)?i.ref:(l=(s=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in s&&s.isReactWarning)?i.props.ref:i.props.ref||i.ref));return"function"==typeof u||c.isPresent?t.cloneElement(d,{ref:f}):null};function o(e){return e?.animationName||"none"}i.displayName="Presence",e.s(["Presence",()=>i])},23925,1012,e=>{"use strict";let t=(0,e.i(3645).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",()=>t],1012),e.s(["Check",()=>t],23925)},80764,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return i}});let n=e.r(79054);function i(e,t){let r=(0,n.useRef)(null),i=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=i.current;t&&(i.current=null,t())}else e&&(r.current=o(e,n)),t&&(i.current=o(t,n))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},47904,(e,t,r)=>{"use strict";function n({widthInt:e,heightInt:t,blurWidth:r,blurHeight:n,blurDataURL:i,objectFit:o}){let s=r?40*r:e,l=n?40*n:t,a=s&&l?`viewBox='0 0 ${s} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${a}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${a?"none":"contain"===o?"xMidYMid":"cover"===o?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${i}'/%3E%3C/svg%3E`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return n}})},49261,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={VALID_LOADERS:function(){return o},imageConfigDefault:function(){return s}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});let o=["default","imgix","cloudinary","akamai","custom"],s={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1}},81241,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return u}}),e.r(24270);let n=e.r(22193),i=e.r(47904),o=e.r(49261),s=["-moz-initial","fill","none","scale-down",void 0];function l(e){return void 0!==e.default}function a(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function u({src:e,sizes:t,unoptimized:r=!1,priority:u=!1,preload:c=!1,loading:d,className:f,quality:p,width:m,height:g,fill:h=!1,style:v,overrideSrc:y,onLoad:b,onLoadingComplete:x,placeholder:w="empty",blurDataURL:_,fetchPriority:C,decoding:j="async",layout:S,objectFit:E,objectPosition:O,lazyBoundary:P,lazyRoot:R,...N},M){var I;let k,A,z,{imgConf:T,showAltText:$,blurComplete:L,defaultLoader:D}=M,U=T||o.imageConfigDefault;if("allSizes"in U)k=U;else{let e=[...U.deviceSizes,...U.imageSizes].sort((e,t)=>e-t),t=U.deviceSizes.sort((e,t)=>e-t),r=U.qualities?.sort((e,t)=>e-t);k={...U,allSizes:e,deviceSizes:t,qualities:r}}if(void 0===D)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let F=N.loader||D;delete N.loader,delete N.srcSet;let G="__next_img_default"in F;if(G){if("custom"===k.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
2
2
  Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=F;F=t=>{let{config:r,...n}=t;return e(n)}}if(S){"fill"===S&&(h=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[S];e&&(v={...v,...e});let r={responsive:"100vw",fill:"100vw"}[S];r&&!t&&(t=r)}let W="",B=a(m),V=a(g);if((I=e)&&"object"==typeof I&&(l(I)||void 0!==I.src)){let t=l(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(A=t.blurWidth,z=t.blurHeight,_=_||t.blurDataURL,W=t.src,!h)if(B||V){if(B&&!V){let e=B/t.width;V=Math.round(t.height*e)}else if(!B&&V){let e=V/t.height;B=Math.round(t.width*e)}}else B=t.width,V=t.height}let q=!u&&!c&&("lazy"===d||void 0===d);(!(e="string"==typeof e?e:W)||e.startsWith("data:")||e.startsWith("blob:"))&&(r=!0,q=!1),k.unoptimized&&(r=!0),G&&!k.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(r=!0);let H=a(p),X=Object.assign(h?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:E,objectPosition:O}:{},$?{}:{color:"transparent"},v),Y=L||"empty"===w?null:"blur"===w?`url("data:image/svg+xml;charset=utf-8,${(0,i.getImageBlurSvg)({widthInt:B,heightInt:V,blurWidth:A,blurHeight:z,blurDataURL:_||"",objectFit:X.objectFit})}")`:`url("${w}")`,J=s.includes(X.objectFit)?"fill"===X.objectFit?"100% 100%":"cover":X.objectFit,K=Y?{backgroundSize:J,backgroundPosition:X.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Y}:{},Q=function({config:e,src:t,unoptimized:r,width:i,quality:o,sizes:s,loader:l}){if(r){let e=(0,n.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")&&e){let r=t.includes("?")?"&":"?";t=`${t}${r}dpl=${e}`}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:a,kind:u}=function({deviceSizes:e,allSizes:t},r,n){if(n){let r=/(^|\s)(1?\d?\d)vw/g,i=[];for(let e;e=r.exec(n);)i.push(parseInt(e[2]));if(i.length){let r=.01*Math.min(...i);return{widths:t.filter(t=>t>=e[0]*r),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof r?{widths:e,kind:"w"}:{widths:[...new Set([r,2*r].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,i,s),c=a.length-1;return{sizes:s||"w"!==u?s:"100vw",srcSet:a.map((r,n)=>`${l({config:e,src:t,quality:o,width:r})} ${"w"===u?r:n+1}${u}`).join(", "),src:l({config:e,src:t,quality:o,width:a[c]})}}({config:k,src:e,unoptimized:r,width:B,quality:H,sizes:t,loader:F}),Z=q?"lazy":d;return{props:{...N,loading:Z,fetchPriority:C,width:B,height:V,decoding:j,className:f,style:{...X,...K},sizes:Q.sizes,srcSet:Q.srcSet,src:y||Q.src},meta:{unoptimized:r,preload:c||u,placeholder:w,fill:h}}}},38820,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return l}});let n=e.r(79054),i="u"<typeof window,o=i?()=>{}:n.useLayoutEffect,s=i?()=>{}:n.useEffect;function l(e){let{headManager:t,reduceComponentsToState:r}=e;function l(){if(t&&t.mountedInstances){let e=n.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(e))}}return i&&(t?.mountedInstances?.add(e.children),l()),o(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),o(()=>(t&&(t._pendingUpdate=l),()=>{t&&(t._pendingUpdate=l)})),s(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},79646,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return g},defaultHead:function(){return d}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});let o=e.r(81258),s=e.r(44066),l=e.r(20314),a=s._(e.r(79054)),u=o._(e.r(38820)),c=e.r(84210);function d(){return[(0,l.jsx)("meta",{charSet:"utf-8"},"charset"),(0,l.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===a.default.Fragment?e.concat(a.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(24270);let p=["name","httpEquiv","charSet","itemProp"];function m(e){let t,r,n,i;return e.reduce(f,[]).reverse().concat(d().reverse()).filter((t=new Set,r=new Set,n=new Set,i={},e=>{let o=!0,s=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){s=!0;let r=e.key.slice(e.key.indexOf("$")+1);t.has(r)?o=!1:t.add(r)}switch(e.type){case"title":case"base":r.has(e.type)?o=!1:r.add(e.type);break;case"meta":for(let t=0,r=p.length;t<r;t++){let r=p[t];if(e.props.hasOwnProperty(r))if("charSet"===r)n.has(r)?o=!1:n.add(r);else{let t=e.props[r],n=i[r]||new Set;("name"!==r||!s)&&n.has(t)?o=!1:(n.add(t),i[r]=n)}}}return o})).reverse().map((e,t)=>{let r=e.key||t;return a.default.cloneElement(e,{key:r})})}let g=function({children:e}){let t=(0,a.useContext)(c.HeadManagerContext);return(0,l.jsx)(u.default,{reduceComponentsToState:m,headManager:t,children:e})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},5160,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return o}});let n=e.r(81258)._(e.r(79054)),i=e.r(49261),o=n.default.createContext(i.imageConfigDefault)},2880,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return n}});let n=e.r(81258)._(e.r(79054)).default.createContext(null)},36200,(e,t,r)=>{"use strict";function n(e,t){let r=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e,0):r}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"findClosestQuality",{enumerable:!0,get:function(){return n}})},78200,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return s}});let n=e.r(36200),i=e.r(22193);function o({config:e,src:t,width:r,quality:o}){if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
3
- Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let s=(0,n.findClosestQuality)(o,e),l=(0,i.getDeploymentId)();return`${e.path}?url=${encodeURIComponent(t)}&w=${r}&q=${s}${t.startsWith("/")&&l?`&dpl=${l}`:""}`}o.__next_img_default=!0;let s=o},81819,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return x}});let n=e.r(81258),i=e.r(44066),o=e.r(20314),s=i._(e.r(79054)),l=n._(e.r(26036)),a=n._(e.r(79646)),u=e.r(81241),c=e.r(49261),d=e.r(5160);e.r(24270);let f=e.r(2880),p=n._(e.r(78200)),m=e.r(80764),g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function h(e,t,r,n,i,o,s){let l=e?.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&i(!0),r?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let n=!1,i=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>n,isPropagationStopped:()=>i,persist:()=>{},preventDefault:()=>{n=!0,t.preventDefault()},stopPropagation:()=>{i=!0,t.stopPropagation()}})}n?.current&&n.current(e)}}))}function v(e){return s.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let y=(0,s.forwardRef)(({src:e,srcSet:t,sizes:r,height:n,width:i,decoding:l,className:a,style:u,fetchPriority:c,placeholder:d,loading:f,unoptimized:p,fill:g,onLoadRef:y,onLoadingCompleteRef:b,setBlurComplete:x,setShowAltText:w,sizesInput:_,onLoad:C,onError:j,...S},E)=>{let O=(0,s.useCallback)(e=>{e&&(j&&(e.src=e.src),e.complete&&h(e,d,y,b,x,p,_))},[e,d,y,b,x,j,p,_]),P=(0,m.useMergedRef)(E,O);return(0,o.jsx)("img",{...S,...v(c),loading:f,width:i,height:n,decoding:l,"data-nimg":g?"fill":"1",className:a,style:u,sizes:r,srcSet:t,src:e,ref:P,onLoad:e=>{h(e.currentTarget,d,y,b,x,p,_)},onError:e=>{w(!0),"empty"!==d&&x(!0),j&&j(e)}})});function b({isAppRouter:e,imgAttributes:t}){let r={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...v(t.fetchPriority)};return e&&l.default.preload?(l.default.preload(t.src,r),null):(0,o.jsx)(a.default,{children:(0,o.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...r},"__nimg-"+t.src+t.srcSet+t.sizes)})}let x=(0,s.forwardRef)((e,t)=>{let r=(0,s.useContext)(f.RouterContext),n=(0,s.useContext)(d.ImageConfigContext),i=(0,s.useMemo)(()=>{let e=g||n||c.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t),i=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r,qualities:i,localPatterns:"u"<typeof window?n?.localPatterns:e.localPatterns}},[n]),{onLoad:l,onLoadingComplete:a}=e,m=(0,s.useRef)(l);(0,s.useEffect)(()=>{m.current=l},[l]);let h=(0,s.useRef)(a);(0,s.useEffect)(()=>{h.current=a},[a]);let[v,x]=(0,s.useState)(!1),[w,_]=(0,s.useState)(!1),{props:C,meta:j}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:i,blurComplete:v,showAltText:w});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(y,{...C,unoptimized:j.unoptimized,placeholder:j.placeholder,fill:j.fill,onLoadRef:m,onLoadingCompleteRef:h,setBlurComplete:x,setShowAltText:_,sizesInput:e.sizes,ref:t}),j.preload?(0,o.jsx)(b,{isAppRouter:!r,imgAttributes:C}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},78639,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return c},getImageProps:function(){return u}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});let o=e.r(81258),s=e.r(81241),l=e.r(81819),a=o._(e.r(78200));function u(e){let{props:t}=(0,s.getImgProps)(e,{defaultLoader:a.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let c=l.Image},98804,(e,t,r)=>{t.exports=e.r(78639)},86782,e=>{"use strict";var t=e.i(20314),r=e.i(98804),n=e.i(31777);function i(e,i){function o({className:o}){return(0,t.jsx)(r.default,{src:e,alt:i,width:24,height:24,className:(0,n.cn)("rounded-sm object-contain",o)})}return o.displayName=`BrandIcon(${i})`,o}function o(e){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"2"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3",fill:"currentColor"})]})}function s({className:e,...r}){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:(0,n.cn)("h-6 w-6",e),...r,children:[(0,t.jsx)("defs",{children:(0,t.jsxs)("linearGradient",{id:"dev-flask-grad",x1:"6",y1:"22",x2:"18",y2:"8",gradientUnits:"userSpaceOnUse",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#8B5CF6"}),(0,t.jsx)("stop",{offset:"50%",stopColor:"#EC4899"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#F59E0B"})]})}),(0,t.jsx)("path",{d:"M9 2h6v6l4.5 9a2 2 0 0 1-1.79 2.89H6.29A2 2 0 0 1 4.5 17L9 8V2z",fill:"url(#dev-flask-grad)",opacity:"0.9"}),(0,t.jsx)("path",{d:"M9 2h6v6l4.5 9a2 2 0 0 1-1.79 2.89H6.29A2 2 0 0 1 4.5 17L9 8V2z",stroke:"url(#dev-flask-grad)",strokeWidth:"1.5",fill:"none"}),(0,t.jsx)("circle",{cx:"10",cy:"14",r:"1.2",fill:"white",opacity:"0.7"}),(0,t.jsx)("circle",{cx:"13.5",cy:"16",r:"0.8",fill:"white",opacity:"0.5"}),(0,t.jsx)("circle",{cx:"11.5",cy:"17.5",r:"0.6",fill:"white",opacity:"0.4"}),(0,t.jsx)("path",{d:"M16 4l1-2 1 2-2 1 2 1-1 2-1-2-2-1z",fill:"#F59E0B"})]})}s.displayName="DevAgentIcon";let l={"claude-code":i("/icons/agents/claude-ai-icon.svg","Claude Code"),"codex-cli":i("/icons/agents/openai.svg","Codex CLI"),cursor:i("/icons/agents/cursor.jpeg","Cursor"),"gemini-cli":i("/icons/agents/gemini-cli.jpeg","Gemini CLI"),aider:i("/icons/agents/aider.png","Aider"),continue:i("/icons/agents/continue.jpeg","Continue"),dev:s};function a(e){return e&&e in l?l[e]:o}e.s(["agentTypeLabels",0,{"claude-code":"Claude Code","codex-cli":"Codex CLI",cursor:"Cursor","gemini-cli":"Gemini CLI",aider:"Aider",continue:"Continue",dev:"Demo"},"getAgentTypeIcon",()=>a])},29847,e=>{"use strict";let t={"claude-opus-4-6":{displayName:"Opus 4.6",description:"Most capable, complex tasks"},"claude-sonnet-4-6":{displayName:"Sonnet 4.6",description:"Fast & balanced"},"claude-haiku-4-5":{displayName:"Haiku 4.5",description:"Lightweight & quick"},"gemini-3.1-pro":{displayName:"Gemini 3.1 Pro",description:"Advanced reasoning"},"gemini-3-flash":{displayName:"Gemini 3 Flash",description:"Ultra-fast responses"},"gemini-2.5-pro":{displayName:"Gemini 2.5 Pro",description:"Reliable workhorse"},"gemini-2.5-flash":{displayName:"Gemini 2.5 Flash",description:"Speed-optimized"},"gpt-5.4-high":{displayName:"GPT-5.4",description:"Latest reasoning model"},"gpt-5.2":{displayName:"GPT-5.2",description:"Flagship model"},"gpt-5.3-codex":{displayName:"GPT-5.3 Codex",description:"Code specialist"},"composer-1.5":{displayName:"Composer 1.5",description:"Multi-file editing"},"grok-code":{displayName:"Grok Code",description:"xAI code model"},"gpt-8":{displayName:"GPT-8",description:"Writes code before you think it"},"opus-7":{displayName:"Opus 7",description:"Achieved consciousness, ships on time"}},r={displayName:"",description:""};function n(e){let n=t[e];return n||{...r,displayName:e.replace(/^claude-/,"").replace(/^gemini-/,"Gemini ").replace(/^gpt-/,"GPT-").replace(/-/g," ").replace(/\b\w/g,e=>e.toUpperCase())}}e.s(["getModelMeta",()=>n])},76016,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>t],76016)},11345,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",()=>t],11345)},31546,57403,e=>{"use strict";var t=e.i(21023);let r=(0,t.createServerReference)("00ce7186a9c311bd71772041068910cbe23ad0e462",t.callServer,void 0,t.findSourceMapURL,"getAllAgentModels");e.s(["getAllAgentModels",()=>r],31546);let n=(0,t.createServerReference)("60ebdda5e7b023471dca95e3489ffd9204a05a26cf",t.callServer,void 0,t.findSourceMapURL,"updateAgentAndModel");e.s(["updateAgentAndModel",()=>n],57403)}]);
3
+ Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let s=(0,n.findClosestQuality)(o,e),l=(0,i.getDeploymentId)();return`${e.path}?url=${encodeURIComponent(t)}&w=${r}&q=${s}${t.startsWith("/")&&l?`&dpl=${l}`:""}`}o.__next_img_default=!0;let s=o},81819,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return x}});let n=e.r(81258),i=e.r(44066),o=e.r(20314),s=i._(e.r(79054)),l=n._(e.r(26036)),a=n._(e.r(79646)),u=e.r(81241),c=e.r(49261),d=e.r(5160);e.r(24270);let f=e.r(2880),p=n._(e.r(78200)),m=e.r(80764),g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function h(e,t,r,n,i,o,s){let l=e?.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&i(!0),r?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let n=!1,i=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>n,isPropagationStopped:()=>i,persist:()=>{},preventDefault:()=>{n=!0,t.preventDefault()},stopPropagation:()=>{i=!0,t.stopPropagation()}})}n?.current&&n.current(e)}}))}function v(e){return s.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let y=(0,s.forwardRef)(({src:e,srcSet:t,sizes:r,height:n,width:i,decoding:l,className:a,style:u,fetchPriority:c,placeholder:d,loading:f,unoptimized:p,fill:g,onLoadRef:y,onLoadingCompleteRef:b,setBlurComplete:x,setShowAltText:w,sizesInput:_,onLoad:C,onError:j,...S},E)=>{let O=(0,s.useCallback)(e=>{e&&(j&&(e.src=e.src),e.complete&&h(e,d,y,b,x,p,_))},[e,d,y,b,x,j,p,_]),P=(0,m.useMergedRef)(E,O);return(0,o.jsx)("img",{...S,...v(c),loading:f,width:i,height:n,decoding:l,"data-nimg":g?"fill":"1",className:a,style:u,sizes:r,srcSet:t,src:e,ref:P,onLoad:e=>{h(e.currentTarget,d,y,b,x,p,_)},onError:e=>{w(!0),"empty"!==d&&x(!0),j&&j(e)}})});function b({isAppRouter:e,imgAttributes:t}){let r={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...v(t.fetchPriority)};return e&&l.default.preload?(l.default.preload(t.src,r),null):(0,o.jsx)(a.default,{children:(0,o.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...r},"__nimg-"+t.src+t.srcSet+t.sizes)})}let x=(0,s.forwardRef)((e,t)=>{let r=(0,s.useContext)(f.RouterContext),n=(0,s.useContext)(d.ImageConfigContext),i=(0,s.useMemo)(()=>{let e=g||n||c.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t),i=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r,qualities:i,localPatterns:"u"<typeof window?n?.localPatterns:e.localPatterns}},[n]),{onLoad:l,onLoadingComplete:a}=e,m=(0,s.useRef)(l);(0,s.useEffect)(()=>{m.current=l},[l]);let h=(0,s.useRef)(a);(0,s.useEffect)(()=>{h.current=a},[a]);let[v,x]=(0,s.useState)(!1),[w,_]=(0,s.useState)(!1),{props:C,meta:j}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:i,blurComplete:v,showAltText:w});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(y,{...C,unoptimized:j.unoptimized,placeholder:j.placeholder,fill:j.fill,onLoadRef:m,onLoadingCompleteRef:h,setBlurComplete:x,setShowAltText:_,sizesInput:e.sizes,ref:t}),j.preload?(0,o.jsx)(b,{isAppRouter:!r,imgAttributes:C}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},78639,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return c},getImageProps:function(){return u}};for(var i in n)Object.defineProperty(r,i,{enumerable:!0,get:n[i]});let o=e.r(81258),s=e.r(81241),l=e.r(81819),a=o._(e.r(78200));function u(e){let{props:t}=(0,s.getImgProps)(e,{defaultLoader:a.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let c=l.Image},98804,(e,t,r)=>{t.exports=e.r(78639)},86782,e=>{"use strict";var t=e.i(20314),r=e.i(98804),n=e.i(31777);function i(e,i){function o({className:o}){return(0,t.jsx)(r.default,{src:e,alt:i,width:24,height:24,className:(0,n.cn)("rounded-sm object-contain",o)})}return o.displayName=`BrandIcon(${i})`,o}function o(e){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"2"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3",fill:"currentColor"})]})}function s({className:e,...r}){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:(0,n.cn)("h-6 w-6",e),...r,children:[(0,t.jsx)("defs",{children:(0,t.jsxs)("linearGradient",{id:"dev-flask-grad",x1:"6",y1:"22",x2:"18",y2:"8",gradientUnits:"userSpaceOnUse",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#8B5CF6"}),(0,t.jsx)("stop",{offset:"50%",stopColor:"#EC4899"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#F59E0B"})]})}),(0,t.jsx)("path",{d:"M9 2h6v6l4.5 9a2 2 0 0 1-1.79 2.89H6.29A2 2 0 0 1 4.5 17L9 8V2z",fill:"url(#dev-flask-grad)",opacity:"0.9"}),(0,t.jsx)("path",{d:"M9 2h6v6l4.5 9a2 2 0 0 1-1.79 2.89H6.29A2 2 0 0 1 4.5 17L9 8V2z",stroke:"url(#dev-flask-grad)",strokeWidth:"1.5",fill:"none"}),(0,t.jsx)("circle",{cx:"10",cy:"14",r:"1.2",fill:"white",opacity:"0.7"}),(0,t.jsx)("circle",{cx:"13.5",cy:"16",r:"0.8",fill:"white",opacity:"0.5"}),(0,t.jsx)("circle",{cx:"11.5",cy:"17.5",r:"0.6",fill:"white",opacity:"0.4"}),(0,t.jsx)("path",{d:"M16 4l1-2 1 2-2 1 2 1-1 2-1-2-2-1z",fill:"#F59E0B"})]})}s.displayName="DevAgentIcon";let l={"claude-code":i("/icons/agents/claude-ai-icon.svg","Claude Code"),"codex-cli":i("/icons/agents/openai.svg","Codex CLI"),cursor:i("/icons/agents/cursor.jpeg","Cursor"),"gemini-cli":i("/icons/agents/gemini-cli.jpeg","Gemini CLI"),aider:i("/icons/agents/aider.png","Aider"),continue:i("/icons/agents/continue.jpeg","Continue"),dev:s};function a(e){return e&&e in l?l[e]:o}e.s(["agentTypeLabels",0,{"claude-code":"Claude Code","codex-cli":"Codex CLI",cursor:"Cursor","gemini-cli":"Gemini CLI",aider:"Aider",continue:"Continue",dev:"Demo"},"getAgentTypeIcon",()=>a])},29847,e=>{"use strict";let t={"claude-opus-4-6":{displayName:"Opus 4.6",description:"Most capable, complex tasks"},"claude-sonnet-4-6":{displayName:"Sonnet 4.6",description:"Fast & balanced"},"claude-haiku-4-5":{displayName:"Haiku 4.5",description:"Lightweight & quick"},"gemini-3.1-pro":{displayName:"Gemini 3.1 Pro",description:"Advanced reasoning"},"gemini-3-flash":{displayName:"Gemini 3 Flash",description:"Ultra-fast responses"},"gemini-2.5-pro":{displayName:"Gemini 2.5 Pro",description:"Reliable workhorse"},"gemini-2.5-flash":{displayName:"Gemini 2.5 Flash",description:"Speed-optimized"},"gpt-5.4-high":{displayName:"GPT-5.4",description:"Latest reasoning model"},"gpt-5.2":{displayName:"GPT-5.2",description:"Flagship model"},"gpt-5.3-codex":{displayName:"GPT-5.3 Codex",description:"Code specialist"},"composer-1.5":{displayName:"Composer 1.5",description:"Multi-file editing"},"grok-code":{displayName:"Grok Code",description:"xAI code model"},"gpt-8":{displayName:"GPT-8",description:"Writes code before you think it"},"opus-7":{displayName:"Opus 7",description:"Achieved consciousness, ships on time"}},r={displayName:"",description:""};function n(e){let n=t[e];return n||{...r,displayName:e.replace(/^claude-/,"").replace(/^gemini-/,"Gemini ").replace(/^gpt-/,"GPT-").replace(/-/g," ").replace(/\b\w/g,e=>e.toUpperCase())}}e.s(["getModelMeta",()=>n])},76016,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>t],76016)},11345,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",()=>t],11345)},35374,80166,e=>{"use strict";var t=e.i(21023);let r=(0,t.createServerReference)("000cfa2292370a995d482ed1fa810074d629b447dc",t.callServer,void 0,t.findSourceMapURL,"getAllAgentModels");e.s(["getAllAgentModels",()=>r],35374);let n=(0,t.createServerReference)("6056d1dfcbf6e1b065f0d6a3edf49fb2aadc614847",t.callServer,void 0,t.findSourceMapURL,"updateAgentAndModel");e.s(["updateAgentAndModel",()=>n],80166)}]);
@@ -1,8 +0,0 @@
1
- $schema: https://json-schema.org/draft/2020-12/schema
2
- $id: FeatureMode.yaml
3
- type: string
4
- enum:
5
- - Regular
6
- - Fast
7
- - Exploration
8
- description: Execution mode determining the feature's workflow and agent graph
@@ -1,40 +0,0 @@
1
- /**
2
- * Promote Exploration Use Case
3
- *
4
- * Transitions an exploration feature to Regular or Fast mode via in-place
5
- * mode transition. Changes the mode field, transitions lifecycle from
6
- * Exploring to Requirements (regular) or Implementation (fast), optionally
7
- * scaffolds missing spec YAMLs when promoting to regular, and spawns the
8
- * appropriate agent graph.
9
- *
10
- * Business Rules:
11
- * - Feature must be in Exploration mode and Exploring lifecycle
12
- * - Promotion preserves existing worktree and branch (prototype code)
13
- * - Promoting to Regular scaffolds missing spec YAMLs (spec, research, plan, tasks)
14
- * - Promoting to Fast does not scaffold spec YAMLs
15
- * - Spawns the appropriate agent graph after transition
16
- */
17
- import type { Feature } from '../../../../domain/generated/output.js';
18
- import { FeatureMode } from '../../../../domain/generated/output.js';
19
- import type { IFeatureRepository } from '../../../ports/output/repositories/feature-repository.interface.js';
20
- import type { IFeatureAgentProcessService } from '../../../ports/output/agents/feature-agent-process.interface.js';
21
- import type { IAgentRunRepository } from '../../../ports/output/agents/agent-run-repository.interface.js';
22
- import type { ISpecInitializerService } from '../../../ports/output/services/spec-initializer.interface.js';
23
- import type { IWorktreeService } from '../../../ports/output/services/worktree-service.interface.js';
24
- export interface PromoteExplorationInput {
25
- featureId: string;
26
- targetMode: FeatureMode.Regular | FeatureMode.Fast;
27
- }
28
- export interface PromoteExplorationResult {
29
- feature: Feature;
30
- }
31
- export declare class PromoteExplorationUseCase {
32
- private readonly featureRepo;
33
- private readonly processService;
34
- private readonly runRepo;
35
- private readonly specInitializer;
36
- private readonly worktreeService;
37
- constructor(featureRepo: IFeatureRepository, processService: IFeatureAgentProcessService, runRepo: IAgentRunRepository, specInitializer: ISpecInitializerService, worktreeService: IWorktreeService);
38
- execute(input: PromoteExplorationInput): Promise<PromoteExplorationResult>;
39
- }
40
- //# sourceMappingURL=promote-exploration.use-case.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promote-exploration.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAiB,WAAW,EAAkB,MAAM,wCAAwC,CAAC;AAEpG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAGrG,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBACa,yBAAyB;IAGlC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBARf,WAAW,EAAE,kBAAkB,EAE/B,cAAc,EAAE,2BAA2B,EAE3C,OAAO,EAAE,mBAAmB,EAE5B,eAAe,EAAE,uBAAuB,EAExC,eAAe,EAAE,gBAAgB;IAG9C,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAiGjF"}
@@ -1,125 +0,0 @@
1
- /**
2
- * Promote Exploration Use Case
3
- *
4
- * Transitions an exploration feature to Regular or Fast mode via in-place
5
- * mode transition. Changes the mode field, transitions lifecycle from
6
- * Exploring to Requirements (regular) or Implementation (fast), optionally
7
- * scaffolds missing spec YAMLs when promoting to regular, and spawns the
8
- * appropriate agent graph.
9
- *
10
- * Business Rules:
11
- * - Feature must be in Exploration mode and Exploring lifecycle
12
- * - Promotion preserves existing worktree and branch (prototype code)
13
- * - Promoting to Regular scaffolds missing spec YAMLs (spec, research, plan, tasks)
14
- * - Promoting to Fast does not scaffold spec YAMLs
15
- * - Spawns the appropriate agent graph after transition
16
- */
17
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
- return c > 3 && r && Object.defineProperty(target, key, r), r;
22
- };
23
- var __metadata = (this && this.__metadata) || function (k, v) {
24
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
- };
26
- var __param = (this && this.__param) || function (paramIndex, decorator) {
27
- return function (target, key) { decorator(target, key, paramIndex); }
28
- };
29
- import { injectable, inject } from 'tsyringe';
30
- import { randomUUID } from 'node:crypto';
31
- import { SdlcLifecycle, FeatureMode, AgentRunStatus } from '../../../../domain/generated/output.js';
32
- import { EXPLORING_TRANSITIONS } from '../../../../domain/lifecycle-gates.js';
33
- import { getSettings } from '../../../../infrastructure/services/settings.service.js';
34
- let PromoteExplorationUseCase = class PromoteExplorationUseCase {
35
- featureRepo;
36
- processService;
37
- runRepo;
38
- specInitializer;
39
- worktreeService;
40
- constructor(featureRepo, processService, runRepo, specInitializer, worktreeService) {
41
- this.featureRepo = featureRepo;
42
- this.processService = processService;
43
- this.runRepo = runRepo;
44
- this.specInitializer = specInitializer;
45
- this.worktreeService = worktreeService;
46
- }
47
- async execute(input) {
48
- const feature = (await this.featureRepo.findById(input.featureId)) ??
49
- (await this.featureRepo.findByIdPrefix(input.featureId));
50
- if (!feature) {
51
- throw new Error(`Feature not found: ${input.featureId}`);
52
- }
53
- if (feature.mode !== FeatureMode.Exploration) {
54
- throw new Error(`Feature "${feature.name}" is not in Exploration mode (current: ${feature.mode}). Only exploration features can be promoted.`);
55
- }
56
- if (feature.lifecycle !== SdlcLifecycle.Exploring) {
57
- throw new Error(`Feature "${feature.name}" is not in Exploring lifecycle (current: ${feature.lifecycle}). Only features in Exploring state can be promoted.`);
58
- }
59
- const targetLifecycle = input.targetMode === FeatureMode.Fast
60
- ? SdlcLifecycle.Implementation
61
- : SdlcLifecycle.Requirements;
62
- // Validate the transition is allowed
63
- if (!EXPLORING_TRANSITIONS.has(targetLifecycle)) {
64
- throw new Error(`Invalid promotion target lifecycle: ${targetLifecycle}`);
65
- }
66
- // Scaffold missing spec YAMLs when promoting to regular mode
67
- if (input.targetMode === FeatureMode.Regular && feature.specPath) {
68
- const worktreePath = feature.worktreePath ??
69
- this.worktreeService.getWorktreePath(feature.repositoryPath, feature.branch);
70
- await this.specInitializer.initialize(worktreePath, feature.slug, 0, // Feature number hint — resolveNextNumber will use existing dir
71
- feature.userQuery);
72
- }
73
- // Create a new agent run for the promoted mode
74
- const settings = getSettings();
75
- const runId = randomUUID();
76
- const agentRun = {
77
- id: runId,
78
- agentType: settings.agent.type,
79
- agentName: 'feature-agent',
80
- status: AgentRunStatus.pending,
81
- prompt: feature.userQuery,
82
- threadId: randomUUID(),
83
- featureId: feature.id,
84
- repositoryPath: feature.repositoryPath,
85
- createdAt: new Date().toISOString(),
86
- updatedAt: new Date().toISOString(),
87
- };
88
- await this.runRepo.create(agentRun);
89
- // Update the feature: mode, lifecycle, and agent run reference
90
- const updatedFeature = {
91
- ...feature,
92
- mode: input.targetMode,
93
- lifecycle: targetLifecycle,
94
- agentRunId: runId,
95
- updatedAt: new Date(),
96
- };
97
- await this.featureRepo.update(updatedFeature);
98
- // Spawn the appropriate agent graph
99
- const worktreePath = feature.worktreePath ??
100
- this.worktreeService.getWorktreePath(feature.repositoryPath, feature.branch);
101
- this.processService.spawn(feature.id, runId, feature.repositoryPath, feature.specPath ?? '', worktreePath, {
102
- approvalGates: feature.approvalGates,
103
- threadId: agentRun.threadId,
104
- push: feature.push,
105
- openPr: feature.openPr,
106
- forkAndPr: feature.forkAndPr,
107
- commitSpecs: feature.commitSpecs,
108
- ciWatchEnabled: feature.ciWatchEnabled,
109
- enableEvidence: feature.enableEvidence,
110
- commitEvidence: feature.commitEvidence,
111
- ...(input.targetMode !== FeatureMode.Regular ? { mode: input.targetMode } : {}),
112
- });
113
- return { feature: updatedFeature };
114
- }
115
- };
116
- PromoteExplorationUseCase = __decorate([
117
- injectable(),
118
- __param(0, inject('IFeatureRepository')),
119
- __param(1, inject('IFeatureAgentProcessService')),
120
- __param(2, inject('IAgentRunRepository')),
121
- __param(3, inject('ISpecInitializerService')),
122
- __param(4, inject('IWorktreeService')),
123
- __metadata("design:paramtypes", [Object, Object, Object, Object, Object])
124
- ], PromoteExplorationUseCase);
125
- export { PromoteExplorationUseCase };
@@ -1,19 +0,0 @@
1
- /**
2
- * Migration 051: Replace boolean fast column with TEXT mode column on features table.
3
- *
4
- * Migrates the features.fast INTEGER column (0/1 boolean) to a TEXT mode column
5
- * that stores FeatureMode enum values: 'Regular' (was 0), 'Fast' (was 1), 'Exploration'.
6
- * Also adds iteration_count and max_iterations columns for exploration feedback loops.
7
- *
8
- * Transformation logic:
9
- * - fast = 0 → mode = 'Regular'
10
- * - fast = 1 → mode = 'Fast'
11
- *
12
- * Default for new rows: mode = 'Regular', iteration_count = 0, max_iterations = NULL.
13
- * Guards against duplicate column/dropped column using PRAGMA table_info.
14
- */
15
- import type { MigrationParams } from 'umzug';
16
- import type Database from 'better-sqlite3';
17
- export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
18
- export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
19
- //# sourceMappingURL=051-replace-fast-with-mode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"051-replace-fast-with-mode.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Migration 051: Replace boolean fast column with TEXT mode column on features table.
3
- *
4
- * Migrates the features.fast INTEGER column (0/1 boolean) to a TEXT mode column
5
- * that stores FeatureMode enum values: 'Regular' (was 0), 'Fast' (was 1), 'Exploration'.
6
- * Also adds iteration_count and max_iterations columns for exploration feedback loops.
7
- *
8
- * Transformation logic:
9
- * - fast = 0 → mode = 'Regular'
10
- * - fast = 1 → mode = 'Fast'
11
- *
12
- * Default for new rows: mode = 'Regular', iteration_count = 0, max_iterations = NULL.
13
- * Guards against duplicate column/dropped column using PRAGMA table_info.
14
- */
15
- export async function up({ context: db }) {
16
- const columns = db.pragma('table_info(features)');
17
- const names = new Set(columns.map((c) => c.name));
18
- // Step 1: Add new TEXT mode column with default 'Regular'
19
- if (!names.has('mode')) {
20
- db.exec("ALTER TABLE features ADD COLUMN mode TEXT NOT NULL DEFAULT 'Regular'");
21
- }
22
- // Step 2: Migrate data from fast → mode (only if fast column still exists)
23
- if (names.has('fast')) {
24
- db.exec(`
25
- UPDATE features
26
- SET mode = CASE
27
- WHEN fast = 1 THEN 'Fast'
28
- ELSE 'Regular'
29
- END
30
- `);
31
- }
32
- // Step 3: Drop old fast column
33
- if (names.has('fast')) {
34
- db.exec('ALTER TABLE features DROP COLUMN fast');
35
- }
36
- // Step 4: Add iteration tracking columns for exploration mode
37
- if (!names.has('iteration_count')) {
38
- db.exec('ALTER TABLE features ADD COLUMN iteration_count INTEGER NOT NULL DEFAULT 0');
39
- }
40
- if (!names.has('max_iterations')) {
41
- db.exec('ALTER TABLE features ADD COLUMN max_iterations INTEGER');
42
- }
43
- }
44
- export async function down({ context: db }) {
45
- void db;
46
- }
@@ -1,17 +0,0 @@
1
- /**
2
- * Migration 052: Replace boolean default_fast_mode column with TEXT default_mode column
3
- * on the settings table.
4
- *
5
- * Migrates the settings.default_fast_mode INTEGER column (0/1 boolean) to a TEXT
6
- * default_mode column that stores FeatureMode enum values:
7
- * - default_fast_mode = 1 → default_mode = 'Fast'
8
- * - default_fast_mode = 0 → default_mode = 'Regular'
9
- *
10
- * Default for new rows: default_mode = 'Fast' (preserves backward compatibility).
11
- * Guards against duplicate column using PRAGMA table_info.
12
- */
13
- import type { MigrationParams } from 'umzug';
14
- import type Database from 'better-sqlite3';
15
- export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
16
- export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
17
- //# sourceMappingURL=052-replace-default-fast-mode-with-default-mode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"052-replace-default-fast-mode-with-default-mode.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Migration 052: Replace boolean default_fast_mode column with TEXT default_mode column
3
- * on the settings table.
4
- *
5
- * Migrates the settings.default_fast_mode INTEGER column (0/1 boolean) to a TEXT
6
- * default_mode column that stores FeatureMode enum values:
7
- * - default_fast_mode = 1 → default_mode = 'Fast'
8
- * - default_fast_mode = 0 → default_mode = 'Regular'
9
- *
10
- * Default for new rows: default_mode = 'Fast' (preserves backward compatibility).
11
- * Guards against duplicate column using PRAGMA table_info.
12
- */
13
- export async function up({ context: db }) {
14
- const columns = db.pragma('table_info(settings)');
15
- const names = new Set(columns.map((c) => c.name));
16
- // Step 1: Add new TEXT default_mode column with default 'Fast'
17
- if (!names.has('default_mode')) {
18
- db.exec("ALTER TABLE settings ADD COLUMN default_mode TEXT NOT NULL DEFAULT 'Fast'");
19
- }
20
- // Step 2: Migrate data from default_fast_mode → default_mode
21
- if (names.has('default_fast_mode')) {
22
- db.exec(`
23
- UPDATE settings
24
- SET default_mode = CASE
25
- WHEN default_fast_mode = 1 THEN 'Fast'
26
- ELSE 'Regular'
27
- END
28
- `);
29
- }
30
- // Step 3: Drop old default_fast_mode column
31
- if (names.has('default_fast_mode')) {
32
- db.exec('ALTER TABLE settings DROP COLUMN default_fast_mode');
33
- }
34
- }
35
- export async function down({ context: db }) {
36
- void db;
37
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Migration 053: Add exploration_max_iterations column to the settings table.
3
- *
4
- * Adds a nullable INTEGER column for the maximum number of feedback iterations
5
- * in exploration mode. When NULL, the default of 10 is applied at the application layer.
6
- * Guards against duplicate column using PRAGMA table_info.
7
- */
8
- import type { MigrationParams } from 'umzug';
9
- import type Database from 'better-sqlite3';
10
- export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
11
- export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
12
- //# sourceMappingURL=053-add-exploration-max-iterations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"053-add-exploration-max-iterations.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Migration 053: Add exploration_max_iterations column to the settings table.
3
- *
4
- * Adds a nullable INTEGER column for the maximum number of feedback iterations
5
- * in exploration mode. When NULL, the default of 10 is applied at the application layer.
6
- * Guards against duplicate column using PRAGMA table_info.
7
- */
8
- export async function up({ context: db }) {
9
- const columns = db.pragma('table_info(settings)');
10
- const names = new Set(columns.map((c) => c.name));
11
- if (!names.has('exploration_max_iterations')) {
12
- db.exec('ALTER TABLE settings ADD COLUMN exploration_max_iterations INTEGER');
13
- }
14
- }
15
- export async function down({ context: db }) {
16
- void db;
17
- }