@shepai/cli 1.136.0-pr441.5eaafd1 → 1.136.0-pr444.eca4070

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 (462) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +0 -5
  2. package/apis/json-schema/NotificationEventConfig.yaml +0 -15
  3. package/apis/json-schema/NotificationEventType.yaml +0 -3
  4. package/dist/packages/core/src/application/ports/output/repositories/index.d.ts +0 -2
  5. package/dist/packages/core/src/application/ports/output/repositories/index.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/services/index.d.ts +0 -1
  7. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  9. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +1 -1
  10. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts +12 -1
  11. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts.map +1 -1
  12. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.js +61 -4
  13. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  14. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +0 -4
  15. package/dist/packages/core/src/domain/generated/output.d.ts +1 -114
  16. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  17. package/dist/packages/core/src/domain/generated/output.js +0 -16
  18. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/di/container.js +0 -66
  20. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +0 -4
  21. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  22. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +0 -8
  23. package/dist/packages/core/src/infrastructure/services/notifications/notification.service.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/services/notifications/notification.service.js +0 -3
  25. package/dist/src/presentation/cli/commands/_serve.command.d.ts.map +1 -1
  26. package/dist/src/presentation/cli/commands/_serve.command.js +0 -14
  27. package/dist/src/presentation/cli/index.js +0 -2
  28. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +0 -4
  30. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  31. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +0 -3
  32. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  33. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +0 -3
  34. package/dist/src/presentation/web/components/features/settings/notification-settings-section.d.ts.map +1 -1
  35. package/dist/src/presentation/web/components/features/settings/notification-settings-section.js +1 -6
  36. package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.d.ts.map +1 -1
  37. package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.js +0 -6
  38. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  39. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +2 -19
  40. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  41. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +0 -1
  42. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  43. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  44. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  45. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +0 -1
  46. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  47. package/dist/src/presentation/web/hooks/feature-flags-context.js +0 -1
  48. package/dist/src/presentation/web/lib/feature-flags.d.ts +0 -2
  49. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  50. package/dist/src/presentation/web/lib/feature-flags.js +0 -5
  51. package/dist/tsconfig.build.tsbuildinfo +1 -1
  52. package/package.json +1 -2
  53. package/web/.next/BUILD_ID +1 -1
  54. package/web/.next/app-path-routes-manifest.json +1 -2
  55. package/web/.next/build-manifest.json +2 -2
  56. package/web/.next/fallback-build-manifest.json +2 -2
  57. package/web/.next/prerender-manifest.json +3 -3
  58. package/web/.next/required-server-files.js +1 -1
  59. package/web/.next/required-server-files.json +1 -1
  60. package/web/.next/routes-manifest.json +0 -6
  61. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +25 -25
  62. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
  63. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  64. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +25 -25
  66. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  67. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +31 -31
  70. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  71. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +31 -31
  74. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  75. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  76. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +23 -23
  78. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  79. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +25 -25
  82. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  83. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  84. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  85. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +31 -31
  86. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  87. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  88. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +31 -31
  90. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  91. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  92. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +23 -23
  94. package/web/.next/server/app/(dashboard)/page.js +1 -1
  95. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  96. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +23 -23
  98. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  99. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  100. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/_global-error.html +2 -2
  102. package/web/.next/server/app/_global-error.rsc +1 -1
  103. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  104. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  105. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  106. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  107. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  108. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  109. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  110. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  111. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  112. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  113. package/web/.next/server/app/api/feature-logs/route.js +1 -1
  114. package/web/.next/server/app/api/feature-logs/route.js.nft.json +1 -1
  115. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  116. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  117. package/web/.next/server/app/settings/page.js +2 -2
  118. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  119. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  120. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  121. package/web/.next/server/app/skills/page.js +1 -1
  122. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  123. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  124. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  125. package/web/.next/server/app/tools/page.js +1 -1
  126. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  127. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  129. package/web/.next/server/app/version/page.js.nft.json +1 -1
  130. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  131. package/web/.next/server/app-paths-manifest.json +1 -2
  132. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  133. package/web/.next/server/chunks/{[root-of-the-server]__c7d52490._.js → [root-of-the-server]__2b1074db._.js} +2 -2
  134. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  135. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js +1 -1
  136. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +1 -1
  137. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  138. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js +1 -1
  140. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js.map +1 -1
  141. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  142. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js +3 -0
  144. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js.map +1 -0
  145. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js +1 -1
  146. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js +1 -1
  148. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  150. package/web/.next/server/chunks/ssr/{[root-of-the-server]__57e0ee34._.js → [root-of-the-server]__3ef34e4c._.js} +3 -3
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js.map +1 -0
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/{[root-of-the-server]__33ac1a70._.js → [root-of-the-server]__6ec59045._.js} +2 -2
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/{[root-of-the-server]__07f12984._.js → [root-of-the-server]__a5f9c6e5._.js} +3 -3
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js.map +1 -0
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js +3 -0
  169. package/web/.next/server/chunks/ssr/{[root-of-the-server]__6e93b49c._.js.map → [root-of-the-server]__b3dbadca._.js.map} +1 -1
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +3 -0
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -0
  172. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js +1 -1
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/{_a3721140._.js → _0020fddd._.js} +2 -2
  175. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -0
  176. package/web/.next/server/chunks/ssr/_01046927._.js +9 -0
  177. package/web/.next/server/chunks/ssr/_01046927._.js.map +1 -0
  178. package/web/.next/server/chunks/ssr/{403f9_next_53742624._.js → _02ec1aea._.js} +2 -2
  179. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -0
  180. package/web/.next/server/chunks/ssr/{_8e8cd7e1._.js → _0afe5add._.js} +2 -2
  181. package/web/.next/server/chunks/ssr/{_8e8cd7e1._.js.map → _0afe5add._.js.map} +1 -1
  182. package/web/.next/server/chunks/ssr/{f7870_sonner_dist_index_mjs_dbf63824._.js → _1b7dae9a._.js} +2 -2
  183. package/web/.next/server/chunks/ssr/_1b7dae9a._.js.map +1 -0
  184. package/web/.next/server/chunks/ssr/_67104d9e._.js +3 -0
  185. package/web/.next/server/chunks/ssr/_67104d9e._.js.map +1 -0
  186. package/web/.next/server/chunks/ssr/_7dca1882._.js +3 -0
  187. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -0
  188. package/web/.next/server/chunks/ssr/_a37f5f18._.js +1 -1
  189. package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/{_6701ee41._.js → _a9f57758._.js} +2 -2
  191. package/web/.next/server/chunks/ssr/{_6701ee41._.js.map → _a9f57758._.js.map} +1 -1
  192. package/web/.next/server/chunks/ssr/{_277acdde._.js → _b5fc318a._.js} +2 -2
  193. package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +1 -0
  194. package/web/.next/server/chunks/ssr/_d4b20e29._.js +3 -0
  195. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -0
  196. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  197. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/_e6819f98._.js +3 -0
  199. package/web/.next/server/chunks/ssr/_e6819f98._.js.map +1 -0
  200. package/web/.next/server/chunks/ssr/_e69a26ba._.js +1 -1
  201. package/web/.next/server/chunks/ssr/_f39a1adb._.js +3 -0
  202. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -0
  203. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  204. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  205. package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js +3 -0
  206. package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js.map +1 -0
  207. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js +2 -2
  208. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/src_presentation_web_6e5a6584._.js +3 -0
  210. package/web/.next/server/chunks/ssr/{src_presentation_web_53fa3010._.js.map → src_presentation_web_6e5a6584._.js.map} +1 -1
  211. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js +1 -1
  212. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  214. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  216. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  218. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  219. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  220. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  221. package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js +2 -2
  222. package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js.map +1 -1
  223. package/web/.next/server/pages/500.html +2 -2
  224. package/web/.next/server/server-reference-manifest.js +1 -1
  225. package/web/.next/server/server-reference-manifest.json +42 -123
  226. package/web/.next/static/chunks/0b7fe2ac4f078f54.js +13 -0
  227. package/web/.next/static/chunks/{196650f8cd7fb06a.js → 0d9d536c3a1e3769.js} +1 -1
  228. package/web/.next/static/chunks/567ce91151ef6047.js +1 -0
  229. package/web/.next/static/chunks/601d93593f5f664f.js +1 -0
  230. package/web/.next/static/chunks/637939aee23af962.js +1 -0
  231. package/web/.next/static/chunks/{42c9564e375717ed.js → 672e3da3ad26005b.js} +1 -1
  232. package/web/.next/static/chunks/688971d5bad5dc7c.js +1 -0
  233. package/web/.next/static/chunks/6cfe48db0ef62904.js +1 -0
  234. package/web/.next/static/chunks/7551e6ec93bab5f0.js +1 -0
  235. package/web/.next/static/chunks/88172de8ecaf66b3.js +2 -0
  236. package/web/.next/static/chunks/{2002f5eec5ffec42.css → 92cd6f523639a6fa.css} +1 -1
  237. package/web/.next/static/chunks/92e04793b5e324cd.js +1 -0
  238. package/web/.next/static/chunks/{bee578019062e7f9.js → b04ab84a67bae78b.js} +2 -2
  239. package/web/.next/static/chunks/b70dd4985a814b27.js +1 -0
  240. package/web/.next/static/chunks/d0dff217a94d4ee1.js +1 -0
  241. package/web/.next/static/chunks/d408e7dc9c253e29.js +1 -0
  242. package/web/.next/static/chunks/dde2b000405d2ae4.js +1 -0
  243. package/web/.next/static/chunks/e843dbe14e813279.js +1 -0
  244. package/web/.next/static/chunks/fb766dbac52d1c8d.js +1 -0
  245. package/apis/json-schema/ScheduledWorkflow.yaml +0 -46
  246. package/apis/json-schema/WorkflowExecution.yaml +0 -38
  247. package/apis/json-schema/WorkflowExecutionStatus.yaml +0 -10
  248. package/apis/json-schema/WorkflowTriggerType.yaml +0 -7
  249. package/dist/packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.d.ts +0 -66
  250. package/dist/packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.d.ts.map +0 -1
  251. package/dist/packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.js +0 -11
  252. package/dist/packages/core/src/application/ports/output/repositories/workflow-repository.interface.d.ts +0 -81
  253. package/dist/packages/core/src/application/ports/output/repositories/workflow-repository.interface.d.ts.map +0 -1
  254. package/dist/packages/core/src/application/ports/output/repositories/workflow-repository.interface.js +0 -11
  255. package/dist/packages/core/src/application/ports/output/services/clock.interface.d.ts +0 -28
  256. package/dist/packages/core/src/application/ports/output/services/clock.interface.d.ts.map +0 -1
  257. package/dist/packages/core/src/application/ports/output/services/clock.interface.js +0 -13
  258. package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.d.ts +0 -28
  259. package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.d.ts.map +0 -1
  260. package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.js +0 -72
  261. package/dist/packages/core/src/application/use-cases/workflows/cron-helpers.d.ts +0 -27
  262. package/dist/packages/core/src/application/use-cases/workflows/cron-helpers.d.ts.map +0 -1
  263. package/dist/packages/core/src/application/use-cases/workflows/cron-helpers.js +0 -43
  264. package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.d.ts +0 -18
  265. package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.d.ts.map +0 -1
  266. package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.js +0 -64
  267. package/dist/packages/core/src/application/use-cases/workflows/get-workflow-history.use-case.d.ts +0 -16
  268. package/dist/packages/core/src/application/use-cases/workflows/get-workflow-history.use-case.d.ts.map +0 -1
  269. package/dist/packages/core/src/application/use-cases/workflows/get-workflow-history.use-case.js +0 -46
  270. package/dist/packages/core/src/application/use-cases/workflows/get-workflow.use-case.d.ts +0 -13
  271. package/dist/packages/core/src/application/use-cases/workflows/get-workflow.use-case.d.ts.map +0 -1
  272. package/dist/packages/core/src/application/use-cases/workflows/get-workflow.use-case.js +0 -42
  273. package/dist/packages/core/src/application/use-cases/workflows/list-workflows.use-case.d.ts +0 -13
  274. package/dist/packages/core/src/application/use-cases/workflows/list-workflows.use-case.d.ts.map +0 -1
  275. package/dist/packages/core/src/application/use-cases/workflows/list-workflows.use-case.js +0 -33
  276. package/dist/packages/core/src/application/use-cases/workflows/run-workflow.use-case.d.ts +0 -19
  277. package/dist/packages/core/src/application/use-cases/workflows/run-workflow.use-case.d.ts.map +0 -1
  278. package/dist/packages/core/src/application/use-cases/workflows/run-workflow.use-case.js +0 -62
  279. package/dist/packages/core/src/application/use-cases/workflows/schedule-workflow.use-case.d.ts +0 -22
  280. package/dist/packages/core/src/application/use-cases/workflows/schedule-workflow.use-case.d.ts.map +0 -1
  281. package/dist/packages/core/src/application/use-cases/workflows/schedule-workflow.use-case.js +0 -73
  282. package/dist/packages/core/src/application/use-cases/workflows/templates/branch-rebase.template.d.ts +0 -9
  283. package/dist/packages/core/src/application/use-cases/workflows/templates/branch-rebase.template.d.ts.map +0 -1
  284. package/dist/packages/core/src/application/use-cases/workflows/templates/branch-rebase.template.js +0 -27
  285. package/dist/packages/core/src/application/use-cases/workflows/templates/issue-triage.template.d.ts +0 -11
  286. package/dist/packages/core/src/application/use-cases/workflows/templates/issue-triage.template.d.ts.map +0 -1
  287. package/dist/packages/core/src/application/use-cases/workflows/templates/issue-triage.template.js +0 -27
  288. package/dist/packages/core/src/application/use-cases/workflows/toggle-workflow.use-case.d.ts +0 -16
  289. package/dist/packages/core/src/application/use-cases/workflows/toggle-workflow.use-case.d.ts.map +0 -1
  290. package/dist/packages/core/src/application/use-cases/workflows/toggle-workflow.use-case.js +0 -60
  291. package/dist/packages/core/src/application/use-cases/workflows/update-workflow.use-case.d.ts +0 -25
  292. package/dist/packages/core/src/application/use-cases/workflows/update-workflow.use-case.d.ts.map +0 -1
  293. package/dist/packages/core/src/application/use-cases/workflows/update-workflow.use-case.js +0 -83
  294. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.d.ts +0 -46
  295. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.d.ts.map +0 -1
  296. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.js +0 -57
  297. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.d.ts +0 -51
  298. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.d.ts.map +0 -1
  299. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.js +0 -71
  300. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.d.ts +0 -12
  301. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.d.ts.map +0 -1
  302. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.js +0 -22
  303. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.d.ts +0 -14
  304. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.d.ts.map +0 -1
  305. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.js +0 -65
  306. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.d.ts +0 -11
  307. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.d.ts.map +0 -1
  308. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.js +0 -17
  309. package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.d.ts +0 -24
  310. package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.d.ts.map +0 -1
  311. package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.js +0 -92
  312. package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.d.ts +0 -26
  313. package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.d.ts.map +0 -1
  314. package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.js +0 -117
  315. package/dist/packages/core/src/infrastructure/services/clock.d.ts +0 -11
  316. package/dist/packages/core/src/infrastructure/services/clock.d.ts.map +0 -1
  317. package/dist/packages/core/src/infrastructure/services/clock.js +0 -22
  318. package/dist/packages/core/src/infrastructure/services/workflow-scheduler/workflow-scheduler.service.d.ts +0 -69
  319. package/dist/packages/core/src/infrastructure/services/workflow-scheduler/workflow-scheduler.service.d.ts.map +0 -1
  320. package/dist/packages/core/src/infrastructure/services/workflow-scheduler/workflow-scheduler.service.js +0 -270
  321. package/dist/src/presentation/cli/commands/workflow/create.command.d.ts +0 -13
  322. package/dist/src/presentation/cli/commands/workflow/create.command.d.ts.map +0 -1
  323. package/dist/src/presentation/cli/commands/workflow/create.command.js +0 -83
  324. package/dist/src/presentation/cli/commands/workflow/delete.command.d.ts +0 -13
  325. package/dist/src/presentation/cli/commands/workflow/delete.command.d.ts.map +0 -1
  326. package/dist/src/presentation/cli/commands/workflow/delete.command.js +0 -50
  327. package/dist/src/presentation/cli/commands/workflow/disable.command.d.ts +0 -11
  328. package/dist/src/presentation/cli/commands/workflow/disable.command.d.ts.map +0 -1
  329. package/dist/src/presentation/cli/commands/workflow/disable.command.js +0 -32
  330. package/dist/src/presentation/cli/commands/workflow/enable.command.d.ts +0 -11
  331. package/dist/src/presentation/cli/commands/workflow/enable.command.d.ts.map +0 -1
  332. package/dist/src/presentation/cli/commands/workflow/enable.command.js +0 -35
  333. package/dist/src/presentation/cli/commands/workflow/format-helpers.d.ts +0 -35
  334. package/dist/src/presentation/cli/commands/workflow/format-helpers.d.ts.map +0 -1
  335. package/dist/src/presentation/cli/commands/workflow/format-helpers.js +0 -89
  336. package/dist/src/presentation/cli/commands/workflow/history.command.d.ts +0 -12
  337. package/dist/src/presentation/cli/commands/workflow/history.command.d.ts.map +0 -1
  338. package/dist/src/presentation/cli/commands/workflow/history.command.js +0 -46
  339. package/dist/src/presentation/cli/commands/workflow/index.d.ts +0 -26
  340. package/dist/src/presentation/cli/commands/workflow/index.d.ts.map +0 -1
  341. package/dist/src/presentation/cli/commands/workflow/index.js +0 -48
  342. package/dist/src/presentation/cli/commands/workflow/list.command.d.ts +0 -11
  343. package/dist/src/presentation/cli/commands/workflow/list.command.d.ts.map +0 -1
  344. package/dist/src/presentation/cli/commands/workflow/list.command.js +0 -52
  345. package/dist/src/presentation/cli/commands/workflow/run.command.d.ts +0 -11
  346. package/dist/src/presentation/cli/commands/workflow/run.command.d.ts.map +0 -1
  347. package/dist/src/presentation/cli/commands/workflow/run.command.js +0 -37
  348. package/dist/src/presentation/cli/commands/workflow/schedule.command.d.ts +0 -13
  349. package/dist/src/presentation/cli/commands/workflow/schedule.command.d.ts.map +0 -1
  350. package/dist/src/presentation/cli/commands/workflow/schedule.command.js +0 -76
  351. package/dist/src/presentation/cli/commands/workflow/show.command.d.ts +0 -11
  352. package/dist/src/presentation/cli/commands/workflow/show.command.d.ts.map +0 -1
  353. package/dist/src/presentation/cli/commands/workflow/show.command.js +0 -93
  354. package/dist/src/presentation/cli/commands/workflow/update.command.d.ts +0 -13
  355. package/dist/src/presentation/cli/commands/workflow/update.command.d.ts.map +0 -1
  356. package/dist/src/presentation/cli/commands/workflow/update.command.js +0 -67
  357. package/dist/src/presentation/web/app/actions/get-workflow-history.d.ts +0 -7
  358. package/dist/src/presentation/web/app/actions/get-workflow-history.d.ts.map +0 -1
  359. package/dist/src/presentation/web/app/actions/get-workflow-history.js +0 -17
  360. package/dist/src/presentation/web/app/actions/list-workflows.d.ts +0 -7
  361. package/dist/src/presentation/web/app/actions/list-workflows.d.ts.map +0 -1
  362. package/dist/src/presentation/web/app/actions/list-workflows.js +0 -17
  363. package/dist/src/presentation/web/app/actions/toggle-workflow.d.ts +0 -8
  364. package/dist/src/presentation/web/app/actions/toggle-workflow.d.ts.map +0 -1
  365. package/dist/src/presentation/web/app/actions/toggle-workflow.js +0 -19
  366. package/dist/src/presentation/web/app/actions/trigger-workflow.d.ts +0 -8
  367. package/dist/src/presentation/web/app/actions/trigger-workflow.d.ts.map +0 -1
  368. package/dist/src/presentation/web/app/actions/trigger-workflow.js +0 -19
  369. package/dist/src/presentation/web/app/workflows/page.d.ts +0 -4
  370. package/dist/src/presentation/web/app/workflows/page.d.ts.map +0 -1
  371. package/dist/src/presentation/web/app/workflows/page.js +0 -18
  372. package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.d.ts +0 -7
  373. package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.d.ts.map +0 -1
  374. package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.js +0 -84
  375. package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.stories.d.ts +0 -11
  376. package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.stories.d.ts.map +0 -1
  377. package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.stories.js +0 -104
  378. package/dist/src/presentation/web/components/features/workflows/workflow-list-item.d.ts +0 -8
  379. package/dist/src/presentation/web/components/features/workflows/workflow-list-item.d.ts.map +0 -1
  380. package/dist/src/presentation/web/components/features/workflows/workflow-list-item.js +0 -68
  381. package/dist/src/presentation/web/components/features/workflows/workflow-list-item.stories.d.ts +0 -11
  382. package/dist/src/presentation/web/components/features/workflows/workflow-list-item.stories.d.ts.map +0 -1
  383. package/dist/src/presentation/web/components/features/workflows/workflow-list-item.stories.js +0 -89
  384. package/dist/src/presentation/web/components/features/workflows/workflow-list.d.ts +0 -8
  385. package/dist/src/presentation/web/components/features/workflows/workflow-list.d.ts.map +0 -1
  386. package/dist/src/presentation/web/components/features/workflows/workflow-list.js +0 -10
  387. package/dist/src/presentation/web/components/features/workflows/workflow-list.stories.d.ts +0 -11
  388. package/dist/src/presentation/web/components/features/workflows/workflow-list.stories.d.ts.map +0 -1
  389. package/dist/src/presentation/web/components/features/workflows/workflow-list.stories.js +0 -90
  390. package/dist/src/presentation/web/components/features/workflows/workflows-page-client.d.ts +0 -6
  391. package/dist/src/presentation/web/components/features/workflows/workflows-page-client.d.ts.map +0 -1
  392. package/dist/src/presentation/web/components/features/workflows/workflows-page-client.js +0 -14
  393. package/dist/src/presentation/web/components/features/workflows/workflows-page-client.stories.d.ts +0 -10
  394. package/dist/src/presentation/web/components/features/workflows/workflows-page-client.stories.d.ts.map +0 -1
  395. package/dist/src/presentation/web/components/features/workflows/workflows-page-client.stories.js +0 -70
  396. package/web/.next/server/app/workflows/page/app-paths-manifest.json +0 -3
  397. package/web/.next/server/app/workflows/page/build-manifest.json +0 -18
  398. package/web/.next/server/app/workflows/page/next-font-manifest.json +0 -6
  399. package/web/.next/server/app/workflows/page/react-loadable-manifest.json +0 -8
  400. package/web/.next/server/app/workflows/page/server-reference-manifest.json +0 -110
  401. package/web/.next/server/app/workflows/page.js +0 -18
  402. package/web/.next/server/app/workflows/page.js.map +0 -5
  403. package/web/.next/server/app/workflows/page.js.nft.json +0 -1
  404. package/web/.next/server/app/workflows/page_client-reference-manifest.js +0 -2
  405. package/web/.next/server/chunks/ssr/403f9_next_53742624._.js.map +0 -1
  406. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_0c7787d0._.js +0 -3
  407. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_0c7787d0._.js.map +0 -1
  408. package/web/.next/server/chunks/ssr/[root-of-the-server]__07f12984._.js.map +0 -1
  409. package/web/.next/server/chunks/ssr/[root-of-the-server]__082758f6._.js +0 -3
  410. package/web/.next/server/chunks/ssr/[root-of-the-server]__082758f6._.js.map +0 -1
  411. package/web/.next/server/chunks/ssr/[root-of-the-server]__32cd6108._.js +0 -3
  412. package/web/.next/server/chunks/ssr/[root-of-the-server]__32cd6108._.js.map +0 -1
  413. package/web/.next/server/chunks/ssr/[root-of-the-server]__33ac1a70._.js.map +0 -1
  414. package/web/.next/server/chunks/ssr/[root-of-the-server]__44358910._.js +0 -4
  415. package/web/.next/server/chunks/ssr/[root-of-the-server]__44358910._.js.map +0 -1
  416. package/web/.next/server/chunks/ssr/[root-of-the-server]__57e0ee34._.js.map +0 -1
  417. package/web/.next/server/chunks/ssr/[root-of-the-server]__6e93b49c._.js +0 -3
  418. package/web/.next/server/chunks/ssr/_20a4a0d5._.js +0 -3
  419. package/web/.next/server/chunks/ssr/_20a4a0d5._.js.map +0 -1
  420. package/web/.next/server/chunks/ssr/_25555eb5._.js +0 -3
  421. package/web/.next/server/chunks/ssr/_25555eb5._.js.map +0 -1
  422. package/web/.next/server/chunks/ssr/_277acdde._.js.map +0 -1
  423. package/web/.next/server/chunks/ssr/_4711e8cf._.js +0 -3
  424. package/web/.next/server/chunks/ssr/_4711e8cf._.js.map +0 -1
  425. package/web/.next/server/chunks/ssr/_89a36303._.js +0 -3
  426. package/web/.next/server/chunks/ssr/_89a36303._.js.map +0 -1
  427. package/web/.next/server/chunks/ssr/_9869d3da._.js +0 -3
  428. package/web/.next/server/chunks/ssr/_9869d3da._.js.map +0 -1
  429. package/web/.next/server/chunks/ssr/_a3721140._.js.map +0 -1
  430. package/web/.next/server/chunks/ssr/_cc1243e6._.js +0 -3
  431. package/web/.next/server/chunks/ssr/_cc1243e6._.js.map +0 -1
  432. package/web/.next/server/chunks/ssr/_e3411387._.js +0 -9
  433. package/web/.next/server/chunks/ssr/_e3411387._.js.map +0 -1
  434. package/web/.next/server/chunks/ssr/_f64ffec0._.js +0 -4
  435. package/web/.next/server/chunks/ssr/_f64ffec0._.js.map +0 -1
  436. package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js.map +0 -1
  437. package/web/.next/server/chunks/ssr/node_modules__pnpm_28388798._.js +0 -3
  438. package/web/.next/server/chunks/ssr/node_modules__pnpm_28388798._.js.map +0 -1
  439. package/web/.next/server/chunks/ssr/node_modules__pnpm_ae1705ef._.js +0 -3
  440. package/web/.next/server/chunks/ssr/node_modules__pnpm_ae1705ef._.js.map +0 -1
  441. package/web/.next/server/chunks/ssr/src_presentation_web_53fa3010._.js +0 -3
  442. package/web/.next/static/chunks/2c1ff62df9b34313.js +0 -1
  443. package/web/.next/static/chunks/3005583e819fc4fc.js +0 -1
  444. package/web/.next/static/chunks/333c7873f6b17ef1.js +0 -1
  445. package/web/.next/static/chunks/3b3f8c4f6c36a7ba.js +0 -1
  446. package/web/.next/static/chunks/43e0eea352eb5106.js +0 -5
  447. package/web/.next/static/chunks/5420560352333486.js +0 -1
  448. package/web/.next/static/chunks/62fa33876b0964a4.js +0 -1
  449. package/web/.next/static/chunks/6db2addb5e13e372.js +0 -1
  450. package/web/.next/static/chunks/886d0385ca1d4484.js +0 -1
  451. package/web/.next/static/chunks/8e52a649c3f6bdf4.js +0 -1
  452. package/web/.next/static/chunks/a02fc9467a585a1f.js +0 -2
  453. package/web/.next/static/chunks/cdb51cfd682387d2.js +0 -1
  454. package/web/.next/static/chunks/ed35b4293a81c861.js +0 -9
  455. package/web/.next/static/chunks/ed7fbcdf0b48e735.js +0 -1
  456. package/web/.next/static/chunks/f75142a1b75f1c32.js +0 -1
  457. package/web/.next/static/chunks/fabcd29d488281fa.js +0 -1
  458. package/web/.next/static/chunks/fd925f996c3fa318.js +0 -1
  459. /package/web/.next/server/chunks/{[root-of-the-server]__c7d52490._.js.map → [root-of-the-server]__2b1074db._.js.map} +0 -0
  460. /package/web/.next/static/{w0YQoUPySQy1O9cN91KEk → oWFb73SbPSY-pNucEiCuA}/_buildManifest.js +0 -0
  461. /package/web/.next/static/{w0YQoUPySQy1O9cN91KEk → oWFb73SbPSY-pNucEiCuA}/_clientMiddlewareManifest.json +0 -0
  462. /package/web/.next/static/{w0YQoUPySQy1O9cN91KEk → oWFb73SbPSY-pNucEiCuA}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,24042,64970,e=>{"use strict";var t=e.i(3645);let n=(0,t.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);e.s(["Play",()=>n],24042);let r=(0,t.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",()=>r],64970)},81803,72714,e=>{"use strict";var t=e.i(20314),n=e.i(83428),r=e.i(51251),a=e.i(31777),o=e.i(35364),l=e.i(8361);function i({label:e,onClick:i,loading:u,error:s,icon:d,iconOnly:c=!1,variant:f="outline",size:p="sm"}){let m=(0,l.useSoundAction)("click");return(0,t.jsxs)(o.Button,{variant:f,size:p,"aria-label":e,disabled:u,onClick:()=>{m.play(),i()},className:(0,a.cn)("gap-1.5",s&&"text-destructive hover:text-destructive",!s&&c&&"ghost"===f&&"text-muted-foreground cursor-pointer rounded-full transition-colors hover:text-blue-500"),children:[u?(0,t.jsx)(n.Loader2,{className:"size-4 animate-spin"}):s?(0,t.jsx)(r.CircleAlert,{className:"size-4"}):(0,t.jsx)(d,{className:"size-4"}),c?null:e]})}e.s(["ActionButton",()=>i],72714),e.s([],81803)},99348,17466,45811,e=>{"use strict";let t;var n=e.i(20314),r=e.i(79054),a=e.i(83428),o=e.i(30702),l=e.i(38573),i=e.i(17406),u=e.i(81846),s=e.i(2287),d=e.i(21023);let c=(0,d.createServerReference)("4013f377c3e2aca35756a1ca77ab8baf17736e1df2",d.callServer,void 0,d.findSourceMapURL,"getDeploymentLogs");function f({open:e,onOpenChange:t,targetId:a}){let{logs:o,isConnected:l}=function(e){let[t,n]=(0,r.useState)([]),[a,o]=(0,r.useState)(!1),l=(0,r.useRef)(null),i=(0,r.useCallback)(()=>{l.current&&(l.current.close(),l.current=null),o(!1)},[]);return(0,r.useEffect)(()=>{if(!e){n([]),o(!1);return}c(e).then(e=>{e&&n(e)}).catch(()=>{});let t=new EventSource(`/api/deployment-logs?targetId=${e}`);return l.current=t,t.onopen=()=>{o(!0)},t.addEventListener("log",e=>{let t=JSON.parse(e.data);n(e=>[...e,t])}),t.onerror=()=>{o(!1)},()=>{t.close(),l.current=null}},[e,i]),{logs:t,isConnected:a}}(e?a:null);return(0,n.jsx)(p,{open:e,onOpenChange:t,logs:o,isConnected:l})}function p({open:e,onOpenChange:t,logs:a,isConnected:o}){let i=(0,r.useRef)(null),u=(0,r.useRef)(!0),d=(0,r.useCallback)(()=>{let e=i.current;e&&(u.current=e.scrollTop+e.clientHeight>=e.scrollHeight-50)},[]);return(0,r.useEffect)(()=>{u.current&&i.current&&(i.current.scrollTop=i.current.scrollHeight)},[a]),(0,n.jsx)(s.Dialog,{open:e,onOpenChange:t,children:(0,n.jsxs)(s.DialogContent,{className:"flex h-[calc(100vh-48px)] max-h-[calc(100vh-48px)] w-full max-w-[calc(100vw-48px)] flex-col gap-0 bg-zinc-950 p-0 text-zinc-100 sm:rounded-lg","aria-describedby":void 0,children:[(0,n.jsxs)(s.DialogHeader,{className:"flex flex-row items-center justify-between border-b border-zinc-800 px-4 py-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(l.Terminal,{className:"h-4 w-4 text-zinc-400"}),(0,n.jsx)(s.DialogTitle,{className:"text-sm font-medium text-zinc-100",children:"Server Logs"})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 pr-8",children:[(0,n.jsx)("span",{className:`inline-block h-2 w-2 rounded-full ${o?"bg-green-500":"bg-zinc-500"}`}),(0,n.jsx)("span",{className:"text-xs text-zinc-400",children:o?"Connected":"Disconnected"})]})]}),(0,n.jsxs)("div",{ref:i,onScroll:d,className:"flex-1 overflow-auto p-4 font-mono text-sm leading-relaxed",children:[0===a.length?(0,n.jsx)("p",{className:"text-zinc-500",children:"Waiting for log output..."}):a.map(e=>(0,n.jsx)(m,{entry:e},`${e.timestamp}-${e.stream}-${e.line}`)),!o&&a.length>0&&(0,n.jsx)("div",{className:"mt-2 border-t border-zinc-800 pt-2 text-zinc-500",children:"[Server stopped]"})]})]})})}function m({entry:e}){return(0,n.jsx)("div",{"data-stream":e.stream,className:"stderr"===e.stream?"text-red-400":"text-zinc-200",children:(0,n.jsx)("span",{className:"break-all whitespace-pre-wrap",children:e.line})})}function g({status:e,url:t,targetId:s}){let[d,c]=(0,r.useState)(!1),p=s&&(e===i.DeploymentState.Booting||e===i.DeploymentState.Ready);switch(e){case i.DeploymentState.Booting:return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(u.Badge,{className:"border-transparent bg-blue-50 text-blue-700 hover:bg-blue-50",children:[(0,n.jsx)(a.Loader2,{className:"mr-1 h-3.5 w-3.5 animate-spin"}),"Starting...",p?(0,n.jsx)("button",{type:"button","aria-label":"View server logs",className:"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-blue-100",onClick:e=>{e.stopPropagation(),c(!0)},children:(0,n.jsx)(l.Terminal,{className:"h-3 w-3"})}):null]}),p?(0,n.jsx)(f,{open:d,onOpenChange:c,targetId:s}):null]});case i.DeploymentState.Ready:return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(u.Badge,{className:"border-transparent bg-green-50 text-green-700 hover:bg-green-50",children:[(0,n.jsx)("span",{className:"mr-1 inline-block h-2 w-2 rounded-full bg-green-500"}),t?(0,n.jsxs)("a",{href:t,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 hover:underline",onClick:e=>e.stopPropagation(),children:[t,(0,n.jsx)(o.ExternalLink,{className:"h-3 w-3"})]}):"Ready",p?(0,n.jsx)("button",{type:"button","aria-label":"View server logs",className:"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-green-100",onClick:e=>{e.stopPropagation(),c(!0)},children:(0,n.jsx)(l.Terminal,{className:"h-3 w-3"})}):null]}),p?(0,n.jsx)(f,{open:d,onOpenChange:c,targetId:s}):null]});default:return null}}e.s(["DeploymentStatusBadge",()=>g],17466),e.s([],99348);var h=e.i(48249),v=e.i(567);let w=r.default.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),y=()=>{let e=r.default.useContext(w);if(!e)throw Error("useDrawerContext must be used within a Drawer.Root");return e};function b(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function x(){return R(/^iPhone/)||R(/^iPad/)||R(/^Mac/)&&navigator.maxTouchPoints>1}function R(e){return"u">typeof window&&null!=window.navigator?e.test(window.navigator.platform):void 0}!function(e){if(!e||"u"<typeof document)return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}("[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\n[data-state=closed]\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}");let C="u">typeof window?r.useLayoutEffect:r.useEffect;function j(...e){return(...t)=>{for(let n of e)"function"==typeof n&&n(...t)}}let D="u">typeof document&&window.visualViewport;function T(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function E(e){for(T(e)&&(e=e.parentElement);e&&!T(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}let S=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]),$=0;function N(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function k(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let t=E(e);if(t!==document.documentElement&&t!==document.body&&t!==e){let n=t.getBoundingClientRect().top,r=e.getBoundingClientRect().top;e.getBoundingClientRect().bottom>t.getBoundingClientRect().bottom+24&&(t.scrollTop+=r-n)}e=t.parentElement}}function P(e){return e instanceof HTMLInputElement&&!S.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function M(...e){return r.useCallback(function(...e){return t=>e.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}(...e),e)}let O=new WeakMap;function z(e,t,n=!1){if(!e||!(e instanceof HTMLElement))return;let r={};Object.entries(t).forEach(([t,n])=>{t.startsWith("--")?e.style.setProperty(t,n):(r[t]=e.style[t],e.style[t]=n)}),n||O.set(e,r)}let I=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function L(e,t){if(!e)return null;let n=window.getComputedStyle(e),r=n.transform||n.webkitTransform||n.mozTransform,a=r.match(/^matrix3d\((.+)\)$/);return a?parseFloat(a[1].split(", ")[I(t)?13:12]):(a=r.match(/^matrix\((.+)\)$/))?parseFloat(a[1].split(", ")[I(t)?5:4]):null}function B(e,t){if(!e)return()=>{};let n=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=n}}let F=[.32,.72,0,1],A="vaul-dragging";function H(e){let t=r.default.useRef(e);return r.default.useEffect(()=>{t.current=e}),r.default.useMemo(()=>(...e)=>null==t.current?void 0:t.current.call(t,...e),[])}function W({prop:e,defaultProp:t,onChange:n=()=>{}}){let[a,o]=function({defaultProp:e,onChange:t}){let n=r.default.useState(e),[a]=n,o=r.default.useRef(a),l=H(t);return r.default.useEffect(()=>{o.current!==a&&(l(a),o.current=a)},[a,o,l]),n}({defaultProp:t,onChange:n}),l=void 0!==e,i=l?e:a,u=H(n);return[i,r.default.useCallback(t=>{if(l){let n="function"==typeof t?t(e):t;n!==e&&u(n)}else o(t)},[l,e,o,u])]}let q=()=>()=>{},Y=null;function U({open:e,onOpenChange:n,children:a,onDrag:o,onRelease:l,snapPoints:i,shouldScaleBackground:u=!1,setBackgroundColorOnScale:s=!0,closeThreshold:d=.25,scrollLockTimeout:c=100,dismissible:f=!0,handleOnly:p=!1,fadeFromIndex:m=i&&i.length-1,activeSnapPoint:g,setActiveSnapPoint:h,fixed:y,modal:R=!0,onClose:T,nested:S,noBodyStyles:M=!1,direction:B="bottom",defaultOpen:H=!1,disablePreventScroll:q=!0,snapToSequentialPoint:U=!1,preventScrollRestoration:X=!1,repositionInputs:V=!0,onAnimationEnd:K,container:J,autoFocus:_=!1}){var G,Q;let[Z=!1,ee]=W({defaultProp:H,prop:e,onChange:e=>{null==n||n(e),e||S||ek(),setTimeout(()=>{null==K||K(e)},500),e&&!R&&"u">typeof window&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),e||(document.body.style.pointerEvents="auto")}}),[et,en]=r.default.useState(!1),[er,ea]=r.default.useState(!1),[eo,el]=r.default.useState(!1),ei=r.default.useRef(null),eu=r.default.useRef(null),es=r.default.useRef(null),ed=r.default.useRef(null),ec=r.default.useRef(null),ef=r.default.useRef(!1),ep=r.default.useRef(null),em=r.default.useRef(0),eg=r.default.useRef(!1),eh=r.default.useRef(!H),ev=r.default.useRef(0),ew=r.default.useRef(null),ey=r.default.useRef((null==(G=ew.current)?void 0:G.getBoundingClientRect().height)||0),eb=r.default.useRef((null==(Q=ew.current)?void 0:Q.getBoundingClientRect().width)||0),ex=r.default.useRef(0),eR=r.default.useCallback(e=>{i&&e===eE.length-1&&(eu.current=new Date)},[]),{activeSnapPoint:eC,activeSnapPointIndex:ej,setActiveSnapPoint:eD,onRelease:eT,snapPointsOffset:eE,onDrag:eS,shouldFade:e$,getPercentageDragged:eN}=function({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:n,drawerRef:a,overlayRef:o,fadeFromIndex:l,onSnapPointChange:i,direction:u="bottom",container:s,snapToSequentialPoint:d}){let[c,f]=W({prop:e,defaultProp:null==n?void 0:n[0],onChange:t}),[p,m]=r.default.useState("u">typeof window?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);r.default.useEffect(()=>{function e(){m({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let g=r.default.useMemo(()=>c===(null==n?void 0:n[n.length-1])||null,[n,c]),h=r.default.useMemo(()=>{var e;return null!=(e=null==n?void 0:n.findIndex(e=>e===c))?e:null},[n,c]),v=n&&n.length>0&&(l||0===l)&&!Number.isNaN(l)&&n[l]===c||!n,w=r.default.useMemo(()=>{var e;let t=s?{width:s.getBoundingClientRect().width,height:s.getBoundingClientRect().height}:"u">typeof window?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};return null!=(e=null==n?void 0:n.map(e=>{let n="string"==typeof e,r=0;if(n&&(r=parseInt(e,10)),I(u)){let a=n?r:p?e*t.height:0;return p?"bottom"===u?t.height-a:-t.height+a:a}let a=n?r:p?e*t.width:0;return p?"right"===u?t.width-a:-t.width+a:a}))?e:[]},[n,p,s]),y=r.default.useMemo(()=>null!==h?null==w?void 0:w[h]:null,[w,h]),b=r.default.useCallback(e=>{var t;let r=null!=(t=null==w?void 0:w.findIndex(t=>t===e))?t:null;i(r),z(a.current,{transition:`transform 0.5s cubic-bezier(${F.join(",")})`,transform:I(u)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`}),w&&r!==w.length-1&&void 0!==l&&r!==l&&r<l?z(o.current,{transition:`opacity 0.5s cubic-bezier(${F.join(",")})`,opacity:"0"}):z(o.current,{transition:`opacity 0.5s cubic-bezier(${F.join(",")})`,opacity:"1"}),f(null==n?void 0:n[Math.max(r,0)])},[a.current,n,w,l,o,f]);return r.default.useEffect(()=>{if(c||e){var t;let r=null!=(t=null==n?void 0:n.findIndex(t=>t===e||t===c))?t:-1;w&&-1!==r&&"number"==typeof w[r]&&b(w[r])}},[c,e,n,w,b]),{isLastSnapPoint:g,activeSnapPoint:c,shouldFade:v,getPercentageDragged:function(e,t){if(!n||"number"!=typeof h||!w||void 0===l)return null;let r=h===l-1;if(h>=l&&t)return 0;if(r&&!t)return 1;if(!v&&!r)return null;let a=r?h+1:h-1,o=e/Math.abs(r?w[a]-w[a-1]:w[a+1]-w[a]);return r?1-o:o},setActiveSnapPoint:f,activeSnapPointIndex:h,onRelease:function({draggedDistance:e,closeDrawer:t,velocity:r,dismissible:a}){if(void 0===l)return;let i="bottom"===u||"right"===u?(null!=y?y:0)-e:(null!=y?y:0)+e,s=h===l-1,c=0===h,f=e>0;if(s&&z(o.current,{transition:`opacity 0.5s cubic-bezier(${F.join(",")})`}),!d&&r>2&&!f)return void(a?t():b(w[0]));if(!d&&r>2&&f&&w&&n)return void b(w[n.length-1]);let p=null==w?void 0:w.reduce((e,t)=>"number"!=typeof e||"number"!=typeof t?e:Math.abs(t-i)<Math.abs(e-i)?t:e),m=I(u)?window.innerHeight:window.innerWidth;if(r>.4&&Math.abs(e)<.4*m){let e=f?1:-1;return e>0&&g&&n?void b(w[n.length-1]):void(c&&e<0&&a&&t(),null===h||b(w[h+e]))}b(p)},onDrag:function({draggedDistance:e}){if(null===y)return;let t="bottom"===u||"right"===u?y-e:y+e;("bottom"===u||"right"===u)&&t<w[w.length-1]||("top"===u||"left"===u)&&t>w[w.length-1]||z(a.current,{transform:I(u)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})},snapPointsOffset:w}}({snapPoints:i,activeSnapPointProp:g,setActiveSnapPointProp:h,drawerRef:ew,fadeFromIndex:m,overlayRef:ei,onSnapPointChange:eR,direction:B,container:J,snapToSequentialPoint:U});!function(e={}){let{isDisabled:n}=e;C(()=>{if(!n){var e,r,a;let n,o,l,i,u,s,d;return 1==++$&&x()&&(l=0,i=window.pageXOffset,u=window.pageYOffset,s=j((e=document.documentElement,r="paddingRight",a=`${window.innerWidth-document.documentElement.clientWidth}px`,n=e.style[r],e.style[r]=a,()=>{e.style[r]=n})),window.scrollTo(0,0),d=j(N(document,"touchstart",e=>{((o=E(e.target))!==document.documentElement||o!==document.body)&&(l=e.changedTouches[0].pageY)},{passive:!1,capture:!0}),N(document,"touchmove",e=>{if(!o||o===document.documentElement||o===document.body)return void e.preventDefault();let t=e.changedTouches[0].pageY,n=o.scrollTop,r=o.scrollHeight-o.clientHeight;0!==r&&((n<=0&&t>l||n>=r&&t<l)&&e.preventDefault(),l=t)},{passive:!1,capture:!0}),N(document,"touchend",e=>{let t=e.target;P(t)&&t!==document.activeElement&&(e.preventDefault(),t.style.transform="translateY(-2000px)",t.focus(),requestAnimationFrame(()=>{t.style.transform=""}))},{passive:!1,capture:!0}),N(document,"focus",e=>{let t=e.target;P(t)&&(t.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{t.style.transform="",D&&(D.height<window.innerHeight?requestAnimationFrame(()=>{k(t)}):D.addEventListener("resize",()=>k(t),{once:!0}))}))},!0),N(window,"scroll",()=>{window.scrollTo(0,0)})),t=()=>{s(),d(),window.scrollTo(i,u)}),()=>{0==--$&&(null==t||t())}}},[n])}({isDisabled:!Z||er||!R||eo||!et||!V||!q});let{restorePositionSetting:ek}=function({isOpen:e,modal:t,nested:n,hasBeenOpened:a,preventScrollRestoration:o,noBodyStyles:l}){let[i,u]=r.default.useState(()=>"u">typeof window?window.location.href:""),s=r.default.useRef(0),d=r.default.useCallback(()=>{if(b()&&null===Y&&e&&!l){Y={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};let{scrollX:e,innerHeight:t}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-s.current}px`,left:`${-e}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{let e=t-window.innerHeight;e&&s.current>=t&&(document.body.style.top=`${-(s.current+e)}px`)}),300)}},[e]),c=r.default.useCallback(()=>{if(b()&&null!==Y&&!l){let e=-parseInt(document.body.style.top,10),t=-parseInt(document.body.style.left,10);Object.assign(document.body.style,Y),window.requestAnimationFrame(()=>{o&&i!==window.location.href?u(window.location.href):window.scrollTo(t,e)}),Y=null}},[i]);return r.default.useEffect(()=>{function e(){s.current=window.scrollY}return e(),window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}},[]),r.default.useEffect(()=>{if(t)return()=>{"u"<typeof document||document.querySelector("[data-vaul-drawer]")||c()}},[t,c]),r.default.useEffect(()=>{!n&&a&&(e?(window.matchMedia("(display-mode: standalone)").matches||d(),t||window.setTimeout(()=>{c()},500)):c())},[e,a,i,t,n,d,c]),{restorePositionSetting:c}}({isOpen:Z,modal:R,nested:null!=S&&S,hasBeenOpened:et,preventScrollRestoration:X,noBodyStyles:M});function eP(){return(window.innerWidth-26)/window.innerWidth}function eM(e,t){var n;let r=e,a=null==(n=window.getSelection())?void 0:n.toString(),o=ew.current?L(ew.current,B):null,l=new Date;if("SELECT"===r.tagName||r.hasAttribute("data-vaul-no-drag")||r.closest("[data-vaul-no-drag]"))return!1;if("right"===B||"left"===B)return!0;if(eu.current&&l.getTime()-eu.current.getTime()<500)return!1;if(null!==o&&("bottom"===B?o>0:o<0))return!0;if(a&&a.length>0)return!1;if(ec.current&&l.getTime()-ec.current.getTime()<c&&0===o||t)return ec.current=l,!1;for(;r;){if(r.scrollHeight>r.clientHeight){if(0!==r.scrollTop)return ec.current=new Date,!1;if("dialog"===r.getAttribute("role"))break}r=r.parentNode}return!0}function eO(e){er&&ew.current&&(ew.current.classList.remove(A),ef.current=!1,ea(!1),ed.current=new Date),null==T||T(),e||ee(!1),setTimeout(()=>{i&&eD(i[0])},500)}function ez(){if(!ew.current)return;let e=document.querySelector("[data-vaul-drawer-wrapper]"),t=L(ew.current,B);z(ew.current,{transform:"translate3d(0, 0, 0)",transition:`transform 0.5s cubic-bezier(${F.join(",")})`}),z(ei.current,{transition:`opacity 0.5s cubic-bezier(${F.join(",")})`,opacity:"1"}),u&&t&&t>0&&Z&&z(e,{borderRadius:"8px",overflow:"hidden",...I(B)?{transform:`scale(${eP()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${eP()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${F.join(",")})`},!0)}return r.default.useEffect(()=>{window.requestAnimationFrame(()=>{eh.current=!0})},[]),r.default.useEffect(()=>{var e;function t(){if(ew.current&&V&&(P(document.activeElement)||eg.current)){var e;let t=(null==(e=window.visualViewport)?void 0:e.height)||0,n=window.innerHeight,r=n-t,a=ew.current.getBoundingClientRect().height||0;ex.current||(ex.current=a);let o=ew.current.getBoundingClientRect().top;if(Math.abs(ev.current-r)>60&&(eg.current=!eg.current),i&&i.length>0&&eE&&ej&&(r+=eE[ej]||0),ev.current=r,a>t||eg.current){let e=ew.current.getBoundingClientRect().height,l=e;e>t&&(l=t-(a>.8*n?o:26)),y?ew.current.style.height=`${e-Math.max(r,0)}px`:ew.current.style.height=`${Math.max(l,t-o)}px`}else{let e;e=navigator.userAgent,"u">typeof window&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))||(ew.current.style.height=`${ex.current}px`)}i&&i.length>0&&!eg.current?ew.current.style.bottom="0px":ew.current.style.bottom=`${Math.max(r,0)}px`}}return null==(e=window.visualViewport)||e.addEventListener("resize",t),()=>{var e;return null==(e=window.visualViewport)?void 0:e.removeEventListener("resize",t)}},[ej,i,eE]),r.default.useEffect(()=>(Z&&(z(document.documentElement,{scrollBehavior:"auto"}),eu.current=new Date),()=>{!function(e,t){if(!e||!(e instanceof HTMLElement))return;let n=O.get(e);n&&(e.style[t]=n[t])}(document.documentElement,"scrollBehavior")}),[Z]),r.default.useEffect(()=>{R||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[R]),r.default.createElement(v.Root,{defaultOpen:H,onOpenChange:e=>{(f||e)&&(e?en(!0):eO(!0),ee(e))},open:Z},r.default.createElement(w.Provider,{value:{activeSnapPoint:eC,snapPoints:i,setActiveSnapPoint:eD,drawerRef:ew,overlayRef:ei,onOpenChange:n,onPress:function(e){var t,n;!f&&!i||(!ew.current||ew.current.contains(e.target))&&(ey.current=(null==(t=ew.current)?void 0:t.getBoundingClientRect().height)||0,eb.current=(null==(n=ew.current)?void 0:n.getBoundingClientRect().width)||0,ea(!0),es.current=new Date,x()&&window.addEventListener("touchend",()=>ef.current=!1,{once:!0}),e.target.setPointerCapture(e.pointerId),em.current=I(B)?e.pageY:e.pageX)},onRelease:function(e){var t,n;if(!er||!ew.current)return;ew.current.classList.remove(A),ef.current=!1,ea(!1),ed.current=new Date;let r=L(ew.current,B);if(!e||!eM(e.target,!1)||!r||Number.isNaN(r)||null===es.current)return;let a=ed.current.getTime()-es.current.getTime(),o=em.current-(I(B)?e.pageY:e.pageX),u=Math.abs(o)/a;if(u>.05&&(el(!0),setTimeout(()=>{el(!1)},200)),i){eT({draggedDistance:o*("bottom"===B||"right"===B?1:-1),closeDrawer:eO,velocity:u,dismissible:f}),null==l||l(e,!0);return}if("bottom"===B||"right"===B?o>0:o<0){ez(),null==l||l(e,!0);return}if(u>.4){eO(),null==l||l(e,!1);return}let s=Math.min(null!=(t=ew.current.getBoundingClientRect().height)?t:0,window.innerHeight),c=Math.min(null!=(n=ew.current.getBoundingClientRect().width)?n:0,window.innerWidth);if(Math.abs(r)>=("left"===B||"right"===B?c:s)*d){eO(),null==l||l(e,!1);return}null==l||l(e,!0),ez()},onDrag:function(e){if(ew.current&&er){let t="bottom"===B||"right"===B?1:-1,n=(em.current-(I(B)?e.pageY:e.pageX))*t,r=n>0,a=i&&!f&&!r;if(a&&0===ej)return;let l=Math.abs(n),s=document.querySelector("[data-vaul-drawer-wrapper]"),d=l/("bottom"===B||"top"===B?ey.current:eb.current),c=eN(l,r);if(null!==c&&(d=c),a&&d>=1||!ef.current&&!eM(e.target,r))return;if(ew.current.classList.add(A),ef.current=!0,z(ew.current,{transition:"none"}),z(ei.current,{transition:"none"}),i&&eS({draggedDistance:n}),r&&!i){let e=Math.min(-(8*(Math.log(n+1)-2)*1),0)*t;z(ew.current,{transform:I(B)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`});return}let p=1-d;if((e$||m&&ej===m-1)&&(null==o||o(e,d),z(ei.current,{opacity:`${p}`,transition:"none"},!0)),s&&ei.current&&u){let e=Math.min(eP()+d*(1-eP()),1),t=8-8*d,n=Math.max(0,14-14*d);z(s,{borderRadius:`${t}px`,transform:I(B)?`scale(${e}) translate3d(0, ${n}px, 0)`:`scale(${e}) translate3d(${n}px, 0, 0)`,transition:"none"},!0)}if(!i){let e=l*t;z(ew.current,{transform:I(B)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})}}},dismissible:f,shouldAnimate:eh,handleOnly:p,isOpen:Z,isDragging:er,shouldFade:e$,closeDrawer:eO,onNestedDrag:function(e,t){if(t<0)return;let n=(window.innerWidth-16)/window.innerWidth,r=n+t*(1-n),a=-16+16*t;z(ew.current,{transform:I(B)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`,transition:"none"})},onNestedOpenChange:function(e){let t=e?(window.innerWidth-16)/window.innerWidth:1,n=e?-16:0;ep.current&&window.clearTimeout(ep.current),z(ew.current,{transition:`transform 0.5s cubic-bezier(${F.join(",")})`,transform:I(B)?`scale(${t}) translate3d(0, ${n}px, 0)`:`scale(${t}) translate3d(${n}px, 0, 0)`}),!e&&ew.current&&(ep.current=setTimeout(()=>{let e=L(ew.current,B);z(ew.current,{transition:"none",transform:I(B)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})},500))},onNestedRelease:function(e,t){let n=I(B)?window.innerHeight:window.innerWidth,r=t?(n-16)/n:1,a=t?-16:0;t&&z(ew.current,{transition:`transform 0.5s cubic-bezier(${F.join(",")})`,transform:I(B)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`})},keyboardIsOpen:eg,modal:R,snapPointsOffset:eE,activeSnapPointIndex:ej,direction:B,shouldScaleBackground:u,setBackgroundColorOnScale:s,noBodyStyles:M,container:J,autoFocus:_}},a))}let X=r.default.forwardRef(function({...e},t){let{overlayRef:n,snapPoints:a,onRelease:o,shouldFade:l,isOpen:i,modal:u,shouldAnimate:s}=y(),d=M(t,n),c=a&&a.length>0;if(!u)return null;let f=r.default.useCallback(e=>o(e),[o]);return r.default.createElement(v.Overlay,{onMouseUp:f,ref:d,"data-vaul-overlay":"","data-vaul-snap-points":i&&c?"true":"false","data-vaul-snap-points-overlay":i&&l?"true":"false","data-vaul-animate":(null==s?void 0:s.current)?"true":"false",...e})});X.displayName="Drawer.Overlay";let V=r.default.forwardRef(function({onPointerDownOutside:e,style:t,onOpenAutoFocus:n,...a},o){let{drawerRef:l,onPress:i,onRelease:u,onDrag:s,keyboardIsOpen:d,snapPointsOffset:c,activeSnapPointIndex:f,modal:p,isOpen:m,direction:g,snapPoints:h,container:w,handleOnly:b,shouldAnimate:x,autoFocus:R}=y(),[C,j]=r.default.useState(!1),D=M(o,l),T=r.default.useRef(null),E=r.default.useRef(null),S=r.default.useRef(!1),$=h&&h.length>0;function N(e){T.current=null,S.current=!1,u(e)}return!function(){let{direction:e,isOpen:t,shouldScaleBackground:n,setBackgroundColorOnScale:a,noBodyStyles:o}=y(),l=r.default.useRef(null),i=(0,r.useMemo)(()=>document.body.style.backgroundColor,[]);function u(){return(window.innerWidth-26)/window.innerWidth}r.default.useEffect(()=>{if(t&&n){l.current&&clearTimeout(l.current);let t=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!t)return;!function(...e){}(a&&!o?B(document.body,{background:"black"}):q,B(t,{transformOrigin:I(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${F.join(",")})`}));let n=B(t,{borderRadius:"8px",overflow:"hidden",...I(e)?{transform:`scale(${u()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${u()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{n(),l.current=window.setTimeout(()=>{i?document.body.style.background=i:document.body.style.removeProperty("background")},500)}}},[t,n,i])}(),r.default.useEffect(()=>{$&&window.requestAnimationFrame(()=>{j(!0)})},[]),r.default.createElement(v.Content,{"data-vaul-drawer-direction":g,"data-vaul-drawer":"","data-vaul-delayed-snap-points":C?"true":"false","data-vaul-snap-points":m&&$?"true":"false","data-vaul-custom-container":w?"true":"false","data-vaul-animate":(null==x?void 0:x.current)?"true":"false",...a,ref:D,style:c&&c.length>0?{"--snap-point-height":`${c[null!=f?f:0]}px`,...t}:t,onPointerDown:e=>{b||(null==a.onPointerDown||a.onPointerDown.call(a,e),T.current={x:e.pageX,y:e.pageY},i(e))},onOpenAutoFocus:e=>{null==n||n(e),R||e.preventDefault()},onPointerDownOutside:t=>{(null==e||e(t),!p||t.defaultPrevented)?t.preventDefault():d.current&&(d.current=!1)},onFocusOutside:e=>{if(!p)return void e.preventDefault()},onPointerMove:e=>{if(E.current=e,b||(null==a.onPointerMove||a.onPointerMove.call(a,e),!T.current))return;let t=e.pageY-T.current.y,n=e.pageX-T.current.x,r="touch"===e.pointerType?10:2;((e,t,n=0)=>{if(S.current)return!0;let r=Math.abs(e.y),a=Math.abs(e.x),o=a>r,l=["bottom","right"].includes(t)?1:-1;if("left"===t||"right"===t){if(!(e.x*l<0)&&a>=0&&a<=n)return o}else if(!(e.y*l<0)&&r>=0&&r<=n)return!o;return S.current=!0,!0})({x:n,y:t},g,r)?s(e):(Math.abs(n)>r||Math.abs(t)>r)&&(T.current=null)},onPointerUp:e=>{null==a.onPointerUp||a.onPointerUp.call(a,e),T.current=null,S.current=!1,u(e)},onPointerOut:e=>{null==a.onPointerOut||a.onPointerOut.call(a,e),N(E.current)},onContextMenu:e=>{null==a.onContextMenu||a.onContextMenu.call(a,e),E.current&&N(E.current)}})});V.displayName="Drawer.Content";let K=r.default.forwardRef(function({preventCycle:e=!1,children:t,...n},a){let{closeDrawer:o,isDragging:l,snapPoints:i,activeSnapPoint:u,setActiveSnapPoint:s,dismissible:d,handleOnly:c,isOpen:f,onPress:p,onDrag:m}=y(),g=r.default.useRef(null),h=r.default.useRef(!1);function v(){g.current&&window.clearTimeout(g.current),h.current=!1}return r.default.createElement("div",{onClick:function(){h.current?v():window.setTimeout(()=>{!function(){if(l||e||h.current)return v();if(v(),!i||0===i.length){d||o();return}if(u===i[i.length-1]&&d)return o();let t=i.findIndex(e=>e===u);-1===t||s(i[t+1])}()},120)},onPointerCancel:v,onPointerDown:e=>{c&&p(e),g.current=window.setTimeout(()=>{h.current=!0},250)},onPointerMove:e=>{c&&m(e)},ref:a,"data-vaul-drawer-visible":f?"true":"false","data-vaul-handle":"","aria-hidden":"true",...n},r.default.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},t))});K.displayName="Drawer.Handle";let J={Root:U,NestedRoot:function({onDrag:e,onOpenChange:t,open:n,...a}){let{onNestedDrag:o,onNestedOpenChange:l,onNestedRelease:i}=y();if(!o)throw Error("Drawer.NestedRoot must be placed in another drawer");return r.default.createElement(U,{nested:!0,open:n,onClose:()=>{l(!1)},onDrag:(t,n)=>{o(t,n),null==e||e(t,n)},onOpenChange:e=>{e&&l(e),null==t||t(e)},onRelease:i,...a})},Content:V,Overlay:X,Trigger:v.Trigger,Portal:function(e){let t=y(),{container:n=t.container,...a}=e;return r.default.createElement(v.Portal,{container:n,...a})},Handle:K,Close:v.Close,Title:v.Title,Description:v.Description};var _=e.i(31777);function G({...e}){return(0,n.jsx)(J.Root,{"data-slot":"drawer",...e})}function Q({...e}){return(0,n.jsx)(J.Portal,{"data-slot":"drawer-portal",...e})}function Z({className:e,...t}){return(0,n.jsx)(J.Overlay,{"data-slot":"drawer-overlay",className:(0,_.cn)("fixed inset-0 z-50 bg-black/50",e),...t})}function ee({className:e,children:t,direction:r="bottom",showCloseButton:a=!0,...o}){return(0,n.jsx)(Q,{children:(0,n.jsxs)(J.Content,{"data-slot":"drawer-content",className:(0,_.cn)("bg-background fixed z-50 flex flex-col shadow-lg","bottom"===r&&"inset-x-0 bottom-0 mb-24 rounded-t-lg border-t","top"===r&&"inset-x-0 top-0 mt-24 rounded-b-lg border-b","right"===r&&"inset-y-0 right-0 h-full w-3/4 border-l","left"===r&&"inset-y-0 left-0 h-full w-3/4 border-r",e),style:{"--initial-transform":"right"===r?"calc(100% + 8px)":"left"===r||"top"===r?"calc(-100% - 8px)":"calc(100% + 8px)",userSelect:"text",...o.style??{}},...o,children:[t,a?(0,n.jsxs)(J.Close,{className:"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,n.jsx)(h.XIcon,{className:"size-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Close"})]}):null]})})}function et({className:e,...t}){return(0,n.jsx)("div",{"data-slot":"drawer-header",className:(0,_.cn)("flex flex-col gap-1.5 p-4",e),...t})}function en({className:e,...t}){return(0,n.jsx)("div",{"data-slot":"drawer-footer",className:(0,_.cn)("mt-auto flex flex-col gap-2 p-4",e),...t})}function er({className:e,...t}){return(0,n.jsx)(J.Title,{"data-slot":"drawer-title",className:(0,_.cn)("text-foreground font-semibold",e),...t})}function ea({className:e,...t}){return(0,n.jsx)(J.Description,{"data-slot":"drawer-description",className:(0,_.cn)("text-muted-foreground text-sm",e),...t})}e.s(["Drawer",()=>G,"DrawerContent",()=>ee,"DrawerDescription",()=>ea,"DrawerFooter",()=>en,"DrawerHeader",()=>et,"DrawerOverlay",()=>Z,"DrawerTitle",()=>er],45811)},8537,e=>{"use strict";var t=e.i(79054),n=e.i(18354),r=e.i(21023);let a=(0,r.createServerReference)("40d37536caf015fd63b6a39841650d24f835a7c12b",r.callServer,void 0,r.findSourceMapURL,"deployFeature"),o=(0,r.createServerReference)("40cee5516320130ac77e9d0af3de09ef382b1097c5",r.callServer,void 0,r.findSourceMapURL,"deployRepository"),l=(0,r.createServerReference)("400572c8a4db47a74c400b51bda14a9dc29eea6936",r.callServer,void 0,r.findSourceMapURL,"stopDeployment"),i=(0,r.createServerReference)("40ef380493cba58d532a8e29ea2fb84400033c10f6",r.callServer,void 0,r.findSourceMapURL,"getDeploymentStatus"),u=(0,n.createLogger)("[useDeployAction]");function s(e){let[n,r]=(0,t.useState)(!1),[s,d]=(0,t.useState)(!1),[c,f]=(0,t.useState)(null),[p,m]=(0,t.useState)(null),[g,h]=(0,t.useState)(null),v=(0,t.useRef)(null),w=(0,t.useRef)(!0),y=(0,t.useRef)(p);(0,t.useEffect)(()=>{y.current=p},[p]),(0,t.useEffect)(()=>(w.current=!0,()=>{w.current=!1}),[]),(0,t.useEffect)(()=>{if(!e)return;let t=!1;return(async()=>{try{let n=await i(e.targetId);if(t||!w.current)return;n&&"Stopped"!==n.state&&(u.info(`mount recovery: "${e.targetId}" state=${n.state}, url=${n.url}`),m(n.state),h(n.url),x(e.targetId))}catch{u.debug(`mount recovery failed for "${e.targetId}" — ignoring`)}})(),()=>{t=!0}},[e?.targetId]),(0,t.useEffect)(()=>()=>{v.current&&clearInterval(v.current)},[]);let b=(0,t.useCallback)(()=>{v.current&&(u.debug("stopping polling"),clearInterval(v.current),v.current=null)},[]),x=(0,t.useCallback)(e=>{b(),u.debug(`starting polling for "${e}" every 3000ms`),v.current=setInterval(async()=>{let t;if(!w.current)return void b();try{t=await i(e)}catch(t){u.warn(`poll fetch failed for "${e}":`,t),w.current&&(m(null),h(null),b());return}w.current&&(t&&"Stopped"!==t.state?(t.state!==y.current&&u.info(`poll state changed: ${y.current} → ${t.state}, url=${t.url}`),m(t.state),h(t.url)):(u.info(`poll result: ${t?`state=${t.state}`:"null (deployment gone)"} — stopping poll`),m(null),h(null),b()))},3e3)},[b]);(0,t.useEffect)(()=>{if(!e||null!==p)return;let t=setInterval(async()=>{if(w.current)try{let t=await i(e.targetId);if(!w.current)return;t&&"Stopped"!==t.state&&(u.info(`idle poll: "${e.targetId}" state=${t.state}, url=${t.url}`),m(t.state),h(t.url),x(e.targetId))}catch{}},5e3);return()=>clearInterval(t)},[e,p,x]);let R=(0,t.useCallback)(async()=>{if(!e)return void u.warn("deploy() called but input is null — no-op");if(n)return void u.warn("deploy() called but already loading — no-op");u.info(`deploy() — targetType="${e.targetType}", targetId="${e.targetId}", repositoryPath="${e.repositoryPath}"`),r(!0),f(null);try{let t="feature"===e.targetType?await a(e.targetId):await o(e.repositoryPath);if(u.info("server action result:",t),!w.current)return void u.warn("component unmounted after deploy — discarding result");if(t.success)u.info(`deploy succeeded — initial state=${t.state}, starting polling`),m(t.state??null),h(null),x(e.targetId);else{let e=t.error??"An unexpected error occurred";u.warn(`deploy failed: ${e}`),f(e)}}catch(t){if(!w.current)return;let e=t instanceof Error?t.message:"An unexpected error occurred";u.error(`deploy threw exception: ${e}`,t),f(e)}finally{w.current&&r(!1)}},[e,n,x]),C=(0,t.useCallback)(async()=>{if(e&&!s){u.info(`stop() — targetId="${e.targetId}"`),d(!0);try{let t=await l(e.targetId);if(u.info("stop result:",t),!w.current)return;t.success&&(b(),m(null),h(null))}catch(e){u.warn("stop error (non-critical):",e)}finally{w.current&&d(!1)}}},[e,s,b]);return{deploy:R,stop:C,deployLoading:n,stopLoading:s,deployError:c,status:p,url:g}}e.s(["useDeployAction",()=>s],8537)},11495,e=>{"use strict";var t=e.i(20314),n=e.i(79054),r=e.i(48249),a=e.i(24042),o=e.i(64970),l=e.i(94237),i=e.i(31777);e.i(81803);var u=e.i(72714);e.i(99348);var s=e.i(17466),d=e.i(45811),c=e.i(25235),f=e.i(2828),p=e.i(8537),m=e.i(75921);let g=(0,l.cva)("",{variants:{size:{sm:"w-96",md:"w-2xl"}},defaultVariants:{size:"sm"}});function h({open:e,onClose:a,modal:o=!1,dismissOnOutsideClick:l=!1,title:u="Drawer",size:s,header:f,children:p,footer:h,className:w,"data-testid":y,deployTarget:b}){let x=(0,m.useFeatureFlags)(),R=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!e||o)return;let t=e=>{let t=e.target;!document.body.contains(t)||R.current?.contains(t)||t.closest(l?'[role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]':'[data-no-drawer-close], [role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]')||a()};return document.addEventListener("click",t),()=>document.removeEventListener("click",t)},[e,o,a,l]),(0,t.jsxs)(d.Drawer,{direction:"right",modal:o,handleOnly:!0,open:e,onOpenChange:e=>{e||a()},children:[o?(0,t.jsx)(d.DrawerOverlay,{}):null,(0,t.jsxs)(d.DrawerContent,{ref:R,direction:"right",showCloseButton:!1,className:(0,i.cn)(g({size:s}),w),"data-testid":y,onInteractOutside:o?void 0:e=>e.preventDefault(),children:[(0,t.jsx)(d.DrawerTitle,{asChild:!0,children:(0,t.jsx)("span",{className:"sr-only",children:u})}),(0,t.jsx)(d.DrawerDescription,{asChild:!0,children:(0,t.jsx)("span",{className:"sr-only",children:u})}),(0,t.jsxs)("button",{type:"button","aria-label":"Close",onClick:a,className:"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden","data-testid":y?`${y}-close-button`:void 0,children:[(0,t.jsx)(r.XIcon,{className:"size-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]}),f?(0,t.jsx)(d.DrawerHeader,{className:"shrink-0",children:f}):null,f?(0,t.jsx)(c.Separator,{}):null,x.envDeploy&&b?(0,t.jsx)(v,{deployTarget:b}):null,(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:p}),h?(0,t.jsx)(d.DrawerFooter,{className:"shrink-0",children:h}):null]})]})}function v({deployTarget:e}){let n=(0,p.useDeployAction)(e),r="Booting"===n.status||"Ready"===n.status;return(0,t.jsxs)("div",{"data-testid":"base-drawer-deploy-bar",className:"flex items-center gap-2 px-4 pb-3",children:[(0,t.jsx)(f.TooltipProvider,{children:(0,t.jsxs)(f.Tooltip,{children:[(0,t.jsx)(f.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{children:(0,t.jsx)(u.ActionButton,{label:r?"Stop Dev Server":"Start Dev Server",onClick:r?n.stop:n.deploy,loading:n.deployLoading||n.stopLoading,error:!!n.deployError,icon:r?o.Square:a.Play,iconOnly:!0,variant:"outline",size:"icon-sm"})})}),(0,t.jsx)(f.TooltipContent,{children:r?"Stop Dev Server":"Start Dev Server"})]})}),r?(0,t.jsx)(s.DeploymentStatusBadge,{status:n.status,url:n.url,targetId:e.targetId}):null]})}e.s(["BaseDrawer",()=>h])}]);
@@ -1,46 +0,0 @@
1
- $schema: https://json-schema.org/draft/2020-12/schema
2
- $id: ScheduledWorkflow.yaml
3
- type: object
4
- properties:
5
- name:
6
- type: string
7
- description: Unique human-readable name identifying this workflow within the repository
8
- description:
9
- type: string
10
- description: Optional human-readable description of what this workflow does
11
- prompt:
12
- type: string
13
- description: Agent prompt instruction that the AI agent will execute when the workflow runs
14
- toolConstraints:
15
- type: array
16
- items:
17
- type: string
18
- description: Optional allowlist of tool names the workflow agent is permitted to use
19
- cronExpression:
20
- type: string
21
- description: "Cron expression defining the schedule (5-field format: min hour dom month dow)"
22
- timezone:
23
- type: string
24
- description: IANA timezone for cron evaluation (e.g. America/New_York). Defaults to UTC
25
- enabled:
26
- type: boolean
27
- description: Whether the workflow schedule is active. Disabled workflows retain their cron expression but do not auto-execute
28
- lastRunAt:
29
- type: string
30
- format: date-time
31
- description: Timestamp of the most recent execution (manual or scheduled)
32
- nextRunAt:
33
- type: string
34
- format: date-time
35
- description: Calculated timestamp of the next scheduled execution based on cron expression
36
- repositoryPath:
37
- type: string
38
- description: Absolute file system path to the repository this workflow operates on
39
- required:
40
- - name
41
- - prompt
42
- - enabled
43
- - repositoryPath
44
- allOf:
45
- - $ref: SoftDeletableEntity.yaml
46
- description: User-defined reusable automation that runs on demand or on a cron schedule
@@ -1,38 +0,0 @@
1
- $schema: https://json-schema.org/draft/2020-12/schema
2
- $id: WorkflowExecution.yaml
3
- type: object
4
- properties:
5
- workflowId:
6
- $ref: UUID.yaml
7
- description: ID of the ScheduledWorkflow that was executed
8
- triggerType:
9
- $ref: WorkflowTriggerType.yaml
10
- description: How this execution was triggered (manual or scheduled)
11
- status:
12
- $ref: WorkflowExecutionStatus.yaml
13
- description: Current lifecycle status of this execution
14
- startedAt:
15
- type: string
16
- format: date-time
17
- description: Timestamp when the execution started running
18
- completedAt:
19
- type: string
20
- format: date-time
21
- description: Timestamp when the execution completed or failed (null if still running)
22
- durationMs:
23
- type: integer
24
- description: Duration of the execution in milliseconds (null if still running)
25
- outputSummary:
26
- type: string
27
- description: Summary of the execution output (truncated if too long)
28
- errorMessage:
29
- type: string
30
- description: Error message if the execution failed
31
- required:
32
- - workflowId
33
- - triggerType
34
- - status
35
- - startedAt
36
- allOf:
37
- - $ref: BaseEntity.yaml
38
- description: A single execution record for a scheduled workflow run
@@ -1,10 +0,0 @@
1
- $schema: https://json-schema.org/draft/2020-12/schema
2
- $id: WorkflowExecutionStatus.yaml
3
- type: string
4
- enum:
5
- - queued
6
- - running
7
- - completed
8
- - failed
9
- - cancelled
10
- description: Lifecycle status of a workflow execution
@@ -1,7 +0,0 @@
1
- $schema: https://json-schema.org/draft/2020-12/schema
2
- $id: WorkflowTriggerType.yaml
3
- type: string
4
- enum:
5
- - manual
6
- - scheduled
7
- description: How a workflow execution was triggered
@@ -1,66 +0,0 @@
1
- /**
2
- * Workflow Execution Repository Interface
3
- *
4
- * Output port for WorkflowExecution persistence operations.
5
- * Implementations handle database-specific logic (SQLite, etc.).
6
- *
7
- * Following Clean Architecture:
8
- * - Domain and Application layers depend on this interface
9
- * - Infrastructure layer provides concrete implementations
10
- */
11
- import type { WorkflowExecution, WorkflowExecutionStatus } from '../../../../domain/generated/output.js';
12
- /**
13
- * Repository interface for WorkflowExecution entity persistence.
14
- *
15
- * Implementations must:
16
- * - Handle database connection management
17
- * - Provide thread-safe operations
18
- * - Support efficient queries by workflowId and status
19
- * - Support retention cleanup via deleteOlderThan
20
- */
21
- export interface IWorkflowExecutionRepository {
22
- /**
23
- * Create a new execution record.
24
- *
25
- * @param execution - The execution to persist
26
- */
27
- create(execution: WorkflowExecution): Promise<void>;
28
- /**
29
- * Find an execution by its unique ID.
30
- *
31
- * @param id - The execution ID
32
- * @returns The execution or null if not found
33
- */
34
- findById(id: string): Promise<WorkflowExecution | null>;
35
- /**
36
- * Find executions for a specific workflow, ordered by started_at DESC.
37
- *
38
- * @param workflowId - The workflow ID
39
- * @param limit - Optional maximum number of records to return
40
- * @returns Array of executions, most recent first
41
- */
42
- findByWorkflowId(workflowId: string, limit?: number): Promise<WorkflowExecution[]>;
43
- /**
44
- * Find executions with a specific status.
45
- * Used by the scheduler for crash recovery (finding stale 'running' records).
46
- *
47
- * @param status - The execution status to filter by
48
- * @returns Array of matching executions
49
- */
50
- findByStatus(status: WorkflowExecutionStatus): Promise<WorkflowExecution[]>;
51
- /**
52
- * Update an existing execution record.
53
- *
54
- * @param execution - The execution with updated fields
55
- */
56
- update(execution: WorkflowExecution): Promise<void>;
57
- /**
58
- * Delete execution records older than the given date.
59
- * Used for retention cleanup (default: 30 days).
60
- *
61
- * @param date - Delete records with started_at before this date
62
- * @returns The number of records deleted
63
- */
64
- deleteOlderThan(date: Date): Promise<number>;
65
- }
66
- //# sourceMappingURL=workflow-execution-repository.interface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-execution-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,wCAAwC,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAExD;;;;;;OAMG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEnF;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAE5E;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Workflow Execution Repository Interface
3
- *
4
- * Output port for WorkflowExecution persistence operations.
5
- * Implementations handle database-specific logic (SQLite, etc.).
6
- *
7
- * Following Clean Architecture:
8
- * - Domain and Application layers depend on this interface
9
- * - Infrastructure layer provides concrete implementations
10
- */
11
- export {};
@@ -1,81 +0,0 @@
1
- /**
2
- * Workflow Repository Interface
3
- *
4
- * Output port for ScheduledWorkflow persistence operations.
5
- * Implementations handle database-specific logic (SQLite, etc.).
6
- *
7
- * Following Clean Architecture:
8
- * - Domain and Application layers depend on this interface
9
- * - Infrastructure layer provides concrete implementations
10
- */
11
- import type { ScheduledWorkflow } from '../../../../domain/generated/output.js';
12
- /**
13
- * Filters for listing workflows.
14
- */
15
- export interface WorkflowListFilters {
16
- repositoryPath?: string;
17
- enabled?: boolean;
18
- /** When true, include soft-deleted workflows in results. Default: false. */
19
- includeDeleted?: boolean;
20
- }
21
- /**
22
- * Repository interface for ScheduledWorkflow entity persistence.
23
- *
24
- * Implementations must:
25
- * - Handle database connection management
26
- * - Provide thread-safe operations
27
- * - Support query by name + repositoryPath for uniqueness
28
- * - Exclude soft-deleted workflows from queries by default
29
- */
30
- export interface IWorkflowRepository {
31
- /**
32
- * Create a new workflow record.
33
- *
34
- * @param workflow - The workflow to persist
35
- */
36
- create(workflow: ScheduledWorkflow): Promise<void>;
37
- /**
38
- * Find a workflow by its unique ID (excludes soft-deleted).
39
- *
40
- * @param id - The workflow ID
41
- * @returns The workflow or null if not found
42
- */
43
- findById(id: string): Promise<ScheduledWorkflow | null>;
44
- /**
45
- * Find a workflow by name within a repository (excludes soft-deleted).
46
- *
47
- * @param name - The workflow name
48
- * @param repositoryPath - The repository path to scope the search
49
- * @returns The workflow or null if not found
50
- */
51
- findByName(name: string, repositoryPath: string): Promise<ScheduledWorkflow | null>;
52
- /**
53
- * Find all enabled, non-deleted workflows.
54
- * Used by the scheduler service to determine which workflows need evaluation.
55
- *
56
- * @returns Array of enabled workflows
57
- */
58
- findEnabled(): Promise<ScheduledWorkflow[]>;
59
- /**
60
- * List workflows with optional filters.
61
- * Excludes soft-deleted workflows unless includeDeleted is true.
62
- *
63
- * @param filters - Optional filters for repositoryPath, enabled state, and includeDeleted
64
- * @returns Array of matching workflows
65
- */
66
- list(filters?: WorkflowListFilters): Promise<ScheduledWorkflow[]>;
67
- /**
68
- * Update an existing workflow.
69
- *
70
- * @param workflow - The workflow with updated fields
71
- */
72
- update(workflow: ScheduledWorkflow): Promise<void>;
73
- /**
74
- * Soft-delete a workflow by setting deletedAt timestamp.
75
- * Preserves execution history for audit purposes.
76
- *
77
- * @param id - The workflow ID to soft-delete
78
- */
79
- softDelete(id: string): Promise<void>;
80
- }
81
- //# sourceMappingURL=workflow-repository.interface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/workflow-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAExD;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAEpF;;;;;OAKG;IACH,WAAW,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAE5C;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAElE;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Workflow Repository Interface
3
- *
4
- * Output port for ScheduledWorkflow persistence operations.
5
- * Implementations handle database-specific logic (SQLite, etc.).
6
- *
7
- * Following Clean Architecture:
8
- * - Domain and Application layers depend on this interface
9
- * - Infrastructure layer provides concrete implementations
10
- */
11
- export {};
@@ -1,28 +0,0 @@
1
- /**
2
- * Clock Service Interface
3
- *
4
- * Output port for reading the current time. Enables deterministic testing
5
- * of time-dependent logic (cron evaluation, nextRunAt calculation, retention
6
- * cleanup) without relying on system time or Vitest fake timers.
7
- *
8
- * Following Clean Architecture:
9
- * - Application layer depends on this interface
10
- * - Infrastructure layer provides concrete implementation (RealClock)
11
- * - Tests provide MockClock with controllable time
12
- */
13
- /**
14
- * Port interface for reading the current time.
15
- *
16
- * Implementations must:
17
- * - Return a Date representing the current moment
18
- * - Be safe to call frequently (no side effects)
19
- */
20
- export interface IClock {
21
- /**
22
- * Get the current date and time.
23
- *
24
- * @returns A Date representing the current moment
25
- */
26
- now(): Date;
27
- }
28
- //# sourceMappingURL=clock.interface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clock.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/clock.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB;;;;OAIG;IACH,GAAG,IAAI,IAAI,CAAC;CACb"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Clock Service Interface
3
- *
4
- * Output port for reading the current time. Enables deterministic testing
5
- * of time-dependent logic (cron evaluation, nextRunAt calculation, retention
6
- * cleanup) without relying on system time or Vitest fake timers.
7
- *
8
- * Following Clean Architecture:
9
- * - Application layer depends on this interface
10
- * - Infrastructure layer provides concrete implementation (RealClock)
11
- * - Tests provide MockClock with controllable time
12
- */
13
- export {};
@@ -1,28 +0,0 @@
1
- /**
2
- * Create Workflow Use Case
3
- *
4
- * Creates a new scheduled workflow definition. Validates:
5
- * - Name uniqueness within the same repository path
6
- * - Cron expression validity (if provided) using croner
7
- * - Calculates nextRunAt if a cron expression is provided
8
- */
9
- import type { ScheduledWorkflow } from '../../../domain/generated/output.js';
10
- import type { IWorkflowRepository } from '../../ports/output/repositories/workflow-repository.interface.js';
11
- import type { IClock } from '../../ports/output/services/clock.interface.js';
12
- export interface CreateWorkflowInput {
13
- name: string;
14
- description?: string;
15
- prompt: string;
16
- toolConstraints?: string[];
17
- cronExpression?: string;
18
- timezone?: string;
19
- enabled?: boolean;
20
- repositoryPath: string;
21
- }
22
- export declare class CreateWorkflowUseCase {
23
- private readonly workflowRepo;
24
- private readonly clock;
25
- constructor(workflowRepo: IWorkflowRepository, clock: IClock);
26
- execute(input: CreateWorkflowInput): Promise<ScheduledWorkflow>;
27
- }
28
- //# sourceMappingURL=create-workflow.use-case.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-workflow.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/workflows/create-workflow.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAC5G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gDAAgD,CAAC;AAG7E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBACa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,YAAY,EAAE,mBAAmB,EAEjC,KAAK,EAAE,MAAM;IAG1B,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAwCtE"}
@@ -1,72 +0,0 @@
1
- /**
2
- * Create Workflow Use Case
3
- *
4
- * Creates a new scheduled workflow definition. Validates:
5
- * - Name uniqueness within the same repository path
6
- * - Cron expression validity (if provided) using croner
7
- * - Calculates nextRunAt if a cron expression is provided
8
- */
9
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
10
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
- 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;
13
- return c > 3 && r && Object.defineProperty(target, key, r), r;
14
- };
15
- var __metadata = (this && this.__metadata) || function (k, v) {
16
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
17
- };
18
- var __param = (this && this.__param) || function (paramIndex, decorator) {
19
- return function (target, key) { decorator(target, key, paramIndex); }
20
- };
21
- import { injectable, inject } from 'tsyringe';
22
- import { randomUUID } from 'node:crypto';
23
- import { validateCronExpression, calculateNextRunAt } from './cron-helpers.js';
24
- let CreateWorkflowUseCase = class CreateWorkflowUseCase {
25
- workflowRepo;
26
- clock;
27
- constructor(workflowRepo, clock) {
28
- this.workflowRepo = workflowRepo;
29
- this.clock = clock;
30
- }
31
- async execute(input) {
32
- // Validate name uniqueness within the repository
33
- const existing = await this.workflowRepo.findByName(input.name, input.repositoryPath);
34
- if (existing) {
35
- throw new Error(`A workflow named "${input.name}" already exists in this repository.`);
36
- }
37
- // Validate cron expression if provided
38
- if (input.cronExpression) {
39
- validateCronExpression(input.cronExpression);
40
- }
41
- const now = this.clock.now();
42
- // Calculate nextRunAt if cron expression is provided and workflow is enabled
43
- let nextRunAt = null;
44
- const enabled = input.enabled !== false; // default to true
45
- if (input.cronExpression && enabled) {
46
- nextRunAt = calculateNextRunAt(input.cronExpression, input.timezone, now);
47
- }
48
- const workflow = {
49
- id: randomUUID(),
50
- name: input.name,
51
- prompt: input.prompt,
52
- enabled,
53
- repositoryPath: input.repositoryPath,
54
- createdAt: now,
55
- updatedAt: now,
56
- ...(input.description != null && { description: input.description }),
57
- ...(input.toolConstraints != null && { toolConstraints: input.toolConstraints }),
58
- ...(input.cronExpression != null && { cronExpression: input.cronExpression }),
59
- ...(input.timezone != null && { timezone: input.timezone }),
60
- ...(nextRunAt != null && { nextRunAt }),
61
- };
62
- await this.workflowRepo.create(workflow);
63
- return workflow;
64
- }
65
- };
66
- CreateWorkflowUseCase = __decorate([
67
- injectable(),
68
- __param(0, inject('IWorkflowRepository')),
69
- __param(1, inject('IClock')),
70
- __metadata("design:paramtypes", [Object, Object])
71
- ], CreateWorkflowUseCase);
72
- export { CreateWorkflowUseCase };
@@ -1,27 +0,0 @@
1
- /**
2
- * Cron Expression Helpers
3
- *
4
- * Shared utilities for cron expression validation and next-run calculation
5
- * used by CreateWorkflowUseCase, UpdateWorkflowUseCase, and ScheduleWorkflowUseCase.
6
- *
7
- * Uses croner for both validation and next-run calculation to ensure consistency
8
- * between what the UI accepts and what the scheduler evaluates at runtime.
9
- */
10
- /**
11
- * Validate a cron expression using croner.
12
- * Throws a descriptive error if the expression is invalid.
13
- *
14
- * @param cronExpression - The cron expression to validate
15
- * @throws Error with a descriptive message if the expression is invalid
16
- */
17
- export declare function validateCronExpression(cronExpression: string): void;
18
- /**
19
- * Calculate the next run time for a cron expression from a reference date.
20
- *
21
- * @param cronExpression - A valid cron expression
22
- * @param timezone - Optional IANA timezone (defaults to UTC)
23
- * @param referenceDate - The reference date to calculate from (defaults to now)
24
- * @returns The next run Date, or null if no future run exists
25
- */
26
- export declare function calculateNextRunAt(cronExpression: string, timezone?: string, referenceDate?: Date): Date | null;
27
- //# sourceMappingURL=cron-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/workflows/cron-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAUnE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,IAAI,GACnB,IAAI,GAAG,IAAI,CAOb"}
@@ -1,43 +0,0 @@
1
- /**
2
- * Cron Expression Helpers
3
- *
4
- * Shared utilities for cron expression validation and next-run calculation
5
- * used by CreateWorkflowUseCase, UpdateWorkflowUseCase, and ScheduleWorkflowUseCase.
6
- *
7
- * Uses croner for both validation and next-run calculation to ensure consistency
8
- * between what the UI accepts and what the scheduler evaluates at runtime.
9
- */
10
- import { Cron } from 'croner';
11
- /**
12
- * Validate a cron expression using croner.
13
- * Throws a descriptive error if the expression is invalid.
14
- *
15
- * @param cronExpression - The cron expression to validate
16
- * @throws Error with a descriptive message if the expression is invalid
17
- */
18
- export function validateCronExpression(cronExpression) {
19
- try {
20
- new Cron(cronExpression, { paused: true });
21
- }
22
- catch (err) {
23
- const message = err instanceof Error ? err.message : String(err);
24
- throw new Error(`Invalid cron expression "${cronExpression}": ${message}. ` +
25
- `Example: "0 9 * * MON" runs every Monday at 9am.`);
26
- }
27
- }
28
- /**
29
- * Calculate the next run time for a cron expression from a reference date.
30
- *
31
- * @param cronExpression - A valid cron expression
32
- * @param timezone - Optional IANA timezone (defaults to UTC)
33
- * @param referenceDate - The reference date to calculate from (defaults to now)
34
- * @returns The next run Date, or null if no future run exists
35
- */
36
- export function calculateNextRunAt(cronExpression, timezone, referenceDate) {
37
- const cron = new Cron(cronExpression, {
38
- paused: true,
39
- ...(timezone ? { timezone } : {}),
40
- });
41
- const next = cron.nextRun(referenceDate);
42
- return next ?? null;
43
- }