@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.
- package/apis/json-schema/FeatureFlags.yaml +0 -5
- package/apis/json-schema/NotificationEventConfig.yaml +0 -15
- package/apis/json-schema/NotificationEventType.yaml +0 -3
- package/dist/packages/core/src/application/ports/output/repositories/index.d.ts +0 -2
- package/dist/packages/core/src/application/ports/output/repositories/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +0 -1
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts +12 -1
- package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.js +61 -4
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +0 -4
- package/dist/packages/core/src/domain/generated/output.d.ts +1 -114
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +0 -16
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +0 -66
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +0 -4
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +0 -8
- package/dist/packages/core/src/infrastructure/services/notifications/notification.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/notifications/notification.service.js +0 -3
- package/dist/src/presentation/cli/commands/_serve.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/_serve.command.js +0 -14
- package/dist/src/presentation/cli/index.js +0 -2
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +0 -4
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +0 -3
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +0 -3
- package/dist/src/presentation/web/components/features/settings/notification-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/notification-settings-section.js +1 -6
- package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.js +0 -6
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +2 -19
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +0 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +0 -1
- package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/feature-flags-context.js +0 -1
- package/dist/src/presentation/web/lib/feature-flags.d.ts +0 -2
- package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/feature-flags.js +0 -5
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -2
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +1 -2
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/routes-manifest.json +0 -6
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +25 -25
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +25 -25
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +23 -23
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +25 -25
- package/web/.next/server/app/(dashboard)/create/page.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +23 -23
- package/web/.next/server/app/(dashboard)/page.js +1 -1
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +23 -23
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/feature-logs/route.js +1 -1
- package/web/.next/server/app/api/feature-logs/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/settings/page.js +2 -2
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/skills/page.js +1 -1
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/tools/page.js +1 -1
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +1 -2
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__c7d52490._.js → [root-of-the-server]__2b1074db._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js +3 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__57e0ee34._.js → [root-of-the-server]__3ef34e4c._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__33ac1a70._.js → [root-of-the-server]__6ec59045._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__07f12984._.js → [root-of-the-server]__a5f9c6e5._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__6e93b49c._.js.map → [root-of-the-server]__b3dbadca._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_a3721140._.js → _0020fddd._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_01046927._.js +9 -0
- package/web/.next/server/chunks/ssr/_01046927._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{403f9_next_53742624._.js → _02ec1aea._.js} +2 -2
- package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_8e8cd7e1._.js → _0afe5add._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_8e8cd7e1._.js.map → _0afe5add._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{f7870_sonner_dist_index_mjs_dbf63824._.js → _1b7dae9a._.js} +2 -2
- package/web/.next/server/chunks/ssr/_1b7dae9a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_67104d9e._.js +3 -0
- package/web/.next/server/chunks/ssr/_67104d9e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_7dca1882._.js +3 -0
- package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_a37f5f18._.js +1 -1
- package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_6701ee41._.js → _a9f57758._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_6701ee41._.js.map → _a9f57758._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_277acdde._.js → _b5fc318a._.js} +2 -2
- package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_d4b20e29._.js +3 -0
- package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
- package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_e6819f98._.js +3 -0
- package/web/.next/server/chunks/ssr/_e6819f98._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_e69a26ba._.js +1 -1
- package/web/.next/server/chunks/ssr/_f39a1adb._.js +3 -0
- package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6e5a6584._.js +3 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_53fa3010._.js.map → src_presentation_web_6e5a6584._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +42 -123
- package/web/.next/static/chunks/0b7fe2ac4f078f54.js +13 -0
- package/web/.next/static/chunks/{196650f8cd7fb06a.js → 0d9d536c3a1e3769.js} +1 -1
- package/web/.next/static/chunks/567ce91151ef6047.js +1 -0
- package/web/.next/static/chunks/601d93593f5f664f.js +1 -0
- package/web/.next/static/chunks/637939aee23af962.js +1 -0
- package/web/.next/static/chunks/{42c9564e375717ed.js → 672e3da3ad26005b.js} +1 -1
- package/web/.next/static/chunks/688971d5bad5dc7c.js +1 -0
- package/web/.next/static/chunks/6cfe48db0ef62904.js +1 -0
- package/web/.next/static/chunks/7551e6ec93bab5f0.js +1 -0
- package/web/.next/static/chunks/88172de8ecaf66b3.js +2 -0
- package/web/.next/static/chunks/{2002f5eec5ffec42.css → 92cd6f523639a6fa.css} +1 -1
- package/web/.next/static/chunks/92e04793b5e324cd.js +1 -0
- package/web/.next/static/chunks/{bee578019062e7f9.js → b04ab84a67bae78b.js} +2 -2
- package/web/.next/static/chunks/b70dd4985a814b27.js +1 -0
- package/web/.next/static/chunks/d0dff217a94d4ee1.js +1 -0
- package/web/.next/static/chunks/d408e7dc9c253e29.js +1 -0
- package/web/.next/static/chunks/dde2b000405d2ae4.js +1 -0
- package/web/.next/static/chunks/e843dbe14e813279.js +1 -0
- package/web/.next/static/chunks/fb766dbac52d1c8d.js +1 -0
- package/apis/json-schema/ScheduledWorkflow.yaml +0 -46
- package/apis/json-schema/WorkflowExecution.yaml +0 -38
- package/apis/json-schema/WorkflowExecutionStatus.yaml +0 -10
- package/apis/json-schema/WorkflowTriggerType.yaml +0 -7
- package/dist/packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.d.ts +0 -66
- package/dist/packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.d.ts.map +0 -1
- package/dist/packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.js +0 -11
- package/dist/packages/core/src/application/ports/output/repositories/workflow-repository.interface.d.ts +0 -81
- package/dist/packages/core/src/application/ports/output/repositories/workflow-repository.interface.d.ts.map +0 -1
- package/dist/packages/core/src/application/ports/output/repositories/workflow-repository.interface.js +0 -11
- package/dist/packages/core/src/application/ports/output/services/clock.interface.d.ts +0 -28
- package/dist/packages/core/src/application/ports/output/services/clock.interface.d.ts.map +0 -1
- package/dist/packages/core/src/application/ports/output/services/clock.interface.js +0 -13
- package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.d.ts +0 -28
- package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.js +0 -72
- package/dist/packages/core/src/application/use-cases/workflows/cron-helpers.d.ts +0 -27
- package/dist/packages/core/src/application/use-cases/workflows/cron-helpers.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/cron-helpers.js +0 -43
- package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.d.ts +0 -18
- package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.js +0 -64
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow-history.use-case.d.ts +0 -16
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow-history.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow-history.use-case.js +0 -46
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow.use-case.d.ts +0 -13
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow.use-case.js +0 -42
- package/dist/packages/core/src/application/use-cases/workflows/list-workflows.use-case.d.ts +0 -13
- package/dist/packages/core/src/application/use-cases/workflows/list-workflows.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/list-workflows.use-case.js +0 -33
- package/dist/packages/core/src/application/use-cases/workflows/run-workflow.use-case.d.ts +0 -19
- package/dist/packages/core/src/application/use-cases/workflows/run-workflow.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/run-workflow.use-case.js +0 -62
- package/dist/packages/core/src/application/use-cases/workflows/schedule-workflow.use-case.d.ts +0 -22
- package/dist/packages/core/src/application/use-cases/workflows/schedule-workflow.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/schedule-workflow.use-case.js +0 -73
- package/dist/packages/core/src/application/use-cases/workflows/templates/branch-rebase.template.d.ts +0 -9
- package/dist/packages/core/src/application/use-cases/workflows/templates/branch-rebase.template.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/templates/branch-rebase.template.js +0 -27
- package/dist/packages/core/src/application/use-cases/workflows/templates/issue-triage.template.d.ts +0 -11
- package/dist/packages/core/src/application/use-cases/workflows/templates/issue-triage.template.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/templates/issue-triage.template.js +0 -27
- package/dist/packages/core/src/application/use-cases/workflows/toggle-workflow.use-case.d.ts +0 -16
- package/dist/packages/core/src/application/use-cases/workflows/toggle-workflow.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/toggle-workflow.use-case.js +0 -60
- package/dist/packages/core/src/application/use-cases/workflows/update-workflow.use-case.d.ts +0 -25
- package/dist/packages/core/src/application/use-cases/workflows/update-workflow.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/workflows/update-workflow.use-case.js +0 -83
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.d.ts +0 -46
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.js +0 -57
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.d.ts +0 -51
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.js +0 -71
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.d.ts +0 -12
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.js +0 -22
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.d.ts +0 -14
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.js +0 -65
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.d.ts +0 -11
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.js +0 -17
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.d.ts +0 -24
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.js +0 -92
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.d.ts +0 -26
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.js +0 -117
- package/dist/packages/core/src/infrastructure/services/clock.d.ts +0 -11
- package/dist/packages/core/src/infrastructure/services/clock.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/clock.js +0 -22
- package/dist/packages/core/src/infrastructure/services/workflow-scheduler/workflow-scheduler.service.d.ts +0 -69
- package/dist/packages/core/src/infrastructure/services/workflow-scheduler/workflow-scheduler.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/workflow-scheduler/workflow-scheduler.service.js +0 -270
- package/dist/src/presentation/cli/commands/workflow/create.command.d.ts +0 -13
- package/dist/src/presentation/cli/commands/workflow/create.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/create.command.js +0 -83
- package/dist/src/presentation/cli/commands/workflow/delete.command.d.ts +0 -13
- package/dist/src/presentation/cli/commands/workflow/delete.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/delete.command.js +0 -50
- package/dist/src/presentation/cli/commands/workflow/disable.command.d.ts +0 -11
- package/dist/src/presentation/cli/commands/workflow/disable.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/disable.command.js +0 -32
- package/dist/src/presentation/cli/commands/workflow/enable.command.d.ts +0 -11
- package/dist/src/presentation/cli/commands/workflow/enable.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/enable.command.js +0 -35
- package/dist/src/presentation/cli/commands/workflow/format-helpers.d.ts +0 -35
- package/dist/src/presentation/cli/commands/workflow/format-helpers.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/format-helpers.js +0 -89
- package/dist/src/presentation/cli/commands/workflow/history.command.d.ts +0 -12
- package/dist/src/presentation/cli/commands/workflow/history.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/history.command.js +0 -46
- package/dist/src/presentation/cli/commands/workflow/index.d.ts +0 -26
- package/dist/src/presentation/cli/commands/workflow/index.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/index.js +0 -48
- package/dist/src/presentation/cli/commands/workflow/list.command.d.ts +0 -11
- package/dist/src/presentation/cli/commands/workflow/list.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/list.command.js +0 -52
- package/dist/src/presentation/cli/commands/workflow/run.command.d.ts +0 -11
- package/dist/src/presentation/cli/commands/workflow/run.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/run.command.js +0 -37
- package/dist/src/presentation/cli/commands/workflow/schedule.command.d.ts +0 -13
- package/dist/src/presentation/cli/commands/workflow/schedule.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/schedule.command.js +0 -76
- package/dist/src/presentation/cli/commands/workflow/show.command.d.ts +0 -11
- package/dist/src/presentation/cli/commands/workflow/show.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/show.command.js +0 -93
- package/dist/src/presentation/cli/commands/workflow/update.command.d.ts +0 -13
- package/dist/src/presentation/cli/commands/workflow/update.command.d.ts.map +0 -1
- package/dist/src/presentation/cli/commands/workflow/update.command.js +0 -67
- package/dist/src/presentation/web/app/actions/get-workflow-history.d.ts +0 -7
- package/dist/src/presentation/web/app/actions/get-workflow-history.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/get-workflow-history.js +0 -17
- package/dist/src/presentation/web/app/actions/list-workflows.d.ts +0 -7
- package/dist/src/presentation/web/app/actions/list-workflows.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/list-workflows.js +0 -17
- package/dist/src/presentation/web/app/actions/toggle-workflow.d.ts +0 -8
- package/dist/src/presentation/web/app/actions/toggle-workflow.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/toggle-workflow.js +0 -19
- package/dist/src/presentation/web/app/actions/trigger-workflow.d.ts +0 -8
- package/dist/src/presentation/web/app/actions/trigger-workflow.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/trigger-workflow.js +0 -19
- package/dist/src/presentation/web/app/workflows/page.d.ts +0 -4
- package/dist/src/presentation/web/app/workflows/page.d.ts.map +0 -1
- package/dist/src/presentation/web/app/workflows/page.js +0 -18
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.d.ts +0 -7
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.js +0 -84
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.stories.d.ts +0 -11
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.stories.js +0 -104
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.d.ts +0 -8
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.js +0 -68
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.stories.d.ts +0 -11
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.stories.js +0 -89
- package/dist/src/presentation/web/components/features/workflows/workflow-list.d.ts +0 -8
- package/dist/src/presentation/web/components/features/workflows/workflow-list.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/workflows/workflow-list.js +0 -10
- package/dist/src/presentation/web/components/features/workflows/workflow-list.stories.d.ts +0 -11
- package/dist/src/presentation/web/components/features/workflows/workflow-list.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/workflows/workflow-list.stories.js +0 -90
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.d.ts +0 -6
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.js +0 -14
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.stories.d.ts +0 -10
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.stories.js +0 -70
- package/web/.next/server/app/workflows/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/workflows/page/build-manifest.json +0 -18
- package/web/.next/server/app/workflows/page/next-font-manifest.json +0 -6
- package/web/.next/server/app/workflows/page/react-loadable-manifest.json +0 -8
- package/web/.next/server/app/workflows/page/server-reference-manifest.json +0 -110
- package/web/.next/server/app/workflows/page.js +0 -18
- package/web/.next/server/app/workflows/page.js.map +0 -5
- package/web/.next/server/app/workflows/page.js.nft.json +0 -1
- package/web/.next/server/app/workflows/page_client-reference-manifest.js +0 -2
- package/web/.next/server/chunks/ssr/403f9_next_53742624._.js.map +0 -1
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_0c7787d0._.js +0 -3
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_0c7787d0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07f12984._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__082758f6._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__082758f6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__32cd6108._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__32cd6108._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__33ac1a70._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__44358910._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__44358910._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__57e0ee34._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6e93b49c._.js +0 -3
- package/web/.next/server/chunks/ssr/_20a4a0d5._.js +0 -3
- package/web/.next/server/chunks/ssr/_20a4a0d5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_25555eb5._.js +0 -3
- package/web/.next/server/chunks/ssr/_25555eb5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_277acdde._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_4711e8cf._.js +0 -3
- package/web/.next/server/chunks/ssr/_4711e8cf._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_89a36303._.js +0 -3
- package/web/.next/server/chunks/ssr/_89a36303._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_9869d3da._.js +0 -3
- package/web/.next/server/chunks/ssr/_9869d3da._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_a3721140._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_cc1243e6._.js +0 -3
- package/web/.next/server/chunks/ssr/_cc1243e6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e3411387._.js +0 -9
- package/web/.next/server/chunks/ssr/_e3411387._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f64ffec0._.js +0 -4
- package/web/.next/server/chunks/ssr/_f64ffec0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_28388798._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_28388798._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_ae1705ef._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_ae1705ef._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_53fa3010._.js +0 -3
- package/web/.next/static/chunks/2c1ff62df9b34313.js +0 -1
- package/web/.next/static/chunks/3005583e819fc4fc.js +0 -1
- package/web/.next/static/chunks/333c7873f6b17ef1.js +0 -1
- package/web/.next/static/chunks/3b3f8c4f6c36a7ba.js +0 -1
- package/web/.next/static/chunks/43e0eea352eb5106.js +0 -5
- package/web/.next/static/chunks/5420560352333486.js +0 -1
- package/web/.next/static/chunks/62fa33876b0964a4.js +0 -1
- package/web/.next/static/chunks/6db2addb5e13e372.js +0 -1
- package/web/.next/static/chunks/886d0385ca1d4484.js +0 -1
- package/web/.next/static/chunks/8e52a649c3f6bdf4.js +0 -1
- package/web/.next/static/chunks/a02fc9467a585a1f.js +0 -2
- package/web/.next/static/chunks/cdb51cfd682387d2.js +0 -1
- package/web/.next/static/chunks/ed35b4293a81c861.js +0 -9
- package/web/.next/static/chunks/ed7fbcdf0b48e735.js +0 -1
- package/web/.next/static/chunks/f75142a1b75f1c32.js +0 -1
- package/web/.next/static/chunks/fabcd29d488281fa.js +0 -1
- package/web/.next/static/chunks/fd925f996c3fa318.js +0 -1
- /package/web/.next/server/chunks/{[root-of-the-server]__c7d52490._.js.map → [root-of-the-server]__2b1074db._.js.map} +0 -0
- /package/web/.next/static/{w0YQoUPySQy1O9cN91KEk → oWFb73SbPSY-pNucEiCuA}/_buildManifest.js +0 -0
- /package/web/.next/static/{w0YQoUPySQy1O9cN91KEk → oWFb73SbPSY-pNucEiCuA}/_clientMiddlewareManifest.json +0 -0
- /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,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 {};
|
package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.d.ts
DELETED
|
@@ -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
|
package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.d.ts.map
DELETED
|
@@ -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
|
-
}
|